From 0ef7becf838c91bf39c34d7fb7471625d6f2b971 Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Tue, 7 Dec 2021 22:40:32 +0800 Subject: [PATCH 01/53] Add generated schema for error types. (#1167) --- errors_schema.json | 594 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 594 insertions(+) create mode 100644 errors_schema.json diff --git a/errors_schema.json b/errors_schema.json new file mode 100644 index 0000000000..fe433c5cbd --- /dev/null +++ b/errors_schema.json @@ -0,0 +1,594 @@ +{ + "InvalidModuleError": { + "_enum": [ "Invalid" ] + }, + "ModuleNoErrors": { + "_enum": [ "None" ] + }, + "SystemError": { + "_enum": [ + "InvalidSpecName", + "SpecVersionNeedsToIncrease", + "FailedToExtractRuntimeVersion", + "NonDefaultComposite", + "NonZeroRefCount" + ] + }, + "AuthorshipError": { + "_enum": [ + "InvalidUncleParent", + "UnclesAlreadySet", + "TooManyUncles", + "GenesisUncle", + "TooHighUncle", + "UncleAlreadyIncluded", + "OldUncle" + ] + }, + "BalancesError": { + "_enum": [ + "LiquidityRestrictions", + "Overflow", + "InsufficientBalance", + "ExistentialDeposit", + "ReceiverCddMissing" + ] + }, + "IdentityError": { + "_enum": [ + "AlreadyLinked", + "MissingCurrentIdentity", + "Unauthorized", + "InvalidAccountKey", + "UnAuthorizedCddProvider", + "InvalidAuthorizationFromOwner", + "InvalidAuthorizationFromCddProvider", + "NotCddProviderAttestation", + "AuthorizationsNotForSameDids", + "DidMustAlreadyExist", + "CurrentIdentityCannotBeForwarded", + "AuthorizationExpired", + "TargetHasNoCdd", + "AuthorizationHasBeenRevoked", + "InvalidAuthorizationSignature", + "KeyNotAllowed", + "NotPrimaryKey", + "DidDoesNotExist", + "DidAlreadyExists", + "SecondaryKeysContainPrimaryKey", + "FailedToChargeFee", + "NotASigner", + "CannotDecodeSignerAccountId", + "MultiSigHasBalance", + "ConfidentialScopeClaimNotAllowed", + "InvalidScopeClaim", + "ClaimVariantNotAllowed", + "TargetHasNonZeroBalanceAtScopeId", + "CDDIdNotUniqueForIdentity", + "InvalidCDDId", + "ClaimAndProofVersionsDoNotMatch", + "AccountKeyIsBeingUsed", + "CustomScopeTooLong" + ] + }, + "CddServiceProvidersError": { + "_enum": [ + "OnlyPrimaryKeyAllowed", + "DuplicateMember", + "NoSuchMember", + "LastMemberCannotQuit", + "MissingCurrentIdentity", + "ActiveMembersLimitExceeded", + "ActiveMembersLimitOverflow" + ] + }, + "PolymeshCommitteeError": { + "_enum": [ + "DuplicateVote", + "NotAMember", + "NoSuchProposal", + "ProposalExpired", + "DuplicateProposal", + "MismatchedVotingIndex", + "InvalidProportion", + "FirstVoteReject", + "ProposalsLimitReached" + ] + }, + "CommitteeMembershipError": { + "_enum": [ + "OnlyPrimaryKeyAllowed", + "DuplicateMember", + "NoSuchMember", + "LastMemberCannotQuit", + "MissingCurrentIdentity", + "ActiveMembersLimitExceeded", + "ActiveMembersLimitOverflow" + ] + }, + "TechnicalCommitteeError": { + "_enum": [ + "DuplicateVote", + "NotAMember", + "NoSuchProposal", + "ProposalExpired", + "DuplicateProposal", + "MismatchedVotingIndex", + "InvalidProportion", + "FirstVoteReject", + "ProposalsLimitReached" + ] + }, + "TechnicalCommitteeMembershipError": { + "_enum": [ + "OnlyPrimaryKeyAllowed", + "DuplicateMember", + "NoSuchMember", + "LastMemberCannotQuit", + "MissingCurrentIdentity", + "ActiveMembersLimitExceeded", + "ActiveMembersLimitOverflow" + ] + }, + "UpgradeCommitteeError": { + "_enum": [ + "DuplicateVote", + "NotAMember", + "NoSuchProposal", + "ProposalExpired", + "DuplicateProposal", + "MismatchedVotingIndex", + "InvalidProportion", + "FirstVoteReject", + "ProposalsLimitReached" + ] + }, + "UpgradeCommitteeMembershipError": { + "_enum": [ + "OnlyPrimaryKeyAllowed", + "DuplicateMember", + "NoSuchMember", + "LastMemberCannotQuit", + "MissingCurrentIdentity", + "ActiveMembersLimitExceeded", + "ActiveMembersLimitOverflow" + ] + }, + "MultiSigError": { + "_enum": [ + "CddMissing", + "ProposalMissing", + "DecodingError", + "NoSigners", + "RequiredSignaturesOutOfBounds", + "NotASigner", + "NoSuchMultisig", + "NotEnoughSigners", + "NonceOverflow", + "AlreadyVoted", + "AlreadyASigner", + "FailedToChargeFee", + "IdentityNotCreator", + "ChangeNotAllowed", + "SignerAlreadyLinked", + "MissingCurrentIdentity", + "NotPrimaryKey", + "ProposalAlreadyRejected", + "ProposalExpired", + "ProposalAlreadyExecuted", + "MultisigMissingIdentity", + "FailedToSchedule", + "TooManySigners" + ] + }, + "BridgeError": { + "_enum": [ + "ControllerNotSet", + "BadCaller", + "BadAdmin", + "NoValidCdd", + "ProposalAlreadyHandled", + "Unauthorized", + "Frozen", + "NotFrozen", + "FrozenTx", + "BridgeLimitReached", + "Overflow", + "DivisionByZero", + "TimelockedTx" + ] + }, + "StakingError": { + "_enum": [ + "NotController", + "NotStash", + "AlreadyBonded", + "AlreadyPaired", + "EmptyTargets", + "InvalidSlashIndex", + "InsufficientValue", + "NoMoreChunks", + "NoUnlockChunk", + "FundedTarget", + "InvalidEraToReward", + "NotSortedAndUnique", + "AlreadyClaimed", + "OffchainElectionEarlySubmission", + "OffchainElectionWeakSubmission", + "SnapshotUnavailable", + "OffchainElectionBogusWinnerCount", + "OffchainElectionBogusWinner", + "OffchainElectionBogusCompact", + "OffchainElectionBogusNominator", + "OffchainElectionBogusNomination", + "OffchainElectionSlashedNomination", + "OffchainElectionBogusSelfVote", + "OffchainElectionBogusEdge", + "OffchainElectionBogusScore", + "OffchainElectionBogusElectionSize", + "CallNotAllowed", + "IncorrectSlashingSpans", + "AlreadyExists", + "NotExists", + "NoChange", + "InvalidValidatorIdentity", + "InvalidValidatorCommission", + "StashIdentityDoesNotExist", + "StashIdentityNotPermissioned", + "StashIdentityNotCDDed", + "HitIntendedValidatorCount", + "IntendedCountIsExceedingConsensusLimit", + "BondTooSmall", + "BadState", + "TooManyTargets", + "BadTarget" + ] + }, + "SessionError": { + "_enum": [ + "InvalidProof", + "NoAssociatedValidatorId", + "DuplicatedKey", + "NoKeys", + "NoAccount" + ] + }, + "GrandpaError": { + "_enum": [ + "PauseFailed", + "ResumeFailed", + "ChangePending", + "TooSoon", + "InvalidKeyOwnershipProof", + "InvalidEquivocationProof", + "DuplicateOffenceReport" + ] + }, + "ImOnlineError": { + "_enum": [ + "InvalidKey", + "DuplicatedHeartbeat" + ] + }, + "SudoError": { + "_enum": [ + "RequireSudo" + ] + }, + "AssetError": { + "_enum": [ + "Unauthorized", + "AlreadyArchived", + "AlreadyUnArchived", + "ExtensionAlreadyPresent", + "AssetAlreadyCreated", + "TickerTooLong", + "TickerNotAscii", + "TickerAlreadyRegistered", + "TotalSupplyAboveLimit", + "NoSuchAsset", + "AlreadyFrozen", + "NotAnOwner", + "BalanceOverflow", + "TotalSupplyOverflow", + "InvalidGranularity", + "NotFrozen", + "InvalidTransfer", + "InsufficientBalance", + "AssetAlreadyDivisible", + "MaximumTMExtensionLimitReached", + "IncompatibleExtensionVersion", + "InvalidEthereumSignature", + "NoSuchClassicTicker", + "TickerRegistrationExpired", + "SenderSameAsReceiver", + "NoSuchDoc", + "MaxLengthOfAssetNameExceeded", + "FundingRoundNameMaxLengthExceeded", + "InvalidAssetIdentifier", + "InvestorUniquenessClaimNotAllowed", + "InvalidCustomAssetTypeId" + ] + }, + "CapitalDistributionError": { + "_enum": [ + "CANotBenefit", + "AlreadyExists", + "ExpiryBeforePayment", + "DistributingAsset", + "HolderAlreadyPaid", + "NoSuchDistribution", + "CannotClaimBeforeStart", + "CannotClaimAfterExpiry", + "BalancePerShareProductOverflowed", + "NotDistributionCreator", + "AlreadyReclaimed", + "NotExpired", + "DistributionStarted", + "InsufficientRemainingAmount" + ] + }, + "CheckpointError": { + "_enum": [ + "NoSuchSchedule", + "ScheduleNotRemovable", + "FailedToComputeNextCheckpoint", + "ScheduleDurationTooShort", + "SchedulesTooComplex" + ] + }, + "ComplianceManagerError": { + "_enum": [ + "Unauthorized", + "DidNotExist", + "InvalidComplianceRequirementId", + "IncorrectOperationOnTrustedIssuer", + "DuplicateComplianceRequirements", + "ComplianceRequirementTooComplex" + ] + }, + "CorporateActionError": { + "_enum": [ + "AuthNotCAATransfer", + "DetailsTooLong", + "DuplicateDidTax", + "TooManyDidTaxes", + "TooManyTargetIds", + "NoSuchCheckpointId", + "NoSuchCA", + "NoRecordDate", + "RecordDateAfterStart", + "DeclDateAfterRecordDate", + "DeclDateInFuture", + "NotTargetedByCA" + ] + }, + "CorporateBallotError": { + "_enum": [ + "CANotNotice", + "AlreadyExists", + "NoSuchBallot", + "StartAfterEnd", + "NowAfterEnd", + "NumberOfChoicesOverflow", + "VotingAlreadyStarted", + "VotingNotStarted", + "VotingAlreadyEnded", + "WrongVoteCount", + "InsufficientVotes", + "NoSuchRCVFallback", + "RCVSelfCycle", + "RCVNotAllowed" + ] + }, + "PermissionsError": { + "_enum": [ + "UnauthorizedCaller" + ] + }, + "PipsError": { + "_enum": [ + "RescheduleNotByReleaseCoordinator", + "NotFromCommunity", + "NotByCommittee", + "TooManyActivePips", + "IncorrectDeposit", + "InsufficientDeposit", + "NoSuchProposal", + "NotACommitteeMember", + "InvalidFutureBlockNumber", + "NumberOfVotesExceeded", + "StakeAmountOfVotesExceeded", + "MissingCurrentIdentity", + "IncorrectProposalState", + "CannotSkipPip", + "SnapshotResultTooLarge", + "SnapshotIdMismatch", + "ScheduledProposalDoesntExist", + "ProposalNotInScheduledState" + ] + }, + "PortfolioError": { + "_enum": [ + "PortfolioDoesNotExist", + "InsufficientPortfolioBalance", + "DestinationIsSamePortfolio", + "PortfolioNameAlreadyInUse", + "SecondaryKeyNotAuthorizedForPortfolio", + "UnauthorizedCustodian", + "InsufficientTokensLocked", + "PortfolioNotEmpty", + "DifferentIdentityPortfolios" + ] + }, + "ProtocolFeeError": { + "_enum": [ + "InsufficientAccountBalance", + "UnHandledImbalances", + "InsufficientSubsidyBalance" + ] + }, + "SchedulerError": { + "_enum": [ + "FailedToSchedule", + "NotFound", + "TargetBlockNumberInPast", + "RescheduleNoChange" + ] + }, + "SettlementError": { + "_enum": [ + "InvalidVenue", + "Unauthorized", + "NoPendingAffirm", + "InstructionNotAffirmed", + "InstructionNotPending", + "InstructionNotFailed", + "LegNotPending", + "UnauthorizedSigner", + "ReceiptAlreadyClaimed", + "ReceiptNotClaimed", + "UnauthorizedVenue", + "FailedToLockTokens", + "InstructionFailed", + "InstructionDatesInvalid", + "InstructionSettleBlockPassed", + "InvalidSignature", + "SameSenderReceiver", + "PortfolioMismatch", + "SettleOnPastBlock", + "NoPortfolioProvided", + "UnexpectedAffirmationStatus", + "FailedToSchedule", + "LegCountTooSmall", + "UnknownInstruction", + "InstructionHasTooManyLegs" + ] + }, + "StatisticsError": { + "_enum": [ + "DuplicateTransferManager", + "TransferManagerMissing", + "InvalidTransfer", + "TransferManagersLimitReached" + ] + }, + "StoError": { + "_enum": [ + "Unauthorized", + "Overflow", + "InsufficientTokensRemaining", + "FundraiserNotFound", + "FundraiserNotLive", + "FundraiserClosed", + "FundraiserExpired", + "InvalidVenue", + "InvalidPriceTiers", + "InvalidOfferingWindow", + "MaxPriceExceeded", + "InvestmentAmountTooLow" + ] + }, + "TreasuryError": { + "_enum": [ + "InsufficientBalance" + ] + }, + "UtilityError": { + "_enum": [ + "InvalidSignature", + "TargetCddMissing", + "InvalidNonce" + ] + }, + "BaseError": { + "_enum": [ + "TooLong", + "CounterOverflow" + ] + }, + "ExternalAgentsError": { + "_enum": [ + "NoSuchAG", + "UnauthorizedAgent", + "AlreadyAnAgent", + "NotAnAgent", + "RemovingLastFullAgent", + "SecondaryKeyNotAuthorizedForAsset" + ] + }, + "RelayerError": { + "_enum": [ + "UserKeyCddMissing", + "PayingKeyCddMissing", + "NoPayingKey", + "NotPayingKey", + "NotAuthorizedForPayingKey", + "NotAuthorizedForUserKey", + "Overflow" + ] + }, + "RewardsError": { + "_enum": [ + "UnknownItnAddress", + "ItnRewardAlreadyClaimed", + "InvalidSignature", + "UnableToCovertBalance" + ] + }, + "DispatchErrorModule": { + "_enum": { + "System": "SystemError", + "Babe": "ModuleNoErrors", + "Timestamp": "ModuleNoErrors", + "Indices": "ModuleNoErrors", + "Authorship": "AuthorshipError", + "Balances": "BalancesError", + "TransactionPayment": "ModuleNoErrors", + "Identity": "IdentityError", + "CddServiceProviders": "CddServiceProvidersError", + "PolymeshCommittee": "PolymeshCommitteeError", + "CommitteeMembership": "CommitteeMembershipError", + "TechnicalCommittee": "TechnicalCommitteeError", + "TechnicalCommitteeMembership": "TechnicalCommitteeMembershipError", + "UpgradeCommittee": "UpgradeCommitteeError", + "UpgradeCommitteeMembership": "UpgradeCommitteeMembershipError", + "MultiSig": "MultiSigError", + "Bridge": "BridgeError", + "Staking": "StakingError", + "Offences": "ModuleNoErrors", + "Session": "SessionError", + "AuthorityDiscovery": "ModuleNoErrors", + "Grandpa": "GrandpaError", + "Historical": "ModuleNoErrors", + "ImOnline": "ImOnlineError", + "RandomnessCollectiveFlip": "ModuleNoErrors", + "Sudo": "SudoError", + "Asset": "AssetError", + "CapitalDistribution": "CapitalDistributionError", + "Checkpoint": "CheckpointError", + "ComplianceManager": "ComplianceManagerError", + "CorporateAction": "CorporateActionError", + "CorporateBallot": "CorporateBallotError", + "Permissions": "PermissionsError", + "Pips": "PipsError", + "Portfolio": "PortfolioError", + "ProtocolFee": "ProtocolFeeError", + "Scheduler": "SchedulerError", + "Settlement": "SettlementError", + "Statistics": "StatisticsError", + "Sto": "StoError", + "Treasury": "TreasuryError", + "Utility": "UtilityError", + "Base": "BaseError", + "ExternalAgents": "ExternalAgentsError", + "Relayer": "RelayerError", + "Rewards": "RewardsError", + "InvalidModule46": "InvalidModuleError", + "InvalidModule47": "InvalidModuleError", + "InvalidModule48": "InvalidModuleError", + "InvalidModule49": "InvalidModuleError", + "TestUtils": "ModuleNoErrors" + } + } +} From eea0b8456737c49acd23727b9e4ed6c67aac77da Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Thu, 9 Dec 2021 22:31:24 +0800 Subject: [PATCH 02/53] Bump rust nightly 2021-12-08 (#1178) * Bump rust nightly. Bump packed_simd_2 to fix nightly compile issue. * Update nightly version in Circle CI. * Fix benchmarks for nightly. * Try fixing circle ci resource usage issue. * Fixup. * Try downloading rustup. * Use defaults for rustup install. * Fixup rustup install steps. * More fixups. * Don't sudo the rustup installer. * Fix rustup setup. * Fix wasm-gc build. * Need more packages for building. * Need to install rustup first. * FIXUP * Remove extra cache folder. --- .circleci/config.yml | 42 ++++++++++++++++++++++-------- Cargo.lock | 4 +-- pallets/external-agents/src/lib.rs | 3 +-- rust-toolchain | 2 +- 4 files changed, 35 insertions(+), 16 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index a7f8a50939..38bd18d687 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 jobs: lint: docker: - - image: polymathnet/rust:debian-nightly-2021-08-24 + - image: polymathnet/rust:debian-nightly-2021-12-08 resource_class: medium environment: VERBOSE: "1" @@ -13,7 +13,7 @@ jobs: command: ./scripts/rustfmt.sh build: docker: - - image: polymathnet/rust:debian-nightly-2021-08-24 + - image: polymathnet/rust:debian-nightly-2021-12-08 resource_class: xlarge environment: - VERBOSE: "1" @@ -37,14 +37,33 @@ jobs: - "~/.cargo" - "./target" benchmark-build: - docker: - - image: polymathnet/rust:debian-nightly-2021-08-24 + machine: + image: ubuntu-2004:202010-01 resource_class: xlarge environment: - VERBOSE: "1" - - RUSTC_WORKSPACE_WRAPPER: ./scripts/rustc.sh steps: - checkout + - run: + shell: /bin/bash + name: Setup rust-nightly environment. + command: | + sudo apt update + sudo apt install build-essential \ + clang cmake \ + gcc jq libclang-dev libssl-dev \ + pkg-config ca-certificates rsync curl \ + -y --no-install-recommends + export TOOLCHAIN=`cat rust-toolchain` + # Download rustup installer. + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs >./rustup_install.sh + # Run rustup installer. + bash ./rustup_install.sh -y --default-toolchain $TOOLCHAIN + # Add rustup to PATH. + source $HOME/.cargo/env + # Install wasm tools. + ./scripts/init.sh + - run: name: Store rust version in an environment var for cache key command: rustc --version > rust.version @@ -53,6 +72,8 @@ jobs: - v2-bench-cache-{{ checksum "./rust.version" }}-{{ checksum "./Cargo.lock" }} - run: name: Build binary with runtime-benchmarks + environment: + - RUSTC_WORKSPACE_WRAPPER: ./scripts/rustc.sh command: cargo build --release --features=runtime-benchmarks,running-ci no_output_timeout: 1h - persist_to_workspace: @@ -62,7 +83,6 @@ jobs: - save_cache: key: v2-bench-cache-{{ checksum "./rust.version" }}-{{ checksum "./Cargo.lock" }} paths: - - "/usr/local/cargo" - "~/.cargo" - "./target" benchmark: @@ -80,7 +100,7 @@ jobs: no_output_timeout: 1h migration-tests: docker: - - image: polymathnet/rust:debian-nightly-2021-08-24 + - image: polymathnet/rust:debian-nightly-2021-12-08 resource_class: large environment: - VERBOSE: "1" @@ -106,7 +126,7 @@ jobs: - "./target" test: docker: - - image: polymathnet/rust:debian-nightly-2021-08-24 + - image: polymathnet/rust:debian-nightly-2021-12-08 resource_class: large environment: - VERBOSE: "1" @@ -141,7 +161,7 @@ jobs: - "./target" coverage: docker: - - image: polymathnet/rust:debian-nightly-2021-08-24 + - image: polymathnet/rust:debian-nightly-2021-12-08 resource_class: large environment: - VERBOSE: "1" @@ -169,7 +189,7 @@ jobs: - "./target" cli: docker: - - image: polymathnet/rust:debian-nightly-2021-08-24 + - image: polymathnet/rust:debian-nightly-2021-12-08 resource_class: xlarge environment: VERBOSE: "1" @@ -208,7 +228,7 @@ jobs: - "./scripts/cli/node_modules" clippy: docker: - - image: polymathnet/rust:debian-nightly-2021-08-24 + - image: polymathnet/rust:debian-nightly-2021-12-08 resource_class: large environment: VERBOSE: "1" diff --git a/Cargo.lock b/Cargo.lock index a3e6832cfd..cbdf1519a4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4353,9 +4353,9 @@ dependencies = [ [[package]] name = "packed_simd_2" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e64858a2d3733fdd61adfdd6da89aa202f7ff0e741d2fc7ed1e452ba9dc99d7" +checksum = "71c0c06716cfc81616fa8e22b721ce92fecd594508bc0eb3d04ae3ef35ac10c5" dependencies = [ "cfg-if 0.1.10", "libm 0.1.4", diff --git a/pallets/external-agents/src/lib.rs b/pallets/external-agents/src/lib.rs index 4b3e071952..c2a6c738e4 100644 --- a/pallets/external-agents/src/lib.rs +++ b/pallets/external-agents/src/lib.rs @@ -53,7 +53,6 @@ #[cfg(feature = "runtime-benchmarks")] pub mod benchmarking; -use core::array::IntoIter; use frame_support::{ decl_error, decl_module, decl_storage, dispatch::{DispatchError, DispatchResult}, @@ -465,7 +464,7 @@ impl Module { let pallet = |p: &str| PalletPermissions::entire_pallet(p.into()); let in_pallet = |p: &str, dns| PalletPermissions::new(p.into(), dns); fn elems(elems: [T; N]) -> SubsetRestriction { - SubsetRestriction::elems(IntoIter::new(elems)) + SubsetRestriction::elems(elems) } match GroupOfAgent::get(ticker, agent) { None => ExtrinsicPermissions::empty(), diff --git a/rust-toolchain b/rust-toolchain index be1c93334c..06acb83e23 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1 +1 @@ -nightly-2021-08-24 +nightly-2021-12-08 From 716c6096ea3a8958abf869e1b4489628b8ce14b3 Mon Sep 17 00:00:00 2001 From: raycar5 Date: Mon, 13 Dec 2021 16:02:28 +0100 Subject: [PATCH 03/53] add sonar-project.properties (#1180) --- sonar-project.properties | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 sonar-project.properties diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 0000000000..19e2e1eb1c --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,7 @@ +sonar.organization=polymathnetwork-1 +sonar.projectKey=PolymathNetwork_Polymesh +sonar.projectName=Polymesh +sonar.sources=. +sonar.host.url=https://sonarcloud.io +sonar.sourceEncoding=UTF-8 +sonar.externalIssuesReportPaths=sonar.json From e9b4fb56e45e7350b1c198d9af1bbf685cedfb9d Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Tue, 14 Dec 2021 22:37:31 +0800 Subject: [PATCH 04/53] Fix docs build. (#1182) --- .github/workflows/docs.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 8e9dc63ae4..8e857a5c0d 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -12,8 +12,6 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Use rust nightly 2021-08-24 for building docs. - run: echo "nightly-2021-08-24" > ./rust-toolchain - name: Install rust toolchain uses: actions-rs/toolchain@v1 with: From 028874ed0f30d4bb202def9ea8f21eacfc16578c Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Tue, 14 Dec 2021 23:41:55 +0800 Subject: [PATCH 05/53] Small schema fix. (#1181) --- polymesh_schema.json | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/polymesh_schema.json b/polymesh_schema.json index 36993a6478..4e55e67e41 100644 --- a/polymesh_schema.json +++ b/polymesh_schema.json @@ -650,13 +650,7 @@ "Proposal": "Vec" } }, - "OffChainSignature": { - "_enum": { - "Ed25519": "H512", - "Sr25519": "H512", - "Ecdsa": "H512" - } - }, + "OffChainSignature": "MultiSignature", "Authorization": { "authorization_data": "AuthorizationData", "authorized_by": "IdentityId", From edc7af2b7a5eb568247bd2b70c925c3875d24874 Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Wed, 15 Dec 2021 21:45:46 +0800 Subject: [PATCH 06/53] Bump nightly again to use newer docker image. (#1183) * Bump nightly again to use newer docker image. * Update circleci docker images. --- .circleci/config.yml | 14 +++++++------- rust-toolchain | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 38bd18d687..630211077a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 jobs: lint: docker: - - image: polymathnet/rust:debian-nightly-2021-12-08 + - image: polymathnet/rust:debian-nightly-2021-12-14 resource_class: medium environment: VERBOSE: "1" @@ -13,7 +13,7 @@ jobs: command: ./scripts/rustfmt.sh build: docker: - - image: polymathnet/rust:debian-nightly-2021-12-08 + - image: polymathnet/rust:debian-nightly-2021-12-14 resource_class: xlarge environment: - VERBOSE: "1" @@ -100,7 +100,7 @@ jobs: no_output_timeout: 1h migration-tests: docker: - - image: polymathnet/rust:debian-nightly-2021-12-08 + - image: polymathnet/rust:debian-nightly-2021-12-14 resource_class: large environment: - VERBOSE: "1" @@ -126,7 +126,7 @@ jobs: - "./target" test: docker: - - image: polymathnet/rust:debian-nightly-2021-12-08 + - image: polymathnet/rust:debian-nightly-2021-12-14 resource_class: large environment: - VERBOSE: "1" @@ -161,7 +161,7 @@ jobs: - "./target" coverage: docker: - - image: polymathnet/rust:debian-nightly-2021-12-08 + - image: polymathnet/rust:debian-nightly-2021-12-14 resource_class: large environment: - VERBOSE: "1" @@ -189,7 +189,7 @@ jobs: - "./target" cli: docker: - - image: polymathnet/rust:debian-nightly-2021-12-08 + - image: polymathnet/rust:debian-nightly-2021-12-14 resource_class: xlarge environment: VERBOSE: "1" @@ -228,7 +228,7 @@ jobs: - "./scripts/cli/node_modules" clippy: docker: - - image: polymathnet/rust:debian-nightly-2021-12-08 + - image: polymathnet/rust:debian-nightly-2021-12-14 resource_class: large environment: VERBOSE: "1" diff --git a/rust-toolchain b/rust-toolchain index 06acb83e23..2668ca9dc0 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1 +1 @@ -nightly-2021-12-08 +nightly-2021-12-14 From 3c83601d2c03864161982ee07dbd91e00bb67ad3 Mon Sep 17 00:00:00 2001 From: Joel Moore <47923231+JMoore96@users.noreply.github.com> Date: Tue, 4 Jan 2022 10:55:22 -0400 Subject: [PATCH 07/53] Mesh 1673/integrate jest into js tests (#1146) * added jest config, and libraries * test: configure jest to for polkadot compatibility The latest polkadot versions do not play well with jest out of the box * created identity test using Jest * added --silent to Jest so comments are ignored * minor change in jest.config file so setup.ts isn't seen as a test * package.json using space instead of tab * minor formatting * minor formatting * replacing nonce with -1 * added poly transfer test * added sqlite3 * modified sqlite3 script and made minor changes in init script * changed table name and added error message * minor changes to timeout value in tests * added 2_key_management and 3_auth_join_did tests * increased timeout value of tests * added more tests * increased timeout for tests * minor changes and setting Jest to run sequentially * added --silent tag * minor changes to clean code * minor change * changed to ./test.sh * minor change * minor changes * updated types * minor change to fix ci error * Updated comment Co-authored-by: polymath-eric <86971143+polymath-eric@users.noreply.github.com> * minor change * minor change * minor changes * Update package name to include @polymathnetwork * Set package to private Co-authored-by: Jeremias Diaz Co-authored-by: Robert Gabriel Jakabosky Co-authored-by: polymath-eric <86971143+polymath-eric@users.noreply.github.com> Co-authored-by: Adam Dossa --- scripts/cli/babel.config.js | 4 + scripts/cli/jest.config.js | 13 + scripts/cli/package-lock.json | 13062 +++++++++++++++- scripts/cli/package.json | 14 +- scripts/cli/polymesh-meta.json | 2 +- .../cli/src/__tests__/0_create_identities.ts | 39 + scripts/cli/src/__tests__/1_poly_transfer.ts | 31 + scripts/cli/src/__tests__/2_key_management.ts | 46 + scripts/cli/src/__tests__/3_auth_join_did.ts | 44 + .../src/__tests__/4_permission_management.ts | 145 + .../cli/src/__tests__/5_claim_management.ts | 80 + scripts/cli/src/__tests__/6_create_assets.ts | 37 + .../__tests__/7_create_claim_compliance.ts | 42 + scripts/cli/src/__tests__/setup.ts | 2 + scripts/cli/src/helpers/identity_helper.ts | 12 + scripts/cli/src/helpers/staking_helper.ts | 12 +- .../cli/src/interfaces/augment-api-errors.ts | 66 +- .../cli/src/interfaces/augment-api-events.ts | 92 +- .../cli/src/interfaces/augment-api-query.ts | 47 +- scripts/cli/src/interfaces/augment-api-tx.ts | 226 +- scripts/cli/src/interfaces/augment-types.ts | 18 +- scripts/cli/src/interfaces/default/types.ts | 27 +- scripts/cli/src/interfaces/definitions.ts | 2 +- scripts/cli/src/tests/0_create_identities.ts | 22 - scripts/cli/src/tests/13_corporate_actions.ts | 24 +- scripts/cli/src/tests/15_itn_rewards.ts | 35 +- scripts/cli/src/tests/1_poly_transfer.ts | 32 - scripts/cli/src/tests/2_key_management.ts | 39 - scripts/cli/src/tests/3_auth_join_did.ts | 32 - .../cli/src/tests/4_permission_management.ts | 135 - scripts/cli/src/tests/5_claim_management.ts | 89 - scripts/cli/src/tests/6_create_assets.ts | 27 - .../src/tests/7_create_claim_compliance.ts | 29 - scripts/cli/src/types.ts | 61 +- scripts/cli/src/util/init.ts | 79 +- scripts/cli/src/util/sqlite3.ts | 38 + scripts/cli/tsconfig.json | 4 +- 37 files changed, 13670 insertions(+), 1039 deletions(-) create mode 100644 scripts/cli/babel.config.js create mode 100644 scripts/cli/jest.config.js create mode 100644 scripts/cli/src/__tests__/0_create_identities.ts create mode 100644 scripts/cli/src/__tests__/1_poly_transfer.ts create mode 100644 scripts/cli/src/__tests__/2_key_management.ts create mode 100644 scripts/cli/src/__tests__/3_auth_join_did.ts create mode 100644 scripts/cli/src/__tests__/4_permission_management.ts create mode 100644 scripts/cli/src/__tests__/5_claim_management.ts create mode 100644 scripts/cli/src/__tests__/6_create_assets.ts create mode 100644 scripts/cli/src/__tests__/7_create_claim_compliance.ts create mode 100644 scripts/cli/src/__tests__/setup.ts delete mode 100644 scripts/cli/src/tests/0_create_identities.ts delete mode 100644 scripts/cli/src/tests/1_poly_transfer.ts delete mode 100644 scripts/cli/src/tests/2_key_management.ts delete mode 100644 scripts/cli/src/tests/3_auth_join_did.ts delete mode 100644 scripts/cli/src/tests/4_permission_management.ts delete mode 100644 scripts/cli/src/tests/5_claim_management.ts delete mode 100644 scripts/cli/src/tests/6_create_assets.ts delete mode 100644 scripts/cli/src/tests/7_create_claim_compliance.ts create mode 100644 scripts/cli/src/util/sqlite3.ts diff --git a/scripts/cli/babel.config.js b/scripts/cli/babel.config.js new file mode 100644 index 0000000000..fa7b5a58d5 --- /dev/null +++ b/scripts/cli/babel.config.js @@ -0,0 +1,4 @@ +module.exports = { + // Convert ESM -> CJS; Specifically for @polkadot >= v4 where ESM becomes default + plugins: ['@babel/plugin-transform-modules-commonjs'], +}; diff --git a/scripts/cli/jest.config.js b/scripts/cli/jest.config.js new file mode 100644 index 0000000000..820e97baf7 --- /dev/null +++ b/scripts/cli/jest.config.js @@ -0,0 +1,13 @@ +/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */ +module.exports = { + preset: "ts-jest/presets/js-with-babel", + transformIgnorePatterns: [ + "/node_modules/(?!@polkadot|@babel/runtime/helpers/esm/)", + ], + roots: ["/src"], + testRegex: "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx)$", + moduleFileExtensions: ["ts", "tsx", "js"], + setupFilesAfterEnv: ["/src/__tests__/setup.ts"], + testPathIgnorePatterns: ["/src/__tests__/setup.ts"], + testTimeout: 1_000_000, +}; diff --git a/scripts/cli/package-lock.json b/scripts/cli/package-lock.json index 5293bfaa9f..c6635c2119 100644 --- a/scripts/cli/package-lock.json +++ b/scripts/cli/package-lock.json @@ -1,8 +1,9604 @@ { "name": "polymesh-cli", "version": "1.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "polymesh-cli", + "version": "1.0.0", + "license": "UNLICENSED", + "dependencies": { + "@polkadot/api": "5.0.1", + "@polkadot/util": "^7.0.3", + "@polkadot/util-crypto": "^7.0.3", + "@types/sqlite3": "^3.1.7", + "chai": "4.2.0", + "chalk": "4.1.0", + "clear": "0.1.0", + "cli-progress": "3.9.0", + "command-line-args": "5.1.1", + "commander": "7.0.0", + "crypto-random-string": "3.3.0", + "esm": "3.2.25", + "export-to-csv": "^0.2.1", + "figlet": "1.5.0", + "fp-ts": "2.9.5", + "inquirer": "7.3.3", + "minimist": "1.2.5", + "nodejs-fs-utils": "1.2.5", + "path": "0.12.7", + "pm2": "^5.1.1", + "readline-sync": "1.4.10", + "sqlite3": "^5.0.2" + }, + "bin": { + "polymesh-cli": "dist/polymesh_cli.js" + }, + "devDependencies": { + "@babel/plugin-transform-modules-commonjs": "7.14.5", + "@polkadot/typegen": "5.0.1", + "@types/chai": "4.2.15", + "@types/clear": "0.1.1", + "@types/figlet": "1.2.1", + "@types/inquirer": "7.3.1", + "@types/jest": "^27.0.2", + "@types/node": "14.14.22", + "jest": "^27.2.4", + "nodemon": "2.0.7", + "pretty-error": "^3.0.4", + "ts-jest": "^27.0.5", + "ts-node": "9.1.1", + "type-coverage": "2.16.3", + "typedoc": "0.20.28", + "typescript": "^4.3.5" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", + "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz", + "integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.0", + "@babel/helper-module-transforms": "^7.15.0", + "@babel/helpers": "^7.14.8", + "@babel/parser": "^7.15.0", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/core/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", + "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.15.6", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", + "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", + "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", + "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "dev": true, + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", + "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.3.tgz", + "integrity": "sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g==", + "dev": true, + "dependencies": { + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", + "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", + "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz", + "integrity": "sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register": { + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.15.3.tgz", + "integrity": "sha512-mj4IY1ZJkorClxKTImccn4T81+UKTo4Ux0+OFSV9hME1ooqS9UV+pJ6BjD0qXPK4T3XW/KNa79XByjeEMZz+fw==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.0", + "source-map-support": "^0.5.16" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz", + "integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.2.4.tgz", + "integrity": "sha512-94znCKynPZpDpYHQ6esRJSc11AmONrVkBOBZiD7S+bSubHhrUfbS95EY5HIOxhm4PQO7cnvZkL3oJcY0oMA+Wg==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.4", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.2.4", + "jest-util": "^27.2.4", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/core": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.2.4.tgz", + "integrity": "sha512-UNQLyy+rXoojNm2MGlapgzWhZD1CT1zcHZQYeiD0xE7MtJfC19Q6J5D/Lm2l7i4V97T30usKDoEtjI8vKwWcLg==", + "dev": true, + "dependencies": { + "@jest/console": "^27.2.4", + "@jest/reporters": "^27.2.4", + "@jest/test-result": "^27.2.4", + "@jest/transform": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^27.2.4", + "jest-config": "^27.2.4", + "jest-haste-map": "^27.2.4", + "jest-message-util": "^27.2.4", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.2.4", + "jest-resolve-dependencies": "^27.2.4", + "jest-runner": "^27.2.4", + "jest-runtime": "^27.2.4", + "jest-snapshot": "^27.2.4", + "jest-util": "^27.2.4", + "jest-validate": "^27.2.4", + "jest-watcher": "^27.2.4", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/ci-info": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true + }, + "node_modules/@jest/core/node_modules/is-ci": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, + "dependencies": { + "ci-info": "^3.1.1" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/@jest/core/node_modules/jest-config": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.2.4.tgz", + "integrity": "sha512-tWy0UxhdzqiKyp4l5Vq4HxLyD+gH5td+GCF3c22/DJ0bYAOsMo+qi2XtbJI6oYMH5JOJQs9nLW/r34nvFCehjA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^27.2.4", + "@jest/types": "^27.2.4", + "babel-jest": "^27.2.4", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "jest-circus": "^27.2.4", + "jest-environment-jsdom": "^27.2.4", + "jest-environment-node": "^27.2.4", + "jest-get-type": "^27.0.6", + "jest-jasmine2": "^27.2.4", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.2.4", + "jest-runner": "^27.2.4", + "jest-util": "^27.2.4", + "jest-validate": "^27.2.4", + "micromatch": "^4.0.4", + "pretty-format": "^27.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.2.4.tgz", + "integrity": "sha512-wkuui5yr3SSQW0XD0Qm3TATUbL/WE3LDEM3ulC+RCQhMf2yxhci8x7svGkZ4ivJ6Pc94oOzpZ6cdHBAMSYd1ew==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/node": "*", + "jest-mock": "^27.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.2.4.tgz", + "integrity": "sha512-cs/TzvwWUM7kAA6Qm/890SK6JJ2pD5RfDNM3SSEom6BmdyV6OiWP1qf/pqo6ts6xwpcM36oN0wSEzcZWc6/B6w==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.4", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.2.4", + "jest-mock": "^27.2.4", + "jest-util": "^27.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.2.4.tgz", + "integrity": "sha512-DRsRs5dh0i+fA9mGHylTU19+8fhzNJoEzrgsu+zgJoZth3x8/0juCQ8nVVdW1er4Cqifb/ET7/hACYVPD0dBEA==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.2.4", + "@jest/types": "^27.2.4", + "expect": "^27.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.2.4.tgz", + "integrity": "sha512-LHeSdDnDZkDnJ8kvnjcqV8P1Yv/32yL4d4XfR5gBiy3xGO0onwll1QEbvtW96fIwhx2nejug0GTaEdNDoyr3fQ==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.2.4", + "@jest/test-result": "^27.2.4", + "@jest/transform": "^27.2.4", + "@jest/types": "^27.2.4", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^27.2.4", + "jest-resolve": "^27.2.4", + "jest-util": "^27.2.4", + "jest-worker": "^27.2.4", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/source-map": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", + "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.2.4.tgz", + "integrity": "sha512-eU+PRo0+lIS01b0dTmMdVZ0TtcRSxEaYquZTRFMQz6CvsehGhx9bRzi9Zdw6VROviJyv7rstU+qAMX5pNBmnfQ==", + "dev": true, + "dependencies": { + "@jest/console": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.2.4.tgz", + "integrity": "sha512-fpk5eknU3/DXE2QCCG1wv/a468+cfPo3Asu6d6yUtM9LOPh709ubZqrhuUOYfM8hXMrIpIdrv1CdCrWWabX0rQ==", + "dev": true, + "dependencies": { + "@jest/test-result": "^27.2.4", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.2.4", + "jest-runtime": "^27.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.2.4.tgz", + "integrity": "sha512-n5FlX2TH0oQGwyVDKPxdJ5nI2sO7TJBFe3u3KaAtt7TOiV4yL+Y+rSFDl+Ic5MpbiA/eqXmLAQxjnBmWgS2rEA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.2.4", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.2.4", + "jest-regex-util": "^27.0.6", + "jest-util": "^27.2.4", + "micromatch": "^4.0.4", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/types": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", + "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@opencensus/core": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.9.tgz", + "integrity": "sha512-31Q4VWtbzXpVUd2m9JS6HEaPjlKvNMOiF7lWKNmXF84yUcgfAFL5re7/hjDmdyQbOp32oGc+RFV78jXIldVz6Q==", + "dependencies": { + "continuation-local-storage": "^3.2.1", + "log-driver": "^1.2.7", + "semver": "^5.5.0", + "shimmer": "^1.2.0", + "uuid": "^3.2.1" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/@opencensus/core/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@opencensus/propagation-b3": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@opencensus/propagation-b3/-/propagation-b3-0.0.8.tgz", + "integrity": "sha512-PffXX2AL8Sh0VHQ52jJC4u3T0H6wDK6N/4bg7xh4ngMYOIi13aR1kzVvX1sVDBgfGwDOkMbl4c54Xm3tlPx/+A==", + "dependencies": { + "@opencensus/core": "^0.0.8", + "uuid": "^3.2.1" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/@opencensus/propagation-b3/node_modules/@opencensus/core": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.8.tgz", + "integrity": "sha512-yUFT59SFhGMYQgX0PhoTR0LBff2BEhPrD9io1jWfF/VDbakRfs6Pq60rjv0Z7iaTav5gQlttJCX2+VPxFWCuoQ==", + "dependencies": { + "continuation-local-storage": "^3.2.1", + "log-driver": "^1.2.7", + "semver": "^5.5.0", + "shimmer": "^1.2.0", + "uuid": "^3.2.1" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/@opencensus/propagation-b3/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@pm2/agent": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@pm2/agent/-/agent-2.0.1.tgz", + "integrity": "sha512-QKHMm6yexcvdDfcNE7PL9D6uEjoQPGRi+8dh+rc4Hwtbpsbh5IAvZbz3BVGjcd4HaX6pt2xGpOohG7/Y2L4QLw==", + "dependencies": { + "async": "~3.2.0", + "chalk": "~3.0.0", + "dayjs": "~1.8.24", + "debug": "~4.3.1", + "eventemitter2": "~5.0.1", + "fast-json-patch": "^3.0.0-1", + "fclone": "~1.0.11", + "nssocket": "0.6.0", + "pm2-axon": "~4.0.1", + "pm2-axon-rpc": "~0.7.0", + "proxy-agent": "~5.0.0", + "semver": "~7.2.0", + "ws": "~7.4.0" + } + }, + "node_modules/@pm2/agent/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@pm2/agent/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@pm2/agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@pm2/agent/node_modules/semver": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.2.3.tgz", + "integrity": "sha512-utbW9Z7ZxVvwiIWkdOMLOR9G/NFXh2aRucghkVrEMJWuC++r3lCkBC3LwqBinyHzGMAJxY5tn6VakZGHObq5ig==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@pm2/io": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@pm2/io/-/io-5.0.0.tgz", + "integrity": "sha512-3rToDVJaRoob5Lq8+7Q2TZFruoEkdORxwzFpZaqF4bmH6Bkd7kAbdPrI/z8X6k1Meq5rTtScM7MmDgppH6aLlw==", + "dependencies": { + "@opencensus/core": "0.0.9", + "@opencensus/propagation-b3": "0.0.8", + "async": "~2.6.1", + "debug": "~4.3.1", + "eventemitter2": "^6.3.1", + "require-in-the-middle": "^5.0.0", + "semver": "6.3.0", + "shimmer": "^1.2.0", + "signal-exit": "^3.0.3", + "tslib": "1.9.3" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/@pm2/io/node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/@pm2/io/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@pm2/io/node_modules/eventemitter2": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.4.tgz", + "integrity": "sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw==" + }, + "node_modules/@pm2/io/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@pm2/io/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@pm2/io/node_modules/tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + }, + "node_modules/@pm2/js-api": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@pm2/js-api/-/js-api-0.6.7.tgz", + "integrity": "sha512-jiJUhbdsK+5C4zhPZNnyA3wRI01dEc6a2GhcQ9qI38DyIk+S+C8iC3fGjcjUbt/viLYKPjlAaE+hcT2/JMQPXw==", + "dependencies": { + "async": "^2.6.3", + "axios": "^0.21.0", + "debug": "~4.3.1", + "eventemitter2": "^6.3.1", + "ws": "^7.0.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@pm2/js-api/node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/@pm2/js-api/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@pm2/js-api/node_modules/eventemitter2": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.4.tgz", + "integrity": "sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw==" + }, + "node_modules/@pm2/js-api/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@pm2/pm2-version-check": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@pm2/pm2-version-check/-/pm2-version-check-1.0.4.tgz", + "integrity": "sha512-SXsM27SGH3yTWKc2fKR4SYNxsmnvuBQ9dd6QHtEWmiZ/VqaOYPAIlS8+vMcn27YLtAEBGvNRSh3TPNvtjZgfqA==", + "dependencies": { + "debug": "^4.3.1" + } + }, + "node_modules/@pm2/pm2-version-check/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@pm2/pm2-version-check/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@polkadot/api": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-5.0.1.tgz", + "integrity": "sha512-5JDpM2Fjc80gHBju1B/rMBGDfAvY8UiU4XVlivJRk+mTVD3OTwbtTro4nmwJOub05xQCJvD/bnCuxG8eFSoq+Q==", + "dependencies": { + "@babel/runtime": "^7.14.6", + "@polkadot/api-derive": "5.0.1", + "@polkadot/keyring": "^7.0.1", + "@polkadot/rpc-core": "5.0.1", + "@polkadot/rpc-provider": "5.0.1", + "@polkadot/types": "5.0.1", + "@polkadot/types-known": "5.0.1", + "@polkadot/util": "^7.0.1", + "@polkadot/util-crypto": "^7.0.1", + "eventemitter3": "^4.0.7", + "rxjs": "^7.2.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/api-derive": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-5.0.1.tgz", + "integrity": "sha512-JZpH1JVLu3PvX4+A71iDLtNr6LL103dAFou61DxyJF4obyTmS2lzigG3xXqUFShiPDb19ywxQpsE4gAOP6emuQ==", + "dependencies": { + "@babel/runtime": "^7.14.6", + "@polkadot/api": "5.0.1", + "@polkadot/rpc-core": "5.0.1", + "@polkadot/types": "5.0.1", + "@polkadot/util": "^7.0.1", + "@polkadot/util-crypto": "^7.0.1", + "rxjs": "^7.2.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/keyring": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-7.2.1.tgz", + "integrity": "sha512-WmiTsHKELX16uZWLvebDBckZIAXeJFfbcOM6m/VbMOjSV5C6xIKqiV3232Mn8ZuPKgsOf25Q78/IwJW1Dq53Qg==", + "dependencies": { + "@babel/runtime": "^7.15.3", + "@polkadot/util": "7.2.1", + "@polkadot/util-crypto": "7.2.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@polkadot/util": "7.2.1", + "@polkadot/util-crypto": "7.2.1" + } + }, + "node_modules/@polkadot/networks": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-7.2.1.tgz", + "integrity": "sha512-YX8oQ7QQ2oq3YowwOiv/C82l849V0ZEzpR26YrPgKSXbYFbasho3Akf0zalndZJZV1Bb8EiOkzGoJ3ffogSPxA==", + "dependencies": { + "@babel/runtime": "^7.15.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/rpc-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-5.0.1.tgz", + "integrity": "sha512-JMNOVQijjyJZNu9B8CJwIrQzGYzAp03uCBSbqYfzWBFnYVLKh7JmvOlkLnODM8uUYq0gVN4BaDUSPc39GpELAQ==", + "dependencies": { + "@babel/runtime": "^7.14.6", + "@polkadot/rpc-provider": "5.0.1", + "@polkadot/types": "5.0.1", + "@polkadot/util": "^7.0.1", + "rxjs": "^7.2.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/rpc-provider": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-5.0.1.tgz", + "integrity": "sha512-t+VKhMtQfQVgkZDqYnP/44KlBDmcCVo1/MvJ+DoNd7RUWUIBJt3v71G5gDSNeGMTyvxn0KK0qL4j+Nqr6c4FUQ==", + "dependencies": { + "@babel/runtime": "^7.14.6", + "@polkadot/types": "5.0.1", + "@polkadot/util": "^7.0.1", + "@polkadot/util-crypto": "^7.0.1", + "@polkadot/x-fetch": "^7.0.1", + "@polkadot/x-global": "^7.0.1", + "@polkadot/x-ws": "^7.0.1", + "eventemitter3": "^4.0.7" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/typegen": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@polkadot/typegen/-/typegen-5.0.1.tgz", + "integrity": "sha512-iFLJoWgIkn+J6MDw3AUWveP9qxVn1C+VeLJbpZ21St5WyeE148Tml0BmYnKLSXlaPMhZEwB+/IV3jpQ35dH4bw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.14.6", + "@babel/register": "^7.14.5", + "@babel/runtime": "^7.14.6", + "@polkadot/api": "5.0.1", + "@polkadot/rpc-provider": "5.0.1", + "@polkadot/types": "5.0.1", + "@polkadot/util": "^7.0.1", + "handlebars": "^4.7.7", + "websocket": "^1.0.34", + "yargs": "^17.0.1" + }, + "bin": { + "polkadot-types-chain-info": "scripts/polkadot-types-chain-info.cjs", + "polkadot-types-from-chain": "scripts/polkadot-types-from-chain.cjs", + "polkadot-types-from-defs": "scripts/polkadot-types-from-defs.cjs", + "polkadot-types-internal-interfaces": "scripts/polkadot-types-internal-interfaces.cjs", + "polkadot-types-internal-metadata": "scripts/polkadot-types-internal-metadata.cjs" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/types": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-5.0.1.tgz", + "integrity": "sha512-aN6JKeF7ZYi5irYAaUoDqth6qlOlB15C5vhlDOojEorYLfRs/R+GCrO+lPSs+bKmSxh7BSRh500ikI/xD4nx5A==", + "dependencies": { + "@babel/runtime": "^7.14.6", + "@polkadot/util": "^7.0.1", + "@polkadot/util-crypto": "^7.0.1", + "rxjs": "^7.2.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/types-known": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-5.0.1.tgz", + "integrity": "sha512-AIhPlN4r14ZW4wdwHZD2nIe1DE61ZO9PsyrCyAU3ysl6Cw6TI+txDCN3aS/8XYuC7wDLEgLB9vJv2sVWdCzqJg==", + "dependencies": { + "@babel/runtime": "^7.14.6", + "@polkadot/networks": "^7.0.1", + "@polkadot/types": "5.0.1", + "@polkadot/util": "^7.0.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/util": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-7.2.1.tgz", + "integrity": "sha512-GilFg3i5dmu0H6dHEyh5bUw3yywmnFpEHfxFmKghL1ABDEr4qD0d/XAJ9UrzLFCBKbdTZsR0MDjgjVI2N84J1A==", + "dependencies": { + "@babel/runtime": "^7.15.3", + "@polkadot/x-textdecoder": "7.2.1", + "@polkadot/x-textencoder": "7.2.1", + "@types/bn.js": "^4.11.6", + "bn.js": "^4.11.9", + "camelcase": "^5.3.1", + "ip-regex": "^4.3.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/util-crypto": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-7.2.1.tgz", + "integrity": "sha512-X3iGba/1JTL/0MNzMNEIlO9DNyKlwFV839jfGLDKhPbCuDmWp0NdQjF3mBmbvNwkXvn07WmhE7g3q9n5iTzqvQ==", + "dependencies": { + "@babel/runtime": "^7.15.3", + "@polkadot/networks": "7.2.1", + "@polkadot/util": "7.2.1", + "@polkadot/wasm-crypto": "^4.1.2", + "@polkadot/x-randomvalues": "7.2.1", + "base-x": "^3.0.8", + "base64-js": "^1.5.1", + "blakejs": "^1.1.1", + "bn.js": "^4.11.9", + "create-hash": "^1.2.0", + "ed2curve": "^0.3.0", + "elliptic": "^6.5.4", + "hash.js": "^1.1.7", + "js-sha3": "^0.8.0", + "scryptsy": "^2.1.0", + "tweetnacl": "^1.0.3", + "xxhashjs": "^0.2.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@polkadot/util": "7.2.1" + } + }, + "node_modules/@polkadot/wasm-crypto": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-4.1.2.tgz", + "integrity": "sha512-2EKdOjIrD2xHP2rC+0G/3Qo6926nL/18vCFkd34lBd9zP9YNF2GDEtDY+zAeDIRFKe1sQHTpsKgNdYSWoV2eBg==", + "dependencies": { + "@babel/runtime": "^7.14.6", + "@polkadot/wasm-crypto-asmjs": "^4.1.2", + "@polkadot/wasm-crypto-wasm": "^4.1.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@polkadot/util": "*", + "@polkadot/x-randomvalues": "*" + } + }, + "node_modules/@polkadot/wasm-crypto-asmjs": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-4.1.2.tgz", + "integrity": "sha512-3Q+vVUxDAC2tXgKMM3lKzx2JW+tarDpTjkvdxIKATyi8Ek69KkUqvMyJD0VL/iFZOFZED0YDX9UU4XOJ/astlg==", + "dependencies": { + "@babel/runtime": "^7.14.6" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/wasm-crypto-wasm": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-4.1.2.tgz", + "integrity": "sha512-/l4IBEdQ41szHdHkuF//z1qr+XmWuLHlpBA7s9Eb221m1Fir6AKoCHoh1hp1r3v0ecZYLKvak1B225w6JAU3Fg==", + "dependencies": { + "@babel/runtime": "^7.14.6" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/x-fetch": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-7.2.1.tgz", + "integrity": "sha512-osdZNPfrB50d7tfjVs4QRjfsb6xqC09JEeYzbUl24hUXPwtkQE8/379jayu1usPe9/JI2wKYGscdf/nRl4pBkA==", + "dependencies": { + "@babel/runtime": "^7.15.3", + "@polkadot/x-global": "7.2.1", + "@types/node-fetch": "^2.5.12", + "node-fetch": "^2.6.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/x-global": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-7.2.1.tgz", + "integrity": "sha512-VNW+76TxEPqvBy3XMNV05mJRPRGZcYh3k5HjW4+asYeFunMahH4zjmCulhtD9SRI/TqdfHTiqDOqKNKe2xJcVg==", + "dependencies": { + "@babel/runtime": "^7.15.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/x-randomvalues": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-7.2.1.tgz", + "integrity": "sha512-B4sjwX+gFweZ1YM1Cg/S9hAEx9E/gV/vqLW89PJB6+hyvsPS9eiVvfVpaOsohc7AgmuINm/bSQbNZvtC+BbbKw==", + "dependencies": { + "@babel/runtime": "^7.15.3", + "@polkadot/x-global": "7.2.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/x-textdecoder": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-7.2.1.tgz", + "integrity": "sha512-yXSZ0P/D/8HT8gbkdTjw/1AKZIVbX3+mIfiDiN3VqUBzruV7ak5hA+D01I0woBGDqxWISoLQFtGrxPAQ8pwAcg==", + "dependencies": { + "@babel/runtime": "^7.15.3", + "@polkadot/x-global": "7.2.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/x-textencoder": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-7.2.1.tgz", + "integrity": "sha512-1aqfxmfKSOWeOxmGBmk+RYrpqGtWywS6t0y/R3FI+k+s8NfIfGdcjMcupKq7khPh92PvVGkur+CnM/y6chn4XA==", + "dependencies": { + "@babel/runtime": "^7.15.3", + "@polkadot/x-global": "7.2.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/x-ws": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-7.2.1.tgz", + "integrity": "sha512-sYnOF0qNdMuGFiRGWAtpkQQYIP44JFzGywap0CskhNEyCc+zDBi4l/ta3qHjeGta+h9rdVjDeYk2J86EsKlkSw==", + "dependencies": { + "@babel/runtime": "^7.15.3", + "@polkadot/x-global": "7.2.1", + "@types/websocket": "^1.0.4", + "websocket": "^1.0.34" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", + "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/babel__core": { + "version": "7.1.16", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", + "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", + "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.3.0" + } + }, + "node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/bn.js/node_modules/@types/node": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.6.1.tgz", + "integrity": "sha512-Sr7BhXEAer9xyGuCN3Ek9eg9xPviCF2gfu9kTfuU2HkTVAMYSDeX40fvpmo72n5nansg3nsBjuQBrsS28r+NUw==" + }, + "node_modules/@types/chai": { + "version": "4.2.15", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.15.tgz", + "integrity": "sha512-rYff6FI+ZTKAPkJUoyz7Udq3GaoDZnxYDEvdEdFZASiA7PoErltHezDishqQiSDWrGxvxmplH304jyzQmjp0AQ==", + "dev": true + }, + "node_modules/@types/clear": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@types/clear/-/clear-0.1.1.tgz", + "integrity": "sha512-Wu6DxCnSjFiqymbTeyb63VdU1oKYW0qCnmOSBjpMyuvcuvI9keXfS6RbEcKYqUY0dPOLa34qV+XHAdgiRzPBtg==", + "dev": true + }, + "node_modules/@types/figlet": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/figlet/-/figlet-1.2.1.tgz", + "integrity": "sha512-uw+Xmam7sMFHYyVGq5CGH/6Lu0T792bf4T6+jPFtPkWnJ9YVjLKqOLzF7DHuSo/LEHtLWleUO7Zi7EKkg6rSIg==", + "dev": true + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/inquirer": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-7.3.1.tgz", + "integrity": "sha512-osD38QVIfcdgsPCT0V3lD7eH0OFurX71Jft18bZrsVQWVRt6TuxRzlr0GJLrxoHZR2V5ph7/qP8se/dcnI7o0g==", + "dev": true, + "dependencies": { + "@types/through": "*", + "rxjs": "^6.4.0" + } + }, + "node_modules/@types/inquirer/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@types/inquirer/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "27.0.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.2.tgz", + "integrity": "sha512-4dRxkS/AFX0c5XW6IPMNOydLn2tEhNhJV7DnYK+0bjoJZ+QTmfucBlihX7aoEsh/ocYtkLC73UbnBXBXIxsULA==", + "dev": true, + "dependencies": { + "jest-diff": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, + "node_modules/@types/node": { + "version": "14.14.22", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.22.tgz", + "integrity": "sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw==" + }, + "node_modules/@types/node-fetch": { + "version": "2.5.12", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", + "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", + "dependencies": { + "@types/node": "*", + "form-data": "^3.0.0" + } + }, + "node_modules/@types/node-fetch/node_modules/@types/node": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.6.1.tgz", + "integrity": "sha512-Sr7BhXEAer9xyGuCN3Ek9eg9xPviCF2gfu9kTfuU2HkTVAMYSDeX40fvpmo72n5nansg3nsBjuQBrsS28r+NUw==" + }, + "node_modules/@types/prettier": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz", + "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", + "dev": true + }, + "node_modules/@types/sqlite3": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/sqlite3/-/sqlite3-3.1.7.tgz", + "integrity": "sha512-8FHV/8Uzd7IwdHm5mvmF2Aif4aC/gjrt4axWD9SmfaxITnOjtOhCbOSTuqv/VbH1uq0QrwlaTj9aTz3gmR6u4w==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/through": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz", + "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/websocket": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.4.tgz", + "integrity": "sha512-qn1LkcFEKK8RPp459jkjzsfpbsx36BBt3oC3pITYtkoBw/aVX+EZFa5j3ThCRTNpLFvIMr5dSTD4RaMdilIOpA==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/websocket/node_modules/@types/node": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.6.1.tgz", + "integrity": "sha512-Sr7BhXEAer9xyGuCN3Ek9eg9xPviCF2gfu9kTfuU2HkTVAMYSDeX40fvpmo72n5nansg3nsBjuQBrsS28r+NUw==" + }, + "node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/acorn": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", + "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "optional": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/amp": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz", + "integrity": "sha1-at+NWKdPNh6CwfqNOJwHnhOfxH0=" + }, + "node_modules/amp-message": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/amp-message/-/amp-message-0.1.2.tgz", + "integrity": "sha1-p48cmJlQh602GSpBKY5NtJ49/EU=", + "dependencies": { + "amp": "0.3.1" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "node_modules/are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/are-we-there-yet/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/are-we-there-yet/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/are-we-there-yet/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "optional": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "engines": { + "node": "*" + } + }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/async": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz", + "integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==" + }, + "node_modules/async-listener": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz", + "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==", + "dependencies": { + "semver": "^5.3.0", + "shimmer": "^1.1.0" + }, + "engines": { + "node": "<=0.11.8 || >0.11.10" + } + }, + "node_modules/async-listener/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "optional": true + }, + "node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/babel-jest": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.2.4.tgz", + "integrity": "sha512-f24OmxyWymk5jfgLdlCMu4fTs4ldxFBIdn5sJdhvGC1m08rSkJ5hYbWkNmfBSvE/DjhCVNSHXepxsI6THGfGsg==", + "dev": true, + "dependencies": { + "@jest/transform": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^27.2.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "27.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz", + "integrity": "sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "27.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz", + "integrity": "sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^27.2.0", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base-x": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", + "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "optional": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bcrypt-pbkdf/node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/blakejs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.1.tgz", + "integrity": "sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg==" + }, + "node_modules/blessed": { + "version": "0.1.81", + "resolved": "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz", + "integrity": "sha1-+WLWh+wsNpVwrnGvhDJW5tDKESk=", + "bin": { + "blessed": "bin/tput.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "optional": true, + "dependencies": { + "inherits": "~2.0.0" + }, + "engines": { + "node": "0.4 || >=0.5.8" + } + }, + "node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/bodec": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bodec/-/bodec-0.1.0.tgz", + "integrity": "sha1-vIUVVUMPI8n3ZQp172TGqUw0GMw=" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "node_modules/boxen": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "dev": true, + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "cli-boxes": "^2.2.0", + "string-width": "^4.1.0", + "term-size": "^2.1.0", + "type-fest": "^0.8.1", + "widest-line": "^3.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz", + "integrity": "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001264", + "electron-to-chromium": "^1.3.857", + "escalade": "^3.1.1", + "node-releases": "^1.1.77", + "picocolors": "^0.2.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/bufferutil": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.3.tgz", + "integrity": "sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.2.0" + } + }, + "node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001265", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz", + "integrity": "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "optional": true + }, + "node_modules/chai": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "node_modules/charm": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/charm/-/charm-0.1.2.tgz", + "integrity": "sha1-BsIe7RobBq62dVPNxT4jJ0usIpY=" + }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "node_modules/clear": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/clear/-/clear-0.1.0.tgz", + "integrity": "sha512-qMjRnoL+JDPJHeLePZJuao6+8orzHMGP04A8CdwCNsKhRbOnKRjefxONR7bwILT3MHecxKBjHkKL/tkZ8r4Uzw==", + "engines": { + "node": "*" + } + }, + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-progress": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.9.0.tgz", + "integrity": "sha512-g7rLWfhAo/7pF+a/STFH/xPyosaL1zgADhI0OM83hl3c7S43iGvJWEAV2QuDOnQ8i6EMBj/u4+NTd0d5L+4JfA==", + "dependencies": { + "colors": "^1.1.2", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-tableau": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cli-tableau/-/cli-tableau-2.0.1.tgz", + "integrity": "sha512-he+WTicka9cl0Fg/y+YyxcN6/bfQ/1O3QmgxRXDhABKqLzvoOSM4fMzp39uMyLBulAFuywD2N7UaoQE7WaADxQ==", + "dependencies": { + "chalk": "3.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/cli-tableau/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-line-args": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.1.1.tgz", + "integrity": "sha512-hL/eG8lrll1Qy1ezvkant+trihbGnaKaeEjj6Scyr3DN+RC7iQ5Rz84IeLERfAWDGo0HBSNAakczwgCilDXnWg==", + "dependencies": { + "array-back": "^3.0.1", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commander": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.0.0.tgz", + "integrity": "sha512-ovx/7NkTrnPuIV8sqk/GjUIIM1+iUQeqA3ye2VNpq9sVoiZsooObWlQy+OPWGI17GDaEoybuAGJm6U8yC077BA==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/configstore/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/configstore/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "node_modules/continuation-local-storage": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", + "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==", + "dependencies": { + "async-listener": "^0.6.0", + "emitter-listener": "^1.1.1" + } + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/convert-source-map/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cron": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/cron/-/cron-1.8.2.tgz", + "integrity": "sha512-Gk2c4y6xKEO8FSAUTklqtfSr7oTq0CiPQeLBG5Fl0qoXpZyMcj1SG59YL+hqq04bu6/IuEA7lMkYDAplQNKkyg==", + "dependencies": { + "moment-timezone": "^0.5.x" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-3.3.0.tgz", + "integrity": "sha512-teWAwfMb1d6brahYyKqcBEb5Yp8PJPvPOdOonXDnvaKOTmKDFNVE8E3Y2XQuzjNV/3XMwHbrX9fHWvrhRKt4Gg==", + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/css-select": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", + "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=" + }, + "node_modules/culvert": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/culvert/-/culvert-0.1.2.tgz", + "integrity": "sha1-lQL18BVKLVoioCPnn3HMk2+m728=" + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", + "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/dayjs": { + "version": "1.8.36", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.36.tgz", + "integrity": "sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw==" + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "node_modules/deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/degenerator": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.1.tgz", + "integrity": "sha512-LFsIFEeLPlKvAKXu7j3ssIG6RT0TbI7/GhsqrI0DnHASEQjXQ0LUSYcjJteGgRGmZbl1TnMSxpNQIAiJ7Du5TQ==", + "dependencies": { + "ast-types": "^0.13.2", + "escodegen": "^1.8.1", + "esprima": "^4.0.0", + "vm2": "^3.9.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", + "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/domhandler": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", + "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", + "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "optional": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ed2curve": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ed2curve/-/ed2curve-0.3.0.tgz", + "integrity": "sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ==", + "dependencies": { + "tweetnacl": "1.x.x" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.3.861", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.861.tgz", + "integrity": "sha512-GZyflmpMnZRdZ1e2yAyvuFwz1MPSVQelwHX4TJZyXypB8NcxdPvPNwy5lOTxnlkrK13EiQzyTPugRSnj6cBgKg==", + "dev": true + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/emitter-listener": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", + "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", + "dependencies": { + "shimmer": "^1.2.0" + } + }, + "node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dependencies": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter2": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz", + "integrity": "sha1-YZegldX7a1folC9v1+qtY6CclFI=" + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.2.4.tgz", + "integrity": "sha512-gOtuonQ8TCnbNNCSw2fhVzRf8EFYDII4nB5NmG4IEV0rbUnW1I5zXvoTntU4iicB/Uh0oZr20NGlOLdJiwsOZA==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.4", + "ansi-styles": "^5.0.0", + "jest-get-type": "^27.0.6", + "jest-matcher-utils": "^27.2.4", + "jest-message-util": "^27.2.4", + "jest-regex-util": "^27.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/expect/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/export-to-csv": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/export-to-csv/-/export-to-csv-0.2.1.tgz", + "integrity": "sha512-KTbrd3CAZ0cFceJEZr1e5uiMasabeCpXq1/5uvVxDl53o4jXJHnltasQoj2NkzrxD8hU9kdwjnMhoir/7nNx/A==" + }, + "node_modules/ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dependencies": { + "type": "^2.0.0" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", + "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "optional": true + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "engines": [ + "node >=0.6.0" + ], + "optional": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "optional": true + }, + "node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-json-patch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.0.tgz", + "integrity": "sha512-IhpytlsVTRndz0hU5t0/MGzS/etxLlfrpG5V5M9mVbuj9TrJLWaMfsox9REM5rkuGX0T+5qjpe8XA1o0gZ42nA==" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "devOptional": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "node_modules/fastq": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz", + "integrity": "sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fclone": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fclone/-/fclone-1.0.11.tgz", + "integrity": "sha1-EOhdo4v+p/xZk0HClu4ddyZu5kA=" + }, + "node_modules/figlet": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.0.tgz", + "integrity": "sha512-ZQJM4aifMpz6H19AW1VqvZ7l4pOE9p7i/3LyxgO2kp+PO/VcDYNqIHEMtkccqIhTXMKci4kjueJr/iCQEaT/Ww==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-uri-to-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz", + "integrity": "sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dependencies": { + "array-back": "^3.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/follow-redirects": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.2.tgz", + "integrity": "sha512-yLR6WaE2lbF0x4K2qE2p9PEXKLDjUjnR/xmjS3wHAYxtlsI9MLLBJUZirAHKzUZDGLxje7w/cXR49WOUo4rbsA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fp-ts": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.9.5.tgz", + "integrity": "sha512-MiHrA5teO6t8zKArE3DdMPT/Db6v2GUt5yfWnhBTrrsVfeCJUUnV6sgFvjGNBKDmEMqVwRFkEePL7wPwqrLKKA==" + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dependencies": { + "minipass": "^2.6.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/fstream/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "optional": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/fstream/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ftp": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", + "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", + "dependencies": { + "readable-stream": "1.1.x", + "xregexp": "2.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ftp/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/ftp/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/gauge/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/get-uri": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz", + "integrity": "sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==", + "dependencies": { + "@tootallnate/once": "1", + "data-uri-to-buffer": "3", + "debug": "4", + "file-uri-to-path": "2", + "fs-extra": "^8.1.0", + "ftp": "^0.3.10" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/get-uri/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/get-uri/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/git-node-fs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/git-node-fs/-/git-node-fs-1.0.0.tgz", + "integrity": "sha1-SbIV4kLr5Dqkx1Ybu6SZUhdSCA8=" + }, + "node_modules/git-sha1": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/git-sha1/-/git-sha1-0.1.2.tgz", + "integrity": "sha1-WZrBkrcYdYJeE6RF86bgURjC90U=" + }, + "node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", + "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", + "dev": true, + "dependencies": { + "ini": "1.3.7" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", + "dev": true + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "optional": true, + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "node_modules/http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "dev": true + }, + "node_modules/ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", + "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/inquirer/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/inquirer/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "node_modules/ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz", + "integrity": "sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "dev": true, + "dependencies": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-npm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "devOptional": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "optional": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-report/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/istanbul-reports": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.3.tgz", + "integrity": "sha512-0i77ZFLsb9U3DHi22WzmIngVzfoyxxbQcZRqlF3KoKmCJGq9nhFHoGi8FqBztN2rE8w6hURnZghetn0xpkVb6A==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.2.4.tgz", + "integrity": "sha512-h4uqb1EQLfPulWyUFFWv9e9Nn8sCqsJ/j3wk/KCY0p4s4s0ICCfP3iMf6hRf5hEhsDyvyrCgKiZXma63gMz16A==", + "dev": true, + "dependencies": { + "@jest/core": "^27.2.4", + "import-local": "^3.0.2", + "jest-cli": "^27.2.4" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.2.4.tgz", + "integrity": "sha512-eeO1C1u4ex7pdTroYXezr+rbr957myyVoKGjcY4R1TJi3A+9v+4fu1Iv9J4eLq1bgFyT3O3iRWU9lZsEE7J72Q==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.4", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.2.4.tgz", + "integrity": "sha512-TtheheTElrGjlsY9VxkzUU1qwIx05ItIusMVKnvNkMt4o/PeegLRcjq3Db2Jz0GGdBalJdbzLZBgeulZAJxJWA==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.2.4", + "@jest/test-result": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.2.4", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.2.4", + "jest-matcher-utils": "^27.2.4", + "jest-message-util": "^27.2.4", + "jest-runtime": "^27.2.4", + "jest-snapshot": "^27.2.4", + "jest-util": "^27.2.4", + "pretty-format": "^27.2.4", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-cli": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.2.4.tgz", + "integrity": "sha512-4kpQQkg74HYLaXo3nzwtg4PYxSLgL7puz1LXHj5Tu85KmlIpxQFjRkXlx4V47CYFFIDoyl3rHA/cXOxUWyMpNg==", + "dev": true, + "dependencies": { + "@jest/core": "^27.2.4", + "@jest/test-result": "^27.2.4", + "@jest/types": "^27.2.4", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "jest-config": "^27.2.4", + "jest-util": "^27.2.4", + "jest-validate": "^27.2.4", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/node_modules/ci-info": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true + }, + "node_modules/jest-cli/node_modules/is-ci": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, + "dependencies": { + "ci-info": "^3.1.1" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/jest-cli/node_modules/jest-config": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.2.4.tgz", + "integrity": "sha512-tWy0UxhdzqiKyp4l5Vq4HxLyD+gH5td+GCF3c22/DJ0bYAOsMo+qi2XtbJI6oYMH5JOJQs9nLW/r34nvFCehjA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^27.2.4", + "@jest/types": "^27.2.4", + "babel-jest": "^27.2.4", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "jest-circus": "^27.2.4", + "jest-environment-jsdom": "^27.2.4", + "jest-environment-node": "^27.2.4", + "jest-get-type": "^27.0.6", + "jest-jasmine2": "^27.2.4", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.2.4", + "jest-runner": "^27.2.4", + "jest-util": "^27.2.4", + "jest-validate": "^27.2.4", + "micromatch": "^4.0.4", + "pretty-format": "^27.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-cli/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-diff": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.2.4.tgz", + "integrity": "sha512-bLAVlDSCR3gqUPGv+4nzVpEXGsHh98HjUL7Vb2hVyyuBDoQmja8eJb0imUABsuxBeUVmf47taJSAd9nDrwWKEg==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.0.6", + "jest-get-type": "^27.0.6", + "pretty-format": "^27.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", + "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.2.4.tgz", + "integrity": "sha512-w9XVc+0EDBUTJS4xBNJ7N2JCcWItFd006lFjz77OarAQcQ10eFDBMrfDv2GBJMKlXe9aq0HrIIF51AXcZrRJyg==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.4", + "chalk": "^4.0.0", + "jest-get-type": "^27.0.6", + "jest-util": "^27.2.4", + "pretty-format": "^27.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.2.4.tgz", + "integrity": "sha512-X70pTXFSypD7AIzKT1mLnDi5hP9w9mdTRcOGOmoDoBrNyNEg4rYm6d4LQWFLc9ps1VnMuDOkFSG0wjSNYGjkng==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.2.4", + "@jest/fake-timers": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/node": "*", + "jest-mock": "^27.2.4", + "jest-util": "^27.2.4", + "jsdom": "^16.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.2.4.tgz", + "integrity": "sha512-ZbVbFSnbzTvhLOIkqh5lcLuGCCFvtG4xTXIRPK99rV2KzQT3kNg16KZwfTnLNlIiWCE8do960eToeDfcqmpSAw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.2.4", + "@jest/fake-timers": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/node": "*", + "jest-mock": "^27.2.4", + "jest-util": "^27.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.2.4.tgz", + "integrity": "sha512-bkJ4bT00T2K+1NZXbRcyKnbJ42I6QBvoDNMTAQQDBhaGNnZreiQKUNqax0e6hLTx7E75pKDeltVu3V1HAdu+YA==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.4", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.2.4", + "jest-worker": "^27.2.4", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-jasmine2": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.2.4.tgz", + "integrity": "sha512-fcffjO/xLWLVnW2ct3No4EksxM5RyPwHDYu9QU+90cC+/eSMLkFAxS55vkqsxexOO5zSsZ3foVpMQcg/amSeIQ==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^27.2.4", + "@jest/source-map": "^27.0.6", + "@jest/test-result": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.2.4", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.2.4", + "jest-matcher-utils": "^27.2.4", + "jest-message-util": "^27.2.4", + "jest-runtime": "^27.2.4", + "jest-snapshot": "^27.2.4", + "jest-util": "^27.2.4", + "pretty-format": "^27.2.4", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-leak-detector": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.2.4.tgz", + "integrity": "sha512-SrcHWbe0EHg/bw2uBjVoHacTo5xosl068x2Q0aWsjr2yYuW2XwqrSkZV4lurUop0jhv1709ymG4or+8E4sH27Q==", + "dev": true, + "dependencies": { + "jest-get-type": "^27.0.6", + "pretty-format": "^27.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.2.4.tgz", + "integrity": "sha512-nQeLfFAIPPkyhkDfifAPfP/U5wm1x0fLtAzqXZSSKckXDNuk2aaOfQiDYv1Mgf5GY6yOsxfUnvNm3dDjXM+BXw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.2.4", + "jest-get-type": "^27.0.6", + "pretty-format": "^27.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.4.tgz", + "integrity": "sha512-wbKT/BNGnBVB9nzi+IoaLkXt6fbSvqUxx+IYY66YFh96J3goY33BAaNG3uPqaw/Sh/FR9YpXGVDfd5DJdbh4nA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.2.4", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "pretty-format": "^27.2.4", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-mock": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.2.4.tgz", + "integrity": "sha512-iVRU905rutaAoUcrt5Tm1JoHHWi24YabqEGXjPJI4tAyA6wZ7mzDi3GrZ+M7ebgWBqUkZE93GAx1STk7yCMIQA==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.4", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.2.4.tgz", + "integrity": "sha512-IsAO/3+3BZnKjI2I4f3835TBK/90dxR7Otgufn3mnrDFTByOSXclDi3G2XJsawGV4/18IMLARJ+V7Wm7t+J89Q==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.4", + "chalk": "^4.0.0", + "escalade": "^3.1.1", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.2.4", + "jest-validate": "^27.2.4", + "resolve": "^1.20.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.2.4.tgz", + "integrity": "sha512-i5s7Uh9B3Q6uwxLpMhNKlgBf6pcemvWaORxsW1zNF/YCY3jd5EftvnGBI+fxVwJ1CBxkVfxqCvm1lpZkbaoGmg==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.4", + "jest-regex-util": "^27.0.6", + "jest-snapshot": "^27.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.2.4.tgz", + "integrity": "sha512-hIo5PPuNUyVDidZS8EetntuuJbQ+4IHWxmHgYZz9FIDbG2wcZjrP6b52uMDjAEQiHAn8yn8ynNe+TL8UuGFYKg==", + "dev": true, + "dependencies": { + "@jest/console": "^27.2.4", + "@jest/environment": "^27.2.4", + "@jest/test-result": "^27.2.4", + "@jest/transform": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-docblock": "^27.0.6", + "jest-environment-jsdom": "^27.2.4", + "jest-environment-node": "^27.2.4", + "jest-haste-map": "^27.2.4", + "jest-leak-detector": "^27.2.4", + "jest-message-util": "^27.2.4", + "jest-resolve": "^27.2.4", + "jest-runtime": "^27.2.4", + "jest-util": "^27.2.4", + "jest-worker": "^27.2.4", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.2.4.tgz", + "integrity": "sha512-ICKzzYdjIi70P17MZsLLIgIQFCQmIjMFf+xYww3aUySiUA/QBPUTdUqo5B2eg4HOn9/KkUsV0z6GVgaqAPBJvg==", + "dev": true, + "dependencies": { + "@jest/console": "^27.2.4", + "@jest/environment": "^27.2.4", + "@jest/fake-timers": "^27.2.4", + "@jest/globals": "^27.2.4", + "@jest/source-map": "^27.0.6", + "@jest/test-result": "^27.2.4", + "@jest/transform": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.2.4", + "jest-message-util": "^27.2.4", + "jest-mock": "^27.2.4", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.2.4", + "jest-snapshot": "^27.2.4", + "jest-util": "^27.2.4", + "jest-validate": "^27.2.4", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^16.2.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.2.4.tgz", + "integrity": "sha512-5DFxK31rYS8X8C6WXsFx8XxrxW3PGa6+9IrUcZdTLg1aEyXDGIeiBh4jbwvh655bg/9vTETbEj/njfZicHTZZw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/parser": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.2.4", + "graceful-fs": "^4.2.4", + "jest-diff": "^27.2.4", + "jest-get-type": "^27.0.6", + "jest-haste-map": "^27.2.4", + "jest-matcher-utils": "^27.2.4", + "jest-message-util": "^27.2.4", + "jest-resolve": "^27.2.4", + "jest-util": "^27.2.4", + "natural-compare": "^1.4.0", + "pretty-format": "^27.2.4", + "semver": "^7.3.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-util": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.4.tgz", + "integrity": "sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.4", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-util/node_modules/ci-info": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true + }, + "node_modules/jest-util/node_modules/is-ci": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, + "dependencies": { + "ci-info": "^3.1.1" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/jest-validate": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.4.tgz", + "integrity": "sha512-VMtbxbkd7LHnIH7PChdDtrluCFRJ4b1YV2YJzNwwsASMWftq/HgqiqjvptBOWyWOtevgO3f14wPxkPcLlVBRog==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.4", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.0.6", + "leven": "^3.1.0", + "pretty-format": "^27.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.2.4.tgz", + "integrity": "sha512-LXC/0+dKxhK7cfF7reflRYlzDIaQE+fL4ynhKhzg8IMILNMuI4xcjXXfUJady7OR4/TZeMg7X8eHx8uan9vqaQ==", + "dev": true, + "dependencies": { + "@jest/test-result": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.2.4", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-worker": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.4.tgz", + "integrity": "sha512-Zq9A2Pw59KkVjBBKD1i3iE2e22oSjXhUKKuAK1HGX8flGwkm6NMozyEYzKd41hXc64dbd/0eWFeEEuxqXyhM+g==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-git": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/js-git/-/js-git-0.7.8.tgz", + "integrity": "sha1-UvplWrYYd9bxB578ZTS1VPMeVEQ=", + "dependencies": { + "bodec": "^0.1.0", + "culvert": "^0.1.2", + "git-sha1": "^0.1.2", + "pako": "^0.2.5" + } + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/jsdom/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "optional": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "optional": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "optional": true + }, + "node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "engines": [ + "node >=0.6.0" + ], + "optional": true, + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "dependencies": { + "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lazy": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz", + "integrity": "sha1-2qBoIGKCVCwIgojpdcKXwa53tpA=", + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + }, + "node_modules/log-driver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", + "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", + "engines": { + "node": ">=0.8.6" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "dependencies": { + "tmpl": "1.0.x" + } + }, + "node_modules/marked": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-2.1.3.tgz", + "integrity": "sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA==", + "dev": true, + "bin": { + "marked": "bin/marked" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.49.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", + "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.32", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", + "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "dependencies": { + "mime-db": "1.49.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dependencies": { + "minipass": "^2.9.0" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/module-details-from-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", + "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" + }, + "node_modules/module-require": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/module-require/-/module-require-1.4.5.tgz", + "integrity": "sha1-Yz3wgzRDya2FlvTELlI3NINVr4g=" + }, + "node_modules/moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.33", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.33.tgz", + "integrity": "sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w==", + "dependencies": { + "moment": ">= 2.9.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/needle": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", + "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/needle/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" + }, + "node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "optional": true, + "dependencies": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", + "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-gyp/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "optional": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/node-gyp/node_modules/nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "optional": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/node-gyp/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "optional": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node_modules/node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-pre-gyp": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", + "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==", + "deprecated": "Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future", + "dependencies": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/node-pre-gyp/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/node-pre-gyp/node_modules/nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dependencies": { + "abbrev": "1", + "osenv": "^0.1.4" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/node-pre-gyp/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/node-pre-gyp/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/node-pre-gyp/node_modules/tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "dependencies": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/node-releases": { + "version": "1.1.77", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", + "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==", + "dev": true + }, + "node_modules/nodejs-fs-utils": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/nodejs-fs-utils/-/nodejs-fs-utils-1.2.5.tgz", + "integrity": "sha512-QuIFfHWaQJhjmUnGSCq+knKrYL2Q8HJUNAzRk8qoHK+g0oKzq57MdB4tODIknclKII0oAO0kO1lDt8yLyLhsAQ==", + "dependencies": { + "module-require": "*" + } + }, + "node_modules/nodemon": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.7.tgz", + "integrity": "sha512-XHzK69Awgnec9UzHr1kc8EomQh4sjTQ8oRf8TsGrSmHDx9/UmiGG9E/mM3BuTfNeFwdNBvrqQq/RHL0xIeyFOA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "chokidar": "^3.2.2", + "debug": "^3.2.6", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.7", + "semver": "^5.7.1", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.3", + "update-notifier": "^4.1.0" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/nodemon/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/nodemon/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/nodemon/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/nodemon/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + }, + "node_modules/npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "dependencies": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/nssocket": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz", + "integrity": "sha1-Wflvb/MhVm8zxw99vu7N/cBxVPo=", + "dependencies": { + "eventemitter2": "~0.4.14", + "lazy": "~1.0.11" + }, + "engines": { + "node": ">= 0.10.x" + } + }, + "node_modules/nssocket/node_modules/eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=" + }, + "node_modules/nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/onigasm": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/onigasm/-/onigasm-2.2.5.tgz", + "integrity": "sha512-F+th54mPc0l1lp1ZcFMyL/jTs2Tlq4SqIHKIXGZOR/VkHkF9A7Fr5rRr5+ZG/lWeRsyrClLYRq7s/yFQ/XhWCA==", + "dev": true, + "dependencies": { + "lru-cache": "^5.1.1" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pac-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz", + "integrity": "sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4", + "get-uri": "3", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "5", + "pac-resolver": "^5.0.0", + "raw-body": "^2.2.0", + "socks-proxy-agent": "5" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/pac-proxy-agent/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/pac-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/pac-resolver": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.0.tgz", + "integrity": "sha512-H+/A6KitiHNNW+bxBKREk2MCGSxljfqRX76NjummWEYIat7ldVXRU3dhRIE3iXZ0nvGBk6smv3nntxKkzRL8NA==", + "dependencies": { + "degenerator": "^3.0.1", + "ip": "^1.1.5", + "netmask": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", + "dependencies": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "engines": { + "node": "*" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "optional": true + }, + "node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidusage": { + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-2.0.21.tgz", + "integrity": "sha512-cv3xAQos+pugVX+BfXpHsbyz/dLzX+lr44zNMsYiGxUw+kV5sgQCIcLd1z+0vq+KyC7dJ+/ts2PsfgWfSC3WXA==", + "dependencies": { + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "dependencies": { + "node-modules-regexp": "^1.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pm2": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/pm2/-/pm2-5.1.1.tgz", + "integrity": "sha512-2Agpn2IVXOKu8kP+qaxKOvMLNtbZ6lY4bzKcEW2d2tw7O0lpNO7QvDayY4af+8U1+WCn90UjPK4q2wPFVHt/sA==", + "dependencies": { + "@pm2/agent": "~2.0.0", + "@pm2/io": "~5.0.0", + "@pm2/js-api": "~0.6.7", + "@pm2/pm2-version-check": "latest", + "async": "~3.2.0", + "blessed": "0.1.81", + "chalk": "3.0.0", + "chokidar": "^3.5.1", + "cli-tableau": "^2.0.0", + "commander": "2.15.1", + "cron": "1.8.2", + "dayjs": "~1.8.25", + "debug": "^4.3.1", + "enquirer": "2.3.6", + "eventemitter2": "5.0.1", + "fclone": "1.0.11", + "mkdirp": "1.0.4", + "needle": "2.4.0", + "pidusage": "2.0.21", + "pm2-axon": "~4.0.1", + "pm2-axon-rpc": "~0.7.1", + "pm2-deploy": "~1.0.2", + "pm2-multimeter": "^0.1.2", + "promptly": "^2", + "semver": "^7.2", + "source-map-support": "0.5.19", + "sprintf-js": "1.1.2", + "vizion": "~2.2.1", + "yamljs": "0.3.0" + }, + "bin": { + "pm2": "bin/pm2", + "pm2-dev": "bin/pm2-dev", + "pm2-docker": "bin/pm2-docker", + "pm2-runtime": "bin/pm2-runtime" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "pm2-sysmonit": "^1.2.8" + } + }, + "node_modules/pm2-axon": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pm2-axon/-/pm2-axon-4.0.1.tgz", + "integrity": "sha512-kES/PeSLS8orT8dR5jMlNl+Yu4Ty3nbvZRmaAtROuVm9nYYGiaoXqqKQqQYzWQzMYWUKHMQTvBlirjE5GIIxqg==", + "dependencies": { + "amp": "~0.3.1", + "amp-message": "~0.1.1", + "debug": "^4.3.1", + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=5" + } + }, + "node_modules/pm2-axon-rpc": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/pm2-axon-rpc/-/pm2-axon-rpc-0.7.1.tgz", + "integrity": "sha512-FbLvW60w+vEyvMjP/xom2UPhUN/2bVpdtLfKJeYM3gwzYhoTEEChCOICfFzxkxuoEleOlnpjie+n1nue91bDQw==", + "dependencies": { + "debug": "^4.3.1" + }, + "engines": { + "node": ">=5" + } + }, + "node_modules/pm2-axon-rpc/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/pm2-axon-rpc/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/pm2-axon/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/pm2-axon/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pm2-axon/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/pm2-deploy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pm2-deploy/-/pm2-deploy-1.0.2.tgz", + "integrity": "sha512-YJx6RXKrVrWaphEYf++EdOOx9EH18vM8RSZN/P1Y+NokTKqYAca/ejXwVLyiEpNju4HPZEk3Y2uZouwMqUlcgg==", + "dependencies": { + "run-series": "^1.1.8", + "tv4": "^1.3.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pm2-multimeter": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/pm2-multimeter/-/pm2-multimeter-0.1.2.tgz", + "integrity": "sha1-Gh5VFT1BoFU0zqI8/oYKuqDrSs4=", + "dependencies": { + "charm": "~0.1.1" + } + }, + "node_modules/pm2-sysmonit": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/pm2-sysmonit/-/pm2-sysmonit-1.2.8.tgz", + "integrity": "sha512-ACOhlONEXdCTVwKieBIQLSi2tQZ8eKinhcr9JpZSUAL8Qy0ajIgRtsLxG/lwPOW3JEKqPyw/UaHmTWhUzpP4kA==", + "optional": true, + "dependencies": { + "async": "^3.2.0", + "debug": "^4.3.1", + "pidusage": "^2.0.21", + "systeminformation": "^5.7", + "tx2": "~1.0.4" + } + }, + "node_modules/pm2-sysmonit/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "optional": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/pm2-sysmonit/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "optional": true + }, + "node_modules/pm2/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pm2/node_modules/commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" + }, + "node_modules/pm2/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/pm2/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/pm2/node_modules/sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pretty-error": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-3.0.4.tgz", + "integrity": "sha512-ytLFLfv1So4AO1UkoBF6GXQgJRaKbiSiGFICaOPNwQ3CMvBvXpLRubeQWyPGnsbV/t9ml9qto6IeCsho0aEvwQ==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^2.0.6" + } + }, + "node_modules/pretty-format": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.4.tgz", + "integrity": "sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.4", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promptly": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/promptly/-/promptly-2.2.0.tgz", + "integrity": "sha1-KhP6BjaIoqWYOxYf/wEIoH0m/HQ=", + "dependencies": { + "read": "^1.0.4" + } + }, + "node_modules/prompts": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", + "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz", + "integrity": "sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==", + "dependencies": { + "agent-base": "^6.0.0", + "debug": "4", + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", + "lru-cache": "^5.1.1", + "pac-proxy-agent": "^5.0.0", + "proxy-from-env": "^1.0.0", + "socks-proxy-agent": "^5.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/proxy-agent/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "devOptional": true + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "dev": true, + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "optional": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/raw-body": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", + "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.3", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/readline-sync": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", + "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "node_modules/registry-auth-token": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "dev": true, + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/renderkid": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", + "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" + } + }, + "node_modules/renderkid/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/renderkid/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "optional": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "optional": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/request/node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "optional": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-in-the-middle": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.1.0.tgz", + "integrity": "sha512-M2rLKVupQfJ5lf9OvqFGIT+9iVLnTmjgbOmpil12hiSQNn5zJTKGPoIisETNjfK+09vP3rpm1zJajmErpr2sEQ==", + "dependencies": { + "debug": "^4.1.1", + "module-details-from-path": "^1.0.3", + "resolve": "^1.12.0" + } + }, + "node_modules/require-in-the-middle/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/require-in-the-middle/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/run-series": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz", + "integrity": "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/rxjs": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.3.0.tgz", + "integrity": "sha512-p2yuGIg9S1epc3vrjKf6iVb3RCaAYjYskkO+jHIaV0IjOPlJop4UnodOoFb2xeNwlguqLYvGw1b1McillYb5Gw==", + "dependencies": { + "tslib": "~2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/scryptsy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-2.1.0.tgz", + "integrity": "sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w==" + }, + "node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shelljs": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", + "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shiki": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.9.6.tgz", + "integrity": "sha512-h2y5Uq9QEWsEmi97n+BOdPOVxkOUdVunl+jVIzU9EqJ6/QbIX+U6F7TsrWZQ2xqwPgvvQaC9r7/zeegi1b48dQ==", + "dev": true, + "dependencies": { + "json5": "^2.2.0", + "onigasm": "^2.2.5", + "vscode-textmate": "5.2.0" + } + }, + "node_modules/shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", + "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.1.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", + "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "4", + "socks": "^2.3.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/socks-proxy-agent/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socks-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "node_modules/sqlite3": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.2.tgz", + "integrity": "sha512-1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA==", + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^3.0.0", + "node-pre-gyp": "^0.11.0" + }, + "optionalDependencies": { + "node-gyp": "3.x" + }, + "peerDependencies": { + "node-gyp": "3.x" + }, + "peerDependenciesMeta": { + "node-gyp": { + "optional": true + } + } + }, + "node_modules/sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "optional": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sshpk/node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "node_modules/stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/systeminformation": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.8.0.tgz", + "integrity": "sha512-l4drbK2PtNynGKblaShY9hDLW/gg1zxUq2+Yk4gTyd6a2JUvFyTGP8PhHV9iOh+MzS25PQa8W1t0kvcIvr9n7Q==", + "optional": true, + "os": [ + "darwin", + "linux", + "win32", + "freebsd", + "openbsd", + "netbsd", + "sunos" + ], + "bin": { + "systeminformation": "lib/cli.js" + }, + "engines": { + "node": ">=4.0.0" + }, + "funding": { + "type": "Buy me a coffee", + "url": "https://www.buymeacoffee.com/systeminfo" + } + }, + "node_modules/tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "deprecated": "This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.", + "optional": true, + "dependencies": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, + "node_modules/term-size": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/throat": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-jest": { + "version": "27.0.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.5.tgz", + "integrity": "sha512-lIJApzfTaSSbtlksfFNHkWOzLJuuSm4faFAfo5kvzOiRAuoN4/eKxVJ2zEAho8aecE04qX6K1pAzfH5QHL1/8w==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", + "json5": "2.x", + "lodash": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@types/jest": "^27.0.0", + "babel-jest": ">=27.0.0 <28", + "jest": "^27.0.0", + "typescript": ">=3.8 <5.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/jest": { + "optional": true + }, + "babel-jest": { + "optional": true + } + } + }, + "node_modules/ts-node": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", + "dev": true, + "dependencies": { + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "typescript": ">=2.7" + } + }, + "node_modules/tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "optional": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tv4": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", + "integrity": "sha1-0CDIRvrdUMhVq7JeuuzGj8EPeWM=", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "node_modules/tx2": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tx2/-/tx2-1.0.4.tgz", + "integrity": "sha512-rU+y30nUY3PyIi+znvv74HzxlpULKwMPAyRK+YiCjvGkk3rY3fic3D6Z+avLpun3V5A6HFwPQ9JrBTMNEV/dxg==", + "optional": true, + "dependencies": { + "json-stringify-safe": "^5.0.1" + } + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-coverage": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/type-coverage/-/type-coverage-2.16.3.tgz", + "integrity": "sha512-sRT+bWDWqh4FD0tQBvGAedNIteRYC+qLL51nfCEcyAwfIrTR0hm50YoP48Ri2zVFyJwmAQF92Smu4ody2k36sw==", + "dev": true, + "dependencies": { + "minimist": "1", + "type-coverage-core": "^2.16.3" + }, + "bin": { + "type-coverage": "bin/type-coverage" + } + }, + "node_modules/type-coverage-core": { + "version": "2.17.5", + "resolved": "https://registry.npmjs.org/type-coverage-core/-/type-coverage-core-2.17.5.tgz", + "integrity": "sha512-FfkH2kIgQkkgC47V2WHJZWBbjYjMw2ZpQRdRGTcMBAnkijmRCp9I1LpOuI+Gv4MDtniRLnkAo8htGGt2iExFgA==", + "dev": true, + "dependencies": { + "fast-glob": "3", + "minimatch": "3", + "normalize-path": "3", + "tslib": "1 || 2", + "tsutils": "3" + }, + "peerDependencies": { + "typescript": "2 || 3 || 4" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typedoc": { + "version": "0.20.28", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.20.28.tgz", + "integrity": "sha512-8j0T8u9FuyDkoe+M/3cyoaGJSVgXCY9KwVoo7TLUnmQuzXwqH+wkScY530ZEdK6G39UZ2LFTYPIrL5eykWjx6A==", + "dev": true, + "dependencies": { + "colors": "^1.4.0", + "fs-extra": "^9.1.0", + "handlebars": "^4.7.7", + "lodash": "^4.17.21", + "lunr": "^2.3.9", + "marked": "^2.0.0", + "minimatch": "^3.0.0", + "progress": "^2.0.3", + "shelljs": "^0.8.4", + "shiki": "^0.9.2", + "typedoc-default-themes": "^0.12.7" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 10.8.0" + }, + "peerDependencies": { + "typescript": "3.9.x || 4.0.x || 4.1.x" + } + }, + "node_modules/typedoc-default-themes": { + "version": "0.12.10", + "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.12.10.tgz", + "integrity": "sha512-fIS001cAYHkyQPidWXmHuhs8usjP5XVJjWB8oZGqkTowZaz3v7g3KDZeeqE82FBrmkAnIBOY3jgy7lnPnqATbA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/typedoc/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/typedoc/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/typedoc/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/typescript": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/uglify-js": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.1.tgz", + "integrity": "sha512-JhS3hmcVaXlp/xSo3PKY5R0JqKs5M3IV+exdLHW99qKvKivPO4Z8qbej6mte17SOPqAOVMjt/XGgWacnFSzM3g==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/undefsafe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", + "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", + "dev": true, + "dependencies": { + "debug": "^2.2.0" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unique-string/node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-notifier": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", + "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", + "dev": true, + "dependencies": { + "boxen": "^4.2.0", + "chalk": "^3.0.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.1", + "is-npm": "^4.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "pupa": "^2.0.1", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "optional": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/utf-8-validate": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.5.tgz", + "integrity": "sha512-+pnxRYsS/axEpkrrEpzYfNZGXp0IjC/9RIxwM5gntY4Koi8SHmUGSfxfWqxZdRxrtaoVstuOzUp/rbs3JSPELQ==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.2.0" + } + }, + "node_modules/util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8-to-istanbul": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz", + "integrity": "sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "engines": [ + "node >=0.6.0" + ], + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "optional": true + }, + "node_modules/vizion": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vizion/-/vizion-2.2.1.tgz", + "integrity": "sha512-sfAcO2yeSU0CSPFI/DmZp3FsFE9T+8913nv1xWBOyzODv13fwkn6Vl7HqxGpkr9F608M+8SuFId3s+BlZqfXww==", + "dependencies": { + "async": "^2.6.3", + "git-node-fs": "^1.0.0", + "ini": "^1.3.5", + "js-git": "^0.7.8" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/vizion/node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/vm2": { + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.5.tgz", + "integrity": "sha512-LuCAHZN75H9tdrAiLFf030oW7nJV5xwNMuk1ymOZwopmuK3d2H4L1Kv4+GFHgarKiLfXXLFU+7LDABHnwOkWng==", + "bin": { + "vm2": "bin/vm2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/vscode-textmate": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", + "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==", + "dev": true + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "dependencies": { + "makeerror": "1.0.x" + } + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, + "node_modules/websocket": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", + "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", + "dependencies": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/xregexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", + "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=", + "engines": { + "node": "*" + } + }, + "node_modules/xxhashjs": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", + "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", + "dependencies": { + "cuint": "^0.2.2" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=", + "engines": { + "node": ">=0.10.32" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yamljs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", + "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", + "dependencies": { + "argparse": "^1.0.7", + "glob": "^7.0.5" + }, + "bin": { + "json2yaml": "bin/json2yaml", + "yaml2json": "bin/yaml2json" + } + }, + "node_modules/yargs": { + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", + "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + } + }, "dependencies": { "@babel/code-frame": { "version": "7.14.5", @@ -72,12 +9668,12 @@ } }, "@babel/generator": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz", - "integrity": "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", + "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", "dev": true, "requires": { - "@babel/types": "^7.15.0", + "@babel/types": "^7.15.6", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, @@ -91,9 +9687,9 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz", - "integrity": "sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", + "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", "dev": true, "requires": { "@babel/compat-data": "^7.15.0", @@ -111,111 +9707,117 @@ } }, "@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-hoist-variables": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", - "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", + "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz", - "integrity": "sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", "dev": true, "requires": { - "@babel/types": "^7.15.0" + "@babel/types": "^7.15.4" } }, "@babel/helper-module-imports": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", - "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-module-transforms": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz", - "integrity": "sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", + "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-replace-supers": "^7.15.0", - "@babel/helper-simple-access": "^7.14.8", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.9", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.15.0", - "@babel/types": "^7.15.0" + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.6" } }, "@babel/helper-optimise-call-expression": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", - "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true + }, "@babel/helper-replace-supers": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz", - "integrity": "sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.0", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/traverse": "^7.15.0", - "@babel/types": "^7.15.0" + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/helper-simple-access": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz", - "integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", + "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", "dev": true, "requires": { - "@babel/types": "^7.14.8" + "@babel/types": "^7.15.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-validator-identifier": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", - "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/helper-validator-option": { @@ -298,86 +9900,512 @@ } } }, - "@babel/parser": { - "version": "7.15.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.3.tgz", - "integrity": "sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA==", - "dev": true - }, - "@babel/register": { - "version": "7.15.3", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.15.3.tgz", - "integrity": "sha512-mj4IY1ZJkorClxKTImccn4T81+UKTo4Ux0+OFSV9hME1ooqS9UV+pJ6BjD0qXPK4T3XW/KNa79XByjeEMZz+fw==", + "@babel/parser": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", + "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "dev": true + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", + "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz", + "integrity": "sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/register": { + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.15.3.tgz", + "integrity": "sha512-mj4IY1ZJkorClxKTImccn4T81+UKTo4Ux0+OFSV9hME1ooqS9UV+pJ6BjD0qXPK4T3XW/KNa79XByjeEMZz+fw==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.0", + "source-map-support": "^0.5.16" + } + }, + "@babel/runtime": { + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz", + "integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.2.4.tgz", + "integrity": "sha512-94znCKynPZpDpYHQ6esRJSc11AmONrVkBOBZiD7S+bSubHhrUfbS95EY5HIOxhm4PQO7cnvZkL3oJcY0oMA+Wg==", + "dev": true, + "requires": { + "@jest/types": "^27.2.4", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.2.4", + "jest-util": "^27.2.4", + "slash": "^3.0.0" + } + }, + "@jest/core": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.2.4.tgz", + "integrity": "sha512-UNQLyy+rXoojNm2MGlapgzWhZD1CT1zcHZQYeiD0xE7MtJfC19Q6J5D/Lm2l7i4V97T30usKDoEtjI8vKwWcLg==", + "dev": true, + "requires": { + "@jest/console": "^27.2.4", + "@jest/reporters": "^27.2.4", + "@jest/test-result": "^27.2.4", + "@jest/transform": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^27.2.4", + "jest-config": "^27.2.4", + "jest-haste-map": "^27.2.4", + "jest-message-util": "^27.2.4", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.2.4", + "jest-resolve-dependencies": "^27.2.4", + "jest-runner": "^27.2.4", + "jest-runtime": "^27.2.4", + "jest-snapshot": "^27.2.4", + "jest-util": "^27.2.4", + "jest-validate": "^27.2.4", + "jest-watcher": "^27.2.4", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ci-info": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true + }, + "is-ci": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, + "requires": { + "ci-info": "^3.1.1" + } + }, + "jest-config": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.2.4.tgz", + "integrity": "sha512-tWy0UxhdzqiKyp4l5Vq4HxLyD+gH5td+GCF3c22/DJ0bYAOsMo+qi2XtbJI6oYMH5JOJQs9nLW/r34nvFCehjA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^27.2.4", + "@jest/types": "^27.2.4", + "babel-jest": "^27.2.4", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "jest-circus": "^27.2.4", + "jest-environment-jsdom": "^27.2.4", + "jest-environment-node": "^27.2.4", + "jest-get-type": "^27.0.6", + "jest-jasmine2": "^27.2.4", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.2.4", + "jest-runner": "^27.2.4", + "jest-util": "^27.2.4", + "jest-validate": "^27.2.4", + "micromatch": "^4.0.4", + "pretty-format": "^27.2.4" + } + } + } + }, + "@jest/environment": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.2.4.tgz", + "integrity": "sha512-wkuui5yr3SSQW0XD0Qm3TATUbL/WE3LDEM3ulC+RCQhMf2yxhci8x7svGkZ4ivJ6Pc94oOzpZ6cdHBAMSYd1ew==", + "dev": true, + "requires": { + "@jest/fake-timers": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/node": "*", + "jest-mock": "^27.2.4" + } + }, + "@jest/fake-timers": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.2.4.tgz", + "integrity": "sha512-cs/TzvwWUM7kAA6Qm/890SK6JJ2pD5RfDNM3SSEom6BmdyV6OiWP1qf/pqo6ts6xwpcM36oN0wSEzcZWc6/B6w==", + "dev": true, + "requires": { + "@jest/types": "^27.2.4", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.2.4", + "jest-mock": "^27.2.4", + "jest-util": "^27.2.4" + } + }, + "@jest/globals": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.2.4.tgz", + "integrity": "sha512-DRsRs5dh0i+fA9mGHylTU19+8fhzNJoEzrgsu+zgJoZth3x8/0juCQ8nVVdW1er4Cqifb/ET7/hACYVPD0dBEA==", + "dev": true, + "requires": { + "@jest/environment": "^27.2.4", + "@jest/types": "^27.2.4", + "expect": "^27.2.4" + } + }, + "@jest/reporters": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.2.4.tgz", + "integrity": "sha512-LHeSdDnDZkDnJ8kvnjcqV8P1Yv/32yL4d4XfR5gBiy3xGO0onwll1QEbvtW96fIwhx2nejug0GTaEdNDoyr3fQ==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.2.4", + "@jest/test-result": "^27.2.4", + "@jest/transform": "^27.2.4", + "@jest/types": "^27.2.4", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^27.2.4", + "jest-resolve": "^27.2.4", + "jest-util": "^27.2.4", + "jest-worker": "^27.2.4", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + } + }, + "@jest/source-map": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", + "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", "dev": true, "requires": { - "clone-deep": "^4.0.1", - "find-cache-dir": "^2.0.0", - "make-dir": "^2.1.0", - "pirates": "^4.0.0", - "source-map-support": "^0.5.16" + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" } }, - "@babel/runtime": { - "version": "7.15.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz", - "integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==", + "@jest/test-result": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.2.4.tgz", + "integrity": "sha512-eU+PRo0+lIS01b0dTmMdVZ0TtcRSxEaYquZTRFMQz6CvsehGhx9bRzi9Zdw6VROviJyv7rstU+qAMX5pNBmnfQ==", + "dev": true, "requires": { - "regenerator-runtime": "^0.13.4" + "@jest/console": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" } }, - "@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "@jest/test-sequencer": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.2.4.tgz", + "integrity": "sha512-fpk5eknU3/DXE2QCCG1wv/a468+cfPo3Asu6d6yUtM9LOPh709ubZqrhuUOYfM8hXMrIpIdrv1CdCrWWabX0rQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" + "@jest/test-result": "^27.2.4", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.2.4", + "jest-runtime": "^27.2.4" } }, - "@babel/traverse": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz", - "integrity": "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==", + "@jest/transform": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.2.4.tgz", + "integrity": "sha512-n5FlX2TH0oQGwyVDKPxdJ5nI2sO7TJBFe3u3KaAtt7TOiV4yL+Y+rSFDl+Ic5MpbiA/eqXmLAQxjnBmWgS2rEA==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.0", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.15.0", - "@babel/types": "^7.15.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "@babel/core": "^7.1.0", + "@jest/types": "^27.2.4", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.2.4", + "jest-regex-util": "^27.0.6", + "jest-util": "^27.2.4", + "micromatch": "^4.0.4", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" } }, - "@babel/types": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", - "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", + "@jest/types": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", + "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" } }, "@nodelib/fs.scandir": { @@ -454,9 +10482,9 @@ } }, "@pm2/agent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@pm2/agent/-/agent-2.0.0.tgz", - "integrity": "sha512-W1LvdyF1tGaVU5f/hV8DjpI5joI7MEgXiQMLZnTwZlFwDVP00O9s86571Q8xSiweTcFZFyye0F4wORN/PjSgGA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@pm2/agent/-/agent-2.0.1.tgz", + "integrity": "sha512-QKHMm6yexcvdDfcNE7PL9D6uEjoQPGRi+8dh+rc4Hwtbpsbh5IAvZbz3BVGjcd4HaX6pt2xGpOohG7/Y2L4QLw==", "requires": { "async": "~3.2.0", "chalk": "~3.0.0", @@ -468,7 +10496,7 @@ "nssocket": "0.6.0", "pm2-axon": "~4.0.1", "pm2-axon-rpc": "~0.7.0", - "proxy-agent": "~4.0.1", + "proxy-agent": "~5.0.0", "semver": "~7.2.0", "ws": "~7.4.0" }, @@ -864,6 +10892,24 @@ "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", "dev": true }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", + "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, "@szmarczak/http-timer": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", @@ -878,6 +10924,47 @@ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" }, + "@types/babel__core": { + "version": "7.1.16", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", + "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", + "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, "@types/bn.js": { "version": "4.11.6", "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", @@ -911,6 +10998,15 @@ "integrity": "sha512-uw+Xmam7sMFHYyVGq5CGH/6Lu0T792bf4T6+jPFtPkWnJ9YVjLKqOLzF7DHuSo/LEHtLWleUO7Zi7EKkg6rSIg==", "dev": true }, + "@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/inquirer": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-7.3.1.tgz", @@ -938,11 +11034,44 @@ } } }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "27.0.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.2.tgz", + "integrity": "sha512-4dRxkS/AFX0c5XW6IPMNOydLn2tEhNhJV7DnYK+0bjoJZ+QTmfucBlihX7aoEsh/ocYtkLC73UbnBXBXIxsULA==", + "dev": true, + "requires": { + "jest-diff": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, "@types/node": { "version": "14.14.22", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.22.tgz", - "integrity": "sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw==", - "dev": true + "integrity": "sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw==" }, "@types/node-fetch": { "version": "2.5.12", @@ -960,6 +11089,26 @@ } } }, + "@types/prettier": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz", + "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", + "dev": true + }, + "@types/sqlite3": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/sqlite3/-/sqlite3-3.1.7.tgz", + "integrity": "sha512-8FHV/8Uzd7IwdHm5mvmF2Aif4aC/gjrt4axWD9SmfaxITnOjtOhCbOSTuqv/VbH1uq0QrwlaTj9aTz3gmR6u4w==", + "requires": { + "@types/node": "*" + } + }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, "@types/through": { "version": "0.0.30", "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz", @@ -984,10 +11133,60 @@ } } }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", + "dev": true + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "acorn": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", + "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", + "dev": true + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true }, "agent-base": { @@ -1013,6 +11212,18 @@ } } }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "optional": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "amp": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz", @@ -1027,52 +11238,12 @@ } }, "ansi-align": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", - "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "dev": true, "requires": { - "string-width": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } + "string-width": "^4.1.0" } }, "ansi-colors": { @@ -1096,9 +11267,9 @@ } }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "4.3.0", @@ -1117,6 +11288,54 @@ "picomatch": "^2.0.4" } }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -1136,6 +11355,21 @@ "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==" }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "optional": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + }, "assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -1181,6 +11415,18 @@ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "optional": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "optional": true + }, "axios": { "version": "0.21.4", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", @@ -1189,6 +11435,86 @@ "follow-redirects": "^1.14.0" } }, + "babel-jest": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.2.4.tgz", + "integrity": "sha512-f24OmxyWymk5jfgLdlCMu4fTs4ldxFBIdn5sJdhvGC1m08rSkJ5hYbWkNmfBSvE/DjhCVNSHXepxsI6THGfGsg==", + "dev": true, + "requires": { + "@jest/transform": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^27.2.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "27.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz", + "integrity": "sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "27.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz", + "integrity": "sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^27.2.0", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1207,6 +11533,23 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + } + } + }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -1222,6 +11565,15 @@ "resolved": "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz", "integrity": "sha1-+WLWh+wsNpVwrnGvhDJW5tDKESk=" }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "optional": true, + "requires": { + "inherits": "~2.0.0" + } + }, "bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", @@ -1238,11 +11590,6 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, - "boolean": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.1.2.tgz", - "integrity": "sha512-YN6UmV0FfLlBVvRvNPx3pz5W/mUoYB24J4WSXOKP/OOJpi+Oq6WYqPaNTHzjI0QzwWtnvEd5CGYyQPgp1jFxnw==" - }, "boxen": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", @@ -1293,17 +11640,41 @@ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" }, - "browserslist": { - "version": "4.16.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.7.tgz", - "integrity": "sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==", + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browserslist": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz", + "integrity": "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001264", + "electron-to-chromium": "^1.3.857", + "escalade": "^3.1.1", + "node-releases": "^1.1.77", + "picocolors": "^0.2.1" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001248", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.793", - "escalade": "^3.1.1", - "node-releases": "^1.1.73" + "node-int64": "^0.4.0" } }, "buffer-from": { @@ -1356,17 +11727,39 @@ } } }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, "caniuse-lite": { - "version": "1.0.30001251", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001251.tgz", - "integrity": "sha512-HOe1r+9VkU4TFmnU70z+r7OLmtR+/chB1rdcJUeQlAinjEeb0cKL20tlAtOagNZhbrtLnCvV19B4FmF1rgzl6A==", + "version": "1.0.30001265", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz", + "integrity": "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==", "dev": true }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "optional": true + }, "chai": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", @@ -1389,6 +11782,12 @@ "supports-color": "^7.1.0" } }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, "chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", @@ -1419,6 +11818,11 @@ "readdirp": "~3.6.0" } }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, "ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", @@ -1434,6 +11838,12 @@ "safe-buffer": "^5.0.1" } }, + "cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, "clear": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/clear/-/clear-0.1.0.tgz", @@ -1517,6 +11927,23 @@ "mimic-response": "^1.0.0" } }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1530,12 +11957,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "colorette": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.3.0.tgz", - "integrity": "sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==", - "dev": true - }, "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", @@ -1607,6 +12028,11 @@ } } }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, "continuation-local-storage": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", @@ -1634,9 +12060,9 @@ } }, "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "create-hash": { "version": "1.2.0", @@ -1664,6 +12090,17 @@ "moment-timezone": "^0.5.x" } }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, "crypto-random-string": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-3.3.0.tgz", @@ -1691,6 +12128,29 @@ "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", "dev": true }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, "cuint": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", @@ -1710,11 +12170,31 @@ "type": "^1.0.1" } }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, "data-uri-to-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==" }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, "dayjs": { "version": "1.8.36", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.36.tgz", @@ -1728,6 +12208,12 @@ "ms": "2.0.0" } }, + "decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true + }, "decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", @@ -1737,6 +12223,12 @@ "mimic-response": "^1.0.0" } }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, "deep-eql": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", @@ -1748,13 +12240,18 @@ "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true }, "defer-to-connect": { "version": "1.1.3", @@ -1762,14 +12259,24 @@ "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", "dev": true }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, "degenerator": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-2.2.0.tgz", - "integrity": "sha512-aiQcQowF01RxFI4ZLFMpzyotbQonhNpBao6dkI8JPk5a+hmSjR5ErHp2CQySmQe8os3VBqLCIh87nDBgZXvsmg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.1.tgz", + "integrity": "sha512-LFsIFEeLPlKvAKXu7j3ssIG6RT0TbI7/GhsqrI0DnHASEQjXQ0LUSYcjJteGgRGmZbl1TnMSxpNQIAiJ7Du5TQ==", "requires": { "ast-types": "^0.13.2", "escodegen": "^1.8.1", - "esprima": "^4.0.0" + "esprima": "^4.0.0", + "vm2": "^3.9.3" } }, "delayed-stream": { @@ -1777,17 +12284,39 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, + "diff-sequences": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", + "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "dev": true + }, "dom-converter": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", @@ -1814,6 +12343,23 @@ "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", "dev": true }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } + } + }, "domhandler": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", @@ -1849,6 +12395,16 @@ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "optional": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, "ed2curve": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/ed2curve/-/ed2curve-0.3.0.tgz", @@ -1858,9 +12414,9 @@ } }, "electron-to-chromium": { - "version": "1.3.807", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.807.tgz", - "integrity": "sha512-p8uxxg2a23zRsvQ2uwA/OOI+O4BQxzaR7YKMIGGGQCpYmkFX2CVF5f0/hxLMV7yCr7nnJViCwHLhPfs52rIYCA==", + "version": "1.3.861", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.861.tgz", + "integrity": "sha512-GZyflmpMnZRdZ1e2yAyvuFwz1MPSVQelwHX4TJZyXypB8NcxdPvPNwy5lOTxnlkrK13EiQzyTPugRSnj6cBgKg==", "dev": true }, "elliptic": { @@ -1885,6 +12441,12 @@ "shimmer": "^1.2.0" } }, + "emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -2001,6 +12563,59 @@ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + } + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expect": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.2.4.tgz", + "integrity": "sha512-gOtuonQ8TCnbNNCSw2fhVzRf8EFYDII4nB5NmG4IEV0rbUnW1I5zXvoTntU4iicB/Uh0oZr20NGlOLdJiwsOZA==", + "dev": true, + "requires": { + "@jest/types": "^27.2.4", + "ansi-styles": "^5.0.0", + "jest-get-type": "^27.0.6", + "jest-matcher-utils": "^27.2.4", + "jest-message-util": "^27.2.4", + "jest-regex-util": "^27.0.6" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, "export-to-csv": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/export-to-csv/-/export-to-csv-0.2.1.tgz", @@ -2021,6 +12636,12 @@ } } }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "optional": true + }, "external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -2031,6 +12652,18 @@ "tmp": "^0.0.33" } }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "optional": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "optional": true + }, "fast-glob": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", @@ -2049,19 +12682,17 @@ "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.0.tgz", "integrity": "sha512-IhpytlsVTRndz0hU5t0/MGzS/etxLlfrpG5V5M9mVbuj9TrJLWaMfsox9REM5rkuGX0T+5qjpe8XA1o0gZ42nA==" }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "devOptional": true + }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, - "fast-printf": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/fast-printf/-/fast-printf-1.6.6.tgz", - "integrity": "sha512-Uz/uW6R1Fd8YqCGeoQosRIfB4dBbr8uMbFVdEci2AyXYcfucFqhpSMAGs8skRRdZd+MGCDBu48+B8Zmu7Pta5A==", - "requires": { - "boolean": "^3.0.2" - } - }, "fastq": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz", @@ -2071,6 +12702,15 @@ "reusify": "^1.0.4" } }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, "fclone": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/fclone/-/fclone-1.0.11.tgz", @@ -2135,6 +12775,12 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.2.tgz", "integrity": "sha512-yLR6WaE2lbF0x4K2qE2p9PEXKLDjUjnR/xmjS3wHAYxtlsI9MLLBJUZirAHKzUZDGLxje7w/cXR49WOUo4rbsA==" }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "optional": true + }, "form-data": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", @@ -2160,6 +12806,14 @@ "universalify": "^0.1.0" } }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "requires": { + "minipass": "^2.6.0" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2171,6 +12825,38 @@ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "optional": true }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "optional": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "optional": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, "ftp": { "version": "0.3.10", "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", @@ -2203,6 +12889,54 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -2220,6 +12954,23 @@ "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=" }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -2257,6 +13008,15 @@ } } }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, "git-node-fs": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/git-node-fs/-/git-node-fs-1.0.0.tgz", @@ -2348,6 +13108,22 @@ "wordwrap": "^1.0.0" } }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "optional": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "optional": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -2361,6 +13137,17 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, "has-yarn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", @@ -2396,6 +13183,21 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, "htmlparser2": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", @@ -2451,6 +13253,17 @@ } } }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "optional": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, "https-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", @@ -2475,6 +13288,12 @@ } } }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -2489,12 +13308,75 @@ "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", "dev": true }, + "ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "requires": { + "minimatch": "^3.0.4" + } + }, "import-lazy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", "dev": true }, + "import-local": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", + "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + } + } + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -2606,6 +13488,12 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", @@ -2614,69 +13502,736 @@ "is-extglob": "^2.1.1" } }, - "is-installed-globally": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "dev": true, + "requires": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + } + }, + "is-npm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "devOptional": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "optional": true + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.3.tgz", + "integrity": "sha512-0i77ZFLsb9U3DHi22WzmIngVzfoyxxbQcZRqlF3KoKmCJGq9nhFHoGi8FqBztN2rE8w6hURnZghetn0xpkVb6A==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.2.4.tgz", + "integrity": "sha512-h4uqb1EQLfPulWyUFFWv9e9Nn8sCqsJ/j3wk/KCY0p4s4s0ICCfP3iMf6hRf5hEhsDyvyrCgKiZXma63gMz16A==", + "dev": true, + "requires": { + "@jest/core": "^27.2.4", + "import-local": "^3.0.2", + "jest-cli": "^27.2.4" + } + }, + "jest-changed-files": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.2.4.tgz", + "integrity": "sha512-eeO1C1u4ex7pdTroYXezr+rbr957myyVoKGjcY4R1TJi3A+9v+4fu1Iv9J4eLq1bgFyT3O3iRWU9lZsEE7J72Q==", + "dev": true, + "requires": { + "@jest/types": "^27.2.4", + "execa": "^5.0.0", + "throat": "^6.0.1" + } + }, + "jest-circus": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.2.4.tgz", + "integrity": "sha512-TtheheTElrGjlsY9VxkzUU1qwIx05ItIusMVKnvNkMt4o/PeegLRcjq3Db2Jz0GGdBalJdbzLZBgeulZAJxJWA==", + "dev": true, + "requires": { + "@jest/environment": "^27.2.4", + "@jest/test-result": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.2.4", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.2.4", + "jest-matcher-utils": "^27.2.4", + "jest-message-util": "^27.2.4", + "jest-runtime": "^27.2.4", + "jest-snapshot": "^27.2.4", + "jest-util": "^27.2.4", + "pretty-format": "^27.2.4", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + } + }, + "jest-cli": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.2.4.tgz", + "integrity": "sha512-4kpQQkg74HYLaXo3nzwtg4PYxSLgL7puz1LXHj5Tu85KmlIpxQFjRkXlx4V47CYFFIDoyl3rHA/cXOxUWyMpNg==", + "dev": true, + "requires": { + "@jest/core": "^27.2.4", + "@jest/test-result": "^27.2.4", + "@jest/types": "^27.2.4", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "jest-config": "^27.2.4", + "jest-util": "^27.2.4", + "jest-validate": "^27.2.4", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "dependencies": { + "ci-info": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true + }, + "is-ci": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, + "requires": { + "ci-info": "^3.1.1" + } + }, + "jest-config": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.2.4.tgz", + "integrity": "sha512-tWy0UxhdzqiKyp4l5Vq4HxLyD+gH5td+GCF3c22/DJ0bYAOsMo+qi2XtbJI6oYMH5JOJQs9nLW/r34nvFCehjA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^27.2.4", + "@jest/types": "^27.2.4", + "babel-jest": "^27.2.4", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "jest-circus": "^27.2.4", + "jest-environment-jsdom": "^27.2.4", + "jest-environment-node": "^27.2.4", + "jest-get-type": "^27.0.6", + "jest-jasmine2": "^27.2.4", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.2.4", + "jest-runner": "^27.2.4", + "jest-util": "^27.2.4", + "jest-validate": "^27.2.4", + "micromatch": "^4.0.4", + "pretty-format": "^27.2.4" + } + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + } + } + }, + "jest-diff": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.2.4.tgz", + "integrity": "sha512-bLAVlDSCR3gqUPGv+4nzVpEXGsHh98HjUL7Vb2hVyyuBDoQmja8eJb0imUABsuxBeUVmf47taJSAd9nDrwWKEg==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.0.6", + "jest-get-type": "^27.0.6", + "pretty-format": "^27.2.4" + } + }, + "jest-docblock": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", + "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.2.4.tgz", + "integrity": "sha512-w9XVc+0EDBUTJS4xBNJ7N2JCcWItFd006lFjz77OarAQcQ10eFDBMrfDv2GBJMKlXe9aq0HrIIF51AXcZrRJyg==", + "dev": true, + "requires": { + "@jest/types": "^27.2.4", + "chalk": "^4.0.0", + "jest-get-type": "^27.0.6", + "jest-util": "^27.2.4", + "pretty-format": "^27.2.4" + } + }, + "jest-environment-jsdom": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.2.4.tgz", + "integrity": "sha512-X70pTXFSypD7AIzKT1mLnDi5hP9w9mdTRcOGOmoDoBrNyNEg4rYm6d4LQWFLc9ps1VnMuDOkFSG0wjSNYGjkng==", + "dev": true, + "requires": { + "@jest/environment": "^27.2.4", + "@jest/fake-timers": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/node": "*", + "jest-mock": "^27.2.4", + "jest-util": "^27.2.4", + "jsdom": "^16.6.0" + } + }, + "jest-environment-node": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.2.4.tgz", + "integrity": "sha512-ZbVbFSnbzTvhLOIkqh5lcLuGCCFvtG4xTXIRPK99rV2KzQT3kNg16KZwfTnLNlIiWCE8do960eToeDfcqmpSAw==", + "dev": true, + "requires": { + "@jest/environment": "^27.2.4", + "@jest/fake-timers": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/node": "*", + "jest-mock": "^27.2.4", + "jest-util": "^27.2.4" + } + }, + "jest-get-type": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true + }, + "jest-haste-map": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.2.4.tgz", + "integrity": "sha512-bkJ4bT00T2K+1NZXbRcyKnbJ42I6QBvoDNMTAQQDBhaGNnZreiQKUNqax0e6hLTx7E75pKDeltVu3V1HAdu+YA==", + "dev": true, + "requires": { + "@jest/types": "^27.2.4", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.2.4", + "jest-worker": "^27.2.4", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.2.4.tgz", + "integrity": "sha512-fcffjO/xLWLVnW2ct3No4EksxM5RyPwHDYu9QU+90cC+/eSMLkFAxS55vkqsxexOO5zSsZ3foVpMQcg/amSeIQ==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^27.2.4", + "@jest/source-map": "^27.0.6", + "@jest/test-result": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.2.4", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.2.4", + "jest-matcher-utils": "^27.2.4", + "jest-message-util": "^27.2.4", + "jest-runtime": "^27.2.4", + "jest-snapshot": "^27.2.4", + "jest-util": "^27.2.4", + "pretty-format": "^27.2.4", + "throat": "^6.0.1" + } + }, + "jest-leak-detector": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.2.4.tgz", + "integrity": "sha512-SrcHWbe0EHg/bw2uBjVoHacTo5xosl068x2Q0aWsjr2yYuW2XwqrSkZV4lurUop0jhv1709ymG4or+8E4sH27Q==", + "dev": true, + "requires": { + "jest-get-type": "^27.0.6", + "pretty-format": "^27.2.4" + } + }, + "jest-matcher-utils": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.2.4.tgz", + "integrity": "sha512-nQeLfFAIPPkyhkDfifAPfP/U5wm1x0fLtAzqXZSSKckXDNuk2aaOfQiDYv1Mgf5GY6yOsxfUnvNm3dDjXM+BXw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.2.4", + "jest-get-type": "^27.0.6", + "pretty-format": "^27.2.4" + } + }, + "jest-message-util": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.4.tgz", + "integrity": "sha512-wbKT/BNGnBVB9nzi+IoaLkXt6fbSvqUxx+IYY66YFh96J3goY33BAaNG3uPqaw/Sh/FR9YpXGVDfd5DJdbh4nA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.2.4", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "pretty-format": "^27.2.4", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + } + }, + "jest-mock": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.2.4.tgz", + "integrity": "sha512-iVRU905rutaAoUcrt5Tm1JoHHWi24YabqEGXjPJI4tAyA6wZ7mzDi3GrZ+M7ebgWBqUkZE93GAx1STk7yCMIQA==", + "dev": true, + "requires": { + "@jest/types": "^27.2.4", + "@types/node": "*" + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true, + "requires": {} + }, + "jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true + }, + "jest-resolve": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.2.4.tgz", + "integrity": "sha512-IsAO/3+3BZnKjI2I4f3835TBK/90dxR7Otgufn3mnrDFTByOSXclDi3G2XJsawGV4/18IMLARJ+V7Wm7t+J89Q==", + "dev": true, + "requires": { + "@jest/types": "^27.2.4", + "chalk": "^4.0.0", + "escalade": "^3.1.1", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.2.4", + "jest-validate": "^27.2.4", + "resolve": "^1.20.0", + "slash": "^3.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.2.4.tgz", + "integrity": "sha512-i5s7Uh9B3Q6uwxLpMhNKlgBf6pcemvWaORxsW1zNF/YCY3jd5EftvnGBI+fxVwJ1CBxkVfxqCvm1lpZkbaoGmg==", + "dev": true, + "requires": { + "@jest/types": "^27.2.4", + "jest-regex-util": "^27.0.6", + "jest-snapshot": "^27.2.4" + } + }, + "jest-runner": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.2.4.tgz", + "integrity": "sha512-hIo5PPuNUyVDidZS8EetntuuJbQ+4IHWxmHgYZz9FIDbG2wcZjrP6b52uMDjAEQiHAn8yn8ynNe+TL8UuGFYKg==", "dev": true, "requires": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" + "@jest/console": "^27.2.4", + "@jest/environment": "^27.2.4", + "@jest/test-result": "^27.2.4", + "@jest/transform": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-docblock": "^27.0.6", + "jest-environment-jsdom": "^27.2.4", + "jest-environment-node": "^27.2.4", + "jest-haste-map": "^27.2.4", + "jest-leak-detector": "^27.2.4", + "jest-message-util": "^27.2.4", + "jest-resolve": "^27.2.4", + "jest-runtime": "^27.2.4", + "jest-util": "^27.2.4", + "jest-worker": "^27.2.4", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" } }, - "is-npm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", - "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true + "jest-runtime": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.2.4.tgz", + "integrity": "sha512-ICKzzYdjIi70P17MZsLLIgIQFCQmIjMFf+xYww3aUySiUA/QBPUTdUqo5B2eg4HOn9/KkUsV0z6GVgaqAPBJvg==", + "dev": true, + "requires": { + "@jest/console": "^27.2.4", + "@jest/environment": "^27.2.4", + "@jest/fake-timers": "^27.2.4", + "@jest/globals": "^27.2.4", + "@jest/source-map": "^27.0.6", + "@jest/test-result": "^27.2.4", + "@jest/transform": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.2.4", + "jest-message-util": "^27.2.4", + "jest-mock": "^27.2.4", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.2.4", + "jest-snapshot": "^27.2.4", + "jest-util": "^27.2.4", + "jest-validate": "^27.2.4", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^16.2.0" + }, + "dependencies": { + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + } + } }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true + "jest-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "jest-snapshot": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.2.4.tgz", + "integrity": "sha512-5DFxK31rYS8X8C6WXsFx8XxrxW3PGa6+9IrUcZdTLg1aEyXDGIeiBh4jbwvh655bg/9vTETbEj/njfZicHTZZw==", "dev": true, "requires": { - "isobject": "^3.0.1" + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/parser": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.2.4", + "graceful-fs": "^4.2.4", + "jest-diff": "^27.2.4", + "jest-get-type": "^27.0.6", + "jest-haste-map": "^27.2.4", + "jest-matcher-utils": "^27.2.4", + "jest-message-util": "^27.2.4", + "jest-resolve": "^27.2.4", + "jest-util": "^27.2.4", + "natural-compare": "^1.4.0", + "pretty-format": "^27.2.4", + "semver": "^7.3.2" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "jest-util": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.4.tgz", + "integrity": "sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==", + "dev": true, + "requires": { + "@jest/types": "^27.2.4", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + }, + "dependencies": { + "ci-info": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true + }, + "is-ci": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, + "requires": { + "ci-info": "^3.1.1" + } + } + } }, - "is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true + "jest-validate": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.4.tgz", + "integrity": "sha512-VMtbxbkd7LHnIH7PChdDtrluCFRJ4b1YV2YJzNwwsASMWftq/HgqiqjvptBOWyWOtevgO3f14wPxkPcLlVBRog==", + "dev": true, + "requires": { + "@jest/types": "^27.2.4", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.0.6", + "leven": "^3.1.0", + "pretty-format": "^27.2.4" + }, + "dependencies": { + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + } + } }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + "jest-watcher": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.2.4.tgz", + "integrity": "sha512-LXC/0+dKxhK7cfF7reflRYlzDIaQE+fL4ynhKhzg8IMILNMuI4xcjXXfUJady7OR4/TZeMg7X8eHx8uan9vqaQ==", + "dev": true, + "requires": { + "@jest/test-result": "^27.2.4", + "@jest/types": "^27.2.4", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.2.4", + "string-length": "^4.0.1" + } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "jest-worker": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.4.tgz", + "integrity": "sha512-Zq9A2Pw59KkVjBBKD1i3iE2e22oSjXhUKKuAK1HGX8flGwkm6NMozyEYzKd41hXc64dbd/0eWFeEEuxqXyhM+g==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } }, "js-git": { "version": "0.7.8", @@ -2700,6 +14255,78 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "requires": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -2712,6 +14339,18 @@ "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", "dev": true }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "optional": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "optional": true + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -2735,6 +14374,18 @@ "graceful-fs": "^4.1.6" } }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, "keyv": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", @@ -2750,6 +14401,12 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, "latest-version": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", @@ -2764,6 +14421,12 @@ "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz", "integrity": "sha1-2qBoIGKCVCwIgojpdcKXwa53tpA=" }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -2842,6 +14505,15 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, "marked": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/marked/-/marked-2.1.3.tgz", @@ -2858,6 +14530,12 @@ "safe-buffer": "^5.1.2" } }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -2921,6 +14599,23 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "requires": { + "minipass": "^2.9.0" + } + }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -2959,6 +14654,12 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, "needle": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", @@ -3000,26 +14701,164 @@ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" }, + "node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" + }, "node-fetch": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "optional": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "optional": true, + "requires": { + "abbrev": "1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "optional": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "optional": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "node-gyp-build": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==" }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, "node-modules-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", "dev": true }, + "node-pre-gyp": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", + "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==", + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "requires": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + } + } + } + }, "node-releases": { - "version": "1.1.74", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.74.tgz", - "integrity": "sha512-caJBVempXZPepZoZAPCWRTNxYQ+xtG/KAi4ozTA5A+nJ7IU+kLQCbqaUjb5Rwy14M9upBWiQ4NutcmW04LJSRw==", + "version": "1.1.77", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", + "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==", "dev": true }, "nodejs-fs-utils": { @@ -3106,6 +14945,49 @@ "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", "dev": true }, + "npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, "nssocket": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz", @@ -3131,6 +15013,46 @@ "boolbase": "^1.0.0" } }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -3169,11 +15091,25 @@ "word-wrap": "~1.2.3" } }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, "p-cancelable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", @@ -3205,9 +15141,9 @@ "dev": true }, "pac-proxy-agent": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-4.1.0.tgz", - "integrity": "sha512-ejNgYm2HTXSIYX9eFlkvqFp8hyJ374uDf0Zq5YUAifiSh1D6fo+iBivQZirGvVv8dCYUsLhmLBRhlAYvBKI5+Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz", + "integrity": "sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==", "requires": { "@tootallnate/once": "1", "agent-base": "6", @@ -3215,7 +15151,7 @@ "get-uri": "3", "http-proxy-agent": "^4.0.1", "https-proxy-agent": "5", - "pac-resolver": "^4.1.0", + "pac-resolver": "^5.0.0", "raw-body": "^2.2.0", "socks-proxy-agent": "5" }, @@ -3236,11 +15172,11 @@ } }, "pac-resolver": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-4.2.0.tgz", - "integrity": "sha512-rPACZdUyuxT5Io/gFKUeeZFfE5T7ve7cAkE5TUZRRfuKP0u5Hocwe48X7ZEm6mYB+bTB0Qf+xlVlA/RM/i6RCQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.0.tgz", + "integrity": "sha512-H+/A6KitiHNNW+bxBKREk2MCGSxljfqRX76NjummWEYIat7ldVXRU3dhRIE3iXZ0nvGBk6smv3nntxKkzRL8NA==", "requires": { - "degenerator": "^2.2.0", + "degenerator": "^3.0.1", "ip": "^1.1.5", "netmask": "^2.0.1" } @@ -3270,6 +15206,12 @@ "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, "path": { "version": "0.12.7", "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", @@ -3290,6 +15232,12 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -3300,6 +15248,18 @@ "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==" }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "optional": true + }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -3345,7 +15305,7 @@ "@pm2/agent": "~2.0.0", "@pm2/io": "~5.0.0", "@pm2/js-api": "~0.6.7", - "@pm2/pm2-version-check": "^1.0.4", + "@pm2/pm2-version-check": "latest", "async": "~3.2.0", "blessed": "0.1.81", "chalk": "3.0.0", @@ -3357,7 +15317,6 @@ "debug": "^4.3.1", "enquirer": "2.3.6", "eventemitter2": "5.0.1", - "fast-printf": "^1.3.0", "fclone": "1.0.11", "mkdirp": "1.0.4", "needle": "2.4.0", @@ -3531,11 +15490,36 @@ "renderkid": "^2.0.6" } }, + "pretty-format": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.4.tgz", + "integrity": "sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==", + "dev": true, + "requires": { + "@jest/types": "^27.2.4", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -3550,17 +15534,27 @@ "read": "^1.0.4" } }, + "prompts": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", + "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, "proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-4.0.1.tgz", - "integrity": "sha512-ODnQnW2jc/FUVwHHuaZEfN5otg/fMbvMxz9nMSUQfJ9JU7q2SZvSULSsjLloVgJOiv9yhc8GlNMKc4GkFmcVEA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz", + "integrity": "sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==", "requires": { "agent-base": "^6.0.0", "debug": "4", "http-proxy-agent": "^4.0.0", "https-proxy-agent": "^5.0.0", "lru-cache": "^5.1.1", - "pac-proxy-agent": "^4.1.0", + "pac-proxy-agent": "^5.0.0", "proxy-from-env": "^1.0.0", "socks-proxy-agent": "^5.0.0" }, @@ -3585,6 +15579,12 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "devOptional": true + }, "pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", @@ -3601,6 +15601,12 @@ "once": "^1.3.1" } }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "devOptional": true + }, "pupa": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", @@ -3610,6 +15616,12 @@ "escape-goat": "^2.0.0" } }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "optional": true + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -3631,7 +15643,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -3639,6 +15650,12 @@ "strip-json-comments": "~2.0.1" } }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, "read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", @@ -3732,6 +15749,57 @@ } } }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "optional": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "optional": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "optional": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -3772,6 +15840,21 @@ "path-parse": "^1.0.6" } }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, "responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", @@ -3796,6 +15879,15 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "ripemd160": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", @@ -3847,6 +15939,15 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, "scryptsy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-2.1.0.tgz", @@ -3892,6 +15993,11 @@ } } }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", @@ -3915,6 +16021,21 @@ "kind-of": "^6.0.2" } }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, "shelljs": { "version": "0.8.4", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", @@ -3947,6 +16068,18 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, "smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -4005,11 +16138,81 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, + "sqlite3": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.2.tgz", + "integrity": "sha512-1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA==", + "requires": { + "node-addon-api": "^3.0.0", + "node-gyp": "3.x", + "node-pre-gyp": "^0.11.0" + } + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "optional": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + } + } + }, + "stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, "string-width": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", @@ -4020,14 +16223,6 @@ "strip-ansi": "^6.0.0" } }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -4036,11 +16231,22 @@ "ansi-regex": "^5.0.0" } }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "supports-color": { "version": "7.2.0", @@ -4050,18 +16256,72 @@ "has-flag": "^4.0.0" } }, + "supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, "systeminformation": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.8.0.tgz", "integrity": "sha512-l4drbK2PtNynGKblaShY9hDLW/gg1zxUq2+Yk4gTyd6a2JUvFyTGP8PhHV9iOh+MzS25PQa8W1t0kvcIvr9n7Q==", "optional": true }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "optional": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, "term-size": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", "dev": true }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "throat": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "dev": true + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -4075,6 +16335,12 @@ "os-tmpdir": "~1.0.2" } }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -4109,6 +16375,42 @@ "nopt": "~1.0.10" } }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + } + }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "ts-jest": { + "version": "27.0.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.5.tgz", + "integrity": "sha512-lIJApzfTaSSbtlksfFNHkWOzLJuuSm4faFAfo5kvzOiRAuoN4/eKxVJ2zEAho8aecE04qX6K1pAzfH5QHL1/8w==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", + "json5": "2.x", + "lodash": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + } + }, "ts-node": { "version": "9.1.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", @@ -4145,6 +16447,15 @@ } } }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "optional": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, "tv4": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", @@ -4360,6 +16671,15 @@ } } }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "optional": true, + "requires": { + "punycode": "^2.1.0" + } + }, "url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", @@ -4408,6 +16728,44 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, + "v8-to-istanbul": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz", + "integrity": "sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "optional": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "optional": true + } + } + }, "vizion": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/vizion/-/vizion-2.2.1.tgz", @@ -4429,12 +16787,50 @@ } } }, + "vm2": { + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.5.tgz", + "integrity": "sha512-LuCAHZN75H9tdrAiLFf030oW7nJV5xwNMuk1ymOZwopmuK3d2H4L1Kv4+GFHgarKiLfXXLFU+7LDABHnwOkWng==" + }, "vscode-textmate": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==", "dev": true }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "requires": { + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, "websocket": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", @@ -4448,6 +16844,49 @@ "yaeti": "^0.0.6" } }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "widest-line": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", @@ -4499,7 +16938,8 @@ "ws": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==" + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "requires": {} }, "xdg-basedir": { "version": "4.0.0", @@ -4507,6 +16947,18 @@ "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", "dev": true }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, "xregexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", diff --git a/scripts/cli/package.json b/scripts/cli/package.json index ffb622fb36..4f3ce547e5 100644 --- a/scripts/cli/package.json +++ b/scripts/cli/package.json @@ -1,8 +1,9 @@ { - "name": "polymesh-cli", + "name": "@polymathnetwork/polymesh-cli", "version": "1.0.0", "description": "CLI for Polymesh", "main": "/dist/polymesh_cli.js", + "private": true, "bin": { "polymesh-cli": "./dist/polymesh_cli.js" }, @@ -49,7 +50,8 @@ "schema_test": "./util/schema_test.sh", "offchain_worker_test": "node ./dist/util/offchain_worker_test.js", "polyx_balances": "node ./util/userBalancePOLYX.js", - "test": "./test.sh" + "test": "npm run clear_cache && jest --runInBand --silent && ./test.sh", + "clear_cache": "jest --clearCache" }, "author": "Polymath Network", "license": "UNLICENSED", @@ -57,6 +59,7 @@ "@polkadot/api": "5.0.1", "@polkadot/util": "^7.0.3", "@polkadot/util-crypto": "^7.0.3", + "@types/sqlite3": "^3.1.7", "chai": "4.2.0", "chalk": "4.1.0", "clear": "0.1.0", @@ -73,17 +76,22 @@ "nodejs-fs-utils": "1.2.5", "path": "0.12.7", "pm2": "^5.1.1", - "readline-sync": "1.4.10" + "readline-sync": "1.4.10", + "sqlite3": "^5.0.2" }, "devDependencies": { + "@babel/plugin-transform-modules-commonjs": "7.14.5", "@polkadot/typegen": "5.0.1", "@types/chai": "4.2.15", "@types/clear": "0.1.1", "@types/figlet": "1.2.1", "@types/inquirer": "7.3.1", + "@types/jest": "^27.0.2", "@types/node": "14.14.22", + "jest": "^27.2.4", "nodemon": "2.0.7", "pretty-error": "^3.0.4", + "ts-jest": "^27.0.5", "ts-node": "9.1.1", "type-coverage": "2.16.3", "typedoc": "0.20.28", diff --git a/scripts/cli/polymesh-meta.json b/scripts/cli/polymesh-meta.json index a931ef7675..471eb7cfc6 100644 --- a/scripts/cli/polymesh-meta.json +++ b/scripts/cli/polymesh-meta.json @@ -1 +1 @@ -{"jsonrpc":"2.0","result":"0x6d6574610cbc1853797374656d011853797374656d401c4163636f756e7401010230543a3a4163636f756e744964944163636f756e74496e666f3c543a3a496e6465782c20543a3a4163636f756e74446174613e0031010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e8205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e3845787472696e736963436f756e7400000c753332040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e2c426c6f636b576569676874010038436f6e73756d6564576569676874600000000000000000000000000000000000000000000000000488205468652063757272656e742077656967687420666f722074686520626c6f636b2e40416c6c45787472696e736963734c656e00000c753332040004410120546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e24426c6f636b4861736801010538543a3a426c6f636b4e756d6265721c543a3a48617368008000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101050c7533321c5665633c75383e000400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d626572010038543a3a426c6f636b4e756d6265721000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801001c543a3a4861736880000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e1844696765737401002c4469676573744f663c543e040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e747301008c5665633c4576656e745265636f72643c543a3a4576656e742c20543a3a486173683e3e040004a0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e284576656e74436f756e740100284576656e74496e646578100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f706963730101021c543a3a48617368845665633c28543a3a426c6f636b4e756d6265722c204576656e74496e646578293e000400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e004d01205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e484c61737452756e74696d65557067726164650000584c61737452756e74696d6555706772616465496e666f04000455012053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e545570677261646564546f553332526566436f756e74010010626f6f6c0400044d012054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e585570677261646564546f4475616c526566436f756e74010010626f6f6c04000855012054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e732074776f207479706573206f662060526566436f756e74602e2046616c736548202864656661756c7429206966206e6f742e38457865637574696f6e50686173650000145068617365040004882054686520657865637574696f6e207068617365206f662074686520626c6f636b2e01242866696c6c5f626c6f636b04185f726174696f1c50657262696c6c040901204120646973706174636820746861742077696c6c2066696c6c2074686520626c6f636b2077656967687420757020746f2074686520676976656e20726174696f2e1872656d61726b041c5f72656d61726b1c5665633c75383e1c6c204d616b6520736f6d65206f6e2d636861696e2072656d61726b2e002c2023203c7765696768743e24202d20604f28312960e0202d2042617365205765696768743a20302e36363520c2b5732c20696e646570656e64656e74206f662072656d61726b206c656e6774682e50202d204e6f204442206f7065726174696f6e732e302023203c2f7765696768743e387365745f686561705f7061676573041470616765730c75363420fc2053657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e002c2023203c7765696768743e24202d20604f283129604c202d20312073746f726167652077726974652e64202d2042617365205765696768743a20312e34303520c2b57360202d203120777269746520746f20484541505f5041474553302023203c2f7765696768743e207365745f636f64650410636f64651c5665633c75383e28682053657420746865206e65772072756e74696d6520636f64652e002c2023203c7765696768743e3501202d20604f2843202b2053296020776865726520604360206c656e677468206f662060636f64656020616e642060536020636f6d706c6578697479206f66206063616e5f7365745f636f64656088202d20312073746f726167652077726974652028636f64656320604f28432960292e7901202d20312063616c6c20746f206063616e5f7365745f636f6465603a20604f28532960202863616c6c73206073705f696f3a3a6d6973633a3a72756e74696d655f76657273696f6e6020776869636820697320657870656e73697665292e2c202d2031206576656e742e7d012054686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652c206275742067656e6572616c6c792074686973206973207665727920657870656e736976652e902057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e302023203c2f7765696768743e5c7365745f636f64655f776974686f75745f636865636b730410636f64651c5665633c75383e201d012053657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e002c2023203c7765696768743e90202d20604f2843296020776865726520604360206c656e677468206f662060636f64656088202d20312073746f726167652077726974652028636f64656320604f28432960292e2c202d2031206576656e742e75012054686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652e2057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e302023203c2f7765696768743e5c7365745f6368616e6765735f747269655f636f6e666967044c6368616e6765735f747269655f636f6e666967804f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e28a02053657420746865206e6577206368616e676573207472696520636f6e66696775726174696f6e2e002c2023203c7765696768743e24202d20604f28312960b0202d20312073746f72616765207772697465206f722064656c6574652028636f64656320604f28312960292ed8202d20312063616c6c20746f20606465706f7369745f6c6f67603a20557365732060617070656e6460204150492c20736f204f28312964202d2042617365205765696768743a20372e32313820c2b57334202d204442205765696768743aa820202020202d205772697465733a204368616e67657320547269652c2053797374656d20446967657374302023203c2f7765696768743e2c7365745f73746f7261676504146974656d73345665633c4b657956616c75653e206c2053657420736f6d65206974656d73206f662073746f726167652e002c2023203c7765696768743e94202d20604f2849296020776865726520604960206c656e677468206f6620606974656d73607c202d206049602073746f72616765207772697465732028604f28312960292e74202d2042617365205765696768743a20302e353638202a206920c2b57368202d205772697465733a204e756d626572206f66206974656d73302023203c2f7765696768743e306b696c6c5f73746f7261676504106b657973205665633c4b65793e2078204b696c6c20736f6d65206974656d732066726f6d2073746f726167652e002c2023203c7765696768743efc202d20604f28494b296020776865726520604960206c656e677468206f6620606b6579736020616e6420604b60206c656e677468206f66206f6e65206b657964202d206049602073746f726167652064656c6574696f6e732e70202d2042617365205765696768743a202e333738202a206920c2b57368202d205772697465733a204e756d626572206f66206974656d73302023203c2f7765696768743e2c6b696c6c5f70726566697808187072656669780c4b6579205f7375626b6579730c7533322c1501204b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e003d01202a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e64657241012074686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e002c2023203c7765696768743edc202d20604f285029602077686572652060506020616d6f756e74206f66206b65797320776974682070726566697820607072656669786064202d206050602073746f726167652064656c6574696f6e732e74202d2042617365205765696768743a20302e383334202a205020c2b57380202d205772697465733a204e756d626572206f66207375626b657973202b2031302023203c2f7765696768743e01144045787472696e7369635375636365737304304469737061746368496e666f04b820416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e205c5b696e666f5c5d3c45787472696e7369634661696c6564083444697370617463684572726f72304469737061746368496e666f049420416e2065787472696e736963206661696c65642e205c5b6572726f722c20696e666f5c5d2c436f64655570646174656400045420603a636f6465602077617320757064617465642e284e65774163636f756e7404244163636f756e744964047c2041206e6577205c5b6163636f756e745c5d2077617320637265617465642e344b696c6c65644163636f756e7404244163636f756e744964046c20416e205c5b6163636f756e745c5d20776173207265617065642e1830426c6f636b57656967687473506c696d6974733a3a426c6f636b57656967687473850100c817a80400000000204aa9d10100008036be26000000000180914b872e010000010098f73e5d0100000100000000000000008036be26000000000180199ef1a20100000100204aa9d1010000010088526a740000008036be260000000000000004d020426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e2c426c6f636b4c656e6774684c6c696d6974733a3a426c6f636b4c656e67746830000078000000a0000000a00004a820546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e38426c6f636b48617368436f756e7438543a3a426c6f636b4e756d62657210fa000000045501204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e2044625765696768743c52756e74696d6544625765696768744080f0fa020000000000c2eb0b000000000409012054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e1c56657273696f6e3852756e74696d6556657273696f6e05042c706f6c796d6573685f63692c706f6c796d6573685f636901000000b80b00000000000048df6acb689907609b0300000037e397fc7c91f5e40100000040fe3ad401f8959a04000000d2bc9897eed08f1502000000f78b278be53f454c02000000ed99c5acb25eedf502000000cbca25e39f14238702000000687ad44ad37f03c201000000bc9d89904f5b923f0100000037c8bb1350a9a2a801000000ab3c0572291feb8b0100000018ef58a3b67ba77001000000329342994773047f01000000001a0b29f17d01f401000000f28e8080b6e2dfd001000000bb6ba9053c5c9d78010000009f242c2c886f3fce01000000595ac34c5ea1f5fe01000000010000000484204765742074686520636861696e27732063757272656e742076657273696f6e2e2853533538507265666978087538042a14a8205468652064657369676e61746564205353383520707265666978206f66207468697320636861696e2e0039012054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e20697331012074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f662069742061737020616e206964656e746966696572206f662074686520636861696e2e143c496e76616c6964537065634e616d6508150120546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d655420616e6420746865206e65772072756e74696d652e685370656356657273696f6e4e65656473546f496e637265617365084501205468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d655420616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e0cf0204661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e000d01204569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e4c4e6f6e44656661756c74436f6d706f7369746504010120537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e3c4e6f6e5a65726f526566436f756e740439012054686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e001042616265011042616265342845706f6368496e64657801000c75363420000000000000000004542043757272656e742065706f636820696e6465782e2c417574686f72697469657301009c5665633c28417574686f7269747949642c2042616265417574686f72697479576569676874293e0400046c2043757272656e742065706f636820617574686f7269746965732e2c47656e65736973536c6f74010010536c6f7420000000000000000008f82054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e205468697320697320309020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2c43757272656e74536c6f74010010536c6f7420000000000000000004542043757272656e7420736c6f74206e756d6265722e2852616e646f6d6e6573730100587363686e6f72726b656c3a3a52616e646f6d6e65737380000000000000000000000000000000000000000000000000000000000000000028b8205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e002c20232053656375726974790005012054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061f8206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e7915012063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d6265727320746861742074686973150120286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e206265050120757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e0d01206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e3c4e65787445706f6368436f6e6669670000504e657874436f6e66696744657363726970746f7204000498204e6578742065706f636820636f6e66696775726174696f6e2c206966206368616e6765642e384e65787452616e646f6d6e6573730100587363686e6f72726b656c3a3a52616e646f6d6e657373800000000000000000000000000000000000000000000000000000000000000000045c204e6578742065706f63682072616e646f6d6e6573732e3c4e657874417574686f72697469657301009c5665633c28417574686f7269747949642c2042616265417574686f72697479576569676874293e04000460204e6578742065706f636820617574686f7269746965732e305365676d656e74496e64657801000c7533321000000000247c2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e00f4205765206d616b6520612074726164656f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e01012057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f942060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e00ec204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e090120576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572791c2065706f63682e44556e646572436f6e737472756374696f6e0101050c7533326c5665633c7363686e6f72726b656c3a3a52616e646f6d6e6573733e0004000415012054574f582d4e4f54453a20605365676d656e74496e6465786020697320616e20696e6372656173696e6720696e74656765722c20736f2074686973206973206f6b61792e2c496e697469616c697a656400003c4d6179626552616e646f6d6e65737304000801012054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d65601d01206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e4c417574686f7256726652616e646f6d6e65737301003c4d6179626552616e646f6d6e65737304000c5d012054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e29207468617420696e636c756465732074686520565246206f75747075742067656e6572617465645101206174207468697320626c6f636b2e2054686973206669656c642073686f756c6420616c7761797320626520706f70756c6174656420647572696e6720626c6f636b2070726f63657373696e6720756e6c6573731901207365636f6e6461727920706c61696e20736c6f74732061726520656e61626c65642028776869636820646f6e277420636f6e7461696e206120565246206f7574707574292e204c6174656e657373010038543a3a426c6f636b4e756d626572100000000014d820486f77206c617465207468652063757272656e7420626c6f636b20697320636f6d706172656420746f2069747320706172656e742e001501205468697320656e74727920697320706f70756c617465642061732070617274206f6620626c6f636b20657865637574696f6e20616e6420697320636c65616e65642075701101206f6e20626c6f636b2066696e616c697a6174696f6e2e205175657279696e6720746869732073746f7261676520656e747279206f757473696465206f6620626c6f636bb020657865637574696f6e20636f6e746578742073686f756c6420616c77617973207969656c64207a65726f2e01084c7265706f72745f65717569766f636174696f6e084865717569766f636174696f6e5f70726f6f667045717569766f636174696f6e50726f6f663c543a3a4865616465723e3c6b65795f6f776e65725f70726f6f6640543a3a4b65794f776e657250726f6f66100d01205265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c207665726966790901207468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66110120616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c34206265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e6564084865717569766f636174696f6e5f70726f6f667045717569766f636174696f6e50726f6f663c543a3a4865616465723e3c6b65795f6f776e65725f70726f6f6640543a3a4b65794f776e657250726f6f66200d01205265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c207665726966790901207468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66110120616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c34206265207265706f727465642e110120546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c79190120626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c206173207375636819012069662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e28207265706f727465722e00083445706f63684475726174696f6e0c753634207800000000000000140d0120546865206e756d626572206f66202a2a736c6f74732a2a207468617420616e2065706f63682074616b65732e20576520636f75706c652073657373696f6e7320746ffc2065706f6368732c20692e652e2077652073746172742061206e65772073657373696f6e206f6e636520746865206e65772065706f636820626567696e732e0101204e4f54453a2043757272656e746c79206974206973206e6f7420706f737369626c6520746f206368616e6765207468652065706f6368206475726174696f6e09012061667465722074686520636861696e2068617320737461727465642e20417474656d7074696e6720746f20646f20736f2077696c6c20627269636b20626c6f636b302070726f64756374696f6e2e444578706563746564426c6f636b54696d6524543a3a4d6f6d656e7420f40100000000000014050120546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e67110120626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f75740501207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f740901206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473a0207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e00012454696d657374616d70012454696d657374616d70080c4e6f77010024543a3a4d6f6d656e7420000000000000000004902043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e24446964557064617465010010626f6f6c040004b420446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f01040c736574040c6e6f7748436f6d706163743c543a3a4d6f6d656e743e3c5820536574207468652063757272656e742074696d652e00590120546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6ed82070686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e004501205468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e74207370656369666965642062794420604d696e696d756d506572696f64602e00d820546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e002c2023203c7765696768743e3501202d20604f2831296020284e6f7465207468617420696d706c656d656e746174696f6e73206f6620604f6e54696d657374616d7053657460206d75737420616c736f20626520604f2831296029a101202d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202862656361757365206f6620604469645570646174653a3a74616b656020696e20606f6e5f66696e616c697a656029d8202d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f736574602e204d75737420626520604f283129602e302023203c2f7765696768743e0004344d696e696d756d506572696f6424543a3a4d6f6d656e7420fa0000000000000010690120546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a20706572696f64690120746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c2067656e6572616c6c79650120776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c20626520646f75626c6520746869737020706572696f64206f6e2064656661756c742073657474696e67732e00021c496e6469636573011c496e646963657304204163636f756e74730001023c543a3a4163636f756e74496e6465788828543a3a4163636f756e7449642c2042616c616e63654f663c543e2c20626f6f6c29000400048820546865206c6f6f6b75702066726f6d20696e64657820746f206163636f756e742e011414636c61696d0414696e6465783c543a3a4163636f756e74496e646578489c2041737369676e20616e2070726576696f75736c7920756e61737369676e656420696e6465782e00e0205061796d656e743a20604465706f736974602069732072657365727665642066726f6d207468652073656e646572206163636f756e742e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e00f4202d2060696e646578603a2074686520696e64657820746f20626520636c61696d65642e2054686973206d757374206e6f7420626520696e207573652e009420456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002c2023203c7765696768743e28202d20604f283129602e9c202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e64202d204f6e652072657365727665206f7065726174696f6e2e34202d204f6e65206576656e742e50202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d94202d204442205765696768743a203120526561642f577269746520284163636f756e747329302023203c2f7765696768743e207472616e73666572080c6e657730543a3a4163636f756e74496414696e6465783c543a3a4163636f756e74496e6465785061012041737369676e20616e20696e64657820616c7265616479206f776e6564206279207468652073656e64657220746f20616e6f74686572206163636f756e742e205468652062616c616e6365207265736572766174696f6ebc206973206566666563746976656c79207472616e7366657272656420746f20746865206e6577206163636f756e742e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002901202d2060696e646578603a2074686520696e64657820746f2062652072652d61737369676e65642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e6101202d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e009420456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002c2023203c7765696768743e28202d20604f283129602e9c202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e68202d204f6e65207472616e73666572206f7065726174696f6e2e34202d204f6e65206576656e742e50202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d34202d204442205765696768743ae4202020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e7429e8202020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e7429302023203c2f7765696768743e10667265650414696e6465783c543a3a4163636f756e74496e6465784898204672656520757020616e20696e646578206f776e6564206279207468652073656e6465722e006101205061796d656e743a20416e792070726576696f7573206465706f73697420706c6163656420666f722074686520696e64657820697320756e726573657276656420696e207468652073656e646572206163636f756e742e00590120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206f776e2074686520696e6465782e001101202d2060696e646578603a2074686520696e64657820746f2062652066726565642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e008820456d6974732060496e646578467265656460206966207375636365737366756c2e002c2023203c7765696768743e28202d20604f283129602e9c202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e64202d204f6e652072657365727665206f7065726174696f6e2e34202d204f6e65206576656e742e50202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d94202d204442205765696768743a203120526561642f577269746520284163636f756e747329302023203c2f7765696768743e38666f7263655f7472616e736665720c0c6e657730543a3a4163636f756e74496414696e6465783c543a3a4163636f756e74496e64657818667265657a6510626f6f6c54590120466f72636520616e20696e64657820746f20616e206163636f756e742e205468697320646f65736e277420726571756972652061206465706f7369742e2049662074686520696e64657820697320616c7265616479ec2068656c642c207468656e20616e79206465706f736974206973207265696d62757273656420746f206974732063757272656e74206f776e65722e00c820546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e00a8202d2060696e646578603a2074686520696e64657820746f206265202872652d2961737369676e65642e6101202d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e4501202d2060667265657a65603a2069662073657420746f206074727565602c2077696c6c20667265657a652074686520696e64657820736f2069742063616e6e6f74206265207472616e736665727265642e009420456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002c2023203c7765696768743e28202d20604f283129602e9c202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e7c202d20557020746f206f6e652072657365727665206f7065726174696f6e2e34202d204f6e65206576656e742e50202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d34202d204442205765696768743af8202020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e657229fc202020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e657229302023203c2f7765696768743e18667265657a650414696e6465783c543a3a4163636f756e74496e64657844690120467265657a6520616e20696e64657820736f2069742077696c6c20616c7761797320706f696e7420746f207468652073656e646572206163636f756e742e205468697320636f6e73756d657320746865206465706f7369742e005d0120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d7573742068617665206170206e6f6e2d66726f7a656e206163636f756e742060696e646578602e00b0202d2060696e646578603a2074686520696e64657820746f2062652066726f7a656e20696e20706c6163652e008c20456d6974732060496e64657846726f7a656e60206966207375636365737366756c2e002c2023203c7765696768743e28202d20604f283129602e9c202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e74202d20557020746f206f6e6520736c617368206f7065726174696f6e2e34202d204f6e65206576656e742e50202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d94202d204442205765696768743a203120526561642f577269746520284163636f756e747329302023203c2f7765696768743e010c34496e64657841737369676e656408244163636f756e744964304163636f756e74496e64657804b42041206163636f756e7420696e646578207761732061737369676e65642e205c5b696e6465782c2077686f5c5d28496e646578467265656404304163636f756e74496e64657804e82041206163636f756e7420696e64657820686173206265656e2066726565642075702028756e61737369676e6564292e205c5b696e6465785c5d2c496e64657846726f7a656e08304163636f756e74496e646578244163636f756e7449640429012041206163636f756e7420696e64657820686173206265656e2066726f7a656e20746f206974732063757272656e74206163636f756e742049442e205c5b696e6465782c2077686f5c5d041c4465706f7369743042616c616e63654f663c543e4040420f0000000000000000000000000004ac20546865206465706f736974206e656564656420666f7220726573657276696e6720616e20696e6465782e000328417574686f72736869700128417574686f72736869700c18556e636c65730100e85665633c556e636c65456e7472794974656d3c543a3a426c6f636b4e756d6265722c20543a3a486173682c20543a3a4163636f756e7449643e3e0400041c20556e636c657318417574686f72000030543a3a4163636f756e7449640400046420417574686f72206f662063757272656e7420626c6f636b2e30446964536574556e636c6573010010626f6f6c040004bc205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e0104287365745f756e636c657304286e65775f756e636c6573385665633c543a3a4865616465723e04642050726f76696465206120736574206f6620756e636c65732e00001c48496e76616c6964556e636c65506172656e74048c2054686520756e636c6520706172656e74206e6f7420696e2074686520636861696e2e40556e636c6573416c7265616479536574048420556e636c657320616c72656164792073657420696e2074686520626c6f636b2e34546f6f4d616e79556e636c6573044420546f6f206d616e7920756e636c65732e3047656e65736973556e636c6504582054686520756e636c652069732067656e657369732e30546f6f48696768556e636c6504802054686520756e636c6520697320746f6f206869676820696e20636861696e2e50556e636c65416c7265616479496e636c75646564047c2054686520756e636c6520697320616c726561647920696e636c756465642e204f6c64556e636c6504b82054686520756e636c652069736e277420726563656e7420656e6f75676820746f20626520696e636c756465642e042042616c616e636573012042616c616e6365730834546f74616c49737375616e636501001c42616c616e6365400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e144c6f636b7301010230543a3a4163636f756e744964645665633c42616c616e63654c6f636b3c42616c616e63653e3e00040008b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e0118207472616e736665720810646573748c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263651476616c756540436f6d706163743c42616c616e63653e58d8205472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e00090120607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e21012049742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e00190120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e002c2023203c7765696768743e3101202d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72cc202020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e6901202d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e004c2052656c617465642066756e6374696f6e733a0051012020202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e2d012020202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c206361757365d420202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e88202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d4501202d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429e0202d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e1501202d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e302023203c2f7765696768743e487472616e736665725f776974685f6d656d6f0c10646573748c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263651476616c756540436f6d706163743c42616c616e63653e106d656d6f304f7074696f6e3c4d656d6f3e200101205472616e7366657220746865206e61746976652063757272656e63792077697468207468652068656c70206f66206964656e74696669657220737472696e67f020746869732066756e6374696f6e616c6974792063616e2068656c7020746f20646966666572656e746961746520746865207472616e73666572732e002c2023203c7765696768743e4501202d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429e0202d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e1501202d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e302023203c2f7765696768743e906465706f7369745f626c6f636b5f7265776172645f726573657276655f62616c616e6365041476616c756540436f6d706163743c42616c616e63653e04e0204d6f766520736f6d6520504f4c59582066726f6d2062616c616e6365206f662073656c6620746f2062616c616e6365206f66204252522e2c7365745f62616c616e63650c0c77686f8c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365206e65775f6672656540436f6d706163743c42616c616e63653e306e65775f726573657276656440436f6d706163743c42616c616e63653e189420536574207468652062616c616e636573206f66206120676976656e206163636f756e742e00210120546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c090120616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e00b420546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e38666f7263655f7472616e736665720c18736f757263658c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636510646573748c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263651476616c756540436f6d706163743c42616c616e63653e1c51012045786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d61792062652c207370656369666965642e002c2023203c7765696768743e4101202d2053616d65206173207472616e736665722c20627574206164646974696f6e616c207265616420616e6420777269746520626563617573652074686520736f75726365206163636f756e74206973902020206e6f7420617373756d656420746f20626520696e20746865206f7665726c61792e302023203c2f7765696768743e506275726e5f6163636f756e745f62616c616e63650418616d6f756e741c42616c616e6365042d01204275726e732074686520676976656e20616d6f756e74206f6620746f6b656e732066726f6d207468652063616c6c6572277320667265652c20756e6c6f636b65642062616c616e63652e011c1c456e646f7765640c484f7074696f6e3c4964656e7469747949643e244163636f756e7449641c42616c616e636504350120416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e205c5b6469642c206163636f756e742c20667265655f62616c616e63655d205472616e7366657218484f7074696f6e3c4964656e7469747949643e244163636f756e744964484f7074696f6e3c4964656e7469747949643e244163636f756e7449641c42616c616e6365304f7074696f6e3c4d656d6f3e04f8205472616e7366657220737563636565646564202866726f6d5f6469642c2066726f6d2c20746f5f6469642c20746f2c2076616c75652c206d656d6f292e2842616c616e636553657410284964656e746974794964244163636f756e7449641c42616c616e63651c42616c616e636504d820412062616c616e6365207761732073657420627920726f6f7420286469642c2077686f2c20667265652c207265736572766564292e504163636f756e7442616c616e63654275726e65640c284964656e746974794964244163636f756e7449641c42616c616e636508410120546865206163636f756e7420616e642074686520616d6f756e74206f6620756e6c6f636b65642062616c616e6365206f662074686174206163636f756e74207468617420776173206275726e65642e90202863616c6c65722049642c2063616c6c6572206163636f756e742c20616d6f756e742920526573657276656408244163636f756e7449641c42616c616e6365041d0120536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e205c5b77686f2c2076616c75655d28556e726573657276656408244163636f756e7449641c42616c616e636504250120536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e205c5b77686f2c2076616c75655d4852657365727665526570617472696174656410244163636f756e744964244163636f756e7449641c42616c616e6365185374617475730c510120536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742edc2046696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652ea4205c5b66726f6d2c20746f2c2062616c616e63652c2064657374696e6174696f6e5f7374617475735d04484578697374656e7469616c4465706f7369741c42616c616e6365400000000000000000000000000000000004d420546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e14544c69717569646974795265737472696374696f6e7304c8204163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c204f766572666c6f77047420476f7420616e206f766572666c6f7720616674657220616464696e674c496e73756666696369656e7442616c616e636504782042616c616e636520746f6f206c6f7720746f2073656e642076616c7565484578697374656e7469616c4465706f73697404ec2056616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369744852656365697665724364644d697373696e67048c20526563656976657220646f6573206e6f74206861766520612076616c69642043444405485472616e73616374696f6e5061796d656e7401485472616e73616374696f6e5061796d656e7408444e6578744665654d756c7469706c6965720100284d756c7469706c69657240000064a7b3b6e00d0000000000000000003853746f7261676556657273696f6e01002052656c6561736573040000000008485472616e73616374696f6e427974654665653042616c616e63654f663c543e4064000000000000000000000000000000040d01205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e2c576569676874546f466565a45665633c576569676874546f466565436f656666696369656e743c42616c616e63654f663c543e3e3e5c040000000000000000000000000000000049b400000001040d012054686520706f6c796e6f6d69616c2074686174206973206170706c69656420696e206f7264657220746f20646572697665206665652066726f6d207765696768742e0006204964656e7469747901204964656e7469747938284469645265636f726473010106284964656e7469747949645c4469645265636f72643c543a3a4163636f756e7449643e0084000000000000000000000000000000000000000000000000000000000000000000045420444944202d3e206964656e7469747920696e666f2c497344696446726f7a656e010106284964656e74697479496410626f6f6c00040004e420444944202d3e20626f6f6c207468617420696e64696361746573206966207365636f6e64617279206b657973206172652066726f7a656e2e2843757272656e744469640000284964656e746974794964040004e02049742073746f726573207468652063757272656e74206964656e7469747920666f722063757272656e74207472616e73616374696f6e2e3043757272656e745061796572000030543a3a4163636f756e74496404000401012049742073746f726573207468652063757272656e74206761732066656520706179657220666f72207468652063757272656e74207472616e73616374696f6e18436c61696d730102052c436c61696d3173744b65792c436c61696d326e644b6579344964656e74697479436c61696d02c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a04f020285461726765742049442c20636c61696d20747970652920286973737565722c73636f706529202d3e204173736f63696174656420636c61696d73404b6579546f4964656e7469747949647301010530543a3a4163636f756e744964284964656e7469747949640080000000000000000000000000000000000000000000000000000000000000000000444d756c7469507572706f73654e6f6e636501000c75363420000000000000000004bc204e6f6e636520746f20656e7375726520756e6971756520616374696f6e732e207374617274732066726f6d20312e684f6666436861696e417574686f72697a6174696f6e4e6f6e6365010106284964656e74697479496448417574686f72697a6174696f6e4e6f6e63650020000000000000000004c820417574686f72697a6174696f6e206e6f6e636520706572204964656e746974792e20496e697469616c6c7920697320302e38417574686f72697a6174696f6e730002025c5369676e61746f72793c543a3a4163636f756e7449643e0c75363498417574686f72697a6174696f6e3c543a3a4163636f756e7449642c20543a3a4d6f6d656e743e05040004b020416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792f6b6579206861734c417574686f72697a6174696f6e73476976656e010206284964656e7469747949640c7536345c5369676e61746f72793c543a3a4163636f756e7449643e0584000000000000000000000000000000000000000000000000000000000000000000044d0120416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792068617320676976656e2e2028417574686f72697a65722c20617574685f6964202d3e20617574686f72697a6564296c43646441757468466f724d61737465724b6579526f746174696f6e010010626f6f6c0400086501204f62736f6c657465642073746f72616765207661726961626c652073757065726365646564206279206043646441757468466f725072696d6172794b6579526f746174696f6e602e204974206973206b65707420686572659820666f722074686520707572706f7365206f662073746f72616765206d6967726174696f6e2e7043646441757468466f725072696d6172794b6579526f746174696f6e010010626f6f6c0400085d01204120636f6e66696720666c616720746861742c206966207365742c20696e7374727563747320616e20617574686f72697a6174696f6e2066726f6d2061204344442070726f766964657220696e206f7264657220746f9c206368616e676520746865207072696d617279206b6579206f6620616e206964656e746974792e3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e484163636f756e744b6579526566436f756e7401010230543a3a4163636f756e7449640c753634002000000000000000001cc420486f77206d616e7920227374726f6e6722207265666572656e63657320746f20746865206163636f756e74206b65792e00fc205374726f6e67207265666572656e6365732077696c6c20626c6f636b2061206b65792066726f6d206c656176696e672069742773206964656e746974792e00cc2050616c6c657473207573696e6720227374726f6e6722207265666572656e63657320746f206163636f756e74206b6579733aac202a2052656c617965723a20466f722060757365725f6b65796020616e642060706179696e675f6b657960000154406364645f72656769737465725f64696408387461726765745f6163636f756e7430543a3a4163636f756e744964387365636f6e646172795f6b6579737c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e2cbc20526567697374657220607461726765745f6163636f756e746020776974682061206e6577204964656e746974792e00282023204661696c7572654901202d20606f726967696e602068617320746f206265206120616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65772020636c61696d732e6101202d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c7938206f6e65206964656e746974792ef8202d2045787465726e616c207365636f6e64617279206b6579732063616e206265206c696e6b656420746f206a757374206f6e65206964656e746974792e0024202320576569676874c42060375f3030305f3030305f303030202b203630305f303030202a207365636f6e646172795f6b6579732e6c656e28296054696e76616c69646174655f6364645f636c61696d730c0c636464284964656e7469747949643064697361626c655f66726f6d24543a3a4d6f6d656e7418657870697279444f7074696f6e3c543a3a4d6f6d656e743e0c310120497420696e76616c69646174657320616e7920636c61696d2067656e6572617465642062792060636464602066726f6d206064697361626c655f66726f6d602074696d657374616d70732e590120596f752063616e20616c736f20646566696e6520616e2065787069726174696f6e2074696d652c2077686963682077696c6c20696e76616c696461746520616c6c20636c61696d732067656e657261746564206279b8207468617420606364646020616e642072656d6f766520697420617320434444206d656d6265722067726f75702e5472656d6f76655f7365636f6e646172795f6b65797304447369676e6572735f746f5f72656d6f7665705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e1cd82052656d6f76657320737065636966696564207365636f6e64617279206b657973206f662061204449442069662070726573656e742e00282023204661696c757265a42049742063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722e0024202320576569676874c420603935305f3030305f303030202b2036305f303030202a207369676e6572735f746f5f72656d6f76652e6c656e282960486163636570745f7072696d6172795f6b65790840726f746174696f6e5f617574685f69640c753634506f7074696f6e616c5f6364645f617574685f69642c4f7074696f6e3c7536343e1c69012043616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e6501207769746820746865206e6577207072696d617279206b65792e20496620612043444420736572766963652070726f766964657220617070726f7665642074686973206368616e67652c207072696d617279206b6579206f6650207468652044494420697320757064617465642e0030202320417267756d656e74732101202a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e8202a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f7669646572986368616e67655f6364645f726571756972656d656e745f666f725f6d6b5f726f746174696f6e0434617574685f726571756972656410626f6f6c143901205365742069662043444420617574686f72697a6174696f6e20697320726571756972656420666f72207570646174696e67207072696d617279206b6579206f6620616e206964656e746974792e7c2043616c6c61626c652076696120726f6f742028676f7665726e616e6365290030202320417267756d656e7473d0202a2060617574685f7265717569726564602043444420417574686f72697a6174696f6e207265717569726564206f72206e6f74506a6f696e5f6964656e746974795f61735f6b6579041c617574685f69640c7536340494204a6f696e20616e206964656e746974792061732061207365636f6e64617279206b65792e546c656176655f6964656e746974795f61735f6b6579000490204c6561766520746865207365636f6e64617279206b65792773206964656e746974792e246164645f636c61696d0c18746172676574284964656e74697479496414636c61696d14436c61696d18657870697279444f7074696f6e3c543a3a4d6f6d656e743e0cc820416464732061206e657720636c61696d207265636f7264206f7220656469747320616e206578697374696e67206f6e652e00ac204f6e6c792063616c6c6564206279206469645f6973737565722773207365636f6e64617279206b65792e307265766f6b655f636c61696d0818746172676574284964656e74697479496414636c61696d14436c61696d0498204d61726b73207468652073706563696669656420636c61696d206173207265766f6b65642e607365745f7065726d697373696f6e5f746f5f7369676e657208187369676e65725c5369676e61746f72793c543a3a4163636f756e7449643e2c7065726d697373696f6e732c5065726d697373696f6e7308d82049742073657473207065726d697373696f6e7320666f7220616e20737065636966696320607461726765745f6b657960206b65792e3901204f6e6c7920746865207072696d617279206b6579206f6620616e206964656e746974792069732061626c6520746f20736574207365636f6e64617279206b6579207065726d697373696f6e732e7c6c65676163795f7365745f7065726d697373696f6e5f746f5f7369676e657208187369676e65725c5369676e61746f72793c543a3a4163636f756e7449643e2c7065726d697373696f6e73444c65676163795065726d697373696f6e730c490120546869732066756e6374696f6e206973206120776f726b61726f756e6420666f722068747470733a2f2f6769746875622e636f6d2f706f6c6b61646f742d6a732f617070732f6973737565732f33363332d82049742073657473207065726d697373696f6e7320666f7220616e20737065636966696320607461726765745f6b657960206b65792e3901204f6e6c7920746865207072696d617279206b6579206f6620616e206964656e746974792069732061626c6520746f20736574207365636f6e64617279206b6579207065726d697373696f6e732e54667265657a655f7365636f6e646172795f6b6579730010c82049742064697361626c657320616c6c207365636f6e64617279206b657973206174206064696460206964656e746974792e00242023204572726f7273005c756e667265657a655f7365636f6e646172795f6b6579730004e02052652d656e61626c657320616c6c207365636f6e64617279206b657973206f66207468652063616c6c65722773206964656e746974792e446164645f617574686f72697a6174696f6e0c187461726765745c5369676e61746f72793c543a3a4163636f756e7449643e48617574686f72697a6174696f6e5f646174617c417574686f72697a6174696f6e446174613c543a3a4163636f756e7449643e18657870697279444f7074696f6e3c543a3a4d6f6d656e743e045c204164647320616e20617574686f72697a6174696f6e2e5072656d6f76655f617574686f72697a6174696f6e0c187461726765745c5369676e61746f72793c543a3a4163636f756e7449643e1c617574685f69640c753634445f617574685f6973737565725f7061797310626f6f6c08682052656d6f76657320616e20617574686f72697a6174696f6e2e7901205f617574685f6973737565725f706179732064657465726d696e657320776865746865722074686520697373756572206f662074686520617574686f7269736174696f6e207061797320746865207472616e73616374696f6e20666565946164645f7365636f6e646172795f6b6579735f776974685f617574686f72697a6174696f6e083c6164646974696f6e616c5f6b6579739c5665633c5365636f6e646172794b657957697468417574683c543a3a4163636f756e7449643e3e28657870697265735f617424543a3a4d6f6d656e7430c02049742061646473207365636f6e64617279206b65797320746f20746172676574206964656e7469747920606964602e3d01204b65797320617265206469726563746c7920616464656420746f206964656e7469747920626563617573652065616368206f66207468656d2068617320616e20617574686f72697a6174696f6e2e002c20417267756d656e74733ab420202020202d20606f726967696e60205072696d617279206b6579206f662060696460206964656e746974792ef020202020202d2060696460204964656e74697479207768657265206e6577207365636f6e64617279206b6579732077696c6c2062652061646465642e710120202020202d20606164646974696f6e616c5f6b65797360204e6577207365636f6e64617279206974656d732028616e6420746865697220617574686f72697a6174696f6e20646174612920746f2061646420746f207461726765743820202020206964656e746974792e0020204661696c757265bc20202020202d2049742063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722ed420202020202d204b6579732073686f756c642062652061626c6520746f206c696e6b656420746f20616e79206964656e746974792e746164645f696e766573746f725f756e697175656e6573735f636c61696d1018746172676574284964656e74697479496414636c61696d14436c61696d1470726f6f664c496e766573746f725a4b50726f6f664461746118657870697279444f7074696f6e3c543a3a4d6f6d656e743e4c0d01204164642060436c61696d3a3a496e766573746f72556e697175656e6573736020636c61696d20666f72206120676976656e20746172676574206964656e746974792e002c2023203c7765696768743e45012020576569676874206f662074686520746869732065787472696e73696320697320646570656e64206f6e2074686520636f6d7075746174696f6e2074686174207573656420746f2076616c6964617465290120207468652070726f6f66206f6620636c61696d2c2077686963682077696c6c206265206120636f6e7374616e7420696e646570656e64656e74206f66207573657220696e707574732e302023203c2f7765696768743e0030202320417267756d656e7473b901202a206f726967696e202d2057686f2070726f76696465732074686520636c61696d20746f2074686520757365723f20496e207468697320636173652c20697427732074686520757365722773206163636f756e742069642061732074686520757365722070726f76696465732ee8202a20746172676574202d20604964656e7469747949646020746f2077686963682074686520636c61696d20676574732061737369676e65642eb8202a20636c61696d202d2060496e766573746f72556e697175656e6573736020636c61696d2064657461696c732eb0202a2070726f6f66202d20546f2076616c6964617465207468652073656c66206174746573746174696f6e2e70202a20657870697279202d20457870697279206f6620636c61696d2e00242023204572726f72733101202a20604469644d757374416c7265616479457869737460205461726765742073686f756c6420616c7265616479206265656e20612070617274206f66207468652065636f73797374656d2e9501202a2060436c61696d56617269616e744e6f74416c6c6f77656460205768656e206f726967696e20747279696e6720746f207061737320636c61696d2076617269616e74206f74686572207468616e2060496e766573746f72556e697175656e657373602ebd01202a2060436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f77656460205768656e2069737375657220697320646966666572656e742066726f6d20746172676574206f72204344445f494420697320696e76616c696420666f7220676976656e20757365722eb0202a2060496e76616c696453636f7065436c61696d205768656e2070726f6f6620697320696e76616c69642e4067635f6164645f6364645f636c61696d0418746172676574284964656e74697479496404490120417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c20616464732061206e65772063646420636c61696d207265636f72642e4c67635f7265766f6b655f6364645f636c61696d0418746172676574284964656e746974794964046d0120417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c2072656d6f76657320616e206578697374696e672063646420636c61696d207265636f72642e806164645f696e766573746f725f756e697175656e6573735f636c61696d5f76321418746172676574284964656e7469747949641473636f70651453636f706514636c61696d14436c61696d1470726f6f663c53636f7065436c61696d50726f6f6618657870697279444f7074696f6e3c543a3a4d6f6d656e743e00547265766f6b655f636c61696d5f62795f696e6465780c18746172676574284964656e74697479496428636c61696d5f7479706524436c61696d547970651473636f7065344f7074696f6e3c53636f70653e20f901205265766f6b6573206120737065636966696320636c61696d207573696e6720697473205b436c61696d20556e6971756520496e6465785d282f70616c6c65745f6964656e746974792f696e6465782e68746d6c23636c61696d2d756e697175652d696e6465782920636f6d706f7365642062792060746172676574602c6c2060636c61696d5f74797065602c20616e64206073636f7065602e00090120506c65617365206e6f7465207468617420606f726967696e60206d7573742062652074686520697373756572206f66207468652074617267657420636c61696d2e00242023204572726f72735101202d20605461726765744861734e6f6e5a65726f42616c616e6365417453636f7065496460207768656e20796f752074727920746f207265766f6b6520612060496e766573746f72556e697175656e6573732a60290120636c61696d2c20616e64206074617267657460206964656e74697479207374696c6c206861766520616e792062616c616e6365206f6e2074686520676976656e206073636f7065602e014c28446964437265617465640c284964656e746974794964244163636f756e744964705665633c5365636f6e646172794b65793c4163636f756e7449643e3e04b0204449442c207072696d617279206b6579206163636f756e742049442c207365636f6e64617279206b657973485365636f6e646172794b657973416464656408284964656e746974794964705665633c5365636f6e646172794b65793c4163636f756e7449643e3e0438204449442c206e6577206b657973505365636f6e646172794b65797352656d6f76656408284964656e746974794964645665633c5369676e61746f72793c4163636f756e7449643e3e047c204449442c20746865206b657973207468617420676f742072656d6f766564285369676e65724c65667408284964656e746974794964505369676e61746f72793c4163636f756e7449643e04b02041207369676e6572206c656674207468656972206964656e746974792e20286469642c207369676e657229785365636f6e646172794b65795065726d697373696f6e735570646174656410284964656e7469747949645c5365636f6e646172794b65793c4163636f756e7449643e2c5065726d697373696f6e732c5065726d697373696f6e73040901204449442c2075706461746564207365636f6e64617279206b65792c2070726576696f7573207065726d697373696f6e732c206e6577207065726d697373696f6e73445072696d6172794b6579557064617465640c284964656e746974794964244163636f756e744964244163636f756e74496404a0204449442c206f6c64207072696d617279206b6579206163636f756e742049442c206e657720494428436c61696d416464656408284964656e746974794964344964656e74697479436c61696d0430204449442c20636c61696d7330436c61696d5265766f6b656408284964656e746974794964344964656e74697479436c61696d0474204449442c20436c61696d547970652c20436c61696d204973737565724841737365744469645265676973746572656408284964656e746974794964185469636b657204282041737365742044494448417574686f72697a6174696f6e416464656418284964656e746974794964484f7074696f6e3c4964656e7469747949643e444f7074696f6e3c4163636f756e7449643e0c75363470417574686f72697a6174696f6e446174613c4163636f756e7449643e384f7074696f6e3c4d6f6d656e743e0864204e657720617574686f72697a6174696f6e2061646465642e35012028617574686f72697365645f62792c207461726765745f6469642c207461726765745f6b65792c20617574685f69642c20617574686f72697a6174696f6e5f646174612c206578706972792950417574686f72697a6174696f6e5265766f6b65640c484f7074696f6e3c4964656e7469747949643e444f7074696f6e3c4163636f756e7449643e0c75363408a420417574686f72697a6174696f6e207265766f6b65642062792074686520617574686f72697a65722ebc2028617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e52656a65637465640c484f7074696f6e3c4964656e7469747949643e444f7074696f6e3c4163636f756e7449643e0c75363408dc20417574686f72697a6174696f6e2072656a65637465642062792074686520757365722077686f2077617320617574686f72697a65642ebc2028617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e436f6e73756d65640c484f7074696f6e3c4964656e7469747949643e444f7074696f6e3c4163636f756e7449643e0c753634086020417574686f72697a6174696f6e20636f6e73756d65642ebc2028617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f696429704f6666436861696e417574686f72697a6174696f6e5265766f6b656408284964656e746974794964505369676e61746f72793c4163636f756e7449643e08a8204f66662d636861696e20417574686f72697a6174696f6e20686173206265656e207265766f6b65642e742028546172676574204964656e746974792c205369676e61746f72792988436464526571756972656d656e74466f725072696d6172794b6579557064617465640410626f6f6c0411012043444420726571756972656d656e7420666f72207570646174696e67207072696d617279206b6579206368616e6765642e20286e65775f726571756972656d656e742950436464436c61696d73496e76616c69646174656408284964656e746974794964184d6f6d656e740845012043444420636c61696d732067656e65726174656420627920604964656e74697479496460202861204344442050726f7669646572292068617665206265656e20696e76616c6964617465642066726f6d2820604d6f6d656e74602e4c5365636f6e646172794b65797346726f7a656e04284964656e74697479496404c820416c6c205365636f6e64617279206b657973206f6620746865206964656e74697479204944206172652066726f7a656e2e545365636f6e646172794b657973556e66726f7a656e04284964656e74697479496404d020416c6c205365636f6e64617279206b657973206f6620746865206964656e746974792049442061726520756e66726f7a656e2e584d6f636b496e766573746f725549444372656174656408284964656e7469747949642c496e766573746f725569640470204d6f636b656420496e766573746f7255696420637265617465642e0430496e697469616c504f4c5958c03c543a3a42616c616e6365732061732043757272656e63793c543a3a4163636f756e7449643e3e3a3a42616c616e63654000000000000000000000000000000000008434416c72656164794c696e6b656404e0204f6e65207365636f6e64617279206f72207072696d617279206b65792063616e206f6e6c792062656c6f6e6720746f206f6e6520444944584d697373696e6743757272656e744964656e7469747904b0204d697373696e672063757272656e74206964656e74697479206f6e20746865207472616e73616374696f6e30556e617574686f72697a656404c0205369676e61746f7279206973206e6f742070726520617574686f72697a656420627920746865206964656e7469747944496e76616c69644163636f756e744b657904ac204163636f756e742049642063616e6e6f74206265206578747261637465642066726f6d207369676e65725c556e417574686f72697a656443646450726f766964657204a0204f6e6c792043444420736572766963652070726f7669646572732061726520616c6c6f7765642e74496e76616c6964417574686f72697a6174696f6e46726f6d4f776e657204a420416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865206f776e65722e8c496e76616c6964417574686f72697a6174696f6e46726f6d43646450726f766964657204c020416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865204344442070726f76696465722e644e6f7443646450726f76696465724174746573746174696f6e04bc204174746573746174696f6e20776173206e6f7420627920612043444420736572766963652070726f76696465722e70417574686f72697a6174696f6e734e6f74466f7253616d654469647304a420417574686f72697a6174696f6e7320617265206e6f7420666f72207468652073616d65204449442e4c4469644d757374416c7265616479457869737404702054686520444944206d75737420616c72656164792065786973742e8043757272656e744964656e7469747943616e6e6f744265466f727761726465640451012043757272656e74206964656e746974792063616e6e6f7420626520666f727761726465642c206974206973206e6f742061207365636f6e64617279206b6579206f6620746172676574206964656e746974792e50417574686f72697a6174696f6e4578706972656404a020546865206f6666636861696e20617574686f72697a6174696f6e2068617320657870697265642e385461726765744861734e6f436464048420546865207461726765742044494420686173206e6f2076616c6964204344442e6c417574686f72697a6174696f6e4861734265656e5265766f6b656404ac20417574686f72697a6174696f6e20686173206265656e206578706c696369746c79207265766f6b65642e74496e76616c6964417574686f72697a6174696f6e5369676e6174757265049020416e20696e76616c696420617574686f72697a6174696f6e207369676e61747572652e344b65794e6f74416c6c6f77656404d82054686973206b6579206973206e6f7420616c6c6f77656420746f2065786563757465206120676976656e206f7065726174696f6e2e344e6f745072696d6172794b6579046501204f6e6c7920746865207072696d617279206b657920697320616c6c6f77656420746f207265766f6b6520616e204964656e74697479205369676e61746f7279206f66662d636861696e20617574686f72697a6174696f6e2e3c446964446f65734e6f7445786973740460205468652044494420646f6573206e6f742065786973742e40446964416c72656164794578697374730460205468652044494420616c7265616479206578697374732e785365636f6e646172794b657973436f6e7461696e5072696d6172794b657904b020546865207365636f6e64617279206b65797320636f6e7461696e20746865207072696d617279206b65792e444661696c6564546f43686172676546656504a420436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e284e6f74415369676e657204dc205369676e6572206973206e6f742061207365636f6e64617279206b6579206f66207468652070726f7669646564206964656e746974796c43616e6e6f744465636f64655369676e65724163636f756e7449640419012043616e6e6f7420636f6e7665727420612060543a3a4163636f756e7449646020746f2060416e795369676e61747572653a3a5369676e65723a3a4163636f756e744964602e484d756c746953696748617342616c616e6365042501204d756c74697369672063616e206e6f7420626520756e6c696e6b65642066726f6d20616e206964656e74697479207768696c65206974207374696c6c20686f6c647320504f4c595880436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f77656404090120436f6e666964656e7469616c2053636f706520636c61696d732063616e20626520616464656420627920616e204964656e7469747920746f2069742d73656c662e44496e76616c696453636f7065436c61696d04c0204164646974696f6e206f662061206e65772073636f706520636c61696d206765747320696e76616c6964617465642e58436c61696d56617269616e744e6f74416c6c6f77656404e82054727920746f20616464206120636c61696d2076617269616e74207573696e6720756e2d64657369676e617465642065787472696e7369632e805461726765744861734e6f6e5a65726f42616c616e6365417453636f706549640455012054727920746f2064656c6574652074686520495520636c61696d206576656e207768656e20746865207573657220686173206e6f6e207a65726f2062616c616e636520617420676976656e2073636f706549642e6443444449644e6f74556e69717565466f724964656e746974790421012043444449642073686f756c6420626520756e6971756520262073616d652077697468696e20616c6c2063646420636c61696d7320706f737365737365642062792061204449442e30496e76616c69644344444964040d01204e6f6e2073797374656d61746963204344442070726f7669646572732063616e206e6f74206372656174652064656661756c74206364645f696420636c61696d732e7c436c61696d416e6450726f6f6656657273696f6e73446f4e6f744d6174636804a020436c61696d20616e642050726f6f662076657273696f6e732061726520646966666572656e742e544163636f756e744b657949734265696e675573656404d420546865206163636f756e74206b6579206973206265696e6720757365642c2069742063616e277420626520756e6c696e6b65642e48437573746f6d53636f7065546f6f4c6f6e670870204120637573746f6d2073636f706520697320746f6f206c6f6e672ea02049742063616e206174206d6f737420626520603332602063686172616374657273206c6f6e672e074c4364645365727669636550726f7669646572730138496e7374616e63653247726f75700c344163746976654d656d6265727301003c5665633c4964656e7469747949643e040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100785665633c496e6163746976654d656d6265723c543a3a4d6f6d656e743e3e040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d697401000c753332100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e011c607365745f6163746976655f6d656d626572735f6c696d697404146c696d69742c4d656d626572436f756e74103901204368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e0030202320417267756d656e74731101202a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c0c77686f284964656e74697479496418657870697279444f7074696f6e3c543a3a4d6f6d656e743e086174444f7074696f6e3c543a3a4d6f6d656e743e40982044697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e00450120506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e702074696d652d7374616d702077696c6c20626520757064617465642e00510120416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f72610120696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e791d012067656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e00550120496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e0030202320417267756d656e747380202a2060617460202d205265766f636174696f6e2074696d652d7374616d702e98202a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e5901202a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c2074686555012067656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d626572040c77686f284964656e746974794964143d0120416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e0030202320417267756d656e7473d4202a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74bc202a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d626572040c77686f284964656e7469747949642855012052656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e00450120416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725d0120696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e20697420697365012072656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564e020636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e0030202320417267756d656e7473e0202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74cc202a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d626572081872656d6f7665284964656e7469747949640c616464284964656e74697479496420e0205377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b8204d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e0030202320417267756d656e7473d8202a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d8202a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702edc202a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d62657273041c6d656d626572733c5665633c4964656e7469747949643e182d01204368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702ebc204d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e0030202320417267756d656e7473dc202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f7490202a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700028510120416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f20612047431820766f74652e0030202320417267756d656e7473d0202a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e00202023204572726f720084202a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea8202a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e011c2c4d656d626572416464656408284964656e746974794964284964656e74697479496408e42054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e702063616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408284964656e746974794964284964656e74697479496408ec2054686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea42063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408284964656e746974794964284964656e74697479496408e82054686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea42063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c284964656e746974794964284964656e746974794964284964656e74697479496408dc2054776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e982063616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408284964656e7469747949643c5665633c4964656e7469747949643e08190120546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e842063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c284964656e7469747949642c4d656d626572436f756e742c4d656d626572436f756e7404310120546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d7904bc73705f7374643a3a6d61726b65723a3a5068616e746f6d446174613c284163636f756e7449642c204576656e74293e0470205068616e746f6d206d656d6265722c206e6576657220757365642e001c544f6e6c795072696d6172794b6579416c6c6f77656404b4204f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d62657204802047726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d62657204a82043616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f745175697404ac204c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790450204d697373696e672063757272656e7420444944684163746976654d656d626572734c696d6974457863656564656404610120546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f7704190120416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e0844506f6c796d657368436f6d6d69747465650148496e7374616e636531436f6d6d6974746565242450726f706f73616c730100305665633c543a3a486173683e040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001061c543a3a48617368843c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c00040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e670001061c543a3a4861736874506f6c796d657368566f7465733c543a3a426c6f636b4e756d6265723e00040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e7401000c753332100000000004482050726f706f73616c7320736f206661722e1c4d656d6265727301003c5665633c4964656e7469747949643e04000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c64010028287533322c2075333229200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f720000284964656e746974794964040004542052656c6561736520636f6f7264696e61746f722e304578706972657341667465720100684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0114487365745f766f74655f7468726573686f6c6408046e0c75333204640c75333218fc204368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e590120466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e0030202320417267756d656e7473fc202a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e0501202a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204086964284964656e7469747949641c84204368616e676573207468652072656c6561736520636f6f7264696e61746f722e0030202320417267756d656e7473c4202a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e00242023204572726f72732901202a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f61667465720418657870697279684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e10c4204368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e0030202320417267756d656e747388202a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f7365081c617070726f766510626f6f6c1063616c6c98426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e4419012050726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e610120416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c2101207468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00242023205765696768740031012054686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c65786974797c20666f72207265636f7264696e672074686520766f746520697473656c662e0030202320417267756d656e7473a4202a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f65012020204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb8202a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e00242023204572726f72733101202a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e0d01202a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c2070726f706f73616c1c543a3a4861736814696e6465783450726f706f73616c496e6465781c617070726f766510626f6f6c28a820566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d8206f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e0030202320417267756d656e7473d8202a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e80202a2060696e64657860202d205468652070726f706f73616c20696e6465782e3101202a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e00242023204572726f72730d01202a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e01282050726f706f7365640c284964656e7469747949643450726f706f73616c496e6465781048617368088d012041206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292edc20506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c284964656e7469747949643450726f706f73616c496e646578104861736810626f6f6c2c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c09012041206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674d0120612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e99012063616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410284964656e7469747949643450726f706f73616c496e646578104861736810626f6f6c08d0204120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e09012063616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314284964656e7469747949643450726f706f73616c496e64657810486173683c5665633c4964656e7469747949643e3c5665633c4964656e7469747949643e08942046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829fc2063616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414284964656e74697479496410486173682c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c0d012041206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e6745012074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e510120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414284964656e74697479496410486173682c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c0d012041206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e6745012074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e510120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c284964656e7469747949641048617368384469737061746368526573756c74083d012041206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e110120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408284964656e746974794964484f7074696f6e3c4964656e7469747949643e08982052656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642ee020506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408284964656e7469747949645c4d61796265426c6f636b3c426c6f636b4e756d6265723e089c2050726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec820506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c284964656e7469747949640c7533320c753332088820566f74696e67207468726573686f6c6420686173206265656e2075706461746564bc20506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f720024344475706c6963617465566f74650484204475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d626572088c2041204449442069736e27742070617274206f662074686520636f6d6d69747465652ed82054686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c0448204e6f20737563682070726f706f73616c2e3c50726f706f73616c4578706972656404942050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0450204475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e6465780464204d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e04982050726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a6563740c010120466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e050120416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222e010120546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d69745265616368656404b8204d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e094c436f6d6d69747465654d656d626572736869700138496e7374616e63653147726f75700c344163746976654d656d6265727301003c5665633c4964656e7469747949643e040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100785665633c496e6163746976654d656d6265723c543a3a4d6f6d656e743e3e040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d697401000c753332100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e011c607365745f6163746976655f6d656d626572735f6c696d697404146c696d69742c4d656d626572436f756e74103901204368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e0030202320417267756d656e74731101202a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c0c77686f284964656e74697479496418657870697279444f7074696f6e3c543a3a4d6f6d656e743e086174444f7074696f6e3c543a3a4d6f6d656e743e40982044697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e00450120506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e702074696d652d7374616d702077696c6c20626520757064617465642e00510120416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f72610120696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e791d012067656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e00550120496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e0030202320417267756d656e747380202a2060617460202d205265766f636174696f6e2074696d652d7374616d702e98202a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e5901202a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c2074686555012067656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d626572040c77686f284964656e746974794964143d0120416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e0030202320417267756d656e7473d4202a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74bc202a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d626572040c77686f284964656e7469747949642855012052656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e00450120416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725d0120696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e20697420697365012072656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564e020636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e0030202320417267756d656e7473e0202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74cc202a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d626572081872656d6f7665284964656e7469747949640c616464284964656e74697479496420e0205377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b8204d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e0030202320417267756d656e7473d8202a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d8202a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702edc202a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d62657273041c6d656d626572733c5665633c4964656e7469747949643e182d01204368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702ebc204d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e0030202320417267756d656e7473dc202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f7490202a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700028510120416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f20612047431820766f74652e0030202320417267756d656e7473d0202a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e00202023204572726f720084202a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea8202a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e011c2c4d656d626572416464656408284964656e746974794964284964656e74697479496408e42054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e702063616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408284964656e746974794964284964656e74697479496408ec2054686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea42063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408284964656e746974794964284964656e74697479496408e82054686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea42063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c284964656e746974794964284964656e746974794964284964656e74697479496408dc2054776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e982063616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408284964656e7469747949643c5665633c4964656e7469747949643e08190120546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e842063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c284964656e7469747949642c4d656d626572436f756e742c4d656d626572436f756e7404310120546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d7904bc73705f7374643a3a6d61726b65723a3a5068616e746f6d446174613c284163636f756e7449642c204576656e74293e0470205068616e746f6d206d656d6265722c206e6576657220757365642e001c544f6e6c795072696d6172794b6579416c6c6f77656404b4204f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d62657204802047726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d62657204a82043616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f745175697404ac204c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790450204d697373696e672063757272656e7420444944684163746976654d656d626572734c696d6974457863656564656404610120546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f7704190120416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e0a48546563686e6963616c436f6d6d69747465650148496e7374616e636533436f6d6d6974746565242450726f706f73616c730100305665633c543a3a486173683e040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001061c543a3a48617368843c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c00040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e670001061c543a3a4861736874506f6c796d657368566f7465733c543a3a426c6f636b4e756d6265723e00040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e7401000c753332100000000004482050726f706f73616c7320736f206661722e1c4d656d6265727301003c5665633c4964656e7469747949643e04000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c64010028287533322c2075333229200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f720000284964656e746974794964040004542052656c6561736520636f6f7264696e61746f722e304578706972657341667465720100684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0114487365745f766f74655f7468726573686f6c6408046e0c75333204640c75333218fc204368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e590120466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e0030202320417267756d656e7473fc202a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e0501202a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204086964284964656e7469747949641c84204368616e676573207468652072656c6561736520636f6f7264696e61746f722e0030202320417267756d656e7473c4202a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e00242023204572726f72732901202a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f61667465720418657870697279684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e10c4204368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e0030202320417267756d656e747388202a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f7365081c617070726f766510626f6f6c1063616c6c98426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e4419012050726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e610120416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c2101207468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00242023205765696768740031012054686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c65786974797c20666f72207265636f7264696e672074686520766f746520697473656c662e0030202320417267756d656e7473a4202a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f65012020204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb8202a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e00242023204572726f72733101202a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e0d01202a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c2070726f706f73616c1c543a3a4861736814696e6465783450726f706f73616c496e6465781c617070726f766510626f6f6c28a820566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d8206f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e0030202320417267756d656e7473d8202a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e80202a2060696e64657860202d205468652070726f706f73616c20696e6465782e3101202a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e00242023204572726f72730d01202a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e01282050726f706f7365640c284964656e7469747949643450726f706f73616c496e6465781048617368088d012041206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292edc20506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c284964656e7469747949643450726f706f73616c496e646578104861736810626f6f6c2c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c09012041206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674d0120612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e99012063616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410284964656e7469747949643450726f706f73616c496e646578104861736810626f6f6c08d0204120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e09012063616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314284964656e7469747949643450726f706f73616c496e64657810486173683c5665633c4964656e7469747949643e3c5665633c4964656e7469747949643e08942046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829fc2063616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414284964656e74697479496410486173682c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c0d012041206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e6745012074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e510120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414284964656e74697479496410486173682c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c0d012041206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e6745012074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e510120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c284964656e7469747949641048617368384469737061746368526573756c74083d012041206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e110120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408284964656e746974794964484f7074696f6e3c4964656e7469747949643e08982052656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642ee020506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408284964656e7469747949645c4d61796265426c6f636b3c426c6f636b4e756d6265723e089c2050726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec820506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c284964656e7469747949640c7533320c753332088820566f74696e67207468726573686f6c6420686173206265656e2075706461746564bc20506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f720024344475706c6963617465566f74650484204475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d626572088c2041204449442069736e27742070617274206f662074686520636f6d6d69747465652ed82054686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c0448204e6f20737563682070726f706f73616c2e3c50726f706f73616c4578706972656404942050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0450204475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e6465780464204d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e04982050726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a6563740c010120466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e050120416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222e010120546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d69745265616368656404b8204d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e0b70546563686e6963616c436f6d6d69747465654d656d626572736869700138496e7374616e63653347726f75700c344163746976654d656d6265727301003c5665633c4964656e7469747949643e040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100785665633c496e6163746976654d656d6265723c543a3a4d6f6d656e743e3e040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d697401000c753332100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e011c607365745f6163746976655f6d656d626572735f6c696d697404146c696d69742c4d656d626572436f756e74103901204368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e0030202320417267756d656e74731101202a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c0c77686f284964656e74697479496418657870697279444f7074696f6e3c543a3a4d6f6d656e743e086174444f7074696f6e3c543a3a4d6f6d656e743e40982044697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e00450120506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e702074696d652d7374616d702077696c6c20626520757064617465642e00510120416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f72610120696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e791d012067656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e00550120496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e0030202320417267756d656e747380202a2060617460202d205265766f636174696f6e2074696d652d7374616d702e98202a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e5901202a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c2074686555012067656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d626572040c77686f284964656e746974794964143d0120416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e0030202320417267756d656e7473d4202a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74bc202a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d626572040c77686f284964656e7469747949642855012052656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e00450120416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725d0120696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e20697420697365012072656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564e020636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e0030202320417267756d656e7473e0202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74cc202a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d626572081872656d6f7665284964656e7469747949640c616464284964656e74697479496420e0205377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b8204d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e0030202320417267756d656e7473d8202a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d8202a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702edc202a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d62657273041c6d656d626572733c5665633c4964656e7469747949643e182d01204368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702ebc204d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e0030202320417267756d656e7473dc202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f7490202a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700028510120416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f20612047431820766f74652e0030202320417267756d656e7473d0202a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e00202023204572726f720084202a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea8202a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e011c2c4d656d626572416464656408284964656e746974794964284964656e74697479496408e42054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e702063616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408284964656e746974794964284964656e74697479496408ec2054686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea42063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408284964656e746974794964284964656e74697479496408e82054686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea42063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c284964656e746974794964284964656e746974794964284964656e74697479496408dc2054776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e982063616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408284964656e7469747949643c5665633c4964656e7469747949643e08190120546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e842063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c284964656e7469747949642c4d656d626572436f756e742c4d656d626572436f756e7404310120546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d7904bc73705f7374643a3a6d61726b65723a3a5068616e746f6d446174613c284163636f756e7449642c204576656e74293e0470205068616e746f6d206d656d6265722c206e6576657220757365642e001c544f6e6c795072696d6172794b6579416c6c6f77656404b4204f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d62657204802047726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d62657204a82043616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f745175697404ac204c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790450204d697373696e672063757272656e7420444944684163746976654d656d626572734c696d6974457863656564656404610120546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f7704190120416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e0c4055706772616465436f6d6d69747465650148496e7374616e636534436f6d6d6974746565242450726f706f73616c730100305665633c543a3a486173683e040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001061c543a3a48617368843c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c00040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e670001061c543a3a4861736874506f6c796d657368566f7465733c543a3a426c6f636b4e756d6265723e00040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e7401000c753332100000000004482050726f706f73616c7320736f206661722e1c4d656d6265727301003c5665633c4964656e7469747949643e04000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c64010028287533322c2075333229200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f720000284964656e746974794964040004542052656c6561736520636f6f7264696e61746f722e304578706972657341667465720100684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0114487365745f766f74655f7468726573686f6c6408046e0c75333204640c75333218fc204368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e590120466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e0030202320417267756d656e7473fc202a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e0501202a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204086964284964656e7469747949641c84204368616e676573207468652072656c6561736520636f6f7264696e61746f722e0030202320417267756d656e7473c4202a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e00242023204572726f72732901202a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f61667465720418657870697279684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e10c4204368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e0030202320417267756d656e747388202a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f7365081c617070726f766510626f6f6c1063616c6c98426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e4419012050726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e610120416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c2101207468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00242023205765696768740031012054686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c65786974797c20666f72207265636f7264696e672074686520766f746520697473656c662e0030202320417267756d656e7473a4202a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f65012020204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb8202a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e00242023204572726f72733101202a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e0d01202a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c2070726f706f73616c1c543a3a4861736814696e6465783450726f706f73616c496e6465781c617070726f766510626f6f6c28a820566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d8206f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e0030202320417267756d656e7473d8202a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e80202a2060696e64657860202d205468652070726f706f73616c20696e6465782e3101202a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e00242023204572726f72730d01202a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e01282050726f706f7365640c284964656e7469747949643450726f706f73616c496e6465781048617368088d012041206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292edc20506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c284964656e7469747949643450726f706f73616c496e646578104861736810626f6f6c2c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c09012041206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674d0120612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e99012063616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410284964656e7469747949643450726f706f73616c496e646578104861736810626f6f6c08d0204120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e09012063616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314284964656e7469747949643450726f706f73616c496e64657810486173683c5665633c4964656e7469747949643e3c5665633c4964656e7469747949643e08942046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829fc2063616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414284964656e74697479496410486173682c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c0d012041206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e6745012074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e510120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414284964656e74697479496410486173682c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c0d012041206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e6745012074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e510120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c284964656e7469747949641048617368384469737061746368526573756c74083d012041206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e110120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408284964656e746974794964484f7074696f6e3c4964656e7469747949643e08982052656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642ee020506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408284964656e7469747949645c4d61796265426c6f636b3c426c6f636b4e756d6265723e089c2050726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec820506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c284964656e7469747949640c7533320c753332088820566f74696e67207468726573686f6c6420686173206265656e2075706461746564bc20506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f720024344475706c6963617465566f74650484204475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d626572088c2041204449442069736e27742070617274206f662074686520636f6d6d69747465652ed82054686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c0448204e6f20737563682070726f706f73616c2e3c50726f706f73616c4578706972656404942050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0450204475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e6465780464204d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e04982050726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a6563740c010120466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e050120416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222e010120546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d69745265616368656404b8204d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e0d6855706772616465436f6d6d69747465654d656d626572736869700138496e7374616e63653447726f75700c344163746976654d656d6265727301003c5665633c4964656e7469747949643e040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100785665633c496e6163746976654d656d6265723c543a3a4d6f6d656e743e3e040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d697401000c753332100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e011c607365745f6163746976655f6d656d626572735f6c696d697404146c696d69742c4d656d626572436f756e74103901204368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e0030202320417267756d656e74731101202a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c0c77686f284964656e74697479496418657870697279444f7074696f6e3c543a3a4d6f6d656e743e086174444f7074696f6e3c543a3a4d6f6d656e743e40982044697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e00450120506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e702074696d652d7374616d702077696c6c20626520757064617465642e00510120416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f72610120696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e791d012067656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e00550120496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e0030202320417267756d656e747380202a2060617460202d205265766f636174696f6e2074696d652d7374616d702e98202a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e5901202a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c2074686555012067656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d626572040c77686f284964656e746974794964143d0120416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e0030202320417267756d656e7473d4202a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74bc202a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d626572040c77686f284964656e7469747949642855012052656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e00450120416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725d0120696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e20697420697365012072656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564e020636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e0030202320417267756d656e7473e0202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74cc202a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d626572081872656d6f7665284964656e7469747949640c616464284964656e74697479496420e0205377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b8204d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e0030202320417267756d656e7473d8202a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d8202a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702edc202a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d62657273041c6d656d626572733c5665633c4964656e7469747949643e182d01204368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702ebc204d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e0030202320417267756d656e7473dc202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f7490202a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700028510120416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f20612047431820766f74652e0030202320417267756d656e7473d0202a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e00202023204572726f720084202a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea8202a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e011c2c4d656d626572416464656408284964656e746974794964284964656e74697479496408e42054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e702063616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408284964656e746974794964284964656e74697479496408ec2054686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea42063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408284964656e746974794964284964656e74697479496408e82054686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea42063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c284964656e746974794964284964656e746974794964284964656e74697479496408dc2054776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e982063616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408284964656e7469747949643c5665633c4964656e7469747949643e08190120546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e842063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c284964656e7469747949642c4d656d626572436f756e742c4d656d626572436f756e7404310120546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d7904bc73705f7374643a3a6d61726b65723a3a5068616e746f6d446174613c284163636f756e7449642c204576656e74293e0470205068616e746f6d206d656d6265722c206e6576657220757365642e001c544f6e6c795072696d6172794b6579416c6c6f77656404b4204f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d62657204802047726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d62657204a82043616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f745175697404ac204c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790450204d697373696e672063757272656e7420444944684163746976654d656d626572734c696d6974457863656564656404610120546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f7704190120416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e0e204d756c746953696701204d756c746953696730344d756c74695369674e6f6e636501000c753634200000000000000000042101204e6f6e636520746f20656e7375726520756e69717565204d756c746953696720616464726573736573206172652067656e6572617465643b207374617274732066726f6d20312e3c4d756c74695369675369676e65727301020630543a3a4163636f756e7449645c5369676e61746f72793c543a3a4163636f756e7449643e5c5369676e61746f72793c543a3a4163636f756e7449643e058400000000000000000000000000000000000000000000000000000000000000000004d4205369676e657273206f662061206d756c74697369672e20286d756c74697369672c207369676e657229203d3e207369676e65722e3c4e756d6265724f665369676e65727301010630543a3a4163636f756e7449640c7536340020000000000000000004cc204e756d626572206f6620617070726f7665642f6163636570746564207369676e657273206f662061206d756c74697369672e544d756c74695369675369676e73526571756972656401010630543a3a4163636f756e7449640c7536340020000000000000000004e020436f6e6669726d6174696f6e73207265717569726564206265666f72652070726f63657373696e672061206d756c74697369672074782e384d756c74695369675478446f6e6501010630543a3a4163636f756e7449640c75363400200000000000000000043501204e756d626572206f66207472616e73616374696f6e732070726f706f73656420696e2061206d756c74697369672e20557365642061732074782069643b207374617274732066726f6d20302e2450726f706f73616c730001054c28543a3a4163636f756e7449642c20753634292c543a3a50726f706f73616c0004000475012050726f706f73616c732070726573656e74656420666f7220766f74696e6720746f2061206d756c746973696720286d756c74697369672c2070726f706f73616c20696429203d3e204f7074696f6e3c543a3a50726f706f73616c3e2e2c50726f706f73616c49647300020630543a3a4163636f756e7449642c543a3a50726f706f73616c0c75363402040004942041206d617070696e67206f662070726f706f73616c7320746f207468656972204944732e14566f746573010105b028543a3a4163636f756e7449642c205369676e61746f72793c543a3a4163636f756e7449643e2c207536342910626f6f6c00040004250120496e646976696475616c206d756c7469736967207369676e657220766f7465732e20286d756c7469207369672c207369676e65722c2070726f706f73616c29203d3e20766f74652e344b6579546f4d756c746953696701010530543a3a4163636f756e74496430543a3a4163636f756e7449640080000000000000000000000000000000000000000000000000000000000000000004d4204d6170732061206d756c7469736967207365636f6e64617279206b657920746f2061206d756c746973696720616464726573732e484d756c7469536967546f4964656e7469747901010630543a3a4163636f756e744964284964656e7469747949640080000000000000000000000000000000000000000000000000000000000000000004a4204d6170732061206d756c7469736967206163636f756e7420746f20697473206964656e746974792e3850726f706f73616c44657461696c0101054c28543a3a4163636f756e7449642c20753634296850726f706f73616c44657461696c733c543a3a4d6f6d656e743e004c00000000000000000000000000000000000000047c2044657461696c73206f662061206d756c74697369672070726f706f73616c485472616e73616374696f6e56657273696f6e01000c753332100000000004f420546865206c617374207472616e73616374696f6e2076657273696f6e2c207573656420666f7220606f6e5f72756e74696d655f75706772616465602e014c3c6372656174655f6d756c7469736967081c7369676e657273705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e34736967735f72657175697265640c753634144c20437265617465732061206d756c74697369670030202320417267756d656e7473a901202a20607369676e65727360202d205369676e657273206f6620746865206d756c7469736967202854686579206e65656420746f2061636365707420617574686f72697a6174696f6e206265666f72652074686579206172652061637475616c6c79206164646564292e1d01202a2060736967735f726571756972656460202d204e756d626572206f66207369677320726571756972656420746f2070726f636573732061206d756c74692d7369672074782e986372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6964656e7469747910206d756c746973696730543a3a4163636f756e7449642070726f706f73616c40426f783c543a3a50726f706f73616c3e18657870697279444f7074696f6e3c543a3a4d6f6d656e743e286175746f5f636c6f736510626f6f6c20410120437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea0202a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eb0202a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e0901202a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e350120496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e846372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6b657910206d756c746973696730543a3a4163636f756e7449642070726f706f73616c40426f783c543a3a50726f706f73616c3e18657870697279444f7074696f6e3c543a3a4d6f6d656e743e286175746f5f636c6f736510626f6f6c20410120437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea0202a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eb0202a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e0901202a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e350120496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e6c6372656174655f70726f706f73616c5f61735f6964656e7469747910206d756c746973696730543a3a4163636f756e7449642070726f706f73616c40426f783c543a3a50726f706f73616c3e18657870697279444f7074696f6e3c543a3a4d6f6d656e743e286175746f5f636c6f736510626f6f6c207020437265617465732061206d756c74697369672070726f706f73616c0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea0202a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eb0202a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e0901202a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e350120496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e586372656174655f70726f706f73616c5f61735f6b657910206d756c746973696730543a3a4163636f756e7449642070726f706f73616c40426f783c543a3a50726f706f73616c3e18657870697279444f7074696f6e3c543a3a4d6f6d656e743e286175746f5f636c6f736510626f6f6c207020437265617465732061206d756c74697369672070726f706f73616c0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea0202a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eb0202a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e0901202a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e350120496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4c617070726f76655f61735f6964656e7469747908206d756c746973696730543a3a4163636f756e7449642c70726f706f73616c5f69640c75363418e820417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea8202a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e05012049662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e38617070726f76655f61735f6b657908206d756c746973696730543a3a4163636f756e7449642c70726f706f73616c5f69640c75363418350120417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea8202a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e05012049662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4872656a6563745f61735f6964656e7469747908206d756c746973696730543a3a4163636f756e7449642c70726f706f73616c5f69640c75363418e42052656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea4202a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e05012049662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e3472656a6563745f61735f6b657908206d756c746973696730543a3a4163636f756e7449642c70726f706f73616c5f69640c7536341831012052656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea4202a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e05012049662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e886163636570745f6d756c74697369675f7369676e65725f61735f6964656e74697479041c617574685f69640c75363410110120416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206964656e746974792e0030202320417267756d656e7473b0202a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e746163636570745f6d756c74697369675f7369676e65725f61735f6b6579041c617574685f69640c753634102d0120416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206b657920284163636f756e744964292e0030202320417267756d656e7473b0202a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e4c6164645f6d756c74697369675f7369676e657204187369676e65725c5369676e61746f72793c543a3a4163636f756e7449643e102d0120416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e0030202320417267756d656e74737c202a20607369676e657260202d205369676e61746f727920746f206164642e5872656d6f76655f6d756c74697369675f7369676e657204187369676e65725c5369676e61746f72793c543a3a4163636f756e7449643e1041012052656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e0030202320417267756d656e747388202a20607369676e657260202d205369676e61746f727920746f2072656d6f76652e806164645f6d756c74697369675f7369676e6572735f7669615f63726561746f7208206d756c746973696730543a3a4163636f756e7449641c7369676e657273705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e24490120416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f662074686528206d756c74697369672e0030202320417267756d656e7473a0202a20606d756c746973696760202d2041646472657373206f6620746865206d756c74692073696788202a20607369676e65727360202d205369676e61746f7269657320746f206164642e0024202320576569676874a820603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e2829608c72656d6f76655f6d756c74697369675f7369676e6572735f7669615f63726561746f7208206d756c746973696730543a3a4163636f756e7449641c7369676e657273705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e24902052656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672ef42054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865206d756c74697369672e0030202320417267756d656e7473a0202a20606d756c746973696760202d2041646472657373206f6620746865206d756c74697369672e94202a20607369676e65727360202d205369676e61746f7269657320746f2072656d6f76652e0024202320576569676874a820603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e282960506368616e67655f736967735f72657175697265640434736967735f72657175697265640c753634145101204368616e67657320746865206e756d626572206f66207369676e6174757265732072657175697265642062792061206d756c74697369672e2054686973206d7573742062652063616c6c65642062792074686544206d756c746973696720697473656c662e0030202320417267756d656e7473dc202a2060736967735f726571756972656460202d204e6577206e756d626572206f66207265717569726564207369676e6174757265732e506d616b655f6d756c74697369675f7369676e657204206d756c746973696730543a3a4163636f756e74496414510120416464732061206d756c74697369672061732061207369676e6572206f662063757272656e7420646964206966207468652063757272656e7420646964206973207468652063726561746f72206f662074686528206d756c74697369672e0030202320417267756d656e747384202a20606d756c746973696760202d206d756c7469207369672061646472657373546d616b655f6d756c74697369675f7072696d61727908206d756c746973696730543a3a4163636f756e744964506f7074696f6e616c5f6364645f617574685f69642c4f7074696f6e3c7536343e14610120416464732061206d756c746973696720617320746865207072696d617279206b6579206f66207468652063757272656e7420646964206966207468652063757272656e7420444944206973207468652063726561746f7244206f6620746865206d756c74697369672e0030202320417267756d656e747388202a20606d756c74695f73696760202d206d756c746920736967206164647265737368657865637574655f7363686564756c65645f70726f706f73616c10206d756c746973696730543a3a4163636f756e7449642c70726f706f73616c5f69640c753634306d756c74697369675f646964284964656e746974794964405f70726f706f73616c5f7765696768741857656967687404750120526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20666f7220657865637574696e67207363686564756c6564206d756c74697369672070726f706f73616c2e01303c4d756c74695369674372656174656414284964656e746974794964244163636f756e744964244163636f756e744964645665633c5369676e61746f72793c4163636f756e7449643e3e0c75363408b0204576656e7420656d6974746564206166746572206372656174696f6e206f662061206d756c74697369672e690120417267756d656e74733a2063616c6c6572204449442c206d756c746973696720616464726573732c207369676e657273202870656e64696e6720617070726f76616c292c207369676e6174757265732072657175697265642e3450726f706f73616c41646465640c284964656e746974794964244163636f756e7449640c753634089c204576656e7420656d697474656420616674657220616464696e6720612070726f706f73616c2eb820417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e4050726f706f73616c457865637574656410284964656e746974794964244163636f756e7449640c75363410626f6f6c08ac204576656e7420656d6974746564207768656e20612070726f706f73616c2069732065786563757465642ed820417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442c20726573756c742e4c4d756c74695369675369676e657241646465640c284964656e746974794964244163636f756e744964505369676e61746f72793c4163636f756e7449643e08a4204576656e7420656d6974746564207768656e2061207369676e61746f72792069732061646465642ebc20417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206164646564207369676e65722e604d756c74695369675369676e6572417574686f72697a65640c284964656e746974794964244163636f756e744964505369676e61746f72793c4163636f756e7449643e080d01204576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f727920697320617574686f72697a656420746f2062652061646465642ed020417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722e544d756c74695369675369676e657252656d6f7665640c284964656e746974794964244163636f756e744964505369676e61746f72793c4163636f756e7449643e08d0204576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f72792069732072656d6f7665642ec420417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2072656d6f766564207369676e65722e844d756c74695369675369676e61747572657352657175697265644368616e6765640c284964656e746974794964244163636f756e7449640c753634080501204576656e7420656d6974746564207768656e20746865206e756d626572206f66207265717569726564207369676e617475726573206973206368616e6765642ee820417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206e6577207265717569726564207369676e6174757265732e4050726f706f73616c417070726f76656410284964656e746974794964244163636f756e744964505369676e61746f72793c4163636f756e7449643e0c75363408b8204576656e7420656d6974746564207768656e207468652070726f706f73616c2067657420617070726f7665642e050120417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e5450726f706f73616c52656a656374696f6e566f746510284964656e746974794964244163636f756e744964505369676e61746f72793c4163636f756e7449643e0c753634081101204576656e7420656d6974746564207768656e206120766f7465206973206361737420696e206661766f72206f662072656a656374696e6720612070726f706f73616c2e050120417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e4050726f706f73616c52656a65637465640c284964656e746974794964244163636f756e7449640c75363408ac204576656e7420656d6974746564207768656e20612070726f706f73616c2069732072656a65637465642eb820417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e5c50726f706f73616c457865637574696f6e4661696c6564043444697370617463684572726f7204e8204576656e7420656d6974746564207768656e207468657265277320616e206572726f7220696e2070726f706f73616c20657865637574696f6e405363686564756c696e674661696c6564043444697370617463684572726f720478205363686564756c696e67206f662070726f706f73616c206661696c732e005c284364644d697373696e6704c820546865206d756c7469736967206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e3c50726f706f73616c4d697373696e670474205468652070726f706f73616c20646f6573206e6f742065786973742e344465636f64696e674572726f720448204d756c746973696720616464726573732e244e6f5369676e6572730430204e6f207369676e6572732e7452657175697265645369676e6174757265734f75744f66426f756e647304a420546f6f20666577206f7220746f6f206d616e79207265717569726564207369676e6174757265732e284e6f74415369676e65720438204e6f742061207369676e65722e384e6f537563684d756c74697369670448204e6f2073756368206d756c74697369672e404e6f74456e6f7567685369676e6572730450204e6f7420656e6f756768207369676e6572732e344e6f6e63654f766572666c6f7704482041206e6f6e6365206f766572666c6f772e30416c7265616479566f746564043c20416c726561647920766f7465642e38416c7265616479415369676e6572044820416c72656164792061207369676e65722e444661696c6564546f43686172676546656504a420436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e484964656e746974794e6f7443726561746f7204c4204964656e746974792070726f7669646564206973206e6f7420746865206d756c746973696727732063726561746f722e404368616e67654e6f74416c6c6f776564042901204368616e67696e67206d756c746973696720706172616d6574657273206e6f7420616c6c6f7765642073696e6365206d756c74697369672069732061207072696d617279206b65792e4c5369676e6572416c72656164794c696e6b6564041501205369676e657220697320616e206163636f756e74206b6579207468617420697320616c7265616479206173736f63696174656420776974682061206d756c74697369672e584d697373696e6743757272656e744964656e74697479045c2043757272656e7420444944206973206d697373696e67344e6f745072696d6172794b657904f8205468652066756e6374696f6e2063616e206f6e6c792062652063616c6c656420627920746865207072696d617279206b6579206f6620746865206469645c50726f706f73616c416c726561647952656a656374656404782050726f706f73616c207761732072656a6563746564206561726c6965723c50726f706f73616c4578706972656404542050726f706f73616c2068617320657870697265645c50726f706f73616c416c7265616479457865637574656404782050726f706f73616c20776173206578656375746564206561726c6965725c4d756c74697369674d697373696e674964656e7469747904a0204d756c7469736967206973206e6f7420617474616368656420746f20616e206964656e74697479404661696c6564546f5363686564756c65047c205363686564756c696e67206f6620612070726f706f73616c206661696c7338546f6f4d616e795369676e6572730470204d6f7265207369676e657273207468616e2072657175697265642e0f1842726964676501184272696467652828436f6e74726f6c6c6572010030543a3a4163636f756e7449648000000000000000000000000000000000000000000000000000000000000000000c410120546865206d756c7469736967206163636f756e74206f66207468652062726964676520636f6e74726f6c6c65722e205468652067656e65736973207369676e65727320616363657074207468656972450120617574686f72697a6174696f6e7320616e64206172652061626c6520746f206765742074686569722070726f706f73616c732064656c6976657265642e20546865206272696467652063726561746f729c207472616e736665727320736f6d6520504f4c5920746f207468656972206964656e746974792e3c427269646765547844657461696c7301020230543a3a4163636f756e7449640c75333278427269646765547844657461696c3c543a3a426c6f636b4e756d6265723e02d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000859012044657461696c73206f6620627269646765207472616e73616374696f6e73206964656e7469666965642077697468207061697273206f662074686520726563697069656e74206163636f756e7420616e64207468656820627269646765207472616e73616374696f6e206e6f6e63652e1441646d696e010030543a3a4163636f756e744964800000000000000000000000000000000000000000000000000000000000000000043c205468652061646d696e206b65792e1846726f7a656e010010626f6f6c040004bc2057686574686572206f72206e6f742074686520627269646765206f7065726174696f6e2069732066726f7a656e2e30467265657a6541646d696e7301010230543a3a4163636f756e74496410626f6f6c00040004090120467265657a65206272696467652061646d696e732e20205468657365206163636f756e74732063616e206f6e6c7920667265657a6520746865206272696467652e2054696d656c6f636b010038543a3a426c6f636b4e756d6265721000000000083d012054686520627269646765207472616e73616374696f6e2074696d656c6f636b20706572696f642c20696e20626c6f636b732c2073696e63652074686520616363657074616e6365206f66207468653101207472616e73616374696f6e2070726f706f73616c20647572696e67207768696368207468652061646d696e206b65792063616e20667265657a6520746865207472616e73616374696f6e2e2c4272696467654c696d69740100642842616c616e63652c20543a3a426c6f636b4e756d6265722950000000000000000000000000000000000000000008290120546865206d6178696d756d206e756d626572206f66206272696467656420504f4c595820706572206964656e746974792077697468696e20612073657420696e74657276616c206f66f820626c6f636b732e204669656c64733a20504f4c595820616d6f756e7420616e642074686520626c6f636b20696e74657276616c206475726174696f6e2e30506f6c797842726964676564010106284964656e746974794964642842616c616e63652c20543a3a426c6f636b4e756d626572290050000000000000000000000000000000000000000008510120416d6f756e74206f6620504f4c5958206272696467656420627920746865206964656e7469747920696e206c61737420626c6f636b20696e74657276616c2e204669656c64733a2074686520627269646765649420616d6f756e7420616e6420746865206c61737420696e74657276616c206e756d6265722e4c4272696467654c696d69744578656d70746564010105284964656e74697479496410626f6f6c00040004c0204964656e746974696573206e6f7420636f6e73747261696e65642062792074686520627269646765206c696d69742e3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0140446368616e67655f636f6e74726f6c6c65720428636f6e74726f6c6c657230543a3a4163636f756e74496410a4204368616e6765732074686520636f6e74726f6c6c6572206163636f756e742061732061646d696e2e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e306368616e67655f61646d696e041461646d696e30543a3a4163636f756e7449641078204368616e67657320746865206272696467652061646d696e206b65792e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e3c6368616e67655f74696d656c6f636b042074696d656c6f636b38543a3a426c6f636b4e756d6265721074204368616e676573207468652074696d656c6f636b20706572696f642e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e18667265657a650014610120467265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c65206966206974206973206e6f7420616c72656164792066726f7a656e2e205768656e207468654d01206272696467652069732066726f7a656e2c20617474656d70746564207472616e73616374696f6e732067657420706f7374706f6e656420696e7374656164206f662067657474696e672068616e646c65642e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e20756e667265657a650010150120556e667265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c652069662069742069732066726f7a656e2e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c6368616e67655f6272696467655f6c696d69740818616d6f756e741c42616c616e6365206475726174696f6e38543a3a426c6f636b4e756d626572146c204368616e6765732074686520627269646765206c696d6974732e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ea8202d20604469766973696f6e42795a65726f6020696620606475726174696f6e60206973207a65726f2e586368616e67655f6272696467655f6578656d7074656404206578656d707465645c5665633c284964656e7469747949642c20626f6f6c293e10a0204368616e6765732074686520627269646765206c696d6974206578656d70746564206c6973742e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e58666f7263655f68616e646c655f6272696467655f747804246272696467655f74785842726964676554783c543a3a4163636f756e7449643e14290120466f726365732068616e646c696e672061207472616e73616374696f6e20627920627970617373696e672074686520627269646765206c696d697420616e642074696d656c6f636b2e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e2501202d20604e6f56616c69644364646020696620606272696467655f74782e726563697069656e746020646f6573206e6f74206861766520612076616c69642043444420636c61696d2e5c62617463685f70726f706f73655f6272696467655f747804286272696467655f7478736c5665633c42726964676554783c543a3a4163636f756e7449643e3e2449012050726f706f736573206120766563746f72206f6620627269646765207472616e73616374696f6e732e2054686520766563746f722069732070726f63657373656420756e74696c2074686520666972737451012070726f706f73616c2077686963682063617573657320616e206572726f722c20696e207768696368206361736520746865206572726f722069732072657475726e656420616e64207468652072657374206f66742070726f706f73616c7320617265206e6f742070726f6365737365642e0028202323204572726f7273cc202d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e0024202320576569676874b420603530305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829604470726f706f73655f6272696467655f747804246272696467655f74785842726964676554783c543a3a4163636f756e7449643e184d012050726f706f736573206120627269646765207472616e73616374696f6e2c20776869636820616d6f756e747320746f206d616b696e672061206d756c74697369672070726f706f73616c20666f7220746865590120627269646765207472616e73616374696f6e20696620746865207472616e73616374696f6e206973206e6577206f7220617070726f76696e6720616e206578697374696e672070726f706f73616c206966207468659c207472616e73616374696f6e2068617320616c7265616479206265656e2070726f706f7365642e0028202323204572726f7273cc202d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e4068616e646c655f6272696467655f747804246272696467655f74785842726964676554783c543a3a4163636f756e7449643e18c42048616e646c657320616e20617070726f76656420627269646765207472616e73616374696f6e2070726f706f73616c2e0028202323204572726f72731d01202d206042616443616c6c65726020696620606f726967696e60206973206e6f74206053656c663a3a636f6e74726f6c6c657260206f7220206053656c663a3a61646d696e602ef0202d206054696d656c6f636b656454786020696620746865207472616e73616374696f6e20737461747573206973206054696d656c6f636b6564602e0d01202d206050726f706f73616c416c726561647948616e646c65646020696620746865207472616e73616374696f6e20737461747573206973206048616e646c6564602e28667265657a655f74787304286272696467655f7478736c5665633c42726964676554783c543a3a4163636f756e7449643e3e208c20467265657a657320676976656e20627269646765207472616e73616374696f6e732e890120496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e0024202320576569676874b420603430305f3030305f303030202b20325f3030305f303030202a206272696467655f7478732e6c656e28296030756e667265657a655f74787304286272696467655f7478736c5665633c42726964676554783c543a3a4163636f756e7449643e3e209420556e667265657a657320676976656e20627269646765207472616e73616374696f6e732e890120496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e0024202320576569676874b420603430305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829606868616e646c655f7363686564756c65645f6272696467655f747804246272696467655f74785842726964676554783c543a3a4163636f756e7449643e189d0120526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f2068616e646c652061207363686564756c65642074696d656c6f636b656420627269646765207472616e73616374696f6e2e00242023204572726f72739c202d20604261644f726967696e6020696620606f726967696e60206973206e6f7420726f6f742efc202d206050726f706f73616c416c726561647948616e646c656460206966207472616e73616374696f6e20737461747573206973206048616e646c6564602ec0202d206046726f7a656e547860206966207472616e73616374696f6e20737461747573206973206046726f7a656e602e406164645f667265657a655f61646d696e0430667265657a655f61646d696e30543a3a4163636f756e744964105020416464206120667265657a652061646d696e2e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c72656d6f76655f667265657a655f61646d696e0430667265657a655f61646d696e30543a3a4163636f756e744964105c2052656d6f7665206120667265657a652061646d696e2e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e013c44436f6e74726f6c6c65724368616e67656408284964656e746974794964244163636f756e744964049420436f6e6669726d6174696f6e206f662061207369676e657220736574206368616e67652e3041646d696e4368616e67656408284964656e746974794964244163636f756e744964047820436f6e6669726d6174696f6e206f662041646d696e206368616e67652e3c54696d656c6f636b4368616e67656408284964656e7469747949642c426c6f636b4e756d62657204a420436f6e6669726d6174696f6e206f662064656661756c742074696d656c6f636b206368616e67652e1c4272696467656408284964656e7469747949644c42726964676554783c4163636f756e7449643e04210120436f6e6669726d6174696f6e206f6620504f4c59582075706772616465206f6e20506f6c796d6573682066726f6d20504f4c5920746f6b656e73206f6e20457468657265756d2e1846726f7a656e04284964656e7469747949640494204e6f74696669636174696f6e206f6620667265657a696e6720746865206272696467652e20556e66726f7a656e04284964656e746974794964049c204e6f74696669636174696f6e206f6620756e667265657a696e6720746865206272696467652e2046726f7a656e547808284964656e7469747949644c42726964676554783c4163636f756e7449643e04a0204e6f74696669636174696f6e206f6620667265657a696e672061207472616e73616374696f6e2e28556e66726f7a656e547808284964656e7469747949644c42726964676554783c4163636f756e7449643e04a8204e6f74696669636174696f6e206f6620756e667265657a696e672061207472616e73616374696f6e2e3c4578656d70746564557064617465640c284964656e746974794964284964656e74697479496410626f6f6c04c8204578656d7074696f6e20737461747573206f6620616e206964656e7469747920686173206265656e20757064617465642e484272696467654c696d6974557064617465640c284964656e7469747949641c42616c616e63652c426c6f636b4e756d626572047c20427269646765206c696d697420686173206265656e20757064617465642e2854787348616e646c656404985665633c284163636f756e7449642c207533322c2048616e646c65645478537461747573293e08650120416e206576656e7420656d6974746564206166746572206120766563746f72206f66207472616e73616374696f6e732069732068616e646c65642e2054686520706172616d65746572206973206120766563746f72206f665501207475706c6573206f6620726563697069656e74206163636f756e742c20697473206e6f6e63652c20616e642074686520737461747573206f66207468652070726f636573736564207472616e73616374696f6e2e4442726964676554785363686564756c65640c284964656e7469747949644c42726964676554783c4163636f756e7449643e2c426c6f636b4e756d626572045420427269646765205478205363686564756c65642e5842726964676554785363686564756c654661696c65640c284964656e7469747949644c42726964676554783c4163636f756e7449643e1c5665633c75383e0478204661696c656420746f207363686564756c65204272696467652054782e40467265657a6541646d696e416464656408284964656e746974794964244163636f756e744964048c2041206e657720667265657a652061646d696e20686173206265656e2061646465642e48467265657a6541646d696e52656d6f76656408284964656e746974794964244163636f756e7449640484204120667265657a652061646d696e20686173206265656e2072656d6f7665642e003440436f6e74726f6c6c65724e6f7453657404a8205468652062726964676520636f6e74726f6c6c65722061646472657373206973206e6f74207365742e2442616443616c6c657204dc20546865206f726967696e206973206e6f742074686520636f6e74726f6c6c6572206f72207468652061646d696e20616464726573732e2042616441646d696e049420546865206f726967696e206973206e6f74207468652061646d696e20616464726573732e284e6f56616c696443646404902054686520726563697069656e742044494420686173206e6f2076616c6964204344442e5850726f706f73616c416c726561647948616e646c6564043d012054686520627269646765207472616e73616374696f6e2070726f706f73616c2068617320616c7265616479206265656e2068616e646c656420616e64207468652066756e6473206d696e7465642e30556e617574686f72697a6564049820556e617574686f72697a656420746f20706572666f726d20616e206f7065726174696f6e2e1846726f7a656e0478205468652062726964676520697320616c72656164792066726f7a656e2e244e6f7446726f7a656e04682054686520627269646765206973206e6f742066726f7a656e2e2046726f7a656e5478046c20546865207472616e73616374696f6e2069732066726f7a656e2e484272696467654c696d69745265616368656404e820546865206964656e746974792773206d696e74656420746f74616c2068617320726561636865642074686520627269646765206c696d69742e204f766572666c6f7704b020546865206964656e746974792773206d696e74656420746f74616c20686173206f766572666c6f7765642e384469766973696f6e42795a65726f04d02054686520626c6f636b20696e74657276616c206475726174696f6e206973207a65726f2e2043616e6e6f74206469766964652e3054696d656c6f636b65645478047c20546865207472616e73616374696f6e2069732074696d656c6f636b65642e101c5374616b696e67011c5374616b696e679c30486973746f7279446570746801000c75333210540000001c8c204e756d626572206f66206572617320746f206b65657020696e20686973746f72792e00390120496e666f726d6174696f6e206973206b65707420666f72206572617320696e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e006101204d757374206265206d6f7265207468616e20746865206e756d626572206f6620657261732064656c617965642062792073657373696f6e206f74686572776973652e20492e652e2061637469766520657261206d757374390120616c7761797320626520696e20686973746f72792e20492e652e20606163746976655f657261203e2063757272656e745f657261202d20686973746f72795f646570746860206d757374206265302067756172616e746565642e3856616c696461746f72436f756e7401000c753332100000000004a82054686520696465616c206e756d626572206f66207374616b696e67207061727469636970616e74732e544d696e696d756d56616c696461746f72436f756e7401000c7533321000000000044101204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e34496e76756c6e657261626c65730100445665633c543a3a4163636f756e7449643e04000c590120416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e636520746865792772654d01206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f7572ac20696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e18426f6e64656400010530543a3a4163636f756e74496430543a3a4163636f756e744964000400040101204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e184c656467657200010230543a3a4163636f756e744964a45374616b696e674c65646765723c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e000400044501204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e14506179656501010530543a3a4163636f756e7449647c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e00040004e42057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e2856616c696461746f727301010530543a3a4163636f756e7449643856616c696461746f7250726566730008000004450120546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e284e6f6d696e61746f727300010530543a3a4163636f756e744964644e6f6d696e6174696f6e733c543a3a4163636f756e7449643e00040004650120546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f2074686520736574206f66207374617368206b657973206f6620616c6c2076616c696461746f727320746f206e6f6d696e6174652e2843757272656e74457261000020457261496e6465780400105c205468652063757272656e742065726120696e6465782e006501205468697320697320746865206c617465737420706c616e6e6564206572612c20646570656e64696e67206f6e20686f77207468652053657373696f6e2070616c6c657420717565756573207468652076616c696461746f7280207365742c206974206d6967687420626520616374697665206f72206e6f742e24416374697665457261000034416374697665457261496e666f040010d820546865206163746976652065726120696e666f726d6174696f6e2c20697420686f6c647320696e64657820616e642073746172742e0059012054686520616374697665206572612069732074686520657261206265696e672063757272656e746c792072657761726465642e2056616c696461746f7220736574206f66207468697320657261206d757374206265ac20657175616c20746f205b6053657373696f6e496e746572666163653a3a76616c696461746f7273605d2e5445726173537461727453657373696f6e496e64657800010520457261496e6465783053657373696f6e496e646578000400103101205468652073657373696f6e20696e646578206174207768696368207468652065726120737461727420666f7220746865206c6173742060484953544f52595f44455054486020657261732e006101204e6f74653a205468697320747261636b7320746865207374617274696e672073657373696f6e2028692e652e2073657373696f6e20696e646578207768656e20657261207374617274206265696e672061637469766529f020666f7220746865206572617320696e20605b43757272656e74457261202d20484953544f52595f44455054482c2043757272656e744572615d602e2c457261735374616b65727301020520457261496e64657830543a3a4163636f756e744964904578706f737572653c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e050c0000001878204578706f73757265206f662076616c696461746f72206174206572612e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e48457261735374616b657273436c697070656401020520457261496e64657830543a3a4163636f756e744964904578706f737572653c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e050c0000002c9820436c6970706564204578706f73757265206f662076616c696461746f72206174206572612e00590120546869732069732073696d696c617220746f205b60457261735374616b657273605d20627574206e756d626572206f66206e6f6d696e61746f7273206578706f736564206973207265647563656420746f20746865dc2060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732e1d0120284e6f74653a20746865206669656c642060746f74616c6020616e6420606f776e60206f6620746865206578706f737572652072656d61696e7320756e6368616e676564292ef42054686973206973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e005d012054686973206973206b657965642066697374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e484572617356616c696461746f72507265667301020520457261496e64657830543a3a4163636f756e7449643856616c696461746f725072656673050800001411012053696d696c617220746f2060457261735374616b657273602c207468697320686f6c64732074686520707265666572656e636573206f662076616c696461746f72732e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4c4572617356616c696461746f7252657761726400010520457261496e6465783042616c616e63654f663c543e0004000c09012054686520746f74616c2076616c696461746f7220657261207061796f757420666f7220746865206c6173742060484953544f52595f44455054486020657261732e0021012045726173207468617420686176656e27742066696e697368656420796574206f7220686173206265656e2072656d6f76656420646f65736e27742068617665207265776172642e4045726173526577617264506f696e747301010520457261496e64657874457261526577617264506f696e74733c543a3a4163636f756e7449643e0014000000000008ac205265776172647320666f7220746865206c6173742060484953544f52595f44455054486020657261732e250120496620726577617264206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207265776172642069732072657475726e65642e3845726173546f74616c5374616b6501010520457261496e6465783042616c616e63654f663c543e00400000000000000000000000000000000008ec2054686520746f74616c20616d6f756e74207374616b656420666f7220746865206c6173742060484953544f52595f44455054486020657261732e1d0120496620746f74616c206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207374616b652069732072657475726e65642e20466f72636545726101001c466f7263696e6704000454204d6f6465206f662065726120666f7263696e672e4c536c6173685265776172644672616374696f6e01001c50657262696c6c10000000000cf8205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e00e4205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e4c43616e63656c6564536c6173685061796f757401003042616c616e63654f663c543e40000000000000000000000000000000000815012054686520616d6f756e74206f662063757272656e637920676976656e20746f207265706f7274657273206f66206120736c617368206576656e7420776869636820776173ec2063616e63656c65642062792065787472616f7264696e6172792063697263756d7374616e6365732028652e672e20676f7665726e616e6365292e40556e6170706c696564536c617368657301010520457261496e646578bc5665633c556e6170706c696564536c6173683c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e3e00040004c420416c6c20756e6170706c69656420736c61736865732074686174206172652071756575656420666f72206c617465722e28426f6e646564457261730100745665633c28457261496e6465782c2053657373696f6e496e646578293e04001025012041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e00c8204d75737420636f6e7461696e7320696e666f726d6174696f6e20666f72206572617320666f72207468652072616e67653abc20605b6163746976655f657261202d20626f756e64696e675f6475726174696f6e3b206163746976655f6572615d604c56616c696461746f72536c617368496e45726100020520457261496e64657830543a3a4163636f756e7449645c2850657262696c6c2c2042616c616e63654f663c543e2905040008450120416c6c20736c617368696e67206576656e7473206f6e2076616c696461746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682070726f706f7274696f6e7020616e6420736c6173682076616c7565206f6620746865206572612e4c4e6f6d696e61746f72536c617368496e45726100020520457261496e64657830543a3a4163636f756e7449643042616c616e63654f663c543e05040004610120416c6c20736c617368696e67206576656e7473206f6e206e6f6d696e61746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682076616c7565206f6620746865206572612e34536c617368696e675370616e7300010530543a3a4163636f756e7449645c736c617368696e673a3a536c617368696e675370616e73000400048c20536c617368696e67207370616e7320666f72207374617368206163636f756e74732e245370616e536c6173680101058c28543a3a4163636f756e7449642c20736c617368696e673a3a5370616e496e6465782988736c617368696e673a3a5370616e5265636f72643c42616c616e63654f663c543e3e00800000000000000000000000000000000000000000000000000000000000000000083d01205265636f72647320696e666f726d6174696f6e2061626f757420746865206d6178696d756d20736c617368206f6620612073746173682077697468696e206120736c617368696e67207370616e2cb82061732077656c6c20617320686f77206d7563682072657761726420686173206265656e2070616964206f75742e584561726c69657374556e6170706c696564536c617368000020457261496e646578040004fc20546865206561726c696573742065726120666f72207768696368207765206861766520612070656e64696e672c20756e6170706c69656420736c6173682e48536e617073686f7456616c696461746f72730000445665633c543a3a4163636f756e7449643e040008650120536e617073686f74206f662076616c696461746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e48536e617073686f744e6f6d696e61746f72730000445665633c543a3a4163636f756e7449643e040008650120536e617073686f74206f66206e6f6d696e61746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e34517565756564456c65637465640000a8456c656374696f6e526573756c743c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e04000c650120546865206e6578742076616c696461746f72207365742e2041742074686520656e64206f6620616e206572612c206966207468697320697320617661696c61626c652028706f74656e7469616c6c792066726f6d20746865610120726573756c74206f6620616e206f6666636861696e20776f726b6572292c20697420697320696d6d6564696174656c7920757365642e204f74686572776973652c20746865206f6e2d636861696e20656c656374696f6e342069732065786563757465642e2c51756575656453636f7265000034456c656374696f6e53636f7265040004b0205468652073636f7265206f66207468652063757272656e74205b60517565756564456c6563746564605d2e44457261456c656374696f6e537461747573010078456c656374696f6e5374617475733c543a3a426c6f636b4e756d6265723e040008490120466c616720746f20636f6e74726f6c2074686520657865637574696f6e206f6620746865206f6666636861696e20656c656374696f6e2e205768656e20604f70656e285f29602c207765206163636570746c20736f6c7574696f6e7320746f206265207375626d69747465642e54497343757272656e7453657373696f6e46696e616c010010626f6f6c0400084d012054727565206966207468652063757272656e74202a2a706c616e6e65642a2a2073657373696f6e2069732066696e616c2e204e6f74652074686174207468697320646f6573206e6f742074616b65206572615820666f7263696e6720696e746f206163636f756e742e505065726d697373696f6e65644964656e74697479000105284964656e746974794964645065726d697373696f6e65644964656e74697479507265667300040004ec20456e74697469657320746861742061726520616c6c6f77656420746f2072756e206f70657261746f722f76616c696461746f72206e6f6465732e5856616c696461746f72436f6d6d697373696f6e43617001001c50657262696c6c10000000000415012045766572792076616c696461746f722068617320636f6d6d697373696f6e20746861742073686f756c6420626520696e207468652072616e6765205b302c204361705d2e504d696e696d756d426f6e645468726573686f6c6401003042616c616e63654f663c543e400000000000000000000000000000000004d020546865206d696e696d756d20616d6f756e74207769746820776869636820612076616c696461746f722063616e20626f6e642e48536c617368696e67416c6c6f776564466f72010038536c617368696e675377697463680402003853746f7261676556657273696f6e01002052656c6561736573040610cc2054727565206966206e6574776f726b20686173206265656e20757067726164656420746f20746869732076657273696f6e2e7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e00a020546869732069732073657420746f2076362e302e3120666f72206e6577206e6574776f726b732e018010626f6e640c28636f6e74726f6c6c65728c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263651476616c756554436f6d706163743c42616c616e63654f663c543e3e1470617965657c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e6865012054616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c8420626520746865206163636f756e74207468617420636f6e74726f6c732069742e003101206076616c756560206d757374206265206d6f7265207468616e2074686520606d696e696d756d5f62616c616e636560207370656369666965642062792060543a3a43757272656e6379602e00250120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e004020456d6974732060426f6e646564602e002c2023203c7765696768743ed4202d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e20202d204f2831292e68202d20546872656520657874726120444220656e74726965732e005101204e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e6564410120756e6c6573732074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e4c202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d34205765696768743a204f2831292c204442205765696768743a3101202d20526561643a20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c2043757272656e74204572612c20486973746f72792044657074682c204c6f636b73e0202d2057726974653a20426f6e6465642c2050617965652c205b4f726967696e204163636f756e745d2c204c6f636b732c204c6564676572302023203c2f7765696768743e30202320417267756d656e7473c8202a206f726967696e205374617368206163636f756e7420287369676e6572206f66207468652065787472696e736963292eec202a20636f6e74726f6c6c6572204163636f756e74207468617420636f6e74726f6c7320746865206f7065726174696f6e206f662073746173682ed4202a2070617965652044657374696e6174696f6e207768657265207265776172642063616e206265207472616e736665727265642e28626f6e645f657874726104386d61785f6164646974696f6e616c54436f6d706163743c42616c616e63654f663c543e3e6465012041646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e63652075703420666f72207374616b696e672e00510120557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e650120556e6c696b65205b60626f6e64605d206f72205b60756e626f6e64605d20746869732066756e6374696f6e20646f6573206e6f7420696d706f736520616e79206c696d69746174696f6e206f6e2074686520616d6f756e744c20746861742063616e2062652061646465642e00610120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c657220616e64f82069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e004020456d6974732060426f6e646564602e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e20202d204f2831292e40202d204f6e6520444220656e7472792e34202d2d2d2d2d2d2d2d2d2d2d2d2c204442205765696768743a1501202d20526561643a2045726120456c656374696f6e205374617475732c20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c204c6f636b73a4202d2057726974653a205b4f726967696e204163636f756e745d2c204c6f636b732c204c6564676572302023203c2f7765696768743e0030202320417267756d656e7473c8202a206f726967696e205374617368206163636f756e7420287369676e6572206f66207468652065787472696e736963292ed8202a206d61785f6164646974696f6e616c20457874726120616d6f756e742074686174206e65656420746f20626520626f6e6465642e18756e626f6e64041476616c756554436f6d706163743c42616c616e63654f663c543e3e905501205363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e64010120706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e250120543a3a43757272656e63793a3a6d696e696d756d5f62616c616e636528292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e004901204f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c20796f752063616e2063616c6c206077697468647261775f756e626f6e6465646020746f2061637475616c6c79206d6f7665c0207468652066756e6473206f7574206f66206d616e6167656d656e7420726561647920666f72207472616e736665722e003d01204e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d41585f554e4c4f434b494e475f4348554e4b5360293d012063616e20636f2d657869737473206174207468652073616d652074696d652e20496e207468617420636173652c205b6043616c6c3a3a77697468647261775f756e626f6e646564605d206e656564fc20746f2062652063616c6c656420666972737420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0d0120416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e004820456d6974732060556e626f6e646564602e00982053656520616c736f205b6043616c6c3a3a77697468647261775f756e626f6e646564605d2e002c2023203c7765696768743e4101202d20496e646570656e64656e74206f662074686520617267756d656e74732e204c696d697465642062757420706f74656e7469616c6c79206578706c6f697461626c6520636f6d706c65786974792e98202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732e6501202d20456163682063616c6c20287265717569726573207468652072656d61696e646572206f662074686520626f6e6465642062616c616e636520746f2062652061626f766520606d696e696d756d5f62616c616e63656029710120202077696c6c2063617573652061206e657720656e74727920746f20626520696e73657274656420696e746f206120766563746f722028604c65646765722e756e6c6f636b696e676029206b65707420696e2073746f726167652e5101202020546865206f6e6c792077617920746f20636c65616e207468652061666f72656d656e74696f6e65642073746f72616765206974656d20697320616c736f20757365722d636f6e74726f6c6c6564207669615c2020206077697468647261775f756e626f6e646564602e40202d204f6e6520444220656e7472792e2c202d2d2d2d2d2d2d2d2d2d34205765696768743a204f2831292c204442205765696768743a2501202d20526561643a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e744572612c204c6f636b732c205c5b4f726967696e204163636f756e745c5dac202d2057726974653a204c6f636b732c204c65646765722c205c5b4f726967696e204163636f756e745c5d28203c2f7765696768743e0030202320417267756d656e7473bc202a206f726967696e20436f6e74726f6c6c657220285369676e6572206f66207468652065787472696e736963292e98202a2076616c75652042616c616e6365206e6565647320746f20626520756e626f6e6465642e4477697468647261775f756e626f6e64656404486e756d5f736c617368696e675f7370616e730c753332742d012052656d6f766520616e7920756e6c6f636b6564206368756e6b732066726f6d207468652060756e6c6f636b696e67602071756575652066726f6d206f7572206d616e6167656d656e742e003501205468697320657373656e7469616c6c7920667265657320757020746861742062616c616e636520746f206265207573656420627920746865207374617368206163636f756e7420746f20646f4c2077686174657665722069742077616e74732e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0d0120416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e004c20456d697473206057697468647261776e602e006c2053656520616c736f205b6043616c6c3a3a756e626f6e64605d2e002c2023203c7765696768743e5501202d20436f756c6420626520646570656e64656e74206f6e2074686520606f726967696e6020617267756d656e7420616e6420686f77206d7563682060756e6c6f636b696e6760206368756e6b732065786973742e45012020497420696d706c6965732060636f6e736f6c69646174655f756e6c6f636b656460207768696368206c6f6f7073206f76657220604c65646765722e756e6c6f636b696e67602c207768696368206973f42020696e6469726563746c7920757365722d636f6e74726f6c6c65642e20536565205b60756e626f6e64605d20666f72206d6f72652064657461696c2e7901202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732c20796574207468652073697a65206f6620776869636820636f756c64206265206c61726765206261736564206f6e20606c6564676572602ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e40202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d090120436f6d706c6578697479204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2072656d6f766520205570646174653a2501202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c204c6f636b732c205b4f726967696e204163636f756e745da8202d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c656467657218204b696c6c3a8d01202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c20426f6e6465642c20536c617368696e67205370616e732c205c5b4f726967696e204163636f756e745c5d2c204c6f636b73b101202d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c205b4f726967696e204163636f756e745d2c204c6f636b7374202d2057726974657320456163683a205370616e536c617368202a20530d01204e4f54453a2057656967687420616e6e6f746174696f6e20697320746865206b696c6c207363656e6172696f2c20776520726566756e64206f74686572776973652e302023203c2f7765696768743e2076616c6964617465041470726566733856616c696461746f72507265667344e8204465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e00dc20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0d0120416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e98202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e30202d2d2d2d2d2d2d2d2d2d2d34205765696768743a204f2831292c204442205765696768743a90202d20526561643a2045726120456c656374696f6e205374617475732c204c656467657280202d2057726974653a204e6f6d696e61746f72732c2056616c696461746f7273302023203c2f7765696768743e206e6f6d696e617465041c74617267657473a05665633c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e4c1101204465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e00510120456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e20546869732063616e206f6e6c792062652063616c6c6564207768656e8c205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0d0120416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002c2023203c7765696768743e3101202d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f662060746172676574736020284e2901012077686963682069732063617070656420617420436f6d7061637441737369676e6d656e74733a3a4c494d495420284d41585f4e4f4d494e4154494f4e53292ed8202d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e28202d2d2d2d2d2d2d2d2d34205765696768743a204f284e2984207768657265204e20697320746865206e756d626572206f6620746172676574732c204442205765696768743ac8202d2052656164733a2045726120456c656374696f6e205374617475732c204c65646765722c2043757272656e742045726184202d205772697465733a2056616c696461746f72732c204e6f6d696e61746f7273302023203c2f7765696768743e146368696c6c0044c8204465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e00dc20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0d0120416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e54202d20436f6e7461696e73206f6e6520726561642ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e24202d2d2d2d2d2d2d2d34205765696768743a204f2831292c204442205765696768743a88202d20526561643a20457261456c656374696f6e5374617475732c204c656467657280202d2057726974653a2056616c696461746f72732c204e6f6d696e61746f7273302023203c2f7765696768743e247365745f7061796565041470617965657c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e40b8202852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e00dc20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e98202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e28202d2d2d2d2d2d2d2d2d3c202d205765696768743a204f28312934202d204442205765696768743a4c20202020202d20526561643a204c65646765724c20202020202d2057726974653a205061796565302023203c2f7765696768743e387365745f636f6e74726f6c6c65720428636f6e74726f6c6c65728c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263654090202852652d297365742074686520636f6e74726f6c6c6572206f6620612073746173682e00dc20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e98202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e2c202d2d2d2d2d2d2d2d2d2d34205765696768743a204f2831292c204442205765696768743af4202d20526561643a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c6572f8202d2057726974653a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c6572302023203c2f7765696768743e4c7365745f76616c696461746f725f636f756e74040c6e657730436f6d706163743c7533323e209420536574732074686520696465616c206e756d626572206f662076616c696461746f72732e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743e34205765696768743a204f2831295c2057726974653a2056616c696461746f7220436f756e74302023203c2f7765696768743e60696e6372656173655f76616c696461746f725f636f756e7404286164646974696f6e616c30436f6d706163743c7533323e1cac20496e6372656d656e74732074686520696465616c206e756d626572206f662076616c696461746f72732e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743e842053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e302023203c2f7765696768743e547363616c655f76616c696461746f725f636f756e740418666163746f721c50657263656e741cd4205363616c652075702074686520696465616c206e756d626572206f662076616c696461746f7273206279206120666163746f722e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743e842053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e302023203c2f7765696768743e686164645f7065726d697373696f6e65645f76616c696461746f7208206964656e74697479284964656e74697479496438696e74656e6465645f636f756e742c4f7074696f6e3c7533323e20410120476f7665726e616e636520636f6d6d6974746565206f6e20322f3320726473206d616a6f726974792063616e20696e74726f647563652061206e657720706f74656e7469616c206964656e74697479a10120746f2074686520706f6f6c206f66207065726d697373696f6e656420656e7469746965732077686f2063616e2072756e2076616c696461746f72732e205374616b696e67206d6f64756c65207573657320605065726d697373696f6e65644964656e7469747960590120746f20656e737572652076616c696461746f7273206861766520636f6d706c65746564204b594220636f6d706c69616e636520616e6420636f6e736964657273207468656d20666f722076616c69646174696f6e2e0030202320417267756d656e7473ec202a206f726967696e205265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e8c202a206964656e746974792056616c696461746f722773204964656e7469747949642e0901202a20696e74656e6465645f636f756e74204e6f2e206f662076616c696461746f727320676976656e206964656e7469747920696e74656e647320746f2072756e2e7472656d6f76655f7065726d697373696f6e65645f76616c696461746f7204206964656e74697479284964656e7469747949641cad012052656d6f766520616e206964656e746974792066726f6d2074686520706f6f6c206f66202877616e6e616265292076616c696461746f72206964656e7469746965732e204566666563747320617265206b6e6f776e20696e20746865206e6578742073657373696f6e2e1d01205374616b696e67206d6f64756c6520636865636b7320605065726d697373696f6e65644964656e746974796020746f20656e737572652076616c696461746f727320686176656420636f6d706c65746564204b594220636f6d706c69616e63650030202320417267756d656e7473f4202a206f726967696e205265717569726564206f726967696e20666f722072656d6f76696e67206120706f74656e7469616c2076616c696461746f722e8c202a206964656e746974792056616c696461746f722773204964656e7469747949642e7876616c69646174655f6364645f6578706972795f6e6f6d696e61746f7273041c74617267657473445665633c543a3a4163636f756e7449643e28a42056616c696461746520746865206e6f6d696e61746f727320434444206578706972792074696d652e00f420496620616e206163636f756e742066726f6d206120676976656e20736574206f662061646472657373206973206e6f6d696e6174696e67207468656ed420636865636b2074686520434444206578706972792074696d65206f6620697420616e6420696620697420697320657870697265643501207468656e20746865206163636f756e742073686f756c6420626520756e626f6e64656420616e642072656d6f7665642066726f6d20746865206e6f6d696e6174696e672070726f636573732e002820233c7765696768743e9c202d20446570656e6473206f6e20706173736564206c697374206f66204163636f756e7449642e2d01202d20446570656e6473206f6e20746865206e6f2e206f6620636c61696d206973737565727320616e206163636f756e7449642068617320666f722074686520434444206578706972792e2c20233c2f7765696768743e487365745f636f6d6d697373696f6e5f636170041c6e65775f6361701c50657262696c6c142501204368616e67657320636f6d6d697373696f6e2072617465207768696368206170706c69657320746f20616c6c2076616c696461746f72732e204f6e6c7920476f7665726e616e6365ac20636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e0030202320417267756d656e747390202a20606e65775f6361706020746865206e657720636f6d6d697373696f6e206361702e587365745f6d696e5f626f6e645f7468726573686f6c6404246e65775f76616c75653042616c616e63654f663c543e14f4204368616e676573206d696e20626f6e642076616c756520746f206265207573656420696e20626f6e6428292e204f6e6c7920476f7665726e616e6365ac20636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e0030202320417267756d656e747378202a20606e65775f76616c75656020746865206e6577206d696e696d756d34666f7263655f6e6f5f657261730024b020466f72636520746865726520746f206265206e6f206e6577206572617320696e646566696e6974656c792e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743e40202d204e6f20617267756d656e74732e3c202d205765696768743a204f28312948202d2057726974653a20466f726365457261302023203c2f7765696768743e34666f7263655f6e65775f65726100284d0120466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f6620746865206e6578742073657373696f6e2e20416674657220746869732c2069742077696c6c206265a020726573657420746f206e6f726d616c20286e6f6e2d666f7263656429206265686176696f75722e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743e40202d204e6f20617267756d656e74732e3c202d205765696768743a204f28312944202d20577269746520466f726365457261302023203c2f7765696768743e447365745f696e76756c6e657261626c65730434696e76756c6e657261626c6573445665633c543a3a4163636f756e7449643e20cc20536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743e1c202d204f2856295c202d2057726974653a20496e76756c6e657261626c6573302023203c2f7765696768743e34666f7263655f756e7374616b650814737461736830543a3a4163636f756e744964486e756d5f736c617368696e675f7370616e730c753332280d0120466f72636520612063757272656e74207374616b657220746f206265636f6d6520636f6d706c6574656c7920756e7374616b65642c20696d6d6564696174656c792e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743eec204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2062652072656d6f766564b82052656164733a20426f6e6465642c20536c617368696e67205370616e732c204163636f756e742c204c6f636b738501205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c204163636f756e742c204c6f636b736c2057726974657320456163683a205370616e536c617368202a2053302023203c2f7765696768743e50666f7263655f6e65775f6572615f616c776179730020050120466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f662073657373696f6e7320696e646566696e6974656c792e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743e3c202d205765696768743a204f28312948202d2057726974653a20466f726365457261302023203c2f7765696768743e5463616e63656c5f64656665727265645f736c617368080c65726120457261496e64657834736c6173685f696e6469636573205665633c7533323e34982043616e63656c20656e6163746d656e74206f66206120646566657272656420736c6173682e00b42043616e2062652063616c6c6564206279207468652060543a3a536c61736843616e63656c4f726967696e602e00050120506172616d65746572733a2065726120616e6420696e6469636573206f662074686520736c617368657320666f7220746861742065726120746f206b696c6c2e002c2023203c7765696768743e5420436f6d706c65786974793a204f2855202b205329b82077697468205520756e6170706c69656420736c6173686573207765696768746564207769746820553d31303030d420616e64205320697320746865206e756d626572206f6620736c61736820696e646963657320746f2062652063616e63656c65642e68202d20526561643a20556e6170706c69656420536c61736865736c202d2057726974653a20556e6170706c69656420536c6173686573302023203c2f7765696768743e387061796f75745f7374616b657273083c76616c696461746f725f737461736830543a3a4163636f756e7449640c65726120457261496e64657870610120506f6c796d6573682d4e6f7465202d20576569676874206368616e67657320746f20312f34206f66207468652061637475616c2077656967687420746861742069732063616c63756c61746564207573696e67207468657c20757073747265616d2062656e63686d61726b696e672070726f636573732e00110120506179206f757420616c6c20746865207374616b65727320626568696e6420612073696e676c652076616c696461746f7220666f7220612073696e676c65206572612e004d01202d206076616c696461746f725f73746173686020697320746865207374617368206163636f756e74206f66207468652076616c696461746f722e205468656972206e6f6d696e61746f72732c20757020746f290120202060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602c2077696c6c20616c736f207265636569766520746865697220726577617264732e3501202d206065726160206d617920626520616e7920657261206265747765656e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e00590120546865206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2e20416e79206163636f756e742063616e2063616c6c20746869732066756e6374696f6e2c206576656e20696678206974206973206e6f74206f6e65206f6620746865207374616b6572732e00010120546869732063616e206f6e6c792062652063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002c2023203c7765696768743e0101202d2054696d6520636f6d706c65786974793a206174206d6f7374204f284d61784e6f6d696e61746f72526577617264656450657256616c696461746f72292ec4202d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e30202d2d2d2d2d2d2d2d2d2d2d1d01204e20697320746865204e756d626572206f66207061796f75747320666f72207468652076616c696461746f722028696e636c7564696e67207468652076616c696461746f722920205765696768743a88202d205265776172642044657374696e6174696f6e205374616b65643a204f284e29c4202d205265776172642044657374696e6174696f6e20436f6e74726f6c6c657220284372656174696e67293a204f284e292c204442205765696768743a2901202d20526561643a20457261456c656374696f6e5374617475732c2043757272656e744572612c20486973746f727944657074682c204572617356616c696461746f725265776172642c2d01202020202020202020457261735374616b657273436c69707065642c2045726173526577617264506f696e74732c204572617356616c696461746f725072656673202838206974656d73291101202d205265616420456163683a20426f6e6465642c204c65646765722c2050617965652c204c6f636b732c2053797374656d204163636f756e74202835206974656d7329d8202d20577269746520456163683a2053797374656d204163636f756e742c204c6f636b732c204c6564676572202833206974656d7329302023203c2f7765696768743e187265626f6e64041476616c756554436f6d706163743c42616c616e63654f663c543e3e38e0205265626f6e64206120706f7274696f6e206f6620746865207374617368207363686564756c656420746f20626520756e6c6f636b65642e00550120546865206469737061746368206f726967696e206d757374206265207369676e65642062792074686520636f6e74726f6c6c65722c20616e642069742063616e206265206f6e6c792063616c6c6564207768656e8c205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002c2023203c7765696768743ed4202d2054696d6520636f6d706c65786974793a204f284c292c207768657265204c20697320756e6c6f636b696e67206368756e6b7394202d20426f756e64656420627920604d41585f554e4c4f434b494e475f4348554e4b53602ef4202d2053746f72616765206368616e6765733a2043616e277420696e6372656173652073746f726167652c206f6e6c792064656372656173652069742e40202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d34202d204442205765696768743a010120202020202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c204c6f636b732c205b4f726967696e204163636f756e745db820202020202d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c6564676572302023203c2f7765696768743e447365745f686973746f72795f646570746808446e65775f686973746f72795f646570746844436f6d706163743c457261496e6465783e485f6572615f6974656d735f64656c6574656430436f6d706163743c7533323e543101205365742060486973746f72794465707468602076616c75652e20546869732066756e6374696f6e2077696c6c2064656c65746520616e7920686973746f727920696e666f726d6174696f6e80207768656e2060486973746f727944657074686020697320726564756365642e003020506172616d65746572733a1101202d20606e65775f686973746f72795f6465707468603a20546865206e657720686973746f727920646570746820796f7520776f756c64206c696b6520746f207365742e4901202d20606572615f6974656d735f64656c65746564603a20546865206e756d626572206f66206974656d7320746861742077696c6c2062652064656c6574656420627920746869732064697370617463682e450120202020546869732073686f756c64207265706f727420616c6c207468652073746f72616765206974656d7320746861742077696c6c2062652064656c6574656420627920636c656172696e67206f6c6445012020202065726120686973746f72792e204e656564656420746f207265706f727420616e2061636375726174652077656967687420666f72207468652064697370617463682e2054727573746564206279a02020202060526f6f746020746f207265706f727420616e206163637572617465206e756d6265722e0054204f726967696e206d75737420626520726f6f742e002c2023203c7765696768743ee0202d20453a204e756d626572206f6620686973746f7279206465707468732072656d6f7665642c20692e652e203130202d3e2037203d20333c202d205765696768743a204f28452934202d204442205765696768743aa020202020202d2052656164733a2043757272656e74204572612c20486973746f72792044657074687020202020202d205772697465733a20486973746f7279204465707468310120202020202d20436c6561722050726566697820456163683a20457261205374616b6572732c204572615374616b657273436c69707065642c204572617356616c696461746f725072656673810120202020202d2057726974657320456163683a204572617356616c696461746f725265776172642c2045726173526577617264506f696e74732c2045726173546f74616c5374616b652c2045726173537461727453657373696f6e496e646578302023203c2f7765696768743e28726561705f73746173680814737461736830543a3a4163636f756e744964486e756d5f736c617368696e675f7370616e730c7533323c39012052656d6f766520616c6c20646174612073747275637475726520636f6e6365726e696e672061207374616b65722f7374617368206f6e6365206974732062616c616e6365206973207a65726f2e6101205468697320697320657373656e7469616c6c79206571756976616c656e7420746f206077697468647261775f756e626f6e64656460206578636570742069742063616e2062652063616c6c656420627920616e796f6e65c020616e6420746865207461726765742060737461736860206d7573742068617665206e6f2066756e6473206c6566742e009020546869732063616e2062652063616c6c65642066726f6d20616e79206f726967696e2e000101202d20607374617368603a20546865207374617368206163636f756e7420746f20726561702e204974732062616c616e6365206d757374206265207a65726f2e002c2023203c7765696768743e250120436f6d706c65786974793a204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e73206f6e20746865206163636f756e742e2c204442205765696768743ad8202d2052656164733a205374617368204163636f756e742c20426f6e6465642c20536c617368696e67205370616e732c204c6f636b73a501202d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c205374617368204163636f756e742c204c6f636b7374202d2057726974657320456163683a205370616e536c617368202a2053302023203c2f7765696768743e607375626d69745f656c656374696f6e5f736f6c7574696f6e141c77696e6e6572734c5665633c56616c696461746f72496e6465783e1c636f6d7061637448436f6d7061637441737369676e6d656e74731473636f726534456c656374696f6e53636f72650c65726120457261496e6465781073697a6530456c656374696f6e53697a65c4e4205375626d697420616e20656c656374696f6e20726573756c7420746f2074686520636861696e2e2049662074686520736f6c7574696f6e3a003420312e2069732076616c69642e150120322e206861732061206265747465722073636f7265207468616e206120706f74656e7469616c6c79206578697374696e6720736f6c7574696f6e206f6e20636861696e2e0084207468656e2c2069742077696c6c206265205f7075745f206f6e20636861696e2e00ac204120736f6c7574696f6e20636f6e7369737473206f662074776f20706965636573206f6620646174613a00f420312e206077696e6e657273603a206120666c617420766563746f72206f6620616c6c207468652077696e6e657273206f662074686520726f756e642e510120322e206061737369676e6d656e7473603a2074686520636f6d706163742076657273696f6e206f6620616e2061737369676e6d656e7420766563746f72207468617420656e636f6465732074686520656467653020202020776569676874732e00210120426f7468206f66207768696368206d617920626520636f6d7075746564207573696e67205f70687261676d656e5f2c206f7220616e79206f7468657220616c676f726974686d2e00a8204164646974696f6e616c6c792c20746865207375626d6974746572206d7573742070726f766964653a00c8202d20546865206073636f7265602074686174207468657920636c61696d20746865697220736f6c7574696f6e206861732e004d0120426f74682076616c696461746f727320616e64206e6f6d696e61746f72732077696c6c20626520726570726573656e74656420627920696e646963657320696e2074686520736f6c7574696f6e2e205468651d0120696e64696365732073686f756c6420726573706563742074686520636f72726573706f6e64696e6720747970657320285b6056616c696461746f72496e646578605d20616e643101205b604e6f6d696e61746f72496e646578605d292e204d6f72656f7665722c20746865792073686f756c642062652076616c6964207768656e207573656420746f20696e64657820696e746f5101205b60536e617073686f7456616c696461746f7273605d20616e64205b60536e617073686f744e6f6d696e61746f7273605d2e20416e7920696e76616c696420696e6465782077696c6c20636175736520746865610120736f6c7574696f6e20746f2062652072656a65637465642e2054686573652074776f2073746f72616765206974656d73206172652073657420647572696e672074686520656c656374696f6e2077696e646f7720616e6498206d6179206265207573656420746f2064657465726d696e652074686520696e64696365732e0060204120736f6c7574696f6e2069732076616c69642069663a00e420302e204974206973207375626d6974746564207768656e205b60457261456c656374696f6e537461747573605d20697320604f70656e602ef820312e2049747320636c61696d65642073636f726520697320657175616c20746f207468652073636f726520636f6d7075746564206f6e2d636861696e2eac20322e2050726573656e74732074686520636f7272656374206e756d626572206f662077696e6e6572732e550120332e20416c6c20696e6465786573206d7573742062652076616c7565206163636f7264696e6720746f2074686520736e617073686f7420766563746f72732e20416c6c20656467652076616c756573206d7573745d0120202020616c736f20626520636f727265637420616e642073686f756c64206e6f74206f766572666c6f7720746865206772616e756c6172697479206f662074686520726174696f20747970652028692e652e2032353640202020206f722062696c6c696f6e292e0d0120342e20466f72206561636820656467652c20616c6c2074617267657473206172652061637475616c6c79206e6f6d696e617465642062792074686520766f7465722e6c20352e2048617320636f72726563742073656c662d766f7465732e00c0204120736f6c7574696f6e732073636f726520697320636f6e736973746564206f66203320706172616d65746572733a00650120312e20606d696e207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d6178696d697a65642e650120322e206073756d207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d696e696d697a65642e410120332e206073756d207b20737570706f72742e746f74616c5e32207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c642062659c202020206d696e696d697a65642028746f20656e73757265206c6573732076617269616e636529002c2023203c7765696768743e190120546865207472616e73616374696f6e20697320617373756d656420746f20626520746865206c6f6e6765737420706174682c20612062657474657220736f6c7574696f6e2ea42020202d20496e697469616c20736f6c7574696f6e20697320616c6d6f7374207468652073616d652e45012020202d20576f72736520736f6c7574696f6e20697320726574726163656420696e207072652d64697370617463682d636865636b73207768696368207365747320697473206f776e207765696768742e302023203c2f7765696768743e847375626d69745f656c656374696f6e5f736f6c7574696f6e5f756e7369676e6564141c77696e6e6572734c5665633c56616c696461746f72496e6465783e1c636f6d7061637448436f6d7061637441737369676e6d656e74731473636f726534456c656374696f6e53636f72650c65726120457261496e6465781073697a6530456c656374696f6e53697a6524c020556e7369676e65642076657273696f6e206f6620607375626d69745f656c656374696f6e5f736f6c7574696f6e602e005d01204e6f746520746861742074686973206d757374207061737320746865205b6056616c6964617465556e7369676e6564605d20636865636b207768696368206f6e6c7920616c6c6f7773207472616e73616374696f6e7361012066726f6d20746865206c6f63616c206e6f646520746f20626520696e636c756465642e20496e206f7468657220776f7264732c206f6e6c792074686520626c6f636b20617574686f722063616e20696e636c756465206168207472616e73616374696f6e20696e2074686520626c6f636b2e002c2023203c7765696768743e8820536565205b607375626d69745f656c656374696f6e5f736f6c7574696f6e605d2e302023203c2f7765696768743e607061796f75745f7374616b6572735f62795f73797374656d083c76616c696461746f725f737461736830543a3a4163636f756e7449640c65726120457261496e6465780425012053797374656d2076657273696f6e206f6620607061796f75745f7374616b6572732829602e204f6e6c792062652063616c6c65642062792074686520726f6f74206f726967696e2e6c6368616e67655f736c617368696e675f616c6c6f7765645f666f72043c736c617368696e675f73776974636838536c617368696e67537769746368146d012053776974636820736c617368696e6720737461747573206f6e20746865206261736973206f6620676976656e2060536c617368696e67537769746368602e2043616e206f6e6c792062652063616c6c656420627920726f6f742e0030202320417267756d656e747378202a206f726967696e202d204163636f756e744964206f6620726f6f742e0501202a20736c617368696e675f737769746368202d20537769746368207573656420746f2073657420746865207461726765747320666f7220736c617368696e672eb07570646174655f7065726d697373696f6e65645f76616c696461746f725f696e74656e6465645f636f756e7408206964656e74697479284964656e746974794964486e65775f696e74656e6465645f636f756e740c75333218d4205570646174652074686520696e74656e6465642076616c696461746f7220636f756e7420666f72206120676976656e204449442e0030202320417267756d656e74733501202a206f726967696e207768696368206d75737420626520746865207265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e88202a206964656e7469747920746f2061646420617320612076616c696461746f722ec8202a206e65775f696e74656e6465645f636f756e74204e65772076616c7565206f6620696e74656e64656420636f756e742e0144244572615061796f75740c20457261496e6465781c42616c616e63651c42616c616e63650c59012054686520657261207061796f757420686173206265656e207365743b207468652066697273742062616c616e6365206973207468652076616c696461746f722d7061796f75743b20746865207365636f6e64206973c4207468652072656d61696e6465722066726f6d20746865206d6178696d756d20616d6f756e74206f66207265776172642eac205c5b6572615f696e6465782c2076616c696461746f725f7061796f75742c2072656d61696e6465725c5d185265776172640c284964656e746974794964244163636f756e7449641c42616c616e6365043d0120546865207374616b657220686173206265656e207265776172646564206279207468697320616d6f756e742e205c5b73746173685f6964656e746974792c2073746173682c20616d6f756e745c5d14536c61736808244163636f756e7449641c42616c616e6365082501204f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e58205c5b76616c696461746f722c20616d6f756e745c5d684f6c64536c617368696e675265706f7274446973636172646564043053657373696f6e496e646578081d0120416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c6490206e6f742062652070726f6365737365642e205c5b73657373696f6e5f696e6465785c5d3c5374616b696e67456c656374696f6e043c456c656374696f6e436f6d7075746504f42041206e657720736574206f66207374616b6572732077617320656c656374656420776974682074686520676976656e205c5b636f6d707574655c5d2e38536f6c7574696f6e53746f726564043c456c656374696f6e436f6d707574650419012041206e657720736f6c7574696f6e20666f7220746865207570636f6d696e6720656c656374696f6e20686173206265656e2073746f7265642e205c5b636f6d707574655c5d18426f6e6465640c284964656e746974794964244163636f756e7449641c42616c616e636510e820416e206163636f756e742068617320626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d005101204e4f54453a2054686973206576656e74206973206f6e6c7920656d6974746564207768656e2066756e64732061726520626f6e64656420766961206120646973706174636861626c652e204e6f7461626c792c25012069742077696c6c206e6f7420626520656d697474656420666f72207374616b696e672072657761726473207768656e20746865792061726520616464656420746f207374616b652e20556e626f6e6465640c284964656e746974794964244163636f756e7449641c42616c616e636504f020416e206163636f756e742068617320756e626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d244e6f6d696e617465640c284964656e746974794964244163636f756e744964385665633c4163636f756e7449643e048c2055736572206861732075706461746564207468656972206e6f6d696e6174696f6e732457697468647261776e08244163636f756e7449641c42616c616e6365085d0120416e206163636f756e74206861732063616c6c6564206077697468647261775f756e626f6e6465646020616e642072656d6f76656420756e626f6e64696e67206368756e6b7320776f727468206042616c616e636560b02066726f6d2074686520756e6c6f636b696e672071756575652e205c5b73746173682c20616d6f756e745c5d645065726d697373696f6e65644964656e74697479416464656408284964656e746974794964284964656e74697479496408f020416e20444944206861732069737375656420612063616e6469646163792e2053656520746865207472616e73616374696f6e20666f722077686f2e90204743206964656e74697479202c2056616c696461746f722773206964656e746974792e6c5065726d697373696f6e65644964656e7469747952656d6f76656408284964656e746974794964284964656e74697479496408ec2054686520676976656e206d656d626572207761732072656d6f7665642e2053656520746865207472616e73616374696f6e20666f722077686f2e90204743206964656e74697479202c2056616c696461746f722773206964656e746974792e54496e76616c6964617465644e6f6d696e61746f72730c284964656e746974794964244163636f756e744964385665633c4163636f756e7449643e0821012052656d6f766520746865206e6f6d696e61746f72732066726f6d207468652076616c6964206e6f6d696e61746f7273207768656e2074686572652043444420657870697265642e982043616c6c65722c205374617368206163636f756e744964206f66206e6f6d696e61746f727350436f6d6d697373696f6e436170557064617465640c284964656e7469747949641c50657262696c6c1c50657262696c6c0884205768656e20636f6d6d697373696f6e206361702067657420757064617465642e5c20286f6c642076616c75652c206e65772076616c7565296c4d696e696d756d426f6e645468726573686f6c645570646174656408484f7074696f6e3c4964656e7469747949643e1c42616c616e636504b0204d696e20626f6e64207468726573686f6c6420776173207570646174656420286e65772076616c7565292e885265776172645061796d656e745363686564756c696e67496e7465727275707465640c244163636f756e74496420457261496e6465783444697370617463684572726f7204d0205768656e207363686564756c696e67206f6620726577617264207061796d656e74732067657420696e7465727275707465642e64536c617368696e67416c6c6f776564466f724368616e6765640438536c617368696e6753776974636804942055706461746520666f722077686f6d2062616c616e63652067657420736c61736865642e2c3853657373696f6e735065724572613053657373696f6e496e64657810060000000470204e756d626572206f662073657373696f6e7320706572206572612e3c426f6e64696e674475726174696f6e20457261496e646578101c00000004e4204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e48536c61736844656665724475726174696f6e20457261496e646578100e000000140101204e756d626572206f662065726173207468617420736c6173686573206172652064656665727265642062792c20616674657220636f6d7075746174696f6e2e00bc20546869732073686f756c64206265206c657373207468616e2074686520626f6e64696e67206475726174696f6e2e2d012053657420746f203020696620736c61736865732073686f756c64206265206170706c69656420696d6d6564696174656c792c20776974686f7574206f70706f7274756e69747920666f723820696e74657276656e74696f6e2e44456c656374696f6e4c6f6f6b616865616438543a3a426c6f636b4e756d626572101e0000001c710120546865206e756d626572206f6620626c6f636b73206265666f72652074686520656e64206f6620746865206572612066726f6d20776869636820656c656374696f6e207375626d697373696f6e732061726520616c6c6f7765642e006d012053657474696e67207468697320746f207a65726f2077696c6c2064697361626c6520746865206f6666636861696e20636f6d7075746520616e64206f6e6c79206f6e2d636861696e207365712d70687261676d656e2077696c6c2420626520757365642e007501205468697320697320626f756e646564206279206265696e672077697468696e20746865206c6173742073657373696f6e2e2048656e63652c2073657474696e6720697420746f20612076616c7565206d6f7265207468616e207468659c206c656e677468206f6620612073657373696f6e2077696c6c20626520706f696e746c6573732e344d6178497465726174696f6e730c753332100a0000000c2901204d6178696d756d206e756d626572206f662062616c616e63696e6720697465726174696f6e7320746f2072756e20696e20746865206f6666636861696e207375626d697373696f6e2e00ec2049662073657420746f20302c2062616c616e63655f736f6c7574696f6e2077696c6c206e6f7420626520657865637574656420617420616c6c2e504d696e536f6c7574696f6e53636f726542756d701c50657262696c6c1020a1070004610120546865207468726573686f6c64206f6620696d70726f76656d656e7420746861742073686f756c642062652070726f766964656420666f722061206e657720736f6c7574696f6e20746f2062652061636365707465642e804d61784e6f6d696e61746f72526577617264656450657256616c696461746f720c753332100008000010f820546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320726577617264656420666f7220656163682076616c696461746f722e00690120466f7220656163682076616c696461746f72206f6e6c79207468652060244d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732063616e20636c61696d2101207468656972207265776172642e2054686973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e5c4d617856616c696461746f725065724964656e746974791c5065726d696c6c10100905000cf4204d6178696d756d206e756d626572206f662076616c696461746f727320666f722065616368207065726d697373696f6e6564206964656e746974792e005901204d6178206e756d626572206f662076616c696461746f727320636f756e74203d20604d617856616c696461746f725065724964656e74697479202a2053656c663a3a76616c696461746f725f636f756e742829602e844d61785661726961626c65496e666c6174696f6e546f74616c49737375616e63653042616c616e63654f663c543e400080c6a47e8d03000000000000000000047101204d6178696d756d20616d6f756e74206f662060543a3a63757272656e63793a3a746f74616c5f69737375616e63652829602061667465722074686174206e6f6e2d696e666c6174656420726577617264732067657420706169642e444669786564596561726c795265776172643042616c616e63654f663c543e4000c0444a547f0000000000000000000004010120546f74616c2079656172207265776172647320746861742067657473207061696420647572696e6720666978656420726577617264207363686564756c652e2c4d696e696d756d426f6e643042616c616e63654f663c543e4040420f0000000000000000000000000004f0204d696e696d756d20616d6f756e74206f6620504f4c59582074686174206d75737420626520626f6e64656420666f722061206e657720626f6e642e98344e6f74436f6e74726f6c6c65720468204e6f74206120636f6e74726f6c6c6572206163636f756e742e204e6f7453746173680454204e6f742061207374617368206163636f756e742e34416c7265616479426f6e646564046420537461736820697320616c726561647920626f6e6465642e34416c7265616479506169726564047820436f6e74726f6c6c657220697320616c7265616479207061697265642e30456d70747954617267657473046420546172676574732063616e6e6f7420626520656d7074792e44496e76616c6964536c617368496e646578048820536c617368207265636f726420696e646578206f7574206f6620626f756e64732e44496e73756666696369656e7456616c756504cc2043616e206e6f7420626f6e6420776974682076616c7565206c657373207468616e206d696e696d756d2062616c616e63652e304e6f4d6f72654368756e6b7304942043616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b732e344e6f556e6c6f636b4368756e6b04a42043616e206e6f74207265626f6e6420776974686f757420756e6c6f636b696e67206368756e6b732e3046756e64656454617267657404cc20417474656d7074696e6720746f2074617267657420612073746173682074686174207374696c6c206861732066756e64732e48496e76616c6964457261546f526577617264045c20496e76616c69642065726120746f207265776172642e484e6f74536f72746564416e64556e697175650484204974656d7320617265206e6f7420736f7274656420616e6420756e697175652e38416c7265616479436c61696d6564040d01205265776172647320666f72207468697320657261206861766520616c7265616479206265656e20636c61696d656420666f7220746869732076616c696461746f722e7c4f6666636861696e456c656374696f6e4561726c795375626d697373696f6e04e420546865207375626d697474656420726573756c74206973207265636569766564206f7574206f6620746865206f70656e2077696e646f772e784f6666636861696e456c656374696f6e5765616b5375626d697373696f6e04010120546865207375626d697474656420726573756c74206973206e6f7420617320676f6f6420617320746865206f6e652073746f726564206f6e20636861696e2e4c536e617073686f74556e617661696c61626c6504d02054686520736e617073686f742064617461206f66207468652063757272656e742077696e646f77206973206d697373696e672e804f6666636861696e456c656374696f6e426f67757357696e6e6572436f756e7404b020496e636f7272656374206e756d626572206f662077696e6e65727320776572652070726573656e7465642e6c4f6666636861696e456c656374696f6e426f67757357696e6e6572086101204f6e65206f6620746865207375626d69747465642077696e6e657273206973206e6f7420616e206163746976652063616e646964617465206f6e20636861696e2028696e646578206973206f7574206f662072616e67653820696e20736e617073686f74292e704f6666636861696e456c656374696f6e426f677573436f6d70616374085d01204572726f72207768696c65206275696c64696e67207468652061737369676e6d656e7420747970652066726f6d2074686520636f6d706163742e20546869732063616e2068617070656e20696620616e20696e646578a820697320696e76616c69642c206f72206966207468652077656967687473205f6f766572666c6f775f2e784f6666636861696e456c656374696f6e426f6775734e6f6d696e61746f72041501204f6e65206f6620746865207375626d6974746564206e6f6d696e61746f7273206973206e6f7420616e20616374697665206e6f6d696e61746f72206f6e20636861696e2e7c4f6666636861696e456c656374696f6e426f6775734e6f6d696e6174696f6e044d01204f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e206564676520746f20776869636820746865792068617665206e6f7420766f746564206f6e20636861696e2e844f6666636861696e456c656374696f6e536c61736865644e6f6d696e6174696f6e086101204f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e2065646765207768696368206973207375626d6974746564206265666f726520746865206c617374206e6f6e2d7a65726f5420736c617368206f6620746865207461726765742e744f6666636861696e456c656374696f6e426f67757353656c66566f746504250120412073656c6620766f7465206d757374206f6e6c79206265206f726967696e617465642066726f6d20612076616c696461746f7220746f204f4e4c59207468656d73656c7665732e644f6666636861696e456c656374696f6e426f6775734564676504450120546865207375626d697474656420726573756c742068617320756e6b6e6f776e206564676573207468617420617265206e6f7420616d6f6e67207468652070726573656e7465642077696e6e6572732e684f6666636861696e456c656374696f6e426f67757353636f72650419012054686520636c61696d65642073636f726520646f6573206e6f74206d61746368207769746820746865206f6e6520636f6d70757465642066726f6d2074686520646174612e844f6666636861696e456c656374696f6e426f677573456c656374696f6e53697a6504782054686520656c656374696f6e2073697a6520697320696e76616c69642e3843616c6c4e6f74416c6c6f776564044901205468652063616c6c206973206e6f7420616c6c6f7765642061742074686520676976656e2074696d652064756520746f207265737472696374696f6e73206f6620656c656374696f6e20706572696f642e58496e636f7272656374536c617368696e675370616e7304b420496e636f7272656374206e756d626572206f6620736c617368696e67207370616e732070726f76696465642e34416c7265616479457869737473049c205065726d697373696f6e65642076616c696461746f7220616c7265616479206578697374732e244e6f74457869737473048c205065726d697373696f6e65642076616c696461746f72206e6f74206578697374732e204e6f4368616e67650464205570646174657320776974682073616d652076616c75652e60496e76616c696456616c696461746f724964656e7469747904bc20476976656e20706f74656e7469616c2076616c696461746f72206964656e7469747920697320696e76616c69642e68496e76616c696456616c696461746f72436f6d6d697373696f6e04a02056616c696461746f7220707265667320617265206e6f7420696e2076616c69642072616e67652e7053746173684964656e746974794e6f745065726d697373696f6e656404bc2056616c696461746f72207374617368206964656e7469747920776173206e6f74207065726d697373696f6e65642e64486974496e74656e64656456616c696461746f72436f756e7404c02052756e6e696e672076616c696461746f7220636f756e74206869742074686520696e74656e64656420636f756e742e98496e74656e646564436f756e744973457863656564696e67436f6e73656e7375734c696d6974043901205768656e2074686520696e74656e646564206e756d626572206f662076616c696461746f727320746f2072756e206973203e3d20322f33206f66206076616c696461746f725f636f756e74602e30426f6e64546f6f536d616c6c04e0205768656e2074686520616d6f756e7420746f20626520626f6e646564206973206c657373207468616e20604d696e696d756d426f6e6460204261645374617465043d0120496e7465726e616c20737461746520686173206265636f6d6520736f6d65686f7720636f7272757074656420616e6420746865206f7065726174696f6e2063616e6e6f7420636f6e74696e75652e11204f6666656e63657301204f6666656e636573101c5265706f727473000105345265706f727449644f663c543ed04f6666656e636544657461696c733c543a3a4163636f756e7449642c20543a3a4964656e74696669636174696f6e5475706c653e00040004490120546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e4044656665727265644f6666656e6365730100645665633c44656665727265644f6666656e63654f663c543e3e0400086501204465666572726564207265706f72747320746861742068617665206265656e2072656a656374656420627920746865206f6666656e63652068616e646c657220616e64206e65656420746f206265207375626d6974746564442061742061206c617465722074696d652e58436f6e63757272656e745265706f727473496e646578010205104b696e64384f706171756554696d65536c6f74485665633c5265706f727449644f663c543e3e050400042901204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e485265706f72747342794b696e64496e646578010105104b696e641c5665633c75383e00040018110120456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e00bc20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e004901204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f66690120646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e010001041c4f6666656e63650c104b696e64384f706171756554696d65536c6f7410626f6f6c10550120546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e644d0120286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e206c617374190120656c656d656e7420696e64696361746573206f6620746865206f6666656e636520776173206170706c69656420287472756529206f7220717565756564202866616c73652974205c5b6b696e642c2074696d65736c6f742c206170706c6965645c5d2e0000121c53657373696f6e011c53657373696f6e1c2856616c696461746f727301004c5665633c543a3a56616c696461746f7249643e0400047c205468652063757272656e7420736574206f662076616c696461746f72732e3043757272656e74496e64657801003053657373696f6e496e646578100000000004782043757272656e7420696e646578206f66207468652073657373696f6e2e345175657565644368616e676564010010626f6f6c040008390120547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f7273a420686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e285175657565644b6579730100785665633c28543a3a56616c696461746f7249642c20543a3a4b657973293e0400083d012054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b657973e02077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e4844697361626c656456616c696461746f72730100205665633c7533323e04000c8020496e6469636573206f662064697361626c65642076616c696461746f72732e003501205468652073657420697320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e732061206e657720736574206f66206964656e7469746965732e204e6578744b65797300010538543a3a56616c696461746f7249641c543a3a4b657973000400049c20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e204b65794f776e657200010550284b65795479706549642c205665633c75383e2938543a3a56616c696461746f72496400040004090120546865206f776e6572206f662061206b65792e20546865206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e0108207365745f6b65797308106b6579731c543a3a4b6579731470726f6f661c5665633c75383e38e82053657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b657973602e210120416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722ec4205468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e00d420546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e002c2023203c7765696768743e54202d20436f6d706c65786974793a20604f28312960590120202041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468206f662060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642ef0202d20446252656164733a20606f726967696e206163636f756e74602c2060543a3a56616c696461746f7249644f66602c20604e6578744b65797360a4202d2044625772697465733a20606f726967696e206163636f756e74602c20604e6578744b6579736084202d204462526561647320706572206b65792069643a20604b65794f776e65726088202d20446257726974657320706572206b65792069643a20604b65794f776e657260302023203c2f7765696768743e2870757267655f6b6579730030cc2052656d6f76657320616e792073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c65722ec4205468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e00d420546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e002c2023203c7765696768743eb4202d20436f6d706c65786974793a20604f2831296020696e206e756d626572206f66206b65792074797065732e590120202041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468206f662060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642ef0202d20446252656164733a2060543a3a56616c696461746f7249644f66602c20604e6578744b657973602c20606f726967696e206163636f756e7460a4202d2044625772697465733a20604e6578744b657973602c20606f726967696e206163636f756e74608c202d20446257726974657320706572206b65792069643a20604b65794f776e64657260302023203c2f7765696768743e0104284e657753657373696f6e043053657373696f6e496e646578086501204e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e7420697320746865205c5b73657373696f6e5f696e6465785c5d2c206e6f742074686520626c6f636b88206e756d626572206173207468652074797065206d6967687420737567676573742e001430496e76616c696450726f6f66046420496e76616c6964206f776e6572736869702070726f6f662e5c4e6f4173736f63696174656456616c696461746f72496404a0204e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e344475706c6963617465644b657904682052656769737465726564206475706c6963617465206b65792e184e6f4b65797304a8204e6f206b65797320617265206173736f63696174656420776974682074686973206163636f756e742e244e6f4163636f756e74041d01204b65792073657474696e67206163636f756e74206973206e6f74206c6976652c20736f206974277320696d706f737369626c6520746f206173736f6369617465206b6579732e1348417574686f72697479446973636f76657279000100000000141c4772616e647061013c4772616e64706146696e616c6974791814537461746501006c53746f72656453746174653c543a3a426c6f636b4e756d6265723e04000490205374617465206f66207468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e676500008c53746f72656450656e64696e674368616e67653c543a3a426c6f636b4e756d6265723e040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000038543a3a426c6f636b4e756d626572040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c656400008028543a3a426c6f636b4e756d6265722c20543a3a426c6f636b4e756d626572290400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e3043757272656e7453657449640100145365744964200000000000000000085d0120546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c697469657329c420696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e30536574496453657373696f6e0001051453657449643053657373696f6e496e6465780004001059012041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e00b82054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e010c4c7265706f72745f65717569766f636174696f6e084865717569766f636174696f6e5f70726f6f66a845717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3c6b65795f6f776e65725f70726f6f6640543a3a4b65794f776e657250726f6f66100d01205265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f82065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66fc20616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e6365482077696c6c206265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e6564084865717569766f636174696f6e5f70726f6f66a845717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3c6b65795f6f776e65725f70726f6f6640543a3a4b65794f776e657250726f6f66240d01205265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f82065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66fc20616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e6365482077696c6c206265207265706f727465642e00110120546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c79190120626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c206173207375636819012069662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e28207265706f727465722e306e6f74655f7374616c6c6564081464656c617938543a3a426c6f636b4e756d6265726c626573745f66696e616c697a65645f626c6f636b5f6e756d62657238543a3a426c6f636b4e756d6265721c1d01204e6f74652074686174207468652063757272656e7420617574686f7269747920736574206f6620746865204752414e4450412066696e616c69747920676164676574206861732901207374616c6c65642e20546869732077696c6c2074726967676572206120666f7263656420617574686f7269747920736574206368616e67652061742074686520626567696e6e696e672101206f6620746865206e6578742073657373696f6e2c20746f20626520656e6163746564206064656c61796020626c6f636b7320616674657220746861742e205468652064656c617915012073686f756c64206265206869676820656e6f75676820746f20736166656c7920617373756d6520746861742074686520626c6f636b207369676e616c6c696e6720746865290120666f72636564206368616e67652077696c6c206e6f742062652072652d6f726765642028652e672e203130303020626c6f636b73292e20546865204752414e44504120766f7465727329012077696c6c20737461727420746865206e657720617574686f7269747920736574207573696e672074686520676976656e2066696e616c697a656420626c6f636b20617320626173652e5c204f6e6c792063616c6c61626c6520627920726f6f742e010c384e6577417574686f7269746965730434417574686f726974794c69737404d8204e657720617574686f726974792073657420686173206265656e206170706c6965642e205c5b617574686f726974795f7365745c5d1850617573656400049c2043757272656e7420617574686f726974792073657420686173206265656e207061757365642e1c526573756d65640004a02043757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e001c2c50617573654661696c656408090120417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665a8202865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e30526573756d654661696c656408150120417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e277420706175736564a42028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e344368616e676550656e64696e6704ec20417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e1c546f6f536f6f6e04c02043616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e60496e76616c69644b65794f776e65727368697050726f6f660435012041206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f6604350120416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f7274041901204120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e1528486973746f726963616c00000000001620496d4f6e6c696e650120496d4f6e6c696e6510384865617274626561744166746572010038543a3a426c6f636b4e756d62657210000000001831012054686520626c6f636b206e756d6265722061667465722077686963682069742773206f6b20746f2073656e64206865617274626561747320696e2063757272656e742073657373696f6e2e0011012041742074686520626567696e6e696e67206f6620656163682073657373696f6e20776520736574207468697320746f20612076616c756520746861742073686f756c64d02066616c6c20726f7567686c7920696e20746865206d6964646c65206f66207468652073657373696f6e206475726174696f6e2e010120546865206964656120697320746f206669727374207761697420666f72207468652076616c696461746f727320746f2070726f64756365206120626c6f636b390120696e207468652063757272656e742073657373696f6e2c20736f20746861742074686520686561727462656174206c61746572206f6e2077696c6c206e6f74206265206e65636573736172792e104b65797301004c5665633c543a3a417574686f7269747949643e040004d0205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e485265636569766564486561727462656174730002053053657373696f6e496e6465782441757468496e6465781c5665633c75383e05040008f020466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206041757468496e6465786020746f8020606f6666636861696e3a3a4f70617175654e6574776f726b5374617465602e38417574686f726564426c6f636b730102053053657373696f6e496e6465783856616c696461746f7249643c543e0c75333205100000000008150120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206056616c696461746f7249643c543e6020746f20746865c8206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e0104246865617274626561740824686561727462656174644865617274626561743c543a3a426c6f636b4e756d6265723e285f7369676e6174757265bc3c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e6174757265242c2023203c7765696768743e4101202d20436f6d706c65786974793a20604f284b202b20452960207768657265204b206973206c656e677468206f6620604b6579736020286865617274626561742e76616c696461746f72735f6c656e290101202020616e642045206973206c656e677468206f6620606865617274626561742e6e6574776f726b5f73746174652e65787465726e616c5f61646472657373608c2020202d20604f284b29603a206465636f64696e67206f66206c656e67746820604b60b02020202d20604f284529603a206465636f64696e672f656e636f64696e67206f66206c656e677468206045603d01202d20446252656164733a2070616c6c65745f73657373696f6e206056616c696461746f7273602c2070616c6c65745f73657373696f6e206043757272656e74496e646578602c20604b657973602c5c202020605265636569766564486561727462656174736084202d2044625772697465733a206052656365697665644865617274626561747360302023203c2f7765696768743e010c444865617274626561745265636569766564042c417574686f7269747949640405012041206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f72697479496460205c5b617574686f726974795f69645c5d1c416c6c476f6f640004d42041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2c536f6d654f66666c696e6504605665633c4964656e74696669636174696f6e5475706c653e043d012041742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e652076616c696461746f722077617320666f756e6420746f206265205c5b6f66666c696e655c5d2e000828496e76616c69644b65790464204e6f6e206578697374656e74207075626c6963206b65792e4c4475706c6963617465644865617274626561740458204475706c696361746564206865617274626561742e176052616e646f6d6e657373436f6c6c656374697665466c6970016052616e646f6d6e657373436f6c6c656374697665466c6970043852616e646f6d4d6174657269616c0100305665633c543a3a486173683e04000c610120536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e2054686973610120697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f664420746865206f6c6465737420686173682e010000000018105375646f01105375646f040c4b6579010030543a3a4163636f756e74496480000000000000000000000000000000000000000000000000000000000000000004842054686520604163636f756e74496460206f6620746865207375646f206b65792e0110107375646f041063616c6c60426f783c3c5420617320436f6e6669673e3a3a43616c6c3e2839012041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c2023203c7765696768743e20202d204f2831292e64202d204c696d697465642073746f726167652072656164732e60202d204f6e6520444220777269746520286576656e74292ec8202d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e302023203c2f7765696768743e547375646f5f756e636865636b65645f776569676874081063616c6c60426f783c3c5420617320436f6e6669673e3a3a43616c6c3e1c5f776569676874185765696768742839012041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e310120546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b4205375646f207573657220746f20737065636966792074686520776569676874206f66207468652063616c6c2e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c2023203c7765696768743e20202d204f2831292ed0202d2054686520776569676874206f6620746869732063616c6c20697320646566696e6564206279207468652063616c6c65722e302023203c2f7765696768743e1c7365745f6b6579040c6e65778c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263652475012041757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c2023203c7765696768743e20202d204f2831292e64202d204c696d697465642073746f726167652072656164732e44202d204f6e65204442206368616e67652e302023203c2f7765696768743e1c7375646f5f6173080c77686f8c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263651063616c6c60426f783c3c5420617320436f6e6669673e3a3a43616c6c3e2c51012041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d44206120676976656e206163636f756e742e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c2023203c7765696768743e20202d204f2831292e64202d204c696d697465642073746f726167652072656164732e60202d204f6e6520444220777269746520286576656e74292ec8202d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e302023203c2f7765696768743e010c14537564696404384469737061746368526573756c74048c2041207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d284b65794368616e67656404244163636f756e74496404010120546865205c5b7375646f65725c5d206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e285375646f4173446f6e6504384469737061746368526573756c74048c2041207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d00042c526571756972655375646f04802053656e646572206d75737420626520746865205375646f206163636f756e741914417373657401144173736574541c5469636b657273010102185469636b6572745469636b6572526567697374726174696f6e3c543a3a4d6f6d656e743e00840000000000000000000000000000000000000000000000000000000000000000000874205469636b657220726567697374726174696f6e2064657461696c732e7c20287469636b657229202d3e205469636b6572526567697374726174696f6e305469636b6572436f6e66696701008c5469636b6572526567697374726174696f6e436f6e6669673c543a3a4d6f6d656e743e0800000870205469636b657220726567697374726174696f6e20636f6e6669672e9420287469636b657229202d3e205469636b6572526567697374726174696f6e436f6e66696718546f6b656e73010102185469636b6572345365637572697479546f6b656e00c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008e02044657461696c73206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e050120287469636b657229202d3e205365637572697479546f6b656e2064657461696c73205b72657475726e73205365637572697479546f6b656e207374727563745d2841737365744e616d6573010102185469636b65722441737365744e616d6500040008ec204173736574206e616d65206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e6020287469636b657229202d3e206041737365744e616d65602442616c616e63654f66010202185469636b6572284964656e7469747949641c42616c616e636506400000000000000000000000000000000008b42054686520746f74616c206173736574207469636b65722062616c616e636520706572206964656e746974792e6420287469636b65722c2044494429202d3e2042616c616e63652c4964656e74696669657273010102185469636b6572505665633c41737365744964656e7469666965723e00040004b82041206d6170206f662061207469636b6572206e616d6520616e64206173736574206964656e746966696572732e50437573746f6d54797065496453657175656e6365010044437573746f6d417373657454797065496410000000000cc420546865206e65787420604173736574547970653a3a437573746f6d6020494420696e207468652073657175656e63652e00d0204e756d6265727320696e207468652073657175656e63652073746172742066726f6d203120726174686572207468616e20302e2c437573746f6d547970657301010544437573746f6d41737365745479706549641c5665633c75383e00040004f8204d61707320637573746f6d20617373657420747970652069647320746f20746865207265676973746572656420737472696e6720636f6e74656e74732e48437573746f6d5479706573496e76657273650101021c5665633c75383e44437573746f6d417373657454797065496400100000000004610120496e7665727365206d6170206f662060437573746f6d5479706573602c2066726f6d207265676973746572656420737472696e6720636f6e74656e747320746f20637573746f6d2061737365742074797065206964732e3046756e64696e67526f756e64010102185469636b65724046756e64696e67526f756e644e616d65000400089c20546865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e60207469636b6572202d3e2066756e64696e6720726f756e6450497373756564496e46756e64696e67526f756e6401010268285469636b65722c2046756e64696e67526f756e644e616d65291c42616c616e63650040000000000000000000000000000000000811012054686520746f74616c2062616c616e636573206f6620746f6b656e732069737375656420696e20616c6c207265636f726465642066756e64696e6720726f756e64732e8c20287469636b65722c2066756e64696e6720726f756e6429202d3e2062616c616e63651846726f7a656e010102185469636b657210626f6f6c00040008e82054686520736574206f662066726f7a656e2061737365747320696d706c656d656e7465642061732061206d656d62657273686970206d61702e3c207469636b6572202d3e20626f6f6c5c41737365744f776e65727368697052656c6174696f6e73010206284964656e746974794964185469636b65725841737365744f776e65727368697052656c6174696f6e0204000888205469636b65727320616e6420746f6b656e206f776e656420627920612075736572842028757365722c207469636b657229202d3e2041737365744f776e657273686970384173736574446f63756d656e7473010202185469636b657228446f63756d656e74496420446f63756d656e7405140000000000087c20446f63756d656e747320617474616368656420746f20616e2041737365747420287469636b65722c20646f635f696429202d3e20646f63756d656e74604173736574446f63756d656e7473496453657175656e6365010102185469636b657228446f63756d656e7449640010000000000880205065722d7469636b657220646f63756d656e7420494420636f756e7465722e4c20287469636b657229202d3e20646f635f696438436c61737369635469636b657273000102185469636b657264436c61737369635469636b6572526567697374726174696f6e00040004f0205469636b657220726567697374726174696f6e2064657461696c73206f6e20506f6c796d61746820436c6173736963202f20457468657265756d2e4042616c616e63654f66417453636f70650102061c53636f70654964284964656e7469747949641c42616c616e63650640000000000000000000000000000000000ccc2042616c616e636573206765742073746f726564206f6e20746865206261736973206f6620746865206053636f70654964602e9d01205269676874206e6f77206974206973206f6e6c792068656c7066756c20666f722074686520554920707572706f7365732062757420696e206675747572652069742063616e206265207573656420746f20646f206d697261636c6573206f6e2d636861696e2e88202853636f706549642c204964656e74697479496429203d3e2042616c616e63652e4041676772656761746542616c616e6365010202185469636b65721c53636f706549641c42616c616e63650640000000000000000000000000000000000825012053746f7265206167677265676174652062616c616e6365206f662074686f7365206964656e746974696573207468617420686173207468652073616d65206053636f70654964602e7820285469636b65722c2053636f7065496429203d3e2042616c616e63652e2453636f706549644f66010202185469636b6572284964656e7469747949641c53636f706549640680000000000000000000000000000000000000000000000000000000000000000008dc20547261636b73207468652053636f70654964206f6620746865206964656e7469747920666f72206120676976656e207469636b65722e8420285469636b65722c204964656e74697479496429203d3e2053636f706549642e6444697361626c65496e766573746f72556e697175656e657373010102185469636b657210626f6f6c0004001031012044656369646573207768657468657220696e766573746f7220756e697175656e65737320726571756972656d656e7420697320656e666f7263656420666f7220746869732061737365742e8c206066616c736560206d65616e73207468617420697420697320656e666f726365642e0040205469636b6572203d3e20626f6f6c2e3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e01483c72656769737465725f7469636b657204187469636b6572185469636b6572240901205265676973746572732061206e6577207469636b6572206f7220657874656e64732076616c6964697479206f6620616e206578697374696e67207469636b65722e1501204e423a205469636b65722076616c696469747920646f6573206e6f742067657420636172727920666f7277617264207768656e2072656e6577696e67207469636b65722e0030202320417267756d656e7473cd01202a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e7c202a20607469636b657260207469636b657220746f2072656769737465722e00382023205065726d697373696f6e7320202a204173736574586163636570745f7469636b65725f7472616e73666572041c617574685f69640c753634306c20416363657074732061207469636b6572207472616e736665722e00310120436f6e73756d65732074686520617574686f72697a6174696f6e2060617574685f6964602028736565206070616c6c65745f6964656e746974793a3a636f6e73756d655f6175746860292e2901204e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e0030202320417267756d656e7473cd01202a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292efc202a2060617574685f69646020417574686f72697a6174696f6e204944206f66207469636b6572207472616e7366657220617574686f72697a6174696f6e2e0028202323204572726f72736d01202d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f696460206973206e6f7420612076616c6964207469636b6574207472616e7366657220617574686f72697a6174696f6e2e007c6163636570745f61737365745f6f776e6572736869705f7472616e73666572041c617574685f69640c75363418f020546869732066756e6374696f6e206973207573656420746f20616363657074206120746f6b656e206f776e657273686970207472616e736665722e2901204e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e0030202320417267756d656e7473cd01202a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e3101202a2060617574685f69646020417574686f72697a6174696f6e204944206f662074686520746f6b656e206f776e657273686970207472616e7366657220617574686f72697a6174696f6e2e306372656174655f61737365741c106e616d652441737365744e616d65187469636b6572185469636b657224646976697369626c6510626f6f6c2861737365745f74797065244173736574547970652c6964656e74696669657273505665633c41737365744964656e7469666965723e3466756e64696e675f726f756e64604f7074696f6e3c46756e64696e67526f756e644e616d653e2864697361626c655f697510626f6f6c68310120496e697469616c697a65732061206e657720736563757269747920746f6b656e2c20776974682074686520696e6974696174696e67206163636f756e7420617320697473206f776e65722e19012054686520746f74616c20737570706c792077696c6c20696e697469616c6c79206265207a65726f2e20546f206d696e7420746f6b656e732c2075736520606973737565602e0030202320417267756d656e7473c901202a20606f726967696e60202d20636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e88202a20606e616d6560202d20746865206e616d65206f662074686520746f6b656e2eb4202a20607469636b657260202d20746865207469636b65722073796d626f6c206f662074686520746f6b656e2e3101202a2060646976697369626c6560202d206120626f6f6c65616e20746f206964656e74696679207468652064697669736962696c69747920737461747573206f662074686520746f6b656e2e84202a206061737365745f7479706560202d2074686520617373657420747970652ec4202a20606964656e7469666965727360202d206120766563746f72206f66206173736574206964656e746966696572732ebc202a206066756e64696e675f726f756e6460202d206e616d65206f66207468652066756e64696e6720726f756e642e5101202a206064697361626c655f697560202d2077686574686572206f72206e6f7420696e766573746f7220756e697175656e65737320656e666f7263656d656e742073686f756c642062652064697361626c65642ecc202020546869732063616e6e6f74206265206368616e676564206166746572206372656174696e67207468652061737365742e0028202323204572726f72730101202d2060496e76616c696441737365744964656e7469666965726020696620616e79206f6620606964656e74696669657273602061726520696e76616c69642e5501202d20604d61784c656e6774684f6641737365744e616d6545786365656465646020696620606e616d65602773206c656e67746820657863656564732060543a3a41737365744e616d654d61784c656e677468602e5901202d206046756e64696e67526f756e644e616d654d61784c656e67746845786365656465646020696620746865206e616d65206f66207468652066756e64696e6720726f756e64206973206c6f6e6765722074686174802060543a3a46756e64696e67526f756e644e616d654d61784c656e677468602ed8202d20604173736574416c726561647943726561746564602069662061737365742077617320616c726561647920637265617465642e6101202d20605469636b6572546f6f4c6f6e676020696620607469636b6572602773206c656e6774682069732067726561746572207468616e2060636f6e6669672e6d61785f7469636b65725f6c656e6774686020636861696e2c20706172616d657465722ea502202d20605469636b65724e6f7441736369696020696620607469636b657260206973206e6f742079657420726567697374657265642c20616e6420636f6e7461696e73206e6f6e2d6173636969207072696e7461626c652063686172616374657273202866726f6d20636f646520333220746f2031323629206f7220616e7920636861726163746572206166746572206669727374206f6363757272656e6365206f6620605c30602e003c202323205065726d697373696f6e7330202a20506f7274666f6c696f18667265657a6504187469636b6572185469636b65722cc020467265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e0030202320417267756d656e7473b8202a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e98202a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e0028202323204572726f7273c4202d2060416c726561647946726f7a656e6020696620607469636b65726020697320616c72656164792066726f7a656e2e00382023205065726d697373696f6e7320202a20417373657420756e667265657a6504187469636b6572185469636b65722cc820556e667265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e0030202320417267756d656e7473b8202a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722eb4202a20607469636b657260202d20746865207469636b6572206f66207468652066726f7a656e20746f6b656e2e0028202323204572726f7273b4202d20604e6f7446726f7a656e6020696620607469636b657260206973206e6f742066726f7a656e207965742e00382023205065726d697373696f6e7320202a2041737365743072656e616d655f617373657408187469636b6572185469636b6572106e616d652441737365744e616d65345c2052656e616d6573206120676976656e20746f6b656e2e0030202320417267756d656e7473b8202a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e98202a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e98202a20606e616d6560202d20746865206e6577206e616d65206f662074686520746f6b656e2e0028202323204572726f72731501202d20604d61784c656e6774684f6641737365744e616d65457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e642060543a3a41737365744e616d654d61784c656e677468602e00382023205065726d697373696f6e7320202a20417373657414697373756508187469636b6572185469636b657218616d6f756e741c42616c616e63652ca82049737375652c206f72206d696e742c206e657720746f6b656e7320746f207468652063616c6c65722c0d01207768696368206d75737420626520616e20617574686f72697a6564206167656e742c20652e672e2c2061207072696d6172792069737375616e6365206167656e742e0030202320417267756d656e7473d4202a20606f726967696e60206d75737420626520746865207365636f6e64617279206b6579206f6620746f6b656e206f776e65722e64202a20607469636b657260206f662074686520746f6b656e2e98202a2060616d6f756e7460206f6620746f6b656e73207468617420676574206973737565642e00382023205065726d697373696f6e7320202a20417373657430202a20506f7274666f6c696f1872656465656d08187469636b6572185469636b65721476616c75651c42616c616e63653cc5012052656465656d73206578697374696e6720746f6b656e73206279207265647563696e67207468652062616c616e6365206f66207468652050494127732064656661756c7420706f7274666f6c696f20616e642074686520746f74616c20737570706c79206f662074686520746f6b656e0030202320417267756d656e7473a4202a20606f726967696e60205365636f6e64617279206b6579206f6620746f6b656e206f776e65722e80202a20607469636b657260205469636b6572206f662074686520746f6b656e2e98202a206076616c75656020416d6f756e74206f6620746f6b656e7320746f2072656465656d2e00242023204572726f72733101202d2060556e617574686f72697a6564602049662063616c6c656420627920736f6d656f6e65206f74686572207468616e2074686520746f6b656e206f776e6572206f7220746865205049415d01202d2060496e76616c69644772616e756c6172697479602049662074686520616d6f756e74206973206e6f7420646976697369626c652062792031305e3620666f72206e6f6e2d646976697369626c6520746f6b656e738501202d2060496e73756666696369656e74506f7274666f6c696f42616c616e636560204966207468652050494127732064656661756c7420706f7274666f6c696f20646f65736e2774206861766520656e6f75676820667265652062616c616e636500382023205065726d697373696f6e7320202a20417373657430202a20506f7274666f6c696f386d616b655f646976697369626c6504187469636b6572185469636b65722c1901204d616b657320616e20696e646976697369626c6520746f6b656e20646976697369626c652e204f6e6c792063616c6c65642062792074686520746f6b656e206f776e65722e0030202320417267756d656e7473b4202a20606f726967696e60205365636f6e64617279206b6579206f662074686520746f6b656e206f776e65722e80202a20607469636b657260205469636b6572206f662074686520746f6b656e2e0028202323204572726f7273f0202d20604173736574416c7265616479446976697369626c656020696620607469636b65726020697320616c726561647920646976697369626c652e00382023205065726d697373696f6e7320202a204173736574346164645f646f63756d656e74730810646f6373345665633c446f63756d656e743e187469636b6572185469636b6572241d012041646420646f63756d656e747320666f72206120676976656e20746f6b656e2e20546f2062652063616c6c6564206f6e6c792062792074686520746f6b656e206f776e65722e0030202320417267756d656e7473b4202a20606f726967696e60205365636f6e64617279206b6579206f662074686520746f6b656e206f776e65722e80202a20607469636b657260205469636b6572206f662074686520746f6b656e2ebc202a2060646f63736020446f63756d656e747320746f20626520617474616368656420746f20607469636b6572602e00382023205065726d697373696f6e7320202a2041737365744072656d6f76655f646f63756d656e7473080c6964733c5665633c446f63756d656e7449643e187469636b6572185469636b65722429012052656d6f766520646f63756d656e747320666f72206120676976656e20746f6b656e2e20546f2062652063616c6c6564206f6e6c792062792074686520746f6b656e206f776e65722e0030202320417267756d656e7473b4202a20606f726967696e60205365636f6e64617279206b6579206f662074686520746f6b656e206f776e65722e80202a20607469636b657260205469636b6572206f662074686520746f6b656e2ecc202a20606964736020446f63756d656e74732069647320746f2062652072656d6f7665642066726f6d20607469636b6572602e00382023205065726d697373696f6e7320202a204173736574447365745f66756e64696e675f726f756e6408187469636b6572185469636b6572106e616d654046756e64696e67526f756e644e616d6534b0205365747320746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e0030202320417267756d656e7473dc202a20606f726967696e60202d20746865207365636f6e64617279206b6579206f662074686520746f6b656e206f776e6572204449442e98202a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2ee8202a20606e616d6560202d207468652064657369726564206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e0028202323204572726f72732901202d206046756e64696e67526f756e644e616d654d61784c656e677468457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e802060543a3a46756e64696e67526f756e644e616d654d61784c656e677468602e00382023205065726d697373696f6e7320202a204173736574487570646174655f6964656e7469666965727308187469636b6572185469636b65722c6964656e74696669657273505665633c41737365744964656e7469666965723e341901205570646174657320746865206173736574206964656e746966696572732e2043616e206f6e6c792062652063616c6c65642062792074686520746f6b656e206f776e65722e0030202320417267756d656e7473cc202a20606f726967696e60202d20746865207365636f6e64617279206b6579206f662074686520746f6b656e206f776e65722e98202a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e5d01202a20606964656e7469666965727360202d20746865206173736574206964656e7469666965727320746f206265207570646174656420696e2074686520666f726d206f66206120766563746f72206f66207061697273d0202020206f6620604964656e746966696572547970656020616e64206041737365744964656e746966696572602076616c75652e0028202323204572726f72733501202d2060496e76616c696441737365744964656e7469666965726020696620606964656e746966696572736020636f6e7461696e7320616e7920696e76616c6964206964656e7469666965722e00382023205065726d697373696f6e7320202a20417373657450636c61696d5f636c61737369635f7469636b657208187469636b6572185469636b657248657468657265756d5f7369676e61747572653845636473615369676e617475726538010120436c61696d20612073797374656d61746963616c6c7920726573657276656420506f6c796d61746820436c61737369632028504d432920607469636b657260b020616e64207472616e7366657220697420746f2074686520606f726967696e602773206964656e746974792e00410120546f2076657269667920746861742074686520606f726967696e6020697320696e20636f6e74726f6c206f662074686520457468657265756d206163636f756e74206f6e2074686520626f6f6b732c150120616e2060657468657265756d5f7369676e61747572656020636f6e7461696e696e672074686520606f726967696e6027732044494420617320746865206d657373616765ac206d7573742062652070726f7669646564206279207468617420457468657265756d206163636f756e742e00242023204572726f72733501202d20604e6f53756368436c61737369635469636b6572602069662074686973206973206e6f7420612073797374656d61746963616c6c7920726573657276656420504d43207469636b65722e5501202d20605469636b6572416c7265616479526567697374657265646020696620746865207469636b65722077617320616c726561647920726567697374657265642c20652e672e2c20627920606f726967696e602e2101202d20605469636b6572526567697374726174696f6e457870697265646020696620746865207469636b6572277320726567697374726174696f6e2068617320657870697265642e74202d20604261644f726967696e60206966206e6f74207369676e65642e1d01202d2060496e76616c6964457468657265756d5369676e617475726560206966207468652060657468657265756d5f7369676e617475726560206973206e6f742076616c69642e2d01202d20604e6f74416e4f776e6572602069662074686520657468657265756d206163636f756e74206973206e6f7420746865206f776e6572206f662074686520504d43207469636b65722e58726573657276655f636c61737369635f7469636b65720c54636c61737369635f7469636b65725f696d706f72744c436c61737369635469636b6572496d706f727430636f6e74726163745f646964284964656e74697479496418636f6e6669678c5469636b6572526567697374726174696f6e436f6e6669673c543a3a4d6f6d656e743e34a42052657365727665206120506f6c796d61746820436c61737369632028504d4329207469636b65722e1101204d7573742062652063616c6c656420627920726f6f742c20616e642061737369676e7320746865207469636b657220746f20612073797374656d61746963204449442e0030202320417267756d656e74737c202a20606f726967696e60207768696368206d75737420626520726f6f742ef0202a2060636c61737369635f7469636b65725f696d706f7274602073706563696669636174696f6e20666f722074686520504d43207469636b65722e6101202a2060636f6e74726163745f6469646020746f207265736572766520746865207469636b657220746f2069662060636c61737369635f7469636b65725f696d706f72742e69735f636f6e74726163746020686f6c64732ec0202a2060636f6e6669676020746f2075736520666f722065787069727920616e64207469636b6572206c656e6774682e00242023204572726f72734d01202a20604173736574416c726561647943726561746564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b65726020776173206372656174656420617320616e2061737365742e6501202a20605469636b6572546f6f4c6f6e6760206966207468652060636f6e6669676020636f6e736964657273207468652060636c61737369635f7469636b65725f696d706f72742e7469636b65726020746f6f206c6f6e672e5901202a20605469636b6572416c726561647952656769737465726564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b6572602077617320616c726561647920726567697374657265642e4c636f6e74726f6c6c65725f7472616e736665720c187469636b6572185469636b65721476616c75651c42616c616e63653866726f6d5f706f7274666f6c696f2c506f7274666f6c696f496420450120466f726365732061207472616e73666572206f6620746f6b656e2066726f6d206066726f6d5f706f7274666f6c696f6020746f207468652050494127732064656661756c7420706f7274666f6c696f2e94204f6e6c792050494120697320616c6c6f77656420746f206578656375746520746869732e0030202320417267756d656e7473b4202a20606f726967696e60204d75737420626520612050494120666f72206120676976656e207469636b65722e9c202a20607469636b657260205469636b65722073796d626f6c206f66207468652061737365742ed0202a206076616c7565602020416d6f756e74206f6620746f6b656e73206e65656420746f20666f726365207472616e736665722e0101202a206066726f6d5f706f7274666f6c696f602046726f6d2077686f6d20706f7274666f6c696f20746f6b656e732067657473207472616e736665727265642e6872656769737465725f637573746f6d5f61737365745f74797065040874791c5665633c75383e247c20526567697374657273206120637573746f6d20617373657420747970652e00d4205468652070726f766964656420607479602077696c6c20626520626f756e6420746f20616e20494420696e2073746f726167652ec0205468652049442063616e207468656e206265207573656420696e20604173736574547970653a3a437573746f6d602e29012053686f756c6420746865206074796020616c726561647920657869737420696e2073746f726167652c206e6f207365636f6e642049442069732061737369676e656420746f2069742e0030202320417267756d656e747394202a20606f726967696e602077686f2063616c6c6564207468652065787472696e7369632ef4202a206074796020636f6e7461696e732074686520737472696e6720726570726573656e746174696f6e206f662074686520617373657420747970652e0158205472616e7366657214284964656e746974794964185469636b65722c506f7274666f6c696f49642c506f7274666f6c696f49641c42616c616e63650878204576656e7420666f72207472616e73666572206f6620746f6b656e732ee02063616c6c6572204449442c207469636b65722c2066726f6d20706f7274666f6c696f2c20746f20706f7274666f6c696f2c2076616c75651849737375656418284964656e746974794964185469636b6572284964656e7469747949641c42616c616e63654046756e64696e67526f756e644e616d651c42616c616e6365087420456d6974207768656e20746f6b656e7320676574206973737565642e79012063616c6c6572204449442c207469636b65722c2062656e6566696369617279204449442c2076616c75652c2066756e64696e6720726f756e642c20746f74616c2069737375656420696e20746869732066756e64696e6720726f756e642052656465656d656410284964656e746974794964185469636b6572284964656e7469747949641c42616c616e6365087c20456d6974207768656e20746f6b656e73206765742072656465656d65642e942063616c6c6572204449442c207469636b65722c202066726f6d204449442c2076616c75653041737365744372656174656418284964656e746974794964185469636b657210626f6f6c24417373657454797065284964656e74697479496410626f6f6c0884204576656e7420666f72206372656174696f6e206f66207468652061737365742e99012063616c6c6572204449442f206f776e6572204449442c207469636b65722c2064697669736962696c6974792c20617373657420747970652c2062656e6566696369617279204449442c2064697361626c6520696e766573746f7220756e697175656e657373484964656e74696669657273557064617465640c284964656e746974794964185469636b6572505665633c41737365744964656e7469666965723e08d8204576656e7420656d6974746564207768656e20616e7920746f6b656e206964656e746966696572732061726520757064617465642e11012063616c6c6572204449442c207469636b65722c206120766563746f72206f6620286964656e74696669657220747970652c206964656e7469666965722076616c7565294c44697669736962696c6974794368616e6765640c284964656e746974794964185469636b657210626f6f6c0888204576656e7420666f72206368616e676520696e2064697669736962696c6974792e842063616c6c6572204449442c207469636b65722c2064697669736962696c697479405472616e73666572576974684461746118284964656e746974794964185469636b6572284964656e746974794964284964656e7469747949641c42616c616e63651c5665633c75383e08390120416e206164646974696f6e616c206576656e7420746f205472616e736665723b20656d6974746564207768656e20607472616e736665725f776974685f64617461602069732063616c6c65642ecc2063616c6c657220444944202c207469636b65722c2066726f6d204449442c20746f204449442c2076616c75652c20646174612849734973737561626c6508185469636b657210626f6f6c08542069735f6973737561626c652829206f7574707574a0207469636b65722c2072657475726e2076616c7565202874727565206966206973737561626c6529405469636b6572526567697374657265640c284964656e746974794964185469636b6572384f7074696f6e3c4d6f6d656e743e088020456d6974207768656e207469636b657220697320726567697374657265642ef02063616c6c657220444944202f207469636b6572206f776e6572206469642c207469636b65722c207469636b6572206f776e65722c20657870697279445469636b65725472616e736665727265640c284964656e746974794964185469636b6572284964656e746974794964088420456d6974207768656e207469636b6572206973207472616e736665727265642ed42063616c6c657220444944202f207469636b6572207472616e7366657272656420746f204449442c207469636b65722c2066726f6d6441737365744f776e6572736869705472616e736665727265640c284964656e746974794964185469636b6572284964656e74697479496408a820456d6974207768656e20746f6b656e206f776e657273686970206973207472616e736665727265642ef82063616c6c657220444944202f20746f6b656e206f776e657273686970207472616e7366657272656420746f204449442c207469636b65722c2066726f6d2c417373657446726f7a656e08284964656e746974794964185469636b657208a820416e206576656e7420656d6974746564207768656e20616e2061737365742069732066726f7a656e2e7c20506172616d657465723a2063616c6c6572204449442c207469636b65722e344173736574556e66726f7a656e08284964656e746974794964185469636b657208b020416e206576656e7420656d6974746564207768656e20616e20617373657420697320756e66726f7a656e2e7c20506172616d657465723a2063616c6c6572204449442c207469636b65722e30417373657452656e616d65640c284964656e746974794964185469636b65722441737365744e616d6508a820416e206576656e7420656d6974746564207768656e206120746f6b656e2069732072656e616d65642ec020506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720746f6b656e206e616d652e3c46756e64696e67526f756e645365740c284964656e746974794964185469636b65724046756e64696e67526f756e644e616d6508150120416e206576656e74206361727279696e6720746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e64206f662061207469636b65722ed020506172616d65746572733a2063616c6c6572204449442c207469636b65722c2066756e64696e6720726f756e64206e616d652e34446f63756d656e74416464656410284964656e746974794964185469636b657228446f63756d656e74496420446f63756d656e7404902041206e657720646f63756d656e7420617474616368656420746f20616e2061737365743c446f63756d656e7452656d6f7665640c284964656e746974794964185469636b657228446f63756d656e7449640484204120646f63756d656e742072656d6f7665642066726f6d20616e20617373657440457874656e73696f6e52656d6f7665640c284964656e746974794964185469636b6572244163636f756e7449640864204120657874656e73696f6e20676f742072656d6f7665642e782063616c6c6572204449442c207469636b65722c204163636f756e74496450436c61737369635469636b6572436c61696d65640c284964656e746974794964185469636b65723c457468657265756d41646472657373043901204120506f6c796d61746820436c617373696320746f6b656e2077617320636c61696d656420616e64207472616e7366657272656420746f2061206e6f6e2d73797374656d61746963204449442e48436f6e74726f6c6c65725472616e7366657210284964656e746974794964185469636b65722c506f7274666f6c696f49641c42616c616e636508b8204576656e7420666f72207768656e206120666f72636564207472616e736665722074616b657320706c6163652e19012063616c6c6572204449442f20636f6e74726f6c6c6572204449442c207469636b65722c20506f7274666f6c696f206f6620746f6b656e20686f6c6465722c2076616c75652e54437573746f6d4173736574547970654578697374730c284964656e74697479496444437573746f6d41737365745479706549641c5665633c75383e08b4204120637573746f6d206173736574207479706520616c726561647920657869737473206f6e2d636861696e2e35012063616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e64437573746f6d417373657454797065526567697374657265640c284964656e74697479496444437573746f6d41737365745479706549641c5665633c75383e08b4204120637573746f6d2061737365742074797065207761732072656769737465726564206f6e2d636861696e2e35012063616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e0c784d61784e756d6265724f66544d457874656e73696f6e466f7241737365740c7533321005000000004841737365744e616d654d61784c656e6774680c7533321080000000006446756e64696e67526f756e644e616d654d61784c656e6774680c7533321080000000007830556e617574686f72697a65640470205468652075736572206973206e6f7420617574686f72697a65642e3c416c726561647941726368697665640484205768656e20657874656e73696f6e20616c72656164792061726368697665642e44416c7265616479556e41726368697665640490205768656e20657874656e73696f6e20616c726561647920756e2d61726368697665642e5c457874656e73696f6e416c726561647950726573656e740484205768656e20657874656e73696f6e20697320616c72656164792061646465642e4c4173736574416c72656164794372656174656404902054686520746f6b656e2068617320616c7265616479206265656e20637265617465642e345469636b6572546f6f4c6f6e67049420546865207469636b6572206c656e677468206973206f76657220746865206c696d69742e385469636b65724e6f74417363696904a020546865207469636b657220686173206e6f6e2d61736369692d656e636f6465642070617274732e5c5469636b6572416c72656164795265676973746572656404c820546865207469636b657220697320616c7265616479207265676973746572656420746f20736f6d656f6e6520656c73652e54546f74616c537570706c7941626f76654c696d697404942054686520746f74616c20737570706c792069732061626f766520746865206c696d69742e2c4e6f537563684173736574043c204e6f207375636820746f6b656e2e34416c726561647946726f7a656e04742054686520746f6b656e20697320616c72656164792066726f7a656e2e284e6f74416e4f776e6572046c204e6f7420616e206f776e6572206f662074686520746f6b656e2e3c42616c616e63654f766572666c6f7704ac20416e206f766572666c6f77207768696c652063616c63756c6174696e67207468652062616c616e63652e4c546f74616c537570706c794f766572666c6f7704c020416e206f766572666c6f77207768696c652063616c63756c6174696e672074686520746f74616c20737570706c792e48496e76616c69644772616e756c6172697479046020416e20696e76616c6964206772616e756c61726974792e244e6f7446726f7a656e046820546865206173736574206d7573742062652066726f7a656e2e3c496e76616c69645472616e736665720488205472616e736665722076616c69646174696f6e20636865636b206661696c65642e4c496e73756666696369656e7442616c616e63650498205468652073656e6465722062616c616e6365206973206e6f742073756666696369656e742e544173736574416c7265616479446976697369626c6504802054686520746f6b656e20697320616c726561647920646976697369626c652e784d6178696d756d544d457874656e73696f6e4c696d697452656163686564049d01204e756d626572206f66205472616e73666572204d616e6167657220657874656e73696f6e7320617474616368656420746f20616e20617373657420697320657175616c20746f204d61784e756d6265724f66544d457874656e73696f6e466f7241737365742e70496e636f6d70617469626c65457874656e73696f6e56657273696f6e04e020476976656e20736d61727420657874656e73696f6e206973206e6f7420636f6d70617469626c652077697468207468652061737365742e60496e76616c6964457468657265756d5369676e6174757265049820416e20696e76616c696420457468657265756d206045636473615369676e6174757265602e4c4e6f53756368436c61737369635469636b6572049c2054686520676976656e207469636b6572206973206e6f74206120636c6173736963206f6e652e645469636b6572526567697374726174696f6e45787069726564049020526567697374726174696f6e206f66207469636b65722068617320657870697265642e5053656e64657253616d65417352656365697665720488205472616e736665727320746f2073656c6620617265206e6f7420616c6c6f776564244e6f53756368446f63048c2054686520676976656e20446f63756d656e7420646f6573206e6f742065786973742e704d61784c656e6774684f6641737365744e616d65457863656564656404c0204d6178696d756d206c656e677468206f66206173736574206e616d6520686173206265656e2065786365656465642e8446756e64696e67526f756e644e616d654d61784c656e677468457863656564656404f0204d6178696d756d206c656e677468206f66207468652066756e64696e6720726f756e64206e616d6520686173206265656e2065786365656465642e58496e76616c696441737365744964656e746966696572049020536f6d65206041737365744964656e746966696572602077617320696e76616c69642e64437573746f6d41737365745479706549644f766572666c6f7704ec20416e206f766572666c6f77207768696c652067656e65726174696e6720746865206e6578742060437573746f6d4173736574547970654964602e1a4c4361706974616c446973747269627574696f6e014c4361706974616c446973747269627574696f6e0c34446973747269627574696f6e73000102104341496430446973747269627574696f6e0004000c350120416c6c206361706974616c20646973747269627574696f6e732c207469656420746f207468656972207265737065637469766520636f72706f7261746520616374696f6e732028434173292e005c20284341496429203d3e20446973747269627574696f6e28486f6c646572506169640101024828434149642c204964656e7469747949642910626f6f6c0004000c8c2048617320616e20617373657420686f6c646572206265656e2070616964207965743f00a42028434149642c2044494429202d3e2057617320444944207061696420696e2074686520434149643f3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e011428646973747269627574651c1463615f6964104341496424706f7274666f6c696f5c4f7074696f6e3c506f7274666f6c696f4e756d6265723e2063757272656e6379185469636b6572247065725f73686172651c42616c616e636518616d6f756e741c42616c616e6365287061796d656e745f6174184d6f6d656e7428657870697265735f6174384f7074696f6e3c4d6f6d656e743ea4290120537461727420616e64206174746163682061206361706974616c20646973747269627574696f6e2c20746f20746865204341206964656e746966696564206279206063615f6964602c690120776974682060616d6f756e74602066756e647320696e206063757272656e6379602077697468647261776e2066726f6d2060706f7274666f6c696f602062656c6f6e67696e6720746f20606f726967696e602773204449442e002d012054686520646973747269627574696f6e2077696c6c20636f6d6d656e636520617420607061796d656e745f61746020616e64206578706972652061742060657870697265735f6174602ccc2069662070726f76696465642c206f7220696620604e6f6e65602c207468656e2074686572652773206e6f206578706972792e002901205468652066756e64732077696c6c206265206c6f636b656420696e2060706f7274666f6c696f602066726f6d207768656e206064697374726962757465602069732063616c6c65642e3901205768656e2074686572652773206e6f206578706972792c20736f6d652066756e6473206d6179206265206c6f636b656420696e646566696e6974656c7920696e2060706f7274666f6c696f602c19012064756520746f20636c61696d616e7473206e6f74207769746864726177696e67206f72206e6f2062656e6566697473206265696e672070757368656420746f207468656d2e2d0120466f7220696e646976697369626c652063757272656e636965732c20756e6c6f636b656420616d6f756e74732c206f66206c657373207468616e206f6e652077686f6c6520756e69742cac2077696c6c206e6f74206265207472616e7366657261626c652066726f6d2060706f7274666f6c696f602e510120486f77657665722c20696620776520696d6167696e6520746861742075736572732060416c6963656020616e642060426f626020626f74682061726520656e7469746c656420746f20312e3520756e6974732c550120616e64206f6e6c7920726563656976652060316020756e69747320656163682c207468656e2060302e35202b20302e35203d20316020756e69747320617265206c65667420696e2060706f7274666f6c696f602c70207768696368206973206e6f77207472616e736665727261626c652e003420232320417267756d656e7473e0202d20606f726967696e60207768696368206d7573742062652061207369676e657220666f72206120434141206f66206063615f6964602e0501202d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e5501202d2060706f7274666f6c696f60207370656369666965732074686520706f7274666f6c696f206e756d626572206f66207468652043414120746f20646973747269627574652060616d6f756e74602066726f6d2ef8202d206063757272656e63796020746f20776974686472617720616e6420646973747269627574652066726f6d207468652060706f7274666f6c696f602efc202d20607065725f73686172656020616d6f756e74206f66206063757272656e63796020746f20776974686472617720616e6420646973747269627574652e2901202020205370656369666965642061732061207065722d6d696c6c696f6e2c20692e652e206031202f2031305e36607468206f66206f6e65206063757272656e63796020746f6b656e2ef4202d2060616d6f756e7460206f66206063757272656e63796020746f20776974686472617720616e642064697374726962757465206174206d6f73742e1d01202d20607061796d656e745f61746020737065636966696573207768656e2062656e6566697473206d617920666972737420626520707573686564206f7220636c61696d65642e2d01202d2060657870697265735f617460207370656369666965732c2069662070726f76696465642c207768656e2072656d61696e696e672062656e65666974732061726520666f72666569749420202020616e64206d6179206265207265636c61696d656420627920606f726967696e602e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed4202d2060446973747269627574696e67417373657460206966206063615f69642e7469636b6572203d3d2063757272656e6379602e0101202d20604578706972794265666f72655061796d656e74602069662060657870697265735f61742e756e777261702829203c3d207061796d656e745f6174602ee8202d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412eac202d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652eec202d20605265636f72644461746541667465725374617274602069662043412773207265636f72642064617465203e207061796d656e745f61742e1901202d2060556e617574686f72697a6564437573746f6469616e6020696620434141206973206e6f742074686520637573746f6469616e206f662060706f7274666f6c696f602e5901202d2060496e73756666696369656e74506f7274666f6c696f42616c616e6365602069662060706f7274666f6c696f6020686173206c657373207468616e2060616d6f756e7460206f66206063757272656e6379602e0501202d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e00382023205065726d697373696f6e7320202a20417373657430202a20506f7274666f6c696f14636c61696d041463615f696410434149645c050120436c61696d20612062656e65666974206f6620746865206361706974616c20646973747269627574696f6e20617474616368656420746f206063615f6964602e00ac20546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5d0120506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e00150120416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e3d01204d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c9c20746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e003420232320417267756d656e7473ec202d20606f726967696e60207768696368206d757374206265206120686f6c646572206f6620666f72206120434141206f66206063615f6964602e0501202d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e00242023204572726f72732901202d2060486f6c646572416c7265616479506169646020696620606f726967696e602773204449442068617320616c7265616479207265636569766564206974732062656e656669742e1d01202d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec8202d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee8202d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee8202d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef8202d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e3901202d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e3901202d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e2501202d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e30707573685f62656e65666974081463615f6964104341496418686f6c646572284964656e74697479496460fc20507573682062656e65666974206f6620616e206f6e676f696e6720646973747269627574696f6e20746f2074686520676976656e2060686f6c646572602e00ac20546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5d0120506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e00150120416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e3d01204d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c9c20746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e003420232320417267756d656e7473ec202d20606f726967696e60207768696368206d757374206265206120686f6c646572206f6620666f72206120434141206f66206063615f6964602e3d01202d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e7320746f20707573682062656e656669747320666f722e80202d2060686f6c6465726020746f20707573682062656e656669747320746f2e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e1d01202d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec8202d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee8202d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee8202d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ee0202d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f74207461726765742060686f6c646572602e3901202d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e3901202d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e2501202d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e1c7265636c61696d041463615f696410434149642c9420417373756d696e67206120646973747269627574696f6e2068617320657870697265642ce820756e6c6f636b207468652072656d61696e696e6720616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e003420232320417267756d656e74734901202d20606f726967696e60207768696368206d757374206265207468652063726561746f72206f6620746865206361706974616c20646973747269627574696f6e207469656420746f206063615f6964602e2101202d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e20746f207265636c61696d20666f722e00242023204572726f72731d01202d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602e3101202d2060416c72656164795265636c61696d65646020696620746869732066756e6374696f6e2068617320616c7265616479206265656e2063616c6c6564207375636365737366756c6c792e88202d20604e6f74457870697265646020696620606e6f77203c20657870697279602e4c72656d6f76655f646973747269627574696f6e041463615f696410434149642cc02052656d6f766573206120646973747269627574696f6e2074686174206861736e27742073746172746564207965742ce020756e6c6f636b696e67207468652066756c6c20616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e003420232320417267756d656e7473e0202d20606f726967696e60207768696368206d7573742062652061207369676e657220666f72206120434141206f66206063615f6964602e4d01202d206063615f696460206964656e7469666965732074686520434120776974682061206e6f742d7965742d73746172746564206361706974616c20646973747269627574696f6e20746f2072656d6f76652e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e1d01202d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec0202d2060446973747269627574696f6e537461727465646020696620607061796d656e745f6174203c3d206e6f77602e01101c437265617465640c204576656e74446964104341496430446973747269627574696f6e10bc2041206361706974616c20646973747269627574696f6e2c20776974682064657461696c7320696e636c756465642c150120776173206372656174656420627920746865204449442028746865204341412920666f72207468652043412073706563696669656420627920746865206043414964602e00d82028434141206f6620434149642773207469636b65722c20434127732049442c20646973747269627574696f6e2064657461696c73293842656e65666974436c61696d656418204576656e74446964204576656e74446964104341496430446973747269627574696f6e1c42616c616e63650c5461780c5501204120746f6b656e20686f6c64657227732062656e65666974206f662061206361706974616c20646973747269627574696f6e20666f722074686520676976656e206043414964602077617320636c61696d65642e009501202843616c6c6572204449442c20486f6c6465722f436c61696d616e74204449442c20434127732049442c207570646174656420646973747269627574696f6e2064657461696c732c2044494427732062656e656669742c20444944277320746178202529245265636c61696d65640c204576656e7444696410434149641c42616c616e63650c9c2053746174732066726f6d2060707573685f62656e65666974602077617320656d69747465642e00550120284341412f6f776e6572206f662043412773207469636b65722c20434127732049442c206d61782072657175657374656420444944732c2070726f63657373656420444944732c206661696c65642044494473291c52656d6f76656408204576656e7444696410434149640c902041206361706974616c20646973747269627574696f6e207761732072656d6f7665642e006020285469636b65722773204341412c20434127732049442900383043414e6f7442656e6566697404c8204120636f72706f726174652062616c6c6f7420776173206d61646520666f722061206e6f6e2d62656e656669742043412e34416c726561647945786973747304ac204120646973747269627574696f6e20616c72656164792065786973747320666f7220746869732043412e4c4578706972794265666f72655061796d656e74082d01204120646973747269627574696f6e732070726f766964656420657870697279206461746520776173207374726963746c79206265666f726520697473207061796d656e7420646174652e250120496e206f7468657220776f7264732c2065766572797468696e6720746f206469737472696275746520776f756c6420696d6d6564696174656c7920626520666f726665697465642e44446973747269627574696e67417373657408f42043757272656e63792074686174206973206469737472696275746564206973207468652073616d65206173207468652043412773207469636b65722e45012043414120697320617474656d7074696e67206120666f726d206f662073746f636b2073706c69742c207768696368206973206e6f742077686174207468652065787472696e73696320697320666f722e44486f6c646572416c72656164795061696404d82054686520746f6b656e20686f6c6465722068617320616c7265616479206265656e20706169642074686569722062656e656669742e484e6f53756368446973747269627574696f6e04c82041206361706974616c20646973747269627574696f6e20646f65736e277420657869737420666f7220746869732043412e5843616e6e6f74436c61696d4265666f7265537461727404650120446973747269627574696f6e20616c6c6f746d656e742063616e6e6f7420626520636c61696d6564206173207468652063757272656e742074696d65206973206265666f72652073746172742d6f662d7061796d656e742e5843616e6e6f74436c61696d4166746572457870697279046d0120446973747269627574696f6e27732065787069727920686173207061737365642e204449442063616e6e6f7420636c61696d20616e796d6f726520616e642068617320666f72666569746564207468652062656e65666974732e8042616c616e6365506572536861726550726f647563744f766572666c6f776564042d01204d756c7469706c69636174696f6e206f66207468652062616c616e636520776974682074686520706572207368617265207061796f757420616d6f756e74206f766572666c6f7765642e584e6f74446973747269627574696f6e43726561746f7204c420444944206973206e6f7420746865206f6e652077686f20637265617465642074686520646973747269627574696f6e2e40416c72656164795265636c61696d656404d8204449442077686f20637265617465642074686520646973747269627574696f6e20616c726561647920646964207265636c61696d2e284e6f744578706972656404f420446973747269627574696f6e20686164206e6f742065787069726564207965742c206f722074686572652773206e6f2065787069727920646174652e4c446973747269627574696f6e53746172746564040501204120646973747269627574696f6e20686173206265656e206163746976617465642c20617320607061796d656e745f6174203c3d206e6f776020686f6c64732e6c496e73756666696369656e7452656d61696e696e67416d6f756e74043101204120646973747269627574696f6e2068617320696e73756666696369656e742072656d61696e696e6720616d6f756e74206f662063757272656e637920746f20646973747269627574652e1b28436865636b706f696e740128436865636b706f696e742c2c546f74616c537570706c79010202185469636b657230436865636b706f696e74496470706f6c796d6573685f7072696d6974697665733a3a42616c616e63650540000000000000000000000000000000000cb420546f74616c20737570706c79206f662074686520746f6b656e2061742074686520636865636b706f696e742e00ec20287469636b65722c20636865636b706f696e74496429202d3e20746f74616c20737570706c7920617420676976656e20636865636b706f696e741c42616c616e636501020258285469636b65722c20436865636b706f696e74496429284964656e74697479496470706f6c796d6573685f7072696d6974697665733a3a42616c616e63650540000000000000000000000000000000000c882042616c616e6365206f66206120444944206174206120636865636b706f696e742e00050120287469636b65722c206469642c20636865636b706f696e7420494429202d3e2042616c616e6365206f66206120444944206174206120636865636b706f696e7450436865636b706f696e74496453657175656e6365010102185469636b657230436865636b706f696e74496400200000000000000000108c20436865636b706f696e74732049442067656e657261746f722073657175656e63652ea8204944206f6620666972737420636865636b706f696e74206973203120696e7374656164206f6620302e007c20287469636b657229202d3e206e6f2e206f6620636865636b706f696e74733842616c616e636555706461746573010202185469636b6572284964656e746974794964445665633c436865636b706f696e7449643e05040008bc20436865636b706f696e747320776865726520612044494427732062616c616e63652077617320757064617465642ef020287469636b65722c2064696429202d3e205b636865636b706f696e7420494420776865726520757365722062616c616e6365206368616e6765645d2854696d657374616d7073010202185469636b657230436865636b706f696e744964184d6f6d656e7405200000000000000000185c20436865636b706f696e742074696d657374616d70732e000901204576657279207363686564756c652d6f726967696e6174656420636865636b706f696e74206d6170732069747320494420746f20697473206475652074696d652e210120457665727920636865636b706f696e74206d616e75616c6c792063726561746564206d6170732069747320494420746f207468652074696d65206f66207265636f7264696e672e00d020287469636b657229202d3e2028636865636b706f696e7420494429202d3e20636865636b706f696e742074696d657374616d70585363686564756c65734d6178436f6d706c657869747901000c75363420000000000000000008190120546865206d6178696d756d20636f6d706c657869747920616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365749c2028692e652e20605363686564756c6573602073746f72616765206974656d2062656c6f77292e485363686564756c65496453657175656e6365010102185469636b6572285363686564756c654964002000000000000000000cb420436865636b706f696e74207363686564756c652049442073657175656e636520666f72207469636b6572732e006020287469636b657229202d3e207363686564756c65204944245363686564756c6573010102185469636b65724c5665633c53746f7265645363686564756c653e0004000c8820436865636b706f696e74207363686564756c657320666f72207469636b6572732e005c20287469636b657229202d3e205b7363686564756c655d405363686564756c65526566436f756e74010202185469636b6572285363686564756c6549640c75333205100000000020010120486f77206d616e7920227374726f6e6722207265666572656e6365732061726520746865726520746f206120676976656e20605363686564756c654964603f00fc205468652070726573656e6365206f66206120227374726f6e6722207265666572656e63652c20696e207468652073656e7365206f66206052633c543e602ce020656e7461696c73207468617420746865207265666572656e636564207363686564756c652063616e6e6f742062652072656d6f7665642ed820546875732c206173206c6f6e6720617320607374726f6e675f7265665f636f756e74287363686564756c655f696429203e2030602cac206072656d6f76655f7363686564756c65287363686564756c655f696429602077696c6c206572726f722e00a820287469636b65722c207363686564756c6520494429202d3e207374726f6e672072656620636f756e74385363686564756c65506f696e7473010202185469636b6572285363686564756c654964445665633c436865636b706f696e7449643e0504000cc420416c6c2074686520636865636b706f696e7473206120676976656e207363686564756c65206f726967696e617465642e00a420287469636b65722c207363686564756c6520494429202d3e205b636865636b706f696e742049445d3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0110446372656174655f636865636b706f696e7404187469636b6572185469636b657224c4204372656174657320612073696e676c6520636865636b706f696e74206174207468652063757272656e742074696d652e0030202320417267756d656e74732501202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602ea4202d20607469636b65726020746f206372656174652074686520636865636b706f696e7420666f722e00242023204572726f72735901202d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e1d01202d2060436865636b706f696e744f766572666c6f77602069662074686520746f74616c20636865636b706f696e7420636f756e74657220776f756c64206f766572666c6f772e707365745f7363686564756c65735f6d61785f636f6d706c657869747904386d61785f636f6d706c65786974790c753634245d01205365747320746865206d617820636f6d706c6578697479206f662061207363686564756c652073657420666f7220616e20617262697472617279207469636b657220746f20606d61785f636f6d706c6578697479602ebc20546865206e6577206d6178696d756d206973206e6f7420656e666f7263656420726574726f6163746976656c792cb820616e64206f6e6c79206170706c696573206f6e6365206e6577207363686564756c657320617265206d6164652e00ac204d7573742062652063616c6c6564206173206120504950202872657175697265732022726f6f7422292e0030202320417267756d656e74737c202d20606f726967696e602069732074686520726f6f74206f726967696e2e0d01202d20606d61785f636f6d706c65786974796020616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365742e3c6372656174655f7363686564756c6508187469636b6572185469636b6572207363686564756c65305363686564756c655370656350a820437265617465732061207363686564756c652067656e65726174696e6720636865636b706f696e7473d820696e20746865206675747572652061742065697468657220612066697865642074696d65206f7220617420696e74657276616c732e000d0120546865207363686564756c6520737461727473206f7574207769746820607374726f6e675f7265665f636f756e74287363686564756c655f696429203c2d2030602e0030202320417267756d656e74732501202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e9c202d20607469636b65726020746f2063726561746520746865207363686564756c6520666f722eb4202d20607363686564756c656020746861742077696c6c2067656e657261746520636865636b706f696e74732e00242023204572726f72735901202d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e1101202d20605363686564756c654475726174696f6e546f6f53686f72746020696620746865207363686564756c65206475726174696f6e20697320746f6f2073686f72742e2501202d2060496e73756666696369656e744163636f756e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c64206e6f7420626520636861726765642e0101202d20605363686564756c654f766572666c6f776020696620746865207363686564756c6520494420636f756e74657220776f756c64206f766572666c6f772e1d01202d2060436865636b706f696e744f766572666c6f77602069662074686520746f74616c20636865636b706f696e7420636f756e74657220776f756c64206f766572666c6f772e6101202d20604661696c6564546f436f6d707574654e657874436865636b706f696e746020696620746865206e65787420636865636b706f696e7420666f7220607363686564756c656020697320696e2074686520706173742e00382023205065726d697373696f6e7320202a2041737365743c72656d6f76655f7363686564756c6508187469636b6572185469636b6572086964285363686564756c6549643801012052656d6f7665732074686520636865636b706f696e74207363686564756c65206f6620616e206173736574206964656e74696669656420627920606964602e0030202320417267756d656e74732501202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602ea0202d20607469636b65726020746f2072656d6f766520746865207363686564756c652066726f6d2e0d01202d2060696460206f6620746865207363686564756c652c207768656e2069742077617320637265617465642062792060637265617465645f7363686564756c65602e00242023204572726f72735901202d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e4501202d20604e6f436865636b706f696e745363686564756c6560206966206069646020646f6573206e6f74206964656e746966792061207363686564756c6520666f72207468697320607469636b6572602ef8202d20605363686564756c654e6f7452656d6f7661626c656020696620606964602065786973747320627574206973206e6f742072656d6f7661626c652e00382023205065726d697373696f6e7320202a204173736574011044436865636b706f696e744372656174656414404f7074696f6e3c4576656e744469643e185469636b657230436865636b706f696e7449641c42616c616e6365184d6f6d656e740c68204120636865636b706f696e742077617320637265617465642e002101202863616c6c6572204449442c207469636b65722c20636865636b706f696e742049442c20746f74616c20737570706c792c20636865636b706f696e742074696d657374616d7029844d6178696d756d5363686564756c6573436f6d706c65786974794368616e67656408284964656e7469747949640c7536340c2d0120546865206d6178696d756d20636f6d706c657869747920666f7220616e20617262697472617279207469636b65722773207363686564756c652073657420776173206368616e6765642e006820284743204449442c20746865206e6577206d6178696d756d293c5363686564756c65437265617465640c204576656e74446964185469636b65723853746f7265645363686564756c650c8c204120636865636b706f696e74207363686564756c652077617320637265617465642e007c202863616c6c6572204449442c207469636b65722c207363686564756c65293c5363686564756c6552656d6f7665640c284964656e746974794964185469636b65723853746f7265645363686564756c650c8c204120636865636b706f696e74207363686564756c65207761732072656d6f7665642e007c202863616c6c6572204449442c207469636b65722c207363686564756c6529001c48436865636b706f696e744f766572666c6f7704c420416e206f766572666c6f77207768696c652063616c63756c6174696e672074686520636865636b706f696e742049442e405363686564756c654f766572666c6f7704e820416e206f766572666c6f77207768696c652063616c63756c6174696e672074686520636865636b706f696e74207363686564756c652049442e384e6f537563685363686564756c6504d0204120636865636b706f696e74207363686564756c6520646f6573206e6f7420657869737420666f72207468652061737365742e505363686564756c654e6f7452656d6f7661626c65042101204120636865636b706f696e74207363686564756c65206973206e6f742072656d6f7661626c6520617320607265665f636f756e74287363686564756c655f696429203e2030602e744661696c6564546f436f6d707574654e657874436865636b706f696e74089c204661696c656420746f20636f6d7075746520746865206e65787420636865636b706f696e742ed420546865207363686564756c6520646f6573206e6f74206861766520616e79207570636f6d696e6720636865636b706f696e74732e605363686564756c654475726174696f6e546f6f53686f727404c020546865206475726174696f6e206f662061207363686564756c6520706572696f6420697320746f6f2073686f72742e4c5363686564756c6573546f6f436f6d706c657808d42054686520736574206f66207363686564756c65732074616b656e20746f6765746865722061726520746f6f20636f6d706c65782efc20466f72206578616d706c652c20746865792061726520746f6f206d616e792c206f722074686579206f636375727320746f6f206672657175656e746c792e1c44436f6d706c69616e63654d616e616765720144436f6d706c69616e63654d616e616765720c404173736574436f6d706c69616e636573010102185469636b65723c4173736574436f6d706c69616e63650008000004e820417373657420636f6d706c69616e636520666f722061207469636b657220285469636b6572202d3e204173736574436f6d706c69616e6365294854727573746564436c61696d497373756572010102185469636b6572485665633c547275737465644973737565723e00040004dc204c697374206f66207472757374656420636c61696d20697373756572205469636b6572202d3e20497373756572204964656e746974793853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0124686164645f636f6d706c69616e63655f726571756972656d656e740c187469636b6572185469636b65724473656e6465725f636f6e646974696f6e73385665633c436f6e646974696f6e3e4c72656365697665725f636f6e646974696f6e73385665633c436f6e646974696f6e3e2c09012041646473206120636f6d706c69616e636520726571756972656d656e7420746f20616e206173736574277320636f6d706c69616e6365206279207469636b65722efc2049662074686520636f6d706c69616e636520726571756972656d656e742069732061206475706c69636174652c20697420646f6573206e6f7468696e672e0030202320417267756d656e74733101202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65727c202a207469636b6572202d2053796d626f6c206f6620746865206173736574c8202a2073656e6465725f636f6e646974696f6e73202d2053656e646572207472616e7366657220636f6e646974696f6e732ed8202a2072656365697665725f636f6e646974696f6e73202d205265636569766572207472616e7366657220636f6e646974696f6e732e00382023205065726d697373696f6e7320202a2041737365747472656d6f76655f636f6d706c69616e63655f726571756972656d656e7408187469636b6572185469636b65720869640c75333224f42052656d6f766573206120636f6d706c69616e636520726571756972656d656e742066726f6d20616e206173736574277320636f6d706c69616e63652e0030202320417267756d656e74733101202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65727c202a207469636b6572202d2053796d626f6c206f6620746865206173736574f4202a206964202d20436f6d706c69616e636520726571756972656d656e74206964207768696368206973206e65656420746f2062652072656d6f76656400382023205065726d697373696f6e7320202a204173736574607265706c6163655f61737365745f636f6d706c69616e636508187469636b6572185469636b65724061737365745f636f6d706c69616e6365685665633c436f6d706c69616e6365526571756972656d656e743e300101205265706c6163657320616e206173736574277320636f6d706c69616e6365206279207469636b657220776974682061206e657720636f6d706c69616e63652e0030202320417267756d656e74737c202a20607469636b657260202d20746865206173736574207469636b65722cc0202a206061737365745f636f6d706c69616e6365202d20746865206e657720617373657420636f6d706c69616e63652e00242023204572726f7273f4202a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722eb501202a20604475706c69636174654173736574436f6d706c69616e636560206966206061737365745f636f6d706c69616e63656020636f6e7461696e73206d756c7469706c6520656e74726965732077697468207468652073616d652060726571756972656d656e745f6964602e00382023205065726d697373696f6e7320202a2041737365745872657365745f61737365745f636f6d706c69616e636504187469636b6572185469636b657220782052656d6f76657320616e206173736574277320636f6d706c69616e63650030202320417267756d656e74733101202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65727c202a207469636b6572202d2053796d626f6c206f662074686520617373657400382023205065726d697373696f6e7320202a2041737365745870617573655f61737365745f636f6d706c69616e636504187469636b6572185469636b6572201501205061757365732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e0030202320417267756d656e74733101202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65727c202a207469636b6572202d2053796d626f6c206f662074686520617373657400382023205065726d697373696f6e7320202a2041737365745c726573756d655f61737365745f636f6d706c69616e636504187469636b6572185469636b657220190120526573756d65732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e0030202320417267756d656e74733101202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65727c202a207469636b6572202d2053796d626f6c206f662074686520617373657400382023205065726d697373696f6e7320202a204173736574806164645f64656661756c745f747275737465645f636c61696d5f69737375657208187469636b6572185469636b657218697373756572345472757374656449737375657224fc204164647320616e6f746865722064656661756c74207472757374656420636c61696d2069737375657220617420746865207469636b6572206c6576656c2e0030202320417267756d656e74733501202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e80202a207469636b6572202d2053796d626f6c206f66207468652061737365742ecc202a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e00382023205065726d697373696f6e7320202a2041737365748c72656d6f76655f64656661756c745f747275737465645f636c61696d5f69737375657208187469636b6572185469636b657218697373756572284964656e7469747949642479012052656d6f7665732074686520676976656e2060697373756572602066726f6d2074686520736574206f662064656661756c74207472757374656420636c61696d206973737565727320617420746865207469636b6572206c6576656c2e0030202320417267756d656e74733501202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e80202a207469636b6572202d2053796d626f6c206f66207468652061737365742ecc202a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e00382023205065726d697373696f6e7320202a204173736574746368616e67655f636f6d706c69616e63655f726571756972656d656e7408187469636b6572185469636b65721c6e65775f72657154436f6d706c69616e6365526571756972656d656e7424f4204d6f6469667920616e206578697374696e6720636f6d706c69616e636520726571756972656d656e74206f66206120676976656e207469636b65722e0030202320417267756d656e74733501202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e80202a207469636b6572202d2053796d626f6c206f66207468652061737365742e90202a206e65775f726571202d20436f6d706c69616e636520726571756972656d656e742e00382023205065726d697373696f6e7320202a204173736574012470436f6d706c69616e6365526571756972656d656e74437265617465640c284964656e746974794964185469636b657254436f6d706c69616e6365526571756972656d656e7408d020456d6974746564207768656e206e657720636f6d706c69616e636520726571756972656d656e7420697320637265617465642eb4202863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e70436f6d706c69616e6365526571756972656d656e7452656d6f7665640c284964656e746974794964185469636b65720c75333208c820456d6974746564207768656e206120636f6d706c69616e636520726571756972656d656e742069732072656d6f7665642e98202863616c6c6572204449442c205469636b65722c20726571756972656d656e745f6964292e5c4173736574436f6d706c69616e63655265706c616365640c284964656e746974794964185469636b6572685665633c436f6d706c69616e6365526571756972656d656e743e08b820456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206973207265706c616365642ed820506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720617373657420636f6d706c69616e63652e504173736574436f6d706c69616e6365526573657408284964656e746974794964185469636b657208dc20456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206f662061207469636b65722069732072657365742e58202863616c6c6572204449442c205469636b6572292e584173736574436f6d706c69616e6365526573756d656408284964656e746974794964185469636b657208050120456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b6572206765747320726573756d652e58202863616c6c6572204449442c205469636b6572292e544173736574436f6d706c69616e636550617573656408284964656e746974794964185469636b657208050120456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b65722067657473207061757365642e58202863616c6c6572204449442c205469636b6572292e70436f6d706c69616e6365526571756972656d656e744368616e6765640c284964656e746974794964185469636b657254436f6d706c69616e6365526571756972656d656e7408e420456d6974746564207768656e20636f6d706c69616e636520726571756972656d656e7420676574206d6f6469666965642f6368616e67652eb4202863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e785472757374656444656661756c74436c61696d49737375657241646465640c284964656e746974794964185469636b6572345472757374656449737375657208190120456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b657220676574732061646465642eac202863616c6c6572204449442c205469636b65722c2041646465642054727573746564497373756572292e805472757374656444656661756c74436c61696d49737375657252656d6f7665640c284964656e746974794964185469636b6572284964656e746974794964081d0120456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b6572206765742072656d6f7665642eb4202863616c6c6572204449442c205469636b65722c2052656d6f7665642054727573746564497373756572292e04584d6178436f6e646974696f6e436f6d706c65786974790c7533321032000000001830556e617574686f72697a656404602055736572206973206e6f7420617574686f72697a65642e2c4469644e6f744578697374043820446964206e6f7420657869737478496e76616c6964436f6d706c69616e6365526571756972656d656e74496404a020436f6d706c69616e636520726571756972656d656e7420696420646f65736e277420657869737484496e636f72726563744f7065726174696f6e4f6e5472757374656449737375657204a0204973737565722065786973742062757420747279696e6720746f2061646420697420616761696e7c4475706c6963617465436f6d706c69616e6365526571756972656d656e747304b420546865726520617265206475706c696361746520636f6d706c69616e636520726571756972656d656e74732e7c436f6d706c69616e6365526571756972656d656e74546f6f436f6d706c65780415012054686520776f7273742063617365207363656e6172696f206f662074686520636f6d706c69616e636520726571756972656d656e7420697320746f6f20636f6d706c65781d3c436f72706f72617465416374696f6e013c436f72706f72617465416374696f6e24404d617844657461696c734c656e67746801000c75333210000000001c5d012044657465726d696e657320746865206d6178696d756d206e756d626572206f6620627974657320746861742074686520667265652d666f726d206064657461696c7360206f6620612043412063616e2073746f72652e002901204e6f746520746861742074686973206973206e6f7420746865206e756d626572206f662060636861726073206f7220746865206e756d626572206f66205b6772617068656d65735d2e4101205768696c652074686973206d617920626520756e6e61747572616c20696e207465726d73206f662068756d616e20756e6465727374616e64696e67206f66206120746578742773206c656e6774682c6501206974206d6f726520636c6f73656c79207265666c656374732061637475616c2073746f7261676520636f73747320286027612760206973206368656170657220746f2073746f7265207468616e20616e20656d6f6a69292e00d0205b6772617068656d65735d3a2068747470733a2f2f656e2e77696b6970656469612e6f72672f77696b692f4772617068656d655c44656661756c745461726765744964656e746974696573010102185469636b6572405461726765744964656e7469746965730008000110f020546865206964656e7469746965732074617267657465642062792064656661756c7420666f722043417320666f722074686973207469636b65722c8c2065697468657220746f206265206578636c75646564206f7220696e636c756465642e007820287469636b6572203d3e20746172676574206964656e746974696573295444656661756c7457697468686f6c64696e67546178010102185469636b65720c54617800100000000020ad01205468652064656661756c7420616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722074686973207469636b6572207768656e20646973747269627574696e67206469766964656e64732e00350120546f20756e6465727374616e642077697468686f6c64696e67207461782c20652e672e2c206c6574277320617373756d65207468617420796f7520686f6c642041434d45207368617265732ec42041434d45206e6f77206465636964657320746f2064697374726962757465203130302053454b20746f20416c6963652e590120416c696365206c6976657320696e2053776564656e2c20736f20536b617474657665726b6574202874686520537765646973682074617820617574686f72697479292077616e747320333025206f6620746861742e5d01205468656e2074686f736520313030202a2033302520617265207769746868656c642066726f6d20416c6963652c20616e642041434d452077696c6c2073656e64207468656d20746f20536b617474657665726b65742e006820287469636b6572203d3e202520746f2077697468686f6c64294444696457697468686f6c64696e67546178010102185469636b6572585665633c284964656e7469747949642c20546178293e0004001049012054686520616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722061206365727461696e207469636b65722078204449442e6d0120496620616e20656e7472792065786973747320666f722061206365727461696e204449442c206974206f7665727269646573207468652064656661756c7420696e206044656661756c7457697468686f6c64696e67546178602e008820287469636b6572203d3e205b286469642c202520746f2077697468686f6c64295d304341496453657175656e6365010102185469636b6572244c6f63616c4341496400100000000008b420546865206e657874207065722d605469636b65726020434120494420696e207468652073657175656e63652e4d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652e40436f72706f72617465416374696f6e73000202185469636b6572244c6f63616c434149643c436f72706f72617465416374696f6e050400146c20416c6c207265636f72646564204341732074687573206661722ea4204f6e6c792067656e6572696320696e666f726d6174696f6e2069732073746f72656420686572652e7d01205370656369666963206043414b696e6460732c20652e672e2c2062656e656669747320616e6420636f72706f726174652062616c6c6f74732c206d617920757365206164646974696f6e616c206f6e2d636861696e2073746f726167652e00b420287469636b6572203d3e206c6f63616c204944203d3e2074686520636f72706f7261746520616374696f6e29244341446f634c696e6b01010210434149643c5665633c446f63756d656e7449643e00040014d0204173736f63696174696f6e732066726f6d2043417320746f2060446f63756d656e74607320766961207468656972204944732e5c202843414964203d3e205b446f63756d656e7449645d29000501205468652060436f72706f72617465416374696f6e7360206d61702073746f72657320605469636b6572203d3e204c6f63616c4964203d3e20546865204341602c250120736f2077652063616e20696e66657220605469636b6572203d3e2043414964602e205468657265666f72652c20776520646f6e2774206e656564206120646f75626c65206d61702e1c44657461696c73010102104341496424434144657461696c7300040008e8204173736f6369617465732064657461696c7320696e20667265652d666f726d207465787420776974682061204341206279206974732049442e50202843414964203d3e20434144657461696c73293853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0120587365745f6d61785f64657461696c735f6c656e67746804186c656e6774680c75333208d42053657420746865206d617820606c656e67746860206f66206064657461696c736020696e207465726d73206f662062797465732e78204d6179206f6e6c792062652063616c6c6564207669612061205049502e4c7365745f64656661756c745f7461726765747308187469636b6572185469636b65721c74617267657473405461726765744964656e74697469657334d020536574207468652064656661756c7420434120605461726765744964656e7469746965736020746f206074617267657473602e003420232320417267756d656e7473e8202d20606f726967696e60207768696368206d7573742062652061207369676e657220666f722074686520434141206f66206063615f6964602ee8202d20607469636b65726020666f72207768696368207468652064656661756c74206964656e74697469657320617265206368616e67696e672ed0202d20607461726765747360207468652064656661756c7420746172676574206964656e74697469657320666f7220612043412e0028202323204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e3501202d2060546f6f4d616e79546172676574496473602069662060746172676574732e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e00382023205065726d697373696f6e7320202a2041737365746c7365745f64656661756c745f77697468686f6c64696e675f74617808187469636b6572185469636b65720c7461780c54617830410120536574207468652064656661756c742077697468686f6c64696e672074617820666f7220616c6c204449447320616e64204341732072656c6576616e7420746f207468697320607469636b6572602e003420232320417267756d656e7473e0202d20606f726967696e60207768696368206d7573742062652061207369676e657220666f72206120434141206f66206063615f6964602ecc202d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2e0901202d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e0028202323204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e00382023205065726d697373696f6e7320202a2041737365745c7365745f6469645f77697468686f6c64696e675f7461780c187469636b6572185469636b65722474617865645f646964284964656e7469747949640c7461782c4f7074696f6e3c5461783e40f820536574207468652077697468686f6c64696e6720746178206f6620607469636b65726020666f72206074617865645f6469646020746f2060746178602e85012049662060536f6d652874617829602c2074686973206f7665727269646573207468652064656661756c742077697468686f6c64696e6720746178206f6620607469636b65726020746f20607461786020666f72206074617865645f646964602e0101204f74686572776973652c20696620604e6f6e65602c207468652064656661756c742077697468686f6c64696e67207461782077696c6c20626520757365642e003420232320417267756d656e7473e0202d20606f726967696e60207768696368206d7573742062652061207369676e657220666f72206120434141206f66206063615f6964602ecc202d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2ee8202d206074617865645f6469646020746861742077696c6c2068617665206974732077697468686f6c64696e672074617820757064617465642e0901202d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e0028202323204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e8501202d2060546f6f4d616e794469645461786573602069662060536f6d6528746178296020616e6420616464696e6720746865206f7665727269646520776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e00382023205065726d697373696f6e7320202a20417373657464696e6974696174655f636f72706f726174655f616374696f6e20187469636b6572185469636b6572106b696e641843414b696e64246465636c5f64617465184d6f6d656e742c7265636f72645f64617465584f7074696f6e3c5265636f726444617465537065633e1c64657461696c7324434144657461696c731c74617267657473604f7074696f6e3c5461726765744964656e7469746965733e5c64656661756c745f77697468686f6c64696e675f7461782c4f7074696f6e3c5461783e3c77697468686f6c64696e675f746178784f7074696f6e3c5665633c284964656e7469747949642c20546178293e3e784d0120496e69746961746573206120434120666f7220607469636b657260206f6620606b696e64602077697468206064657461696c736020616e64206f746865722070726f766964656420617267756d656e74732e003420232320417267756d656e7473e0202d20606f726967696e60207768696368206d7573742062652061207369676e657220666f72206120434141206f66206063615f6964602e90202d20607469636b657260207468617420746865204341206973206d61646520666f722e80202d20606b696e6460206f66204341206265696e6720696e697469617465642e9c202d20606465636c5f6461746560206f66204341206272696e6720696e697469616c697a65642ef4202d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f6620746869732043412e65012020202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e5101202d206064657461696c7360206f662074686520434120696e20667265652d7465787420666f726d2c20757020746f2061206365727461696e206e756d626572206f6620627974657320696e206c656e6774682ef8202d206074617267657473602c20696620616e792c20776869636820746869732043412069732072656c6576616e742f697272656c6576616e7420746f2e4d01202020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f7461726765747360292e6101202d206064656661756c745f77697468686f6c64696e675f746178602c20696620616e792c206973207468652064656661756c742077697468686f6c64696e672074617820746f2075736520666f7220746869732043412e6d01202020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f77697468686f6c64696e675f74617860292e2501202d206077697468686f6c64696e675f746178602c20696620616e792c2070726f7669646573207065722d4449442077697468686f6c64696e6720746178206f76657272696465732e5d01202020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f6469645f77697468686f6c64696e675f74617860292e00242023204572726f72732101202d206044657461696c73546f6f4c6f6e6760206966206064657461696c732e6c656e28296020676f6573206265796f6e6420606d61785f64657461696c735f6c656e677468602e2901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e7501202d20604c6f63616c434149644f766572666c6f776020696e2074686520756e6c696b656c79206576656e74207468617420736f206d616e79204341732077657265206372656174656420666f72207468697320607469636b6572602cfc2020207468617420696e7465676572206f766572666c6f7720776f756c642068617665206f63637572656420696620696e737465616420616c6c6f7765642e7901202d2060546f6f4d616e79446964546178657360206966206077697468686f6c64696e675f7461782e756e7772617028292e6c656e28296020776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e0501202d20604475706c69636174654469645461786020696620612044494420697320696e636c75646564206d6f7265207468616e206f6e636520696e20607774602e5901202d2060546f6f4d616e79546172676574496473602069662060746172676574732e756e7772617028292e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e0501202d20604465636c44617465496e4675747572656020696620746865206465636c61726174696f6e2064617465206973206e6f7420696e2074686520706173742e5501202d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e00382023205065726d697373696f6e7320202a2041737365742c6c696e6b5f63615f646f6308086964104341496410646f63733c5665633c446f63756d656e7449643e48b0204c696e6b2074686520676976656e204341206069646020746f2074686520676976656e2060646f6373602ef820416e792070726576696f7573206c696e6b7320666f7220746865204341206172652072656d6f76656420696e206661766f72206f662060646f6373602e0059012054686520776f726b666c6f77206865726520697320746f206164642074686520646f63756d656e747320616e6420696e6974696174696e672074686520434120696e20616e79206f7264657220646573697265642ec8204f6e636520626f74682065786973742c20746865792063616e206e6f77206265206c696e6b656420746f6765746865722e003420232320417267756d656e7473e0202d20606f726967696e60207768696368206d7573742062652061207369676e657220666f72206120434141206f66206063615f6964602eac202d2060696460206f662074686520434120746f206173736f636961746520776974682060646f6373602eb4202d2060646f63736020746f206173736f6369617465207769746820746865204341207769746820606964602e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc202d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e1d01202d20604e6f53756368446f636020696620616e79206f662060646f63736020646f6573206e6f74206964656e7469667920616e206578697374696e6720646f63756d656e742e00382023205065726d697373696f6e7320202a2041737365742472656d6f76655f6361041463615f6964104341496448982052656d6f76657320746865204341206964656e746966696564206279206063615f6964602e00c8204173736f63696174656420646174612c207375636820617320646f63756d656e74206c696e6b732c2062616c6c6f74732cb020616e64206361706974616c20646973747269627574696f6e732061726520616c736f2072656d6f7665642e00d820416e79207363686564756c65206173736f636961746564207769746820746865207265636f726420646174652077696c6c20736565b420607374726f6e675f7265665f636f756e74287363686564756c655f696429602064656372656d656e7465642e003420232320417267756d656e7473e0202d20606f726967696e60207768696368206d7573742062652061207369676e657220666f72206120434141206f66206063615f6964602e7c202d206063615f696460206f662074686520434120746f2072656d6f76652e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc202d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e00382023205065726d697373696f6e7320202a204173736574486368616e67655f7265636f72645f64617465081463615f696410434149642c7265636f72645f64617465584f7074696f6e3c5265636f726444617465537065633e3ce4204368616e67657320746865207265636f72642064617465206f6620746865204341206964656e746966696564206279206063615f6964602e003420232320417267756d656e7473e0202d20606f726967696e60207768696368206d7573742062652061207369676e657220666f72206120434141206f66206063615f6964602e78202d206063615f696460206f662074686520434120746f20616c7465722ef0202d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f66207468652043412e65012020202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc202d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e5501202d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e00382023205065726d697373696f6e7320202a20417373657401245c4d617844657461696c734c656e6774684368616e67656408284964656e7469747949640c75333208d820546865206d6178696d756d206c656e677468206f66206064657461696c736020696e20627974657320776173206368616e6765642e5420284743204449442c206e6577206c656e677468297844656661756c745461726765744964656e7469746965734368616e6765640c284964656e746974794964185469636b6572405461726765744964656e74697469657308f02054686520736574206f662064656661756c7420605461726765744964656e7469746965736020666f722061207469636b6572206368616e6765642ea02028434141204449442c205469636b65722c204e6577205461726765744964656e746974696573297044656661756c7457697468686f6c64696e675461784368616e6765640c284964656e746974794964185469636b65720c54617808c8205468652064656661756c742077697468686f6c64696e672074617820666f722061207469636b6572206368616e6765642e702028434141204449442c205469636b65722c204e657720546178292e6044696457697468686f6c64696e675461784368616e67656410284964656e746974794964185469636b6572284964656e7469747949642c4f7074696f6e3c5461783e08f0205468652077697468686f6c64696e672074617820737065636966696320746f20612044494420666f722061207469636b6572206368616e6765642e9c2028434141204449442c205469636b65722c205461786564204449442c204e657720546178292e384341415472616e736665727265640c284964656e746974794964185469636b6572284964656e74697479496408702041206e65772044494420776173206d61646520746865204341412e9020284e657720434141204449442c205469636b65722c204e65772043414120444944292e2c4341496e6974696174656410204576656e7444696410434149643c436f72706f72617465416374696f6e24434144657461696c73085020412043412077617320696e697469617465642ea42028434141204449442c2043412069642c207468652043412c207468652043412064657461696c73293443414c696e6b6564546f446f630c284964656e74697479496410434149643c5665633c446f63756d656e7449643e0888204120434120776173206c696e6b656420746f206120736574206f6620646f63732e9820284341412c2043412049642c204c697374206f6620646f63206964656e746966696572732924434152656d6f76656408204576656e74446964104341496408482041204341207761732072656d6f7665642e3420284341412c20434120496429445265636f7264446174654368616e6765640c204576656e7444696410434149643c436f72706f72617465416374696f6e047020412043412773207265636f72642064617465206368616e6765642e08304d61785461726765744964730c75333210e803000000284d6178446964576874730c75333210e8030000003448417574684e6f744341415472616e736665720409012054686520617574686f72697a6174696f6e2074797065206973206e6f7420746f207472616e73666572207468652043414120746f20616e6f74686572204449442e3844657461696c73546f6f4c6f6e6704dc20546865206064657461696c7360206f66206120434120657863656564656420746865206d617820616c6c6f776564206c656e6774682e444c6f63616c434149644f766572666c6f770821012054686572652068617665206265656e20746f6f206d616e792043417320666f722074686973207469636b657220616e642074686520494420776f756c64206f766572666c6f772e78205468697320776f6e2774206f6363757220696e2070726163746963652e3c4475706c696361746544696454617808250120412077697468686f6c64696e6720746178206f7665727269646520666f72206120676976656e204449442077617320737065636966696564206d6f7265207468616e206f6e63652e09012054686520636861696e207265667573656420746f206d616b6520612063686f6963652c20616e642068656e63652074686572652077617320616e206572726f722e3c546f6f4d616e79446964546178657304cc20546f6f206d616e792077697468686f6c64696e6720746178206f76657272696465732077657265207370656369666965642e40546f6f4d616e7954617267657449647304e820546f6f206d616e79206964656e74697469657320696e20605461726765744964656e746974696573602077657265207370656369666965642e484e6f53756368436865636b706f696e744964040901204f6e204341206372656174696f6e2c206120636865636b706f696e74204944207761732070726f766964656420776869636820646f65736e27742065786973742e204e6f53756368434104a8204120434120776974682074686520676976656e2060434149646020646964206e6f742065786973742e304e6f5265636f726444617465048c2054686520434120646964206e6f7420686176652061207265636f726420646174652e505265636f726444617465416674657253746172740ce020412043412773207265636f7264206461746520776173207374726963746c792061667465722074686520227374617274222074696d652c90207768657265202273746172742220697320636f6e7465787420646570656e64656e742e850120466f72206578616d706c652c20697420636f756c6420626520746865207374617274206f6620612062616c6c6f742c206f72207468652073746172742d6f662d7061796d656e7420696e206361706974616c20646973747269627574696f6e2e5c4465636c4461746541667465725265636f72644461746504f020412043412773206465636c61726174696f6e206461746520776173207374726963746c7920616674657220697473207265636f726420646174652e404465636c44617465496e46757475726504b820412043412773206465636c61726174696f6e2064617465206f636375727320696e20746865206675747572652e3c4e6f74546172676574656442794341047020434120646f6573206e6f742074617267657420746865204449442e1e3c436f72706f7261746542616c6c6f74013c436f72706f7261746542616c6c6f7418144d6574617300010210434149642842616c6c6f744d6574610004000c80204d65746164617461206f66206120636f72706f726174652062616c6c6f742e005420284341496429203d3e2042616c6c6f744d6574612854696d6552616e67657300010210434149643c42616c6c6f7454696d6552616e676500040010e42054696d652064657461696c73206f66206120636f72706f726174652062616c6c6f74206173736f636961746564207769746820612043412ed0205468652074696d657374616d70732064656e6f7465207768656e20766f74696e672073746172747320616e642073746f70732e006820284341496429203d3e2042616c6c6f7454696d6552616e6765404d6f74696f6e4e756d43686f696365730101021043414964205665633c7531363e00040024c82053746f72657320686f77206d616e792063686f696365732074686572652061726520696e2065616368206d6f74696f6e2e00250120417420616c6c2074696d65732c2074686520696e76617269616e7420686f6c6473207468617420606d6f74696f6e5f63686f696365735b6964785d6020697320657175616c20746f310120606d657461732e756e7772617028292e6d6f74696f6e735b6964785d2e63686f696365732e6c656e2829602e20546861742069732c2074686973206973206a75737420612063616368652c1101207573656420746f2061766f6964206665746368696e6720616c6c20746865206d6f74696f6e732077697468207468656972206173736f6369617465642074657874732e0001012060753136602063686f696365732073686f756c64206265206d6f7265207468616e20656e6f75676820746f20666974207265616c207573652063617365732e00b020284341496429203d3e204e756d626572206f662063686f6963657320696e2065616368206d6f74696f6e2e0c524356010102104341496410626f6f6c00040010dc2049732072616e6b65642063686f69636520766f74696e6720285243562920656e61626c656420666f7220746869732062616c6c6f743f650120466f7220616e20756e6465727374616e64696e67206f6620686f77205243562069732068616e646c65642c20736565206e6f7465206f6e206042616c6c6f74566f7465602773206066616c6c6261636b60206669656c642e003c20284341496429203d3e20626f6f6c1c526573756c74730101021043414964305665633c42616c616e63653e0004001cb02053746f7265732074686520746f74616c20766f74652074616c6c79206f6e20656163682063686f6963652e006820524356206973206e6f74206163636f756e74656420666f722cd02061732074686572652061726520746f6f206d616e792077616e747320746f20696e74657270726574207468652067726170682c9c20616e64206265636175736520697420776f756c64206e6f7420626520656666696369656e742e008420284341496429203d3e205b63757272656e7420766f746520776569676874735d14566f7465730102021043414964284964656e7469747949643c5665633c42616c6c6f74566f74653e06040018ac2053746f726573206561636820444944277320766f74657320696e206120676976656e2062616c6c6f742ef8205365652074686520646f63756d656e746174696f6e206f66206042616c6c6f74566f74656020666f72206e6f746573206f6e2073656d616e746963732e008420284341496429203d3e202844494429203d3e205b766f7465207765696768745d001d012055736572206d75737420656e746572203020766f746520776569676874206966207468657920646f6e27742077616e7420746f20766f746520666f7220612063686f6963652e0118346174746163685f62616c6c6f74101463615f696410434149641472616e67653c42616c6c6f7454696d6552616e6765106d6574612842616c6c6f744d6574610c72637610626f6f6c68ec20417474616368206120636f72706f726174652062616c6c6f7420746f20746865204341206964656e746966696564206279206063615f6964602e00b0205468652062616c6c6f742077696c6c2061646d697420766f7465732077697468696e206072616e6765602eb4205468652062616c6c6f742773206d657461646174612069732070726f766964656420627920606d657461602c090120776869636820696e636c75646573207468652062616c6c6f74207469746c652c20746865206d6f74696f6e732c2074686569722063686f696365732c206574632e7c2053656520746865206042616c6c6f744d6574616020666f72206d6f72652e003420232320417267756d656e7473e0202d20606f726967696e60207768696368206d7573742062652061207369676e657220666f72206120434141206f66206063615f6964602ed4202d206063615f696460206964656e7469666965732074686520434120746f20617474616368207468652062616c6c6f7420746f2ec4202d206072616e67656020737065636966696573207768656e20766f74696e672073746172747320616e6420656e64732ef0202d20606d6574616020737065636966696573207468652062616c6c6f742773206d657461646174612061732061666f72656d656e74696f6e65642ee8202d2060726376602073706563696669657320776865746865722052435620697320656e61626c656420666f7220746869732062616c6c6f742e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee8202d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef4202d206043414e6f744e6f746963656020696620746865204341206973206e6f74206f662074686520604973737565724e6f7469636560206b696e642ec0202d206053746172744166746572456e6460206966206072616e67652e7374617274203e2072616e67652e656e64602e2d01202d20604e6f774166746572456e646020696620606e6f77203e2072616e67652e656e646020776865726520606e6f7760206973207468652063757272656e742074696d657374616d702eac202d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652e5d01202d20605265636f7264446174654166746572537461727460206966206064617465203e2072616e67652e73746172746020776865726520606461746560206973207468652043412773207265636f726420646174652ebc202d2060416c726561647945786973747360206966207468657265277320612062616c6c6f7420616c72656164792e3501202d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e0d01202d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e0501202d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e10766f7465081463615f6964104341496414766f7465733c5665633c42616c6c6f74566f74653e44150120436173742060766f7465736020696e207468652062616c6c6f7420617474616368656420746f20746865204341206964656e746966696564206279206063615f6964602e003420232320417267756d656e74730d01202d20606f726967696e60207768696368206d7573742062652061207065726d697373696f6e6564207369676e6572207461726765746564206279207468652043412ebc202d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e2501202d2060766f7465736020737065636966696573207468652062616c616e63657320746f2061737369676e20746f20656163682063686f69636520696e207468652062616c6c6f742e5901202020205468652066756c6c20766f74696e6720706f776572206f6620606f726967696e60277320444944206d6179206265207573656420666f722065616368206d6f74696f6e20696e207468652062616c6c6f742e00242023204572726f7273e0202d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e0101202d2060566f74696e674e6f7453746172746564602069662074686520766f74696e6720706572696f64206861736e277420636f6d6d656e636564207965742edc202d2060566f74696e67416c7265616479456e646564602069662074686520766f74696e6720706572696f642068617320656e6465642e6101202d206057726f6e67566f7465436f756e746020696620746865206e756d626572206f662063686f6963657320696e207468652062616c6c6f7420646f6573206e6f74206d617463682060766f7465732e6c656e2829602ee8202d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef8202d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e2501202d2060496e73756666696369656e74566f746573602069662074686520766f74696e6720706f776572207573656420666f7220616e79206d6f74696f6e20696e2060766f74657360a8202020206578636565647320606f726967696e60277320444944277320766f74696e6720706f7765722e286368616e67655f656e64081463615f696410434149640c656e64184d6f6d656e7430090120416d656e642074686520656e642064617465206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e003420232320417267756d656e7473e0202d20606f726967696e60207768696368206d7573742062652061207369676e657220666f72206120434141206f66206063615f6964602ebc202d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ec8202d2060656e64602073706563696669657320746865206e657720656e642064617465206f66207468652062616c6c6f742e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee0202d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e3501202d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e90202d206053746172744166746572456e646020696620607374617274203e20656e64602e2c6368616e67655f6d657461081463615f69641043414964106d6574612842616c6c6f744d65746134650120416d656e6420746865206d6574616461746120287469746c652c206d6f74696f6e732c206574632e29206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e003420232320417267756d656e7473e0202d20606f726967696e60207768696368206d7573742062652061207369676e657220666f72206120434141206f66206063615f6964602ebc202d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e94202d20606d657461602073706563696669657320746865206e6577206d657461646174612e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee0202d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e3501202d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e3501202d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e0d01202d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e286368616e67655f726376081463615f696410434149640c72637610626f6f6c2c090120416d656e642052435620737570706f727420666f72207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e003420232320417267756d656e7473e0202d20606f726967696e60207768696368206d7573742062652061207369676e657220666f72206120434141206f66206063615f6964602ebc202d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ed0202d206072637660207370656369666965732069662052435620697320746f20626520737570706f72746564206f72206e6f742e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee0202d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e3501202d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e3472656d6f76655f62616c6c6f74041463615f6964104341496428cc2052656d6f7665207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e003420232320417267756d656e7473e0202d20606f726967696e60207768696368206d7573742062652061207369676e657220666f72206120434141206f66206063615f6964602ebc202d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee0202d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e3501202d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e01181c4372656174656414284964656e74697479496410434149643c42616c6c6f7454696d6552616e67652842616c6c6f744d65746110626f6f6c0c80204120636f72706f726174652062616c6c6f742077617320637265617465642e00250120285469636b65722773204341412c20434127732049442c20566f74696e672073746172742f656e642c2042616c6c6f74206d657461646174612c2052435620656e61626c65643f2920566f7465436173740c284964656e74697479496410434149643c5665633c42616c6c6f74566f74653e0c9c204120766f746520776173206361737420696e206120636f72706f726174652062616c6c6f742e00642028766f746572204449442c20434149642c20566f746573293052616e67654368616e6765640c284964656e74697479496410434149643c42616c6c6f7454696d6552616e67650cd4204120636f72706f726174652062616c6c6f74206368616e676564206974732073746172742f656e6420646174652072616e67652e00a820285469636b65722773204341412c20434127732049442c20566f74696e672073746172742f656e64292c4d6574614368616e6765640c284964656e74697479496410434149642842616c6c6f744d6574610ca4204120636f72706f726174652062616c6c6f74206368616e67656420697473206d657461646174612e009820285469636b65722773204341412c20434127732049442c204e6577206d6574616461746129285243564368616e6765640c284964656e746974794964104341496410626f6f6c0cb0204120636f72706f726174652062616c6c6f74206368616e676564206974732052435620737570706f72742e009420285469636b65722773204341412c20434127732049442c204e657720737570706f7274291c52656d6f76656408204576656e7444696410434149640c80204120636f72706f726174652062616c6c6f74207761732072656d6f7665642e006020285469636b65722773204341412c20434127732049442900382c43414e6f744e6f7469636504e4204120636f72706f726174652062616c6c6f7420776173206d61646520666f722061206e6f6e20604973737565724e6f74696365602043412e34416c726561647945786973747304bc204120636f72706f726174652062616c6c6f7420616c72656164792065786973747320666f7220746869732043412e304e6f5375636842616c6c6f7404b8204120636f72706f726174652062616c6c6f7420646f65736e277420657869737420666f7220746869732043412e3453746172744166746572456e64041501204120636f72706f726174652062616c6c6f7427732073746172742074696d6520776173207374726963746c79206166746572207468652062616c6c6f74277320656e642e2c4e6f774166746572456e64041101204120636f72706f726174652062616c6c6f74277320656e642074696d6520776173207374726963746c79206265666f7265207468652063757272656e742074696d652e5c4e756d6265724f6643686f696365734f766572666c6f77043d0120496620736f6d65206d6f74696f6e20696e206120636f72706f726174652062616c6c6f7420686173206d6f72652063686f69636573207468616e20776f756c642066697420696e2060753136602e50566f74696e67416c72656164795374617274656404050120566f74696e67207374617274656420616c72656164792e20416d656e64696e6720612062616c6c6f74206973206e6f206c6f6e67657220706f737369626c652e40566f74696e674e6f7453746172746564046c20566f74696e67206861736e27742073746172746564207965742e48566f74696e67416c7265616479456e646564045820566f74696e6720656e64656420616c72656164792e3857726f6e67566f7465436f756e740419012050726f7669646564206c697374206f662062616c616e63657320646f6573206e6f74206d617463682074686520746f74616c206e756d626572206f662063686f696365732e44496e73756666696369656e74566f74657304410120566f74696e6720706f7765722075736564206279206120444944206f6e2061206d6f74696f6e2065786365656473207468617420776869636820697320617661696c61626c6520746f207468656d2e444e6f5375636852435646616c6c6261636b04c020546865205243562066616c6c6261636b206f6620736f6d652063686f69636520646f6573206e6f742065786973742e3052435653656c664379636c6504b820546865205243562066616c6c6261636b20706f696e747320746f20746865206f726967696e2063686f6963652e345243564e6f74416c6c6f776564049020524356206973206e6f7420616c6c6f77656420666f7220746869732062616c6c6f742e1f2c5065726d697373696f6e73000000000448556e617574686f72697a656443616c6c657204f0205468652063616c6c6572206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e201050697073011050697073504c5072756e65486973746f726963616c50697073010010626f6f6c040004fc2044657465726d696e6573207768657468657220686973746f726963616c20504950206461746120697320706572736973746564206f722072656d6f766564584d696e696d756d50726f706f73616c4465706f73697401001c42616c616e63654000000000000000000000000000000000041d0120546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f7220636f6d6d756e69747920504950206372656174696f6e2e5844656661756c74456e6163746d656e74506572696f64010038543a3a426c6f636b4e756d62657210000000000439012044656661756c7420656e6163746d656e7420706572696f6420746861742077696c6c2062652075736520616674657220612070726f706f73616c2069732061636365707465642062792047432e4050656e64696e675069704578706972790100684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e040108f420486f77206d616e7920626c6f636b732077696c6c2069742074616b652c2061667465722061206050656e64696e67602050495020657870697265732cf420617373756d696e6720697420686173206e6f74207472616e736974696f6e656420746f20616e6f74686572206050726f706f73616c5374617465603f3c4d6178506970536b6970436f756e74010030536b6970706564436f756e740400048901204d6178696d756d2074696d65732061205049502063616e20626520736b6970706564206265666f72652074726967676572696e67206043616e6e6f74536b69705069706020696e2060656e6163745f736e617073686f745f726573756c7473602e384163746976655069704c696d697401000c753332100000000008c420546865206d6178696d756d20616c6c6f776564206e756d62657220666f722060416374697665506970436f756e74602e0101204f6e636520726561636865642c206e657720504950732063616e6e6f742062652070726f706f73656420627920636f6d6d756e697479206d656d626572732e34506970496453657175656e636501000c75333210000000000409012050726f706f73616c7320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f662050495073206f66662d636861696e2e48536e617073686f74496453657175656e636501000c7533321000000000041d0120536e617073686f747320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f6620736e617073686f7473206f66662d636861696e2e38416374697665506970436f756e7401000c753332100000000004c820546f74616c20636f756e74206f662063757272656e742070656e64696e67206f72207363686564756c656420504950732e4050726f706f73616c4d657461646174610001051450697049643c506970734d657461646174613c543e000400049820546865206d65746164617461206f6620746865206163746976652070726f706f73616c732e204465706f7369747301020514506970496430543a3a4163636f756e744964644465706f736974496e666f3c543a3a4163636f756e7449643e05c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008842054686f73652077686f2068617665206c6f636b65642061206465706f7369742e8c2070726f706f73616c202869642c2070726f706f73657229202d3e206465706f7369742450726f706f73616c73000105145069704964185069703c543e00040008c42041637475616c2070726f706f73616c20666f72206120676976656e2069642c20696620697427732063757272656e742e602070726f706f73616c206964202d3e2070726f706f73616c3850726f706f73616c526573756c7401010514506970496430566f74696e67526573756c7400a00000000000000000000000000000000000000000000000000000000000000000000000000000000008d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e682070726f706f73616c206964202d3e20766f746520636f756e743450726f706f73616c566f74657300020514506970496430543a3a4163636f756e74496410566f746505040008050120566f746573207065722050726f706f73616c20616e64206163636f756e742e205573656420746f2061766f696420646f75626c6520766f74652069737375652e7c202870726f706f73616c2069642c206163636f756e7429202d3e20566f746534506970546f5363686564756c6500010514506970496438543a3a426c6f636b4e756d62657200040004fc204d617073205049507320746f2074686520626c6f636b20617420776869636820746865792077696c6c2062652065786563757465642c20696620616e792e244c697665517565756501004c5665633c536e617073686f747465645069703e040018cc2041206c697665207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029a0206f662070656e64696e67205049507320757020746f2074686520616374697665206c696d69742ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e00450120556e6c696b652060536e617073686f745175657565602c2074686973207175657565206973206c6976652c2067657474696e6720757064617465642077697468206561636820766f746520636173742e2d012054686520736e617073686f74206973207468657265666f726520657373656e7469616c6c79206120706f696e742d696e2d74696d6520636c6f6e65206f6620746869732071756575652e34536e617073686f74517565756501004c5665633c536e617073686f747465645069703e040014590120546865207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029206f6620504950732061742074686520706f696e74206f6620736e617073686f7474696e672ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e000901204120717565756564205049502063616e20626520736b69707065642e20446f696e6720736f2062756d70732074686520607069705f736b69705f636f756e74602e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e30536e617073686f744d65746100004c536e617073686f744d657461646174613c543e040004bc20546865206d65746164617461206f662074686520736e617073686f742c206966207468657265206973206f6e652e30506970536b6970436f756e7401010514506970496430536b6970706564436f756e7400040008d020546865206e756d626572206f662074696d65732061206365727461696e2050495020686173206265656e20736b69707065642e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e34436f6d6d6974746565506970730100285665633c50697049643e040008d420416c6c206578697374696e672050495073207768657265207468652070726f706f736572206973206120636f6d6d69747465652e39012054686973206c6973742069732061206361636865206f6620616c6c2069647320696e206050726f706f73616c73602077697468206050726f706f7365723a3a436f6d6d6974746565285f29602e0144647365745f7072756e655f686973746f726963616c5f7069707304147072756e6510626f6f6c14a8204368616e6765207768657468657220636f6d706c65746564205049507320617265207072756e65642e702043616e206f6e6c792062652063616c6c656420627920726f6f742e0030202320417267756d656e7473f4202a20607072756e656020737065636966696573207768657468657220636f6d706c6574656420504950732073686f756c64206265207072756e65642e607365745f6d696e5f70726f706f73616c5f6465706f736974041c6465706f7369741c42616c616e6365142501204368616e676520746865206d696e696d756d2070726f706f73616c206465706f73697420616d6f756e7420726571756972656420746f20737461727420612070726f706f73616c2e702043616e206f6e6c792062652063616c6c656420627920726f6f742e0030202320417267756d656e7473f4202a20606465706f7369746020746865206e6577206d696e206465706f73697420726571756972656420746f20737461727420612070726f706f73616c707365745f64656661756c745f656e6163746d656e745f706572696f6404206475726174696f6e38543a3a426c6f636b4e756d6265721494204368616e6765207468652064656661756c7420656e6163746d656e7420706572696f642e702043616e206f6e6c792062652063616c6c656420627920726f6f742e0030202320417267756d656e74736d01202a20606475726174696f6e6020746865206e65772064656661756c7420656e6163746d656e7420706572696f642069742074616b657320666f722061207363686564756c65642050495020746f2062652065786563757465642e587365745f70656e64696e675f7069705f6578706972790418657870697279684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e180901204368616e67652074686520616d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020697320657870697265642eb820496620606578706972796020697320604e6f6e6560207468656e2050495073206e65766572206578706972652e702043616e206f6e6c792062652063616c6c656420627920726f6f742e0030202320417267756d656e74732101202a2060657870697279602074686520626c6f636b2d74696d652069742074616b657320666f722061207374696c6c2d6050656e64696e67602050495020746f206578706972652e587365745f6d61785f7069705f736b69705f636f756e74040c6d617830536b6970706564436f756e7414d8204368616e676520746865206d6178696d756d20736b697020636f756e742028606d61785f7069705f736b69705f636f756e7460292e702043616e206f6e6c792062652063616c6c656420627920726f6f742e0030202320417267756d656e7473f0202a20606d61786020736b697073206265666f72652061205049502063616e6e6f7420626520736b697070656420627920474320616e796d6f72652e507365745f6163746976655f7069705f6c696d697404146c696d69740c753332146d01204368616e676520746865206d6178696d756d206e756d626572206f66206163746976652050495073206265666f726520636f6d6d756e697479206d656d626572732063616e6e6f742070726f706f736520616e797468696e672e702043616e206f6e6c792062652063616c6c656420627920726f6f742e0030202320417267756d656e747394202a20606c696d697460206f6620636f6e63757272656e742061637469766520504950732e1c70726f706f7365102070726f706f73616c40426f783c543a3a50726f706f73616c3e1c6465706f7369741c42616c616e63650c75726c2c4f7074696f6e3c55726c3e2c6465736372697074696f6e584f7074696f6e3c5069704465736372697074696f6e3e2409012041206e6574776f726b206d656d6265722063726561746573206120504950206279207375626d697474696e67206120646973706174636861626c652077686963685901206368616e67657320746865206e6574776f726b20696e20736f6d657761792e2041206d696e696d756d206465706f73697420697320726571756972656420746f206f70656e2061206e65772070726f706f73616c2e0030202320417267756d656e7473cc202a206070726f706f73657260206973206569746865722061207369676e696e67206b6579206f7220636f6d6d69747465652e6901202020205573656420746f20756e6465727374616e6420776865746865722074686973206973206120636f6d6d69747465652070726f706f73616c20616e6420766572696669656420616761696e737420606f726967696e602e84202a206070726f706f73616c60206120646973706174636861626c652063616c6c4901202a20606465706f73697460206d696e696d756d206465706f7369742076616c75652c2077686963682069732069676e6f726564206966206070726f706f73657260206973206120636f6d6d69747465652ed0202a206075726c602061206c696e6b20746f2061207765627369746520666f722070726f706f73616c2064697363757373696f6e10766f74650c086964145069704964286179655f6f725f6e617910626f6f6c1c6465706f7369741c42616c616e636548210120566f74652065697468657220696e206661766f722028606179655f6f725f6e617960203d3d207472756529206f7220616761696e7374206120504950207769746820606964602e5101205468652022636f6e76696e6374696f6e22206f7220737472656e677468206f662074686520766f746520697320676976656e20627920606465706f736974602c2077686963682069732072657365727665642e0090204e6f746520746861742060766f746560206973202a6e6f742a2061646469746976652efc20546861742069732c2060766f74652869642c20747275652c203530296020666f6c6c6f7765642062792060766f74652869642c20747275652c20343029604d012077696c6c2066697273742072657365727665206035306020616e64207468656e20726566756e6420603530202d203130602c20656e64696e672075702077697468206034306020696e206465706f7369742e290120546f206164642061746f70206f66206578697374696e6720766f7465732c20796f75276c6c206e65656420606578697374696e675f6465706f736974202b206164646974696f6e602e0030202320417267756d656e747350202a20606964602c2070726f706f73616c206964e0202a20606179655f6f725f6e6179602c206120626f6f6c20726570726573656e74696e6720666f72206f7220616761696e737420766f7465ec202a20606465706f736974602c207468652022636f6e76696374696f6e2220776974682077686963682074686520766f7465206973206d6164652e00242023204572726f7273e8202a20604e6f5375636850726f706f73616c60206966206069646020646f65736e2774207265666572656e636520612076616c6964205049502ee8202a20604e6f7446726f6d436f6d6d756e697479602069662070726f706f73616c20776173206d616465206279206120636f6d6d69747465652ec4202a2060496e636f727265637450726f706f73616c537461746560206966205049502069736e27742070656e64696e672e3101202a2060496e73756666696369656e744465706f7369746020696620606f726967696e602063616e6e6f74207265736572766520606465706f736974202d206f6c645f6465706f736974602e68617070726f76655f636f6d6d69747465655f70726f706f73616c040869641450697049641cd820417070726f766573207468652070656e64696e6720636f6d6d69747465652050495020676976656e2062792074686520606964602e00242023204572726f72730901202a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2edc202a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ee8202a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c2069736e27742070656e64696e672ee4202a20604e6f744279436f6d6d697474656560206966207468652070726f706f73616c2069736e2774206279206120636f6d6d69747465652e3c72656a6563745f70726f706f73616c0408696414506970496420fc2052656a65637473207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e7920626f6e6465642066756e64732cbc20617373756d696e67206974206861736e2774206265656e2063616e63656c6c6564206f722065786563757465642e0901204e6f746520746861742070726f706f73616c73207363686564756c65642d666f722d657865637574696f6e2063616e20616c736f2062652072656a65637465642e00242023204572726f72730901202a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2edc202a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742e1901202a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c207761732063616e63656c6c6564206f722065786563757465642e387072756e655f70726f706f73616c04086964145069704964242d01205072756e65207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e792066756e6473206e6f7420616c726561647920726566756e6465642e682054686520504950206d6179206e6f7420626520616374697665000d0120546869732066756e6374696f6e20697320696e74656e64656420666f722073746f72616765206761726261676520636f6c6c656374696f6e20707572706f7365732e00242023204572726f72730901202a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2edc202a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ed8202a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c206973206163746976652e5072657363686564756c655f657865637574696f6e0808696414506970496414756e74696c584f7074696f6e3c543a3a426c6f636b4e756d6265723e24e420557064617465732074686520657865637574696f6e207363686564756c65206f66207468652050495020676976656e20627920606964602e0030202320417267756d656e74733501202a2060756e74696c6020646566696e6573207468652066757475726520626c6f636b2077686572652074686520656e6163746d656e7420706572696f642077696c6c2066696e69736865642e490120202020604e6f6e65602076616c7565206d65616e73207468617420656e6163746d656e7420706572696f6420697320676f696e6720746f2066696e69736820696e20746865206e65787420626c6f636b2e00242023204572726f72733d01202a206052657363686564756c654e6f74427952656c65617365436f6f7264696e61746f726020756e6c657373207472696767657265642062792072656c6561736520636f6f7264696e61746f722e2501202a2060496e636f727265637450726f706f73616c53746174656020756e6c657373207468652070726f706f73616c2077617320696e2061207363686564756c65642073746174652e38636c6561725f736e617073686f740010ec20436c656172732074686520736e617073686f7420616e6420656d69747320746865206576656e742060536e617073686f74436c6561726564602e00242023204572726f72734101202a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e20736e617073686f74001411012054616b65732061206e657720736e617073686f74206f66207468652063757272656e74206c697374206f66206163746976652026262070656e64696e6720504950732e2d0120546865205049507320617265207468656e20736f7274656420696e746f2061207072696f72697479207175657565206261736564206f6e2065616368205049502773207765696768742e00242023204572726f72734101202a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e58656e6163745f736e617073686f745f726573756c7473041c726573756c7473705665633c2850697049642c20536e617073686f74526573756c74293e44d420456e616374732060726573756c74736020666f7220746865205049507320696e2074686520736e617073686f742071756575652e2d012054686520736e617073686f742077696c6c20626520617661696c61626c6520666f72206675727468657220656e6163746d656e747320756e74696c20697420697320636c65617265642e005901205468652060726573756c7473602061726520656e636f6465642061206c697374206f6620602869642c20726573756c7429602077686572652060726573756c7460206973206170706c69656420746f20606964602e4d01204e6f746520746861742074686520736e617073686f74207072696f7269747920717565756520697320656e636f646564207769746820746865202a6c6f77657374207072696f726974792066697273742a2e590120736f2060726573756c7473203d205b2869642c20417070726f7665295d602077696c6c20617070726f76652060536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20315d602e00242023204572726f72731101202a20604261644f726967696e60202d20756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2e2501202a206043616e6e6f74536b697050697060202d206120676976656e205049502068617320616c7265616479206265656e20736b697070656420746f6f206d616e792074696d65732e1101202a2060536e617073686f74526573756c74546f6f4c6172676560202d206f6e206c656e28726573756c747329203e206c656e28736e617073686f745f7175657565292e74202a2060536e617073686f7449644d69736d6174636860202d2069663a28202020606060746578749c20202020e2888320286920e2888820302e2e536e617073686f7451756575652e6c656e2829292e0101202020202020726573756c74735b695d2e3020e289a020536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20695d2e696418202020606060fc20202020546869732069732070726f746563747320616761696e737420636c656172696e67207175657565207768696c6520474320697320766f74696e672e54657865637574655f7363686564756c65645f7069700408696414506970496404dc20496e7465726e616c20646973706174636861626c6520746861742068616e646c657320657865637574696f6e206f662061205049502e506578706972655f7363686564756c65645f706970080c646964284964656e74697479496408696414506970496404e020496e7465726e616c20646973706174636861626c6520746861742068616e646c65732065787069726174696f6e206f662061205049502e015050486973746f726963616c506970735072756e65640c284964656e74697479496410626f6f6c10626f6f6c044901205072756e696e6720486973746f726963616c205049507320697320656e61626c6564206f722064697361626c6564202863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293c50726f706f73616c4372656174656420284964656e7469747949644c50726f706f7365723c4163636f756e7449643e1450697049641c42616c616e63652c4f7074696f6e3c55726c3e584f7074696f6e3c5069704465736372697074696f6e3e5c4d61796265426c6f636b3c426c6f636b4e756d6265723e3050726f706f73616c44617461149c20412050495020776173206d61646520776974682061206042616c616e636560207374616b652e0038202320506172616d65746572733a0055012043616c6c6572204449442c2050726f706f7365722c205049502049442c206465706f7369742c2055524c2c206465736372697074696f6e2c206578706972792074696d652c2070726f706f73616c20646174612e5050726f706f73616c5374617465557064617465640c284964656e7469747949641450697049643450726f706f73616c537461746504dc2054726967676572656420656163682074696d6520746865207374617465206f6620612070726f706f73616c20697320616d656e64656414566f74656414284964656e746974794964244163636f756e74496414506970496410626f6f6c1c42616c616e636504fc20604163636f756e7449646020766f7465642060626f6f6c60206f6e207468652070726f706f73616c207265666572656e636564206279206050697049646024506970436c6f7365640c284964656e74697479496414506970496410626f6f6c04ec2050697020686173206265656e20636c6f7365642c20626f6f6c20696e6469636174657320776865746865722064617461206973207072756e656448457865637574696f6e5363686564756c65640c284964656e7469747949641450697049642c426c6f636b4e756d62657204e420457865637574696f6e206f6620612050495020686173206265656e207363686564756c656420617420737065636966696320626c6f636b2e7444656661756c74456e6163746d656e74506572696f644368616e6765640c284964656e7469747949642c426c6f636b4e756d6265722c426c6f636b4e756d62657208dc2044656661756c7420656e6163746d656e7420706572696f642028696e20626c6f636b732920686173206265656e206368616e6765642e94202863616c6c6572204449442c206f6c6420706572696f642c206e657720706572696f6429744d696e696d756d50726f706f73616c4465706f7369744368616e6765640c284964656e7469747949641c42616c616e63651c42616c616e63650880204d696e696d756d206465706f73697420616d6f756e74206d6f64696669656494202863616c6c6572204449442c206f6c6420616d6f756e742c206e657720616d6f756e74295c50656e64696e675069704578706972794368616e6765640c284964656e7469747949645c4d61796265426c6f636b3c426c6f636b4e756d6265723e5c4d61796265426c6f636b3c426c6f636b4e756d6265723e08d020416d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020657870697265732e94202863616c6c6572204449442c206f6c64206578706972792c206e65772065787069727929584d6178506970536b6970436f756e744368616e6765640c284964656e74697479496430536b6970706564436f756e7430536b6970706564436f756e7408d020546865206d6178696d756d2074696d65732061205049502063616e20626520736b697070656420776173206368616e6765642e8c202863616c6c6572204449442c206f6c642076616c75652c206e65772076616c756529544163746976655069704c696d69744368616e6765640c284964656e7469747949640c7533320c75333208bc20546865206d6178696d756d206e756d626572206f6620616374697665205049507320776173206368616e6765642e8c202863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293850726f706f73616c526566756e640c284964656e7469747949641450697049641c42616c616e6365084020526566756e642070726f706f73616c4c202869642c20746f74616c20616d6f756e74293c536e617073686f74436c656172656408284964656e74697479496428536e617073686f74496404682054686520736e617073686f742077617320636c65617265642e34536e617073686f7454616b656e0c284964656e74697479496428536e617073686f7449644c5665633c536e617073686f747465645069703e04682041206e657720736e617073686f74207761732074616b656e2e28506970536b69707065640c284964656e74697479496414506970496430536b6970706564436f756e7408a420412050495020696e2074686520736e617073686f742071756575652077617320736b69707065642e84202867635f6469642c207069705f69642c206e65775f736b69705f636f756e742958536e617073686f74526573756c7473456e616374656414284964656e746974794964484f7074696f6e3c536e617073686f7449643e685665633c2850697049642c20536b6970706564436f756e74293e285665633c50697049643e285665633c50697049643e08350120526573756c74732028652e672e2c20617070726f7665642c2072656a65637465642c20616e6420736b6970706564292c207765726520656e616374656420666f7220736f6d6520504950732e5501202867635f6469642c20736e617073686f745f69645f6f70742c20736b69707065645f706970735f776974685f6e65775f636f756e742c2072656a65637465645f706970732c20617070726f7665645f706970732964457865637574696f6e5363686564756c696e674661696c65640c284964656e7469747949641450697049642c426c6f636b4e756d626572041101205363686564756c696e67206f66207468652050495020666f7220657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e3c4578706972795363686564756c65640c284964656e7469747949641450697049642c426c6f636b4e756d626572049c205468652050495020686173206265656e207363686564756c656420666f72206578706972792e584578706972795363686564756c696e674661696c65640c284964656e7469747949641450697049642c426c6f636b4e756d626572040501205363686564756c696e67206f66207468652050495020666f7220657870697279206661696c656420696e20746865207363686564756c65722070616c6c65742e64457865637574696f6e43616e63656c6c696e674661696c65640414506970496404f42043616e63656c6c696e67207468652050495020657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e00488452657363686564756c654e6f74427952656c65617365436f6f7264696e61746f72043501204f6e6c79207468652047432072656c6561736520636f6f7264696e61746f7220697320616c6c6f77656420746f2072657363686564756c652070726f706f73616c20657865637574696f6e2e404e6f7446726f6d436f6d6d756e69747908f02054686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2ed0205468652070726f706f73616c206d7573742062652066726f6d2074686520636f6d6d756e6974792c206275742069736e27742e384e6f744279436f6d6d697474656508f02054686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2eb8205468652070726f706f73616c206d75737420626520627920636f6d6d756e6974792c206275742069736e27742e44546f6f4d616e7941637469766550697073082d01205468652063757272656e74206e756d626572206f6620616374697665202870656e64696e67207c207363686564756c65642920504950732065786365656420746865206d6178696d756da020616e64207468652070726f706f73616c206973206e6f74206279206120636f6d6d69747465652e40496e636f72726563744465706f73697404a02050726f706f7365722073706563696669657320616e20696e636f7272656374206465706f7369744c496e73756666696369656e744465706f73697404b82050726f706f7365722063616e2774206166666f726420746f206c6f636b206d696e696d756d206465706f736974384e6f5375636850726f706f73616c0474205468652070726f706f73616c20646f6573206e6f742065786973742e4c4e6f7441436f6d6d69747465654d656d6265720488204e6f742070617274206f6620676f7665726e616e636520636f6d6d69747465652e60496e76616c6964467574757265426c6f636b4e756d62657204dc205768656e206120626c6f636b206e756d626572206973206c657373207468616e2063757272656e7420626c6f636b206e756d6265722e544e756d6265724f66566f74657345786365656465640480205768656e206e756d626572206f6620766f746573206f766572666c6f77732e685374616b65416d6f756e744f66566f7465734578636565646564049c205768656e207374616b6520616d6f756e74206f66206120766f7465206f766572666c6f77732e584d697373696e6743757272656e744964656e746974790450204d697373696e672063757272656e742044494458496e636f727265637450726f706f73616c537461746504942050726f706f73616c206973206e6f7420696e2074686520636f72726563742073746174653443616e6e6f74536b6970506970040101205768656e20656e616374696e6720736e617073686f7420726573756c74732c20616e20756e736b69707061626c65205049502077617320736b69707065642e58536e617073686f74526573756c74546f6f4c6172676504190120547269656420746f20656e61637420726573756c747320666f722074686520736e617073686f74207175657565206f766572666c6f77696e6720697473206c656e6774682e48536e617073686f7449644d69736d6174636804610120547269656420746f20656e61637420726573756c7420666f7220504950207769746820696420646966666572656e742066726f6d20746861742061742074686520706f736974696f6e20696e207468652071756575652e705363686564756c656450726f706f73616c446f65736e74457869737404010120457865637574696f6e206f662061207363686564756c65642070726f706f73616c206661696c65642062656361757365206974206973206d697373696e672e6c50726f706f73616c4e6f74496e5363686564756c6564537461746504010120412070726f706f73616c2074686174206973206e6f7420696e2061207363686564756c65642073746174652063616e6e6f742062652065786563757465642e2124506f7274666f6c696f0124506f7274666f6c696f244c4e657874506f7274666f6c696f4e756d626572010106284964656e7469747949643c506f7274666f6c696f4e756d6265720020010000000000000004cc20546865206e65787420706f7274666f6c696f2073657175656e6365206e756d626572206f6620616e206964656e746974792e28506f7274666f6c696f73010206284964656e7469747949643c506f7274666f6c696f4e756d62657234506f7274666f6c696f4e616d650504000c41012054686520736574206f66206578697374696e6720706f7274666f6c696f732077697468207468656972206e616d65732e2049662061206365727461696e2070616972206f6620612044494420616e64590120706f7274666f6c696f206e756d626572206d61707320746f20604e6f6e6560207468656e2073756368206120706f7274666f6c696f20646f65736e27742065786973742e20436f6e76657273656c792c206966206135012070616972206d61707320746f2060536f6d65286e616d652960207468656e2073756368206120706f7274666f6c696f2065786973747320616e642069732063616c6c656420606e616d65602e304e616d65546f4e756d626572010206284964656e74697479496434506f7274666f6c696f4e616d653c506f7274666f6c696f4e756d6265720220010000000000000008e420496e7665727365206d6170206f662060506f7274666f6c696f7360207573656420746f20656e737572652062696a6563746976697469792ca420616e6420756e697175656e657373206f66206e616d657320696e2060506f7274666f6c696f73602e4c506f7274666f6c696f4173736574436f756e740101052c506f7274666f6c696f49640c7536340020000000000000000004fc20486f77206d616e79206173736574732077697468206e6f6e2d7a65726f2062616c616e6365207468697320706f7274666f6c696f20636f6e7461696e732e58506f7274666f6c696f417373657442616c616e6365730102052c506f7274666f6c696f4964185469636b65721c42616c616e63650240000000000000000000000000000000000488205468652061737365742062616c616e636573206f6620706f7274666f6c696f732e54506f7274666f6c696f4c6f636b65644173736574730102052c506f7274666f6c696f4964185469636b65721c42616c616e636502400000000000000000000000000000000008a020416d6f756e74206f6620617373657473206c6f636b656420696e206120706f7274666f6c696f2e2d01205468657365206173736574732073686f7720757020696e20706f7274666f6c696f2062616c616e6365206275742063616e206e6f74206265207472616e7366657272656420617761792e48506f7274666f6c696f437573746f6469616e0001052c506f7274666f6c696f4964284964656e7469747949640004000481012054686520637573746f6469616e206f66206120706172746963756c617220706f7274666f6c696f2e204e6f6e6520696d706c696573207468617420746865206964656e74697479206f776e65722069732074686520637573746f6469616e2e4c506f7274666f6c696f73496e437573746f6479010206284964656e7469747949642c506f7274666f6c696f496410626f6f6c0504000c550120547261636b7320616c6c2074686520706f7274666f6c696f7320696e20637573746f6479206f66206120706172746963756c6172206964656e746974792e204f6e6c79207573656420627920746865205549732ea501205768656e206074727565602069732073746f726564206173207468652076616c756520666f72206120676976656e2060286469642c2070696429602c206974206d65616e73207468617420607069646020697320696e20637573746f6479206f662060646964602ea501206066616c7365602076616c75657320617265206e65766572206578706c696369746c792073746f72656420696e20746865206d61702c20616e642061726520696e737465616420696e6665727265642062792074686520616273656e6365206f662061206b65792e3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0118406372656174655f706f7274666f6c696f04106e616d6534506f7274666f6c696f4e616d6504ac2043726561746573206120706f7274666f6c696f20776974682074686520676976656e20606e616d65602e4064656c6574655f706f7274666f6c696f040c6e756d3c506f7274666f6c696f4e756d6265722039012044656c657465732061207573657220706f7274666f6c696f2e204120706f7274666f6c696f2063616e2062652064656c65746564206f6e6c7920696620697420686173206e6f2066756e64732e00242023204572726f72732101202a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2ef4202a2060506f7274666f6c696f4e6f74456d707479602069662074686520706f7274666f6c696f207374696c6c20686f6c647320616e7920617373657400382023205065726d697373696f6e7330202a20506f7274666f6c696f506d6f76655f706f7274666f6c696f5f66756e64730c1066726f6d2c506f7274666f6c696f496408746f2c506f7274666f6c696f4964146974656d73585665633c4d6f7665506f7274666f6c696f4974656d3e3c6101204d6f766573206120746f6b656e20616d6f756e742066726f6d206f6e6520706f7274666f6c696f206f6620616e206964656e7469747920746f20616e6f7468657220706f7274666f6c696f206f66207468652073616d65e4206964656e746974792e204d7573742062652063616c6c65642062792074686520637573746f6469616e206f66207468652073656e6465722e15012046756e64732066726f6d2064656c6574656420706f7274666f6c696f732063616e20616c736f206265207265636f7665726564207669612074686973206d6574686f642e00e420412073686f7274206d656d6f2063616e20626520616464656420746f20746f206561636820746f6b656e20616d6f756e74206d6f7665642e00242023204572726f72736d01202a2060506f7274666f6c696f446f65734e6f74457869737460206966206f6e65206f7220626f7468206f662074686520706f7274666f6c696f73207265666572656e636520616e20696e76616c696420706f7274666f6c696f2e5501202a206064657374696e6174696f6e5f69735f73616d655f706f7274666f6c696f6020696620626f74682073656e64657220616e6420726563656976657220706f7274666f6c696f20617265207468652073616d659501202a2060446966666572656e744964656e74697479506f7274666f6c696f7360206966207468652073656e64657220616e6420726563656976657220706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e7469746965734d01202a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f66207468652066726f6d20706f7274666f6c696f4501202a2060496e73756666696369656e74506f7274666f6c696f42616c616e636560206966207468652073656e64657220646f6573206e6f74206861766520656e6f75676820667265652062616c616e636500382023205065726d697373696f6e7330202a20506f7274666f6c696f4072656e616d655f706f7274666f6c696f080c6e756d3c506f7274666f6c696f4e756d6265721c746f5f6e616d6534506f7274666f6c696f4e616d651c842052656e616d65732061206e6f6e2d64656661756c7420706f7274666f6c696f2e00242023204572726f72732101202a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2e00382023205065726d697373696f6e7330202a20506f7274666f6c696f58717569745f706f7274666f6c696f5f637573746f6479040c7069642c506f7274666f6c696f496420c0205768656e2063616c6c65642062792074686520637573746f6469616e206f662060706f7274666f6c696f5f6964602c4d0120616c6c6f77732072657475726e696e672074686520637573746f6479206f662074686520706f7274666f6c696f20746f2074686520706f7274666f6c696f206f776e657220756e696c61746572616c6c792e00242023204572726f72736101202a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f74207468652063757272656e7420637573746f6469616e206f662060706f7274666f6c696f5f6964602e00382023205065726d697373696f6e7330202a20506f7274666f6c696f606163636570745f706f7274666f6c696f5f637573746f6479041c617574685f69640c75363400011840506f7274666f6c696f437265617465640c284964656e7469747949643c506f7274666f6c696f4e756d62657234506f7274666f6c696f4e616d6518b42054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c7920637265617465642e0034202320506172616d657465727334202a206f726967696e204449444c202a20706f7274666f6c696f206e756d62657244202a20706f7274666f6c696f206e616d6540506f7274666f6c696f44656c6574656408284964656e7469747949643c506f7274666f6c696f4e756d62657214b42054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c792072656d6f7665642e0034202320506172616d657465727334202a206f726967696e204449444c202a20706f7274666f6c696f206e756d626572584d6f7665644265747765656e506f7274666f6c696f7318284964656e7469747949642c506f7274666f6c696f49642c506f7274666f6c696f4964185469636b65721c42616c616e6365304f7074696f6e3c4d656d6f3e20f4204120746f6b656e20616d6f756e7420686173206265656e206d6f7665642066726f6d206f6e6520706f7274666f6c696f20746f20616e6f746865722e0034202320506172616d657465727334202a206f726967696e204449444c202a20736f7572636520706f7274666f6c696f60202a2064657374696e6174696f6e20706f7274666f6c696f3c202a206173736574207469636b65727c202a2061737365742062616c616e6365207468617420776173206d6f76656440506f7274666f6c696f52656e616d65640c284964656e7469747949643c506f7274666f6c696f4e756d62657234506f7274666f6c696f4e616d651801012054686520706f7274666f6c696f206964656e746966696564207769746820606e756d6020686173206265656e2072656e616d656420746f20606e616d65602e0034202320506172616d657465727334202a206f726967696e204449444c202a20706f7274666f6c696f206e756d62657244202a20706f7274666f6c696f206e616d653855736572506f7274666f6c696f7308284964656e746974794964945665633c28506f7274666f6c696f4e756d6265722c20506f7274666f6c696f4e616d65293e14d820416c6c206e6f6e2d64656661756c7420706f7274666f6c696f206e756d6265727320616e64206e616d6573206f662061204449442e0034202320506172616d657465727334202a206f726967696e2044494478202a20766563746f72206f66206e756d6265722d6e616d6520706169727364506f7274666f6c696f437573746f6469616e4368616e6765640c284964656e7469747949642c506f7274666f6c696f4964284964656e74697479496418f820437573746f6479206f66206120706f7274666f6c696f20686173206265656e20676976656e20746f206120646966666572656e74206964656e746974790034202320506172616d657465727334202a206f726967696e204449443c202a20706f7274666f6c696f20696468202a20706f7274666f6c696f20637573746f6469616e20646964002454506f7274666f6c696f446f65734e6f74457869737404742054686520706f7274666f6c696f20646f65736e27742065786973742e70496e73756666696369656e74506f7274666f6c696f42616c616e636504a020496e73756666696369656e742062616c616e636520666f722061207472616e73616374696f6e2e6844657374696e6174696f6e497353616d65506f7274666f6c696f04ec2054686520736f7572636520616e642064657374696e6174696f6e20706f7274666f6c696f732073686f756c6420626520646966666572656e742e64506f7274666f6c696f4e616d65416c7265616479496e5573650435012054686520706f7274666f6c696f20636f756c646e27742062652072656e616d65642062656361757365207468652063686f73656e206e616d6520697320616c726561647920696e207573652e945365636f6e646172794b65794e6f74417574686f72697a6564466f72506f7274666f6c696f04010120546865207365636f6e64617279206b6579206973206e6f7420617574686f72697a656420746f206163636573732074686520706f7274666f6c696f2873292e54556e617574686f72697a6564437573746f6469616e04f82054686520706f72666f6c696f277320637573746f6479206973207769746820736f6d656f6e65206f74686572207468616e207468652063616c6c65722e60496e73756666696369656e74546f6b656e734c6f636b656404c02043616e206e6f7420756e6c6f636b206d6f726520746f6b656e73207468616e207768617420617265206c6f636b656444506f7274666f6c696f4e6f74456d70747904c02054686520706f7274666f6c696f207374696c6c2068617320736f6d652061737365742062616c616e6365206c6566746c446966666572656e744964656e74697479506f7274666f6c696f7304b82054686520706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e746974696573222c50726f746f636f6c466565012c50726f746f636f6c466565082042617365466565730101052850726f746f636f6c4f701c42616c616e636500400000000000000000000000000000000004150120546865206d617070696e67206f66206f7065726174696f6e206e616d657320746f2074686520626173652066656573206f662074686f7365206f7065726174696f6e732e2c436f656666696369656e74010020506f73526174696f200100000001000000041501205468652066656520636f656666696369656e74206173206120706f73697469766520726174696f6e616c20286e756d657261746f722c2064656e6f6d696e61746f72292e0108486368616e67655f636f656666696369656e74042c636f656666696369656e7420506f73526174696f10c4204368616e676573207468652066656520636f656666696369656e7420666f722074686520726f6f74206f726967696e2e00242023204572726f72738c202a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e3c6368616e67655f626173655f66656508086f702850726f746f636f6c4f7020626173655f6665651c42616c616e636510b0204368616e67657320746865206120626173652066656520666f722074686520726f6f74206f726967696e2e00242023204572726f72738c202a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e010c1846656553657408284964656e7469747949641c42616c616e63650488205468652070726f746f636f6c20666565206f6620616e206f7065726174696f6e2e38436f656666696369656e7453657408284964656e74697479496420506f73526174696f0454205468652066656520636f656666696369656e742e284665654368617267656408244163636f756e7449641c42616c616e636504342046656520636861726765642e000c68496e73756666696369656e744163636f756e7442616c616e636504b420496e73756666696369656e74206163636f756e742062616c616e636520746f2070617920746865206665652e4c556e48616e646c6564496d62616c616e636573048c204e6f742061626c6520746f2068616e646c65642074686520696d62616c616e63657368496e73756666696369656e745375627369647942616c616e636504b420496e73756666696369656e7420737562736964792062616c616e636520746f2070617920746865206665652e23245363686564756c657201245363686564756c65720c184167656e646101010538543a3a426c6f636b4e756d62657271015665633c4f7074696f6e3c5363686564756c65643c3c5420617320436f6e6669673e3a3a43616c6c2c20543a3a426c6f636b4e756d6265722c20543a3a0a50616c6c6574734f726967696e2c20543a3a4163636f756e7449643e3e3e000400044d01204974656d7320746f2062652065786563757465642c20696e64657865642062792074686520626c6f636b206e756d626572207468617420746865792073686f756c64206265206578656375746564206f6e2e184c6f6f6b75700001051c5665633c75383e6c5461736b416464726573733c543a3a426c6f636b4e756d6265723e000400040101204c6f6f6b75702066726f6d206964656e7469747920746f2074686520626c6f636b206e756d62657220616e6420696e646578206f6620746865207461736b2e3853746f7261676556657273696f6e01002052656c656173657304000c7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e0098204e6577206e6574776f726b732073746172742077697468206c6173742076657273696f6e2e0118207363686564756c6510107768656e38543a3a426c6f636b4e756d626572386d617962655f706572696f646963a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e207072696f72697479487363686564756c653a3a5072696f726974791063616c6c60426f783c3c5420617320436f6e6669673e3a3a43616c6c3e287420416e6f6e796d6f75736c79207363686564756c652061207461736b2e002c2023203c7765696768743ea0202d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c7390202d2042617365205765696768743a2032322e3239202b202e313236202a205320c2b57334202d204442205765696768743a4c20202020202d20526561643a204167656e64615020202020202d2057726974653a204167656e64613d01202d2057696c6c20757365206261736520776569676874206f662032352077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c73302023203c2f7765696768743e1863616e63656c08107768656e38543a3a426c6f636b4e756d62657214696e6465780c75333228982043616e63656c20616e20616e6f6e796d6f75736c79207363686564756c6564207461736b2e002c2023203c7765696768743ea0202d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c7394202d2042617365205765696768743a2032322e3135202b20322e383639202a205320c2b57334202d204442205765696768743a4c20202020202d20526561643a204167656e64617020202020202d2057726974653a204167656e64612c204c6f6f6b75704101202d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c73302023203c2f7765696768743e387363686564756c655f6e616d6564140869641c5665633c75383e107768656e38543a3a426c6f636b4e756d626572386d617962655f706572696f646963a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e207072696f72697479487363686564756c653a3a5072696f726974791063616c6c60426f783c3c5420617320436f6e6669673e3a3a43616c6c3e285c205363686564756c652061206e616d6564207461736b2e002c2023203c7765696768743ea0202d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c738c202d2042617365205765696768743a2032392e36202b202e313539202a205320c2b57334202d204442205765696768743a6c20202020202d20526561643a204167656e64612c204c6f6f6b75707020202020202d2057726974653a204167656e64612c204c6f6f6b75704d01202d2057696c6c20757365206261736520776569676874206f662033352077686963682073686f756c6420626520676f6f6420666f72206d6f7265207468616e203330207363686564756c65642063616c6c73302023203c2f7765696768743e3063616e63656c5f6e616d6564040869641c5665633c75383e287c2043616e63656c2061206e616d6564207363686564756c6564207461736b2e002c2023203c7765696768743ea0202d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c7394202d2042617365205765696768743a2032342e3931202b20322e393037202a205320c2b57334202d204442205765696768743a6c20202020202d20526561643a204167656e64612c204c6f6f6b75707020202020202d2057726974653a204167656e64612c204c6f6f6b75704101202d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c73302023203c2f7765696768743e387363686564756c655f61667465721014616674657238543a3a426c6f636b4e756d626572386d617962655f706572696f646963a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e207072696f72697479487363686564756c653a3a5072696f726974791063616c6c60426f783c3c5420617320436f6e6669673e3a3a43616c6c3e14ac20416e6f6e796d6f75736c79207363686564756c652061207461736b20616674657220612064656c61792e002c2023203c7765696768743e582053616d65206173205b607363686564756c65605d2e302023203c2f7765696768743e507363686564756c655f6e616d65645f6166746572140869641c5665633c75383e14616674657238543a3a426c6f636b4e756d626572386d617962655f706572696f646963a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e207072696f72697479487363686564756c653a3a5072696f726974791063616c6c60426f783c3c5420617320436f6e6669673e3a3a43616c6c3e1494205363686564756c652061206e616d6564207461736b20616674657220612064656c61792e002c2023203c7765696768743e702053616d65206173205b607363686564756c655f6e616d6564605d2e302023203c2f7765696768743e010c245363686564756c6564082c426c6f636b4e756d6265720c7533320494205363686564756c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d2043616e63656c6564082c426c6f636b4e756d6265720c75333204902043616e63656c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d28446973706174636865640c605461736b416464726573733c426c6f636b4e756d6265723e3c4f7074696f6e3c5665633c75383e3e384469737061746368526573756c7404ac204469737061746368656420736f6d65207461736b2e205c5b7461736b2c2069642c20726573756c745c5d0010404661696c6564546f5363686564756c650468204661696c656420746f207363686564756c6520612063616c6c204e6f74466f756e6404802043616e6e6f742066696e6420746865207363686564756c65642063616c6c2e5c546172676574426c6f636b4e756d626572496e5061737404a820476976656e2074617267657420626c6f636b206e756d62657220697320696e2074686520706173742e4852657363686564756c654e6f4368616e676504f42052657363686564756c65206661696c6564206265636175736520697420646f6573206e6f74206368616e6765207363686564756c65642074696d652e2428536574746c656d656e740128536574746c656d656e74442456656e7565496e666f0001050c7536341456656e7565000400049820496e666f2061626f757420612076656e75652e2076656e75655f6964202d3e2076656e75651c44657461696c730101050c7536343056656e756544657461696c7300040008e420467265652d666f726d20746578742061626f757420612076656e75652e2076656e75655f6964202d3e206056656e756544657461696c736060204f6e6c79206e656564656420666f72207468652055492e4456656e7565496e737472756374696f6e730102050c7536340c7536340828290500107020496e737472756374696f6e7320756e64657220612076656e75652e60204f6e6c79206e656564656420666f72207468652055492e00842076656e75655f6964202d3e20696e737472756374696f6e5f6964202d3e2028293056656e75655369676e6572730102050c75363430543a3a4163636f756e74496410626f6f6c05040004e4205369676e65727320616c6c6f776564206279207468652076656e75652e202876656e75655f69642c207369676e657229202d3e20626f6f6c285573657256656e756573010105284964656e746974794964205665633c7536343e000400047101204172726179206f662076656e756573206372656174656420627920616e206964656e746974792e204f6e6c79206e656564656420666f72207468652055492e204964656e746974794964202d3e205665633c76656e75655f69643e48496e737472756374696f6e44657461696c730101050c75363498496e737472756374696f6e3c543a3a4d6f6d656e742c20543a3a426c6f636b4e756d6265723e00540000000000000000000000000000000000000000000411012044657461696c732061626f757420616e20696e737472756374696f6e2e20696e737472756374696f6e5f6964202d3e20696e737472756374696f6e5f64657461696c733c496e737472756374696f6e4c6567730102050c7536340c7536340c4c65670579010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ec204c65677320756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656750496e737472756374696f6e4c65675374617475730102050c7536340c7536345c4c65675374617475733c543a3a4163636f756e7449643e05040004310120537461747573206f662061206c656720756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656753746174757364496e737472756374696f6e41666669726d7350656e64696e670101050c7536340c75363400200000000000000000048101204e756d626572206f662061666669726d6174696f6e732070656e64696e67206265666f726520696e737472756374696f6e2069732065786563757465642e20696e737472756374696f6e5f6964202d3e2061666669726d5f70656e64696e673c41666669726d7352656365697665640102050c7536342c506f7274666f6c696f49644441666669726d6174696f6e53746174757305040004990120547261636b732061666669726d6174696f6e7320726563656976656420666f7220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c20636f756e7465725f706172747929202d3e2041666669726d6174696f6e537461747573405573657241666669726d6174696f6e730102052c506f7274666f6c696f49640c7536344441666669726d6174696f6e5374617475730504000855012048656c70732061207573657220747261636b2074686569722070656e64696e6720696e737472756374696f6e7320616e642061666669726d6174696f6e7320286f6e6c79206e656564656420666f72205549292ed42028636f756e7465725f70617274792c20696e737472756374696f6e5f696429202d3e2041666669726d6174696f6e5374617475733052656365697074735573656401020530543a3a4163636f756e7449640c75363410626f6f6c02040004150120547261636b7320726564656d7074696f6e206f662072656365697074732e20287369676e65722c20726563656970745f75696429202d3e20726563656970745f757365643856656e756546696c746572696e67010102185469636b657210626f6f6c00040004fd0120547261636b73206966206120746f6b656e2068617320656e61626c65642066696c746572696e672076656e75657320746861742063616e2063726561746520696e737472756374696f6e7320696e766f6c76696e6720746865697220746f6b656e2e205469636b6572202d3e2066696c746572696e675f656e61626c65643856656e7565416c6c6f774c697374010202185469636b65720c75363410626f6f6c05040008c1012056656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c6172207469636b65722e204f6c7920757365642069662066696c746572696e6720697320656e61626c65642e7820287469636b65722c2076656e75655f696429202d3e20616c6c6f7765643056656e7565436f756e74657201000c753634200000000000000000041901204e756d626572206f662076656e75657320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d6265722948496e737472756374696f6e436f756e74657201000c753634200000000000000000043101204e756d626572206f6620696e737472756374696f6e7320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d626572293853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0144306372656174655f76656e75650c1c64657461696c733056656e756544657461696c731c7369676e657273445665633c543a3a4163636f756e7449643e0c7479702456656e756554797065145c205265676973746572732061206e65772076656e75652e00a8202a206064657461696c7360202d2045787472612064657461696c732061626f757420612076656e75654101202a20607369676e65727360202d204172726179206f66207369676e65727320746861742061726520616c6c6f77656420746f207369676e20726563656970747320666f7220746869732076656e756598202a206074797060202d2054797065206f662076656e7565206265696e672063726561746564507570646174655f76656e75655f64657461696c73080869640c7536341c64657461696c733056656e756544657461696c731060204564697420612076656e756527732064657461696c732e00b8202a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742ec4202a206064657461696c7360207370656369666965732074686520757064617465642076656e75652064657461696c732e447570646174655f76656e75655f74797065080869640c7536340c7479702456656e7565547970651054204564697420612076656e7565277320747970652e00b8202a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742eb8202a206074797065602073706563696669657320746865206e65772074797065206f66207468652076656e75652e3c6164645f696e737472756374696f6e142076656e75655f69640c7536343c736574746c656d656e745f7479706578536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e2874726164655f64617465444f7074696f6e3c543a3a4d6f6d656e743e2876616c75655f64617465444f7074696f6e3c543a3a4d6f6d656e743e106c656773205665633c4c65673e306020416464732061206e657720696e737472756374696f6e2e0030202320417267756d656e7473f0202a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e0d01202a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c6564610120202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e5501202a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e7101202a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b8202a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e00242023205765696768749c20603935305f3030305f303030202b20315f3030305f303030202a206c6567732e6c656e282960686164645f616e645f61666669726d5f696e737472756374696f6e182076656e75655f69640c7536343c736574746c656d656e745f7479706578536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e2874726164655f64617465444f7074696f6e3c543a3a4d6f6d656e743e2876616c75655f64617465444f7074696f6e3c543a3a4d6f6d656e743e106c656773205665633c4c65673e28706f7274666f6c696f73405665633c506f7274666f6c696f49643e3490204164647320616e642061666669726d732061206e657720696e737472756374696f6e2e0030202320417267756d656e7473f0202a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e0d01202a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c6564610120202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e5501202a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e7101202a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b8202a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e7101202a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2075736520696e20746869732061666669726d6174696f6e732e00382023205065726d697373696f6e7330202a20506f7274666f6c696f4861666669726d5f696e737472756374696f6e0c38696e737472756374696f6e5f69640c75363428706f7274666f6c696f73405665633c506f7274666f6c696f49643e386d61785f6c6567735f636f756e740c75333224c02050726f766964652061666669726d6174696f6e20746f20616e206578697374696e6720696e737472756374696f6e2e0030202320417267756d656e7473bc202a2060696e737472756374696f6e5f696460202d20496e737472756374696f6e20696420746f2061666669726d2e6d01202a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2061666669726d207468697320696e737472756374696f6e2efc202a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f206265202061666669726d65642e00382023205065726d697373696f6e7330202a20506f7274666f6c696f5077697468647261775f61666669726d6174696f6e0c38696e737472756374696f6e5f69640c75363428706f7274666f6c696f73405665633c506f7274666f6c696f49643e386d61785f6c6567735f636f756e740c75333224c420576974686472617720616e2061666669726d6174696f6e20666f72206120676976656e20696e737472756374696f6e2e0030202320417267756d656e74732101202a2060696e737472756374696f6e5f696460202d20496e737472756374696f6e20696420666f7220746861742061666669726d6174696f6e206765742077697468647261776e2e6101202a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2077697468647261772061666669726d6174696f6e2e0501202a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f20626520756e2d61666669726d65642e00382023205065726d697373696f6e7330202a20506f7274666f6c696f4872656a6563745f696e737472756374696f6e0c38696e737472756374696f6e5f69640c75363424706f7274666f6c696f2c506f7274666f6c696f49642c6e756d5f6f665f6c6567730c75333224842052656a6563747320616e206578697374696e6720696e737472756374696f6e2e0030202320417267756d656e7473bc202a2060696e737472756374696f6e5f696460202d20496e737472756374696f6e20696420746f2072656a6563742ed4202a2060706f7274666f6c696f60202d20506f7274666f6c696f20746f2072656a6563742074686520696e737472756374696f6e2ed4202a20606e756d5f6f665f6c65677360202d204e756d626572206f66206c65677320696e2074686520696e737472756374696f6e2e00382023205065726d697373696f6e7330202a20506f7274666f6c696f5061666669726d5f776974685f72656365697074731038696e737472756374696f6e5f69640c7536343c726563656970745f64657461696c73dc5665633c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e28706f7274666f6c696f73405665633c506f7274666f6c696f49643e386d61785f6c6567735f636f756e740c75333230d0204163636570747320616e20696e737472756374696f6e20616e6420636c61696d732061207369676e656420726563656970742e0030202320417267756d656e7473b0202a2060696e737472756374696f6e5f696460202d2054617267657420696e737472756374696f6e2069642eac202a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d8202a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e90202a20607369676e657260202d205369676e6572206f662074686520726563656970742e88202a20607369676e65645f6461746160202d205369676e656420726563656970742e7d01202a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f20616363657074207468697320696e737472756374696f6e207769746800382023205065726d697373696f6e7330202a20506f7274666f6c696f34636c61696d5f726563656970740838696e737472756374696f6e5f69640c7536343c726563656970745f64657461696c73c85265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e2c6420436c61696d732061207369676e656420726563656970742e0030202320417267756d656e7473f0202a2060696e737472756374696f6e5f696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742eac202a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d8202a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e90202a20607369676e657260202d205369676e6572206f662074686520726563656970742e88202a20607369676e65645f6461746160202d205369676e656420726563656970742e00382023205065726d697373696f6e7330202a20506f7274666f6c696f3c756e636c61696d5f726563656970740838696e737472756374696f6e5f69640c753634186c65675f69640c753634209c20556e636c61696d7320612070726576696f75736c7920636c61696d656420726563656970742e0030202320417267756d656e7473f0202a2060696e737472756374696f6e5f696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742eac202a20606c65675f696460202d20546172676574206c656720696420666f7220746865207265636569707400382023205065726d697373696f6e7330202a20506f7274666f6c696f4c7365745f76656e75655f66696c746572696e6708187469636b6572185469636b65721c656e61626c656410626f6f6c20c420456e61626c6573206f722064697361626c65642076656e75652066696c746572696e6720666f72206120746f6b656e2e0030202320417267756d656e7473b8202a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e1d01202a2060656e61626c656460202d20426f6f6c65616e20746861742064656369646573206966207468652066696c746572696e672073686f756c6420626520656e61626c65642e00382023205065726d697373696f6e7320202a20417373657430616c6c6f775f76656e75657308187469636b6572185469636b65721876656e756573205665633c7536343e1c110120416c6c6f7773206164646974696f6e616c2076656e75657320746f2063726561746520696e737472756374696f6e7320696e766f6c76696e6720616e2061737365742e00b8202a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e8101202a206076656e75657360202d204172726179206f662076656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e00382023205065726d697373696f6e7320202a2041737365743c646973616c6c6f775f76656e75657308187469636b6572185469636b65721876656e756573205665633c7536343e1c6d01205265766f6b6573207065726d697373696f6e20676976656e20746f2076656e75657320666f72206372656174696e6720696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c61722061737365742e00b8202a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2ea901202a206076656e75657360202d204172726179206f662076656e756573207468617420617265206e6f206c6f6e67657220616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e00382023205065726d697373696f6e7320202a2041737365745c6368616e67655f726563656970745f76616c6964697479082c726563656970745f7569640c7536342076616c696469747910626f6f6c140101204d61726b732061207265636569707420697373756564206279207468652063616c6c657220617320636c61696d6564206f72206e6f7420636c61696d65642ec501205468697320616c6c6f77732074686520726563656970742069737375657220746f20696e76616c696461746520616e20616c7265616479206973737565642072656365697074206f7220726576616c696461746520616e20616c726561647920636c61696d656420726563656970742e00b0202a2060726563656970745f75696460202d20556e69717565204944206f662074686520726563656970742eb0202a206076616c696469747960202d204e65772076616c6964697479206f662074686520726563656970742e74657865637574655f7363686564756c65645f696e737472756374696f6e0838696e737472756374696f6e5f69640c7536342c5f6c6567735f636f756e740c75333204850120526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f20657865637574652061207363686564756c656420736574746c656d656e7420696e737472756374696f6e2e5872657363686564756c655f696e737472756374696f6e0438696e737472756374696f6e5f69640c75363428882052657363686564756c65732061206661696c656420696e737472756374696f6e2e0030202320417267756d656e7473e8202a2060696e737472756374696f6e5f696460202d2054617267657420696e737472756374696f6e20696420746f2072657363686564756c652e00382023205065726d697373696f6e7330202a20506f7274666f6c696f00242023204572726f72734101202a2060496e737472756374696f6e4e6f744661696c656460202d20496e737472756374696f6e206e6f7420696e2061206661696c6564207374617465206f7220646f6573206e6f742065786973742e014c3056656e75654372656174656410284964656e7469747949640c7536343056656e756544657461696c732456656e75655479706504f02041206e65772076656e756520686173206265656e206372656174656420286469642c2076656e75655f69642c2064657461696c732c2074797065294c56656e756544657461696c73557064617465640c284964656e7469747949640c7536343056656e756544657461696c7304190120416e206578697374696e672076656e756527732064657461696c7320686173206265656e207570646174656420286469642c2076656e75655f69642c2064657461696c73294056656e756554797065557064617465640c284964656e7469747949640c7536342456656e75655479706504010120416e206578697374696e672076656e75652773207479706520686173206265656e207570646174656420286469642c2076656e75655f69642c20747970652948496e737472756374696f6e437265617465641c284964656e7469747949640c7536340c7536346c536574746c656d656e74547970653c426c6f636b4e756d6265723e384f7074696f6e3c4d6f6d656e743e384f7074696f6e3c4d6f6d656e743e205665633c4c65673e088c2041206e657720696e737472756374696f6e20686173206265656e20637265617465643d0120286469642c2076656e75655f69642c20696e737472756374696f6e5f69642c20736574746c656d656e745f747970652c2074726164655f646174652c2076616c75655f646174652c206c656773294c496e737472756374696f6e41666669726d65640c284964656e7469747949642c506f7274666f6c696f49640c75363404090120416e20696e737472756374696f6e20686173206265656e2061666669726d656420286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964295041666669726d6174696f6e57697468647261776e0c284964656e7469747949642c506f7274666f6c696f49640c753634040d0120416e2061666669726d6174696f6e20686173206265656e2077697468647261776e20286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964294c496e737472756374696f6e52656a656374656408284964656e7469747949640c75363404dc20416e20696e737472756374696f6e20686173206265656e2072656a656374656420286469642c20696e737472756374696f6e5f6964293852656365697074436c61696d656418284964656e7469747949640c7536340c7536340c753634244163636f756e7449643c526563656970744d657461646174610481012041207265636569707420686173206265656e20636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e65722c2072656365697074206d6574616461746129585265636569707456616c69646974794368616e67656410284964656e746974794964244163636f756e7449640c75363410626f6f6c0411012041207265636569707420686173206265656e20696e76616c69646174656420286469642c207369676e65722c20726563656970745f7569642c2076616c6964697479294052656365697074556e636c61696d656414284964656e7469747949640c7536340c7536340c753634244163636f756e7449640441012041207265636569707420686173206265656e20756e636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e6572293856656e756546696c746572696e670c284964656e746974794964185469636b657210626f6f6c046d012056656e75652066696c746572696e6720686173206265656e20656e61626c6564206f722064697361626c656420666f722061207469636b657220286469642c207469636b65722c2066696c746572696e675f656e61626c6564293456656e756573416c6c6f7765640c284964656e746974794964185469636b6572205665633c7536343e04e02056656e75657320616464656420746f20616c6c6f77206c69737420286469642c207469636b65722c207665633c76656e75655f69643e293456656e756573426c6f636b65640c284964656e746974794964185469636b6572205665633c7536343e04e02056656e75657320616464656420746f20626c6f636b206c69737420286469642c207469636b65722c207665633c76656e75655f69643e29484c65674661696c6564457865637574696f6e0c284964656e7469747949640c7536340c75363404e020457865637574696f6e206f662061206c6567206661696c656420286469642c20696e737472756374696f6e5f69642c206c65675f69642944496e737472756374696f6e4661696c656408284964656e7469747949640c75363404cc20496e737472756374696f6e206661696c656420657865637574696f6e20286469642c20696e737472756374696f6e5f6964294c496e737472756374696f6e457865637574656408284964656e7469747949640c75363404dc20496e737472756374696f6e206578656375746564207375636365737366756c6c79286469642c20696e737472756374696f6e5f6964294456656e7565556e617574686f72697a65640c284964656e746974794964185469636b65720c75363404ec2056656e756520756e617574686f72697a6564206279207469636b6572206f776e657220286469642c205469636b65722c2076656e75655f696429405363686564756c696e674661696c6564043444697370617463684572726f720484205363686564756c696e67206f6620696e737472756374696f6e206661696c732e58496e737472756374696f6e52657363686564756c656408284964656e7469747949640c753634087020496e737472756374696f6e2069732072657363686564756c65642e74202863616c6c6572204449442c20696e737472756374696f6e5f696429006430496e76616c696456656e756504582056656e756520646f6573206e6f742065786973742e30556e617574686f72697a656404ac2053656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e3c4e6f50656e64696e6741666669726d04d4204e6f2070656e64696e672061666669726d6174696f6e20666f72207468652070726f766964656420696e737472756374696f6e2e58496e737472756374696f6e4e6f7441666669726d6564048c20496e737472756374696f6e20686173206e6f74206265656e2061666669726d65642e54496e737472756374696f6e4e6f7450656e64696e6704bc2050726f766964656420696e737472756374696f6e206973206e6f742070656e64696e6720657865637574696f6e2e50496e737472756374696f6e4e6f744661696c656404bc2050726f766964656420696e737472756374696f6e206973206e6f74206661696c696e6720657865637574696f6e2e344c65674e6f7450656e64696e67049c2050726f7669646564206c6567206973206e6f742070656e64696e6720657865637574696f6e2e48556e617574686f72697a65645369676e6572049c205369676e6572206973206e6f7420617574686f72697a6564206279207468652076656e75652e5452656365697074416c7265616479436c61696d65640458205265636569707420616c726561647920757365642e44526563656970744e6f74436c61696d656404582052656365697074206e6f742075736564207965742e44556e617574686f72697a656456656e756504a82056656e756520646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e484661696c6564546f4c6f636b546f6b656e73042501205768696c652061666669726d696e6720746865207472616e736665722c2073797374656d206661696c656420746f206c6f636b207468652061737365747320696e766f6c7665642e44496e737472756374696f6e4661696c6564047c20496e737472756374696f6e206661696c656420746f20657865637574652e5c496e737472756374696f6e4461746573496e76616c6964047820496e737472756374696f6e2068617320696e76616c696420646174657370496e737472756374696f6e536574746c65426c6f636b50617373656404ac20496e737472756374696f6e27732074617267657420736574746c6520626c6f636b20726561636865642e40496e76616c69645369676e6174757265047c204f6666636861696e207369676e617475726520697320696e76616c69642e4853616d6553656e646572526563656976657204882053656e64657220616e6420726563656976657220617265207468652073616d652e44506f7274666f6c696f4d69736d6174636804290120506f7274666f6c696f20696e207265636569707420646f6573206e6f74206d61746368207769746820706f7274666f6c696f732070726f76696465642062792074686520757365722e44536574746c654f6e50617374426c6f636b046501205468652070726f766964656420736574746c656d656e7420626c6f636b206e756d62657220697320696e20746865207061737420616e642063616e6e6f74206265207573656420627920746865207363686564756c65722e4c4e6f506f7274666f6c696f50726f766964656404410120506f7274666f6c696f20626173656420616374696f6e732072657175697265206174206c65617374206f6e6520706f7274666f6c696f20746f2062652070726f766964656420617320696e7075742e6c556e657870656374656441666669726d6174696f6e537461747573044901205468652063757272656e7420696e737472756374696f6e2061666669726d6174696f6e2073746174757320646f6573206e6f7420737570706f7274207468652072657175657374656420616374696f6e2e404661696c6564546f5363686564756c650490205363686564756c696e67206f6620616e20696e737472756374696f6e206661696c732e404c6567436f756e74546f6f536d616c6c04a901204c65677320636f756e742073686f756c64206d61746368657320776974682074686520746f74616c206e756d626572206f66206c65677320696e20776869636820676976656e20706f7274666f6c696f20616374206173206066726f6d5f706f7274666f6c696f602e48556e6b6e6f776e496e737472756374696f6e047820496e737472756374696f6e2073746174757320697320756e6b6e6f776e64496e737472756374696f6e486173546f6f4d616e794c65677304c8204d6178696d756d206c65677320746861742063616e20626520696e20612073696e676c6520696e737472756374696f6e2e2528537461746973746963730128537461746973746963730c584163746976655472616e736665724d616e6167657273010102185469636b6572505665633c5472616e736665724d616e616765723e00040004c8205472616e73666572206d616e61676572732063757272656e746c7920656e61626c656420666f7220616e2041737365742e54496e766573746f72436f756e745065724173736574010102185469636b65721c436f756e7465720020000000000000000004a4204e756d626572206f662063757272656e7420696e766573746f727320696e20616e2061737365742e384578656d7074456e74697469657301020264285469636b65722c205472616e736665724d616e61676572291c53636f7065496410626f6f6c0204000c490120456e746974696573206578656d70742066726f6d207472616e73666572206d616e61676572732e204578656d7074696f6e7320726571756972656d656e747320617265206261736564206f6e20544d532e4d0120544d73206d61792072657175697265206a757374207468652073656e6465722c206a757374207468652072656365697665722c20626f7468206f722065697468657220746f206265206578656d707465642e3d012043544d2072657175697265732073656e64657220746f206265206578656d70746564207768696c652050544d20726571756972657320726563656976657220746f206265206578656d707465642e0110506164645f7472616e736665725f6d616e6167657208187469636b6572185469636b6572506e65775f7472616e736665725f6d616e616765723c5472616e736665724d616e61676572387420416464732061206e6577207472616e73666572206d616e616765722e0030202320417267756d656e7473c901202a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e1501202a20607469636b657260207469636b657220666f7220776869636820746865207472616e73666572206d616e616765727320617265206265696e6720757064617465642edc202a20606e65775f7472616e736665725f6d616e6167657260205472616e73666572206d616e61676572206265696e672061646465642e00242023204572726f7273f4202a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722e6901202a20604475706c69636174655472616e736665724d616e616765726020696620606e65775f7472616e736665725f6d616e616765726020697320616c726561647920656e61626c656420666f7220746865207469636b65722e3901202a20605472616e736665724d616e61676572734c696d697452656163686564602069662074686520607469636b65726020616c726561647920686173206d617820544d7320617474616368656400382023205065726d697373696f6e7320202a2041737365745c72656d6f76655f7472616e736665725f6d616e6167657208187469636b6572185469636b6572407472616e736665725f6d616e616765723c5472616e736665724d616e6167657234702052656d6f7665732061207472616e73666572206d616e616765722e0030202320417267756d656e7473c901202a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e1501202a20607469636b657260207469636b657220666f7220776869636820746865207472616e73666572206d616e616765727320617265206265696e6720757064617465642ed4202a20607472616e736665725f6d616e6167657260205472616e73666572206d616e61676572206265696e672072656d6f7665642e00242023204572726f7273f4202a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722ead01202a20605472616e736665724d616e616765724d697373696e6760206966206061737365745f636f6d706c69616e63656020636f6e7461696e73206d756c7469706c6520656e74726965732077697468207468652073616d652060726571756972656d656e745f6964602e00382023205065726d697373696f6e7320202a204173736574546164645f6578656d707465645f656e7469746965730c187469636b6572185469636b6572407472616e736665725f6d616e616765723c5472616e736665724d616e61676572446578656d707465645f656e746974696573305665633c53636f706549643e34a0204578656d707420656e7469746965732066726f6d2061207472616e73666572206d616e616765720030202320417267756d656e7473c901202a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e0901202a20607469636b657260207469636b657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e5901202a20607472616e736665725f6d616e6167657260205472616e73666572206d616e6167657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e3d01202a20606578656d707465645f656e746974696573602053636f706549647320666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e00242023204572726f7273f4202a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722e00382023205065726d697373696f6e7320202a2041737365746072656d6f76655f6578656d707465645f656e7469746965730c187469636b6572185469636b6572407472616e736665725f6d616e616765723c5472616e736665724d616e6167657220656e746974696573305665633c53636f706549643e34e82072656d6f766520656e7469746965732066726f6d206578656d7074696f6e206c697374206f662061207472616e73666572206d616e616765720030202320417267756d656e7473c901202a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e0901202a20607469636b657260207469636b657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e5901202a20607472616e736665725f6d616e6167657260205472616e73666572206d616e6167657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e1d01202a206073636f70655f696473602053636f706549647320666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e00242023204572726f7273f4202a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722e00382023205065726d697373696f6e7320202a2041737365740110505472616e736665724d616e6167657241646465640c284964656e746974794964185469636b65723c5472616e736665724d616e6167657204882041206e6577207472616e73666572206d616e61676572207761732061646465642e585472616e736665724d616e6167657252656d6f7665640c284964656e746974794964185469636b65723c5472616e736665724d616e6167657204a820416e206578697374696e67207472616e73666572206d616e61676572207761732072656d6f7665642e3c4578656d7074696f6e73416464656410284964656e746974794964185469636b65723c5472616e736665724d616e61676572305665633c53636f706549643e04b4206053636f706549646073207765726520616464656420746f20746865206578656d7074696f6e206c6973742e444578656d7074696f6e7352656d6f76656410284964656e746974794964185469636b65723c5472616e736665724d616e61676572305665633c53636f706549643e04c4206053636f70654964607320776572652072656d6f7665642066726f6d20746865206578656d7074696f6e206c6973742e046c4d61785472616e736665724d616e616765727350657241737365740c75333210030000000010604475706c69636174655472616e736665724d616e61676572049020546865207472616e73666572206d616e6167657220616c726561647920657869737473585472616e736665724d616e616765724d697373696e670480205472616e73666572206d616e61676572206973206e6f7420656e61626c65643c496e76616c69645472616e736665720454205472616e73666572206e6f7420616c6c6f776564705472616e736665724d616e61676572734c696d69745265616368656404150120546865206c696d6974206f66207472616e73666572206d616e616765727320616c6c6f77656420666f7220616e20617373657420686173206265656e2072656163686564260c53746f010c53746f0c2c46756e6472616973657273000202185469636b65720c7536345446756e647261697365723c543a3a4d6f6d656e743e05040008b020416c6c2066756e64726169736572732074686174206172652063757272656e746c792072756e6e696e672e9820287469636b65722c2066756e647261697365725f696429202d3e2046756e647261697365723c46756e64726169736572436f756e74010102185469636b65720c75363400200000000000000000049c20546f74616c2066756e6472616973657273206372656174656420666f72206120746f6b656e2e3c46756e647261697365724e616d6573010202185469636b65720c7536343846756e647261697365724e616d6505040008cc204e616d6520666f72207468652046756e647261697365722e204974206973206f6e6c792075736564206f6666636861696e2eac20287469636b65722c2066756e647261697365725f696429202d3e2046756e64726169736572206e616d650118446372656174655f66756e6472616973657228486f66666572696e675f706f7274666f6c696f2c506f7274666f6c696f4964386f66666572696e675f6173736574185469636b65724472616973696e675f706f7274666f6c696f2c506f7274666f6c696f49643472616973696e675f6173736574185469636b6572147469657273385665633c5072696365546965723e2076656e75655f69640c753634147374617274444f7074696f6e3c543a3a4d6f6d656e743e0c656e64444f7074696f6e3c543a3a4d6f6d656e743e486d696e696d756d5f696e766573746d656e741c42616c616e63653c66756e647261697365725f6e616d653846756e647261697365724e616d654064204372656174652061206e65772066756e647261697365722e001101202a20606f66666572696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e672074686520606f66666572696e675f6173736574602ea8202a20606f66666572696e675f617373657460202d204173736574206265696e67206f6666657265642e0901202a206072616973696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e6720746865206072616973696e675f6173736574602e3901202a206072616973696e675f617373657460202d204173736574206265696e672065786368616e67656420666f7220606f66666572696e675f617373657460206f6e20696e766573746d656e742eec202a2060746965727360202d20507269636520746965727320746f2063686172676520696e766573746f7273206f6e20696e766573746d656e742eac202a206076656e75655f696460202d2056656e756520746f2068616e646c6520736574746c656d656e742e5101202a2060737461727460202d2046756e647261697365722073746172742074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c20737461727420696d6d6564696174656c792e2d01202a2060656e6460202d2046756e6472616973657220656e642074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c206e65766572206578706972652ed101202a20606d696e696d756d5f696e766573746d656e7460202d204d696e696d756d20616d6f756e74206f66206072616973696e675f617373657460207468617420616e20696e766573746f72206e6565647320746f207370656e6420746f20696e7665737420696e20746869732072616973652ef4202a206066756e647261697365725f6e616d6560202d2046756e64726169736572206e616d652c206f6e6c79207573656420696e20746865205549732e00382023205065726d697373696f6e7320202a20417373657430202a20506f7274666f6c696f18696e766573741c50696e766573746d656e745f706f7274666f6c696f2c506f7274666f6c696f49644466756e64696e675f706f7274666f6c696f2c506f7274666f6c696f4964386f66666572696e675f6173736574185469636b65723466756e647261697365725f69640c7536343c70757263686173655f616d6f756e741c42616c616e6365246d61785f70726963653c4f7074696f6e3c42616c616e63653e1c72656365697074e84f7074696f6e3c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e306020496e7665737420696e20612066756e647261697365722e004501202a2060696e766573746d656e745f706f7274666f6c696f60202d20506f7274666f6c696f207468617420606f66666572696e675f6173736574602077696c6c206265206465706f736974656420696e2e0501202a206066756e64696e675f706f7274666f6c696f60202d20506f7274666f6c696f20746861742077696c6c2066756e642074686520696e766573746d656e742ea4202a20606f66666572696e675f617373657460202d20417373657420746f20696e7665737420696e2edc202a206066756e647261697365725f696460202d204944206f66207468652066756e6472616973657220746f20696e7665737420696e2ef8202a206070757263686173655f616d6f756e7460202d20416d6f756e74206f6620606f66666572696e675f61737365746020746f2070757263686173652ebd01202a20606d61785f707269636560202d204d6178696d756d20707269636520746f207061792070657220756e6974206f6620606f66666572696e675f6173736574602c20496620604e6f6e6560746865726520617265206e6f20636f6e73747261696e7473206f6e2070726963652e6d01202a20607265636569707460202d204f66662d636861696e207265636569707420746f2075736520696e7374656164206f66206f6e2d636861696e2062616c616e636520696e206066756e64696e675f706f7274666f6c696f602e00382023205065726d697373696f6e7330202a20506f7274666f6c696f44667265657a655f66756e6472616973657208386f66666572696e675f6173736574185469636b65723466756e647261697365725f69640c7536341c5420467265657a6520612066756e647261697365722e0098202a20606f66666572696e675f617373657460202d20417373657420746f20667265657a652ed0202a206066756e647261697365725f696460202d204944206f66207468652066756e6472616973657220746f20667265657a652e00382023205065726d697373696f6e7320202a2041737365744c756e667265657a655f66756e6472616973657208386f66666572696e675f6173736574185469636b65723466756e647261697365725f69640c7536341c5c20556e667265657a6520612066756e647261697365722e00a0202a20606f66666572696e675f617373657460202d20417373657420746f20756e667265657a652ed8202a206066756e647261697365725f696460202d204944206f66207468652066756e6472616973657220746f20756e667265657a652e00382023205065726d697373696f6e7320202a204173736574606d6f646966795f66756e647261697365725f77696e646f7710386f66666572696e675f6173736574185469636b65723466756e647261697365725f69640c75363414737461727424543a3a4d6f6d656e740c656e64444f7074696f6e3c543a3a4d6f6d656e743e24b8204d6f64696679207468652074696d652077696e646f7720612066756e64726169736572206973206163746976650098202a20606f66666572696e675f617373657460202d20417373657420746f206d6f646966792ed0202a206066756e647261697365725f696460202d204944206f66207468652066756e6472616973657220746f206d6f646966792ea4202a2060737461727460202d204e6577207374617274206f66207468652066756e647261697365722ebc202a2060656e6460202d204e657720656e64206f66207468652066756e6472616973657220746f206d6f646966792e00382023205065726d697373696f6e7320202a2041737365741073746f7008386f66666572696e675f6173736574185469636b65723466756e647261697365725f69640c7536341c4c2053746f7020612066756e647261697365722e0090202a20606f66666572696e675f617373657460202d20417373657420746f2073746f702ec8202a206066756e647261697365725f696460202d204944206f66207468652066756e6472616973657220746f2073746f702e00382023205065726d697373696f6e7320202a20417373657401184446756e647261697365724372656174656410284964656e7469747949640c7536343846756e647261697365724e616d654846756e647261697365723c4d6f6d656e743e088c2041206e65772066756e6472616973657220686173206265656e20637265617465642e350120287072696d6172792069737375616e6365206167656e742c2066756e647261697365722069642c2066756e64726169736572206e616d652c2066756e647261697365722064657461696c732920496e76657374656418284964656e7469747949640c753634185469636b6572185469636b65721c42616c616e63651c42616c616e636508a020416e20696e766573746f7220696e76657374656420696e207468652066756e647261697365722e89012028496e766573746f722c2066756e647261697365725f69642c206f66666572696e6720746f6b656e2c20726169736520746f6b656e2c206f66666572696e675f746f6b656e5f616d6f756e742c2072616973655f746f6b656e5f616d6f756e74294046756e6472616973657246726f7a656e08284964656e7469747949640c753634087820412066756e6472616973657220686173206265656e2066726f7a656e2ea020287072696d6172792069737375616e6365206167656e742c2066756e64726169736572206964294846756e64726169736572556e66726f7a656e08284964656e7469747949640c753634088020412066756e6472616973657220686173206265656e20756e66726f7a656e2ea020287072696d6172792069737375616e6365206167656e742c2066756e64726169736572206964296046756e6472616973657257696e646f774d6f64696669656418204576656e744469640c753634184d6f6d656e74384f7074696f6e3c4d6f6d656e743e184d6f6d656e74384f7074696f6e3c4d6f6d656e743e089c20412066756e647261697365722077696e646f7720686173206265656e206d6f6469666965642e410120287072696d6172792069737375616e6365206167656e742c2066756e647261697365722069642c206f6c645f73746172742c206f6c645f656e642c206e65775f73746172742c206e65775f656e64294046756e64726169736572436c6f73656408284964656e7469747949640c753634087c20412066756e6472616973657220686173206265656e2073746f707065642ea020287072696d6172792069737375616e6365206167656e742c2066756e6472616973657220696429003030556e617574686f72697a656404ac2053656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e204f766572666c6f77049020416e2061726974686d65746963206f7065726174696f6e206f766572666c6f7765642e6c496e73756666696369656e74546f6b656e7352656d61696e696e670484204e6f7420656e6f75676820746f6b656e73206c65667420666f722073616c652e4846756e647261697365724e6f74466f756e6404582046756e64726169736572206e6f7420666f756e642e4446756e647261697365724e6f744c69766504a02046756e64726169736572206973206569746865722066726f7a656e206f722073746f707065642e4046756e64726169736572436c6f73656404b02046756e6472616973657220686173206265656e20636c6f7365642f73746f7070656420616c72656164792e4446756e647261697365724578706972656404d420496e746572616374696e67207769746820612066756e6472616973657220706173742074686520656e6420604d6f6d656e74602e30496e76616c696456656e7565046c20416e20696e76616c69642076656e75652070726f76696465642e44496e76616c69645072696365546965727304290120416e20696e646976696475616c20707269636520746965722077617320696e76616c6964206f72206120736574206f662070726963652074696572732077617320696e76616c69642e54496e76616c69644f66666572696e6757696e646f770461012057696e646f77202873746172742074696d652c20656e642074696d65292068617320696e76616c696420706172616d65746572732c20652e672073746172742074696d6520697320616674657220656e642074696d652e404d61785072696365457863656564656404c0205072696365206f662074686520696e766573746d656e7420657863656564656420746865206d61782070726963652e58496e766573746d656e74416d6f756e74546f6f4c6f7704ec20496e766573746d656e7420616d6f756e74206973206c6f776572207468616e206d696e696d756d20696e766573746d656e7420616d6f756e742e272054726561737572790001083064697362757273656d656e74043462656e65666963696172696573785665633c42656e65666963696172793c42616c616e63654f663c543e3e3e185501204974207472616e73666572732062616c616e6365732066726f6d20747265617375727920746f2065616368206f662062656e6566696369617269657320616e642074686520737065636966696320616d6f756e744820666f722065616368206f66207468656d2e00202023204572726f72c8202a20604261644f726967696e603a204f6e6c7920726f6f742063616e2065786563757465207472616e73616374696f6e2e6101202a2060496e73756666696369656e7442616c616e6365603a2049662074726561737572792062616c616e636573206973206e6f7420656e6f75676820746f20636f76657220616c6c2062656e656669636961726965732e347265696d62757273656d656e740418616d6f756e743042616c616e63654f663c543e0c2101204974207472616e7366657273207468652073706563696669632060616d6f756e74602066726f6d20606f726967696e60206163636f756e7420696e746f2074726561737572792e004d01204f6e6c79206163636f756e747320776869636820617265206173736f63696174656420746f20616e206964656e746974792063616e206d616b65206120646f6e6174696f6e20746f2074726561737572792e010850547265617375727944697362757273656d656e740c284964656e746974794964284964656e7469747949641c42616c616e6365088c2044697362757273656d656e7420746f206120746172676574204964656e746974792e682028746172676574206964656e746974792c20616d6f756e74295454726561737572795265696d62757273656d656e7408284964656e7469747949641c42616c616e63650460205472656173757279207265696d62757273656d656e742e00044c496e73756666696369656e7442616c616e6365047c2050726f706f73657227732062616c616e636520697320746f6f206c6f772e281c5574696c697479011c5574696c69747904184e6f6e63657301010530543a3a4163636f756e74496448417574686f72697a6174696f6e4e6f6e636500200000000000000000000110146261746368041463616c6c73605665633c3c5420617320436f6e6669673e3a3a43616c6c3e48c8204469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e00ec20546869732077696c6c206578656375746520756e74696c20746865206669727374206f6e65206661696c7320616e64207468656e2073746f702e00b0204d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273f0202d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e0024202320576569676874a4202d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e34202d204f6e65206576656e742e00c10120546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e3501206576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e20746865590120604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d616465510120616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c657465646050206576656e74206973206465706f73697465642e3062617463685f61746f6d6963041463616c6c73605665633c3c5420617320436f6e6669673e3a3a43616c6c3e4cc8204469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e00190120546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c2073746f7070696e6720617420746865206669727374206661696c7572652cc420696e207768696368206361736520746865207374617465206368616e6765732061726520726f6c6c6564206261636b2e2901204f6e206661696c7572652c20616e206576656e7420604261746368496e746572727570746564286661696c7572655f6964782c206572726f722960206973206465706f73697465642e00b0204d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273f0202d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e0024202320576569676874a4202d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e34202d204f6e65206576656e742e00190120546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef820546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ee820496620616e792063616c6c206661696c65642c207468656e20604261746368496e74657272757074656460206973206465706f73697465642e190120496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e4062617463685f6f7074696d6973746963041463616c6c73605665633c3c5420617320436f6e6669673e3a3a43616c6c3e54c8204469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e00050120546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c20697272657370656374697665206f66206661696c757265732e0d0120416e79206661696c757265732077696c6c20626520617661696c61626c6520696e2061206042617463684f7074696d69737469634661696c656460206576656e742e00b0204d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273f0202d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e000024202320576569676874a4202d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e34202d204f6e65206576656e742e00190120546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef820546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642efc20496620616e792063616c6c206661696c65642c207468656e206042617463684f7074696d69737469634661696c656460206973206465706f73697465642c01012077697468206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c2061732077656c6c206173206120766563746f722c206f66206572726f72732e190120496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e2072656c61795f74780c1874617267657430543a3a4163636f756e744964247369676e617475726550543a3a4f6666436861696e5369676e61747572651063616c6c7c556e6971756543616c6c3c3c5420617320436f6e6669673e3a3a43616c6c3e30a42052656c617920612063616c6c20666f722061207461726765742066726f6d20616e206f726967696e0055012052656c6179696e6720696e207468697320636f6e746578742072656665727320746f20746865206162696c697479206f66206f726967696e20746f206d616b6520612063616c6c206f6e20626568616c66206f6620207461726765742e006c204665657320617265206368617267656420746f206f726967696e0034202320506172616d657465727388202d2060746172676574603a204163636f756e7420746f2062652072656c61796564ec202d20607369676e6174757265603a205369676e61747572652066726f6d2074617267657420617574686f72697a696e67207468652072656c6179c4202d206063616c6c603a2043616c6c20746f2062652072656c61796564206f6e20626568616c66206f662074617267657400010c404261746368496e746572727570746564082c4576656e74436f756e74731c4572726f7241740cb0204261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792ee020496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f72206561636820646973706174636820616e64f82074686520696e646578206f6620746865206669727374206661696c696e672064697370617463682061732077656c6c20617320746865206572726f722e5442617463684f7074696d69737469634661696c6564082c4576656e74436f756e7473305665633c4572726f7241743e0cb0204261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792ed020496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c20616e642d01206120766563746f72206f6620616e79206661696c65642064697370617463686573207769746820746865697220696e646963657320616e64206173736f636961746564206572726f722e384261746368436f6d706c65746564042c4576656e74436f756e747308cc204261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722ed420496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682064697370617463682e000c40496e76616c69645369676e61747572650478204f6666636861696e207369676e617475726520697320696e76616c6964405461726765744364644d697373696e6704842054617267657420646f6573206e6f74206861766520612076616c69642043444430496e76616c69644e6f6e63650c6c2050726f7669646564206e6f6e63652077617320696e76616c69641501204966207468652070726f7669646564206e6f6e6365203c2063757272656e74206e6f6e63652c207468652063616c6c2077617320616c72656164792065786563757465646101204966207468652070726f7669646564206e6f6e6365203e2063757272656e74206e6f6e63652c207468652063616c6c287329206265666f7265207468652063757272656e74206661696c656420746f206578656375746529104261736500010001043c556e65787065637465644572726f7204544f7074696f6e3c44697370617463684572726f723e04e820416e20756e6578706563746564206572726f722068617070656e656420746861742073686f756c6420626520696e766573746967617465642e04184d61784c656e0c753332100008000000041c546f6f4c6f6e67088420457863656564656420612067656e65726963206c656e677468206c696d69742e210120546865206c696d697420636f756c6420626520666f7220616e7920736f7274206f66206c69737473206f66207468696e67732c20696e636c7564696e67206120737472696e672e2a3845787465726e616c4167656e7473013845787465726e616c4167656e747314304147496453657175656e6365010102185469636b6572104147496400100000000010b420546865206e657874207065722d605469636b65726020414720494420696e207468652073657175656e63652e004d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652c90207768696368207374617274732066726f6d20312c20726174686572207468616e20302e1c4167656e744f66010202284964656e746974794964185469636b65720828290200042901204d61707320616e206167656e742028604964656e746974794964602920746f20616c6c20616c6c20605469636b6572607320746865792062656c6f6e6720746f2c20696620616e792e3047726f75704f664167656e74000202185469636b6572284964656e746974794964284167656e7447726f7570050400043501204d617073206167656e74732028604964656e746974794964602920666f72206120605469636b65726020746f207768617420414720746865792062656c6f6e6720746f2c20696620616e792e344e756d46756c6c4167656e7473010102185469636b65720c75333200100000000004dc204d617073206120605469636b65726020746f20746865206e756d626572206f66206046756c6c60206167656e747320666f722069742e4047726f75705065726d697373696f6e73000202185469636b657210414749645045787472696e7369635065726d697373696f6e73050400045d0120466f7220637573746f6d20414773206f66206120605469636b6572602c206d61707320746f2077686174207065726d697373696f6e7320616e206167656e7420696e207468617420414720776f756c6420686176652e0118306372656174655f67726f757008187469636b6572185469636b6572147065726d735045787472696e7369635065726d697373696f6e7348e82043726561746573206120637573746f6d206167656e742067726f7570202841472920666f722074686520676976656e20607469636b6572602e00d8205468652041472077696c6c206861766520746865207065726d697373696f6e7320617320676976656e20627920607065726d73602e2d012054686973206e6577204147206973207468656e2061737369676e656420606964203d204147496453657175656e63653a3a6765742829202b20316020617320697473206041474964602c3d0120776869636820796f752063616e2075736520617320604167656e7447726f75703a3a437573746f6d2869642960207768656e20616464696e67206167656e747320666f7220607469636b6572602e0030202320417267756d656e7473a0202d20607469636b65726020746f206164642074686520637573746f6d2067726f757020666f722e94202d20607065726d7360207468617420746865206e65772041472077696c6c20686176652e00242023204572726f72733d01202d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e2501202d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672e3101202d20604c6f63616c414749644f766572666c6f776020696620604147496453657175656e63653a3a6765742829202b20316020776f756c642065786365656420607533323a3a4d4158602e00382023205065726d697373696f6e7320202a20417373657420202a204167656e74547365745f67726f75705f7065726d697373696f6e730c187469636b6572185469636b65720869641041474964147065726d735045787472696e7369635065726d697373696f6e733c5501205570646174657320746865207065726d697373696f6e73206f662074686520637573746f6d204147206964656e74696669656420627920606964602c20666f722074686520676976656e20607469636b6572602e0030202320417267756d656e747394202d20607469636b6572602074686520637573746f6d2041472062656c6f6e677320746f2ea8202d206069646020666f722074686520637573746f6d2041472077697468696e20607469636b6572602e98202d20607065726d736020746f207570646174652074686520637573746f6d20414720746f2e00242023204572726f72733d01202d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e2501202d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672ed0202d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472e00382023205065726d697373696f6e7320202a20417373657420202a204167656e743072656d6f76655f6167656e7408187469636b6572185469636b6572146167656e74284964656e74697479496438a02052656d6f76652074686520676976656e20606167656e74602066726f6d20607469636b6572602e0030202320417267756d656e7473ac202d20607469636b6572602074686174206861732074686520606167656e746020746f2072656d6f76652e84202d20606167656e7460206f6620607469636b65726020746f2072656d6f76652e00242023204572726f72733d01202d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732edc202d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602eec202d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e746020697320746865206c6173742066756c6c206f6e652e00382023205065726d697373696f6e7320202a20417373657420202a204167656e7420616264696361746504187469636b6572185469636b65722c84204162646963617465206167656e747368697020666f7220607469636b6572602e0030202320417267756d656e7473b0202d20607469636b657260206f66207768696368207468652063616c6c657220697320616e206167656e742e00242023204572726f7273e8202d20604e6f74416e4167656e7460206966207468652063616c6c6572206973206e6f7420616e206167656e74206f6620607469636b6572602e0101202d206052656d6f76696e674c61737446756c6c4167656e7460206966207468652063616c6c657220697320746865206c6173742066756c6c206167656e742e00382023205065726d697373696f6e7320202a204173736574306368616e67655f67726f75700c187469636b6572185469636b6572146167656e74284964656e7469747949641467726f7570284167656e7447726f757040f0204368616e676520746865206167656e742067726f7570207468617420606167656e74602062656c6f6e677320746f20696e20607469636b6572602e0030202320417267756d656e747384202d20607469636b6572602074686174206861732074686520606167656e74602ebc202d20606167656e7460206f6620607469636b65726020746f206368616e6765207468652067726f757020666f722ecc202d206067726f757060207468617420606167656e74602077696c6c2062656c6f6e6720746f20696e20607469636b6572602e00242023204572726f72733d01202d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ed0202d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472edc202d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602e3101202d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e7460207761732061206046756c6c60206f6e6520616e64206973206265696e672064656d6f7465642e00382023205065726d697373696f6e7320202a20417373657420202a204167656e744c6163636570745f6265636f6d655f6167656e74041c617574685f69640c7536344005012041636365707420616e20617574686f72697a6174696f6e20627920616e206167656e742022416c696365222077686f206973737565642060617574685f696460dc20746f20616c736f206265636f6d6520616e206167656e74206f6620746865207469636b657220416c696365207370656369666965642e0030202320417267756d656e7473d4202d2060617574685f696460206964656e74696679696e672074686520617574686f72697a6174696f6e20746f206163636570742e00242023204572726f72734901202d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e3901202d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f69646020697320666f7220616e206175746820746861742068617320657870697265642e5101202d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f7420666f72206120604265636f6d654167656e7460206175746820747970652e2901202d2060556e617574686f72697a65644167656e74602069662022416c69636522206973206e6f74207065726d697373696f6e656420746f2070726f766964652074686520617574682e1101202d20604e6f53756368414760206966207468652067726f757020726566657272656420746f206120637573746f6d207468617420646f6573206e6f742065786973742e1101202d2060416c7265616479416e4167656e7460206966207468652063616c6c657220697320616c726561647920616e206167656e74206f6620746865207469636b65722e00382023205065726d697373696f6e7320202a204167656e7401143047726f75704372656174656410204576656e74446964185469636b657210414749645045787472696e7369635065726d697373696f6e730c7020416e204167656e742047726f75702077617320637265617465642e00d4202843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773207065726d697373696f6e73295c47726f75705065726d697373696f6e735570646174656410204576656e74446964185469636b657210414749645045787472696e7369635065726d697373696f6e730ca820416e204167656e742047726f75702773207065726d697373696f6e732077617320757064617465642e00e4202843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773206e6577207065726d697373696f6e7329284167656e7441646465640c204576656e74446964185469636b6572284167656e7447726f75700c5020416e206167656e74207761732061646465642e00c8202843616c6c65722f4167656e74204449442c204167656e742773207469636b65722c204167656e7427732067726f757029304167656e7452656d6f7665640c204576656e74446964185469636b6572284964656e7469747949640c5820416e206167656e74207761732072656d6f7665642e00a8202843616c6c6572204449442c204167656e742773207469636b65722c204167656e74277320444944293047726f75704368616e67656410204576656e74446964185469636b6572284964656e746974794964284167656e7447726f75700c7820416e206167656e7427732067726f757020776173206368616e6765642e001901202843616c6c6572204449442c204167656e742773207469636b65722c204167656e742773204449442c20546865206e65772067726f7570206f6620746865206167656e74290020444c6f63616c414749644f766572666c6f770821012054686572652068617665206265656e20746f6f206d616e792041477320666f722074686973207469636b657220616e642074686520494420776f756c64206f766572666c6f772e78205468697320776f6e2774206f6363757220696e2070726163746963652e204e6f53756368414704f020416e20414720776974682074686520676976656e2060414749646020646964206e6f7420657869737420666f722074686520605469636b6572602e44556e617574686f72697a65644167656e7404ec20546865206167656e74206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e38416c7265616479416e4167656e7404ec205468652070726f766964656420606167656e746020697320616c726561647920616e206167656e7420666f722074686520605469636b6572602e284e6f74416e4167656e7404dc205468652070726f766964656420606167656e7460206973206e6f7420616e206167656e7420666f722074686520605469636b6572602e5452656d6f76696e674c61737446756c6c4167656e7408e42054686973206167656e7420697320746865206c6173742066756c6c206f6e652c20616e642069742773206265696e672072656d6f7665642c6c206d616b696e6720746865206173736574206f727068616e65642e544e756d46756c6c4167656e74734f766572666c6f7708ac2054686520636f756e74657220666f722066756c6c206167656e74732077696c6c206f766572666c6f772e150120546869732073686f756c64206e657665722068617070656e20696e2070726163746963652c20627574206973207468656f7265746963616c6c7920706f737369626c652e845365636f6e646172794b65794e6f74417574686f72697a6564466f724173736574042101205468652063616c6c65722773207365636f6e64617279206b657920646f6573206e6f74206861766520746865207265717569726564206173736574207065726d697373696f6e2e2b1c52656c61796572011c52656c61796572042453756273696469657300010230543a3a4163636f756e74496454537562736964793c543a3a4163636f756e7449643e00040018ec20546865207375627369647920666f7220612060757365725f6b657960206966207468657920617265206265696e6720737562736964697365642c882061732061206d61702060757365725f6b657960203d3e206053756273696479602e0009012041206b65792063616e206f6e6c792068617665206f6e65207375627369647920617420612074696d652e2020546f206368616e67652073756273696469736572731d012061206b6579206e6565647320746f2063616c6c206072656d6f76655f706179696e675f6b65796020746f2072656d6f7665207468652063757272656e7420737562736964792ca4206265666f726520746865792063616e206163636570742061206e657720737562736964697365722e0118387365745f706179696e675f6b65790820757365725f6b657930543a3a4163636f756e7449642c706f6c79785f6c696d69741c42616c616e636520c101204372656174657320616e20617574686f72697a6174696f6e20746f20616c6c6f772060757365725f6b65796020746f20616363657074207468652063616c6c65722028606f726967696e203d3d20706179696e675f6b6579602920617320746865697220737562736964697365722e0030202320417267756d656e7473a0202d2060757365725f6b657960207468652075736572206b657920746f207375627369646973652ee8202d2060706f6c79785f6c696d6974602074686520696e697469616c20504f4c5958206c696d697420666f72207468697320737562736964792e00242023204572726f72733501202d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e446163636570745f706179696e675f6b6579041c617574685f69640c7536343898204163636570747320612060706179696e675f6b65796020617574686f72697a6174696f6e2e0030202320417267756d656e7473ec202d2060617574685f6964602074686520617574686f72697a6174696f6e20696420746f2061636365707420612060706179696e675f6b6579602e00242023204572726f72734901202d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e3101202d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f6964602074686520617574686f72697a6174696f6e2068617320657870697265642e7101202d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f742061206041646452656c61796572506179696e674b65796020617574686f72697a6174696f6e2ea901202d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f206163636570742074686520617574686f72697a6174696f6e20666f72207468652060757365725f6b6579602ed901202d20604e6f74417574686f72697a6564466f72506179696e674b6579602069662074686520617574686f72697a6174696f6e2077617320637265617465642062792061207369676e657220746861742069736e277420617574686f72697a6564206279207468652060706179696e675f6b6579602e3501202d2060557365724b65794364644d697373696e6760206966207468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e4501202d2060506179696e674b65794364644d697373696e6760206966207468652060706179696e675f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e3501202d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e4472656d6f76655f706179696e675f6b65790820757365725f6b657930543a3a4163636f756e74496428706179696e675f6b657930543a3a4163636f756e7449642cb02052656d6f766573207468652060706179696e675f6b6579602066726f6d20612060757365725f6b6579602e0030202320417267756d656e7473d8202d2060757365725f6b657960207468652075736572206b657920746f2072656d6f76652074686520737562736964792066726f6d2e0d01202d2060706179696e675f6b6579602074686520706179696e67206b6579207468617420776173207375627369646973696e67207468652060757365725f6b6579602e00242023204572726f72739101202d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2072656d6f766520746865207375627369647920666f72207468652060757365725f6b6579602efc202d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e3501202d20604e6f74506179696e674b657960206966207468652060706179696e675f6b65796020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e3501202d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e487570646174655f706f6c79785f6c696d69740820757365725f6b657930543a3a4163636f756e7449642c706f6c79785f6c696d69741c42616c616e636528b820557064617465732074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e0030202320417267756d656e74732101202d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e3901202d2060706f6c79785f6c696d6974602074686520616d6f756e74206f6620504f4c595820617661696c61626c6520666f72207375627369646973696e67207468652060757365725f6b6579602e00242023204572726f7273fc202d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e1501202d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e3501202d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e50696e6372656173655f706f6c79785f6c696d69740820757365725f6b657930543a3a4163636f756e74496418616d6f756e741c42616c616e63652cbc20496e6372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e0030202320417267756d656e74732101202d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e1101202d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2061646420746f207468652073756273696479206f662060757365725f6b6579602e00242023204572726f7273fc202d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e1501202d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e3501202d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e4101202d20604f7665726c6f776020696620746865207375627369647927732072656d61696e696e6720504f4c595820776f756c642068617665206f766572666c6f7765642060753132383a3a4d4158602e5064656372656173655f706f6c79785f6c696d69740820757365725f6b657930543a3a4163636f756e74496418616d6f756e741c42616c616e63652cbc2044656372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e0030202320417267756d656e74732101202d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e2501202d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2072656d6f76652066726f6d207468652073756273696479206f662060757365725f6b6579602e00242023204572726f7273fc202d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e1501202d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e3501202d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e0d01202d20604f7665726c6f776020696620746865207375627369647920686173206c657373207468656e2060616d6f756e746020504f4c59582072656d61696e696e672e01104c417574686f72697a6564506179696e674b657914204576656e74446964244163636f756e744964244163636f756e7449641c42616c616e63650c7536340cd020417574686f72697a6174696f6e20676976656e20666f722060706179696e675f6b65796020746f2060757365725f6b6579602e000501202843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20496e697469616c20504f4c5958206c696d69742c204175746820494429444163636570746564506179696e674b65790c204576656e74446964244163636f756e744964244163636f756e7449640c5420416363657074656420706179696e67206b65792e008c202843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294052656d6f766564506179696e674b65790c204576656e74446964244163636f756e744964244163636f756e7449640c502052656d6f76656420706179696e67206b65792e008c202843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294455706461746564506f6c79784c696d697414204576656e74446964244163636f756e744964244163636f756e7449641c42616c616e63651c42616c616e63650c54205570646174656420706f6c7978206c696d69742e001501202843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20504f4c5958206c696d69742c206f6c642072656d61696e696e6720504f4c595829001c44557365724b65794364644d697373696e6704d0205468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e4c506179696e674b65794364644d697373696e6704d0205468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e2c4e6f506179696e674b657904b0205468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e304e6f74506179696e674b657904b4205468652060757365725f6b65796020686173206120646966666572656e742060706179696e675f6b6579602e644e6f74417574686f72697a6564466f72506179696e674b657904bc20546865207369676e6572206973206e6f7420617574686f72697a656420666f722060706179696e675f6b6579602e5c4e6f74417574686f72697a6564466f72557365724b657904b420546865207369676e6572206973206e6f7420617574686f72697a656420666f722060757365725f6b6579602e204f766572666c6f7704bc205468652072656d61696e696e6720504f4c595820666f722060757365725f6b657960206f766572666c6f7765642e2c1c52657761726473011c52657761726473042849746e5265776172647300010230543a3a4163636f756e7449643c49746e526577617264537461747573000400040101204d6170206f66202849746e204164647265737320604163636f756e7449646029202d3e2028526577617264206049746e52657761726453746174757360292e010840636c61696d5f69746e5f7265776172640c387265776172645f6164647265737330543a3a4163636f756e7449642c69746e5f6164647265737330543a3a4163636f756e744964247369676e617475726550543a3a4f6666436861696e5369676e6174757265345420436c61696d20616e2049544e207265776172642e003420232320417267756d656e7473dc202a206069746e5f61646472657373602073706563696679696e672074686520617761726465642061646472657373206f6e2049544e2ed8202a20607369676e6174757265602061757468656e7469636174696e672074686520636c61696d20746f20746865207265776172642e790120202020546865207369676e61747572652073686f756c6420636f6e7461696e20607265776172645f616464726573736020666f6c6c6f7765642062792074686520737566666978206022636c61696d5f69746e5f72657761726422602cbc20202020616e64206d7573742068617665206265656e207369676e6564206279206069746e5f61646472657373602e00242023204572726f72734901202a2060496e73756666696369656e7442616c616e636560202d2049746e20726577617264732068617320696e73756666696369656e742066756e647320746f20697373756520746865207265776172642e3501202a2060496e76616c69645369676e617475726560202d20607369676e6174757265602068616420616e20696e76616c6964207369676e6572206f7220696e76616c6964206d6573736167652e6d01202a206049746e526577617264416c7265616479436c61696d656460202d205265776172642069737375656420746f20746865206069746e5f61646472657373602068617320616c7265616479206265656e20636c61696d65642e8d01202a2060556e6b6e6f776e49746e4164647265737360202d206069746e5f6164647265737360206973206e6f7420696e207468652072657761726473207461626c6520616e6420686173206e6f2072657761726420746f20626520636c61696d65642e547365745f69746e5f7265776172645f737461747573082c69746e5f6164647265737330543a3a4163636f756e744964187374617475733c49746e5265776172645374617475730001044049746e526577617264436c61696d656408244163636f756e7449641c42616c616e636504602049746e207265776172642077617320636c61696d65642e001044556e6b6e6f776e49746e4164647265737304d0204164647265737320776173206e6f7420666f756e6420696e20746865206c697374206f662049746e206164647265737365732e5c49746e526577617264416c7265616479436c61696d656404802049746e207265776172642077617320616c726561647920636c61696d65642e40496e76616c69645369676e617475726504802050726f7669646564207369676e61747572652077617320696e76616c69642e54556e61626c65546f436f7665727442616c616e636504b42042616c616e63652063616e206e6f7420626520636f6e76657274656420746f2061207072696d69746976652e2d24546573745574696c730124546573745574696c730001103072656769737465725f646964080c7569642c496e766573746f72556964387365636f6e646172795f6b6579737c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e2851012047656e6572617465732061206e657720604964656e7469747949446020666f72207468652063616c6c65722c20616e642069737375657320612073656c662d67656e6572617465642043444420636c61696d2e00f4205468652063616c6c6572206163636f756e742077696c6c20626520746865207072696d617279206b6579206f662074686174206964656e746974792e610120466f722065616368206163636f756e74206f6620607365636f6e646172795f6b657973602c2061206e657720604a6f696e4964656e746974796020617574686f72697a6174696f6e20697320637265617465642c20736f45012065616368206f66207468656d2077696c6c206e65656420746f20616363657074206974206265666f7265206265636f6d652070617274206f662074686973206e657720604964656e746974794944602e00242023204572726f7273d901202d2060416c72656164794c696e6b656460206966207468652063616c6c6572206163636f756e74206f7220696620616e79206f662074686520676976656e20607365636f6e646172795f6b657973602068617320616c7265616479206c696e6b656420746f20616e20604964656e746974794944605101202d20605365636f6e646172794b657973436f6e7461696e5072696d6172794b65796020696620607365636f6e646172795f6b6579736020636f6e7461696e73207468652063616c6c6572206163636f756e742eec202d2060446964416c726561647945786973747360206966206175746f2d67656e6572617465642044494420616c7265616479206578697374732e546d6f636b5f6364645f72656769737465725f64696404387461726765745f6163636f756e7430543a3a4163636f756e744964304101205265676973746572732061206e6577204964656e7469747920666f722074686520607461726765745f6163636f756e746020616e642069737375657320612043444420636c61696d20746f2069742e55012054686520496e766573746f72205549442069732067656e6572617465642064657465726d696e6973746963616c6c79206279207468652068617368206f66207468652067656e6572617465642044494420616e64b4207468656e2077652066697820697420746f20626520636f6d706c69616e74207769746820555549442076342e0018202320536565e0202d205b52464320343132323a20555549445d2868747470733a2f2f746f6f6c732e696574662e6f72672f68746d6c2f726663343132322900282023204661696c7572654d01202d20606f726967696e602068617320746f20626520616e20616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65772020636c61696d732e6101202d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c7938206f6e65206964656e746974792e286765745f6d795f64696400049c20456d69747320616e206576656e7420776974682063616c6c65722773206964656e746974792e286765745f6364645f6f6604086f6630543a3a4163636f756e74496404d820456d69747320616e206576656e7420776974682063616c6c65722773206964656e7469747920616e6420434444207374617475732e010c584d6f636b496e766573746f725549444372656174656408284964656e7469747949642c496e766573746f725569640811012041206e6577206d6f636b65642060496e766573746f725569646020686173206265656e206372656174656420666f722074686520676976656e204964656e746974792e782028546172676574204449442c204e657720496e766573746f72556964292444696453746174757308284964656e746974794964244163636f756e74496408e820456d6974732074686520604964656e7469747949646020616e642074686520604163636f756e74496460206f66207468652063616c6c65722e74202843616c6c6572204449442c2043616c6c6572206163636f756e7429244364645374617475730c484f7074696f6e3c4964656e7469747949643e244163636f756e74496410626f6f6c0c59012053686f777320746865206044494460206173736f63696174656420746f2074686520604163636f756e744964602c20616e64206120666c616720696e64696361746573206966207468617420444944206861732061442076616c69642043444420636c61696d2edc2028546172676574204449442c20546172676574204163636f756e742c20612076616c69642043444420636c61696d2065786973747329000032042040436865636b5370656356657273696f6e38436865636b547856657273696f6e30436865636b47656e6573697338436865636b4d6f7274616c69747928436865636b4e6f6e63652c436865636b576569676874604368617267655472616e73616374696f6e5061796d656e744453746f726543616c6c4d65746164617461","id":"1"} +{"jsonrpc":"2.0","result":"0x6d6574610cbc1853797374656d011853797374656d401c4163636f756e7401010230543a3a4163636f756e744964944163636f756e74496e666f3c543a3a496e6465782c20543a3a4163636f756e74446174613e0031010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e8205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e3845787472696e736963436f756e7400000c753332040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e2c426c6f636b576569676874010038436f6e73756d6564576569676874600000000000000000000000000000000000000000000000000488205468652063757272656e742077656967687420666f722074686520626c6f636b2e40416c6c45787472696e736963734c656e00000c753332040004410120546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e24426c6f636b4861736801010538543a3a426c6f636b4e756d6265721c543a3a48617368008000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101050c7533321c5665633c75383e000400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d626572010038543a3a426c6f636b4e756d6265721000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801001c543a3a4861736880000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e1844696765737401002c4469676573744f663c543e040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e747301008c5665633c4576656e745265636f72643c543a3a4576656e742c20543a3a486173683e3e040004a0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e284576656e74436f756e740100284576656e74496e646578100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f706963730101021c543a3a48617368845665633c28543a3a426c6f636b4e756d6265722c204576656e74496e646578293e000400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e004d01205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e484c61737452756e74696d65557067726164650000584c61737452756e74696d6555706772616465496e666f04000455012053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e545570677261646564546f553332526566436f756e74010010626f6f6c0400044d012054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e585570677261646564546f4475616c526566436f756e74010010626f6f6c04000855012054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e732074776f207479706573206f662060526566436f756e74602e2046616c736548202864656661756c7429206966206e6f742e38457865637574696f6e50686173650000145068617365040004882054686520657865637574696f6e207068617365206f662074686520626c6f636b2e01242866696c6c5f626c6f636b04185f726174696f1c50657262696c6c040901204120646973706174636820746861742077696c6c2066696c6c2074686520626c6f636b2077656967687420757020746f2074686520676976656e20726174696f2e1872656d61726b041c5f72656d61726b1c5665633c75383e1c6c204d616b6520736f6d65206f6e2d636861696e2072656d61726b2e002c2023203c7765696768743e24202d20604f28312960e0202d2042617365205765696768743a20302e36363520c2b5732c20696e646570656e64656e74206f662072656d61726b206c656e6774682e50202d204e6f204442206f7065726174696f6e732e302023203c2f7765696768743e387365745f686561705f7061676573041470616765730c75363420fc2053657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e002c2023203c7765696768743e24202d20604f283129604c202d20312073746f726167652077726974652e64202d2042617365205765696768743a20312e34303520c2b57360202d203120777269746520746f20484541505f5041474553302023203c2f7765696768743e207365745f636f64650410636f64651c5665633c75383e28682053657420746865206e65772072756e74696d6520636f64652e002c2023203c7765696768743e3501202d20604f2843202b2053296020776865726520604360206c656e677468206f662060636f64656020616e642060536020636f6d706c6578697479206f66206063616e5f7365745f636f64656088202d20312073746f726167652077726974652028636f64656320604f28432960292e7901202d20312063616c6c20746f206063616e5f7365745f636f6465603a20604f28532960202863616c6c73206073705f696f3a3a6d6973633a3a72756e74696d655f76657273696f6e6020776869636820697320657870656e73697665292e2c202d2031206576656e742e7d012054686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652c206275742067656e6572616c6c792074686973206973207665727920657870656e736976652e902057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e302023203c2f7765696768743e5c7365745f636f64655f776974686f75745f636865636b730410636f64651c5665633c75383e201d012053657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e002c2023203c7765696768743e90202d20604f2843296020776865726520604360206c656e677468206f662060636f64656088202d20312073746f726167652077726974652028636f64656320604f28432960292e2c202d2031206576656e742e75012054686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652e2057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e302023203c2f7765696768743e5c7365745f6368616e6765735f747269655f636f6e666967044c6368616e6765735f747269655f636f6e666967804f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e28a02053657420746865206e6577206368616e676573207472696520636f6e66696775726174696f6e2e002c2023203c7765696768743e24202d20604f28312960b0202d20312073746f72616765207772697465206f722064656c6574652028636f64656320604f28312960292ed8202d20312063616c6c20746f20606465706f7369745f6c6f67603a20557365732060617070656e6460204150492c20736f204f28312964202d2042617365205765696768743a20372e32313820c2b57334202d204442205765696768743aa820202020202d205772697465733a204368616e67657320547269652c2053797374656d20446967657374302023203c2f7765696768743e2c7365745f73746f7261676504146974656d73345665633c4b657956616c75653e206c2053657420736f6d65206974656d73206f662073746f726167652e002c2023203c7765696768743e94202d20604f2849296020776865726520604960206c656e677468206f6620606974656d73607c202d206049602073746f72616765207772697465732028604f28312960292e74202d2042617365205765696768743a20302e353638202a206920c2b57368202d205772697465733a204e756d626572206f66206974656d73302023203c2f7765696768743e306b696c6c5f73746f7261676504106b657973205665633c4b65793e2078204b696c6c20736f6d65206974656d732066726f6d2073746f726167652e002c2023203c7765696768743efc202d20604f28494b296020776865726520604960206c656e677468206f6620606b6579736020616e6420604b60206c656e677468206f66206f6e65206b657964202d206049602073746f726167652064656c6574696f6e732e70202d2042617365205765696768743a202e333738202a206920c2b57368202d205772697465733a204e756d626572206f66206974656d73302023203c2f7765696768743e2c6b696c6c5f70726566697808187072656669780c4b6579205f7375626b6579730c7533322c1501204b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e003d01202a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e64657241012074686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e002c2023203c7765696768743edc202d20604f285029602077686572652060506020616d6f756e74206f66206b65797320776974682070726566697820607072656669786064202d206050602073746f726167652064656c6574696f6e732e74202d2042617365205765696768743a20302e383334202a205020c2b57380202d205772697465733a204e756d626572206f66207375626b657973202b2031302023203c2f7765696768743e01144045787472696e7369635375636365737304304469737061746368496e666f04b820416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e205c5b696e666f5c5d3c45787472696e7369634661696c6564083444697370617463684572726f72304469737061746368496e666f049420416e2065787472696e736963206661696c65642e205c5b6572726f722c20696e666f5c5d2c436f64655570646174656400045420603a636f6465602077617320757064617465642e284e65774163636f756e7404244163636f756e744964047c2041206e6577205c5b6163636f756e745c5d2077617320637265617465642e344b696c6c65644163636f756e7404244163636f756e744964046c20416e205c5b6163636f756e745c5d20776173207265617065642e1830426c6f636b57656967687473506c696d6974733a3a426c6f636b57656967687473850100c817a80400000000204aa9d10100008036be26000000000180914b872e010000010098f73e5d0100000100000000000000008036be26000000000180199ef1a20100000100204aa9d1010000010088526a740000008036be260000000000000004d020426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e2c426c6f636b4c656e6774684c6c696d6974733a3a426c6f636b4c656e67746830000078000000a0000000a00004a820546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e38426c6f636b48617368436f756e7438543a3a426c6f636b4e756d62657210fa000000045501204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e2044625765696768743c52756e74696d6544625765696768744080f0fa020000000000c2eb0b000000000409012054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e1c56657273696f6e3852756e74696d6556657273696f6e0d0430706f6c796d6573685f64657630706f6c796d6573685f64657601000000b90b00000000000048df6acb689907609b0300000037e397fc7c91f5e40100000040fe3ad401f8959a04000000d2bc9897eed08f1502000000f78b278be53f454c02000000ed99c5acb25eedf502000000cbca25e39f14238702000000687ad44ad37f03c201000000bc9d89904f5b923f0100000037c8bb1350a9a2a801000000ab3c0572291feb8b0100000018ef58a3b67ba77001000000329342994773047f01000000001a0b29f17d01f401000000f28e8080b6e2dfd001000000bb6ba9053c5c9d78010000009f242c2c886f3fce01000000595ac34c5ea1f5fe01000000020000000484204765742074686520636861696e27732063757272656e742076657273696f6e2e2853533538507265666978087538042a14a8205468652064657369676e61746564205353383520707265666978206f66207468697320636861696e2e0039012054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e20697331012074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f662069742061737020616e206964656e746966696572206f662074686520636861696e2e143c496e76616c6964537065634e616d6508150120546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d655420616e6420746865206e65772072756e74696d652e685370656356657273696f6e4e65656473546f496e637265617365084501205468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d655420616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e0cf0204661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e000d01204569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e4c4e6f6e44656661756c74436f6d706f7369746504010120537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e3c4e6f6e5a65726f526566436f756e740439012054686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e001042616265011042616265342845706f6368496e64657801000c75363420000000000000000004542043757272656e742065706f636820696e6465782e2c417574686f72697469657301009c5665633c28417574686f7269747949642c2042616265417574686f72697479576569676874293e0400046c2043757272656e742065706f636820617574686f7269746965732e2c47656e65736973536c6f74010010536c6f7420000000000000000008f82054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e205468697320697320309020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2c43757272656e74536c6f74010010536c6f7420000000000000000004542043757272656e7420736c6f74206e756d6265722e2852616e646f6d6e6573730100587363686e6f72726b656c3a3a52616e646f6d6e65737380000000000000000000000000000000000000000000000000000000000000000028b8205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e002c20232053656375726974790005012054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061f8206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e7915012063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d6265727320746861742074686973150120286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e206265050120757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e0d01206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e3c4e65787445706f6368436f6e6669670000504e657874436f6e66696744657363726970746f7204000498204e6578742065706f636820636f6e66696775726174696f6e2c206966206368616e6765642e384e65787452616e646f6d6e6573730100587363686e6f72726b656c3a3a52616e646f6d6e657373800000000000000000000000000000000000000000000000000000000000000000045c204e6578742065706f63682072616e646f6d6e6573732e3c4e657874417574686f72697469657301009c5665633c28417574686f7269747949642c2042616265417574686f72697479576569676874293e04000460204e6578742065706f636820617574686f7269746965732e305365676d656e74496e64657801000c7533321000000000247c2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e00f4205765206d616b6520612074726164656f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e01012057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f942060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e00ec204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e090120576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572791c2065706f63682e44556e646572436f6e737472756374696f6e0101050c7533326c5665633c7363686e6f72726b656c3a3a52616e646f6d6e6573733e0004000415012054574f582d4e4f54453a20605365676d656e74496e6465786020697320616e20696e6372656173696e6720696e74656765722c20736f2074686973206973206f6b61792e2c496e697469616c697a656400003c4d6179626552616e646f6d6e65737304000801012054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d65601d01206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e4c417574686f7256726652616e646f6d6e65737301003c4d6179626552616e646f6d6e65737304000c5d012054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e29207468617420696e636c756465732074686520565246206f75747075742067656e6572617465645101206174207468697320626c6f636b2e2054686973206669656c642073686f756c6420616c7761797320626520706f70756c6174656420647572696e6720626c6f636b2070726f63657373696e6720756e6c6573731901207365636f6e6461727920706c61696e20736c6f74732061726520656e61626c65642028776869636820646f6e277420636f6e7461696e206120565246206f7574707574292e204c6174656e657373010038543a3a426c6f636b4e756d626572100000000014d820486f77206c617465207468652063757272656e7420626c6f636b20697320636f6d706172656420746f2069747320706172656e742e001501205468697320656e74727920697320706f70756c617465642061732070617274206f6620626c6f636b20657865637574696f6e20616e6420697320636c65616e65642075701101206f6e20626c6f636b2066696e616c697a6174696f6e2e205175657279696e6720746869732073746f7261676520656e747279206f757473696465206f6620626c6f636bb020657865637574696f6e20636f6e746578742073686f756c6420616c77617973207969656c64207a65726f2e01084c7265706f72745f65717569766f636174696f6e084865717569766f636174696f6e5f70726f6f667045717569766f636174696f6e50726f6f663c543a3a4865616465723e3c6b65795f6f776e65725f70726f6f6640543a3a4b65794f776e657250726f6f66100d01205265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c207665726966790901207468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66110120616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c34206265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e6564084865717569766f636174696f6e5f70726f6f667045717569766f636174696f6e50726f6f663c543a3a4865616465723e3c6b65795f6f776e65725f70726f6f6640543a3a4b65794f776e657250726f6f66200d01205265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c207665726966790901207468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66110120616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c34206265207265706f727465642e110120546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c79190120626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c206173207375636819012069662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e28207265706f727465722e00083445706f63684475726174696f6e0c753634202c01000000000000140d0120546865206e756d626572206f66202a2a736c6f74732a2a207468617420616e2065706f63682074616b65732e20576520636f75706c652073657373696f6e7320746ffc2065706f6368732c20692e652e2077652073746172742061206e65772073657373696f6e206f6e636520746865206e65772065706f636820626567696e732e0101204e4f54453a2043757272656e746c79206974206973206e6f7420706f737369626c6520746f206368616e6765207468652065706f6368206475726174696f6e09012061667465722074686520636861696e2068617320737461727465642e20417474656d7074696e6720746f20646f20736f2077696c6c20627269636b20626c6f636b302070726f64756374696f6e2e444578706563746564426c6f636b54696d6524543a3a4d6f6d656e7420701700000000000014050120546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e67110120626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f75740501207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f740901206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473a0207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e00012454696d657374616d70012454696d657374616d70080c4e6f77010024543a3a4d6f6d656e7420000000000000000004902043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e24446964557064617465010010626f6f6c040004b420446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f01040c736574040c6e6f7748436f6d706163743c543a3a4d6f6d656e743e3c5820536574207468652063757272656e742074696d652e00590120546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6ed82070686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e004501205468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e74207370656369666965642062794420604d696e696d756d506572696f64602e00d820546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e002c2023203c7765696768743e3501202d20604f2831296020284e6f7465207468617420696d706c656d656e746174696f6e73206f6620604f6e54696d657374616d7053657460206d75737420616c736f20626520604f2831296029a101202d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202862656361757365206f6620604469645570646174653a3a74616b656020696e20606f6e5f66696e616c697a656029d8202d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f736574602e204d75737420626520604f283129602e302023203c2f7765696768743e0004344d696e696d756d506572696f6424543a3a4d6f6d656e7420b80b00000000000010690120546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a20706572696f64690120746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c2067656e6572616c6c79650120776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c20626520646f75626c6520746869737020706572696f64206f6e2064656661756c742073657474696e67732e00021c496e6469636573011c496e646963657304204163636f756e74730001023c543a3a4163636f756e74496e6465788828543a3a4163636f756e7449642c2042616c616e63654f663c543e2c20626f6f6c29000400048820546865206c6f6f6b75702066726f6d20696e64657820746f206163636f756e742e011414636c61696d0414696e6465783c543a3a4163636f756e74496e646578489c2041737369676e20616e2070726576696f75736c7920756e61737369676e656420696e6465782e00e0205061796d656e743a20604465706f736974602069732072657365727665642066726f6d207468652073656e646572206163636f756e742e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e00f4202d2060696e646578603a2074686520696e64657820746f20626520636c61696d65642e2054686973206d757374206e6f7420626520696e207573652e009420456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002c2023203c7765696768743e28202d20604f283129602e9c202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e64202d204f6e652072657365727665206f7065726174696f6e2e34202d204f6e65206576656e742e50202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d94202d204442205765696768743a203120526561642f577269746520284163636f756e747329302023203c2f7765696768743e207472616e73666572080c6e657730543a3a4163636f756e74496414696e6465783c543a3a4163636f756e74496e6465785061012041737369676e20616e20696e64657820616c7265616479206f776e6564206279207468652073656e64657220746f20616e6f74686572206163636f756e742e205468652062616c616e6365207265736572766174696f6ebc206973206566666563746976656c79207472616e7366657272656420746f20746865206e6577206163636f756e742e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002901202d2060696e646578603a2074686520696e64657820746f2062652072652d61737369676e65642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e6101202d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e009420456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002c2023203c7765696768743e28202d20604f283129602e9c202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e68202d204f6e65207472616e73666572206f7065726174696f6e2e34202d204f6e65206576656e742e50202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d34202d204442205765696768743ae4202020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e7429e8202020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e7429302023203c2f7765696768743e10667265650414696e6465783c543a3a4163636f756e74496e6465784898204672656520757020616e20696e646578206f776e6564206279207468652073656e6465722e006101205061796d656e743a20416e792070726576696f7573206465706f73697420706c6163656420666f722074686520696e64657820697320756e726573657276656420696e207468652073656e646572206163636f756e742e00590120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206f776e2074686520696e6465782e001101202d2060696e646578603a2074686520696e64657820746f2062652066726565642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e008820456d6974732060496e646578467265656460206966207375636365737366756c2e002c2023203c7765696768743e28202d20604f283129602e9c202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e64202d204f6e652072657365727665206f7065726174696f6e2e34202d204f6e65206576656e742e50202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d94202d204442205765696768743a203120526561642f577269746520284163636f756e747329302023203c2f7765696768743e38666f7263655f7472616e736665720c0c6e657730543a3a4163636f756e74496414696e6465783c543a3a4163636f756e74496e64657818667265657a6510626f6f6c54590120466f72636520616e20696e64657820746f20616e206163636f756e742e205468697320646f65736e277420726571756972652061206465706f7369742e2049662074686520696e64657820697320616c7265616479ec2068656c642c207468656e20616e79206465706f736974206973207265696d62757273656420746f206974732063757272656e74206f776e65722e00c820546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e00a8202d2060696e646578603a2074686520696e64657820746f206265202872652d2961737369676e65642e6101202d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e4501202d2060667265657a65603a2069662073657420746f206074727565602c2077696c6c20667265657a652074686520696e64657820736f2069742063616e6e6f74206265207472616e736665727265642e009420456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002c2023203c7765696768743e28202d20604f283129602e9c202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e7c202d20557020746f206f6e652072657365727665206f7065726174696f6e2e34202d204f6e65206576656e742e50202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d34202d204442205765696768743af8202020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e657229fc202020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e657229302023203c2f7765696768743e18667265657a650414696e6465783c543a3a4163636f756e74496e64657844690120467265657a6520616e20696e64657820736f2069742077696c6c20616c7761797320706f696e7420746f207468652073656e646572206163636f756e742e205468697320636f6e73756d657320746865206465706f7369742e005d0120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d7573742068617665206170206e6f6e2d66726f7a656e206163636f756e742060696e646578602e00b0202d2060696e646578603a2074686520696e64657820746f2062652066726f7a656e20696e20706c6163652e008c20456d6974732060496e64657846726f7a656e60206966207375636365737366756c2e002c2023203c7765696768743e28202d20604f283129602e9c202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e74202d20557020746f206f6e6520736c617368206f7065726174696f6e2e34202d204f6e65206576656e742e50202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d94202d204442205765696768743a203120526561642f577269746520284163636f756e747329302023203c2f7765696768743e010c34496e64657841737369676e656408244163636f756e744964304163636f756e74496e64657804b42041206163636f756e7420696e646578207761732061737369676e65642e205c5b696e6465782c2077686f5c5d28496e646578467265656404304163636f756e74496e64657804e82041206163636f756e7420696e64657820686173206265656e2066726565642075702028756e61737369676e6564292e205c5b696e6465785c5d2c496e64657846726f7a656e08304163636f756e74496e646578244163636f756e7449640429012041206163636f756e7420696e64657820686173206265656e2066726f7a656e20746f206974732063757272656e74206163636f756e742049442e205c5b696e6465782c2077686f5c5d041c4465706f7369743042616c616e63654f663c543e4040420f0000000000000000000000000004ac20546865206465706f736974206e656564656420666f7220726573657276696e6720616e20696e6465782e000328417574686f72736869700128417574686f72736869700c18556e636c65730100e85665633c556e636c65456e7472794974656d3c543a3a426c6f636b4e756d6265722c20543a3a486173682c20543a3a4163636f756e7449643e3e0400041c20556e636c657318417574686f72000030543a3a4163636f756e7449640400046420417574686f72206f662063757272656e7420626c6f636b2e30446964536574556e636c6573010010626f6f6c040004bc205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e0104287365745f756e636c657304286e65775f756e636c6573385665633c543a3a4865616465723e04642050726f76696465206120736574206f6620756e636c65732e00001c48496e76616c6964556e636c65506172656e74048c2054686520756e636c6520706172656e74206e6f7420696e2074686520636861696e2e40556e636c6573416c7265616479536574048420556e636c657320616c72656164792073657420696e2074686520626c6f636b2e34546f6f4d616e79556e636c6573044420546f6f206d616e7920756e636c65732e3047656e65736973556e636c6504582054686520756e636c652069732067656e657369732e30546f6f48696768556e636c6504802054686520756e636c6520697320746f6f206869676820696e20636861696e2e50556e636c65416c7265616479496e636c75646564047c2054686520756e636c6520697320616c726561647920696e636c756465642e204f6c64556e636c6504b82054686520756e636c652069736e277420726563656e7420656e6f75676820746f20626520696e636c756465642e042042616c616e636573012042616c616e6365730834546f74616c49737375616e636501001c42616c616e6365400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e144c6f636b7301010230543a3a4163636f756e744964645665633c42616c616e63654c6f636b3c42616c616e63653e3e00040008b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e0118207472616e736665720810646573748c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263651476616c756540436f6d706163743c42616c616e63653e58d8205472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e00090120607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e21012049742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e00190120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e002c2023203c7765696768743e3101202d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72cc202020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e6901202d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e004c2052656c617465642066756e6374696f6e733a0051012020202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e2d012020202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c206361757365d420202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e88202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d4501202d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429e0202d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e1501202d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e302023203c2f7765696768743e487472616e736665725f776974685f6d656d6f0c10646573748c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263651476616c756540436f6d706163743c42616c616e63653e106d656d6f304f7074696f6e3c4d656d6f3e200101205472616e7366657220746865206e61746976652063757272656e63792077697468207468652068656c70206f66206964656e74696669657220737472696e67f020746869732066756e6374696f6e616c6974792063616e2068656c7020746f20646966666572656e746961746520746865207472616e73666572732e002c2023203c7765696768743e4501202d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429e0202d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e1501202d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e302023203c2f7765696768743e906465706f7369745f626c6f636b5f7265776172645f726573657276655f62616c616e6365041476616c756540436f6d706163743c42616c616e63653e04e0204d6f766520736f6d6520504f4c59582066726f6d2062616c616e6365206f662073656c6620746f2062616c616e6365206f66204252522e2c7365745f62616c616e63650c0c77686f8c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365206e65775f6672656540436f6d706163743c42616c616e63653e306e65775f726573657276656440436f6d706163743c42616c616e63653e189420536574207468652062616c616e636573206f66206120676976656e206163636f756e742e00210120546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c090120616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e00b420546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e38666f7263655f7472616e736665720c18736f757263658c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636510646573748c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263651476616c756540436f6d706163743c42616c616e63653e1c51012045786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d61792062652c207370656369666965642e002c2023203c7765696768743e4101202d2053616d65206173207472616e736665722c20627574206164646974696f6e616c207265616420616e6420777269746520626563617573652074686520736f75726365206163636f756e74206973902020206e6f7420617373756d656420746f20626520696e20746865206f7665726c61792e302023203c2f7765696768743e506275726e5f6163636f756e745f62616c616e63650418616d6f756e741c42616c616e6365042d01204275726e732074686520676976656e20616d6f756e74206f6620746f6b656e732066726f6d207468652063616c6c6572277320667265652c20756e6c6f636b65642062616c616e63652e011c1c456e646f7765640c484f7074696f6e3c4964656e7469747949643e244163636f756e7449641c42616c616e636504350120416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e205c5b6469642c206163636f756e742c20667265655f62616c616e63655d205472616e7366657218484f7074696f6e3c4964656e7469747949643e244163636f756e744964484f7074696f6e3c4964656e7469747949643e244163636f756e7449641c42616c616e6365304f7074696f6e3c4d656d6f3e04f8205472616e7366657220737563636565646564202866726f6d5f6469642c2066726f6d2c20746f5f6469642c20746f2c2076616c75652c206d656d6f292e2842616c616e636553657410284964656e746974794964244163636f756e7449641c42616c616e63651c42616c616e636504d820412062616c616e6365207761732073657420627920726f6f7420286469642c2077686f2c20667265652c207265736572766564292e504163636f756e7442616c616e63654275726e65640c284964656e746974794964244163636f756e7449641c42616c616e636508410120546865206163636f756e7420616e642074686520616d6f756e74206f6620756e6c6f636b65642062616c616e6365206f662074686174206163636f756e74207468617420776173206275726e65642e90202863616c6c65722049642c2063616c6c6572206163636f756e742c20616d6f756e742920526573657276656408244163636f756e7449641c42616c616e6365041d0120536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e205c5b77686f2c2076616c75655d28556e726573657276656408244163636f756e7449641c42616c616e636504250120536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e205c5b77686f2c2076616c75655d4852657365727665526570617472696174656410244163636f756e744964244163636f756e7449641c42616c616e6365185374617475730c510120536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742edc2046696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652ea4205c5b66726f6d2c20746f2c2062616c616e63652c2064657374696e6174696f6e5f7374617475735d04484578697374656e7469616c4465706f7369741c42616c616e6365400000000000000000000000000000000004d420546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e14544c69717569646974795265737472696374696f6e7304c8204163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c204f766572666c6f77047420476f7420616e206f766572666c6f7720616674657220616464696e674c496e73756666696369656e7442616c616e636504782042616c616e636520746f6f206c6f7720746f2073656e642076616c7565484578697374656e7469616c4465706f73697404ec2056616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369744852656365697665724364644d697373696e67048c20526563656976657220646f6573206e6f74206861766520612076616c69642043444405485472616e73616374696f6e5061796d656e7401485472616e73616374696f6e5061796d656e7408444e6578744665654d756c7469706c6965720100284d756c7469706c69657240000064a7b3b6e00d0000000000000000003853746f7261676556657273696f6e01002052656c6561736573040000000008485472616e73616374696f6e427974654665653042616c616e63654f663c543e4064000000000000000000000000000000040d01205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e2c576569676874546f466565a45665633c576569676874546f466565436f656666696369656e743c42616c616e63654f663c543e3e3e5c040000000000000000000000000000000049b400000001040d012054686520706f6c796e6f6d69616c2074686174206973206170706c69656420696e206f7264657220746f20646572697665206665652066726f6d207765696768742e0006204964656e7469747901204964656e7469747938284469645265636f726473010106284964656e7469747949645c4469645265636f72643c543a3a4163636f756e7449643e0084000000000000000000000000000000000000000000000000000000000000000000045420444944202d3e206964656e7469747920696e666f2c497344696446726f7a656e010106284964656e74697479496410626f6f6c00040004e420444944202d3e20626f6f6c207468617420696e64696361746573206966207365636f6e64617279206b657973206172652066726f7a656e2e2843757272656e744469640000284964656e746974794964040004e02049742073746f726573207468652063757272656e74206964656e7469747920666f722063757272656e74207472616e73616374696f6e2e3043757272656e745061796572000030543a3a4163636f756e74496404000401012049742073746f726573207468652063757272656e74206761732066656520706179657220666f72207468652063757272656e74207472616e73616374696f6e18436c61696d730102052c436c61696d3173744b65792c436c61696d326e644b6579344964656e74697479436c61696d02c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a04f020285461726765742049442c20636c61696d20747970652920286973737565722c73636f706529202d3e204173736f63696174656420636c61696d73404b6579546f4964656e7469747949647301010530543a3a4163636f756e744964284964656e7469747949640080000000000000000000000000000000000000000000000000000000000000000000444d756c7469507572706f73654e6f6e636501000c75363420000000000000000004bc204e6f6e636520746f20656e7375726520756e6971756520616374696f6e732e207374617274732066726f6d20312e684f6666436861696e417574686f72697a6174696f6e4e6f6e6365010106284964656e74697479496448417574686f72697a6174696f6e4e6f6e63650020000000000000000004c820417574686f72697a6174696f6e206e6f6e636520706572204964656e746974792e20496e697469616c6c7920697320302e38417574686f72697a6174696f6e730002025c5369676e61746f72793c543a3a4163636f756e7449643e0c75363498417574686f72697a6174696f6e3c543a3a4163636f756e7449642c20543a3a4d6f6d656e743e05040004b020416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792f6b6579206861734c417574686f72697a6174696f6e73476976656e010206284964656e7469747949640c7536345c5369676e61746f72793c543a3a4163636f756e7449643e0584000000000000000000000000000000000000000000000000000000000000000000044d0120416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792068617320676976656e2e2028417574686f72697a65722c20617574685f6964202d3e20617574686f72697a6564296c43646441757468466f724d61737465724b6579526f746174696f6e010010626f6f6c0400086501204f62736f6c657465642073746f72616765207661726961626c652073757065726365646564206279206043646441757468466f725072696d6172794b6579526f746174696f6e602e204974206973206b65707420686572659820666f722074686520707572706f7365206f662073746f72616765206d6967726174696f6e2e7043646441757468466f725072696d6172794b6579526f746174696f6e010010626f6f6c0400085d01204120636f6e66696720666c616720746861742c206966207365742c20696e7374727563747320616e20617574686f72697a6174696f6e2066726f6d2061204344442070726f766964657220696e206f7264657220746f9c206368616e676520746865207072696d617279206b6579206f6620616e206964656e746974792e3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e484163636f756e744b6579526566436f756e7401010230543a3a4163636f756e7449640c753634002000000000000000001cc420486f77206d616e7920227374726f6e6722207265666572656e63657320746f20746865206163636f756e74206b65792e00fc205374726f6e67207265666572656e6365732077696c6c20626c6f636b2061206b65792066726f6d206c656176696e672069742773206964656e746974792e00cc2050616c6c657473207573696e6720227374726f6e6722207265666572656e63657320746f206163636f756e74206b6579733aac202a2052656c617965723a20466f722060757365725f6b65796020616e642060706179696e675f6b657960000158406364645f72656769737465725f64696408387461726765745f6163636f756e7430543a3a4163636f756e744964387365636f6e646172795f6b6579737c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e2cbc20526567697374657220607461726765745f6163636f756e746020776974682061206e6577204964656e746974792e00282023204661696c7572654901202d20606f726967696e602068617320746f206265206120616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65772020636c61696d732e6101202d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c7938206f6e65206964656e746974792ef8202d2045787465726e616c207365636f6e64617279206b6579732063616e206265206c696e6b656420746f206a757374206f6e65206964656e746974792e0024202320576569676874c42060375f3030305f3030305f303030202b203630305f303030202a207365636f6e646172795f6b6579732e6c656e28296054696e76616c69646174655f6364645f636c61696d730c0c636464284964656e7469747949643064697361626c655f66726f6d24543a3a4d6f6d656e7418657870697279444f7074696f6e3c543a3a4d6f6d656e743e10250120496e76616c69646174657320616e7920636c61696d2067656e6572617465642062792060636464602066726f6d206064697361626c655f66726f6d602074696d657374616d70732e00a020596f752063616e20616c736f20646566696e6520616e2065787069726174696f6e2074696d652c71012077686963682077696c6c20696e76616c696461746520616c6c20636c61696d732067656e657261746564206279207468617420606364646020616e642072656d6f766520697420617320434444206d656d6265722067726f75702e5472656d6f76655f7365636f6e646172795f6b65797304447369676e6572735f746f5f72656d6f7665705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e1cd82052656d6f76657320737065636966696564207365636f6e64617279206b657973206f662061204449442069662070726573656e742e00282023204661696c757265a42049742063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722e0024202320576569676874c420603935305f3030305f303030202b2036305f303030202a207369676e6572735f746f5f72656d6f76652e6c656e282960486163636570745f7072696d6172795f6b65790840726f746174696f6e5f617574685f69640c753634506f7074696f6e616c5f6364645f617574685f69642c4f7074696f6e3c7536343e3469012043616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e690120746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f76656429012074686973206368616e676520286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e006101205468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f726820756e6c696e6b656420746f20616e79206964656e746974792e00610120446966666572732066726f6d20726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727920696e20746861742069742077696c6c20756e6c696e6b20746865206f6c64207072696d617279206b6579a820696e7374656164206f66206c656176696e672069742061732061207365636f6e64617279206b65792e0030202320417267756d656e74732101202a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e8202a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f76696465727c726f746174655f7072696d6172795f6b65795f746f5f7365636f6e64617279081c617574685f69640c753634506f7074696f6e616c5f6364645f617574685f69642c4f7074696f6e3c7536343e3869012043616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e690120746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f7665642d012074686973206368616e67652c20286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e006101205468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f726820756e6c696e6b656420746f20616e79206964656e746974792e00650120446966666572732066726f6d206163636570745f7072696d6172795f6b657920696e20746861742069742077696c6c206c6561766520746865206f6c64207072696d617279206b65792061732061207365636f6e646172798901206b6579207769746820746865207065726d697373696f6e732073706563696669656420696e2074686520636f72726573706f6e64696e6720526f746174655072696d6172794b6579546f5365636f6e6461727920617574686f72697a6174696f6ea820696e7374656164206f6620756e6c696e6b696e6720746865206f6c64207072696d617279206b65792e0030202320417267756d656e74732101202a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e8202a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f7669646572986368616e67655f6364645f726571756972656d656e745f666f725f6d6b5f726f746174696f6e0434617574685f726571756972656410626f6f6c143901205365742069662043444420617574686f72697a6174696f6e20697320726571756972656420666f72207570646174696e67207072696d617279206b6579206f6620616e206964656e746974792e7c2043616c6c61626c652076696120726f6f742028676f7665726e616e6365290030202320417267756d656e7473d0202a2060617574685f7265717569726564602043444420417574686f72697a6174696f6e207265717569726564206f72206e6f74506a6f696e5f6964656e746974795f61735f6b6579041c617574685f69640c7536340494204a6f696e20616e206964656e746974792061732061207365636f6e64617279206b65792e546c656176655f6964656e746974795f61735f6b6579000490204c6561766520746865207365636f6e64617279206b65792773206964656e746974792e246164645f636c61696d0c18746172676574284964656e74697479496414636c61696d14436c61696d18657870697279444f7074696f6e3c543a3a4d6f6d656e743e0cc820416464732061206e657720636c61696d207265636f7264206f7220656469747320616e206578697374696e67206f6e652e00ac204f6e6c792063616c6c6564206279206469645f6973737565722773207365636f6e64617279206b65792e307265766f6b655f636c61696d0818746172676574284964656e74697479496414636c61696d14436c61696d0498204d61726b73207468652073706563696669656420636c61696d206173207265766f6b65642e607365745f7065726d697373696f6e5f746f5f7369676e657208187369676e65725c5369676e61746f72793c543a3a4163636f756e7449643e147065726d732c5065726d697373696f6e730ccc2053657473207065726d697373696f6e7320666f7220616e20737065636966696320607461726765745f6b657960206b65792e003901204f6e6c7920746865207072696d617279206b6579206f6620616e206964656e746974792069732061626c6520746f20736574207365636f6e64617279206b6579207065726d697373696f6e732e7c6c65676163795f7365745f7065726d697373696f6e5f746f5f7369676e657208187369676e65725c5369676e61746f72793c543a3a4163636f756e7449643e2c7065726d697373696f6e73444c65676163795065726d697373696f6e730c490120546869732066756e6374696f6e206973206120776f726b61726f756e6420666f722068747470733a2f2f6769746875622e636f6d2f706f6c6b61646f742d6a732f617070732f6973737565732f33363332d82049742073657473207065726d697373696f6e7320666f7220616e20737065636966696320607461726765745f6b657960206b65792e3901204f6e6c7920746865207072696d617279206b6579206f6620616e206964656e746974792069732061626c6520746f20736574207365636f6e64617279206b6579207065726d697373696f6e732e54667265657a655f7365636f6e646172795f6b6579730010c82049742064697361626c657320616c6c207365636f6e64617279206b657973206174206064696460206964656e746974792e00242023204572726f7273005c756e667265657a655f7365636f6e646172795f6b6579730004e02052652d656e61626c657320616c6c207365636f6e64617279206b657973206f66207468652063616c6c65722773206964656e746974792e446164645f617574686f72697a6174696f6e0c187461726765745c5369676e61746f72793c543a3a4163636f756e7449643e10646174617c417574686f72697a6174696f6e446174613c543a3a4163636f756e7449643e18657870697279444f7074696f6e3c543a3a4d6f6d656e743e045c204164647320616e20617574686f72697a6174696f6e2e5072656d6f76655f617574686f72697a6174696f6e0c187461726765745c5369676e61746f72793c543a3a4163636f756e7449643e1c617574685f69640c753634445f617574685f6973737565725f7061797310626f6f6c08682052656d6f76657320616e20617574686f72697a6174696f6e2e7901205f617574685f6973737565725f706179732064657465726d696e657320776865746865722074686520697373756572206f662074686520617574686f7269736174696f6e207061797320746865207472616e73616374696f6e20666565946164645f7365636f6e646172795f6b6579735f776974685f617574686f72697a6174696f6e083c6164646974696f6e616c5f6b6579739c5665633c5365636f6e646172794b657957697468417574683c543a3a4163636f756e7449643e3e28657870697265735f617424543a3a4d6f6d656e7430c02049742061646473207365636f6e64617279206b65797320746f20746172676574206964656e7469747920606964602e3d01204b65797320617265206469726563746c7920616464656420746f206964656e7469747920626563617573652065616368206f66207468656d2068617320616e20617574686f72697a6174696f6e2e002c20417267756d656e74733ab420202020202d20606f726967696e60205072696d617279206b6579206f662060696460206964656e746974792ef020202020202d2060696460204964656e74697479207768657265206e6577207365636f6e64617279206b6579732077696c6c2062652061646465642e710120202020202d20606164646974696f6e616c5f6b65797360204e6577207365636f6e64617279206974656d732028616e6420746865697220617574686f72697a6174696f6e20646174612920746f2061646420746f207461726765743820202020206964656e746974792e0020204661696c757265bc20202020202d2049742063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722ed420202020202d204b6579732073686f756c642062652061626c6520746f206c696e6b656420746f20616e79206964656e746974792e746164645f696e766573746f725f756e697175656e6573735f636c61696d1018746172676574284964656e74697479496414636c61696d14436c61696d1470726f6f664c496e766573746f725a4b50726f6f664461746118657870697279444f7074696f6e3c543a3a4d6f6d656e743e4c0d01204164642060436c61696d3a3a496e766573746f72556e697175656e6573736020636c61696d20666f72206120676976656e20746172676574206964656e746974792e002c2023203c7765696768743e45012020576569676874206f662074686520746869732065787472696e73696320697320646570656e64206f6e2074686520636f6d7075746174696f6e2074686174207573656420746f2076616c6964617465290120207468652070726f6f66206f6620636c61696d2c2077686963682077696c6c206265206120636f6e7374616e7420696e646570656e64656e74206f66207573657220696e707574732e302023203c2f7765696768743e0030202320417267756d656e7473b901202a206f726967696e202d2057686f2070726f76696465732074686520636c61696d20746f2074686520757365723f20496e207468697320636173652c20697427732074686520757365722773206163636f756e742069642061732074686520757365722070726f76696465732ee8202a20746172676574202d20604964656e7469747949646020746f2077686963682074686520636c61696d20676574732061737369676e65642eb8202a20636c61696d202d2060496e766573746f72556e697175656e6573736020636c61696d2064657461696c732eb0202a2070726f6f66202d20546f2076616c6964617465207468652073656c66206174746573746174696f6e2e70202a20657870697279202d20457870697279206f6620636c61696d2e00242023204572726f72733101202a20604469644d757374416c7265616479457869737460205461726765742073686f756c6420616c7265616479206265656e20612070617274206f66207468652065636f73797374656d2e9501202a2060436c61696d56617269616e744e6f74416c6c6f77656460205768656e206f726967696e20747279696e6720746f207061737320636c61696d2076617269616e74206f74686572207468616e2060496e766573746f72556e697175656e657373602ebd01202a2060436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f77656460205768656e2069737375657220697320646966666572656e742066726f6d20746172676574206f72204344445f494420697320696e76616c696420666f7220676976656e20757365722eb0202a2060496e76616c696453636f7065436c61696d205768656e2070726f6f6620697320696e76616c69642e4067635f6164645f6364645f636c61696d0418746172676574284964656e74697479496404490120417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c20616464732061206e65772063646420636c61696d207265636f72642e4c67635f7265766f6b655f6364645f636c61696d0418746172676574284964656e746974794964046d0120417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c2072656d6f76657320616e206578697374696e672063646420636c61696d207265636f72642e806164645f696e766573746f725f756e697175656e6573735f636c61696d5f76321418746172676574284964656e7469747949641473636f70651453636f706514636c61696d14436c61696d1470726f6f663c53636f7065436c61696d50726f6f6618657870697279444f7074696f6e3c543a3a4d6f6d656e743e00547265766f6b655f636c61696d5f62795f696e6465780c18746172676574284964656e74697479496428636c61696d5f7479706524436c61696d547970651473636f7065344f7074696f6e3c53636f70653e20f901205265766f6b6573206120737065636966696320636c61696d207573696e6720697473205b436c61696d20556e6971756520496e6465785d282f70616c6c65745f6964656e746974792f696e6465782e68746d6c23636c61696d2d756e697175652d696e6465782920636f6d706f7365642062792060746172676574602c6c2060636c61696d5f74797065602c20616e64206073636f7065602e00090120506c65617365206e6f7465207468617420606f726967696e60206d7573742062652074686520697373756572206f66207468652074617267657420636c61696d2e00242023204572726f72735101202d20605461726765744861734e6f6e5a65726f42616c616e6365417453636f7065496460207768656e20796f752074727920746f207265766f6b6520612060496e766573746f72556e697175656e6573732a60290120636c61696d2c20616e64206074617267657460206964656e74697479207374696c6c206861766520616e792062616c616e6365206f6e2074686520676976656e206073636f7065602e014c28446964437265617465640c284964656e746974794964244163636f756e744964705665633c5365636f6e646172794b65793c4163636f756e7449643e3e04b0204449442c207072696d617279206b6579206163636f756e742049442c207365636f6e64617279206b657973485365636f6e646172794b657973416464656408284964656e746974794964705665633c5365636f6e646172794b65793c4163636f756e7449643e3e0438204449442c206e6577206b657973505365636f6e646172794b65797352656d6f76656408284964656e746974794964645665633c5369676e61746f72793c4163636f756e7449643e3e047c204449442c20746865206b657973207468617420676f742072656d6f766564285369676e65724c65667408284964656e746974794964505369676e61746f72793c4163636f756e7449643e04b02041207369676e6572206c656674207468656972206964656e746974792e20286469642c207369676e657229785365636f6e646172794b65795065726d697373696f6e735570646174656410284964656e7469747949645c5365636f6e646172794b65793c4163636f756e7449643e2c5065726d697373696f6e732c5065726d697373696f6e73040901204449442c2075706461746564207365636f6e64617279206b65792c2070726576696f7573207065726d697373696f6e732c206e6577207065726d697373696f6e73445072696d6172794b6579557064617465640c284964656e746974794964244163636f756e744964244163636f756e74496404a0204449442c206f6c64207072696d617279206b6579206163636f756e742049442c206e657720494428436c61696d416464656408284964656e746974794964344964656e74697479436c61696d0430204449442c20636c61696d7330436c61696d5265766f6b656408284964656e746974794964344964656e74697479436c61696d0474204449442c20436c61696d547970652c20436c61696d204973737565724841737365744469645265676973746572656408284964656e746974794964185469636b657204282041737365742044494448417574686f72697a6174696f6e416464656418284964656e746974794964484f7074696f6e3c4964656e7469747949643e444f7074696f6e3c4163636f756e7449643e0c75363470417574686f72697a6174696f6e446174613c4163636f756e7449643e384f7074696f6e3c4d6f6d656e743e0864204e657720617574686f72697a6174696f6e2061646465642e35012028617574686f72697365645f62792c207461726765745f6469642c207461726765745f6b65792c20617574685f69642c20617574686f72697a6174696f6e5f646174612c206578706972792950417574686f72697a6174696f6e5265766f6b65640c484f7074696f6e3c4964656e7469747949643e444f7074696f6e3c4163636f756e7449643e0c75363408a420417574686f72697a6174696f6e207265766f6b65642062792074686520617574686f72697a65722ebc2028617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e52656a65637465640c484f7074696f6e3c4964656e7469747949643e444f7074696f6e3c4163636f756e7449643e0c75363408dc20417574686f72697a6174696f6e2072656a65637465642062792074686520757365722077686f2077617320617574686f72697a65642ebc2028617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e436f6e73756d65640c484f7074696f6e3c4964656e7469747949643e444f7074696f6e3c4163636f756e7449643e0c753634086020417574686f72697a6174696f6e20636f6e73756d65642ebc2028617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f696429704f6666436861696e417574686f72697a6174696f6e5265766f6b656408284964656e746974794964505369676e61746f72793c4163636f756e7449643e08a8204f66662d636861696e20417574686f72697a6174696f6e20686173206265656e207265766f6b65642e742028546172676574204964656e746974792c205369676e61746f72792988436464526571756972656d656e74466f725072696d6172794b6579557064617465640410626f6f6c0411012043444420726571756972656d656e7420666f72207570646174696e67207072696d617279206b6579206368616e6765642e20286e65775f726571756972656d656e742950436464436c61696d73496e76616c69646174656408284964656e746974794964184d6f6d656e740845012043444420636c61696d732067656e65726174656420627920604964656e74697479496460202861204344442050726f7669646572292068617665206265656e20696e76616c6964617465642066726f6d2820604d6f6d656e74602e4c5365636f6e646172794b65797346726f7a656e04284964656e74697479496404c820416c6c205365636f6e64617279206b657973206f6620746865206964656e74697479204944206172652066726f7a656e2e545365636f6e646172794b657973556e66726f7a656e04284964656e74697479496404d020416c6c205365636f6e64617279206b657973206f6620746865206964656e746974792049442061726520756e66726f7a656e2e584d6f636b496e766573746f725549444372656174656408284964656e7469747949642c496e766573746f725569640470204d6f636b656420496e766573746f7255696420637265617465642e0430496e697469616c504f4c5958c03c543a3a42616c616e6365732061732043757272656e63793c543a3a4163636f756e7449643e3e3a3a42616c616e63654000000000000000000000000000000000008434416c72656164794c696e6b656404e0204f6e65207365636f6e64617279206f72207072696d617279206b65792063616e206f6e6c792062656c6f6e6720746f206f6e6520444944584d697373696e6743757272656e744964656e7469747904b0204d697373696e672063757272656e74206964656e74697479206f6e20746865207472616e73616374696f6e30556e617574686f72697a656404c0205369676e61746f7279206973206e6f742070726520617574686f72697a656420627920746865206964656e7469747944496e76616c69644163636f756e744b657904ac204163636f756e742049642063616e6e6f74206265206578747261637465642066726f6d207369676e65725c556e417574686f72697a656443646450726f766964657204a0204f6e6c792043444420736572766963652070726f7669646572732061726520616c6c6f7765642e74496e76616c6964417574686f72697a6174696f6e46726f6d4f776e657204a420416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865206f776e65722e8c496e76616c6964417574686f72697a6174696f6e46726f6d43646450726f766964657204c020416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865204344442070726f76696465722e644e6f7443646450726f76696465724174746573746174696f6e04bc204174746573746174696f6e20776173206e6f7420627920612043444420736572766963652070726f76696465722e70417574686f72697a6174696f6e734e6f74466f7253616d654469647304a420417574686f72697a6174696f6e7320617265206e6f7420666f72207468652073616d65204449442e4c4469644d757374416c7265616479457869737404702054686520444944206d75737420616c72656164792065786973742e8043757272656e744964656e7469747943616e6e6f744265466f727761726465640451012043757272656e74206964656e746974792063616e6e6f7420626520666f727761726465642c206974206973206e6f742061207365636f6e64617279206b6579206f6620746172676574206964656e746974792e50417574686f72697a6174696f6e4578706972656404a020546865206f6666636861696e20617574686f72697a6174696f6e2068617320657870697265642e385461726765744861734e6f436464048420546865207461726765742044494420686173206e6f2076616c6964204344442e6c417574686f72697a6174696f6e4861734265656e5265766f6b656404ac20417574686f72697a6174696f6e20686173206265656e206578706c696369746c79207265766f6b65642e74496e76616c6964417574686f72697a6174696f6e5369676e6174757265049020416e20696e76616c696420617574686f72697a6174696f6e207369676e61747572652e344b65794e6f74416c6c6f77656404d82054686973206b6579206973206e6f7420616c6c6f77656420746f2065786563757465206120676976656e206f7065726174696f6e2e344e6f745072696d6172794b6579046501204f6e6c7920746865207072696d617279206b657920697320616c6c6f77656420746f207265766f6b6520616e204964656e74697479205369676e61746f7279206f66662d636861696e20617574686f72697a6174696f6e2e3c446964446f65734e6f7445786973740460205468652044494420646f6573206e6f742065786973742e40446964416c72656164794578697374730460205468652044494420616c7265616479206578697374732e785365636f6e646172794b657973436f6e7461696e5072696d6172794b657904b020546865207365636f6e64617279206b65797320636f6e7461696e20746865207072696d617279206b65792e444661696c6564546f43686172676546656504a420436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e284e6f74415369676e657204dc205369676e6572206973206e6f742061207365636f6e64617279206b6579206f66207468652070726f7669646564206964656e746974796c43616e6e6f744465636f64655369676e65724163636f756e7449640419012043616e6e6f7420636f6e7665727420612060543a3a4163636f756e7449646020746f2060416e795369676e61747572653a3a5369676e65723a3a4163636f756e744964602e484d756c746953696748617342616c616e6365042501204d756c74697369672063616e206e6f7420626520756e6c696e6b65642066726f6d20616e206964656e74697479207768696c65206974207374696c6c20686f6c647320504f4c595880436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f77656404090120436f6e666964656e7469616c2053636f706520636c61696d732063616e20626520616464656420627920616e204964656e7469747920746f2069742d73656c662e44496e76616c696453636f7065436c61696d04c0204164646974696f6e206f662061206e65772073636f706520636c61696d206765747320696e76616c6964617465642e58436c61696d56617269616e744e6f74416c6c6f77656404e82054727920746f20616464206120636c61696d2076617269616e74207573696e6720756e2d64657369676e617465642065787472696e7369632e805461726765744861734e6f6e5a65726f42616c616e6365417453636f706549640455012054727920746f2064656c6574652074686520495520636c61696d206576656e207768656e20746865207573657220686173206e6f6e207a65726f2062616c616e636520617420676976656e2073636f706549642e6443444449644e6f74556e69717565466f724964656e746974790421012043444449642073686f756c6420626520756e6971756520262073616d652077697468696e20616c6c2063646420636c61696d7320706f737365737365642062792061204449442e30496e76616c69644344444964040d01204e6f6e2073797374656d61746963204344442070726f7669646572732063616e206e6f74206372656174652064656661756c74206364645f696420636c61696d732e7c436c61696d416e6450726f6f6656657273696f6e73446f4e6f744d6174636804a020436c61696d20616e642050726f6f662076657273696f6e732061726520646966666572656e742e544163636f756e744b657949734265696e675573656404d420546865206163636f756e74206b6579206973206265696e6720757365642c2069742063616e277420626520756e6c696e6b65642e48437573746f6d53636f7065546f6f4c6f6e670870204120637573746f6d2073636f706520697320746f6f206c6f6e672ea02049742063616e206174206d6f737420626520603332602063686172616374657273206c6f6e672e074c4364645365727669636550726f7669646572730138496e7374616e63653247726f75700c344163746976654d656d6265727301003c5665633c4964656e7469747949643e040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100785665633c496e6163746976654d656d6265723c543a3a4d6f6d656e743e3e040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d697401000c753332100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e011c607365745f6163746976655f6d656d626572735f6c696d697404146c696d69742c4d656d626572436f756e74103901204368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e0030202320417267756d656e74731101202a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c0c77686f284964656e74697479496418657870697279444f7074696f6e3c543a3a4d6f6d656e743e086174444f7074696f6e3c543a3a4d6f6d656e743e40982044697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e00450120506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e702074696d652d7374616d702077696c6c20626520757064617465642e00510120416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f72610120696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e791d012067656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e00550120496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e0030202320417267756d656e747380202a2060617460202d205265766f636174696f6e2074696d652d7374616d702e98202a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e5901202a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c2074686555012067656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d626572040c77686f284964656e746974794964143d0120416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e0030202320417267756d656e7473d4202a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74bc202a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d626572040c77686f284964656e7469747949642855012052656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e00450120416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725d0120696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e20697420697365012072656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564e020636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e0030202320417267756d656e7473e0202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74cc202a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d626572081872656d6f7665284964656e7469747949640c616464284964656e74697479496420e0205377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b8204d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e0030202320417267756d656e7473d8202a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d8202a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702edc202a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d62657273041c6d656d626572733c5665633c4964656e7469747949643e182d01204368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702ebc204d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e0030202320417267756d656e7473dc202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f7490202a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700028510120416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f20612047431820766f74652e0030202320417267756d656e7473d0202a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e00202023204572726f720084202a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea8202a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e011c2c4d656d626572416464656408284964656e746974794964284964656e74697479496408e42054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e702063616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408284964656e746974794964284964656e74697479496408ec2054686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea42063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408284964656e746974794964284964656e74697479496408e82054686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea42063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c284964656e746974794964284964656e746974794964284964656e74697479496408dc2054776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e982063616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408284964656e7469747949643c5665633c4964656e7469747949643e08190120546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e842063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c284964656e7469747949642c4d656d626572436f756e742c4d656d626572436f756e7404310120546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d7904bc73705f7374643a3a6d61726b65723a3a5068616e746f6d446174613c284163636f756e7449642c204576656e74293e0470205068616e746f6d206d656d6265722c206e6576657220757365642e001c544f6e6c795072696d6172794b6579416c6c6f77656404b4204f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d62657204802047726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d62657204a82043616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f745175697404ac204c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790450204d697373696e672063757272656e7420444944684163746976654d656d626572734c696d6974457863656564656404610120546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f7704190120416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e0844506f6c796d657368436f6d6d69747465650148496e7374616e636531436f6d6d6974746565242450726f706f73616c730100305665633c543a3a486173683e040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001061c543a3a48617368843c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c00040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e670001061c543a3a4861736874506f6c796d657368566f7465733c543a3a426c6f636b4e756d6265723e00040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e7401000c753332100000000004482050726f706f73616c7320736f206661722e1c4d656d6265727301003c5665633c4964656e7469747949643e04000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c64010028287533322c2075333229200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f720000284964656e746974794964040004542052656c6561736520636f6f7264696e61746f722e304578706972657341667465720100684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0114487365745f766f74655f7468726573686f6c6408046e0c75333204640c75333218fc204368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e590120466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e0030202320417267756d656e7473fc202a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e0501202a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204086964284964656e7469747949641c84204368616e676573207468652072656c6561736520636f6f7264696e61746f722e0030202320417267756d656e7473c4202a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e00242023204572726f72732901202a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f61667465720418657870697279684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e10c4204368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e0030202320417267756d656e747388202a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f7365081c617070726f766510626f6f6c1063616c6c98426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e4419012050726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e610120416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c2101207468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00242023205765696768740031012054686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c65786974797c20666f72207265636f7264696e672074686520766f746520697473656c662e0030202320417267756d656e7473a4202a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f65012020204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb8202a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e00242023204572726f72733101202a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e0d01202a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c2070726f706f73616c1c543a3a4861736814696e6465783450726f706f73616c496e6465781c617070726f766510626f6f6c28a820566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d8206f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e0030202320417267756d656e7473d8202a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e80202a2060696e64657860202d205468652070726f706f73616c20696e6465782e3101202a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e00242023204572726f72730d01202a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e01282050726f706f7365640c284964656e7469747949643450726f706f73616c496e6465781048617368088d012041206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292edc20506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c284964656e7469747949643450726f706f73616c496e646578104861736810626f6f6c2c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c09012041206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674d0120612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e99012063616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410284964656e7469747949643450726f706f73616c496e646578104861736810626f6f6c08d0204120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e09012063616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314284964656e7469747949643450726f706f73616c496e64657810486173683c5665633c4964656e7469747949643e3c5665633c4964656e7469747949643e08942046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829fc2063616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414284964656e74697479496410486173682c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c0d012041206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e6745012074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e510120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414284964656e74697479496410486173682c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c0d012041206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e6745012074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e510120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c284964656e7469747949641048617368384469737061746368526573756c74083d012041206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e110120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408284964656e746974794964484f7074696f6e3c4964656e7469747949643e08982052656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642ee020506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408284964656e7469747949645c4d61796265426c6f636b3c426c6f636b4e756d6265723e089c2050726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec820506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c284964656e7469747949640c7533320c753332088820566f74696e67207468726573686f6c6420686173206265656e2075706461746564bc20506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f720024344475706c6963617465566f74650484204475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d626572088c2041204449442069736e27742070617274206f662074686520636f6d6d69747465652ed82054686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c0448204e6f20737563682070726f706f73616c2e3c50726f706f73616c4578706972656404942050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0450204475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e6465780464204d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e04982050726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a6563740c010120466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e050120416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222e010120546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d69745265616368656404b8204d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e094c436f6d6d69747465654d656d626572736869700138496e7374616e63653147726f75700c344163746976654d656d6265727301003c5665633c4964656e7469747949643e040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100785665633c496e6163746976654d656d6265723c543a3a4d6f6d656e743e3e040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d697401000c753332100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e011c607365745f6163746976655f6d656d626572735f6c696d697404146c696d69742c4d656d626572436f756e74103901204368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e0030202320417267756d656e74731101202a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c0c77686f284964656e74697479496418657870697279444f7074696f6e3c543a3a4d6f6d656e743e086174444f7074696f6e3c543a3a4d6f6d656e743e40982044697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e00450120506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e702074696d652d7374616d702077696c6c20626520757064617465642e00510120416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f72610120696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e791d012067656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e00550120496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e0030202320417267756d656e747380202a2060617460202d205265766f636174696f6e2074696d652d7374616d702e98202a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e5901202a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c2074686555012067656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d626572040c77686f284964656e746974794964143d0120416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e0030202320417267756d656e7473d4202a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74bc202a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d626572040c77686f284964656e7469747949642855012052656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e00450120416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725d0120696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e20697420697365012072656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564e020636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e0030202320417267756d656e7473e0202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74cc202a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d626572081872656d6f7665284964656e7469747949640c616464284964656e74697479496420e0205377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b8204d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e0030202320417267756d656e7473d8202a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d8202a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702edc202a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d62657273041c6d656d626572733c5665633c4964656e7469747949643e182d01204368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702ebc204d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e0030202320417267756d656e7473dc202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f7490202a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700028510120416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f20612047431820766f74652e0030202320417267756d656e7473d0202a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e00202023204572726f720084202a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea8202a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e011c2c4d656d626572416464656408284964656e746974794964284964656e74697479496408e42054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e702063616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408284964656e746974794964284964656e74697479496408ec2054686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea42063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408284964656e746974794964284964656e74697479496408e82054686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea42063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c284964656e746974794964284964656e746974794964284964656e74697479496408dc2054776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e982063616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408284964656e7469747949643c5665633c4964656e7469747949643e08190120546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e842063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c284964656e7469747949642c4d656d626572436f756e742c4d656d626572436f756e7404310120546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d7904bc73705f7374643a3a6d61726b65723a3a5068616e746f6d446174613c284163636f756e7449642c204576656e74293e0470205068616e746f6d206d656d6265722c206e6576657220757365642e001c544f6e6c795072696d6172794b6579416c6c6f77656404b4204f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d62657204802047726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d62657204a82043616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f745175697404ac204c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790450204d697373696e672063757272656e7420444944684163746976654d656d626572734c696d6974457863656564656404610120546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f7704190120416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e0a48546563686e6963616c436f6d6d69747465650148496e7374616e636533436f6d6d6974746565242450726f706f73616c730100305665633c543a3a486173683e040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001061c543a3a48617368843c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c00040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e670001061c543a3a4861736874506f6c796d657368566f7465733c543a3a426c6f636b4e756d6265723e00040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e7401000c753332100000000004482050726f706f73616c7320736f206661722e1c4d656d6265727301003c5665633c4964656e7469747949643e04000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c64010028287533322c2075333229200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f720000284964656e746974794964040004542052656c6561736520636f6f7264696e61746f722e304578706972657341667465720100684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0114487365745f766f74655f7468726573686f6c6408046e0c75333204640c75333218fc204368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e590120466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e0030202320417267756d656e7473fc202a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e0501202a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204086964284964656e7469747949641c84204368616e676573207468652072656c6561736520636f6f7264696e61746f722e0030202320417267756d656e7473c4202a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e00242023204572726f72732901202a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f61667465720418657870697279684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e10c4204368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e0030202320417267756d656e747388202a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f7365081c617070726f766510626f6f6c1063616c6c98426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e4419012050726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e610120416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c2101207468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00242023205765696768740031012054686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c65786974797c20666f72207265636f7264696e672074686520766f746520697473656c662e0030202320417267756d656e7473a4202a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f65012020204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb8202a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e00242023204572726f72733101202a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e0d01202a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c2070726f706f73616c1c543a3a4861736814696e6465783450726f706f73616c496e6465781c617070726f766510626f6f6c28a820566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d8206f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e0030202320417267756d656e7473d8202a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e80202a2060696e64657860202d205468652070726f706f73616c20696e6465782e3101202a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e00242023204572726f72730d01202a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e01282050726f706f7365640c284964656e7469747949643450726f706f73616c496e6465781048617368088d012041206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292edc20506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c284964656e7469747949643450726f706f73616c496e646578104861736810626f6f6c2c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c09012041206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674d0120612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e99012063616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410284964656e7469747949643450726f706f73616c496e646578104861736810626f6f6c08d0204120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e09012063616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314284964656e7469747949643450726f706f73616c496e64657810486173683c5665633c4964656e7469747949643e3c5665633c4964656e7469747949643e08942046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829fc2063616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414284964656e74697479496410486173682c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c0d012041206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e6745012074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e510120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414284964656e74697479496410486173682c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c0d012041206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e6745012074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e510120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c284964656e7469747949641048617368384469737061746368526573756c74083d012041206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e110120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408284964656e746974794964484f7074696f6e3c4964656e7469747949643e08982052656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642ee020506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408284964656e7469747949645c4d61796265426c6f636b3c426c6f636b4e756d6265723e089c2050726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec820506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c284964656e7469747949640c7533320c753332088820566f74696e67207468726573686f6c6420686173206265656e2075706461746564bc20506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f720024344475706c6963617465566f74650484204475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d626572088c2041204449442069736e27742070617274206f662074686520636f6d6d69747465652ed82054686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c0448204e6f20737563682070726f706f73616c2e3c50726f706f73616c4578706972656404942050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0450204475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e6465780464204d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e04982050726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a6563740c010120466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e050120416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222e010120546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d69745265616368656404b8204d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e0b70546563686e6963616c436f6d6d69747465654d656d626572736869700138496e7374616e63653347726f75700c344163746976654d656d6265727301003c5665633c4964656e7469747949643e040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100785665633c496e6163746976654d656d6265723c543a3a4d6f6d656e743e3e040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d697401000c753332100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e011c607365745f6163746976655f6d656d626572735f6c696d697404146c696d69742c4d656d626572436f756e74103901204368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e0030202320417267756d656e74731101202a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c0c77686f284964656e74697479496418657870697279444f7074696f6e3c543a3a4d6f6d656e743e086174444f7074696f6e3c543a3a4d6f6d656e743e40982044697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e00450120506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e702074696d652d7374616d702077696c6c20626520757064617465642e00510120416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f72610120696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e791d012067656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e00550120496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e0030202320417267756d656e747380202a2060617460202d205265766f636174696f6e2074696d652d7374616d702e98202a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e5901202a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c2074686555012067656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d626572040c77686f284964656e746974794964143d0120416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e0030202320417267756d656e7473d4202a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74bc202a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d626572040c77686f284964656e7469747949642855012052656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e00450120416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725d0120696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e20697420697365012072656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564e020636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e0030202320417267756d656e7473e0202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74cc202a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d626572081872656d6f7665284964656e7469747949640c616464284964656e74697479496420e0205377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b8204d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e0030202320417267756d656e7473d8202a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d8202a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702edc202a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d62657273041c6d656d626572733c5665633c4964656e7469747949643e182d01204368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702ebc204d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e0030202320417267756d656e7473dc202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f7490202a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700028510120416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f20612047431820766f74652e0030202320417267756d656e7473d0202a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e00202023204572726f720084202a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea8202a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e011c2c4d656d626572416464656408284964656e746974794964284964656e74697479496408e42054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e702063616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408284964656e746974794964284964656e74697479496408ec2054686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea42063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408284964656e746974794964284964656e74697479496408e82054686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea42063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c284964656e746974794964284964656e746974794964284964656e74697479496408dc2054776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e982063616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408284964656e7469747949643c5665633c4964656e7469747949643e08190120546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e842063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c284964656e7469747949642c4d656d626572436f756e742c4d656d626572436f756e7404310120546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d7904bc73705f7374643a3a6d61726b65723a3a5068616e746f6d446174613c284163636f756e7449642c204576656e74293e0470205068616e746f6d206d656d6265722c206e6576657220757365642e001c544f6e6c795072696d6172794b6579416c6c6f77656404b4204f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d62657204802047726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d62657204a82043616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f745175697404ac204c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790450204d697373696e672063757272656e7420444944684163746976654d656d626572734c696d6974457863656564656404610120546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f7704190120416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e0c4055706772616465436f6d6d69747465650148496e7374616e636534436f6d6d6974746565242450726f706f73616c730100305665633c543a3a486173683e040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001061c543a3a48617368843c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c00040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e670001061c543a3a4861736874506f6c796d657368566f7465733c543a3a426c6f636b4e756d6265723e00040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e7401000c753332100000000004482050726f706f73616c7320736f206661722e1c4d656d6265727301003c5665633c4964656e7469747949643e04000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c64010028287533322c2075333229200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f720000284964656e746974794964040004542052656c6561736520636f6f7264696e61746f722e304578706972657341667465720100684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0114487365745f766f74655f7468726573686f6c6408046e0c75333204640c75333218fc204368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e590120466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e0030202320417267756d656e7473fc202a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e0501202a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204086964284964656e7469747949641c84204368616e676573207468652072656c6561736520636f6f7264696e61746f722e0030202320417267756d656e7473c4202a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e00242023204572726f72732901202a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f61667465720418657870697279684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e10c4204368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e0030202320417267756d656e747388202a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f7365081c617070726f766510626f6f6c1063616c6c98426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e4419012050726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e610120416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c2101207468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00242023205765696768740031012054686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c65786974797c20666f72207265636f7264696e672074686520766f746520697473656c662e0030202320417267756d656e7473a4202a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f65012020204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb8202a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e00242023204572726f72733101202a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e0d01202a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c2070726f706f73616c1c543a3a4861736814696e6465783450726f706f73616c496e6465781c617070726f766510626f6f6c28a820566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d8206f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e0030202320417267756d656e7473d8202a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e80202a2060696e64657860202d205468652070726f706f73616c20696e6465782e3101202a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e00242023204572726f72730d01202a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e01282050726f706f7365640c284964656e7469747949643450726f706f73616c496e6465781048617368088d012041206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292edc20506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c284964656e7469747949643450726f706f73616c496e646578104861736810626f6f6c2c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c09012041206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674d0120612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e99012063616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410284964656e7469747949643450726f706f73616c496e646578104861736810626f6f6c08d0204120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e09012063616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314284964656e7469747949643450726f706f73616c496e64657810486173683c5665633c4964656e7469747949643e3c5665633c4964656e7469747949643e08942046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829fc2063616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414284964656e74697479496410486173682c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c0d012041206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e6745012074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e510120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414284964656e74697479496410486173682c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c0d012041206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e6745012074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e510120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c284964656e7469747949641048617368384469737061746368526573756c74083d012041206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e110120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408284964656e746974794964484f7074696f6e3c4964656e7469747949643e08982052656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642ee020506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408284964656e7469747949645c4d61796265426c6f636b3c426c6f636b4e756d6265723e089c2050726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec820506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c284964656e7469747949640c7533320c753332088820566f74696e67207468726573686f6c6420686173206265656e2075706461746564bc20506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f720024344475706c6963617465566f74650484204475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d626572088c2041204449442069736e27742070617274206f662074686520636f6d6d69747465652ed82054686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c0448204e6f20737563682070726f706f73616c2e3c50726f706f73616c4578706972656404942050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0450204475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e6465780464204d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e04982050726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a6563740c010120466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e050120416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222e010120546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d69745265616368656404b8204d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e0d6855706772616465436f6d6d69747465654d656d626572736869700138496e7374616e63653447726f75700c344163746976654d656d6265727301003c5665633c4964656e7469747949643e040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100785665633c496e6163746976654d656d6265723c543a3a4d6f6d656e743e3e040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d697401000c753332100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e011c607365745f6163746976655f6d656d626572735f6c696d697404146c696d69742c4d656d626572436f756e74103901204368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e0030202320417267756d656e74731101202a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c0c77686f284964656e74697479496418657870697279444f7074696f6e3c543a3a4d6f6d656e743e086174444f7074696f6e3c543a3a4d6f6d656e743e40982044697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e00450120506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e702074696d652d7374616d702077696c6c20626520757064617465642e00510120416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f72610120696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e791d012067656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e00550120496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e0030202320417267756d656e747380202a2060617460202d205265766f636174696f6e2074696d652d7374616d702e98202a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e5901202a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c2074686555012067656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d626572040c77686f284964656e746974794964143d0120416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e0030202320417267756d656e7473d4202a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74bc202a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d626572040c77686f284964656e7469747949642855012052656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e00450120416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725d0120696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e20697420697365012072656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564e020636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e0030202320417267756d656e7473e0202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74cc202a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d626572081872656d6f7665284964656e7469747949640c616464284964656e74697479496420e0205377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b8204d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e0030202320417267756d656e7473d8202a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d8202a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702edc202a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d62657273041c6d656d626572733c5665633c4964656e7469747949643e182d01204368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702ebc204d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e0030202320417267756d656e7473dc202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f7490202a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700028510120416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f20612047431820766f74652e0030202320417267756d656e7473d0202a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e00202023204572726f720084202a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea8202a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e011c2c4d656d626572416464656408284964656e746974794964284964656e74697479496408e42054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e702063616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408284964656e746974794964284964656e74697479496408ec2054686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea42063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408284964656e746974794964284964656e74697479496408e82054686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea42063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c284964656e746974794964284964656e746974794964284964656e74697479496408dc2054776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e982063616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408284964656e7469747949643c5665633c4964656e7469747949643e08190120546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e842063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c284964656e7469747949642c4d656d626572436f756e742c4d656d626572436f756e7404310120546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d7904bc73705f7374643a3a6d61726b65723a3a5068616e746f6d446174613c284163636f756e7449642c204576656e74293e0470205068616e746f6d206d656d6265722c206e6576657220757365642e001c544f6e6c795072696d6172794b6579416c6c6f77656404b4204f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d62657204802047726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d62657204a82043616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f745175697404ac204c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790450204d697373696e672063757272656e7420444944684163746976654d656d626572734c696d6974457863656564656404610120546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f7704190120416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e0e204d756c746953696701204d756c746953696730344d756c74695369674e6f6e636501000c753634200000000000000000042101204e6f6e636520746f20656e7375726520756e69717565204d756c746953696720616464726573736573206172652067656e6572617465643b207374617274732066726f6d20312e3c4d756c74695369675369676e65727301020630543a3a4163636f756e7449645c5369676e61746f72793c543a3a4163636f756e7449643e5c5369676e61746f72793c543a3a4163636f756e7449643e058400000000000000000000000000000000000000000000000000000000000000000004d4205369676e657273206f662061206d756c74697369672e20286d756c74697369672c207369676e657229203d3e207369676e65722e3c4e756d6265724f665369676e65727301010630543a3a4163636f756e7449640c7536340020000000000000000004cc204e756d626572206f6620617070726f7665642f6163636570746564207369676e657273206f662061206d756c74697369672e544d756c74695369675369676e73526571756972656401010630543a3a4163636f756e7449640c7536340020000000000000000004e020436f6e6669726d6174696f6e73207265717569726564206265666f72652070726f63657373696e672061206d756c74697369672074782e384d756c74695369675478446f6e6501010630543a3a4163636f756e7449640c75363400200000000000000000043501204e756d626572206f66207472616e73616374696f6e732070726f706f73656420696e2061206d756c74697369672e20557365642061732074782069643b207374617274732066726f6d20302e2450726f706f73616c730001054c28543a3a4163636f756e7449642c20753634292c543a3a50726f706f73616c0004000475012050726f706f73616c732070726573656e74656420666f7220766f74696e6720746f2061206d756c746973696720286d756c74697369672c2070726f706f73616c20696429203d3e204f7074696f6e3c543a3a50726f706f73616c3e2e2c50726f706f73616c49647300020630543a3a4163636f756e7449642c543a3a50726f706f73616c0c75363402040004942041206d617070696e67206f662070726f706f73616c7320746f207468656972204944732e14566f746573010105b028543a3a4163636f756e7449642c205369676e61746f72793c543a3a4163636f756e7449643e2c207536342910626f6f6c00040004250120496e646976696475616c206d756c7469736967207369676e657220766f7465732e20286d756c7469207369672c207369676e65722c2070726f706f73616c29203d3e20766f74652e344b6579546f4d756c746953696701010530543a3a4163636f756e74496430543a3a4163636f756e7449640080000000000000000000000000000000000000000000000000000000000000000004c8204d6170732061206d756c7469736967207369676e6572206b657920746f2061206d756c746973696720616464726573732e484d756c7469536967546f4964656e7469747901010630543a3a4163636f756e744964284964656e7469747949640080000000000000000000000000000000000000000000000000000000000000000004a4204d6170732061206d756c7469736967206163636f756e7420746f20697473206964656e746974792e3850726f706f73616c44657461696c0101054c28543a3a4163636f756e7449642c20753634296850726f706f73616c44657461696c733c543a3a4d6f6d656e743e004c00000000000000000000000000000000000000047c2044657461696c73206f662061206d756c74697369672070726f706f73616c485472616e73616374696f6e56657273696f6e01000c753332100000000004f420546865206c617374207472616e73616374696f6e2076657273696f6e2c207573656420666f7220606f6e5f72756e74696d655f75706772616465602e014c3c6372656174655f6d756c7469736967081c7369676e657273705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e34736967735f72657175697265640c753634144c20437265617465732061206d756c74697369670030202320417267756d656e7473a901202a20607369676e65727360202d205369676e657273206f6620746865206d756c7469736967202854686579206e65656420746f2061636365707420617574686f72697a6174696f6e206265666f72652074686579206172652061637475616c6c79206164646564292e1d01202a2060736967735f726571756972656460202d204e756d626572206f66207369677320726571756972656420746f2070726f636573732061206d756c74692d7369672074782e986372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6964656e7469747910206d756c746973696730543a3a4163636f756e7449642070726f706f73616c40426f783c543a3a50726f706f73616c3e18657870697279444f7074696f6e3c543a3a4d6f6d656e743e286175746f5f636c6f736510626f6f6c20410120437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea0202a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eb0202a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e0901202a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e350120496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e846372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6b657910206d756c746973696730543a3a4163636f756e7449642070726f706f73616c40426f783c543a3a50726f706f73616c3e18657870697279444f7074696f6e3c543a3a4d6f6d656e743e286175746f5f636c6f736510626f6f6c20410120437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea0202a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eb0202a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e0901202a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e350120496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e6c6372656174655f70726f706f73616c5f61735f6964656e7469747910206d756c746973696730543a3a4163636f756e7449642070726f706f73616c40426f783c543a3a50726f706f73616c3e18657870697279444f7074696f6e3c543a3a4d6f6d656e743e286175746f5f636c6f736510626f6f6c207020437265617465732061206d756c74697369672070726f706f73616c0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea0202a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eb0202a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e0901202a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e350120496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e586372656174655f70726f706f73616c5f61735f6b657910206d756c746973696730543a3a4163636f756e7449642070726f706f73616c40426f783c543a3a50726f706f73616c3e18657870697279444f7074696f6e3c543a3a4d6f6d656e743e286175746f5f636c6f736510626f6f6c207020437265617465732061206d756c74697369672070726f706f73616c0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea0202a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eb0202a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e0901202a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e350120496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4c617070726f76655f61735f6964656e7469747908206d756c746973696730543a3a4163636f756e7449642c70726f706f73616c5f69640c75363418e820417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea8202a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e05012049662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e38617070726f76655f61735f6b657908206d756c746973696730543a3a4163636f756e7449642c70726f706f73616c5f69640c75363418350120417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea8202a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e05012049662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4872656a6563745f61735f6964656e7469747908206d756c746973696730543a3a4163636f756e7449642c70726f706f73616c5f69640c75363418e42052656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea4202a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e05012049662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e3472656a6563745f61735f6b657908206d756c746973696730543a3a4163636f756e7449642c70726f706f73616c5f69640c7536341831012052656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea4202a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e05012049662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e886163636570745f6d756c74697369675f7369676e65725f61735f6964656e74697479041c617574685f69640c75363410110120416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206964656e746974792e0030202320417267756d656e7473b0202a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e746163636570745f6d756c74697369675f7369676e65725f61735f6b6579041c617574685f69640c753634102d0120416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206b657920284163636f756e744964292e0030202320417267756d656e7473b0202a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e4c6164645f6d756c74697369675f7369676e657204187369676e65725c5369676e61746f72793c543a3a4163636f756e7449643e102d0120416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e0030202320417267756d656e74737c202a20607369676e657260202d205369676e61746f727920746f206164642e5872656d6f76655f6d756c74697369675f7369676e657204187369676e65725c5369676e61746f72793c543a3a4163636f756e7449643e1041012052656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e0030202320417267756d656e747388202a20607369676e657260202d205369676e61746f727920746f2072656d6f76652e806164645f6d756c74697369675f7369676e6572735f7669615f63726561746f7208206d756c746973696730543a3a4163636f756e7449641c7369676e657273705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e24490120416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f662074686528206d756c74697369672e0030202320417267756d656e7473a0202a20606d756c746973696760202d2041646472657373206f6620746865206d756c74692073696788202a20607369676e65727360202d205369676e61746f7269657320746f206164642e0024202320576569676874a820603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e2829608c72656d6f76655f6d756c74697369675f7369676e6572735f7669615f63726561746f7208206d756c746973696730543a3a4163636f756e7449641c7369676e657273705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e24902052656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672ef42054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865206d756c74697369672e0030202320417267756d656e7473a0202a20606d756c746973696760202d2041646472657373206f6620746865206d756c74697369672e94202a20607369676e65727360202d205369676e61746f7269657320746f2072656d6f76652e0024202320576569676874a820603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e282960506368616e67655f736967735f72657175697265640434736967735f72657175697265640c753634145101204368616e67657320746865206e756d626572206f66207369676e6174757265732072657175697265642062792061206d756c74697369672e2054686973206d7573742062652063616c6c65642062792074686544206d756c746973696720697473656c662e0030202320417267756d656e7473dc202a2060736967735f726571756972656460202d204e6577206e756d626572206f66207265717569726564207369676e6174757265732e506d616b655f6d756c74697369675f7369676e657204206d756c746973696730543a3a4163636f756e74496414510120416464732061206d756c74697369672061732061207369676e6572206f662063757272656e7420646964206966207468652063757272656e7420646964206973207468652063726561746f72206f662074686528206d756c74697369672e0030202320417267756d656e747384202a20606d756c746973696760202d206d756c7469207369672061646472657373546d616b655f6d756c74697369675f7072696d61727908206d756c746973696730543a3a4163636f756e744964506f7074696f6e616c5f6364645f617574685f69642c4f7074696f6e3c7536343e14610120416464732061206d756c746973696720617320746865207072696d617279206b6579206f66207468652063757272656e7420646964206966207468652063757272656e7420444944206973207468652063726561746f7244206f6620746865206d756c74697369672e0030202320417267756d656e747388202a20606d756c74695f73696760202d206d756c746920736967206164647265737368657865637574655f7363686564756c65645f70726f706f73616c10206d756c746973696730543a3a4163636f756e7449642c70726f706f73616c5f69640c753634306d756c74697369675f646964284964656e746974794964405f70726f706f73616c5f7765696768741857656967687404750120526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20666f7220657865637574696e67207363686564756c6564206d756c74697369672070726f706f73616c2e01303c4d756c74695369674372656174656414284964656e746974794964244163636f756e744964244163636f756e744964645665633c5369676e61746f72793c4163636f756e7449643e3e0c75363408b0204576656e7420656d6974746564206166746572206372656174696f6e206f662061206d756c74697369672e690120417267756d656e74733a2063616c6c6572204449442c206d756c746973696720616464726573732c207369676e657273202870656e64696e6720617070726f76616c292c207369676e6174757265732072657175697265642e3450726f706f73616c41646465640c284964656e746974794964244163636f756e7449640c753634089c204576656e7420656d697474656420616674657220616464696e6720612070726f706f73616c2eb820417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e4050726f706f73616c457865637574656410284964656e746974794964244163636f756e7449640c75363410626f6f6c08ac204576656e7420656d6974746564207768656e20612070726f706f73616c2069732065786563757465642ed820417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442c20726573756c742e4c4d756c74695369675369676e657241646465640c284964656e746974794964244163636f756e744964505369676e61746f72793c4163636f756e7449643e08a4204576656e7420656d6974746564207768656e2061207369676e61746f72792069732061646465642ebc20417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206164646564207369676e65722e604d756c74695369675369676e6572417574686f72697a65640c284964656e746974794964244163636f756e744964505369676e61746f72793c4163636f756e7449643e080d01204576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f727920697320617574686f72697a656420746f2062652061646465642ed020417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722e544d756c74695369675369676e657252656d6f7665640c284964656e746974794964244163636f756e744964505369676e61746f72793c4163636f756e7449643e08d0204576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f72792069732072656d6f7665642ec420417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2072656d6f766564207369676e65722e844d756c74695369675369676e61747572657352657175697265644368616e6765640c284964656e746974794964244163636f756e7449640c753634080501204576656e7420656d6974746564207768656e20746865206e756d626572206f66207265717569726564207369676e617475726573206973206368616e6765642ee820417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206e6577207265717569726564207369676e6174757265732e4050726f706f73616c417070726f76656410284964656e746974794964244163636f756e744964505369676e61746f72793c4163636f756e7449643e0c75363408b8204576656e7420656d6974746564207768656e207468652070726f706f73616c2067657420617070726f7665642e050120417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e5450726f706f73616c52656a656374696f6e566f746510284964656e746974794964244163636f756e744964505369676e61746f72793c4163636f756e7449643e0c753634081101204576656e7420656d6974746564207768656e206120766f7465206973206361737420696e206661766f72206f662072656a656374696e6720612070726f706f73616c2e050120417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e4050726f706f73616c52656a65637465640c284964656e746974794964244163636f756e7449640c75363408ac204576656e7420656d6974746564207768656e20612070726f706f73616c2069732072656a65637465642eb820417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e5c50726f706f73616c457865637574696f6e4661696c6564043444697370617463684572726f7204e8204576656e7420656d6974746564207768656e207468657265277320616e206572726f7220696e2070726f706f73616c20657865637574696f6e405363686564756c696e674661696c6564043444697370617463684572726f720478205363686564756c696e67206f662070726f706f73616c206661696c732e005c284364644d697373696e6704c820546865206d756c7469736967206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e3c50726f706f73616c4d697373696e670474205468652070726f706f73616c20646f6573206e6f742065786973742e344465636f64696e674572726f720448204d756c746973696720616464726573732e244e6f5369676e6572730430204e6f207369676e6572732e7452657175697265645369676e6174757265734f75744f66426f756e647304a420546f6f20666577206f7220746f6f206d616e79207265717569726564207369676e6174757265732e284e6f74415369676e65720438204e6f742061207369676e65722e384e6f537563684d756c74697369670448204e6f2073756368206d756c74697369672e404e6f74456e6f7567685369676e6572730450204e6f7420656e6f756768207369676e6572732e344e6f6e63654f766572666c6f7704482041206e6f6e6365206f766572666c6f772e30416c7265616479566f746564043c20416c726561647920766f7465642e38416c7265616479415369676e6572044820416c72656164792061207369676e65722e444661696c6564546f43686172676546656504a420436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e484964656e746974794e6f7443726561746f7204c4204964656e746974792070726f7669646564206973206e6f7420746865206d756c746973696727732063726561746f722e404368616e67654e6f74416c6c6f776564042901204368616e67696e67206d756c746973696720706172616d6574657273206e6f7420616c6c6f7765642073696e6365206d756c74697369672069732061207072696d617279206b65792e4c5369676e6572416c72656164794c696e6b6564041501205369676e657220697320616e206163636f756e74206b6579207468617420697320616c7265616479206173736f63696174656420776974682061206d756c74697369672e584d697373696e6743757272656e744964656e74697479045c2043757272656e7420444944206973206d697373696e67344e6f745072696d6172794b657904f8205468652066756e6374696f6e2063616e206f6e6c792062652063616c6c656420627920746865207072696d617279206b6579206f6620746865206469645c50726f706f73616c416c726561647952656a656374656404782050726f706f73616c207761732072656a6563746564206561726c6965723c50726f706f73616c4578706972656404542050726f706f73616c2068617320657870697265645c50726f706f73616c416c7265616479457865637574656404782050726f706f73616c20776173206578656375746564206561726c6965725c4d756c74697369674d697373696e674964656e7469747904a0204d756c7469736967206973206e6f7420617474616368656420746f20616e206964656e74697479404661696c6564546f5363686564756c65047c205363686564756c696e67206f6620612070726f706f73616c206661696c7338546f6f4d616e795369676e6572730470204d6f7265207369676e657273207468616e2072657175697265642e0f1842726964676501184272696467652828436f6e74726f6c6c6572010030543a3a4163636f756e7449648000000000000000000000000000000000000000000000000000000000000000000c410120546865206d756c7469736967206163636f756e74206f66207468652062726964676520636f6e74726f6c6c65722e205468652067656e65736973207369676e65727320616363657074207468656972450120617574686f72697a6174696f6e7320616e64206172652061626c6520746f206765742074686569722070726f706f73616c732064656c6976657265642e20546865206272696467652063726561746f729c207472616e736665727320736f6d6520504f4c5920746f207468656972206964656e746974792e3c427269646765547844657461696c7301020230543a3a4163636f756e7449640c75333278427269646765547844657461696c3c543a3a426c6f636b4e756d6265723e02d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000859012044657461696c73206f6620627269646765207472616e73616374696f6e73206964656e7469666965642077697468207061697273206f662074686520726563697069656e74206163636f756e7420616e64207468656820627269646765207472616e73616374696f6e206e6f6e63652e1441646d696e010030543a3a4163636f756e744964800000000000000000000000000000000000000000000000000000000000000000043c205468652061646d696e206b65792e1846726f7a656e010010626f6f6c040004bc2057686574686572206f72206e6f742074686520627269646765206f7065726174696f6e2069732066726f7a656e2e30467265657a6541646d696e7301010230543a3a4163636f756e74496410626f6f6c00040004090120467265657a65206272696467652061646d696e732e20205468657365206163636f756e74732063616e206f6e6c7920667265657a6520746865206272696467652e2054696d656c6f636b010038543a3a426c6f636b4e756d6265721000000000083d012054686520627269646765207472616e73616374696f6e2074696d656c6f636b20706572696f642c20696e20626c6f636b732c2073696e63652074686520616363657074616e6365206f66207468653101207472616e73616374696f6e2070726f706f73616c20647572696e67207768696368207468652061646d696e206b65792063616e20667265657a6520746865207472616e73616374696f6e2e2c4272696467654c696d69740100642842616c616e63652c20543a3a426c6f636b4e756d6265722950000000000000000000000000000000000000000008290120546865206d6178696d756d206e756d626572206f66206272696467656420504f4c595820706572206964656e746974792077697468696e20612073657420696e74657276616c206f66f820626c6f636b732e204669656c64733a20504f4c595820616d6f756e7420616e642074686520626c6f636b20696e74657276616c206475726174696f6e2e30506f6c797842726964676564010106284964656e746974794964642842616c616e63652c20543a3a426c6f636b4e756d626572290050000000000000000000000000000000000000000008510120416d6f756e74206f6620504f4c5958206272696467656420627920746865206964656e7469747920696e206c61737420626c6f636b20696e74657276616c2e204669656c64733a2074686520627269646765649420616d6f756e7420616e6420746865206c61737420696e74657276616c206e756d6265722e4c4272696467654c696d69744578656d70746564010105284964656e74697479496410626f6f6c00040004c0204964656e746974696573206e6f7420636f6e73747261696e65642062792074686520627269646765206c696d69742e3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0144446368616e67655f636f6e74726f6c6c65720428636f6e74726f6c6c657230543a3a4163636f756e74496410a4204368616e6765732074686520636f6e74726f6c6c6572206163636f756e742061732061646d696e2e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e306368616e67655f61646d696e041461646d696e30543a3a4163636f756e7449641078204368616e67657320746865206272696467652061646d696e206b65792e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e3c6368616e67655f74696d656c6f636b042074696d656c6f636b38543a3a426c6f636b4e756d6265721074204368616e676573207468652074696d656c6f636b20706572696f642e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e18667265657a650014610120467265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c65206966206974206973206e6f7420616c72656164792066726f7a656e2e205768656e207468654d01206272696467652069732066726f7a656e2c20617474656d70746564207472616e73616374696f6e732067657420706f7374706f6e656420696e7374656164206f662067657474696e672068616e646c65642e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e20756e667265657a650010150120556e667265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c652069662069742069732066726f7a656e2e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c6368616e67655f6272696467655f6c696d69740818616d6f756e741c42616c616e6365206475726174696f6e38543a3a426c6f636b4e756d626572146c204368616e6765732074686520627269646765206c696d6974732e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ea8202d20604469766973696f6e42795a65726f6020696620606475726174696f6e60206973207a65726f2e586368616e67655f6272696467655f6578656d7074656404206578656d707465645c5665633c284964656e7469747949642c20626f6f6c293e10a0204368616e6765732074686520627269646765206c696d6974206578656d70746564206c6973742e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e58666f7263655f68616e646c655f6272696467655f747804246272696467655f74785842726964676554783c543a3a4163636f756e7449643e14290120466f726365732068616e646c696e672061207472616e73616374696f6e20627920627970617373696e672074686520627269646765206c696d697420616e642074696d656c6f636b2e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e2501202d20604e6f56616c69644364646020696620606272696467655f74782e726563697069656e746020646f6573206e6f74206861766520612076616c69642043444420636c61696d2e5c62617463685f70726f706f73655f6272696467655f747804286272696467655f7478736c5665633c42726964676554783c543a3a4163636f756e7449643e3e2449012050726f706f736573206120766563746f72206f6620627269646765207472616e73616374696f6e732e2054686520766563746f722069732070726f63657373656420756e74696c2074686520666972737451012070726f706f73616c2077686963682063617573657320616e206572726f722c20696e207768696368206361736520746865206572726f722069732072657475726e656420616e64207468652072657374206f66742070726f706f73616c7320617265206e6f742070726f6365737365642e0028202323204572726f7273cc202d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e0024202320576569676874b420603530305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829604470726f706f73655f6272696467655f747804246272696467655f74785842726964676554783c543a3a4163636f756e7449643e184d012050726f706f736573206120627269646765207472616e73616374696f6e2c20776869636820616d6f756e747320746f206d616b696e672061206d756c74697369672070726f706f73616c20666f7220746865590120627269646765207472616e73616374696f6e20696620746865207472616e73616374696f6e206973206e6577206f7220617070726f76696e6720616e206578697374696e672070726f706f73616c206966207468659c207472616e73616374696f6e2068617320616c7265616479206265656e2070726f706f7365642e0028202323204572726f7273cc202d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e4068616e646c655f6272696467655f747804246272696467655f74785842726964676554783c543a3a4163636f756e7449643e18c42048616e646c657320616e20617070726f76656420627269646765207472616e73616374696f6e2070726f706f73616c2e0028202323204572726f72731d01202d206042616443616c6c65726020696620606f726967696e60206973206e6f74206053656c663a3a636f6e74726f6c6c657260206f7220206053656c663a3a61646d696e602ef0202d206054696d656c6f636b656454786020696620746865207472616e73616374696f6e20737461747573206973206054696d656c6f636b6564602e0d01202d206050726f706f73616c416c726561647948616e646c65646020696620746865207472616e73616374696f6e20737461747573206973206048616e646c6564602e28667265657a655f74787304286272696467655f7478736c5665633c42726964676554783c543a3a4163636f756e7449643e3e208c20467265657a657320676976656e20627269646765207472616e73616374696f6e732e890120496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e0024202320576569676874b420603430305f3030305f303030202b20325f3030305f303030202a206272696467655f7478732e6c656e28296030756e667265657a655f74787304286272696467655f7478736c5665633c42726964676554783c543a3a4163636f756e7449643e3e209420556e667265657a657320676976656e20627269646765207472616e73616374696f6e732e890120496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e0024202320576569676874b420603430305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829606868616e646c655f7363686564756c65645f6272696467655f747804246272696467655f74785842726964676554783c543a3a4163636f756e7449643e189d0120526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f2068616e646c652061207363686564756c65642074696d656c6f636b656420627269646765207472616e73616374696f6e2e00242023204572726f72739c202d20604261644f726967696e6020696620606f726967696e60206973206e6f7420726f6f742efc202d206050726f706f73616c416c726561647948616e646c656460206966207472616e73616374696f6e20737461747573206973206048616e646c6564602ec0202d206046726f7a656e547860206966207472616e73616374696f6e20737461747573206973206046726f7a656e602e406164645f667265657a655f61646d696e0430667265657a655f61646d696e30543a3a4163636f756e744964105020416464206120667265657a652061646d696e2e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c72656d6f76655f667265657a655f61646d696e0430667265657a655f61646d696e30543a3a4163636f756e744964105c2052656d6f7665206120667265657a652061646d696e2e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e2872656d6f76655f74787304286272696467655f7478736c5665633c42726964676554783c543a3a4163636f756e7449643e3e14882052656d6f766520676976656e20627269646765207472616e73616374696f6e732e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ed4202d20604e6f7446726f7a656e60206966206120747820696e20606272696467655f74787360206973206e6f742066726f7a656e2e014044436f6e74726f6c6c65724368616e67656408284964656e746974794964244163636f756e744964049420436f6e6669726d6174696f6e206f662061207369676e657220736574206368616e67652e3041646d696e4368616e67656408284964656e746974794964244163636f756e744964047820436f6e6669726d6174696f6e206f662041646d696e206368616e67652e3c54696d656c6f636b4368616e67656408284964656e7469747949642c426c6f636b4e756d62657204a420436f6e6669726d6174696f6e206f662064656661756c742074696d656c6f636b206368616e67652e1c4272696467656408284964656e7469747949644c42726964676554783c4163636f756e7449643e04210120436f6e6669726d6174696f6e206f6620504f4c59582075706772616465206f6e20506f6c796d6573682066726f6d20504f4c5920746f6b656e73206f6e20457468657265756d2e1846726f7a656e04284964656e7469747949640494204e6f74696669636174696f6e206f6620667265657a696e6720746865206272696467652e20556e66726f7a656e04284964656e746974794964049c204e6f74696669636174696f6e206f6620756e667265657a696e6720746865206272696467652e2046726f7a656e547808284964656e7469747949644c42726964676554783c4163636f756e7449643e04a0204e6f74696669636174696f6e206f6620667265657a696e672061207472616e73616374696f6e2e28556e66726f7a656e547808284964656e7469747949644c42726964676554783c4163636f756e7449643e04a8204e6f74696669636174696f6e206f6620756e667265657a696e672061207472616e73616374696f6e2e3c4578656d70746564557064617465640c284964656e746974794964284964656e74697479496410626f6f6c04c8204578656d7074696f6e20737461747573206f6620616e206964656e7469747920686173206265656e20757064617465642e484272696467654c696d6974557064617465640c284964656e7469747949641c42616c616e63652c426c6f636b4e756d626572047c20427269646765206c696d697420686173206265656e20757064617465642e2854787348616e646c656404985665633c284163636f756e7449642c207533322c2048616e646c65645478537461747573293e08650120416e206576656e7420656d6974746564206166746572206120766563746f72206f66207472616e73616374696f6e732069732068616e646c65642e2054686520706172616d65746572206973206120766563746f72206f665501207475706c6573206f6620726563697069656e74206163636f756e742c20697473206e6f6e63652c20616e642074686520737461747573206f66207468652070726f636573736564207472616e73616374696f6e2e4442726964676554785363686564756c65640c284964656e7469747949644c42726964676554783c4163636f756e7449643e2c426c6f636b4e756d626572045420427269646765205478205363686564756c65642e5842726964676554785363686564756c654661696c65640c284964656e7469747949644c42726964676554783c4163636f756e7449643e1c5665633c75383e0478204661696c656420746f207363686564756c65204272696467652054782e40467265657a6541646d696e416464656408284964656e746974794964244163636f756e744964048c2041206e657720667265657a652061646d696e20686173206265656e2061646465642e48467265657a6541646d696e52656d6f76656408284964656e746974794964244163636f756e7449640484204120667265657a652061646d696e20686173206265656e2072656d6f7665642e24547852656d6f76656408284964656e7469747949644c42726964676554783c4163636f756e7449643e04a0204e6f74696669636174696f6e206f662072656d6f76696e672061207472616e73616374696f6e2e003440436f6e74726f6c6c65724e6f7453657404a8205468652062726964676520636f6e74726f6c6c65722061646472657373206973206e6f74207365742e2442616443616c6c657204dc20546865206f726967696e206973206e6f742074686520636f6e74726f6c6c6572206f72207468652061646d696e20616464726573732e2042616441646d696e049420546865206f726967696e206973206e6f74207468652061646d696e20616464726573732e284e6f56616c696443646404902054686520726563697069656e742044494420686173206e6f2076616c6964204344442e5850726f706f73616c416c726561647948616e646c6564043d012054686520627269646765207472616e73616374696f6e2070726f706f73616c2068617320616c7265616479206265656e2068616e646c656420616e64207468652066756e6473206d696e7465642e30556e617574686f72697a6564049820556e617574686f72697a656420746f20706572666f726d20616e206f7065726174696f6e2e1846726f7a656e0478205468652062726964676520697320616c72656164792066726f7a656e2e244e6f7446726f7a656e04682054686520627269646765206973206e6f742066726f7a656e2e2046726f7a656e5478046c20546865207472616e73616374696f6e2069732066726f7a656e2e484272696467654c696d69745265616368656404e820546865206964656e746974792773206d696e74656420746f74616c2068617320726561636865642074686520627269646765206c696d69742e204f766572666c6f7704b020546865206964656e746974792773206d696e74656420746f74616c20686173206f766572666c6f7765642e384469766973696f6e42795a65726f04d02054686520626c6f636b20696e74657276616c206475726174696f6e206973207a65726f2e2043616e6e6f74206469766964652e3054696d656c6f636b65645478047c20546865207472616e73616374696f6e2069732074696d656c6f636b65642e101c5374616b696e67011c5374616b696e679c30486973746f7279446570746801000c75333210540000001c8c204e756d626572206f66206572617320746f206b65657020696e20686973746f72792e00390120496e666f726d6174696f6e206973206b65707420666f72206572617320696e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e006101204d757374206265206d6f7265207468616e20746865206e756d626572206f6620657261732064656c617965642062792073657373696f6e206f74686572776973652e20492e652e2061637469766520657261206d757374390120616c7761797320626520696e20686973746f72792e20492e652e20606163746976655f657261203e2063757272656e745f657261202d20686973746f72795f646570746860206d757374206265302067756172616e746565642e3856616c696461746f72436f756e7401000c753332100000000004a82054686520696465616c206e756d626572206f66207374616b696e67207061727469636970616e74732e544d696e696d756d56616c696461746f72436f756e7401000c7533321000000000044101204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e34496e76756c6e657261626c65730100445665633c543a3a4163636f756e7449643e04000c590120416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e636520746865792772654d01206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f7572ac20696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e18426f6e64656400010530543a3a4163636f756e74496430543a3a4163636f756e744964000400040101204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e184c656467657200010230543a3a4163636f756e744964a45374616b696e674c65646765723c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e000400044501204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e14506179656501010530543a3a4163636f756e7449647c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e00040004e42057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e2856616c696461746f727301010530543a3a4163636f756e7449643856616c696461746f7250726566730008000004450120546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e284e6f6d696e61746f727300010530543a3a4163636f756e744964644e6f6d696e6174696f6e733c543a3a4163636f756e7449643e00040004650120546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f2074686520736574206f66207374617368206b657973206f6620616c6c2076616c696461746f727320746f206e6f6d696e6174652e2843757272656e74457261000020457261496e6465780400105c205468652063757272656e742065726120696e6465782e006501205468697320697320746865206c617465737420706c616e6e6564206572612c20646570656e64696e67206f6e20686f77207468652053657373696f6e2070616c6c657420717565756573207468652076616c696461746f7280207365742c206974206d6967687420626520616374697665206f72206e6f742e24416374697665457261000034416374697665457261496e666f040010d820546865206163746976652065726120696e666f726d6174696f6e2c20697420686f6c647320696e64657820616e642073746172742e0059012054686520616374697665206572612069732074686520657261206265696e672063757272656e746c792072657761726465642e2056616c696461746f7220736574206f66207468697320657261206d757374206265ac20657175616c20746f205b6053657373696f6e496e746572666163653a3a76616c696461746f7273605d2e5445726173537461727453657373696f6e496e64657800010520457261496e6465783053657373696f6e496e646578000400103101205468652073657373696f6e20696e646578206174207768696368207468652065726120737461727420666f7220746865206c6173742060484953544f52595f44455054486020657261732e006101204e6f74653a205468697320747261636b7320746865207374617274696e672073657373696f6e2028692e652e2073657373696f6e20696e646578207768656e20657261207374617274206265696e672061637469766529f020666f7220746865206572617320696e20605b43757272656e74457261202d20484953544f52595f44455054482c2043757272656e744572615d602e2c457261735374616b65727301020520457261496e64657830543a3a4163636f756e744964904578706f737572653c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e050c0000001878204578706f73757265206f662076616c696461746f72206174206572612e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e48457261735374616b657273436c697070656401020520457261496e64657830543a3a4163636f756e744964904578706f737572653c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e050c0000002c9820436c6970706564204578706f73757265206f662076616c696461746f72206174206572612e00590120546869732069732073696d696c617220746f205b60457261735374616b657273605d20627574206e756d626572206f66206e6f6d696e61746f7273206578706f736564206973207265647563656420746f20746865dc2060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732e1d0120284e6f74653a20746865206669656c642060746f74616c6020616e6420606f776e60206f6620746865206578706f737572652072656d61696e7320756e6368616e676564292ef42054686973206973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e005d012054686973206973206b657965642066697374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e484572617356616c696461746f72507265667301020520457261496e64657830543a3a4163636f756e7449643856616c696461746f725072656673050800001411012053696d696c617220746f2060457261735374616b657273602c207468697320686f6c64732074686520707265666572656e636573206f662076616c696461746f72732e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4c4572617356616c696461746f7252657761726400010520457261496e6465783042616c616e63654f663c543e0004000c09012054686520746f74616c2076616c696461746f7220657261207061796f757420666f7220746865206c6173742060484953544f52595f44455054486020657261732e0021012045726173207468617420686176656e27742066696e697368656420796574206f7220686173206265656e2072656d6f76656420646f65736e27742068617665207265776172642e4045726173526577617264506f696e747301010520457261496e64657874457261526577617264506f696e74733c543a3a4163636f756e7449643e0014000000000008ac205265776172647320666f7220746865206c6173742060484953544f52595f44455054486020657261732e250120496620726577617264206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207265776172642069732072657475726e65642e3845726173546f74616c5374616b6501010520457261496e6465783042616c616e63654f663c543e00400000000000000000000000000000000008ec2054686520746f74616c20616d6f756e74207374616b656420666f7220746865206c6173742060484953544f52595f44455054486020657261732e1d0120496620746f74616c206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207374616b652069732072657475726e65642e20466f72636545726101001c466f7263696e6704000454204d6f6465206f662065726120666f7263696e672e4c536c6173685265776172644672616374696f6e01001c50657262696c6c10000000000cf8205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e00e4205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e4c43616e63656c6564536c6173685061796f757401003042616c616e63654f663c543e40000000000000000000000000000000000815012054686520616d6f756e74206f662063757272656e637920676976656e20746f207265706f7274657273206f66206120736c617368206576656e7420776869636820776173ec2063616e63656c65642062792065787472616f7264696e6172792063697263756d7374616e6365732028652e672e20676f7665726e616e6365292e40556e6170706c696564536c617368657301010520457261496e646578bc5665633c556e6170706c696564536c6173683c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e3e00040004c420416c6c20756e6170706c69656420736c61736865732074686174206172652071756575656420666f72206c617465722e28426f6e646564457261730100745665633c28457261496e6465782c2053657373696f6e496e646578293e04001025012041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e00c8204d75737420636f6e7461696e7320696e666f726d6174696f6e20666f72206572617320666f72207468652072616e67653abc20605b6163746976655f657261202d20626f756e64696e675f6475726174696f6e3b206163746976655f6572615d604c56616c696461746f72536c617368496e45726100020520457261496e64657830543a3a4163636f756e7449645c2850657262696c6c2c2042616c616e63654f663c543e2905040008450120416c6c20736c617368696e67206576656e7473206f6e2076616c696461746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682070726f706f7274696f6e7020616e6420736c6173682076616c7565206f6620746865206572612e4c4e6f6d696e61746f72536c617368496e45726100020520457261496e64657830543a3a4163636f756e7449643042616c616e63654f663c543e05040004610120416c6c20736c617368696e67206576656e7473206f6e206e6f6d696e61746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682076616c7565206f6620746865206572612e34536c617368696e675370616e7300010530543a3a4163636f756e7449645c736c617368696e673a3a536c617368696e675370616e73000400048c20536c617368696e67207370616e7320666f72207374617368206163636f756e74732e245370616e536c6173680101058c28543a3a4163636f756e7449642c20736c617368696e673a3a5370616e496e6465782988736c617368696e673a3a5370616e5265636f72643c42616c616e63654f663c543e3e00800000000000000000000000000000000000000000000000000000000000000000083d01205265636f72647320696e666f726d6174696f6e2061626f757420746865206d6178696d756d20736c617368206f6620612073746173682077697468696e206120736c617368696e67207370616e2cb82061732077656c6c20617320686f77206d7563682072657761726420686173206265656e2070616964206f75742e584561726c69657374556e6170706c696564536c617368000020457261496e646578040004fc20546865206561726c696573742065726120666f72207768696368207765206861766520612070656e64696e672c20756e6170706c69656420736c6173682e48536e617073686f7456616c696461746f72730000445665633c543a3a4163636f756e7449643e040008650120536e617073686f74206f662076616c696461746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e48536e617073686f744e6f6d696e61746f72730000445665633c543a3a4163636f756e7449643e040008650120536e617073686f74206f66206e6f6d696e61746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e34517565756564456c65637465640000a8456c656374696f6e526573756c743c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e04000c650120546865206e6578742076616c696461746f72207365742e2041742074686520656e64206f6620616e206572612c206966207468697320697320617661696c61626c652028706f74656e7469616c6c792066726f6d20746865610120726573756c74206f6620616e206f6666636861696e20776f726b6572292c20697420697320696d6d6564696174656c7920757365642e204f74686572776973652c20746865206f6e2d636861696e20656c656374696f6e342069732065786563757465642e2c51756575656453636f7265000034456c656374696f6e53636f7265040004b0205468652073636f7265206f66207468652063757272656e74205b60517565756564456c6563746564605d2e44457261456c656374696f6e537461747573010078456c656374696f6e5374617475733c543a3a426c6f636b4e756d6265723e040008490120466c616720746f20636f6e74726f6c2074686520657865637574696f6e206f6620746865206f6666636861696e20656c656374696f6e2e205768656e20604f70656e285f29602c207765206163636570746c20736f6c7574696f6e7320746f206265207375626d69747465642e54497343757272656e7453657373696f6e46696e616c010010626f6f6c0400084d012054727565206966207468652063757272656e74202a2a706c616e6e65642a2a2073657373696f6e2069732066696e616c2e204e6f74652074686174207468697320646f6573206e6f742074616b65206572615820666f7263696e6720696e746f206163636f756e742e505065726d697373696f6e65644964656e74697479000105284964656e746974794964645065726d697373696f6e65644964656e74697479507265667300040004ec20456e74697469657320746861742061726520616c6c6f77656420746f2072756e206f70657261746f722f76616c696461746f72206e6f6465732e5856616c696461746f72436f6d6d697373696f6e43617001001c50657262696c6c10000000000415012045766572792076616c696461746f722068617320636f6d6d697373696f6e20746861742073686f756c6420626520696e207468652072616e6765205b302c204361705d2e504d696e696d756d426f6e645468726573686f6c6401003042616c616e63654f663c543e400000000000000000000000000000000004d020546865206d696e696d756d20616d6f756e74207769746820776869636820612076616c696461746f722063616e20626f6e642e48536c617368696e67416c6c6f776564466f72010038536c617368696e675377697463680402003853746f7261676556657273696f6e01002052656c6561736573040610cc2054727565206966206e6574776f726b20686173206265656e20757067726164656420746f20746869732076657273696f6e2e7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e00a020546869732069732073657420746f2076362e302e3120666f72206e6577206e6574776f726b732e018010626f6e640c28636f6e74726f6c6c65728c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263651476616c756554436f6d706163743c42616c616e63654f663c543e3e1470617965657c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e5865012054616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c8420626520746865206163636f756e74207468617420636f6e74726f6c732069742e003101206076616c756560206d757374206265206d6f7265207468616e2074686520606d696e696d756d5f62616c616e636560207370656369666965642062792060543a3a43757272656e6379602e00250120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e004020456d6974732060426f6e646564602e002c2023203c7765696768743ed4202d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e20202d204f2831292e68202d20546872656520657874726120444220656e74726965732e005101204e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e6564410120756e6c6573732074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e4c202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d34205765696768743a204f2831292c204442205765696768743a3101202d20526561643a20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c2043757272656e74204572612c20486973746f72792044657074682c204c6f636b73e0202d2057726974653a20426f6e6465642c2050617965652c205b4f726967696e204163636f756e745d2c204c6f636b732c204c6564676572302023203c2f7765696768743e28626f6e645f657874726104386d61785f6164646974696f6e616c54436f6d706163743c42616c616e63654f663c543e3e5465012041646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e63652075703420666f72207374616b696e672e00510120557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e650120556e6c696b65205b60626f6e64605d206f72205b60756e626f6e64605d20746869732066756e6374696f6e20646f6573206e6f7420696d706f736520616e79206c696d69746174696f6e206f6e2074686520616d6f756e744c20746861742063616e2062652061646465642e00610120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c657220616e64f82069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e004020456d6974732060426f6e646564602e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e20202d204f2831292e40202d204f6e6520444220656e7472792e34202d2d2d2d2d2d2d2d2d2d2d2d2c204442205765696768743a1501202d20526561643a2045726120456c656374696f6e205374617475732c20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c204c6f636b73a4202d2057726974653a205b4f726967696e204163636f756e745d2c204c6f636b732c204c6564676572302023203c2f7765696768743e18756e626f6e64041476616c756554436f6d706163743c42616c616e63654f663c543e3e805501205363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e64010120706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e250120543a3a43757272656e63793a3a6d696e696d756d5f62616c616e636528292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e004901204f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c20796f752063616e2063616c6c206077697468647261775f756e626f6e6465646020746f2061637475616c6c79206d6f7665c0207468652066756e6473206f7574206f66206d616e6167656d656e7420726561647920666f72207472616e736665722e003d01204e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d41585f554e4c4f434b494e475f4348554e4b5360293d012063616e20636f2d657869737473206174207468652073616d652074696d652e20496e207468617420636173652c205b6043616c6c3a3a77697468647261775f756e626f6e646564605d206e656564fc20746f2062652063616c6c656420666972737420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0d0120416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e004820456d6974732060556e626f6e646564602e00982053656520616c736f205b6043616c6c3a3a77697468647261775f756e626f6e646564605d2e002c2023203c7765696768743e4101202d20496e646570656e64656e74206f662074686520617267756d656e74732e204c696d697465642062757420706f74656e7469616c6c79206578706c6f697461626c6520636f6d706c65786974792e98202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732e6501202d20456163682063616c6c20287265717569726573207468652072656d61696e646572206f662074686520626f6e6465642062616c616e636520746f2062652061626f766520606d696e696d756d5f62616c616e63656029710120202077696c6c2063617573652061206e657720656e74727920746f20626520696e73657274656420696e746f206120766563746f722028604c65646765722e756e6c6f636b696e676029206b65707420696e2073746f726167652e5101202020546865206f6e6c792077617920746f20636c65616e207468652061666f72656d656e74696f6e65642073746f72616765206974656d20697320616c736f20757365722d636f6e74726f6c6c6564207669615c2020206077697468647261775f756e626f6e646564602e40202d204f6e6520444220656e7472792e2c202d2d2d2d2d2d2d2d2d2d34205765696768743a204f2831292c204442205765696768743a2501202d20526561643a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e744572612c204c6f636b732c205c5b4f726967696e204163636f756e745c5dac202d2057726974653a204c6f636b732c204c65646765722c205c5b4f726967696e204163636f756e745c5d28203c2f7765696768743e4477697468647261775f756e626f6e64656404486e756d5f736c617368696e675f7370616e730c7533327c2d012052656d6f766520616e7920756e6c6f636b6564206368756e6b732066726f6d207468652060756e6c6f636b696e67602071756575652066726f6d206f7572206d616e6167656d656e742e003501205468697320657373656e7469616c6c7920667265657320757020746861742062616c616e636520746f206265207573656420627920746865207374617368206163636f756e7420746f20646f4c2077686174657665722069742077616e74732e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0d0120416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e004c20456d697473206057697468647261776e602e006c2053656520616c736f205b6043616c6c3a3a756e626f6e64605d2e002c2023203c7765696768743e5501202d20436f756c6420626520646570656e64656e74206f6e2074686520606f726967696e6020617267756d656e7420616e6420686f77206d7563682060756e6c6f636b696e6760206368756e6b732065786973742e45012020497420696d706c6965732060636f6e736f6c69646174655f756e6c6f636b656460207768696368206c6f6f7073206f76657220604c65646765722e756e6c6f636b696e67602c207768696368206973f42020696e6469726563746c7920757365722d636f6e74726f6c6c65642e20536565205b60756e626f6e64605d20666f72206d6f72652064657461696c2e7901202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732c20796574207468652073697a65206f6620776869636820636f756c64206265206c61726765206261736564206f6e20606c6564676572602ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e40202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d090120436f6d706c6578697479204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2072656d6f766520205570646174653a2501202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c204c6f636b732c205b4f726967696e204163636f756e745da8202d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c656467657218204b696c6c3a4501202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c20426f6e6465642c20536c617368696e67205370616e732c205b4f726967696e482020204163636f756e745d2c204c6f636b735101202d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c682020205b4f726967696e204163636f756e745d2c204c6f636b7374202d2057726974657320456163683a205370616e536c617368202a20530d01204e4f54453a2057656967687420616e6e6f746174696f6e20697320746865206b696c6c207363656e6172696f2c20776520726566756e64206f74686572776973652e302023203c2f7765696768743e2076616c6964617465041470726566733856616c696461746f72507265667344e8204465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e00dc20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0d0120416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e98202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e30202d2d2d2d2d2d2d2d2d2d2d34205765696768743a204f2831292c204442205765696768743a90202d20526561643a2045726120456c656374696f6e205374617475732c204c656467657280202d2057726974653a204e6f6d696e61746f72732c2056616c696461746f7273302023203c2f7765696768743e206e6f6d696e617465041c74617267657473a05665633c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e4c1101204465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e00510120456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e20546869732063616e206f6e6c792062652063616c6c6564207768656e8c205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0d0120416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002c2023203c7765696768743e3101202d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f662060746172676574736020284e2901012077686963682069732063617070656420617420436f6d7061637441737369676e6d656e74733a3a4c494d495420284d41585f4e4f4d494e4154494f4e53292ed8202d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e28202d2d2d2d2d2d2d2d2d34205765696768743a204f284e2984207768657265204e20697320746865206e756d626572206f6620746172676574732c204442205765696768743ac8202d2052656164733a2045726120456c656374696f6e205374617475732c204c65646765722c2043757272656e742045726184202d205772697465733a2056616c696461746f72732c204e6f6d696e61746f7273302023203c2f7765696768743e146368696c6c0044c8204465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e00dc20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0d0120416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e54202d20436f6e7461696e73206f6e6520726561642ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e24202d2d2d2d2d2d2d2d34205765696768743a204f2831292c204442205765696768743a88202d20526561643a20457261456c656374696f6e5374617475732c204c656467657280202d2057726974653a2056616c696461746f72732c204e6f6d696e61746f7273302023203c2f7765696768743e247365745f7061796565041470617965657c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e40b8202852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e00dc20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e98202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e28202d2d2d2d2d2d2d2d2d3c202d205765696768743a204f28312934202d204442205765696768743a4c20202020202d20526561643a204c65646765724c20202020202d2057726974653a205061796565302023203c2f7765696768743e387365745f636f6e74726f6c6c65720428636f6e74726f6c6c65728c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263654090202852652d297365742074686520636f6e74726f6c6c6572206f6620612073746173682e00dc20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e98202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e2c202d2d2d2d2d2d2d2d2d2d34205765696768743a204f2831292c204442205765696768743af4202d20526561643a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c6572f8202d2057726974653a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c6572302023203c2f7765696768743e4c7365745f76616c696461746f725f636f756e74040c6e657730436f6d706163743c7533323e209420536574732074686520696465616c206e756d626572206f662076616c696461746f72732e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743e34205765696768743a204f2831295c2057726974653a2056616c696461746f7220436f756e74302023203c2f7765696768743e60696e6372656173655f76616c696461746f725f636f756e7404286164646974696f6e616c30436f6d706163743c7533323e1cac20496e6372656d656e74732074686520696465616c206e756d626572206f662076616c696461746f72732e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743e842053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e302023203c2f7765696768743e547363616c655f76616c696461746f725f636f756e740418666163746f721c50657263656e741cd4205363616c652075702074686520696465616c206e756d626572206f662076616c696461746f7273206279206120666163746f722e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743e842053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e302023203c2f7765696768743e686164645f7065726d697373696f6e65645f76616c696461746f7208206964656e74697479284964656e74697479496438696e74656e6465645f636f756e742c4f7074696f6e3c7533323e20410120476f7665726e616e636520636f6d6d6974746565206f6e20322f3320726473206d616a6f726974792063616e20696e74726f647563652061206e657720706f74656e7469616c206964656e74697479a10120746f2074686520706f6f6c206f66207065726d697373696f6e656420656e7469746965732077686f2063616e2072756e2076616c696461746f72732e205374616b696e67206d6f64756c65207573657320605065726d697373696f6e65644964656e7469747960590120746f20656e737572652076616c696461746f7273206861766520636f6d706c65746564204b594220636f6d706c69616e636520616e6420636f6e736964657273207468656d20666f722076616c69646174696f6e2e0030202320417267756d656e7473ec202a206f726967696e205265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e8c202a206964656e746974792056616c696461746f722773204964656e7469747949642e0901202a20696e74656e6465645f636f756e74204e6f2e206f662076616c696461746f727320676976656e206964656e7469747920696e74656e647320746f2072756e2e7472656d6f76655f7065726d697373696f6e65645f76616c696461746f7204206964656e74697479284964656e7469747949641cad012052656d6f766520616e206964656e746974792066726f6d2074686520706f6f6c206f66202877616e6e616265292076616c696461746f72206964656e7469746965732e204566666563747320617265206b6e6f776e20696e20746865206e6578742073657373696f6e2e1d01205374616b696e67206d6f64756c6520636865636b7320605065726d697373696f6e65644964656e746974796020746f20656e737572652076616c696461746f727320686176656420636f6d706c65746564204b594220636f6d706c69616e63650030202320417267756d656e7473f4202a206f726967696e205265717569726564206f726967696e20666f722072656d6f76696e67206120706f74656e7469616c2076616c696461746f722e8c202a206964656e746974792056616c696461746f722773204964656e7469747949642e7876616c69646174655f6364645f6578706972795f6e6f6d696e61746f7273041c74617267657473445665633c543a3a4163636f756e7449643e28a42056616c696461746520746865206e6f6d696e61746f727320434444206578706972792074696d652e00f420496620616e206163636f756e742066726f6d206120676976656e20736574206f662061646472657373206973206e6f6d696e6174696e67207468656ed420636865636b2074686520434444206578706972792074696d65206f6620697420616e6420696620697420697320657870697265643501207468656e20746865206163636f756e742073686f756c6420626520756e626f6e64656420616e642072656d6f7665642066726f6d20746865206e6f6d696e6174696e672070726f636573732e002820233c7765696768743e9c202d20446570656e6473206f6e20706173736564206c697374206f66204163636f756e7449642e2d01202d20446570656e6473206f6e20746865206e6f2e206f6620636c61696d206973737565727320616e206163636f756e7449642068617320666f722074686520434444206578706972792e2c20233c2f7765696768743e487365745f636f6d6d697373696f6e5f636170041c6e65775f6361701c50657262696c6c142501204368616e67657320636f6d6d697373696f6e2072617465207768696368206170706c69657320746f20616c6c2076616c696461746f72732e204f6e6c7920476f7665726e616e6365ac20636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e0030202320417267756d656e747390202a20606e65775f6361706020746865206e657720636f6d6d697373696f6e206361702e587365745f6d696e5f626f6e645f7468726573686f6c6404246e65775f76616c75653042616c616e63654f663c543e140501204368616e676573206d696e20626f6e642076616c756520746f206265207573656420696e2076616c696461746528292e204f6e6c7920476f7665726e616e6365ac20636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e0030202320417267756d656e747378202a20606e65775f76616c75656020746865206e6577206d696e696d756d34666f7263655f6e6f5f657261730024b020466f72636520746865726520746f206265206e6f206e6577206572617320696e646566696e6974656c792e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743e40202d204e6f20617267756d656e74732e3c202d205765696768743a204f28312948202d2057726974653a20466f726365457261302023203c2f7765696768743e34666f7263655f6e65775f65726100284d0120466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f6620746865206e6578742073657373696f6e2e20416674657220746869732c2069742077696c6c206265a020726573657420746f206e6f726d616c20286e6f6e2d666f7263656429206265686176696f75722e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743e40202d204e6f20617267756d656e74732e3c202d205765696768743a204f28312944202d20577269746520466f726365457261302023203c2f7765696768743e447365745f696e76756c6e657261626c65730434696e76756c6e657261626c6573445665633c543a3a4163636f756e7449643e20cc20536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743e1c202d204f2856295c202d2057726974653a20496e76756c6e657261626c6573302023203c2f7765696768743e34666f7263655f756e7374616b650814737461736830543a3a4163636f756e744964486e756d5f736c617368696e675f7370616e730c753332280d0120466f72636520612063757272656e74207374616b657220746f206265636f6d6520636f6d706c6574656c7920756e7374616b65642c20696d6d6564696174656c792e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743eec204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2062652072656d6f766564b82052656164733a20426f6e6465642c20536c617368696e67205370616e732c204163636f756e742c204c6f636b738501205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c204163636f756e742c204c6f636b736c2057726974657320456163683a205370616e536c617368202a2053302023203c2f7765696768743e50666f7263655f6e65775f6572615f616c776179730020050120466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f662073657373696f6e7320696e646566696e6974656c792e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743e3c202d205765696768743a204f28312948202d2057726974653a20466f726365457261302023203c2f7765696768743e5463616e63656c5f64656665727265645f736c617368080c65726120457261496e64657834736c6173685f696e6469636573205665633c7533323e34982043616e63656c20656e6163746d656e74206f66206120646566657272656420736c6173682e00b42043616e2062652063616c6c6564206279207468652060543a3a536c61736843616e63656c4f726967696e602e00050120506172616d65746572733a2065726120616e6420696e6469636573206f662074686520736c617368657320666f7220746861742065726120746f206b696c6c2e002c2023203c7765696768743e5420436f6d706c65786974793a204f2855202b205329b82077697468205520756e6170706c69656420736c6173686573207765696768746564207769746820553d31303030d420616e64205320697320746865206e756d626572206f6620736c61736820696e646963657320746f2062652063616e63656c65642e68202d20526561643a20556e6170706c69656420536c61736865736c202d2057726974653a20556e6170706c69656420536c6173686573302023203c2f7765696768743e387061796f75745f7374616b657273083c76616c696461746f725f737461736830543a3a4163636f756e7449640c65726120457261496e64657864110120506179206f757420616c6c20746865207374616b65727320626568696e6420612073696e676c652076616c696461746f7220666f7220612073696e676c65206572612e004d01202d206076616c696461746f725f73746173686020697320746865207374617368206163636f756e74206f66207468652076616c696461746f722e205468656972206e6f6d696e61746f72732c20757020746f290120202060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602c2077696c6c20616c736f207265636569766520746865697220726577617264732e3501202d206065726160206d617920626520616e7920657261206265747765656e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e00590120546865206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2e20416e79206163636f756e742063616e2063616c6c20746869732066756e6374696f6e2c206576656e20696678206974206973206e6f74206f6e65206f6620746865207374616b6572732e00010120546869732063616e206f6e6c792062652063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002c2023203c7765696768743e0101202d2054696d6520636f6d706c65786974793a206174206d6f7374204f284d61784e6f6d696e61746f72526577617264656450657256616c696461746f72292ec4202d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e30202d2d2d2d2d2d2d2d2d2d2d1d01204e20697320746865204e756d626572206f66207061796f75747320666f72207468652076616c696461746f722028696e636c7564696e67207468652076616c696461746f722920205765696768743a88202d205265776172642044657374696e6174696f6e205374616b65643a204f284e29c4202d205265776172642044657374696e6174696f6e20436f6e74726f6c6c657220284372656174696e67293a204f284e292c204442205765696768743a2901202d20526561643a20457261456c656374696f6e5374617475732c2043757272656e744572612c20486973746f727944657074682c204572617356616c696461746f725265776172642c2d01202020202020202020457261735374616b657273436c69707065642c2045726173526577617264506f696e74732c204572617356616c696461746f725072656673202838206974656d73291101202d205265616420456163683a20426f6e6465642c204c65646765722c2050617965652c204c6f636b732c2053797374656d204163636f756e74202835206974656d7329d8202d20577269746520456163683a2053797374656d204163636f756e742c204c6f636b732c204c6564676572202833206974656d7329302023203c2f7765696768743e187265626f6e64041476616c756554436f6d706163743c42616c616e63654f663c543e3e38e0205265626f6e64206120706f7274696f6e206f6620746865207374617368207363686564756c656420746f20626520756e6c6f636b65642e00550120546865206469737061746368206f726967696e206d757374206265207369676e65642062792074686520636f6e74726f6c6c65722c20616e642069742063616e206265206f6e6c792063616c6c6564207768656e8c205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002c2023203c7765696768743ed4202d2054696d6520636f6d706c65786974793a204f284c292c207768657265204c20697320756e6c6f636b696e67206368756e6b7394202d20426f756e64656420627920604d41585f554e4c4f434b494e475f4348554e4b53602ef4202d2053746f72616765206368616e6765733a2043616e277420696e6372656173652073746f726167652c206f6e6c792064656372656173652069742e40202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d34202d204442205765696768743a010120202020202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c204c6f636b732c205b4f726967696e204163636f756e745db820202020202d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c6564676572302023203c2f7765696768743e447365745f686973746f72795f646570746808446e65775f686973746f72795f646570746844436f6d706163743c457261496e6465783e485f6572615f6974656d735f64656c6574656430436f6d706163743c7533323e543101205365742060486973746f72794465707468602076616c75652e20546869732066756e6374696f6e2077696c6c2064656c65746520616e7920686973746f727920696e666f726d6174696f6e80207768656e2060486973746f727944657074686020697320726564756365642e003020506172616d65746572733a1101202d20606e65775f686973746f72795f6465707468603a20546865206e657720686973746f727920646570746820796f7520776f756c64206c696b6520746f207365742e4901202d20606572615f6974656d735f64656c65746564603a20546865206e756d626572206f66206974656d7320746861742077696c6c2062652064656c6574656420627920746869732064697370617463682e450120202020546869732073686f756c64207265706f727420616c6c207468652073746f72616765206974656d7320746861742077696c6c2062652064656c6574656420627920636c656172696e67206f6c6445012020202065726120686973746f72792e204e656564656420746f207265706f727420616e2061636375726174652077656967687420666f72207468652064697370617463682e2054727573746564206279a02020202060526f6f746020746f207265706f727420616e206163637572617465206e756d6265722e0054204f726967696e206d75737420626520726f6f742e002c2023203c7765696768743ee0202d20453a204e756d626572206f6620686973746f7279206465707468732072656d6f7665642c20692e652e203130202d3e2037203d20333c202d205765696768743a204f28452934202d204442205765696768743aa020202020202d2052656164733a2043757272656e74204572612c20486973746f72792044657074687020202020202d205772697465733a20486973746f7279204465707468310120202020202d20436c6561722050726566697820456163683a20457261205374616b6572732c204572615374616b657273436c69707065642c204572617356616c696461746f725072656673810120202020202d2057726974657320456163683a204572617356616c696461746f725265776172642c2045726173526577617264506f696e74732c2045726173546f74616c5374616b652c2045726173537461727453657373696f6e496e646578302023203c2f7765696768743e28726561705f73746173680814737461736830543a3a4163636f756e744964486e756d5f736c617368696e675f7370616e730c7533323c61012052656d6f766520616c6c20646174612073747275637475726520636f6e6365726e696e672061207374616b65722f7374617368206f6e6365206974732062616c616e636520697320617420746865206d696e696d756d2e6101205468697320697320657373656e7469616c6c79206571756976616c656e7420746f206077697468647261775f756e626f6e64656460206578636570742069742063616e2062652063616c6c656420627920616e796f6e65f820616e6420746865207461726765742060737461736860206d7573742068617665206e6f2066756e6473206c656674206265796f6e64207468652045442e009020546869732063616e2062652063616c6c65642066726f6d20616e79206f726967696e2e000101202d20607374617368603a20546865207374617368206163636f756e7420746f20726561702e204974732062616c616e6365206d757374206265207a65726f2e002c2023203c7765696768743e250120436f6d706c65786974793a204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e73206f6e20746865206163636f756e742e2c204442205765696768743ad8202d2052656164733a205374617368204163636f756e742c20426f6e6465642c20536c617368696e67205370616e732c204c6f636b73a501202d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c205374617368204163636f756e742c204c6f636b7374202d2057726974657320456163683a205370616e536c617368202a2053302023203c2f7765696768743e607375626d69745f656c656374696f6e5f736f6c7574696f6e141c77696e6e6572734c5665633c56616c696461746f72496e6465783e1c636f6d7061637448436f6d7061637441737369676e6d656e74731473636f726534456c656374696f6e53636f72650c65726120457261496e6465781073697a6530456c656374696f6e53697a65c4e4205375626d697420616e20656c656374696f6e20726573756c7420746f2074686520636861696e2e2049662074686520736f6c7574696f6e3a003420312e2069732076616c69642e150120322e206861732061206265747465722073636f7265207468616e206120706f74656e7469616c6c79206578697374696e6720736f6c7574696f6e206f6e20636861696e2e0084207468656e2c2069742077696c6c206265205f7075745f206f6e20636861696e2e00ac204120736f6c7574696f6e20636f6e7369737473206f662074776f20706965636573206f6620646174613a00f420312e206077696e6e657273603a206120666c617420766563746f72206f6620616c6c207468652077696e6e657273206f662074686520726f756e642e510120322e206061737369676e6d656e7473603a2074686520636f6d706163742076657273696f6e206f6620616e2061737369676e6d656e7420766563746f72207468617420656e636f6465732074686520656467653020202020776569676874732e00210120426f7468206f66207768696368206d617920626520636f6d7075746564207573696e67205f70687261676d656e5f2c206f7220616e79206f7468657220616c676f726974686d2e00a8204164646974696f6e616c6c792c20746865207375626d6974746572206d7573742070726f766964653a00c8202d20546865206073636f7265602074686174207468657920636c61696d20746865697220736f6c7574696f6e206861732e004d0120426f74682076616c696461746f727320616e64206e6f6d696e61746f72732077696c6c20626520726570726573656e74656420627920696e646963657320696e2074686520736f6c7574696f6e2e205468651d0120696e64696365732073686f756c6420726573706563742074686520636f72726573706f6e64696e6720747970657320285b6056616c696461746f72496e646578605d20616e643101205b604e6f6d696e61746f72496e646578605d292e204d6f72656f7665722c20746865792073686f756c642062652076616c6964207768656e207573656420746f20696e64657820696e746f5101205b60536e617073686f7456616c696461746f7273605d20616e64205b60536e617073686f744e6f6d696e61746f7273605d2e20416e7920696e76616c696420696e6465782077696c6c20636175736520746865610120736f6c7574696f6e20746f2062652072656a65637465642e2054686573652074776f2073746f72616765206974656d73206172652073657420647572696e672074686520656c656374696f6e2077696e646f7720616e6498206d6179206265207573656420746f2064657465726d696e652074686520696e64696365732e0060204120736f6c7574696f6e2069732076616c69642069663a00e420302e204974206973207375626d6974746564207768656e205b60457261456c656374696f6e537461747573605d20697320604f70656e602ef820312e2049747320636c61696d65642073636f726520697320657175616c20746f207468652073636f726520636f6d7075746564206f6e2d636861696e2eac20322e2050726573656e74732074686520636f7272656374206e756d626572206f662077696e6e6572732e550120332e20416c6c20696e6465786573206d7573742062652076616c7565206163636f7264696e6720746f2074686520736e617073686f7420766563746f72732e20416c6c20656467652076616c756573206d7573745d0120202020616c736f20626520636f727265637420616e642073686f756c64206e6f74206f766572666c6f7720746865206772616e756c6172697479206f662074686520726174696f20747970652028692e652e2032353640202020206f722062696c6c696f6e292e0d0120342e20466f72206561636820656467652c20616c6c2074617267657473206172652061637475616c6c79206e6f6d696e617465642062792074686520766f7465722e6c20352e2048617320636f72726563742073656c662d766f7465732e00c0204120736f6c7574696f6e732073636f726520697320636f6e736973746564206f66203320706172616d65746572733a00650120312e20606d696e207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d6178696d697a65642e650120322e206073756d207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d696e696d697a65642e410120332e206073756d207b20737570706f72742e746f74616c5e32207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c642062659c202020206d696e696d697a65642028746f20656e73757265206c6573732076617269616e636529002c2023203c7765696768743e190120546865207472616e73616374696f6e20697320617373756d656420746f20626520746865206c6f6e6765737420706174682c20612062657474657220736f6c7574696f6e2ea42020202d20496e697469616c20736f6c7574696f6e20697320616c6d6f7374207468652073616d652e45012020202d20576f72736520736f6c7574696f6e20697320726574726163656420696e207072652d64697370617463682d636865636b73207768696368207365747320697473206f776e207765696768742e302023203c2f7765696768743e847375626d69745f656c656374696f6e5f736f6c7574696f6e5f756e7369676e6564141c77696e6e6572734c5665633c56616c696461746f72496e6465783e1c636f6d7061637448436f6d7061637441737369676e6d656e74731473636f726534456c656374696f6e53636f72650c65726120457261496e6465781073697a6530456c656374696f6e53697a6524c020556e7369676e65642076657273696f6e206f6620607375626d69745f656c656374696f6e5f736f6c7574696f6e602e005d01204e6f746520746861742074686973206d757374207061737320746865205b6056616c6964617465556e7369676e6564605d20636865636b207768696368206f6e6c7920616c6c6f7773207472616e73616374696f6e7361012066726f6d20746865206c6f63616c206e6f646520746f20626520696e636c756465642e20496e206f7468657220776f7264732c206f6e6c792074686520626c6f636b20617574686f722063616e20696e636c756465206168207472616e73616374696f6e20696e2074686520626c6f636b2e002c2023203c7765696768743e8820536565205b607375626d69745f656c656374696f6e5f736f6c7574696f6e605d2e302023203c2f7765696768743e607061796f75745f7374616b6572735f62795f73797374656d083c76616c696461746f725f737461736830543a3a4163636f756e7449640c65726120457261496e6465780425012053797374656d2076657273696f6e206f6620607061796f75745f7374616b6572732829602e204f6e6c792062652063616c6c65642062792074686520726f6f74206f726967696e2e6c6368616e67655f736c617368696e675f616c6c6f7765645f666f72043c736c617368696e675f73776974636838536c617368696e67537769746368146d012053776974636820736c617368696e6720737461747573206f6e20746865206261736973206f6620676976656e2060536c617368696e67537769746368602e2043616e206f6e6c792062652063616c6c656420627920726f6f742e0030202320417267756d656e747378202a206f726967696e202d204163636f756e744964206f6620726f6f742e0501202a20736c617368696e675f737769746368202d20537769746368207573656420746f2073657420746865207461726765747320666f7220736c617368696e672eb07570646174655f7065726d697373696f6e65645f76616c696461746f725f696e74656e6465645f636f756e7408206964656e74697479284964656e746974794964486e65775f696e74656e6465645f636f756e740c75333218d4205570646174652074686520696e74656e6465642076616c696461746f7220636f756e7420666f72206120676976656e204449442e0030202320417267756d656e74733501202a206f726967696e207768696368206d75737420626520746865207265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e88202a206964656e7469747920746f2061646420617320612076616c696461746f722ec8202a206e65775f696e74656e6465645f636f756e74204e65772076616c7565206f6620696e74656e64656420636f756e742e0144244572615061796f75740c20457261496e6465781c42616c616e63651c42616c616e63650c59012054686520657261207061796f757420686173206265656e207365743b207468652066697273742062616c616e6365206973207468652076616c696461746f722d7061796f75743b20746865207365636f6e64206973c4207468652072656d61696e6465722066726f6d20746865206d6178696d756d20616d6f756e74206f66207265776172642eac205c5b6572615f696e6465782c2076616c696461746f725f7061796f75742c2072656d61696e6465725c5d185265776172640c284964656e746974794964244163636f756e7449641c42616c616e6365043d0120546865207374616b657220686173206265656e207265776172646564206279207468697320616d6f756e742e205c5b73746173685f6964656e746974792c2073746173682c20616d6f756e745c5d14536c61736808244163636f756e7449641c42616c616e6365082501204f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e58205c5b76616c696461746f722c20616d6f756e745c5d684f6c64536c617368696e675265706f7274446973636172646564043053657373696f6e496e646578081d0120416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c6490206e6f742062652070726f6365737365642e205c5b73657373696f6e5f696e6465785c5d3c5374616b696e67456c656374696f6e043c456c656374696f6e436f6d7075746504f42041206e657720736574206f66207374616b6572732077617320656c656374656420776974682074686520676976656e205c5b636f6d707574655c5d2e38536f6c7574696f6e53746f726564043c456c656374696f6e436f6d707574650419012041206e657720736f6c7574696f6e20666f7220746865207570636f6d696e6720656c656374696f6e20686173206265656e2073746f7265642e205c5b636f6d707574655c5d18426f6e6465640c284964656e746974794964244163636f756e7449641c42616c616e636510e820416e206163636f756e742068617320626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d005101204e4f54453a2054686973206576656e74206973206f6e6c7920656d6974746564207768656e2066756e64732061726520626f6e64656420766961206120646973706174636861626c652e204e6f7461626c792c25012069742077696c6c206e6f7420626520656d697474656420666f72207374616b696e672072657761726473207768656e20746865792061726520616464656420746f207374616b652e20556e626f6e6465640c284964656e746974794964244163636f756e7449641c42616c616e636504f020416e206163636f756e742068617320756e626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d244e6f6d696e617465640c284964656e746974794964244163636f756e744964385665633c4163636f756e7449643e048c2055736572206861732075706461746564207468656972206e6f6d696e6174696f6e732457697468647261776e08244163636f756e7449641c42616c616e6365085d0120416e206163636f756e74206861732063616c6c6564206077697468647261775f756e626f6e6465646020616e642072656d6f76656420756e626f6e64696e67206368756e6b7320776f727468206042616c616e636560b02066726f6d2074686520756e6c6f636b696e672071756575652e205c5b73746173682c20616d6f756e745c5d645065726d697373696f6e65644964656e74697479416464656408284964656e746974794964284964656e74697479496408f020416e20444944206861732069737375656420612063616e6469646163792e2053656520746865207472616e73616374696f6e20666f722077686f2e90204743206964656e74697479202c2056616c696461746f722773206964656e746974792e6c5065726d697373696f6e65644964656e7469747952656d6f76656408284964656e746974794964284964656e74697479496408ec2054686520676976656e206d656d626572207761732072656d6f7665642e2053656520746865207472616e73616374696f6e20666f722077686f2e90204743206964656e74697479202c2056616c696461746f722773206964656e746974792e54496e76616c6964617465644e6f6d696e61746f72730c284964656e746974794964244163636f756e744964385665633c4163636f756e7449643e0821012052656d6f766520746865206e6f6d696e61746f72732066726f6d207468652076616c6964206e6f6d696e61746f7273207768656e2074686572652043444420657870697265642e982043616c6c65722c205374617368206163636f756e744964206f66206e6f6d696e61746f727350436f6d6d697373696f6e436170557064617465640c284964656e7469747949641c50657262696c6c1c50657262696c6c0884205768656e20636f6d6d697373696f6e206361702067657420757064617465642e5c20286f6c642076616c75652c206e65772076616c7565296c4d696e696d756d426f6e645468726573686f6c645570646174656408484f7074696f6e3c4964656e7469747949643e1c42616c616e636504b0204d696e20626f6e64207468726573686f6c6420776173207570646174656420286e65772076616c7565292e885265776172645061796d656e745363686564756c696e67496e7465727275707465640c244163636f756e74496420457261496e6465783444697370617463684572726f7204d0205768656e207363686564756c696e67206f6620726577617264207061796d656e74732067657420696e7465727275707465642e64536c617368696e67416c6c6f776564466f724368616e6765640438536c617368696e6753776974636804942055706461746520666f722077686f6d2062616c616e63652067657420736c61736865642e2c3853657373696f6e735065724572613053657373696f6e496e64657810030000000470204e756d626572206f662073657373696f6e7320706572206572612e3c426f6e64696e674475726174696f6e20457261496e646578100700000004e4204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e48536c61736844656665724475726174696f6e20457261496e6465781004000000140101204e756d626572206f662065726173207468617420736c6173686573206172652064656665727265642062792c20616674657220636f6d7075746174696f6e2e00bc20546869732073686f756c64206265206c657373207468616e2074686520626f6e64696e67206475726174696f6e2e2d012053657420746f203020696620736c61736865732073686f756c64206265206170706c69656420696d6d6564696174656c792c20776974686f7574206f70706f7274756e69747920666f723820696e74657276656e74696f6e2e44456c656374696f6e4c6f6f6b616865616438543a3a426c6f636b4e756d626572104b0000001c710120546865206e756d626572206f6620626c6f636b73206265666f72652074686520656e64206f6620746865206572612066726f6d20776869636820656c656374696f6e207375626d697373696f6e732061726520616c6c6f7765642e006d012053657474696e67207468697320746f207a65726f2077696c6c2064697361626c6520746865206f6666636861696e20636f6d7075746520616e64206f6e6c79206f6e2d636861696e207365712d70687261676d656e2077696c6c2420626520757365642e007501205468697320697320626f756e646564206279206265696e672077697468696e20746865206c6173742073657373696f6e2e2048656e63652c2073657474696e6720697420746f20612076616c7565206d6f7265207468616e207468659c206c656e677468206f6620612073657373696f6e2077696c6c20626520706f696e746c6573732e344d6178497465726174696f6e730c753332100a0000000c2901204d6178696d756d206e756d626572206f662062616c616e63696e6720697465726174696f6e7320746f2072756e20696e20746865206f6666636861696e207375626d697373696f6e2e00ec2049662073657420746f20302c2062616c616e63655f736f6c7574696f6e2077696c6c206e6f7420626520657865637574656420617420616c6c2e504d696e536f6c7574696f6e53636f726542756d701c50657262696c6c1020a1070004610120546865207468726573686f6c64206f6620696d70726f76656d656e7420746861742073686f756c642062652070726f766964656420666f722061206e657720736f6c7574696f6e20746f2062652061636365707465642e804d61784e6f6d696e61746f72526577617264656450657256616c696461746f720c753332100008000010f820546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320726577617264656420666f7220656163682076616c696461746f722e00690120466f7220656163682076616c696461746f72206f6e6c79207468652060244d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732063616e20636c61696d2101207468656972207265776172642e2054686973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e5c4d617856616c696461746f725065724964656e746974791c5065726d696c6c10100905000cf4204d6178696d756d206e756d626572206f662076616c696461746f727320666f722065616368207065726d697373696f6e6564206964656e746974792e005901204d6178206e756d626572206f662076616c696461746f727320636f756e74203d20604d617856616c696461746f725065724964656e74697479202a2053656c663a3a76616c696461746f725f636f756e742829602e844d61785661726961626c65496e666c6174696f6e546f74616c49737375616e63653042616c616e63654f663c543e400080c6a47e8d03000000000000000000047101204d6178696d756d20616d6f756e74206f662060543a3a63757272656e63793a3a746f74616c5f69737375616e63652829602061667465722074686174206e6f6e2d696e666c6174656420726577617264732067657420706169642e444669786564596561726c795265776172643042616c616e63654f663c543e4000c0444a547f0000000000000000000004010120546f74616c2079656172207265776172647320746861742067657473207061696420647572696e6720666978656420726577617264207363686564756c652e2c4d696e696d756d426f6e643042616c616e63654f663c543e4040420f0000000000000000000000000004f0204d696e696d756d20616d6f756e74206f6620504f4c59582074686174206d75737420626520626f6e64656420666f722061206e657720626f6e642ea8344e6f74436f6e74726f6c6c65720468204e6f74206120636f6e74726f6c6c6572206163636f756e742e204e6f7453746173680454204e6f742061207374617368206163636f756e742e34416c7265616479426f6e646564046420537461736820697320616c726561647920626f6e6465642e34416c7265616479506169726564047820436f6e74726f6c6c657220697320616c7265616479207061697265642e30456d70747954617267657473046420546172676574732063616e6e6f7420626520656d7074792e44496e76616c6964536c617368496e646578048820536c617368207265636f726420696e646578206f7574206f6620626f756e64732e44496e73756666696369656e7456616c756504cc2043616e206e6f7420626f6e6420776974682076616c7565206c657373207468616e206d696e696d756d2062616c616e63652e304e6f4d6f72654368756e6b7304942043616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b732e344e6f556e6c6f636b4368756e6b04a42043616e206e6f74207265626f6e6420776974686f757420756e6c6f636b696e67206368756e6b732e3046756e64656454617267657404cc20417474656d7074696e6720746f2074617267657420612073746173682074686174207374696c6c206861732066756e64732e48496e76616c6964457261546f526577617264045c20496e76616c69642065726120746f207265776172642e484e6f74536f72746564416e64556e697175650484204974656d7320617265206e6f7420736f7274656420616e6420756e697175652e38416c7265616479436c61696d6564040d01205265776172647320666f72207468697320657261206861766520616c7265616479206265656e20636c61696d656420666f7220746869732076616c696461746f722e7c4f6666636861696e456c656374696f6e4561726c795375626d697373696f6e04e420546865207375626d697474656420726573756c74206973207265636569766564206f7574206f6620746865206f70656e2077696e646f772e784f6666636861696e456c656374696f6e5765616b5375626d697373696f6e04010120546865207375626d697474656420726573756c74206973206e6f7420617320676f6f6420617320746865206f6e652073746f726564206f6e20636861696e2e4c536e617073686f74556e617661696c61626c6504d02054686520736e617073686f742064617461206f66207468652063757272656e742077696e646f77206973206d697373696e672e804f6666636861696e456c656374696f6e426f67757357696e6e6572436f756e7404b020496e636f7272656374206e756d626572206f662077696e6e65727320776572652070726573656e7465642e6c4f6666636861696e456c656374696f6e426f67757357696e6e6572086101204f6e65206f6620746865207375626d69747465642077696e6e657273206973206e6f7420616e206163746976652063616e646964617465206f6e20636861696e2028696e646578206973206f7574206f662072616e67653820696e20736e617073686f74292e704f6666636861696e456c656374696f6e426f677573436f6d70616374085d01204572726f72207768696c65206275696c64696e67207468652061737369676e6d656e7420747970652066726f6d2074686520636f6d706163742e20546869732063616e2068617070656e20696620616e20696e646578a820697320696e76616c69642c206f72206966207468652077656967687473205f6f766572666c6f775f2e784f6666636861696e456c656374696f6e426f6775734e6f6d696e61746f72041501204f6e65206f6620746865207375626d6974746564206e6f6d696e61746f7273206973206e6f7420616e20616374697665206e6f6d696e61746f72206f6e20636861696e2e7c4f6666636861696e456c656374696f6e426f6775734e6f6d696e6174696f6e044d01204f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e206564676520746f20776869636820746865792068617665206e6f7420766f746564206f6e20636861696e2e844f6666636861696e456c656374696f6e536c61736865644e6f6d696e6174696f6e086101204f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e2065646765207768696368206973207375626d6974746564206265666f726520746865206c617374206e6f6e2d7a65726f5420736c617368206f6620746865207461726765742e744f6666636861696e456c656374696f6e426f67757353656c66566f746504250120412073656c6620766f7465206d757374206f6e6c79206265206f726967696e617465642066726f6d20612076616c696461746f7220746f204f4e4c59207468656d73656c7665732e644f6666636861696e456c656374696f6e426f6775734564676504450120546865207375626d697474656420726573756c742068617320756e6b6e6f776e206564676573207468617420617265206e6f7420616d6f6e67207468652070726573656e7465642077696e6e6572732e684f6666636861696e456c656374696f6e426f67757353636f72650419012054686520636c61696d65642073636f726520646f6573206e6f74206d61746368207769746820746865206f6e6520636f6d70757465642066726f6d2074686520646174612e844f6666636861696e456c656374696f6e426f677573456c656374696f6e53697a6504782054686520656c656374696f6e2073697a6520697320696e76616c69642e3843616c6c4e6f74416c6c6f776564044901205468652063616c6c206973206e6f7420616c6c6f7765642061742074686520676976656e2074696d652064756520746f207265737472696374696f6e73206f6620656c656374696f6e20706572696f642e58496e636f7272656374536c617368696e675370616e7304b420496e636f7272656374206e756d626572206f6620736c617368696e67207370616e732070726f76696465642e34416c7265616479457869737473049c205065726d697373696f6e65642076616c696461746f7220616c7265616479206578697374732e244e6f74457869737473048c205065726d697373696f6e65642076616c696461746f72206e6f74206578697374732e204e6f4368616e67650464205570646174657320776974682073616d652076616c75652e60496e76616c696456616c696461746f724964656e7469747904bc20476976656e20706f74656e7469616c2076616c696461746f72206964656e7469747920697320696e76616c69642e68496e76616c696456616c696461746f72436f6d6d697373696f6e04a02056616c696461746f7220707265667320617265206e6f7420696e2076616c69642072616e67652e6453746173684964656e74697479446f65734e6f74457869737404d82056616c696461746f72206f72206e6f6d696e61746f72207374617368206964656e7469747920646f6573206e6f742065786973742e7053746173684964656e746974794e6f745065726d697373696f6e656404bc2056616c696461746f72207374617368206964656e7469747920776173206e6f74207065726d697373696f6e65642e5453746173684964656e746974794e6f744344446564047c204e6f6d696e61746f7220737461736820776173206e6f742043444465642e64486974496e74656e64656456616c696461746f72436f756e7404c02052756e6e696e672076616c696461746f7220636f756e74206869742074686520696e74656e64656420636f756e742e98496e74656e646564436f756e744973457863656564696e67436f6e73656e7375734c696d6974043901205768656e2074686520696e74656e646564206e756d626572206f662076616c696461746f727320746f2072756e206973203e3d20322f33206f66206076616c696461746f725f636f756e74602e30426f6e64546f6f536d616c6c04e0205768656e2074686520616d6f756e7420746f20626520626f6e646564206973206c657373207468616e20604d696e696d756d426f6e6460204261645374617465043d0120496e7465726e616c20737461746520686173206265636f6d6520736f6d65686f7720636f7272757074656420616e6420746865206f7065726174696f6e2063616e6e6f7420636f6e74696e75652e38546f6f4d616e7954617267657473049820546f6f206d616e79206e6f6d696e6174696f6e207461726765747320737570706c6965642e244261645461726765740441012041206e6f6d696e6174696f6e207461726765742077617320737570706c69656420746861742077617320626c6f636b6564206f72206f7468657277697365206e6f7420612076616c696461746f722e11204f6666656e63657301204f6666656e636573101c5265706f727473000105345265706f727449644f663c543ed04f6666656e636544657461696c733c543a3a4163636f756e7449642c20543a3a4964656e74696669636174696f6e5475706c653e00040004490120546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e4044656665727265644f6666656e6365730100645665633c44656665727265644f6666656e63654f663c543e3e0400086501204465666572726564207265706f72747320746861742068617665206265656e2072656a656374656420627920746865206f6666656e63652068616e646c657220616e64206e65656420746f206265207375626d6974746564442061742061206c617465722074696d652e58436f6e63757272656e745265706f727473496e646578010205104b696e64384f706171756554696d65536c6f74485665633c5265706f727449644f663c543e3e050400042901204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e485265706f72747342794b696e64496e646578010105104b696e641c5665633c75383e00040018110120456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e00bc20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e004901204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f66690120646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e010001041c4f6666656e63650c104b696e64384f706171756554696d65536c6f7410626f6f6c10550120546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e644d0120286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e206c617374190120656c656d656e7420696e64696361746573206f6620746865206f6666656e636520776173206170706c69656420287472756529206f7220717565756564202866616c73652974205c5b6b696e642c2074696d65736c6f742c206170706c6965645c5d2e0000121c53657373696f6e011c53657373696f6e1c2856616c696461746f727301004c5665633c543a3a56616c696461746f7249643e0400047c205468652063757272656e7420736574206f662076616c696461746f72732e3043757272656e74496e64657801003053657373696f6e496e646578100000000004782043757272656e7420696e646578206f66207468652073657373696f6e2e345175657565644368616e676564010010626f6f6c040008390120547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f7273a420686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e285175657565644b6579730100785665633c28543a3a56616c696461746f7249642c20543a3a4b657973293e0400083d012054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b657973e02077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e4844697361626c656456616c696461746f72730100205665633c7533323e04000c8020496e6469636573206f662064697361626c65642076616c696461746f72732e003501205468652073657420697320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e732061206e657720736574206f66206964656e7469746965732e204e6578744b65797300010538543a3a56616c696461746f7249641c543a3a4b657973000400049c20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e204b65794f776e657200010550284b65795479706549642c205665633c75383e2938543a3a56616c696461746f72496400040004090120546865206f776e6572206f662061206b65792e20546865206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e0108207365745f6b65797308106b6579731c543a3a4b6579731470726f6f661c5665633c75383e38e82053657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b657973602e210120416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722ec4205468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e00d420546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e002c2023203c7765696768743e54202d20436f6d706c65786974793a20604f28312960590120202041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468206f662060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642ef0202d20446252656164733a20606f726967696e206163636f756e74602c2060543a3a56616c696461746f7249644f66602c20604e6578744b65797360a4202d2044625772697465733a20606f726967696e206163636f756e74602c20604e6578744b6579736084202d204462526561647320706572206b65792069643a20604b65794f776e65726088202d20446257726974657320706572206b65792069643a20604b65794f776e657260302023203c2f7765696768743e2870757267655f6b6579730030cc2052656d6f76657320616e792073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c65722ec4205468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e00d420546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e002c2023203c7765696768743eb4202d20436f6d706c65786974793a20604f2831296020696e206e756d626572206f66206b65792074797065732e590120202041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468206f662060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642ef0202d20446252656164733a2060543a3a56616c696461746f7249644f66602c20604e6578744b657973602c20606f726967696e206163636f756e7460a4202d2044625772697465733a20604e6578744b657973602c20606f726967696e206163636f756e74608c202d20446257726974657320706572206b65792069643a20604b65794f776e64657260302023203c2f7765696768743e0104284e657753657373696f6e043053657373696f6e496e646578086501204e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e7420697320746865205c5b73657373696f6e5f696e6465785c5d2c206e6f742074686520626c6f636b88206e756d626572206173207468652074797065206d6967687420737567676573742e001430496e76616c696450726f6f66046420496e76616c6964206f776e6572736869702070726f6f662e5c4e6f4173736f63696174656456616c696461746f72496404a0204e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e344475706c6963617465644b657904682052656769737465726564206475706c6963617465206b65792e184e6f4b65797304a8204e6f206b65797320617265206173736f63696174656420776974682074686973206163636f756e742e244e6f4163636f756e74041d01204b65792073657474696e67206163636f756e74206973206e6f74206c6976652c20736f206974277320696d706f737369626c6520746f206173736f6369617465206b6579732e1348417574686f72697479446973636f76657279000100000000141c4772616e647061013c4772616e64706146696e616c6974791814537461746501006c53746f72656453746174653c543a3a426c6f636b4e756d6265723e04000490205374617465206f66207468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e676500008c53746f72656450656e64696e674368616e67653c543a3a426c6f636b4e756d6265723e040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000038543a3a426c6f636b4e756d626572040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c656400008028543a3a426c6f636b4e756d6265722c20543a3a426c6f636b4e756d626572290400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e3043757272656e7453657449640100145365744964200000000000000000085d0120546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c697469657329c420696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e30536574496453657373696f6e0001051453657449643053657373696f6e496e6465780004001059012041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e00b82054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e010c4c7265706f72745f65717569766f636174696f6e084865717569766f636174696f6e5f70726f6f66a845717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3c6b65795f6f776e65725f70726f6f6640543a3a4b65794f776e657250726f6f66100d01205265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f82065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66fc20616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e6365482077696c6c206265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e6564084865717569766f636174696f6e5f70726f6f66a845717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3c6b65795f6f776e65725f70726f6f6640543a3a4b65794f776e657250726f6f66240d01205265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f82065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66fc20616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e6365482077696c6c206265207265706f727465642e00110120546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c79190120626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c206173207375636819012069662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e28207265706f727465722e306e6f74655f7374616c6c6564081464656c617938543a3a426c6f636b4e756d6265726c626573745f66696e616c697a65645f626c6f636b5f6e756d62657238543a3a426c6f636b4e756d6265721c1d01204e6f74652074686174207468652063757272656e7420617574686f7269747920736574206f6620746865204752414e4450412066696e616c69747920676164676574206861732901207374616c6c65642e20546869732077696c6c2074726967676572206120666f7263656420617574686f7269747920736574206368616e67652061742074686520626567696e6e696e672101206f6620746865206e6578742073657373696f6e2c20746f20626520656e6163746564206064656c61796020626c6f636b7320616674657220746861742e205468652064656c617915012073686f756c64206265206869676820656e6f75676820746f20736166656c7920617373756d6520746861742074686520626c6f636b207369676e616c6c696e6720746865290120666f72636564206368616e67652077696c6c206e6f742062652072652d6f726765642028652e672e203130303020626c6f636b73292e20546865204752414e44504120766f7465727329012077696c6c20737461727420746865206e657720617574686f7269747920736574207573696e672074686520676976656e2066696e616c697a656420626c6f636b20617320626173652e5c204f6e6c792063616c6c61626c6520627920726f6f742e010c384e6577417574686f7269746965730434417574686f726974794c69737404d8204e657720617574686f726974792073657420686173206265656e206170706c6965642e205c5b617574686f726974795f7365745c5d1850617573656400049c2043757272656e7420617574686f726974792073657420686173206265656e207061757365642e1c526573756d65640004a02043757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e001c2c50617573654661696c656408090120417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665a8202865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e30526573756d654661696c656408150120417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e277420706175736564a42028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e344368616e676550656e64696e6704ec20417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e1c546f6f536f6f6e04c02043616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e60496e76616c69644b65794f776e65727368697050726f6f660435012041206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f6604350120416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f7274041901204120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e1528486973746f726963616c00000000001620496d4f6e6c696e650120496d4f6e6c696e6510384865617274626561744166746572010038543a3a426c6f636b4e756d62657210000000001831012054686520626c6f636b206e756d6265722061667465722077686963682069742773206f6b20746f2073656e64206865617274626561747320696e2063757272656e742073657373696f6e2e0011012041742074686520626567696e6e696e67206f6620656163682073657373696f6e20776520736574207468697320746f20612076616c756520746861742073686f756c64d02066616c6c20726f7567686c7920696e20746865206d6964646c65206f66207468652073657373696f6e206475726174696f6e2e010120546865206964656120697320746f206669727374207761697420666f72207468652076616c696461746f727320746f2070726f64756365206120626c6f636b390120696e207468652063757272656e742073657373696f6e2c20736f20746861742074686520686561727462656174206c61746572206f6e2077696c6c206e6f74206265206e65636573736172792e104b65797301004c5665633c543a3a417574686f7269747949643e040004d0205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e485265636569766564486561727462656174730002053053657373696f6e496e6465782441757468496e6465781c5665633c75383e05040008f020466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206041757468496e6465786020746f8020606f6666636861696e3a3a4f70617175654e6574776f726b5374617465602e38417574686f726564426c6f636b730102053053657373696f6e496e6465783856616c696461746f7249643c543e0c75333205100000000008150120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206056616c696461746f7249643c543e6020746f20746865c8206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e0104246865617274626561740824686561727462656174644865617274626561743c543a3a426c6f636b4e756d6265723e285f7369676e6174757265bc3c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e6174757265242c2023203c7765696768743e4101202d20436f6d706c65786974793a20604f284b202b20452960207768657265204b206973206c656e677468206f6620604b6579736020286865617274626561742e76616c696461746f72735f6c656e290101202020616e642045206973206c656e677468206f6620606865617274626561742e6e6574776f726b5f73746174652e65787465726e616c5f61646472657373608c2020202d20604f284b29603a206465636f64696e67206f66206c656e67746820604b60b02020202d20604f284529603a206465636f64696e672f656e636f64696e67206f66206c656e677468206045603d01202d20446252656164733a2070616c6c65745f73657373696f6e206056616c696461746f7273602c2070616c6c65745f73657373696f6e206043757272656e74496e646578602c20604b657973602c5c202020605265636569766564486561727462656174736084202d2044625772697465733a206052656365697665644865617274626561747360302023203c2f7765696768743e010c444865617274626561745265636569766564042c417574686f7269747949640405012041206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f72697479496460205c5b617574686f726974795f69645c5d1c416c6c476f6f640004d42041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2c536f6d654f66666c696e6504605665633c4964656e74696669636174696f6e5475706c653e043d012041742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e652076616c696461746f722077617320666f756e6420746f206265205c5b6f66666c696e655c5d2e000828496e76616c69644b65790464204e6f6e206578697374656e74207075626c6963206b65792e4c4475706c6963617465644865617274626561740458204475706c696361746564206865617274626561742e176052616e646f6d6e657373436f6c6c656374697665466c6970016052616e646f6d6e657373436f6c6c656374697665466c6970043852616e646f6d4d6174657269616c0100305665633c543a3a486173683e04000c610120536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e2054686973610120697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f664420746865206f6c6465737420686173682e010000000018105375646f01105375646f040c4b6579010030543a3a4163636f756e74496480000000000000000000000000000000000000000000000000000000000000000004842054686520604163636f756e74496460206f6620746865207375646f206b65792e0110107375646f041063616c6c60426f783c3c5420617320436f6e6669673e3a3a43616c6c3e2839012041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c2023203c7765696768743e20202d204f2831292e64202d204c696d697465642073746f726167652072656164732e60202d204f6e6520444220777269746520286576656e74292ec8202d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e302023203c2f7765696768743e547375646f5f756e636865636b65645f776569676874081063616c6c60426f783c3c5420617320436f6e6669673e3a3a43616c6c3e1c5f776569676874185765696768742839012041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e310120546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b4205375646f207573657220746f20737065636966792074686520776569676874206f66207468652063616c6c2e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c2023203c7765696768743e20202d204f2831292ed0202d2054686520776569676874206f6620746869732063616c6c20697320646566696e6564206279207468652063616c6c65722e302023203c2f7765696768743e1c7365745f6b6579040c6e65778c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263652475012041757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c2023203c7765696768743e20202d204f2831292e64202d204c696d697465642073746f726167652072656164732e44202d204f6e65204442206368616e67652e302023203c2f7765696768743e1c7375646f5f6173080c77686f8c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263651063616c6c60426f783c3c5420617320436f6e6669673e3a3a43616c6c3e2c51012041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d44206120676976656e206163636f756e742e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c2023203c7765696768743e20202d204f2831292e64202d204c696d697465642073746f726167652072656164732e60202d204f6e6520444220777269746520286576656e74292ec8202d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e302023203c2f7765696768743e010c14537564696404384469737061746368526573756c74048c2041207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d284b65794368616e67656404244163636f756e74496404010120546865205c5b7375646f65725c5d206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e285375646f4173446f6e6504384469737061746368526573756c74048c2041207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d00042c526571756972655375646f04802053656e646572206d75737420626520746865205375646f206163636f756e741914417373657401144173736574541c5469636b657273010102185469636b6572745469636b6572526567697374726174696f6e3c543a3a4d6f6d656e743e00840000000000000000000000000000000000000000000000000000000000000000000874205469636b657220726567697374726174696f6e2064657461696c732e7c20287469636b657229202d3e205469636b6572526567697374726174696f6e305469636b6572436f6e66696701008c5469636b6572526567697374726174696f6e436f6e6669673c543a3a4d6f6d656e743e0800000870205469636b657220726567697374726174696f6e20636f6e6669672e9420287469636b657229202d3e205469636b6572526567697374726174696f6e436f6e66696718546f6b656e73010102185469636b6572345365637572697479546f6b656e00c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008e02044657461696c73206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e050120287469636b657229202d3e205365637572697479546f6b656e2064657461696c73205b72657475726e73205365637572697479546f6b656e207374727563745d2841737365744e616d6573010102185469636b65722441737365744e616d6500040008ec204173736574206e616d65206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e6020287469636b657229202d3e206041737365744e616d65602442616c616e63654f66010202185469636b6572284964656e7469747949641c42616c616e636506400000000000000000000000000000000008b42054686520746f74616c206173736574207469636b65722062616c616e636520706572206964656e746974792e6420287469636b65722c2044494429202d3e2042616c616e63652c4964656e74696669657273010102185469636b6572505665633c41737365744964656e7469666965723e00040004b82041206d6170206f662061207469636b6572206e616d6520616e64206173736574206964656e746966696572732e50437573746f6d54797065496453657175656e6365010044437573746f6d417373657454797065496410000000000cc420546865206e65787420604173736574547970653a3a437573746f6d6020494420696e207468652073657175656e63652e00d0204e756d6265727320696e207468652073657175656e63652073746172742066726f6d203120726174686572207468616e20302e2c437573746f6d547970657301010544437573746f6d41737365745479706549641c5665633c75383e00040004f8204d61707320637573746f6d20617373657420747970652069647320746f20746865207265676973746572656420737472696e6720636f6e74656e74732e48437573746f6d5479706573496e76657273650101021c5665633c75383e44437573746f6d417373657454797065496400100000000004610120496e7665727365206d6170206f662060437573746f6d5479706573602c2066726f6d207265676973746572656420737472696e6720636f6e74656e747320746f20637573746f6d2061737365742074797065206964732e3046756e64696e67526f756e64010102185469636b65724046756e64696e67526f756e644e616d65000400089c20546865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e60207469636b6572202d3e2066756e64696e6720726f756e6450497373756564496e46756e64696e67526f756e6401010268285469636b65722c2046756e64696e67526f756e644e616d65291c42616c616e63650040000000000000000000000000000000000811012054686520746f74616c2062616c616e636573206f6620746f6b656e732069737375656420696e20616c6c207265636f726465642066756e64696e6720726f756e64732e8c20287469636b65722c2066756e64696e6720726f756e6429202d3e2062616c616e63651846726f7a656e010102185469636b657210626f6f6c00040008e82054686520736574206f662066726f7a656e2061737365747320696d706c656d656e7465642061732061206d656d62657273686970206d61702e3c207469636b6572202d3e20626f6f6c5c41737365744f776e65727368697052656c6174696f6e73010206284964656e746974794964185469636b65725841737365744f776e65727368697052656c6174696f6e0204000888205469636b65727320616e6420746f6b656e206f776e656420627920612075736572842028757365722c207469636b657229202d3e2041737365744f776e657273686970384173736574446f63756d656e7473010202185469636b657228446f63756d656e74496420446f63756d656e7405140000000000087c20446f63756d656e747320617474616368656420746f20616e2041737365747420287469636b65722c20646f635f696429202d3e20646f63756d656e74604173736574446f63756d656e7473496453657175656e6365010102185469636b657228446f63756d656e7449640010000000000880205065722d7469636b657220646f63756d656e7420494420636f756e7465722e4c20287469636b657229202d3e20646f635f696438436c61737369635469636b657273000102185469636b657264436c61737369635469636b6572526567697374726174696f6e00040004f0205469636b657220726567697374726174696f6e2064657461696c73206f6e20506f6c796d61746820436c6173736963202f20457468657265756d2e4042616c616e63654f66417453636f70650102061c53636f70654964284964656e7469747949641c42616c616e63650640000000000000000000000000000000000ccc2042616c616e636573206765742073746f726564206f6e20746865206261736973206f6620746865206053636f70654964602e9d01205269676874206e6f77206974206973206f6e6c792068656c7066756c20666f722074686520554920707572706f7365732062757420696e206675747572652069742063616e206265207573656420746f20646f206d697261636c6573206f6e2d636861696e2e88202853636f706549642c204964656e74697479496429203d3e2042616c616e63652e4041676772656761746542616c616e6365010202185469636b65721c53636f706549641c42616c616e63650640000000000000000000000000000000000825012053746f7265206167677265676174652062616c616e6365206f662074686f7365206964656e746974696573207468617420686173207468652073616d65206053636f70654964602e7820285469636b65722c2053636f7065496429203d3e2042616c616e63652e2453636f706549644f66010202185469636b6572284964656e7469747949641c53636f706549640680000000000000000000000000000000000000000000000000000000000000000008dc20547261636b73207468652053636f70654964206f6620746865206964656e7469747920666f72206120676976656e207469636b65722e8420285469636b65722c204964656e74697479496429203d3e2053636f706549642e6444697361626c65496e766573746f72556e697175656e657373010102185469636b657210626f6f6c0004001031012044656369646573207768657468657220696e766573746f7220756e697175656e65737320726571756972656d656e7420697320656e666f7263656420666f7220746869732061737365742e8c206066616c736560206d65616e73207468617420697420697320656e666f726365642e0040205469636b6572203d3e20626f6f6c2e3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e01483c72656769737465725f7469636b657204187469636b6572185469636b6572240901205265676973746572732061206e6577207469636b6572206f7220657874656e64732076616c6964697479206f6620616e206578697374696e67207469636b65722e1501204e423a205469636b65722076616c696469747920646f6573206e6f742067657420636172727920666f7277617264207768656e2072656e6577696e67207469636b65722e0030202320417267756d656e7473cd01202a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e7c202a20607469636b657260207469636b657220746f2072656769737465722e00382023205065726d697373696f6e7320202a204173736574586163636570745f7469636b65725f7472616e73666572041c617574685f69640c753634306c20416363657074732061207469636b6572207472616e736665722e00310120436f6e73756d65732074686520617574686f72697a6174696f6e2060617574685f6964602028736565206070616c6c65745f6964656e746974793a3a636f6e73756d655f6175746860292e2901204e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e0030202320417267756d656e7473cd01202a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292efc202a2060617574685f69646020417574686f72697a6174696f6e204944206f66207469636b6572207472616e7366657220617574686f72697a6174696f6e2e0028202323204572726f72736d01202d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f696460206973206e6f7420612076616c6964207469636b6574207472616e7366657220617574686f72697a6174696f6e2e007c6163636570745f61737365745f6f776e6572736869705f7472616e73666572041c617574685f69640c75363418f020546869732066756e6374696f6e206973207573656420746f20616363657074206120746f6b656e206f776e657273686970207472616e736665722e2901204e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e0030202320417267756d656e7473cd01202a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e3101202a2060617574685f69646020417574686f72697a6174696f6e204944206f662074686520746f6b656e206f776e657273686970207472616e7366657220617574686f72697a6174696f6e2e306372656174655f61737365741c106e616d652441737365744e616d65187469636b6572185469636b657224646976697369626c6510626f6f6c2861737365745f74797065244173736574547970652c6964656e74696669657273505665633c41737365744964656e7469666965723e3466756e64696e675f726f756e64604f7074696f6e3c46756e64696e67526f756e644e616d653e2864697361626c655f697510626f6f6c68310120496e697469616c697a65732061206e657720736563757269747920746f6b656e2c20776974682074686520696e6974696174696e67206163636f756e7420617320697473206f776e65722e19012054686520746f74616c20737570706c792077696c6c20696e697469616c6c79206265207a65726f2e20546f206d696e7420746f6b656e732c2075736520606973737565602e0030202320417267756d656e7473c901202a20606f726967696e60202d20636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e88202a20606e616d6560202d20746865206e616d65206f662074686520746f6b656e2eb4202a20607469636b657260202d20746865207469636b65722073796d626f6c206f662074686520746f6b656e2e3101202a2060646976697369626c6560202d206120626f6f6c65616e20746f206964656e74696679207468652064697669736962696c69747920737461747573206f662074686520746f6b656e2e84202a206061737365745f7479706560202d2074686520617373657420747970652ec4202a20606964656e7469666965727360202d206120766563746f72206f66206173736574206964656e746966696572732ebc202a206066756e64696e675f726f756e6460202d206e616d65206f66207468652066756e64696e6720726f756e642e5101202a206064697361626c655f697560202d2077686574686572206f72206e6f7420696e766573746f7220756e697175656e65737320656e666f7263656d656e742073686f756c642062652064697361626c65642ecc202020546869732063616e6e6f74206265206368616e676564206166746572206372656174696e67207468652061737365742e0028202323204572726f72730101202d2060496e76616c696441737365744964656e7469666965726020696620616e79206f6620606964656e74696669657273602061726520696e76616c69642e5501202d20604d61784c656e6774684f6641737365744e616d6545786365656465646020696620606e616d65602773206c656e67746820657863656564732060543a3a41737365744e616d654d61784c656e677468602e5901202d206046756e64696e67526f756e644e616d654d61784c656e67746845786365656465646020696620746865206e616d65206f66207468652066756e64696e6720726f756e64206973206c6f6e6765722074686174802060543a3a46756e64696e67526f756e644e616d654d61784c656e677468602ed8202d20604173736574416c726561647943726561746564602069662061737365742077617320616c726561647920637265617465642e6101202d20605469636b6572546f6f4c6f6e676020696620607469636b6572602773206c656e6774682069732067726561746572207468616e2060636f6e6669672e6d61785f7469636b65725f6c656e6774686020636861696e2c20706172616d657465722ea502202d20605469636b65724e6f7441736369696020696620607469636b657260206973206e6f742079657420726567697374657265642c20616e6420636f6e7461696e73206e6f6e2d6173636969207072696e7461626c652063686172616374657273202866726f6d20636f646520333220746f2031323629206f7220616e7920636861726163746572206166746572206669727374206f6363757272656e6365206f6620605c30602e003c202323205065726d697373696f6e7330202a20506f7274666f6c696f18667265657a6504187469636b6572185469636b65722cc020467265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e0030202320417267756d656e7473b8202a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e98202a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e0028202323204572726f7273c4202d2060416c726561647946726f7a656e6020696620607469636b65726020697320616c72656164792066726f7a656e2e00382023205065726d697373696f6e7320202a20417373657420756e667265657a6504187469636b6572185469636b65722cc820556e667265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e0030202320417267756d656e7473b8202a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722eb4202a20607469636b657260202d20746865207469636b6572206f66207468652066726f7a656e20746f6b656e2e0028202323204572726f7273b4202d20604e6f7446726f7a656e6020696620607469636b657260206973206e6f742066726f7a656e207965742e00382023205065726d697373696f6e7320202a2041737365743072656e616d655f617373657408187469636b6572185469636b6572106e616d652441737365744e616d65345c2052656e616d6573206120676976656e20746f6b656e2e0030202320417267756d656e7473b8202a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e98202a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e98202a20606e616d6560202d20746865206e6577206e616d65206f662074686520746f6b656e2e0028202323204572726f72731501202d20604d61784c656e6774684f6641737365744e616d65457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e642060543a3a41737365744e616d654d61784c656e677468602e00382023205065726d697373696f6e7320202a20417373657414697373756508187469636b6572185469636b657218616d6f756e741c42616c616e63652ca82049737375652c206f72206d696e742c206e657720746f6b656e7320746f207468652063616c6c65722cb0207768696368206d75737420626520616e20617574686f72697a65642065787465726e616c206167656e742e0030202320417267756d656e74733101202a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e64202a20607469636b657260206f662074686520746f6b656e2e98202a2060616d6f756e7460206f6620746f6b656e73207468617420676574206973737565642e00382023205065726d697373696f6e7320202a20417373657430202a20506f7274666f6c696f1872656465656d08187469636b6572185469636b65721476616c75651c42616c616e63653cd1012052656465656d73206578697374696e6720746f6b656e73206279207265647563696e67207468652062616c616e6365206f66207468652063616c6c657227732064656661756c7420706f7274666f6c696f20616e642074686520746f74616c20737570706c79206f662074686520746f6b656e0030202320417267756d656e74733101202a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e80202a20607469636b657260205469636b6572206f662074686520746f6b656e2e98202a206076616c75656020416d6f756e74206f6620746f6b656e7320746f2072656465656d2e00242023204572726f72736501202d2060556e617574686f72697a6564602049662063616c6c656420627920736f6d656f6e6520776974686f75742074686520617070726f7072696174652065787465726e616c206167656e74207065726d697373696f6e735d01202d2060496e76616c69644772616e756c6172697479602049662074686520616d6f756e74206973206e6f7420646976697369626c652062792031305e3620666f72206e6f6e2d646976697369626c6520746f6b656e739101202d2060496e73756666696369656e74506f7274666f6c696f42616c616e636560204966207468652063616c6c657227732064656661756c7420706f7274666f6c696f20646f65736e2774206861766520656e6f75676820667265652062616c616e636500382023205065726d697373696f6e7320202a20417373657430202a20506f7274666f6c696f386d616b655f646976697369626c6504187469636b6572185469636b65722c98204d616b657320616e20696e646976697369626c6520746f6b656e20646976697369626c652e0030202320417267756d656e74733101202a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e80202a20607469636b657260205469636b6572206f662074686520746f6b656e2e0028202323204572726f7273f0202d20604173736574416c7265616479446976697369626c656020696620607469636b65726020697320616c726561647920646976697369626c652e00382023205065726d697373696f6e7320202a204173736574346164645f646f63756d656e74730810646f6373345665633c446f63756d656e743e187469636b6572185469636b657224842041646420646f63756d656e747320666f72206120676976656e20746f6b656e2e0030202320417267756d656e74733101202a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e80202a20607469636b657260205469636b6572206f662074686520746f6b656e2ebc202a2060646f63736020446f63756d656e747320746f20626520617474616368656420746f20607469636b6572602e00382023205065726d697373696f6e7320202a2041737365744072656d6f76655f646f63756d656e7473080c6964733c5665633c446f63756d656e7449643e187469636b6572185469636b657224902052656d6f766520646f63756d656e747320666f72206120676976656e20746f6b656e2e0030202320417267756d656e74733101202a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e80202a20607469636b657260205469636b6572206f662074686520746f6b656e2ecc202a20606964736020446f63756d656e74732069647320746f2062652072656d6f7665642066726f6d20607469636b6572602e00382023205065726d697373696f6e7320202a204173736574447365745f66756e64696e675f726f756e6408187469636b6572185469636b6572106e616d654046756e64696e67526f756e644e616d6534b0205365747320746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e0030202320417267756d656e74732d01202a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e98202a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2ee8202a20606e616d6560202d207468652064657369726564206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e0028202323204572726f72732901202d206046756e64696e67526f756e644e616d654d61784c656e677468457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e802060543a3a46756e64696e67526f756e644e616d654d61784c656e677468602e00382023205065726d697373696f6e7320202a204173736574487570646174655f6964656e7469666965727308187469636b6572185469636b65722c6964656e74696669657273505665633c41737365744964656e7469666965723e347c205570646174657320746865206173736574206964656e746966696572732e0030202320417267756d656e74732d01202a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e98202a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e5d01202a20606964656e7469666965727360202d20746865206173736574206964656e7469666965727320746f206265207570646174656420696e2074686520666f726d206f66206120766563746f72206f66207061697273d0202020206f6620604964656e746966696572547970656020616e64206041737365744964656e746966696572602076616c75652e0028202323204572726f72733501202d2060496e76616c696441737365744964656e7469666965726020696620606964656e746966696572736020636f6e7461696e7320616e7920696e76616c6964206964656e7469666965722e00382023205065726d697373696f6e7320202a20417373657450636c61696d5f636c61737369635f7469636b657208187469636b6572185469636b657248657468657265756d5f7369676e61747572653845636473615369676e617475726538010120436c61696d20612073797374656d61746963616c6c7920726573657276656420506f6c796d61746820436c61737369632028504d432920607469636b657260b020616e64207472616e7366657220697420746f2074686520606f726967696e602773206964656e746974792e00410120546f2076657269667920746861742074686520606f726967696e6020697320696e20636f6e74726f6c206f662074686520457468657265756d206163636f756e74206f6e2074686520626f6f6b732c150120616e2060657468657265756d5f7369676e61747572656020636f6e7461696e696e672074686520606f726967696e6027732044494420617320746865206d657373616765ac206d7573742062652070726f7669646564206279207468617420457468657265756d206163636f756e742e00242023204572726f72733501202d20604e6f53756368436c61737369635469636b6572602069662074686973206973206e6f7420612073797374656d61746963616c6c7920726573657276656420504d43207469636b65722e5501202d20605469636b6572416c7265616479526567697374657265646020696620746865207469636b65722077617320616c726561647920726567697374657265642c20652e672e2c20627920606f726967696e602e2101202d20605469636b6572526567697374726174696f6e457870697265646020696620746865207469636b6572277320726567697374726174696f6e2068617320657870697265642e74202d20604261644f726967696e60206966206e6f74207369676e65642e1d01202d2060496e76616c6964457468657265756d5369676e617475726560206966207468652060657468657265756d5f7369676e617475726560206973206e6f742076616c69642e2d01202d20604e6f74416e4f776e6572602069662074686520657468657265756d206163636f756e74206973206e6f7420746865206f776e6572206f662074686520504d43207469636b65722e58726573657276655f636c61737369635f7469636b65720c54636c61737369635f7469636b65725f696d706f72744c436c61737369635469636b6572496d706f727430636f6e74726163745f646964284964656e74697479496418636f6e6669678c5469636b6572526567697374726174696f6e436f6e6669673c543a3a4d6f6d656e743e34a42052657365727665206120506f6c796d61746820436c61737369632028504d4329207469636b65722e1101204d7573742062652063616c6c656420627920726f6f742c20616e642061737369676e7320746865207469636b657220746f20612073797374656d61746963204449442e0030202320417267756d656e74737c202a20606f726967696e60207768696368206d75737420626520726f6f742ef0202a2060636c61737369635f7469636b65725f696d706f7274602073706563696669636174696f6e20666f722074686520504d43207469636b65722e6101202a2060636f6e74726163745f6469646020746f207265736572766520746865207469636b657220746f2069662060636c61737369635f7469636b65725f696d706f72742e69735f636f6e74726163746020686f6c64732ec0202a2060636f6e6669676020746f2075736520666f722065787069727920616e64207469636b6572206c656e6774682e00242023204572726f72734d01202a20604173736574416c726561647943726561746564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b65726020776173206372656174656420617320616e2061737365742e6501202a20605469636b6572546f6f4c6f6e6760206966207468652060636f6e6669676020636f6e736964657273207468652060636c61737369635f7469636b65725f696d706f72742e7469636b65726020746f6f206c6f6e672e5901202a20605469636b6572416c726561647952656769737465726564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b6572602077617320616c726561647920726567697374657265642e4c636f6e74726f6c6c65725f7472616e736665720c187469636b6572185469636b65721476616c75651c42616c616e63653866726f6d5f706f7274666f6c696f2c506f7274666f6c696f49641c510120466f726365732061207472616e73666572206f6620746f6b656e2066726f6d206066726f6d5f706f7274666f6c696f6020746f207468652063616c6c657227732064656661756c7420706f7274666f6c696f2e0030202320417267756d656e74735901202a20606f726967696e60204d75737420626520616e2065787465726e616c206167656e74207769746820617070726f707269617465207065726d697373696f6e7320666f72206120676976656e207469636b65722e9c202a20607469636b657260205469636b65722073796d626f6c206f66207468652061737365742ed0202a206076616c7565602020416d6f756e74206f6620746f6b656e73206e65656420746f20666f726365207472616e736665722e0101202a206066726f6d5f706f7274666f6c696f602046726f6d2077686f6d20706f7274666f6c696f20746f6b656e732067657473207472616e736665727265642e6872656769737465725f637573746f6d5f61737365745f74797065040874791c5665633c75383e247c20526567697374657273206120637573746f6d20617373657420747970652e00d4205468652070726f766964656420607479602077696c6c20626520626f756e6420746f20616e20494420696e2073746f726167652ec0205468652049442063616e207468656e206265207573656420696e20604173736574547970653a3a437573746f6d602e29012053686f756c6420746865206074796020616c726561647920657869737420696e2073746f726167652c206e6f207365636f6e642049442069732061737369676e656420746f2069742e0030202320417267756d656e747394202a20606f726967696e602077686f2063616c6c6564207468652065787472696e7369632ef4202a206074796020636f6e7461696e732074686520737472696e6720726570726573656e746174696f6e206f662074686520617373657420747970652e0158205472616e7366657214284964656e746974794964185469636b65722c506f7274666f6c696f49642c506f7274666f6c696f49641c42616c616e63650878204576656e7420666f72207472616e73666572206f6620746f6b656e732ee02063616c6c6572204449442c207469636b65722c2066726f6d20706f7274666f6c696f2c20746f20706f7274666f6c696f2c2076616c75651849737375656418284964656e746974794964185469636b6572284964656e7469747949641c42616c616e63654046756e64696e67526f756e644e616d651c42616c616e6365087420456d6974207768656e20746f6b656e7320676574206973737565642e79012063616c6c6572204449442c207469636b65722c2062656e6566696369617279204449442c2076616c75652c2066756e64696e6720726f756e642c20746f74616c2069737375656420696e20746869732066756e64696e6720726f756e642052656465656d656410284964656e746974794964185469636b6572284964656e7469747949641c42616c616e6365087c20456d6974207768656e20746f6b656e73206765742072656465656d65642e942063616c6c6572204449442c207469636b65722c202066726f6d204449442c2076616c75653041737365744372656174656418284964656e746974794964185469636b657210626f6f6c24417373657454797065284964656e74697479496410626f6f6c0884204576656e7420666f72206372656174696f6e206f66207468652061737365742e99012063616c6c6572204449442f206f776e6572204449442c207469636b65722c2064697669736962696c6974792c20617373657420747970652c2062656e6566696369617279204449442c2064697361626c6520696e766573746f7220756e697175656e657373484964656e74696669657273557064617465640c284964656e746974794964185469636b6572505665633c41737365744964656e7469666965723e08d8204576656e7420656d6974746564207768656e20616e7920746f6b656e206964656e746966696572732061726520757064617465642e11012063616c6c6572204449442c207469636b65722c206120766563746f72206f6620286964656e74696669657220747970652c206964656e7469666965722076616c7565294c44697669736962696c6974794368616e6765640c284964656e746974794964185469636b657210626f6f6c0888204576656e7420666f72206368616e676520696e2064697669736962696c6974792e842063616c6c6572204449442c207469636b65722c2064697669736962696c697479405472616e73666572576974684461746118284964656e746974794964185469636b6572284964656e746974794964284964656e7469747949641c42616c616e63651c5665633c75383e08390120416e206164646974696f6e616c206576656e7420746f205472616e736665723b20656d6974746564207768656e20607472616e736665725f776974685f64617461602069732063616c6c65642ecc2063616c6c657220444944202c207469636b65722c2066726f6d204449442c20746f204449442c2076616c75652c20646174612849734973737561626c6508185469636b657210626f6f6c08542069735f6973737561626c652829206f7574707574a0207469636b65722c2072657475726e2076616c7565202874727565206966206973737561626c6529405469636b6572526567697374657265640c284964656e746974794964185469636b6572384f7074696f6e3c4d6f6d656e743e088020456d6974207768656e207469636b657220697320726567697374657265642ef02063616c6c657220444944202f207469636b6572206f776e6572206469642c207469636b65722c207469636b6572206f776e65722c20657870697279445469636b65725472616e736665727265640c284964656e746974794964185469636b6572284964656e746974794964088420456d6974207768656e207469636b6572206973207472616e736665727265642ed42063616c6c657220444944202f207469636b6572207472616e7366657272656420746f204449442c207469636b65722c2066726f6d6441737365744f776e6572736869705472616e736665727265640c284964656e746974794964185469636b6572284964656e74697479496408a820456d6974207768656e20746f6b656e206f776e657273686970206973207472616e736665727265642ef82063616c6c657220444944202f20746f6b656e206f776e657273686970207472616e7366657272656420746f204449442c207469636b65722c2066726f6d2c417373657446726f7a656e08284964656e746974794964185469636b657208a820416e206576656e7420656d6974746564207768656e20616e2061737365742069732066726f7a656e2e7c20506172616d657465723a2063616c6c6572204449442c207469636b65722e344173736574556e66726f7a656e08284964656e746974794964185469636b657208b020416e206576656e7420656d6974746564207768656e20616e20617373657420697320756e66726f7a656e2e7c20506172616d657465723a2063616c6c6572204449442c207469636b65722e30417373657452656e616d65640c284964656e746974794964185469636b65722441737365744e616d6508a820416e206576656e7420656d6974746564207768656e206120746f6b656e2069732072656e616d65642ec020506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720746f6b656e206e616d652e3c46756e64696e67526f756e645365740c284964656e746974794964185469636b65724046756e64696e67526f756e644e616d6508150120416e206576656e74206361727279696e6720746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e64206f662061207469636b65722ed020506172616d65746572733a2063616c6c6572204449442c207469636b65722c2066756e64696e6720726f756e64206e616d652e34446f63756d656e74416464656410284964656e746974794964185469636b657228446f63756d656e74496420446f63756d656e7404902041206e657720646f63756d656e7420617474616368656420746f20616e2061737365743c446f63756d656e7452656d6f7665640c284964656e746974794964185469636b657228446f63756d656e7449640484204120646f63756d656e742072656d6f7665642066726f6d20616e20617373657440457874656e73696f6e52656d6f7665640c284964656e746974794964185469636b6572244163636f756e7449640864204120657874656e73696f6e20676f742072656d6f7665642e782063616c6c6572204449442c207469636b65722c204163636f756e74496450436c61737369635469636b6572436c61696d65640c284964656e746974794964185469636b65723c457468657265756d41646472657373043901204120506f6c796d61746820436c617373696320746f6b656e2077617320636c61696d656420616e64207472616e7366657272656420746f2061206e6f6e2d73797374656d61746963204449442e48436f6e74726f6c6c65725472616e7366657210284964656e746974794964185469636b65722c506f7274666f6c696f49641c42616c616e636508b8204576656e7420666f72207768656e206120666f72636564207472616e736665722074616b657320706c6163652e19012063616c6c6572204449442f20636f6e74726f6c6c6572204449442c207469636b65722c20506f7274666f6c696f206f6620746f6b656e20686f6c6465722c2076616c75652e54437573746f6d4173736574547970654578697374730c284964656e74697479496444437573746f6d41737365745479706549641c5665633c75383e08b4204120637573746f6d206173736574207479706520616c726561647920657869737473206f6e2d636861696e2e35012063616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e64437573746f6d417373657454797065526567697374657265640c284964656e74697479496444437573746f6d41737365745479706549641c5665633c75383e08b4204120637573746f6d2061737365742074797065207761732072656769737465726564206f6e2d636861696e2e35012063616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e0c784d61784e756d6265724f66544d457874656e73696f6e466f7241737365740c7533321005000000004841737365744e616d654d61784c656e6774680c7533321080000000006446756e64696e67526f756e644e616d654d61784c656e6774680c7533321080000000007c30556e617574686f72697a65640470205468652075736572206973206e6f7420617574686f72697a65642e3c416c726561647941726368697665640484205768656e20657874656e73696f6e20616c72656164792061726368697665642e44416c7265616479556e41726368697665640490205768656e20657874656e73696f6e20616c726561647920756e2d61726368697665642e5c457874656e73696f6e416c726561647950726573656e740484205768656e20657874656e73696f6e20697320616c72656164792061646465642e4c4173736574416c72656164794372656174656404902054686520746f6b656e2068617320616c7265616479206265656e20637265617465642e345469636b6572546f6f4c6f6e67049420546865207469636b6572206c656e677468206973206f76657220746865206c696d69742e385469636b65724e6f74417363696904a020546865207469636b657220686173206e6f6e2d61736369692d656e636f6465642070617274732e5c5469636b6572416c72656164795265676973746572656404c820546865207469636b657220697320616c7265616479207265676973746572656420746f20736f6d656f6e6520656c73652e54546f74616c537570706c7941626f76654c696d697404942054686520746f74616c20737570706c792069732061626f766520746865206c696d69742e2c4e6f537563684173736574043c204e6f207375636820746f6b656e2e34416c726561647946726f7a656e04742054686520746f6b656e20697320616c72656164792066726f7a656e2e284e6f74416e4f776e6572049c204e6f7420616e206f776e6572206f662074686520746f6b656e206f6e20457468657265756d2e3c42616c616e63654f766572666c6f7704ac20416e206f766572666c6f77207768696c652063616c63756c6174696e67207468652062616c616e63652e4c546f74616c537570706c794f766572666c6f7704c020416e206f766572666c6f77207768696c652063616c63756c6174696e672074686520746f74616c20737570706c792e48496e76616c69644772616e756c6172697479046020416e20696e76616c6964206772616e756c61726974792e244e6f7446726f7a656e046820546865206173736574206d7573742062652066726f7a656e2e3c496e76616c69645472616e736665720488205472616e736665722076616c69646174696f6e20636865636b206661696c65642e4c496e73756666696369656e7442616c616e63650498205468652073656e6465722062616c616e6365206973206e6f742073756666696369656e742e544173736574416c7265616479446976697369626c6504802054686520746f6b656e20697320616c726561647920646976697369626c652e784d6178696d756d544d457874656e73696f6e4c696d697452656163686564049d01204e756d626572206f66205472616e73666572204d616e6167657220657874656e73696f6e7320617474616368656420746f20616e20617373657420697320657175616c20746f204d61784e756d6265724f66544d457874656e73696f6e466f7241737365742e70496e636f6d70617469626c65457874656e73696f6e56657273696f6e04e020476976656e20736d61727420657874656e73696f6e206973206e6f7420636f6d70617469626c652077697468207468652061737365742e60496e76616c6964457468657265756d5369676e6174757265049820416e20696e76616c696420457468657265756d206045636473615369676e6174757265602e4c4e6f53756368436c61737369635469636b6572049c2054686520676976656e207469636b6572206973206e6f74206120636c6173736963206f6e652e645469636b6572526567697374726174696f6e45787069726564049020526567697374726174696f6e206f66207469636b65722068617320657870697265642e5053656e64657253616d65417352656365697665720488205472616e736665727320746f2073656c6620617265206e6f7420616c6c6f776564244e6f53756368446f63048c2054686520676976656e20446f63756d656e7420646f6573206e6f742065786973742e704d61784c656e6774684f6641737365744e616d65457863656564656404c0204d6178696d756d206c656e677468206f66206173736574206e616d6520686173206265656e2065786365656465642e8446756e64696e67526f756e644e616d654d61784c656e677468457863656564656404f0204d6178696d756d206c656e677468206f66207468652066756e64696e6720726f756e64206e616d6520686173206265656e2065786365656465642e58496e76616c696441737365744964656e746966696572049020536f6d65206041737365744964656e746966696572602077617320696e76616c69642e84496e766573746f72556e697175656e657373436c61696d4e6f74416c6c6f77656404ec20496e766573746f7220556e697175656e65737320636c61696d7320617265206e6f7420616c6c6f77656420666f7220746869732061737365742e60496e76616c6964437573746f6d4173736574547970654964047420496e76616c69642060437573746f6d4173736574547970654964602e1a4c4361706974616c446973747269627574696f6e014c4361706974616c446973747269627574696f6e0c34446973747269627574696f6e73000102104341496430446973747269627574696f6e0004000c350120416c6c206361706974616c20646973747269627574696f6e732c207469656420746f207468656972207265737065637469766520636f72706f7261746520616374696f6e732028434173292e005c20284341496429203d3e20446973747269627574696f6e28486f6c646572506169640101024828434149642c204964656e7469747949642910626f6f6c0004000c8c2048617320616e20617373657420686f6c646572206265656e2070616964207965743f00a42028434149642c2044494429202d3e2057617320444944207061696420696e2074686520434149643f3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e011428646973747269627574651c1463615f6964104341496424706f7274666f6c696f5c4f7074696f6e3c506f7274666f6c696f4e756d6265723e2063757272656e6379185469636b6572247065725f73686172651c42616c616e636518616d6f756e741c42616c616e6365287061796d656e745f6174184d6f6d656e7428657870697265735f6174384f7074696f6e3c4d6f6d656e743ea8290120537461727420616e64206174746163682061206361706974616c20646973747269627574696f6e2c20746f20746865204341206964656e746966696564206279206063615f6964602c690120776974682060616d6f756e74602066756e647320696e206063757272656e6379602077697468647261776e2066726f6d2060706f7274666f6c696f602062656c6f6e67696e6720746f20606f726967696e602773204449442e002d012054686520646973747269627574696f6e2077696c6c20636f6d6d656e636520617420607061796d656e745f61746020616e64206578706972652061742060657870697265735f6174602ccc2069662070726f76696465642c206f7220696620604e6f6e65602c207468656e2074686572652773206e6f206578706972792e002901205468652066756e64732077696c6c206265206c6f636b656420696e2060706f7274666f6c696f602066726f6d207768656e206064697374726962757465602069732063616c6c65642e3901205768656e2074686572652773206e6f206578706972792c20736f6d652066756e6473206d6179206265206c6f636b656420696e646566696e6974656c7920696e2060706f7274666f6c696f602c19012064756520746f20636c61696d616e7473206e6f74207769746864726177696e67206f72206e6f2062656e6566697473206265696e672070757368656420746f207468656d2e2d0120466f7220696e646976697369626c652063757272656e636965732c20756e6c6f636b656420616d6f756e74732c206f66206c657373207468616e206f6e652077686f6c6520756e69742cac2077696c6c206e6f74206265207472616e7366657261626c652066726f6d2060706f7274666f6c696f602e510120486f77657665722c20696620776520696d6167696e6520746861742075736572732060416c6963656020616e642060426f626020626f74682061726520656e7469746c656420746f20312e3520756e6974732c550120616e64206f6e6c7920726563656976652060316020756e69747320656163682c207468656e2060302e35202b20302e35203d20316020756e69747320617265206c65667420696e2060706f7274666f6c696f602c70207768696368206973206e6f77207472616e736665727261626c652e003420232320417267756d656e74734901202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e0501202d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e5d01202d2060706f7274666f6c696f60207370656369666965732074686520706f7274666f6c696f206e756d626572206f6620746865206167656e7420746f20646973747269627574652060616d6f756e74602066726f6d2ef8202d206063757272656e63796020746f20776974686472617720616e6420646973747269627574652066726f6d207468652060706f7274666f6c696f602efc202d20607065725f73686172656020616d6f756e74206f66206063757272656e63796020746f20776974686472617720616e6420646973747269627574652e2901202020205370656369666965642061732061207065722d6d696c6c696f6e2c20692e652e206031202f2031305e36607468206f66206f6e65206063757272656e63796020746f6b656e2ef4202d2060616d6f756e7460206f66206063757272656e63796020746f20776974686472617720616e642064697374726962757465206174206d6f73742e1d01202d20607061796d656e745f61746020737065636966696573207768656e2062656e6566697473206d617920666972737420626520707573686564206f7220636c61696d65642e2d01202d2060657870697265735f617460207370656369666965732c2069662070726f76696465642c207768656e2072656d61696e696e672062656e65666974732061726520666f72666569749420202020616e64206d6179206265207265636c61696d656420627920606f726967696e602e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed4202d2060446973747269627574696e67417373657460206966206063615f69642e7469636b6572203d3d2063757272656e6379602e0101202d20604578706972794265666f72655061796d656e74602069662060657870697265735f61742e756e777261702829203c3d207061796d656e745f6174602ee8202d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412eac202d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652eec202d20605265636f72644461746541667465725374617274602069662043412773207265636f72642064617465203e207061796d656e745f61742e3501202d2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f662060706f7274666f6c696f602e5901202d2060496e73756666696369656e74506f7274666f6c696f42616c616e6365602069662060706f7274666f6c696f6020686173206c657373207468616e2060616d6f756e7460206f66206063757272656e6379602e0501202d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e4901202d206043414e6f7442656e656669746020696620746865204341206973206e6f74206f66206b696e64205072656469637461626c6542656e656669742f556e7072656469637461626c6542656e6566697400382023205065726d697373696f6e7320202a20417373657430202a20506f7274666f6c696f14636c61696d041463615f696410434149645c050120436c61696d20612062656e65666974206f6620746865206361706974616c20646973747269627574696f6e20617474616368656420746f206063615f6964602e00ac20546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5d0120506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e00150120416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e3d01204d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c9c20746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e003420232320417267756d656e74734901202d20606f726967696e60207768696368206d757374206265206120686f6c646572206f662074686520617373657420616e6420656c696769626c6520666f722074686520646973747269627574696f6e2e0501202d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e00242023204572726f72732901202d2060486f6c646572416c7265616479506169646020696620606f726967696e602773204449442068617320616c7265616479207265636569766564206974732062656e656669742e1d01202d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec8202d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee8202d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee8202d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef8202d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e3901202d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e3901202d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e2501202d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e30707573685f62656e65666974081463615f6964104341496418686f6c646572284964656e74697479496460fc20507573682062656e65666974206f6620616e206f6e676f696e6720646973747269627574696f6e20746f2074686520676976656e2060686f6c646572602e00ac20546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5d0120506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e00150120416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e3d01204d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c9c20746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e003420232320417267756d656e74734901202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e3d01202d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e7320746f20707573682062656e656669747320666f722e80202d2060686f6c6465726020746f20707573682062656e656669747320746f2e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e1d01202d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec8202d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee8202d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee8202d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ee0202d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f74207461726765742060686f6c646572602e3901202d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e3901202d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e2501202d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e1c7265636c61696d041463615f696410434149642c9420417373756d696e67206120646973747269627574696f6e2068617320657870697265642ce820756e6c6f636b207468652072656d61696e696e6720616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e003420232320417267756d656e74734901202d20606f726967696e60207768696368206d757374206265207468652063726561746f72206f6620746865206361706974616c20646973747269627574696f6e207469656420746f206063615f6964602e2101202d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e20746f207265636c61696d20666f722e00242023204572726f72731d01202d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602e3101202d2060416c72656164795265636c61696d65646020696620746869732066756e6374696f6e2068617320616c7265616479206265656e2063616c6c6564207375636365737366756c6c792e88202d20604e6f74457870697265646020696620606e6f77203c20657870697279602e4c72656d6f76655f646973747269627574696f6e041463615f696410434149642cc02052656d6f766573206120646973747269627574696f6e2074686174206861736e27742073746172746564207965742ce020756e6c6f636b696e67207468652066756c6c20616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e003420232320417267756d656e74734901202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e4d01202d206063615f696460206964656e7469666965732074686520434120776974682061206e6f742d7965742d73746172746564206361706974616c20646973747269627574696f6e20746f2072656d6f76652e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e1d01202d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec0202d2060446973747269627574696f6e537461727465646020696620607061796d656e745f6174203c3d206e6f77602e01101c437265617465640c204576656e74446964104341496430446973747269627574696f6e10bc2041206361706974616c20646973747269627574696f6e2c20776974682064657461696c7320696e636c756465642c3501207761732063726561746564206279207468652044494420287065726d697373696f6e6564206167656e742920666f7220746865204341206964656e746966696564206279206043414964602e00ac20284167656e74204449442c20434127732049442c20646973747269627574696f6e2064657461696c73293842656e65666974436c61696d656418204576656e74446964204576656e74446964104341496430446973747269627574696f6e1c42616c616e63650c5461780c5501204120746f6b656e20686f6c64657227732062656e65666974206f662061206361706974616c20646973747269627574696f6e20666f722074686520676976656e206043414964602077617320636c61696d65642e009501202843616c6c6572204449442c20486f6c6465722f436c61696d616e74204449442c20434127732049442c207570646174656420646973747269627574696f6e2064657461696c732c2044494427732062656e656669742c20444944277320746178202529245265636c61696d65640c204576656e7444696410434149641c42616c616e63650c9c2053746174732066726f6d2060707573685f62656e65666974602077617320656d69747465642e00190120284167656e74204449442c20434127732049442c206d61782072657175657374656420444944732c2070726f63657373656420444944732c206661696c65642044494473291c52656d6f76656408204576656e7444696410434149640c902041206361706974616c20646973747269627574696f6e207761732072656d6f7665642e005420284167656e74204449442c20434127732049442900383043414e6f7442656e6566697404d82041206361706974616c20646973747269627574696f6e20776173206d61646520666f722061206e6f6e2d62656e656669742043412e34416c726561647945786973747304ac204120646973747269627574696f6e20616c72656164792065786973747320666f7220746869732043412e4c4578706972794265666f72655061796d656e74082d01204120646973747269627574696f6e732070726f766964656420657870697279206461746520776173207374726963746c79206265666f726520697473207061796d656e7420646174652e250120496e206f7468657220776f7264732c2065766572797468696e6720746f206469737472696275746520776f756c6420696d6d6564696174656c7920626520666f726665697465642e44446973747269627574696e67417373657408f42043757272656e63792074686174206973206469737472696275746564206973207468652073616d65206173207468652043412773207469636b65722e6d012043616c6c696e67206167656e7420697320617474656d7074696e67206120666f726d206f662073746f636b2073706c69742c207768696368206973206e6f742077686174207468652065787472696e73696320697320666f722e44486f6c646572416c72656164795061696404d82054686520746f6b656e20686f6c6465722068617320616c7265616479206265656e20706169642074686569722062656e656669742e484e6f53756368446973747269627574696f6e04c82041206361706974616c20646973747269627574696f6e20646f65736e277420657869737420666f7220746869732043412e5843616e6e6f74436c61696d4265666f7265537461727404650120446973747269627574696f6e20616c6c6f746d656e742063616e6e6f7420626520636c61696d6564206173207468652063757272656e742074696d65206973206265666f72652073746172742d6f662d7061796d656e742e5843616e6e6f74436c61696d4166746572457870697279046d0120446973747269627574696f6e27732065787069727920686173207061737365642e204449442063616e6e6f7420636c61696d20616e796d6f726520616e642068617320666f72666569746564207468652062656e65666974732e8042616c616e6365506572536861726550726f647563744f766572666c6f776564042d01204d756c7469706c69636174696f6e206f66207468652062616c616e636520776974682074686520706572207368617265207061796f757420616d6f756e74206f766572666c6f7765642e584e6f74446973747269627574696f6e43726561746f7204c420444944206973206e6f7420746865206f6e652077686f20637265617465642074686520646973747269627574696f6e2e40416c72656164795265636c61696d656404d8204449442077686f20637265617465642074686520646973747269627574696f6e20616c726561647920646964207265636c61696d2e284e6f744578706972656404f420446973747269627574696f6e20686164206e6f742065787069726564207965742c206f722074686572652773206e6f2065787069727920646174652e4c446973747269627574696f6e53746172746564040501204120646973747269627574696f6e20686173206265656e206163746976617465642c20617320607061796d656e745f6174203c3d206e6f776020686f6c64732e6c496e73756666696369656e7452656d61696e696e67416d6f756e74043101204120646973747269627574696f6e2068617320696e73756666696369656e742072656d61696e696e6720616d6f756e74206f662063757272656e637920746f20646973747269627574652e1b28436865636b706f696e740128436865636b706f696e742c2c546f74616c537570706c79010202185469636b657230436865636b706f696e74496470706f6c796d6573685f7072696d6974697665733a3a42616c616e63650540000000000000000000000000000000000cb420546f74616c20737570706c79206f662074686520746f6b656e2061742074686520636865636b706f696e742e00ec20287469636b65722c20636865636b706f696e74496429202d3e20746f74616c20737570706c7920617420676976656e20636865636b706f696e741c42616c616e636501020258285469636b65722c20436865636b706f696e74496429284964656e74697479496470706f6c796d6573685f7072696d6974697665733a3a42616c616e63650540000000000000000000000000000000000c882042616c616e6365206f66206120444944206174206120636865636b706f696e742e00050120287469636b65722c206469642c20636865636b706f696e7420494429202d3e2042616c616e6365206f66206120444944206174206120636865636b706f696e7450436865636b706f696e74496453657175656e6365010102185469636b657230436865636b706f696e74496400200000000000000000108c20436865636b706f696e74732049442067656e657261746f722073657175656e63652ea8204944206f6620666972737420636865636b706f696e74206973203120696e7374656164206f6620302e007c20287469636b657229202d3e206e6f2e206f6620636865636b706f696e74733842616c616e636555706461746573010202185469636b6572284964656e746974794964445665633c436865636b706f696e7449643e05040008bc20436865636b706f696e747320776865726520612044494427732062616c616e63652077617320757064617465642ef020287469636b65722c2064696429202d3e205b636865636b706f696e7420494420776865726520757365722062616c616e6365206368616e6765645d2854696d657374616d7073010202185469636b657230436865636b706f696e744964184d6f6d656e7405200000000000000000185c20436865636b706f696e742074696d657374616d70732e000901204576657279207363686564756c652d6f726967696e6174656420636865636b706f696e74206d6170732069747320494420746f20697473206475652074696d652e210120457665727920636865636b706f696e74206d616e75616c6c792063726561746564206d6170732069747320494420746f207468652074696d65206f66207265636f7264696e672e00d020287469636b657229202d3e2028636865636b706f696e7420494429202d3e20636865636b706f696e742074696d657374616d70585363686564756c65734d6178436f6d706c657869747901000c75363420000000000000000008190120546865206d6178696d756d20636f6d706c657869747920616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365749c2028692e652e20605363686564756c6573602073746f72616765206974656d2062656c6f77292e485363686564756c65496453657175656e6365010102185469636b6572285363686564756c654964002000000000000000000cb420436865636b706f696e74207363686564756c652049442073657175656e636520666f72207469636b6572732e006020287469636b657229202d3e207363686564756c65204944245363686564756c6573010102185469636b65724c5665633c53746f7265645363686564756c653e0004000c8820436865636b706f696e74207363686564756c657320666f72207469636b6572732e005c20287469636b657229202d3e205b7363686564756c655d405363686564756c65526566436f756e74010202185469636b6572285363686564756c6549640c75333205100000000020010120486f77206d616e7920227374726f6e6722207265666572656e6365732061726520746865726520746f206120676976656e20605363686564756c654964603f00fc205468652070726573656e6365206f66206120227374726f6e6722207265666572656e63652c20696e207468652073656e7365206f66206052633c543e602ce020656e7461696c73207468617420746865207265666572656e636564207363686564756c652063616e6e6f742062652072656d6f7665642ed820546875732c206173206c6f6e6720617320607374726f6e675f7265665f636f756e74287363686564756c655f696429203e2030602cac206072656d6f76655f7363686564756c65287363686564756c655f696429602077696c6c206572726f722e00a820287469636b65722c207363686564756c6520494429202d3e207374726f6e672072656620636f756e74385363686564756c65506f696e7473010202185469636b6572285363686564756c654964445665633c436865636b706f696e7449643e0504000cc420416c6c2074686520636865636b706f696e7473206120676976656e207363686564756c65206f726967696e617465642e00a420287469636b65722c207363686564756c6520494429202d3e205b636865636b706f696e742049445d3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0110446372656174655f636865636b706f696e7404187469636b6572185469636b657224c4204372656174657320612073696e676c6520636865636b706f696e74206174207468652063757272656e742074696d652e0030202320417267756d656e74733101202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602ea4202d20607469636b65726020746f206372656174652074686520636865636b706f696e7420666f722e00242023204572726f72735901202d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e1101202d2060436f756e7465724f766572666c6f77602069662074686520746f74616c20636865636b706f696e7420636f756e74657220776f756c64206f766572666c6f772e707365745f7363686564756c65735f6d61785f636f6d706c657869747904386d61785f636f6d706c65786974790c753634245d01205365747320746865206d617820636f6d706c6578697479206f662061207363686564756c652073657420666f7220616e20617262697472617279207469636b657220746f20606d61785f636f6d706c6578697479602ebc20546865206e6577206d6178696d756d206973206e6f7420656e666f7263656420726574726f6163746976656c792cb820616e64206f6e6c79206170706c696573206f6e6365206e6577207363686564756c657320617265206d6164652e00ac204d7573742062652063616c6c6564206173206120504950202872657175697265732022726f6f7422292e0030202320417267756d656e74737c202d20606f726967696e602069732074686520726f6f74206f726967696e2e0d01202d20606d61785f636f6d706c65786974796020616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365742e3c6372656174655f7363686564756c6508187469636b6572185469636b6572207363686564756c65305363686564756c65537065634ca820437265617465732061207363686564756c652067656e65726174696e6720636865636b706f696e7473d820696e20746865206675747572652061742065697468657220612066697865642074696d65206f7220617420696e74657276616c732e000d0120546865207363686564756c6520737461727473206f7574207769746820607374726f6e675f7265665f636f756e74287363686564756c655f696429203c2d2030602e0030202320417267756d656e74732501202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e9c202d20607469636b65726020746f2063726561746520746865207363686564756c6520666f722eb4202d20607363686564756c656020746861742077696c6c2067656e657261746520636865636b706f696e74732e00242023204572726f72735901202d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e1101202d20605363686564756c654475726174696f6e546f6f53686f72746020696620746865207363686564756c65206475726174696f6e20697320746f6f2073686f72742e2501202d2060496e73756666696369656e744163636f756e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c64206e6f7420626520636861726765642e5101202d2060436f756e7465724f766572666c6f776020696620746865207363686564756c65204944206f7220746f74616c20636865636b706f696e7420636f756e7465727320776f756c64206f766572666c6f772e6101202d20604661696c6564546f436f6d707574654e657874436865636b706f696e746020696620746865206e65787420636865636b706f696e7420666f7220607363686564756c656020697320696e2074686520706173742e00382023205065726d697373696f6e7320202a2041737365743c72656d6f76655f7363686564756c6508187469636b6572185469636b6572086964285363686564756c6549643801012052656d6f7665732074686520636865636b706f696e74207363686564756c65206f6620616e206173736574206964656e74696669656420627920606964602e0030202320417267756d656e74732501202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602ea0202d20607469636b65726020746f2072656d6f766520746865207363686564756c652066726f6d2e0d01202d2060696460206f6620746865207363686564756c652c207768656e2069742077617320637265617465642062792060637265617465645f7363686564756c65602e00242023204572726f72735901202d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e4501202d20604e6f436865636b706f696e745363686564756c6560206966206069646020646f6573206e6f74206964656e746966792061207363686564756c6520666f72207468697320607469636b6572602ef8202d20605363686564756c654e6f7452656d6f7661626c656020696620606964602065786973747320627574206973206e6f742072656d6f7661626c652e00382023205065726d697373696f6e7320202a204173736574011044436865636b706f696e744372656174656414404f7074696f6e3c4576656e744469643e185469636b657230436865636b706f696e7449641c42616c616e6365184d6f6d656e740c68204120636865636b706f696e742077617320637265617465642e002101202863616c6c6572204449442c207469636b65722c20636865636b706f696e742049442c20746f74616c20737570706c792c20636865636b706f696e742074696d657374616d7029844d6178696d756d5363686564756c6573436f6d706c65786974794368616e67656408284964656e7469747949640c7536340c2d0120546865206d6178696d756d20636f6d706c657869747920666f7220616e20617262697472617279207469636b65722773207363686564756c652073657420776173206368616e6765642e006820284743204449442c20746865206e6577206d6178696d756d293c5363686564756c65437265617465640c204576656e74446964185469636b65723853746f7265645363686564756c650c8c204120636865636b706f696e74207363686564756c652077617320637265617465642e007c202863616c6c6572204449442c207469636b65722c207363686564756c65293c5363686564756c6552656d6f7665640c284964656e746974794964185469636b65723853746f7265645363686564756c650c8c204120636865636b706f696e74207363686564756c65207761732072656d6f7665642e007c202863616c6c6572204449442c207469636b65722c207363686564756c65290014384e6f537563685363686564756c6504d0204120636865636b706f696e74207363686564756c6520646f6573206e6f7420657869737420666f72207468652061737365742e505363686564756c654e6f7452656d6f7661626c65042101204120636865636b706f696e74207363686564756c65206973206e6f742072656d6f7661626c6520617320607265665f636f756e74287363686564756c655f696429203e2030602e744661696c6564546f436f6d707574654e657874436865636b706f696e74089c204661696c656420746f20636f6d7075746520746865206e65787420636865636b706f696e742ed420546865207363686564756c6520646f6573206e6f74206861766520616e79207570636f6d696e6720636865636b706f696e74732e605363686564756c654475726174696f6e546f6f53686f727404c020546865206475726174696f6e206f662061207363686564756c6520706572696f6420697320746f6f2073686f72742e4c5363686564756c6573546f6f436f6d706c657808d42054686520736574206f66207363686564756c65732074616b656e20746f6765746865722061726520746f6f20636f6d706c65782efc20466f72206578616d706c652c20746865792061726520746f6f206d616e792c206f722074686579206f636375727320746f6f206672657175656e746c792e1c44436f6d706c69616e63654d616e616765720144436f6d706c69616e63654d616e616765720c404173736574436f6d706c69616e636573010102185469636b65723c4173736574436f6d706c69616e63650008000004e820417373657420636f6d706c69616e636520666f722061207469636b657220285469636b6572202d3e204173736574436f6d706c69616e6365294854727573746564436c61696d497373756572010102185469636b6572485665633c547275737465644973737565723e00040004dc204c697374206f66207472757374656420636c61696d20697373756572205469636b6572202d3e20497373756572204964656e746974793853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0124686164645f636f6d706c69616e63655f726571756972656d656e740c187469636b6572185469636b65724473656e6465725f636f6e646974696f6e73385665633c436f6e646974696f6e3e4c72656365697665725f636f6e646974696f6e73385665633c436f6e646974696f6e3e2c09012041646473206120636f6d706c69616e636520726571756972656d656e7420746f20616e206173736574277320636f6d706c69616e6365206279207469636b65722efc2049662074686520636f6d706c69616e636520726571756972656d656e742069732061206475706c69636174652c20697420646f6573206e6f7468696e672e0030202320417267756d656e74733101202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65727c202a207469636b6572202d2053796d626f6c206f6620746865206173736574c8202a2073656e6465725f636f6e646974696f6e73202d2053656e646572207472616e7366657220636f6e646974696f6e732ed8202a2072656365697665725f636f6e646974696f6e73202d205265636569766572207472616e7366657220636f6e646974696f6e732e00382023205065726d697373696f6e7320202a2041737365747472656d6f76655f636f6d706c69616e63655f726571756972656d656e7408187469636b6572185469636b65720869640c75333224f42052656d6f766573206120636f6d706c69616e636520726571756972656d656e742066726f6d20616e206173736574277320636f6d706c69616e63652e0030202320417267756d656e74733101202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65727c202a207469636b6572202d2053796d626f6c206f6620746865206173736574f4202a206964202d20436f6d706c69616e636520726571756972656d656e74206964207768696368206973206e65656420746f2062652072656d6f76656400382023205065726d697373696f6e7320202a204173736574607265706c6163655f61737365745f636f6d706c69616e636508187469636b6572185469636b65724061737365745f636f6d706c69616e6365685665633c436f6d706c69616e6365526571756972656d656e743e3c0101205265706c6163657320616e206173736574277320636f6d706c69616e6365206279207469636b657220776974682061206e657720636f6d706c69616e63652e00010120436f6d706c69616e636520726571756972656d656e74732077696c6c20626520736f727465642028617363656e64696e6720627920696429206265666f726590207265706c6163696e67207468652063757272656e7420726571756972656d656e74732e0030202320417267756d656e74737c202a20607469636b657260202d20746865206173736574207469636b65722cc0202a206061737365745f636f6d706c69616e6365202d20746865206e657720617373657420636f6d706c69616e63652e00242023204572726f7273f4202a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722eb501202a20604475706c69636174654173736574436f6d706c69616e636560206966206061737365745f636f6d706c69616e63656020636f6e7461696e73206d756c7469706c6520656e74726965732077697468207468652073616d652060726571756972656d656e745f6964602e00382023205065726d697373696f6e7320202a2041737365745872657365745f61737365745f636f6d706c69616e636504187469636b6572185469636b657220782052656d6f76657320616e206173736574277320636f6d706c69616e63650030202320417267756d656e74733101202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65727c202a207469636b6572202d2053796d626f6c206f662074686520617373657400382023205065726d697373696f6e7320202a2041737365745870617573655f61737365745f636f6d706c69616e636504187469636b6572185469636b6572201501205061757365732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e0030202320417267756d656e74733101202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65727c202a207469636b6572202d2053796d626f6c206f662074686520617373657400382023205065726d697373696f6e7320202a2041737365745c726573756d655f61737365745f636f6d706c69616e636504187469636b6572185469636b657220190120526573756d65732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e0030202320417267756d656e74733101202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65727c202a207469636b6572202d2053796d626f6c206f662074686520617373657400382023205065726d697373696f6e7320202a204173736574806164645f64656661756c745f747275737465645f636c61696d5f69737375657208187469636b6572185469636b657218697373756572345472757374656449737375657224fc204164647320616e6f746865722064656661756c74207472757374656420636c61696d2069737375657220617420746865207469636b6572206c6576656c2e0030202320417267756d656e74733501202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e80202a207469636b6572202d2053796d626f6c206f66207468652061737365742ecc202a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e00382023205065726d697373696f6e7320202a2041737365748c72656d6f76655f64656661756c745f747275737465645f636c61696d5f69737375657208187469636b6572185469636b657218697373756572284964656e7469747949642479012052656d6f7665732074686520676976656e2060697373756572602066726f6d2074686520736574206f662064656661756c74207472757374656420636c61696d206973737565727320617420746865207469636b6572206c6576656c2e0030202320417267756d656e74733501202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e80202a207469636b6572202d2053796d626f6c206f66207468652061737365742ecc202a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e00382023205065726d697373696f6e7320202a204173736574746368616e67655f636f6d706c69616e63655f726571756972656d656e7408187469636b6572185469636b65721c6e65775f72657154436f6d706c69616e6365526571756972656d656e7424f4204d6f6469667920616e206578697374696e6720636f6d706c69616e636520726571756972656d656e74206f66206120676976656e207469636b65722e0030202320417267756d656e74733501202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e80202a207469636b6572202d2053796d626f6c206f66207468652061737365742e90202a206e65775f726571202d20436f6d706c69616e636520726571756972656d656e742e00382023205065726d697373696f6e7320202a204173736574012470436f6d706c69616e6365526571756972656d656e74437265617465640c284964656e746974794964185469636b657254436f6d706c69616e6365526571756972656d656e7408d020456d6974746564207768656e206e657720636f6d706c69616e636520726571756972656d656e7420697320637265617465642eb4202863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e70436f6d706c69616e6365526571756972656d656e7452656d6f7665640c284964656e746974794964185469636b65720c75333208c820456d6974746564207768656e206120636f6d706c69616e636520726571756972656d656e742069732072656d6f7665642e98202863616c6c6572204449442c205469636b65722c20726571756972656d656e745f6964292e5c4173736574436f6d706c69616e63655265706c616365640c284964656e746974794964185469636b6572685665633c436f6d706c69616e6365526571756972656d656e743e08b820456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206973207265706c616365642ed820506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720617373657420636f6d706c69616e63652e504173736574436f6d706c69616e6365526573657408284964656e746974794964185469636b657208dc20456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206f662061207469636b65722069732072657365742e58202863616c6c6572204449442c205469636b6572292e584173736574436f6d706c69616e6365526573756d656408284964656e746974794964185469636b657208050120456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b6572206765747320726573756d652e58202863616c6c6572204449442c205469636b6572292e544173736574436f6d706c69616e636550617573656408284964656e746974794964185469636b657208050120456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b65722067657473207061757365642e58202863616c6c6572204449442c205469636b6572292e70436f6d706c69616e6365526571756972656d656e744368616e6765640c284964656e746974794964185469636b657254436f6d706c69616e6365526571756972656d656e7408e420456d6974746564207768656e20636f6d706c69616e636520726571756972656d656e7420676574206d6f6469666965642f6368616e67652eb4202863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e785472757374656444656661756c74436c61696d49737375657241646465640c284964656e746974794964185469636b6572345472757374656449737375657208190120456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b657220676574732061646465642eac202863616c6c6572204449442c205469636b65722c2041646465642054727573746564497373756572292e805472757374656444656661756c74436c61696d49737375657252656d6f7665640c284964656e746974794964185469636b6572284964656e746974794964081d0120456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b6572206765742072656d6f7665642eb4202863616c6c6572204449442c205469636b65722c2052656d6f7665642054727573746564497373756572292e04584d6178436f6e646974696f6e436f6d706c65786974790c7533321032000000001830556e617574686f72697a656404602055736572206973206e6f7420617574686f72697a65642e2c4469644e6f744578697374043820446964206e6f7420657869737478496e76616c6964436f6d706c69616e6365526571756972656d656e74496404a020436f6d706c69616e636520726571756972656d656e7420696420646f65736e277420657869737484496e636f72726563744f7065726174696f6e4f6e5472757374656449737375657204a0204973737565722065786973742062757420747279696e6720746f2061646420697420616761696e7c4475706c6963617465436f6d706c69616e6365526571756972656d656e747304b420546865726520617265206475706c696361746520636f6d706c69616e636520726571756972656d656e74732e7c436f6d706c69616e6365526571756972656d656e74546f6f436f6d706c65780415012054686520776f7273742063617365207363656e6172696f206f662074686520636f6d706c69616e636520726571756972656d656e7420697320746f6f20636f6d706c65781d3c436f72706f72617465416374696f6e013c436f72706f72617465416374696f6e24404d617844657461696c734c656e67746801000c75333210000000001c5d012044657465726d696e657320746865206d6178696d756d206e756d626572206f6620627974657320746861742074686520667265652d666f726d206064657461696c7360206f6620612043412063616e2073746f72652e002901204e6f746520746861742074686973206973206e6f7420746865206e756d626572206f662060636861726073206f7220746865206e756d626572206f66205b6772617068656d65735d2e4101205768696c652074686973206d617920626520756e6e61747572616c20696e207465726d73206f662068756d616e20756e6465727374616e64696e67206f66206120746578742773206c656e6774682c6501206974206d6f726520636c6f73656c79207265666c656374732061637475616c2073746f7261676520636f73747320286027612760206973206368656170657220746f2073746f7265207468616e20616e20656d6f6a69292e00d0205b6772617068656d65735d3a2068747470733a2f2f656e2e77696b6970656469612e6f72672f77696b692f4772617068656d655c44656661756c745461726765744964656e746974696573010102185469636b6572405461726765744964656e7469746965730008000110f020546865206964656e7469746965732074617267657465642062792064656661756c7420666f722043417320666f722074686973207469636b65722c8c2065697468657220746f206265206578636c75646564206f7220696e636c756465642e007820287469636b6572203d3e20746172676574206964656e746974696573295444656661756c7457697468686f6c64696e67546178010102185469636b65720c54617800100000000020ad01205468652064656661756c7420616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722074686973207469636b6572207768656e20646973747269627574696e67206469766964656e64732e00350120546f20756e6465727374616e642077697468686f6c64696e67207461782c20652e672e2c206c6574277320617373756d65207468617420796f7520686f6c642041434d45207368617265732ec42041434d45206e6f77206465636964657320746f2064697374726962757465203130302053454b20746f20416c6963652e590120416c696365206c6976657320696e2053776564656e2c20736f20536b617474657665726b6574202874686520537765646973682074617820617574686f72697479292077616e747320333025206f6620746861742e5d01205468656e2074686f736520313030202a2033302520617265207769746868656c642066726f6d20416c6963652c20616e642041434d452077696c6c2073656e64207468656d20746f20536b617474657665726b65742e006820287469636b6572203d3e202520746f2077697468686f6c64294444696457697468686f6c64696e67546178010102185469636b6572585665633c284964656e7469747949642c20546178293e0004001049012054686520616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722061206365727461696e207469636b65722078204449442e6d0120496620616e20656e7472792065786973747320666f722061206365727461696e204449442c206974206f7665727269646573207468652064656661756c7420696e206044656661756c7457697468686f6c64696e67546178602e008820287469636b6572203d3e205b286469642c202520746f2077697468686f6c64295d304341496453657175656e6365010102185469636b6572244c6f63616c4341496400100000000008b420546865206e657874207065722d605469636b65726020434120494420696e207468652073657175656e63652e4d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652e40436f72706f72617465416374696f6e73000202185469636b6572244c6f63616c434149643c436f72706f72617465416374696f6e050400146c20416c6c207265636f72646564204341732074687573206661722ea4204f6e6c792067656e6572696320696e666f726d6174696f6e2069732073746f72656420686572652e7d01205370656369666963206043414b696e6460732c20652e672e2c2062656e656669747320616e6420636f72706f726174652062616c6c6f74732c206d617920757365206164646974696f6e616c206f6e2d636861696e2073746f726167652e00b420287469636b6572203d3e206c6f63616c204944203d3e2074686520636f72706f7261746520616374696f6e29244341446f634c696e6b01010210434149643c5665633c446f63756d656e7449643e00040014d0204173736f63696174696f6e732066726f6d2043417320746f2060446f63756d656e74607320766961207468656972204944732e5c202843414964203d3e205b446f63756d656e7449645d29000501205468652060436f72706f72617465416374696f6e7360206d61702073746f72657320605469636b6572203d3e204c6f63616c4964203d3e20546865204341602c250120736f2077652063616e20696e66657220605469636b6572203d3e2043414964602e205468657265666f72652c20776520646f6e2774206e656564206120646f75626c65206d61702e1c44657461696c73010102104341496424434144657461696c7300040008e8204173736f6369617465732064657461696c7320696e20667265652d666f726d207465787420776974682061204341206279206974732049442e50202843414964203d3e20434144657461696c73293853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0120587365745f6d61785f64657461696c735f6c656e67746804186c656e6774680c75333208d42053657420746865206d617820606c656e67746860206f66206064657461696c736020696e207465726d73206f662062797465732e78204d6179206f6e6c792062652063616c6c6564207669612061205049502e4c7365745f64656661756c745f7461726765747308187469636b6572185469636b65721c74617267657473405461726765744964656e74697469657334d020536574207468652064656661756c7420434120605461726765744964656e7469746965736020746f206074617267657473602e003420232320417267756d656e74734901202d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ee8202d20607469636b65726020666f72207768696368207468652064656661756c74206964656e74697469657320617265206368616e67696e672ed0202d20607461726765747360207468652064656661756c7420746172676574206964656e74697469657320666f7220612043412e0028202323204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e3501202d2060546f6f4d616e79546172676574496473602069662060746172676574732e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e00382023205065726d697373696f6e7320202a2041737365746c7365745f64656661756c745f77697468686f6c64696e675f74617808187469636b6572185469636b65720c7461780c54617830410120536574207468652064656661756c742077697468686f6c64696e672074617820666f7220616c6c204449447320616e64204341732072656c6576616e7420746f207468697320607469636b6572602e003420232320417267756d656e74734901202d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ecc202d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2e0901202d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e0028202323204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e00382023205065726d697373696f6e7320202a2041737365745c7365745f6469645f77697468686f6c64696e675f7461780c187469636b6572185469636b65722474617865645f646964284964656e7469747949640c7461782c4f7074696f6e3c5461783e40f820536574207468652077697468686f6c64696e6720746178206f6620607469636b65726020666f72206074617865645f6469646020746f2060746178602e85012049662060536f6d652874617829602c2074686973206f7665727269646573207468652064656661756c742077697468686f6c64696e6720746178206f6620607469636b65726020746f20607461786020666f72206074617865645f646964602e0101204f74686572776973652c20696620604e6f6e65602c207468652064656661756c742077697468686f6c64696e67207461782077696c6c20626520757365642e003420232320417267756d656e74734901202d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ecc202d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2ee8202d206074617865645f6469646020746861742077696c6c2068617665206974732077697468686f6c64696e672074617820757064617465642e0901202d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e0028202323204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e8501202d2060546f6f4d616e794469645461786573602069662060536f6d6528746178296020616e6420616464696e6720746865206f7665727269646520776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e00382023205065726d697373696f6e7320202a20417373657464696e6974696174655f636f72706f726174655f616374696f6e20187469636b6572185469636b6572106b696e641843414b696e64246465636c5f64617465184d6f6d656e742c7265636f72645f64617465584f7074696f6e3c5265636f726444617465537065633e1c64657461696c7324434144657461696c731c74617267657473604f7074696f6e3c5461726765744964656e7469746965733e5c64656661756c745f77697468686f6c64696e675f7461782c4f7074696f6e3c5461783e3c77697468686f6c64696e675f746178784f7074696f6e3c5665633c284964656e7469747949642c20546178293e3e784d0120496e69746961746573206120434120666f7220607469636b657260206f6620606b696e64602077697468206064657461696c736020616e64206f746865722070726f766964656420617267756d656e74732e003420232320417267756d656e74734901202d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732e90202d20607469636b657260207468617420746865204341206973206d61646520666f722e80202d20606b696e6460206f66204341206265696e6720696e697469617465642e9c202d20606465636c5f6461746560206f66204341206272696e6720696e697469616c697a65642ef4202d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f6620746869732043412e65012020202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e5101202d206064657461696c7360206f662074686520434120696e20667265652d7465787420666f726d2c20757020746f2061206365727461696e206e756d626572206f6620627974657320696e206c656e6774682ef8202d206074617267657473602c20696620616e792c20776869636820746869732043412069732072656c6576616e742f697272656c6576616e7420746f2e4d01202020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f7461726765747360292e6101202d206064656661756c745f77697468686f6c64696e675f746178602c20696620616e792c206973207468652064656661756c742077697468686f6c64696e672074617820746f2075736520666f7220746869732043412e6d01202020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f77697468686f6c64696e675f74617860292e2501202d206077697468686f6c64696e675f746178602c20696620616e792c2070726f7669646573207065722d4449442077697468686f6c64696e6720746178206f76657272696465732e5d01202020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f6469645f77697468686f6c64696e675f74617860292e00242023204572726f72732101202d206044657461696c73546f6f4c6f6e6760206966206064657461696c732e6c656e28296020676f6573206265796f6e6420606d61785f64657461696c735f6c656e677468602e2901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e6d01202d2060436f756e7465724f766572666c6f776020696e2074686520756e6c696b656c79206576656e74207468617420736f206d616e79204341732077657265206372656174656420666f72207468697320607469636b6572602cfc2020207468617420696e7465676572206f766572666c6f7720776f756c642068617665206f63637572656420696620696e737465616420616c6c6f7765642e7901202d2060546f6f4d616e79446964546178657360206966206077697468686f6c64696e675f7461782e756e7772617028292e6c656e28296020776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e0501202d20604475706c69636174654469645461786020696620612044494420697320696e636c75646564206d6f7265207468616e206f6e636520696e20607774602e5901202d2060546f6f4d616e79546172676574496473602069662060746172676574732e756e7772617028292e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e0501202d20604465636c44617465496e4675747572656020696620746865206465636c61726174696f6e2064617465206973206e6f7420696e2074686520706173742e5501202d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e00382023205065726d697373696f6e7320202a2041737365742c6c696e6b5f63615f646f6308086964104341496410646f63733c5665633c446f63756d656e7449643e48b0204c696e6b2074686520676976656e204341206069646020746f2074686520676976656e2060646f6373602ef820416e792070726576696f7573206c696e6b7320666f7220746865204341206172652072656d6f76656420696e206661766f72206f662060646f6373602e0059012054686520776f726b666c6f77206865726520697320746f206164642074686520646f63756d656e747320616e6420696e6974696174696e672074686520434120696e20616e79206f7264657220646573697265642ec8204f6e636520626f74682065786973742c20746865792063616e206e6f77206265206c696e6b656420746f6765746865722e003420232320417267756d656e74735501202d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206069642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732eac202d2060696460206f662074686520434120746f206173736f636961746520776974682060646f6373602eb4202d2060646f63736020746f206173736f6369617465207769746820746865204341207769746820606964602e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc202d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e1d01202d20604e6f53756368446f636020696620616e79206f662060646f63736020646f6573206e6f74206964656e7469667920616e206578697374696e6720646f63756d656e742e00382023205065726d697373696f6e7320202a2041737365742472656d6f76655f6361041463615f6964104341496448982052656d6f76657320746865204341206964656e746966696564206279206063615f6964602e00c8204173736f63696174656420646174612c207375636820617320646f63756d656e74206c696e6b732c2062616c6c6f74732cb020616e64206361706974616c20646973747269627574696f6e732061726520616c736f2072656d6f7665642e00d820416e79207363686564756c65206173736f636961746564207769746820746865207265636f726420646174652077696c6c20736565b420607374726f6e675f7265665f636f756e74287363686564756c655f696429602064656372656d656e7465642e003420232320417267756d656e74736101202d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e7c202d206063615f696460206f662074686520434120746f2072656d6f76652e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc202d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e00382023205065726d697373696f6e7320202a204173736574486368616e67655f7265636f72645f64617465081463615f696410434149642c7265636f72645f64617465584f7074696f6e3c5265636f726444617465537065633e3ce4204368616e67657320746865207265636f72642064617465206f6620746865204341206964656e746966696564206279206063615f6964602e003420232320417267756d656e74736101202d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e78202d206063615f696460206f662074686520434120746f20616c7465722ef0202d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f66207468652043412e65012020202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc202d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e5501202d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e00382023205065726d697373696f6e7320202a20417373657401245c4d617844657461696c734c656e6774684368616e67656408284964656e7469747949640c75333208d820546865206d6178696d756d206c656e677468206f66206064657461696c736020696e20627974657320776173206368616e6765642e5420284743204449442c206e6577206c656e677468297844656661756c745461726765744964656e7469746965734368616e6765640c284964656e746974794964185469636b6572405461726765744964656e74697469657308f02054686520736574206f662064656661756c7420605461726765744964656e7469746965736020666f722061207469636b6572206368616e6765642ea820284167656e74204449442c205469636b65722c204e6577205461726765744964656e746974696573297044656661756c7457697468686f6c64696e675461784368616e6765640c284964656e746974794964185469636b65720c54617808c8205468652064656661756c742077697468686f6c64696e672074617820666f722061207469636b6572206368616e6765642e7820284167656e74204449442c205469636b65722c204e657720546178292e6044696457697468686f6c64696e675461784368616e67656410284964656e746974794964185469636b6572284964656e7469747949642c4f7074696f6e3c5461783e08f0205468652077697468686f6c64696e672074617820737065636966696320746f20612044494420666f722061207469636b6572206368616e6765642ea420284167656e74204449442c205469636b65722c205461786564204449442c204e657720546178292e384341415472616e736665727265640c284964656e746974794964185469636b6572284964656e74697479496408702041206e65772044494420776173206d61646520746865204341412e9020284e657720434141204449442c205469636b65722c204e65772043414120444944292e2c4341496e6974696174656410204576656e7444696410434149643c436f72706f72617465416374696f6e24434144657461696c73085020412043412077617320696e697469617465642eac20284167656e74204449442c2043412069642c207468652043412c207468652043412064657461696c73293443414c696e6b6564546f446f630c284964656e74697479496410434149643c5665633c446f63756d656e7449643e0888204120434120776173206c696e6b656420746f206120736574206f6620646f63732eb020284167656e74204449442c2043412049642c204c697374206f6620646f63206964656e746966696572732924434152656d6f76656408204576656e74446964104341496408482041204341207761732072656d6f7665642e4c20284167656e74204449442c20434120496429445265636f7264446174654368616e6765640c204576656e7444696410434149643c436f72706f72617465416374696f6e047020412043412773207265636f72642064617465206368616e6765642e08304d61785461726765744964730c75333210e803000000284d6178446964576874730c75333210e8030000003048417574684e6f744341415472616e736665720409012054686520617574686f72697a6174696f6e2074797065206973206e6f7420746f207472616e73666572207468652043414120746f20616e6f74686572204449442e3844657461696c73546f6f4c6f6e6704dc20546865206064657461696c7360206f66206120434120657863656564656420746865206d617820616c6c6f776564206c656e6774682e3c4475706c696361746544696454617808250120412077697468686f6c64696e6720746178206f7665727269646520666f72206120676976656e204449442077617320737065636966696564206d6f7265207468616e206f6e63652e09012054686520636861696e207265667573656420746f206d616b6520612063686f6963652c20616e642068656e63652074686572652077617320616e206572726f722e3c546f6f4d616e79446964546178657304cc20546f6f206d616e792077697468686f6c64696e6720746178206f76657272696465732077657265207370656369666965642e40546f6f4d616e7954617267657449647304e820546f6f206d616e79206964656e74697469657320696e20605461726765744964656e746974696573602077657265207370656369666965642e484e6f53756368436865636b706f696e744964040901204f6e204341206372656174696f6e2c206120636865636b706f696e74204944207761732070726f766964656420776869636820646f65736e27742065786973742e204e6f53756368434104a8204120434120776974682074686520676976656e2060434149646020646964206e6f742065786973742e304e6f5265636f726444617465048c2054686520434120646964206e6f7420686176652061207265636f726420646174652e505265636f726444617465416674657253746172740ce020412043412773207265636f7264206461746520776173207374726963746c792061667465722074686520227374617274222074696d652c90207768657265202273746172742220697320636f6e7465787420646570656e64656e742e850120466f72206578616d706c652c20697420636f756c6420626520746865207374617274206f6620612062616c6c6f742c206f72207468652073746172742d6f662d7061796d656e7420696e206361706974616c20646973747269627574696f6e2e5c4465636c4461746541667465725265636f72644461746504f020412043412773206465636c61726174696f6e206461746520776173207374726963746c7920616674657220697473207265636f726420646174652e404465636c44617465496e46757475726504b820412043412773206465636c61726174696f6e2064617465206f636375727320696e20746865206675747572652e3c4e6f74546172676574656442794341047020434120646f6573206e6f742074617267657420746865204449442e1e3c436f72706f7261746542616c6c6f74013c436f72706f7261746542616c6c6f7418144d6574617300010210434149642842616c6c6f744d6574610004000c80204d65746164617461206f66206120636f72706f726174652062616c6c6f742e005420284341496429203d3e2042616c6c6f744d6574612854696d6552616e67657300010210434149643c42616c6c6f7454696d6552616e676500040010e42054696d652064657461696c73206f66206120636f72706f726174652062616c6c6f74206173736f636961746564207769746820612043412ed0205468652074696d657374616d70732064656e6f7465207768656e20766f74696e672073746172747320616e642073746f70732e006820284341496429203d3e2042616c6c6f7454696d6552616e6765404d6f74696f6e4e756d43686f696365730101021043414964205665633c7531363e00040024c82053746f72657320686f77206d616e792063686f696365732074686572652061726520696e2065616368206d6f74696f6e2e00250120417420616c6c2074696d65732c2074686520696e76617269616e7420686f6c6473207468617420606d6f74696f6e5f63686f696365735b6964785d6020697320657175616c20746f310120606d657461732e756e7772617028292e6d6f74696f6e735b6964785d2e63686f696365732e6c656e2829602e20546861742069732c2074686973206973206a75737420612063616368652c1101207573656420746f2061766f6964206665746368696e6720616c6c20746865206d6f74696f6e732077697468207468656972206173736f6369617465642074657874732e0001012060753136602063686f696365732073686f756c64206265206d6f7265207468616e20656e6f75676820746f20666974207265616c207573652063617365732e00b020284341496429203d3e204e756d626572206f662063686f6963657320696e2065616368206d6f74696f6e2e0c524356010102104341496410626f6f6c00040010dc2049732072616e6b65642063686f69636520766f74696e6720285243562920656e61626c656420666f7220746869732062616c6c6f743f650120466f7220616e20756e6465727374616e64696e67206f6620686f77205243562069732068616e646c65642c20736565206e6f7465206f6e206042616c6c6f74566f7465602773206066616c6c6261636b60206669656c642e003c20284341496429203d3e20626f6f6c1c526573756c74730101021043414964305665633c42616c616e63653e0004001cb02053746f7265732074686520746f74616c20766f74652074616c6c79206f6e20656163682063686f6963652e006820524356206973206e6f74206163636f756e74656420666f722cd02061732074686572652061726520746f6f206d616e792077616e747320746f20696e74657270726574207468652067726170682c9c20616e64206265636175736520697420776f756c64206e6f7420626520656666696369656e742e008420284341496429203d3e205b63757272656e7420766f746520776569676874735d14566f7465730102021043414964284964656e7469747949643c5665633c42616c6c6f74566f74653e06040018ac2053746f726573206561636820444944277320766f74657320696e206120676976656e2062616c6c6f742ef8205365652074686520646f63756d656e746174696f6e206f66206042616c6c6f74566f74656020666f72206e6f746573206f6e2073656d616e746963732e008420284341496429203d3e202844494429203d3e205b766f7465207765696768745d001d012055736572206d75737420656e746572203020766f746520776569676874206966207468657920646f6e27742077616e7420746f20766f746520666f7220612063686f6963652e0118346174746163685f62616c6c6f74101463615f696410434149641472616e67653c42616c6c6f7454696d6552616e6765106d6574612842616c6c6f744d6574610c72637610626f6f6c68ec20417474616368206120636f72706f726174652062616c6c6f7420746f20746865204341206964656e746966696564206279206063615f6964602e00b0205468652062616c6c6f742077696c6c2061646d697420766f7465732077697468696e206072616e6765602eb4205468652062616c6c6f742773206d657461646174612069732070726f766964656420627920606d657461602c090120776869636820696e636c75646573207468652062616c6c6f74207469746c652c20746865206d6f74696f6e732c2074686569722063686f696365732c206574632e7c2053656520746865206042616c6c6f744d6574616020666f72206d6f72652e003420232320417267756d656e74734901202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602ed4202d206063615f696460206964656e7469666965732074686520434120746f20617474616368207468652062616c6c6f7420746f2ec4202d206072616e67656020737065636966696573207768656e20766f74696e672073746172747320616e6420656e64732ef0202d20606d6574616020737065636966696573207468652062616c6c6f742773206d657461646174612061732061666f72656d656e74696f6e65642ee8202d2060726376602073706563696669657320776865746865722052435620697320656e61626c656420666f7220746869732062616c6c6f742e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee8202d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef4202d206043414e6f744e6f746963656020696620746865204341206973206e6f74206f662074686520604973737565724e6f7469636560206b696e642ec0202d206053746172744166746572456e6460206966206072616e67652e7374617274203e2072616e67652e656e64602e2d01202d20604e6f774166746572456e646020696620606e6f77203e2072616e67652e656e646020776865726520606e6f7760206973207468652063757272656e742074696d657374616d702eac202d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652e5d01202d20605265636f7264446174654166746572537461727460206966206064617465203e2072616e67652e73746172746020776865726520606461746560206973207468652043412773207265636f726420646174652ebc202d2060416c726561647945786973747360206966207468657265277320612062616c6c6f7420616c72656164792e3501202d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e0d01202d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e0501202d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e10766f7465081463615f6964104341496414766f7465733c5665633c42616c6c6f74566f74653e44150120436173742060766f7465736020696e207468652062616c6c6f7420617474616368656420746f20746865204341206964656e746966696564206279206063615f6964602e003420232320417267756d656e74730d01202d20606f726967696e60207768696368206d7573742062652061207065726d697373696f6e6564207369676e6572207461726765746564206279207468652043412ebc202d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e2501202d2060766f7465736020737065636966696573207468652062616c616e63657320746f2061737369676e20746f20656163682063686f69636520696e207468652062616c6c6f742e5901202020205468652066756c6c20766f74696e6720706f776572206f6620606f726967696e60277320444944206d6179206265207573656420666f722065616368206d6f74696f6e20696e207468652062616c6c6f742e00242023204572726f7273e0202d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e0101202d2060566f74696e674e6f7453746172746564602069662074686520766f74696e6720706572696f64206861736e277420636f6d6d656e636564207965742edc202d2060566f74696e67416c7265616479456e646564602069662074686520766f74696e6720706572696f642068617320656e6465642e6101202d206057726f6e67566f7465436f756e746020696620746865206e756d626572206f662063686f6963657320696e207468652062616c6c6f7420646f6573206e6f74206d617463682060766f7465732e6c656e2829602ee8202d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef8202d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e2501202d2060496e73756666696369656e74566f746573602069662074686520766f74696e6720706f776572207573656420666f7220616e79206d6f74696f6e20696e2060766f74657360a8202020206578636565647320606f726967696e60277320444944277320766f74696e6720706f7765722e286368616e67655f656e64081463615f696410434149640c656e64184d6f6d656e7430090120416d656e642074686520656e642064617465206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e003420232320417267756d656e74734901202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602ebc202d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ec8202d2060656e64602073706563696669657320746865206e657720656e642064617465206f66207468652062616c6c6f742e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee0202d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e3501202d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e90202d206053746172744166746572456e646020696620607374617274203e20656e64602e2c6368616e67655f6d657461081463615f69641043414964106d6574612842616c6c6f744d65746134650120416d656e6420746865206d6574616461746120287469746c652c206d6f74696f6e732c206574632e29206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e003420232320417267756d656e74734901202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602ebc202d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e94202d20606d657461602073706563696669657320746865206e6577206d657461646174612e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee0202d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e3501202d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e3501202d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e0d01202d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e286368616e67655f726376081463615f696410434149640c72637610626f6f6c2c090120416d656e642052435620737570706f727420666f72207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e003420232320417267756d656e74734901202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602ebc202d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ed0202d206072637660207370656369666965732069662052435620697320746f20626520737570706f72746564206f72206e6f742e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee0202d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e3501202d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e3472656d6f76655f62616c6c6f74041463615f6964104341496428cc2052656d6f7665207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e003420232320417267756d656e74734901202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602ebc202d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee0202d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e3501202d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e01181c4372656174656414284964656e74697479496410434149643c42616c6c6f7454696d6552616e67652842616c6c6f744d65746110626f6f6c0c80204120636f72706f726174652062616c6c6f742077617320637265617465642e00190120284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e642c2042616c6c6f74206d657461646174612c2052435620656e61626c65643f2920566f7465436173740c284964656e74697479496410434149643c5665633c42616c6c6f74566f74653e0c9c204120766f746520776173206361737420696e206120636f72706f726174652062616c6c6f742e00642028766f746572204449442c20434149642c20566f746573293052616e67654368616e6765640c284964656e74697479496410434149643c42616c6c6f7454696d6552616e67650cd4204120636f72706f726174652062616c6c6f74206368616e676564206974732073746172742f656e6420646174652072616e67652e009c20284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e64292c4d6574614368616e6765640c284964656e74697479496410434149642842616c6c6f744d6574610ca4204120636f72706f726174652062616c6c6f74206368616e67656420697473206d657461646174612e008c20284167656e74204449442c20434127732049442c204e6577206d6574616461746129285243564368616e6765640c284964656e746974794964104341496410626f6f6c0cb0204120636f72706f726174652062616c6c6f74206368616e676564206974732052435620737570706f72742e008820284167656e74204449442c20434127732049442c204e657720737570706f7274291c52656d6f76656408204576656e7444696410434149640c80204120636f72706f726174652062616c6c6f74207761732072656d6f7665642e005420284167656e74204449442c20434127732049442900382c43414e6f744e6f7469636504e4204120636f72706f726174652062616c6c6f7420776173206d61646520666f722061206e6f6e20604973737565724e6f74696365602043412e34416c726561647945786973747304bc204120636f72706f726174652062616c6c6f7420616c72656164792065786973747320666f7220746869732043412e304e6f5375636842616c6c6f7404b8204120636f72706f726174652062616c6c6f7420646f65736e277420657869737420666f7220746869732043412e3453746172744166746572456e64041501204120636f72706f726174652062616c6c6f7427732073746172742074696d6520776173207374726963746c79206166746572207468652062616c6c6f74277320656e642e2c4e6f774166746572456e64041101204120636f72706f726174652062616c6c6f74277320656e642074696d6520776173207374726963746c79206265666f7265207468652063757272656e742074696d652e5c4e756d6265724f6643686f696365734f766572666c6f77043d0120496620736f6d65206d6f74696f6e20696e206120636f72706f726174652062616c6c6f7420686173206d6f72652063686f69636573207468616e20776f756c642066697420696e2060753136602e50566f74696e67416c72656164795374617274656404050120566f74696e67207374617274656420616c72656164792e20416d656e64696e6720612062616c6c6f74206973206e6f206c6f6e67657220706f737369626c652e40566f74696e674e6f7453746172746564046c20566f74696e67206861736e27742073746172746564207965742e48566f74696e67416c7265616479456e646564045820566f74696e6720656e64656420616c72656164792e3857726f6e67566f7465436f756e740419012050726f7669646564206c697374206f662062616c616e63657320646f6573206e6f74206d617463682074686520746f74616c206e756d626572206f662063686f696365732e44496e73756666696369656e74566f74657304410120566f74696e6720706f7765722075736564206279206120444944206f6e2061206d6f74696f6e2065786365656473207468617420776869636820697320617661696c61626c6520746f207468656d2e444e6f5375636852435646616c6c6261636b04c020546865205243562066616c6c6261636b206f6620736f6d652063686f69636520646f6573206e6f742065786973742e3052435653656c664379636c6504b820546865205243562066616c6c6261636b20706f696e747320746f20746865206f726967696e2063686f6963652e345243564e6f74416c6c6f776564049020524356206973206e6f7420616c6c6f77656420666f7220746869732062616c6c6f742e1f2c5065726d697373696f6e73000000000448556e617574686f72697a656443616c6c657204f0205468652063616c6c6572206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e201050697073011050697073544c5072756e65486973746f726963616c50697073010010626f6f6c040004fc2044657465726d696e6573207768657468657220686973746f726963616c20504950206461746120697320706572736973746564206f722072656d6f766564584d696e696d756d50726f706f73616c4465706f73697401001c42616c616e63654000000000000000000000000000000000041d0120546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f7220636f6d6d756e69747920504950206372656174696f6e2e5844656661756c74456e6163746d656e74506572696f64010038543a3a426c6f636b4e756d62657210000000000439012044656661756c7420656e6163746d656e7420706572696f6420746861742077696c6c2062652075736520616674657220612070726f706f73616c2069732061636365707465642062792047432e4050656e64696e675069704578706972790100684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e040108f420486f77206d616e7920626c6f636b732077696c6c2069742074616b652c2061667465722061206050656e64696e67602050495020657870697265732cf420617373756d696e6720697420686173206e6f74207472616e736974696f6e656420746f20616e6f74686572206050726f706f73616c5374617465603f3c4d6178506970536b6970436f756e74010030536b6970706564436f756e740400048901204d6178696d756d2074696d65732061205049502063616e20626520736b6970706564206265666f72652074726967676572696e67206043616e6e6f74536b69705069706020696e2060656e6163745f736e617073686f745f726573756c7473602e384163746976655069704c696d697401000c753332100000000008c420546865206d6178696d756d20616c6c6f776564206e756d62657220666f722060416374697665506970436f756e74602e0101204f6e636520726561636865642c206e657720504950732063616e6e6f742062652070726f706f73656420627920636f6d6d756e697479206d656d626572732e34506970496453657175656e6365010014506970496410000000000409012050726f706f73616c7320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f662050495073206f66662d636861696e2e48536e617073686f74496453657175656e6365010028536e617073686f7449641000000000041d0120536e617073686f747320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f6620736e617073686f7473206f66662d636861696e2e38416374697665506970436f756e7401000c753332100000000004c820546f74616c20636f756e74206f662063757272656e742070656e64696e67206f72207363686564756c656420504950732e4050726f706f73616c4d657461646174610001051450697049643c506970734d657461646174613c543e000400049820546865206d65746164617461206f6620746865206163746976652070726f706f73616c732e204465706f7369747301020514506970496430543a3a4163636f756e744964644465706f736974496e666f3c543a3a4163636f756e7449643e05c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008842054686f73652077686f2068617665206c6f636b65642061206465706f7369742e8c2070726f706f73616c202869642c2070726f706f73657229202d3e206465706f7369742450726f706f73616c73000105145069704964185069703c543e00040008c42041637475616c2070726f706f73616c20666f72206120676976656e2069642c20696620697427732063757272656e742e602070726f706f73616c206964202d3e2070726f706f73616c3850726f706f73616c526573756c7401010514506970496430566f74696e67526573756c7400a00000000000000000000000000000000000000000000000000000000000000000000000000000000008d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e682070726f706f73616c206964202d3e20766f746520636f756e743450726f706f73616c566f74657300020514506970496430543a3a4163636f756e74496410566f746505040008050120566f746573207065722050726f706f73616c20616e64206163636f756e742e205573656420746f2061766f696420646f75626c6520766f74652069737375652e7c202870726f706f73616c2069642c206163636f756e7429202d3e20566f746534506970546f5363686564756c6500010514506970496438543a3a426c6f636b4e756d62657200040004fc204d617073205049507320746f2074686520626c6f636b20617420776869636820746865792077696c6c2062652065786563757465642c20696620616e792e244c697665517565756501004c5665633c536e617073686f747465645069703e040018cc2041206c697665207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029a0206f662070656e64696e67205049507320757020746f2074686520616374697665206c696d69742ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e00450120556e6c696b652060536e617073686f745175657565602c2074686973207175657565206973206c6976652c2067657474696e6720757064617465642077697468206561636820766f746520636173742e2d012054686520736e617073686f74206973207468657265666f726520657373656e7469616c6c79206120706f696e742d696e2d74696d6520636c6f6e65206f6620746869732071756575652e34536e617073686f74517565756501004c5665633c536e617073686f747465645069703e040014590120546865207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029206f6620504950732061742074686520706f696e74206f6620736e617073686f7474696e672ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e000901204120717565756564205049502063616e20626520736b69707065642e20446f696e6720736f2062756d70732074686520607069705f736b69705f636f756e74602e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e30536e617073686f744d65746100004c536e617073686f744d657461646174613c543e040004bc20546865206d65746164617461206f662074686520736e617073686f742c206966207468657265206973206f6e652e30506970536b6970436f756e7401010514506970496430536b6970706564436f756e7400040008d020546865206e756d626572206f662074696d65732061206365727461696e2050495020686173206265656e20736b69707065642e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e34436f6d6d6974746565506970730100285665633c50697049643e040008d420416c6c206578697374696e672050495073207768657265207468652070726f706f736572206973206120636f6d6d69747465652e39012054686973206c6973742069732061206361636865206f6620616c6c2069647320696e206050726f706f73616c73602077697468206050726f706f7365723a3a436f6d6d6974746565285f29602e3853746f7261676556657273696f6e01001c56657273696f6e0400000144647365745f7072756e655f686973746f726963616c5f7069707304147072756e6510626f6f6c14a8204368616e6765207768657468657220636f6d706c65746564205049507320617265207072756e65642e702043616e206f6e6c792062652063616c6c656420627920726f6f742e0030202320417267756d656e7473f4202a20607072756e656020737065636966696573207768657468657220636f6d706c6574656420504950732073686f756c64206265207072756e65642e607365745f6d696e5f70726f706f73616c5f6465706f736974041c6465706f7369741c42616c616e6365142501204368616e676520746865206d696e696d756d2070726f706f73616c206465706f73697420616d6f756e7420726571756972656420746f20737461727420612070726f706f73616c2e702043616e206f6e6c792062652063616c6c656420627920726f6f742e0030202320417267756d656e7473f4202a20606465706f7369746020746865206e6577206d696e206465706f73697420726571756972656420746f20737461727420612070726f706f73616c707365745f64656661756c745f656e6163746d656e745f706572696f6404206475726174696f6e38543a3a426c6f636b4e756d6265721494204368616e6765207468652064656661756c7420656e6163746d656e7420706572696f642e702043616e206f6e6c792062652063616c6c656420627920726f6f742e0030202320417267756d656e74736d01202a20606475726174696f6e6020746865206e65772064656661756c7420656e6163746d656e7420706572696f642069742074616b657320666f722061207363686564756c65642050495020746f2062652065786563757465642e587365745f70656e64696e675f7069705f6578706972790418657870697279684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e180901204368616e67652074686520616d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020697320657870697265642eb820496620606578706972796020697320604e6f6e6560207468656e2050495073206e65766572206578706972652e702043616e206f6e6c792062652063616c6c656420627920726f6f742e0030202320417267756d656e74732101202a2060657870697279602074686520626c6f636b2d74696d652069742074616b657320666f722061207374696c6c2d6050656e64696e67602050495020746f206578706972652e587365745f6d61785f7069705f736b69705f636f756e74040c6d617830536b6970706564436f756e7414d8204368616e676520746865206d6178696d756d20736b697020636f756e742028606d61785f7069705f736b69705f636f756e7460292e702043616e206f6e6c792062652063616c6c656420627920726f6f742e0030202320417267756d656e7473f0202a20606d61786020736b697073206265666f72652061205049502063616e6e6f7420626520736b697070656420627920474320616e796d6f72652e507365745f6163746976655f7069705f6c696d697404146c696d69740c753332146d01204368616e676520746865206d6178696d756d206e756d626572206f66206163746976652050495073206265666f726520636f6d6d756e697479206d656d626572732063616e6e6f742070726f706f736520616e797468696e672e702043616e206f6e6c792062652063616c6c656420627920726f6f742e0030202320417267756d656e747394202a20606c696d697460206f6620636f6e63757272656e742061637469766520504950732e1c70726f706f7365102070726f706f73616c40426f783c543a3a50726f706f73616c3e1c6465706f7369741c42616c616e63650c75726c2c4f7074696f6e3c55726c3e2c6465736372697074696f6e584f7074696f6e3c5069704465736372697074696f6e3e2409012041206e6574776f726b206d656d6265722063726561746573206120504950206279207375626d697474696e67206120646973706174636861626c652077686963685901206368616e67657320746865206e6574776f726b20696e20736f6d657761792e2041206d696e696d756d206465706f73697420697320726571756972656420746f206f70656e2061206e65772070726f706f73616c2e0030202320417267756d656e7473cc202a206070726f706f73657260206973206569746865722061207369676e696e67206b6579206f7220636f6d6d69747465652e6901202020205573656420746f20756e6465727374616e6420776865746865722074686973206973206120636f6d6d69747465652070726f706f73616c20616e6420766572696669656420616761696e737420606f726967696e602e84202a206070726f706f73616c60206120646973706174636861626c652063616c6c4901202a20606465706f73697460206d696e696d756d206465706f7369742076616c75652c2077686963682069732069676e6f726564206966206070726f706f73657260206973206120636f6d6d69747465652ed0202a206075726c602061206c696e6b20746f2061207765627369746520666f722070726f706f73616c2064697363757373696f6e10766f74650c086964145069704964286179655f6f725f6e617910626f6f6c1c6465706f7369741c42616c616e636548210120566f74652065697468657220696e206661766f722028606179655f6f725f6e617960203d3d207472756529206f7220616761696e7374206120504950207769746820606964602e5101205468652022636f6e76696e6374696f6e22206f7220737472656e677468206f662074686520766f746520697320676976656e20627920606465706f736974602c2077686963682069732072657365727665642e0090204e6f746520746861742060766f746560206973202a6e6f742a2061646469746976652efc20546861742069732c2060766f74652869642c20747275652c203530296020666f6c6c6f7765642062792060766f74652869642c20747275652c20343029604d012077696c6c2066697273742072657365727665206035306020616e64207468656e20726566756e6420603530202d203130602c20656e64696e672075702077697468206034306020696e206465706f7369742e290120546f206164642061746f70206f66206578697374696e6720766f7465732c20796f75276c6c206e65656420606578697374696e675f6465706f736974202b206164646974696f6e602e0030202320417267756d656e747350202a20606964602c2070726f706f73616c206964e0202a20606179655f6f725f6e6179602c206120626f6f6c20726570726573656e74696e6720666f72206f7220616761696e737420766f7465ec202a20606465706f736974602c207468652022636f6e76696374696f6e2220776974682077686963682074686520766f7465206973206d6164652e00242023204572726f7273e8202a20604e6f5375636850726f706f73616c60206966206069646020646f65736e2774207265666572656e636520612076616c6964205049502ee8202a20604e6f7446726f6d436f6d6d756e697479602069662070726f706f73616c20776173206d616465206279206120636f6d6d69747465652ec4202a2060496e636f727265637450726f706f73616c537461746560206966205049502069736e27742070656e64696e672e3101202a2060496e73756666696369656e744465706f7369746020696620606f726967696e602063616e6e6f74207265736572766520606465706f736974202d206f6c645f6465706f736974602e68617070726f76655f636f6d6d69747465655f70726f706f73616c040869641450697049641cd820417070726f766573207468652070656e64696e6720636f6d6d69747465652050495020676976656e2062792074686520606964602e00242023204572726f72730901202a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2edc202a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ee8202a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c2069736e27742070656e64696e672ee4202a20604e6f744279436f6d6d697474656560206966207468652070726f706f73616c2069736e2774206279206120636f6d6d69747465652e3c72656a6563745f70726f706f73616c0408696414506970496420fc2052656a65637473207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e7920626f6e6465642066756e64732cbc20617373756d696e67206974206861736e2774206265656e2063616e63656c6c6564206f722065786563757465642e0901204e6f746520746861742070726f706f73616c73207363686564756c65642d666f722d657865637574696f6e2063616e20616c736f2062652072656a65637465642e00242023204572726f72730901202a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2edc202a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742e1901202a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c207761732063616e63656c6c6564206f722065786563757465642e387072756e655f70726f706f73616c04086964145069704964242d01205072756e65207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e792066756e6473206e6f7420616c726561647920726566756e6465642e682054686520504950206d6179206e6f7420626520616374697665000d0120546869732066756e6374696f6e20697320696e74656e64656420666f722073746f72616765206761726261676520636f6c6c656374696f6e20707572706f7365732e00242023204572726f72730901202a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2edc202a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ed8202a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c206973206163746976652e5072657363686564756c655f657865637574696f6e0808696414506970496414756e74696c584f7074696f6e3c543a3a426c6f636b4e756d6265723e24e420557064617465732074686520657865637574696f6e207363686564756c65206f66207468652050495020676976656e20627920606964602e0030202320417267756d656e74733501202a2060756e74696c6020646566696e6573207468652066757475726520626c6f636b2077686572652074686520656e6163746d656e7420706572696f642077696c6c2066696e69736865642e490120202020604e6f6e65602076616c7565206d65616e73207468617420656e6163746d656e7420706572696f6420697320676f696e6720746f2066696e69736820696e20746865206e65787420626c6f636b2e00242023204572726f72733d01202a206052657363686564756c654e6f74427952656c65617365436f6f7264696e61746f726020756e6c657373207472696767657265642062792072656c6561736520636f6f7264696e61746f722e2501202a2060496e636f727265637450726f706f73616c53746174656020756e6c657373207468652070726f706f73616c2077617320696e2061207363686564756c65642073746174652e38636c6561725f736e617073686f740010ec20436c656172732074686520736e617073686f7420616e6420656d69747320746865206576656e742060536e617073686f74436c6561726564602e00242023204572726f72734101202a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e20736e617073686f74001411012054616b65732061206e657720736e617073686f74206f66207468652063757272656e74206c697374206f66206163746976652026262070656e64696e6720504950732e2d0120546865205049507320617265207468656e20736f7274656420696e746f2061207072696f72697479207175657565206261736564206f6e2065616368205049502773207765696768742e00242023204572726f72734101202a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e58656e6163745f736e617073686f745f726573756c7473041c726573756c7473705665633c2850697049642c20536e617073686f74526573756c74293e44d420456e616374732060726573756c74736020666f7220746865205049507320696e2074686520736e617073686f742071756575652e2d012054686520736e617073686f742077696c6c20626520617661696c61626c6520666f72206675727468657220656e6163746d656e747320756e74696c20697420697320636c65617265642e005901205468652060726573756c7473602061726520656e636f6465642061206c697374206f6620602869642c20726573756c7429602077686572652060726573756c7460206973206170706c69656420746f20606964602e4d01204e6f746520746861742074686520736e617073686f74207072696f7269747920717565756520697320656e636f646564207769746820746865202a6c6f77657374207072696f726974792066697273742a2e590120736f2060726573756c7473203d205b2869642c20417070726f7665295d602077696c6c20617070726f76652060536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20315d602e00242023204572726f72731101202a20604261644f726967696e60202d20756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2e2501202a206043616e6e6f74536b697050697060202d206120676976656e205049502068617320616c7265616479206265656e20736b697070656420746f6f206d616e792074696d65732e1101202a2060536e617073686f74526573756c74546f6f4c6172676560202d206f6e206c656e28726573756c747329203e206c656e28736e617073686f745f7175657565292e74202a2060536e617073686f7449644d69736d6174636860202d2069663a28202020606060746578749c20202020e2888320286920e2888820302e2e536e617073686f7451756575652e6c656e2829292e0101202020202020726573756c74735b695d2e3020e289a020536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20695d2e696418202020606060fc20202020546869732069732070726f746563747320616761696e737420636c656172696e67207175657565207768696c6520474320697320766f74696e672e54657865637574655f7363686564756c65645f7069700408696414506970496404dc20496e7465726e616c20646973706174636861626c6520746861742068616e646c657320657865637574696f6e206f662061205049502e506578706972655f7363686564756c65645f706970080c646964284964656e74697479496408696414506970496404e020496e7465726e616c20646973706174636861626c6520746861742068616e646c65732065787069726174696f6e206f662061205049502e015050486973746f726963616c506970735072756e65640c284964656e74697479496410626f6f6c10626f6f6c044901205072756e696e6720486973746f726963616c205049507320697320656e61626c6564206f722064697361626c6564202863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293c50726f706f73616c4372656174656420284964656e7469747949644c50726f706f7365723c4163636f756e7449643e1450697049641c42616c616e63652c4f7074696f6e3c55726c3e584f7074696f6e3c5069704465736372697074696f6e3e5c4d61796265426c6f636b3c426c6f636b4e756d6265723e3050726f706f73616c44617461149c20412050495020776173206d61646520776974682061206042616c616e636560207374616b652e0038202320506172616d65746572733a0055012043616c6c6572204449442c2050726f706f7365722c205049502049442c206465706f7369742c2055524c2c206465736372697074696f6e2c206578706972792074696d652c2070726f706f73616c20646174612e5050726f706f73616c5374617465557064617465640c284964656e7469747949641450697049643450726f706f73616c537461746504dc2054726967676572656420656163682074696d6520746865207374617465206f6620612070726f706f73616c20697320616d656e64656414566f74656414284964656e746974794964244163636f756e74496414506970496410626f6f6c1c42616c616e636504fc20604163636f756e7449646020766f7465642060626f6f6c60206f6e207468652070726f706f73616c207265666572656e636564206279206050697049646024506970436c6f7365640c284964656e74697479496414506970496410626f6f6c04ec2050697020686173206265656e20636c6f7365642c20626f6f6c20696e6469636174657320776865746865722064617461206973207072756e656448457865637574696f6e5363686564756c65640c284964656e7469747949641450697049642c426c6f636b4e756d62657204e420457865637574696f6e206f6620612050495020686173206265656e207363686564756c656420617420737065636966696320626c6f636b2e7444656661756c74456e6163746d656e74506572696f644368616e6765640c284964656e7469747949642c426c6f636b4e756d6265722c426c6f636b4e756d62657208dc2044656661756c7420656e6163746d656e7420706572696f642028696e20626c6f636b732920686173206265656e206368616e6765642e94202863616c6c6572204449442c206f6c6420706572696f642c206e657720706572696f6429744d696e696d756d50726f706f73616c4465706f7369744368616e6765640c284964656e7469747949641c42616c616e63651c42616c616e63650880204d696e696d756d206465706f73697420616d6f756e74206d6f64696669656494202863616c6c6572204449442c206f6c6420616d6f756e742c206e657720616d6f756e74295c50656e64696e675069704578706972794368616e6765640c284964656e7469747949645c4d61796265426c6f636b3c426c6f636b4e756d6265723e5c4d61796265426c6f636b3c426c6f636b4e756d6265723e08d020416d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020657870697265732e94202863616c6c6572204449442c206f6c64206578706972792c206e65772065787069727929584d6178506970536b6970436f756e744368616e6765640c284964656e74697479496430536b6970706564436f756e7430536b6970706564436f756e7408d020546865206d6178696d756d2074696d65732061205049502063616e20626520736b697070656420776173206368616e6765642e8c202863616c6c6572204449442c206f6c642076616c75652c206e65772076616c756529544163746976655069704c696d69744368616e6765640c284964656e7469747949640c7533320c75333208bc20546865206d6178696d756d206e756d626572206f6620616374697665205049507320776173206368616e6765642e8c202863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293850726f706f73616c526566756e640c284964656e7469747949641450697049641c42616c616e6365084020526566756e642070726f706f73616c4c202869642c20746f74616c20616d6f756e74293c536e617073686f74436c656172656408284964656e74697479496428536e617073686f74496404682054686520736e617073686f742077617320636c65617265642e34536e617073686f7454616b656e0c284964656e74697479496428536e617073686f7449644c5665633c536e617073686f747465645069703e04682041206e657720736e617073686f74207761732074616b656e2e28506970536b69707065640c284964656e74697479496414506970496430536b6970706564436f756e7408a420412050495020696e2074686520736e617073686f742071756575652077617320736b69707065642e84202867635f6469642c207069705f69642c206e65775f736b69705f636f756e742958536e617073686f74526573756c7473456e616374656414284964656e746974794964484f7074696f6e3c536e617073686f7449643e685665633c2850697049642c20536b6970706564436f756e74293e285665633c50697049643e285665633c50697049643e08350120526573756c74732028652e672e2c20617070726f7665642c2072656a65637465642c20616e6420736b6970706564292c207765726520656e616374656420666f7220736f6d6520504950732e5501202867635f6469642c20736e617073686f745f69645f6f70742c20736b69707065645f706970735f776974685f6e65775f636f756e742c2072656a65637465645f706970732c20617070726f7665645f706970732964457865637574696f6e5363686564756c696e674661696c65640c284964656e7469747949641450697049642c426c6f636b4e756d626572041101205363686564756c696e67206f66207468652050495020666f7220657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e3c4578706972795363686564756c65640c284964656e7469747949641450697049642c426c6f636b4e756d626572049c205468652050495020686173206265656e207363686564756c656420666f72206578706972792e584578706972795363686564756c696e674661696c65640c284964656e7469747949641450697049642c426c6f636b4e756d626572040501205363686564756c696e67206f66207468652050495020666f7220657870697279206661696c656420696e20746865207363686564756c65722070616c6c65742e64457865637574696f6e43616e63656c6c696e674661696c65640414506970496404f42043616e63656c6c696e67207468652050495020657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e00488452657363686564756c654e6f74427952656c65617365436f6f7264696e61746f72043501204f6e6c79207468652047432072656c6561736520636f6f7264696e61746f7220697320616c6c6f77656420746f2072657363686564756c652070726f706f73616c20657865637574696f6e2e404e6f7446726f6d436f6d6d756e69747908f02054686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2ed0205468652070726f706f73616c206d7573742062652066726f6d2074686520636f6d6d756e6974792c206275742069736e27742e384e6f744279436f6d6d697474656508f02054686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2eb8205468652070726f706f73616c206d75737420626520627920636f6d6d756e6974792c206275742069736e27742e44546f6f4d616e7941637469766550697073082d01205468652063757272656e74206e756d626572206f6620616374697665202870656e64696e67207c207363686564756c65642920504950732065786365656420746865206d6178696d756da020616e64207468652070726f706f73616c206973206e6f74206279206120636f6d6d69747465652e40496e636f72726563744465706f73697404a02050726f706f7365722073706563696669657320616e20696e636f7272656374206465706f7369744c496e73756666696369656e744465706f73697404b82050726f706f7365722063616e2774206166666f726420746f206c6f636b206d696e696d756d206465706f736974384e6f5375636850726f706f73616c0474205468652070726f706f73616c20646f6573206e6f742065786973742e4c4e6f7441436f6d6d69747465654d656d6265720488204e6f742070617274206f6620676f7665726e616e636520636f6d6d69747465652e60496e76616c6964467574757265426c6f636b4e756d62657204dc205768656e206120626c6f636b206e756d626572206973206c657373207468616e2063757272656e7420626c6f636b206e756d6265722e544e756d6265724f66566f74657345786365656465640480205768656e206e756d626572206f6620766f746573206f766572666c6f77732e685374616b65416d6f756e744f66566f7465734578636565646564049c205768656e207374616b6520616d6f756e74206f66206120766f7465206f766572666c6f77732e584d697373696e6743757272656e744964656e746974790450204d697373696e672063757272656e742044494458496e636f727265637450726f706f73616c537461746504942050726f706f73616c206973206e6f7420696e2074686520636f72726563742073746174653443616e6e6f74536b6970506970040101205768656e20656e616374696e6720736e617073686f7420726573756c74732c20616e20756e736b69707061626c65205049502077617320736b69707065642e58536e617073686f74526573756c74546f6f4c6172676504190120547269656420746f20656e61637420726573756c747320666f722074686520736e617073686f74207175657565206f766572666c6f77696e6720697473206c656e6774682e48536e617073686f7449644d69736d6174636804610120547269656420746f20656e61637420726573756c7420666f7220504950207769746820696420646966666572656e742066726f6d20746861742061742074686520706f736974696f6e20696e207468652071756575652e705363686564756c656450726f706f73616c446f65736e74457869737404010120457865637574696f6e206f662061207363686564756c65642070726f706f73616c206661696c65642062656361757365206974206973206d697373696e672e6c50726f706f73616c4e6f74496e5363686564756c6564537461746504010120412070726f706f73616c2074686174206973206e6f7420696e2061207363686564756c65642073746174652063616e6e6f742062652065786563757465642e2124506f7274666f6c696f0124506f7274666f6c696f244c4e657874506f7274666f6c696f4e756d626572010106284964656e7469747949643c506f7274666f6c696f4e756d6265720020010000000000000004cc20546865206e65787420706f7274666f6c696f2073657175656e6365206e756d626572206f6620616e206964656e746974792e28506f7274666f6c696f73010206284964656e7469747949643c506f7274666f6c696f4e756d62657234506f7274666f6c696f4e616d650504000c41012054686520736574206f66206578697374696e6720706f7274666f6c696f732077697468207468656972206e616d65732e2049662061206365727461696e2070616972206f6620612044494420616e64590120706f7274666f6c696f206e756d626572206d61707320746f20604e6f6e6560207468656e2073756368206120706f7274666f6c696f20646f65736e27742065786973742e20436f6e76657273656c792c206966206135012070616972206d61707320746f2060536f6d65286e616d652960207468656e2073756368206120706f7274666f6c696f2065786973747320616e642069732063616c6c656420606e616d65602e304e616d65546f4e756d626572010206284964656e74697479496434506f7274666f6c696f4e616d653c506f7274666f6c696f4e756d6265720220010000000000000008e420496e7665727365206d6170206f662060506f7274666f6c696f7360207573656420746f20656e737572652062696a6563746976697469792ca420616e6420756e697175656e657373206f66206e616d657320696e2060506f7274666f6c696f73602e4c506f7274666f6c696f4173736574436f756e740101052c506f7274666f6c696f49640c7536340020000000000000000004fc20486f77206d616e79206173736574732077697468206e6f6e2d7a65726f2062616c616e6365207468697320706f7274666f6c696f20636f6e7461696e732e58506f7274666f6c696f417373657442616c616e6365730102052c506f7274666f6c696f4964185469636b65721c42616c616e63650240000000000000000000000000000000000488205468652061737365742062616c616e636573206f6620706f7274666f6c696f732e54506f7274666f6c696f4c6f636b65644173736574730102052c506f7274666f6c696f4964185469636b65721c42616c616e636502400000000000000000000000000000000008a020416d6f756e74206f6620617373657473206c6f636b656420696e206120706f7274666f6c696f2e2d01205468657365206173736574732073686f7720757020696e20706f7274666f6c696f2062616c616e6365206275742063616e206e6f74206265207472616e7366657272656420617761792e48506f7274666f6c696f437573746f6469616e0001052c506f7274666f6c696f4964284964656e7469747949640004000481012054686520637573746f6469616e206f66206120706172746963756c617220706f7274666f6c696f2e204e6f6e6520696d706c696573207468617420746865206964656e74697479206f776e65722069732074686520637573746f6469616e2e4c506f7274666f6c696f73496e437573746f6479010206284964656e7469747949642c506f7274666f6c696f496410626f6f6c0504000c550120547261636b7320616c6c2074686520706f7274666f6c696f7320696e20637573746f6479206f66206120706172746963756c6172206964656e746974792e204f6e6c79207573656420627920746865205549732ea501205768656e206074727565602069732073746f726564206173207468652076616c756520666f72206120676976656e2060286469642c2070696429602c206974206d65616e73207468617420607069646020697320696e20637573746f6479206f662060646964602ea501206066616c7365602076616c75657320617265206e65766572206578706c696369746c792073746f72656420696e20746865206d61702c20616e642061726520696e737465616420696e6665727265642062792074686520616273656e6365206f662061206b65792e3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0118406372656174655f706f7274666f6c696f04106e616d6534506f7274666f6c696f4e616d6504ac2043726561746573206120706f7274666f6c696f20776974682074686520676976656e20606e616d65602e4064656c6574655f706f7274666f6c696f040c6e756d3c506f7274666f6c696f4e756d6265722039012044656c657465732061207573657220706f7274666f6c696f2e204120706f7274666f6c696f2063616e2062652064656c65746564206f6e6c7920696620697420686173206e6f2066756e64732e00242023204572726f72732101202a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2ef4202a2060506f7274666f6c696f4e6f74456d707479602069662074686520706f7274666f6c696f207374696c6c20686f6c647320616e7920617373657400382023205065726d697373696f6e7330202a20506f7274666f6c696f506d6f76655f706f7274666f6c696f5f66756e64730c1066726f6d2c506f7274666f6c696f496408746f2c506f7274666f6c696f4964146974656d73585665633c4d6f7665506f7274666f6c696f4974656d3e3c6101204d6f766573206120746f6b656e20616d6f756e742066726f6d206f6e6520706f7274666f6c696f206f6620616e206964656e7469747920746f20616e6f7468657220706f7274666f6c696f206f66207468652073616d65e4206964656e746974792e204d7573742062652063616c6c65642062792074686520637573746f6469616e206f66207468652073656e6465722e15012046756e64732066726f6d2064656c6574656420706f7274666f6c696f732063616e20616c736f206265207265636f7665726564207669612074686973206d6574686f642e00e420412073686f7274206d656d6f2063616e20626520616464656420746f20746f206561636820746f6b656e20616d6f756e74206d6f7665642e00242023204572726f72736d01202a2060506f7274666f6c696f446f65734e6f74457869737460206966206f6e65206f7220626f7468206f662074686520706f7274666f6c696f73207265666572656e636520616e20696e76616c696420706f7274666f6c696f2e5501202a206064657374696e6174696f6e5f69735f73616d655f706f7274666f6c696f6020696620626f74682073656e64657220616e6420726563656976657220706f7274666f6c696f20617265207468652073616d659501202a2060446966666572656e744964656e74697479506f7274666f6c696f7360206966207468652073656e64657220616e6420726563656976657220706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e7469746965734d01202a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f66207468652066726f6d20706f7274666f6c696f4501202a2060496e73756666696369656e74506f7274666f6c696f42616c616e636560206966207468652073656e64657220646f6573206e6f74206861766520656e6f75676820667265652062616c616e636500382023205065726d697373696f6e7330202a20506f7274666f6c696f4072656e616d655f706f7274666f6c696f080c6e756d3c506f7274666f6c696f4e756d6265721c746f5f6e616d6534506f7274666f6c696f4e616d651c842052656e616d65732061206e6f6e2d64656661756c7420706f7274666f6c696f2e00242023204572726f72732101202a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2e00382023205065726d697373696f6e7330202a20506f7274666f6c696f58717569745f706f7274666f6c696f5f637573746f6479040c7069642c506f7274666f6c696f496420c0205768656e2063616c6c65642062792074686520637573746f6469616e206f662060706f7274666f6c696f5f6964602c4d0120616c6c6f77732072657475726e696e672074686520637573746f6479206f662074686520706f7274666f6c696f20746f2074686520706f7274666f6c696f206f776e657220756e696c61746572616c6c792e00242023204572726f72736101202a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f74207468652063757272656e7420637573746f6469616e206f662060706f7274666f6c696f5f6964602e00382023205065726d697373696f6e7330202a20506f7274666f6c696f606163636570745f706f7274666f6c696f5f637573746f6479041c617574685f69640c75363400011840506f7274666f6c696f437265617465640c284964656e7469747949643c506f7274666f6c696f4e756d62657234506f7274666f6c696f4e616d6518b42054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c7920637265617465642e0034202320506172616d657465727334202a206f726967696e204449444c202a20706f7274666f6c696f206e756d62657244202a20706f7274666f6c696f206e616d6540506f7274666f6c696f44656c6574656408284964656e7469747949643c506f7274666f6c696f4e756d62657214b42054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c792072656d6f7665642e0034202320506172616d657465727334202a206f726967696e204449444c202a20706f7274666f6c696f206e756d626572584d6f7665644265747765656e506f7274666f6c696f7318284964656e7469747949642c506f7274666f6c696f49642c506f7274666f6c696f4964185469636b65721c42616c616e6365304f7074696f6e3c4d656d6f3e20f4204120746f6b656e20616d6f756e7420686173206265656e206d6f7665642066726f6d206f6e6520706f7274666f6c696f20746f20616e6f746865722e0034202320506172616d657465727334202a206f726967696e204449444c202a20736f7572636520706f7274666f6c696f60202a2064657374696e6174696f6e20706f7274666f6c696f3c202a206173736574207469636b65727c202a2061737365742062616c616e6365207468617420776173206d6f76656440506f7274666f6c696f52656e616d65640c284964656e7469747949643c506f7274666f6c696f4e756d62657234506f7274666f6c696f4e616d651801012054686520706f7274666f6c696f206964656e746966696564207769746820606e756d6020686173206265656e2072656e616d656420746f20606e616d65602e0034202320506172616d657465727334202a206f726967696e204449444c202a20706f7274666f6c696f206e756d62657244202a20706f7274666f6c696f206e616d653855736572506f7274666f6c696f7308284964656e746974794964945665633c28506f7274666f6c696f4e756d6265722c20506f7274666f6c696f4e616d65293e14d820416c6c206e6f6e2d64656661756c7420706f7274666f6c696f206e756d6265727320616e64206e616d6573206f662061204449442e0034202320506172616d657465727334202a206f726967696e2044494478202a20766563746f72206f66206e756d6265722d6e616d6520706169727364506f7274666f6c696f437573746f6469616e4368616e6765640c284964656e7469747949642c506f7274666f6c696f4964284964656e74697479496418f820437573746f6479206f66206120706f7274666f6c696f20686173206265656e20676976656e20746f206120646966666572656e74206964656e746974790034202320506172616d657465727334202a206f726967696e204449443c202a20706f7274666f6c696f20696468202a20706f7274666f6c696f20637573746f6469616e20646964002454506f7274666f6c696f446f65734e6f74457869737404742054686520706f7274666f6c696f20646f65736e27742065786973742e70496e73756666696369656e74506f7274666f6c696f42616c616e636504a020496e73756666696369656e742062616c616e636520666f722061207472616e73616374696f6e2e6844657374696e6174696f6e497353616d65506f7274666f6c696f04ec2054686520736f7572636520616e642064657374696e6174696f6e20706f7274666f6c696f732073686f756c6420626520646966666572656e742e64506f7274666f6c696f4e616d65416c7265616479496e5573650435012054686520706f7274666f6c696f20636f756c646e27742062652072656e616d65642062656361757365207468652063686f73656e206e616d6520697320616c726561647920696e207573652e945365636f6e646172794b65794e6f74417574686f72697a6564466f72506f7274666f6c696f04010120546865207365636f6e64617279206b6579206973206e6f7420617574686f72697a656420746f206163636573732074686520706f7274666f6c696f2873292e54556e617574686f72697a6564437573746f6469616e04f82054686520706f72666f6c696f277320637573746f6479206973207769746820736f6d656f6e65206f74686572207468616e207468652063616c6c65722e60496e73756666696369656e74546f6b656e734c6f636b656404c02043616e206e6f7420756e6c6f636b206d6f726520746f6b656e73207468616e207768617420617265206c6f636b656444506f7274666f6c696f4e6f74456d70747904c02054686520706f7274666f6c696f207374696c6c2068617320736f6d652061737365742062616c616e6365206c6566746c446966666572656e744964656e74697479506f7274666f6c696f7304b82054686520706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e746974696573222c50726f746f636f6c466565012c50726f746f636f6c466565082042617365466565730101052850726f746f636f6c4f701c42616c616e636500400000000000000000000000000000000004150120546865206d617070696e67206f66206f7065726174696f6e206e616d657320746f2074686520626173652066656573206f662074686f7365206f7065726174696f6e732e2c436f656666696369656e74010020506f73526174696f200100000001000000041501205468652066656520636f656666696369656e74206173206120706f73697469766520726174696f6e616c20286e756d657261746f722c2064656e6f6d696e61746f72292e0108486368616e67655f636f656666696369656e74042c636f656666696369656e7420506f73526174696f10c4204368616e676573207468652066656520636f656666696369656e7420666f722074686520726f6f74206f726967696e2e00242023204572726f72738c202a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e3c6368616e67655f626173655f66656508086f702850726f746f636f6c4f7020626173655f6665651c42616c616e636510b0204368616e67657320746865206120626173652066656520666f722074686520726f6f74206f726967696e2e00242023204572726f72738c202a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e010c1846656553657408284964656e7469747949641c42616c616e63650488205468652070726f746f636f6c20666565206f6620616e206f7065726174696f6e2e38436f656666696369656e7453657408284964656e74697479496420506f73526174696f0454205468652066656520636f656666696369656e742e284665654368617267656408244163636f756e7449641c42616c616e636504342046656520636861726765642e000c68496e73756666696369656e744163636f756e7442616c616e636504b420496e73756666696369656e74206163636f756e742062616c616e636520746f2070617920746865206665652e4c556e48616e646c6564496d62616c616e636573048c204e6f742061626c6520746f2068616e646c65642074686520696d62616c616e63657368496e73756666696369656e745375627369647942616c616e636504b420496e73756666696369656e7420737562736964792062616c616e636520746f2070617920746865206665652e23245363686564756c657201245363686564756c65720c184167656e646101010538543a3a426c6f636b4e756d62657271015665633c4f7074696f6e3c5363686564756c65643c3c5420617320436f6e6669673e3a3a43616c6c2c20543a3a426c6f636b4e756d6265722c20543a3a0a50616c6c6574734f726967696e2c20543a3a4163636f756e7449643e3e3e000400044d01204974656d7320746f2062652065786563757465642c20696e64657865642062792074686520626c6f636b206e756d626572207468617420746865792073686f756c64206265206578656375746564206f6e2e184c6f6f6b75700001051c5665633c75383e6c5461736b416464726573733c543a3a426c6f636b4e756d6265723e000400040101204c6f6f6b75702066726f6d206964656e7469747920746f2074686520626c6f636b206e756d62657220616e6420696e646578206f6620746865207461736b2e3853746f7261676556657273696f6e01002052656c656173657304000c7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e0098204e6577206e6574776f726b732073746172742077697468206c6173742076657273696f6e2e0118207363686564756c6510107768656e38543a3a426c6f636b4e756d626572386d617962655f706572696f646963a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e207072696f72697479487363686564756c653a3a5072696f726974791063616c6c60426f783c3c5420617320436f6e6669673e3a3a43616c6c3e287420416e6f6e796d6f75736c79207363686564756c652061207461736b2e002c2023203c7765696768743ea0202d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c7390202d2042617365205765696768743a2032322e3239202b202e313236202a205320c2b57334202d204442205765696768743a4c20202020202d20526561643a204167656e64615020202020202d2057726974653a204167656e64613d01202d2057696c6c20757365206261736520776569676874206f662032352077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c73302023203c2f7765696768743e1863616e63656c08107768656e38543a3a426c6f636b4e756d62657214696e6465780c75333228982043616e63656c20616e20616e6f6e796d6f75736c79207363686564756c6564207461736b2e002c2023203c7765696768743ea0202d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c7394202d2042617365205765696768743a2032322e3135202b20322e383639202a205320c2b57334202d204442205765696768743a4c20202020202d20526561643a204167656e64617020202020202d2057726974653a204167656e64612c204c6f6f6b75704101202d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c73302023203c2f7765696768743e387363686564756c655f6e616d6564140869641c5665633c75383e107768656e38543a3a426c6f636b4e756d626572386d617962655f706572696f646963a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e207072696f72697479487363686564756c653a3a5072696f726974791063616c6c60426f783c3c5420617320436f6e6669673e3a3a43616c6c3e285c205363686564756c652061206e616d6564207461736b2e002c2023203c7765696768743ea0202d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c738c202d2042617365205765696768743a2032392e36202b202e313539202a205320c2b57334202d204442205765696768743a6c20202020202d20526561643a204167656e64612c204c6f6f6b75707020202020202d2057726974653a204167656e64612c204c6f6f6b75704d01202d2057696c6c20757365206261736520776569676874206f662033352077686963682073686f756c6420626520676f6f6420666f72206d6f7265207468616e203330207363686564756c65642063616c6c73302023203c2f7765696768743e3063616e63656c5f6e616d6564040869641c5665633c75383e287c2043616e63656c2061206e616d6564207363686564756c6564207461736b2e002c2023203c7765696768743ea0202d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c7394202d2042617365205765696768743a2032342e3931202b20322e393037202a205320c2b57334202d204442205765696768743a6c20202020202d20526561643a204167656e64612c204c6f6f6b75707020202020202d2057726974653a204167656e64612c204c6f6f6b75704101202d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c73302023203c2f7765696768743e387363686564756c655f61667465721014616674657238543a3a426c6f636b4e756d626572386d617962655f706572696f646963a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e207072696f72697479487363686564756c653a3a5072696f726974791063616c6c60426f783c3c5420617320436f6e6669673e3a3a43616c6c3e14ac20416e6f6e796d6f75736c79207363686564756c652061207461736b20616674657220612064656c61792e002c2023203c7765696768743e582053616d65206173205b607363686564756c65605d2e302023203c2f7765696768743e507363686564756c655f6e616d65645f6166746572140869641c5665633c75383e14616674657238543a3a426c6f636b4e756d626572386d617962655f706572696f646963a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e207072696f72697479487363686564756c653a3a5072696f726974791063616c6c60426f783c3c5420617320436f6e6669673e3a3a43616c6c3e1494205363686564756c652061206e616d6564207461736b20616674657220612064656c61792e002c2023203c7765696768743e702053616d65206173205b607363686564756c655f6e616d6564605d2e302023203c2f7765696768743e010c245363686564756c6564082c426c6f636b4e756d6265720c7533320494205363686564756c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d2043616e63656c6564082c426c6f636b4e756d6265720c75333204902043616e63656c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d28446973706174636865640c605461736b416464726573733c426c6f636b4e756d6265723e3c4f7074696f6e3c5665633c75383e3e384469737061746368526573756c7404ac204469737061746368656420736f6d65207461736b2e205c5b7461736b2c2069642c20726573756c745c5d0010404661696c6564546f5363686564756c650468204661696c656420746f207363686564756c6520612063616c6c204e6f74466f756e6404802043616e6e6f742066696e6420746865207363686564756c65642063616c6c2e5c546172676574426c6f636b4e756d626572496e5061737404a820476976656e2074617267657420626c6f636b206e756d62657220697320696e2074686520706173742e4852657363686564756c654e6f4368616e676504f42052657363686564756c65206661696c6564206265636175736520697420646f6573206e6f74206368616e6765207363686564756c65642074696d652e2428536574746c656d656e740128536574746c656d656e74442456656e7565496e666f0001051c56656e756549641456656e7565000400049820496e666f2061626f757420612076656e75652e2076656e75655f6964202d3e2076656e75651c44657461696c730101051c56656e756549643056656e756544657461696c7300040008e420467265652d666f726d20746578742061626f757420612076656e75652e2076656e75655f6964202d3e206056656e756544657461696c736060204f6e6c79206e656564656420666f72207468652055492e4456656e7565496e737472756374696f6e730102051c56656e7565496434496e737472756374696f6e49640828290500107020496e737472756374696f6e7320756e64657220612076656e75652e60204f6e6c79206e656564656420666f72207468652055492e00842076656e75655f6964202d3e20696e737472756374696f6e5f6964202d3e2028293056656e75655369676e6572730102051c56656e7565496430543a3a4163636f756e74496410626f6f6c05040004e4205369676e65727320616c6c6f776564206279207468652076656e75652e202876656e75655f69642c207369676e657229202d3e20626f6f6c285573657256656e756573010105284964656e746974794964305665633c56656e756549643e000400047101204172726179206f662076656e756573206372656174656420627920616e206964656e746974792e204f6e6c79206e656564656420666f72207468652055492e204964656e746974794964202d3e205665633c76656e75655f69643e48496e737472756374696f6e44657461696c7301010534496e737472756374696f6e496498496e737472756374696f6e3c543a3a4d6f6d656e742c20543a3a426c6f636b4e756d6265723e00540000000000000000000000000000000000000000000411012044657461696c732061626f757420616e20696e737472756374696f6e2e20696e737472756374696f6e5f6964202d3e20696e737472756374696f6e5f64657461696c733c496e737472756374696f6e4c65677301020534496e737472756374696f6e4964144c656749640c4c65670579010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ec204c65677320756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656750496e737472756374696f6e4c656753746174757301020534496e737472756374696f6e4964144c656749645c4c65675374617475733c543a3a4163636f756e7449643e05040004310120537461747573206f662061206c656720756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656753746174757364496e737472756374696f6e41666669726d7350656e64696e6701010534496e737472756374696f6e49640c75363400200000000000000000048101204e756d626572206f662061666669726d6174696f6e732070656e64696e67206265666f726520696e737472756374696f6e2069732065786563757465642e20696e737472756374696f6e5f6964202d3e2061666669726d5f70656e64696e673c41666669726d73526563656976656401020534496e737472756374696f6e49642c506f7274666f6c696f49644441666669726d6174696f6e53746174757305040004990120547261636b732061666669726d6174696f6e7320726563656976656420666f7220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c20636f756e7465725f706172747929202d3e2041666669726d6174696f6e537461747573405573657241666669726d6174696f6e730102052c506f7274666f6c696f496434496e737472756374696f6e49644441666669726d6174696f6e5374617475730504000855012048656c70732061207573657220747261636b2074686569722070656e64696e6720696e737472756374696f6e7320616e642061666669726d6174696f6e7320286f6e6c79206e656564656420666f72205549292ed42028636f756e7465725f70617274792c20696e737472756374696f6e5f696429202d3e2041666669726d6174696f6e5374617475733052656365697074735573656401020530543a3a4163636f756e7449640c75363410626f6f6c02040004150120547261636b7320726564656d7074696f6e206f662072656365697074732e20287369676e65722c20726563656970745f75696429202d3e20726563656970745f757365643856656e756546696c746572696e67010102185469636b657210626f6f6c00040004fd0120547261636b73206966206120746f6b656e2068617320656e61626c65642066696c746572696e672076656e75657320746861742063616e2063726561746520696e737472756374696f6e7320696e766f6c76696e6720746865697220746f6b656e2e205469636b6572202d3e2066696c746572696e675f656e61626c65643856656e7565416c6c6f774c697374010202185469636b65721c56656e7565496410626f6f6c05040008c5012056656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c6172207469636b65722e204f6e6c7920757365642069662066696c746572696e6720697320656e61626c65642e7820287469636b65722c2076656e75655f696429202d3e20616c6c6f7765643056656e7565436f756e74657201001c56656e75654964200000000000000000041901204e756d626572206f662076656e75657320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d6265722948496e737472756374696f6e436f756e746572010034496e737472756374696f6e4964200000000000000000043101204e756d626572206f6620696e737472756374696f6e7320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d626572293853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0144306372656174655f76656e75650c1c64657461696c733056656e756544657461696c731c7369676e657273445665633c543a3a4163636f756e7449643e0c7479702456656e756554797065145c205265676973746572732061206e65772076656e75652e00a8202a206064657461696c7360202d2045787472612064657461696c732061626f757420612076656e75654101202a20607369676e65727360202d204172726179206f66207369676e65727320746861742061726520616c6c6f77656420746f207369676e20726563656970747320666f7220746869732076656e756598202a206074797060202d2054797065206f662076656e7565206265696e672063726561746564507570646174655f76656e75655f64657461696c73080869641c56656e756549641c64657461696c733056656e756544657461696c731060204564697420612076656e756527732064657461696c732e00b8202a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742ec4202a206064657461696c7360207370656369666965732074686520757064617465642076656e75652064657461696c732e447570646174655f76656e75655f74797065080869641c56656e756549640c7479702456656e7565547970651054204564697420612076656e7565277320747970652e00b8202a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742eb8202a206074797065602073706563696669657320746865206e65772074797065206f66207468652076656e75652e3c6164645f696e737472756374696f6e142076656e75655f69641c56656e756549643c736574746c656d656e745f7479706578536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e2874726164655f64617465444f7074696f6e3c543a3a4d6f6d656e743e2876616c75655f64617465444f7074696f6e3c543a3a4d6f6d656e743e106c656773205665633c4c65673e306020416464732061206e657720696e737472756374696f6e2e0030202320417267756d656e7473f0202a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e0d01202a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c6564610120202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e5501202a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e7101202a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b8202a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e00242023205765696768749c20603935305f3030305f303030202b20315f3030305f303030202a206c6567732e6c656e282960686164645f616e645f61666669726d5f696e737472756374696f6e182076656e75655f69641c56656e756549643c736574746c656d656e745f7479706578536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e2874726164655f64617465444f7074696f6e3c543a3a4d6f6d656e743e2876616c75655f64617465444f7074696f6e3c543a3a4d6f6d656e743e106c656773205665633c4c65673e28706f7274666f6c696f73405665633c506f7274666f6c696f49643e3490204164647320616e642061666669726d732061206e657720696e737472756374696f6e2e0030202320417267756d656e7473f0202a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e0d01202a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c6564610120202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e5501202a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e7101202a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b8202a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e7101202a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2075736520696e20746869732061666669726d6174696f6e732e00382023205065726d697373696f6e7330202a20506f7274666f6c696f4861666669726d5f696e737472756374696f6e0c08696434496e737472756374696f6e496428706f7274666f6c696f73405665633c506f7274666f6c696f49643e386d61785f6c6567735f636f756e740c75333224c02050726f766964652061666669726d6174696f6e20746f20616e206578697374696e6720696e737472756374696f6e2e0030202320417267756d656e74738c202a2060696460202d20496e737472756374696f6e20696420746f2061666669726d2e6d01202a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2061666669726d207468697320696e737472756374696f6e2efc202a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f206265202061666669726d65642e00382023205065726d697373696f6e7330202a20506f7274666f6c696f5077697468647261775f61666669726d6174696f6e0c08696434496e737472756374696f6e496428706f7274666f6c696f73405665633c506f7274666f6c696f49643e386d61785f6c6567735f636f756e740c75333224c420576974686472617720616e2061666669726d6174696f6e20666f72206120676976656e20696e737472756374696f6e2e0030202320417267756d656e7473f0202a2060696460202d20496e737472756374696f6e20696420666f7220746861742061666669726d6174696f6e206765742077697468647261776e2e6101202a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2077697468647261772061666669726d6174696f6e2e0501202a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f20626520756e2d61666669726d65642e00382023205065726d697373696f6e7330202a20506f7274666f6c696f4872656a6563745f696e737472756374696f6e0c08696434496e737472756374696f6e496424706f7274666f6c696f2c506f7274666f6c696f49642c6e756d5f6f665f6c6567730c75333224842052656a6563747320616e206578697374696e6720696e737472756374696f6e2e0030202320417267756d656e74738c202a2060696460202d20496e737472756374696f6e20696420746f2072656a6563742ed4202a2060706f7274666f6c696f60202d20506f7274666f6c696f20746f2072656a6563742074686520696e737472756374696f6e2ed4202a20606e756d5f6f665f6c65677360202d204e756d626572206f66206c65677320696e2074686520696e737472756374696f6e2e00382023205065726d697373696f6e7330202a20506f7274666f6c696f5061666669726d5f776974685f72656365697074731008696434496e737472756374696f6e49643c726563656970745f64657461696c73dc5665633c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e28706f7274666f6c696f73405665633c506f7274666f6c696f49643e386d61785f6c6567735f636f756e740c75333230d0204163636570747320616e20696e737472756374696f6e20616e6420636c61696d732061207369676e656420726563656970742e0030202320417267756d656e747380202a2060696460202d2054617267657420696e737472756374696f6e2069642eac202a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d8202a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e90202a20607369676e657260202d205369676e6572206f662074686520726563656970742e88202a20607369676e65645f6461746160202d205369676e656420726563656970742e7d01202a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f20616363657074207468697320696e737472756374696f6e207769746800382023205065726d697373696f6e7330202a20506f7274666f6c696f34636c61696d5f726563656970740808696434496e737472756374696f6e49643c726563656970745f64657461696c73c85265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e2c6420436c61696d732061207369676e656420726563656970742e0030202320417267756d656e7473c0202a2060696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742eac202a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d8202a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e90202a20607369676e657260202d205369676e6572206f662074686520726563656970742e88202a20607369676e65645f6461746160202d205369676e656420726563656970742e00382023205065726d697373696f6e7330202a20506f7274666f6c696f3c756e636c61696d5f726563656970740838696e737472756374696f6e5f696434496e737472756374696f6e4964186c65675f6964144c65674964209c20556e636c61696d7320612070726576696f75736c7920636c61696d656420726563656970742e0030202320417267756d656e7473f0202a2060696e737472756374696f6e5f696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742eac202a20606c65675f696460202d20546172676574206c656720696420666f7220746865207265636569707400382023205065726d697373696f6e7330202a20506f7274666f6c696f4c7365745f76656e75655f66696c746572696e6708187469636b6572185469636b65721c656e61626c656410626f6f6c20c420456e61626c6573206f722064697361626c65642076656e75652066696c746572696e6720666f72206120746f6b656e2e0030202320417267756d656e7473b8202a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e1d01202a2060656e61626c656460202d20426f6f6c65616e20746861742064656369646573206966207468652066696c746572696e672073686f756c6420626520656e61626c65642e00382023205065726d697373696f6e7320202a20417373657430616c6c6f775f76656e75657308187469636b6572185469636b65721876656e756573305665633c56656e756549643e1c110120416c6c6f7773206164646974696f6e616c2076656e75657320746f2063726561746520696e737472756374696f6e7320696e766f6c76696e6720616e2061737365742e00b8202a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e8101202a206076656e75657360202d204172726179206f662076656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e00382023205065726d697373696f6e7320202a2041737365743c646973616c6c6f775f76656e75657308187469636b6572185469636b65721876656e756573305665633c56656e756549643e1c6d01205265766f6b6573207065726d697373696f6e20676976656e20746f2076656e75657320666f72206372656174696e6720696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c61722061737365742e00b8202a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2ea901202a206076656e75657360202d204172726179206f662076656e756573207468617420617265206e6f206c6f6e67657220616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e00382023205065726d697373696f6e7320202a2041737365745c6368616e67655f726563656970745f76616c6964697479082c726563656970745f7569640c7536342076616c696469747910626f6f6c140101204d61726b732061207265636569707420697373756564206279207468652063616c6c657220617320636c61696d6564206f72206e6f7420636c61696d65642ec501205468697320616c6c6f77732074686520726563656970742069737375657220746f20696e76616c696461746520616e20616c7265616479206973737565642072656365697074206f7220726576616c696461746520616e20616c726561647920636c61696d656420726563656970742e00b0202a2060726563656970745f75696460202d20556e69717565204944206f662074686520726563656970742eb0202a206076616c696469747960202d204e65772076616c6964697479206f662074686520726563656970742e74657865637574655f7363686564756c65645f696e737472756374696f6e0808696434496e737472756374696f6e49642c5f6c6567735f636f756e740c75333204850120526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f20657865637574652061207363686564756c656420736574746c656d656e7420696e737472756374696f6e2e5872657363686564756c655f696e737472756374696f6e0408696434496e737472756374696f6e496428882052657363686564756c65732061206661696c656420696e737472756374696f6e2e0030202320417267756d656e7473b8202a2060696460202d2054617267657420696e737472756374696f6e20696420746f2072657363686564756c652e00382023205065726d697373696f6e7330202a20506f7274666f6c696f00242023204572726f72734101202a2060496e737472756374696f6e4e6f744661696c656460202d20496e737472756374696f6e206e6f7420696e2061206661696c6564207374617465206f7220646f6573206e6f742065786973742e014c3056656e75654372656174656410284964656e7469747949641c56656e756549643056656e756544657461696c732456656e75655479706504f02041206e65772076656e756520686173206265656e206372656174656420286469642c2076656e75655f69642c2064657461696c732c2074797065294c56656e756544657461696c73557064617465640c284964656e7469747949641c56656e756549643056656e756544657461696c7304190120416e206578697374696e672076656e756527732064657461696c7320686173206265656e207570646174656420286469642c2076656e75655f69642c2064657461696c73294056656e756554797065557064617465640c284964656e7469747949641c56656e756549642456656e75655479706504010120416e206578697374696e672076656e75652773207479706520686173206265656e207570646174656420286469642c2076656e75655f69642c20747970652948496e737472756374696f6e437265617465641c284964656e7469747949641c56656e7565496434496e737472756374696f6e49646c536574746c656d656e74547970653c426c6f636b4e756d6265723e384f7074696f6e3c4d6f6d656e743e384f7074696f6e3c4d6f6d656e743e205665633c4c65673e088c2041206e657720696e737472756374696f6e20686173206265656e20637265617465643d0120286469642c2076656e75655f69642c20696e737472756374696f6e5f69642c20736574746c656d656e745f747970652c2074726164655f646174652c2076616c75655f646174652c206c656773294c496e737472756374696f6e41666669726d65640c284964656e7469747949642c506f7274666f6c696f496434496e737472756374696f6e496404090120416e20696e737472756374696f6e20686173206265656e2061666669726d656420286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964295041666669726d6174696f6e57697468647261776e0c284964656e7469747949642c506f7274666f6c696f496434496e737472756374696f6e4964040d0120416e2061666669726d6174696f6e20686173206265656e2077697468647261776e20286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964294c496e737472756374696f6e52656a656374656408284964656e74697479496434496e737472756374696f6e496404dc20416e20696e737472756374696f6e20686173206265656e2072656a656374656420286469642c20696e737472756374696f6e5f6964293852656365697074436c61696d656418284964656e74697479496434496e737472756374696f6e4964144c656749640c753634244163636f756e7449643c526563656970744d657461646174610481012041207265636569707420686173206265656e20636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e65722c2072656365697074206d6574616461746129585265636569707456616c69646974794368616e67656410284964656e746974794964244163636f756e7449640c75363410626f6f6c0411012041207265636569707420686173206265656e20696e76616c69646174656420286469642c207369676e65722c20726563656970745f7569642c2076616c6964697479294052656365697074556e636c61696d656414284964656e74697479496434496e737472756374696f6e4964144c656749640c753634244163636f756e7449640441012041207265636569707420686173206265656e20756e636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e6572293856656e756546696c746572696e670c284964656e746974794964185469636b657210626f6f6c046d012056656e75652066696c746572696e6720686173206265656e20656e61626c6564206f722064697361626c656420666f722061207469636b657220286469642c207469636b65722c2066696c746572696e675f656e61626c6564293456656e756573416c6c6f7765640c284964656e746974794964185469636b6572305665633c56656e756549643e04e02056656e75657320616464656420746f20616c6c6f77206c69737420286469642c207469636b65722c207665633c76656e75655f69643e293456656e756573426c6f636b65640c284964656e746974794964185469636b6572305665633c56656e756549643e04e02056656e75657320616464656420746f20626c6f636b206c69737420286469642c207469636b65722c207665633c76656e75655f69643e29484c65674661696c6564457865637574696f6e0c284964656e74697479496434496e737472756374696f6e4964144c6567496404e020457865637574696f6e206f662061206c6567206661696c656420286469642c20696e737472756374696f6e5f69642c206c65675f69642944496e737472756374696f6e4661696c656408284964656e74697479496434496e737472756374696f6e496404cc20496e737472756374696f6e206661696c656420657865637574696f6e20286469642c20696e737472756374696f6e5f6964294c496e737472756374696f6e457865637574656408284964656e74697479496434496e737472756374696f6e496404dc20496e737472756374696f6e206578656375746564207375636365737366756c6c79286469642c20696e737472756374696f6e5f6964294456656e7565556e617574686f72697a65640c284964656e746974794964185469636b65721c56656e756549640405012056656e7565206e6f742070617274206f662074686520746f6b656e277320616c6c6f77206c69737420286469642c205469636b65722c2076656e75655f696429405363686564756c696e674661696c6564043444697370617463684572726f720484205363686564756c696e67206f6620696e737472756374696f6e206661696c732e58496e737472756374696f6e52657363686564756c656408284964656e74697479496434496e737472756374696f6e4964087020496e737472756374696f6e2069732072657363686564756c65642e74202863616c6c6572204449442c20696e737472756374696f6e5f696429006430496e76616c696456656e756504582056656e756520646f6573206e6f742065786973742e30556e617574686f72697a656404ac2053656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e3c4e6f50656e64696e6741666669726d04d4204e6f2070656e64696e672061666669726d6174696f6e20666f72207468652070726f766964656420696e737472756374696f6e2e58496e737472756374696f6e4e6f7441666669726d6564048c20496e737472756374696f6e20686173206e6f74206265656e2061666669726d65642e54496e737472756374696f6e4e6f7450656e64696e6704bc2050726f766964656420696e737472756374696f6e206973206e6f742070656e64696e6720657865637574696f6e2e50496e737472756374696f6e4e6f744661696c656404bc2050726f766964656420696e737472756374696f6e206973206e6f74206661696c696e6720657865637574696f6e2e344c65674e6f7450656e64696e67049c2050726f7669646564206c6567206973206e6f742070656e64696e6720657865637574696f6e2e48556e617574686f72697a65645369676e6572049c205369676e6572206973206e6f7420617574686f72697a6564206279207468652076656e75652e5452656365697074416c7265616479436c61696d65640458205265636569707420616c726561647920757365642e44526563656970744e6f74436c61696d656404582052656365697074206e6f742075736564207965742e44556e617574686f72697a656456656e756504a82056656e756520646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e484661696c6564546f4c6f636b546f6b656e73042501205768696c652061666669726d696e6720746865207472616e736665722c2073797374656d206661696c656420746f206c6f636b207468652061737365747320696e766f6c7665642e44496e737472756374696f6e4661696c6564047c20496e737472756374696f6e206661696c656420746f20657865637574652e5c496e737472756374696f6e4461746573496e76616c6964047820496e737472756374696f6e2068617320696e76616c696420646174657370496e737472756374696f6e536574746c65426c6f636b50617373656404ac20496e737472756374696f6e27732074617267657420736574746c6520626c6f636b20726561636865642e40496e76616c69645369676e6174757265047c204f6666636861696e207369676e617475726520697320696e76616c69642e4853616d6553656e646572526563656976657204882053656e64657220616e6420726563656976657220617265207468652073616d652e44506f7274666f6c696f4d69736d6174636804290120506f7274666f6c696f20696e207265636569707420646f6573206e6f74206d61746368207769746820706f7274666f6c696f732070726f76696465642062792074686520757365722e44536574746c654f6e50617374426c6f636b046501205468652070726f766964656420736574746c656d656e7420626c6f636b206e756d62657220697320696e20746865207061737420616e642063616e6e6f74206265207573656420627920746865207363686564756c65722e4c4e6f506f7274666f6c696f50726f766964656404410120506f7274666f6c696f20626173656420616374696f6e732072657175697265206174206c65617374206f6e6520706f7274666f6c696f20746f2062652070726f766964656420617320696e7075742e6c556e657870656374656441666669726d6174696f6e537461747573044901205468652063757272656e7420696e737472756374696f6e2061666669726d6174696f6e2073746174757320646f6573206e6f7420737570706f7274207468652072657175657374656420616374696f6e2e404661696c6564546f5363686564756c650490205363686564756c696e67206f6620616e20696e737472756374696f6e206661696c732e404c6567436f756e74546f6f536d616c6c04a901204c65677320636f756e742073686f756c64206d61746368657320776974682074686520746f74616c206e756d626572206f66206c65677320696e20776869636820676976656e20706f7274666f6c696f20616374206173206066726f6d5f706f7274666f6c696f602e48556e6b6e6f776e496e737472756374696f6e047820496e737472756374696f6e2073746174757320697320756e6b6e6f776e64496e737472756374696f6e486173546f6f4d616e794c65677304c8204d6178696d756d206c65677320746861742063616e20626520696e20612073696e676c6520696e737472756374696f6e2e2528537461746973746963730128537461746973746963730c584163746976655472616e736665724d616e6167657273010102185469636b6572505665633c5472616e736665724d616e616765723e00040004c8205472616e73666572206d616e61676572732063757272656e746c7920656e61626c656420666f7220616e2041737365742e54496e766573746f72436f756e745065724173736574010102185469636b65721c436f756e7465720020000000000000000004a4204e756d626572206f662063757272656e7420696e766573746f727320696e20616e2061737365742e384578656d7074456e74697469657301020264285469636b65722c205472616e736665724d616e61676572291c53636f7065496410626f6f6c0204000c490120456e746974696573206578656d70742066726f6d207472616e73666572206d616e61676572732e204578656d7074696f6e7320726571756972656d656e747320617265206261736564206f6e20544d532e4d0120544d73206d61792072657175697265206a757374207468652073656e6465722c206a757374207468652072656365697665722c20626f7468206f722065697468657220746f206265206578656d707465642e3d012043544d2072657175697265732073656e64657220746f206265206578656d70746564207768696c652050544d20726571756972657320726563656976657220746f206265206578656d707465642e0110506164645f7472616e736665725f6d616e6167657208187469636b6572185469636b6572506e65775f7472616e736665725f6d616e616765723c5472616e736665724d616e61676572387420416464732061206e6577207472616e73666572206d616e616765722e0030202320417267756d656e7473c901202a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e1501202a20607469636b657260207469636b657220666f7220776869636820746865207472616e73666572206d616e616765727320617265206265696e6720757064617465642edc202a20606e65775f7472616e736665725f6d616e6167657260205472616e73666572206d616e61676572206265696e672061646465642e00242023204572726f7273f4202a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722e6901202a20604475706c69636174655472616e736665724d616e616765726020696620606e65775f7472616e736665725f6d616e616765726020697320616c726561647920656e61626c656420666f7220746865207469636b65722e3901202a20605472616e736665724d616e61676572734c696d697452656163686564602069662074686520607469636b65726020616c726561647920686173206d617820544d7320617474616368656400382023205065726d697373696f6e7320202a2041737365745c72656d6f76655f7472616e736665725f6d616e6167657208187469636b6572185469636b6572407472616e736665725f6d616e616765723c5472616e736665724d616e6167657234702052656d6f7665732061207472616e73666572206d616e616765722e0030202320417267756d656e7473c901202a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e1501202a20607469636b657260207469636b657220666f7220776869636820746865207472616e73666572206d616e616765727320617265206265696e6720757064617465642ed4202a20607472616e736665725f6d616e6167657260205472616e73666572206d616e61676572206265696e672072656d6f7665642e00242023204572726f7273f4202a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722ead01202a20605472616e736665724d616e616765724d697373696e6760206966206061737365745f636f6d706c69616e63656020636f6e7461696e73206d756c7469706c6520656e74726965732077697468207468652073616d652060726571756972656d656e745f6964602e00382023205065726d697373696f6e7320202a204173736574546164645f6578656d707465645f656e7469746965730c187469636b6572185469636b6572407472616e736665725f6d616e616765723c5472616e736665724d616e61676572446578656d707465645f656e746974696573305665633c53636f706549643e34a0204578656d707420656e7469746965732066726f6d2061207472616e73666572206d616e616765720030202320417267756d656e7473c901202a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e0901202a20607469636b657260207469636b657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e5901202a20607472616e736665725f6d616e6167657260205472616e73666572206d616e6167657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e3d01202a20606578656d707465645f656e746974696573602053636f706549647320666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e00242023204572726f7273f4202a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722e00382023205065726d697373696f6e7320202a2041737365746072656d6f76655f6578656d707465645f656e7469746965730c187469636b6572185469636b6572407472616e736665725f6d616e616765723c5472616e736665724d616e6167657220656e746974696573305665633c53636f706549643e34e82072656d6f766520656e7469746965732066726f6d206578656d7074696f6e206c697374206f662061207472616e73666572206d616e616765720030202320417267756d656e7473c901202a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e0901202a20607469636b657260207469636b657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e5901202a20607472616e736665725f6d616e6167657260205472616e73666572206d616e6167657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e1d01202a206073636f70655f696473602053636f706549647320666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e00242023204572726f7273f4202a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722e00382023205065726d697373696f6e7320202a2041737365740110505472616e736665724d616e6167657241646465640c284964656e746974794964185469636b65723c5472616e736665724d616e6167657204882041206e6577207472616e73666572206d616e61676572207761732061646465642e585472616e736665724d616e6167657252656d6f7665640c284964656e746974794964185469636b65723c5472616e736665724d616e6167657204a820416e206578697374696e67207472616e73666572206d616e61676572207761732072656d6f7665642e3c4578656d7074696f6e73416464656410284964656e746974794964185469636b65723c5472616e736665724d616e61676572305665633c53636f706549643e04b4206053636f706549646073207765726520616464656420746f20746865206578656d7074696f6e206c6973742e444578656d7074696f6e7352656d6f76656410284964656e746974794964185469636b65723c5472616e736665724d616e61676572305665633c53636f706549643e04c4206053636f70654964607320776572652072656d6f7665642066726f6d20746865206578656d7074696f6e206c6973742e046c4d61785472616e736665724d616e616765727350657241737365740c75333210030000000010604475706c69636174655472616e736665724d616e61676572049020546865207472616e73666572206d616e6167657220616c726561647920657869737473585472616e736665724d616e616765724d697373696e670480205472616e73666572206d616e61676572206973206e6f7420656e61626c65643c496e76616c69645472616e736665720454205472616e73666572206e6f7420616c6c6f776564705472616e736665724d616e61676572734c696d69745265616368656404150120546865206c696d6974206f66207472616e73666572206d616e616765727320616c6c6f77656420666f7220616e20617373657420686173206265656e2072656163686564260c53746f010c53746f0c2c46756e6472616973657273000202185469636b65723046756e6472616973657249645446756e647261697365723c543a3a4d6f6d656e743e05040008b020416c6c2066756e64726169736572732074686174206172652063757272656e746c792072756e6e696e672e9820287469636b65722c2066756e647261697365725f696429202d3e2046756e647261697365723c46756e64726169736572436f756e74010102185469636b65723046756e64726169736572496400200000000000000000049c20546f74616c2066756e6472616973657273206372656174656420666f72206120746f6b656e2e3c46756e647261697365724e616d6573010202185469636b65723046756e6472616973657249643846756e647261697365724e616d6505040008b4204e616d6520666f72207468652046756e647261697365722e204f6e6c792075736564206f6666636861696e2eac20287469636b65722c2066756e647261697365725f696429202d3e2046756e64726169736572206e616d650118446372656174655f66756e6472616973657228486f66666572696e675f706f7274666f6c696f2c506f7274666f6c696f4964386f66666572696e675f6173736574185469636b65724472616973696e675f706f7274666f6c696f2c506f7274666f6c696f49643472616973696e675f6173736574185469636b6572147469657273385665633c5072696365546965723e2076656e75655f69641c56656e75654964147374617274444f7074696f6e3c543a3a4d6f6d656e743e0c656e64444f7074696f6e3c543a3a4d6f6d656e743e486d696e696d756d5f696e766573746d656e741c42616c616e63653c66756e647261697365725f6e616d653846756e647261697365724e616d654064204372656174652061206e65772066756e647261697365722e001101202a20606f66666572696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e672074686520606f66666572696e675f6173736574602ea8202a20606f66666572696e675f617373657460202d204173736574206265696e67206f6666657265642e0901202a206072616973696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e6720746865206072616973696e675f6173736574602e3901202a206072616973696e675f617373657460202d204173736574206265696e672065786368616e67656420666f7220606f66666572696e675f617373657460206f6e20696e766573746d656e742eec202a2060746965727360202d20507269636520746965727320746f2063686172676520696e766573746f7273206f6e20696e766573746d656e742eac202a206076656e75655f696460202d2056656e756520746f2068616e646c6520736574746c656d656e742e5101202a2060737461727460202d2046756e647261697365722073746172742074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c20737461727420696d6d6564696174656c792e2d01202a2060656e6460202d2046756e6472616973657220656e642074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c206e65766572206578706972652ed101202a20606d696e696d756d5f696e766573746d656e7460202d204d696e696d756d20616d6f756e74206f66206072616973696e675f617373657460207468617420616e20696e766573746f72206e6565647320746f207370656e6420746f20696e7665737420696e20746869732072616973652ef4202a206066756e647261697365725f6e616d6560202d2046756e64726169736572206e616d652c206f6e6c79207573656420696e20746865205549732e00382023205065726d697373696f6e7320202a20417373657430202a20506f7274666f6c696f18696e766573741c50696e766573746d656e745f706f7274666f6c696f2c506f7274666f6c696f49644466756e64696e675f706f7274666f6c696f2c506f7274666f6c696f4964386f66666572696e675f6173736574185469636b65720869643046756e6472616973657249643c70757263686173655f616d6f756e741c42616c616e6365246d61785f70726963653c4f7074696f6e3c42616c616e63653e1c72656365697074e84f7074696f6e3c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e306020496e7665737420696e20612066756e647261697365722e004501202a2060696e766573746d656e745f706f7274666f6c696f60202d20506f7274666f6c696f207468617420606f66666572696e675f6173736574602077696c6c206265206465706f736974656420696e2e0501202a206066756e64696e675f706f7274666f6c696f60202d20506f7274666f6c696f20746861742077696c6c2066756e642074686520696e766573746d656e742ea4202a20606f66666572696e675f617373657460202d20417373657420746f20696e7665737420696e2eb0202a2060696460202d204944206f66207468652066756e6472616973657220746f20696e7665737420696e2ef8202a206070757263686173655f616d6f756e7460202d20416d6f756e74206f6620606f66666572696e675f61737365746020746f2070757263686173652ebd01202a20606d61785f707269636560202d204d6178696d756d20707269636520746f207061792070657220756e6974206f6620606f66666572696e675f6173736574602c20496620604e6f6e6560746865726520617265206e6f20636f6e73747261696e7473206f6e2070726963652e6d01202a20607265636569707460202d204f66662d636861696e207265636569707420746f2075736520696e7374656164206f66206f6e2d636861696e2062616c616e636520696e206066756e64696e675f706f7274666f6c696f602e00382023205065726d697373696f6e7330202a20506f7274666f6c696f44667265657a655f66756e6472616973657208386f66666572696e675f6173736574185469636b65720869643046756e6472616973657249641c5420467265657a6520612066756e647261697365722e0098202a20606f66666572696e675f617373657460202d20417373657420746f20667265657a652ea4202a2060696460202d204944206f66207468652066756e6472616973657220746f20667265657a652e00382023205065726d697373696f6e7320202a2041737365744c756e667265657a655f66756e6472616973657208386f66666572696e675f6173736574185469636b65720869643046756e6472616973657249641c5c20556e667265657a6520612066756e647261697365722e00a0202a20606f66666572696e675f617373657460202d20417373657420746f20756e667265657a652eac202a2060696460202d204944206f66207468652066756e6472616973657220746f20756e667265657a652e00382023205065726d697373696f6e7320202a204173736574606d6f646966795f66756e647261697365725f77696e646f7710386f66666572696e675f6173736574185469636b65720869643046756e64726169736572496414737461727424543a3a4d6f6d656e740c656e64444f7074696f6e3c543a3a4d6f6d656e743e24b8204d6f64696679207468652074696d652077696e646f7720612066756e64726169736572206973206163746976650098202a20606f66666572696e675f617373657460202d20417373657420746f206d6f646966792ea4202a2060696460202d204944206f66207468652066756e6472616973657220746f206d6f646966792ea4202a2060737461727460202d204e6577207374617274206f66207468652066756e647261697365722ebc202a2060656e6460202d204e657720656e64206f66207468652066756e6472616973657220746f206d6f646966792e00382023205065726d697373696f6e7320202a2041737365741073746f7008386f66666572696e675f6173736574185469636b65720869643046756e6472616973657249641c4c2053746f7020612066756e647261697365722e0090202a20606f66666572696e675f617373657460202d20417373657420746f2073746f702e9c202a2060696460202d204944206f66207468652066756e6472616973657220746f2073746f702e00382023205065726d697373696f6e7320202a20417373657401184446756e647261697365724372656174656410284964656e7469747949643046756e6472616973657249643846756e647261697365724e616d654846756e647261697365723c4d6f6d656e743e088c2041206e65772066756e6472616973657220686173206265656e20637265617465642e010120284167656e74204449442c2066756e647261697365722069642c2066756e64726169736572206e616d652c2066756e647261697365722064657461696c732920496e76657374656418284964656e7469747949643046756e647261697365724964185469636b6572185469636b65721c42616c616e63651c42616c616e636508a020416e20696e766573746f7220696e76657374656420696e207468652066756e647261697365722e89012028496e766573746f722c2066756e647261697365725f69642c206f66666572696e6720746f6b656e2c20726169736520746f6b656e2c206f66666572696e675f746f6b656e5f616d6f756e742c2072616973655f746f6b656e5f616d6f756e74294046756e6472616973657246726f7a656e08284964656e7469747949643046756e647261697365724964087820412066756e6472616973657220686173206265656e2066726f7a656e2e6c20284167656e74204449442c2066756e64726169736572206964294846756e64726169736572556e66726f7a656e08284964656e7469747949643046756e647261697365724964088020412066756e6472616973657220686173206265656e20756e66726f7a656e2e6c20284167656e74204449442c2066756e64726169736572206964296046756e6472616973657257696e646f774d6f64696669656418204576656e744469643046756e647261697365724964184d6f6d656e74384f7074696f6e3c4d6f6d656e743e184d6f6d656e74384f7074696f6e3c4d6f6d656e743e089c20412066756e647261697365722077696e646f7720686173206265656e206d6f6469666965642e0d0120284167656e74204449442c2066756e647261697365722069642c206f6c645f73746172742c206f6c645f656e642c206e65775f73746172742c206e65775f656e64294046756e64726169736572436c6f73656408284964656e7469747949643046756e647261697365724964087c20412066756e6472616973657220686173206265656e2073746f707065642e6c20284167656e74204449442c2066756e6472616973657220696429003030556e617574686f72697a656404ac2053656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e204f766572666c6f77049020416e2061726974686d65746963206f7065726174696f6e206f766572666c6f7765642e6c496e73756666696369656e74546f6b656e7352656d61696e696e670484204e6f7420656e6f75676820746f6b656e73206c65667420666f722073616c652e4846756e647261697365724e6f74466f756e6404582046756e64726169736572206e6f7420666f756e642e4446756e647261697365724e6f744c69766504a02046756e64726169736572206973206569746865722066726f7a656e206f722073746f707065642e4046756e64726169736572436c6f73656404b02046756e6472616973657220686173206265656e20636c6f7365642f73746f7070656420616c72656164792e4446756e647261697365724578706972656404d420496e746572616374696e67207769746820612066756e6472616973657220706173742074686520656e6420604d6f6d656e74602e30496e76616c696456656e7565046c20416e20696e76616c69642076656e75652070726f76696465642e44496e76616c69645072696365546965727304290120416e20696e646976696475616c20707269636520746965722077617320696e76616c6964206f72206120736574206f662070726963652074696572732077617320696e76616c69642e54496e76616c69644f66666572696e6757696e646f770461012057696e646f77202873746172742074696d652c20656e642074696d65292068617320696e76616c696420706172616d65746572732c20652e672073746172742074696d6520697320616674657220656e642074696d652e404d61785072696365457863656564656404c0205072696365206f662074686520696e766573746d656e7420657863656564656420746865206d61782070726963652e58496e766573746d656e74416d6f756e74546f6f4c6f7704ec20496e766573746d656e7420616d6f756e74206973206c6f776572207468616e206d696e696d756d20696e766573746d656e7420616d6f756e742e272054726561737572790001083064697362757273656d656e74043462656e65666963696172696573785665633c42656e65666963696172793c42616c616e63654f663c543e3e3e185501204974207472616e73666572732062616c616e6365732066726f6d20747265617375727920746f2065616368206f662062656e6566696369617269657320616e642074686520737065636966696320616d6f756e744820666f722065616368206f66207468656d2e00202023204572726f72c8202a20604261644f726967696e603a204f6e6c7920726f6f742063616e2065786563757465207472616e73616374696f6e2e6101202a2060496e73756666696369656e7442616c616e6365603a2049662074726561737572792062616c616e636573206973206e6f7420656e6f75676820746f20636f76657220616c6c2062656e656669636961726965732e347265696d62757273656d656e740418616d6f756e743042616c616e63654f663c543e0c2101204974207472616e7366657273207468652073706563696669632060616d6f756e74602066726f6d20606f726967696e60206163636f756e7420696e746f2074726561737572792e004d01204f6e6c79206163636f756e747320776869636820617265206173736f63696174656420746f20616e206964656e746974792063616e206d616b65206120646f6e6174696f6e20746f2074726561737572792e010850547265617375727944697362757273656d656e740c284964656e746974794964284964656e7469747949641c42616c616e6365088c2044697362757273656d656e7420746f206120746172676574204964656e746974792e682028746172676574206964656e746974792c20616d6f756e74295454726561737572795265696d62757273656d656e7408284964656e7469747949641c42616c616e63650460205472656173757279207265696d62757273656d656e742e00044c496e73756666696369656e7442616c616e6365047c2050726f706f73657227732062616c616e636520697320746f6f206c6f772e281c5574696c697479011c5574696c69747904184e6f6e63657301010530543a3a4163636f756e74496448417574686f72697a6174696f6e4e6f6e636500200000000000000000000110146261746368041463616c6c73605665633c3c5420617320436f6e6669673e3a3a43616c6c3e48c8204469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e00ec20546869732077696c6c206578656375746520756e74696c20746865206669727374206f6e65206661696c7320616e64207468656e2073746f702e00b0204d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273f0202d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e0024202320576569676874a4202d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e34202d204f6e65206576656e742e00c10120546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e3501206576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e20746865590120604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d616465510120616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c657465646050206576656e74206973206465706f73697465642e3062617463685f61746f6d6963041463616c6c73605665633c3c5420617320436f6e6669673e3a3a43616c6c3e4cc8204469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e00190120546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c2073746f7070696e6720617420746865206669727374206661696c7572652cc420696e207768696368206361736520746865207374617465206368616e6765732061726520726f6c6c6564206261636b2e2901204f6e206661696c7572652c20616e206576656e7420604261746368496e746572727570746564286661696c7572655f6964782c206572726f722960206973206465706f73697465642e00b0204d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273f0202d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e0024202320576569676874a4202d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e34202d204f6e65206576656e742e00190120546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef820546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ee820496620616e792063616c6c206661696c65642c207468656e20604261746368496e74657272757074656460206973206465706f73697465642e190120496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e4062617463685f6f7074696d6973746963041463616c6c73605665633c3c5420617320436f6e6669673e3a3a43616c6c3e54c8204469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e00050120546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c20697272657370656374697665206f66206661696c757265732e0d0120416e79206661696c757265732077696c6c20626520617661696c61626c6520696e2061206042617463684f7074696d69737469634661696c656460206576656e742e00b0204d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273f0202d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e000024202320576569676874a4202d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e34202d204f6e65206576656e742e00190120546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef820546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642efc20496620616e792063616c6c206661696c65642c207468656e206042617463684f7074696d69737469634661696c656460206973206465706f73697465642c01012077697468206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c2061732077656c6c206173206120766563746f722c206f66206572726f72732e190120496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e2072656c61795f74780c1874617267657430543a3a4163636f756e744964247369676e617475726550543a3a4f6666436861696e5369676e61747572651063616c6c7c556e6971756543616c6c3c3c5420617320436f6e6669673e3a3a43616c6c3e30a42052656c617920612063616c6c20666f722061207461726765742066726f6d20616e206f726967696e0055012052656c6179696e6720696e207468697320636f6e746578742072656665727320746f20746865206162696c697479206f66206f726967696e20746f206d616b6520612063616c6c206f6e20626568616c66206f6620207461726765742e006c204665657320617265206368617267656420746f206f726967696e0034202320506172616d657465727388202d2060746172676574603a204163636f756e7420746f2062652072656c61796564ec202d20607369676e6174757265603a205369676e61747572652066726f6d2074617267657420617574686f72697a696e67207468652072656c6179c4202d206063616c6c603a2043616c6c20746f2062652072656c61796564206f6e20626568616c66206f662074617267657400010c404261746368496e746572727570746564082c4576656e74436f756e74731c4572726f7241740cb0204261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792ee020496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f72206561636820646973706174636820616e64f82074686520696e646578206f6620746865206669727374206661696c696e672064697370617463682061732077656c6c20617320746865206572726f722e5442617463684f7074696d69737469634661696c6564082c4576656e74436f756e7473305665633c4572726f7241743e0cb0204261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792ed020496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c20616e642d01206120766563746f72206f6620616e79206661696c65642064697370617463686573207769746820746865697220696e646963657320616e64206173736f636961746564206572726f722e384261746368436f6d706c65746564042c4576656e74436f756e747308cc204261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722ed420496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682064697370617463682e000c40496e76616c69645369676e61747572650478204f6666636861696e207369676e617475726520697320696e76616c6964405461726765744364644d697373696e6704842054617267657420646f6573206e6f74206861766520612076616c69642043444430496e76616c69644e6f6e63650c6c2050726f7669646564206e6f6e63652077617320696e76616c69641501204966207468652070726f7669646564206e6f6e6365203c2063757272656e74206e6f6e63652c207468652063616c6c2077617320616c72656164792065786563757465646101204966207468652070726f7669646564206e6f6e6365203e2063757272656e74206e6f6e63652c207468652063616c6c287329206265666f7265207468652063757272656e74206661696c656420746f206578656375746529104261736500010001043c556e65787065637465644572726f7204544f7074696f6e3c44697370617463684572726f723e04e820416e20756e6578706563746564206572726f722068617070656e656420746861742073686f756c6420626520696e766573746967617465642e04184d61784c656e0c753332100008000000081c546f6f4c6f6e67088420457863656564656420612067656e65726963206c656e677468206c696d69742e210120546865206c696d697420636f756c6420626520666f7220616e7920736f7274206f66206c69737473206f66207468696e67732c20696e636c7564696e67206120737472696e672e3c436f756e7465724f766572666c6f7718bc205468652073657175656e636520636f756e74657220666f7220736f6d657468696e67206f766572666c6f7765642e002101205768656e20746869732068617070656e7320646570656e6473206f6e20652e672e2c20746865206361706163697479206f6620746865206964656e74696669657220747970652e3d0120466f72206578616d706c652c207765206d69676874206861766520607075622073747275637420506970496428753332293b602c207769746820607533323a3a4d4158602063617061636974792e5d0120496e2070726163746963652c207468657365206572726f72732077696c6c206e657665722068617070656e20627574206e6f20636f646520706174682073686f756c6420726573756c7420696e20612070616e69632c010120736f20746865736520636f726e6572206361736573206e65656420746f20626520636f7665726564207769746820616e206572726f722076617269616e742e2a3845787465726e616c4167656e7473013845787465726e616c4167656e747314304147496453657175656e6365010102185469636b6572104147496400100000000010b420546865206e657874207065722d605469636b65726020414720494420696e207468652073657175656e63652e004d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652c90207768696368207374617274732066726f6d20312c20726174686572207468616e20302e1c4167656e744f66010202284964656e746974794964185469636b65720828290200042901204d61707320616e206167656e742028604964656e746974794964602920746f20616c6c20616c6c20605469636b6572607320746865792062656c6f6e6720746f2c20696620616e792e3047726f75704f664167656e74000202185469636b6572284964656e746974794964284167656e7447726f7570050400043501204d617073206167656e74732028604964656e746974794964602920666f72206120605469636b65726020746f207768617420414720746865792062656c6f6e6720746f2c20696620616e792e344e756d46756c6c4167656e7473010102185469636b65720c75333200100000000004dc204d617073206120605469636b65726020746f20746865206e756d626572206f66206046756c6c60206167656e747320666f722069742e4047726f75705065726d697373696f6e73000202185469636b657210414749645045787472696e7369635065726d697373696f6e73050400045d0120466f7220637573746f6d20414773206f66206120605469636b6572602c206d61707320746f2077686174207065726d697373696f6e7320616e206167656e7420696e207468617420414720776f756c6420686176652e0118306372656174655f67726f757008187469636b6572185469636b6572147065726d735045787472696e7369635065726d697373696f6e7348e82043726561746573206120637573746f6d206167656e742067726f7570202841472920666f722074686520676976656e20607469636b6572602e00d8205468652041472077696c6c206861766520746865207065726d697373696f6e7320617320676976656e20627920607065726d73602e2d012054686973206e6577204147206973207468656e2061737369676e656420606964203d204147496453657175656e63653a3a6765742829202b20316020617320697473206041474964602c3d0120776869636820796f752063616e2075736520617320604167656e7447726f75703a3a437573746f6d2869642960207768656e20616464696e67206167656e747320666f7220607469636b6572602e0030202320417267756d656e7473a0202d20607469636b65726020746f206164642074686520637573746f6d2067726f757020666f722e94202d20607065726d7360207468617420746865206e65772041472077696c6c20686176652e00242023204572726f72733d01202d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e2501202d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672e2901202d2060436f756e7465724f766572666c6f776020696620604147496453657175656e63653a3a6765742829202b20316020776f756c642065786365656420607533323a3a4d4158602e00382023205065726d697373696f6e7320202a20417373657420202a204167656e74547365745f67726f75705f7065726d697373696f6e730c187469636b6572185469636b65720869641041474964147065726d735045787472696e7369635065726d697373696f6e733c5501205570646174657320746865207065726d697373696f6e73206f662074686520637573746f6d204147206964656e74696669656420627920606964602c20666f722074686520676976656e20607469636b6572602e0030202320417267756d656e747394202d20607469636b6572602074686520637573746f6d2041472062656c6f6e677320746f2ea8202d206069646020666f722074686520637573746f6d2041472077697468696e20607469636b6572602e98202d20607065726d736020746f207570646174652074686520637573746f6d20414720746f2e00242023204572726f72733d01202d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e2501202d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672ed0202d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472e00382023205065726d697373696f6e7320202a20417373657420202a204167656e743072656d6f76655f6167656e7408187469636b6572185469636b6572146167656e74284964656e74697479496438a02052656d6f76652074686520676976656e20606167656e74602066726f6d20607469636b6572602e0030202320417267756d656e7473ac202d20607469636b6572602074686174206861732074686520606167656e746020746f2072656d6f76652e84202d20606167656e7460206f6620607469636b65726020746f2072656d6f76652e00242023204572726f72733d01202d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732edc202d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602eec202d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e746020697320746865206c6173742066756c6c206f6e652e00382023205065726d697373696f6e7320202a20417373657420202a204167656e7420616264696361746504187469636b6572185469636b65722c84204162646963617465206167656e747368697020666f7220607469636b6572602e0030202320417267756d656e7473b0202d20607469636b657260206f66207768696368207468652063616c6c657220697320616e206167656e742e00242023204572726f7273e8202d20604e6f74416e4167656e7460206966207468652063616c6c6572206973206e6f7420616e206167656e74206f6620607469636b6572602e0101202d206052656d6f76696e674c61737446756c6c4167656e7460206966207468652063616c6c657220697320746865206c6173742066756c6c206167656e742e00382023205065726d697373696f6e7320202a204173736574306368616e67655f67726f75700c187469636b6572185469636b6572146167656e74284964656e7469747949641467726f7570284167656e7447726f757040f0204368616e676520746865206167656e742067726f7570207468617420606167656e74602062656c6f6e677320746f20696e20607469636b6572602e0030202320417267756d656e747384202d20607469636b6572602074686174206861732074686520606167656e74602ebc202d20606167656e7460206f6620607469636b65726020746f206368616e6765207468652067726f757020666f722ecc202d206067726f757060207468617420606167656e74602077696c6c2062656c6f6e6720746f20696e20607469636b6572602e00242023204572726f72733d01202d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ed0202d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472edc202d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602e3101202d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e7460207761732061206046756c6c60206f6e6520616e64206973206265696e672064656d6f7465642e00382023205065726d697373696f6e7320202a20417373657420202a204167656e744c6163636570745f6265636f6d655f6167656e74041c617574685f69640c7536344005012041636365707420616e20617574686f72697a6174696f6e20627920616e206167656e742022416c696365222077686f206973737565642060617574685f696460dc20746f20616c736f206265636f6d6520616e206167656e74206f6620746865207469636b657220416c696365207370656369666965642e0030202320417267756d656e7473d4202d2060617574685f696460206964656e74696679696e672074686520617574686f72697a6174696f6e20746f206163636570742e00242023204572726f72734901202d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e3901202d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f69646020697320666f7220616e206175746820746861742068617320657870697265642e5101202d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f7420666f72206120604265636f6d654167656e7460206175746820747970652e2901202d2060556e617574686f72697a65644167656e74602069662022416c69636522206973206e6f74207065726d697373696f6e656420746f2070726f766964652074686520617574682e1101202d20604e6f53756368414760206966207468652067726f757020726566657272656420746f206120637573746f6d207468617420646f6573206e6f742065786973742e1101202d2060416c7265616479416e4167656e7460206966207468652063616c6c657220697320616c726561647920616e206167656e74206f6620746865207469636b65722e00382023205065726d697373696f6e7320202a204167656e7401143047726f75704372656174656410204576656e74446964185469636b657210414749645045787472696e7369635065726d697373696f6e730c7020416e204167656e742047726f75702077617320637265617465642e00d4202843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773207065726d697373696f6e73295c47726f75705065726d697373696f6e735570646174656410204576656e74446964185469636b657210414749645045787472696e7369635065726d697373696f6e730ca820416e204167656e742047726f75702773207065726d697373696f6e732077617320757064617465642e00e4202843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773206e6577207065726d697373696f6e7329284167656e7441646465640c204576656e74446964185469636b6572284167656e7447726f75700c5020416e206167656e74207761732061646465642e00c8202843616c6c65722f4167656e74204449442c204167656e742773207469636b65722c204167656e7427732067726f757029304167656e7452656d6f7665640c204576656e74446964185469636b6572284964656e7469747949640c5820416e206167656e74207761732072656d6f7665642e00a8202843616c6c6572204449442c204167656e742773207469636b65722c204167656e74277320444944293047726f75704368616e67656410204576656e74446964185469636b6572284964656e746974794964284167656e7447726f75700c7820416e206167656e7427732067726f757020776173206368616e6765642e001901202843616c6c6572204449442c204167656e742773207469636b65722c204167656e742773204449442c20546865206e65772067726f7570206f6620746865206167656e74290018204e6f53756368414704f020416e20414720776974682074686520676976656e2060414749646020646964206e6f7420657869737420666f722074686520605469636b6572602e44556e617574686f72697a65644167656e7404ec20546865206167656e74206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e38416c7265616479416e4167656e7404ec205468652070726f766964656420606167656e746020697320616c726561647920616e206167656e7420666f722074686520605469636b6572602e284e6f74416e4167656e7404dc205468652070726f766964656420606167656e7460206973206e6f7420616e206167656e7420666f722074686520605469636b6572602e5452656d6f76696e674c61737446756c6c4167656e7408e42054686973206167656e7420697320746865206c6173742066756c6c206f6e652c20616e642069742773206265696e672072656d6f7665642c6c206d616b696e6720746865206173736574206f727068616e65642e845365636f6e646172794b65794e6f74417574686f72697a6564466f724173736574042101205468652063616c6c65722773207365636f6e64617279206b657920646f6573206e6f74206861766520746865207265717569726564206173736574207065726d697373696f6e2e2b1c52656c61796572011c52656c61796572042453756273696469657300010230543a3a4163636f756e74496454537562736964793c543a3a4163636f756e7449643e00040018ec20546865207375627369647920666f7220612060757365725f6b657960206966207468657920617265206265696e6720737562736964697365642c882061732061206d61702060757365725f6b657960203d3e206053756273696479602e0009012041206b65792063616e206f6e6c792068617665206f6e65207375627369647920617420612074696d652e2020546f206368616e67652073756273696469736572731d012061206b6579206e6565647320746f2063616c6c206072656d6f76655f706179696e675f6b65796020746f2072656d6f7665207468652063757272656e7420737562736964792ca4206265666f726520746865792063616e206163636570742061206e657720737562736964697365722e0118387365745f706179696e675f6b65790820757365725f6b657930543a3a4163636f756e7449642c706f6c79785f6c696d69741c42616c616e636520c101204372656174657320616e20617574686f72697a6174696f6e20746f20616c6c6f772060757365725f6b65796020746f20616363657074207468652063616c6c65722028606f726967696e203d3d20706179696e675f6b6579602920617320746865697220737562736964697365722e0030202320417267756d656e7473a0202d2060757365725f6b657960207468652075736572206b657920746f207375627369646973652ee8202d2060706f6c79785f6c696d6974602074686520696e697469616c20504f4c5958206c696d697420666f72207468697320737562736964792e00242023204572726f72733501202d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e446163636570745f706179696e675f6b6579041c617574685f69640c7536343898204163636570747320612060706179696e675f6b65796020617574686f72697a6174696f6e2e0030202320417267756d656e7473ec202d2060617574685f6964602074686520617574686f72697a6174696f6e20696420746f2061636365707420612060706179696e675f6b6579602e00242023204572726f72734901202d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e3101202d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f6964602074686520617574686f72697a6174696f6e2068617320657870697265642e7101202d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f742061206041646452656c61796572506179696e674b65796020617574686f72697a6174696f6e2ea901202d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f206163636570742074686520617574686f72697a6174696f6e20666f72207468652060757365725f6b6579602ed901202d20604e6f74417574686f72697a6564466f72506179696e674b6579602069662074686520617574686f72697a6174696f6e2077617320637265617465642062792061207369676e657220746861742069736e277420617574686f72697a6564206279207468652060706179696e675f6b6579602e3501202d2060557365724b65794364644d697373696e6760206966207468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e4501202d2060506179696e674b65794364644d697373696e6760206966207468652060706179696e675f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e3501202d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e4472656d6f76655f706179696e675f6b65790820757365725f6b657930543a3a4163636f756e74496428706179696e675f6b657930543a3a4163636f756e7449642cb02052656d6f766573207468652060706179696e675f6b6579602066726f6d20612060757365725f6b6579602e0030202320417267756d656e7473d8202d2060757365725f6b657960207468652075736572206b657920746f2072656d6f76652074686520737562736964792066726f6d2e0d01202d2060706179696e675f6b6579602074686520706179696e67206b6579207468617420776173207375627369646973696e67207468652060757365725f6b6579602e00242023204572726f72739101202d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2072656d6f766520746865207375627369647920666f72207468652060757365725f6b6579602efc202d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e3501202d20604e6f74506179696e674b657960206966207468652060706179696e675f6b65796020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e3501202d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e487570646174655f706f6c79785f6c696d69740820757365725f6b657930543a3a4163636f756e7449642c706f6c79785f6c696d69741c42616c616e636528b820557064617465732074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e0030202320417267756d656e74732101202d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e3901202d2060706f6c79785f6c696d6974602074686520616d6f756e74206f6620504f4c595820617661696c61626c6520666f72207375627369646973696e67207468652060757365725f6b6579602e00242023204572726f7273fc202d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e1501202d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e3501202d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e50696e6372656173655f706f6c79785f6c696d69740820757365725f6b657930543a3a4163636f756e74496418616d6f756e741c42616c616e63652cbc20496e6372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e0030202320417267756d656e74732101202d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e1101202d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2061646420746f207468652073756273696479206f662060757365725f6b6579602e00242023204572726f7273fc202d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e1501202d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e3501202d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e4101202d20604f7665726c6f776020696620746865207375627369647927732072656d61696e696e6720504f4c595820776f756c642068617665206f766572666c6f7765642060753132383a3a4d4158602e5064656372656173655f706f6c79785f6c696d69740820757365725f6b657930543a3a4163636f756e74496418616d6f756e741c42616c616e63652cbc2044656372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e0030202320417267756d656e74732101202d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e2501202d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2072656d6f76652066726f6d207468652073756273696479206f662060757365725f6b6579602e00242023204572726f7273fc202d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e1501202d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e3501202d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e0d01202d20604f7665726c6f776020696620746865207375627369647920686173206c657373207468656e2060616d6f756e746020504f4c59582072656d61696e696e672e01104c417574686f72697a6564506179696e674b657914204576656e74446964244163636f756e744964244163636f756e7449641c42616c616e63650c7536340cd020417574686f72697a6174696f6e20676976656e20666f722060706179696e675f6b65796020746f2060757365725f6b6579602e000501202843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20496e697469616c20504f4c5958206c696d69742c204175746820494429444163636570746564506179696e674b65790c204576656e74446964244163636f756e744964244163636f756e7449640c5420416363657074656420706179696e67206b65792e008c202843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294052656d6f766564506179696e674b65790c204576656e74446964244163636f756e744964244163636f756e7449640c502052656d6f76656420706179696e67206b65792e008c202843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294455706461746564506f6c79784c696d697414204576656e74446964244163636f756e744964244163636f756e7449641c42616c616e63651c42616c616e63650c54205570646174656420706f6c7978206c696d69742e001501202843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20504f4c5958206c696d69742c206f6c642072656d61696e696e6720504f4c595829001c44557365724b65794364644d697373696e6704d0205468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e4c506179696e674b65794364644d697373696e6704d0205468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e2c4e6f506179696e674b657904b0205468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e304e6f74506179696e674b657904b4205468652060757365725f6b65796020686173206120646966666572656e742060706179696e675f6b6579602e644e6f74417574686f72697a6564466f72506179696e674b657904bc20546865207369676e6572206973206e6f7420617574686f72697a656420666f722060706179696e675f6b6579602e5c4e6f74417574686f72697a6564466f72557365724b657904b420546865207369676e6572206973206e6f7420617574686f72697a656420666f722060757365725f6b6579602e204f766572666c6f7704bc205468652072656d61696e696e6720504f4c595820666f722060757365725f6b657960206f766572666c6f7765642e2c1c52657761726473011c52657761726473042849746e5265776172647300010230543a3a4163636f756e7449643c49746e526577617264537461747573000400040101204d6170206f66202849746e204164647265737320604163636f756e7449646029202d3e2028526577617264206049746e52657761726453746174757360292e010840636c61696d5f69746e5f7265776172640c387265776172645f6164647265737330543a3a4163636f756e7449642c69746e5f6164647265737330543a3a4163636f756e744964247369676e617475726550543a3a4f6666436861696e5369676e6174757265345420436c61696d20616e2049544e207265776172642e003420232320417267756d656e7473dc202a206069746e5f61646472657373602073706563696679696e672074686520617761726465642061646472657373206f6e2049544e2ed8202a20607369676e6174757265602061757468656e7469636174696e672074686520636c61696d20746f20746865207265776172642e790120202020546865207369676e61747572652073686f756c6420636f6e7461696e20607265776172645f616464726573736020666f6c6c6f7765642062792074686520737566666978206022636c61696d5f69746e5f72657761726422602cbc20202020616e64206d7573742068617665206265656e207369676e6564206279206069746e5f61646472657373602e00242023204572726f72734901202a2060496e73756666696369656e7442616c616e636560202d2049746e20726577617264732068617320696e73756666696369656e742066756e647320746f20697373756520746865207265776172642e3501202a2060496e76616c69645369676e617475726560202d20607369676e6174757265602068616420616e20696e76616c6964207369676e6572206f7220696e76616c6964206d6573736167652e6d01202a206049746e526577617264416c7265616479436c61696d656460202d205265776172642069737375656420746f20746865206069746e5f61646472657373602068617320616c7265616479206265656e20636c61696d65642e8d01202a2060556e6b6e6f776e49746e4164647265737360202d206069746e5f6164647265737360206973206e6f7420696e207468652072657761726473207461626c6520616e6420686173206e6f2072657761726420746f20626520636c61696d65642e547365745f69746e5f7265776172645f737461747573082c69746e5f6164647265737330543a3a4163636f756e744964187374617475733c49746e5265776172645374617475730001044049746e526577617264436c61696d656408244163636f756e7449641c42616c616e636504602049746e207265776172642077617320636c61696d65642e001044556e6b6e6f776e49746e4164647265737304d0204164647265737320776173206e6f7420666f756e6420696e20746865206c697374206f662049746e206164647265737365732e5c49746e526577617264416c7265616479436c61696d656404802049746e207265776172642077617320616c726561647920636c61696d65642e40496e76616c69645369676e617475726504802050726f7669646564207369676e61747572652077617320696e76616c69642e54556e61626c65546f436f7665727442616c616e636504b42042616c616e63652063616e206e6f7420626520636f6e76657274656420746f2061207072696d69746976652e2d24546573745574696c730124546573745574696c730001103072656769737465725f646964080c7569642c496e766573746f72556964387365636f6e646172795f6b6579737c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e2851012047656e6572617465732061206e657720604964656e7469747949446020666f72207468652063616c6c65722c20616e642069737375657320612073656c662d67656e6572617465642043444420636c61696d2e00f4205468652063616c6c6572206163636f756e742077696c6c20626520746865207072696d617279206b6579206f662074686174206964656e746974792e610120466f722065616368206163636f756e74206f6620607365636f6e646172795f6b657973602c2061206e657720604a6f696e4964656e746974796020617574686f72697a6174696f6e20697320637265617465642c20736f45012065616368206f66207468656d2077696c6c206e65656420746f20616363657074206974206265666f7265206265636f6d652070617274206f662074686973206e657720604964656e746974794944602e00242023204572726f7273d901202d2060416c72656164794c696e6b656460206966207468652063616c6c6572206163636f756e74206f7220696620616e79206f662074686520676976656e20607365636f6e646172795f6b657973602068617320616c7265616479206c696e6b656420746f20616e20604964656e746974794944605101202d20605365636f6e646172794b657973436f6e7461696e5072696d6172794b65796020696620607365636f6e646172795f6b6579736020636f6e7461696e73207468652063616c6c6572206163636f756e742eec202d2060446964416c726561647945786973747360206966206175746f2d67656e6572617465642044494420616c7265616479206578697374732e546d6f636b5f6364645f72656769737465725f64696404387461726765745f6163636f756e7430543a3a4163636f756e744964304101205265676973746572732061206e6577204964656e7469747920666f722074686520607461726765745f6163636f756e746020616e642069737375657320612043444420636c61696d20746f2069742e55012054686520496e766573746f72205549442069732067656e6572617465642064657465726d696e6973746963616c6c79206279207468652068617368206f66207468652067656e6572617465642044494420616e64b4207468656e2077652066697820697420746f20626520636f6d706c69616e74207769746820555549442076342e0018202320536565e0202d205b52464320343132323a20555549445d2868747470733a2f2f746f6f6c732e696574662e6f72672f68746d6c2f726663343132322900282023204661696c7572654d01202d20606f726967696e602068617320746f20626520616e20616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65772020636c61696d732e6101202d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c7938206f6e65206964656e746974792e286765745f6d795f64696400049c20456d69747320616e206576656e7420776974682063616c6c65722773206964656e746974792e286765745f6364645f6f6604086f6630543a3a4163636f756e74496404d820456d69747320616e206576656e7420776974682063616c6c65722773206964656e7469747920616e6420434444207374617475732e010c584d6f636b496e766573746f725549444372656174656408284964656e7469747949642c496e766573746f725569640811012041206e6577206d6f636b65642060496e766573746f725569646020686173206265656e206372656174656420666f722074686520676976656e204964656e746974792e782028546172676574204449442c204e657720496e766573746f72556964292444696453746174757308284964656e746974794964244163636f756e74496408e820456d6974732074686520604964656e7469747949646020616e642074686520604163636f756e74496460206f66207468652063616c6c65722e74202843616c6c6572204449442c2043616c6c6572206163636f756e7429244364645374617475730c484f7074696f6e3c4964656e7469747949643e244163636f756e74496410626f6f6c0c59012053686f777320746865206044494460206173736f63696174656420746f2074686520604163636f756e744964602c20616e64206120666c616720696e64696361746573206966207468617420444944206861732061442076616c69642043444420636c61696d2edc2028546172676574204449442c20546172676574204163636f756e742c20612076616c69642043444420636c61696d2065786973747329000032042040436865636b5370656356657273696f6e38436865636b547856657273696f6e30436865636b47656e6573697338436865636b4d6f7274616c69747928436865636b4e6f6e63652c436865636b576569676874604368617267655472616e73616374696f6e5061796d656e744453746f726543616c6c4d65746164617461","id":"1"} diff --git a/scripts/cli/src/__tests__/0_create_identities.ts b/scripts/cli/src/__tests__/0_create_identities.ts new file mode 100644 index 0000000000..6d6b33293c --- /dev/null +++ b/scripts/cli/src/__tests__/0_create_identities.ts @@ -0,0 +1,39 @@ +import { + initMain, + generateKeys, + disconnect, + generateEntity, +} from "../util/init"; +import { createIdentities } from "../helpers/identity_helper"; +import { createTable } from "../util/sqlite3"; + +beforeAll(() => { + createTable(); +}); + +// Disconnects api after all the tests have completed +afterAll(async () => { + await disconnect(); +}); + +describe("0 - Identity Unit Test", () => { + test("Create Identities", async () => { + const testEntities = await initMain(); + const alice = testEntities[0]; + const primaryDevSeed = "0_primary"; + const keys = await generateKeys(2, primaryDevSeed); + const dids = await createIdentities(alice, keys); + expect(dids).toBeTruthy(); + }); + + test("Errors when creating identities", async () => { + const testEntities = await initMain(); + const alice = testEntities[0]; + const entity = await generateEntity("0_entity"); + const entity1 = await generateEntity("1_entity"); + await createIdentities(alice, [entity]); + await expect(createIdentities(entity, [entity1])).rejects.toThrow( + "1010: Invalid Transaction: Inability to pay some fees , e.g. account balance too low" + ); + }); +}); diff --git a/scripts/cli/src/__tests__/1_poly_transfer.ts b/scripts/cli/src/__tests__/1_poly_transfer.ts new file mode 100644 index 0000000000..a6c22bc0e6 --- /dev/null +++ b/scripts/cli/src/__tests__/1_poly_transfer.ts @@ -0,0 +1,31 @@ +import { + initMain, + generateKeys, + disconnect, + transferAmount, +} from "../util/init"; +import { createIdentities } from "../helpers/identity_helper"; +import { distributePolyBatch } from "../helpers/poly_helper"; +import { createTable } from "../util/sqlite3"; + +beforeAll(() => { + createTable(); +}); + +// Disconnects api after all the tests have completed +afterAll(async () => { + await disconnect(); +}); + +describe("1 - Poly Unit Test", () => { + test("Polyx Transaction", async () => { + const testEntities = await initMain(); + const alice = testEntities[0]; + const primaryDevSeed = "1_primary"; + const keys = await generateKeys(2, primaryDevSeed); + const dids = await createIdentities(alice, keys); + expect(dids).toBeTruthy(); + const tx = distributePolyBatch(alice, keys, transferAmount); + await expect(tx).resolves.not.toThrow(); + }); +}); diff --git a/scripts/cli/src/__tests__/2_key_management.ts b/scripts/cli/src/__tests__/2_key_management.ts new file mode 100644 index 0000000000..5943e8a9ed --- /dev/null +++ b/scripts/cli/src/__tests__/2_key_management.ts @@ -0,0 +1,46 @@ +import * as init from "../util/init"; +import { createIdentities } from "../helpers/identity_helper"; +import { distributePolyBatch } from "../helpers/poly_helper"; +import { + addSecondaryKeys, + createMultiSig, +} from "../helpers/key_management_helper"; +import { createTable } from "../util/sqlite3"; + +beforeAll(() => { + createTable(); +}); + +// Disconnects api after all the tests have completed +afterAll(async () => { + await init.disconnect(); +}); + +describe("2 - Key Management Unit Test", () => { + test("Key Management", async () => { + const testEntities = await init.initMain(); + const primaryDevSeed = "2_primary"; + const secondaryDevSeed = "2_secondary"; + const alice = testEntities[0]; + const bob = await init.generateEntityFromUri("2_bob"); + const charlie = await init.generateEntityFromUri("2_charlie"); + const dave = await init.generateEntityFromUri("2_dave"); + const primaryKeys = await init.generateKeys(2, primaryDevSeed); + const secondaryKeys = await init.generateKeys(2, secondaryDevSeed); + const bobSignatory = await init.signatory(alice, bob); + const charlieSignatory = await init.signatory(alice, charlie); + const daveSignatory = await init.signatory(alice, dave); + const signatoryArray = [bobSignatory, charlieSignatory, daveSignatory]; + const dids = await createIdentities(alice, primaryKeys); + expect(dids).toBeTruthy(); + await expect( + distributePolyBatch(alice, primaryKeys, init.transferAmount) + ).resolves.not.toThrow(); + await expect( + addSecondaryKeys(primaryKeys, secondaryKeys) + ).resolves.not.toThrow(); + await expect( + createMultiSig(alice, signatoryArray, 2) + ).resolves.not.toThrow(); + }); +}); diff --git a/scripts/cli/src/__tests__/3_auth_join_did.ts b/scripts/cli/src/__tests__/3_auth_join_did.ts new file mode 100644 index 0000000000..28403ae4b7 --- /dev/null +++ b/scripts/cli/src/__tests__/3_auth_join_did.ts @@ -0,0 +1,44 @@ +import { + initMain, + generateKeys, + disconnect, + transferAmount, +} from "../util/init"; +import { + createIdentities, + authorizeJoinToIdentities, +} from "../helpers/identity_helper"; +import { distributePolyBatch } from "../helpers/poly_helper"; +import { addSecondaryKeys } from "../helpers/key_management_helper"; +import { createTable } from "../util/sqlite3"; + +beforeAll(() => { + createTable(); +}); + +// Disconnects api after all the tests have completed +afterAll(async () => { + await disconnect(); +}); + +describe("3 - Auth Unit Test", () => { + test("Authorizing join to Identities", async () => { + const testEntities = await initMain(); + const alice = testEntities[0]; + const primaryDevSeed = "3_primary"; + const secondaryDevSeed = "3_secondary"; + const primaryKeys = await generateKeys(2, primaryDevSeed); + const secondaryKeys = await generateKeys(2, secondaryDevSeed); + const dids = await createIdentities(alice, primaryKeys); + expect(dids).toBeTruthy(); + await expect( + distributePolyBatch(alice, primaryKeys, transferAmount) + ).resolves.not.toThrow(); + await expect( + addSecondaryKeys(primaryKeys, secondaryKeys) + ).resolves.not.toThrow(); + await expect( + authorizeJoinToIdentities(secondaryKeys, primaryKeys) + ).resolves.not.toThrow(); + }); +}); diff --git a/scripts/cli/src/__tests__/4_permission_management.ts b/scripts/cli/src/__tests__/4_permission_management.ts new file mode 100644 index 0000000000..1dae2e6884 --- /dev/null +++ b/scripts/cli/src/__tests__/4_permission_management.ts @@ -0,0 +1,145 @@ +import * as init from "../util/init"; +import { + createIdentities, + authorizeJoinToIdentities, + setPermissionToSigner, +} from "../helpers/identity_helper"; +import { distributePolyBatch } from "../helpers/poly_helper"; +import { addSecondaryKeys } from "../helpers/key_management_helper"; +import { + setAsset, + setExtrinsic, + setPortfolio, + setDoc, +} from "../helpers/permission_helper"; +import { + createPortfolio, + movePortfolioFunds, +} from "../helpers/portfolio_helper"; +import { addDocuments, issueTokenToDid } from "../helpers/asset_helper"; +import { + AssetPermissions, + Document, + ExtrinsicPermissions, + PortfolioPermissions, +} from "../types"; +import { createTable } from "../util/sqlite3"; + +beforeAll(() => { + createTable(); +}); + +// Disconnects api after all the tests have completed +afterAll(async () => { + await init.disconnect(); +}); + +describe("4 - Permission Management Unit Test", () => { + test("Adding Permissions", async () => { + const ticker = init.padTicker("4TICKER"); + const portfolioName = "4_portfolio"; + const testEntities = await init.initMain(); + const alice = testEntities[0]; + const primaryDevSeed = "4_primary"; + const secondaryDevSeed = "4_secondary"; + const primaryKeys = await init.generateKeys(1, primaryDevSeed); + const secondaryKeys = await init.generateKeys(1, secondaryDevSeed); + const dids = await createIdentities(alice, primaryKeys); + expect(dids).toBeTruthy(); + let extrinsics: ExtrinsicPermissions = { These: [] }; + let portfolios: PortfolioPermissions = { These: [] }; + let assets: AssetPermissions = { These: [] }; + let documents: Document[] = []; + + await expect( + distributePolyBatch(alice, [primaryKeys[0]], init.transferAmount) + ).resolves.not.toThrow(); + await expect( + addSecondaryKeys(primaryKeys, secondaryKeys) + ).resolves.not.toThrow(); + await expect( + authorizeJoinToIdentities(secondaryKeys, primaryKeys) + ).resolves.not.toThrow(); + await expect( + distributePolyBatch(alice, [secondaryKeys[0]], init.transferAmount) + ).resolves.not.toThrow(); + await expect( + issueTokenToDid(primaryKeys[0], ticker, 1000000, null) + ).resolves.not.toThrow(); + + let portfolioOutput = await createPortfolio( + secondaryKeys[0], + portfolioName + ); + expect(portfolioOutput).toBeFalsy(); + + setExtrinsic(extrinsics, "Portfolio", "create_portfolio"); + await setPermissionToSigner( + primaryKeys, + secondaryKeys, + extrinsics, + portfolios, + assets + ); + portfolioOutput = await createPortfolio(secondaryKeys[0], portfolioName); + expect(portfolioOutput).toBeTruthy(); + + setExtrinsic(extrinsics, "Portfolio", "move_portfolio_funds"); + await setPermissionToSigner( + primaryKeys, + secondaryKeys, + extrinsics, + portfolios, + assets + ); + let portfolioFundsOutput = await movePortfolioFunds( + secondaryKeys[0], + primaryKeys[0], + ticker, + 100 + ); + expect(portfolioFundsOutput).toBeFalsy(); + + await setPortfolio(portfolios, primaryKeys[0], "Default"); + await setPortfolio(portfolios, secondaryKeys[0], "User"); + await setPermissionToSigner( + primaryKeys, + secondaryKeys, + extrinsics, + portfolios, + assets + ); + + portfolioFundsOutput = await movePortfolioFunds( + secondaryKeys[0], + primaryKeys[0], + ticker, + 100 + ); + expect(portfolioFundsOutput).toBeTruthy(); + + setExtrinsic(extrinsics, "Asset", "add_documents"); + await setPermissionToSigner( + primaryKeys, + secondaryKeys, + extrinsics, + portfolios, + assets + ); + setDoc(documents, "www.google.com", { None: "" }, "google"); + let addDocsOutput = await addDocuments(secondaryKeys[0], ticker, documents); + expect(addDocsOutput).toBeFalsy(); + console.log("after docs"); + + setAsset(ticker, assets); + await setPermissionToSigner( + primaryKeys, + secondaryKeys, + extrinsics, + portfolios, + assets + ); + addDocsOutput = await addDocuments(secondaryKeys[0], ticker, documents); + expect(addDocsOutput).toBeTruthy(); + }); +}); diff --git a/scripts/cli/src/__tests__/5_claim_management.ts b/scripts/cli/src/__tests__/5_claim_management.ts new file mode 100644 index 0000000000..20866ffbc5 --- /dev/null +++ b/scripts/cli/src/__tests__/5_claim_management.ts @@ -0,0 +1,80 @@ +import { + initMain, + generateKeys, + disconnect, + transferAmount, + padTicker, +} from "../util/init"; +import { createIdentities, addClaim } from "../helpers/identity_helper"; +import { distributePolyBatch } from "../helpers/poly_helper"; +import { createTable } from "../util/sqlite3"; + +beforeAll(() => { + createTable(); +}); + +// Disconnects api after all the tests have completed +afterAll(async () => { + await disconnect(); +}); + +describe("5 - Claim Management Unit Test", () => { + test("Adding Claims", async () => { + const testEntities = await initMain(); + const alice = testEntities[0]; + const issuerSeed1 = "5_issuer_1"; + const issuerSeed2 = "5_issuer_2"; + const claimeeSeed = "5_claimee"; + const issuerKeys1 = await generateKeys(2, issuerSeed1); + const issuerKeys2 = await generateKeys(2, issuerSeed2); + const claimeeKeys = await generateKeys(2, claimeeSeed); + await expect(createIdentities(alice, issuerKeys1)).resolves.not.toThrow(); + await expect(createIdentities(alice, issuerKeys2)).resolves.not.toThrow(); + const claimeeDids = await createIdentities(alice, claimeeKeys); + expect(claimeeDids).toBeTruthy(); + const ticker = padTicker("5TICKER"); + await expect( + distributePolyBatch( + alice, + issuerKeys1.concat(issuerKeys2).concat(claimeeKeys), + transferAmount + ) + ).resolves.not.toThrow(); + console.log("Adding Exempted claim"); + await expect( + addClaim( + issuerKeys1[0], + claimeeDids[0], + { Exempted: { Identity: claimeeDids[1] } }, + null + ) + ).resolves.not.toThrow(); + console.log("Adding SellLockup claim"); + await expect( + addClaim( + issuerKeys1[0], + claimeeDids[0], + { SellLockup: { Ticker: ticker } }, + null + ) + ).resolves.not.toThrow(); + console.log("Adding Accredited claim"); + await expect( + addClaim( + issuerKeys2[0], + claimeeDids[0], + { Accredited: { Ticker: ticker } }, + null + ) + ).resolves.not.toThrow(); + console.log("Adding Affiliate claim"); + await expect( + addClaim( + issuerKeys2[0], + claimeeDids[0], + { Affiliate: { Ticker: ticker } }, + Date.now() as any + ) + ).resolves.not.toThrow(); + }); +}); diff --git a/scripts/cli/src/__tests__/6_create_assets.ts b/scripts/cli/src/__tests__/6_create_assets.ts new file mode 100644 index 0000000000..2431c08508 --- /dev/null +++ b/scripts/cli/src/__tests__/6_create_assets.ts @@ -0,0 +1,37 @@ +import { + initMain, + generateKeys, + disconnect, + transferAmount, + padTicker, +} from "../util/init"; +import { createIdentities } from "../helpers/identity_helper"; +import { distributePolyBatch } from "../helpers/poly_helper"; +import { issueTokenToDid } from "../helpers/asset_helper"; +import { createTable } from "../util/sqlite3"; + +beforeAll(() => { + createTable(); +}); + +// Disconnects api after all the tests have completed +afterAll(async () => { + await disconnect(); +}); + +describe("6 - Create Assets Unit Test", () => { + test("Creating Assets", async () => { + const ticker = padTicker("6TICKER"); + const testEntities = await initMain(); + const alice = testEntities[0]; + const primaryDevSeed = "6_primary"; + const primaryKeys = await generateKeys(1, primaryDevSeed); + await expect(createIdentities(alice, primaryKeys)).resolves.not.toThrow(); + await expect( + distributePolyBatch(alice, primaryKeys, transferAmount) + ).resolves.not.toThrow(); + await expect( + issueTokenToDid(primaryKeys[0], ticker, 1000000, null) + ).resolves.not.toThrow(); + }); +}); diff --git a/scripts/cli/src/__tests__/7_create_claim_compliance.ts b/scripts/cli/src/__tests__/7_create_claim_compliance.ts new file mode 100644 index 0000000000..3d9d20cb17 --- /dev/null +++ b/scripts/cli/src/__tests__/7_create_claim_compliance.ts @@ -0,0 +1,42 @@ +import { + initMain, + generateKeys, + disconnect, + transferAmount, + padTicker, +} from "../util/init"; +import { createIdentities } from "../helpers/identity_helper"; +import { distributePolyBatch } from "../helpers/poly_helper"; +import { issueTokenToDid } from "../helpers/asset_helper"; +import { createClaimCompliance } from "../helpers/compliance_manager_helper"; +import { createTable } from "../util/sqlite3"; + +beforeAll(() => { + createTable(); +}); + +// Disconnects api after all the tests have completed +afterAll(async () => { + await disconnect(); +}); + +describe("7 - Claim Compliance Unit Test", () => { + test("Create Claim Compliance", async () => { + const ticker = padTicker("7TICKER"); + const testEntities = await initMain(); + const alice = testEntities[0]; + const primaryDevSeed = "7_primary"; + const primaryKeys = await generateKeys(1, primaryDevSeed); + let issuerDid = await createIdentities(alice, primaryKeys); + expect(issuerDid).toBeTruthy(); + await expect( + distributePolyBatch(alice, primaryKeys, transferAmount) + ).resolves.not.toThrow(); + await expect( + issueTokenToDid(primaryKeys[0], ticker, 1000000, null) + ).resolves.not.toThrow(); + await expect( + createClaimCompliance(primaryKeys[0], issuerDid[0], ticker) + ).resolves.not.toThrow(); + }); +}); diff --git a/scripts/cli/src/__tests__/setup.ts b/scripts/cli/src/__tests__/setup.ts new file mode 100644 index 0000000000..b0f2e09959 --- /dev/null +++ b/scripts/cli/src/__tests__/setup.ts @@ -0,0 +1,2 @@ +jest.spyOn(global.console, 'warn').mockImplementation(() => jest.fn()); +jest.spyOn(global.console, 'error').mockImplementation(() => jest.fn()); \ No newline at end of file diff --git a/scripts/cli/src/helpers/identity_helper.ts b/scripts/cli/src/helpers/identity_helper.ts index fee48cf0c9..aaba144485 100644 --- a/scripts/cli/src/helpers/identity_helper.ts +++ b/scripts/cli/src/helpers/identity_helper.ts @@ -11,10 +11,22 @@ import type { AuthorizationData, AgentGroup, CddId, + Claim, } from "../types"; import { sendTx, keyToIdentityIds, ApiSingleton } from "../util/init"; import type { IdentityId, Moment } from "../interfaces"; +export async function addClaim( + signer: KeyringPair, + claimeeDid: IdentityId, + claim: Claim, + expiry: any +) { + const api = await ApiSingleton.getInstance(); + const transaction = api.tx.identity.addClaim(claimeeDid, claim, expiry); + await sendTx(signer, transaction); +} + /** * @description Adds a Claim to an Identity */ diff --git a/scripts/cli/src/helpers/staking_helper.ts b/scripts/cli/src/helpers/staking_helper.ts index 1dcb7709b1..7a1b7fec78 100644 --- a/scripts/cli/src/helpers/staking_helper.ts +++ b/scripts/cli/src/helpers/staking_helper.ts @@ -23,13 +23,17 @@ export async function addNominator(controller: KeyringPair[], stash: KeyringPair const tx = api.tx.staking.bond(controller[i].address, bond_amount, "Controller"); await sendTx(stash[i], tx); } - //await blockTillPoolEmpty(); - // fund controller keys - await distributePolyBatch(from, controller, transfer_amount.toNumber()); - //await blockTillPoolEmpty(); + // fund controller keys + await distributePolyBatch(from, controller, transfer_amount.toNumber()); for (let i = 0; i < controller.length; i++) { const tx = api.tx.staking.nominate(operators); await sendTx(controller[i], tx); } } + +export async function forceNewEra(signer: KeyringPair) { + const api = await ApiSingleton.getInstance(); + const transaction = api.tx.sudo.sudo(api.tx.staking.forceNewEra()); + await sendTx(signer, transaction); +} \ No newline at end of file diff --git a/scripts/cli/src/interfaces/augment-api-errors.ts b/scripts/cli/src/interfaces/augment-api-errors.ts index 54aa769eb6..59237ddeff 100644 --- a/scripts/cli/src/interfaces/augment-api-errors.ts +++ b/scripts/cli/src/interfaces/augment-api-errors.ts @@ -30,10 +30,6 @@ declare module '@polkadot/api/types/errors' { * An overflow while calculating the balance. **/ BalanceOverflow: AugmentedError; - /** - * An overflow while generating the next `CustomAssetTypeId`. - **/ - CustomAssetTypeIdOverflow: AugmentedError; /** * When extension is already added. **/ @@ -54,6 +50,10 @@ declare module '@polkadot/api/types/errors' { * Some `AssetIdentifier` was invalid. **/ InvalidAssetIdentifier: AugmentedError; + /** + * Invalid `CustomAssetTypeId`. + **/ + InvalidCustomAssetTypeId: AugmentedError; /** * An invalid Ethereum `EcdsaSignature`. **/ @@ -66,6 +66,10 @@ declare module '@polkadot/api/types/errors' { * Transfer validation check failed. **/ InvalidTransfer: AugmentedError; + /** + * Investor Uniqueness claims are not allowed for this asset. + **/ + InvestorUniquenessClaimNotAllowed: AugmentedError; /** * Number of Transfer Manager extensions attached to an asset is equal to MaxNumberOfTMExtensionForAsset. **/ @@ -87,7 +91,7 @@ declare module '@polkadot/api/types/errors' { **/ NoSuchDoc: AugmentedError; /** - * Not an owner of the token. + * Not an owner of the token on Ethereum. **/ NotAnOwner: AugmentedError; /** @@ -192,6 +196,15 @@ declare module '@polkadot/api/types/errors' { [key: string]: AugmentedError; }; base: { + /** + * The sequence counter for something overflowed. + * + * When this happens depends on the capacity of the identifier type. + * For example, we might have `pub struct PipId(u32);`, with `u32::MAX` capacity. + * In practice, these errors will never happen but no code path should result in a panic, + * so these corner cases need to be covered with an error variant. + **/ + CounterOverflow: AugmentedError; /** * Exceeded a generic length limit. * The limit could be for any sort of lists of things, including a string. @@ -282,12 +295,12 @@ declare module '@polkadot/api/types/errors' { **/ CannotClaimBeforeStart: AugmentedError; /** - * A corporate ballot was made for a non-benefit CA. + * A capital distribution was made for a non-benefit CA. **/ CANotBenefit: AugmentedError; /** * Currency that is distributed is the same as the CA's ticker. - * CAA is attempting a form of stock split, which is not what the extrinsic is for. + * Calling agent is attempting a form of stock split, which is not what the extrinsic is for. **/ DistributingAsset: AugmentedError; /** @@ -359,10 +372,6 @@ declare module '@polkadot/api/types/errors' { [key: string]: AugmentedError; }; checkpoint: { - /** - * An overflow while calculating the checkpoint ID. - **/ - CheckpointOverflow: AugmentedError; /** * Failed to compute the next checkpoint. * The schedule does not have any upcoming checkpoints. @@ -380,10 +389,6 @@ declare module '@polkadot/api/types/errors' { * A checkpoint schedule is not removable as `ref_count(schedule_id) > 0`. **/ ScheduleNotRemovable: AugmentedError; - /** - * An overflow while calculating the checkpoint schedule ID. - **/ - ScheduleOverflow: AugmentedError; /** * The set of schedules taken together are too complex. * For example, they are too many, or they occurs too frequently. @@ -480,11 +485,6 @@ declare module '@polkadot/api/types/errors' { * The chain refused to make a choice, and hence there was an error. **/ DuplicateDidTax: AugmentedError; - /** - * There have been too many CAs for this ticker and the ID would overflow. - * This won't occur in practice. - **/ - LocalCAIdOverflow: AugmentedError; /** * The CA did not have a record date. **/ @@ -587,11 +587,6 @@ declare module '@polkadot/api/types/errors' { * The provided `agent` is already an agent for the `Ticker`. **/ AlreadyAnAgent: AugmentedError; - /** - * There have been too many AGs for this ticker and the ID would overflow. - * This won't occur in practice. - **/ - LocalAGIdOverflow: AugmentedError; /** * An AG with the given `AGId` did not exist for the `Ticker`. **/ @@ -600,11 +595,6 @@ declare module '@polkadot/api/types/errors' { * The provided `agent` is not an agent for the `Ticker`. **/ NotAnAgent: AugmentedError; - /** - * The counter for full agents will overflow. - * This should never happen in practice, but is theoretically possible. - **/ - NumFullAgentsOverflow: AugmentedError; /** * This agent is the last full one, and it's being removed, * making the asset orphaned. @@ -1337,6 +1327,10 @@ declare module '@polkadot/api/types/errors' { * Internal state has become somehow corrupted and the operation cannot continue. **/ BadState: AugmentedError; + /** + * A nomination target was supplied that was blocked or otherwise not a validator. + **/ + BadTarget: AugmentedError; /** * When the amount to be bonded is less than `MinimumBond` **/ @@ -1468,10 +1462,22 @@ declare module '@polkadot/api/types/errors' { * The snapshot data of the current window is missing. **/ SnapshotUnavailable: AugmentedError; + /** + * Validator or nominator stash identity does not exist. + **/ + StashIdentityDoesNotExist: AugmentedError; + /** + * Nominator stash was not CDDed. + **/ + StashIdentityNotCDDed: AugmentedError; /** * Validator stash identity was not permissioned. **/ StashIdentityNotPermissioned: AugmentedError; + /** + * Too many nomination targets supplied. + **/ + TooManyTargets: AugmentedError; /** * Generic error **/ diff --git a/scripts/cli/src/interfaces/augment-api-events.ts b/scripts/cli/src/interfaces/augment-api-events.ts index b7272bd512..0c07992c8d 100644 --- a/scripts/cli/src/interfaces/augment-api-events.ts +++ b/scripts/cli/src/interfaces/augment-api-events.ts @@ -14,7 +14,7 @@ import type { TaskAddress } from '@polkadot/types/interfaces/scheduler'; import type { IdentificationTuple, SessionIndex } from '@polkadot/types/interfaces/session'; import type { ElectionCompute, EraIndex } from '@polkadot/types/interfaces/staking'; import type { DispatchError, DispatchInfo, DispatchResult } from '@polkadot/types/interfaces/system'; -import type { AGId, AgentGroup, AssetIdentifier, AssetName, AssetType, AuthorizationData, BallotMeta, BallotTimeRange, BallotVote, BridgeTx, CADetails, CAId, CheckpointId, ComplianceRequirement, CorporateAction, CustomAssetTypeId, Distribution, Document, DocumentId, ErrorAt, EventCounts, EventDid, ExtrinsicPermissions, FundingRoundName, Fundraiser, FundraiserName, HandledTxStatus, IdentityClaim, IdentityId, InvestorUid, Leg, MaybeBlock, Memo, Permissions, PipDescription, PipId, PortfolioId, PortfolioName, PortfolioNumber, PosRatio, ProposalData, ProposalState, Proposer, ReceiptMetadata, ScopeId, SecondaryKey, SettlementType, Signatory, SkippedCount, SlashingSwitch, SnapshotId, SnapshottedPip, StoredSchedule, TargetIdentities, Tax, Ticker, TransferManager, TrustedIssuer, Url, VenueDetails, VenueType } from 'polymesh-typegen/interfaces/default'; +import type { AGId, AgentGroup, AssetIdentifier, AssetName, AssetType, AuthorizationData, BallotMeta, BallotTimeRange, BallotVote, BridgeTx, CADetails, CAId, CheckpointId, ComplianceRequirement, CorporateAction, CustomAssetTypeId, Distribution, Document, DocumentId, ErrorAt, EventCounts, EventDid, ExtrinsicPermissions, FundingRoundName, Fundraiser, FundraiserId, FundraiserName, HandledTxStatus, IdentityClaim, IdentityId, InstructionId, InvestorUid, Leg, LegId, MaybeBlock, Memo, Permissions, PipDescription, PipId, PortfolioId, PortfolioName, PortfolioNumber, PosRatio, ProposalData, ProposalState, Proposer, ReceiptMetadata, ScopeId, SecondaryKey, SettlementType, Signatory, SkippedCount, SlashingSwitch, SnapshotId, SnapshottedPip, StoredSchedule, TargetIdentities, Tax, Ticker, TransferManager, TrustedIssuer, Url, VenueDetails, VenueId, VenueType } from 'polymesh-typegen/interfaces/default'; import type { ApiTypes } from '@polkadot/api/types'; declare module '@polkadot/api/types/events' { @@ -228,6 +228,10 @@ declare module '@polkadot/api/types/events' { * Confirmation of default timelock change. **/ TimelockChanged: AugmentedEvent; + /** + * Notification of removing a transaction. + **/ + TxRemoved: AugmentedEvent; /** * An event emitted after a vector of transactions is handled. The parameter is a vector of * tuples of recipient account, its nonce, and the status of the processed transaction. @@ -255,21 +259,21 @@ declare module '@polkadot/api/types/events' { BenefitClaimed: AugmentedEvent; /** * A capital distribution, with details included, - * was created by the DID (the CAA) for the CA specified by the `CAId`. + * was created by the DID (permissioned agent) for the CA identified by `CAId`. * - * (CAA of CAId's ticker, CA's ID, distribution details) + * (Agent DID, CA's ID, distribution details) **/ Created: AugmentedEvent; /** * Stats from `push_benefit` was emitted. * - * (CAA/owner of CA's ticker, CA's ID, max requested DIDs, processed DIDs, failed DIDs) + * (Agent DID, CA's ID, max requested DIDs, processed DIDs, failed DIDs) **/ Reclaimed: AugmentedEvent; /** * A capital distribution was removed. * - * (Ticker's CAA, CA's ID) + * (Agent DID, CA's ID) **/ Removed: AugmentedEvent; /** @@ -444,32 +448,32 @@ declare module '@polkadot/api/types/events' { CAATransferred: AugmentedEvent; /** * A CA was initiated. - * (CAA DID, CA id, the CA, the CA details) + * (Agent DID, CA id, the CA, the CA details) **/ CAInitiated: AugmentedEvent; /** * A CA was linked to a set of docs. - * (CAA, CA Id, List of doc identifiers) + * (Agent DID, CA Id, List of doc identifiers) **/ CALinkedToDoc: AugmentedEvent]>; /** * A CA was removed. - * (CAA, CA Id) + * (Agent DID, CA Id) **/ CARemoved: AugmentedEvent; /** * The set of default `TargetIdentities` for a ticker changed. - * (CAA DID, Ticker, New TargetIdentities) + * (Agent DID, Ticker, New TargetIdentities) **/ DefaultTargetIdentitiesChanged: AugmentedEvent; /** * The default withholding tax for a ticker changed. - * (CAA DID, Ticker, New Tax). + * (Agent DID, Ticker, New Tax). **/ DefaultWithholdingTaxChanged: AugmentedEvent; /** * The withholding tax specific to a DID for a ticker changed. - * (CAA DID, Ticker, Taxed DID, New Tax). + * (Agent DID, Ticker, Taxed DID, New Tax). **/ DidWithholdingTaxChanged: AugmentedEvent]>; /** @@ -490,31 +494,31 @@ declare module '@polkadot/api/types/events' { /** * A corporate ballot was created. * - * (Ticker's CAA, CA's ID, Voting start/end, Ballot metadata, RCV enabled?) + * (Agent DID, CA's ID, Voting start/end, Ballot metadata, RCV enabled?) **/ Created: AugmentedEvent; /** * A corporate ballot changed its metadata. * - * (Ticker's CAA, CA's ID, New metadata) + * (Agent DID, CA's ID, New metadata) **/ MetaChanged: AugmentedEvent; /** * A corporate ballot changed its start/end date range. * - * (Ticker's CAA, CA's ID, Voting start/end) + * (Agent DID, CA's ID, Voting start/end) **/ RangeChanged: AugmentedEvent; /** * A corporate ballot changed its RCV support. * - * (Ticker's CAA, CA's ID, New support) + * (Agent DID, CA's ID, New support) **/ RCVChanged: AugmentedEvent; /** * A corporate ballot was removed. * - * (Ticker's CAA, CA's ID) + * (Agent DID, CA's ID) **/ Removed: AugmentedEvent; /** @@ -1091,45 +1095,45 @@ declare module '@polkadot/api/types/events' { /** * An affirmation has been withdrawn (did, portfolio, instruction_id) **/ - AffirmationWithdrawn: AugmentedEvent; + AffirmationWithdrawn: AugmentedEvent; /** * An instruction has been affirmed (did, portfolio, instruction_id) **/ - InstructionAffirmed: AugmentedEvent; + InstructionAffirmed: AugmentedEvent; /** * A new instruction has been created * (did, venue_id, instruction_id, settlement_type, trade_date, value_date, legs) **/ - InstructionCreated: AugmentedEvent, Option, Vec]>; + InstructionCreated: AugmentedEvent, Option, Vec]>; /** * Instruction executed successfully(did, instruction_id) **/ - InstructionExecuted: AugmentedEvent; + InstructionExecuted: AugmentedEvent; /** * Instruction failed execution (did, instruction_id) **/ - InstructionFailed: AugmentedEvent; + InstructionFailed: AugmentedEvent; /** * An instruction has been rejected (did, instruction_id) **/ - InstructionRejected: AugmentedEvent; + InstructionRejected: AugmentedEvent; /** * Instruction is rescheduled. * (caller DID, instruction_id) **/ - InstructionRescheduled: AugmentedEvent; + InstructionRescheduled: AugmentedEvent; /** * Execution of a leg failed (did, instruction_id, leg_id) **/ - LegFailedExecution: AugmentedEvent; + LegFailedExecution: AugmentedEvent; /** * A receipt has been claimed (did, instruction_id, leg_id, receipt_uid, signer, receipt metadata) **/ - ReceiptClaimed: AugmentedEvent; + ReceiptClaimed: AugmentedEvent; /** * A receipt has been unclaimed (did, instruction_id, leg_id, receipt_uid, signer) **/ - ReceiptUnclaimed: AugmentedEvent; + ReceiptUnclaimed: AugmentedEvent; /** * A receipt has been invalidated (did, signer, receipt_uid, validity) **/ @@ -1141,11 +1145,11 @@ declare module '@polkadot/api/types/events' { /** * A new venue has been created (did, venue_id, details, type) **/ - VenueCreated: AugmentedEvent; + VenueCreated: AugmentedEvent; /** * An existing venue's details has been updated (did, venue_id, details) **/ - VenueDetailsUpdated: AugmentedEvent; + VenueDetailsUpdated: AugmentedEvent; /** * Venue filtering has been enabled or disabled for a ticker (did, ticker, filtering_enabled) **/ @@ -1153,19 +1157,19 @@ declare module '@polkadot/api/types/events' { /** * Venues added to allow list (did, ticker, vec) **/ - VenuesAllowed: AugmentedEvent]>; + VenuesAllowed: AugmentedEvent]>; /** * Venues added to block list (did, ticker, vec) **/ - VenuesBlocked: AugmentedEvent]>; + VenuesBlocked: AugmentedEvent]>; /** * An existing venue's type has been updated (did, venue_id, type) **/ - VenueTypeUpdated: AugmentedEvent; + VenueTypeUpdated: AugmentedEvent; /** - * Venue unauthorized by ticker owner (did, Ticker, venue_id) + * Venue not part of the token's allow list (did, Ticker, venue_id) **/ - VenueUnauthorized: AugmentedEvent; + VenueUnauthorized: AugmentedEvent; /** * Generic event **/ @@ -1282,34 +1286,34 @@ declare module '@polkadot/api/types/events' { sto: { /** * A fundraiser has been stopped. - * (primary issuance agent, fundraiser id) + * (Agent DID, fundraiser id) **/ - FundraiserClosed: AugmentedEvent; + FundraiserClosed: AugmentedEvent; /** * A new fundraiser has been created. - * (primary issuance agent, fundraiser id, fundraiser name, fundraiser details) + * (Agent DID, fundraiser id, fundraiser name, fundraiser details) **/ - FundraiserCreated: AugmentedEvent; + FundraiserCreated: AugmentedEvent; /** * A fundraiser has been frozen. - * (primary issuance agent, fundraiser id) + * (Agent DID, fundraiser id) **/ - FundraiserFrozen: AugmentedEvent; + FundraiserFrozen: AugmentedEvent; /** * A fundraiser has been unfrozen. - * (primary issuance agent, fundraiser id) + * (Agent DID, fundraiser id) **/ - FundraiserUnfrozen: AugmentedEvent; + FundraiserUnfrozen: AugmentedEvent; /** * A fundraiser window has been modified. - * (primary issuance agent, fundraiser id, old_start, old_end, new_start, new_end) + * (Agent DID, fundraiser id, old_start, old_end, new_start, new_end) **/ - FundraiserWindowModified: AugmentedEvent, Moment, Option]>; + FundraiserWindowModified: AugmentedEvent, Moment, Option]>; /** * An investor invested in the fundraiser. * (Investor, fundraiser_id, offering token, raise token, offering_token_amount, raise_token_amount) **/ - Invested: AugmentedEvent; + Invested: AugmentedEvent; /** * Generic event **/ diff --git a/scripts/cli/src/interfaces/augment-api-query.ts b/scripts/cli/src/interfaces/augment-api-query.ts index 8761ea9175..772d8e8cb4 100644 --- a/scripts/cli/src/interfaces/augment-api-query.ts +++ b/scripts/cli/src/interfaces/augment-api-query.ts @@ -18,7 +18,7 @@ import type { Keys, SessionIndex } from '@polkadot/types/interfaces/session'; import type { ActiveEraInfo, ElectionResult, ElectionScore, ElectionStatus, EraIndex, EraRewardPoints, Exposure, Forcing, Nominations, RewardDestination, SlashingSpans, SpanIndex, SpanRecord, StakingLedger, UnappliedSlash, ValidatorPrefs } from '@polkadot/types/interfaces/staking'; import type { AccountInfo, ConsumedWeight, DigestOf, EventIndex, EventRecord, LastRuntimeUpgradeInfo, Phase } from '@polkadot/types/interfaces/system'; import type { Multiplier } from '@polkadot/types/interfaces/txpayment'; -import type { AGId, AffirmationStatus, AgentGroup, AssetCompliance, AssetIdentifier, AssetName, AssetOwnershipRelation, Authorization, AuthorizationNonce, BallotMeta, BallotTimeRange, BallotVote, BridgeTxDetail, CADetails, CAId, CheckpointId, Claim1stKey, Claim2ndKey, ClassicTickerRegistration, CorporateAction, Counter, CustomAssetTypeId, DepositInfo, DidRecord, Distribution, Document, DocumentId, ExtrinsicPermissions, FundingRoundName, Fundraiser, FundraiserName, IdentityClaim, IdentityId, InactiveMember, Instruction, ItnRewardStatus, Leg, LegStatus, LocalCAId, MaybeBlock, PermissionedIdentityPrefs, Pip, PipId, PipsMetadata, PolymeshVotes, PortfolioId, PortfolioName, PortfolioNumber, PosRatio, ProposalDetails, ProtocolOp, ScheduleId, ScopeId, SecurityToken, Signatory, SkippedCount, SlashingSwitch, SnapshotMetadata, SnapshottedPip, StoredSchedule, Subsidy, TargetIdentities, Tax, Ticker, TickerRegistration, TickerRegistrationConfig, TransferManager, TrustedIssuer, Venue, VenueDetails, Version, VotingResult } from 'polymesh-typegen/interfaces/default'; +import type { AGId, AffirmationStatus, AgentGroup, AssetCompliance, AssetIdentifier, AssetName, AssetOwnershipRelation, Authorization, AuthorizationNonce, BallotMeta, BallotTimeRange, BallotVote, BridgeTxDetail, CADetails, CAId, CheckpointId, Claim1stKey, Claim2ndKey, ClassicTickerRegistration, CorporateAction, Counter, CustomAssetTypeId, DepositInfo, DidRecord, Distribution, Document, DocumentId, ExtrinsicPermissions, FundingRoundName, Fundraiser, FundraiserId, FundraiserName, IdentityClaim, IdentityId, InactiveMember, Instruction, InstructionId, ItnRewardStatus, Leg, LegId, LegStatus, LocalCAId, MaybeBlock, PermissionedIdentityPrefs, Pip, PipId, PipsMetadata, PolymeshVotes, PortfolioId, PortfolioName, PortfolioNumber, PosRatio, ProposalDetails, ProtocolOp, ScheduleId, ScopeId, SecurityToken, Signatory, SkippedCount, SlashingSwitch, SnapshotId, SnapshotMetadata, SnapshottedPip, StoredSchedule, Subsidy, TargetIdentities, Tax, Ticker, TickerRegistration, TickerRegistrationConfig, TransferManager, TrustedIssuer, Venue, VenueDetails, VenueId, Version, VotingResult } from 'polymesh-typegen/interfaces/default'; import type { ApiTypes } from '@polkadot/api/types'; declare module '@polkadot/api/types/storage' { @@ -753,7 +753,7 @@ declare module '@polkadot/api/types/storage' { }; multiSig: { /** - * Maps a multisig secondary key to a multisig address. + * Maps a multisig signer key to a multisig address. **/ keyToMultiSig: AugmentedQuery Observable, [AccountId]> & QueryableStorageEntry; /** @@ -882,7 +882,7 @@ declare module '@polkadot/api/types/storage' { /** * Proposals so far. id can be used to keep track of PIPs off-chain. **/ - pipIdSequence: AugmentedQuery Observable, []> & QueryableStorageEntry; + pipIdSequence: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * The number of times a certain PIP has been skipped. * Once a (configurable) threshhold is exceeded, a PIP cannot be skipped again. @@ -918,7 +918,7 @@ declare module '@polkadot/api/types/storage' { /** * Snapshots so far. id can be used to keep track of snapshots off-chain. **/ - snapshotIdSequence: AugmentedQuery Observable, []> & QueryableStorageEntry; + snapshotIdSequence: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * The metadata of the snapshot, if there is one. **/ @@ -931,6 +931,7 @@ declare module '@polkadot/api/types/storage' { * Once a (configurable) threshhold is exceeded, a PIP cannot be skipped again. **/ snapshotQueue: AugmentedQuery Observable>, []> & QueryableStorageEntry; + storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Generic query **/ @@ -1139,32 +1140,32 @@ declare module '@polkadot/api/types/storage' { /** * Tracks affirmations received for an instruction. (instruction_id, counter_party) -> AffirmationStatus **/ - affirmsReceived: AugmentedQuery Observable, [u64, PortfolioId]> & QueryableStorageEntry; + affirmsReceived: AugmentedQuery Observable, [InstructionId, PortfolioId]> & QueryableStorageEntry; /** * Free-form text about a venue. venue_id -> `VenueDetails` * Only needed for the UI. **/ - details: AugmentedQuery Observable, [u64]> & QueryableStorageEntry; + details: AugmentedQuery Observable, [VenueId]> & QueryableStorageEntry; /** * Number of affirmations pending before instruction is executed. instruction_id -> affirm_pending **/ - instructionAffirmsPending: AugmentedQuery Observable, [u64]> & QueryableStorageEntry; + instructionAffirmsPending: AugmentedQuery Observable, [InstructionId]> & QueryableStorageEntry; /** * Number of instructions in the system (It's one more than the actual number) **/ - instructionCounter: AugmentedQuery Observable, []> & QueryableStorageEntry; + instructionCounter: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Details about an instruction. instruction_id -> instruction_details **/ - instructionDetails: AugmentedQuery Observable, [u64]> & QueryableStorageEntry; + instructionDetails: AugmentedQuery Observable, [InstructionId]> & QueryableStorageEntry; /** * Legs under an instruction. (instruction_id, leg_id) -> Leg **/ - instructionLegs: AugmentedQuery Observable, [u64, u64]> & QueryableStorageEntry; + instructionLegs: AugmentedQuery Observable, [InstructionId, LegId]> & QueryableStorageEntry; /** * Status of a leg under an instruction. (instruction_id, leg_id) -> LegStatus **/ - instructionLegStatus: AugmentedQuery Observable, [u64, u64]> & QueryableStorageEntry; + instructionLegStatus: AugmentedQuery Observable, [InstructionId, LegId]> & QueryableStorageEntry; /** * Tracks redemption of receipts. (signer, receipt_uid) -> receipt_used **/ @@ -1177,20 +1178,20 @@ declare module '@polkadot/api/types/storage' { * Helps a user track their pending instructions and affirmations (only needed for UI). * (counter_party, instruction_id) -> AffirmationStatus **/ - userAffirmations: AugmentedQuery Observable, [PortfolioId, u64]> & QueryableStorageEntry; + userAffirmations: AugmentedQuery Observable, [PortfolioId, InstructionId]> & QueryableStorageEntry; /** * Array of venues created by an identity. Only needed for the UI. IdentityId -> Vec **/ - userVenues: AugmentedQuery Observable>, [IdentityId]> & QueryableStorageEntry; + userVenues: AugmentedQuery Observable>, [IdentityId]> & QueryableStorageEntry; /** - * Venues that are allowed to create instructions involving a particular ticker. Oly used if filtering is enabled. + * Venues that are allowed to create instructions involving a particular ticker. Only used if filtering is enabled. * (ticker, venue_id) -> allowed **/ - venueAllowList: AugmentedQuery Observable, [Ticker, u64]> & QueryableStorageEntry; + venueAllowList: AugmentedQuery Observable, [Ticker, VenueId]> & QueryableStorageEntry; /** * Number of venues in the system (It's one more than the actual number) **/ - venueCounter: AugmentedQuery Observable, []> & QueryableStorageEntry; + venueCounter: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Tracks if a token has enabled filtering venues that can create instructions involving their token. Ticker -> filtering_enabled **/ @@ -1198,18 +1199,18 @@ declare module '@polkadot/api/types/storage' { /** * Info about a venue. venue_id -> venue **/ - venueInfo: AugmentedQuery Observable>, [u64]> & QueryableStorageEntry; + venueInfo: AugmentedQuery Observable>, [VenueId]> & QueryableStorageEntry; /** * Instructions under a venue. * Only needed for the UI. * * venue_id -> instruction_id -> () **/ - venueInstructions: AugmentedQuery Observable>, [u64, u64]> & QueryableStorageEntry; + venueInstructions: AugmentedQuery Observable>, [VenueId, InstructionId]> & QueryableStorageEntry; /** * Signers allowed by the venue. (venue_id, signer) -> bool **/ - venueSigners: AugmentedQuery Observable, [u64, AccountId]> & QueryableStorageEntry; + venueSigners: AugmentedQuery Observable, [VenueId, AccountId]> & QueryableStorageEntry; /** * Generic query **/ @@ -1455,17 +1456,17 @@ declare module '@polkadot/api/types/storage' { /** * Total fundraisers created for a token. **/ - fundraiserCount: AugmentedQuery Observable, [Ticker]> & QueryableStorageEntry; + fundraiserCount: AugmentedQuery Observable, [Ticker]> & QueryableStorageEntry; /** - * Name for the Fundraiser. It is only used offchain. + * Name for the Fundraiser. Only used offchain. * (ticker, fundraiser_id) -> Fundraiser name **/ - fundraiserNames: AugmentedQuery Observable, [Ticker, u64]> & QueryableStorageEntry; + fundraiserNames: AugmentedQuery Observable, [Ticker, FundraiserId]> & QueryableStorageEntry; /** * All fundraisers that are currently running. * (ticker, fundraiser_id) -> Fundraiser **/ - fundraisers: AugmentedQuery Observable>, [Ticker, u64]> & QueryableStorageEntry; + fundraisers: AugmentedQuery Observable>, [Ticker, FundraiserId]> & QueryableStorageEntry; /** * Generic query **/ diff --git a/scripts/cli/src/interfaces/augment-api-tx.ts b/scripts/cli/src/interfaces/augment-api-tx.ts index ed2e136a69..306f3d4af5 100644 --- a/scripts/cli/src/interfaces/augment-api-tx.ts +++ b/scripts/cli/src/interfaces/augment-api-tx.ts @@ -14,7 +14,7 @@ import type { Period, Priority } from '@polkadot/types/interfaces/scheduler'; import type { Keys } from '@polkadot/types/interfaces/session'; import type { CompactAssignments, ElectionScore, ElectionSize, EraIndex, RewardDestination, ValidatorIndex, ValidatorPrefs } from '@polkadot/types/interfaces/staking'; import type { Key } from '@polkadot/types/interfaces/system'; -import type { AGId, AgentGroup, AssetIdentifier, AssetName, AssetType, AuthorizationData, BallotMeta, BallotTimeRange, BallotVote, Beneficiary, BridgeTx, CADetails, CAId, CAKind, Claim, ClaimType, ClassicTickerImport, ComplianceRequirement, Condition, Document, DocumentId, ExtrinsicPermissions, FundingRoundName, FundraiserName, IdentityId, InvestorUid, InvestorZKProofData, ItnRewardStatus, Leg, LegacyPermissions, MaybeBlock, Memo, MovePortfolioItem, OffChainSignature, Permissions, PipDescription, PipId, PortfolioId, PortfolioName, PortfolioNumber, PosRatio, PriceTier, ProtocolOp, ReceiptDetails, RecordDateSpec, ScheduleId, ScheduleSpec, Scope, ScopeClaimProof, ScopeId, SecondaryKey, SecondaryKeyWithAuth, SettlementType, Signatory, SkippedCount, SlashingSwitch, SnapshotResult, TargetIdentities, Tax, Ticker, TickerRegistrationConfig, TransferManager, TrustedIssuer, UniqueCall, Url, VenueDetails, VenueType } from 'polymesh-typegen/interfaces/default'; +import type { AGId, AgentGroup, AssetIdentifier, AssetName, AssetType, AuthorizationData, BallotMeta, BallotTimeRange, BallotVote, Beneficiary, BridgeTx, CADetails, CAId, CAKind, Claim, ClaimType, ClassicTickerImport, ComplianceRequirement, Condition, Document, DocumentId, ExtrinsicPermissions, FundingRoundName, FundraiserId, FundraiserName, IdentityId, InstructionId, InvestorUid, InvestorZKProofData, ItnRewardStatus, Leg, LegId, LegacyPermissions, MaybeBlock, Memo, MovePortfolioItem, OffChainSignature, Permissions, PipDescription, PipId, PortfolioId, PortfolioName, PortfolioNumber, PosRatio, PriceTier, ProtocolOp, ReceiptDetails, RecordDateSpec, ScheduleId, ScheduleSpec, Scope, ScopeClaimProof, ScopeId, SecondaryKey, SecondaryKeyWithAuth, SettlementType, Signatory, SkippedCount, SlashingSwitch, SnapshotResult, TargetIdentities, Tax, Ticker, TickerRegistrationConfig, TransferManager, TrustedIssuer, UniqueCall, Url, VenueDetails, VenueId, VenueType } from 'polymesh-typegen/interfaces/default'; import type { ApiTypes, SubmittableExtrinsic } from '@polkadot/api/types'; declare module '@polkadot/api/types/submittable' { @@ -45,10 +45,10 @@ declare module '@polkadot/api/types/submittable' { **/ acceptTickerTransfer: AugmentedSubmittable<(authId: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u64]>; /** - * Add documents for a given token. To be called only by the token owner. + * Add documents for a given token. * * # Arguments - * * `origin` Secondary key of the token owner. + * * `origin` is a signer that has permissions to act as an agent of `ticker`. * * `ticker` Ticker of the token. * * `docs` Documents to be attached to `ticker`. * @@ -74,11 +74,10 @@ declare module '@polkadot/api/types/submittable' { **/ claimClassicTicker: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, ethereumSignature: EcdsaSignature | string | Uint8Array) => SubmittableExtrinsic, [Ticker, EcdsaSignature]>; /** - * Forces a transfer of token from `from_portfolio` to the PIA's default portfolio. - * Only PIA is allowed to execute this. + * Forces a transfer of token from `from_portfolio` to the caller's default portfolio. * * # Arguments - * * `origin` Must be a PIA for a given ticker. + * * `origin` Must be an external agent with appropriate permissions for a given ticker. * * `ticker` Ticker symbol of the asset. * * `value` Amount of tokens need to force transfer. * * `from_portfolio` From whom portfolio tokens gets transferred. @@ -129,10 +128,10 @@ declare module '@polkadot/api/types/submittable' { freeze: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array) => SubmittableExtrinsic, [Ticker]>; /** * Issue, or mint, new tokens to the caller, - * which must be an authorized agent, e.g., a primary issuance agent. + * which must be an authorized external agent. * * # Arguments - * * `origin` must be the secondary key of token owner. + * * `origin` is a signer that has permissions to act as an agent of `ticker`. * * `ticker` of the token. * * `amount` of tokens that get issued. * @@ -142,10 +141,10 @@ declare module '@polkadot/api/types/submittable' { **/ issue: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, amount: Balance | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Ticker, Balance]>; /** - * Makes an indivisible token divisible. Only called by the token owner. + * Makes an indivisible token divisible. * * # Arguments - * * `origin` Secondary key of the token owner. + * * `origin` is a signer that has permissions to act as an agent of `ticker`. * * `ticker` Ticker of the token. * * ## Errors @@ -156,17 +155,17 @@ declare module '@polkadot/api/types/submittable' { **/ makeDivisible: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array) => SubmittableExtrinsic, [Ticker]>; /** - * Redeems existing tokens by reducing the balance of the PIA's default portfolio and the total supply of the token + * Redeems existing tokens by reducing the balance of the caller's default portfolio and the total supply of the token * * # Arguments - * * `origin` Secondary key of token owner. + * * `origin` is a signer that has permissions to act as an agent of `ticker`. * * `ticker` Ticker of the token. * * `value` Amount of tokens to redeem. * * # Errors - * - `Unauthorized` If called by someone other than the token owner or the PIA + * - `Unauthorized` If called by someone without the appropriate external agent permissions * - `InvalidGranularity` If the amount is not divisible by 10^6 for non-divisible tokens - * - `InsufficientPortfolioBalance` If the PIA's default portfolio doesn't have enough free balance + * - `InsufficientPortfolioBalance` If the caller's default portfolio doesn't have enough free balance * * # Permissions * * Asset @@ -198,10 +197,10 @@ declare module '@polkadot/api/types/submittable' { **/ registerTicker: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array) => SubmittableExtrinsic, [Ticker]>; /** - * Remove documents for a given token. To be called only by the token owner. + * Remove documents for a given token. * * # Arguments - * * `origin` Secondary key of the token owner. + * * `origin` is a signer that has permissions to act as an agent of `ticker`. * * `ticker` Ticker of the token. * * `ids` Documents ids to be removed from `ticker`. * @@ -245,7 +244,7 @@ declare module '@polkadot/api/types/submittable' { * Sets the name of the current funding round. * * # Arguments - * * `origin` - the secondary key of the token owner DID. + * * `origin` - a signer that has permissions to act as an agent of `ticker`. * * `ticker` - the ticker of the token. * * `name` - the desired name of the current funding round. * @@ -272,10 +271,10 @@ declare module '@polkadot/api/types/submittable' { **/ unfreeze: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array) => SubmittableExtrinsic, [Ticker]>; /** - * Updates the asset identifiers. Can only be called by the token owner. + * Updates the asset identifiers. * * # Arguments - * * `origin` - the secondary key of the token owner. + * * `origin` - a signer that has permissions to act as an agent of `ticker`. * * `ticker` - the ticker of the token. * * `identifiers` - the asset identifiers to be updated in the form of a vector of pairs * of `IdentifierType` and `AssetIdentifier` value. @@ -512,6 +511,14 @@ declare module '@polkadot/api/types/submittable' { * - `BadAdmin` if `origin` is not `Self::admin()` account. **/ removeFreezeAdmin: AugmentedSubmittable<(freezeAdmin: AccountId | string | Uint8Array) => SubmittableExtrinsic, [AccountId]>; + /** + * Remove given bridge transactions. + * + * ## Errors + * - `BadAdmin` if `origin` is not `Self::admin()` account. + * - `NotFrozen` if a tx in `bridge_txs` is not frozen. + **/ + removeTxs: AugmentedSubmittable<(bridgeTxs: Vec | (BridgeTx | { nonce?: any; recipient?: any; amount?: any; tx_hash?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** * Unfreezes transaction handling in the bridge module if it is frozen. * @@ -547,7 +554,7 @@ declare module '@polkadot/api/types/submittable' { * they are rounded down to a whole unit. * * ## Arguments - * - `origin` which must be a holder of for a CAA of `ca_id`. + * - `origin` which must be a holder of the asset and eligible for the distribution. * - `ca_id` identifies the CA to start a capital distribution for. * * # Errors @@ -579,9 +586,9 @@ declare module '@polkadot/api/types/submittable' { * which is now transferrable. * * ## Arguments - * - `origin` which must be a signer for a CAA of `ca_id`. + * - `origin` is a signer that has permissions to act as an agent of `ca_id.ticker`. * - `ca_id` identifies the CA to start a capital distribution for. - * - `portfolio` specifies the portfolio number of the CAA to distribute `amount` from. + * - `portfolio` specifies the portfolio number of the agent to distribute `amount` from. * - `currency` to withdraw and distribute from the `portfolio`. * - `per_share` amount of `currency` to withdraw and distribute. * Specified as a per-million, i.e. `1 / 10^6`th of one `currency` token. @@ -597,9 +604,10 @@ declare module '@polkadot/api/types/submittable' { * - `NoSuchCA` if `ca_id` does not identify an existing CA. * - `NoRecordDate` if CA has no record date. * - `RecordDateAfterStart` if CA's record date > payment_at. - * - `UnauthorizedCustodian` if CAA is not the custodian of `portfolio`. + * - `UnauthorizedCustodian` if the caller is not the custodian of `portfolio`. * - `InsufficientPortfolioBalance` if `portfolio` has less than `amount` of `currency`. * - `InsufficientBalance` if the protocol fee couldn't be charged. + * - `CANotBenefit` if the CA is not of kind PredictableBenefit/UnpredictableBenefit * * # Permissions * * Asset @@ -617,7 +625,7 @@ declare module '@polkadot/api/types/submittable' { * they are rounded down to a whole unit. * * ## Arguments - * - `origin` which must be a holder of for a CAA of `ca_id`. + * - `origin` is a signer that has permissions to act as an agent of `ca_id.ticker`. * - `ca_id` identifies the CA with a capital distributions to push benefits for. * - `holder` to push benefits to. * @@ -652,7 +660,7 @@ declare module '@polkadot/api/types/submittable' { * unlocking the full amount in the distributor portfolio. * * ## Arguments - * - `origin` which must be a signer for a CAA of `ca_id`. + * - `origin` is a signer that has permissions to act as an agent of `ca_id.ticker`. * - `ca_id` identifies the CA with a not-yet-started capital distribution to remove. * * # Errors @@ -757,12 +765,12 @@ declare module '@polkadot/api/types/submittable' { * Creates a single checkpoint at the current time. * * # Arguments - * - `origin` is a signer that has permissions to act as owner of `ticker`. + * - `origin` is a signer that has permissions to act as an agent of `ticker`. * - `ticker` to create the checkpoint for. * * # Errors * - `UnauthorizedAgent` if the DID of `origin` isn't a permissioned agent for `ticker`. - * - `CheckpointOverflow` if the total checkpoint counter would overflow. + * - `CounterOverflow` if the total checkpoint counter would overflow. **/ createCheckpoint: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array) => SubmittableExtrinsic, [Ticker]>; /** @@ -780,8 +788,7 @@ declare module '@polkadot/api/types/submittable' { * - `UnauthorizedAgent` if the DID of `origin` isn't a permissioned agent for `ticker`. * - `ScheduleDurationTooShort` if the schedule duration is too short. * - `InsufficientAccountBalance` if the protocol fee could not be charged. - * - `ScheduleOverflow` if the schedule ID counter would overflow. - * - `CheckpointOverflow` if the total checkpoint counter would overflow. + * - `CounterOverflow` if the schedule ID or total checkpoint counters would overflow. * - `FailedToComputeNextCheckpoint` if the next checkpoint for `schedule` is in the past. * * # Permissions @@ -985,6 +992,9 @@ declare module '@polkadot/api/types/submittable' { /** * Replaces an asset's compliance by ticker with a new compliance. * + * Compliance requirements will be sorted (ascending by id) before + * replacing the current requirements. + * * # Arguments * * `ticker` - the asset ticker, * * `asset_compliance - the new asset compliance. @@ -1029,7 +1039,7 @@ declare module '@polkadot/api/types/submittable' { * Changes the record date of the CA identified by `ca_id`. * * ## Arguments - * - `origin` which must be a signer for a CAA of `ca_id`. + * - `origin` which must be an external agent of `ca_id.ticker` with relevant permissions. * - `ca_id` of the CA to alter. * - `record_date`, if any, to calculate the impact of the CA. * If provided, this results in a scheduled balance snapshot ("checkpoint") at the date. @@ -1047,7 +1057,7 @@ declare module '@polkadot/api/types/submittable' { * Initiates a CA for `ticker` of `kind` with `details` and other provided arguments. * * ## Arguments - * - `origin` which must be a signer for a CAA of `ca_id`. + * - `origin` which must be an external agent of `ticker` with relevant permissions. * - `ticker` that the CA is made for. * - `kind` of CA being initiated. * - `decl_date` of CA bring initialized. @@ -1064,7 +1074,7 @@ declare module '@polkadot/api/types/submittable' { * # Errors * - `DetailsTooLong` if `details.len()` goes beyond `max_details_length`. * - `UnauthorizedAgent` if `origin` is not agent-permissioned for `ticker`. - * - `LocalCAIdOverflow` in the unlikely event that so many CAs were created for this `ticker`, + * - `CounterOverflow` in the unlikely event that so many CAs were created for this `ticker`, * that integer overflow would have occured if instead allowed. * - `TooManyDidTaxes` if `withholding_tax.unwrap().len()` would go over the limit `MaxDidWhts`. * - `DuplicateDidTax` if a DID is included more than once in `wt`. @@ -1084,7 +1094,7 @@ declare module '@polkadot/api/types/submittable' { * Once both exist, they can now be linked together. * * ## Arguments - * - `origin` which must be a signer for a CAA of `ca_id`. + * - `origin` which must be an external agent of `id.ticker` with relevant permissions. * - `id` of the CA to associate with `docs`. * - `docs` to associate with the CA with `id`. * @@ -1107,7 +1117,7 @@ declare module '@polkadot/api/types/submittable' { * `strong_ref_count(schedule_id)` decremented. * * ## Arguments - * - `origin` which must be a signer for a CAA of `ca_id`. + * - `origin` which must be an external agent of `ca_id.ticker` with relevant permissions. * - `ca_id` of the CA to remove. * * # Errors @@ -1122,7 +1132,7 @@ declare module '@polkadot/api/types/submittable' { * Set the default CA `TargetIdentities` to `targets`. * * ## Arguments - * - `origin` which must be a signer for the CAA of `ca_id`. + * - `origin` which must be an external agent of `ticker` with relevant permissions. * - `ticker` for which the default identities are changing. * - `targets` the default target identities for a CA. * @@ -1138,7 +1148,7 @@ declare module '@polkadot/api/types/submittable' { * Set the default withholding tax for all DIDs and CAs relevant to this `ticker`. * * ## Arguments - * - `origin` which must be a signer for a CAA of `ca_id`. + * - `origin` which must be an external agent of `ticker` with relevant permissions. * - `ticker` that the withholding tax will apply to. * - `tax` that should be withheld when distributing dividends, etc. * @@ -1155,7 +1165,7 @@ declare module '@polkadot/api/types/submittable' { * Otherwise, if `None`, the default withholding tax will be used. * * ## Arguments - * - `origin` which must be a signer for a CAA of `ca_id`. + * - `origin` which must be an external agent of `ticker` with relevant permissions. * - `ticker` that the withholding tax will apply to. * - `taxed_did` that will have its withholding tax updated. * - `tax` that should be withheld when distributing dividends, etc. @@ -1188,7 +1198,7 @@ declare module '@polkadot/api/types/submittable' { * See the `BallotMeta` for more. * * ## Arguments - * - `origin` which must be a signer for a CAA of `ca_id`. + * - `origin` is a signer that has permissions to act as an agent of `ca_id.ticker`. * - `ca_id` identifies the CA to attach the ballot to. * - `range` specifies when voting starts and ends. * - `meta` specifies the ballot's metadata as aforementioned. @@ -1212,7 +1222,7 @@ declare module '@polkadot/api/types/submittable' { * Amend the end date of the ballot of the CA identified by `ca_id`. * * ## Arguments - * - `origin` which must be a signer for a CAA of `ca_id`. + * - `origin` is a signer that has permissions to act as an agent of `ca_id.ticker`. * - `ca_id` identifies the attached ballot's CA. * - `end` specifies the new end date of the ballot. * @@ -1227,7 +1237,7 @@ declare module '@polkadot/api/types/submittable' { * Amend the metadata (title, motions, etc.) of the ballot of the CA identified by `ca_id`. * * ## Arguments - * - `origin` which must be a signer for a CAA of `ca_id`. + * - `origin` is a signer that has permissions to act as an agent of `ca_id.ticker`. * - `ca_id` identifies the attached ballot's CA. * - `meta` specifies the new metadata. * @@ -1243,7 +1253,7 @@ declare module '@polkadot/api/types/submittable' { * Amend RCV support for the ballot of the CA identified by `ca_id`. * * ## Arguments - * - `origin` which must be a signer for a CAA of `ca_id`. + * - `origin` is a signer that has permissions to act as an agent of `ca_id.ticker`. * - `ca_id` identifies the attached ballot's CA. * - `rcv` specifies if RCV is to be supported or not. * @@ -1257,7 +1267,7 @@ declare module '@polkadot/api/types/submittable' { * Remove the ballot of the CA identified by `ca_id`. * * ## Arguments - * - `origin` which must be a signer for a CAA of `ca_id`. + * - `origin` is a signer that has permissions to act as an agent of `ca_id.ticker`. * - `ca_id` identifies the attached ballot's CA. * * # Errors @@ -1358,7 +1368,7 @@ declare module '@polkadot/api/types/submittable' { * # Errors * - `UnauthorizedAgent` if `origin` was not authorized as an agent to call this. * - `TooLong` if `perms` had some string or list length that was too long. - * - `LocalAGIdOverflow` if `AGIdSequence::get() + 1` would exceed `u32::MAX`. + * - `CounterOverflow` if `AGIdSequence::get() + 1` would exceed `u32::MAX`. * * # Permissions * * Asset @@ -1443,8 +1453,14 @@ declare module '@polkadot/api/types/submittable' { identity: { /** * Call this with the new primary key. By invoking this method, caller accepts authorization - * with the new primary key. If a CDD service provider approved this change, primary key of - * the DID is updated. + * to become the new primary key of the issuing identity. If a CDD service provider approved + * this change (or this is not required), primary key of the DID is updated. + * + * The caller (new primary key) must be either a secondary key of the issuing identity, or + * unlinked to any identity. + * + * Differs from rotate_primary_key_to_secondary in that it will unlink the old primary key + * instead of leaving it as a secondary key. * * # Arguments * * `owner_auth_id` Authorization from the owner who initiated the change @@ -1454,7 +1470,7 @@ declare module '@polkadot/api/types/submittable' { /** * Adds an authorization. **/ - addAuthorization: AugmentedSubmittable<(target: Signatory | { Identity: any } | { Account: any } | string | Uint8Array, authorizationData: AuthorizationData | { AttestPrimaryKeyRotation: any } | { RotatePrimaryKey: any } | { TransferTicker: any } | { AddMultiSigSigner: any } | { TransferAssetOwnership: any } | { JoinIdentity: any } | { PortfolioCustody: any } | { BecomeAgent: any } | { AddRelayerPayingKey: any } | string | Uint8Array, expiry: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [Signatory, AuthorizationData, Option]>; + addAuthorization: AugmentedSubmittable<(target: Signatory | { Identity: any } | { Account: any } | string | Uint8Array, data: AuthorizationData | { AttestPrimaryKeyRotation: any } | { RotatePrimaryKey: any } | { TransferTicker: any } | { AddMultiSigSigner: any } | { TransferAssetOwnership: any } | { JoinIdentity: any } | { PortfolioCustody: any } | { BecomeAgent: any } | { AddRelayerPayingKey: any } | { RotatePrimaryKeyToSecondary: any } | string | Uint8Array, expiry: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [Signatory, AuthorizationData, Option]>; /** * Adds a new claim record or edits an existing one. * @@ -1537,9 +1553,10 @@ declare module '@polkadot/api/types/submittable' { **/ gcRevokeCddClaim: AugmentedSubmittable<(target: IdentityId | string | Uint8Array) => SubmittableExtrinsic, [IdentityId]>; /** - * It invalidates any claim generated by `cdd` from `disable_from` timestamps. - * You can also define an expiration time, which will invalidate all claims generated by - * that `cdd` and remove it as CDD member group. + * Invalidates any claim generated by `cdd` from `disable_from` timestamps. + * + * You can also define an expiration time, + * which will invalidate all claims generated by that `cdd` and remove it as CDD member group. **/ invalidateCddClaims: AugmentedSubmittable<(cdd: IdentityId | string | Uint8Array, disableFrom: Moment | AnyNumber | Uint8Array, expiry: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [IdentityId, Moment, Option]>; /** @@ -1587,10 +1604,28 @@ declare module '@polkadot/api/types/submittable' { **/ revokeClaimByIndex: AugmentedSubmittable<(target: IdentityId | string | Uint8Array, claimType: ClaimType | 'Accredited' | 'Affiliate' | 'BuyLockup' | 'SellLockup' | 'CustomerDueDiligence' | 'KnowYourCustomer' | 'Jurisdiction' | 'Exempted' | 'Blocked' | 'InvestorUniqueness' | 'NoData' | 'InvestorUniquenessV2' | number | Uint8Array, scope: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [IdentityId, ClaimType, Option]>; /** - * It sets permissions for an specific `target_key` key. + * Call this with the new primary key. By invoking this method, caller accepts authorization + * to become the new primary key of the issuing identity. If a CDD service provider approved + * this change, (or this is not required), primary key of the DID is updated. + * + * The caller (new primary key) must be either a secondary key of the issuing identity, or + * unlinked to any identity. + * + * Differs from accept_primary_key in that it will leave the old primary key as a secondary + * key with the permissions specified in the corresponding RotatePrimaryKeyToSecondary authorization + * instead of unlinking the old primary key. + * + * # Arguments + * * `owner_auth_id` Authorization from the owner who initiated the change + * * `cdd_auth_id` Authorization from a CDD service provider + **/ + rotatePrimaryKeyToSecondary: AugmentedSubmittable<(authId: u64 | AnyNumber | Uint8Array, optionalCddAuthId: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [u64, Option]>; + /** + * Sets permissions for an specific `target_key` key. + * * Only the primary key of an identity is able to set secondary key permissions. **/ - setPermissionToSigner: AugmentedSubmittable<(signer: Signatory | { Identity: any } | { Account: any } | string | Uint8Array, permissions: Permissions | { asset?: any; extrinsic?: any; portfolio?: any } | string | Uint8Array) => SubmittableExtrinsic, [Signatory, Permissions]>; + setPermissionToSigner: AugmentedSubmittable<(signer: Signatory | { Identity: any } | { Account: any } | string | Uint8Array, perms: Permissions | { asset?: any; extrinsic?: any; portfolio?: any } | string | Uint8Array) => SubmittableExtrinsic, [Signatory, Permissions]>; /** * Re-enables all secondary keys of the caller's identity. **/ @@ -2469,7 +2504,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Portfolio **/ - addAndAffirmInstruction: AugmentedSubmittable<(venueId: u64 | AnyNumber | Uint8Array, settlementType: SettlementType | { SettleOnAffirmation: any } | { SettleOnBlock: any } | string | Uint8Array, tradeDate: Option | null | object | string | Uint8Array, valueDate: Option | null | object | string | Uint8Array, legs: Vec | (Leg | { from?: any; to?: any; asset?: any; amount?: any } | string | Uint8Array)[], portfolios: Vec | (PortfolioId | { did?: any; kind?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [u64, SettlementType, Option, Option, Vec, Vec]>; + addAndAffirmInstruction: AugmentedSubmittable<(venueId: VenueId | AnyNumber | Uint8Array, settlementType: SettlementType | { SettleOnAffirmation: any } | { SettleOnBlock: any } | string | Uint8Array, tradeDate: Option | null | object | string | Uint8Array, valueDate: Option | null | object | string | Uint8Array, legs: Vec | (Leg | { from?: any; to?: any; asset?: any; amount?: any } | string | Uint8Array)[], portfolios: Vec | (PortfolioId | { did?: any; kind?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [VenueId, SettlementType, Option, Option, Vec, Vec]>; /** * Adds a new instruction. * @@ -2484,24 +2519,24 @@ declare module '@polkadot/api/types/submittable' { * # Weight * `950_000_000 + 1_000_000 * legs.len()` **/ - addInstruction: AugmentedSubmittable<(venueId: u64 | AnyNumber | Uint8Array, settlementType: SettlementType | { SettleOnAffirmation: any } | { SettleOnBlock: any } | string | Uint8Array, tradeDate: Option | null | object | string | Uint8Array, valueDate: Option | null | object | string | Uint8Array, legs: Vec | (Leg | { from?: any; to?: any; asset?: any; amount?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [u64, SettlementType, Option, Option, Vec]>; + addInstruction: AugmentedSubmittable<(venueId: VenueId | AnyNumber | Uint8Array, settlementType: SettlementType | { SettleOnAffirmation: any } | { SettleOnBlock: any } | string | Uint8Array, tradeDate: Option | null | object | string | Uint8Array, valueDate: Option | null | object | string | Uint8Array, legs: Vec | (Leg | { from?: any; to?: any; asset?: any; amount?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [VenueId, SettlementType, Option, Option, Vec]>; /** * Provide affirmation to an existing instruction. * * # Arguments - * * `instruction_id` - Instruction id to affirm. + * * `id` - Instruction id to affirm. * * `portfolios` - Portfolios that the sender controls and wants to affirm this instruction. * * `max_legs_count` - Number of legs that need to be affirmed. * * # Permissions * * Portfolio **/ - affirmInstruction: AugmentedSubmittable<(instructionId: u64 | AnyNumber | Uint8Array, portfolios: Vec | (PortfolioId | { did?: any; kind?: any } | string | Uint8Array)[], maxLegsCount: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u64, Vec, u32]>; + affirmInstruction: AugmentedSubmittable<(id: InstructionId | AnyNumber | Uint8Array, portfolios: Vec | (PortfolioId | { did?: any; kind?: any } | string | Uint8Array)[], maxLegsCount: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [InstructionId, Vec, u32]>; /** * Accepts an instruction and claims a signed receipt. * * # Arguments - * * `instruction_id` - Target instruction id. + * * `id` - Target instruction id. * * `leg_id` - Target leg id for the receipt * * `receipt_uid` - Receipt ID generated by the signer. * * `signer` - Signer of the receipt. @@ -2511,7 +2546,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Portfolio **/ - affirmWithReceipts: AugmentedSubmittable<(instructionId: u64 | AnyNumber | Uint8Array, receiptDetails: Vec | (ReceiptDetails | { receipt_uid?: any; leg_id?: any; signer?: any; signature?: any; metadata?: any } | string | Uint8Array)[], portfolios: Vec | (PortfolioId | { did?: any; kind?: any } | string | Uint8Array)[], maxLegsCount: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u64, Vec, Vec, u32]>; + affirmWithReceipts: AugmentedSubmittable<(id: InstructionId | AnyNumber | Uint8Array, receiptDetails: Vec | (ReceiptDetails | { receipt_uid?: any; leg_id?: any; signer?: any; signature?: any; metadata?: any } | string | Uint8Array)[], portfolios: Vec | (PortfolioId | { did?: any; kind?: any } | string | Uint8Array)[], maxLegsCount: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [InstructionId, Vec, Vec, u32]>; /** * Allows additional venues to create instructions involving an asset. * @@ -2521,7 +2556,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - allowVenues: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, venues: Vec | (u64 | AnyNumber | Uint8Array)[]) => SubmittableExtrinsic, [Ticker, Vec]>; + allowVenues: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, venues: Vec | (VenueId | AnyNumber | Uint8Array)[]) => SubmittableExtrinsic, [Ticker, Vec]>; /** * Marks a receipt issued by the caller as claimed or not claimed. * This allows the receipt issuer to invalidate an already issued receipt or revalidate an already claimed receipt. @@ -2534,7 +2569,7 @@ declare module '@polkadot/api/types/submittable' { * Claims a signed receipt. * * # Arguments - * * `instruction_id` - Target instruction id for the receipt. + * * `id` - Target instruction id for the receipt. * * `leg_id` - Target leg id for the receipt * * `receipt_uid` - Receipt ID generated by the signer. * * `signer` - Signer of the receipt. @@ -2543,7 +2578,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Portfolio **/ - claimReceipt: AugmentedSubmittable<(instructionId: u64 | AnyNumber | Uint8Array, receiptDetails: ReceiptDetails | { receipt_uid?: any; leg_id?: any; signer?: any; signature?: any; metadata?: any } | string | Uint8Array) => SubmittableExtrinsic, [u64, ReceiptDetails]>; + claimReceipt: AugmentedSubmittable<(id: InstructionId | AnyNumber | Uint8Array, receiptDetails: ReceiptDetails | { receipt_uid?: any; leg_id?: any; signer?: any; signature?: any; metadata?: any } | string | Uint8Array) => SubmittableExtrinsic, [InstructionId, ReceiptDetails]>; /** * Registers a new venue. * @@ -2561,28 +2596,28 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - disallowVenues: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, venues: Vec | (u64 | AnyNumber | Uint8Array)[]) => SubmittableExtrinsic, [Ticker, Vec]>; + disallowVenues: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, venues: Vec | (VenueId | AnyNumber | Uint8Array)[]) => SubmittableExtrinsic, [Ticker, Vec]>; /** * Root callable extrinsic, used as an internal call to execute a scheduled settlement instruction. **/ - executeScheduledInstruction: AugmentedSubmittable<(instructionId: u64 | AnyNumber | Uint8Array, legsCount: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u64, u32]>; + executeScheduledInstruction: AugmentedSubmittable<(id: InstructionId | AnyNumber | Uint8Array, legsCount: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [InstructionId, u32]>; /** * Rejects an existing instruction. * * # Arguments - * * `instruction_id` - Instruction id to reject. + * * `id` - Instruction id to reject. * * `portfolio` - Portfolio to reject the instruction. * * `num_of_legs` - Number of legs in the instruction. * * # Permissions * * Portfolio **/ - rejectInstruction: AugmentedSubmittable<(instructionId: u64 | AnyNumber | Uint8Array, portfolio: PortfolioId | { did?: any; kind?: any } | string | Uint8Array, numOfLegs: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u64, PortfolioId, u32]>; + rejectInstruction: AugmentedSubmittable<(id: InstructionId | AnyNumber | Uint8Array, portfolio: PortfolioId | { did?: any; kind?: any } | string | Uint8Array, numOfLegs: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [InstructionId, PortfolioId, u32]>; /** * Reschedules a failed instruction. * * # Arguments - * * `instruction_id` - Target instruction id to reschedule. + * * `id` - Target instruction id to reschedule. * * # Permissions * * Portfolio @@ -2590,7 +2625,7 @@ declare module '@polkadot/api/types/submittable' { * # Errors * * `InstructionNotFailed` - Instruction not in a failed state or does not exist. **/ - rescheduleInstruction: AugmentedSubmittable<(instructionId: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u64]>; + rescheduleInstruction: AugmentedSubmittable<(id: InstructionId | AnyNumber | Uint8Array) => SubmittableExtrinsic, [InstructionId]>; /** * Enables or disabled venue filtering for a token. * @@ -2612,33 +2647,33 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Portfolio **/ - unclaimReceipt: AugmentedSubmittable<(instructionId: u64 | AnyNumber | Uint8Array, legId: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u64, u64]>; + unclaimReceipt: AugmentedSubmittable<(instructionId: InstructionId | AnyNumber | Uint8Array, legId: LegId | AnyNumber | Uint8Array) => SubmittableExtrinsic, [InstructionId, LegId]>; /** * Edit a venue's details. * * * `id` specifies the ID of the venue to edit. * * `details` specifies the updated venue details. **/ - updateVenueDetails: AugmentedSubmittable<(id: u64 | AnyNumber | Uint8Array, details: VenueDetails | string) => SubmittableExtrinsic, [u64, VenueDetails]>; + updateVenueDetails: AugmentedSubmittable<(id: VenueId | AnyNumber | Uint8Array, details: VenueDetails | string) => SubmittableExtrinsic, [VenueId, VenueDetails]>; /** * Edit a venue's type. * * * `id` specifies the ID of the venue to edit. * * `type` specifies the new type of the venue. **/ - updateVenueType: AugmentedSubmittable<(id: u64 | AnyNumber | Uint8Array, typ: VenueType | 'Other' | 'Distribution' | 'Sto' | 'Exchange' | number | Uint8Array) => SubmittableExtrinsic, [u64, VenueType]>; + updateVenueType: AugmentedSubmittable<(id: VenueId | AnyNumber | Uint8Array, typ: VenueType | 'Other' | 'Distribution' | 'Sto' | 'Exchange' | number | Uint8Array) => SubmittableExtrinsic, [VenueId, VenueType]>; /** * Withdraw an affirmation for a given instruction. * * # Arguments - * * `instruction_id` - Instruction id for that affirmation get withdrawn. + * * `id` - Instruction id for that affirmation get withdrawn. * * `portfolios` - Portfolios that the sender controls and wants to withdraw affirmation. * * `max_legs_count` - Number of legs that need to be un-affirmed. * * # Permissions * * Portfolio **/ - withdrawAffirmation: AugmentedSubmittable<(instructionId: u64 | AnyNumber | Uint8Array, portfolios: Vec | (PortfolioId | { did?: any; kind?: any } | string | Uint8Array)[], maxLegsCount: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u64, Vec, u32]>; + withdrawAffirmation: AugmentedSubmittable<(id: InstructionId | AnyNumber | Uint8Array, portfolios: Vec | (PortfolioId | { did?: any; kind?: any } | string | Uint8Array)[], maxLegsCount: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [InstructionId, Vec, u32]>; /** * Generic tx **/ @@ -2679,10 +2714,6 @@ declare module '@polkadot/api/types/submittable' { * - Read: Bonded, Ledger, [Origin Account], Current Era, History Depth, Locks * - Write: Bonded, Payee, [Origin Account], Locks, Ledger * # - * # Arguments - * * origin Stash account (signer of the extrinsic). - * * controller Account that controls the operation of stash. - * * payee Destination where reward can be transferred. **/ bond: AugmentedSubmittable<(controller: LookupSource | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, value: Compact | AnyNumber | Uint8Array, payee: RewardDestination | { Staked: any } | { Stash: any } | { Controller: any } | { Account: any } | { None: any } | string | Uint8Array) => SubmittableExtrinsic, [LookupSource, Compact, RewardDestination]>; /** @@ -2707,10 +2738,6 @@ declare module '@polkadot/api/types/submittable' { * - Read: Era Election Status, Bonded, Ledger, [Origin Account], Locks * - Write: [Origin Account], Locks, Ledger * # - * - * # Arguments - * * origin Stash account (signer of the extrinsic). - * * max_additional Extra amount that need to be bonded. **/ bondExtra: AugmentedSubmittable<(maxAdditional: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Compact]>; /** @@ -2839,9 +2866,6 @@ declare module '@polkadot/api/types/submittable' { **/ nominate: AugmentedSubmittable<(targets: Vec | (LookupSource | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** - * Polymesh-Note - Weight changes to 1/4 of the actual weight that is calculated using the - * upstream benchmarking process. - * * Pay out all the stakers behind a single validator for a single era. * * - `validator_stash` is the stash account of the validator. Their nominators, up to @@ -2874,9 +2898,9 @@ declare module '@polkadot/api/types/submittable' { **/ payoutStakersBySystem: AugmentedSubmittable<(validatorStash: AccountId | string | Uint8Array, era: EraIndex | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId, EraIndex]>; /** - * Remove all data structure concerning a staker/stash once its balance is zero. + * Remove all data structure concerning a staker/stash once its balance is at the minimum. * This is essentially equivalent to `withdraw_unbonded` except it can be called by anyone - * and the target `stash` must have no funds left. + * and the target `stash` must have no funds left beyond the ED. * * This can be called from any origin. * @@ -2991,7 +3015,7 @@ declare module '@polkadot/api/types/submittable' { **/ setInvulnerables: AugmentedSubmittable<(invulnerables: Vec | (AccountId | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** - * Changes min bond value to be used in bond(). Only Governance + * Changes min bond value to be used in validate(). Only Governance * committee is allowed to change this value. * * # Arguments @@ -3125,10 +3149,6 @@ declare module '@polkadot/api/types/submittable' { * - Read: EraElectionStatus, Ledger, CurrentEra, Locks, \[Origin Account\] * - Write: Locks, Ledger, \[Origin Account\] * - * - * # Arguments - * * origin Controller (Signer of the extrinsic). - * * value Balance needs to be unbonded. **/ unbond: AugmentedSubmittable<(value: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Compact]>; /** @@ -3198,8 +3218,10 @@ declare module '@polkadot/api/types/submittable' { * - Reads: EraElectionStatus, Ledger, Current Era, Locks, [Origin Account] * - Writes: [Origin Account], Locks, Ledger * Kill: - * - Reads: EraElectionStatus, Ledger, Current Era, Bonded, Slashing Spans, \[Origin Account\], Locks - * - Writes: Bonded, Slashing Spans (if S > 0), Ledger, Payee, Validators, Nominators, [Origin Account], Locks + * - Reads: EraElectionStatus, Ledger, Current Era, Bonded, Slashing Spans, [Origin + * Account], Locks + * - Writes: Bonded, Slashing Spans (if S > 0), Ledger, Payee, Validators, Nominators, + * [Origin Account], Locks * - Writes Each: SpanSlash * S * NOTE: Weight annotation is the kill scenario, we refund otherwise. * # @@ -3300,24 +3322,24 @@ declare module '@polkadot/api/types/submittable' { * * Asset * * Portfolio **/ - createFundraiser: AugmentedSubmittable<(offeringPortfolio: PortfolioId | { did?: any; kind?: any } | string | Uint8Array, offeringAsset: Ticker | string | Uint8Array, raisingPortfolio: PortfolioId | { did?: any; kind?: any } | string | Uint8Array, raisingAsset: Ticker | string | Uint8Array, tiers: Vec | (PriceTier | { total?: any; price?: any } | string | Uint8Array)[], venueId: u64 | AnyNumber | Uint8Array, start: Option | null | object | string | Uint8Array, end: Option | null | object | string | Uint8Array, minimumInvestment: Balance | AnyNumber | Uint8Array, fundraiserName: FundraiserName | string) => SubmittableExtrinsic, [PortfolioId, Ticker, PortfolioId, Ticker, Vec, u64, Option, Option, Balance, FundraiserName]>; + createFundraiser: AugmentedSubmittable<(offeringPortfolio: PortfolioId | { did?: any; kind?: any } | string | Uint8Array, offeringAsset: Ticker | string | Uint8Array, raisingPortfolio: PortfolioId | { did?: any; kind?: any } | string | Uint8Array, raisingAsset: Ticker | string | Uint8Array, tiers: Vec | (PriceTier | { total?: any; price?: any } | string | Uint8Array)[], venueId: VenueId | AnyNumber | Uint8Array, start: Option | null | object | string | Uint8Array, end: Option | null | object | string | Uint8Array, minimumInvestment: Balance | AnyNumber | Uint8Array, fundraiserName: FundraiserName | string) => SubmittableExtrinsic, [PortfolioId, Ticker, PortfolioId, Ticker, Vec, VenueId, Option, Option, Balance, FundraiserName]>; /** * Freeze a fundraiser. * * * `offering_asset` - Asset to freeze. - * * `fundraiser_id` - ID of the fundraiser to freeze. + * * `id` - ID of the fundraiser to freeze. * * # Permissions * * Asset **/ - freezeFundraiser: AugmentedSubmittable<(offeringAsset: Ticker | string | Uint8Array, fundraiserId: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Ticker, u64]>; + freezeFundraiser: AugmentedSubmittable<(offeringAsset: Ticker | string | Uint8Array, id: FundraiserId | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Ticker, FundraiserId]>; /** * Invest in a fundraiser. * * * `investment_portfolio` - Portfolio that `offering_asset` will be deposited in. * * `funding_portfolio` - Portfolio that will fund the investment. * * `offering_asset` - Asset to invest in. - * * `fundraiser_id` - ID of the fundraiser to invest in. + * * `id` - ID of the fundraiser to invest in. * * `purchase_amount` - Amount of `offering_asset` to purchase. * * `max_price` - Maximum price to pay per unit of `offering_asset`, If `None`there are no constraints on price. * * `receipt` - Off-chain receipt to use instead of on-chain balance in `funding_portfolio`. @@ -3325,39 +3347,39 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Portfolio **/ - invest: AugmentedSubmittable<(investmentPortfolio: PortfolioId | { did?: any; kind?: any } | string | Uint8Array, fundingPortfolio: PortfolioId | { did?: any; kind?: any } | string | Uint8Array, offeringAsset: Ticker | string | Uint8Array, fundraiserId: u64 | AnyNumber | Uint8Array, purchaseAmount: Balance | AnyNumber | Uint8Array, maxPrice: Option | null | object | string | Uint8Array, receipt: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PortfolioId, PortfolioId, Ticker, u64, Balance, Option, Option]>; + invest: AugmentedSubmittable<(investmentPortfolio: PortfolioId | { did?: any; kind?: any } | string | Uint8Array, fundingPortfolio: PortfolioId | { did?: any; kind?: any } | string | Uint8Array, offeringAsset: Ticker | string | Uint8Array, id: FundraiserId | AnyNumber | Uint8Array, purchaseAmount: Balance | AnyNumber | Uint8Array, maxPrice: Option | null | object | string | Uint8Array, receipt: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PortfolioId, PortfolioId, Ticker, FundraiserId, Balance, Option, Option]>; /** * Modify the time window a fundraiser is active * * * `offering_asset` - Asset to modify. - * * `fundraiser_id` - ID of the fundraiser to modify. + * * `id` - ID of the fundraiser to modify. * * `start` - New start of the fundraiser. * * `end` - New end of the fundraiser to modify. * * # Permissions * * Asset **/ - modifyFundraiserWindow: AugmentedSubmittable<(offeringAsset: Ticker | string | Uint8Array, fundraiserId: u64 | AnyNumber | Uint8Array, start: Moment | AnyNumber | Uint8Array, end: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [Ticker, u64, Moment, Option]>; + modifyFundraiserWindow: AugmentedSubmittable<(offeringAsset: Ticker | string | Uint8Array, id: FundraiserId | AnyNumber | Uint8Array, start: Moment | AnyNumber | Uint8Array, end: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [Ticker, FundraiserId, Moment, Option]>; /** * Stop a fundraiser. * * * `offering_asset` - Asset to stop. - * * `fundraiser_id` - ID of the fundraiser to stop. + * * `id` - ID of the fundraiser to stop. * * # Permissions * * Asset **/ - stop: AugmentedSubmittable<(offeringAsset: Ticker | string | Uint8Array, fundraiserId: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Ticker, u64]>; + stop: AugmentedSubmittable<(offeringAsset: Ticker | string | Uint8Array, id: FundraiserId | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Ticker, FundraiserId]>; /** * Unfreeze a fundraiser. * * * `offering_asset` - Asset to unfreeze. - * * `fundraiser_id` - ID of the fundraiser to unfreeze. + * * `id` - ID of the fundraiser to unfreeze. * * # Permissions * * Asset **/ - unfreezeFundraiser: AugmentedSubmittable<(offeringAsset: Ticker | string | Uint8Array, fundraiserId: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Ticker, u64]>; + unfreezeFundraiser: AugmentedSubmittable<(offeringAsset: Ticker | string | Uint8Array, id: FundraiserId | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Ticker, FundraiserId]>; /** * Generic tx **/ diff --git a/scripts/cli/src/interfaces/augment-types.ts b/scripts/cli/src/interfaces/augment-types.ts index f48e5a0457..966dfbe316 100644 --- a/scripts/cli/src/interfaces/augment-types.ts +++ b/scripts/cli/src/interfaces/augment-types.ts @@ -58,7 +58,7 @@ import type { ClassDetails, ClassId, ClassMetadata, DepositBalance, DepositBalan import type { Multisig, Timepoint } from '@polkadot/types/interfaces/utility'; import type { VestingInfo } from '@polkadot/types/interfaces/vesting'; import type { AccountId32Junction, AccountIndex64Junction, AccountKey20Junction, AssetInstance, BodyId, BodyPart, BodyPartAtLeastProportion, BodyPartFraction, BodyPartMoreThanProportion, DoubleEncodedCall, InboundStatus, Junction, MultiAsset, MultiAssetAbstractFungible, MultiAssetAbstractNonFungible, MultiAssetConcreteFungible, MultiAssetConcreteNonFungible, MultiLocation, NetworkId, OutboundStatus, Outcome, PluralityJunction, QueueConfigData, VersionedMultiAsset, VersionedMultiLocation, VersionedXcm, Xcm, XcmAssetEffects, XcmError, XcmHrmpChannelAccepted, XcmHrmpChannelClosing, XcmHrmpNewChannelOpenRequest, XcmOrder, XcmOrderBuyExecution, XcmOrderDepositAsset, XcmOrderDepositReserveAsset, XcmOrderExchangeAsset, XcmOrderInitiateReserveWithdraw, XcmOrderInitiateTeleport, XcmOrderQueryHolding, XcmOrigin, XcmOriginKind, XcmQueryResponse, XcmRelayedFrom, XcmReserveAssetDeposit, XcmResponse, XcmTeleportAsset, XcmTransact, XcmTransferAsset, XcmTransferReserveAsset, XcmWithdrawAsset, XcmpMessageFormat } from '@polkadot/types/interfaces/xcm'; -import type { AGId, AffirmationStatus, AgentGroup, AssetCompliance, AssetComplianceResult, AssetDidResult, AssetIdentifier, AssetName, AssetOwnershipRelation, AssetPermissions, AssetType, Authorization, AuthorizationData, AuthorizationNonce, AuthorizationType, BallotMeta, BallotTimeRange, BallotTitle, BallotVote, Beneficiary, BridgeTx, BridgeTxDetail, BridgeTxStatus, CACheckpoint, CADetails, CAId, CAKind, CalendarPeriod, CalendarUnit, CanTransferResult, CappedFee, CddId, CddStatus, CheckpointId, CheckpointSchedule, ChoiceTitle, Claim, Claim1stKey, Claim2ndKey, ClaimType, ClassicTickerImport, ClassicTickerRegistration, Committee, ComplianceRequirement, ComplianceRequirementResult, Condition, ConditionResult, ConditionType, CorporateAction, Counter, CountryCode, CustomAssetTypeId, DepositInfo, DidRecord, DidRecords, DidRecordsSuccess, DidStatus, DispatchableName, DispatchableNames, Distribution, Document, DocumentHash, DocumentId, DocumentName, DocumentType, DocumentUri, ErrorAt, EventCounts, EventDid, ExtVersion, ExtensionAttributes, ExtrinsicPermissions, FundingRoundName, Fundraiser, FundraiserName, FundraiserStatus, FundraiserTier, GranularCanTransferResult, HandledTxStatus, IdentityClaim, IdentityId, IdentityRole, InactiveMember, Instruction, InstructionStatus, InvestorUid, InvestorZKProofData, ItnRewardStatus, KeyIdentityData, Leg, LegStatus, LegacyPalletPermissions, LegacyPermissions, LocalCAId, MaybeBlock, Memo, MetaDescription, MetaUrl, MetaVersion, Motion, MotionInfoLink, MotionTitle, MovePortfolioItem, OffChainSignature, PalletName, PalletPermissions, Percentage, PermissionedIdentityPrefs, Permissions, Pip, PipDescription, PipId, PipsMetadata, PolymeshVotes, PortfolioId, PortfolioKind, PortfolioName, PortfolioNumber, PortfolioPermissions, PortfolioValidityResult, PosRatio, PreAuthorizedKeyInfo, PriceTier, ProposalData, ProposalDetails, ProposalState, ProposalStatus, Proposer, ProtocolOp, Receipt, ReceiptDetails, ReceiptMetadata, RecordDate, RecordDateSpec, RestrictionResult, RistrettoPoint, Scalar, ScheduleId, ScheduleSpec, Scope, ScopeClaimProof, ScopeId, SecondaryKey, SecondaryKeyWithAuth, SecurityToken, SettlementType, Signatory, SkippedCount, SlashingSwitch, SmartExtension, SmartExtensionName, SmartExtensionType, SnapshotId, SnapshotMetadata, SnapshotResult, SnapshottedPip, StoredSchedule, Subsidy, TargetIdAuthorization, TargetIdentities, TargetIdentity, TargetTreatment, Tax, TemplateDetails, TemplateMetadata, Ticker, TickerRegistration, TickerRegistrationConfig, TransferManager, TransferManagerResult, TrustedFor, TrustedIssuer, UniqueCall, Url, Venue, VenueDetails, VenueType, Version, VoteByPip, VoteCount, VoteCountProposalFound, VotingResult, ZkProofData } from 'polymesh-typegen/interfaces/default'; +import type { AGId, AffirmationStatus, AgentGroup, AssetCompliance, AssetComplianceResult, AssetDidResult, AssetIdentifier, AssetName, AssetOwnershipRelation, AssetPermissions, AssetType, Authorization, AuthorizationData, AuthorizationNonce, AuthorizationType, BallotMeta, BallotTimeRange, BallotTitle, BallotVote, Beneficiary, BridgeTx, BridgeTxDetail, BridgeTxStatus, CACheckpoint, CADetails, CAId, CAKind, CalendarPeriod, CalendarUnit, CanTransferResult, CappedFee, CddId, CddStatus, CheckpointId, CheckpointSchedule, ChoiceTitle, Claim, Claim1stKey, Claim2ndKey, ClaimType, ClassicTickerImport, ClassicTickerRegistration, Committee, ComplianceRequirement, ComplianceRequirementResult, Condition, ConditionResult, ConditionType, CorporateAction, Counter, CountryCode, CustomAssetTypeId, DepositInfo, DidRecord, DidRecords, DidRecordsSuccess, DidStatus, DispatchableName, DispatchableNames, Distribution, Document, DocumentHash, DocumentId, DocumentName, DocumentType, DocumentUri, ErrorAt, EventCounts, EventDid, ExtVersion, ExtensionAttributes, ExtrinsicPermissions, FundingRoundName, Fundraiser, FundraiserId, FundraiserName, FundraiserStatus, FundraiserTier, GranularCanTransferResult, HandledTxStatus, IdentityClaim, IdentityId, IdentityRole, InactiveMember, Instruction, InstructionId, InstructionStatus, InvestorUid, InvestorZKProofData, ItnRewardStatus, KeyIdentityData, Leg, LegId, LegStatus, LegacyPalletPermissions, LegacyPermissions, LocalCAId, MaybeBlock, Memo, MetaDescription, MetaUrl, MetaVersion, Motion, MotionInfoLink, MotionTitle, MovePortfolioItem, OffChainSignature, PalletName, PalletPermissions, Percentage, PermissionedIdentityPrefs, Permissions, Pip, PipDescription, PipId, PipsMetadata, PolymeshVotes, PortfolioId, PortfolioKind, PortfolioName, PortfolioNumber, PortfolioPermissions, PortfolioValidityResult, PosRatio, PreAuthorizedKeyInfo, PriceTier, ProposalData, ProposalDetails, ProposalState, ProposalStatus, Proposer, ProtocolOp, Receipt, ReceiptDetails, ReceiptMetadata, RecordDate, RecordDateSpec, RestrictionResult, RistrettoPoint, Scalar, ScheduleId, ScheduleSpec, Scope, ScopeClaimProof, ScopeId, SecondaryKey, SecondaryKeyWithAuth, SecurityToken, SettlementType, Signatory, SkippedCount, SlashingSwitch, SmartExtension, SmartExtensionName, SmartExtensionType, SnapshotId, SnapshotMetadata, SnapshotResult, SnapshottedPip, StoredSchedule, Subsidy, TargetIdAuthorization, TargetIdentities, TargetIdentity, TargetTreatment, Tax, TemplateDetails, TemplateMetadata, Ticker, TickerRegistration, TickerRegistrationConfig, TransferManager, TransferManagerResult, TrustedFor, TrustedIssuer, UniqueCall, Url, Venue, VenueDetails, VenueId, VenueType, Version, VoteByPip, VoteCount, VoteCountProposalFound, VotingResult, ZkProofData } from 'polymesh-typegen/interfaces/default'; declare module '@polkadot/types/types/registry' { export interface InterfaceTypes { @@ -99,13 +99,16 @@ declare module '@polkadot/types/types/registry' { 'Compact': Compact; 'Compact': Compact; 'Compact': Compact; + 'Compact': Compact; 'Compact': Compact; 'Compact': Compact; 'Compact': Compact; 'Compact': Compact; + 'Compact': Compact; 'Compact': Compact; 'Compact': Compact; 'Compact': Compact; + 'Compact': Compact; 'Compact': Compact; 'Compact': Compact; 'Compact': Compact; @@ -172,6 +175,7 @@ declare module '@polkadot/types/types/registry' { 'Compact': Compact; 'Compact': Compact; 'Compact': Compact; + 'Compact': Compact; 'Compact': Compact; 'Compact': Compact; 'Compact': Compact; @@ -588,6 +592,7 @@ declare module '@polkadot/types/types/registry' { 'Option': Option; 'Option': Option; 'Option': Option; + 'Option': Option; 'Option': Option; 'Option': Option; 'Option': Option; @@ -670,6 +675,7 @@ declare module '@polkadot/types/types/registry' { 'Option': Option; 'Option': Option; 'Option': Option; + 'Option': Option; 'Option': Option; 'Option': Option; 'Option': Option; @@ -698,6 +704,7 @@ declare module '@polkadot/types/types/registry' { 'Option': Option; 'Option': Option; 'Option': Option; + 'Option': Option; 'Option': Option; 'Option': Option; 'Option': Option; @@ -1179,6 +1186,7 @@ declare module '@polkadot/types/types/registry' { 'Option': Option; 'Option': Option; 'Option': Option; + 'Option': Option; 'Option': Option; 'Option': Option; 'Option': Option; @@ -1654,6 +1662,7 @@ declare module '@polkadot/types/types/registry' { 'Vec': Vec; 'Vec': Vec; 'Vec': Vec; + 'Vec': Vec; 'Vec': Vec; 'Vec': Vec; 'Vec': Vec; @@ -1736,6 +1745,7 @@ declare module '@polkadot/types/types/registry' { 'Vec': Vec; 'Vec': Vec; 'Vec': Vec; + 'Vec': Vec; 'Vec': Vec; 'Vec': Vec; 'Vec': Vec; @@ -1764,6 +1774,7 @@ declare module '@polkadot/types/types/registry' { 'Vec': Vec; 'Vec': Vec; 'Vec': Vec; + 'Vec': Vec; 'Vec': Vec; 'Vec': Vec; 'Vec': Vec; @@ -2245,6 +2256,7 @@ declare module '@polkadot/types/types/registry' { 'Vec': Vec; 'Vec': Vec; 'Vec': Vec; + 'Vec': Vec; 'Vec': Vec; 'Vec': Vec; 'Vec': Vec; @@ -2720,6 +2732,7 @@ declare module '@polkadot/types/types/registry' { FundInfo: FundInfo; FundingRoundName: FundingRoundName; Fundraiser: Fundraiser; + FundraiserId: FundraiserId; FundraiserName: FundraiserName; FundraiserStatus: FundraiserStatus; FundraiserTier: FundraiserTier; @@ -2802,6 +2815,7 @@ declare module '@polkadot/types/types/registry' { InstantiateRequest: InstantiateRequest; InstantiateReturnValue: InstantiateReturnValue; Instruction: Instruction; + InstructionId: InstructionId; InstructionStatus: InstructionStatus; InstructionWeights: InstructionWeights; InvalidDisputeStatementKind: InvalidDisputeStatementKind; @@ -2830,6 +2844,7 @@ declare module '@polkadot/types/types/registry' { Leg: Leg; LegacyPalletPermissions: LegacyPalletPermissions; LegacyPermissions: LegacyPermissions; + LegId: LegId; LegStatus: LegStatus; Limits: Limits; LimitsTo264: LimitsTo264; @@ -3311,6 +3326,7 @@ declare module '@polkadot/types/types/registry' { VecInboundHrmpMessage: VecInboundHrmpMessage; Venue: Venue; VenueDetails: VenueDetails; + VenueId: VenueId; VenueType: VenueType; Version: Version; VersionedMultiAsset: VersionedMultiAsset; diff --git a/scripts/cli/src/interfaces/default/types.ts b/scripts/cli/src/interfaces/default/types.ts index 6c75febced..8838057370 100644 --- a/scripts/cli/src/interfaces/default/types.ts +++ b/scripts/cli/src/interfaces/default/types.ts @@ -128,6 +128,8 @@ export interface AuthorizationData extends Enum { readonly asBecomeAgent: ITuple<[Ticker, AgentGroup]>; readonly isAddRelayerPayingKey: boolean; readonly asAddRelayerPayingKey: ITuple<[AccountId, AccountId, Balance]>; + readonly isRotatePrimaryKeyToSecondary: boolean; + readonly asRotatePrimaryKeyToSecondary: Permissions; } /** @name AuthorizationNonce */ @@ -144,6 +146,7 @@ export interface AuthorizationType extends Enum { readonly isPortfolioCustody: boolean; readonly isBecomeAgent: boolean; readonly isAddRelayerPayingKey: boolean; + readonly isRotatePrimaryKeyToSecondary: boolean; } /** @name BallotMeta */ @@ -805,13 +808,16 @@ export interface Fundraiser extends Struct { readonly raising_portfolio: PortfolioId; readonly raising_asset: Ticker; readonly tiers: Vec; - readonly venue_id: u64; + readonly venue_id: VenueId; readonly start: Moment; readonly end: Option; readonly status: FundraiserStatus; readonly minimum_investment: Balance; } +/** @name FundraiserId */ +export interface FundraiserId extends u64 {} + /** @name FundraiserName */ export interface FundraiserName extends Text {} @@ -889,8 +895,8 @@ export interface InactiveMember extends Struct { /** @name Instruction */ export interface Instruction extends Struct { - readonly instruction_id: u64; - readonly venue_id: u64; + readonly instruction_id: InstructionId; + readonly venue_id: VenueId; readonly status: InstructionStatus; readonly settlement_type: SettlementType; readonly created_at: Option; @@ -898,6 +904,9 @@ export interface Instruction extends Struct { readonly value_date: Option; } +/** @name InstructionId */ +export interface InstructionId extends u64 {} + /** @name InstructionStatus */ export interface InstructionStatus extends Enum { readonly isUnknown: boolean; @@ -946,6 +955,9 @@ export interface LegacyPermissions extends Struct { readonly portfolio: Option>; } +/** @name LegId */ +export interface LegId extends u64 {} + /** @name LegStatus */ export interface LegStatus extends Enum { readonly isPendingTokenLock: boolean; @@ -1064,8 +1076,8 @@ export interface PipsMetadata extends Struct { /** @name PolymeshVotes */ export interface PolymeshVotes extends Struct { readonly index: u32; - readonly ayes: Vec>; - readonly nays: Vec>; + readonly ayes: Vec; + readonly nays: Vec; readonly expiry: MaybeBlock; } @@ -1194,7 +1206,7 @@ export interface Receipt extends Struct { /** @name ReceiptDetails */ export interface ReceiptDetails extends Struct { readonly receipt_uid: u64; - readonly leg_id: u64; + readonly leg_id: LegId; readonly signer: AccountId; readonly signature: OffChainSignature; readonly metadata: ReceiptMetadata; @@ -1469,6 +1481,9 @@ export interface Venue extends Struct { /** @name VenueDetails */ export interface VenueDetails extends Text {} +/** @name VenueId */ +export interface VenueId extends u64 {} + /** @name VenueType */ export interface VenueType extends Enum { readonly isOther: boolean; diff --git a/scripts/cli/src/interfaces/definitions.ts b/scripts/cli/src/interfaces/definitions.ts index 3eff6822de..45f072cc16 100644 --- a/scripts/cli/src/interfaces/definitions.ts +++ b/scripts/cli/src/interfaces/definitions.ts @@ -1,3 +1,3 @@ export default { -types: {"Address":"MultiAddress","LookupSource":"MultiAddress","AccountInfo":"AccountInfoWithDualRefCount","IdentityId":"[u8; 32]","EventDid":"IdentityId","EventCounts":"Vec","ErrorAt":"(u32, DispatchError)","InvestorUid":"[u8; 16]","Ticker":"[u8; 12]","CddId":"[u8; 32]","ScopeId":"[u8; 32]","PosRatio":"(u32, u32)","DocumentId":"u32","DocumentName":"Text","DocumentUri":"Text","DocumentHash":{"_enum":{"None":"","H512":"[u8; 64]","H384":"[u8; 48]","H320":"[u8; 40]","H256":"[u8; 32]","H224":"[u8; 28]","H192":"[u8; 24]","H160":"[u8; 20]","H128":"[u8; 16]"}},"DocumentType":"Text","Document":{"uri":"DocumentUri","content_hash":"DocumentHash","name":"DocumentName","doc_type":"Option","filing_date":"Option"},"Version":"u8","CustomAssetTypeId":"u32","AssetType":{"_enum":{"EquityCommon":"","EquityPreferred":"","Commodity":"","FixedIncome":"","REIT":"","Fund":"","RevenueShareAgreement":"","StructuredProduct":"","Derivative":"","Custom":"CustomAssetTypeId","StableCoin":""}},"AssetIdentifier":{"_enum":{"CUSIP":"[u8; 9]","CINS":"[u8; 9]","ISIN":"[u8; 12]","LEI":"[u8; 20]"}},"AssetOwnershipRelation":{"_enum":{"NotOwned":"","TickerOwned":"","AssetOwned":""}},"AssetName":"Text","FundingRoundName":"Text","VenueDetails":"Text","SecurityToken":{"total_supply":"Balance","owner_did":"IdentityId","divisible":"bool","asset_type":"AssetType"},"PalletName":"Text","DispatchableName":"Text","AssetPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"PortfolioPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"DispatchableNames":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"PalletPermissions":{"pallet_name":"PalletName","dispatchable_names":"DispatchableNames"},"ExtrinsicPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"Permissions":{"asset":"AssetPermissions","extrinsic":"ExtrinsicPermissions","portfolio":"PortfolioPermissions"},"LegacyPalletPermissions":{"pallet_name":"PalletName","total":"bool","dispatchable_names":"Vec"},"LegacyPermissions":{"asset":"Option>","extrinsic":"Option>","portfolio":"Option>"},"Signatory":{"_enum":{"Identity":"IdentityId","Account":"AccountId"}},"SecondaryKey":{"signer":"Signatory","permissions":"Permissions"},"SecondaryKeyWithAuth":{"secondary_key":"SecondaryKey","auth_signature":"Signature"},"Subsidy":{"paying_key":"AccountId","remaining":"Balance"},"IdentityRole":{"_enum":["Issuer","SimpleTokenIssuer","Validator","ClaimIssuer","Investor","NodeRunner","PM","CDDAMLClaimIssuer","AccreditedInvestorClaimIssuer","VerifiedIdentityClaimIssuer"]},"PreAuthorizedKeyInfo":{"target_id":"IdentityId","secondary_key":"SecondaryKey"},"DidRecord":{"primary_key":"AccountId","secondary_keys":"Vec"},"KeyIdentityData":{"identity":"IdentityId","permissions":"Option"},"CountryCode":{"_enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","VG","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","HK","MO","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VI","WF","EH","YE","ZM","ZW","BQ","CW","SX"]},"Scope":{"_enum":{"Identity":"IdentityId","Ticker":"Ticker","Custom":"Vec"}},"InvestorZKProofData":"Signature","Scalar":"[u8; 32]","RistrettoPoint":"[u8; 32]","ZkProofData":{"challenge_responses":"[Scalar; 2]","subtract_expressions_res":"RistrettoPoint","blinded_scope_did_hash":"RistrettoPoint"},"ScopeClaimProof":{"proof_scope_id_wellformed":"Signature","proof_scope_id_cdd_id_match":"ZkProofData","scope_id":"RistrettoPoint"},"Claim":{"_enum":{"Accredited":"Scope","Affiliate":"Scope","BuyLockup":"Scope","SellLockup":"Scope","CustomerDueDiligence":"CddId","KnowYourCustomer":"Scope","Jurisdiction":"(CountryCode, Scope)","Exempted":"Scope","Blocked":"Scope","InvestorUniqueness":"(Scope, ScopeId, CddId)","NoData":"","InvestorUniquenessV2":"(CddId)"}},"ClaimType":{"_enum":{"Accredited":"","Affiliate":"","BuyLockup":"","SellLockup":"","CustomerDueDiligence":"","KnowYourCustomer":"","Jurisdiction":"","Exempted":"","Blocked":"","InvestorUniqueness":"","NoData":"","InvestorUniquenessV2":""}},"IdentityClaim":{"claim_issuer":"IdentityId","issuance_date":"Moment","last_update_date":"Moment","expiry":"Option","claim":"Claim"},"ComplianceRequirement":{"sender_conditions":"Vec","receiver_conditions":"Vec","id":"u32"},"ComplianceRequirementResult":{"sender_conditions":"Vec","receiver_conditions":"Vec","id":"u32","result":"bool"},"ConditionType":{"_enum":{"IsPresent":"Claim","IsAbsent":"Claim","IsAnyOf":"Vec","IsNoneOf":"Vec","IsIdentity":"TargetIdentity"}},"TrustedFor":{"_enum":{"Any":"","Specific":"Vec"}},"TrustedIssuer":{"issuer":"IdentityId","trusted_for":"TrustedFor"},"Condition":{"condition_type":"ConditionType","issuers":"Vec"},"ConditionResult":{"condition":"Condition","result":"bool"},"TargetIdAuthorization":{"target_id":"IdentityId","nonce":"u64","expires_at":"Moment"},"TickerRegistration":{"owner":"IdentityId","expiry":"Option"},"TickerRegistrationConfig":{"max_ticker_length":"u8","registration_length":"Option"},"ClassicTickerRegistration":{"eth_owner":"EthereumAddress","is_created":"bool"},"ClassicTickerImport":{"eth_owner":"EthereumAddress","ticker":"Ticker","is_contract":"bool","is_created":"bool"},"EthereumAddress":"[u8; 20]","EcdsaSignature":"[u8; 65]","MotionTitle":"Text","MotionInfoLink":"Text","ChoiceTitle":"Text","Motion":{"title":"MotionTitle","info_link":"MotionInfoLink","choices":"Vec"},"BallotTitle":"Text","BallotMeta":{"title":"BallotTitle","motions":"Vec"},"BallotTimeRange":{"start":"Moment","end":"Moment"},"BallotVote":{"power":"Balance","fallback":"Option"},"MaybeBlock":{"_enum":{"Some":"BlockNumber","None":""}},"Url":"Text","PipDescription":"Text","PipsMetadata":{"id":"PipId","url":"Option","description":"Option","created_at":"BlockNumber","transaction_version":"u32","expiry":"MaybeBlock"},"Proposer":{"_enum":{"Community":"AccountId","Committee":"Committee"}},"Committee":{"_enum":{"Technical":"","Upgrade":""}},"SkippedCount":"u8","SnapshottedPip":{"id":"PipId","weight":"(bool, Balance)"},"SnapshotId":"u32","SnapshotMetadata":{"created_at":"BlockNumber","made_by":"AccountId","id":"SnapshotId"},"SnapshotResult":{"_enum":{"Approve":"","Reject":"","Skip":""}},"Beneficiary":{"id":"IdentityId","amount":"Balance"},"DepositInfo":{"owner":"AccountId","amount":"Balance"},"PolymeshVotes":{"index":"u32","ayes":"Vec<(IdentityId, Balance)>","nays":"Vec<(IdentityId, Balance)>","expiry":"MaybeBlock"},"PipId":"u32","ProposalState":{"_enum":["Pending","Rejected","Scheduled","Failed","Executed","Expired"]},"Pip":{"id":"PipId","proposal":"Call","state":"ProposalState","proposer":"Proposer"},"ProposalData":{"_enum":{"Hash":"Hash","Proposal":"Vec"}},"OffChainSignature":{"_enum":{"Ed25519":"H512","Sr25519":"H512","Ecdsa":"H512"}},"Authorization":{"authorization_data":"AuthorizationData","authorized_by":"IdentityId","expiry":"Option","auth_id":"u64"},"AuthorizationData":{"_enum":{"AttestPrimaryKeyRotation":"IdentityId","RotatePrimaryKey":"","TransferTicker":"Ticker","AddMultiSigSigner":"AccountId","TransferAssetOwnership":"Ticker","JoinIdentity":"Permissions","PortfolioCustody":"PortfolioId","BecomeAgent":"(Ticker, AgentGroup)","AddRelayerPayingKey":"(AccountId, AccountId, Balance)"}},"SmartExtensionType":{"_enum":{"TransferManager":"","Offerings":"","SmartWallet":"","Custom":"Vec"}},"SmartExtensionName":"Text","SmartExtension":{"extension_type":"SmartExtensionType","extension_name":"SmartExtensionName","extension_id":"AccountId","is_archive":"bool"},"MetaUrl":"Text","MetaDescription":"Text","MetaVersion":"u32","ExtVersion":"u32","TemplateMetadata":{"url":"Option","se_type":"SmartExtensionType","usage_fee":"Balance","description":"MetaDescription","version":"MetaVersion"},"TemplateDetails":{"instantiation_fee":"Balance","owner":"IdentityId","frozen":"bool"},"AuthorizationNonce":"u64","Counter":"u64","Percentage":"Permill","TransferManager":{"_enum":{"CountTransferManager":"Counter","PercentageTransferManager":"Percentage"}},"RestrictionResult":{"_enum":["Valid","Invalid","ForceValid"]},"Memo":"[u8;32]","BridgeTx":{"nonce":"u32","recipient":"AccountId","amount":"Balance","tx_hash":"H256"},"AssetCompliance":{"paused":"bool","requirements":"Vec"},"AssetComplianceResult":{"paused":"bool","requirements":"Vec","result":"bool"},"Claim1stKey":{"target":"IdentityId","claim_type":"ClaimType"},"Claim2ndKey":{"issuer":"IdentityId","scope":"Option"},"InactiveMember":{"id":"IdentityId","deactivated_at":"Moment","expiry":"Option"},"VotingResult":{"ayes_count":"u32","ayes_stake":"Balance","nays_count":"u32","nays_stake":"Balance"},"ProtocolOp":{"_enum":["AssetRegisterTicker","AssetIssue","AssetAddDocuments","AssetCreateAsset","CheckpointCreateSchedule","ComplianceManagerAddComplianceRequirement","IdentityCddRegisterDid","IdentityAddClaim","IdentityAddSecondaryKeysWithAuthorization","PipsPropose","ContractsPutCode","CorporateBallotAttachBallot","CapitalDistributionDistribute"]},"CddStatus":{"_enum":{"Ok":"IdentityId","Err":"Vec"}},"AssetDidResult":{"_enum":{"Ok":"IdentityId","Err":"Vec"}},"DidRecordsSuccess":{"primary_key":"AccountId","secondary_keys":"Vec"},"DidRecords":{"_enum":{"Success":"DidRecordsSuccess","IdNotFound":"Vec"}},"VoteCountProposalFound":{"ayes":"u64","nays":"u64"},"VoteCount":{"_enum":{"ProposalFound":"VoteCountProposalFound","ProposalNotFound":""}},"Vote":"(bool, Balance)","VoteByPip":{"pip":"PipId","vote":"Vote"},"BridgeTxDetail":{"amount":"Balance","status":"BridgeTxStatus","execution_block":"BlockNumber","tx_hash":"H256"},"BridgeTxStatus":{"_enum":{"Absent":"","Pending":"u8","Frozen":"","Timelocked":"","Handled":""}},"HandledTxStatus":{"_enum":{"Success":"","Error":"Text"}},"CappedFee":"u64","CanTransferResult":{"_enum":{"Ok":"u8","Err":"Vec"}},"AuthorizationType":{"_enum":{"AttestPrimaryKeyRotation":"","RotatePrimaryKey":"","TransferTicker":"","AddMultiSigSigner":"","TransferAssetOwnership":"","JoinIdentity":"","PortfolioCustody":"","BecomeAgent":"","AddRelayerPayingKey":""}},"ProposalDetails":{"approvals":"u64","rejections":"u64","status":"ProposalStatus","expiry":"Option","auto_close":"bool"},"ProposalStatus":{"_enum":{"Invalid":"","ActiveOrExpired":"","ExecutionSuccessful":"","ExecutionFailed":"","Rejected":""}},"DidStatus":{"_enum":{"Unknown":"","Exists":"","CddVerified":""}},"PortfolioName":"Text","PortfolioNumber":"u64","PortfolioKind":{"_enum":{"Default":"","User":"PortfolioNumber"}},"PortfolioId":{"did":"IdentityId","kind":"PortfolioKind"},"Moment":"u64","CalendarUnit":{"_enum":["Second","Minute","Hour","Day","Week","Month","Year"]},"CalendarPeriod":{"unit":"CalendarUnit","amount":"u64"},"CheckpointSchedule":{"start":"Moment","period":"CalendarPeriod"},"CheckpointId":"u64","ScheduleId":"u64","StoredSchedule":{"schedule":"CheckpointSchedule","id":"ScheduleId","at":"Moment","remaining":"u32"},"ScheduleSpec":{"start":"Option","period":"CalendarPeriod","remaining":"u32"},"InstructionStatus":{"_enum":{"Unknown":"","Pending":"","Failed":""}},"LegStatus":{"_enum":{"PendingTokenLock":"","ExecutionPending":"","ExecutionToBeSkipped":"(AccountId, u64)"}},"AffirmationStatus":{"_enum":{"Unknown":"","Pending":"","Affirmed":""}},"SettlementType":{"_enum":{"SettleOnAffirmation":"","SettleOnBlock":"BlockNumber"}},"Instruction":{"instruction_id":"u64","venue_id":"u64","status":"InstructionStatus","settlement_type":"SettlementType","created_at":"Option","trade_date":"Option","value_date":"Option"},"Leg":{"from":"PortfolioId","to":"PortfolioId","asset":"Ticker","amount":"Balance"},"Venue":{"creator":"IdentityId","venue_type":"VenueType"},"Receipt":{"receipt_uid":"u64","from":"PortfolioId","to":"PortfolioId","asset":"Ticker","amount":"Balance"},"ReceiptMetadata":"Text","ReceiptDetails":{"receipt_uid":"u64","leg_id":"u64","signer":"AccountId","signature":"OffChainSignature","metadata":"ReceiptMetadata"},"UniqueCall":{"nonce":"u64","call":"Call"},"MovePortfolioItem":{"ticker":"Ticker","amount":"Balance","memo":"Option"},"WeightToFeeCoefficient":{"coeffInteger":"Balance","coeffFrac":"Perbill","negative":"bool","degree":"u8"},"TargetIdentity":{"_enum":{"ExternalAgent":"","Specific":"IdentityId"}},"FundraiserName":"Text","FundraiserStatus":{"_enum":["Live","Frozen","Closed","ClosedEarly"]},"FundraiserTier":{"total":"Balance","price":"Balance","remaining":"Balance"},"Fundraiser":{"creator":"IdentityId","offering_portfolio":"PortfolioId","offering_asset":"Ticker","raising_portfolio":"PortfolioId","raising_asset":"Ticker","tiers":"Vec","venue_id":"u64","start":"Moment","end":"Option","status":"FundraiserStatus","minimum_investment":"Balance"},"VenueType":{"_enum":["Other","Distribution","Sto","Exchange"]},"ExtensionAttributes":{"usage_fee":"Balance","version":"MetaVersion"},"Tax":"Permill","TargetIdentities":{"identities":"Vec","treatment":"TargetTreatment"},"TargetTreatment":{"_enum":["Include","Exclude"]},"CAKind":{"_enum":["PredictableBenefit","UnpredictableBenefit","IssuerNotice","Reorganization","Other"]},"CADetails":"Text","CACheckpoint":{"_enum":{"Scheduled":"(ScheduleId, u64)","Existing":"CheckpointId"}},"RecordDate":{"date":"Moment","checkpoint":"CACheckpoint"},"RecordDateSpec":{"_enum":{"Scheduled":"Moment","ExistingSchedule":"ScheduleId","Existing":"CheckpointId"}},"CorporateAction":{"kind":"CAKind","decl_date":"Moment","record_date":"Option","targets":"TargetIdentities","default_withholding_tax":"Tax","withholding_tax":"Vec<(IdentityId, Tax)>"},"LocalCAId":"u32","CAId":{"ticker":"Ticker","local_id":"LocalCAId"},"Distribution":{"from":"PortfolioId","currency":"Ticker","per_share":"Balance","amount":"Balance","remaining":"Balance","reclaimed":"bool","payment_at":"Moment","expires_at":"Option"},"SlashingSwitch":{"_enum":["Validator","ValidatorAndNominator","None"]},"PriceTier":{"total":"Balance","price":"Balance"},"PermissionedIdentityPrefs":{"intended_count":"u32","running_count":"u32"},"GranularCanTransferResult":{"invalid_granularity":"bool","self_transfer":"bool","invalid_receiver_cdd":"bool","invalid_sender_cdd":"bool","missing_scope_claim":"bool","receiver_custodian_error":"bool","sender_custodian_error":"bool","sender_insufficient_balance":"bool","portfolio_validity_result":"PortfolioValidityResult","asset_frozen":"bool","statistics_result":"Vec","compliance_result":"AssetComplianceResult","result":"bool"},"PortfolioValidityResult":{"receiver_is_same_portfolio":"bool","sender_portfolio_does_not_exist":"bool","receiver_portfolio_does_not_exist":"bool","sender_insufficient_balance":"bool","result":"bool"},"TransferManagerResult":{"tm":"TransferManager","result":"bool"},"AGId":"u32","AgentGroup":{"_enum":{"Full":"","Custom":"AGId","ExceptMeta":"","PolymeshV1CAA":"","PolymeshV1PIA":""}},"ItnRewardStatus":{"_enum":{"Unclaimed":"Balance","Claimed":""}}} +types: {"Address":"MultiAddress","LookupSource":"MultiAddress","AccountInfo":"AccountInfoWithDualRefCount","IdentityId":"[u8; 32]","EventDid":"IdentityId","EventCounts":"Vec","ErrorAt":"(u32, DispatchError)","InvestorUid":"[u8; 16]","Ticker":"[u8; 12]","CddId":"[u8; 32]","ScopeId":"[u8; 32]","PosRatio":"(u32, u32)","DocumentId":"u32","DocumentName":"Text","DocumentUri":"Text","DocumentHash":{"_enum":{"None":"","H512":"[u8; 64]","H384":"[u8; 48]","H320":"[u8; 40]","H256":"[u8; 32]","H224":"[u8; 28]","H192":"[u8; 24]","H160":"[u8; 20]","H128":"[u8; 16]"}},"DocumentType":"Text","Document":{"uri":"DocumentUri","content_hash":"DocumentHash","name":"DocumentName","doc_type":"Option","filing_date":"Option"},"Version":"u8","CustomAssetTypeId":"u32","AssetType":{"_enum":{"EquityCommon":"","EquityPreferred":"","Commodity":"","FixedIncome":"","REIT":"","Fund":"","RevenueShareAgreement":"","StructuredProduct":"","Derivative":"","Custom":"CustomAssetTypeId","StableCoin":""}},"AssetIdentifier":{"_enum":{"CUSIP":"[u8; 9]","CINS":"[u8; 9]","ISIN":"[u8; 12]","LEI":"[u8; 20]"}},"AssetOwnershipRelation":{"_enum":{"NotOwned":"","TickerOwned":"","AssetOwned":""}},"AssetName":"Text","FundingRoundName":"Text","VenueDetails":"Text","SecurityToken":{"total_supply":"Balance","owner_did":"IdentityId","divisible":"bool","asset_type":"AssetType"},"PalletName":"Text","DispatchableName":"Text","AssetPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"PortfolioPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"DispatchableNames":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"PalletPermissions":{"pallet_name":"PalletName","dispatchable_names":"DispatchableNames"},"ExtrinsicPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"Permissions":{"asset":"AssetPermissions","extrinsic":"ExtrinsicPermissions","portfolio":"PortfolioPermissions"},"LegacyPalletPermissions":{"pallet_name":"PalletName","total":"bool","dispatchable_names":"Vec"},"LegacyPermissions":{"asset":"Option>","extrinsic":"Option>","portfolio":"Option>"},"Signatory":{"_enum":{"Identity":"IdentityId","Account":"AccountId"}},"SecondaryKey":{"signer":"Signatory","permissions":"Permissions"},"SecondaryKeyWithAuth":{"secondary_key":"SecondaryKey","auth_signature":"Signature"},"Subsidy":{"paying_key":"AccountId","remaining":"Balance"},"IdentityRole":{"_enum":["Issuer","SimpleTokenIssuer","Validator","ClaimIssuer","Investor","NodeRunner","PM","CDDAMLClaimIssuer","AccreditedInvestorClaimIssuer","VerifiedIdentityClaimIssuer"]},"PreAuthorizedKeyInfo":{"target_id":"IdentityId","secondary_key":"SecondaryKey"},"DidRecord":{"primary_key":"AccountId","secondary_keys":"Vec"},"KeyIdentityData":{"identity":"IdentityId","permissions":"Option"},"CountryCode":{"_enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","VG","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","HK","MO","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VI","WF","EH","YE","ZM","ZW","BQ","CW","SX"]},"Scope":{"_enum":{"Identity":"IdentityId","Ticker":"Ticker","Custom":"Vec"}},"InvestorZKProofData":"Signature","Scalar":"[u8; 32]","RistrettoPoint":"[u8; 32]","ZkProofData":{"challenge_responses":"[Scalar; 2]","subtract_expressions_res":"RistrettoPoint","blinded_scope_did_hash":"RistrettoPoint"},"ScopeClaimProof":{"proof_scope_id_wellformed":"Signature","proof_scope_id_cdd_id_match":"ZkProofData","scope_id":"RistrettoPoint"},"Claim":{"_enum":{"Accredited":"Scope","Affiliate":"Scope","BuyLockup":"Scope","SellLockup":"Scope","CustomerDueDiligence":"CddId","KnowYourCustomer":"Scope","Jurisdiction":"(CountryCode, Scope)","Exempted":"Scope","Blocked":"Scope","InvestorUniqueness":"(Scope, ScopeId, CddId)","NoData":"","InvestorUniquenessV2":"(CddId)"}},"ClaimType":{"_enum":{"Accredited":"","Affiliate":"","BuyLockup":"","SellLockup":"","CustomerDueDiligence":"","KnowYourCustomer":"","Jurisdiction":"","Exempted":"","Blocked":"","InvestorUniqueness":"","NoData":"","InvestorUniquenessV2":""}},"IdentityClaim":{"claim_issuer":"IdentityId","issuance_date":"Moment","last_update_date":"Moment","expiry":"Option","claim":"Claim"},"ComplianceRequirement":{"sender_conditions":"Vec","receiver_conditions":"Vec","id":"u32"},"ComplianceRequirementResult":{"sender_conditions":"Vec","receiver_conditions":"Vec","id":"u32","result":"bool"},"ConditionType":{"_enum":{"IsPresent":"Claim","IsAbsent":"Claim","IsAnyOf":"Vec","IsNoneOf":"Vec","IsIdentity":"TargetIdentity"}},"TrustedFor":{"_enum":{"Any":"","Specific":"Vec"}},"TrustedIssuer":{"issuer":"IdentityId","trusted_for":"TrustedFor"},"Condition":{"condition_type":"ConditionType","issuers":"Vec"},"ConditionResult":{"condition":"Condition","result":"bool"},"TargetIdAuthorization":{"target_id":"IdentityId","nonce":"u64","expires_at":"Moment"},"TickerRegistration":{"owner":"IdentityId","expiry":"Option"},"TickerRegistrationConfig":{"max_ticker_length":"u8","registration_length":"Option"},"ClassicTickerRegistration":{"eth_owner":"EthereumAddress","is_created":"bool"},"ClassicTickerImport":{"eth_owner":"EthereumAddress","ticker":"Ticker","is_contract":"bool","is_created":"bool"},"EthereumAddress":"[u8; 20]","EcdsaSignature":"[u8; 65]","MotionTitle":"Text","MotionInfoLink":"Text","ChoiceTitle":"Text","Motion":{"title":"MotionTitle","info_link":"MotionInfoLink","choices":"Vec"},"BallotTitle":"Text","BallotMeta":{"title":"BallotTitle","motions":"Vec"},"BallotTimeRange":{"start":"Moment","end":"Moment"},"BallotVote":{"power":"Balance","fallback":"Option"},"MaybeBlock":{"_enum":{"Some":"BlockNumber","None":""}},"Url":"Text","PipDescription":"Text","PipsMetadata":{"id":"PipId","url":"Option","description":"Option","created_at":"BlockNumber","transaction_version":"u32","expiry":"MaybeBlock"},"Proposer":{"_enum":{"Community":"AccountId","Committee":"Committee"}},"Committee":{"_enum":{"Technical":"","Upgrade":""}},"SkippedCount":"u8","SnapshottedPip":{"id":"PipId","weight":"(bool, Balance)"},"SnapshotId":"u32","SnapshotMetadata":{"created_at":"BlockNumber","made_by":"AccountId","id":"SnapshotId"},"SnapshotResult":{"_enum":{"Approve":"","Reject":"","Skip":""}},"Beneficiary":{"id":"IdentityId","amount":"Balance"},"DepositInfo":{"owner":"AccountId","amount":"Balance"},"PolymeshVotes":{"index":"u32","ayes":"Vec","nays":"Vec","expiry":"MaybeBlock"},"PipId":"u32","ProposalState":{"_enum":["Pending","Rejected","Scheduled","Failed","Executed","Expired"]},"Pip":{"id":"PipId","proposal":"Call","state":"ProposalState","proposer":"Proposer"},"ProposalData":{"_enum":{"Hash":"Hash","Proposal":"Vec"}},"OffChainSignature":{"_enum":{"Ed25519":"H512","Sr25519":"H512","Ecdsa":"H512"}},"Authorization":{"authorization_data":"AuthorizationData","authorized_by":"IdentityId","expiry":"Option","auth_id":"u64"},"AuthorizationData":{"_enum":{"AttestPrimaryKeyRotation":"IdentityId","RotatePrimaryKey":"","TransferTicker":"Ticker","AddMultiSigSigner":"AccountId","TransferAssetOwnership":"Ticker","JoinIdentity":"Permissions","PortfolioCustody":"PortfolioId","BecomeAgent":"(Ticker, AgentGroup)","AddRelayerPayingKey":"(AccountId, AccountId, Balance)","RotatePrimaryKeyToSecondary":"Permissions"}},"SmartExtensionType":{"_enum":{"TransferManager":"","Offerings":"","SmartWallet":"","Custom":"Vec"}},"SmartExtensionName":"Text","SmartExtension":{"extension_type":"SmartExtensionType","extension_name":"SmartExtensionName","extension_id":"AccountId","is_archive":"bool"},"MetaUrl":"Text","MetaDescription":"Text","MetaVersion":"u32","ExtVersion":"u32","TemplateMetadata":{"url":"Option","se_type":"SmartExtensionType","usage_fee":"Balance","description":"MetaDescription","version":"MetaVersion"},"TemplateDetails":{"instantiation_fee":"Balance","owner":"IdentityId","frozen":"bool"},"AuthorizationNonce":"u64","Counter":"u64","Percentage":"Permill","TransferManager":{"_enum":{"CountTransferManager":"Counter","PercentageTransferManager":"Percentage"}},"RestrictionResult":{"_enum":["Valid","Invalid","ForceValid"]},"Memo":"[u8;32]","BridgeTx":{"nonce":"u32","recipient":"AccountId","amount":"Balance","tx_hash":"H256"},"AssetCompliance":{"paused":"bool","requirements":"Vec"},"AssetComplianceResult":{"paused":"bool","requirements":"Vec","result":"bool"},"Claim1stKey":{"target":"IdentityId","claim_type":"ClaimType"},"Claim2ndKey":{"issuer":"IdentityId","scope":"Option"},"InactiveMember":{"id":"IdentityId","deactivated_at":"Moment","expiry":"Option"},"VotingResult":{"ayes_count":"u32","ayes_stake":"Balance","nays_count":"u32","nays_stake":"Balance"},"ProtocolOp":{"_enum":["AssetRegisterTicker","AssetIssue","AssetAddDocuments","AssetCreateAsset","CheckpointCreateSchedule","ComplianceManagerAddComplianceRequirement","IdentityCddRegisterDid","IdentityAddClaim","IdentityAddSecondaryKeysWithAuthorization","PipsPropose","ContractsPutCode","CorporateBallotAttachBallot","CapitalDistributionDistribute"]},"CddStatus":{"_enum":{"Ok":"IdentityId","Err":"Vec"}},"AssetDidResult":{"_enum":{"Ok":"IdentityId","Err":"Vec"}},"DidRecordsSuccess":{"primary_key":"AccountId","secondary_keys":"Vec"},"DidRecords":{"_enum":{"Success":"DidRecordsSuccess","IdNotFound":"Vec"}},"VoteCountProposalFound":{"ayes":"u64","nays":"u64"},"VoteCount":{"_enum":{"ProposalFound":"VoteCountProposalFound","ProposalNotFound":""}},"Vote":"(bool, Balance)","VoteByPip":{"pip":"PipId","vote":"Vote"},"BridgeTxDetail":{"amount":"Balance","status":"BridgeTxStatus","execution_block":"BlockNumber","tx_hash":"H256"},"BridgeTxStatus":{"_enum":{"Absent":"","Pending":"u8","Frozen":"","Timelocked":"","Handled":""}},"HandledTxStatus":{"_enum":{"Success":"","Error":"Text"}},"CappedFee":"u64","CanTransferResult":{"_enum":{"Ok":"u8","Err":"Vec"}},"AuthorizationType":{"_enum":{"AttestPrimaryKeyRotation":"","RotatePrimaryKey":"","TransferTicker":"","AddMultiSigSigner":"","TransferAssetOwnership":"","JoinIdentity":"","PortfolioCustody":"","BecomeAgent":"","AddRelayerPayingKey":"","RotatePrimaryKeyToSecondary":""}},"ProposalDetails":{"approvals":"u64","rejections":"u64","status":"ProposalStatus","expiry":"Option","auto_close":"bool"},"ProposalStatus":{"_enum":{"Invalid":"","ActiveOrExpired":"","ExecutionSuccessful":"","ExecutionFailed":"","Rejected":""}},"DidStatus":{"_enum":{"Unknown":"","Exists":"","CddVerified":""}},"PortfolioName":"Text","PortfolioNumber":"u64","PortfolioKind":{"_enum":{"Default":"","User":"PortfolioNumber"}},"PortfolioId":{"did":"IdentityId","kind":"PortfolioKind"},"Moment":"u64","CalendarUnit":{"_enum":["Second","Minute","Hour","Day","Week","Month","Year"]},"CalendarPeriod":{"unit":"CalendarUnit","amount":"u64"},"CheckpointSchedule":{"start":"Moment","period":"CalendarPeriod"},"CheckpointId":"u64","ScheduleId":"u64","StoredSchedule":{"schedule":"CheckpointSchedule","id":"ScheduleId","at":"Moment","remaining":"u32"},"ScheduleSpec":{"start":"Option","period":"CalendarPeriod","remaining":"u32"},"InstructionStatus":{"_enum":{"Unknown":"","Pending":"","Failed":""}},"LegStatus":{"_enum":{"PendingTokenLock":"","ExecutionPending":"","ExecutionToBeSkipped":"(AccountId, u64)"}},"AffirmationStatus":{"_enum":{"Unknown":"","Pending":"","Affirmed":""}},"SettlementType":{"_enum":{"SettleOnAffirmation":"","SettleOnBlock":"BlockNumber"}},"LegId":"u64","InstructionId":"u64","Instruction":{"instruction_id":"InstructionId","venue_id":"VenueId","status":"InstructionStatus","settlement_type":"SettlementType","created_at":"Option","trade_date":"Option","value_date":"Option"},"Leg":{"from":"PortfolioId","to":"PortfolioId","asset":"Ticker","amount":"Balance"},"Venue":{"creator":"IdentityId","venue_type":"VenueType"},"Receipt":{"receipt_uid":"u64","from":"PortfolioId","to":"PortfolioId","asset":"Ticker","amount":"Balance"},"ReceiptMetadata":"Text","ReceiptDetails":{"receipt_uid":"u64","leg_id":"LegId","signer":"AccountId","signature":"OffChainSignature","metadata":"ReceiptMetadata"},"UniqueCall":{"nonce":"u64","call":"Call"},"MovePortfolioItem":{"ticker":"Ticker","amount":"Balance","memo":"Option"},"WeightToFeeCoefficient":{"coeffInteger":"Balance","coeffFrac":"Perbill","negative":"bool","degree":"u8"},"TargetIdentity":{"_enum":{"ExternalAgent":"","Specific":"IdentityId"}},"FundraiserId":"u64","FundraiserName":"Text","FundraiserStatus":{"_enum":["Live","Frozen","Closed","ClosedEarly"]},"FundraiserTier":{"total":"Balance","price":"Balance","remaining":"Balance"},"Fundraiser":{"creator":"IdentityId","offering_portfolio":"PortfolioId","offering_asset":"Ticker","raising_portfolio":"PortfolioId","raising_asset":"Ticker","tiers":"Vec","venue_id":"VenueId","start":"Moment","end":"Option","status":"FundraiserStatus","minimum_investment":"Balance"},"VenueId":"u64","VenueType":{"_enum":["Other","Distribution","Sto","Exchange"]},"ExtensionAttributes":{"usage_fee":"Balance","version":"MetaVersion"},"Tax":"Permill","TargetIdentities":{"identities":"Vec","treatment":"TargetTreatment"},"TargetTreatment":{"_enum":["Include","Exclude"]},"CAKind":{"_enum":["PredictableBenefit","UnpredictableBenefit","IssuerNotice","Reorganization","Other"]},"CADetails":"Text","CACheckpoint":{"_enum":{"Scheduled":"(ScheduleId, u64)","Existing":"CheckpointId"}},"RecordDate":{"date":"Moment","checkpoint":"CACheckpoint"},"RecordDateSpec":{"_enum":{"Scheduled":"Moment","ExistingSchedule":"ScheduleId","Existing":"CheckpointId"}},"CorporateAction":{"kind":"CAKind","decl_date":"Moment","record_date":"Option","targets":"TargetIdentities","default_withholding_tax":"Tax","withholding_tax":"Vec<(IdentityId, Tax)>"},"LocalCAId":"u32","CAId":{"ticker":"Ticker","local_id":"LocalCAId"},"Distribution":{"from":"PortfolioId","currency":"Ticker","per_share":"Balance","amount":"Balance","remaining":"Balance","reclaimed":"bool","payment_at":"Moment","expires_at":"Option"},"SlashingSwitch":{"_enum":["Validator","ValidatorAndNominator","None"]},"PriceTier":{"total":"Balance","price":"Balance"},"PermissionedIdentityPrefs":{"intended_count":"u32","running_count":"u32"},"GranularCanTransferResult":{"invalid_granularity":"bool","self_transfer":"bool","invalid_receiver_cdd":"bool","invalid_sender_cdd":"bool","missing_scope_claim":"bool","receiver_custodian_error":"bool","sender_custodian_error":"bool","sender_insufficient_balance":"bool","portfolio_validity_result":"PortfolioValidityResult","asset_frozen":"bool","statistics_result":"Vec","compliance_result":"AssetComplianceResult","result":"bool"},"PortfolioValidityResult":{"receiver_is_same_portfolio":"bool","sender_portfolio_does_not_exist":"bool","receiver_portfolio_does_not_exist":"bool","sender_insufficient_balance":"bool","result":"bool"},"TransferManagerResult":{"tm":"TransferManager","result":"bool"},"AGId":"u32","AgentGroup":{"_enum":{"Full":"","Custom":"AGId","ExceptMeta":"","PolymeshV1CAA":"","PolymeshV1PIA":""}},"ItnRewardStatus":{"_enum":{"Unclaimed":"Balance","Claimed":""}}} } \ No newline at end of file diff --git a/scripts/cli/src/tests/0_create_identities.ts b/scripts/cli/src/tests/0_create_identities.ts deleted file mode 100644 index 942630b858..0000000000 --- a/scripts/cli/src/tests/0_create_identities.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { initMain, generateKeys } from "../util/init"; -import { createIdentities } from "../helpers/identity_helper"; -import PrettyError from "pretty-error"; - -async function main(): Promise { - const testEntities = await initMain(); - const alice = testEntities[0]; - const primaryDevSeed = "0_primary"; - const keys = await generateKeys(2, primaryDevSeed); - await createIdentities(alice, keys); -} - -main() - .catch((err: any) => { - const pe = new PrettyError(); - console.error(pe.render(err)); - process.exit(1); - }) - .finally(() => { - console.log("Completed: CREATE IDENTITIES"); - process.exit(); - }); diff --git a/scripts/cli/src/tests/13_corporate_actions.ts b/scripts/cli/src/tests/13_corporate_actions.ts index 5227eb42a3..744bb43bb3 100644 --- a/scripts/cli/src/tests/13_corporate_actions.ts +++ b/scripts/cli/src/tests/13_corporate_actions.ts @@ -49,16 +49,12 @@ async function main(): Promise { await distributePolyBatch(alice, [secondaryKeys[0], bob], transferAmount); console.log("Distributing tokens"); - await Promise.all([ - issueTokenToDid(alice, ticker, 1000000000, null), - issueTokenToDid(alice, earnedTicker, 20000000000, null), - ]); + await issueTokenToDid(alice, ticker, 1000000000, null); + await issueTokenToDid(alice, earnedTicker, 20000000000, null); console.log("adding compliance requirement"); - await Promise.all([ - addComplianceRequirement(alice, ticker), - addComplianceRequirement(alice, earnedTicker), - ]); + await addComplianceRequirement(alice, ticker); + await addComplianceRequirement(alice, earnedTicker); console.log("transfering token to Bob"); let venueCounter = await createVenue(alice); @@ -71,16 +67,12 @@ async function main(): Promise { 100000000 ); console.log("affirming transfer"); - await Promise.all([ - affirmInstruction(alice, intructionCounterAB, aliceDid, 1), - affirmInstruction(bob, intructionCounterAB, bobDid, 0), - ]); + await affirmInstruction(alice, intructionCounterAB, aliceDid, 1); + await affirmInstruction(bob, intructionCounterAB, bobDid, 0); console.log("changing default target and taxes for corporate action"); - await Promise.all([ - changeDefaultTargetIdentitites(alice, ticker, [bob], "include"), - changeWithholdingTax(alice, ticker, 15), - ]); + await changeDefaultTargetIdentitites(alice, ticker, [bob], "include"); + await changeWithholdingTax(alice, ticker, 15); await initiateCorporateAction( alice, diff --git a/scripts/cli/src/tests/15_itn_rewards.ts b/scripts/cli/src/tests/15_itn_rewards.ts index 5ec3ef4872..1998a3f4e2 100644 --- a/scripts/cli/src/tests/15_itn_rewards.ts +++ b/scripts/cli/src/tests/15_itn_rewards.ts @@ -6,28 +6,23 @@ import { padTicker, sendTx, ApiSingleton, - waitNextBlock, waitNextEra, } from "../util/init"; -import { createIdentities } from "../helpers/identity_helper"; +import { createIdentities, addClaimsToDids } from "../helpers/identity_helper"; import { issueTokenToDid } from "../helpers/asset_helper"; import { distributePolyBatch } from "../helpers/poly_helper"; -import { ExtrinsicPermissions } from "../types"; import PrettyError from "pretty-error"; -import { - addInstruction, - affirmInstruction, - createVenue, -} from "../helpers/settlement_helper"; import { addComplianceRequirement } from "../helpers/compliance_manager_helper"; -import { send } from "process"; +import { createTable } from "../util/sqlite3"; +import { forceNewEra } from "../helpers/staking_helper"; async function main(): Promise { + createTable(); const api = await ApiSingleton.getInstance(); const testEntities = await initMain(); const alice = testEntities[0]; const bob = testEntities[4]; - const aliceDid = await keyToIdentityIds(alice.publicKey); + await keyToIdentityIds(alice.publicKey); const bobDid = await keyToIdentityIds(bob.publicKey); const dave = await generateEntityFromUri("15_dave"); const dave2 = await generateEntityFromUri("15_dave2"); @@ -44,7 +39,7 @@ async function main(): Promise { await sendTx(dave, api.tx.staking.nominate([bob.publicKey])); console.log("Nominated validators"); - await waitNextEra(); + await forceNewEra(alice); console.log("New era, rewards paid out"); // SecondaryKey @@ -66,7 +61,7 @@ async function main(): Promise { console.log("ItnRewards: TrustedDefaultClaimIssuerAdded"); const ticker = padTicker("15TICKER"); - issueTokenToDid(dave, ticker, 100000, null); + await issueTokenToDid(dave, ticker, 100000, null); await addComplianceRequirement(dave, ticker); await sendTx( dave, @@ -94,6 +89,14 @@ async function main(): Promise { console.log("ItnRewards: AddAssetToAPortfolio"); const portfolioId = await api.query.portfolio.nameToNumber(daveDid, "foobar"); + // To Fix: In ITN Rewards PR + // AddAPortfolioManager is not possible because of old permission format + // console.log("ItnRewards: StopStakingAPortion"); + // await sendTx(dave, api.tx.staking.unbond(100)); + + // console.log("ItnRewards: StartStakingANewOperator"); + // await sendTx(dave, api.tx.staking.nominate([alice.publicKey])); + await sendTx( dave, api.tx.portfolio.movePortfolioFunds( @@ -103,13 +106,7 @@ async function main(): Promise { ) ); - // AddAPortfolioManager is not possible because of old permission format - - console.log("ItnRewards: StopStakingAPortion"); - await sendTx(dave, api.tx.staking.unbond(100)); - - console.log("ItnRewards: StartStakingANewOperator"); - await sendTx(dave, api.tx.staking.nominate([alice.publicKey])); + } main() diff --git a/scripts/cli/src/tests/1_poly_transfer.ts b/scripts/cli/src/tests/1_poly_transfer.ts deleted file mode 100644 index de93e04b09..0000000000 --- a/scripts/cli/src/tests/1_poly_transfer.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { initMain, generateKeys, transferAmount, throws } from "../util/init"; -import { createIdentities } from "../helpers/identity_helper"; -import { distributePoly, distributePolyBatch } from "../helpers/poly_helper"; -import PrettyError from "pretty-error"; - -async function main(): Promise { - const testEntities = await initMain(); - const alice = testEntities[0]; - const primaryDevSeed = "1_primary"; - const keys = await generateKeys(2, primaryDevSeed); - await createIdentities(alice, keys); - await distributePolyBatch(alice, keys, transferAmount); - - // fail transfers - await throws( - async () => await distributePoly(keys[0], keys[1], transferAmount * 10) - ); - await throws( - async () => await distributePoly(keys[1], keys[0], transferAmount * 10) - ); -} - -main() - .catch((err: any) => { - const pe = new PrettyError(); - console.error(pe.render(err)); - process.exit(1); - }) - .finally(() => { - console.log("Completed: POLY TRANSFERS"); - process.exit(); - }); diff --git a/scripts/cli/src/tests/2_key_management.ts b/scripts/cli/src/tests/2_key_management.ts deleted file mode 100644 index 6c73e47bc1..0000000000 --- a/scripts/cli/src/tests/2_key_management.ts +++ /dev/null @@ -1,39 +0,0 @@ -import * as init from "../util/init"; -import { createIdentities } from "../helpers/identity_helper"; -import { distributePolyBatch } from "../helpers/poly_helper"; -import { - addSecondaryKeys, - createMultiSig, -} from "../helpers/key_management_helper"; -import PrettyError from "pretty-error"; - -async function main(): Promise { - const testEntities = await init.initMain(); - const primaryDevSeed = "2_primary"; - const secondaryDevSeed = "2_secondary"; - const alice = testEntities[0]; - const bob = await init.generateEntityFromUri("2_bob"); - const charlie = await init.generateEntityFromUri("2_charlie"); - const dave = await init.generateEntityFromUri("2_dave"); - const primaryKeys = await init.generateKeys(2, primaryDevSeed); - const secondaryKeys = await init.generateKeys(2, secondaryDevSeed); - const bobSignatory = await init.signatory(alice, bob); - const charlieSignatory = await init.signatory(alice, charlie); - const daveSignatory = await init.signatory(alice, dave); - const signatoryArray = [bobSignatory, charlieSignatory, daveSignatory]; - await createIdentities(alice, primaryKeys); - await distributePolyBatch(alice, primaryKeys, init.transferAmount); - await addSecondaryKeys(primaryKeys, secondaryKeys); - await createMultiSig(alice, signatoryArray, 2); -} - -main() - .catch((err: any) => { - const pe = new PrettyError(); - console.error(pe.render(err)); - process.exit(1); - }) - .finally(() => { - console.log("Completed: KEY MANAGEMENT"); - process.exit(); - }); diff --git a/scripts/cli/src/tests/3_auth_join_did.ts b/scripts/cli/src/tests/3_auth_join_did.ts deleted file mode 100644 index 9254ee6fd0..0000000000 --- a/scripts/cli/src/tests/3_auth_join_did.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { initMain, generateKeys, transferAmount } from "../util/init"; -import { - createIdentities, - authorizeJoinToIdentities, -} from "../helpers/identity_helper"; -import { distributePolyBatch } from "../helpers/poly_helper"; -import { addSecondaryKeys } from "../helpers/key_management_helper"; -import PrettyError from "pretty-error"; - -async function main(): Promise { - const testEntities = await initMain(); - const alice = testEntities[0]; - const primaryDevSeed = "3_primary"; - const secondaryDevSeed = "3_secondary"; - const primaryKeys = await generateKeys(2, primaryDevSeed); - const secondaryKeys = await generateKeys(2, secondaryDevSeed); - await createIdentities(alice, primaryKeys); - await distributePolyBatch(alice, primaryKeys, transferAmount); - await addSecondaryKeys(primaryKeys, secondaryKeys); - await authorizeJoinToIdentities(secondaryKeys, primaryKeys); -} - -main() - .catch((err: any) => { - const pe = new PrettyError(); - console.error(pe.render(err)); - process.exit(1); - }) - .finally(() => { - console.log("Completed: AUTH JOIN DID"); - process.exit(); - }); diff --git a/scripts/cli/src/tests/4_permission_management.ts b/scripts/cli/src/tests/4_permission_management.ts deleted file mode 100644 index 4492421c61..0000000000 --- a/scripts/cli/src/tests/4_permission_management.ts +++ /dev/null @@ -1,135 +0,0 @@ -import * as init from "../util/init"; -import { - createIdentities, - authorizeJoinToIdentities, - setPermissionToSigner, -} from "../helpers/identity_helper"; -import { distributePolyBatch } from "../helpers/poly_helper"; -import { addSecondaryKeys } from "../helpers/key_management_helper"; -import { - setAsset, - setExtrinsic, - setPortfolio, - setDoc, -} from "../helpers/permission_helper"; -import { - createPortfolio, - movePortfolioFunds, -} from "../helpers/portfolio_helper"; -import { addDocuments, issueTokenToDid } from "../helpers/asset_helper"; -import { - AssetPermissions, - Document, - ExtrinsicPermissions, - LegacyPalletPermissions, - PortfolioId, - PortfolioPermissions, - Ticker, -} from "../types"; -import { assert } from "chai"; -import PrettyError from "pretty-error"; - -async function main(): Promise { - const ticker = init.padTicker("4TICKER"); - const portfolioName = "4_portfolio"; - const testEntities = await init.initMain(); - const alice = testEntities[0]; - const primaryDevSeed = "4_primary"; - const secondaryDevSeed = "4_secondary"; - const primaryKeys = await init.generateKeys(1, primaryDevSeed); - const secondaryKeys = await init.generateKeys(1, secondaryDevSeed); - await createIdentities(alice, primaryKeys); - let extrinsics: ExtrinsicPermissions = { These: [] }; - let portfolios: PortfolioPermissions = { These: [] }; - let assets: AssetPermissions = { These: [] }; - let documents: Document[] = []; - - await distributePolyBatch(alice, [primaryKeys[0]], init.transferAmount); - await addSecondaryKeys(primaryKeys, secondaryKeys); - await authorizeJoinToIdentities(secondaryKeys, primaryKeys); - await distributePolyBatch(alice, [secondaryKeys[0]], init.transferAmount); - await issueTokenToDid(primaryKeys[0], ticker, 1000000, null); - - let portfolioOutput = await createPortfolio(secondaryKeys[0], portfolioName); - assert.equal(portfolioOutput, false); - - setExtrinsic(extrinsics, "Portfolio", "create_portfolio"); - await setPermissionToSigner( - primaryKeys, - secondaryKeys, - extrinsics, - portfolios, - assets - ); - portfolioOutput = await createPortfolio(secondaryKeys[0], portfolioName); - assert.equal(portfolioOutput, true); - - setExtrinsic(extrinsics, "Portfolio", "move_portfolio_funds"); - await setPermissionToSigner( - primaryKeys, - secondaryKeys, - extrinsics, - portfolios, - assets - ); - let portfolioFundsOutput = await movePortfolioFunds( - secondaryKeys[0], - primaryKeys[0], - ticker, - 100 - ); - assert.equal(portfolioFundsOutput, false); - - await setPortfolio(portfolios, primaryKeys[0], "Default"); - await setPortfolio(portfolios, secondaryKeys[0], "User"); - await setPermissionToSigner( - primaryKeys, - secondaryKeys, - extrinsics, - portfolios, - assets - ); - - portfolioFundsOutput = await movePortfolioFunds( - secondaryKeys[0], - primaryKeys[0], - ticker, - 100 - ); - assert.equal(portfolioFundsOutput, true); - - setExtrinsic(extrinsics, "Asset", "add_documents"); - await setPermissionToSigner( - primaryKeys, - secondaryKeys, - extrinsics, - portfolios, - assets - ); - setDoc(documents, "www.google.com", { None: "" }, "google"); - let addDocsOutput = await addDocuments(secondaryKeys[0], ticker, documents); - assert.equal(addDocsOutput, false); - console.log("after docs"); - - setAsset(ticker, assets); - await setPermissionToSigner( - primaryKeys, - secondaryKeys, - extrinsics, - portfolios, - assets - ); - addDocsOutput = await addDocuments(secondaryKeys[0], ticker, documents); - assert.equal(addDocsOutput, true); -} - -main() - .catch((err: any) => { - const pe = new PrettyError(); - console.error(pe.render(err)); - process.exit(1); - }) - .finally(() => { - console.log("Completed: PERMISSION MANAGEMENT"); - process.exit(); - }); diff --git a/scripts/cli/src/tests/5_claim_management.ts b/scripts/cli/src/tests/5_claim_management.ts deleted file mode 100644 index 71ba961d72..0000000000 --- a/scripts/cli/src/tests/5_claim_management.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { - initMain, - generateKeys, - transferAmount, - ApiSingleton, - sendTx, - padTicker, -} from "../util/init"; -import { createIdentities, addClaimsToDids } from "../helpers/identity_helper"; -import { distributePolyBatch } from "../helpers/poly_helper"; -import PrettyError from "pretty-error"; - -async function main(): Promise { - const api = await ApiSingleton.getInstance(); - - const testEntities = await initMain(); - const alice = testEntities[0]; - - const issuerSeed1 = "5_issuer_1"; - const issuerSeed2 = "5_issuer_2"; - const claimeeSeed = "5_claimee"; - - const issuerKeys1 = await generateKeys(2, issuerSeed1); - const issuerKeys2 = await generateKeys(2, issuerSeed2); - const claimeeKeys = await generateKeys(2, claimeeSeed); - - await createIdentities(alice, issuerKeys1); - await createIdentities(alice, issuerKeys2); - const claimeeDids = await createIdentities(alice, claimeeKeys); - - const ticker = padTicker("5TICKER"); - - await distributePolyBatch( - alice, - issuerKeys1.concat(issuerKeys2).concat(claimeeKeys), - transferAmount - ); - - console.log("Adding Exempted claim"); - await sendTx( - issuerKeys1[0], - api.tx.identity.addClaim( - claimeeDids[0], - { Exempted: { Identity: claimeeDids[1] } }, - null - ) - ); - - console.log("Adding SellLockup claim"); - await sendTx( - issuerKeys1[0], - api.tx.identity.addClaim( - claimeeDids[0], - { SellLockup: { Ticker: ticker } }, - null - ) - ); - - console.log("Adding Accredited claim"); - await sendTx( - issuerKeys2[0], - api.tx.identity.addClaim( - claimeeDids[0], - { Accredited: { Ticker: ticker } }, - null - ) - ); - - console.log("Adding Affiliate claim"); - await sendTx( - issuerKeys2[0], - api.tx.identity.addClaim( - claimeeDids[0], - { Affiliate: { Ticker: ticker } }, - Date.now() as any - ) - ); -} - -main() - .catch((err: any) => { - const pe = new PrettyError(); - console.error(pe.render(err)); - process.exit(1); - }) - .finally(() => { - console.log("Completed: CLAIM MANAGEMENT"); - process.exit(); - }); diff --git a/scripts/cli/src/tests/6_create_assets.ts b/scripts/cli/src/tests/6_create_assets.ts deleted file mode 100644 index bda295fbb4..0000000000 --- a/scripts/cli/src/tests/6_create_assets.ts +++ /dev/null @@ -1,27 +0,0 @@ -import * as init from "../util/init"; -import { createIdentities } from "../helpers/identity_helper"; -import { distributePolyBatch } from "../helpers/poly_helper"; -import { issueTokenToDid } from "../helpers/asset_helper"; -import PrettyError from "pretty-error"; - -async function main(): Promise { - const ticker = init.padTicker("6TICKER"); - const testEntities = await init.initMain(); - const alice = testEntities[0]; - const primaryDevSeed = "6_primary"; - const primaryKeys = await init.generateKeys(1, primaryDevSeed); - await createIdentities(alice, primaryKeys); - await distributePolyBatch(alice, primaryKeys, init.transferAmount); - await issueTokenToDid(primaryKeys[0], ticker, 1000000, null); -} - -main() - .catch((err: any) => { - const pe = new PrettyError(); - console.error(pe.render(err)); - process.exit(1); - }) - .finally(() => { - console.log("Completed: CREATE ASSET"); - process.exit(); - }); diff --git a/scripts/cli/src/tests/7_create_claim_compliance.ts b/scripts/cli/src/tests/7_create_claim_compliance.ts deleted file mode 100644 index 68e743ea76..0000000000 --- a/scripts/cli/src/tests/7_create_claim_compliance.ts +++ /dev/null @@ -1,29 +0,0 @@ -import * as init from "../util/init"; -import { createIdentities } from "../helpers/identity_helper"; -import { distributePolyBatch } from "../helpers/poly_helper"; -import { issueTokenToDid } from "../helpers/asset_helper"; -import { createClaimCompliance } from "../helpers/compliance_manager_helper"; -import PrettyError from "pretty-error"; - -async function main(): Promise { - const ticker = init.padTicker("7TICKER"); - const testEntities = await init.initMain(); - const alice = testEntities[0]; - const primaryDevSeed = "7_primary"; - const primaryKeys = await init.generateKeys(1, primaryDevSeed); - let issuerDid = await createIdentities(alice, primaryKeys); - await distributePolyBatch(alice, primaryKeys, init.transferAmount); - await issueTokenToDid(primaryKeys[0], ticker, 1000000, null); - await createClaimCompliance(primaryKeys[0], issuerDid[0], ticker); -} - -main() - .catch((err: any) => { - const pe = new PrettyError(); - console.error(pe.render(err)); - process.exit(1); - }) - .finally(() => { - console.log("Completed: CREATE CLAIM COMPLIANCE"); - process.exit(); - }); diff --git a/scripts/cli/src/types.ts b/scripts/cli/src/types.ts index 05638ce844..904ced3429 100644 --- a/scripts/cli/src/types.ts +++ b/scripts/cli/src/types.ts @@ -37,20 +37,6 @@ export interface TargetIdentity { Specific?: IdentityId; } -export interface Claim { - Accredited?: Scope; - Affiliate?: Scope; - BuyLockup?: Scope; - SellLockup?: Scope; - CustomerDueDiligence?: CddId; - KnowYourCustomer?: Scope; - Jurisdiction?: [CountryCode, Scope]; - Exempted?: Scope; - Blocked?: Scope; - InvestorUniqueness?: [Scope, ScopeId, CddId]; - NoData?: string; -} - export interface ClaimType { Accredited?: string; Affiliate?: string; @@ -66,26 +52,26 @@ export interface ClaimType { } export interface AuthorizationData { - AttestPrimaryKeyRotation?: IdentityId; - RotatePrimaryKey?: IdentityId; - TransferTicker?: Ticker; - TransferPrimaryIssuanceAgent?: Ticker; - AddMultiSigSigner?: AccountId; - TransferAssetOwnership?: Ticker; - JoinIdentity?: Permissions; - PortfolioCustody?: PortfolioId; - Custom?: Ticker; - NoData?: string; - TransferCorporateActionAgent?: Ticker; - BecomeAgent?: (string | AgentGroup)[]; + AttestPrimaryKeyRotation?: IdentityId; + RotatePrimaryKey?: IdentityId; + TransferTicker?: Ticker; + TransferPrimaryIssuanceAgent?: Ticker; + AddMultiSigSigner?: AccountId; + TransferAssetOwnership?: Ticker; + JoinIdentity?: Permissions; + PortfolioCustody?: PortfolioId; + Custom?: Ticker; + NoData?: string; + TransferCorporateActionAgent?: Ticker; + BecomeAgent?: (string | AgentGroup)[]; } export interface AgentGroup { - Full?: string; - Custom?: number; - ExceptMeta?: string; - PolymeshV1CAA?: string; - PolymeshV1PIA?: string; + Full?: string; + Custom?: number; + ExceptMeta?: string; + PolymeshV1CAA?: string; + PolymeshV1PIA?: string; } export interface ConditionType { @@ -113,6 +99,19 @@ export type DocumentName = string; export type DocumentUri = string; export type Signatory = { Identity: IdentityId } | { Account: AccountId }; +export type Claim = + | { Accredited: Scope } + | { Affiliate: Scope } + | { BuyLockup: Scope } + | { SellLockup: Scope } + | { CustomerDueDiligence: CddId } + | { KnowYourCustomer: Scope } + | { Jurisdiction: [CountryCode, Scope] } + | { Exempted: Scope } + | { Blocked: Scope } + | { InvestorUniqueness: [Scope, ScopeId, CddId] } + | { NoData: string }; + export type MovePortfolioItem = { ticker: Ticker; amount: number; diff --git a/scripts/cli/src/util/init.ts b/scripts/cli/src/util/init.ts index 7d5bfb2e00..f7c73e4676 100644 --- a/scripts/cli/src/util/init.ts +++ b/scripts/cli/src/util/init.ts @@ -19,15 +19,16 @@ import type { SubmittableExtrinsic } from "@polkadot/api/types"; import type { KeyringPair } from "@polkadot/keyring/types"; import type { DispatchError } from "@polkadot/types/interfaces"; import type { ISubmittableResult } from "@polkadot/types/types"; -import type { Ticker, NonceObject } from "../types"; +import type { Ticker } from "../types"; import { createIdentities } from "../helpers/identity_helper"; import { distributePoly } from "../helpers/poly_helper"; import type { IdentityId } from "../interfaces"; import { assert } from "chai"; +import { getNonce } from "../util/sqlite3"; -let nonces = new Map(); let block_sizes: Number[] = []; let block_times: Number[] = []; +let genesisEntities: KeyringPair[] = []; let synced_block = 0; let synced_block_ts = 0; @@ -69,6 +70,11 @@ export class ApiSingleton { } } +export async function disconnect() { + const api = await ApiSingleton.getInstance(); + await api.disconnect(); +} + export async function sleep(ms: number) { return new Promise((resolve) => setTimeout(resolve, ms)); } @@ -101,13 +107,16 @@ export async function waitNextBlock() { // Initialization Main is used to generate all entities e.g (Alice, Bob, Dave) export async function initMain(): Promise { - return [ - await generateEntity("Alice"), - await generateEntity("relay_1"), - await generateEntity("polymath_1"), - await generateEntity("polymath_2"), - await generateEntity("Bob"), - ]; + if (genesisEntities.length === 0) { + genesisEntities = [ + await generateEntity("Alice"), + await generateEntity("relay_1"), + await generateEntity("polymath_1"), + await generateEntity("polymath_2"), + await generateEntity("Bob"), + ]; + } + return genesisEntities; } export async function generateEntities(accounts: string[]) { @@ -120,23 +129,16 @@ export async function generateEntities(accounts: string[]) { } export async function generateEntity(name: string): Promise { - const api = await ApiSingleton.getInstance(); await cryptoWaitReady(); - let entity = new Keyring({ type: "sr25519" }).addFromUri(`//${name}`, { + return new Keyring({ type: "sr25519" }).addFromUri(`//${name}`, { name: `${name}`, }); - let entityRawNonce = (await api.query.system.account(entity.address)).nonce; - let entity_nonce = new BN(entityRawNonce.toString()); - nonces.set(entity.address, entity_nonce); - - return entity; } export async function generateKeys( numberOfKeys: Number, keyPrepend: String ): Promise { - const api = await ApiSingleton.getInstance(); let keys = []; await cryptoWaitReady(); for (let i = 0; i < numberOfKeys; i++) { @@ -148,22 +150,13 @@ export async function generateKeys( } ) ); - let accountRawNonce = (await api.query.system.account(keys[i].address)) - .nonce; - let account_nonce = new BN(accountRawNonce.toString()); - nonces.set(keys[i].address, account_nonce); } return keys; } export async function generateEntityFromUri(uri: string): Promise { - const api = await ApiSingleton.getInstance(); await cryptoWaitReady(); - let entity = new Keyring({ type: "sr25519" }).addFromUri(uri); - let accountRawNonce = (await api.query.system.account(entity.address)).nonce; - let account_nonce = new BN(accountRawNonce.toString()); - nonces.set(entity.address, account_nonce); - return entity; + return new Keyring({ type: "sr25519" }).addFromUri(uri); } const NULL_12 = "\0".repeat(12); export function padTicker(ticker: string) { @@ -241,27 +234,31 @@ export function tickerToDid(ticker: Ticker) { export async function generateStashKeys( accounts: string[] ): Promise { - const api = await ApiSingleton.getInstance(); let keys = []; await cryptoWaitReady(); - for (let i = 0; i < accounts.length; i++) { + for (let account of accounts) { keys.push( - new Keyring({ type: "sr25519" }).addFromUri(`//${accounts[i]}//stash`, { - name: `${accounts[i] + "_stash"}`, + new Keyring({ type: "sr25519" }).addFromUri(`//${account}//stash`, { + name: `${account + "_stash"}`, }) ); - let accountRawNonce = (await api.query.system.account(keys[i].address)) - .nonce; - let account_nonce = new BN(accountRawNonce.toString()); - nonces.set(keys[i].address, account_nonce); } return keys; } +export async function sendTx( + signer: KeyringPair, + tx: SubmittableExtrinsic<"promise"> +) { + const nonceObj = { nonce: await getNonce(signer) }; + const result = await sendTransaction(signer, tx, nonceObj); + return result; +} + export function sendTransaction( signer: KeyringPair, transaction: SubmittableExtrinsic<"promise">, - nonceObj: NonceObject + nonceObj: any ) { return new Promise((resolve, reject) => { const gettingUnsub = transaction.signAndSend( @@ -336,16 +333,6 @@ export async function signatory(signer: KeyringPair, entity: KeyringPair) { return signatoryObj; } -export async function sendTx( - signer: KeyringPair, - tx: SubmittableExtrinsic<"promise"> -) { - let nonceObj = { nonce: nonces.get(signer.address) }; - nonces.set(signer.address, nonces.get(signer.address).addn(1)); - const result = await sendTransaction(signer, tx, nonceObj); - return result; -} - export function getDefaultPortfolio(did: IdentityId) { return { did: did, kind: "Default" }; } diff --git a/scripts/cli/src/util/sqlite3.ts b/scripts/cli/src/util/sqlite3.ts new file mode 100644 index 0000000000..cfeaeb3a90 --- /dev/null +++ b/scripts/cli/src/util/sqlite3.ts @@ -0,0 +1,38 @@ +import sql from "sqlite3"; +import type { KeyringPair } from "@polkadot/keyring/types"; + +const sql3 = sql.verbose(); +// Setting up a database for storing data. +const db = new sql3.Database("database.db"); + +export function createTable() { + db.run( + "CREATE TABLE IF NOT EXISTS accounts ( address TEXT PRIMARY KEY, nonce INT DEFAULT 0 )" + ); +} + +export async function getNonce(signer: KeyringPair) { + return new Promise((resolve, reject) => { + db.run( + "INSERT INTO accounts(address) VALUES($address) ON CONFLICT(address) DO UPDATE SET nonce=nonce+1", + { $address: signer.address }, + (runErr) => { + if (runErr) { + reject("Couldn't get next nonce"); + } else { + db.get( + "SELECT address, nonce FROM accounts WHERE address = $address", + { $address: signer.address }, + (getErr, row) => { + if (getErr) { + reject(getErr); + } else { + resolve(row.nonce); + } + } + ); + } + } + ); + }); +} diff --git a/scripts/cli/tsconfig.json b/scripts/cli/tsconfig.json index e99f24c832..1980b64508 100644 --- a/scripts/cli/tsconfig.json +++ b/scripts/cli/tsconfig.json @@ -18,6 +18,6 @@ "resolveJsonModule": true, "skipLibCheck": true, }, - "include": ["src/tests/*", "src/util/*", "src/types.ts"], - "exclude": ["node_modules", "dist"] + "include": ["src/tests/*", "src/util/*", "src/types.ts", "src/__tests__"], + "exclude": ["node_modules"] } From 8f1363c19b0934f16849ece1f0c8df46c4b4d9ae Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Wed, 5 Jan 2022 23:30:18 +0800 Subject: [PATCH 08/53] Fix permissions complexity limits (#1189) * Add permissions complexity limits. * Update permissions limits in benchmark/tests. * Bump spec_version to be one more then mainnet. * Fix typo in MultiSig benchmarks. * Cargo fmt * Comment cleanup and add fold method to SubsetRestriction. * Add docs. A little dedup. * Add minimum complexity cost for names. Large number of pallet/extrinsic permissions cause the most cpu load from many memory allocation calls. Add a minimum complexity cost (minimum name length) to penalize short names. * Cargo fmt --- pallets/base/src/lib.rs | 11 ++++ pallets/external-agents/src/benchmarking.rs | 2 +- pallets/identity/src/keys.rs | 59 +++++++++++++++------ pallets/multisig/src/benchmarking.rs | 16 +++--- pallets/multisig/src/lib.rs | 5 +- pallets/runtime/ci/src/runtime.rs | 2 +- pallets/runtime/develop/src/runtime.rs | 2 +- pallets/runtime/mainnet/src/runtime.rs | 2 +- pallets/runtime/testnet/src/runtime.rs | 2 +- pallets/runtime/tests/src/identity_test.rs | 2 +- primitives/src/identity.rs | 7 +++ primitives/src/secondary_key.rs | 43 +++++++++++++++ primitives/src/subset.rs | 8 +++ 13 files changed, 130 insertions(+), 31 deletions(-) diff --git a/pallets/base/src/lib.rs b/pallets/base/src/lib.rs index 83ac4b1638..41c431953b 100644 --- a/pallets/base/src/lib.rs +++ b/pallets/base/src/lib.rs @@ -71,6 +71,17 @@ pub fn ensure_string_limited(s: &[u8]) -> DispatchResult { ensure_length_ok::(s.len()) } +/// Ensure that the `len` provided is within the custom length limit. +pub fn ensure_custom_length_ok(len: usize, limit: usize) -> DispatchResult { + ensure!(len <= limit, Error::::TooLong); + Ok(()) +} + +/// Ensure that `s.len()` is within the custom length limit. +pub fn ensure_custom_string_limited(s: &[u8], limit: usize) -> DispatchResult { + ensure_custom_length_ok::(s.len(), limit) +} + /// Ensure that given `Some(s)`, `s.len()` is within the generic length limit. pub fn ensure_opt_string_limited(s: Option<&[u8]>) -> DispatchResult { match s { diff --git a/pallets/external-agents/src/benchmarking.rs b/pallets/external-agents/src/benchmarking.rs index 685108515c..b38cf72995 100644 --- a/pallets/external-agents/src/benchmarking.rs +++ b/pallets/external-agents/src/benchmarking.rs @@ -22,7 +22,7 @@ use polymesh_primitives::{AuthorizationData, ExtrinsicPermissions, PalletPermiss use sp_std::prelude::*; pub(crate) const SEED: u32 = 0; -const MAX_PALLETS: u32 = 1000; +const MAX_PALLETS: u32 = 19; fn setup>>() -> (User, Ticker) { let owner = user("owner", SEED); diff --git a/pallets/identity/src/keys.rs b/pallets/identity/src/keys.rs index 6d0572cf6f..b3d47b37e4 100644 --- a/pallets/identity/src/keys.rs +++ b/pallets/identity/src/keys.rs @@ -24,7 +24,7 @@ use frame_support::dispatch::DispatchResult; use frame_support::traits::{Currency as _, Get as _}; use frame_support::{debug, ensure, StorageMap as _, StorageValue as _}; use frame_system::ensure_signed; -use pallet_base::{ensure_length_ok, ensure_string_limited}; +use pallet_base::{ensure_custom_length_ok, ensure_custom_string_limited}; use polymesh_common_utilities::constants::did::USER; use polymesh_common_utilities::group::GroupTrait; use polymesh_common_utilities::identity::{SecondaryKeyWithAuth, TargetIdAuthorization}; @@ -44,6 +44,16 @@ use sp_runtime::traits::{AccountIdConversion as _, IdentifyAccount, Verify, Zero use sp_runtime::{AnySignature, DispatchError}; use sp_std::{vec, vec::Vec}; +const MAX_KEYS: usize = 200; +const MAX_ASSETS: usize = 200; +const MAX_PORTFOLIOS: usize = 200; +const MAX_PALLETS: usize = 50; +const MAX_EXTRINSICS: usize = 40; +const MAX_NAME_LEN: usize = 50; + +// Limit the maximum memory/cpu cost of an identities `DidRecord`. +const MAX_DIDRECORD_SIZE: usize = 1_000_000; + type System = frame_system::Module; impl Module { @@ -411,7 +421,10 @@ impl Module { let mut record = >::get(did); // Ensure we won't have too many keys. - ensure_length_ok::(record.secondary_keys.len().saturating_add(keys.len()))?; + let cost = keys.iter().fold(0usize, |cost, auth| { + cost.saturating_add(auth.secondary_key.permissions.complexity()) + }); + Self::ensure_secondary_keys_limited(&record, keys.len(), cost)?; // 1. Verify signatures. for si_with_auth in keys.iter() { @@ -426,10 +439,7 @@ impl Module { .ok_or(Error::::InvalidAccountKey)?; // 1.1. Constraint 1-to-1 account to DID. - ensure!( - Self::can_link_account_key_to_did(account_id), - Error::::AlreadyLinked - ); + Self::ensure_key_did_unlinked(account_id)?; // 1.2. Verify the signature. let signature = AnySignature::from(Signature::from_h512(si_with_auth.auth_signature)); @@ -475,8 +485,9 @@ impl Module { // Not really needed unless we allow identities to be deleted. Self::ensure_id_record_exists(target_did)?; - // Link the secondary key. - Self::ensure_secondary_key_can_be_added(&target_did, &key)?; + // Check that the secondary key can be linked. + Self::ensure_secondary_key_can_be_added(&target_did, &key, &permissions)?; + // Check that the new Identity has a valid CDD claim. ensure!(Self::has_valid_cdd(target_did), Error::::TargetHasNoCdd); // Charge the protocol fee after all checks. @@ -491,17 +502,35 @@ impl Module { }) } + /// Ensure that the identity can add a new secondary key + /// without going over it's complexity budget. pub fn ensure_secondary_key_can_be_added( did: &IdentityId, key: &T::AccountId, + perms: &Permissions, ) -> DispatchResult { let record = >::get(did); - ensure_length_ok::(record.secondary_keys.len().saturating_add(1))?; + Self::ensure_secondary_keys_limited(&record, 1, perms.complexity())?; Self::ensure_key_did_unlinked(&key)?; Ok(()) } + /// Ensure that multiple secondary keys with `cost` complexity can be + /// added to the identitie's `DidRecords` without going over the complexity budget. + /// + /// `keys` - The number of secondary keys to add. + /// `cost` - The complexity cost for the new keys permissions. + pub fn ensure_secondary_keys_limited( + record: &DidRecord, + keys: usize, + cost: usize, + ) -> DispatchResult { + ensure_custom_length_ok::(record.secondary_keys.len().saturating_add(keys), MAX_KEYS)?; + ensure_custom_length_ok::(record.complexity().saturating_add(cost), MAX_DIDRECORD_SIZE)?; + Ok(()) + } + /// Joins a DID as an account based secondary key. pub fn unsafe_join_identity( target_did: IdentityId, @@ -734,21 +763,21 @@ impl Module { /// Ensures length limits are enforced in `perms`. crate fn ensure_perms_length_limited(perms: &Permissions) -> DispatchResult { - ensure_length_ok::(perms.asset.complexity())?; - ensure_length_ok::(perms.portfolio.complexity())?; + ensure_custom_length_ok::(perms.asset.complexity(), MAX_ASSETS)?; + ensure_custom_length_ok::(perms.portfolio.complexity(), MAX_PORTFOLIOS)?; Self::ensure_extrinsic_perms_length_limited(&perms.extrinsic) } /// Ensures length limits are enforced in `perms`. pub fn ensure_extrinsic_perms_length_limited(perms: &ExtrinsicPermissions) -> DispatchResult { if let Some(set) = perms.inner() { - ensure_length_ok::(set.len())?; + ensure_custom_length_ok::(set.len(), MAX_PALLETS)?; for elem in set { - ensure_string_limited::(&elem.pallet_name)?; + ensure_custom_string_limited::(&elem.pallet_name, MAX_NAME_LEN)?; if let Some(set) = elem.dispatchable_names.inner() { - ensure_length_ok::(set.len())?; + ensure_custom_length_ok::(set.len(), MAX_EXTRINSICS)?; for elem in set { - ensure_string_limited::(elem)?; + ensure_custom_string_limited::(elem, MAX_NAME_LEN)?; } } } diff --git a/pallets/multisig/src/benchmarking.rs b/pallets/multisig/src/benchmarking.rs index 196d600ef9..1eff32a1c6 100644 --- a/pallets/multisig/src/benchmarking.rs +++ b/pallets/multisig/src/benchmarking.rs @@ -74,7 +74,7 @@ pub type MultisigSetupResult = ( fn generate_multisig_for_alice_wo_accepting>>( total_signers: u32, - singers_required: u32, + signers_required: u32, ) -> Result, DispatchError> { let alice = >::default().generate_did().build("alice"); let mut signers = vec![Signatory::from(alice.did())]; @@ -82,7 +82,7 @@ fn generate_multisig_for_alice_wo_accepting>>( total_signers: u32, - singers_required: u32, + signers_required: u32, ) -> Result, DispatchError> { let (alice, multisig, signers, signer_origin, multisig_origin) = - generate_multisig_for_alice_wo_accepting::(total_signers, singers_required).unwrap(); + generate_multisig_for_alice_wo_accepting::(total_signers, signers_required).unwrap(); for signer in &signers { let auth_id = get_last_auth_id::(signer); >::unsafe_accept_multisig_signer(signer.clone(), auth_id).unwrap(); @@ -129,10 +129,10 @@ pub type ProposalSetupResult = ( fn generate_multisig_and_proposal_for_alice>>( total_signers: u32, - singers_required: u32, + signers_required: u32, ) -> Result, DispatchError> { let (alice, multisig, signers, signer_origin, _) = - generate_multisig_for_alice::(total_signers, singers_required).unwrap(); + generate_multisig_for_alice::(total_signers, signers_required).unwrap(); let proposal_id = >::ms_tx_done(multisig.clone()); let proposal = Box::new(frame_system::Call::::remark(vec![]).into()); Ok(( @@ -148,11 +148,11 @@ fn generate_multisig_and_proposal_for_alice>>( total_signers: u32, - singers_required: u32, + signers_required: u32, create_as_key: bool, ) -> Result, DispatchError> { let (alice, multisig, signers, signer_origin, proposal_id, proposal, ephemeral_multisig) = - generate_multisig_and_proposal_for_alice::(total_signers, singers_required).unwrap(); + generate_multisig_and_proposal_for_alice::(total_signers, signers_required).unwrap(); if create_as_key { >::create_proposal_as_key( signer_origin.clone().into(), diff --git a/pallets/multisig/src/lib.rs b/pallets/multisig/src/lib.rs index 38ca9ee847..d898eefc4a 100644 --- a/pallets/multisig/src/lib.rs +++ b/pallets/multisig/src/lib.rs @@ -538,10 +538,11 @@ decl_module! { Self::ensure_ms(&multisig)?; Self::verify_sender_is_creator(did, &multisig)?; - >::ensure_secondary_key_can_be_added(&did, &multisig)?; + let perms = Permissions::empty(); + >::ensure_secondary_key_can_be_added(&did, &multisig, &perms)?; // Add the multisig as a secondary key with no permissions. - >::unsafe_join_identity(did, Permissions::empty(), multisig); + >::unsafe_join_identity(did, perms, multisig); } /// Adds a multisig as the primary key of the current did if the current DID is the creator diff --git a/pallets/runtime/ci/src/runtime.rs b/pallets/runtime/ci/src/runtime.rs index 04787c4c28..7a804144eb 100644 --- a/pallets/runtime/ci/src/runtime.rs +++ b/pallets/runtime/ci/src/runtime.rs @@ -61,7 +61,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to 0. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 3001, + spec_version: 3002, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 2, diff --git a/pallets/runtime/develop/src/runtime.rs b/pallets/runtime/develop/src/runtime.rs index 39787a6248..841a8681b8 100644 --- a/pallets/runtime/develop/src/runtime.rs +++ b/pallets/runtime/develop/src/runtime.rs @@ -59,7 +59,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to 0. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 3001, + spec_version: 3002, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 2, diff --git a/pallets/runtime/mainnet/src/runtime.rs b/pallets/runtime/mainnet/src/runtime.rs index 9f613f9246..f17a48b9bc 100644 --- a/pallets/runtime/mainnet/src/runtime.rs +++ b/pallets/runtime/mainnet/src/runtime.rs @@ -57,7 +57,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to 0. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 3001, + spec_version: 3002, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 2, diff --git a/pallets/runtime/testnet/src/runtime.rs b/pallets/runtime/testnet/src/runtime.rs index e99b6bd4a4..3da03e36f4 100644 --- a/pallets/runtime/testnet/src/runtime.rs +++ b/pallets/runtime/testnet/src/runtime.rs @@ -61,7 +61,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to 0. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 3001, + spec_version: 3002, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 2, diff --git a/pallets/runtime/tests/src/identity_test.rs b/pallets/runtime/tests/src/identity_test.rs index b8a36e2e2f..4a607e3c75 100644 --- a/pallets/runtime/tests/src/identity_test.rs +++ b/pallets/runtime/tests/src/identity_test.rs @@ -290,7 +290,7 @@ fn do_add_permissions_to_multiple_tokens() { add_secondary_key(alice.did, bob.acc()); // Create some tokens. - let max_tokens = 30; + let max_tokens = 20; let tokens: Vec = (0..max_tokens) .map(|i| { let name = format!("TOKEN_{}", i); diff --git a/primitives/src/identity.rs b/primitives/src/identity.rs index 4fcd7caf64..bd1d097813 100644 --- a/primitives/src/identity.rs +++ b/primitives/src/identity.rs @@ -69,6 +69,13 @@ where }); self } + + /// Returns the complexity of the identity's permissions. + pub fn complexity(&self) -> usize { + self.secondary_keys + .iter() + .fold(0, |cost, key| cost.saturating_add(key.complexity())) + } } impl From for Identity diff --git a/primitives/src/secondary_key.rs b/primitives/src/secondary_key.rs index 649d2fe278..70db0db811 100644 --- a/primitives/src/secondary_key.rs +++ b/primitives/src/secondary_key.rs @@ -21,8 +21,21 @@ use sp_std::{ cmp::{Ord, Ordering, PartialOrd}, collections::btree_set::BTreeSet, iter, + mem::size_of, }; +// We need to set a minimum complexity for pallet/dispatchable names +// to limit the total number of memory allocations. Since each name +// requires an allocation. +// +// The average length of pallet/dispatchable names is 16. So this +// minimum complexity only penalizes short names. +const MIN_NAME_COMPLEXITY: usize = 10; +fn name_complexity(name: &[u8]) -> usize { + // If the name length is lower then the minimum, then return the minimum. + usize::max(name.len(), MIN_NAME_COMPLEXITY) +} + /// Asset permissions. pub type AssetPermissions = SubsetRestriction; @@ -67,6 +80,14 @@ impl PalletPermissions { dispatchable_names: SubsetRestriction::Whole, } } + + /// Returns the complexity of the pallet permissions. + pub fn complexity(&self) -> usize { + self.dispatchable_names + .fold(name_complexity(&self.pallet_name), |cost, dispatch_name| { + cost.saturating_add(name_complexity(&dispatch_name)) + }) + } } /// Extrinsic permissions. @@ -142,6 +163,23 @@ impl Permissions { iter::once(pallet_permissions).collect(), )); } + + /// Returns the complexity of the permissions. + pub fn complexity(&self) -> usize { + // Calculate the pallet/extrinsic permissions complexity cost. + let cost = self.extrinsic.fold(0usize, |cost, pallet| { + cost.saturating_add(pallet.complexity()) + }); + + // Asset permissions complexity cost. + cost.saturating_add(self.asset.complexity().saturating_mul(size_of::())) + // Portfolio permissions complexity cost. + .saturating_add( + self.portfolio + .complexity() + .saturating_mul(size_of::()), + ) + } } /// It supports different elements as a signer. @@ -293,6 +331,11 @@ where pub fn has_portfolio_permission(&self, it: impl IntoIterator) -> bool { self.permissions.portfolio.ge(&SubsetRestriction::elems(it)) } + + /// Returns the complexity of the secondary key's permissions. + pub fn complexity(&self) -> usize { + self.permissions.complexity() + } } impl From for SecondaryKey diff --git a/primitives/src/subset.rs b/primitives/src/subset.rs index f3722bd366..3aa183b46e 100644 --- a/primitives/src/subset.rs +++ b/primitives/src/subset.rs @@ -173,6 +173,14 @@ impl SubsetRestriction { pub fn is_unrestricted(&self) -> bool { matches!(self, Self::Whole) } + + /// Folds every element in the inner sets or return `init` for `Whole`. + pub fn fold(&self, init: B, f: impl FnMut(B, &A) -> B) -> B { + match self.inner() { + Some(set) => set.iter().fold(init, f), + None => init, + } + } } impl SubsetRestriction { From 90418820745600e4dfac5397a023ab5f8c1b6f98 Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Tue, 11 Jan 2022 18:59:13 +0800 Subject: [PATCH 09/53] Include permmisions complexity in extrinsic weight. (#1192) --- pallets/common/src/traits/identity.rs | 48 ++++++++++++++++++++- pallets/identity/src/benchmarking.rs | 58 +++++++++++++++++++++++++- pallets/identity/src/lib.rs | 8 ++-- pallets/weights/src/pallet_identity.rs | 11 +++++ primitives/src/secondary_key.rs | 57 +++++++++++++++++++++++++ 5 files changed, 174 insertions(+), 8 deletions(-) diff --git a/pallets/common/src/traits/identity.rs b/pallets/common/src/traits/identity.rs index 4d1553d371..b31382dd59 100644 --- a/pallets/common/src/traits/identity.rs +++ b/pallets/common/src/traits/identity.rs @@ -33,8 +33,8 @@ use frame_support::{ Parameter, }; use polymesh_primitives::{ - secondary_key::api::SecondaryKey, AuthorizationData, IdentityClaim, IdentityId, InvestorUid, - Permissions, Signatory, Ticker, + secondary_key::api::{LegacyPermissions, SecondaryKey}, + AuthorizationData, IdentityClaim, IdentityId, InvestorUid, Permissions, Signatory, Ticker, }; use sp_core::H512; use sp_runtime::traits::{Dispatchable, IdentifyAccount, Member, Verify}; @@ -87,6 +87,12 @@ pub trait WeightInfo { fn add_claim() -> Weight; fn revoke_claim() -> Weight; fn set_permission_to_signer() -> Weight; + /// Complexity Parameters: + /// `a` = Number of (A)ssets + /// `p` = Number of (P)ortfolios + /// `l` = Number of pa(L)lets + /// `e` = Number of (E)xtrinsics + fn permissions_cost(a: u32, p: u32, l: u32, e: u32) -> Weight; fn freeze_secondary_keys() -> Weight; fn unfreeze_secondary_keys() -> Weight; fn add_authorization() -> Weight; @@ -95,6 +101,44 @@ pub trait WeightInfo { fn add_investor_uniqueness_claim() -> Weight; fn add_investor_uniqueness_claim_v2() -> Weight; fn revoke_claim_by_index() -> Weight; + + // Helpers for extrinsics with Permissions. + fn add_secondary_keys_full( + additional_keys: &[SecondaryKeyWithAuth], + ) -> Weight { + let perm_cost = additional_keys.iter().fold(0u64, |cost, key_with_auth| { + let (assets, portfolios, pallets, extrinsics) = + key_with_auth.secondary_key.permissions.get_weights(); + let perm_cost = Self::permissions_cost(assets, portfolios, pallets, extrinsics); + cost.saturating_add(perm_cost) + }); + perm_cost.saturating_add(Self::add_secondary_keys_with_authorization( + additional_keys.len() as u32, + )) + } + + fn add_authorization_full(data: &AuthorizationData) -> Weight { + let perm_cost = match data { + AuthorizationData::JoinIdentity(perms) => { + let (assets, portfolios, pallets, extrinsics) = perms.get_weights(); + Self::permissions_cost(assets, portfolios, pallets, extrinsics) + } + _ => 0, + }; + + perm_cost.saturating_add(Self::add_authorization()) + } + + fn set_permission_to_signer_full(perms: &Permissions) -> Weight { + let (assets, portfolios, pallets, extrinsics) = perms.get_weights(); + Self::permissions_cost(assets, portfolios, pallets, extrinsics) + .saturating_add(Self::set_permission_to_signer()) + } + fn legacy_set_permission_to_signer_full(perms: &LegacyPermissions) -> Weight { + let (assets, portfolios, pallets, extrinsics) = perms.get_weights(); + Self::permissions_cost(assets, portfolios, pallets, extrinsics) + .saturating_add(Self::set_permission_to_signer()) + } } /// The module's configuration trait. diff --git a/pallets/identity/src/benchmarking.rs b/pallets/identity/src/benchmarking.rs index b71b2528f0..8c8097973e 100644 --- a/pallets/identity/src/benchmarking.rs +++ b/pallets/identity/src/benchmarking.rs @@ -25,8 +25,10 @@ use polymesh_common_utilities::{ }; use polymesh_primitives::{ investor_zkproof_data::{v1, v2}, - AuthorizationData, Claim, CountryCode, IdentityId, InvestorUid, Permissions, Scope, ScopeId, - SecondaryKey, Signatory, + secondary_key::DispatchableNames, + AssetPermissions, AuthorizationData, Claim, CountryCode, DispatchableName, + ExtrinsicPermissions, IdentityId, InvestorUid, PalletName, PalletPermissions, Permissions, + PortfolioId, PortfolioNumber, PortfolioPermissions, Scope, ScopeId, SecondaryKey, Signatory, }; use sp_core::H512; use sp_std::prelude::*; @@ -132,11 +134,19 @@ pub fn generate_secondary_keys(n: usize) -> Vec::unsafe_join_identity(target.did(), Permissions::empty(), key.account()); }: _(target.origin, signatory, Permissions::default().into()) + permissions_cost { + // Number of assets/portfolios/pallets/extrinsics. + let a in 0 .. MAX_ASSETS; // a=(A)ssets + let p in 0 .. MAX_PORTFOLIOS; // p=(P)ortfolios + let l in 0 .. MAX_PALLETS; // l=pa(L)lets + let e in 0 .. MAX_EXTRINSICS; // e=(E)xtrinsics + + let asset = AssetPermissions::elems( + (0..a as u64).map(Ticker::generate_into) + ); + let portfolio = PortfolioPermissions::elems( + (0..p as u128).map(|did| { + PortfolioId::user_portfolio(did.into(), PortfolioNumber(0)) + }) + ); + let dispatchable_names = DispatchableNames::elems( + (0..e as u64).map(|e| { + DispatchableName(Ticker::generate(e)) + }) + ); + let extrinsic = ExtrinsicPermissions::elems( + (0..l as u64).map(|p| { + PalletPermissions { + pallet_name: PalletName(Ticker::generate(p)), + dispatchable_names: dispatchable_names.clone(), + } + }) + ); + + let permissions = Permissions { + asset, + extrinsic, + portfolio + }; + + let orig = permissions.clone(); + }: { + let enc = permissions.encode(); + // Panic the benchmarks if decoding fails. + let perm = Permissions::decode(&mut enc.as_slice()) + .expect("Permissions should decode correctly."); + assert_eq!(orig, perm); + } + freeze_secondary_keys { let caller = user::("caller", 0); }: _(caller.origin) diff --git a/pallets/identity/src/lib.rs b/pallets/identity/src/lib.rs index be04ddf383..06d01cd2c1 100644 --- a/pallets/identity/src/lib.rs +++ b/pallets/identity/src/lib.rs @@ -397,7 +397,7 @@ decl_module! { /// Sets permissions for an specific `target_key` key. /// /// Only the primary key of an identity is able to set secondary key permissions. - #[weight = ::WeightInfo::set_permission_to_signer()] + #[weight = ::WeightInfo::set_permission_to_signer_full(&perms)] pub fn set_permission_to_signer(origin, signer: Signatory, perms: Permissions) { Self::base_set_permission_to_signer(origin, signer, perms)?; } @@ -405,7 +405,7 @@ decl_module! { /// This function is a workaround for https://github.com/polkadot-js/apps/issues/3632 /// It sets permissions for an specific `target_key` key. /// Only the primary key of an identity is able to set secondary key permissions. - #[weight = ::WeightInfo::set_permission_to_signer()] + #[weight = ::WeightInfo::legacy_set_permission_to_signer_full(&permissions)] pub fn legacy_set_permission_to_signer( origin, signer: Signatory, @@ -431,7 +431,7 @@ decl_module! { // Manage generic authorizations /// Adds an authorization. - #[weight = ::WeightInfo::add_authorization()] + #[weight = ::WeightInfo::add_authorization_full::(&data)] pub fn add_authorization( origin, target: Signatory, @@ -465,7 +465,7 @@ decl_module! { /// Failure /// - It can only called by primary key owner. /// - Keys should be able to linked to any identity. - #[weight = ::WeightInfo::add_secondary_keys_with_authorization(additional_keys.len() as u32)] + #[weight = ::WeightInfo::add_secondary_keys_full::(&additional_keys)] pub fn add_secondary_keys_with_authorization( origin, additional_keys: Vec>, diff --git a/pallets/weights/src/pallet_identity.rs b/pallets/weights/src/pallet_identity.rs index 4aa155602c..113491cee1 100644 --- a/pallets/weights/src/pallet_identity.rs +++ b/pallets/weights/src/pallet_identity.rs @@ -118,6 +118,17 @@ impl pallet_identity::WeightInfo for WeightInfo { .saturating_add(DbWeight::get().reads(4 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } + fn permissions_cost(a: u32, p: u32, l: u32, e: u32) -> Weight { + (0 as Weight) + // Standard Error: 200_000 + .saturating_add((1_254_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 200_000 + .saturating_add((1_027_000 as Weight).saturating_mul(p as Weight)) + // Standard Error: 200_000 + .saturating_add((75_415_000 as Weight).saturating_mul(l as Weight)) + // Standard Error: 200_000 + .saturating_add((72_009_000 as Weight).saturating_mul(e as Weight)) + } fn freeze_secondary_keys() -> Weight { (56_201_000 as Weight) .saturating_add(DbWeight::get().reads(4 as Weight)) diff --git a/primitives/src/secondary_key.rs b/primitives/src/secondary_key.rs index 70db0db811..0c58c7d739 100644 --- a/primitives/src/secondary_key.rs +++ b/primitives/src/secondary_key.rs @@ -20,6 +20,7 @@ use sp_runtime::{Deserialize, Serialize}; use sp_std::{ cmp::{Ord, Ordering, PartialOrd}, collections::btree_set::BTreeSet, + convert::TryInto, iter, mem::size_of, }; @@ -88,6 +89,11 @@ impl PalletPermissions { cost.saturating_add(name_complexity(&dispatch_name)) }) } + + /// Return the number of dispatchable names. + pub fn dispatchables_len(&self) -> usize { + self.dispatchable_names.complexity() + } } /// Extrinsic permissions. @@ -180,6 +186,28 @@ impl Permissions { .saturating_mul(size_of::()), ) } + + /// Return number of assets, portfolios, pallets, and extrinsics. + /// + /// This is used for weight calculation. + pub fn get_weights(&self) -> (u32, u32, u32, u32) { + // Count the number of assets. + let assets = self.asset.complexity().try_into().unwrap_or(u32::MAX); + // Count the number of portfolios. + let portfolios = self.portfolio.complexity().try_into().unwrap_or(u32::MAX); + // Count the number of pallets. + let pallets = self.extrinsic.complexity().try_into().unwrap_or(u32::MAX); + // Count the total number of extrinsics. + let extrinsics = self + .extrinsic + .fold(0usize, |count, pallet| { + count.saturating_add(pallet.dispatchables_len()) + }) + .try_into() + .unwrap_or(u32::MAX); + + (assets, portfolios, pallets, extrinsics) + } } /// It supports different elements as a signer. @@ -373,6 +401,7 @@ pub mod api { use codec::{Decode, Encode}; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; + use sp_std::convert::TryInto; use sp_std::vec::Vec; /// A permission to call functions within a given pallet. @@ -419,6 +448,34 @@ pub mod api { portfolio: SubsetRestriction::empty(), } } + + /// Return number of assets, portfolios, pallets, and extrinsics. + /// + /// This is used for weight calculation. + pub fn get_weights(&self) -> (u32, u32, u32, u32) { + // Count the number of assets. + let assets = self.asset.complexity().try_into().unwrap_or(u32::MAX); + // Count the number of portfolios. + let portfolios = self.portfolio.complexity().try_into().unwrap_or(u32::MAX); + // Count the number of pallets and total number of extrinsics. + let (pallets, extrinsics) = match &self.extrinsic.0 { + Some(pallets) => { + let num_pallets = pallets.len().try_into().unwrap_or(u32::MAX); + // Count all extrinsics. + let extrinsics = pallets + .iter() + .fold(0usize, |count, pallet| { + count.saturating_add(pallet.dispatchable_names.len()) + }) + .try_into() + .unwrap_or(u32::MAX); + (num_pallets, extrinsics) + } + None => (0, 0), + }; + + (assets, portfolios, pallets, extrinsics) + } } /// The same secondary key object without the extra trait constraints. From ae0280327e9e02eb06c374af9b65ea234cab212c Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Wed, 12 Jan 2022 00:02:20 +0800 Subject: [PATCH 10/53] Permissions benchmarks cleanup (#1193) * Some comments and cleanup. * Add docs to helper functions. * Add more comments to benchmark. --- pallets/common/src/traits/identity.rs | 14 ++++++++----- pallets/identity/src/benchmarking.rs | 29 ++++++++++++++++++++------- primitives/src/secondary_key.rs | 4 ++-- 3 files changed, 33 insertions(+), 14 deletions(-) diff --git a/pallets/common/src/traits/identity.rs b/pallets/common/src/traits/identity.rs index b31382dd59..d6f609b4f9 100644 --- a/pallets/common/src/traits/identity.rs +++ b/pallets/common/src/traits/identity.rs @@ -102,13 +102,13 @@ pub trait WeightInfo { fn add_investor_uniqueness_claim_v2() -> Weight; fn revoke_claim_by_index() -> Weight; - // Helpers for extrinsics with Permissions. + /// Add complexity cost of Permissions to `add_secondary_keys_with_authorization` extrinsic. fn add_secondary_keys_full( additional_keys: &[SecondaryKeyWithAuth], ) -> Weight { let perm_cost = additional_keys.iter().fold(0u64, |cost, key_with_auth| { let (assets, portfolios, pallets, extrinsics) = - key_with_auth.secondary_key.permissions.get_weights(); + key_with_auth.secondary_key.permissions.counts(); let perm_cost = Self::permissions_cost(assets, portfolios, pallets, extrinsics); cost.saturating_add(perm_cost) }); @@ -117,10 +117,11 @@ pub trait WeightInfo { )) } + /// Add complexity cost of Permissions to `add_authorization` extrinsic. fn add_authorization_full(data: &AuthorizationData) -> Weight { let perm_cost = match data { AuthorizationData::JoinIdentity(perms) => { - let (assets, portfolios, pallets, extrinsics) = perms.get_weights(); + let (assets, portfolios, pallets, extrinsics) = perms.counts(); Self::permissions_cost(assets, portfolios, pallets, extrinsics) } _ => 0, @@ -129,13 +130,16 @@ pub trait WeightInfo { perm_cost.saturating_add(Self::add_authorization()) } + /// Add complexity cost of Permissions to `set_permission_to_signer` extrinsic. fn set_permission_to_signer_full(perms: &Permissions) -> Weight { - let (assets, portfolios, pallets, extrinsics) = perms.get_weights(); + let (assets, portfolios, pallets, extrinsics) = perms.counts(); Self::permissions_cost(assets, portfolios, pallets, extrinsics) .saturating_add(Self::set_permission_to_signer()) } + + /// Add complexity cost of Permissions to `legacy_set_permission_to_signer` extrinsic. fn legacy_set_permission_to_signer_full(perms: &LegacyPermissions) -> Weight { - let (assets, portfolios, pallets, extrinsics) = perms.get_weights(); + let (assets, portfolios, pallets, extrinsics) = perms.counts(); Self::permissions_cost(assets, portfolios, pallets, extrinsics) .saturating_add(Self::set_permission_to_signer()) } diff --git a/pallets/identity/src/benchmarking.rs b/pallets/identity/src/benchmarking.rs index 8c8097973e..7092c22515 100644 --- a/pallets/identity/src/benchmarking.rs +++ b/pallets/identity/src/benchmarking.rs @@ -305,12 +305,22 @@ benchmarks! { Module::::unsafe_join_identity(target.did(), Permissions::empty(), key.account()); }: _(target.origin, signatory, Permissions::default().into()) + // Benchmark the memory/cpu complexity of Permissions. permissions_cost { // Number of assets/portfolios/pallets/extrinsics. let a in 0 .. MAX_ASSETS; // a=(A)ssets let p in 0 .. MAX_PORTFOLIOS; // p=(P)ortfolios let l in 0 .. MAX_PALLETS; // l=pa(L)lets let e in 0 .. MAX_EXTRINSICS; // e=(E)xtrinsics + // When the benchmarks run for parameter `e` (number of extrinsics) + // it will use `l == MAX_PALLETS`. `e` will be the number of + // extrinsics per pallet. So the total number of extrinsics in + // the `Permissions` will be `MAX_PALLETS * e`. + // + // When calculating the weight of a `Permissions` value in a + // transaction, we use the total number of extrinsics in the + // permissions. This is to make sure that the worst-case cost + // is covered. let asset = AssetPermissions::elems( (0..a as u64).map(Ticker::generate_into) @@ -339,14 +349,19 @@ benchmarks! { extrinsic, portfolio }; - - let orig = permissions.clone(); }: { - let enc = permissions.encode(); - // Panic the benchmarks if decoding fails. - let perm = Permissions::decode(&mut enc.as_slice()) - .expect("Permissions should decode correctly."); - assert_eq!(orig, perm); + // For this benchmark we need to do some "work" based on + // how complex the permissions object is. + + // 1. Encode the Permissions value. + let encoded = permissions.encode(); + // 2. Decode the Permissions value. + let decoded = Permissions::decode(&mut encoded.as_slice()) + .expect("This shouldn't fail since we just encoded a Permissions value."); + // 3. Compare the original and decoded values. This will touch the full value. + if !permissions.eq(&decoded) { + panic!("This shouldn't fail."); + } } freeze_secondary_keys { diff --git a/primitives/src/secondary_key.rs b/primitives/src/secondary_key.rs index 0c58c7d739..4184264c19 100644 --- a/primitives/src/secondary_key.rs +++ b/primitives/src/secondary_key.rs @@ -190,7 +190,7 @@ impl Permissions { /// Return number of assets, portfolios, pallets, and extrinsics. /// /// This is used for weight calculation. - pub fn get_weights(&self) -> (u32, u32, u32, u32) { + pub fn counts(&self) -> (u32, u32, u32, u32) { // Count the number of assets. let assets = self.asset.complexity().try_into().unwrap_or(u32::MAX); // Count the number of portfolios. @@ -452,7 +452,7 @@ pub mod api { /// Return number of assets, portfolios, pallets, and extrinsics. /// /// This is used for weight calculation. - pub fn get_weights(&self) -> (u32, u32, u32, u32) { + pub fn counts(&self) -> (u32, u32, u32, u32) { // Count the number of assets. let assets = self.asset.complexity().try_into().unwrap_or(u32::MAX); // Count the number of portfolios. From f614fbc35978284b37d2e5687b46f5848af44927 Mon Sep 17 00:00:00 2001 From: Joel Moore <47923231+JMoore96@users.noreply.github.com> Date: Fri, 14 Jan 2022 10:52:15 -0400 Subject: [PATCH 11/53] MESH 1654/ITN Rewards JS Test (#1190) * added rewards_helper file and modified itn test * renamed current itn rewards test to portfolio test * created new ITN Rewards Test * minor change to 15_portfolio test * minor change * created function to check eraElectionStatus is closed * minor change * minor change * minor change * minor change * assert if claim doesnt exist and wrong accounts used * formatting --- scripts/cli/package.json | 3 +- scripts/cli/src/helpers/rewards_helper.ts | 34 +++++++++++++++ scripts/cli/src/helpers/staking_helper.ts | 21 +++++++++- .../{15_itn_rewards.ts => 15_portfolio.ts} | 34 +++++++-------- scripts/cli/src/tests/17_itn_rewards.ts | 42 +++++++++++++++++++ scripts/cli/src/types.ts | 1 + 6 files changed, 116 insertions(+), 19 deletions(-) create mode 100644 scripts/cli/src/helpers/rewards_helper.ts rename scripts/cli/src/tests/{15_itn_rewards.ts => 15_portfolio.ts} (79%) create mode 100644 scripts/cli/src/tests/17_itn_rewards.ts diff --git a/scripts/cli/package.json b/scripts/cli/package.json index 4f3ce547e5..69f2fc46fa 100644 --- a/scripts/cli/package.json +++ b/scripts/cli/package.json @@ -45,8 +45,9 @@ "12_external_agents": "node ./dist/tests/12_external_agents.js", "13_corporate_actions": "node ./dist/tests/13_corporate_actions.js", "14_investment": "node ./dist/tests/14_investment.js", - "15_itn_rewards": "node ./dist/tests/15_itn_rewards.js", + "15_portfolio": "node ./dist/tests/15_portfolio.js", "16_relayer": "node ./dist/tests/16_relayer.js", + "17_itn_rewards": "node ./dist/tests/17_itn_rewards.js", "schema_test": "./util/schema_test.sh", "offchain_worker_test": "node ./dist/util/offchain_worker_test.js", "polyx_balances": "node ./util/userBalancePOLYX.js", diff --git a/scripts/cli/src/helpers/rewards_helper.ts b/scripts/cli/src/helpers/rewards_helper.ts new file mode 100644 index 0000000000..69a070e62b --- /dev/null +++ b/scripts/cli/src/helpers/rewards_helper.ts @@ -0,0 +1,34 @@ +import type { KeyringPair } from "@polkadot/keyring/types"; +import { sendTx, ApiSingleton } from "../util/init"; +import { ItnRewardStatus } from "../types"; +import { u8aToHex } from "@polkadot/util"; + +/** + * @description Claim an ITN reward with a valid signature. + */ +export async function claimItnReward(itn: KeyringPair, reward: KeyringPair) { + const api = await ApiSingleton.getInstance(); + let claim_msg_hex = "636c61696d5f69746e5f726577617264"; // "claim_itn_reward" as hex. + let msg = u8aToHex(reward.publicKey, 512).toString() + claim_msg_hex; + let signature = itn.sign(msg); + const transaction = api.tx.rewards.claimItnReward(msg, itn.address, { + Sr25519: signature, + }); + return transaction.send(); +} + +/** + * @description Set the status of an account ITN reward, + * can only be called by root. + */ +export async function setItnRewardStatus( + signer: KeyringPair, + itnAddress: KeyringPair, + status: ItnRewardStatus +) { + const api = await ApiSingleton.getInstance(); + const transaction = api.tx.sudo.sudo( + api.tx.rewards.setItnRewardStatus(itnAddress.publicKey, status) + ); + return sendTx(signer, transaction); +} diff --git a/scripts/cli/src/helpers/staking_helper.ts b/scripts/cli/src/helpers/staking_helper.ts index 7a1b7fec78..078ae9a396 100644 --- a/scripts/cli/src/helpers/staking_helper.ts +++ b/scripts/cli/src/helpers/staking_helper.ts @@ -1,5 +1,5 @@ import type { KeyringPair } from "@polkadot/keyring/types"; -import { sendTx, ApiSingleton } from "../util/init"; +import { sendTx, ApiSingleton, sleep } from "../util/init"; import { distributePolyBatch } from "../helpers/poly_helper"; import BN from "bn.js"; @@ -36,4 +36,23 @@ export async function forceNewEra(signer: KeyringPair) { const api = await ApiSingleton.getInstance(); const transaction = api.tx.sudo.sudo(api.tx.staking.forceNewEra()); await sendTx(signer, transaction); +} + +export async function unbond(signer: KeyringPair, amount: number) { + const api = await ApiSingleton.getInstance(); + const transaction = api.tx.staking.unbond(amount); + await sendTx(signer, transaction); +} + +export async function nominate(signer: KeyringPair, target: Uint8Array) { + const api = await ApiSingleton.getInstance(); + const transaction = api.tx.staking.nominate([target]); + await sendTx(signer, transaction); +} + +export async function checkEraElectionClosed() { + const api = await ApiSingleton.getInstance(); + while((await api.query.staking.eraElectionStatus()).isOpen) { + await sleep(1000); + } } \ No newline at end of file diff --git a/scripts/cli/src/tests/15_itn_rewards.ts b/scripts/cli/src/tests/15_portfolio.ts similarity index 79% rename from scripts/cli/src/tests/15_itn_rewards.ts rename to scripts/cli/src/tests/15_portfolio.ts index 1998a3f4e2..37e12ad43f 100644 --- a/scripts/cli/src/tests/15_itn_rewards.ts +++ b/scripts/cli/src/tests/15_portfolio.ts @@ -6,7 +6,6 @@ import { padTicker, sendTx, ApiSingleton, - waitNextEra, } from "../util/init"; import { createIdentities, addClaimsToDids } from "../helpers/identity_helper"; import { issueTokenToDid } from "../helpers/asset_helper"; @@ -14,7 +13,7 @@ import { distributePolyBatch } from "../helpers/poly_helper"; import PrettyError from "pretty-error"; import { addComplianceRequirement } from "../helpers/compliance_manager_helper"; import { createTable } from "../util/sqlite3"; -import { forceNewEra } from "../helpers/staking_helper"; +import { forceNewEra, unbond, nominate, checkEraElectionClosed } from "../helpers/staking_helper"; async function main(): Promise { createTable(); @@ -59,7 +58,7 @@ async function main(): Promise { )[0][1].unwrap().auth_id; await sendTx(dave2, api.tx.identity.joinIdentityAsKey(authorization)); - console.log("ItnRewards: TrustedDefaultClaimIssuerAdded"); + console.log("Portfolio: TrustedDefaultClaimIssuerAdded"); const ticker = padTicker("15TICKER"); await issueTokenToDid(dave, ticker, 100000, null); await addComplianceRequirement(dave, ticker); @@ -71,32 +70,24 @@ async function main(): Promise { }) ); - console.log("ItnRewards: ClaimAdded"); + console.log("Portfolio: ClaimAdded"); await sendTx( bob, api.tx.identity.addClaim(daveDid, { Accredited: { Ticker: ticker } }, null) ); - console.log("ItnRewards: ConfigureAdvancedTokenRules"); + console.log("Portfolio: ConfigureAdvancedTokenRules"); await sendTx( dave, api.tx.statistics.addTransferManager(ticker, { CountTransferManager: 10 }) ); - console.log("ItnRewards: PortfolioCreated"); + console.log("Portfolio: PortfolioCreated"); await sendTx(dave, api.tx.portfolio.createPortfolio("foobar")); - console.log("ItnRewards: AddAssetToAPortfolio"); + console.log("Portfolio: AddAssetToAPortfolio"); const portfolioId = await api.query.portfolio.nameToNumber(daveDid, "foobar"); - // To Fix: In ITN Rewards PR - // AddAPortfolioManager is not possible because of old permission format - // console.log("ItnRewards: StopStakingAPortion"); - // await sendTx(dave, api.tx.staking.unbond(100)); - - // console.log("ItnRewards: StartStakingANewOperator"); - // await sendTx(dave, api.tx.staking.nominate([alice.publicKey])); - await sendTx( dave, api.tx.portfolio.movePortfolioFunds( @@ -106,7 +97,16 @@ async function main(): Promise { ) ); - + console.log(`Election Status: ${await api.query.staking.eraElectionStatus()}`); + await checkEraElectionClosed(); + console.log(`Election Status: ${await api.query.staking.eraElectionStatus()}`); + // AddAPortfolioManager is not possible because of old permission format + console.log("Portfolio: StopStakingAPortion"); + await unbond(dave, 100); + + console.log("Portfolio: StartStakingANewOperator"); + await nominate(dave, alice.publicKey); + } main() @@ -116,6 +116,6 @@ main() process.exit(1); }) .finally(() => { - console.log("Completed: ITN REWARDS"); + console.log("Completed: Portfolio Test"); process.exit(); }); diff --git a/scripts/cli/src/tests/17_itn_rewards.ts b/scripts/cli/src/tests/17_itn_rewards.ts new file mode 100644 index 0000000000..3c93902ea1 --- /dev/null +++ b/scripts/cli/src/tests/17_itn_rewards.ts @@ -0,0 +1,42 @@ +import { initMain, generateEntityFromUri } from "../util/init"; +import { createIdentities } from "../helpers/identity_helper"; +import { claimItnReward, setItnRewardStatus } from "../helpers/rewards_helper"; +import { createTable } from "../util/sqlite3"; +import PrettyError from "pretty-error"; +import assert from "assert"; + +async function main(): Promise { + createTable(); + const testEntities = await initMain(); + const alice = testEntities[0]; + const dave = await generateEntityFromUri("17_dave"); + const charlie = await generateEntityFromUri("17_charlie"); + const dave2 = await generateEntityFromUri("17_dave2"); + console.log("Create Identity"); + await createIdentities(alice, [dave2]); + console.log("Set ITN Rewards Claim Status"); + await setItnRewardStatus(alice, dave, { Unclaimed: 2_000_000 }); + console.log("Claim ITN Rewards"); + await claimItnReward(dave, dave2); + console.log("Claim ITN Reward that doesn't exist"); + await assert.rejects(async () => { + await claimItnReward(charlie, dave2); + }); + console.log("Set ITN Rewards Claim Status for Charlie"); + await setItnRewardStatus(alice, charlie, { Unclaimed: 2_000_000 }); + console.log("Claim Charlie ITN Reward with Dave"); + await assert.rejects(async () => { + await claimItnReward(dave, charlie); + }); +} + +main() + .catch((err: any) => { + const pe = new PrettyError(); + console.error(pe.render(err)); + process.exit(1); + }) + .finally(() => { + console.log("Completed: ITN Rewards Test"); + process.exit(); + }); diff --git a/scripts/cli/src/types.ts b/scripts/cli/src/types.ts index 904ced3429..d51be97203 100644 --- a/scripts/cli/src/types.ts +++ b/scripts/cli/src/types.ts @@ -98,6 +98,7 @@ export type Expiry = string | object | Uint8Array | null; export type DocumentName = string; export type DocumentUri = string; export type Signatory = { Identity: IdentityId } | { Account: AccountId }; +export type ItnRewardStatus = { Unclaimed: number } | { Claimed: "" }; export type Claim = | { Accredited: Scope } From f6afeeea4f3028788d9441fb3c0714a8f3665a11 Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Fri, 14 Jan 2022 23:45:55 +0800 Subject: [PATCH 12/53] Fix schema for InvestorZKProofData type. (#1194) --- polymesh_schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/polymesh_schema.json b/polymesh_schema.json index 4e55e67e41..266d04063f 100644 --- a/polymesh_schema.json +++ b/polymesh_schema.json @@ -431,7 +431,7 @@ "Custom": "Vec" } }, - "InvestorZKProofData": "Signature", + "InvestorZKProofData": "[u8; 64]", "Scalar": "[u8; 32]", "RistrettoPoint": "[u8; 32]", "ZkProofData": { From 2032f1ff05df9fedc0f45b61ce57c9a7dca94eaa Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Sat, 15 Jan 2022 00:22:05 +0800 Subject: [PATCH 13/53] Fix multi node script (#1191) * Fix multi-node setup. * Add a third operator to the 'local' chains. * Temp fix for incorrect type definition in Polkadot.js. * Fix issue with Charlie. * Cargo fmt Co-authored-by: Adam Dossa --- polymesh_schema.json | 6 ++++ scripts/cli/environment.config.js | 50 ++++++++++++++++++------------- src/chain_spec.rs | 10 +++---- 3 files changed, 40 insertions(+), 26 deletions(-) diff --git a/polymesh_schema.json b/polymesh_schema.json index 266d04063f..391506766b 100644 --- a/polymesh_schema.json +++ b/polymesh_schema.json @@ -983,6 +983,12 @@ "negative": "bool", "degree": "u8" }, + "WeightPerClass": { + "baseExtrinsic": "Weight", + "maxExtrinsic": "Option", + "maxTotal": "Option", + "reserved": "Option" + }, "TargetIdentity": { "_enum": { "ExternalAgent": "", diff --git a/scripts/cli/environment.config.js b/scripts/cli/environment.config.js index 5da843ea25..4451e1a368 100644 --- a/scripts/cli/environment.config.js +++ b/scripts/cli/environment.config.js @@ -1,58 +1,66 @@ // PM2 config file -let chain = "ci-dev"; +let chain = "ci-local"; +let polymesh_bin = "../../target/release/polymesh"; +let common = "--wasm-execution compiled " + + // "--db-cache=3000 " + + "--pruning=archive " + + "--rpc-methods=unsafe --rpc-external --ws-external " + + "--rpc-cors all --no-prometheus --no-telemetry --no-mdns " + + "--validator --chain " + chain + " "; +// Use node-key parameter for the primary node. +let primary = " --node-key 0000000000000000000000000000000000000000000000000000000000000001 " + + common; +// The peer nodes need to connect to the primary. +let peer = " --bootnodes /ip4/127.0.0.1/tcp/30334/p2p/12D3KooWEyoppNCUx8Yx66oV9fJnriXwCcXwDDUA2kj6vnc6iDEp " + + common; module.exports = { apps: [ { name: "pmesh-primary-node", - script: "../../target/release/polymesh", + script: polymesh_bin, args: - "-d /tmp/pmesh-primary-node --pruning=archive --rpc-methods=unsafe --rpc-external --ws-external --pool-limit 100000 --ws-port 9944 --rpc-cors all --alice --validator --chain " + - chain + - " --force-authoring", + "-d /tmp/pmesh-primary-node --alice " + primary + + " --port 30334 --ws-port 9944 --rpc-port 9934", env: { RUST_BACKTRACE: "1", }, }, { name: "pmesh-peer-node-1", - script: "../../target/release/polymesh", + script: polymesh_bin, args: - "-d /tmp/pmesh-peer-node-1 --ws-port 9945 --bob --validator --chain " + - chain + - " --force-authoring", + "-d /tmp/pmesh-peer-node-1 --bob " + peer + + " --port 30335 --ws-port 9945 --rpc-port 9935", env: { RUST_BACKTRACE: "1", }, }, { name: "pmesh-peer-node-2", - script: "../../target/release/polymesh", + script: polymesh_bin, args: - "-d /tmp/pmesh-peer-node-2 --ws-port 9946 --charlie --validator --chain " + - chain + - " --force-authoring", + "-d /tmp/pmesh-peer-node-2 --charlie " + peer + + " --port 30336 --ws-port 9946 --rpc-port 9936", env: { RUST_BACKTRACE: "1", }, }, { name: "pmesh-peer-node-3", - script: "../../target/release/polymesh", + script: polymesh_bin, args: - "-d /tmp/pmesh-peer-node-3 --ws-port 9947 --dave --validator --chain " + - chain + - " --force-authoring", + "-d /tmp/pmesh-peer-node-3 --dave " + peer + + " --port 30337 --ws-port 9947 --rpc-port 9937", env: { RUST_BACKTRACE: "1", }, }, { name: "pmesh-peer-node-4", - script: "../../target/release/polymesh", + script: polymesh_bin, args: - "-d /tmp/pmesh-peer-node-4 --ws-port 9948 --eve --validator --chain " + - chain + - " --force-authoring", + "-d /tmp/pmesh-peer-node-4 --eve " + peer + + " --port 30338 --ws-port 9948 --rpc-port 9938", env: { RUST_BACKTRACE: "1", }, diff --git a/src/chain_spec.rs b/src/chain_spec.rs index f78ee735bd..ba40391751 100644 --- a/src/chain_spec.rs +++ b/src/chain_spec.rs @@ -722,6 +722,7 @@ pub mod general { vec![ get_authority_keys_from_seed("Alice", false), get_authority_keys_from_seed("Bob", false), + get_authority_keys_from_seed("Charlie", false), ], seeded_acc_id("Alice"), true, @@ -732,11 +733,7 @@ pub mod general { REWARDS_LOCK_HASH, ), BridgeLockId::generate_bridge_locks(3, 20, DEV_KEYS, KEY_LOCK_HASH), - vec![ - seeded_acc_id("Charlie"), - seeded_acc_id("Dave"), - seeded_acc_id("Eve"), - ], + vec![seeded_acc_id("Dave"), seeded_acc_id("Eve")], ) } @@ -912,6 +909,7 @@ pub mod testnet { vec![ get_authority_keys_from_seed("Alice", false), get_authority_keys_from_seed("Bob", false), + get_authority_keys_from_seed("Charlie", false), ], seeded_acc_id("Eve"), true, @@ -1112,6 +1110,7 @@ pub mod mainnet { vec![ get_authority_keys_from_seed("Alice", false), get_authority_keys_from_seed("Bob", false), + get_authority_keys_from_seed("Charlie", false), ], seeded_acc_id("Eve"), true, @@ -1258,6 +1257,7 @@ pub mod ci { vec![ get_authority_keys_from_seed("Alice", false), get_authority_keys_from_seed("Bob", false), + get_authority_keys_from_seed("Charlie", false), ], seeded_acc_id("Alice"), true, From 87aa97602d0c8fdb1d6cdc390d5b68734635b661 Mon Sep 17 00:00:00 2001 From: Adam Dossa Date: Mon, 17 Jan 2022 09:16:47 +0000 Subject: [PATCH 14/53] Update benchmarks (#1197) * Update benchmarks * Linting * Update benchmarks * Update cargo.lock --- Cargo.lock | 242 +++++++++--------- pallets/asset/src/lib.rs | 3 - pallets/common/src/traits/asset.rs | 4 - pallets/weights/src/frame_system.rs | 26 +- pallets/weights/src/pallet_asset.rs | 104 +++----- pallets/weights/src/pallet_balances.rs | 18 +- .../src/pallet_capital_distribution.rs | 28 +- pallets/weights/src/pallet_checkpoint.rs | 18 +- pallets/weights/src/pallet_committee.rs | 24 +- .../weights/src/pallet_compliance_manager.rs | 40 +-- .../weights/src/pallet_corporate_actions.rs | 50 ++-- .../weights/src/pallet_corporate_ballot.rs | 32 +-- pallets/weights/src/pallet_external_agents.rs | 26 +- pallets/weights/src/pallet_group.rs | 20 +- pallets/weights/src/pallet_identity.rs | 98 +++---- pallets/weights/src/pallet_im_online.rs | 12 +- pallets/weights/src/pallet_indices.rs | 12 +- pallets/weights/src/pallet_multisig.rs | 64 ++--- pallets/weights/src/pallet_pips.rs | 58 ++--- pallets/weights/src/pallet_portfolio.rs | 32 +-- pallets/weights/src/pallet_protocol_fee.rs | 6 +- pallets/weights/src/pallet_relayer.rs | 38 +-- pallets/weights/src/pallet_scheduler.rs | 26 +- pallets/weights/src/pallet_session.rs | 6 +- pallets/weights/src/pallet_settlement.rs | 120 ++++----- pallets/weights/src/pallet_statistics.rs | 18 +- pallets/weights/src/pallet_sto.rs | 22 +- pallets/weights/src/pallet_test_utils.rs | 18 +- pallets/weights/src/pallet_timestamp.rs | 6 +- 29 files changed, 572 insertions(+), 599 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cbdf1519a4..968007bd3c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1771,7 +1771,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "parity-scale-codec 2.2.0", ] @@ -1789,7 +1789,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "frame-support", "frame-system", @@ -1807,7 +1807,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "Inflector", "chrono", @@ -1830,7 +1830,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "frame-support", "frame-system", @@ -1846,7 +1846,7 @@ dependencies = [ [[package]] name = "frame-metadata" version = "13.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "parity-scale-codec 2.2.0", "serde", @@ -1857,7 +1857,7 @@ dependencies = [ [[package]] name = "frame-support" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "bitflags", "frame-metadata", @@ -1883,7 +1883,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -1895,7 +1895,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 0.1.5", @@ -1907,7 +1907,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "proc-macro2", "quote", @@ -1917,7 +1917,7 @@ dependencies = [ [[package]] name = "frame-system" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "frame-support", "impl-trait-for-tuples", @@ -1933,7 +1933,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "frame-benchmarking", "frame-support", @@ -1947,7 +1947,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "parity-scale-codec 2.2.0", "sp-api", @@ -4400,7 +4400,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "frame-support", "frame-system", @@ -4416,7 +4416,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "frame-support", "frame-system", @@ -4431,7 +4431,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "frame-benchmarking", "frame-support", @@ -4480,7 +4480,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "frame-benchmarking", "frame-support", @@ -4635,7 +4635,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "frame-benchmarking", "frame-support", @@ -4739,7 +4739,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "frame-benchmarking", "frame-support", @@ -4758,7 +4758,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "frame-benchmarking", "frame-support", @@ -4795,7 +4795,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "frame-support", "frame-system", @@ -4923,7 +4923,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "frame-support", "frame-system", @@ -4969,7 +4969,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "frame-benchmarking", "frame-support", @@ -4984,7 +4984,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "frame-support", "frame-system", @@ -5066,7 +5066,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "proc-macro-crate 0.1.5", "proc-macro2", @@ -5191,7 +5191,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "frame-benchmarking", "frame-support", @@ -5250,7 +5250,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "frame-support", "frame-system", @@ -7193,7 +7193,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "async-trait", "derive_more", @@ -7221,7 +7221,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "futures 0.3.16", "futures-timer 3.0.2", @@ -7244,7 +7244,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "parity-scale-codec 2.2.0", "sc-client-api", @@ -7261,7 +7261,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec 2.2.0", @@ -7282,7 +7282,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "proc-macro-crate 0.1.5", "proc-macro2", @@ -7293,7 +7293,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "chrono", "fdlimit", @@ -7331,7 +7331,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "derive_more", "fnv", @@ -7365,7 +7365,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "blake2-rfc", "hash-db", @@ -7395,7 +7395,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "sc-client-api", "sp-blockchain", @@ -7406,7 +7406,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "derive_more", "fork-tree", @@ -7452,7 +7452,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "derive_more", "futures 0.3.16", @@ -7476,7 +7476,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "fork-tree", "parity-scale-codec 2.2.0", @@ -7489,7 +7489,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "futures 0.3.16", "futures-timer 3.0.2", @@ -7515,7 +7515,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "log", "sc-client-api", @@ -7529,11 +7529,11 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "derive_more", "lazy_static", - "libsecp256k1 0.3.5", + "libsecp256k1 0.6.0", "log", "parity-scale-codec 2.2.0", "parity-wasm 0.41.0", @@ -7558,7 +7558,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "derive_more", "parity-scale-codec 2.2.0", @@ -7574,7 +7574,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "log", "parity-scale-codec 2.2.0", @@ -7589,7 +7589,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "log", "parity-scale-codec 2.2.0", @@ -7607,7 +7607,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "derive_more", "finality-grandpa", @@ -7645,7 +7645,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "derive_more", "finality-grandpa", @@ -7669,7 +7669,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "ansi_term 0.12.1", "futures 0.3.16", @@ -7687,7 +7687,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "async-trait", "derive_more", @@ -7707,7 +7707,7 @@ dependencies = [ [[package]] name = "sc-light" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "hash-db", "lazy_static", @@ -7726,7 +7726,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "async-std", "async-trait", @@ -7779,7 +7779,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "futures 0.3.16", "futures-timer 3.0.2", @@ -7795,7 +7795,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "bytes 0.5.6", "fnv", @@ -7822,7 +7822,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "futures 0.3.16", "libp2p", @@ -7835,7 +7835,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -7844,7 +7844,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "futures 0.3.16", "hash-db", @@ -7878,7 +7878,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "derive_more", "futures 0.3.16", @@ -7902,7 +7902,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "futures 0.1.31", "jsonrpc-core", @@ -7920,7 +7920,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "directories", "exit-future", @@ -7983,7 +7983,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "log", "parity-scale-codec 2.2.0", @@ -8019,7 +8019,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "chrono", "futures 0.3.16", @@ -8041,7 +8041,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8069,7 +8069,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "proc-macro-crate 0.1.5", "proc-macro2", @@ -8080,7 +8080,7 @@ dependencies = [ [[package]] name = "sc-transaction-graph" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "derive_more", "futures 0.3.16", @@ -8102,7 +8102,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "futures 0.3.16", "futures-diagnose", @@ -8590,7 +8590,7 @@ dependencies = [ [[package]] name = "sp-allocator" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "log", "sp-core", @@ -8602,7 +8602,7 @@ dependencies = [ [[package]] name = "sp-api" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "hash-db", "parity-scale-codec 2.2.0", @@ -8618,7 +8618,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "blake2-rfc", "proc-macro-crate 0.1.5", @@ -8630,7 +8630,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "parity-scale-codec 2.2.0", "serde", @@ -8642,7 +8642,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "integer-sqrt", "num-traits", @@ -8655,7 +8655,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "parity-scale-codec 2.2.0", "sp-api", @@ -8667,7 +8667,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "parity-scale-codec 2.2.0", "sp-inherents", @@ -8678,7 +8678,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "parity-scale-codec 2.2.0", "sp-api", @@ -8690,7 +8690,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "futures 0.3.16", "log", @@ -8708,7 +8708,7 @@ dependencies = [ [[package]] name = "sp-chain-spec" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "serde", "serde_json", @@ -8717,7 +8717,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "futures 0.3.16", "futures-timer 3.0.2", @@ -8743,7 +8743,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "parity-scale-codec 2.2.0", "sp-api", @@ -8758,7 +8758,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "merlin 2.0.1", "parity-scale-codec 2.2.0", @@ -8778,7 +8778,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "parity-scale-codec 2.2.0", "sp-arithmetic", @@ -8788,7 +8788,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "parity-scale-codec 2.2.0", "schnorrkel 0.9.1", @@ -8800,7 +8800,7 @@ dependencies = [ [[package]] name = "sp-core" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "base58", "blake2-rfc", @@ -8813,7 +8813,7 @@ dependencies = [ "hex", "impl-serde", "lazy_static", - "libsecp256k1 0.3.5", + "libsecp256k1 0.6.0", "log", "merlin 2.0.1", "num-traits", @@ -8844,7 +8844,7 @@ dependencies = [ [[package]] name = "sp-database" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -8853,7 +8853,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "proc-macro2", "quote", @@ -8863,7 +8863,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "environmental", "parity-scale-codec 2.2.0", @@ -8874,7 +8874,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "finality-grandpa", "log", @@ -8891,7 +8891,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "parity-scale-codec 2.2.0", "parking_lot 0.11.1", @@ -8903,11 +8903,11 @@ dependencies = [ [[package]] name = "sp-io" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "futures 0.3.16", "hash-db", - "libsecp256k1 0.3.5", + "libsecp256k1 0.6.0", "log", "parity-scale-codec 2.2.0", "parking_lot 0.11.1", @@ -8927,7 +8927,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "lazy_static", "sp-core", @@ -8938,7 +8938,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "async-trait", "derive_more", @@ -8955,7 +8955,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "parity-scale-codec 2.2.0", "serde", @@ -8968,7 +8968,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-compact" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "proc-macro-crate 0.1.5", "proc-macro2", @@ -8979,7 +8979,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "sp-api", "sp-core", @@ -8989,7 +8989,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "backtrace", ] @@ -8997,7 +8997,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "serde", "sp-core", @@ -9006,7 +9006,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "either", "hash256-std-hasher", @@ -9027,7 +9027,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec 2.2.0", @@ -9044,7 +9044,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "Inflector", "proc-macro-crate 0.1.5", @@ -9056,7 +9056,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "serde", "serde_json", @@ -9065,7 +9065,7 @@ dependencies = [ [[package]] name = "sp-session" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "parity-scale-codec 2.2.0", "sp-api", @@ -9078,7 +9078,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "parity-scale-codec 2.2.0", "sp-runtime", @@ -9088,7 +9088,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "hash-db", "log", @@ -9110,12 +9110,12 @@ dependencies = [ [[package]] name = "sp-std" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" [[package]] name = "sp-storage" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "impl-serde", "parity-scale-codec 2.2.0", @@ -9128,7 +9128,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "log", "sp-core", @@ -9141,7 +9141,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec 2.2.0", @@ -9155,7 +9155,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "log", "parity-scale-codec 2.2.0", @@ -9168,7 +9168,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "derive_more", "futures 0.3.16", @@ -9184,7 +9184,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "hash-db", "memory-db", @@ -9198,7 +9198,7 @@ dependencies = [ [[package]] name = "sp-utils" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "futures 0.3.16", "futures-core", @@ -9210,7 +9210,7 @@ dependencies = [ [[package]] name = "sp-version" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "impl-serde", "parity-scale-codec 2.2.0", @@ -9222,7 +9222,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec 2.2.0", @@ -9372,7 +9372,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.16", @@ -9395,7 +9395,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "async-std", "derive_more", @@ -9409,7 +9409,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "futures 0.1.31", "futures 0.3.16", @@ -9436,7 +9436,7 @@ dependencies = [ [[package]] name = "substrate-test-runtime" version = "2.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "cfg-if 1.0.0", "frame-executive", @@ -9478,7 +9478,7 @@ dependencies = [ [[package]] name = "substrate-test-runtime-client" version = "2.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "futures 0.3.16", "parity-scale-codec 2.2.0", @@ -9499,7 +9499,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "futures 0.3.16", "substrate-test-utils-derive", @@ -9509,7 +9509,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "proc-macro-crate 0.1.5", "quote", @@ -9535,7 +9535,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "4.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#c3dfee6b8c8191fa9fff217083c793aec9ae6bd5" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" dependencies = [ "ansi_term 0.12.1", "atty", diff --git a/pallets/asset/src/lib.rs b/pallets/asset/src/lib.rs index 976237b6bd..af867f28be 100644 --- a/pallets/asset/src/lib.rs +++ b/pallets/asset/src/lib.rs @@ -50,9 +50,6 @@ //! - `remove_documents` - Remove documents for a given token. //! - `set_funding_round` - Sets the name of the current funding round. //! - `update_identifiers` - Updates the asset identifiers. -//! - `add_extension` - It is used to permission the Smart-Extension address for a given ticker. -//! - `archive_extension` - Extension gets archived meaning it is no longer used to verify compliance or any smart logic it possesses. -//! - `unarchive_extension` - Extension gets unarchived meaning it is used again to verify compliance or any smart logic it possesses. //! //! ### Public Functions //! diff --git a/pallets/common/src/traits/asset.rs b/pallets/common/src/traits/asset.rs index 681f629bc2..e6ad14552b 100644 --- a/pallets/common/src/traits/asset.rs +++ b/pallets/common/src/traits/asset.rs @@ -90,10 +90,6 @@ pub trait WeightInfo { fn update_identifiers(i: u32) -> Weight; fn claim_classic_ticker() -> Weight; fn reserve_classic_ticker() -> Weight; - fn add_extension() -> Weight; - fn remove_smart_extension() -> Weight; - fn archive_extension() -> Weight; - fn unarchive_extension() -> Weight; fn controller_transfer() -> Weight; fn register_custom_asset_type(n: u32) -> Weight; } diff --git a/pallets/weights/src/frame_system.rs b/pallets/weights/src/frame_system.rs index 96febc8b3a..a4a9f76ef2 100644 --- a/pallets/weights/src/frame_system.rs +++ b/pallets/weights/src/frame_system.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for frame_system //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,32 +53,32 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl frame_system::WeightInfo for WeightInfo { fn remark(_b: u32) -> Weight { - (1_787_000 as Weight) + (1_594_000 as Weight) } fn set_heap_pages() -> Weight { - (2_168_000 as Weight).saturating_add(DbWeight::get().writes(1 as Weight)) + (2_017_000 as Weight).saturating_add(DbWeight::get().writes(1 as Weight)) } fn set_changes_trie_config() -> Weight { - (15_365_000 as Weight) + (12_502_000 as Weight) .saturating_add(DbWeight::get().reads(1 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn set_storage(i: u32) -> Weight { - (0 as Weight) - // Standard Error: 7_000 - .saturating_add((842_000 as Weight).saturating_mul(i as Weight)) + (4_121_000 as Weight) + // Standard Error: 2_000 + .saturating_add((697_000 as Weight).saturating_mul(i as Weight)) .saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } fn kill_storage(i: u32) -> Weight { - (1_707_000 as Weight) - // Standard Error: 4_000 - .saturating_add((612_000 as Weight).saturating_mul(i as Weight)) + (9_061_000 as Weight) + // Standard Error: 3_000 + .saturating_add((514_000 as Weight).saturating_mul(i as Weight)) .saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } fn kill_prefix(p: u32) -> Weight { - (1_051_000 as Weight) - // Standard Error: 8_000 - .saturating_add((1_023_000 as Weight).saturating_mul(p as Weight)) + (0 as Weight) + // Standard Error: 16_000 + .saturating_add((968_000 as Weight).saturating_mul(p as Weight)) .saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(p as Weight))) } fn suicide() -> Weight { diff --git a/pallets/weights/src/pallet_asset.rs b/pallets/weights/src/pallet_asset.rs index 341b4c3c98..120f77ce09 100644 --- a/pallets/weights/src/pallet_asset.rs +++ b/pallets/weights/src/pallet_asset.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_asset //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,130 +53,110 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl pallet_asset::WeightInfo for WeightInfo { fn register_ticker() -> Weight { - (99_696_000 as Weight) - .saturating_add(DbWeight::get().reads(11 as Weight)) + (80_765_000 as Weight) + .saturating_add(DbWeight::get().reads(9 as Weight)) .saturating_add(DbWeight::get().writes(3 as Weight)) } fn accept_ticker_transfer() -> Weight { - (106_697_000 as Weight) - .saturating_add(DbWeight::get().reads(7 as Weight)) + (90_227_000 as Weight) + .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes(6 as Weight)) } fn accept_asset_ownership_transfer() -> Weight { - (127_635_000 as Weight) + (110_788_000 as Weight) .saturating_add(DbWeight::get().reads(8 as Weight)) .saturating_add(DbWeight::get().writes(6 as Weight)) } fn create_asset(n: u32, i: u32, f: u32) -> Weight { - (171_969_000 as Weight) - // Standard Error: 2_000 - .saturating_add((3_000 as Weight).saturating_mul(n as Weight)) - // Standard Error: 4_000 - .saturating_add((90_000 as Weight).saturating_mul(i as Weight)) + (157_890_000 as Weight) + // Standard Error: 9_000 + .saturating_add((73_000 as Weight).saturating_mul(n as Weight)) // Standard Error: 2_000 - .saturating_add((8_000 as Weight).saturating_mul(f as Weight)) - .saturating_add(DbWeight::get().reads(14 as Weight)) + .saturating_add((79_000 as Weight).saturating_mul(i as Weight)) + // Standard Error: 9_000 + .saturating_add((86_000 as Weight).saturating_mul(f as Weight)) + .saturating_add(DbWeight::get().reads(12 as Weight)) .saturating_add(DbWeight::get().writes(12 as Weight)) } fn freeze() -> Weight { - (87_281_000 as Weight) + (70_409_000 as Weight) .saturating_add(DbWeight::get().reads(7 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn unfreeze() -> Weight { - (86_023_000 as Weight) + (71_421_000 as Weight) .saturating_add(DbWeight::get().reads(7 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } - fn rename_asset(_n: u32) -> Weight { - (74_046_000 as Weight) + fn rename_asset(n: u32) -> Weight { + (62_463_000 as Weight) + // Standard Error: 4_000 + .saturating_add((47_000 as Weight).saturating_mul(n as Weight)) .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn issue() -> Weight { - (161_993_000 as Weight) - .saturating_add(DbWeight::get().reads(17 as Weight)) - .saturating_add(DbWeight::get().writes(5 as Weight)) + (162_071_000 as Weight) + .saturating_add(DbWeight::get().reads(18 as Weight)) + .saturating_add(DbWeight::get().writes(4 as Weight)) } fn redeem() -> Weight { - (183_830_000 as Weight) + (167_266_000 as Weight) .saturating_add(DbWeight::get().reads(16 as Weight)) .saturating_add(DbWeight::get().writes(6 as Weight)) } fn make_divisible() -> Weight { - (64_897_000 as Weight) + (62_479_000 as Weight) .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn add_documents(d: u32) -> Weight { - (72_005_000 as Weight) - // Standard Error: 262_000 - .saturating_add((31_037_000 as Weight).saturating_mul(d as Weight)) + (97_594_000 as Weight) + // Standard Error: 187_000 + .saturating_add((28_420_000 as Weight).saturating_mul(d as Weight)) .saturating_add(DbWeight::get().reads(8 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) .saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(d as Weight))) } fn remove_documents(d: u32) -> Weight { - (32_789_000 as Weight) - // Standard Error: 122_000 - .saturating_add((12_749_000 as Weight).saturating_mul(d as Weight)) + (39_507_000 as Weight) + // Standard Error: 61_000 + .saturating_add((11_582_000 as Weight).saturating_mul(d as Weight)) .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(d as Weight))) } - fn set_funding_round(f: u32) -> Weight { - (66_635_000 as Weight) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(f as Weight)) + fn set_funding_round(_f: u32) -> Weight { + (59_158_000 as Weight) .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn update_identifiers(i: u32) -> Weight { - (66_661_000 as Weight) - // Standard Error: 3_000 - .saturating_add((82_000 as Weight).saturating_mul(i as Weight)) + (63_879_000 as Weight) + // Standard Error: 1_000 + .saturating_add((63_000 as Weight).saturating_mul(i as Weight)) .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } - fn add_extension() -> Weight { - (179_296_000 as Weight) - .saturating_add(DbWeight::get().reads(11 as Weight)) - .saturating_add(DbWeight::get().writes(2 as Weight)) - } - fn archive_extension() -> Weight { - (155_844_000 as Weight) - .saturating_add(DbWeight::get().reads(8 as Weight)) - .saturating_add(DbWeight::get().writes(1 as Weight)) - } - fn unarchive_extension() -> Weight { - (165_872_000 as Weight) - .saturating_add(DbWeight::get().reads(8 as Weight)) - .saturating_add(DbWeight::get().writes(1 as Weight)) - } - fn remove_smart_extension() -> Weight { - (163_610_000 as Weight) - .saturating_add(DbWeight::get().reads(9 as Weight)) - .saturating_add(DbWeight::get().writes(2 as Weight)) - } fn claim_classic_ticker() -> Weight { - (271_133_000 as Weight) - .saturating_add(DbWeight::get().reads(7 as Weight)) + (265_862_000 as Weight) + .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes(3 as Weight)) } fn reserve_classic_ticker() -> Weight { - (54_049_000 as Weight) + (55_283_000 as Weight) .saturating_add(DbWeight::get().reads(3 as Weight)) .saturating_add(DbWeight::get().writes(3 as Weight)) } fn controller_transfer() -> Weight { - (201_389_000 as Weight) + (190_330_000 as Weight) .saturating_add(DbWeight::get().reads(20 as Weight)) .saturating_add(DbWeight::get().writes(9 as Weight)) } fn register_custom_asset_type(n: u32) -> Weight { - (61_861_000 as Weight) + (54_071_000 as Weight) // Standard Error: 0 - .saturating_add((12_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(DbWeight::get().reads(6 as Weight)) + .saturating_add((13_000 as Weight).saturating_mul(n as Weight)) + .saturating_add(DbWeight::get().reads(4 as Weight)) .saturating_add(DbWeight::get().writes(3 as Weight)) } } diff --git a/pallets/weights/src/pallet_balances.rs b/pallets/weights/src/pallet_balances.rs index 0929f2b449..56a9612554 100644 --- a/pallets/weights/src/pallet_balances.rs +++ b/pallets/weights/src/pallet_balances.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_balances //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,33 +53,33 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl pallet_balances::WeightInfo for WeightInfo { fn transfer() -> Weight { - (145_419_000 as Weight) + (131_495_000 as Weight) .saturating_add(DbWeight::get().reads(11 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn transfer_with_memo() -> Weight { - (138_907_000 as Weight) + (131_418_000 as Weight) .saturating_add(DbWeight::get().reads(11 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn deposit_block_reward_reserve_balance() -> Weight { - (109_679_000 as Weight) - .saturating_add(DbWeight::get().reads(9 as Weight)) + (102_738_000 as Weight) + .saturating_add(DbWeight::get().reads(7 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn set_balance() -> Weight { - (130_307_000 as Weight) + (119_697_000 as Weight) .saturating_add(DbWeight::get().reads(7 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn force_transfer() -> Weight { - (77_561_000 as Weight) + (73_838_000 as Weight) .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn burn_account_balance() -> Weight { - (77_802_000 as Weight) - .saturating_add(DbWeight::get().reads(7 as Weight)) + (68_429_000 as Weight) + .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } } diff --git a/pallets/weights/src/pallet_capital_distribution.rs b/pallets/weights/src/pallet_capital_distribution.rs index cc5127d23a..13123bbc7e 100644 --- a/pallets/weights/src/pallet_capital_distribution.rs +++ b/pallets/weights/src/pallet_capital_distribution.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_capital_distribution //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,35 +53,35 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl pallet_corporate_actions::distribution::WeightInfo for WeightInfo { fn distribute() -> Weight { - (142_494_000 as Weight) + (119_677_000 as Weight) .saturating_add(DbWeight::get().reads(13 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn claim(t: u32, w: u32) -> Weight { - (492_552_000 as Weight) - // Standard Error: 6_000 - .saturating_add((316_000 as Weight).saturating_mul(t as Weight)) - // Standard Error: 6_000 - .saturating_add((176_000 as Weight).saturating_mul(w as Weight)) - .saturating_add(DbWeight::get().reads(29 as Weight)) + (406_411_000 as Weight) + // Standard Error: 4_000 + .saturating_add((287_000 as Weight).saturating_mul(t as Weight)) + // Standard Error: 4_000 + .saturating_add((184_000 as Weight).saturating_mul(w as Weight)) + .saturating_add(DbWeight::get().reads(27 as Weight)) .saturating_add(DbWeight::get().writes(11 as Weight)) } fn push_benefit(t: u32, w: u32) -> Weight { - (538_560_000 as Weight) - // Standard Error: 7_000 - .saturating_add((300_000 as Weight).saturating_mul(t as Weight)) - // Standard Error: 7_000 + (449_013_000 as Weight) + // Standard Error: 4_000 + .saturating_add((274_000 as Weight).saturating_mul(t as Weight)) + // Standard Error: 4_000 .saturating_add((157_000 as Weight).saturating_mul(w as Weight)) .saturating_add(DbWeight::get().reads(30 as Weight)) .saturating_add(DbWeight::get().writes(11 as Weight)) } fn reclaim() -> Weight { - (115_549_000 as Weight) + (96_930_000 as Weight) .saturating_add(DbWeight::get().reads(9 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn remove_distribution() -> Weight { - (93_784_000 as Weight) + (89_146_000 as Weight) .saturating_add(DbWeight::get().reads(8 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } diff --git a/pallets/weights/src/pallet_checkpoint.rs b/pallets/weights/src/pallet_checkpoint.rs index b24e4466fd..e24ae9f668 100644 --- a/pallets/weights/src/pallet_checkpoint.rs +++ b/pallets/weights/src/pallet_checkpoint.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_checkpoint //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,24 +53,24 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl pallet_asset::checkpoint::WeightInfo for WeightInfo { fn set_schedules_max_complexity() -> Weight { - (19_682_000 as Weight).saturating_add(DbWeight::get().writes(1 as Weight)) + (19_472_000 as Weight).saturating_add(DbWeight::get().writes(1 as Weight)) } fn create_checkpoint() -> Weight { - (101_688_000 as Weight) + (79_574_000 as Weight) .saturating_add(DbWeight::get().reads(8 as Weight)) .saturating_add(DbWeight::get().writes(3 as Weight)) } fn create_schedule(s: u32) -> Weight { - (142_868_000 as Weight) - // Standard Error: 74_000 - .saturating_add((745_000 as Weight).saturating_mul(s as Weight)) + (133_611_000 as Weight) + // Standard Error: 37_000 + .saturating_add((438_000 as Weight).saturating_mul(s as Weight)) .saturating_add(DbWeight::get().reads(14 as Weight)) .saturating_add(DbWeight::get().writes(7 as Weight)) } fn remove_schedule(s: u32) -> Weight { - (88_930_000 as Weight) - // Standard Error: 42_000 - .saturating_add((172_000 as Weight).saturating_mul(s as Weight)) + (76_704_000 as Weight) + // Standard Error: 16_000 + .saturating_add((156_000 as Weight).saturating_mul(s as Weight)) .saturating_add(DbWeight::get().reads(7 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } diff --git a/pallets/weights/src/pallet_committee.rs b/pallets/weights/src/pallet_committee.rs index 3c6948dae7..5906975f3c 100644 --- a/pallets/weights/src/pallet_committee.rs +++ b/pallets/weights/src/pallet_committee.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_committee //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,34 +53,34 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl pallet_committee::WeightInfo for WeightInfo { fn set_vote_threshold() -> Weight { - (20_179_000 as Weight).saturating_add(DbWeight::get().writes(1 as Weight)) + (20_133_000 as Weight).saturating_add(DbWeight::get().writes(1 as Weight)) } fn set_release_coordinator() -> Weight { - (168_641_000 as Weight) + (122_300_000 as Weight) .saturating_add(DbWeight::get().reads(1 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn set_expires_after() -> Weight { - (20_226_000 as Weight).saturating_add(DbWeight::get().writes(1 as Weight)) + (19_621_000 as Weight).saturating_add(DbWeight::get().writes(1 as Weight)) } fn vote_or_propose_new_proposal() -> Weight { - (448_933_000 as Weight) - .saturating_add(DbWeight::get().reads(10 as Weight)) + (376_962_000 as Weight) + .saturating_add(DbWeight::get().reads(8 as Weight)) .saturating_add(DbWeight::get().writes(4 as Weight)) } fn vote_or_propose_existing_proposal() -> Weight { - (465_207_000 as Weight) - .saturating_add(DbWeight::get().reads(7 as Weight)) + (349_723_000 as Weight) + .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn vote_aye() -> Weight { - (857_198_000 as Weight) - .saturating_add(DbWeight::get().reads(10 as Weight)) + (836_959_000 as Weight) + .saturating_add(DbWeight::get().reads(8 as Weight)) .saturating_add(DbWeight::get().writes(3 as Weight)) } fn vote_nay() -> Weight { - (462_767_000 as Weight) - .saturating_add(DbWeight::get().reads(7 as Weight)) + (337_650_000 as Weight) + .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } } diff --git a/pallets/weights/src/pallet_compliance_manager.rs b/pallets/weights/src/pallet_compliance_manager.rs index 478c95a0d1..9ca72a9d82 100644 --- a/pallets/weights/src/pallet_compliance_manager.rs +++ b/pallets/weights/src/pallet_compliance_manager.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_compliance_manager //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -52,56 +52,58 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; /// Weights for pallet_compliance_manager using the Substrate node and recommended hardware. pub struct WeightInfo; impl pallet_compliance_manager::WeightInfo for WeightInfo { - fn add_compliance_requirement(_s: u32, r: u32) -> Weight { - (109_703_000 as Weight) - // Standard Error: 999_000 - .saturating_add((1_982_000 as Weight).saturating_mul(r as Weight)) + fn add_compliance_requirement(s: u32, r: u32) -> Weight { + (98_941_000 as Weight) + // Standard Error: 740_000 + .saturating_add((1_496_000 as Weight).saturating_mul(s as Weight)) + // Standard Error: 740_000 + .saturating_add((1_496_000 as Weight).saturating_mul(r as Weight)) .saturating_add(DbWeight::get().reads(9 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn remove_compliance_requirement() -> Weight { - (85_600_000 as Weight) + (73_285_000 as Weight) .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn pause_asset_compliance() -> Weight { - (86_216_000 as Weight) + (78_698_000 as Weight) .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn resume_asset_compliance() -> Weight { - (89_879_000 as Weight) + (68_868_000 as Weight) .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn add_default_trusted_claim_issuer() -> Weight { - (100_935_000 as Weight) + (78_319_000 as Weight) .saturating_add(DbWeight::get().reads(8 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn remove_default_trusted_claim_issuer() -> Weight { - (83_610_000 as Weight) + (65_412_000 as Weight) .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn change_compliance_requirement(s: u32, r: u32) -> Weight { - (85_508_000 as Weight) - // Standard Error: 2_801_000 - .saturating_add((6_414_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 2_801_000 - .saturating_add((2_747_000 as Weight).saturating_mul(r as Weight)) + (64_298_000 as Weight) + // Standard Error: 2_450_000 + .saturating_add((3_164_000 as Weight).saturating_mul(s as Weight)) + // Standard Error: 2_450_000 + .saturating_add((4_775_000 as Weight).saturating_mul(r as Weight)) .saturating_add(DbWeight::get().reads(7 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn replace_asset_compliance(c: u32) -> Weight { - (93_524_000 as Weight) - // Standard Error: 11_131_000 - .saturating_add((34_883_000 as Weight).saturating_mul(c as Weight)) + (94_241_000 as Weight) + // Standard Error: 3_165_000 + .saturating_add((9_855_000 as Weight).saturating_mul(c as Weight)) .saturating_add(DbWeight::get().reads(7 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn reset_asset_compliance() -> Weight { - (69_586_000 as Weight) + (60_009_000 as Weight) .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } diff --git a/pallets/weights/src/pallet_corporate_actions.rs b/pallets/weights/src/pallet_corporate_actions.rs index 7f95a179fe..2204495593 100644 --- a/pallets/weights/src/pallet_corporate_actions.rs +++ b/pallets/weights/src/pallet_corporate_actions.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_corporate_actions //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,70 +53,70 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl pallet_corporate_actions::WeightInfo for WeightInfo { fn set_max_details_length() -> Weight { - (19_892_000 as Weight).saturating_add(DbWeight::get().writes(1 as Weight)) + (18_344_000 as Weight).saturating_add(DbWeight::get().writes(1 as Weight)) } fn set_default_targets(t: u32) -> Weight { - (87_605_000 as Weight) - // Standard Error: 5_000 - .saturating_add((516_000 as Weight).saturating_mul(t as Weight)) + (76_855_000 as Weight) + // Standard Error: 4_000 + .saturating_add((471_000 as Weight).saturating_mul(t as Weight)) .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn set_default_withholding_tax() -> Weight { - (65_777_000 as Weight) + (65_545_000 as Weight) .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn set_did_withholding_tax(w: u32) -> Weight { - (106_758_000 as Weight) + (90_837_000 as Weight) // Standard Error: 2_000 - .saturating_add((229_000 as Weight).saturating_mul(w as Weight)) + .saturating_add((240_000 as Weight).saturating_mul(w as Weight)) .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn initiate_corporate_action_use_defaults(w: u32, t: u32) -> Weight { - (252_814_000 as Weight) - // Standard Error: 4_000 - .saturating_add((316_000 as Weight).saturating_mul(w as Weight)) - // Standard Error: 9_000 - .saturating_add((225_000 as Weight).saturating_mul(t as Weight)) + (249_854_000 as Weight) + // Standard Error: 3_000 + .saturating_add((303_000 as Weight).saturating_mul(w as Weight)) + // Standard Error: 7_000 + .saturating_add((185_000 as Weight).saturating_mul(t as Weight)) .saturating_add(DbWeight::get().reads(16 as Weight)) .saturating_add(DbWeight::get().writes(6 as Weight)) } fn initiate_corporate_action_provided(w: u32, t: u32) -> Weight { - (241_961_000 as Weight) - // Standard Error: 5_000 - .saturating_add((358_000 as Weight).saturating_mul(w as Weight)) - // Standard Error: 10_000 - .saturating_add((385_000 as Weight).saturating_mul(t as Weight)) + (221_430_000 as Weight) + // Standard Error: 4_000 + .saturating_add((341_000 as Weight).saturating_mul(w as Weight)) + // Standard Error: 8_000 + .saturating_add((368_000 as Weight).saturating_mul(t as Weight)) .saturating_add(DbWeight::get().reads(13 as Weight)) .saturating_add(DbWeight::get().writes(6 as Weight)) } fn link_ca_doc(d: u32) -> Weight { - (0 as Weight) - // Standard Error: 47_000 - .saturating_add((8_611_000 as Weight).saturating_mul(d as Weight)) + (28_278_000 as Weight) + // Standard Error: 89_000 + .saturating_add((8_180_000 as Weight).saturating_mul(d as Weight)) .saturating_add(DbWeight::get().reads(7 as Weight)) .saturating_add(DbWeight::get().reads((1 as Weight).saturating_mul(d as Weight))) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn remove_ca_with_ballot() -> Weight { - (113_214_000 as Weight) + (117_379_000 as Weight) .saturating_add(DbWeight::get().reads(9 as Weight)) .saturating_add(DbWeight::get().writes(8 as Weight)) } fn remove_ca_with_dist() -> Weight { - (126_477_000 as Weight) + (126_051_000 as Weight) .saturating_add(DbWeight::get().reads(10 as Weight)) .saturating_add(DbWeight::get().writes(6 as Weight)) } fn change_record_date_with_ballot() -> Weight { - (147_925_000 as Weight) + (152_477_000 as Weight) .saturating_add(DbWeight::get().reads(14 as Weight)) .saturating_add(DbWeight::get().writes(5 as Weight)) } fn change_record_date_with_dist() -> Weight { - (149_236_000 as Weight) + (146_644_000 as Weight) .saturating_add(DbWeight::get().reads(14 as Weight)) .saturating_add(DbWeight::get().writes(5 as Weight)) } diff --git a/pallets/weights/src/pallet_corporate_ballot.rs b/pallets/weights/src/pallet_corporate_ballot.rs index 1e80c7b60e..353b70a947 100644 --- a/pallets/weights/src/pallet_corporate_ballot.rs +++ b/pallets/weights/src/pallet_corporate_ballot.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_corporate_ballot //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,40 +53,40 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl pallet_corporate_actions::ballot::WeightInfo for WeightInfo { fn attach_ballot(c: u32) -> Weight { - (113_617_000 as Weight) - // Standard Error: 2_000 - .saturating_add((34_000 as Weight).saturating_mul(c as Weight)) + (99_340_000 as Weight) + // Standard Error: 1_000 + .saturating_add((44_000 as Weight).saturating_mul(c as Weight)) .saturating_add(DbWeight::get().reads(10 as Weight)) .saturating_add(DbWeight::get().writes(4 as Weight)) } fn vote(c: u32, t: u32) -> Weight { - (148_608_000 as Weight) - // Standard Error: 4_000 - .saturating_add((183_000 as Weight).saturating_mul(c as Weight)) - // Standard Error: 4_000 - .saturating_add((308_000 as Weight).saturating_mul(t as Weight)) - .saturating_add(DbWeight::get().reads(13 as Weight)) + (127_367_000 as Weight) + // Standard Error: 3_000 + .saturating_add((177_000 as Weight).saturating_mul(c as Weight)) + // Standard Error: 3_000 + .saturating_add((297_000 as Weight).saturating_mul(t as Weight)) + .saturating_add(DbWeight::get().reads(11 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn change_end() -> Weight { - (71_409_000 as Weight) + (86_077_000 as Weight) .saturating_add(DbWeight::get().reads(7 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn change_meta(c: u32) -> Weight { - (78_480_000 as Weight) - // Standard Error: 1_000 - .saturating_add((52_000 as Weight).saturating_mul(c as Weight)) + (83_253_000 as Weight) + // Standard Error: 0 + .saturating_add((31_000 as Weight).saturating_mul(c as Weight)) .saturating_add(DbWeight::get().reads(7 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn change_rcv() -> Weight { - (75_100_000 as Weight) + (69_882_000 as Weight) .saturating_add(DbWeight::get().reads(7 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn remove_ballot() -> Weight { - (86_433_000 as Weight) + (76_235_000 as Weight) .saturating_add(DbWeight::get().reads(7 as Weight)) .saturating_add(DbWeight::get().writes(4 as Weight)) } diff --git a/pallets/weights/src/pallet_external_agents.rs b/pallets/weights/src/pallet_external_agents.rs index c06197dd67..e74cef34c3 100644 --- a/pallets/weights/src/pallet_external_agents.rs +++ b/pallets/weights/src/pallet_external_agents.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_external_agents //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,41 +53,41 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl pallet_external_agents::WeightInfo for WeightInfo { fn create_group(p: u32) -> Weight { - (92_675_000 as Weight) - // Standard Error: 4_000 - .saturating_add((513_000 as Weight).saturating_mul(p as Weight)) + (65_478_000 as Weight) + // Standard Error: 35_000 + .saturating_add((391_000 as Weight).saturating_mul(p as Weight)) .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn set_group_permissions(p: u32) -> Weight { - (80_810_000 as Weight) - // Standard Error: 6_000 - .saturating_add((654_000 as Weight).saturating_mul(p as Weight)) + (63_756_000 as Weight) + // Standard Error: 58_000 + .saturating_add((674_000 as Weight).saturating_mul(p as Weight)) .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn remove_agent() -> Weight { - (77_607_000 as Weight) + (70_055_000 as Weight) .saturating_add(DbWeight::get().reads(7 as Weight)) .saturating_add(DbWeight::get().writes(3 as Weight)) } fn abdicate() -> Weight { - (68_951_000 as Weight) - .saturating_add(DbWeight::get().reads(6 as Weight)) + (58_162_000 as Weight) + .saturating_add(DbWeight::get().reads(4 as Weight)) .saturating_add(DbWeight::get().writes(3 as Weight)) } fn change_group_custom() -> Weight { - (82_385_000 as Weight) + (74_150_000 as Weight) .saturating_add(DbWeight::get().reads(8 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn change_group_builtin() -> Weight { - (76_063_000 as Weight) + (67_039_000 as Weight) .saturating_add(DbWeight::get().reads(7 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn accept_become_agent() -> Weight { - (110_896_000 as Weight) + (99_158_000 as Weight) .saturating_add(DbWeight::get().reads(8 as Weight)) .saturating_add(DbWeight::get().writes(5 as Weight)) } diff --git a/pallets/weights/src/pallet_group.rs b/pallets/weights/src/pallet_group.rs index ce8b60755e..65e8e8bd4e 100644 --- a/pallets/weights/src/pallet_group.rs +++ b/pallets/weights/src/pallet_group.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_group //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,41 +53,41 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl pallet_group::WeightInfo for WeightInfo { fn set_active_members_limit() -> Weight { - (27_640_000 as Weight) + (23_583_000 as Weight) .saturating_add(DbWeight::get().reads(1 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn add_member() -> Weight { - (1_418_298_000 as Weight) + (1_304_495_000 as Weight) .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn remove_member() -> Weight { - (360_893_000 as Weight) + (299_690_000 as Weight) .saturating_add(DbWeight::get().reads(3 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn disable_member() -> Weight { - (378_276_000 as Weight) + (294_365_000 as Weight) .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes(3 as Weight)) } fn swap_member() -> Weight { - (1_470_973_000 as Weight) + (1_311_449_000 as Weight) .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes(3 as Weight)) } fn reset_members(m: u32) -> Weight { - (0 as Weight) - // Standard Error: 1_994_000 - .saturating_add((1_064_522_000 as Weight).saturating_mul(m as Weight)) + (2_253_951_000 as Weight) + // Standard Error: 1_930_000 + .saturating_add((970_167_000 as Weight).saturating_mul(m as Weight)) .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().reads((1 as Weight).saturating_mul(m as Weight))) .saturating_add(DbWeight::get().writes(2 as Weight)) .saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(m as Weight))) } fn abdicate_membership() -> Weight { - (338_747_000 as Weight) + (295_012_000 as Weight) .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } diff --git a/pallets/weights/src/pallet_identity.rs b/pallets/weights/src/pallet_identity.rs index 113491cee1..9f6039e898 100644 --- a/pallets/weights/src/pallet_identity.rs +++ b/pallets/weights/src/pallet_identity.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_identity //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,119 +53,119 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl pallet_identity::WeightInfo for WeightInfo { fn cdd_register_did(i: u32) -> Weight { - (110_240_000 as Weight) - // Standard Error: 213_000 - .saturating_add((33_148_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(DbWeight::get().reads(13 as Weight)) + (118_665_000 as Weight) + // Standard Error: 185_000 + .saturating_add((30_460_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(DbWeight::get().reads(10 as Weight)) .saturating_add(DbWeight::get().reads((2 as Weight).saturating_mul(i as Weight))) .saturating_add(DbWeight::get().writes(3 as Weight)) .saturating_add(DbWeight::get().writes((2 as Weight).saturating_mul(i as Weight))) } fn invalidate_cdd_claims() -> Weight { - (103_330_000 as Weight) + (116_347_000 as Weight) .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes(3 as Weight)) } fn remove_secondary_keys(i: u32) -> Weight { - (84_752_000 as Weight) - // Standard Error: 208_000 - .saturating_add((32_354_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(DbWeight::get().reads(4 as Weight)) + (14_977_000 as Weight) + // Standard Error: 201_000 + .saturating_add((30_365_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(DbWeight::get().reads(2 as Weight)) .saturating_add(DbWeight::get().reads((4 as Weight).saturating_mul(i as Weight))) .saturating_add(DbWeight::get().writes(1 as Weight)) .saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } fn accept_primary_key() -> Weight { - (141_907_000 as Weight) + (134_293_000 as Weight) .saturating_add(DbWeight::get().reads(9 as Weight)) .saturating_add(DbWeight::get().writes(7 as Weight)) } fn rotate_primary_key_to_secondary() -> Weight { - (141_907_000 as Weight) - .saturating_add(DbWeight::get().reads(9 as Weight)) - .saturating_add(DbWeight::get().writes(7 as Weight)) + (118_693_000 as Weight) + .saturating_add(DbWeight::get().reads(7 as Weight)) + .saturating_add(DbWeight::get().writes(6 as Weight)) } fn change_cdd_requirement_for_mk_rotation() -> Weight { - (19_537_000 as Weight).saturating_add(DbWeight::get().writes(1 as Weight)) + (16_749_000 as Weight).saturating_add(DbWeight::get().writes(1 as Weight)) } fn join_identity_as_key() -> Weight { - (130_314_000 as Weight) + (123_523_000 as Weight) .saturating_add(DbWeight::get().reads(11 as Weight)) .saturating_add(DbWeight::get().writes(5 as Weight)) } fn leave_identity_as_key() -> Weight { - (71_562_000 as Weight) + (61_454_000 as Weight) .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn add_claim() -> Weight { - (87_431_000 as Weight) - .saturating_add(DbWeight::get().reads(9 as Weight)) + (71_326_000 as Weight) + .saturating_add(DbWeight::get().reads(7 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn revoke_claim() -> Weight { - (81_137_000 as Weight) - .saturating_add(DbWeight::get().reads(6 as Weight)) + (67_373_000 as Weight) + .saturating_add(DbWeight::get().reads(4 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn revoke_claim_by_index() -> Weight { - (99_364_000 as Weight) - .saturating_add(DbWeight::get().reads(8 as Weight)) + (72_890_000 as Weight) + .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn set_permission_to_signer() -> Weight { - (63_747_000 as Weight) - .saturating_add(DbWeight::get().reads(4 as Weight)) + (45_961_000 as Weight) + .saturating_add(DbWeight::get().reads(2 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn permissions_cost(a: u32, p: u32, l: u32, e: u32) -> Weight { (0 as Weight) - // Standard Error: 200_000 - .saturating_add((1_254_000 as Weight).saturating_mul(a as Weight)) - // Standard Error: 200_000 - .saturating_add((1_027_000 as Weight).saturating_mul(p as Weight)) - // Standard Error: 200_000 - .saturating_add((75_415_000 as Weight).saturating_mul(l as Weight)) - // Standard Error: 200_000 - .saturating_add((72_009_000 as Weight).saturating_mul(e as Weight)) + // Standard Error: 328_000 + .saturating_add((408_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 328_000 + .saturating_add((408_000 as Weight).saturating_mul(p as Weight)) + // Standard Error: 328_000 + .saturating_add((60_354_000 as Weight).saturating_mul(l as Weight)) + // Standard Error: 328_000 + .saturating_add((61_522_000 as Weight).saturating_mul(e as Weight)) } fn freeze_secondary_keys() -> Weight { - (56_201_000 as Weight) - .saturating_add(DbWeight::get().reads(4 as Weight)) + (38_385_000 as Weight) + .saturating_add(DbWeight::get().reads(2 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn unfreeze_secondary_keys() -> Weight { - (55_681_000 as Weight) - .saturating_add(DbWeight::get().reads(4 as Weight)) + (36_802_000 as Weight) + .saturating_add(DbWeight::get().reads(2 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn add_authorization() -> Weight { - (65_463_000 as Weight) - .saturating_add(DbWeight::get().reads(5 as Weight)) + (50_917_000 as Weight) + .saturating_add(DbWeight::get().reads(3 as Weight)) .saturating_add(DbWeight::get().writes(3 as Weight)) } fn remove_authorization() -> Weight { - (67_445_000 as Weight) - .saturating_add(DbWeight::get().reads(5 as Weight)) + (53_795_000 as Weight) + .saturating_add(DbWeight::get().reads(3 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn add_secondary_keys_with_authorization(i: u32) -> Weight { - (151_046_000 as Weight) - // Standard Error: 413_000 - .saturating_add((80_512_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(DbWeight::get().reads(8 as Weight)) + (91_594_000 as Weight) + // Standard Error: 375_000 + .saturating_add((75_297_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().reads((2 as Weight).saturating_mul(i as Weight))) .saturating_add(DbWeight::get().writes(2 as Weight)) .saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } fn add_investor_uniqueness_claim() -> Weight { - (1_843_379_000 as Weight) - .saturating_add(DbWeight::get().reads(14 as Weight)) + (1_772_784_000 as Weight) + .saturating_add(DbWeight::get().reads(13 as Weight)) .saturating_add(DbWeight::get().writes(4 as Weight)) } fn add_investor_uniqueness_claim_v2() -> Weight { - (3_400_805_000 as Weight) - .saturating_add(DbWeight::get().reads(14 as Weight)) + (3_259_536_000 as Weight) + .saturating_add(DbWeight::get().reads(13 as Weight)) .saturating_add(DbWeight::get().writes(4 as Weight)) } } diff --git a/pallets/weights/src/pallet_im_online.rs b/pallets/weights/src/pallet_im_online.rs index 289990046a..886febe798 100644 --- a/pallets/weights/src/pallet_im_online.rs +++ b/pallets/weights/src/pallet_im_online.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_im_online //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,11 +53,11 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl pallet_im_online::WeightInfo for WeightInfo { fn validate_unsigned_and_then_heartbeat(k: u32, e: u32) -> Weight { - (158_065_000 as Weight) - // Standard Error: 3_000 - .saturating_add((267_000 as Weight).saturating_mul(k as Weight)) - // Standard Error: 39_000 - .saturating_add((541_000 as Weight).saturating_mul(e as Weight)) + (127_315_000 as Weight) + // Standard Error: 2_000 + .saturating_add((253_000 as Weight).saturating_mul(k as Weight)) + // Standard Error: 26_000 + .saturating_add((525_000 as Weight).saturating_mul(e as Weight)) .saturating_add(DbWeight::get().reads(4 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } diff --git a/pallets/weights/src/pallet_indices.rs b/pallets/weights/src/pallet_indices.rs index ce8942b06b..7b7e502899 100644 --- a/pallets/weights/src/pallet_indices.rs +++ b/pallets/weights/src/pallet_indices.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_indices //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,27 +53,27 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl pallet_indices::WeightInfo for WeightInfo { fn claim() -> Weight { - (48_280_000 as Weight) + (51_057_000 as Weight) .saturating_add(DbWeight::get().reads(1 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn transfer() -> Weight { - (59_424_000 as Weight) + (60_165_000 as Weight) .saturating_add(DbWeight::get().reads(2 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn free() -> Weight { - (45_283_000 as Weight) + (46_920_000 as Weight) .saturating_add(DbWeight::get().reads(1 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn force_transfer() -> Weight { - (48_626_000 as Weight) + (47_953_000 as Weight) .saturating_add(DbWeight::get().reads(2 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn freeze() -> Weight { - (46_434_000 as Weight) + (44_287_000 as Weight) .saturating_add(DbWeight::get().reads(1 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } diff --git a/pallets/weights/src/pallet_multisig.rs b/pallets/weights/src/pallet_multisig.rs index 380e7b3cf9..18ad79b3a7 100644 --- a/pallets/weights/src/pallet_multisig.rs +++ b/pallets/weights/src/pallet_multisig.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_multisig //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,107 +53,107 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl pallet_multisig::WeightInfo for WeightInfo { fn create_multisig(i: u32) -> Weight { - (68_504_000 as Weight) - // Standard Error: 96_000 - .saturating_add((21_358_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(DbWeight::get().reads(8 as Weight)) + (111_279_000 as Weight) + // Standard Error: 158_000 + .saturating_add((21_182_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(4 as Weight)) .saturating_add(DbWeight::get().writes((2 as Weight).saturating_mul(i as Weight))) } fn create_or_approve_proposal_as_identity() -> Weight { - (175_931_000 as Weight) - .saturating_add(DbWeight::get().reads(12 as Weight)) + (181_874_000 as Weight) + .saturating_add(DbWeight::get().reads(11 as Weight)) .saturating_add(DbWeight::get().writes(7 as Weight)) } fn create_or_approve_proposal_as_key() -> Weight { - (166_479_000 as Weight) + (172_901_000 as Weight) .saturating_add(DbWeight::get().reads(11 as Weight)) .saturating_add(DbWeight::get().writes(7 as Weight)) } fn create_proposal_as_identity() -> Weight { - (159_753_000 as Weight) - .saturating_add(DbWeight::get().reads(11 as Weight)) + (164_709_000 as Weight) + .saturating_add(DbWeight::get().reads(10 as Weight)) .saturating_add(DbWeight::get().writes(7 as Weight)) } fn create_proposal_as_key() -> Weight { - (159_402_000 as Weight) + (160_805_000 as Weight) .saturating_add(DbWeight::get().reads(10 as Weight)) .saturating_add(DbWeight::get().writes(7 as Weight)) } fn approve_as_identity() -> Weight { - (135_081_000 as Weight) - .saturating_add(DbWeight::get().reads(11 as Weight)) + (129_643_000 as Weight) + .saturating_add(DbWeight::get().reads(10 as Weight)) .saturating_add(DbWeight::get().writes(4 as Weight)) } fn approve_as_key() -> Weight { - (116_833_000 as Weight) + (122_690_000 as Weight) .saturating_add(DbWeight::get().reads(8 as Weight)) .saturating_add(DbWeight::get().writes(4 as Weight)) } fn reject_as_identity() -> Weight { - (96_650_000 as Weight) + (95_273_000 as Weight) .saturating_add(DbWeight::get().reads(8 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn reject_as_key() -> Weight { - (83_560_000 as Weight) + (83_438_000 as Weight) .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn accept_multisig_signer_as_identity() -> Weight { - (99_648_000 as Weight) - .saturating_add(DbWeight::get().reads(8 as Weight)) + (95_121_000 as Weight) + .saturating_add(DbWeight::get().reads(7 as Weight)) .saturating_add(DbWeight::get().writes(4 as Weight)) } fn accept_multisig_signer_as_key() -> Weight { - (97_168_000 as Weight) + (95_769_000 as Weight) .saturating_add(DbWeight::get().reads(7 as Weight)) .saturating_add(DbWeight::get().writes(5 as Weight)) } fn add_multisig_signer() -> Weight { - (60_918_000 as Weight) + (62_462_000 as Weight) .saturating_add(DbWeight::get().reads(2 as Weight)) .saturating_add(DbWeight::get().writes(3 as Weight)) } fn remove_multisig_signer() -> Weight { - (63_994_000 as Weight) + (65_702_000 as Weight) .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn add_multisig_signers_via_creator(i: u32) -> Weight { - (38_363_000 as Weight) - // Standard Error: 130_000 - .saturating_add((30_270_000 as Weight).saturating_mul(i as Weight)) + (46_963_000 as Weight) + // Standard Error: 115_000 + .saturating_add((30_168_000 as Weight).saturating_mul(i as Weight)) .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) .saturating_add(DbWeight::get().writes((2 as Weight).saturating_mul(i as Weight))) } fn remove_multisig_signers_via_creator(i: u32) -> Weight { - (54_496_000 as Weight) - // Standard Error: 106_000 - .saturating_add((24_356_000 as Weight).saturating_mul(i as Weight)) + (69_486_000 as Weight) + // Standard Error: 85_000 + .saturating_add((23_834_000 as Weight).saturating_mul(i as Weight)) .saturating_add(DbWeight::get().reads(8 as Weight)) .saturating_add(DbWeight::get().reads((1 as Weight).saturating_mul(i as Weight))) .saturating_add(DbWeight::get().writes(1 as Weight)) .saturating_add(DbWeight::get().writes((2 as Weight).saturating_mul(i as Weight))) } fn change_sigs_required() -> Weight { - (48_413_000 as Weight) + (45_301_000 as Weight) .saturating_add(DbWeight::get().reads(4 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn make_multisig_signer() -> Weight { - (81_025_000 as Weight) - .saturating_add(DbWeight::get().reads(7 as Weight)) + (76_564_000 as Weight) + .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn make_multisig_primary() -> Weight { - (98_846_000 as Weight) + (103_348_000 as Weight) .saturating_add(DbWeight::get().reads(9 as Weight)) .saturating_add(DbWeight::get().writes(3 as Weight)) } fn execute_scheduled_proposal() -> Weight { - (101_310_000 as Weight) + (102_191_000 as Weight) .saturating_add(DbWeight::get().reads(9 as Weight)) .saturating_add(DbWeight::get().writes(4 as Weight)) } diff --git a/pallets/weights/src/pallet_pips.rs b/pallets/weights/src/pallet_pips.rs index e57fc5671b..f5073eeb3e 100644 --- a/pallets/weights/src/pallet_pips.rs +++ b/pallets/weights/src/pallet_pips.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_pips //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,88 +53,86 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl pallet_pips::WeightInfo for WeightInfo { fn set_prune_historical_pips() -> Weight { - (25_623_000 as Weight) + (23_833_000 as Weight) .saturating_add(DbWeight::get().reads(1 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn set_min_proposal_deposit() -> Weight { - (23_993_000 as Weight) + (24_451_000 as Weight) .saturating_add(DbWeight::get().reads(1 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn set_default_enactment_period() -> Weight { - (22_628_000 as Weight) + (24_148_000 as Weight) .saturating_add(DbWeight::get().reads(1 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn set_pending_pip_expiry() -> Weight { - (23_243_000 as Weight) + (24_220_000 as Weight) .saturating_add(DbWeight::get().reads(1 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn set_max_pip_skip_count() -> Weight { - (22_268_000 as Weight) + (23_115_000 as Weight) .saturating_add(DbWeight::get().reads(1 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn set_active_pip_limit() -> Weight { - (23_826_000 as Weight) + (24_295_000 as Weight) .saturating_add(DbWeight::get().reads(1 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn propose_from_community() -> Weight { - (209_536_000 as Weight) - .saturating_add(DbWeight::get().reads(16 as Weight)) + (204_382_000 as Weight) + .saturating_add(DbWeight::get().reads(14 as Weight)) .saturating_add(DbWeight::get().writes(10 as Weight)) } fn propose_from_committee() -> Weight { - (117_058_000 as Weight) + (111_836_000 as Weight) .saturating_add(DbWeight::get().reads(7 as Weight)) .saturating_add(DbWeight::get().writes(5 as Weight)) } fn vote() -> Weight { - (203_763_000 as Weight) - .saturating_add(DbWeight::get().reads(9 as Weight)) + (194_359_000 as Weight) + .saturating_add(DbWeight::get().reads(7 as Weight)) .saturating_add(DbWeight::get().writes(4 as Weight)) } fn approve_committee_proposal() -> Weight { - (168_425_000 as Weight) + (177_335_000 as Weight) .saturating_add(DbWeight::get().reads(4 as Weight)) .saturating_add(DbWeight::get().writes(4 as Weight)) } fn reject_proposal() -> Weight { - (290_065_000 as Weight) + (239_439_000 as Weight) .saturating_add(DbWeight::get().reads(9 as Weight)) .saturating_add(DbWeight::get().writes(10 as Weight)) } fn prune_proposal() -> Weight { - (131_168_000 as Weight) + (120_414_000 as Weight) .saturating_add(DbWeight::get().reads(2 as Weight)) .saturating_add(DbWeight::get().writes(5 as Weight)) } fn reschedule_execution() -> Weight { - (212_786_000 as Weight) - .saturating_add(DbWeight::get().reads(10 as Weight)) - .saturating_add(DbWeight::get().writes(6 as Weight)) + (126_134_000 as Weight) + .saturating_add(DbWeight::get().reads(7 as Weight)) + .saturating_add(DbWeight::get().writes(4 as Weight)) } fn clear_snapshot() -> Weight { - (60_874_000 as Weight) - .saturating_add(DbWeight::get().reads(6 as Weight)) + (52_739_000 as Weight) + .saturating_add(DbWeight::get().reads(4 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn snapshot() -> Weight { - (1_109_592_000 as Weight) - .saturating_add(DbWeight::get().reads(7 as Weight)) + (1_033_312_000 as Weight) + .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes(3 as Weight)) } fn enact_snapshot_results(a: u32, r: u32, s: u32) -> Weight { (0 as Weight) - // Standard Error: 86_488_000 - .saturating_add((69_546_000 as Weight).saturating_mul(a as Weight)) - // Standard Error: 86_488_000 - .saturating_add((16_423_208_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 86_488_000 - .saturating_add((167_583_000 as Weight).saturating_mul(s as Weight)) + // Standard Error: 72_892_000 + .saturating_add((243_812_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 72_892_000 + .saturating_add((15_607_893_000 as Weight).saturating_mul(r as Weight)) .saturating_add(DbWeight::get().reads(689 as Weight)) .saturating_add(DbWeight::get().reads((3 as Weight).saturating_mul(a as Weight))) .saturating_add(DbWeight::get().reads((405 as Weight).saturating_mul(r as Weight))) @@ -145,12 +143,12 @@ impl pallet_pips::WeightInfo for WeightInfo { .saturating_add(DbWeight::get().writes((2 as Weight).saturating_mul(s as Weight))) } fn execute_scheduled_pip() -> Weight { - (21_543_350_000 as Weight) + (21_041_243_000 as Weight) .saturating_add(DbWeight::get().reads(1204 as Weight)) .saturating_add(DbWeight::get().writes(1606 as Weight)) } fn expire_scheduled_pip() -> Weight { - (20_932_739_000 as Weight) + (20_626_621_000 as Weight) .saturating_add(DbWeight::get().reads(1207 as Weight)) .saturating_add(DbWeight::get().writes(1607 as Weight)) } diff --git a/pallets/weights/src/pallet_portfolio.rs b/pallets/weights/src/pallet_portfolio.rs index 504dfd91e3..01d0c649d6 100644 --- a/pallets/weights/src/pallet_portfolio.rs +++ b/pallets/weights/src/pallet_portfolio.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_portfolio //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,39 +53,39 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl pallet_portfolio::WeightInfo for WeightInfo { fn create_portfolio() -> Weight { - (71_683_000 as Weight) - .saturating_add(DbWeight::get().reads(6 as Weight)) + (61_304_000 as Weight) + .saturating_add(DbWeight::get().reads(4 as Weight)) .saturating_add(DbWeight::get().writes(3 as Weight)) } fn delete_portfolio() -> Weight { - (91_165_000 as Weight) - .saturating_add(DbWeight::get().reads(7 as Weight)) + (82_585_000 as Weight) + .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes(4 as Weight)) } fn move_portfolio_funds(a: u32) -> Weight { - (152_021_000 as Weight) - // Standard Error: 208_000 - .saturating_add((47_912_000 as Weight).saturating_mul(a as Weight)) - .saturating_add(DbWeight::get().reads(8 as Weight)) + (0 as Weight) + // Standard Error: 580_000 + .saturating_add((45_803_000 as Weight).saturating_mul(a as Weight)) + .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().reads((3 as Weight).saturating_mul(a as Weight))) .saturating_add(DbWeight::get().writes(2 as Weight)) .saturating_add(DbWeight::get().writes((2 as Weight).saturating_mul(a as Weight))) } fn rename_portfolio(i: u32) -> Weight { - (68_545_000 as Weight) + (59_960_000 as Weight) // Standard Error: 2_000 - .saturating_add((31_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(DbWeight::get().reads(6 as Weight)) + .saturating_add((20_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(DbWeight::get().reads(4 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn quit_portfolio_custody() -> Weight { - (73_294_000 as Weight) - .saturating_add(DbWeight::get().reads(5 as Weight)) + (53_843_000 as Weight) + .saturating_add(DbWeight::get().reads(3 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn accept_portfolio_custody() -> Weight { - (107_872_000 as Weight) - .saturating_add(DbWeight::get().reads(6 as Weight)) + (85_308_000 as Weight) + .saturating_add(DbWeight::get().reads(4 as Weight)) .saturating_add(DbWeight::get().writes(5 as Weight)) } } diff --git a/pallets/weights/src/pallet_protocol_fee.rs b/pallets/weights/src/pallet_protocol_fee.rs index 86c945f78d..1563e2bb3a 100644 --- a/pallets/weights/src/pallet_protocol_fee.rs +++ b/pallets/weights/src/pallet_protocol_fee.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_protocol_fee //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,9 +53,9 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl pallet_protocol_fee::WeightInfo for WeightInfo { fn change_coefficient() -> Weight { - (19_934_000 as Weight).saturating_add(DbWeight::get().writes(1 as Weight)) + (17_369_000 as Weight).saturating_add(DbWeight::get().writes(1 as Weight)) } fn change_base_fee() -> Weight { - (21_511_000 as Weight).saturating_add(DbWeight::get().writes(1 as Weight)) + (20_133_000 as Weight).saturating_add(DbWeight::get().writes(1 as Weight)) } } diff --git a/pallets/weights/src/pallet_relayer.rs b/pallets/weights/src/pallet_relayer.rs index 5e46766b73..89dfe4e662 100644 --- a/pallets/weights/src/pallet_relayer.rs +++ b/pallets/weights/src/pallet_relayer.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_relayer //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -55,33 +55,33 @@ use sp_std::marker::PhantomData; pub struct WeightInfo(PhantomData); impl pallet_relayer::WeightInfo for WeightInfo { fn set_paying_key() -> Weight { - (87_949_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + (67_585_000 as Weight) + .saturating_add(DbWeight::get().reads(3 as Weight)) + .saturating_add(DbWeight::get().writes(3 as Weight)) } fn accept_paying_key() -> Weight { - (160_931_000 as Weight) - .saturating_add(T::DbWeight::get().reads(15 as Weight)) - .saturating_add(T::DbWeight::get().writes(5 as Weight)) + (166_613_000 as Weight) + .saturating_add(DbWeight::get().reads(15 as Weight)) + .saturating_add(DbWeight::get().writes(5 as Weight)) } fn remove_paying_key() -> Weight { - (72_866_000 as Weight) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + (64_417_000 as Weight) + .saturating_add(DbWeight::get().reads(5 as Weight)) + .saturating_add(DbWeight::get().writes(3 as Weight)) } fn update_polyx_limit() -> Weight { - (61_590_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + (51_208_000 as Weight) + .saturating_add(DbWeight::get().reads(3 as Weight)) + .saturating_add(DbWeight::get().writes(1 as Weight)) } fn increase_polyx_limit() -> Weight { - (60_400_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + (51_081_000 as Weight) + .saturating_add(DbWeight::get().reads(3 as Weight)) + .saturating_add(DbWeight::get().writes(1 as Weight)) } fn decrease_polyx_limit() -> Weight { - (59_038_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + (51_632_000 as Weight) + .saturating_add(DbWeight::get().reads(3 as Weight)) + .saturating_add(DbWeight::get().writes(1 as Weight)) } } diff --git a/pallets/weights/src/pallet_scheduler.rs b/pallets/weights/src/pallet_scheduler.rs index 150c913f89..1f3fe6ae12 100644 --- a/pallets/weights/src/pallet_scheduler.rs +++ b/pallets/weights/src/pallet_scheduler.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_scheduler //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,30 +53,30 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl pallet_scheduler::WeightInfo for WeightInfo { fn schedule(s: u32) -> Weight { - (36_189_000 as Weight) - // Standard Error: 20_000 - .saturating_add((132_000 as Weight).saturating_mul(s as Weight)) + (30_395_000 as Weight) + // Standard Error: 8_000 + .saturating_add((115_000 as Weight).saturating_mul(s as Weight)) .saturating_add(DbWeight::get().reads(1 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn cancel(s: u32) -> Weight { - (30_387_000 as Weight) - // Standard Error: 61_000 - .saturating_add((4_517_000 as Weight).saturating_mul(s as Weight)) + (26_759_000 as Weight) + // Standard Error: 34_000 + .saturating_add((3_932_000 as Weight).saturating_mul(s as Weight)) .saturating_add(DbWeight::get().reads(1 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn schedule_named(s: u32) -> Weight { - (42_515_000 as Weight) - // Standard Error: 21_000 - .saturating_add((157_000 as Weight).saturating_mul(s as Weight)) + (37_013_000 as Weight) + // Standard Error: 7_000 + .saturating_add((154_000 as Weight).saturating_mul(s as Weight)) .saturating_add(DbWeight::get().reads(2 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } fn cancel_named(s: u32) -> Weight { - (28_063_000 as Weight) - // Standard Error: 64_000 - .saturating_add((4_476_000 as Weight).saturating_mul(s as Weight)) + (26_064_000 as Weight) + // Standard Error: 34_000 + .saturating_add((4_096_000 as Weight).saturating_mul(s as Weight)) .saturating_add(DbWeight::get().reads(2 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } diff --git a/pallets/weights/src/pallet_session.rs b/pallets/weights/src/pallet_session.rs index 4fd10ae152..fb7041e0ad 100644 --- a/pallets/weights/src/pallet_session.rs +++ b/pallets/weights/src/pallet_session.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_session //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,12 +53,12 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl pallet_session::WeightInfo for WeightInfo { fn set_keys() -> Weight { - (96_753_000 as Weight) + (87_632_000 as Weight) .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(5 as Weight)) } fn purge_keys() -> Weight { - (57_123_000 as Weight) + (51_544_000 as Weight) .saturating_add(DbWeight::get().reads(2 as Weight)) .saturating_add(DbWeight::get().writes(5 as Weight)) } diff --git a/pallets/weights/src/pallet_settlement.rs b/pallets/weights/src/pallet_settlement.rs index e988a8d0a4..f8cc94ebfa 100644 --- a/pallets/weights/src/pallet_settlement.rs +++ b/pallets/weights/src/pallet_settlement.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_settlement //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,145 +53,145 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl pallet_settlement::WeightInfo for WeightInfo { fn create_venue(d: u32, s: u32) -> Weight { - (91_112_000 as Weight) + (56_825_000 as Weight) // Standard Error: 1_000 - .saturating_add((2_000 as Weight).saturating_mul(d as Weight)) - // Standard Error: 76_000 - .saturating_add((3_924_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(DbWeight::get().reads(6 as Weight)) + .saturating_add((5_000 as Weight).saturating_mul(d as Weight)) + // Standard Error: 60_000 + .saturating_add((3_507_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(DbWeight::get().reads(4 as Weight)) .saturating_add(DbWeight::get().writes(4 as Weight)) .saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } fn update_venue_details(d: u32) -> Weight { - (61_790_000 as Weight) + (46_088_000 as Weight) // Standard Error: 0 .saturating_add((4_000 as Weight).saturating_mul(d as Weight)) - .saturating_add(DbWeight::get().reads(5 as Weight)) + .saturating_add(DbWeight::get().reads(3 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn update_venue_type() -> Weight { - (55_498_000 as Weight) - .saturating_add(DbWeight::get().reads(5 as Weight)) + (43_501_000 as Weight) + .saturating_add(DbWeight::get().reads(3 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn add_instruction(l: u32) -> Weight { - (52_527_000 as Weight) - // Standard Error: 876_000 - .saturating_add((24_260_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(DbWeight::get().reads(6 as Weight)) + (43_690_000 as Weight) + // Standard Error: 385_000 + .saturating_add((19_639_000 as Weight).saturating_mul(l as Weight)) + .saturating_add(DbWeight::get().reads(4 as Weight)) .saturating_add(DbWeight::get().reads((1 as Weight).saturating_mul(l as Weight))) .saturating_add(DbWeight::get().writes(1 as Weight)) .saturating_add(DbWeight::get().writes((3 as Weight).saturating_mul(l as Weight))) } fn add_instruction_with_settle_on_block_type(l: u32) -> Weight { - (100_668_000 as Weight) - // Standard Error: 699_000 - .saturating_add((21_816_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(DbWeight::get().reads(8 as Weight)) + (81_333_000 as Weight) + // Standard Error: 372_000 + .saturating_add((18_629_000 as Weight).saturating_mul(l as Weight)) + .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().reads((1 as Weight).saturating_mul(l as Weight))) .saturating_add(DbWeight::get().writes(3 as Weight)) .saturating_add(DbWeight::get().writes((3 as Weight).saturating_mul(l as Weight))) } fn add_and_affirm_instruction(l: u32) -> Weight { - (135_882_000 as Weight) - // Standard Error: 1_254_000 - .saturating_add((79_895_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(DbWeight::get().reads(8 as Weight)) + (109_447_000 as Weight) + // Standard Error: 975_000 + .saturating_add((71_949_000 as Weight).saturating_mul(l as Weight)) + .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().reads((5 as Weight).saturating_mul(l as Weight))) .saturating_add(DbWeight::get().writes(4 as Weight)) .saturating_add(DbWeight::get().writes((6 as Weight).saturating_mul(l as Weight))) } fn add_and_affirm_instruction_with_settle_on_block_type(l: u32) -> Weight { - (179_262_000 as Weight) - // Standard Error: 1_798_000 - .saturating_add((80_113_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(DbWeight::get().reads(10 as Weight)) + (171_296_000 as Weight) + // Standard Error: 2_308_000 + .saturating_add((73_437_000 as Weight).saturating_mul(l as Weight)) + .saturating_add(DbWeight::get().reads(8 as Weight)) .saturating_add(DbWeight::get().reads((5 as Weight).saturating_mul(l as Weight))) .saturating_add(DbWeight::get().writes(6 as Weight)) .saturating_add(DbWeight::get().writes((6 as Weight).saturating_mul(l as Weight))) } fn set_venue_filtering() -> Weight { - (65_795_000 as Weight) + (60_724_000 as Weight) .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn allow_venues(v: u32) -> Weight { - (63_769_000 as Weight) - // Standard Error: 38_000 - .saturating_add((3_885_000 as Weight).saturating_mul(v as Weight)) + (55_454_000 as Weight) + // Standard Error: 13_000 + .saturating_add((3_545_000 as Weight).saturating_mul(v as Weight)) .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(v as Weight))) } fn disallow_venues(v: u32) -> Weight { - (64_116_000 as Weight) - // Standard Error: 50_000 - .saturating_add((3_843_000 as Weight).saturating_mul(v as Weight)) + (57_211_000 as Weight) + // Standard Error: 15_000 + .saturating_add((3_479_000 as Weight).saturating_mul(v as Weight)) .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(v as Weight))) } fn withdraw_affirmation(l: u32) -> Weight { - (84_006_000 as Weight) - // Standard Error: 1_020_000 - .saturating_add((65_489_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(DbWeight::get().reads(8 as Weight)) + (58_676_000 as Weight) + // Standard Error: 672_000 + .saturating_add((63_493_000 as Weight).saturating_mul(l as Weight)) + .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().reads((5 as Weight).saturating_mul(l as Weight))) .saturating_add(DbWeight::get().writes(1 as Weight)) .saturating_add(DbWeight::get().writes((4 as Weight).saturating_mul(l as Weight))) } fn unclaim_receipt() -> Weight { - (124_357_000 as Weight) - .saturating_add(DbWeight::get().reads(10 as Weight)) + (90_234_000 as Weight) + .saturating_add(DbWeight::get().reads(8 as Weight)) .saturating_add(DbWeight::get().writes(3 as Weight)) } fn reject_instruction(l: u32) -> Weight { - (131_459_000 as Weight) - // Standard Error: 2_205_000 - .saturating_add((54_210_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(DbWeight::get().reads(8 as Weight)) + (99_671_000 as Weight) + // Standard Error: 590_000 + .saturating_add((46_625_000 as Weight).saturating_mul(l as Weight)) + .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().reads((3 as Weight).saturating_mul(l as Weight))) .saturating_add(DbWeight::get().writes(3 as Weight)) .saturating_add(DbWeight::get().writes((6 as Weight).saturating_mul(l as Weight))) } fn affirm_instruction(l: u32) -> Weight { - (107_230_000 as Weight) - // Standard Error: 1_175_000 - .saturating_add((44_568_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(DbWeight::get().reads(9 as Weight)) + (95_275_000 as Weight) + // Standard Error: 851_000 + .saturating_add((40_022_000 as Weight).saturating_mul(l as Weight)) + .saturating_add(DbWeight::get().reads(7 as Weight)) .saturating_add(DbWeight::get().reads((3 as Weight).saturating_mul(l as Weight))) .saturating_add(DbWeight::get().writes(2 as Weight)) .saturating_add(DbWeight::get().writes((2 as Weight).saturating_mul(l as Weight))) } fn claim_receipt() -> Weight { - (196_347_000 as Weight) - .saturating_add(DbWeight::get().reads(11 as Weight)) + (180_780_000 as Weight) + .saturating_add(DbWeight::get().reads(9 as Weight)) .saturating_add(DbWeight::get().writes(3 as Weight)) } fn affirm_with_receipts(r: u32) -> Weight { - (90_487_000 as Weight) - // Standard Error: 3_700_000 - .saturating_add((155_201_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(DbWeight::get().reads(8 as Weight)) + (87_461_000 as Weight) + // Standard Error: 2_091_000 + .saturating_add((130_611_000 as Weight).saturating_mul(r as Weight)) + .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().reads((4 as Weight).saturating_mul(r as Weight))) .saturating_add(DbWeight::get().writes(1 as Weight)) .saturating_add(DbWeight::get().writes((4 as Weight).saturating_mul(r as Weight))) } fn change_receipt_validity() -> Weight { - (53_603_000 as Weight) - .saturating_add(DbWeight::get().reads(4 as Weight)) + (43_054_000 as Weight) + .saturating_add(DbWeight::get().reads(2 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn execute_scheduled_instruction(l: u32) -> Weight { - (201_656_000 as Weight) - // Standard Error: 8_108_000 - .saturating_add((1_166_394_000 as Weight).saturating_mul(l as Weight)) + (108_854_000 as Weight) + // Standard Error: 7_870_000 + .saturating_add((1_114_164_000 as Weight).saturating_mul(l as Weight)) .saturating_add(DbWeight::get().reads(38 as Weight)) .saturating_add(DbWeight::get().reads((31 as Weight).saturating_mul(l as Weight))) .saturating_add(DbWeight::get().writes(4 as Weight)) .saturating_add(DbWeight::get().writes((16 as Weight).saturating_mul(l as Weight))) } fn reschedule_instruction() -> Weight { - (229_782_000 as Weight) - .saturating_add(DbWeight::get().reads(18 as Weight)) + (212_279_000 as Weight) + .saturating_add(DbWeight::get().reads(16 as Weight)) .saturating_add(DbWeight::get().writes(3 as Weight)) } } diff --git a/pallets/weights/src/pallet_statistics.rs b/pallets/weights/src/pallet_statistics.rs index 7b6f939d7a..878a7d05b6 100644 --- a/pallets/weights/src/pallet_statistics.rs +++ b/pallets/weights/src/pallet_statistics.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_statistics //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,26 +53,26 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl pallet_statistics::WeightInfo for WeightInfo { fn add_transfer_manager() -> Weight { - (71_190_000 as Weight) + (63_842_000 as Weight) .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn remove_transfer_manager() -> Weight { - (78_766_000 as Weight) + (61_562_000 as Weight) .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn add_exempted_entities(i: u32) -> Weight { - (44_533_000 as Weight) - // Standard Error: 28_000 - .saturating_add((4_711_000 as Weight).saturating_mul(i as Weight)) + (79_926_000 as Weight) + // Standard Error: 17_000 + .saturating_add((4_260_000 as Weight).saturating_mul(i as Weight)) .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } fn remove_exempted_entities(i: u32) -> Weight { - (68_738_000 as Weight) - // Standard Error: 25_000 - .saturating_add((4_640_000 as Weight).saturating_mul(i as Weight)) + (65_490_000 as Weight) + // Standard Error: 15_000 + .saturating_add((4_348_000 as Weight).saturating_mul(i as Weight)) .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } diff --git a/pallets/weights/src/pallet_sto.rs b/pallets/weights/src/pallet_sto.rs index 1638fe3bf9..52998f10e7 100644 --- a/pallets/weights/src/pallet_sto.rs +++ b/pallets/weights/src/pallet_sto.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_sto //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,35 +53,35 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl pallet_sto::WeightInfo for WeightInfo { fn create_fundraiser(i: u32) -> Weight { - (124_502_000 as Weight) - // Standard Error: 552_000 - .saturating_add((1_670_000 as Weight).saturating_mul(i as Weight)) + (116_312_000 as Weight) + // Standard Error: 290_000 + .saturating_add((331_000 as Weight).saturating_mul(i as Weight)) .saturating_add(DbWeight::get().reads(11 as Weight)) .saturating_add(DbWeight::get().writes(4 as Weight)) } fn invest() -> Weight { - (2_768_665_000 as Weight) - .saturating_add(DbWeight::get().reads(110 as Weight)) + (2_546_064_000 as Weight) + .saturating_add(DbWeight::get().reads(108 as Weight)) .saturating_add(DbWeight::get().writes(31 as Weight)) } fn freeze_fundraiser() -> Weight { - (98_427_000 as Weight) + (78_588_000 as Weight) .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn unfreeze_fundraiser() -> Weight { - (96_900_000 as Weight) + (90_481_000 as Weight) .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn modify_fundraiser_window() -> Weight { - (100_084_000 as Weight) + (77_380_000 as Weight) .saturating_add(DbWeight::get().reads(7 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn stop() -> Weight { - (90_814_000 as Weight) - .saturating_add(DbWeight::get().reads(7 as Weight)) + (79_575_000 as Weight) + .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } } diff --git a/pallets/weights/src/pallet_test_utils.rs b/pallets/weights/src/pallet_test_utils.rs index af5cf253d6..8832419ac9 100644 --- a/pallets/weights/src/pallet_test_utils.rs +++ b/pallets/weights/src/pallet_test_utils.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_test_utils //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,23 +53,23 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl pallet_test_utils::WeightInfo for WeightInfo { fn register_did(i: u32) -> Weight { - (1_090_122_000 as Weight) - // Standard Error: 263_000 - .saturating_add((32_018_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(DbWeight::get().reads(11 as Weight)) + (1_095_699_000 as Weight) + // Standard Error: 200_000 + .saturating_add((28_364_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(DbWeight::get().reads(10 as Weight)) .saturating_add(DbWeight::get().reads((2 as Weight).saturating_mul(i as Weight))) .saturating_add(DbWeight::get().writes(4 as Weight)) .saturating_add(DbWeight::get().writes((2 as Weight).saturating_mul(i as Weight))) } fn mock_cdd_register_did() -> Weight { - (1_055_173_000 as Weight) - .saturating_add(DbWeight::get().reads(15 as Weight)) + (1_053_638_000 as Weight) + .saturating_add(DbWeight::get().reads(12 as Weight)) .saturating_add(DbWeight::get().writes(4 as Weight)) } fn get_my_did() -> Weight { - (42_151_000 as Weight).saturating_add(DbWeight::get().reads(4 as Weight)) + (34_830_000 as Weight).saturating_add(DbWeight::get().reads(2 as Weight)) } fn get_cdd_of() -> Weight { - (85_419_000 as Weight).saturating_add(DbWeight::get().reads(10 as Weight)) + (77_397_000 as Weight).saturating_add(DbWeight::get().reads(8 as Weight)) } } diff --git a/pallets/weights/src/pallet_timestamp.rs b/pallets/weights/src/pallet_timestamp.rs index 198de96427..9686e1b6b0 100644 --- a/pallets/weights/src/pallet_timestamp.rs +++ b/pallets/weights/src/pallet_timestamp.rs @@ -18,7 +18,7 @@ //! Autogenerated weights for pallet_timestamp //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-09-22, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] +//! DATE: 2022-01-13, STEPS: [100, ], REPEAT: 5, LOW RANGE: [], HIGH RANGE: [] //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: @@ -53,11 +53,11 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; pub struct WeightInfo; impl pallet_timestamp::WeightInfo for WeightInfo { fn set() -> Weight { - (10_162_000 as Weight) + (9_256_000 as Weight) .saturating_add(DbWeight::get().reads(2 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } fn on_finalize() -> Weight { - (6_101_000 as Weight) + (5_384_000 as Weight) } } From 7c3623b941d07f37db985914e933ecab915e6af2 Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Tue, 18 Jan 2022 22:47:14 +0800 Subject: [PATCH 15/53] Update weights template. (#1195) Co-authored-by: Adam Dossa --- .maintain/frame-weight-template.hbs | 55 ++++------------------------- 1 file changed, 7 insertions(+), 48 deletions(-) diff --git a/.maintain/frame-weight-template.hbs b/.maintain/frame-weight-template.hbs index 2253452e20..11a9d0ca63 100644 --- a/.maintain/frame-weight-template.hbs +++ b/.maintain/frame-weight-template.hbs @@ -29,52 +29,11 @@ #![allow(unused_parens)] #![allow(unused_imports)] -use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; -use sp_std::marker::PhantomData; - -/// Weight functions needed for {{pallet}}. -pub trait WeightInfo { - {{~#each benchmarks as |benchmark|}} - fn {{benchmark.name~}} - ( - {{~#each benchmark.components as |c| ~}} - {{c.name}}: u32, {{/each~}} - ) -> Weight; - {{~/each}} -} +use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; /// Weights for {{pallet}} using the Substrate node and recommended hardware. -pub struct SubstrateWeight(PhantomData); -impl WeightInfo for SubstrateWeight { - {{~#each benchmarks as |benchmark|}} - fn {{benchmark.name~}} - ( - {{~#each benchmark.components as |c| ~}} - {{~#if (not c.is_used)}}_{{/if}}{{c.name}}: u32, {{/each~}} - ) -> Weight { - ({{underscore benchmark.base_weight}} as Weight) - {{~#each benchmark.component_weight as |cw|}} - // Standard Error: {{underscore cw.error}} - .saturating_add(({{underscore cw.slope}} as Weight).saturating_mul({{cw.name}} as Weight)) - {{~/each}} - {{~#if (ne benchmark.base_reads "0")}} - .saturating_add(T::DbWeight::get().reads({{benchmark.base_reads}} as Weight)) - {{~/if}} - {{~#each benchmark.component_reads as |cr|}} - .saturating_add(T::DbWeight::get().reads(({{cr.slope}} as Weight).saturating_mul({{cr.name}} as Weight))) - {{~/each}} - {{~#if (ne benchmark.base_writes "0")}} - .saturating_add(T::DbWeight::get().writes({{benchmark.base_writes}} as Weight)) - {{~/if}} - {{~#each benchmark.component_writes as |cw|}} - .saturating_add(T::DbWeight::get().writes(({{cw.slope}} as Weight).saturating_mul({{cw.name}} as Weight))) - {{~/each}} - } - {{~/each}} -} - -// For backwards compatibility and tests -impl WeightInfo for () { +pub struct WeightInfo; +impl {{pallet}}::WeightInfo for WeightInfo { {{~#each benchmarks as |benchmark|}} fn {{benchmark.name~}} ( @@ -87,16 +46,16 @@ impl WeightInfo for () { .saturating_add(({{underscore cw.slope}} as Weight).saturating_mul({{cw.name}} as Weight)) {{~/each}} {{~#if (ne benchmark.base_reads "0")}} - .saturating_add(RocksDbWeight::get().reads({{benchmark.base_reads}} as Weight)) + .saturating_add(DbWeight::get().reads({{benchmark.base_reads}} as Weight)) {{~/if}} {{~#each benchmark.component_reads as |cr|}} - .saturating_add(RocksDbWeight::get().reads(({{cr.slope}} as Weight).saturating_mul({{cr.name}} as Weight))) + .saturating_add(DbWeight::get().reads(({{cr.slope}} as Weight).saturating_mul({{cr.name}} as Weight))) {{~/each}} {{~#if (ne benchmark.base_writes "0")}} - .saturating_add(RocksDbWeight::get().writes({{benchmark.base_writes}} as Weight)) + .saturating_add(DbWeight::get().writes({{benchmark.base_writes}} as Weight)) {{~/if}} {{~#each benchmark.component_writes as |cw|}} - .saturating_add(RocksDbWeight::get().writes(({{cw.slope}} as Weight).saturating_mul({{cw.name}} as Weight))) + .saturating_add(DbWeight::get().writes(({{cw.slope}} as Weight).saturating_mul({{cw.name}} as Weight))) {{~/each}} } {{~/each}} From 1fde1c9ff4d3d9a6980187e73a5e033ec7638b23 Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Wed, 19 Jan 2022 20:07:18 +0800 Subject: [PATCH 16/53] Fix order of calls in identity pallet. (#1201) --- pallets/identity/src/lib.rs | 38 ++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/pallets/identity/src/lib.rs b/pallets/identity/src/lib.rs index 06d01cd2c1..67574725e7 100644 --- a/pallets/identity/src/lib.rs +++ b/pallets/identity/src/lib.rs @@ -318,25 +318,6 @@ decl_module! { Self::accept_primary_key_rotation(origin, rotation_auth_id, optional_cdd_auth_id) } - /// Call this with the new primary key. By invoking this method, caller accepts authorization - /// to become the new primary key of the issuing identity. If a CDD service provider approved - /// this change, (or this is not required), primary key of the DID is updated. - /// - /// The caller (new primary key) must be either a secondary key of the issuing identity, or - /// unlinked to any identity. - /// - /// Differs from accept_primary_key in that it will leave the old primary key as a secondary - /// key with the permissions specified in the corresponding RotatePrimaryKeyToSecondary authorization - /// instead of unlinking the old primary key. - /// - /// # Arguments - /// * `owner_auth_id` Authorization from the owner who initiated the change - /// * `cdd_auth_id` Authorization from a CDD service provider - #[weight = ::WeightInfo::rotate_primary_key_to_secondary()] - pub fn rotate_primary_key_to_secondary(origin, auth_id:u64, optional_cdd_auth_id: Option) -> DispatchResult { - Self::base_rotate_primary_key_to_secondary(origin, auth_id, optional_cdd_auth_id) - } - /// Set if CDD authorization is required for updating primary key of an identity. /// Callable via root (governance) /// @@ -533,6 +514,25 @@ decl_module! { let issuer = Self::ensure_perms(origin)?; Self::base_revoke_claim(target, claim_type, issuer, scope) } + + /// Call this with the new primary key. By invoking this method, caller accepts authorization + /// to become the new primary key of the issuing identity. If a CDD service provider approved + /// this change, (or this is not required), primary key of the DID is updated. + /// + /// The caller (new primary key) must be either a secondary key of the issuing identity, or + /// unlinked to any identity. + /// + /// Differs from accept_primary_key in that it will leave the old primary key as a secondary + /// key with the permissions specified in the corresponding RotatePrimaryKeyToSecondary authorization + /// instead of unlinking the old primary key. + /// + /// # Arguments + /// * `owner_auth_id` Authorization from the owner who initiated the change + /// * `cdd_auth_id` Authorization from a CDD service provider + #[weight = ::WeightInfo::rotate_primary_key_to_secondary()] + pub fn rotate_primary_key_to_secondary(origin, auth_id:u64, optional_cdd_auth_id: Option) -> DispatchResult { + Self::base_rotate_primary_key_to_secondary(origin, auth_id, optional_cdd_auth_id) + } } } From e2cead85ff62d95cca70f9909f20cc0a65d01180 Mon Sep 17 00:00:00 2001 From: raycar5 Date: Tue, 25 Jan 2022 15:33:47 +0100 Subject: [PATCH 17/53] MESH-1759 Remove porfolio name to number mapping after deletion (#1200) * Remove porfolio name to number mapping after deletion * Create migration * Apply suggestions from code review Co-authored-by: Mazdak Farrokhzad * Drop unused var Co-authored-by: Mazdak Farrokhzad --- pallets/portfolio/src/lib.rs | 29 +++++++++++++++++++++++--- pallets/runtime/tests/src/portfolio.rs | 16 ++++++++++++++ 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/pallets/portfolio/src/lib.rs b/pallets/portfolio/src/lib.rs index 98cf6e201d..17c6b3c937 100644 --- a/pallets/portfolio/src/lib.rs +++ b/pallets/portfolio/src/lib.rs @@ -48,7 +48,11 @@ pub mod benchmarking; use codec::{Decode, Encode}; use core::{iter, mem}; -use frame_support::{decl_error, decl_module, decl_storage, dispatch::DispatchResult, ensure}; +use frame_support::{ + decl_error, decl_module, decl_storage, + dispatch::{DispatchResult, Weight}, + ensure, +}; use pallet_identity::{self as identity, PermissionedCallOriginData}; use polymesh_common_utilities::traits::balances::Memo; use polymesh_common_utilities::traits::portfolio::PortfolioSubTrait; @@ -117,11 +121,11 @@ decl_storage! { double_map hasher(identity) IdentityId, hasher(twox_64_concat) PortfolioId => bool; /// Storage version. - StorageVersion get(fn storage_version) build(|_| Version::new(0).unwrap()): Version; + StorageVersion get(fn storage_version) build(|_| Version::new(1).unwrap()): Version; } } -storage_migration_ver!(0); +storage_migration_ver!(1); decl_error! { pub enum Error for Module { @@ -191,7 +195,9 @@ decl_module! { Self::ensure_portfolio_custody_and_permission(pid, primary_did, secondary_key.as_ref())?; // Delete from storage. + let portfolio = Portfolios::get(&primary_did, &num); Portfolios::remove(&primary_did, &num); + NameToNumber::remove(&primary_did, &portfolio); PortfolioAssetCount::remove(&pid); PortfolioAssetBalances::remove_prefix(&pid); PortfolioLockedAssets::remove_prefix(&pid); @@ -330,6 +336,23 @@ decl_module! { pub fn accept_portfolio_custody(origin, auth_id: u64) -> DispatchResult { Self::base_accept_portfolio_custody(origin, auth_id) } + + fn on_runtime_upgrade() -> Weight { + use polymesh_primitives::storage_migrate_on; + + // Remove old name to number mappings. + // In version 4.0.0 (first mainnet deployment) when a portfolio was removed + // the NameToNumber mapping was left out of date, this upgrade removes dangling + // NameToNumber mappings. + // https://github.com/PolymathNetwork/Polymesh/pull/1200 + storage_migrate_on!(StorageVersion::get(), 1, { + NameToNumber::iter() + .filter(|(identity, _, number)| !Portfolios::contains_key(identity, number)) + .for_each(|(identity, name, _)| NameToNumber::remove(identity, name)); + }); + + 0 + } } } diff --git a/pallets/runtime/tests/src/portfolio.rs b/pallets/runtime/tests/src/portfolio.rs index 5f5c114224..865dab5281 100644 --- a/pallets/runtime/tests/src/portfolio.rs +++ b/pallets/runtime/tests/src/portfolio.rs @@ -112,6 +112,22 @@ fn can_create_rename_delete_portfolio() { }); } +#[test] +fn can_delete_recreate_portfolio() { + ExtBuilder::default().build().execute_with(|| { + let (owner, num) = create_portfolio(); + + let name = || Portfolio::portfolios(owner.did, num); + let num_of = |name| Portfolio::name_to_number(owner.did, name); + + let first_name = name(); + assert_eq!(num_of(&first_name), num); + + assert_ok!(Portfolio::delete_portfolio(owner.origin(), num)); + assert_ok!(Portfolio::create_portfolio(owner.origin(), first_name)); + }); +} + #[test] fn cannot_delete_portfolio_with_asset() { ExtBuilder::default().build().execute_with(|| { From 4f1d40bbaa232a8177a53b410bd5a390e3363996 Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Thu, 27 Jan 2022 22:02:54 +0800 Subject: [PATCH 18/53] MESH-1773 & MESH-1777 condition cost function (#1204) * Improve ComplianceManager benchmarks. * Prevent a large number of empty asset compliance requirements from being added to an asset. * Code cleanup. --- .../common/src/traits/compliance_manager.rs | 35 +++++- .../compliance-manager/src/benchmarking.rs | 108 +++++++++++++++--- pallets/compliance-manager/src/lib.rs | 34 +++--- .../weights/src/pallet_compliance_manager.rs | 11 ++ primitives/src/compliance_manager.rs | 9 +- primitives/src/condition.rs | 71 +++++++++++- 6 files changed, 226 insertions(+), 42 deletions(-) diff --git a/pallets/common/src/traits/compliance_manager.rs b/pallets/common/src/traits/compliance_manager.rs index 7b0b69dacb..ac958d14de 100644 --- a/pallets/common/src/traits/compliance_manager.rs +++ b/pallets/common/src/traits/compliance_manager.rs @@ -15,7 +15,11 @@ use core::result::Result; use frame_support::{dispatch::DispatchError, weights::Weight}; -use polymesh_primitives::{compliance_manager::AssetComplianceResult, Balance, IdentityId, Ticker}; +use polymesh_primitives::{ + compliance_manager::{AssetComplianceResult, ComplianceRequirement}, + condition::{conditions_total_counts, Condition}, + Balance, IdentityId, Ticker, +}; pub trait Config { fn verify_restriction( @@ -42,4 +46,33 @@ pub trait WeightInfo { fn change_compliance_requirement(s: u32, r: u32) -> Weight; fn replace_asset_compliance(c: u32) -> Weight; fn reset_asset_compliance() -> Weight; + + fn condition_costs(conditions: u32, claims: u32, issuers: u32, claim_types: u32) -> Weight; + + fn add_compliance_requirement_full(sender: &[Condition], receiver: &[Condition]) -> Weight { + let (_, claims, issuers, claim_types) = + conditions_total_counts(sender.iter().chain(receiver.iter())); + Self::add_compliance_requirement(sender.len() as u32, receiver.len() as u32) + .saturating_add(Self::condition_costs(0, claims, issuers, claim_types)) + } + + fn change_compliance_requirement_full(req: &ComplianceRequirement) -> Weight { + let (_, claims, issuers, claim_types) = req.counts(); + Self::change_compliance_requirement( + req.sender_conditions.len() as u32, + req.receiver_conditions.len() as u32, + ) + .saturating_add(Self::condition_costs(0, claims, issuers, claim_types)) + } + + fn replace_asset_compliance_full(reqs: &[ComplianceRequirement]) -> Weight { + let (conditions, claims, issuers, claim_types) = + conditions_total_counts(reqs.iter().flat_map(|req| req.conditions())); + Self::replace_asset_compliance(reqs.len() as u32).saturating_add(Self::condition_costs( + conditions, + claims, + issuers, + claim_types, + )) + } } diff --git a/pallets/compliance-manager/src/benchmarking.rs b/pallets/compliance-manager/src/benchmarking.rs index 58f6b8d925..3dfb14dbb2 100644 --- a/pallets/compliance-manager/src/benchmarking.rs +++ b/pallets/compliance-manager/src/benchmarking.rs @@ -21,7 +21,8 @@ use polymesh_common_utilities::{ benchs::{AccountIdOf, User, UserBuilder}, TestUtilsFn, }; -use polymesh_primitives::{asset::AssetType, TrustedFor, TrustedIssuer}; +use polymesh_primitives::{asset::AssetType, ClaimType, Scope, TrustedFor, TrustedIssuer}; +use sp_std::convert::TryFrom; const MAX_DEFAULT_TRUSTED_CLAIM_ISSUERS: u32 = 3; const MAX_TRUSTED_ISSUER_PER_CONDITION: u32 = 3; @@ -29,15 +30,46 @@ const MAX_SENDER_CONDITIONS_PER_COMPLIANCE: u32 = 3; const MAX_RECEIVER_CONDITIONS_PER_COMPLIANCE: u32 = 3; const MAX_COMPLIANCE_REQUIREMENTS: u32 = 2; +const MAX_CONDITIONS: u32 = 10; +const MAX_CONDITION_TYPE_CLAIMS: u32 = 10; +const MAX_CONDITION_ISSUERS: u32 = 10; +const MAX_CONDITION_ISSUER_CLAIM_TYPES: u32 = 10; + +const CLAIM_TYPES: &[ClaimType] = &[ + ClaimType::Accredited, + ClaimType::Affiliate, + ClaimType::BuyLockup, + ClaimType::SellLockup, + ClaimType::CustomerDueDiligence, + ClaimType::KnowYourCustomer, + ClaimType::Jurisdiction, + ClaimType::Exempted, + ClaimType::Blocked, + ClaimType::InvestorUniqueness, + ClaimType::NoType, + ClaimType::InvestorUniquenessV2, +]; + /// Create a token issuer trusted for `Any`. -pub fn make_issuer>>(id: u32) -> TrustedIssuer { +pub fn make_issuer>>( + id: u32, + claim_type_len: Option, +) -> TrustedIssuer { let u = UserBuilder::::default() .generate_did() .seed(id) .build("ISSUER"); TrustedIssuer { issuer: IdentityId::from(u.did.unwrap()), - trusted_for: TrustedFor::Any, + trusted_for: match claim_type_len { + None => TrustedFor::Any, + Some(len) => TrustedFor::Specific( + (0..len) + .into_iter() + .map(|idx| CLAIM_TYPES[idx % CLAIM_TYPES.len()]) + .collect(), + ), + }, } } @@ -46,16 +78,29 @@ pub fn make_issuer>>(id: u32) -> /// - It could have more complexity if `TrustedIssuer::trusted_for` is a vector but not on /// benchmarking of add/remove. That could be useful for benchmarking executions/evaluation of /// complience requiriments. -pub fn make_issuers>>(s: u32) -> Vec { - (0..s).map(|i| make_issuer::(i)).collect::>() +pub fn make_issuers>>( + s: u32, + claim_type_len: Option, +) -> Vec { + (0..s) + .map(|i| make_issuer::(i, claim_type_len)) + .collect() } /// Create simple conditions with a variable number of `issuers`. -pub fn make_conditions(s: u32, issuers: &Vec) -> Vec { +pub fn make_conditions(s: u32, claims: Option, issuers: &[TrustedIssuer]) -> Vec { (0..s) .map(|_| Condition { - condition_type: ConditionType::IsPresent(Claim::NoData), - issuers: issuers.clone(), + condition_type: match claims { + None => ConditionType::IsPresent(Claim::NoData), + Some(len) => ConditionType::IsAnyOf( + (0..len) + .into_iter() + .map(|_| Claim::Blocked(Scope::Custom(vec![0]))) + .collect(), + ), + }, + issuers: issuers.to_vec(), }) .collect() } @@ -103,7 +148,7 @@ struct ComplianceRequirementInfo { impl>> ComplianceRequirementInfo { pub fn add_default_trusted_claim_issuer(self: &Self, i: u32) { - make_issuers::(i).into_iter().for_each(|issuer| { + make_issuers::(i, None).into_iter().for_each(|issuer| { Module::::add_default_trusted_claim_issuer( self.owner.origin.clone().into(), self.ticker.clone(), @@ -130,9 +175,9 @@ impl>> ComplianceRequirementBuilder { let ticker = make_token::(&owner, b"1".to_vec()); // Create issuers (i) and conditions(s & r). - let issuers = make_issuers::(trusted_issuer_count); - let sender_conditions = make_conditions(sender_conditions_count, &issuers); - let receiver_conditions = make_conditions(receiver_conditions_count, &issuers); + let issuers = make_issuers::(trusted_issuer_count, None); + let sender_conditions = make_conditions(sender_conditions_count, None, &issuers); + let receiver_conditions = make_conditions(receiver_conditions_count, None, &issuers); let info = ComplianceRequirementInfo { owner, @@ -168,9 +213,40 @@ impl ComplianceRequirementBuilder { } } +fn setup_conditions_bench>>( + conditions: u32, + claims: u32, + issuers: u32, + claim_types: u32, +) -> Vec { + let issuers = make_issuers::(issuers, Some(claim_types as usize)); + let conditions = make_conditions(conditions, Some(claims as usize), &issuers); + conditions +} + +fn conditions_bench(conditions: Vec) { + let encoded = conditions.encode(); + let decoded = Vec::::decode(&mut encoded.as_slice()) + .expect("This shouldn't fail since we just encoded a `Vec` value."); + if !conditions.eq(&decoded) { + panic!("This shouldn't fail."); + } +} + benchmarks! { where_clause { where T: TestUtilsFn> } + condition_costs { + let a in 1..MAX_CONDITIONS; + let b in 1..MAX_CONDITION_TYPE_CLAIMS; + let c in 1..MAX_CONDITION_ISSUERS; + let d in 1..MAX_CONDITION_ISSUER_CLAIM_TYPES; + + let conditions = setup_conditions_bench::(a, b, c, d); + }: { + conditions_bench(conditions); + } + add_compliance_requirement { // INTERNAL: This benchmark only evaluate the adding operation. Its execution should be measured in another module. let s in 1..MAX_SENDER_CONDITIONS_PER_COMPLIANCE; @@ -237,7 +313,7 @@ benchmarks! { d.add_default_trusted_claim_issuer(MAX_DEFAULT_TRUSTED_CLAIM_ISSUERS -1); // Add one more for benchmarking. - let new_issuer = make_issuer::(MAX_DEFAULT_TRUSTED_CLAIM_ISSUERS); + let new_issuer = make_issuer::(MAX_DEFAULT_TRUSTED_CLAIM_ISSUERS, None); }: _(d.owner.origin, d.ticker, new_issuer.clone()) verify { let trusted_issuers = Module::::trusted_claim_issuer(d.ticker); @@ -300,9 +376,9 @@ benchmarks! { MAX_RECEIVER_CONDITIONS_PER_COMPLIANCE) .add_compliance_requirement().build(); - let issuers = make_issuers::(MAX_TRUSTED_ISSUER_PER_CONDITION); - let sender_conditions = make_conditions(MAX_SENDER_CONDITIONS_PER_COMPLIANCE, &issuers); - let receiver_conditions = make_conditions(MAX_RECEIVER_CONDITIONS_PER_COMPLIANCE, &issuers); + let issuers = make_issuers::(MAX_TRUSTED_ISSUER_PER_CONDITION, None); + let sender_conditions = make_conditions(MAX_SENDER_CONDITIONS_PER_COMPLIANCE, None, &issuers); + let receiver_conditions = make_conditions(MAX_RECEIVER_CONDITIONS_PER_COMPLIANCE, None, &issuers); // Add more requirements to the asset, if `c > 1`. (1..c).for_each( |_i| { diff --git a/pallets/compliance-manager/src/lib.rs b/pallets/compliance-manager/src/lib.rs index aec87cb0bc..da5e754c95 100644 --- a/pallets/compliance-manager/src/lib.rs +++ b/pallets/compliance-manager/src/lib.rs @@ -103,10 +103,7 @@ use polymesh_primitives::{ proposition, storage_migration_ver, Balance, Claim, Condition, ConditionType, Context, IdentityId, Ticker, TrustedFor, TrustedIssuer, }; -use sp_std::{ - convert::{From, TryFrom}, - prelude::*, -}; +use sp_std::{convert::From, prelude::*}; type ExternalAgents = pallet_external_agents::Module; type Identity = pallet_identity::Module; @@ -190,7 +187,7 @@ decl_module! { /// /// # Permissions /// * Asset - #[weight = ::WeightInfo::add_compliance_requirement(sender_conditions.len() as u32, receiver_conditions.len() as u32)] + #[weight = ::WeightInfo::add_compliance_requirement_full(&sender_conditions, &receiver_conditions)] pub fn add_compliance_requirement(origin, ticker: Ticker, sender_conditions: Vec, receiver_conditions: Vec) { let did = >::ensure_perms(origin, ticker)?; @@ -257,7 +254,7 @@ decl_module! { /// /// # Permissions /// * Asset - #[weight = ::WeightInfo::replace_asset_compliance(asset_compliance.len() as u32)] + #[weight = ::WeightInfo::replace_asset_compliance_full(&asset_compliance)] pub fn replace_asset_compliance(origin, ticker: Ticker, asset_compliance: Vec) { let did = >::ensure_perms(origin, ticker)?; @@ -392,10 +389,7 @@ decl_module! { /// /// # Permissions /// * Asset - #[weight = ::WeightInfo::change_compliance_requirement( - new_req.sender_conditions.len() as u32, - new_req.receiver_conditions.len() as u32, - )] + #[weight = ::WeightInfo::change_compliance_requirement_full(&new_req)] pub fn change_compliance_requirement(origin, ticker: Ticker, new_req: ComplianceRequirement) { let did = >::ensure_perms(origin, ticker)?; @@ -601,17 +595,15 @@ impl Module { let complexity = asset_compliance .iter() .flat_map(|req| req.conditions()) - .fold(0usize, |complexity, condition| { - let (claims, issuers) = condition.complexity(); - complexity.saturating_add(claims.saturating_mul(match issuers { - 0 => default_issuer_count, - _ => issuers, - })) - }); - if let Ok(complexity_u32) = u32::try_from(complexity) { - if complexity_u32 <= T::MaxConditionComplexity::get() { - return Ok(()); - } + .fold(0u32, |total, condition| { + let complexity = condition.complexity(default_issuer_count); + total.saturating_add(complexity) + }) + // NB: If the compliance requirements are empty (0 complexity), + // then use the count of requirements. + .max(asset_compliance.len() as u32); + if complexity <= T::MaxConditionComplexity::get() { + return Ok(()); } Err(Error::::ComplianceRequirementTooComplex.into()) } diff --git a/pallets/weights/src/pallet_compliance_manager.rs b/pallets/weights/src/pallet_compliance_manager.rs index 9ca72a9d82..8147acea98 100644 --- a/pallets/weights/src/pallet_compliance_manager.rs +++ b/pallets/weights/src/pallet_compliance_manager.rs @@ -52,6 +52,17 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; /// Weights for pallet_compliance_manager using the Substrate node and recommended hardware. pub struct WeightInfo; impl pallet_compliance_manager::WeightInfo for WeightInfo { + fn condition_costs(a: u32, b: u32, c: u32, d: u32) -> Weight { + (0 as Weight) + // Standard Error: 154_000 + .saturating_add((13_470_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 154_000 + .saturating_add((5_972_000 as Weight).saturating_mul(b as Weight)) + // Standard Error: 154_000 + .saturating_add((6_144_000 as Weight).saturating_mul(c as Weight)) + // Standard Error: 154_000 + .saturating_add((906_000 as Weight).saturating_mul(d as Weight)) + } fn add_compliance_requirement(s: u32, r: u32) -> Weight { (98_941_000 as Weight) // Standard Error: 740_000 diff --git a/primitives/src/compliance_manager.rs b/primitives/src/compliance_manager.rs index eeb77d1df5..ef796b6cc4 100644 --- a/primitives/src/compliance_manager.rs +++ b/primitives/src/compliance_manager.rs @@ -13,7 +13,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -use crate::Condition; +use crate::condition::{conditions_total_counts, Condition}; use codec::{Decode, Encode}; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; @@ -51,6 +51,13 @@ impl ComplianceRequirement { .iter() .chain(self.receiver_conditions.iter()) } + + /// Return the total number of conditions, claims, issuers, and claim_types. + /// + /// This is used for weight calculation. + pub fn counts(&self) -> (u32, u32, u32, u32) { + conditions_total_counts(self.conditions()) + } } /// A compliance requirement along with its evaluation result diff --git a/primitives/src/condition.rs b/primitives/src/condition.rs index 9bbe6f8364..712dfd1e1a 100644 --- a/primitives/src/condition.rs +++ b/primitives/src/condition.rs @@ -19,6 +19,7 @@ use core::iter; use either::Either; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; +use sp_std::convert::TryInto; use sp_std::prelude::*; /// Defines a static / dynamic identity. @@ -49,7 +50,8 @@ pub enum ConditionType { } impl ConditionType { - fn complexity(&self) -> usize { + /// Return the number of `Claim` or `TargetIdentity`. + fn count(&self) -> usize { match self { ConditionType::IsIdentity(..) | ConditionType::IsPresent(..) @@ -99,6 +101,16 @@ impl TrustedIssuer { TrustedFor::Specific(ok_types) => ok_types.contains(&ty), } } + + /// Count number of claim types this issuers is trusted for. + /// + /// Returns `1` for `TrustedFor::Any`. + fn count(&self) -> usize { + match &self.trusted_for { + TrustedFor::Any => 1, + TrustedFor::Specific(types) => types.len(), + } + } } /// Create a `TrustedIssuer` trusted for any claim type. @@ -139,8 +151,38 @@ impl Condition { } /// Returns worst case complexity of a condition. - pub fn complexity(&self) -> (usize, usize) { - (self.condition_type.complexity(), self.issuers.len()) + pub fn complexity(&self, default_issuer_count: usize) -> u32 { + let issuers = match self.issuers.len() { + 0 => default_issuer_count, + count => count, + }; + self.condition_type + .count() + // NB: `max(1)` makes sure issuer count is not zero. + .saturating_mul(issuers.max(1)) + .try_into() + .unwrap_or(u32::MAX) + } + + /// Return number of claims, issuers, and claim_types. + /// + /// This is used for weight calculation. + /// + /// Returns: `(claims_count, issuer_count, claim_type_count)` + fn counts(&self) -> (u32, u32, u32) { + // Count the number of claims. + let claims = self.condition_type.count().try_into().unwrap_or(u32::MAX); + // Count the number of issuers. + let issuers = self.issuers.len().try_into().unwrap_or(u32::MAX); + // Count the total number of claim types in all issuers. + let claim_types = self + .issuers + .iter() + .fold(0usize, |count, issuer| count.saturating_add(issuer.count())) + .try_into() + .unwrap_or(u32::MAX); + + (claims, issuers, claim_types) } /// Returns all the claims in the condition. @@ -153,6 +195,29 @@ impl Condition { } } +/// Return the total number of condtions, claims, issuers, and claim_types. +/// +/// This is used for weight calculation. +/// +/// Returns: `(condition_count, claims_count, issuer_count, claim_type_count)` +pub fn conditions_total_counts<'a>( + conditions: impl IntoIterator, +) -> (u32, u32, u32, u32) { + // Count the total number of claims, issuers, and claim_types in all conditions. + conditions.into_iter().fold( + (0u32, 0u32, 0u32, 0u32), + |(count, total_claims, total_issuers, total_claim_types), condition| { + let (claims, issuers, claim_types) = condition.counts(); + ( + count.saturating_add(1), + total_claims.saturating_add(claims), + total_issuers.saturating_add(issuers), + total_claim_types.saturating_add(claim_types), + ) + }, + ) +} + impl From for Condition { fn from(condition_type: ConditionType) -> Self { Condition::new(condition_type, Vec::new()) From 95328c8ceaec10d465c9e834906094124ebed20b Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Tue, 8 Feb 2022 15:45:29 +0100 Subject: [PATCH 19/53] Upgrade Substrate to monthly-11 (#1188) --- Cargo.lock | 4287 +++++++-------- Cargo.toml | 269 +- bin/bench/Cargo.toml | 32 +- bin/crypto-cli/Cargo.toml | 2 +- bin/executor/Cargo.toml | 38 +- bin/testing/Cargo.toml | 50 +- contracts/CountTransferManager/lib.rs | 6 +- .../PercentageTransferManager/src/lib.rs | 24 +- .../examples/custom-ink-env-types/Cargo.toml | 4 +- .../examples/custom-ink-env-types/src/lib.rs | 19 +- migration-tests/Cargo.toml | 4 +- .../remote-externalities/Cargo.toml | 8 +- node-rpc/Cargo.toml | 44 +- node-rpc/src/lib.rs | 8 +- pallets/asset/Cargo.toml | 27 +- pallets/asset/src/checkpoint/mod.rs | 3 +- pallets/asset/src/lib.rs | 21 +- pallets/balances/Cargo.toml | 29 +- pallets/balances/src/lib.rs | 19 +- pallets/base/Cargo.toml | 18 +- pallets/base/src/lib.rs | 9 +- pallets/bridge/Cargo.toml | 16 +- pallets/bridge/src/genesis.rs | 10 +- pallets/bridge/src/lib.rs | 35 +- pallets/committee/Cargo.toml | 21 +- pallets/committee/src/benchmarking.rs | 8 +- pallets/committee/src/lib.rs | 9 +- pallets/common/Cargo.toml | 27 +- pallets/common/src/constants.rs | 19 +- pallets/common/src/lib.rs | 25 +- pallets/common/src/protocol_fee.rs | 4 +- pallets/common/src/traits/balances.rs | 8 +- pallets/common/src/traits/checkpoint.rs | 6 +- pallets/common/src/traits/group.rs | 3 +- pallets/common/src/traits/identity.rs | 5 +- pallets/common/src/traits/imbalances.rs | 34 +- pallets/compliance-manager/Cargo.toml | 21 +- pallets/contracts/Cargo.toml | 16 +- pallets/corporate-actions/Cargo.toml | 25 +- pallets/corporate-actions/src/ballot/mod.rs | 21 +- .../corporate-actions/src/distribution/mod.rs | 3 +- pallets/corporate-actions/src/lib.rs | 22 +- pallets/external-agents/Cargo.toml | 9 +- pallets/group/Cargo.toml | 21 +- pallets/group/rpc/Cargo.toml | 16 +- pallets/group/rpc/runtime-api/Cargo.toml | 6 +- pallets/group/src/lib.rs | 8 +- pallets/identity/Cargo.toml | 26 +- pallets/identity/src/auth.rs | 6 +- pallets/identity/src/claims.rs | 8 +- pallets/identity/src/keys.rs | 10 +- pallets/identity/src/lib.rs | 8 +- pallets/identity/src/types.rs | 5 +- pallets/multisig/Cargo.toml | 17 +- pallets/multisig/src/benchmarking.rs | 4 +- pallets/multisig/src/lib.rs | 19 +- pallets/permissions/Cargo.toml | 11 +- pallets/permissions/src/lib.rs | 4 +- pallets/pips/Cargo.toml | 21 +- pallets/pips/src/benchmarking.rs | 38 +- pallets/pips/src/lib.rs | 83 +- pallets/portfolio/Cargo.toml | 11 +- pallets/portfolio/src/lib.rs | 8 +- pallets/protocol-fee/Cargo.toml | 15 +- pallets/protocol-fee/rpc/Cargo.toml | 12 +- .../protocol-fee/rpc/runtime-api/Cargo.toml | 6 +- pallets/protocol-fee/src/benchmarking.rs | 1 - pallets/protocol-fee/src/lib.rs | 7 +- pallets/relayer/Cargo.toml | 11 +- pallets/relayer/src/benchmarking.rs | 1 - pallets/relayer/src/lib.rs | 4 +- pallets/rewards/Cargo.toml | 13 +- pallets/rewards/src/lib.rs | 14 +- pallets/runtime/build_tool/Cargo.toml | 2 +- pallets/runtime/ci/Cargo.toml | 72 +- pallets/runtime/ci/src/fee_details.rs | 44 +- pallets/runtime/ci/src/runtime.rs | 126 +- pallets/runtime/common/Cargo.toml | 20 +- pallets/runtime/common/src/impls.rs | 2 +- pallets/runtime/common/src/lib.rs | 2 +- pallets/runtime/common/src/runtime.rs | 46 +- pallets/runtime/develop/Cargo.toml | 76 +- .../develop/src/benchmarks/pallet_session.rs | 14 +- pallets/runtime/develop/src/fee_details.rs | 44 +- pallets/runtime/develop/src/runtime.rs | 179 +- pallets/runtime/extensions/Cargo.toml | 10 +- .../runtime/extensions/src/check_weight.rs | 4 +- pallets/runtime/mainnet/Cargo.toml | 72 +- pallets/runtime/mainnet/src/fee_details.rs | 40 +- pallets/runtime/mainnet/src/runtime.rs | 120 +- pallets/runtime/testnet/Cargo.toml | 72 +- pallets/runtime/testnet/src/fee_details.rs | 44 +- pallets/runtime/testnet/src/runtime.rs | 126 +- pallets/runtime/tests/Cargo.toml | 84 +- pallets/runtime/tests/src/asset_test.rs | 6 +- pallets/runtime/tests/src/balances_test.rs | 22 +- pallets/runtime/tests/src/bridge.rs | 8 +- pallets/runtime/tests/src/committee_test.rs | 28 +- .../tests/src/compliance_manager_test.rs | 2 +- .../tests/src/corporate_actions_test.rs | 6 +- pallets/runtime/tests/src/fee_details.rs | 82 +- pallets/runtime/tests/src/identity_test.rs | 14 +- pallets/runtime/tests/src/multisig.rs | 56 +- pallets/runtime/tests/src/pips_test.rs | 39 +- pallets/runtime/tests/src/portfolio.rs | 4 +- pallets/runtime/tests/src/relayer_test.rs | 21 +- pallets/runtime/tests/src/settlement_test.rs | 8 +- pallets/runtime/tests/src/signed_extra.rs | 5 +- pallets/runtime/tests/src/staking/mock.rs | 80 +- pallets/runtime/tests/src/staking/mod.rs | 84 +- pallets/runtime/tests/src/statistics_test.rs | 4 +- pallets/runtime/tests/src/sto_test.rs | 2 +- pallets/runtime/tests/src/storage.rs | 133 +- .../tests/src/transaction_payment_test.rs | 11 +- pallets/runtime/tests/src/utility_test.rs | 42 +- pallets/settlement/Cargo.toml | 26 +- pallets/settlement/src/benchmarking.rs | 8 +- pallets/settlement/src/lib.rs | 69 +- pallets/staking/Cargo.toml | 32 +- pallets/staking/rpc/Cargo.toml | 12 +- pallets/staking/rpc/runtime-api/Cargo.toml | 6 +- pallets/staking/src/benchmarking.rs | 14 +- pallets/staking/src/inflation.rs | 2 +- pallets/staking/src/lib.rs | 189 +- pallets/staking/src/offchain_election.rs | 44 +- pallets/staking/src/slashing.rs | 11 +- pallets/staking/src/testing_utils.rs | 11 +- pallets/statistics/Cargo.toml | 26 +- pallets/statistics/src/lib.rs | 6 +- pallets/sto/Cargo.toml | 24 +- pallets/sto/src/benchmarking.rs | 2 +- pallets/sto/src/lib.rs | 24 +- pallets/sudo/Cargo.toml | 13 +- pallets/test-utils/Cargo.toml | 12 +- pallets/test-utils/src/benchmarking.rs | 3 +- pallets/transaction-payment/Cargo.toml | 15 +- pallets/transaction-payment/src/lib.rs | 10 +- pallets/transaction-payment/src/payment.rs | 8 +- pallets/treasury/Cargo.toml | 19 +- pallets/treasury/src/lib.rs | 11 +- pallets/utility/Cargo.toml | 15 +- pallets/utility/src/benchmarking.rs | 8 +- pallets/utility/src/lib.rs | 5 +- pallets/weights/Cargo.toml | 20 +- pallets/weights/src/frame_system.rs | 6 +- pallets/weights/src/pallet_babe.rs | 4 + polymesh_schema.json | 11 +- primitives/Cargo.toml | 25 +- primitives/src/agent.rs | 7 +- primitives/src/asset.rs | 15 +- primitives/src/asset_identifier.rs | 3 +- primitives/src/authorization.rs | 5 +- primitives/src/calendar.rs | 10 +- primitives/src/cdd_id.rs | 11 +- primitives/src/compliance_manager.rs | 5 +- primitives/src/condition.rs | 11 +- primitives/src/document.rs | 21 +- primitives/src/document_hash.rs | 3 +- primitives/src/ethereum.rs | 5 +- primitives/src/event_only.rs | 4 +- primitives/src/identity.rs | 3 +- primitives/src/identity_claim.rs | 11 +- primitives/src/identity_id.rs | 18 +- primitives/src/investor_zkproof_data/v1.rs | 3 +- primitives/src/investor_zkproof_data/v2.rs | 6 +- primitives/src/jurisdiction.rs | 3 +- primitives/src/lib.rs | 28 +- primitives/src/migrate.rs | 14 +- primitives/src/secondary_key.rs | 23 +- primitives/src/smart_extension.rs | 5 +- primitives/src/statistics.rs | 7 +- primitives/src/subset.rs | 3 +- primitives/src/ticker.rs | 4 +- rpc/Cargo.toml | 22 +- rpc/runtime-api/Cargo.toml | 10 +- rpc/src/asset.rs | 3 +- rustfmt.toml | 1 + scripts/cli/environment.config.js | 2 +- scripts/cli/jest.config.js | 4 + scripts/cli/package-lock.json | 2839 ++++++---- scripts/cli/package.json | 21 +- scripts/cli/polymesh-meta.json | 2 +- .../src/helpers/corporate_actions_helper.ts | 21 +- scripts/cli/src/helpers/identity_helper.ts | 6 +- .../cli/src/interfaces/augment-api-consts.ts | 139 +- .../cli/src/interfaces/augment-api-errors.ts | 66 +- .../cli/src/interfaces/augment-api-events.ts | 599 ++- .../cli/src/interfaces/augment-api-query.ts | 609 +-- scripts/cli/src/interfaces/augment-api-rpc.ts | 29 +- scripts/cli/src/interfaces/augment-api-tx.ts | 585 +- scripts/cli/src/interfaces/augment-api.ts | 1 - scripts/cli/src/interfaces/augment-types.ts | 2557 +-------- scripts/cli/src/interfaces/default/types.ts | 62 +- scripts/cli/src/interfaces/lookup.ts | 3836 ++++++++++++++ scripts/cli/src/interfaces/types-lookup.ts | 4695 +++++++++++++++++ scripts/cli/src/tests/15_portfolio.ts | 22 +- scripts/cli/src/util/init.ts | 10 +- scripts/cli/tsconfig.json | 5 +- scripts/cli/util/{init.js => init.mjs} | 24 +- .../{schema_check.js => schema_check.mjs} | 6 +- scripts/cli/util/schema_test.sh | 2 +- src/chain_spec.rs | 315 +- src/command.rs | 16 +- src/service.rs | 385 +- 204 files changed, 16195 insertions(+), 9156 deletions(-) create mode 100644 rustfmt.toml create mode 100644 scripts/cli/src/interfaces/lookup.ts create mode 100644 scripts/cli/src/interfaces/types-lookup.ts rename scripts/cli/util/{init.js => init.mjs} (97%) rename scripts/cli/util/{schema_check.js => schema_check.mjs} (52%) diff --git a/Cargo.lock b/Cargo.lock index 968007bd3c..75c21233d8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,20 +14,20 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.14.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a55f82cfe485775d02112886f4169bde0c5894d75e79ead7eafe7e40a25e45f7" +checksum = "3e61f2b7f93d2c7d2b08263acaa4a363b3e276806c68af6134c44f523bf1aacd" dependencies = [ - "gimli 0.23.0", + "gimli 0.25.0", ] [[package]] name = "addr2line" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e61f2b7f93d2c7d2b08263acaa4a363b3e276806c68af6134c44f523bf1aacd" +checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" dependencies = [ - "gimli 0.25.0", + "gimli 0.26.1", ] [[package]] @@ -38,71 +38,46 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aead" -version = "0.3.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fc95d1bdb8e6666b2b217308eeeb09f2d6728d104be3e31916cc74d15420331" +checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" dependencies = [ - "generic-array 0.14.4", + "generic-array 0.14.5", ] [[package]] name = "aes" -version = "0.5.0" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd2bc6d3f370b5666245ff421e231cba4353df936e26986d2918e61a8fd6aef6" +checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" dependencies = [ - "aes-soft", - "aesni", - "block-cipher", + "cfg-if 1.0.0", + "cipher", + "cpufeatures 0.2.1", + "opaque-debug 0.3.0", ] [[package]] name = "aes-gcm" -version = "0.7.0" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0301c9e9c443494d970a07885e8cf3e587bae8356a1d5abd0999068413f7205f" +checksum = "df5f85a83a7d8b0442b6aa7b504b8212c1733da07b98aae43d4bc21b2cb3cdf6" dependencies = [ "aead", "aes", - "block-cipher", + "cipher", + "ctr", "ghash", - "subtle 2.4.1", -] - -[[package]] -name = "aes-soft" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63dd91889c49327ad7ef3b500fd1109dbd3c509a03db0d4a9ce413b79f575cb6" -dependencies = [ - "block-cipher", - "byteorder", - "opaque-debug 0.3.0", -] - -[[package]] -name = "aesni" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6fe808308bb07d393e2ea47780043ec47683fcf19cf5efc8ca51c50cc8c68a" -dependencies = [ - "block-cipher", - "opaque-debug 0.3.0", + "subtle", ] [[package]] name = "ahash" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e" - -[[package]] -name = "ahash" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43bb833f0bf979d8475d38fbf09ed3b8a55e1885fe93ad3f93239fc6a4f17b98" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.3", + "getrandom 0.2.4", "once_cell", "version_check", ] @@ -116,15 +91,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "ansi_term" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" -dependencies = [ - "winapi 0.3.9", -] - [[package]] name = "ansi_term" version = "0.12.1" @@ -136,15 +102,15 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.43" +version = "1.0.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28ae2b3dec75a406790005a200b1bd89785afc02517a00ca99ecfe093ee9e6cf" +checksum = "94a45b455c14666b85fc40a019e8ab9eb75e3a124e05494f5397122bc9eb06e0" [[package]] name = "approx" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "072df7202e63b127ab55acfe16ce97013d5b97bf160489336d3f1840fd78e99e" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" dependencies = [ "num-traits", ] @@ -172,28 +138,15 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "arrayvec" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4dc07131ffa69b8072d35f5007352af944213cde02545e2103680baed38fcd" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" [[package]] name = "asn1_der" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fce6b6a0ffdafebd82c87e79e3f40e8d2c523e5fea5566ff6b90509bf98d638" -dependencies = [ - "asn1_der_derive", -] - -[[package]] -name = "asn1_der_derive" -version = "0.1.2" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d0864d84b8e07b145449be9a8537db86bf9de5ce03b913214694643b4743502" -dependencies = [ - "quote", - "syn", -] +checksum = "e22d1f4b888c298a027c99dc9048015fac177587de20fc30232a057dfbe24a21" [[package]] name = "async-channel" @@ -250,7 +203,7 @@ dependencies = [ "parking", "polling", "slab", - "socket2 0.4.1", + "socket2 0.4.4", "waker-fn", "winapi 0.3.9", ] @@ -275,9 +228,9 @@ dependencies = [ [[package]] name = "async-process" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b21b63ab5a0db0369deb913540af2892750e42d949faacc7a61495ac418a1692" +checksum = "83137067e3a2a6a06d67168e49e68a0957d215410473a740cea95a2425c0b7c6" dependencies = [ "async-io", "blocking", @@ -292,16 +245,16 @@ dependencies = [ [[package]] name = "async-std" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9f06685bad74e0570f5213741bea82158279a4103d988e57bfada11ad230341" +checksum = "f8056f1455169ab86dd47b47391e4ab0cbd25410a70e9fe675544f49bafaf952" dependencies = [ "async-channel", "async-global-executor", "async-io", "async-lock", "async-process", - "crossbeam-utils 0.8.5", + "crossbeam-utils", "futures-channel", "futures-core", "futures-io", @@ -312,23 +265,37 @@ dependencies = [ "memchr", "num_cpus", "once_cell", - "pin-project-lite 0.2.7", + "pin-project-lite 0.2.8", "pin-utils", "slab", "wasm-bindgen-futures", ] +[[package]] +name = "async-std-resolver" +version = "0.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbf3e776afdf3a2477ef4854b85ba0dff3bd85792f685fb3c68948b4d304e4f0" +dependencies = [ + "async-std", + "async-trait", + "futures-io", + "futures-util", + "pin-utils", + "trust-dns-resolver", +] + [[package]] name = "async-task" -version = "4.0.3" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0" +checksum = "677d306121baf53310a3fd342d88dc0824f6bbeace68347593658525565abee8" [[package]] name = "async-trait" -version = "0.1.51" +version = "0.1.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44318e776df68115a881de9a8fd1b9e53368d7a4a5ce4cc48517da3393233a5e" +checksum = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3" dependencies = [ "proc-macro2", "quote", @@ -341,11 +308,11 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb4401f0a3622dad2e0763fa79e0eb328bc70fb7dccfdd645341f00d671247d6" dependencies = [ - "bytes 1.0.1", + "bytes 1.1.0", "futures-sink", "futures-util", "memchr", - "pin-project-lite 0.2.7", + "pin-project-lite 0.2.8", ] [[package]] @@ -354,18 +321,18 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0de5164e5edbf51c45fb8c2d9664ae1c095cce1b265ecf7569093c0d66ef690" dependencies = [ - "bytes 1.0.1", + "bytes 1.1.0", "futures-sink", "futures-util", "memchr", - "pin-project-lite 0.2.7", + "pin-project-lite 0.2.8", ] [[package]] name = "atomic" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3410529e8288c463bedb5930f82833bc0c90e5d2fe639a56582a4d09220b281" +checksum = "b88d82667eca772c4aa12f0f1348b3ae643424c8876448f3f7bd5787032e234c" dependencies = [ "autocfg", ] @@ -395,16 +362,16 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "backtrace" -version = "0.3.61" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7a905d892734eea339e896738c14b9afce22b5318f64b951e70bf3844419b01" +checksum = "5e121dee8023ce33ab248d9ce1493df03c3b38a659b240096fcbd7048ff9c31f" dependencies = [ - "addr2line 0.16.0", + "addr2line 0.17.0", "cc", "cfg-if 1.0.0", "libc", "miniz_oxide", - "object 0.26.1", + "object 0.27.1", "rustc-demangle", ] @@ -416,9 +383,9 @@ checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" [[package]] name = "base58" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" +checksum = "6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581" [[package]] name = "base64" @@ -443,9 +410,9 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.59.1" +version = "0.59.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453c49e5950bb0eb63bb3df640e31618846c89d5b7faa54040d76e98e0134375" +checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8" dependencies = [ "bitflags", "cexpr", @@ -476,18 +443,6 @@ dependencies = [ "radium 0.3.0", ] -[[package]] -name = "bitvec" -version = "0.19.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8942c8d352ae1838c9dda0b0ca2ab657696ef2232a20147cf1b30ae1a9cb4321" -dependencies = [ - "funty", - "radium 0.5.3", - "tap", - "wyz", -] - [[package]] name = "bitvec" version = "0.20.4" @@ -576,16 +531,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ "block-padding 0.2.1", - "generic-array 0.14.4", -] - -[[package]] -name = "block-cipher" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f337a3e6da609650eb74e02bc9fac7b735049f7623ab12f2e4c719316fcc7e80" -dependencies = [ - "generic-array 0.14.4", + "generic-array 0.14.5", ] [[package]] @@ -605,9 +551,9 @@ checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] name = "blocking" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e170dbede1f740736619b776d7251cb1b9095c435c34d8ca9f57fcd2f335e9" +checksum = "046e47d4b2d391b1f6f8b407b1deb8dee56c1852ccd868becf2710f601b5f427" dependencies = [ "async-channel", "async-task", @@ -625,9 +571,9 @@ checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" [[package]] name = "bstr" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90682c8d613ad3373e66de8c6411e0ae2ab2571e879d2efbf73558cc66f21279" +checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" dependencies = [ "lazy_static", "memchr", @@ -658,16 +604,16 @@ dependencies = [ "serde", "serde_derive", "sha3", - "subtle 2.4.1", + "subtle", "thiserror", "zeroize", ] [[package]] name = "bumpalo" -version = "3.7.0" +version = "3.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c59e7af012c713f529e7a3ee57ce9b31ddd858d4b512923602f74608b009631" +checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" [[package]] name = "byte-slice-cast" @@ -677,9 +623,9 @@ checksum = "b0a5e3906bcbf133e33c1d4d95afc664ad37fbdb9f6568d8043e7ea8c27d93d3" [[package]] name = "byte-slice-cast" -version = "1.0.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65c1bf4a04a88c54f589125563643d773f3254b5c38571395e2b591c693bbc81" +checksum = "1d30c751592b77c499e7bce34d99d67c2c11bdc0574e9a488ddade14150a4698" [[package]] name = "byte-tools" @@ -700,7 +646,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" dependencies = [ "byteorder", - "either", "iovec", ] @@ -712,15 +657,24 @@ checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" [[package]] name = "bytes" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" +checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" [[package]] name = "cache-padded" -version = "1.1.1" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" + +[[package]] +name = "camino" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba" +checksum = "6f3132262930b0522068049f5870a856ab8affc80c70d08b6ecb785771a6fc23" +dependencies = [ + "serde", +] [[package]] name = "cargo-platform" @@ -744,6 +698,20 @@ dependencies = [ "serde_json", ] +[[package]] +name = "cargo_metadata" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "081e3f0755c1f380c2d010481b6fa2e02973586d5f2b24eebb7a2a1d98b143d8" +dependencies = [ + "camino", + "cargo-platform", + "semver 0.11.0", + "semver-parser 0.10.2", + "serde", + "serde_json", +] + [[package]] name = "cast" version = "0.2.7" @@ -755,18 +723,18 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.69" +version = "1.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e70cc2f62c6ce1868963827bd677764c62d07c3d9a3e1fb1177ee1a9ab199eb2" +checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" dependencies = [ "jobserver", ] [[package]] name = "cexpr" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db507a7679252d2276ed0dd8113c6875ec56d3089f9225b2b42c30cc1f8e5c89" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" dependencies = [ "nom", ] @@ -785,24 +753,26 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chacha20" -version = "0.5.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "244fbce0d47e97e8ef2f63b81d5e05882cb518c68531eb33194990d7b7e85845" +checksum = "fee7ad89dc1128635074c268ee661f90c3f7e83d9fd12910608c36b47d6c3412" dependencies = [ - "stream-cipher", + "cfg-if 1.0.0", + "cipher", + "cpufeatures 0.1.5", "zeroize", ] [[package]] name = "chacha20poly1305" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bf18d374d66df0c05cdddd528a7db98f78c28e2519b120855c4f84c5027b1f5" +checksum = "1580317203210c517b6d44794abfbe600698276db18127e37ad3e69bf5e848e5" dependencies = [ "aead", "chacha20", + "cipher", "poly1305", - "stream-cipher", "zeroize", ] @@ -826,37 +796,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff0e3bc0b6446b3f9663c1a6aba6ef06c5aeaa1bc92bd18077be337198ab9768" dependencies = [ "multibase", - "multihash", + "multihash 0.13.2", "unsigned-varint 0.5.1", ] [[package]] name = "cipher" -version = "0.2.5" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" dependencies = [ - "generic-array 0.14.4", + "generic-array 0.14.5", ] [[package]] name = "clang-sys" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "853eda514c284c2287f4bf20ae614f8781f40a81d32ecda6e91449304dfe077c" +checksum = "fa66045b9cb23c2e9c1520732030608b02ee07e5cfaa5a521ec15ded7fa24c90" dependencies = [ "glob 0.3.0", "libc", - "libloading 0.7.0", + "libloading 0.7.3", ] [[package]] name = "clap" -version = "2.33.3" +version = "2.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ - "ansi_term 0.11.0", + "ansi_term", "atty", "bitflags", "strsim", @@ -865,20 +835,11 @@ dependencies = [ "vec_map", ] -[[package]] -name = "cloudabi" -version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -dependencies = [ - "bitflags", -] - [[package]] name = "cmake" -version = "0.1.45" +version = "0.1.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb6210b637171dfba4cda12e579ac6dc73f5165ad56133e5d72ef3131f320855" +checksum = "e8ad8cef104ac57b68b89df3208164d228503abbdce70f6880ffa3d970e7443a" dependencies = [ "cc", ] @@ -895,7 +856,7 @@ dependencies = [ [[package]] name = "confidential_identity" version = "1.0.0" -source = "git+https://github.com/PolymathNetwork/cryptography.git?tag=confidential-identity-v1.1.3#bfb4829e28b55e0a25efc321830579415aa9ff7a" +source = "git+https://github.com/PolymathNetwork/cryptography.git?branch=confidential-identity-v1#5f2a100bc0b21bb59fcd1e32079e7ec74c305a5a" dependencies = [ "blake2", "byteorder", @@ -918,17 +879,18 @@ dependencies = [ [[package]] name = "confidential_identity" version = "1.1.2" -source = "git+https://github.com/PolymathNetwork/cryptography.git?tag=confidential-identity-v2.0.0#de6627508a9d7aa6818730b98215574eeec427bf" +source = "git+https://github.com/PolymathNetwork/cryptography.git?branch=confidential-identity-v2#b7bf985355bbd7e5dda4507b7c8c8b9e824b7d72" dependencies = [ "blake2", "byteorder", "criterion", - "cryptography_core 1.0.0 (git+https://github.com/PolymathNetwork/cryptography.git?tag=confidential-identity-v2.0.0)", + "cryptography_core 1.0.0 (git+https://github.com/PolymathNetwork/cryptography.git?branch=confidential-identity-v2)", "curve25519-dalek 3.2.0", "failure", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "rand 0.7.3", "rand_core 0.5.1", + "scale-info", "serde", "serde_bytes", "serde_json", @@ -952,9 +914,9 @@ checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" [[package]] name = "core-foundation" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" +checksum = "6888e10551bb93e424d8df1d07f1a8b4fceb0001a3a4b048bfc47554946f47b3" dependencies = [ "core-foundation-sys", "libc", @@ -962,15 +924,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.7.0" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" [[package]] name = "cpp_demangle" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea47428dc9d2237f3c6bc134472edfd63ebba0af932e783506dcfd66f10d18a" +checksum = "eeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710f" dependencies = [ "cfg-if 1.0.0", ] @@ -985,45 +947,45 @@ dependencies = [ ] [[package]] -name = "cpuid-bool" -version = "0.2.0" +name = "cpufeatures" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffba" +checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" +dependencies = [ + "libc", +] [[package]] name = "cranelift-bforest" -version = "0.69.0" +version = "0.77.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4066fd63b502d73eb8c5fa6bcab9c7962b05cd580f6b149ee83a8e730d8ce7fb" +checksum = "15013642ddda44eebcf61365b2052a23fd8b7314f90ba44aa059ec02643c5139" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.69.0" +version = "0.77.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a54e4beb833a3c873a18a8fe735d73d732044004c7539a072c8faa35ccb0c60" +checksum = "298f2a7ed5fdcb062d8e78b7496b0f4b95265d20245f2d0ca88f846dd192a3a3" dependencies = [ - "byteorder", "cranelift-bforest", "cranelift-codegen-meta", "cranelift-codegen-shared", "cranelift-entity", - "gimli 0.23.0", + "gimli 0.25.0", "log", "regalloc", - "serde", - "smallvec 1.6.1", + "smallvec", "target-lexicon", - "thiserror", ] [[package]] name = "cranelift-codegen-meta" -version = "0.69.0" +version = "0.77.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c54cac7cacb443658d8f0ff36a3545822613fa202c946c0891897843bc933810" +checksum = "5cf504261ac62dfaf4ffb3f41d88fd885e81aba947c1241275043885bc5f0bac" dependencies = [ "cranelift-codegen-shared", "cranelift-entity", @@ -1031,64 +993,63 @@ dependencies = [ [[package]] name = "cranelift-codegen-shared" -version = "0.69.0" +version = "0.77.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a109760aff76788b2cdaeefad6875a73c2b450be13906524f6c2a81e05b8d83c" +checksum = "1cd2a72db4301dbe7e5a4499035eedc1e82720009fb60603e20504d8691fa9cd" [[package]] name = "cranelift-entity" -version = "0.69.0" +version = "0.77.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b044234aa32531f89a08b487630ddc6744696ec04c8123a1ad388de837f5de3" +checksum = "48868faa07cacf948dc4a1773648813c0e453ff9467e800ff10f6a78c021b546" dependencies = [ "serde", ] [[package]] name = "cranelift-frontend" -version = "0.69.0" +version = "0.77.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5452b3e4e97538ee5ef2cc071301c69a86c7adf2770916b9d04e9727096abd93" +checksum = "351c9d13b4ecd1a536215ec2fd1c3ee9ee8bc31af172abf1e45ed0adb7a931df" dependencies = [ "cranelift-codegen", "log", - "smallvec 1.6.1", + "smallvec", "target-lexicon", ] [[package]] name = "cranelift-native" -version = "0.69.0" +version = "0.77.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f68035c10b2e80f26cc29c32fa824380877f38483504c2a47b54e7da311caaf3" +checksum = "6df8b556663d7611b137b24db7f6c8d9a8a27d7f29c7ea7835795152c94c1b75" dependencies = [ "cranelift-codegen", - "raw-cpuid", + "libc", "target-lexicon", ] [[package]] name = "cranelift-wasm" -version = "0.69.0" +version = "0.77.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a530eb9d1c95b3309deb24c3d179d8b0ba5837ed98914a429787c395f614949d" +checksum = "7a69816d90db694fa79aa39b89dda7208a4ac74b6f2b8f3c4da26ee1c8bdfc5e" dependencies = [ "cranelift-codegen", "cranelift-entity", "cranelift-frontend", - "itertools 0.9.0", + "itertools", "log", - "serde", - "smallvec 1.6.1", - "thiserror", + "smallvec", "wasmparser", + "wasmtime-types", ] [[package]] name = "crc32fast" -version = "1.2.1" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" +checksum = "a2209c310e29876f7f0b2721e7e26b84aff178aa3da5d091f9bfbf47669e60e3" dependencies = [ "cfg-if 1.0.0", ] @@ -1104,7 +1065,7 @@ dependencies = [ "clap", "criterion-plot", "csv", - "itertools 0.10.1", + "itertools", "lazy_static", "num-traits", "oorandom", @@ -1126,28 +1087,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d00996de9f2f7559f7f4dc286073197f83e92256a59ed395f9aac01fe717da57" dependencies = [ "cast", - "itertools 0.10.1", + "itertools", ] [[package]] name = "crossbeam-channel" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4" +checksum = "e54ea8bc3fb1ee042f5aace6e3c6e025d3874866da222930f70ce62aceba0bfa" dependencies = [ "cfg-if 1.0.0", - "crossbeam-utils 0.8.5", -] - -[[package]] -name = "crossbeam-deque" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20ff29ded3204c5106278a81a38f4b482636ed4fa1e6cfbeef193291beb29ed" -dependencies = [ - "crossbeam-epoch 0.8.2", - "crossbeam-utils 0.7.2", - "maybe-uninit", + "crossbeam-utils", ] [[package]] @@ -1157,65 +1107,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" dependencies = [ "cfg-if 1.0.0", - "crossbeam-epoch 0.9.5", - "crossbeam-utils 0.8.5", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" -dependencies = [ - "autocfg", - "cfg-if 0.1.10", - "crossbeam-utils 0.7.2", - "lazy_static", - "maybe-uninit", - "memoffset 0.5.6", - "scopeguard", + "crossbeam-epoch", + "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.5" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd" +checksum = "97242a70df9b89a65d0b6df3c4bf5b9ce03c5b7309019777fbde37e7537f8762" dependencies = [ "cfg-if 1.0.0", - "crossbeam-utils 0.8.5", + "crossbeam-utils", "lazy_static", - "memoffset 0.6.4", + "memoffset", "scopeguard", ] -[[package]] -name = "crossbeam-queue" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570" -dependencies = [ - "cfg-if 0.1.10", - "crossbeam-utils 0.7.2", - "maybe-uninit", -] - -[[package]] -name = "crossbeam-utils" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" -dependencies = [ - "autocfg", - "cfg-if 0.1.10", - "lazy_static", -] - [[package]] name = "crossbeam-utils" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db" +checksum = "cfcae03edb34f947e64acdb1c33ec169824e20657e9ecb61cef6c8c74dcb8120" dependencies = [ "cfg-if 1.0.0", "lazy_static", @@ -1233,34 +1146,34 @@ version = "1.0.0" dependencies = [ "confidential_identity 1.0.0", "hex", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-primitives", ] [[package]] name = "crypto-mac" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ - "generic-array 0.12.4", - "subtle 1.0.0", + "generic-array 0.14.5", + "subtle", ] [[package]] name = "crypto-mac" -version = "0.8.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" dependencies = [ - "generic-array 0.14.4", - "subtle 2.4.1", + "generic-array 0.14.5", + "subtle", ] [[package]] name = "cryptography_core" version = "1.0.0" -source = "git+https://github.com/PolymathNetwork/cryptography.git?tag=confidential-identity-v1.1.3#bfb4829e28b55e0a25efc321830579415aa9ff7a" +source = "git+https://github.com/PolymathNetwork/cryptography.git?branch=confidential-identity-v1#5f2a100bc0b21bb59fcd1e32079e7ec74c305a5a" dependencies = [ "bulletproofs", "byteorder", @@ -1268,7 +1181,7 @@ dependencies = [ "curve25519-dalek 3.2.0", "failure", "merlin 2.0.1", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "rand 0.7.3", "rand_core 0.5.1", "serde", @@ -1280,7 +1193,7 @@ dependencies = [ [[package]] name = "cryptography_core" version = "1.0.0" -source = "git+https://github.com/PolymathNetwork/cryptography.git?tag=confidential-identity-v2.0.0#de6627508a9d7aa6818730b98215574eeec427bf" +source = "git+https://github.com/PolymathNetwork/cryptography.git?branch=confidential-identity-v2#b7bf985355bbd7e5dda4507b7c8c8b9e824b7d72" dependencies = [ "blake2", "bulletproofs", @@ -1289,7 +1202,7 @@ dependencies = [ "curve25519-dalek 3.2.0", "failure", "merlin 2.0.1", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "rand 0.7.3", "rand_core 0.5.1", "serde", @@ -1306,12 +1219,12 @@ checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" dependencies = [ "cssparser-macros", "dtoa-short", - "itoa", + "itoa 0.4.8", "matches", "phf", "proc-macro2", "quote", - "smallvec 1.6.1", + "smallvec", "syn", ] @@ -1333,7 +1246,7 @@ checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1" dependencies = [ "bstr", "csv-core", - "itoa", + "itoa 0.4.8", "ryu", "serde", ] @@ -1349,23 +1262,32 @@ dependencies = [ [[package]] name = "ct-logs" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c8e13110a84b6315df212c045be706af261fd364791cad863285439ebba672e" +checksum = "c1a816186fa68d9e426e3cb4ae4dff1fcd8e4a2c34b781bf7a822574a0d0aac8" dependencies = [ "sct", ] [[package]] name = "ctor" -version = "0.1.20" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e98e2ad1a782e33928b96fc3948e7c355e5af34ba4de7670fe8bac2a3b2006d" +checksum = "ccc0a48a9b826acdf4028595adc9db92caea352f7af011a3034acd172a52a0aa" dependencies = [ "quote", "syn", ] +[[package]] +name = "ctr" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" +dependencies = [ + "cipher", +] + [[package]] name = "cuckoofilter" version = "0.5.0" @@ -1386,22 +1308,22 @@ dependencies = [ "byteorder", "digest 0.8.1", "rand_core 0.5.1", - "subtle 2.4.1", + "subtle", "zeroize", ] [[package]] name = "curve25519-dalek" version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" +source = "git+https://github.com/PolymathNetwork/curve25519-dalek?branch=master#9929ed12cdb08759162c972b5851552be0ee364b" dependencies = [ "byteorder", "digest 0.9.0", "packed_simd_2", "rand_core 0.5.1", + "scale-info", "serde", - "subtle 2.4.1", + "subtle", "zeroize", ] @@ -1433,14 +1355,14 @@ dependencies = [ [[package]] name = "derive_more" -version = "0.99.16" +version = "0.99.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40eebddd2156ce1bb37b20bbe5151340a31828b1f2d22ba4141f3531710e38df" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" dependencies = [ "convert_case", "proc-macro2", "quote", - "rustc_version 0.3.3", + "rustc_version 0.4.0", "syn", ] @@ -1459,7 +1381,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "generic-array 0.14.4", + "generic-array 0.14.5", ] [[package]] @@ -1513,6 +1435,12 @@ dependencies = [ "quick-error 1.2.3", ] +[[package]] +name = "downcast-rs" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" + [[package]] name = "dtoa" version = "0.4.8" @@ -1557,9 +1485,9 @@ checksum = "ee2626afccd7561a06cf1367e2950c4718ea04565e20fb5029b6c7d8ad09abcf" [[package]] name = "ed25519" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4620d40f6d2601794401d6dd95a5cf69b6c157852539470eeda433a99b3c0efc" +checksum = "74e1069e39f1454367eb2de793ed062fac4c35c2934b76a81d90dd9abcd28816" dependencies = [ "signature", ] @@ -1574,7 +1502,7 @@ dependencies = [ "ed25519", "rand 0.7.3", "serde", - "sha2 0.9.5", + "sha2 0.9.9", "zeroize", ] @@ -1590,6 +1518,18 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +[[package]] +name = "enum-as-inner" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c5f0096a91d210159eceb2ff5e1c4da18388a170e1e3ce948aac9c8fdbbf595" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "env_logger" version = "0.7.1" @@ -1609,20 +1549,11 @@ version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68b91989ae21441195d7d9b9993a2f9295c7e1a8c96255d8b729accddc124797" -[[package]] -name = "erased-serde" -version = "0.3.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3de9ad4541d99dc22b59134e7ff8dc3d6c988c89ecd7324bf10a8362b07a2afa" -dependencies = [ - "serde", -] - [[package]] name = "errno" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa68f2fb9cae9d37c9b2b3584aba698a2e97f72d7aef7b9f7aa71d8b54ce46fe" +checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" dependencies = [ "errno-dragonfly", "libc", @@ -1631,19 +1562,19 @@ dependencies = [ [[package]] name = "errno-dragonfly" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14ca354e36190500e1e1fb267c647932382b54053c50b14970856c0b00a35067" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" dependencies = [ - "gcc", + "cc", "libc", ] [[package]] name = "event-listener" -version = "2.5.1" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7531096570974c3a9dcf9e4b8e1cede1ec26cf5046219fb3b9d897503b9be59" +checksum = "77f3309417938f28bf8228fcff79a4a37103981e3e186d2ccd19c74b38f4eb71" [[package]] name = "exit-future" @@ -1651,7 +1582,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5" dependencies = [ - "futures 0.3.16", + "futures 0.3.19", ] [[package]] @@ -1690,9 +1621,9 @@ checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" [[package]] name = "fastrand" -version = "1.5.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b394ed3d285a429378d3b384b9eb1285267e7df4b166df24b7a6939a04dc392e" +checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf" dependencies = [ "instant", ] @@ -1718,17 +1649,18 @@ dependencies = [ [[package]] name = "finality-grandpa" -version = "0.13.0" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cd795898c348a8ec9edc66ec9e014031c764d4c88cc26d09b492cd93eb41339" +checksum = "e8ac3ff5224ef91f3c97e03eb1de2db82743427e91aaa5ac635f454f0b164f5a" dependencies = [ "either", - "futures 0.3.16", + "futures 0.3.19", "futures-timer 3.0.2", "log", "num-traits", - "parity-scale-codec 2.2.0", - "parking_lot 0.11.1", + "parity-scale-codec 2.3.1", + "parking_lot", + "scale-info", ] [[package]] @@ -1751,9 +1683,9 @@ checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" [[package]] name = "flate2" -version = "1.0.20" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd3aec53de10fe96d7d8c565eb17f2c687bb5518a2ec453b5b1252964526abe0" +checksum = "1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53f" dependencies = [ "cfg-if 1.0.0", "crc32fast", @@ -1771,9 +1703,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", ] [[package]] @@ -1788,14 +1720,16 @@ dependencies = [ [[package]] name = "frame-benchmarking" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "frame-support", "frame-system", "linregress", - "parity-scale-codec 2.2.0", + "log", + "parity-scale-codec 2.3.1", "paste", + "scale-info", "sp-api", "sp-io", "sp-runtime", @@ -1806,14 +1740,17 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "Inflector", "chrono", "frame-benchmarking", + "frame-support", "handlebars", - "parity-scale-codec 2.2.0", + "linked-hash-map", + "log", + "parity-scale-codec 2.3.1", "sc-cli", "sc-client-db", "sc-executor", @@ -1829,13 +1766,13 @@ dependencies = [ [[package]] name = "frame-executive" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "frame-support", "frame-system", - "parity-scale-codec 2.2.0", - "serde", + "parity-scale-codec 2.3.1", + "scale-info", "sp-core", "sp-io", "sp-runtime", @@ -1845,19 +1782,20 @@ dependencies = [ [[package]] name = "frame-metadata" -version = "13.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "14.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37ed5e5c346de62ca5c184b4325a6600d1eaca210666e4606fe4e449574978d0" dependencies = [ - "parity-scale-codec 2.2.0", + "cfg-if 1.0.0", + "parity-scale-codec 2.3.1", + "scale-info", "serde", - "sp-core", - "sp-std", ] [[package]] name = "frame-support" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "bitflags", "frame-metadata", @@ -1865,10 +1803,11 @@ dependencies = [ "impl-trait-for-tuples", "log", "once_cell", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "paste", + "scale-info", "serde", - "smallvec 1.6.1", + "smallvec", "sp-arithmetic", "sp-core", "sp-inherents", @@ -1878,12 +1817,13 @@ dependencies = [ "sp-state-machine", "sp-std", "sp-tracing", + "tt-call", ] [[package]] name = "frame-support-procedural" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -1894,11 +1834,11 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "frame-support-procedural-tools-derive", - "proc-macro-crate 0.1.5", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -1907,7 +1847,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "proc-macro2", "quote", @@ -1916,12 +1856,13 @@ dependencies = [ [[package]] name = "frame-system" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "frame-support", - "impl-trait-for-tuples", - "parity-scale-codec 2.2.0", + "log", + "parity-scale-codec 2.3.1", + "scale-info", "serde", "sp-core", "sp-io", @@ -1932,13 +1873,14 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", + "scale-info", "sp-core", "sp-runtime", "sp-std", @@ -1946,10 +1888,10 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "sp-api", ] @@ -1981,12 +1923,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394" -[[package]] -name = "fuchsia-cprng" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" - [[package]] name = "fuchsia-zircon" version = "0.3.3" @@ -2027,9 +1963,9 @@ checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" [[package]] name = "futures" -version = "0.3.16" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adc00f486adfc9ce99f77d717836f0c5aa84965eb0b4f051f4e83f7cab53f8b" +checksum = "28560757fe2bb34e79f907794bb6b22ae8b0e5c669b638a1132f2592b19035b4" dependencies = [ "futures-channel", "futures-core", @@ -2042,9 +1978,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.16" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74ed2411805f6e4e3d9bc904c95d5d423b89b3b25dc0250aa74729de20629ff9" +checksum = "ba3dda0b6588335f360afc675d0564c17a77a2bda81ca178a4b6081bd86c7f0b" dependencies = [ "futures-core", "futures-sink", @@ -2052,41 +1988,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af51b1b4a7fdff033703db39de8802c673eb91855f2e0d47dcf3bf2c0ef01f99" - -[[package]] -name = "futures-cpupool" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" -dependencies = [ - "futures 0.1.31", - "num_cpus", -] - -[[package]] -name = "futures-diagnose" -version = "1.0.1" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdcef58a173af8148b182684c9f2d5250875adbcaff7b5794073894f9d8634a9" -dependencies = [ - "futures 0.1.31", - "futures 0.3.16", - "lazy_static", - "log", - "parking_lot 0.9.0", - "pin-project 0.4.28", - "serde", - "serde_json", -] +checksum = "d0c8ff0461b82559810cdccfde3215c3f373807f5e5232b71479bff7bb2583d7" [[package]] name = "futures-executor" -version = "0.3.16" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d0d535a57b87e1ae31437b892713aee90cd2d7b0ee48727cd11fc72ef54761c" +checksum = "29d6d2ff5bb10fb95c85b8ce46538a2e5f5e7fdc755623a7d4529ab8a4ed9d2a" dependencies = [ "futures-core", "futures-task", @@ -2096,9 +2006,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.16" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b0e06c393068f3a6ef246c75cdca793d6a46347e75286933e5e75fd2fd11582" +checksum = "b1f9d34af5a1aac6fb380f735fe510746c38067c5bf16c7fd250280503c971b2" [[package]] name = "futures-lite" @@ -2111,18 +2021,16 @@ dependencies = [ "futures-io", "memchr", "parking", - "pin-project-lite 0.2.7", + "pin-project-lite 0.2.8", "waker-fn", ] [[package]] name = "futures-macro" -version = "0.3.16" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c54913bae956fb8df7f4dc6fc90362aa72e69148e3f39041fbe8742d21e0ac57" +checksum = "6dbd947adfffb0efc70599b3ddcf7b5597bb5fa9e245eb99f62b3a5f7bb8bd3c" dependencies = [ - "autocfg", - "proc-macro-hack", "proc-macro2", "quote", "syn", @@ -2135,21 +2043,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a1387e07917c711fb4ee4f48ea0adb04a3c9739e53ef85bf43ae1edc2937a8b" dependencies = [ "futures-io", - "rustls 0.19.1", + "rustls", "webpki", ] [[package]] name = "futures-sink" -version = "0.3.16" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0f30aaa67363d119812743aa5f33c201a7a66329f97d1a887022971feea4b53" +checksum = "e3055baccb68d74ff6480350f8d6eb8fcfa3aa11bdc1a1ae3afdd0514617d508" [[package]] name = "futures-task" -version = "0.3.16" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe54a98670017f3be909561f6ad13e810d9a51f3f061b902062ca3da80799f2" +checksum = "6ee7c6485c30167ce4dfb83ac568a849fe53274c831081476ee13e0dce1aad72" [[package]] name = "futures-timer" @@ -2165,11 +2073,10 @@ checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" [[package]] name = "futures-util" -version = "0.3.16" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eb846bfd58e44a8481a00049e82c43e0ccb5d61f8dc071057cb19249dd4d78" +checksum = "d9b5cf40b47a271f77a8b1bec03ca09044d99d2372c0de244e66430761127164" dependencies = [ - "autocfg", "futures 0.1.31", "futures-channel", "futures-core", @@ -2178,10 +2085,8 @@ dependencies = [ "futures-sink", "futures-task", "memchr", - "pin-project-lite 0.2.7", + "pin-project-lite 0.2.8", "pin-utils", - "proc-macro-hack", - "proc-macro-nested", "slab", ] @@ -2194,12 +2099,6 @@ dependencies = [ "byteorder", ] -[[package]] -name = "gcc" -version = "0.3.55" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" - [[package]] name = "generic-array" version = "0.12.4" @@ -2211,9 +2110,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.4" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" +checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" dependencies = [ "typenum", "version_check", @@ -2235,15 +2134,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ "cfg-if 1.0.0", + "js-sys", "libc", "wasi 0.9.0+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" +checksum = "418d37c8b1d42553c93648be529cb70f920d3baf8ef469b74b9638df426e0b4c" dependencies = [ "cfg-if 1.0.0", "libc", @@ -2252,9 +2153,9 @@ dependencies = [ [[package]] name = "ghash" -version = "0.3.1" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97304e4cd182c3846f7575ced3890c53012ce534ad9114046b0a9e00bb30a375" +checksum = "1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99" dependencies = [ "opaque-debug 0.3.0", "polyval", @@ -2262,9 +2163,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.23.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" +checksum = "f0a01e0497841a3b2db4f8afa483cce65f7e96a3498bd6c541734792aeac8fe7" dependencies = [ "fallible-iterator", "indexmap", @@ -2273,9 +2174,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.25.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0a01e0497841a3b2db4f8afa483cce65f7e96a3498bd6c541734792aeac8fe7" +checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" [[package]] name = "glob" @@ -2304,60 +2205,21 @@ dependencies = [ [[package]] name = "gloo-timers" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47204a46aaff920a1ea58b11d03dec6f704287d27561724a4631e450654a891f" +checksum = "4d12a7f4e95cfe710f1d624fb1210b7d961a5fb05c4fd942f4feab06e61f590e" dependencies = [ "futures-channel", "futures-core", "js-sys", "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "h2" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" -dependencies = [ - "byteorder", - "bytes 0.4.12", - "fnv", - "futures 0.1.31", - "http 0.1.21", - "indexmap", - "log", - "slab", - "string", - "tokio-io", -] - -[[package]] -name = "h2" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e4728fd124914ad25e99e3d15a9361a879f6620f63cb56bbb08f95abb97a535" -dependencies = [ - "bytes 0.5.6", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.4", - "indexmap", - "slab", - "tokio 0.2.25", - "tokio-util", - "tracing", - "tracing-futures", ] [[package]] name = "half" -version = "1.7.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62aca2aba2d62b4a7f5b33f3712cb1b0692779a56fb510499d5c0aa594daeaf3" +checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" [[package]] name = "handlebars" @@ -2388,22 +2250,13 @@ dependencies = [ "crunchy", ] -[[package]] -name = "hashbrown" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" -dependencies = [ - "ahash 0.4.7", -] - [[package]] name = "hashbrown" version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" dependencies = [ - "ahash 0.7.4", + "ahash", ] [[package]] @@ -2442,9 +2295,9 @@ dependencies = [ [[package]] name = "hex-literal" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e4590e13640f19f249fe3e4eca5113bc4289f2497710378190e7f4bd96f45b" +checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "hex-literal-impl" @@ -2461,16 +2314,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336f" -[[package]] -name = "hmac" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" -dependencies = [ - "crypto-mac 0.7.0", - "digest 0.8.1", -] - [[package]] name = "hmac" version = "0.8.1" @@ -2482,14 +2325,13 @@ dependencies = [ ] [[package]] -name = "hmac-drbg" -version = "0.2.0" +name = "hmac" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6e570451493f10f6581b48cdd530413b63ea9e780f544bfd3bdcaa0d89d1a7b" +checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" dependencies = [ - "digest 0.8.1", - "generic-array 0.12.4", - "hmac 0.7.1", + "crypto-mac 0.11.1", + "digest 0.9.0", ] [[package]] @@ -2499,10 +2341,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" dependencies = [ "digest 0.9.0", - "generic-array 0.14.4", + "generic-array 0.14.5", "hmac 0.8.1", ] +[[package]] +name = "hostname" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +dependencies = [ + "libc", + "match_cfg", + "winapi 0.3.9", +] + [[package]] name = "html5ever" version = "0.25.1" @@ -2519,46 +2372,24 @@ dependencies = [ [[package]] name = "http" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6ccf5ede3a895d8856620237b2f02972c1bbc78d2965ad7fe8838d4a0ed41f0" -dependencies = [ - "bytes 0.4.12", - "fnv", - "itoa", -] - -[[package]] -name = "http" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527e8c9ac747e28542699a951517aa9a6945af506cd1f2e1b53a576c17b6cc11" +checksum = "31f4c6746584866f0feabcc69893c5b51beef3831656a968ed7ae254cdc4fd03" dependencies = [ - "bytes 1.0.1", + "bytes 1.1.0", "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "http 0.1.21", - "tokio-buf", + "itoa 1.0.1", ] [[package]] name = "http-body" -version = "0.3.1" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" +checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6" dependencies = [ - "bytes 0.5.6", - "http 0.2.4", + "bytes 1.1.0", + "http", + "pin-project-lite 0.2.8", ] [[package]] @@ -2569,9 +2400,9 @@ checksum = "acd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503" [[package]] name = "httpdate" -version = "0.3.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" [[package]] name = "humantime" @@ -2584,72 +2415,40 @@ dependencies = [ [[package]] name = "hyper" -version = "0.12.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c843caf6296fc1f93444735205af9ed4e109a539005abb2564ae1d6fad34c52" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "futures-cpupool", - "h2 0.1.26", - "http 0.1.21", - "http-body 0.1.0", - "httparse", - "iovec", - "itoa", - "log", - "net2", - "rustc_version 0.2.3", - "time", - "tokio 0.1.22", - "tokio-buf", - "tokio-executor", - "tokio-io", - "tokio-reactor", - "tokio-tcp", - "tokio-threadpool", - "tokio-timer", - "want 0.2.0", -] - -[[package]] -name = "hyper" -version = "0.13.10" +version = "0.14.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a6f157065790a3ed2f88679250419b5cdd96e714a0d65f7797fd337186e96bb" +checksum = "b7ec3e62bdc98a2f0393a5048e4c30ef659440ea6e0e572965103e72bd836f55" dependencies = [ - "bytes 0.5.6", + "bytes 1.1.0", "futures-channel", "futures-core", "futures-util", - "h2 0.2.7", - "http 0.2.4", - "http-body 0.3.1", + "http", + "http-body", "httparse", "httpdate", - "itoa", - "pin-project 1.0.8", - "socket2 0.3.19", - "tokio 0.2.25", + "itoa 0.4.8", + "pin-project-lite 0.2.8", + "socket2 0.4.4", + "tokio", "tower-service", "tracing", - "want 0.3.0", + "want", ] [[package]] name = "hyper-rustls" -version = "0.21.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37743cc83e8ee85eacfce90f2f4102030d9ff0a95244098d781e9bee4a90abb6" +checksum = "5f9f7a97316d44c0af9b0301e65010573a853a9fc97046d7331d7f6bc0fd5a64" dependencies = [ - "bytes 0.5.6", "ct-logs", "futures-util", - "hyper 0.13.10", + "hyper", "log", - "rustls 0.18.1", + "rustls", "rustls-native-certs", - "tokio 0.2.25", + "tokio", "tokio-rustls", "webpki", ] @@ -2678,9 +2477,9 @@ dependencies = [ [[package]] name = "if-addrs" -version = "0.6.5" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28538916eb3f3976311f5dfbe67b5362d0add1293d0a9cad17debf86f8e3aa48" +checksum = "2273e421f7c4f0fc99e1934fe4776f59d8df2972f4199d703fc0da9f2a9f73de" dependencies = [ "if-addrs-sys", "libc", @@ -2699,12 +2498,12 @@ dependencies = [ [[package]] name = "if-watch" -version = "0.1.8" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b8538953a3f0d0d3868f0a706eb4273535e10d72acb5c82c1c23ae48835c85" +checksum = "ae8ab7f67bad3240049cb24fb9cb0b4c2c6af4c245840917fbbdededeee91179" dependencies = [ "async-io", - "futures 0.3.16", + "futures 0.3.19", "futures-lite", "if-addrs", "ipnet", @@ -2719,14 +2518,14 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443" dependencies = [ - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", ] [[package]] name = "impl-serde" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b47ca4d2b6931707a55fce5cf66aff80e2178c8b63bbb4ecb5695cbc870ddf6f" +checksum = "4551f042f3438e64dbd6226b20527fc84a6e1fe65688b58746a2f53623f25f5c" dependencies = [ "serde", ] @@ -2744,12 +2543,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" +checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223" dependencies = [ "autocfg", - "hashbrown 0.11.2", + "hashbrown", "serde", ] @@ -2774,9 +2573,9 @@ dependencies = [ [[package]] name = "instant" -version = "0.1.10" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee0328b1209d157ef001c94dd85b4f8f64139adb0eac2659f4b08382b2f474d" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ "cfg-if 1.0.0", ] @@ -2796,7 +2595,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64fa110ec7b8f493f416eed552740d10e7030ad5f63b2308f82c9608ec2df275" dependencies = [ - "futures 0.3.16", + "futures 0.3.19", "futures-timer 2.0.2", ] @@ -2811,9 +2610,21 @@ dependencies = [ [[package]] name = "ip_network" -version = "0.3.4" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2f047c0a98b2f299aa5d6d7088443570faae494e9ae1305e48be000c9e0eb1" + +[[package]] +name = "ipconfig" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ee15951c035f79eddbef745611ec962f63f4558f1dadf98ab723cc603487c6f" +checksum = "f7e2f18aece9709094573a9f24f483c4f65caa4298e2f7ae1b71cc65d853fad7" +dependencies = [ + "socket2 0.3.19", + "widestring", + "winapi 0.3.9", + "winreg", +] [[package]] name = "ipnet" @@ -2823,27 +2634,24 @@ checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9" [[package]] name = "itertools" -version = "0.9.0" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" +checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" dependencies = [ "either", ] [[package]] -name = "itertools" -version = "0.10.1" +name = "itoa" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eaf" -dependencies = [ - "either", -] +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] name = "itoa" -version = "0.4.8" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" +checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" [[package]] name = "jobserver" @@ -2856,21 +2664,21 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.53" +version = "0.3.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4bf49d50e2961077d9c99f4b7997d770a1114f087c3c2e0069b36c13fc2979d" +checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04" dependencies = [ "wasm-bindgen", ] [[package]] name = "jsonrpc-client-transports" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "489b9c612e60c766f751ab40fcb43cbb55a1e10bb44a9b4307ed510ca598cbd7" +checksum = "d2b99d4207e2a04fb4581746903c2bb7eb376f88de9c699d0f3e10feeac0cd3a" dependencies = [ - "failure", - "futures 0.1.31", + "derive_more", + "futures 0.3.19", "jsonrpc-core", "jsonrpc-pubsub", "log", @@ -2881,11 +2689,13 @@ dependencies = [ [[package]] name = "jsonrpc-core" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0745a6379e3edc893c84ec203589790774e4247420033e71a76d3ab4687991fa" +checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" dependencies = [ - "futures 0.1.31", + "futures 0.3.19", + "futures-executor", + "futures-util", "log", "serde", "serde_derive", @@ -2894,18 +2704,19 @@ dependencies = [ [[package]] name = "jsonrpc-core-client" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f764902d7b891344a0acb65625f32f6f7c6db006952143bd650209fbe7d94db" +checksum = "b51da17abecbdab3e3d4f26b01c5ec075e88d3abe3ab3b05dc9aa69392764ec0" dependencies = [ + "futures 0.3.19", "jsonrpc-client-transports", ] [[package]] name = "jsonrpc-derive" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99a847f9ec7bb52149b2786a17c9cb260d6effc6b8eeb8c16b343a487a7563a3" +checksum = "5b939a78fa820cdfcb7ee7484466746a7377760970f6f9c6fe19f9edcc8a38d2" dependencies = [ "proc-macro-crate 0.1.5", "proc-macro2", @@ -2915,73 +2726,80 @@ dependencies = [ [[package]] name = "jsonrpc-http-server" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb5c4513b7b542f42da107942b7b759f27120b5cc894729f88254b28dff44b7" +checksum = "e1dea6e07251d9ce6a552abfb5d7ad6bc290a4596c8dcc3d795fae2bbdc1f3ff" dependencies = [ - "hyper 0.12.36", + "futures 0.3.19", + "hyper", "jsonrpc-core", "jsonrpc-server-utils", "log", "net2", - "parking_lot 0.10.2", + "parking_lot", "unicase", ] [[package]] name = "jsonrpc-ipc-server" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf50e53e4eea8f421a7316c5f63e395f7bc7c4e786a6dc54d76fab6ff7aa7ce7" +checksum = "382bb0206323ca7cda3dcd7e245cea86d37d02457a02a975e3378fb149a48845" dependencies = [ + "futures 0.3.19", "jsonrpc-core", "jsonrpc-server-utils", "log", "parity-tokio-ipc", - "parking_lot 0.10.2", - "tokio-service", + "parking_lot", + "tower-service", ] [[package]] name = "jsonrpc-pubsub" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "639558e0604013be9787ae52f798506ae42bf4220fe587bdc5625871cc8b9c77" +checksum = "240f87695e6c6f62fb37f05c02c04953cf68d6408b8c1c89de85c7a0125b1011" dependencies = [ + "futures 0.3.19", "jsonrpc-core", + "lazy_static", "log", - "parking_lot 0.10.2", + "parking_lot", "rand 0.7.3", "serde", ] [[package]] name = "jsonrpc-server-utils" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72f1f3990650c033bd8f6bd46deac76d990f9bbfb5f8dc8c4767bf0a00392176" +checksum = "fa4fdea130485b572c39a460d50888beb00afb3e35de23ccd7fad8ff19f0e0d4" dependencies = [ - "bytes 0.4.12", + "bytes 1.1.0", + "futures 0.3.19", "globset", "jsonrpc-core", "lazy_static", "log", - "tokio 0.1.22", - "tokio-codec", + "tokio", + "tokio-stream", + "tokio-util", "unicase", ] [[package]] name = "jsonrpc-ws-server" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6596fe75209b73a2a75ebe1dce4e60e03b88a2b25e8807b667597f6315150d22" +checksum = "f892c7d766369475ab7b0669f417906302d7c0fb521285c0a0c92e52e7c8e946" dependencies = [ + "futures 0.3.19", "jsonrpc-core", "jsonrpc-server-utils", "log", "parity-ws", - "parking_lot 0.10.2", + "parking_lot", "slab", ] @@ -3012,30 +2830,30 @@ dependencies = [ [[package]] name = "kvdb" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8891bd853eff90e33024195d79d578dc984c82f9e0715fcd2b525a0c19d52811" +checksum = "45a3f58dc069ec0e205a27f5b45920722a46faed802a0541538241af6228f512" dependencies = [ "parity-util-mem", - "smallvec 1.6.1", + "smallvec", ] [[package]] name = "kvdb-memorydb" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a0da8e08caf08d384a620ec19bb6c9b85c84137248e202617fb91881f25912" +checksum = "c3b6b85fc643f5acd0bffb2cc8a6d150209379267af0d41db72170021841f9f5" dependencies = [ "kvdb", "parity-util-mem", - "parking_lot 0.11.1", + "parking_lot", ] [[package]] name = "kvdb-rocksdb" -version = "0.11.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b27cdb788bf1c8ade782289f9dbee626940be2961fd75c7cde993fa2f1ded1" +checksum = "9b1b6ea8f2536f504b645ad78419c8246550e19d2c3419a167080ce08edee35a" dependencies = [ "fs-swap", "kvdb", @@ -3043,10 +2861,10 @@ dependencies = [ "num_cpus", "owning_ref", "parity-util-mem", - "parking_lot 0.11.1", + "parking_lot", "regex", "rocksdb", - "smallvec 1.6.1", + "smallvec", ] [[package]] @@ -3066,15 +2884,15 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "leb128" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3576a87f2ba00f6f106fdfcd16db1d698d648a26ad8e0573cad8537c3c362d2a" +checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.100" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1fa8cddc8fbbee11227ef194b5317ed014b8acbf15139bd716a18ad3fe99ec5" +checksum = "e74d72e0f9b65b5b4ca49a346af3976df0f9c61d550727f349ecd559f251a26c" [[package]] name = "libloading" @@ -3088,9 +2906,9 @@ dependencies = [ [[package]] name = "libloading" -version = "0.7.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f84d96438c15fcd6c3f244c8fce01d1e2b9c6b5623e9c711dc9286d8fc92d6a" +checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" dependencies = [ "cfg-if 1.0.0", "winapi 0.3.9", @@ -3110,16 +2928,15 @@ checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a" [[package]] name = "libp2p" -version = "0.34.0" +version = "0.39.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5133112ce42be9482f6a87be92a605dd6bbc9e93c297aee77d172ff06908f3a" +checksum = "9004c06878ef8f3b4b4067e69a140d87ed20bf777287f82223e49713b36ee433" dependencies = [ "atomic", - "bytes 1.0.1", - "futures 0.3.16", + "bytes 1.1.0", + "futures 0.3.19", "lazy_static", "libp2p-core", - "libp2p-core-derive", "libp2p-deflate", "libp2p-dns", "libp2p-floodsub", @@ -3132,116 +2949,111 @@ dependencies = [ "libp2p-ping", "libp2p-plaintext", "libp2p-pnet", + "libp2p-relay", "libp2p-request-response", "libp2p-swarm", + "libp2p-swarm-derive", "libp2p-tcp", "libp2p-uds", "libp2p-wasm-ext", "libp2p-websocket", "libp2p-yamux", - "parity-multiaddr", - "parking_lot 0.11.1", - "pin-project 1.0.8", - "smallvec 1.6.1", + "multiaddr", + "parking_lot", + "pin-project 1.0.10", + "smallvec", "wasm-timer", ] [[package]] name = "libp2p-core" -version = "0.27.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a2d56aadc2c2bf22cd7797f86e56a65b5b3994a0136b65be3106938acae7a26" +checksum = "af9b4abdeaa420593a297c8592f63fad4234f4b88dc9343b8fd8e736c35faa59" dependencies = [ "asn1_der", "bs58", "ed25519-dalek", "either", "fnv", - "futures 0.3.16", + "futures 0.3.19", "futures-timer 3.0.2", "lazy_static", - "libsecp256k1 0.3.5", + "libsecp256k1 0.5.0", "log", - "multihash", + "multiaddr", + "multihash 0.14.0", "multistream-select", - "parity-multiaddr", - "parking_lot 0.11.1", - "pin-project 1.0.8", + "parking_lot", + "pin-project 1.0.10", "prost", "prost-build", "rand 0.7.3", "ring", "rw-stream-sink", - "sha2 0.9.5", - "smallvec 1.6.1", + "sha2 0.9.9", + "smallvec", "thiserror", - "unsigned-varint 0.7.0", + "unsigned-varint 0.7.1", "void", "zeroize", ] -[[package]] -name = "libp2p-core-derive" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4bc40943156e42138d22ed3c57ff0e1a147237742715937622a99b10fbe0156" -dependencies = [ - "quote", - "syn", -] - [[package]] name = "libp2p-deflate" -version = "0.27.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d42eed63305f0420736fa487f9acef720c4528bd7852a6a760f5ccde4813345" +checksum = "66097fccc0b7f8579f90a03ea76ba6196332ea049fd07fd969490a06819dcdc8" dependencies = [ "flate2", - "futures 0.3.16", + "futures 0.3.19", "libp2p-core", ] [[package]] name = "libp2p-dns" -version = "0.27.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5153b6db68fd4baa3b304e377db744dd8fea8ff4e4504509ee636abcde88d3e3" +checksum = "58ff08b3196b85a17f202d80589e93b1660a574af67275706657fdc762e42c32" dependencies = [ - "futures 0.3.16", + "async-std-resolver", + "futures 0.3.19", "libp2p-core", "log", + "smallvec", + "trust-dns-resolver", ] [[package]] name = "libp2p-floodsub" -version = "0.27.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3c63dfa06581b24b1d12bf9815b43689a784424be217d6545c800c7c75a207f" +checksum = "404eca8720967179dac7a5b4275eb91f904a53859c69ca8d018560ad6beb214f" dependencies = [ "cuckoofilter", "fnv", - "futures 0.3.16", + "futures 0.3.19", "libp2p-core", "libp2p-swarm", "log", "prost", "prost-build", "rand 0.7.3", - "smallvec 1.6.1", + "smallvec", ] [[package]] name = "libp2p-gossipsub" -version = "0.27.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12451ba9493e87c91baf2a6dffce9ddf1fbc807a0861532d7cf477954f8ebbee" +checksum = "b1cc48709bcbc3a3321f08a73560b4bbb4166a7d56f6fdb615bc775f4f91058e" dependencies = [ - "asynchronous-codec 0.5.0", + "asynchronous-codec 0.6.0", "base64 0.13.0", "byteorder", - "bytes 1.0.1", + "bytes 1.1.0", "fnv", - "futures 0.3.16", + "futures 0.3.19", "hex_fmt", "libp2p-core", "libp2p-swarm", @@ -3250,109 +3062,109 @@ dependencies = [ "prost-build", "rand 0.7.3", "regex", - "sha2 0.9.5", - "smallvec 1.6.1", - "unsigned-varint 0.6.0", + "sha2 0.9.9", + "smallvec", + "unsigned-varint 0.7.1", "wasm-timer", ] [[package]] name = "libp2p-identify" -version = "0.27.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b40fb36a059b7a8cce1514bd8b546fa612e006c9937caa7f5950cb20021fe91e" +checksum = "a7b61f6cf07664fb97016c318c4d4512b3dd4cc07238607f3f0163245f99008e" dependencies = [ - "futures 0.3.16", + "futures 0.3.19", "libp2p-core", "libp2p-swarm", "log", "prost", "prost-build", - "smallvec 1.6.1", + "smallvec", "wasm-timer", ] [[package]] name = "libp2p-kad" -version = "0.28.1" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf3da6c9acbcc05f93235d201d7d45ef4e8b88a45d8836f98becd8b4d443f066" +checksum = "50ed78489c87924235665a0ab345b298ee34dff0f7ad62c0ba6608b2144fb75e" dependencies = [ "arrayvec 0.5.2", "asynchronous-codec 0.6.0", - "bytes 1.0.1", + "bytes 1.1.0", "either", "fnv", - "futures 0.3.16", + "futures 0.3.19", "libp2p-core", "libp2p-swarm", "log", "prost", "prost-build", "rand 0.7.3", - "sha2 0.9.5", - "smallvec 1.6.1", + "sha2 0.9.9", + "smallvec", "uint", - "unsigned-varint 0.7.0", + "unsigned-varint 0.7.1", "void", "wasm-timer", ] [[package]] name = "libp2p-mdns" -version = "0.28.1" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e9e6374814d1b118d97ccabdfc975c8910bd16dc38a8bc058eeb08bf2080fe1" +checksum = "a29e6cbc2a24b8471b6567e580a0e8e7b70a6d0f0ea2be0844d1e842d7d4fa33" dependencies = [ "async-io", "data-encoding", "dns-parser", - "futures 0.3.16", + "futures 0.3.19", "if-watch", "lazy_static", "libp2p-core", "libp2p-swarm", "log", - "rand 0.7.3", - "smallvec 1.6.1", - "socket2 0.3.19", + "rand 0.8.4", + "smallvec", + "socket2 0.4.4", "void", ] [[package]] name = "libp2p-mplex" -version = "0.27.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "350ce8b3923594aedabd5d6e3f875d058435052a29c3f32df378bc70d10be464" +checksum = "313d9ea526c68df4425f580024e67a9d3ffd49f2c33de5154b1f5019816f7a99" dependencies = [ "asynchronous-codec 0.6.0", - "bytes 1.0.1", - "futures 0.3.16", + "bytes 1.1.0", + "futures 0.3.19", "libp2p-core", "log", "nohash-hasher", - "parking_lot 0.11.1", + "parking_lot", "rand 0.7.3", - "smallvec 1.6.1", - "unsigned-varint 0.7.0", + "smallvec", + "unsigned-varint 0.7.1", ] [[package]] name = "libp2p-noise" -version = "0.29.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4aca322b52a0c5136142a7c3971446fb1e9964923a526c9cc6ef3b7c94e57778" +checksum = "3f1db7212f342b6ba7c981cc40e31f76e9e56cb48e65fa4c142ecaca5839523e" dependencies = [ - "bytes 1.0.1", + "bytes 1.1.0", "curve25519-dalek 3.2.0", - "futures 0.3.16", + "futures 0.3.19", "lazy_static", "libp2p-core", "log", "prost", "prost-build", - "rand 0.7.3", - "sha2 0.9.5", + "rand 0.8.4", + "sha2 0.9.9", "snow", "static_assertions", "x25519-dalek", @@ -3361,11 +3173,11 @@ dependencies = [ [[package]] name = "libp2p-ping" -version = "0.27.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f3813276d0708c8db0f500d8beda1bda9ad955723b9cb272c41f4727256f73c" +checksum = "2482cfd9eb0b7a0baaf3e7b329dc4f2785181a161b1a47b7192f8d758f54a439" dependencies = [ - "futures 0.3.16", + "futures 0.3.19", "libp2p-core", "libp2p-swarm", "log", @@ -3376,107 +3188,140 @@ dependencies = [ [[package]] name = "libp2p-plaintext" -version = "0.27.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d58defcadb646ae4b033e130b48d87410bf76394dc3335496cae99dac803e61" +checksum = "13b4783e5423870b9a5c199f65a7a3bc66d86ab56b2b9beebf3c338d889cf8e4" dependencies = [ "asynchronous-codec 0.6.0", - "bytes 1.0.1", - "futures 0.3.16", + "bytes 1.1.0", + "futures 0.3.19", "libp2p-core", "log", "prost", "prost-build", - "unsigned-varint 0.7.0", + "unsigned-varint 0.7.1", "void", ] [[package]] name = "libp2p-pnet" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce3374f3b28162db9d3442c9347c4f14cb01e8290052615c7d341d40eae0599" +checksum = "07cb4dd4b917e5b40ddefe49b96b07adcd8d342e0317011d175b7b2bb1dcc974" dependencies = [ - "futures 0.3.16", + "futures 0.3.19", "log", - "pin-project 1.0.8", + "pin-project 1.0.10", "rand 0.7.3", "salsa20", "sha3", ] [[package]] -name = "libp2p-request-response" -version = "0.9.1" +name = "libp2p-relay" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0133f6cfd81cdc16e716de2982e012c62e6b9d4f12e41967b3ee361051c622aa" +dependencies = [ + "asynchronous-codec 0.6.0", + "bytes 1.1.0", + "futures 0.3.19", + "futures-timer 3.0.2", + "libp2p-core", + "libp2p-swarm", + "log", + "pin-project 1.0.10", + "prost", + "prost-build", + "rand 0.7.3", + "smallvec", + "unsigned-varint 0.7.1", + "void", + "wasm-timer", +] + +[[package]] +name = "libp2p-request-response" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10e5552827c33d8326502682da73a0ba4bfa40c1b55b216af3c303f32169dd89" +checksum = "06cdae44b6821466123af93cbcdec7c9e6ba9534a8af9cdc296446d39416d241" dependencies = [ "async-trait", - "bytes 1.0.1", - "futures 0.3.16", + "bytes 1.1.0", + "futures 0.3.19", "libp2p-core", "libp2p-swarm", "log", "lru", "minicbor", "rand 0.7.3", - "smallvec 1.6.1", - "unsigned-varint 0.7.0", + "smallvec", + "unsigned-varint 0.7.1", "wasm-timer", ] [[package]] name = "libp2p-swarm" -version = "0.27.2" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7955b973e1fd2bd61ffd43ce261c1223f61f4aacd5bae362a924993f9a25fd98" +checksum = "7083861341e1555467863b4cd802bea1e8c4787c0f7b5110097d0f1f3248f9a9" dependencies = [ "either", - "futures 0.3.16", + "futures 0.3.19", "libp2p-core", "log", "rand 0.7.3", - "smallvec 1.6.1", + "smallvec", "void", "wasm-timer", ] +[[package]] +name = "libp2p-swarm-derive" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab8cb308d4fc854869f5abb54fdab0833d2cf670d407c745849dc47e6e08d79c" +dependencies = [ + "quote", + "syn", +] + [[package]] name = "libp2p-tcp" -version = "0.27.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88a5aef80e519a6cb8e2663605142f97baaaea1a252eecbf8756184765f7471b" +checksum = "79edd26b6b4bb5feee210dcda562dca186940dfecb0024b979c3f50824b3bf28" dependencies = [ "async-io", - "futures 0.3.16", + "futures 0.3.19", "futures-timer 3.0.2", "if-watch", "ipnet", "libc", "libp2p-core", "log", - "socket2 0.3.19", + "socket2 0.4.4", ] [[package]] name = "libp2p-uds" -version = "0.27.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80ac51ce419f60be966e02103c17f67ff5dc4422ba83ba54d251d6c62a4ed487" +checksum = "280e793440dd4e9f273d714f4497325c72cddb0fe85a49f9a03c88f41dd20182" dependencies = [ "async-std", - "futures 0.3.16", + "futures 0.3.19", "libp2p-core", "log", ] [[package]] name = "libp2p-wasm-ext" -version = "0.27.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6149c46cb76935c80bc8be6ec6e3ebd5f5e1679765a255fb34331d54610f15dd" +checksum = "f553b7140fad3d7a76f50497b0ea591e26737d9607428a75509fc191e4d1b1f6" dependencies = [ - "futures 0.3.16", + "futures 0.3.19", "js-sys", "libp2p-core", "parity-send-wrapper", @@ -3486,12 +3331,12 @@ dependencies = [ [[package]] name = "libp2p-websocket" -version = "0.28.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3b1c6a3431045da8b925ed83384e4c5163e14b990572307fca9c507435d4d22" +checksum = "ddf99dcbf5063e9d59087f61b1e85c686ceab2f5abedb472d32288065c0e5e27" dependencies = [ "either", - "futures 0.3.16", + "futures 0.3.19", "futures-rustls", "libp2p-core", "log", @@ -3504,13 +3349,13 @@ dependencies = [ [[package]] name = "libp2p-yamux" -version = "0.30.1" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4819358c542a86ff95f6ae691efb4b94ddaf477079b01a686f5705b79bfc232a" +checksum = "214cc0dd9c37cbed27f0bb1eba0c41bbafdb93a8be5e9d6ae1e6b4b42cd044bf" dependencies = [ - "futures 0.3.16", + "futures 0.3.19", "libp2p-core", - "parking_lot 0.11.1", + "parking_lot", "thiserror", "yamux", ] @@ -3529,17 +3374,20 @@ dependencies = [ [[package]] name = "libsecp256k1" -version = "0.3.5" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc1e2c808481a63dc6da2074752fdd4336a3c8fcc68b83db6f1fd5224ae7962" +checksum = "bd1137239ab33b41aa9637a88a28249e5e70c40a42ccc92db7f12cc356c1fcd7" dependencies = [ "arrayref", - "crunchy", - "digest 0.8.1", - "hmac-drbg 0.2.0", + "base64 0.12.3", + "digest 0.9.0", + "hmac-drbg", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", "rand 0.7.3", - "sha2 0.8.2", - "subtle 2.4.1", + "serde", + "sha2 0.9.9", "typenum", ] @@ -3552,13 +3400,13 @@ dependencies = [ "arrayref", "base64 0.12.3", "digest 0.9.0", - "hmac-drbg 0.3.0", + "hmac-drbg", "libsecp256k1-core", "libsecp256k1-gen-ecmult", "libsecp256k1-gen-genmult", "rand 0.7.3", "serde", - "sha2 0.9.5", + "sha2 0.9.9", "typenum", ] @@ -3570,7 +3418,7 @@ checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" dependencies = [ "crunchy", "digest 0.9.0", - "subtle 2.4.1", + "subtle", ] [[package]] @@ -3619,9 +3467,9 @@ dependencies = [ [[package]] name = "linregress" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6e407dadb4ca4b31bc69c27aff00e7ca4534fdcee855159b039a7cebb5f395" +checksum = "d6c601a85f5ecd1aba625247bca0031585fb1c446461b142878a16f8245ddeb8" dependencies = [ "nalgebra", "statrs", @@ -3629,18 +3477,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "lock_api" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0382880606dff6d15c9476c416d18690b72742aa7b605bb6dd6ec9030fbf07eb" +checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b" dependencies = [ "scopeguard", ] @@ -3661,7 +3500,36 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ea2d928b485416e8908cff2d97d621db22b27f7b3b6729e438bcf42c671ba91" dependencies = [ - "hashbrown 0.11.2", + "hashbrown", +] + +[[package]] +name = "lru-cache" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "lz4" +version = "1.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac20ed6991e01bf6a2e68cc73df2b389707403662a8ba89f68511fb340f724c" +dependencies = [ + "libc", + "lz4-sys", +] + +[[package]] +name = "lz4-sys" +version = "1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dca79aa95d8b3226213ad454d328369853be3a1382d89532a854f4d69640acae" +dependencies = [ + "cc", + "libc", ] [[package]] @@ -3699,6 +3567,12 @@ dependencies = [ "tendril", ] +[[package]] +name = "match_cfg" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" + [[package]] name = "matchers" version = "0.0.1" @@ -3716,19 +3590,13 @@ checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" [[package]] name = "matrixmultiply" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a8a15b776d9dfaecd44b03c5828c2199cddff5247215858aac14624f8d6b741" +checksum = "add85d4dd35074e6fedc608f8c8f513a3548619a9024b751949ef0e8e45a4d84" dependencies = [ "rawpointer", ] -[[package]] -name = "maybe-uninit" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" - [[package]] name = "memchr" version = "2.4.1" @@ -3746,30 +3614,21 @@ dependencies = [ [[package]] name = "memoffset" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" -dependencies = [ - "autocfg", -] - -[[package]] -name = "memoffset" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" dependencies = [ "autocfg", ] [[package]] name = "memory-db" -version = "0.26.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "814bbecfc0451fc314eeea34f05bbcd5b98a7ad7af37faee088b86a1e633f1d4" +checksum = "de006e09d04fc301a5f7e817b75aa49801c4479a8af753764416b085337ddcc5" dependencies = [ "hash-db", - "hashbrown 0.9.1", + "hashbrown", "parity-util-mem", ] @@ -3805,9 +3664,9 @@ dependencies = [ [[package]] name = "minicbor" -version = "0.7.2" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c2b2c73f9640fccab53947e2b3474d5071fcbc8f82cac51ddf6c8041a30a9ea" +checksum = "51aa5bb0ca22415daca596a227b507f880ad1b2318a87fa9325312a5d285ca0d" dependencies = [ "minicbor-derive", ] @@ -3823,6 +3682,12 @@ dependencies = [ "syn", ] +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.4.4" @@ -3853,38 +3718,28 @@ dependencies = [ ] [[package]] -name = "mio-extras" -version = "2.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" -dependencies = [ - "lazycell", - "log", - "mio", - "slab", -] - -[[package]] -name = "mio-named-pipes" -version = "0.1.7" +name = "mio" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0840c1c50fd55e521b247f949c241c9997709f23bd7f023b9762cd561e935656" +checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" dependencies = [ + "libc", "log", - "mio", "miow 0.3.7", + "ntapi", "winapi 0.3.9", ] [[package]] -name = "mio-uds" -version = "0.6.8" +name = "mio-extras" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0" +checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" dependencies = [ - "iovec", - "libc", - "mio", + "lazycell", + "log", + "mio 0.6.23", + "slab", ] [[package]] @@ -3910,9 +3765,27 @@ dependencies = [ [[package]] name = "more-asserts" -version = "0.2.1" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389" + +[[package]] +name = "multiaddr" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0debeb9fcf88823ea64d64e4a815ab1643f33127d995978e099942ce38f25238" +checksum = "48ee4ea82141951ac6379f964f71b20876d43712bea8faf6dd1a375e08a46499" +dependencies = [ + "arrayref", + "bs58", + "byteorder", + "data-encoding", + "multihash 0.14.0", + "percent-encoding 2.1.0", + "serde", + "static_assertions", + "unsigned-varint 0.7.1", + "url 2.2.2", +] [[package]] name = "multibase" @@ -3935,20 +3808,33 @@ dependencies = [ "blake2s_simd", "blake3", "digest 0.9.0", - "generic-array 0.14.4", + "generic-array 0.14.5", "multihash-derive", - "sha2 0.9.5", + "sha2 0.9.9", "sha3", "unsigned-varint 0.5.1", ] +[[package]] +name = "multihash" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "752a61cd890ff691b4411423d23816d5866dd5621e4d1c5687a53b94b5a979d8" +dependencies = [ + "digest 0.9.0", + "generic-array 0.14.5", + "multihash-derive", + "sha2 0.9.9", + "unsigned-varint 0.7.1", +] + [[package]] name = "multihash-derive" version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "424f6e86263cd5294cbd7f1e95746b95aca0e0d66bff31e5a40d6baa87b4aa99" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro-error", "proc-macro2", "quote", @@ -3964,16 +3850,16 @@ checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" [[package]] name = "multistream-select" -version = "0.10.2" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d91ec0a2440aaff5f78ec35631a7027d50386c6163aa975f7caa0d5da4b6ff8" +checksum = "56a336acba8bc87c8876f6425407dbbe6c417bf478b22015f8fb0994ef3bc0ab" dependencies = [ - "bytes 1.0.1", - "futures 0.3.16", + "bytes 1.1.0", + "futures 0.3.19", "log", - "pin-project 1.0.8", - "smallvec 1.6.1", - "unsigned-varint 0.7.0", + "pin-project 1.0.10", + "smallvec", + "unsigned-varint 0.7.1", ] [[package]] @@ -4007,11 +3893,11 @@ dependencies = [ [[package]] name = "names" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef320dab323286b50fb5cdda23f61c796a72a89998ab565ca32525c5c556f2da" +checksum = "10a8690bf09abf659851e58cd666c3d37ac6af07c2bd7a9e332cfba471715775" dependencies = [ - "rand 0.3.23", + "rand 0.8.4", ] [[package]] @@ -4037,7 +3923,7 @@ version = "0.9.0" dependencies = [ "derive_more", "fs_extra", - "futures 0.3.16", + "futures 0.3.19", "hash-db", "hex", "kvdb", @@ -4045,7 +3931,7 @@ dependencies = [ "lazy_static", "log", "node-testing", - "parity-db", + "parity-db 0.2.4", "parity-util-mem", "polymesh-primitives", "polymesh-runtime-testnet", @@ -4085,8 +3971,8 @@ dependencies = [ "pallet-session", "pallet-timestamp", "pallet-transaction-payment", - "pallet-treasury 3.0.0", - "parity-scale-codec 2.2.0", + "pallet-treasury 4.0.0-dev", + "parity-scale-codec 2.3.1", "polymesh-primitives", "polymesh-runtime-testnet", "sc-executor", @@ -4117,7 +4003,7 @@ dependencies = [ "pallet-pips", "pallet-portfolio", "pallet-transaction-payment", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-primitives", "serde", "sp-api", @@ -4139,7 +4025,7 @@ dependencies = [ "pallet-pips", "pallet-portfolio", "pallet-transaction-payment", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-primitives", "serde", "serde_json", @@ -4156,7 +4042,7 @@ dependencies = [ "frame-support", "frame-system", "fs_extra", - "futures 0.3.16", + "futures 0.3.19", "log", "node-executor", "pallet-balances 0.1.0", @@ -4167,8 +4053,8 @@ dependencies = [ "pallet-staking", "pallet-timestamp", "pallet-transaction-payment", - "pallet-treasury 3.0.0", - "parity-scale-codec 2.2.0", + "pallet-treasury 4.0.0-dev", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", "polymesh-runtime-testnet", @@ -4207,16 +4093,24 @@ checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" [[package]] name = "nom" -version = "6.1.2" +version = "7.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7413f999671bd4745a7b624bd370a569fb6bc574b23c83a3c5ed2e453f3d5e2" +checksum = "1b1d11e1ef389c76fe5b81bcaf2ea32cf88b62bc494e19f493d0b30e7a930109" dependencies = [ - "bitvec 0.19.5", - "funty", "memchr", + "minimal-lexical", "version_check", ] +[[package]] +name = "ntapi" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" +dependencies = [ + "winapi 0.3.9", +] + [[package]] name = "num-bigint" version = "0.2.6" @@ -4282,9 +4176,9 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" dependencies = [ "hermit-abi", "libc", @@ -4292,31 +4186,29 @@ dependencies = [ [[package]] name = "object" -version = "0.22.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d3b63360ec3cb337817c2dbd47ab4a0f170d285d8e5a2064600f3def1402397" +checksum = "39f37e50073ccad23b6d09bcb5b263f4e76d3bb6038e4a3c08e52162ffa8abc2" dependencies = [ "crc32fast", "indexmap", + "memchr", ] [[package]] name = "object" -version = "0.26.1" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee2766204889d09937d00bfbb7fec56bb2a199e2ade963cab19185d8a6104c7c" +checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" -dependencies = [ - "parking_lot 0.11.1", -] +checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5" [[package]] name = "oorandom" @@ -4338,9 +4230,9 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl-probe" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "owning_ref" @@ -4353,11 +4245,11 @@ dependencies = [ [[package]] name = "packed_simd_2" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71c0c06716cfc81616fa8e22b721ce92fecd594508bc0eb3d04ae3ef35ac10c5" +checksum = "defdcfef86dcc44ad208f71d9ff4ce28df6537a4e0d6b0e8e845cb8ca10059a6" dependencies = [ - "cfg-if 0.1.10", + "cfg-if 1.0.0", "libm 0.1.4", ] @@ -4365,7 +4257,7 @@ dependencies = [ name = "pallet-asset" version = "0.1.0" dependencies = [ - "arrayvec 0.7.1", + "arrayvec 0.7.2", "frame-benchmarking", "frame-support", "frame-system", @@ -4380,11 +4272,12 @@ dependencies = [ "pallet-session", "pallet-statistics", "pallet-timestamp", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", "polymesh-primitives-derive", "rustc-hex", + "scale-info", "serde", "serde_derive", "serde_json", @@ -4399,14 +4292,14 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "frame-support", "frame-system", "pallet-session", - "parity-scale-codec 2.2.0", - "serde", + "parity-scale-codec 2.3.1", + "scale-info", "sp-application-crypto", "sp-authority-discovery", "sp-runtime", @@ -4415,42 +4308,41 @@ dependencies = [ [[package]] name = "pallet-authorship" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "frame-support", "frame-system", "impl-trait-for-tuples", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", + "scale-info", "sp-authorship", - "sp-inherents", "sp-runtime", "sp-std", ] [[package]] name = "pallet-babe" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", + "log", "pallet-authorship", "pallet-session", "pallet-timestamp", - "parity-scale-codec 2.2.0", - "serde", + "parity-scale-codec 2.3.1", + "scale-info", "sp-application-crypto", "sp-consensus-babe", "sp-consensus-vrf", - "sp-inherents", "sp-io", "sp-runtime", "sp-session", "sp-staking", "sp-std", - "sp-timestamp", ] [[package]] @@ -4460,12 +4352,14 @@ dependencies = [ "frame-benchmarking", "frame-support", "frame-system", + "log", "pallet-permissions", "pallet-timestamp", "pallet-transaction-payment", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", + "scale-info", "serde", "serde_derive", "sp-api", @@ -4479,14 +4373,15 @@ dependencies = [ [[package]] name = "pallet-balances" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", - "parity-scale-codec 2.2.0", - "serde", + "log", + "parity-scale-codec 2.3.1", + "scale-info", "sp-runtime", "sp-std", ] @@ -4497,9 +4392,10 @@ version = "0.1.0" dependencies = [ "frame-support", "frame-system", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", + "scale-info", "serde", "serde_derive", "sp-api", @@ -4517,14 +4413,16 @@ dependencies = [ "frame-benchmarking", "frame-support", "frame-system", + "log", "pallet-balances 0.1.0", "pallet-base", "pallet-identity", "pallet-multisig", "pallet-scheduler", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", + "scale-info", "serde", "sp-core", "sp-runtime", @@ -4541,9 +4439,10 @@ dependencies = [ "pallet-identity", "pallet-permissions", "pallet-timestamp", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", + "scale-info", "serde", "serde_derive", "sp-api", @@ -4569,9 +4468,10 @@ dependencies = [ "pallet-identity", "pallet-permissions", "pallet-timestamp", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", + "scale-info", "serde", "serde_derive", "sp-api", @@ -4598,10 +4498,11 @@ dependencies = [ "pallet-portfolio", "pallet-session", "pallet-timestamp", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", "polymesh-primitives-derive", + "scale-info", "serde", "serde_derive", "sp-api", @@ -4623,10 +4524,11 @@ dependencies = [ "pallet-base", "pallet-identity", "pallet-permissions", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", "polymesh-primitives-derive", + "scale-info", "serde", "serde_derive", "sp-std", @@ -4634,19 +4536,21 @@ dependencies = [ [[package]] name = "pallet-grandpa" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", + "log", "pallet-authorship", "pallet-session", - "parity-scale-codec 2.2.0", - "serde", + "parity-scale-codec 2.3.1", + "scale-info", "sp-application-crypto", "sp-core", "sp-finality-grandpa", + "sp-io", "sp-runtime", "sp-session", "sp-staking", @@ -4662,9 +4566,10 @@ dependencies = [ "frame-system", "pallet-identity", "pallet-timestamp", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", + "scale-info", "serde", "serde_derive", "sp-api", @@ -4683,7 +4588,7 @@ dependencies = [ "jsonrpc-core-client", "jsonrpc-derive", "pallet-group-rpc-runtime-api", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-primitives", "serde", "sp-api", @@ -4697,7 +4602,7 @@ dependencies = [ name = "pallet-group-rpc-runtime-api" version = "2.0.0" dependencies = [ - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", "serde", @@ -4718,13 +4623,15 @@ dependencies = [ "frame-support", "frame-system", "hex", + "log", "pallet-balances 0.1.0", "pallet-base", "pallet-permissions", "pallet-timestamp", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", + "scale-info", "schnorrkel 0.10.1", "serde", "serde_derive", @@ -4738,15 +4645,16 @@ dependencies = [ [[package]] name = "pallet-im-online" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", + "log", "pallet-authorship", - "parity-scale-codec 2.2.0", - "serde", + "parity-scale-codec 2.3.1", + "scale-info", "sp-application-crypto", "sp-core", "sp-io", @@ -4757,14 +4665,14 @@ dependencies = [ [[package]] name = "pallet-indices" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", - "parity-scale-codec 2.2.0", - "serde", + "parity-scale-codec 2.3.1", + "scale-info", "sp-core", "sp-io", "sp-keyring", @@ -4782,9 +4690,10 @@ dependencies = [ "pallet-identity", "pallet-permissions", "pallet-timestamp", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", + "scale-info", "serde", "sp-core", "sp-runtime", @@ -4794,13 +4703,15 @@ dependencies = [ [[package]] name = "pallet-offences" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "frame-support", "frame-system", - "pallet-balances 3.0.0", - "parity-scale-codec 2.2.0", + "log", + "pallet-balances 4.0.0-dev", + "parity-scale-codec 2.3.1", + "scale-info", "serde", "sp-runtime", "sp-staking", @@ -4814,9 +4725,10 @@ dependencies = [ "frame-benchmarking", "frame-support", "frame-system", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", + "scale-info", "serde", "sp-runtime", "sp-std", @@ -4837,13 +4749,14 @@ dependencies = [ "pallet-permissions", "pallet-timestamp", "pallet-treasury 0.1.0", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", "polymesh-primitives-derive", "polymesh-runtime-common", "rand 0.8.4", "rand_chacha 0.3.1", + "scale-info", "serde", "serde_derive", "sp-api", @@ -4865,9 +4778,10 @@ dependencies = [ "pallet-base", "pallet-identity", "pallet-permissions", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", + "scale-info", "serde", "sp-arithmetic", "sp-std", @@ -4881,9 +4795,10 @@ dependencies = [ "frame-support", "frame-system", "pallet-identity", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", + "scale-info", "serde", "sp-core", "sp-io", @@ -4899,7 +4814,7 @@ dependencies = [ "jsonrpc-core-client", "jsonrpc-derive", "pallet-protocol-fee-rpc-runtime-api", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "serde", "sp-api", @@ -4912,7 +4827,7 @@ name = "pallet-protocol-fee-rpc-runtime-api" version = "0.1.0" dependencies = [ "frame-support", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "serde", "serde_json", @@ -4922,13 +4837,14 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "frame-support", "frame-system", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "safe-mix", + "scale-info", "sp-runtime", "sp-std", ] @@ -4941,9 +4857,10 @@ dependencies = [ "frame-support", "frame-system", "pallet-identity", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", + "scale-info", "sp-runtime", "sp-std", ] @@ -4957,9 +4874,10 @@ dependencies = [ "frame-system", "pallet-identity", "pallet-staking", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", + "scale-info", "serde", "sp-core", "sp-runtime", @@ -4968,14 +4886,15 @@ dependencies = [ [[package]] name = "pallet-scheduler" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", - "parity-scale-codec 2.2.0", - "serde", + "log", + "parity-scale-codec 2.3.1", + "scale-info", "sp-io", "sp-runtime", "sp-std", @@ -4983,15 +4902,16 @@ dependencies = [ [[package]] name = "pallet-session" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "frame-support", "frame-system", "impl-trait-for-tuples", + "log", "pallet-timestamp", - "parity-scale-codec 2.2.0", - "serde", + "parity-scale-codec 2.3.1", + "scale-info", "sp-core", "sp-io", "sp-runtime", @@ -5020,17 +4940,17 @@ dependencies = [ "pallet-scheduler", "pallet-statistics", "pallet-timestamp", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", "polymesh-primitives-derive", + "scale-info", "serde", "serde_derive", "sp-api", "sp-core", "sp-io", "sp-runtime", - "sp-serializer", "sp-std", "sp-version", ] @@ -5042,15 +4962,17 @@ dependencies = [ "frame-benchmarking", "frame-support", "frame-system", + "log", "pallet-authorship", "pallet-babe", "pallet-identity", "pallet-session", "pallet-staking-reward-curve", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", "rand_chacha 0.2.2", + "scale-info", "serde", "sp-arithmetic", "sp-core", @@ -5065,10 +4987,10 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "proc-macro-crate 0.1.5", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -5082,7 +5004,7 @@ dependencies = [ "jsonrpc-core-client", "jsonrpc-derive", "pallet-staking-rpc-runtime-api", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "serde", "sp-api", "sp-blockchain", @@ -5110,9 +5032,10 @@ dependencies = [ "pallet-external-agents", "pallet-session", "pallet-timestamp", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", + "scale-info", "serde", "serde_derive", "sp-api", @@ -5141,17 +5064,17 @@ dependencies = [ "pallet-portfolio", "pallet-settlement", "pallet-timestamp", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", "polymesh-primitives-derive", + "scale-info", "serde", "serde_derive", "sp-api", "sp-core", "sp-io", "sp-runtime", - "sp-serializer", "sp-std", "sp-version", ] @@ -5162,7 +5085,8 @@ version = "2.0.0" dependencies = [ "frame-support", "frame-system", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", + "scale-info", "serde", "sp-core", "sp-io", @@ -5180,9 +5104,10 @@ dependencies = [ "frame-system", "pallet-identity", "pallet-permissions", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", + "scale-info", "serde", "serde_derive", "sp-std", @@ -5190,15 +5115,15 @@ dependencies = [ [[package]] name = "pallet-timestamp" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", - "impl-trait-for-tuples", - "parity-scale-codec 2.2.0", - "serde", + "log", + "parity-scale-codec 2.3.1", + "scale-info", "sp-inherents", "sp-io", "sp-runtime", @@ -5213,9 +5138,10 @@ dependencies = [ "frame-support", "frame-system", "pallet-timestamp", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", + "scale-info", "serde", "serde_json", "sp-api", @@ -5234,9 +5160,10 @@ dependencies = [ "pallet-balances 0.1.0", "pallet-identity", "pallet-permissions", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", + "scale-info", "serde", "serde_derive", "sp-api", @@ -5249,14 +5176,15 @@ dependencies = [ [[package]] name = "pallet-treasury" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "frame-support", "frame-system", "impl-trait-for-tuples", - "pallet-balances 3.0.0", - "parity-scale-codec 2.2.0", + "pallet-balances 4.0.0-dev", + "parity-scale-codec 2.3.1", + "scale-info", "serde", "sp-runtime", "sp-std", @@ -5273,9 +5201,10 @@ dependencies = [ "hex-literal 0.2.1", "pallet-balances 0.1.0", "pallet-permissions", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", + "scale-info", "serde", "sp-core", "sp-io", @@ -5296,26 +5225,27 @@ dependencies = [ "libc", "log", "memmap2", - "parking_lot 0.11.1", + "parking_lot", "rand 0.8.4", ] [[package]] -name = "parity-multiaddr" -version = "0.11.2" +name = "parity-db" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58341485071825827b7f03cf7efd1cb21e6a709bea778fb50227fd45d2f361b4" +checksum = "68de01cff53da5574397233383dd7f5c15ee958c348245765ea8cb09f2571e6b" dependencies = [ - "arrayref", - "bs58", - "byteorder", - "data-encoding", - "multihash", - "percent-encoding 2.1.0", - "serde", - "static_assertions", - "unsigned-varint 0.7.0", - "url 2.2.2", + "blake2-rfc", + "crc32fast", + "fs2", + "hex", + "libc", + "log", + "lz4", + "memmap2", + "parking_lot", + "rand 0.8.4", + "snap", ] [[package]] @@ -5333,15 +5263,15 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "2.2.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8975095a2a03bbbdc70a74ab11a4f76a6d0b84680d87c68d722531b0ac28e8a9" +checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" dependencies = [ - "arrayvec 0.7.1", + "arrayvec 0.7.2", "bitvec 0.20.4", - "byte-slice-cast 1.0.0", + "byte-slice-cast 1.2.0", "impl-trait-for-tuples", - "parity-scale-codec-derive 2.2.0", + "parity-scale-codec-derive 2.3.1", "serde", ] @@ -5359,11 +5289,11 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "2.2.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40dbbfef7f0a1143c5b06e0d76a6278e25dac0bc1af4be51a0fbb73f07e7ad09" +checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -5377,36 +5307,31 @@ checksum = "aa9777aa91b8ad9dd5aaa04a9b6bcb02c7f1deb952fca5a66034d5e63afc5c6f" [[package]] name = "parity-tokio-ipc" -version = "0.4.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e57fea504fea33f9fbb5f49f378359030e7e026a6ab849bb9e8f0787376f1bf" +checksum = "9981e32fb75e004cc148f5fb70342f393830e0a4aa62e3cc93b50976218d42b6" dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", + "futures 0.3.19", "libc", "log", - "mio-named-pipes", - "miow 0.3.7", "rand 0.7.3", - "tokio 0.1.22", - "tokio-named-pipes", - "tokio-uds", + "tokio", "winapi 0.3.9", ] [[package]] name = "parity-util-mem" -version = "0.9.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "664a8c6b8e62d8f9f2f937e391982eb433ab285b4cd9545b342441e04a906e42" +checksum = "6f4cb4e169446179cbc6b8b6320cc9fca49bd2e94e8db25f25f200a8ea774770" dependencies = [ "cfg-if 1.0.0", - "hashbrown 0.9.1", + "hashbrown", "impl-trait-for-tuples", "parity-util-mem-derive", - "parking_lot 0.11.1", + "parking_lot", "primitive-types", - "smallvec 1.6.1", + "smallvec", "winapi 0.3.9", ] @@ -5432,21 +5357,21 @@ dependencies = [ [[package]] name = "parity-wasm" -version = "0.41.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddfc878dac00da22f8f61e7af3157988424567ab01d9920b962ef7dcbd7cd865" +checksum = "be5e13c266502aadf83426d87d81a0f5d1ef45b8027f5a471c360abfe4bfae92" [[package]] name = "parity-ws" -version = "0.10.1" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322d72dfe461b8b9e367d057ceace105379d64d5b03907d23c481ccf3fbf8aa4" +checksum = "5983d3929ad50f12c3eb9a6743f19d691866ecd44da74c0a3308c3f8a56df0c6" dependencies = [ "byteorder", "bytes 0.4.12", "httparse", "log", - "mio", + "mio 0.6.23", "mio-extras", "rand 0.7.3", "sha-1 0.8.2", @@ -5462,94 +5387,34 @@ checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" [[package]] name = "parking_lot" -version = "0.9.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" dependencies = [ - "lock_api 0.3.4", - "parking_lot_core 0.6.2", - "rustc_version 0.2.3", -] - -[[package]] -name = "parking_lot" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505e" -dependencies = [ - "lock_api 0.3.4", - "parking_lot_core 0.7.2", -] - -[[package]] -name = "parking_lot" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" -dependencies = [ - "instant", - "lock_api 0.4.4", - "parking_lot_core 0.8.3", -] - -[[package]] -name = "parking_lot_core" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" -dependencies = [ - "cfg-if 0.1.10", - "cloudabi", - "libc", - "redox_syscall 0.1.57", - "rustc_version 0.2.3", - "smallvec 0.6.14", - "winapi 0.3.9", -] - -[[package]] -name = "parking_lot_core" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3" -dependencies = [ - "cfg-if 0.1.10", - "cloudabi", - "libc", - "redox_syscall 0.1.57", - "smallvec 1.6.1", - "winapi 0.3.9", + "instant", + "lock_api", + "parking_lot_core", ] [[package]] name = "parking_lot_core" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018" +checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" dependencies = [ "cfg-if 1.0.0", "instant", "libc", - "redox_syscall 0.2.10", - "smallvec 1.6.1", + "redox_syscall", + "smallvec", "winapi 0.3.9", ] [[package]] name = "paste" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf547ad0c65e31259204bd90935776d1c693cec2f4ff7abb7a1bbbd40dfe58" - -[[package]] -name = "pbkdf2" -version = "0.3.0" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9" -dependencies = [ - "byteorder", - "crypto-mac 0.7.0", -] +checksum = "0744126afe1a6dd7f394cb50a716dbe086cb06e255e53d8d0185d82828358fb5" [[package]] name = "pbkdf2" @@ -5561,10 +5426,13 @@ dependencies = [ ] [[package]] -name = "pdqselect" -version = "0.1.0" +name = "pbkdf2" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec91767ecc0a0bbe558ce8c9da33c068066c57ecc8bb8477ef8c1ad3ef77c27" +checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" +dependencies = [ + "crypto-mac 0.11.1", +] [[package]] name = "peeking_take_while" @@ -5702,27 +5570,27 @@ dependencies = [ [[package]] name = "pin-project" -version = "0.4.28" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "918192b5c59119d51e0cd221f4d49dde9112824ba717369e903c97d076083d0f" +checksum = "9615c18d31137579e9ff063499264ddc1278e7b1982757ebc111028c4d1dc909" dependencies = [ - "pin-project-internal 0.4.28", + "pin-project-internal 0.4.29", ] [[package]] name = "pin-project" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "576bc800220cc65dac09e99e97b08b358cfab6e17078de8dc5fee223bd2d0c08" +checksum = "58ad3879ad3baf4e44784bc6a718a8698867bb991f8ce24d1bcbe2cfb4c3a75e" dependencies = [ - "pin-project-internal 1.0.8", + "pin-project-internal 1.0.10", ] [[package]] name = "pin-project-internal" -version = "0.4.28" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be26700300be6d9d23264c73211d8190e755b6b5ca7a1b28230025511b52a5e" +checksum = "044964427019eed9d49d9d5bbce6047ef18f37100ea400912a9fa4a3523ab12a" dependencies = [ "proc-macro2", "quote", @@ -5731,9 +5599,9 @@ dependencies = [ [[package]] name = "pin-project-internal" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e8fe8163d14ce7f0cdac2e040116f22eac817edabff0be91e8aff7e9accf389" +checksum = "744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bb" dependencies = [ "proc-macro2", "quote", @@ -5748,9 +5616,9 @@ checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" [[package]] name = "pin-project-lite" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443" +checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c" [[package]] name = "pin-utils" @@ -5760,9 +5628,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.19" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" +checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" [[package]] name = "plotters" @@ -5794,9 +5662,9 @@ dependencies = [ [[package]] name = "polling" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92341d779fa34ea8437ef4d82d440d5e1ce3f3ff7f824aa64424cd481f9a1f25" +checksum = "685404d509889fade3e86fe3a5803bca2ec09b0c0778d5ada6ec8bf7a8de5259" dependencies = [ "cfg-if 1.0.0", "libc", @@ -5807,11 +5675,12 @@ dependencies = [ [[package]] name = "poly1305" -version = "0.6.2" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b7456bc1ad2d4cf82b3a016be4c2ac48daf11bf990c1603ebd447fe6f30fca8" +checksum = "048aeb476be11a4b6ca432ca569e375810de9294ae78f4774e78ea98a9246ede" dependencies = [ - "cpuid-bool", + "cpufeatures 0.2.1", + "opaque-debug 0.3.0", "universal-hash", ] @@ -5826,12 +5695,13 @@ dependencies = [ "frame-support", "frame-system", "frame-system-rpc-runtime-api", - "futures 0.3.16", + "futures 0.3.19", "jsonrpc-core", "log", "node-rpc", "node-rpc-runtime-api", "pallet-asset", + "pallet-babe", "pallet-balances 0.1.0", "pallet-bridge", "pallet-committee", @@ -5853,7 +5723,7 @@ dependencies = [ "pallet-staking", "pallet-staking-rpc-runtime-api", "pallet-sudo", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-node-rpc", "polymesh-primitives", @@ -5872,18 +5742,21 @@ dependencies = [ "sc-consensus", "sc-consensus-babe", "sc-consensus-slots", + "sc-consensus-uncles", "sc-executor", "sc-finality-grandpa", "sc-light", "sc-network", "sc-rpc", "sc-service", + "sc-sync-state-rpc", "sc-telemetry", "sc-transaction-pool", "serde", "serde_json", "sp-api", "sp-authority-discovery", + "sp-authorship", "sp-block-builder", "sp-blockchain", "sp-consensus", @@ -5894,7 +5767,9 @@ dependencies = [ "sp-offchain", "sp-runtime", "sp-session", + "sp-timestamp", "sp-transaction-pool", + "sp-transaction-storage-proof", "structopt", "substrate-prometheus-endpoint", "vergen", @@ -5904,7 +5779,7 @@ dependencies = [ name = "polymesh-build-tool" version = "0.1.0" dependencies = [ - "substrate-wasm-builder 3.0.0", + "substrate-wasm-builder 4.0.0", ] [[package]] @@ -5917,9 +5792,10 @@ dependencies = [ "lazy_static", "pallet-session", "pallet-timestamp", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-primitives", "polymesh-primitives-derive", + "scale-info", "schnorrkel 0.10.1", "serde", "serde_derive", @@ -5940,9 +5816,10 @@ dependencies = [ "frame-system", "pallet-permissions", "pallet-transaction-payment", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", + "scale-info", "sp-runtime", "sp-std", ] @@ -5956,7 +5833,7 @@ dependencies = [ "pallet-group-rpc", "pallet-protocol-fee-rpc", "pallet-staking-rpc", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-primitives", "sc-chain-spec", "sc-client-api", @@ -5969,6 +5846,7 @@ dependencies = [ "sc-rpc", "sc-rpc-api", "sc-sync-state-rpc", + "sc-transaction-pool-api", "sp-api", "sp-block-builder", "sp-blockchain", @@ -5976,7 +5854,6 @@ dependencies = [ "sp-consensus-babe", "sp-keystore", "sp-runtime", - "sp-transaction-pool", "substrate-frame-rpc-system", ] @@ -5993,11 +5870,12 @@ dependencies = [ "frame-system", "hex", "libsecp256k1 0.6.0", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-primitives-derive", "rand 0.7.3", "rand_core 0.5.1", "rustc-hex", + "scale-info", "schnorrkel 0.10.1", "serde", "serde_json", @@ -6024,12 +5902,13 @@ dependencies = [ name = "polymesh-runtime-ci" version = "0.1.0" dependencies = [ - "cryptography_core 1.0.0 (git+https://github.com/PolymathNetwork/cryptography.git?tag=confidential-identity-v1.1.3)", + "cryptography_core 1.0.0 (git+https://github.com/PolymathNetwork/cryptography.git?branch=confidential-identity-v1)", "frame-executive", "frame-support", "frame-system", "frame-system-rpc-runtime-api", "lazy_static", + "log", "node-rpc-runtime-api", "pallet-asset", "pallet-authority-discovery", @@ -6072,16 +5951,17 @@ dependencies = [ "pallet-transaction-payment", "pallet-treasury 0.1.0", "pallet-utility", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-build-tool", "polymesh-common-utilities", "polymesh-extensions", "polymesh-primitives", "polymesh-runtime-common", "polymesh-weights", + "scale-info", "serde", "serde_derive", - "smallvec 1.6.1", + "smallvec", "sp-api", "sp-arithmetic", "sp-authority-discovery", @@ -6116,12 +5996,12 @@ dependencies = [ "pallet-multisig", "pallet-portfolio", "pallet-timestamp", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-common-utilities", "polymesh-primitives", "rand 0.7.3", "serde", - "smallvec 1.6.1", + "smallvec", "sp-core", "sp-io", "sp-runtime", @@ -6132,14 +6012,15 @@ dependencies = [ name = "polymesh-runtime-develop" version = "0.1.0" dependencies = [ - "cryptography_core 1.0.0 (git+https://github.com/PolymathNetwork/cryptography.git?tag=confidential-identity-v1.1.3)", + "cryptography_core 1.0.0 (git+https://github.com/PolymathNetwork/cryptography.git?branch=confidential-identity-v1)", "frame-benchmarking", "frame-executive", "frame-support", "frame-system", "frame-system-benchmarking", "frame-system-rpc-runtime-api", - "hex-literal 0.3.3", + "hex-literal 0.3.4", + "log", "node-rpc-runtime-api", "pallet-asset", "pallet-authority-discovery", @@ -6182,13 +6063,14 @@ dependencies = [ "pallet-transaction-payment", "pallet-treasury 0.1.0", "pallet-utility", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-build-tool", "polymesh-common-utilities", "polymesh-extensions", "polymesh-primitives", "polymesh-runtime-common", "polymesh-weights", + "scale-info", "serde", "sp-api", "sp-arithmetic", @@ -6211,12 +6093,13 @@ dependencies = [ name = "polymesh-runtime-mainnet" version = "0.1.0" dependencies = [ - "cryptography_core 1.0.0 (git+https://github.com/PolymathNetwork/cryptography.git?tag=confidential-identity-v1.1.3)", + "cryptography_core 1.0.0 (git+https://github.com/PolymathNetwork/cryptography.git?branch=confidential-identity-v1)", "frame-executive", "frame-support", "frame-system", "frame-system-rpc-runtime-api", "lazy_static", + "log", "node-rpc-runtime-api", "pallet-asset", "pallet-authority-discovery", @@ -6258,16 +6141,17 @@ dependencies = [ "pallet-transaction-payment", "pallet-treasury 0.1.0", "pallet-utility", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-build-tool", "polymesh-common-utilities", "polymesh-extensions", "polymesh-primitives", "polymesh-runtime-common", "polymesh-weights", + "scale-info", "serde", "serde_derive", - "smallvec 1.6.1", + "smallvec", "sp-api", "sp-arithmetic", "sp-authority-discovery", @@ -6289,12 +6173,13 @@ dependencies = [ name = "polymesh-runtime-testnet" version = "0.1.0" dependencies = [ - "cryptography_core 1.0.0 (git+https://github.com/PolymathNetwork/cryptography.git?tag=confidential-identity-v1.1.3)", + "cryptography_core 1.0.0 (git+https://github.com/PolymathNetwork/cryptography.git?branch=confidential-identity-v1)", "frame-executive", "frame-support", "frame-system", "frame-system-rpc-runtime-api", "lazy_static", + "log", "node-rpc-runtime-api", "pallet-asset", "pallet-authority-discovery", @@ -6337,16 +6222,17 @@ dependencies = [ "pallet-transaction-payment", "pallet-treasury 0.1.0", "pallet-utility", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "polymesh-build-tool", "polymesh-common-utilities", "polymesh-extensions", "polymesh-primitives", "polymesh-runtime-common", "polymesh-weights", + "scale-info", "serde", "serde_derive", - "smallvec 1.6.1", + "smallvec", "sp-api", "sp-arithmetic", "sp-authority-discovery", @@ -6370,17 +6256,18 @@ version = "1.0.0" dependencies = [ "chrono", "confidential_identity 1.0.0", - "cryptography_core 1.0.0 (git+https://github.com/PolymathNetwork/cryptography.git?tag=confidential-identity-v1.1.3)", + "cryptography_core 1.0.0 (git+https://github.com/PolymathNetwork/cryptography.git?branch=confidential-identity-v1)", "env_logger", "frame-benchmarking", "frame-executive", "frame-support", "frame-system", "frame-system-rpc-runtime-api", - "hex-literal 0.3.3", + "hex-literal 0.3.4", "ink_primitives", "lazy_static", "libsecp256k1 0.6.0", + "log", "node-rpc-runtime-api", "pallet-asset", "pallet-authority-discovery", @@ -6423,8 +6310,8 @@ dependencies = [ "pallet-transaction-payment", "pallet-treasury 0.1.0", "pallet-utility", - "parity-scale-codec 2.2.0", - "parking_lot 0.11.1", + "parity-scale-codec 2.3.1", + "parking_lot", "polymesh-common-utilities", "polymesh-extensions", "polymesh-primitives", @@ -6432,9 +6319,10 @@ dependencies = [ "polymesh-runtime-develop", "polymesh-weights", "rand 0.7.3", + "scale-info", "serde", "serde_json", - "smallvec 1.6.1", + "smallvec", "sp-api", "sp-arithmetic", "sp-authority-discovery", @@ -6497,20 +6385,21 @@ dependencies = [ [[package]] name = "polyval" -version = "0.4.5" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eebcc4aa140b9abd2bc40d9c3f7ccec842679cd79045ac3a7ac698c1a064b7cd" +checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" dependencies = [ - "cpuid-bool", + "cfg-if 1.0.0", + "cpufeatures 0.2.1", "opaque-debug 0.3.0", "universal-hash", ] [[package]] name = "ppv-lite86" -version = "0.2.10" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" [[package]] name = "precomputed-hash" @@ -6520,13 +6409,14 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "primitive-types" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06345ee39fbccfb06ab45f3a1a5798d9dafa04cb8921a76d227040003a234b0e" +checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" dependencies = [ "fixed-hash", "impl-codec", "impl-serde", + "scale-info", "uint", ] @@ -6541,9 +6431,9 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fdbd1df62156fbc5945f4762632564d7d038153091c3fcf1067f6aef7cff92" +checksum = "1ebace6889caf889b4d3f76becee12e90353f2b8c7d875534a71e5742f8f6f83" dependencies = [ "thiserror", "toml", @@ -6579,54 +6469,48 @@ version = "0.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" -[[package]] -name = "proc-macro-nested" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" - [[package]] name = "proc-macro2" -version = "1.0.28" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7ed8b8c7b886ea3ed7dde405212185f423ab44682667c8c6dd14aa1d9f6612" +checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" dependencies = [ "unicode-xid", ] [[package]] name = "prometheus" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8425533e7122f0c3cc7a37e6244b16ad3a2cc32ae7ac6276e2a75da0d9c200d" +checksum = "5986aa8d62380092d2f50f8b1cdba9cb9b6731ffd4b25b51fd126b6c3e05b99c" dependencies = [ "cfg-if 1.0.0", "fnv", "lazy_static", - "parking_lot 0.11.1", - "regex", + "memchr", + "parking_lot", "thiserror", ] [[package]] name = "prost" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e6984d2f1a23009bd270b8bb56d0926810a3d483f59c987d77969e9d8e840b2" +checksum = "de5e2533f59d08fcf364fd374ebda0692a70bd6d7e66ef97f306f45c6c5d8020" dependencies = [ - "bytes 1.0.1", + "bytes 1.1.0", "prost-derive", ] [[package]] name = "prost-build" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d3ebd75ac2679c2af3a92246639f9fcc8a442ee420719cc4fe195b98dd5fa3" +checksum = "355f634b43cdd80724ee7848f95770e7e70eefa6dcf14fea676216573b8fd603" dependencies = [ - "bytes 1.0.1", + "bytes 1.1.0", "heck", - "itertools 0.9.0", + "itertools", "log", "multimap", "petgraph", @@ -6638,12 +6522,12 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "169a15f3008ecb5160cba7d37bcd690a7601b6d30cfb87a117d45e59d52af5d4" +checksum = "600d2f334aa05acb02a755e217ef1ab6dea4d51b58b7846588b747edec04efba" dependencies = [ "anyhow", - "itertools 0.9.0", + "itertools", "proc-macro2", "quote", "syn", @@ -6651,32 +6535,32 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b518d7cdd93dab1d1122cf07fa9a60771836c668dde9d9e2a139f957f0d9f1bb" +checksum = "603bbd6394701d13f3f25aada59c7de9d35a6a5887cfc156181234a44002771b" dependencies = [ - "bytes 1.0.1", + "bytes 1.1.0", "prost", ] [[package]] name = "psm" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0617ee61163b5d941d804065ce49040967610a4d4278fae73e096a057b01d358" +checksum = "cd136ff4382c4753fc061cb9e4712ab2af263376b95bbd5bd8cd50c020b78e69" dependencies = [ "cc", ] [[package]] name = "pwasm-utils" -version = "0.14.0" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f53bc2558e8376358ebdc28301546471d67336584f6438ed4b7c7457a055fd7" +checksum = "880b3384fb00b8f6ecccd5d358b93bd2201900ae3daad213791d1864f6441f5c" dependencies = [ "byteorder", "log", - "parity-wasm 0.41.0", + "parity-wasm 0.42.2", ] [[package]] @@ -6704,9 +6588,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.9" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145" dependencies = [ "proc-macro2", ] @@ -6717,41 +6601,12 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "def50a86306165861203e7f84ecffbbdfdea79f0e51039b33de1e952358c47ac" -[[package]] -name = "radium" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "941ba9d78d8e2f7ce474c015eea4d9c6d25b6a3327f9832ee29a4de27f91bbb8" - [[package]] name = "radium" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" -[[package]] -name = "rand" -version = "0.3.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" -dependencies = [ - "libc", - "rand 0.4.6", -] - -[[package]] -name = "rand" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" -dependencies = [ - "fuchsia-cprng", - "libc", - "rand_core 0.3.1", - "rdrand", - "winapi 0.3.9", -] - [[package]] name = "rand" version = "0.7.3" @@ -6798,21 +6653,6 @@ dependencies = [ "rand_core 0.6.3", ] -[[package]] -name = "rand_core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -dependencies = [ - "rand_core 0.4.2", -] - -[[package]] -name = "rand_core" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" - [[package]] name = "rand_core" version = "0.5.1" @@ -6828,14 +6668,14 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "getrandom 0.2.3", + "getrandom 0.2.4", ] [[package]] name = "rand_distr" -version = "0.4.1" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "051b398806e42b9cd04ad9ec8f81e355d0a382c543ac6672c62f5a5b452ef142" +checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" dependencies = [ "num-traits", "rand 0.8.4", @@ -6868,17 +6708,6 @@ dependencies = [ "rand_core 0.5.1", ] -[[package]] -name = "raw-cpuid" -version = "8.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fdf7d9dbd43f3d81d94a49c1c3df73cc2b3827995147e6cf7f89d4ec5483e73" -dependencies = [ - "bitflags", - "cc", - "rustc_version 0.2.3", -] - [[package]] name = "rawpointer" version = "0.2.1" @@ -6892,7 +6721,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" dependencies = [ "autocfg", - "crossbeam-deque 0.8.1", + "crossbeam-deque", "either", "rayon-core", ] @@ -6904,27 +6733,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" dependencies = [ "crossbeam-channel", - "crossbeam-deque 0.8.1", - "crossbeam-utils 0.8.5", + "crossbeam-deque", + "crossbeam-utils", "lazy_static", "num_cpus", ] -[[package]] -name = "rdrand" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -dependencies = [ - "rand_core 0.3.1", -] - -[[package]] -name = "redox_syscall" -version = "0.1.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" - [[package]] name = "redox_syscall" version = "0.2.10" @@ -6940,8 +6754,8 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" dependencies = [ - "getrandom 0.2.3", - "redox_syscall 0.2.10", + "getrandom 0.2.4", + "redox_syscall", ] [[package]] @@ -6972,7 +6786,7 @@ checksum = "571f7f397d61c4755285cd37853fe8e03271c243424a907415909379659381c5" dependencies = [ "log", "rustc-hash", - "smallvec 1.6.1", + "smallvec", ] [[package]] @@ -7022,11 +6836,21 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "resolv-conf" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" +dependencies = [ + "hostname", + "quick-error 1.2.3", +] + [[package]] name = "retain_mut" -version = "0.1.3" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9c17925a9027d298a4603d286befe3f9dc0e8ed02523141914eb628798d6e5b" +checksum = "51dd4445360338dab5116712bee1388dc727991d51969558a8882ab552e6db30" [[package]] name = "ring" @@ -7045,9 +6869,9 @@ dependencies = [ [[package]] name = "rocksdb" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c749134fda8bfc90d0de643d59bfc841dcb3ac8a1062e12b6754bd60235c48b3" +checksum = "7a62eca5cacf2c8261128631bed9f045598d40bfbe4b29f5163f0f802f8f44a7" dependencies = [ "libc", "librocksdb-sys", @@ -7065,9 +6889,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.20" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dead70b0b5e03e9c814bcb6b01e03e68f7c57a80aa48c72ec92152ab3e818d49" +checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" [[package]] name = "rustc-hash" @@ -7108,19 +6932,6 @@ dependencies = [ "semver 1.0.4", ] -[[package]] -name = "rustls" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d1126dcf58e93cee7d098dbda643b5f92ed724f1f6a63007c1116eed6700c81" -dependencies = [ - "base64 0.12.3", - "log", - "ring", - "sct", - "webpki", -] - [[package]] name = "rustls" version = "0.19.1" @@ -7136,12 +6947,12 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629d439a7672da82dd955498445e496ee2096fe2117b9f796558a43fdb9e59b8" +checksum = "5a07b7c1885bd8ed3831c289b7870b13ef46fe0e856d288c30d9cc17d75a2092" dependencies = [ "openssl-probe", - "rustls 0.18.1", + "rustls", "schannel", "security-framework", ] @@ -7152,16 +6963,16 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020" dependencies = [ - "futures 0.3.16", - "pin-project 0.4.28", + "futures 0.3.19", + "pin-project 0.4.29", "static_assertions", ] [[package]] name = "ryu" -version = "1.0.5" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" +checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" [[package]] name = "safe-mix" @@ -7174,9 +6985,9 @@ dependencies = [ [[package]] name = "salsa20" -version = "0.7.2" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "399f290ffc409596022fce5ea5d4138184be4784f2b28c62c59f0d8389059a15" +checksum = "ecbd2eb639fd7cab5804a0837fe373cc2172d15437e804c054a9fb885cb923b0" dependencies = [ "cipher", ] @@ -7190,25 +7001,35 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "sc-allocator" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +dependencies = [ + "log", + "sp-core", + "sp-wasm-interface", + "thiserror", +] + [[package]] name = "sc-authority-discovery" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "async-trait", "derive_more", - "either", - "futures 0.3.16", + "futures 0.3.19", "futures-timer 3.0.2", + "ip_network", "libp2p", "log", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "prost", "prost-build", "rand 0.7.3", "sc-client-api", "sc-network", - "serde_json", "sp-api", "sp-authority-discovery", "sp-blockchain", @@ -7220,38 +7041,37 @@ dependencies = [ [[package]] name = "sc-basic-authorship" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "futures 0.3.16", + "futures 0.3.19", "futures-timer 3.0.2", "log", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "sc-block-builder", "sc-client-api", "sc-proposer-metrics", "sc-telemetry", + "sc-transaction-pool-api", "sp-api", "sp-blockchain", "sp-consensus", "sp-core", "sp-inherents", "sp-runtime", - "sp-transaction-pool", "substrate-prometheus-endpoint", ] [[package]] name = "sc-block-builder" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "sc-client-api", "sp-api", "sp-block-builder", "sp-blockchain", - "sp-consensus", "sp-core", "sp-inherents", "sp-runtime", @@ -7260,31 +7080,26 @@ dependencies = [ [[package]] name = "sc-chain-spec" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "impl-trait-for-tuples", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "sc-chain-spec-derive", - "sc-consensus-babe", - "sc-consensus-epochs", - "sc-finality-grandpa", "sc-network", "sc-telemetry", "serde", "serde_json", - "sp-chain-spec", - "sp-consensus-babe", "sp-core", "sp-runtime", ] [[package]] name = "sc-chain-spec-derive" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "proc-macro-crate 0.1.5", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -7292,17 +7107,17 @@ dependencies = [ [[package]] name = "sc-cli" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "chrono", "fdlimit", - "futures 0.3.16", + "futures 0.3.19", "hex", "libp2p", "log", "names", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "rand 0.7.3", "regex", "rpassword", @@ -7312,6 +7127,7 @@ dependencies = [ "sc-service", "sc-telemetry", "sc-tracing", + "sc-utils", "serde", "serde_json", "sp-blockchain", @@ -7320,112 +7136,112 @@ dependencies = [ "sp-keystore", "sp-panic-handler", "sp-runtime", - "sp-utils", "sp-version", "structopt", "thiserror", "tiny-bip39", - "tokio 0.2.25", + "tokio", ] [[package]] name = "sc-client-api" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "derive_more", "fnv", - "futures 0.3.16", + "futures 0.3.19", "hash-db", - "kvdb", - "lazy_static", "log", - "parity-scale-codec 2.2.0", - "parking_lot 0.11.1", + "parity-scale-codec 2.3.1", + "parking_lot", "sc-executor", + "sc-transaction-pool-api", + "sc-utils", "sp-api", "sp-blockchain", "sp-consensus", "sp-core", "sp-database", "sp-externalities", - "sp-inherents", "sp-keystore", "sp-runtime", "sp-state-machine", - "sp-std", "sp-storage", - "sp-transaction-pool", "sp-trie", - "sp-utils", - "sp-version", "substrate-prometheus-endpoint", ] [[package]] name = "sc-client-db" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "blake2-rfc", "hash-db", "kvdb", "kvdb-memorydb", "kvdb-rocksdb", "linked-hash-map", "log", - "parity-db", - "parity-scale-codec 2.2.0", - "parity-util-mem", - "parking_lot 0.11.1", + "parity-db 0.3.6", + "parity-scale-codec 2.3.1", + "parking_lot", "sc-client-api", - "sc-executor", "sc-state-db", "sp-arithmetic", "sp-blockchain", - "sp-consensus", "sp-core", "sp-database", "sp-runtime", "sp-state-machine", "sp-trie", - "substrate-prometheus-endpoint", ] [[package]] name = "sc-consensus" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ + "async-trait", + "futures 0.3.19", + "futures-timer 3.0.2", + "libp2p", + "log", + "parking_lot", "sc-client-api", + "sc-utils", + "serde", + "sp-api", "sp-blockchain", "sp-consensus", + "sp-core", "sp-runtime", + "sp-state-machine", + "substrate-prometheus-endpoint", + "thiserror", ] [[package]] name = "sc-consensus-babe" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ + "async-trait", "derive_more", "fork-tree", - "futures 0.3.16", - "futures-timer 3.0.2", + "futures 0.3.19", "log", "merlin 2.0.1", "num-bigint", "num-rational 0.2.4", "num-traits", - "parity-scale-codec 2.2.0", - "parking_lot 0.11.1", - "pdqselect", + "parity-scale-codec 2.3.1", + "parking_lot", "rand 0.7.3", "retain_mut", "sc-client-api", + "sc-consensus", "sc-consensus-epochs", "sc-consensus-slots", - "sc-consensus-uncles", "sc-keystore", "sc-telemetry", "schnorrkel 0.9.1", @@ -7443,19 +7259,17 @@ dependencies = [ "sp-io", "sp-keystore", "sp-runtime", - "sp-timestamp", - "sp-utils", "sp-version", "substrate-prometheus-endpoint", ] [[package]] name = "sc-consensus-babe-rpc" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "derive_more", - "futures 0.3.16", + "futures 0.3.19", "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", @@ -7475,31 +7289,31 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "fork-tree", - "parity-scale-codec 2.2.0", - "parking_lot 0.11.1", + "parity-scale-codec 2.3.1", "sc-client-api", + "sc-consensus", "sp-blockchain", "sp-runtime", ] [[package]] name = "sc-consensus-slots" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "futures 0.3.16", + "async-trait", + "futures 0.3.19", "futures-timer 3.0.2", "log", - "parity-scale-codec 2.2.0", - "parking_lot 0.11.1", + "parity-scale-codec 2.3.1", "sc-client-api", + "sc-consensus", "sc-telemetry", "sp-api", - "sp-application-crypto", "sp-arithmetic", "sp-blockchain", "sp-consensus", @@ -7508,36 +7322,31 @@ dependencies = [ "sp-inherents", "sp-runtime", "sp-state-machine", - "sp-trie", + "sp-timestamp", "thiserror", ] [[package]] name = "sc-consensus-uncles" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "log", "sc-client-api", "sp-authorship", - "sp-consensus", - "sp-core", - "sp-inherents", "sp-runtime", + "thiserror", ] [[package]] name = "sc-executor" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "derive_more", "lazy_static", "libsecp256k1 0.6.0", "log", - "parity-scale-codec 2.2.0", - "parity-wasm 0.41.0", - "parking_lot 0.11.1", + "parity-scale-codec 2.3.1", + "parking_lot", "sc-executor-common", "sc-executor-wasmi", "sc-executor-wasmtime", @@ -7547,7 +7356,6 @@ dependencies = [ "sp-io", "sp-panic-handler", "sp-runtime-interface", - "sp-serializer", "sp-tasks", "sp-trie", "sp-version", @@ -7557,14 +7365,16 @@ dependencies = [ [[package]] name = "sc-executor-common" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "derive_more", - "parity-scale-codec 2.2.0", - "parity-wasm 0.41.0", - "sp-allocator", + "environmental", + "parity-scale-codec 2.3.1", + "pwasm-utils", + "sc-allocator", "sp-core", + "sp-maybe-compressed-blob", "sp-serializer", "sp-wasm-interface", "thiserror", @@ -7573,13 +7383,14 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "log", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", + "sc-allocator", "sc-executor-common", - "sp-allocator", + "scoped-tls", "sp-core", "sp-runtime-interface", "sp-wasm-interface", @@ -7588,16 +7399,16 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ + "cfg-if 1.0.0", + "libc", "log", - "parity-scale-codec 2.2.0", - "parity-wasm 0.41.0", - "pwasm-utils", + "parity-scale-codec 2.3.1", + "parity-wasm 0.42.2", + "sc-allocator", "sc-executor-common", - "scoped-tls", - "sp-allocator", "sp-core", "sp-runtime-interface", "sp-wasm-interface", @@ -7606,20 +7417,20 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ + "async-trait", "derive_more", + "dyn-clone", "finality-grandpa", "fork-tree", - "futures 0.3.16", + "futures 0.3.19", "futures-timer 3.0.2", - "linked-hash-map", "log", - "parity-scale-codec 2.2.0", - "parking_lot 0.11.1", - "pin-project 1.0.8", - "rand 0.7.3", + "parity-scale-codec 2.3.1", + "parking_lot", + "rand 0.8.4", "sc-block-builder", "sc-client-api", "sc-consensus", @@ -7627,6 +7438,7 @@ dependencies = [ "sc-network", "sc-network-gossip", "sc-telemetry", + "sc-utils", "serde_json", "sp-api", "sp-application-crypto", @@ -7635,27 +7447,25 @@ dependencies = [ "sp-consensus", "sp-core", "sp-finality-grandpa", - "sp-inherents", "sp-keystore", "sp-runtime", - "sp-utils", "substrate-prometheus-endpoint", ] [[package]] name = "sc-finality-grandpa-rpc" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "derive_more", "finality-grandpa", - "futures 0.3.16", + "futures 0.3.19", "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", "jsonrpc-pubsub", "log", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "sc-client-api", "sc-finality-grandpa", "sc-rpc", @@ -7668,51 +7478,44 @@ dependencies = [ [[package]] name = "sc-informant" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "ansi_term 0.12.1", - "futures 0.3.16", + "ansi_term", + "futures 0.3.19", + "futures-timer 3.0.2", "log", "parity-util-mem", "sc-client-api", "sc-network", + "sc-transaction-pool-api", "sp-blockchain", "sp-runtime", - "sp-transaction-pool", - "sp-utils", - "wasm-timer", ] [[package]] name = "sc-keystore" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "async-trait", "derive_more", - "futures 0.3.16", - "futures-util", "hex", - "merlin 2.0.1", - "parking_lot 0.11.1", - "rand 0.7.3", + "parking_lot", "serde_json", "sp-application-crypto", "sp-core", "sp-keystore", - "subtle 2.4.1", ] [[package]] name = "sc-light" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "hash-db", - "lazy_static", - "parity-scale-codec 2.2.0", - "parking_lot 0.11.1", + "parity-scale-codec 2.3.1", + "parking_lot", "sc-client-api", "sc-executor", "sp-api", @@ -7725,22 +7528,20 @@ dependencies = [ [[package]] name = "sc-network" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "async-std", "async-trait", "asynchronous-codec 0.5.0", "bitflags", - "bs58", - "bytes 1.0.1", + "bytes 1.1.0", "cid", "derive_more", "either", - "erased-serde", "fnv", "fork-tree", - "futures 0.3.16", + "futures 0.3.19", "futures-timer 3.0.2", "hex", "ip_network", @@ -7749,39 +7550,39 @@ dependencies = [ "linked_hash_set", "log", "lru", - "nohash-hasher", - "parity-scale-codec 2.2.0", - "parking_lot 0.11.1", - "pin-project 1.0.8", + "parity-scale-codec 2.3.1", + "parking_lot", + "pin-project 1.0.10", "prost", "prost-build", "rand 0.7.3", "sc-block-builder", "sc-client-api", + "sc-consensus", "sc-peerset", + "sc-utils", "serde", "serde_json", - "smallvec 1.6.1", + "smallvec", "sp-arithmetic", "sp-blockchain", "sp-consensus", "sp-core", + "sp-finality-grandpa", "sp-runtime", - "sp-utils", "substrate-prometheus-endpoint", "thiserror", "unsigned-varint 0.6.0", "void", - "wasm-timer", "zeroize", ] [[package]] name = "sc-network-gossip" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "futures 0.3.16", + "futures 0.3.19", "futures-timer 3.0.2", "libp2p", "log", @@ -7789,53 +7590,54 @@ dependencies = [ "sc-network", "sp-runtime", "substrate-prometheus-endpoint", - "wasm-timer", + "tracing", ] [[package]] name = "sc-offchain" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "bytes 0.5.6", + "bytes 1.1.0", "fnv", - "futures 0.3.16", + "futures 0.3.19", "futures-timer 3.0.2", - "hyper 0.13.10", + "hex", + "hyper", "hyper-rustls", "log", "num_cpus", - "parity-scale-codec 2.2.0", - "parking_lot 0.11.1", + "once_cell", + "parity-scale-codec 2.3.1", + "parking_lot", "rand 0.7.3", "sc-client-api", - "sc-keystore", "sc-network", + "sc-utils", "sp-api", "sp-core", "sp-offchain", "sp-runtime", - "sp-utils", "threadpool", ] [[package]] name = "sc-peerset" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "futures 0.3.16", + "futures 0.3.19", "libp2p", "log", + "sc-utils", "serde_json", - "sp-utils", "wasm-timer", ] [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -7843,108 +7645,104 @@ dependencies = [ [[package]] name = "sc-rpc" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "futures 0.3.16", + "futures 0.3.19", "hash-db", "jsonrpc-core", "jsonrpc-pubsub", "log", - "parity-scale-codec 2.2.0", - "parking_lot 0.11.1", + "parity-scale-codec 2.3.1", + "parking_lot", "sc-block-builder", + "sc-chain-spec", "sc-client-api", - "sc-executor", - "sc-keystore", "sc-rpc-api", "sc-tracing", + "sc-transaction-pool-api", + "sc-utils", "serde_json", "sp-api", "sp-blockchain", - "sp-chain-spec", "sp-core", "sp-keystore", "sp-offchain", "sp-rpc", "sp-runtime", "sp-session", - "sp-state-machine", - "sp-transaction-pool", - "sp-utils", "sp-version", ] [[package]] name = "sc-rpc-api" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "derive_more", - "futures 0.3.16", + "futures 0.3.19", "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", "jsonrpc-pubsub", "log", - "parity-scale-codec 2.2.0", - "parking_lot 0.11.1", + "parity-scale-codec 2.3.1", + "parking_lot", + "sc-chain-spec", + "sc-transaction-pool-api", "serde", "serde_json", - "sp-chain-spec", "sp-core", "sp-rpc", "sp-runtime", - "sp-transaction-pool", + "sp-tracing", "sp-version", + "thiserror", ] [[package]] name = "sc-rpc-server" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "futures 0.1.31", + "futures 0.3.19", "jsonrpc-core", "jsonrpc-http-server", "jsonrpc-ipc-server", "jsonrpc-pubsub", "jsonrpc-ws-server", "log", - "serde", "serde_json", - "sp-runtime", "substrate-prometheus-endpoint", + "tokio", ] [[package]] name = "sc-service" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ + "async-trait", "directories", "exit-future", - "futures 0.1.31", - "futures 0.3.16", + "futures 0.3.19", "futures-timer 3.0.2", "hash-db", "jsonrpc-core", "jsonrpc-pubsub", - "lazy_static", "log", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "parity-util-mem", - "parking_lot 0.11.1", - "pin-project 1.0.8", + "parking_lot", + "pin-project 1.0.10", "rand 0.7.3", "sc-block-builder", "sc-chain-spec", "sc-client-api", "sc-client-db", + "sc-consensus", "sc-executor", "sc-informant", "sc-keystore", - "sc-light", "sc-network", "sc-offchain", "sc-rpc", @@ -7952,6 +7750,8 @@ dependencies = [ "sc-telemetry", "sc-tracing", "sc-transaction-pool", + "sc-transaction-pool-api", + "sc-utils", "serde", "serde_json", "sp-api", @@ -7962,54 +7762,54 @@ dependencies = [ "sp-core", "sp-externalities", "sp-inherents", - "sp-io", "sp-keystore", "sp-runtime", "sp-session", "sp-state-machine", + "sp-storage", "sp-tracing", "sp-transaction-pool", + "sp-transaction-storage-proof", "sp-trie", - "sp-utils", "sp-version", "substrate-prometheus-endpoint", "tempfile", "thiserror", + "tokio", "tracing", "tracing-futures", - "wasm-timer", ] [[package]] name = "sc-state-db" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "log", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "parity-util-mem", "parity-util-mem-derive", - "parking_lot 0.11.1", + "parking_lot", "sc-client-api", "sp-core", - "thiserror", ] [[package]] name = "sc-sync-state-rpc" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3777fc5dc8e90c4f27a3824cd4c08eeab578758ea2267b7563a22a829b44060" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", + "parity-scale-codec 2.3.1", "sc-chain-spec", "sc-client-api", "sc-consensus-babe", "sc-consensus-epochs", "sc-finality-grandpa", "sc-rpc-api", + "serde", "serde_json", "sp-blockchain", "sp-runtime", @@ -8018,111 +7818,140 @@ dependencies = [ [[package]] name = "sc-telemetry" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "chrono", - "futures 0.3.16", + "futures 0.3.19", "libp2p", "log", - "parking_lot 0.11.1", - "pin-project 1.0.8", + "parking_lot", + "pin-project 1.0.10", "rand 0.7.3", "serde", "serde_json", - "sp-utils", - "take_mut", - "tracing", - "tracing-subscriber", - "void", + "thiserror", "wasm-timer", ] [[package]] name = "sc-tracing" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "ansi_term 0.12.1", + "ansi_term", "atty", - "erased-serde", + "chrono", "lazy_static", + "libc", "log", "once_cell", - "parking_lot 0.11.1", + "parking_lot", "regex", "rustc-hash", - "sc-telemetry", + "sc-client-api", + "sc-rpc-server", "sc-tracing-proc-macro", "serde", - "serde_json", + "sp-api", + "sp-blockchain", + "sp-core", + "sp-rpc", + "sp-runtime", "sp-tracing", "thiserror", "tracing", - "tracing-core", "tracing-log", "tracing-subscriber", - "wasm-bindgen", - "web-sys", ] [[package]] name = "sc-tracing-proc-macro" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "proc-macro-crate 0.1.5", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", ] [[package]] -name = "sc-transaction-graph" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +name = "sc-transaction-pool" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "derive_more", - "futures 0.3.16", + "futures 0.3.19", + "intervalier", "linked-hash-map", "log", + "parity-scale-codec 2.3.1", "parity-util-mem", - "parking_lot 0.11.1", + "parking_lot", "retain_mut", + "sc-client-api", + "sc-transaction-pool-api", + "sc-utils", "serde", + "sp-api", "sp-blockchain", "sp-core", "sp-runtime", + "sp-tracing", "sp-transaction-pool", - "sp-utils", + "substrate-prometheus-endpoint", "thiserror", - "wasm-timer", ] [[package]] -name = "sc-transaction-pool" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +name = "sc-transaction-pool-api" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "futures 0.3.16", - "futures-diagnose", - "intervalier", + "derive_more", + "futures 0.3.19", "log", - "parity-scale-codec 2.2.0", - "parity-util-mem", - "parking_lot 0.11.1", - "sc-client-api", - "sc-transaction-graph", - "sp-api", + "serde", "sp-blockchain", - "sp-core", "sp-runtime", - "sp-tracing", - "sp-transaction-pool", - "sp-utils", - "substrate-prometheus-endpoint", "thiserror", - "wasm-timer", +] + +[[package]] +name = "sc-utils" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +dependencies = [ + "futures 0.3.19", + "futures-timer 3.0.2", + "lazy_static", + "prometheus", +] + +[[package]] +name = "scale-info" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c55b744399c25532d63a0d2789b109df8d46fc93752d46b0782991a931a782f" +dependencies = [ + "bitvec 0.20.4", + "cfg-if 1.0.0", + "derive_more", + "parity-scale-codec 2.3.1", + "scale-info-derive", + "serde", +] + +[[package]] +name = "scale-info-derive" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baeb2780690380592f86205aa4ee49815feb2acad8c2f59e6dd207148c3f1fcd" +dependencies = [ + "proc-macro-crate 1.1.0", + "proc-macro2", + "quote", + "syn", ] [[package]] @@ -8148,16 +7977,15 @@ dependencies = [ "merlin 2.0.1", "rand 0.7.3", "rand_core 0.5.1", - "serde", "sha2 0.8.2", - "subtle 2.4.1", + "subtle", "zeroize", ] [[package]] name = "schnorrkel" version = "0.10.1" -source = "git+https://github.com/PolymathNetwork/schnorrkel?branch=rebase-head#5630c0d25a3a182666f0d76713b650eeacb6d0a9" +source = "git+https://github.com/PolymathNetwork/schnorrkel?branch=rebase-head#8dcebaa8098d286f04404137006dc6395ff8f598" dependencies = [ "arrayref", "arrayvec 0.5.2", @@ -8165,10 +7993,11 @@ dependencies = [ "curve25519-dalek 3.2.0", "merlin 3.0.0", "rand_core 0.6.3", + "scale-info", "serde", "serde_bytes", - "sha2 0.9.5", - "subtle 2.4.1", + "sha2 0.9.9", + "subtle", "zeroize", ] @@ -8196,30 +8025,10 @@ dependencies = [ "html5ever", "matches", "selectors", - "smallvec 1.6.1", + "smallvec", "tendril", ] -[[package]] -name = "scroll" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda28d4b4830b807a8b43f7b0e6b5df875311b3e7621d84577188c175b6ec1ec" -dependencies = [ - "scroll_derive", -] - -[[package]] -name = "scroll_derive" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaaae8f38bb311444cfb7f1979af0bc9240d95795f75f9ceddf6a59b79ceffa0" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "sct" version = "0.6.1" @@ -8232,18 +8041,18 @@ dependencies = [ [[package]] name = "secrecy" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0673d6a6449f5e7d12a1caf424fd9363e2af3a4953023ed455e3c4beef4597c0" +checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" dependencies = [ "zeroize", ] [[package]] name = "security-framework" -version = "1.0.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad502866817f0575705bd7be36e2b2535cc33262d493aa733a2ec862baa2bc2b" +checksum = "3fed7948b6c68acbb6e20c334f55ad635dc0f75506963de4464289fbd3b051ac" dependencies = [ "bitflags", "core-foundation", @@ -8254,9 +8063,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "1.0.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51ceb04988b17b6d1dcd555390fa822ca5637b4a14e1f5099f13d351bed4d6c7" +checksum = "a57321bf8bc2362081b2599912d2961fe899c0efadf1b4b2f8d48b3e253bb96c" dependencies = [ "core-foundation-sys", "libc", @@ -8278,7 +8087,7 @@ dependencies = [ "phf_codegen", "precomputed-hash", "servo_arc", - "smallvec 1.6.1", + "smallvec", "thin-slice", ] @@ -8333,9 +8142,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.129" +version = "1.0.136" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1f72836d2aa753853178eda473a3b9d8e4eefdaf20523b919677e6de489f8f1" +checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" dependencies = [ "serde_derive", ] @@ -8361,9 +8170,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.129" +version = "1.0.136" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57ae87ad533d9a56427558b516d0adac283614e347abf85b0dc0cbbf0a249f3" +checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" dependencies = [ "proc-macro2", "quote", @@ -8372,11 +8181,11 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.66" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "336b10da19a12ad094b59d870ebde26a45402e5b470add4b5fd03c5048a32127" +checksum = "d23c1ba4cf0efd44be32017709280b32d1cea5c3f1275c3b6d9e8bc54f758085" dependencies = [ - "itoa", + "itoa 1.0.1", "ryu", "serde", ] @@ -8405,13 +8214,13 @@ dependencies = [ [[package]] name = "sha-1" -version = "0.9.7" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a0c8611594e2ab4ebbf06ec7cbbf0a99450b8570e96cbf5188b5d5f6ef18d81" +checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" dependencies = [ "block-buffer 0.9.0", "cfg-if 1.0.0", - "cpufeatures", + "cpufeatures 0.2.1", "digest 0.9.0", "opaque-debug 0.3.0", ] @@ -8430,13 +8239,13 @@ dependencies = [ [[package]] name = "sha2" -version = "0.9.5" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b362ae5752fd2137731f9fa25fd4d9058af34666ca1966fb969119cc35719f12" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ "block-buffer 0.9.0", "cfg-if 1.0.0", - "cpufeatures", + "cpufeatures 0.2.1", "digest 0.9.0", "opaque-debug 0.3.0", ] @@ -8455,24 +8264,24 @@ dependencies = [ [[package]] name = "sharded-slab" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "740223c51853f3145fe7c90360d2d4232f2b62e3449489c207eccde818979982" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" dependencies = [ "lazy_static", ] [[package]] name = "shlex" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42a568c8f2cd051a4d283bd6eb0343ac214c1b0f1ac19f93e1175b2dee38c73d" +checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" [[package]] name = "signal-hook" -version = "0.3.9" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "470c5a6397076fae0094aaf06a08e6ba6f37acb77d3b1b91ea92b4d6c8650c39" +checksum = "647c97df271007dcea485bb74ffdb57f2e683f1306c854f468a0c244badabf2d" dependencies = [ "libc", "signal-hook-registry", @@ -8489,9 +8298,9 @@ dependencies = [ [[package]] name = "signature" -version = "1.3.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c19772be3c4dd2ceaacf03cb41d5885f2a02c4d8804884918e3a258480803335" +checksum = "f054c6c1a6e95179d6f23ed974060dcefb2d9388bb7256900badad682c499de4" [[package]] name = "simba" @@ -8507,46 +8316,43 @@ dependencies = [ [[package]] name = "siphasher" -version = "0.3.6" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "729a25c17d72b06c68cb47955d44fda88ad2d3e7d77e025663fdd69b93dd71a1" +checksum = "a86232ab60fa71287d7f2ddae4a7073f6b7aac33631c3015abb556f08c6d0a3e" [[package]] name = "slab" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c307a32c1c5c437f38c7fd45d753050587732ba8628319fbdf12a7e289ccc590" +checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "smallvec" -version = "0.6.14" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97fcaeba89edba30f044a10c6a3cc39df9c3f17d7cd829dd1446cab35f890e0" -dependencies = [ - "maybe-uninit", -] +checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" [[package]] -name = "smallvec" -version = "1.6.1" +name = "snap" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" +checksum = "45456094d1983e2ee2a18fdfebce3189fa451699d0502cb8e3b49dba5ba41451" [[package]] name = "snow" -version = "0.7.2" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "795dd7aeeee24468e5a32661f6d27f7b5cbed802031b2d7640c7b10f8fb2dd50" +checksum = "6142f7c25e94f6fd25a32c3348ec230df9109b463f59c8c7acc4bd34936babb7" dependencies = [ "aes-gcm", "blake2", "chacha20poly1305", - "rand 0.7.3", - "rand_core 0.5.1", + "rand 0.8.4", + "rand_core 0.6.3", "ring", - "rustc_version 0.2.3", - "sha2 0.9.5", - "subtle 2.4.1", + "rustc_version 0.3.3", + "sha2 0.9.9", + "subtle", "x25519-dalek", ] @@ -8563,9 +8369,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.4.1" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "765f090f0e423d2b55843402a07915add955e7d60657db13707a159727326cad" +checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" dependencies = [ "libc", "winapi 0.3.9", @@ -8580,32 +8386,21 @@ dependencies = [ "base64 0.12.3", "bytes 0.5.6", "flate2", - "futures 0.3.16", + "futures 0.3.19", "httparse", "log", "rand 0.7.3", - "sha-1 0.9.7", -] - -[[package]] -name = "sp-allocator" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" -dependencies = [ - "log", - "sp-core", - "sp-std", - "sp-wasm-interface", - "thiserror", + "sha-1 0.9.8", ] [[package]] name = "sp-api" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "hash-db", - "parity-scale-codec 2.2.0", + "log", + "parity-scale-codec 2.3.1", "sp-api-proc-macro", "sp-core", "sp-runtime", @@ -8617,11 +8412,11 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "blake2-rfc", - "proc-macro-crate 0.1.5", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -8629,10 +8424,11 @@ dependencies = [ [[package]] name = "sp-application-crypto" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", + "scale-info", "serde", "sp-core", "sp-io", @@ -8641,23 +8437,26 @@ dependencies = [ [[package]] name = "sp-arithmetic" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "integer-sqrt", "num-traits", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", + "scale-info", "serde", "sp-debug-derive", "sp-std", + "static_assertions", ] [[package]] name = "sp-authority-discovery" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", + "scale-info", "sp-api", "sp-application-crypto", "sp-runtime", @@ -8666,10 +8465,11 @@ dependencies = [ [[package]] name = "sp-authorship" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "parity-scale-codec 2.2.0", + "async-trait", + "parity-scale-codec 2.3.1", "sp-inherents", "sp-runtime", "sp-std", @@ -8677,10 +8477,10 @@ dependencies = [ [[package]] name = "sp-block-builder" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "sp-api", "sp-inherents", "sp-runtime", @@ -8689,14 +8489,14 @@ dependencies = [ [[package]] name = "sp-blockchain" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "futures 0.3.16", + "futures 0.3.19", "log", "lru", - "parity-scale-codec 2.2.0", - "parking_lot 0.11.1", + "parity-scale-codec 2.3.1", + "parking_lot", "sp-api", "sp-consensus", "sp-database", @@ -8705,49 +8505,36 @@ dependencies = [ "thiserror", ] -[[package]] -name = "sp-chain-spec" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" -dependencies = [ - "serde", - "serde_json", -] - [[package]] name = "sp-consensus" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "futures 0.3.16", + "async-trait", + "futures 0.3.19", "futures-timer 3.0.2", - "libp2p", "log", - "parity-scale-codec 2.2.0", - "parking_lot 0.11.1", - "serde", - "sp-api", + "parity-scale-codec 2.3.1", "sp-core", "sp-inherents", "sp-runtime", "sp-state-machine", "sp-std", - "sp-trie", - "sp-utils", "sp-version", - "substrate-prometheus-endpoint", "thiserror", - "wasm-timer", ] [[package]] name = "sp-consensus-aura" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "parity-scale-codec 2.2.0", + "async-trait", + "parity-scale-codec 2.3.1", + "scale-info", "sp-api", "sp-application-crypto", + "sp-consensus", "sp-consensus-slots", "sp-inherents", "sp-runtime", @@ -8757,11 +8544,14 @@ dependencies = [ [[package]] name = "sp-consensus-babe" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ + "async-trait", "merlin 2.0.1", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", + "scale-info", + "serde", "sp-api", "sp-application-crypto", "sp-consensus", @@ -8777,20 +8567,21 @@ dependencies = [ [[package]] name = "sp-consensus-slots" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", + "scale-info", "sp-arithmetic", "sp-runtime", ] [[package]] name = "sp-consensus-vrf" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "schnorrkel 0.9.1", "sp-core", "sp-runtime", @@ -8799,15 +8590,16 @@ dependencies = [ [[package]] name = "sp-core" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "base58", + "bitflags", "blake2-rfc", "byteorder", "dyn-clonable", "ed25519-dalek", - "futures 0.3.16", + "futures 0.3.19", "hash-db", "hash256-std-hasher", "hex", @@ -8817,21 +8609,23 @@ dependencies = [ "log", "merlin 2.0.1", "num-traits", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "parity-util-mem", - "parking_lot 0.11.1", + "parking_lot", "primitive-types", "rand 0.7.3", "regex", + "scale-info", "schnorrkel 0.9.1", "secrecy", "serde", - "sha2 0.9.5", + "sha2 0.9.9", "sp-debug-derive", "sp-externalities", "sp-runtime-interface", "sp-std", "sp-storage", + "ss58-registry", "substrate-bip39", "thiserror", "tiny-bip39", @@ -8843,17 +8637,17 @@ dependencies = [ [[package]] name = "sp-database" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "kvdb", - "parking_lot 0.11.1", + "parking_lot", ] [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "proc-macro2", "quote", @@ -8862,23 +8656,24 @@ dependencies = [ [[package]] name = "sp-externalities" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "environmental", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "sp-std", "sp-storage", ] [[package]] name = "sp-finality-grandpa" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "finality-grandpa", "log", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", + "scale-info", "serde", "sp-api", "sp-application-crypto", @@ -8890,27 +8685,29 @@ dependencies = [ [[package]] name = "sp-inherents" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "parity-scale-codec 2.2.0", - "parking_lot 0.11.1", + "async-trait", + "impl-trait-for-tuples", + "parity-scale-codec 2.3.1", "sp-core", + "sp-runtime", "sp-std", "thiserror", ] [[package]] name = "sp-io" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "futures 0.3.16", + "futures 0.3.19", "hash-db", "libsecp256k1 0.6.0", "log", - "parity-scale-codec 2.2.0", - "parking_lot 0.11.1", + "parity-scale-codec 2.3.1", + "parking_lot", "sp-core", "sp-externalities", "sp-keystore", @@ -8926,8 +8723,8 @@ dependencies = [ [[package]] name = "sp-keyring" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "lazy_static", "sp-core", @@ -8937,40 +8734,50 @@ dependencies = [ [[package]] name = "sp-keystore" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "async-trait", "derive_more", - "futures 0.3.16", + "futures 0.3.19", "merlin 2.0.1", - "parity-scale-codec 2.2.0", - "parking_lot 0.11.1", + "parity-scale-codec 2.3.1", + "parking_lot", "schnorrkel 0.9.1", "serde", "sp-core", "sp-externalities", ] +[[package]] +name = "sp-maybe-compressed-blob" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +dependencies = [ + "zstd", +] + [[package]] name = "sp-npos-elections" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", + "scale-info", "serde", "sp-arithmetic", "sp-core", - "sp-npos-elections-compact", + "sp-npos-elections-solution-type", + "sp-runtime", "sp-std", ] [[package]] -name = "sp-npos-elections-compact" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +name = "sp-npos-elections-solution-type" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "proc-macro-crate 0.1.5", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -8978,8 +8785,8 @@ dependencies = [ [[package]] name = "sp-offchain" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "sp-api", "sp-core", @@ -8989,33 +8796,35 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "backtrace", ] [[package]] name = "sp-rpc" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ + "rustc-hash", "serde", "sp-core", ] [[package]] name = "sp-runtime" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "either", "hash256-std-hasher", "impl-trait-for-tuples", "log", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "parity-util-mem", "paste", "rand 0.7.3", + "scale-info", "serde", "sp-application-crypto", "sp-arithmetic", @@ -9026,11 +8835,11 @@ dependencies = [ [[package]] name = "sp-runtime-interface" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "impl-trait-for-tuples", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "primitive-types", "sp-externalities", "sp-runtime-interface-proc-macro", @@ -9043,11 +8852,11 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "Inflector", - "proc-macro-crate 0.1.5", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -9056,7 +8865,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "serde", "serde_json", @@ -9064,10 +8873,11 @@ dependencies = [ [[package]] name = "sp-session" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", + "scale-info", "sp-api", "sp-core", "sp-runtime", @@ -9077,48 +8887,50 @@ dependencies = [ [[package]] name = "sp-staking" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", + "scale-info", "sp-runtime", "sp-std", ] [[package]] name = "sp-state-machine" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "hash-db", "log", "num-traits", - "parity-scale-codec 2.2.0", - "parking_lot 0.11.1", + "parity-scale-codec 2.3.1", + "parking_lot", "rand 0.7.3", - "smallvec 1.6.1", + "smallvec", "sp-core", "sp-externalities", "sp-panic-handler", "sp-std", "sp-trie", "thiserror", + "tracing", "trie-db", "trie-root", ] [[package]] name = "sp-std" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" [[package]] name = "sp-storage" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "impl-serde", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "ref-cast", "serde", "sp-debug-derive", @@ -9127,8 +8939,8 @@ dependencies = [ [[package]] name = "sp-tasks" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "log", "sp-core", @@ -9140,25 +8952,26 @@ dependencies = [ [[package]] name = "sp-timestamp" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "impl-trait-for-tuples", - "parity-scale-codec 2.2.0", + "async-trait", + "futures-timer 3.0.2", + "log", + "parity-scale-codec 2.3.1", "sp-api", "sp-inherents", "sp-runtime", "sp-std", - "wasm-timer", + "thiserror", ] [[package]] name = "sp-tracing" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "log", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "sp-std", "tracing", "tracing-core", @@ -9167,65 +8980,78 @@ dependencies = [ [[package]] name = "sp-transaction-pool" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "derive_more", - "futures 0.3.16", - "log", - "parity-scale-codec 2.2.0", - "serde", "sp-api", - "sp-blockchain", "sp-runtime", - "thiserror", +] + +[[package]] +name = "sp-transaction-storage-proof" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +dependencies = [ + "async-trait", + "log", + "parity-scale-codec 2.3.1", + "scale-info", + "sp-core", + "sp-inherents", + "sp-runtime", + "sp-std", + "sp-trie", ] [[package]] name = "sp-trie" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "hash-db", "memory-db", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", + "scale-info", "sp-core", "sp-std", "trie-db", "trie-root", ] -[[package]] -name = "sp-utils" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" -dependencies = [ - "futures 0.3.16", - "futures-core", - "futures-timer 3.0.2", - "lazy_static", - "prometheus", -] - [[package]] name = "sp-version" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "impl-serde", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", + "parity-wasm 0.42.2", + "scale-info", "serde", "sp-runtime", "sp-std", + "sp-version-proc-macro", + "thiserror", +] + +[[package]] +name = "sp-version-proc-macro" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +dependencies = [ + "parity-scale-codec 2.3.1", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "sp-wasm-interface" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "impl-trait-for-tuples", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "sp-std", "wasmi", ] @@ -9236,6 +9062,20 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +[[package]] +name = "ss58-registry" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8319f44e20b42e5c11b88b1ad4130c35fe2974665a007b08b02322070177136a" +dependencies = [ + "Inflector", + "proc-macro2", + "quote", + "serde", + "serde_json", + "unicode-xid", +] + [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -9261,33 +9101,15 @@ dependencies = [ "rand 0.8.4", ] -[[package]] -name = "stream-cipher" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c80e15f898d8d8f25db24c253ea615cc14acf418ff307822995814e7d42cfa89" -dependencies = [ - "block-cipher", - "generic-array 0.14.4", -] - -[[package]] -name = "string" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" -dependencies = [ - "bytes 0.4.12", -] - [[package]] name = "string_cache" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ddb1139b5353f96e429e1a5e19fbaf663bddedaa06d1dbd49f82e352601209a" +checksum = "923f0f39b6267d37d23ce71ae7235602134b250ace715dd2c90421998ddac0c6" dependencies = [ "lazy_static", "new_debug_unreachable", + "parking_lot", "phf_shared", "precomputed-hash", "serde", @@ -9313,9 +9135,9 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "structopt" -version = "0.3.22" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69b041cdcb67226aca307e6e7be44c8806423d83e018bd662360a93dabce4d71" +checksum = "0c6b5c64445ba8094a6ab0c3cd2ad323e07171012d9c98b0b15651daf1787a10" dependencies = [ "clap", "lazy_static", @@ -9324,9 +9146,9 @@ dependencies = [ [[package]] name = "structopt-derive" -version = "0.4.15" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7813934aecf5f51a54775e00068c237de98489463968231a51746bbbc03f9c10" +checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" dependencies = [ "heck", "proc-macro-error", @@ -9358,69 +9180,68 @@ dependencies = [ [[package]] name = "substrate-bip39" -version = "0.4.2" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bed6646a0159b9935b5d045611560eeef842b78d7adc3ba36f5ca325a13a0236" +checksum = "49eee6965196b32f882dd2ee85a92b1dbead41b04e53907f269de3b0dc04733c" dependencies = [ - "hmac 0.7.1", - "pbkdf2 0.3.0", + "hmac 0.11.0", + "pbkdf2 0.8.0", "schnorrkel 0.9.1", - "sha2 0.8.2", + "sha2 0.9.9", "zeroize", ] [[package]] name = "substrate-frame-rpc-system" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "frame-system-rpc-runtime-api", - "futures 0.3.16", + "futures 0.3.19", "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", "log", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "sc-client-api", "sc-rpc-api", - "serde", + "sc-transaction-pool-api", "sp-api", "sp-block-builder", "sp-blockchain", "sp-core", "sp-runtime", - "sp-transaction-pool", ] [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "async-std", "derive_more", "futures-util", - "hyper 0.13.10", + "hyper", "log", "prometheus", - "tokio 0.2.25", + "tokio", ] [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "futures 0.1.31", - "futures 0.3.16", - "hash-db", + "async-trait", + "futures 0.3.19", "hex", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "sc-client-api", "sc-client-db", "sc-consensus", "sc-executor", "sc-light", + "sc-offchain", "sc-service", "serde", "serde_json", @@ -9436,10 +9257,9 @@ dependencies = [ [[package]] name = "substrate-test-runtime" version = "2.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ "cfg-if 1.0.0", - "frame-executive", "frame-support", "frame-system", "frame-system-rpc-runtime-api", @@ -9447,9 +9267,10 @@ dependencies = [ "memory-db", "pallet-babe", "pallet-timestamp", - "parity-scale-codec 2.2.0", + "parity-scale-codec 2.3.1", "parity-util-mem", "sc-service", + "scale-info", "serde", "sp-api", "sp-application-crypto", @@ -9471,22 +9292,21 @@ dependencies = [ "sp-transaction-pool", "sp-trie", "sp-version", - "substrate-wasm-builder 4.0.0", + "substrate-wasm-builder 5.0.0-dev", "trie-db", ] [[package]] name = "substrate-test-runtime-client" version = "2.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "futures 0.3.16", - "parity-scale-codec 2.2.0", + "futures 0.3.19", + "parity-scale-codec 2.3.1", "sc-block-builder", "sc-client-api", "sc-consensus", "sc-light", - "sc-service", "sp-api", "sp-blockchain", "sp-consensus", @@ -9498,34 +9318,35 @@ dependencies = [ [[package]] name = "substrate-test-utils" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "futures 0.3.16", + "futures 0.3.19", "substrate-test-utils-derive", - "tokio 0.2.25", + "tokio", ] [[package]] name = "substrate-test-utils-derive" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "proc-macro-crate 0.1.5", + "proc-macro-crate 1.1.0", + "proc-macro2", "quote", "syn", ] [[package]] name = "substrate-wasm-builder" -version = "3.0.0" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79091baab813855ddf65b191de9fe53e656b6b67c1e9bd23fdcbff8788164684" +checksum = "93a3d51ad6abbc408b03ea962062bfcc959b438a318d7d4bedd181e1effd0610" dependencies = [ - "ansi_term 0.12.1", + "ansi_term", "atty", "build-helper", - "cargo_metadata", + "cargo_metadata 0.12.3", "tempfile", "toml", "walkdir", @@ -9534,25 +9355,19 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" -version = "4.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymath-3.0.0#37099715ab1eb455620e91533d3165ecb708b868" +version = "5.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" dependencies = [ - "ansi_term 0.12.1", - "atty", + "ansi_term", "build-helper", - "cargo_metadata", + "cargo_metadata 0.13.1", + "sp-maybe-compressed-blob", "tempfile", "toml", "walkdir", "wasm-gc-api", ] -[[package]] -name = "subtle" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" - [[package]] name = "subtle" version = "2.4.1" @@ -9561,9 +9376,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.75" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f58f7e8eaa0009c5fec437aabf511bd9933e4b2d7407bd05273c01a8906ea7" +checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b" dependencies = [ "proc-macro2", "quote", @@ -9572,9 +9387,9 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.12.5" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "474aaa926faa1603c40b7885a9eaea29b444d1cb2850cb7c0e37bb1a4182f4fa" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ "proc-macro2", "quote", @@ -9582,12 +9397,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "take_mut" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" - [[package]] name = "tap" version = "1.0.1" @@ -9596,20 +9405,20 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "target-lexicon" -version = "0.11.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "422045212ea98508ae3d28025bc5aaa2bd4a9cdaecd442a08da2ee620ee9ea95" +checksum = "d7fa7e55043acb85fca6b3c01485a2eeb6b69c5d21002e273c79e465f43b7ac1" [[package]] name = "tempfile" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" dependencies = [ "cfg-if 1.0.0", + "fastrand", "libc", - "rand 0.8.4", - "redox_syscall 0.2.10", + "redox_syscall", "remove_dir_all", "winapi 0.3.9", ] @@ -9651,18 +9460,18 @@ checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" [[package]] name = "thiserror" -version = "1.0.26" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93119e4feac1cbe6c798c34d3a53ea0026b0b1de6a120deef895137c0529bfe2" +checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.26" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "060d69a0afe7796bf42e9e2ff91f5ee691fb15c53d38b4b62a9a53eb23164745" +checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" dependencies = [ "proc-macro2", "quote", @@ -9671,9 +9480,9 @@ dependencies = [ [[package]] name = "thread_local" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbd" +checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" dependencies = [ "once_cell", ] @@ -9700,9 +9509,9 @@ dependencies = [ [[package]] name = "tiny-bip39" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9e44c4759bae7f1032e286a7ef990bd9ed23fe831b7eeba0beb97484c2e59b8" +checksum = "ffc59cb9dfc85bb312c3a78fd6aa8a8582e310b0fa885d5bb877f6dcc601839d" dependencies = [ "anyhow", "hmac 0.8.1", @@ -9710,9 +9519,10 @@ dependencies = [ "pbkdf2 0.4.0", "rand 0.7.3", "rustc-hash", - "sha2 0.9.5", + "sha2 0.9.9", "thiserror", "unicode-normalization", + "wasm-bindgen", "zeroize", ] @@ -9737,9 +9547,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.3.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "848a1e1181b9f6753b5e96a092749e29b11d19ede67dfbbd6c7dc7e0f49b5338" +checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" dependencies = [ "tinyvec_macros", ] @@ -9752,277 +9562,67 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "mio", - "num_cpus", - "tokio-codec", - "tokio-current-thread", - "tokio-executor", - "tokio-fs", - "tokio-io", - "tokio-reactor", - "tokio-sync", - "tokio-tcp", - "tokio-threadpool", - "tokio-timer", - "tokio-udp", - "tokio-uds", -] - -[[package]] -name = "tokio" -version = "0.2.25" +version = "1.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092" +checksum = "0c27a64b625de6d309e8c57716ba93021dccf1b3b5c97edd6d3dd2d2135afc0a" dependencies = [ - "bytes 0.5.6", - "fnv", - "futures-core", - "iovec", - "lazy_static", + "bytes 1.1.0", "libc", "memchr", - "mio", - "mio-uds", + "mio 0.7.14", "num_cpus", - "pin-project-lite 0.1.12", + "once_cell", + "pin-project-lite 0.2.8", "signal-hook-registry", - "slab", "tokio-macros", "winapi 0.3.9", ] -[[package]] -name = "tokio-buf" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" -dependencies = [ - "bytes 0.4.12", - "either", - "futures 0.1.31", -] - -[[package]] -name = "tokio-codec" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "tokio-io", -] - -[[package]] -name = "tokio-current-thread" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e" -dependencies = [ - "futures 0.1.31", - "tokio-executor", -] - -[[package]] -name = "tokio-executor" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" -dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.31", -] - -[[package]] -name = "tokio-fs" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4" -dependencies = [ - "futures 0.1.31", - "tokio-io", - "tokio-threadpool", -] - -[[package]] -name = "tokio-io" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "log", -] - [[package]] name = "tokio-macros" -version = "0.2.6" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e44da00bfc73a25f814cd8d7e57a68a5c31b74b3152a0a1d1f590c97ed06265a" +checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7" dependencies = [ "proc-macro2", "quote", "syn", ] -[[package]] -name = "tokio-named-pipes" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d282d483052288b2308ba5ee795f5673b159c9bdf63c385a05609da782a5eae" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "mio", - "mio-named-pipes", - "tokio 0.1.22", -] - -[[package]] -name = "tokio-reactor" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" -dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.31", - "lazy_static", - "log", - "mio", - "num_cpus", - "parking_lot 0.9.0", - "slab", - "tokio-executor", - "tokio-io", - "tokio-sync", -] - [[package]] name = "tokio-rustls" -version = "0.14.1" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e12831b255bcfa39dc0436b01e19fea231a37db570686c06ee72c423479f889a" +checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6" dependencies = [ - "futures-core", - "rustls 0.18.1", - "tokio 0.2.25", + "rustls", + "tokio", "webpki", ] [[package]] -name = "tokio-service" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24da22d077e0f15f55162bdbdc661228c1581892f52074fb242678d015b45162" -dependencies = [ - "futures 0.1.31", -] - -[[package]] -name = "tokio-sync" +name = "tokio-stream" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee" -dependencies = [ - "fnv", - "futures 0.1.31", -] - -[[package]] -name = "tokio-tcp" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "iovec", - "mio", - "tokio-io", - "tokio-reactor", -] - -[[package]] -name = "tokio-threadpool" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89" -dependencies = [ - "crossbeam-deque 0.7.4", - "crossbeam-queue", - "crossbeam-utils 0.7.2", - "futures 0.1.31", - "lazy_static", - "log", - "num_cpus", - "slab", - "tokio-executor", -] - -[[package]] -name = "tokio-timer" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296" -dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.31", - "slab", - "tokio-executor", -] - -[[package]] -name = "tokio-udp" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82" +checksum = "50145484efff8818b5ccd256697f36863f587da82cf8b409c53adf1e840798e3" dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "log", - "mio", - "tokio-codec", - "tokio-io", - "tokio-reactor", -] - -[[package]] -name = "tokio-uds" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab57a4ac4111c8c9dbcf70779f6fc8bc35ae4b2454809febac840ad19bd7e4e0" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "iovec", - "libc", - "log", - "mio", - "mio-uds", - "tokio-codec", - "tokio-io", - "tokio-reactor", + "futures-core", + "pin-project-lite 0.2.8", + "tokio", ] [[package]] name = "tokio-util" -version = "0.3.1" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499" +checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0" dependencies = [ - "bytes 0.5.6", + "bytes 1.1.0", "futures-core", "futures-sink", "log", - "pin-project-lite 0.1.12", - "tokio 0.2.25", + "pin-project-lite 0.2.8", + "tokio", ] [[package]] @@ -10042,22 +9642,21 @@ checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" [[package]] name = "tracing" -version = "0.1.26" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d" +checksum = "375a639232caf30edfc78e8d89b2d4c375515393e7af7e16f01cd96917fb2105" dependencies = [ "cfg-if 1.0.0", - "log", - "pin-project-lite 0.2.7", + "pin-project-lite 0.2.8", "tracing-attributes", "tracing-core", ] [[package]] name = "tracing-attributes" -version = "0.1.15" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42e6fa53307c8a17e4ccd4dc81cf5ec38db9209f59b222210375b54ee40d1e2" +checksum = "f4f480b8f81512e825f337ad51e94c1eb5d3bbdf2b363dcd01e2b19a9ffe3f8e" dependencies = [ "proc-macro2", "quote", @@ -10066,9 +9665,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.19" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ca517f43f0fb96e0c3072ed5c275fe5eece87e8cb52f4a77b69226d3b1c9df8" +checksum = "1f4ed65637b8390770814083d20756f87bfa2c21bf2f110babdc5438351746e4" dependencies = [ "lazy_static", ] @@ -10079,7 +9678,7 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" dependencies = [ - "pin-project 1.0.8", + "pin-project 1.0.10", "tracing", ] @@ -10106,19 +9705,20 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.2.20" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9cbe87a2fa7e35900ce5de20220a582a9483a7063811defce79d7cbd59d4cfe" +checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" dependencies = [ - "ansi_term 0.12.1", + "ansi_term", "chrono", "lazy_static", "matchers", + "parking_lot", "regex", "serde", "serde_json", "sharded-slab", - "smallvec 1.6.1", + "smallvec", "thread_local", "tracing", "tracing-core", @@ -10133,10 +9733,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eac131e334e81b6b3be07399482042838adcd7957aa0010231d0813e39e02fa" dependencies = [ "hash-db", - "hashbrown 0.11.2", + "hashbrown", "log", "rustc-hex", - "smallvec 1.6.1", + "smallvec", ] [[package]] @@ -10148,17 +9748,66 @@ dependencies = [ "hash-db", ] +[[package]] +name = "trust-dns-proto" +version = "0.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca94d4e9feb6a181c690c4040d7a24ef34018d8313ac5044a61d21222ae24e31" +dependencies = [ + "async-trait", + "cfg-if 1.0.0", + "data-encoding", + "enum-as-inner", + "futures-channel", + "futures-io", + "futures-util", + "idna 0.2.3", + "ipnet", + "lazy_static", + "log", + "rand 0.8.4", + "smallvec", + "thiserror", + "tinyvec", + "url 2.2.2", +] + +[[package]] +name = "trust-dns-resolver" +version = "0.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecae383baad9995efaa34ce8e57d12c3f305e545887472a492b838f4b5cfb77a" +dependencies = [ + "cfg-if 1.0.0", + "futures-util", + "ipconfig", + "lazy_static", + "log", + "lru-cache", + "parking_lot", + "resolv-conf", + "smallvec", + "thiserror", + "trust-dns-proto", +] + [[package]] name = "try-lock" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" +[[package]] +name = "tt-call" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e66dcbec4290c69dd03c57e76c2469ea5c7ce109c6dd4351c13055cf71ea055" + [[package]] name = "twox-hash" -version = "1.6.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f559b464de2e2bdabcac6a210d12e9b5a5973c251e102c44c585c71d51bd78e" +checksum = "4ee73e6e4924fe940354b8d4d98cad5231175d615cd855b758adc658c0aac6a0" dependencies = [ "cfg-if 1.0.0", "rand 0.8.4", @@ -10187,9 +9836,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" [[package]] name = "ucd-trie" @@ -10199,9 +9848,9 @@ checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" [[package]] name = "uint" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6470ab50f482bde894a037a57064480a246dbfdd5960bd65a44824693f08da5f" +checksum = "1b1b413ebfe8c2c74a69ff124699dd156a7fa41cb1d09ba6df94aa2f2b0a4a3a" dependencies = [ "byteorder", "crunchy", @@ -10220,9 +9869,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246f4c42e67e7a4e3c6106ff716a5d067d4132a642840b242e357e468a2a0085" +checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" [[package]] name = "unicode-normalization" @@ -10241,9 +9890,9 @@ checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b" [[package]] name = "unicode-width" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" +checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" [[package]] name = "unicode-xid" @@ -10257,8 +9906,8 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" dependencies = [ - "generic-array 0.14.4", - "subtle 2.4.1", + "generic-array 0.14.5", + "subtle", ] [[package]] @@ -10274,19 +9923,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35581ff83d4101e58b582e607120c7f5ffb17e632a980b1f38334d76b36908b2" dependencies = [ "asynchronous-codec 0.5.0", - "bytes 1.0.1", + "bytes 1.1.0", "futures-io", "futures-util", ] [[package]] name = "unsigned-varint" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f8d425fafb8cd76bc3f22aace4af471d3156301d7508f2107e98fbeae10bc7f" +checksum = "d86a8dc7f45e4c1b0d30e43038c38f274e77af056aa5f74b93c2cf9eb3c1c836" dependencies = [ "asynchronous-codec 0.6.0", - "bytes 1.0.1", + "bytes 1.1.0", "futures-io", "futures-util", ] @@ -10328,9 +9977,9 @@ checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" [[package]] name = "value-bag" -version = "1.0.0-alpha.7" +version = "1.0.0-alpha.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd320e1520f94261153e96f7534476ad869c14022aee1e59af7c778075d840ae" +checksum = "79923f7731dc61ebfba3633098bf3ac533bbd35ccd8c57e7088d9a5eebe0263f" dependencies = [ "ctor", "version_check", @@ -10361,9 +10010,9 @@ dependencies = [ [[package]] name = "version_check" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "void" @@ -10411,17 +10060,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "want" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" -dependencies = [ - "futures 0.1.31", - "log", - "try-lock", -] - [[package]] name = "want" version = "0.3.0" @@ -10446,9 +10084,9 @@ checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" [[package]] name = "wasm-bindgen" -version = "0.2.76" +version = "0.2.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce9b1b516211d33767048e5d47fa2a381ed8b76fc48d2ce4aa39877f9f183e0" +checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06" dependencies = [ "cfg-if 1.0.0", "wasm-bindgen-macro", @@ -10456,9 +10094,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.76" +version = "0.2.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe8dc78e2326ba5f845f4b5bf548401604fa20b1dd1d365fb73b6c1d6364041" +checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca" dependencies = [ "bumpalo", "lazy_static", @@ -10471,9 +10109,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.26" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95fded345a6559c2cfee778d562300c581f7d4ff3edb9b0d230d69800d213972" +checksum = "2eb6ec270a31b1d3c7e266b999739109abce8b6c87e4b31fcfcd788b65267395" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -10483,9 +10121,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.76" +version = "0.2.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44468aa53335841d9d6b6c023eaab07c0cd4bddbcfdee3e2bb1e8d2cb8069fef" +checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -10493,9 +10131,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.76" +version = "0.2.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0195807922713af1e67dc66132c7328206ed9766af3858164fb583eedc25fbad" +checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc" dependencies = [ "proc-macro2", "quote", @@ -10506,9 +10144,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.76" +version = "0.2.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acdb075a845574a1fa5f09fd77e43f7747599301ea3417a9fbffdeedfc1f4a29" +checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2" [[package]] name = "wasm-gc-api" @@ -10527,9 +10165,9 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" dependencies = [ - "futures 0.3.16", + "futures 0.3.19", "js-sys", - "parking_lot 0.11.1", + "parking_lot", "pin-utils", "wasm-bindgen", "wasm-bindgen-futures", @@ -10538,39 +10176,40 @@ dependencies = [ [[package]] name = "wasmi" -version = "0.6.2" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf617d864d25af3587aa745529f7aaa541066c876d57e050c0d0c85c61c92aff" +checksum = "ca00c5147c319a8ec91ec1a0edbec31e566ce2c9cc93b3f9bb86a9efd0eb795d" dependencies = [ + "downcast-rs", "errno", "libc", "memory_units", "num-rational 0.2.4", "num-traits", - "parity-wasm 0.41.0", + "parity-wasm 0.42.2", "wasmi-validation", ] [[package]] name = "wasmi-validation" -version = "0.3.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea78c597064ba73596099281e2f4cfc019075122a65cdda3205af94f0b264d93" +checksum = "165343ecd6c018fc09ebcae280752702c9a2ef3e6f8d02f1cfcbdb53ef6d7937" dependencies = [ - "parity-wasm 0.41.0", + "parity-wasm 0.42.2", ] [[package]] name = "wasmparser" -version = "0.71.0" +version = "0.80.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89a30c99437829ede826802bfcf28500cf58df00e66cb9114df98813bc145ff1" +checksum = "449167e2832691a1bff24cde28d2804e90e09586a448c8e76984792c44334a6b" [[package]] name = "wasmtime" -version = "0.22.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7426055cb92bd9a1e9469b48154d8d6119cd8c498c8b70284e420342c05dc45d" +checksum = "899b1e5261e3d3420860dacfb952871ace9d7ba9f953b314f67aaf9f8e2a4d89" dependencies = [ "anyhow", "backtrace", @@ -10578,28 +10217,31 @@ dependencies = [ "cfg-if 1.0.0", "cpp_demangle", "indexmap", + "lazy_static", "libc", "log", + "object 0.26.2", + "paste", + "psm", + "rayon", "region", "rustc-demangle", "serde", - "smallvec 1.6.1", "target-lexicon", "wasmparser", "wasmtime-cache", + "wasmtime-cranelift", "wasmtime-environ", "wasmtime-jit", - "wasmtime-profiling", "wasmtime-runtime", - "wat", "winapi 0.3.9", ] [[package]] name = "wasmtime-cache" -version = "0.22.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c01d9287e36921e46f5887a47007824ae5dbb9b7517a2d565660ab4471478709" +checksum = "e2493b81d7a9935f7af15e06beec806f256bc974a90a843685f3d61f2fc97058" dependencies = [ "anyhow", "base64 0.13.0", @@ -10610,7 +10252,7 @@ dependencies = [ "libc", "log", "serde", - "sha2 0.9.5", + "sha2 0.9.9", "toml", "winapi 0.3.9", "zstd", @@ -10618,27 +10260,19 @@ dependencies = [ [[package]] name = "wasmtime-cranelift" -version = "0.22.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4134ed3a4316cd0de0e546c6004850afe472b0fa3fcdc2f2c15f8d449562d962" +checksum = "99706bacdf5143f7f967d417f0437cce83a724cf4518cb1a3ff40e519d793021" dependencies = [ + "anyhow", "cranelift-codegen", "cranelift-entity", "cranelift-frontend", + "cranelift-native", "cranelift-wasm", - "wasmtime-environ", -] - -[[package]] -name = "wasmtime-debug" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91fa931df6dd8af2b02606307674d3bad23f55473d5f4c809dddf7e4c4dc411" -dependencies = [ - "anyhow", - "gimli 0.23.0", + "gimli 0.25.0", "more-asserts", - "object 0.22.0", + "object 0.26.2", "target-lexicon", "thiserror", "wasmparser", @@ -10647,96 +10281,57 @@ dependencies = [ [[package]] name = "wasmtime-environ" -version = "0.22.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1098871dc3120aaf8190d79153e470658bb79f63ee9ca31716711e123c28220" +checksum = "ac42cb562a2f98163857605f02581d719a410c5abe93606128c59a10e84de85b" dependencies = [ "anyhow", "cfg-if 1.0.0", - "cranelift-codegen", "cranelift-entity", - "cranelift-wasm", - "gimli 0.23.0", + "gimli 0.25.0", "indexmap", "log", "more-asserts", + "object 0.26.2", "serde", + "target-lexicon", "thiserror", "wasmparser", + "wasmtime-types", ] [[package]] name = "wasmtime-jit" -version = "0.22.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "738bfcd1561ede8bb174215776fd7d9a95d5f0a47ca3deabe0282c55f9a89f68" +checksum = "24f46dd757225f29a419be415ea6fb8558df9b0194f07e3a6a9c99d0e14dd534" dependencies = [ - "addr2line 0.14.1", + "addr2line 0.16.0", "anyhow", + "bincode", "cfg-if 1.0.0", - "cranelift-codegen", - "cranelift-entity", - "cranelift-frontend", - "cranelift-native", - "cranelift-wasm", - "gimli 0.23.0", + "gimli 0.25.0", + "libc", "log", "more-asserts", - "object 0.22.0", - "rayon", + "object 0.26.2", "region", "serde", "target-lexicon", "thiserror", "wasmparser", - "wasmtime-cranelift", - "wasmtime-debug", "wasmtime-environ", - "wasmtime-obj", - "wasmtime-profiling", "wasmtime-runtime", "winapi 0.3.9", ] -[[package]] -name = "wasmtime-obj" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e96d77f1801131c5e86d93e42a3cf8a35402107332c202c245c83f34888a906" -dependencies = [ - "anyhow", - "more-asserts", - "object 0.22.0", - "target-lexicon", - "wasmtime-debug", - "wasmtime-environ", -] - -[[package]] -name = "wasmtime-profiling" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60bb672c9d894776d7b9250dd9b4fe890f8760201ee4f53e5f2da772b6c4debb" -dependencies = [ - "anyhow", - "cfg-if 1.0.0", - "gimli 0.23.0", - "lazy_static", - "libc", - "object 0.22.0", - "scroll", - "serde", - "target-lexicon", - "wasmtime-environ", - "wasmtime-runtime", -] - [[package]] name = "wasmtime-runtime" -version = "0.22.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a978086740949eeedfefcee667b57a9e98d9a7fc0de382fcfa0da30369e3530d" +checksum = "0122215a44923f395487048cb0a1d60b5b32c73aab15cf9364b798dbaff0996f" dependencies = [ + "anyhow", "backtrace", "cc", "cfg-if 1.0.0", @@ -10744,38 +10339,53 @@ dependencies = [ "lazy_static", "libc", "log", - "memoffset 0.6.4", + "mach", + "memoffset", "more-asserts", - "psm", + "rand 0.8.4", "region", "thiserror", "wasmtime-environ", "winapi 0.3.9", ] +[[package]] +name = "wasmtime-types" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9b01caf8a204ef634ebac99700e77ba716d3ebbb68a1abbc2ceb6b16dbec9e4" +dependencies = [ + "cranelift-entity", + "serde", + "thiserror", + "wasmparser", +] + [[package]] name = "wast" -version = "38.0.0" +version = "39.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ebc29df4629f497e0893aacd40f13a4a56b85ef6eb4ab6d603f07244f1a7bf2" +checksum = "e9bbbd53432b267421186feee3e52436531fa69a7cfee9403f5204352df3dd05" dependencies = [ "leb128", + "memchr", + "unicode-width", ] [[package]] name = "wat" -version = "1.0.40" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcfaeb27e2578d2c6271a45609f4a055e6d7ba3a12eff35b1fd5ba147bdf046" +checksum = "ab98ed25494f97c69f28758617f27c3e92e5336040b5c3a14634f2dd3fe61830" dependencies = [ "wast", ] [[package]] name = "web-sys" -version = "0.3.53" +version = "0.3.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224b2f6b67919060055ef1a67807367c2066ed520c3862cc013d26cf893a783c" +checksum = "c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb" dependencies = [ "js-sys", "wasm-bindgen", @@ -10811,15 +10421,21 @@ dependencies = [ [[package]] name = "which" -version = "4.2.2" +version = "4.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea187a8ef279bc014ec368c27a920da2024d2a711109bfbe3440585d5cf27ad9" +checksum = "2a5a7e487e921cf220206864a94a89b6c6905bfc19f1057fa26a4cb360e5c1d2" dependencies = [ "either", "lazy_static", "libc", ] +[[package]] +name = "widestring" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c" + [[package]] name = "winapi" version = "0.2.8" @@ -10863,6 +10479,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "winreg" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9" +dependencies = [ + "winapi 0.3.9", +] + [[package]] name = "ws2_32-sys" version = "0.2.1" @@ -10892,32 +10517,32 @@ dependencies = [ [[package]] name = "yamux" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cc7bd8c983209ed5d527f44b01c41b7dc146fd960c61cf9e1d25399841dc271" +checksum = "e7d9028f208dd5e63c614be69f115c1b53cacc1111437d4c765185856666c107" dependencies = [ - "futures 0.3.16", + "futures 0.3.19", "log", "nohash-hasher", - "parking_lot 0.11.1", - "rand 0.7.3", + "parking_lot", + "rand 0.8.4", "static_assertions", ] [[package]] name = "zeroize" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "377db0846015f7ae377174787dd452e1c5f5a9050bc6f954911d01f116daa0cd" +checksum = "7c88870063c39ee00ec285a2f8d6a966e5b6fb2becc4e8dac77ed0d370ed6006" dependencies = [ "zeroize_derive", ] [[package]] name = "zeroize_derive" -version = "1.1.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2c1e130bebaeab2f23886bf9acbaca14b092408c452543c857f66399cd6dab1" +checksum = "81e8f13fef10b63c06356d65d416b070798ddabcadc10d3ece0c5be9b3c7eddb" dependencies = [ "proc-macro2", "quote", @@ -10927,18 +10552,18 @@ dependencies = [ [[package]] name = "zstd" -version = "0.5.4+zstd.1.4.7" +version = "0.9.2+zstd.1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69996ebdb1ba8b1517f61387a883857818a66c8a295f487b1ffd8fd9d2c82910" +checksum = "2390ea1bf6c038c39674f22d95f0564725fc06034a47129179810b2fc58caa54" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "2.0.6+zstd.1.4.7" +version = "4.1.3+zstd.1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98aa931fb69ecee256d44589d19754e61851ae4769bf963b385119b1cc37a49e" +checksum = "e99d81b99fb3c2c2c794e3fe56c305c63d5173a16a46b5850b07c935ffc7db79" dependencies = [ "libc", "zstd-sys", @@ -10946,12 +10571,10 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "1.4.18+zstd.1.4.7" +version = "1.6.2+zstd.1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1e6e8778706838f43f771d80d37787cb2fe06dafe89dd3aebaf6721b9eaec81" +checksum = "2daf2f248d9ea44454bfcb2516534e8b8ad2fc91bf818a1885495fc42bc8ac9f" dependencies = [ "cc", - "glob 0.3.0", - "itertools 0.9.0", "libc", ] diff --git a/Cargo.toml b/Cargo.toml index d26c2b2ea1..211c30c14c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,98 +9,103 @@ edition = "2018" name = "polymesh" path = "src/main.rs" -# Path build to use our Substrate version from github, tag `v2.0.1-2`. +# Path build to use our Substrate version from github, `branch = "develop"`. [patch.crates-io] -frame-benchmarking = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -frame-benchmarking-cli = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -frame-executive = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -frame-support = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -frame-system = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -frame-system-benchmarking = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -frame-system-rpc-runtime-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -pallet-authority-discovery = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -pallet-authorship = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -pallet-babe = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -pallet-balances = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -#pallet-contracts = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -#pallet-contracts-primitives = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -#pallet-contracts-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -#pallet-contracts-rpc-runtime-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -pallet-grandpa = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -pallet-im-online = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -pallet-indices = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -pallet-offences = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -pallet-randomness-collective-flip = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -pallet-scheduler = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -pallet-session = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -pallet-staking-reward-curve = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -pallet-timestamp = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -pallet-treasury = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sc-authority-discovery = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sc-basic-authorship = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sc-block-builder = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sc-chain-spec = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sc-cli = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sc-client-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sc-client-db = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sc-consensus = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sc-consensus-babe = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sc-consensus-babe-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sc-consensus-epochs = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sc-consensus-slots = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sc-executor = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sc-finality-grandpa = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sc-finality-grandpa-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sc-keystore = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sc-light = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sc-network = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sc-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sc-rpc-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sc-service = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sc-telemetry = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sc-transaction-pool = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-application-crypto = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-arithmetic = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-authority-discovery = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-block-builder = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-blockchain = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-consensus = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-consensus-babe = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-consensus-slots = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-core = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-externalities = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-finality-grandpa = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-inherents = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-io = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-keystore = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-keyring = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-npos-elections = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-npos-elections-compact = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-offchain = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-runtime = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-runtime-interface = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-serializer = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-session = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-staking = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-state-machine = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-std = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-storage = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-timestamp = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-tracing = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-transaction-pool = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-trie = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -sp-version = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -substrate-frame-rpc-system = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -substrate-prometheus-endpoint = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -substrate-test-runtime-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -substrate-test-utils = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -substrate-test-utils-derive = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -substrate-wasm-builder = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } +frame-benchmarking = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +frame-benchmarking-cli = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +frame-executive = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +frame-support = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +frame-system = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +frame-system-benchmarking = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +frame-system-rpc-runtime-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +pallet-authority-discovery = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +pallet-authorship = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +pallet-babe = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +pallet-balances = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +#pallet-contracts = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +#pallet-contracts-primitives = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +#pallet-contracts-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +#pallet-contracts-rpc-runtime-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +pallet-grandpa = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +pallet-im-online = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +pallet-indices = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +pallet-offences = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +pallet-randomness-collective-flip = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +pallet-scheduler = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +pallet-session = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +pallet-staking-reward-curve = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +pallet-timestamp = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +pallet-treasury = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-authority-discovery = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-basic-authorship = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-block-builder = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-chain-spec = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-cli = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-client-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-client-db = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-consensus = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-consensus-babe = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-consensus-babe-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-consensus-epochs = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-consensus-slots = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-consensus-uncles = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-executor = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-finality-grandpa = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-finality-grandpa-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-keystore = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-light = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-network = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-rpc-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-service = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-telemetry = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-transaction-pool = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-transaction-pool-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sc-sync-state-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-application-crypto = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-arithmetic = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-authority-discovery = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-authorship = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-block-builder = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-blockchain = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-consensus = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-consensus-babe = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-consensus-slots = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-core = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-externalities = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-finality-grandpa = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-inherents = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-io = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-keystore = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-keyring = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-npos-elections = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-offchain = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-runtime = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-runtime-interface = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-serializer = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-session = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-staking = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-state-machine = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-std = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-storage = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-timestamp = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-tracing = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-transaction-pool = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-transaction-storage-proof = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-trie = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-version = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +substrate-frame-rpc-system = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +substrate-prometheus-endpoint = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +substrate-test-runtime-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +substrate-test-utils = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +substrate-test-utils-derive = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +substrate-wasm-builder = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } blake2 = { git = "https://github.com/PolymathNetwork/hashes", branch = "master" } schnorrkel = { git = "https://github.com/PolymathNetwork/schnorrkel", branch = "rebase-head" } +curve25519-dalek = { git = "https://github.com/PolymathNetwork/curve25519-dalek", branch = "master" } [workspace] members = [ @@ -192,7 +197,7 @@ polymesh-runtime-ci = { path = "pallets/runtime/ci" } chrono = "0.4.11" ed25519-dalek = "1.0.0" futures = "0.3.4" -jsonrpc-core = { version = "15.0", features = ["arbitrary_precision"] } +jsonrpc-core = { version = "18.0", features = ["arbitrary_precision"] } log = "0.4.8" serde = { version = "1.0.104", default-features = false } serde_json = { version = "1.0", features = ["arbitrary_precision"] } @@ -201,49 +206,55 @@ rustc-hex = "2.1.0" # Substrate codec = { version = "2.0.0", package = "parity-scale-codec" } -frame-support = "3.0.0" -frame-system = "3.0.0" -frame-system-rpc-runtime-api = "3.0.0" -grandpa = { package = "sc-finality-grandpa", version = "0.9.0" } -#pallet-contracts = "3.0.0" -#pallet-contracts-rpc-runtime-api = "3.0.0" -pallet-im-online = "3.0.0" -pallet-indices = "3.0.0" -pallet-session = "3.0.0" +frame-support = "4.0.0-dev" +frame-system = "4.0.0-dev" +frame-system-rpc-runtime-api = "4.0.0-dev" +grandpa = { package = "sc-finality-grandpa", version = "0.10.0-dev" } +#pallet-contracts = "4.0.0-dev" +#pallet-contracts-rpc-runtime-api = "4.0.0-dev" +pallet-babe = "4.0.0-dev" +pallet-im-online = "4.0.0-dev" +pallet-indices = "4.0.0-dev" +pallet-session = "4.0.0-dev" prometheus-endpoint = { package = "substrate-prometheus-endpoint", version = "0.9.0" } -sc-authority-discovery = "0.9.0" -sc-basic-authorship = "0.9.0" -sc-chain-spec = "3.0.0" -sc-cli = { version = "0.9.0", features = ["wasmtime"] } -sc-client-api = "3.0.0" -sc-client-db = "0.9.0" -sc-consensus = "0.9.0" -sc-consensus-babe = "0.9.0" -sc-consensus-slots = "0.9.0" -sc-executor = { version = "0.9.0", features = ["wasmtime"] } -sc-light = "3.0.0" -sc-network = "0.9.0" -sc-rpc = "3.0.0" -sc-service = { version = "0.9.0", features = ["wasmtime"] } -sc-telemetry = "3.0.0" -sc-transaction-pool = "3.0.0" -sp-api = "3.0.0" -sp-authority-discovery = "3.0.0" -sp-block-builder = "3.0.0" -sp-blockchain = "3.0.0" -sp-consensus = "0.9.0" -sp-consensus-babe = "0.9.0" -sp-consensus-slots = "0.9.0" -sp-core = "3.0.0" -sp-inherents = "3.0.0" -sp-offchain = "3.0.0" -sp-runtime = "3.0.0" -sp-session = "3.0.0" -sp-transaction-pool = { version = "3.0.0" } +sc-authority-discovery = "0.10.0-dev" +sc-basic-authorship = "0.10.0-dev" +sc-chain-spec = "4.0.0-dev" +sc-cli = { version = "0.10.0-dev", features = ["wasmtime"] } +sc-client-api = "4.0.0-dev" +sc-client-db = "0.10.0-dev" +sc-consensus = "0.10.0-dev" +sc-consensus-babe = "0.10.0-dev" +sc-consensus-slots = "0.10.0-dev" +sc-consensus-uncles = "0.10.0-dev" +sc-executor = { version = "0.10.0-dev", features = ["wasmtime"] } +sc-light = "4.0.0-dev" +sc-network = "0.10.0-dev" +sc-rpc = "4.0.0-dev" +sc-service = { version = "0.10.0-dev", features = ["wasmtime"] } +sc-telemetry = "4.0.0-dev" +sc-transaction-pool = "4.0.0-dev" +sc-sync-state-rpc = { version = "0.10.0-dev" } +sp-api = "4.0.0-dev" +sp-authority-discovery = "4.0.0-dev" +sp-authorship = "4.0.0-dev" +sp-block-builder = "4.0.0-dev" +sp-blockchain = "4.0.0-dev" +sp-consensus = "0.10.0-dev" +sp-consensus-babe = "0.10.0-dev" +sp-consensus-slots = "0.10.0-dev" +sp-core = "4.0.0-dev" +sp-inherents = "4.0.0-dev" +sp-transaction-storage-proof = "4.0.0-dev" +sp-offchain = "4.0.0-dev" +sp-runtime = "4.0.0-dev" +sp-timestamp = "4.0.0-dev" +sp-session = "4.0.0-dev" +sp-transaction-pool = { version = "4.0.0-dev" } # These dependencies are used for runtime benchmarking -frame-benchmarking = "3.0.0" -frame-benchmarking-cli = "3.0.0" +frame-benchmarking = "4.0.0-dev" +frame-benchmarking-cli = "4.0.0-dev" [build-dependencies] vergen = "3.1.0" diff --git a/bin/bench/Cargo.toml b/bin/bench/Cargo.toml index 5f2b729138..4d6600f313 100644 --- a/bin/bench/Cargo.toml +++ b/bin/bench/Cargo.toml @@ -13,32 +13,32 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0" node-primitives = { package = "polymesh-primitives", path = "../../primitives" } node-runtime = { package = "polymesh-runtime-testnet", path = "../../pallets/runtime/testnet" } node-testing = { path = "../testing" } -sc-cli = { version = "0.9.0", features = ["wasmtime"] } -sc-client-api = { version = "3.0.0" } -sp-runtime = { version = "3.0.0" } -sp-state-machine = { version = "0.9.0" } +sc-cli = { version = "0.10.0-dev", features = ["wasmtime"] } +sc-client-api = { version = "4.0.0-dev" } +sp-runtime = { version = "4.0.0-dev" } +sp-state-machine = { version = "0.10.0-dev" } log = "0.4.8" serde = "1.0.101" serde_json = "1.0.41" structopt = "0.3" derive_more = "0.99.2" -kvdb = "0.9" -kvdb-rocksdb = "0.11.1" -sp-trie = { version = "3.0.0" } -sp-core = { version = "3.0.0" } -sp-consensus = { version = "0.9.0" } -sp-transaction-pool = { version = "3.0.0" } -sc-basic-authorship = { version = "0.9.0" } -sp-inherents = { version = "3.0.0" } -sp-timestamp = { version = "3.0.0" } -sp-tracing = { version = "3.0.0" } +kvdb = "0.10" +kvdb-rocksdb = "0.14.0" +sp-trie = { version = "4.0.0-dev" } +sp-core = { version = "4.0.0-dev" } +sp-consensus = { version = "0.10.0-dev" } +sp-transaction-pool = { version = "4.0.0-dev" } +sc-basic-authorship = { version = "0.10.0-dev" } +sp-inherents = { version = "4.0.0-dev" } +sp-timestamp = { version = "4.0.0-dev" } +sp-tracing = { version = "4.0.0-dev" } hash-db = "0.15.2" tempfile = "3.1.0" fs_extra = "1" hex = "0.4.0" rand = { version = "0.7.2", features = ["small_rng"] } lazy_static = "1.4.0" -parity-util-mem = { version = "0.9.0", default-features = false, features = ["primitive-types"] } +parity-util-mem = { version = "0.10.0", default-features = false, features = ["primitive-types"] } parity-db = { version = "0.2.4" } -sc-transaction-pool = { version = "3.0.0" } +sc-transaction-pool = { version = "4.0.0-dev" } futures = { version = "0.3.4", features = ["thread-pool"] } diff --git a/bin/crypto-cli/Cargo.toml b/bin/crypto-cli/Cargo.toml index 00dc5ac63a..8258895f14 100644 --- a/bin/crypto-cli/Cargo.toml +++ b/bin/crypto-cli/Cargo.toml @@ -7,6 +7,6 @@ edition = "2018" [dependencies] polymesh-primitives = { path = "../../primitives" } -confidential_identity = { git = "https://github.com/PolymathNetwork/cryptography.git", tag = "confidential-identity-v1.1.3" } +confidential_identity = { git = "https://github.com/PolymathNetwork/cryptography.git", branch = "confidential-identity-v1" } codec = { version = "2.0.0", package = "parity-scale-codec" } hex = "0.4.0" diff --git a/bin/executor/Cargo.toml b/bin/executor/Cargo.toml index 392ad1d6fb..1f326a1abd 100644 --- a/bin/executor/Cargo.toml +++ b/bin/executor/Cargo.toml @@ -15,13 +15,13 @@ targets = ["x86_64-unknown-linux-gnu"] codec = { package = "parity-scale-codec", version = "2.0.0" } node-primitives = { package = "polymesh-primitives", path = "../../primitives" } node-runtime = { package = "polymesh-runtime-testnet", path = "../../pallets/runtime/testnet" } -sc-executor = { version = "0.9.0", features = ["wasmtime"] } -sp-core = { version = "3.0.0" } -sp-io = { version = "3.0.0" } -sp-state-machine = { version = "0.9.0" } -sp-trie = { version = "3.0.0" } +sc-executor = { version = "0.10.0-dev", features = ["wasmtime"] } +sp-core = { version = "4.0.0-dev" } +sp-io = { version = "4.0.0-dev" } +sp-state-machine = { version = "0.10.0-dev" } +sp-trie = { version = "4.0.0-dev" } trie-root = "0.16.0" -frame-benchmarking = { version = "3.0.0" } +frame-benchmarking = { version = "4.0.0-dev" } [dev-dependencies] node-testing = { path = "../testing" } @@ -29,19 +29,19 @@ pallet-transaction-payment = { path = "../../pallets/transaction-payment" } pallet-balances = { path = "../../pallets/balances" } criterion = "0.3.0" -frame-support = { version = "3.0.0" } -frame-system = { version = "3.0.0" } -#pallet-contracts = { version = "3.0.0" } -pallet-grandpa = { version = "3.0.0" } -pallet-im-online = { version = "3.0.0" } -pallet-indices = { version = "3.0.0" } -pallet-session = { version = "3.0.0" } -pallet-timestamp = { version = "3.0.0" } -pallet-treasury = { version = "3.0.0" } -sp-application-crypto = { version = "3.0.0" } -sp-runtime = { version = "3.0.0" } -sp-externalities = { version = "0.9.0" } -substrate-test-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } +frame-support = { version = "4.0.0-dev" } +frame-system = { version = "4.0.0-dev" } +#pallet-contracts = { version = "4.0.0-dev" } +pallet-grandpa = { version = "4.0.0-dev" } +pallet-im-online = { version = "4.0.0-dev" } +pallet-indices = { version = "4.0.0-dev" } +pallet-session = { version = "4.0.0-dev" } +pallet-timestamp = { version = "4.0.0-dev" } +pallet-treasury = { version = "4.0.0-dev" } +sp-application-crypto = { version = "4.0.0-dev" } +sp-runtime = { version = "4.0.0-dev" } +sp-externalities = { version = "0.10.0-dev" } +substrate-test-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } wabt = "0.10.0" [features] diff --git a/bin/testing/Cargo.toml b/bin/testing/Cargo.toml index 832c8b8b1e..b04dd99505 100644 --- a/bin/testing/Cargo.toml +++ b/bin/testing/Cargo.toml @@ -23,32 +23,32 @@ pallet-staking = { path = "../../pallets/staking" } pallet-balances = { path = "../../pallets/balances" } node-executor = { path = "../executor", features = ["wasmtime"] } -sc-service = { version = "0.9.0", features = ["test-helpers", "db", "wasmtime"] } -sc-client-db = { version = "0.9.0", features = ["kvdb-rocksdb", "parity-db"] } -sc-client-api = { version = "3.0.0" } +sc-service = { version = "0.10.0-dev", features = ["test-helpers", "db", "wasmtime"] } +sc-client-db = { version = "0.10.0-dev", features = ["kvdb-rocksdb", "parity-db"] } +sc-client-api = { version = "4.0.0-dev" } codec = { package = "parity-scale-codec", version = "2.0.0" } -#pallet-contracts = { version = "3.0.0" } -pallet-grandpa = { version = "3.0.0" } -pallet-indices = { version = "3.0.0" } -sp-keyring = { version = "3.0.0" } -sp-core = { version = "3.0.0" } -sp-io = { version = "3.0.0" } -frame-support = { version = "3.0.0" } -pallet-session = { version = "3.0.0" } -sp-runtime = { version = "3.0.0" } -sc-executor = { version = "0.9.0", features = ["wasmtime"] } -sp-consensus = { version = "0.9.0" } -frame-system = { version = "3.0.0" } -substrate-test-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } -pallet-timestamp = { version = "3.0.0" } -pallet-treasury = { version = "3.0.0" } +#pallet-contracts = { version = "4.0.0-dev" } +pallet-grandpa = { version = "4.0.0-dev" } +pallet-indices = { version = "4.0.0-dev" } +sp-keyring = { version = "4.0.0-dev" } +sp-core = { version = "4.0.0-dev" } +sp-io = { version = "4.0.0-dev" } +frame-support = { version = "4.0.0-dev" } +pallet-session = { version = "4.0.0-dev" } +sp-runtime = { version = "4.0.0-dev" } +sc-executor = { version = "0.10.0-dev", features = ["wasmtime"] } +sp-consensus = { version = "0.10.0-dev" } +frame-system = { version = "4.0.0-dev" } +substrate-test-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +pallet-timestamp = { version = "4.0.0-dev" } +pallet-treasury = { version = "4.0.0-dev" } wabt = "0.10.0" -sp-api = { version = "3.0.0" } -sp-timestamp = { version = "3.0.0", default-features = false } -sp-block-builder = { version = "3.0.0" } -sc-block-builder = { version = "0.9.0" } -sp-inherents = { version = "3.0.0" } -sp-blockchain = { version = "3.0.0" } +sp-api = { version = "4.0.0-dev" } +sp-timestamp = { version = "4.0.0-dev", default-features = false } +sp-block-builder = { version = "4.0.0-dev" } +sc-block-builder = { version = "0.10.0-dev" } +sp-inherents = { version = "4.0.0-dev" } +sp-blockchain = { version = "4.0.0-dev" } log = "0.4.8" tempfile = "3.1.0" fs_extra = "1" @@ -56,4 +56,4 @@ futures = "0.3.1" [dev-dependencies] criterion = "0.3.0" -sc-cli = { version = "0.9.0", features = ["wasmtime"] } +sc-cli = { version = "0.10.0-dev", features = ["wasmtime"] } diff --git a/contracts/CountTransferManager/lib.rs b/contracts/CountTransferManager/lib.rs index ac5a33cc7d..8690cb599a 100755 --- a/contracts/CountTransferManager/lib.rs +++ b/contracts/CountTransferManager/lib.rs @@ -4,11 +4,11 @@ use ink_lang as ink; mod custom_types { use scale::{Decode, Encode}; - #[cfg(feature = "std")] use scale_info::TypeInfo; - #[derive(Decode, Encode, PartialEq, Ord, Eq, PartialOrd, Copy, Hash, Clone, Default)] - #[cfg_attr(feature = "std", derive(TypeInfo, Debug))] + #[derive(Decode, Encode, TypeInfo)] + #[derive(PartialEq, Ord, Eq, PartialOrd, Copy, Hash, Clone, Default)] + #[cfg_attr(feature = "std", derive(Debug))] pub struct IdentityId([u8; 32]); impl From for IdentityId { diff --git a/contracts/PercentageTransferManager/src/lib.rs b/contracts/PercentageTransferManager/src/lib.rs index 254952050c..643a4dd8b3 100755 --- a/contracts/PercentageTransferManager/src/lib.rs +++ b/contracts/PercentageTransferManager/src/lib.rs @@ -3,29 +3,13 @@ use ink_lang as ink; mod custom_types { - use ink_storage::traits::{PackedLayout, SpreadLayout}; + use ink_storage::traits::{PackedLayout, SpreadLayout, StorageLayout}; use scale::{Decode, Encode}; - #[cfg(feature = "std")] use scale_info::TypeInfo; - #[derive( - Decode, - Encode, - PartialEq, - Ord, - Eq, - PartialOrd, - Copy, - Hash, - Clone, - Default, - SpreadLayout, - PackedLayout, - )] - #[cfg_attr( - feature = "std", - derive(TypeInfo, Debug, ink_storage::traits::StorageLayout) - )] + #[derive(Decode, Encode, TypeInfo, SpreadLayout, PackedLayout)] + #[derive(PartialEq, Ord, Eq, PartialOrd, Copy, Hash, Clone, Default)] + #[cfg_attr(feature = "std", derive(Debug, StorageLayout))] pub struct IdentityId([u8; 32]); impl From for IdentityId { diff --git a/contracts/examples/custom-ink-env-types/Cargo.toml b/contracts/examples/custom-ink-env-types/Cargo.toml index d29d3474d1..4e31bd53e5 100644 --- a/contracts/examples/custom-ink-env-types/Cargo.toml +++ b/contracts/examples/custom-ink-env-types/Cargo.toml @@ -7,12 +7,12 @@ edition = "2018" [dependencies] ink_core = { git = "https://github.com/paritytech/ink", tag = "v2.1.0", package = "ink_core", default-features = false } ink_prelude = { git = "https://github.com/paritytech/ink", tag = "v2.1.0", package = "ink_prelude", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } scale = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } serde = { version = "1.0.104", optional = true, features = ["derive"] } scale-info = { version = "0.3", default-features = false, features = ["derive"], optional = true } derive_more = { version = "0.99", default-features = false, features = ["from", "display"] } -sp-io = { version = "3.0.0", default-features = false, features = ["disable_panic_handler", "disable_oom", "disable_allocator"] } +sp-io = { version = "4.0.0-dev", default-features = false, features = ["disable_panic_handler", "disable_oom", "disable_allocator"] } [dependencies.type-metadata] git = "https://github.com/type-metadata/type-metadata.git" diff --git a/contracts/examples/custom-ink-env-types/src/lib.rs b/contracts/examples/custom-ink-env-types/src/lib.rs index 819fb43d23..2f30142a9b 100644 --- a/contracts/examples/custom-ink-env-types/src/lib.rs +++ b/contracts/examples/custom-ink-env-types/src/lib.rs @@ -33,9 +33,8 @@ pub type BlockNumber = u64; /// /// This is a mirror of the `AccountId` type used in the default configuration /// of PALLET contracts. -#[derive( - Debug, Copy, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Encode, Decode, From, Default, -)] +#[derive(Encode, Decode, From)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Default)] #[cfg_attr(feature = "std", derive(TypeInfo))] pub struct AccountId([u8; 32]); @@ -54,9 +53,8 @@ impl<'a> TryFrom<&'a [u8]> for AccountId { /// /// This is a mirror of the `Hash` type used in the default configuration /// of PALLET contracts. -#[derive( - Debug, Copy, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Encode, Decode, From, Default, -)] +#[derive(Encode, Decode, From)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Default)] #[cfg_attr(feature = "std", derive(TypeInfo))] pub struct Hash([u8; 32]); @@ -102,7 +100,8 @@ impl ink_core::env::EnvTypes for PolymeshRuntimeTypes { const TICKER_LEN: usize = 12; -#[derive(Decode, Encode, PartialEq, Ord, Eq, PartialOrd, Copy, Hash, Clone, Default, Debug)] +#[derive(Decode, Encode)] +#[derive(PartialEq, Ord, Eq, PartialOrd, Copy, Hash, Clone, Default, Debug)] #[cfg_attr(feature = "ink-generate-abi", derive(type_metadata::Metadata))] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct IdentityId([u8; 32]); @@ -111,7 +110,8 @@ impl Flush for IdentityId {} #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] #[cfg_attr(feature = "ink-generate-abi", derive(type_metadata::Metadata))] -#[derive(Decode, Encode, Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Decode, Encode)] +#[derive(Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)] pub struct JurisdictionName(pub Vec); /// Scope: Almost all claim needs a valid scope identity. @@ -198,7 +198,8 @@ pub struct AssetCompliance { /// received by a Substrate module call method has to be converted to canonical uppercase /// representation using [`Ticker::canonize`]. #[cfg_attr(feature = "ink-generate-abi", derive(type_metadata::Metadata))] -#[derive(Encode, Decode, Clone, Copy, Hash, PartialEq, Eq, PartialOrd, Ord, Debug)] +#[derive(Decode, Encode)] +#[derive(Clone, Copy, Hash, PartialEq, Eq, PartialOrd, Ord, Debug)] pub struct Ticker([u8; TICKER_LEN]); impl Default for Ticker { diff --git a/migration-tests/Cargo.toml b/migration-tests/Cargo.toml index 573ea900b7..ed977ccb30 100644 --- a/migration-tests/Cargo.toml +++ b/migration-tests/Cargo.toml @@ -15,8 +15,8 @@ sp-state-machine-old = { package = "sp-state-machine", git = "https://github.com # New migration helpers remote-externalities = { path = "remote-externalities" } -frame-support = { version = "3.0.0" } -sp-core = { version = "3.0.0" } +frame-support = { version = "4.0.0-dev" } +sp-core = { version = "4.0.0-dev" } # Old pallets polymesh-runtime-old = { package = "polymesh-runtime-testnet", git = "https://github.com/PolymathNetwork/Polymesh", rev = "14951c75b778d5ee75c8ecdc02b70b6eb6d7b172" } diff --git a/migration-tests/remote-externalities/Cargo.toml b/migration-tests/remote-externalities/Cargo.toml index b914574166..4bfa5331ec 100644 --- a/migration-tests/remote-externalities/Cargo.toml +++ b/migration-tests/remote-externalities/Cargo.toml @@ -6,8 +6,8 @@ edition = "2018" [dependencies] jsonrpc-core-client = { version = "15.1.0", features = ["http"] } -sc-rpc-api = { version = "0.9.0" } -sc-rpc = { version = "3.0.0" } +sc-rpc-api = { version = "0.10.0-dev" } +sc-rpc = { version = "4.0.0-dev" } futures = "0.1.29" hex-literal = "0.3.1" @@ -16,8 +16,8 @@ log = "0.4.11" bincode = "1.3.1" tokio = "0.1.22" -sp-io = { version = "3.0.0" } -sp-core = { version = "3.0.0" } +sp-io = { version = "4.0.0-dev" } +sp-core = { version = "4.0.0-dev" } [dev-dependencies] async-std = { version = "1.6.5", features = ["attributes"] } diff --git a/node-rpc/Cargo.toml b/node-rpc/Cargo.toml index 5739bfe859..5929a02223 100644 --- a/node-rpc/Cargo.toml +++ b/node-rpc/Cargo.toml @@ -11,33 +11,33 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] polymesh-primitives = { path = "../primitives", default-features = false } -#pallet-contracts-rpc = { version = "3.0.0" } +#pallet-contracts-rpc = { version = "4.0.0-dev" } pallet-group-rpc = { path = "../pallets/group/rpc" } pallet-staking-rpc = { path = "../pallets/staking/rpc" } pallet-protocol-fee-rpc = { path = "../pallets/protocol-fee/rpc" } node-rpc = { path = "../rpc" } -jsonrpc-core = { version = "15.0", features = ["arbitrary_precision"] } +jsonrpc-core = { version = "18.0.0", features = ["arbitrary_precision"] } codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } -sp-blockchain = { version = "3.0.0" } -sp-runtime = { version = "3.0.0" } -sp-api = { version = "3.0.0" } -sc-client-api = { version = "3.0.0" } -sp-consensus = { version = "0.9.0" } -sp-consensus-babe = { version = "0.9.0" } -sp-block-builder = { version = "3.0.0" } -sp-keystore = { version = "0.9.0" } +sp-blockchain = { version = "4.0.0-dev" } +sp-runtime = { version = "4.0.0-dev" } +sp-api = { version = "4.0.0-dev" } +sc-client-api = { version = "4.0.0-dev" } +sp-consensus = { version = "0.10.0-dev" } +sp-consensus-babe = { version = "0.10.0-dev" } +sp-block-builder = { version = "4.0.0-dev" } +sp-keystore = { version = "0.10.0-dev" } -sc-rpc = { version = "3.0.0" } -sc-rpc-api = { version = "0.9.0" } -sc-chain-spec = { version = "3.0.0" } -sc-consensus-babe = { version = "0.9.0" } -sc-consensus-babe-rpc = { version = "0.9.0" } -sc-consensus-epochs = { version = "0.9.0" } -sc-finality-grandpa = { version = "0.9.0" } -sc-finality-grandpa-rpc = { version = "0.9.0" } -sc-keystore = { version = "3.0.0" } -sc-sync-state-rpc = { version = "0.9.0" } -sp-transaction-pool = { version = "3.0.0" } -substrate-frame-rpc-system = { version = "3.0.0" } +sc-rpc = { version = "4.0.0-dev" } +sc-rpc-api = { version = "0.10.0-dev" } +sc-chain-spec = { version = "4.0.0-dev" } +sc-consensus-babe = { version = "0.10.0-dev" } +sc-consensus-babe-rpc = { version = "0.10.0-dev" } +sc-consensus-epochs = { version = "0.10.0-dev" } +sc-finality-grandpa = { version = "0.10.0-dev" } +sc-finality-grandpa-rpc = { version = "0.10.0-dev" } +sc-keystore = { version = "4.0.0-dev" } +sc-sync-state-rpc = { version = "0.10.0-dev" } +sc-transaction-pool-api = { version = "4.0.0-dev" } +substrate-frame-rpc-system = { version = "4.0.0-dev" } diff --git a/node-rpc/src/lib.rs b/node-rpc/src/lib.rs index 06cb7f567d..85b12a5599 100644 --- a/node-rpc/src/lib.rs +++ b/node-rpc/src/lib.rs @@ -40,13 +40,13 @@ use sc_finality_grandpa::{ FinalityProofProvider, GrandpaJustificationStream, SharedAuthoritySet, SharedVoterState, }; use sc_rpc::{DenyUnsafe, SubscriptionTaskExecutor}; +use sc_transaction_pool_api::TransactionPool; use sp_api::ProvideRuntimeApi; use sp_block_builder::BlockBuilder; use sp_blockchain::{Error as BlockChainError, HeaderBackend, HeaderMetadata}; use sp_consensus::SelectChain; use sp_consensus_babe::BabeApi; use sp_keystore::SyncCryptoStorePtr; -use sp_transaction_pool::TransactionPool; use std::sync::Arc; /// Light client extra dependencies. @@ -109,7 +109,7 @@ pub type IoHandler = jsonrpc_core::IoHandler; /// Instantiate all Full RPC extensions. pub fn create_full( deps: FullDeps, -) -> jsonrpc_core::IoHandler +) -> Result, Box> where C: ProvideRuntimeApi + HeaderBackend @@ -222,7 +222,7 @@ where shared_authority_set, shared_epoch_changes, deny_unsafe, - ), + )?, )); io.extend_with(StakingApi::to_delegate(Staking::new(client.clone()))); io.extend_with(PipsApi::to_delegate(Pips::new(client.clone()))); @@ -236,7 +236,7 @@ where client, ))); - io + Ok(io) } /// Instantiate all Light RPC extensions. diff --git a/pallets/asset/Cargo.toml b/pallets/asset/Cargo.toml index b9b098ffd5..cf2dda47c1 100644 --- a/pallets/asset/Cargo.toml +++ b/pallets/asset/Cargo.toml @@ -13,7 +13,7 @@ polymesh-common-utilities = { path = "../common", default-features = false } # Our Pallets pallet-balances = { path = "../balances", default-features = false } pallet-base = { path = "../base", default-features = false } -#pallet-contracts = { version = "3.0.0", default-features = false } +#pallet-contracts = { version = "4.0.0-dev", default-features = false } pallet-external-agents = { path = "../external-agents", default-features = false } pallet-identity = { path = "../identity", default-features = false } pallet-permissions = { path = "../permissions", default-features = false } @@ -31,21 +31,22 @@ arrayvec = { version = "0.7.1", default-features = false } # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-arithmetic = { version = "3.0.0", default-features = false } -sp-core = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -sp-version = { version = "3.0.0", default-features = false } -sp-api = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } -pallet-timestamp = { version = "3.0.0", default-features = false } -pallet-session = { version = "3.0.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-arithmetic = { version = "4.0.0-dev", default-features = false } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-version = { version = "4.0.0-dev", default-features = false } +sp-api = { version = "4.0.0-dev", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +pallet-timestamp = { version = "4.0.0-dev", default-features = false } +pallet-session = { version = "4.0.0-dev", default-features = false } libsecp256k1 = { version = "0.6", default-features = false, features = ["hmac"] } # Only in STD -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } [features] default = ["std"] diff --git a/pallets/asset/src/checkpoint/mod.rs b/pallets/asset/src/checkpoint/mod.rs index 74696a6515..391e1f052a 100644 --- a/pallets/asset/src/checkpoint/mod.rs +++ b/pallets/asset/src/checkpoint/mod.rs @@ -62,6 +62,7 @@ use polymesh_primitives::{ calendar::{CalendarPeriod, CheckpointId, CheckpointSchedule}, storage_migration_ver, EventDid, IdentityId, Moment, Ticker, }; +use scale_info::TypeInfo; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; use sp_std::prelude::*; @@ -73,7 +74,7 @@ type ExternalAgents = pallet_external_agents::Module; /// Input specification for a checkpoint schedule. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Encode, Decode, Copy, Clone, Debug, PartialEq, Eq)] +#[derive(Encode, Decode, TypeInfo, Copy, Clone, Debug, PartialEq, Eq)] pub struct ScheduleSpec { /// Unix time in milli-seconds. /// When `None`, this is an instruction to use the current time. diff --git a/pallets/asset/src/lib.rs b/pallets/asset/src/lib.rs index af867f28be..567ebbdb04 100644 --- a/pallets/asset/src/lib.rs +++ b/pallets/asset/src/lib.rs @@ -114,6 +114,7 @@ use polymesh_primitives::{ storage_migrate_on, storage_migration_ver, AssetIdentifier, Balance, Document, DocumentId, IdentityId, PortfolioId, ScopeId, Ticker, }; +use scale_info::TypeInfo; use sp_runtime::traits::Zero; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; @@ -125,7 +126,7 @@ type Portfolio = pallet_portfolio::Module; type Statistics = pallet_statistics::Module; /// Ownership status of a ticker/token. -#[derive(Encode, Decode, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Encode, Decode, TypeInfo, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] pub enum AssetOwnershipRelation { NotOwned, TickerOwned, @@ -139,7 +140,7 @@ impl Default for AssetOwnershipRelation { } /// struct to store the token details. -#[derive(Encode, Decode, Default, Clone, PartialEq, Debug)] +#[derive(Encode, Decode, TypeInfo, Default, Clone, PartialEq, Debug)] pub struct SecurityToken { pub total_supply: Balance, pub owner_did: IdentityId, @@ -148,7 +149,7 @@ pub struct SecurityToken { } /// struct to store the ticker registration details. -#[derive(Encode, Decode, Clone, Default, PartialEq, Debug)] +#[derive(Encode, Decode, TypeInfo, Clone, Default, PartialEq, Debug)] pub struct TickerRegistration { pub owner: IdentityId, pub expiry: Option, @@ -156,7 +157,7 @@ pub struct TickerRegistration { /// struct to store the ticker registration config. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Encode, Decode, Clone, Default, PartialEq, Debug)] +#[derive(Encode, Decode, TypeInfo, Clone, Default, PartialEq, Debug)] pub struct TickerRegistrationConfig { pub max_ticker_length: u8, pub registration_length: Option, @@ -187,7 +188,7 @@ impl Default for RestrictionResult { /// Data imported from Polymath Classic regarding ticker registration/creation. /// Only used at genesis config and not stored on-chain. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Encode, Decode, Copy, Clone, Debug, PartialEq, Eq)] +#[derive(Encode, Decode, TypeInfo, Copy, Clone, Debug, PartialEq, Eq)] pub struct ClassicTickerImport { /// Owner of the registration. pub eth_owner: EthereumAddress, @@ -201,7 +202,7 @@ pub struct ClassicTickerImport { /// Data about a ticker registration from Polymath Classic on-genesis importation. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Encode, Decode, Clone, Debug, PartialEq, Eq)] +#[derive(Encode, Decode, TypeInfo, Clone, Debug, PartialEq, Eq)] pub struct ClassicTickerRegistration { /// Owner of the registration. pub eth_owner: EthereumAddress, @@ -1060,7 +1061,7 @@ impl Module { if let Some(ticker) = Self::maybe_ticker(ticker) { ticker .expiry - .filter(|&e| >::get() > e) + .filter(|&e| >::get() > e) .is_some() } else { true @@ -1071,7 +1072,7 @@ impl Module { pub fn is_ticker_registry_valid(ticker: &Ticker, did: IdentityId) -> bool { // Assumes uppercase ticker if let Some(ticker) = Self::maybe_ticker(ticker) { - let now = >::get(); + let now = >::get(); ticker.owner == did && ticker.expiry.filter(|&e| now > e).is_none() } else { false @@ -1090,7 +1091,7 @@ impl Module { match Self::maybe_ticker(ticker) { Some(TickerRegistration { expiry, owner }) => match expiry { // Ticker registered to someone but expired and can be registered again. - Some(expiry) if >::get() > expiry => { + Some(expiry) if >::get() > expiry => { TickerRegistrationStatus::Available } // Ticker is already registered to provided did (may or may not expire in future). @@ -1142,7 +1143,7 @@ impl Module { Ok(config .registration_length - .map(|exp| >::get() + exp)) + .map(|exp| >::get() + exp)) } /// Registers the given `ticker` to the `owner` identity with an optional expiry time. diff --git a/pallets/balances/Cargo.toml b/pallets/balances/Cargo.toml index 340182f867..3acece4ec0 100644 --- a/pallets/balances/Cargo.toml +++ b/pallets/balances/Cargo.toml @@ -10,27 +10,28 @@ pallet-transaction-payment = { path = "../transaction-payment", default-features polymesh-common-utilities = { path = "../common", default-features = false } polymesh-primitives = { path = "../../primitives", default-features = false } +log = "0.4.8" serde = { version = "1.0.104", default-features = false } serde_derive = { version = "1.0.104", optional = true, default-features = false} -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } - -sp-core = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -sp-version = { version = "3.0.0", default-features = false } -sp-api = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } - -pallet-timestamp = { version = "3.0.0", default-features = false } +codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-version = { version = "4.0.0-dev", default-features = false } +sp-api = { version = "4.0.0-dev", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } + +pallet-timestamp = { version = "4.0.0-dev", default-features = false } # Only for test in STD -substrate-test-runtime-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0", optional = true} +substrate-test-runtime-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop", optional = true} # Benchmarking -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } [features] equalize = [] diff --git a/pallets/balances/src/lib.rs b/pallets/balances/src/lib.rs index 0b35fe4902..6669f04b60 100644 --- a/pallets/balances/src/lib.rs +++ b/pallets/balances/src/lib.rs @@ -186,8 +186,9 @@ use polymesh_common_utilities::{ }; use polymesh_primitives::traits::BlockRewardsReserveCurrency; use polymesh_primitives::Balance; +use scale_info::TypeInfo; use sp_runtime::{ - traits::{AccountIdConversion, StaticLookup, StoredMapError, Zero}, + traits::{AccountIdConversion, StaticLookup, Zero}, DispatchError, DispatchResult, RuntimeDebug, }; use sp_std::{cmp, mem, prelude::*, result}; @@ -214,7 +215,7 @@ decl_error! { /// A single lock on a balance. There can be many of these on an account and they "overlap", so the /// same balance is frozen by multiple locks. -#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug)] +#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo)] pub struct BalanceLock { /// An identifier for this lock. Only one lock may be in existence for each identifier. pub id: LockIdentifier, @@ -439,7 +440,7 @@ impl Module { pub fn block_rewards_reserve() -> T::AccountId { SystematicIssuers::BlockRewardReserve - .as_module_id() + .as_pallet_id() .into_account() } @@ -467,7 +468,7 @@ impl Module { /// NOTE: LOW-LEVEL: This will not attempt to maintain total issuance. It is expected that /// the caller will do this. pub fn mutate_account(who: &T::AccountId, f: impl FnOnce(&mut AccountData) -> R) -> R { - Self::try_mutate_account(who, |a, _| -> Result { Ok(f(a)) }) + Self::try_mutate_account(who, |a, _| -> Result { Ok(f(a)) }) .expect("Error is infallible; qed") } @@ -479,7 +480,7 @@ impl Module { /// /// NOTE: LOW-LEVEL: This will not attempt to maintain total issuance. It is expected that /// the caller will do this. - fn try_mutate_account>( + fn try_mutate_account>( who: &T::AccountId, f: impl FnOnce(&mut AccountData, bool) -> Result, ) -> Result { @@ -506,7 +507,7 @@ impl Module { /// Update the account entry for `who`, given the locks. fn update_locks(who: &T::AccountId, locks: &[BalanceLock]) { if locks.len() as u32 > T::MaxLocks::get() { - frame_support::debug::warn!( + log::warn!( "Warning: A user has more currency locks than expected. \ A runtime configuration adjustment may be needed." ); @@ -531,12 +532,12 @@ impl Module { if existed { // TODO: use Locks::::hashed_key // https://github.com/paritytech/substrate/issues/4969 - system::Module::::dec_consumers(who); + system::Pallet::::dec_consumers(who); } } else { Locks::::insert(who, locks); if !existed { - let _ = system::Module::::inc_consumers(who); + let _ = system::Pallet::::inc_consumers(who); } } } @@ -666,7 +667,7 @@ impl BlockRewardsReserveCurrency> for Module let brr = Self::block_rewards_reserve(); Self::try_mutate_account( &brr, - |account, _| -> Result, StoredMapError> { + |account, _| -> Result, DispatchError> { let amount_to_mint = if account.free > Zero::zero() { let old_brr_free_balance = account.free; let new_brr_free_balance = old_brr_free_balance.saturating_sub(amount); diff --git a/pallets/base/Cargo.toml b/pallets/base/Cargo.toml index 604b91333b..d665f310a2 100644 --- a/pallets/base/Cargo.toml +++ b/pallets/base/Cargo.toml @@ -14,14 +14,14 @@ serde_derive = { version = "1.0.104", optional = true, default-features = false # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-core = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymath-3.0.0" } -sp-std = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymath-3.0.0" } -sp-io = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymath-3.0.0" } -sp-runtime = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymath-3.0.0" } -sp-version = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymath-3.0.0" } -sp-api = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymath-3.0.0" } - -frame-system = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymath-3.0.0" } -frame-support = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymath-3.0.0" } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-core = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-develop" } +sp-std = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-develop" } +sp-io = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-develop" } +sp-runtime = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-develop" } +sp-version = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-develop" } +sp-api = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-develop" } +frame-system = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-develop" } +frame-support = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-develop" } [features] diff --git a/pallets/base/src/lib.rs b/pallets/base/src/lib.rs index 41c431953b..286ae0f14f 100644 --- a/pallets/base/src/lib.rs +++ b/pallets/base/src/lib.rs @@ -27,10 +27,11 @@ use core::mem; use frame_support::dispatch::{DispatchError, DispatchResult}; -use frame_support::traits::Get; +use frame_support::traits::{Get, StorageInfo, StorageInfoTrait}; use frame_support::{decl_error, decl_module, ensure}; pub use polymesh_common_utilities::traits::base::{Config, Event}; use polymesh_primitives::checked_inc::CheckedInc; +use sp_std::vec::Vec; decl_module! { pub struct Module for enum Call where origin: T::Origin { @@ -105,3 +106,9 @@ pub fn try_next_post(seq: &mut I) -> Result frame_support::traits::IntegrityTest for Module {} + +impl StorageInfoTrait for Module { + fn storage_info() -> Vec { + Vec::new() + } +} diff --git a/pallets/bridge/Cargo.toml b/pallets/bridge/Cargo.toml index 08b38a5073..73ef751431 100644 --- a/pallets/bridge/Cargo.toml +++ b/pallets/bridge/Cargo.toml @@ -15,17 +15,19 @@ pallet-multisig = { path = "../multisig", default-features = false } # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -pallet-scheduler = { version = "3.0.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +pallet-scheduler = { version = "4.0.0-dev", default-features = false } -frame-benchmarking = { version = "3.0.0", optional = true } +frame-benchmarking = { version = "4.0.0-dev", optional = true } # Other serde = { version = "1.0.104", default-features = false } +log = "0.4.8" [features] equalize = [] diff --git a/pallets/bridge/src/genesis.rs b/pallets/bridge/src/genesis.rs index c01dc04727..c10ad634f9 100644 --- a/pallets/bridge/src/genesis.rs +++ b/pallets/bridge/src/genesis.rs @@ -1,6 +1,6 @@ use crate::{BridgeTxDetail, BridgeTxStatus, Config, GenesisConfig}; -use frame_support::{debug, storage::StorageDoubleMap}; +use frame_support::storage::StorageDoubleMap; use polymesh_common_utilities::{balances::CheckCdd, constants::currency::POLY, Context}; use polymesh_primitives::Permissions; use sp_runtime::traits::Zero; @@ -24,10 +24,10 @@ pub(crate) fn controller(config: &GenesisConfig) -> T::AccountId { config.signatures_required, ) .expect("cannot create the bridge multisig"); - debug::info!("Created bridge multisig {}", multisig_id); + log::info!("Created bridge multisig {}", multisig_id); for signer in &config.signers { - debug::info!("Accepting bridge signer auth for {:?}", signer); + log::info!("Accepting bridge signer auth for {:?}", signer); let last_auth = >::iter_prefix_values(signer) .next() .expect("cannot find bridge signer auth") @@ -40,7 +40,7 @@ pub(crate) fn controller(config: &GenesisConfig) -> T::AccountId { .expect("bridge creator account has no identity"); Identity::::unsafe_join_identity(creator_did, Permissions::default(), multisig_id.clone()); - debug::info!("Joined identity {} as signer {}", creator_did, multisig_id); + log::info!("Joined identity {} as signer {}", creator_did, multisig_id); multisig_id } @@ -61,7 +61,7 @@ pub(crate) fn bridge_tx_details( }; let recipient_did = T::CddChecker::get_key_cdd_did(&recipient); - debug::info!( + log::info!( "Credited Genesis bridge transaction to {:?}(did={:?}) with nonce {} for {:?} POLYX", recipient, recipient_did, diff --git a/pallets/bridge/src/lib.rs b/pallets/bridge/src/lib.rs index 95989300b4..4b11ce35ed 100644 --- a/pallets/bridge/src/lib.rs +++ b/pallets/bridge/src/lib.rs @@ -115,9 +115,8 @@ use frame_support::{ }, weights::{DispatchClass, Pays}, }; -use frame_system::{self as system, ensure_root, ensure_signed, RawOrigin}; +use frame_system::{ensure_root, ensure_signed, RawOrigin}; use pallet_balances as balances; -use pallet_identity as identity; use pallet_multisig as multisig; use polymesh_common_utilities::traits::balances::Config as BalancesConfig; use polymesh_common_utilities::{ @@ -125,13 +124,15 @@ use polymesh_common_utilities::{ Context, GC_DID, }; use polymesh_primitives::{storage_migration_ver, Balance, IdentityId, Signatory}; +use scale_info::TypeInfo; use sp_core::H256; use sp_runtime::traits::{Saturating, Zero}; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; use sp_std::{convert::TryFrom, fmt::Debug, prelude::*}; -type Identity = identity::Module; +type Identity = pallet_identity::Module; +type System = frame_system::Pallet; pub trait Config: multisig::Config + BalancesConfig + pallet_base::Config { type Event: From> + Into<::Event>; @@ -146,7 +147,8 @@ pub trait Config: multisig::Config + BalancesConfig + pallet_base::Config { /// The status of a bridge transaction. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Encode, Decode, Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)] pub enum BridgeTxStatus { /// No such transaction in the system. Absent, @@ -171,7 +173,8 @@ impl Default for BridgeTxStatus { /// A unique lock-and-mint bridge transaction. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Encode, Decode, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Default)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Default)] pub struct BridgeTx { /// A single transaction hash can have multiple locks. This nonce differentiates between them. pub nonce: u32, @@ -185,7 +188,8 @@ pub struct BridgeTx { } /// Additional details of a bridge transaction. -#[derive(Encode, Decode, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Default)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Default)] pub struct BridgeTxDetail { /// Amount of POLYX tokens to credit. pub amount: Balance, @@ -199,7 +203,7 @@ pub struct BridgeTxDetail { } /// The status of a handled transaction for reporting purposes. -#[derive(Encode, Decode, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Encode, Decode, TypeInfo, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] pub enum HandledTxStatus { /// The transaction has been successfully handled. Success, @@ -607,7 +611,7 @@ impl Module { let (limit, interval_duration) = Self::bridge_limit(); ensure!(!interval_duration.is_zero(), Error::::DivisionByZero); - let current_interval = >::block_number() / interval_duration; + let current_interval = System::::block_number() / interval_duration; let (bridged, last_interval) = Self::polyx_bridged(did); let total_mint = if last_interval == current_interval { amount.checked_add(bridged).ok_or(Error::::Overflow)? @@ -618,7 +622,7 @@ impl Module { >::insert(did, (total_mint, current_interval)) } - let _pos_imbalance = >::deposit_creating(&recipient, *amount); + let _pos_imbalance = >::deposit_creating(&recipient, *amount); Ok(()) } @@ -660,7 +664,7 @@ impl Module { match Self::issue(&bridge_tx.recipient, &amount, exempted_did) { Ok(_) => { tx_details.status = BridgeTxStatus::Handled; - tx_details.execution_block = >::block_number(); + tx_details.execution_block = System::::block_number(); >::insert(&bridge_tx.recipient, &bridge_tx.nonce, tx_details); let current_did = Context::current_identity::>().unwrap_or_else(|| GC_DID); @@ -720,7 +724,7 @@ impl Module { already_tried = 24; } - let unlock_block_number = >::block_number() + let unlock_block_number = System::::block_number() .saturating_add(timelock) .saturating_add(T::BlockNumber::from(2u32.pow(already_tried.into()))); tx_details.execution_block = unlock_block_number; @@ -744,8 +748,8 @@ impl Module { Self::ensure_controller_set()?; let sender_signer = Signatory::Account(sender); - let propose = |tx| { - let proposal = ::Proposal::from(Call::::handle_bridge_tx(tx)); + let propose = |bridge_tx| { + let proposal = ::Proposal::from(Call::::handle_bridge_tx { bridge_tx }); let boxed_proposal = Box::new(proposal.into()); >::create_or_approve_proposal( Self::controller(), @@ -839,7 +843,10 @@ impl Module { bridge_tx: BridgeTx, ) -> DispatchResult { // Schedule the transaction as a dispatchable call. - let call = Call::::handle_scheduled_bridge_tx(bridge_tx.clone()).into(); + let call = Call::::handle_scheduled_bridge_tx { + bridge_tx: bridge_tx.clone(), + } + .into(); ::Scheduler::schedule( DispatchTime::At(block_number), None, diff --git a/pallets/committee/Cargo.toml b/pallets/committee/Cargo.toml index 4d163d2628..d39f509833 100644 --- a/pallets/committee/Cargo.toml +++ b/pallets/committee/Cargo.toml @@ -16,18 +16,19 @@ serde_derive = { version = "1.0.104", optional = true, default-features = false # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -sp-version = { version = "3.0.0", default-features = false } -sp-api = { version = "3.0.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-version = { version = "4.0.0-dev", default-features = false } +sp-api = { version = "4.0.0-dev", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } -pallet-timestamp = { version = "3.0.0", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +pallet-timestamp = { version = "4.0.0-dev", default-features = false } -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } [features] equalize = [] diff --git a/pallets/committee/src/benchmarking.rs b/pallets/committee/src/benchmarking.rs index 4fe565c531..0c25519d25 100644 --- a/pallets/committee/src/benchmarking.rs +++ b/pallets/committee/src/benchmarking.rs @@ -45,7 +45,7 @@ where { let bytes: [u8; 4] = n.to_be_bytes(); let padding = bytes.repeat(PROPOSAL_PADDING_WORDS); - let proposal = frame_system::Call::::remark(padding).into(); + let proposal = frame_system::Call::::remark { remark: padding }.into(); let hash = ::Hashing::hash_of(&proposal); (proposal, hash) } @@ -138,7 +138,7 @@ benchmarks_instance! { let n = 1; let d = 2; let origin = T::CommitteeOrigin::successful_origin(); - let call = Call::::set_vote_threshold(n, d); + let call = Call::::set_vote_threshold { n, d }; }: { call.dispatch_bypass_filter(origin).unwrap(); } @@ -154,7 +154,7 @@ benchmarks_instance! { let coordinator = dids.last().unwrap().clone(); Module::::change_members_sorted(&dids, &[], &dids); let origin = T::CommitteeOrigin::successful_origin(); - let call = Call::::set_release_coordinator(coordinator); + let call = Call::::set_release_coordinator { id: coordinator }; }: { call.dispatch_bypass_filter(origin).unwrap(); } @@ -168,7 +168,7 @@ benchmarks_instance! { set_expires_after { let maybe_block = MaybeBlock::Some(1u32.into()); let origin = T::CommitteeOrigin::successful_origin(); - let call = Call::::set_expires_after(maybe_block); + let call = Call::::set_expires_after { expiry: maybe_block }; }: { call.dispatch_bypass_filter(origin).unwrap(); } diff --git a/pallets/committee/src/lib.rs b/pallets/committee/src/lib.rs index d299548ac7..a868c3180a 100644 --- a/pallets/committee/src/lib.rs +++ b/pallets/committee/src/lib.rs @@ -78,6 +78,7 @@ use polymesh_common_utilities::{ Context, MaybeBlock, SystematicIssuers, GC_DID, }; use polymesh_primitives::{storage_migration_ver, IdentityId}; +use scale_info::TypeInfo; use sp_runtime::traits::Hash; use sp_std::{prelude::*, vec}; @@ -122,7 +123,7 @@ pub trait Config: } /// Origin for the committee module. -#[derive(PartialEq, Eq, Clone, Debug, Encode, Decode)] +#[derive(PartialEq, Eq, Clone, Debug, Encode, Decode, TypeInfo)] pub enum RawOrigin { /// It has been condoned by M of N members of this committee /// with `M` and `N` set dynamically in `set_vote_threshold`. @@ -132,7 +133,7 @@ pub enum RawOrigin { /// Origin for the committee module. pub type Origin = RawOrigin<::AccountId, I>; -#[derive(PartialEq, Eq, Clone, Encode, Decode, Debug)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo, Debug)] /// Info for keeping track of a motion being voted on. pub struct PolymeshVotes { /// The proposal's unique index. @@ -524,7 +525,7 @@ impl, I: Instance> Module { expiry: MaybeBlock, ) -> Result<(), Error> { match expiry { - MaybeBlock::Some(e) if e <= frame_system::Module::::block_number() => { + MaybeBlock::Some(e) if e <= frame_system::Pallet::::block_number() => { Self::clear_proposal(proposal); >::remove(proposal); Err(Error::::ProposalExpired) @@ -570,7 +571,7 @@ impl, I: Instance> Module { let index = >::mutate(|i| mem::replace(i, *i + 1)); >::append(proposal_hash); >::insert(proposal_hash, proposal); - let now = frame_system::Module::::block_number(); + let now = frame_system::Pallet::::block_number(); let votes = PolymeshVotes { index, ayes: vec![did], diff --git a/pallets/common/Cargo.toml b/pallets/common/Cargo.toml index a272a995e4..687bca2bcc 100644 --- a/pallets/common/Cargo.toml +++ b/pallets/common/Cargo.toml @@ -14,25 +14,26 @@ serde_derive = { version = "1.0.112", optional = true, default-features = false} # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -frame-support = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -pallet-session = { version = "3.0.0", default-features = false } -#pallet-contracts = { version = "3.0.0", default-features = false } -pallet-timestamp = { version = "3.0.0", default-features = false } -sp-api = { version = "3.0.0", default-features = false } -sp-arithmetic = { version = "3.0.0", default-features = false } -sp-core = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +pallet-session = { version = "4.0.0-dev", default-features = false } +#pallet-contracts = { version = "4.0.0-dev", default-features = false } +pallet-timestamp = { version = "4.0.0-dev", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-api = { version = "4.0.0-dev", default-features = false } +sp-arithmetic = { version = "4.0.0-dev", default-features = false } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } # Benchmarks -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } schnorrkel = { version = "0.10.1", default-features = false, optional = true } [dev-dependencies] lazy_static = { version = "1.4.0", default-features = false } -substrate-test-runtime-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0" } +substrate-test-runtime-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } [features] default = ["std", "equalize"] diff --git a/pallets/common/src/constants.rs b/pallets/common/src/constants.rs index ccbcd3304d..daa6b705c7 100644 --- a/pallets/common/src/constants.rs +++ b/pallets/common/src/constants.rs @@ -1,4 +1,5 @@ -use sp_runtime::ModuleId; +use frame_support::PalletId; + /// Money matters. pub mod currency { use polymesh_primitives::Balance; @@ -84,14 +85,14 @@ pub const TRANSFER_MANAGER_FAILURE: u8 = 0xac; pub const PIP_MAX_REPORTING_SIZE: usize = 1024; /// Module ids, used for deriving sovereign account IDs for modules. -pub const TREASURY_MODULE_ID: ModuleId = ModuleId(*b"pm/trsry"); -pub const BRR_MODULE_ID: ModuleId = ModuleId(*b"pm/blrwr"); -pub const GC_MODULE_ID: ModuleId = ModuleId(*b"pm/govcm"); -pub const CDD_MODULE_ID: ModuleId = ModuleId(*b"pm/cusdd"); -pub const SETTLEMENT_MODULE_ID: ModuleId = ModuleId(*b"pm/setmn"); -pub const CLASSIC_MIGRATION_MODULE_ID: ModuleId = ModuleId(*b"pm/ehmig"); -pub const FIAT_TICKERS_RESERVATION_MODULE_ID: ModuleId = ModuleId(*b"pm/ftres"); -pub const REWARDS_MODULE_ID: ModuleId = ModuleId(*b"pm/rewrd"); +pub const TREASURY_PALLET_ID: PalletId = PalletId(*b"pm/trsry"); +pub const BRR_PALLET_ID: PalletId = PalletId(*b"pm/blrwr"); +pub const GC_PALLET_ID: PalletId = PalletId(*b"pm/govcm"); +pub const CDD_PALLET_ID: PalletId = PalletId(*b"pm/cusdd"); +pub const SETTLEMENT_PALLET_ID: PalletId = PalletId(*b"pm/setmn"); +pub const CLASSIC_MIGRATION_PALLET_ID: PalletId = PalletId(*b"pm/ehmig"); +pub const FIAT_TICKERS_RESERVATION_PALLET_ID: PalletId = PalletId(*b"pm/ftres"); +pub const REWARDS_PALLET_ID: PalletId = PalletId(*b"pm/rewrd"); /// Base module constants pub const ENSURED_MAX_LEN: u32 = 2048; diff --git a/pallets/common/src/lib.rs b/pallets/common/src/lib.rs index b7d1da7b48..a56381081c 100644 --- a/pallets/common/src/lib.rs +++ b/pallets/common/src/lib.rs @@ -14,7 +14,6 @@ // along with this program. If not, see . #![cfg_attr(not(feature = "std"), no_std)] -#![feature(bool_to_option)] pub mod constants; @@ -37,10 +36,12 @@ pub mod benchs; use core::ops::Add; use frame_support::codec::{Decode, Encode}; +use frame_support::PalletId; use polymesh_primitives::IdentityId; +use scale_info::TypeInfo; #[cfg(feature = "std")] use serde::{Deserialize, Serialize}; -use sp_runtime::{DispatchResult, ModuleId}; +use sp_runtime::DispatchResult; /// It defines the valid issuers for Systematic Claims. /// @@ -116,18 +117,18 @@ impl SystematicIssuers { IdentityId(*self.as_bytes()) } - pub const fn as_module_id(self) -> ModuleId { + pub const fn as_pallet_id(self) -> PalletId { match self { - SystematicIssuers::Committee => constants::GC_MODULE_ID, - SystematicIssuers::CDDProvider => constants::CDD_MODULE_ID, - SystematicIssuers::Treasury => constants::TREASURY_MODULE_ID, - SystematicIssuers::BlockRewardReserve => constants::BRR_MODULE_ID, - SystematicIssuers::Settlement => constants::SETTLEMENT_MODULE_ID, - SystematicIssuers::ClassicMigration => constants::CLASSIC_MIGRATION_MODULE_ID, + SystematicIssuers::Committee => constants::GC_PALLET_ID, + SystematicIssuers::CDDProvider => constants::CDD_PALLET_ID, + SystematicIssuers::Treasury => constants::TREASURY_PALLET_ID, + SystematicIssuers::BlockRewardReserve => constants::BRR_PALLET_ID, + SystematicIssuers::Settlement => constants::SETTLEMENT_PALLET_ID, + SystematicIssuers::ClassicMigration => constants::CLASSIC_MIGRATION_PALLET_ID, SystematicIssuers::FiatTickersReservation => { - constants::FIAT_TICKERS_RESERVATION_MODULE_ID + constants::FIAT_TICKERS_RESERVATION_PALLET_ID } - SystematicIssuers::Rewards => constants::REWARDS_MODULE_ID, + SystematicIssuers::Rewards => constants::REWARDS_PALLET_ID, } } } @@ -157,7 +158,7 @@ pub fn with_each_transaction( } /// Either a block number, or nothing. -#[derive(Copy, Clone, PartialEq, Eq, Encode, Decode, Debug)] +#[derive(Copy, Clone, PartialEq, Eq, Encode, Decode, TypeInfo, Debug)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub enum MaybeBlock { Some(BlockNumber), diff --git a/pallets/common/src/protocol_fee.rs b/pallets/common/src/protocol_fee.rs index 2b0edf5c6a..5d1fca70e2 100644 --- a/pallets/common/src/protocol_fee.rs +++ b/pallets/common/src/protocol_fee.rs @@ -16,12 +16,14 @@ use codec::{Decode, Encode}; use frame_support::dispatch::DispatchResult; use polymesh_primitives::Balance; +use scale_info::TypeInfo; use sp_runtime::Perbill; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; /// Protocol fee operations. -#[derive(Decode, Encode, Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Decode, Encode, TypeInfo)] +#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub enum ProtocolOp { AssetRegisterTicker, diff --git a/pallets/common/src/traits/balances.rs b/pallets/common/src/traits/balances.rs index dec842947d..39c7487a0a 100644 --- a/pallets/common/src/traits/balances.rs +++ b/pallets/common/src/traits/balances.rs @@ -26,15 +26,17 @@ use frame_support::{ }; use polymesh_primitives::{Balance, IdentityId}; use polymesh_primitives_derive::SliceU8StrongTyped; +use scale_info::TypeInfo; use sp_runtime::RuntimeDebug; use sp_std::ops::BitOr; -#[derive(Encode, Default, Decode, Clone, PartialEq, Eq, PartialOrd, Ord, SliceU8StrongTyped)] +#[derive(Encode, Decode, TypeInfo, SliceU8StrongTyped)] +#[derive(Default, Clone, PartialEq, Eq, PartialOrd, Ord)] pub struct Memo(pub [u8; 32]); // POLYMESH-NOTE: Make `AccountData` public to access it from the outside module. /// All balance information for an account. -#[derive(Encode, Decode, Clone, PartialEq, Eq, Default, RuntimeDebug)] +#[derive(Encode, Decode, TypeInfo, Clone, PartialEq, Eq, Default, RuntimeDebug)] pub struct AccountData { /// Non-reserved part of the balance. There may still be restrictions on this, but it is the /// total pool what may in principle be transferred, reserved and used for tipping. @@ -78,7 +80,7 @@ impl AccountData { } /// Simplified reasons for withdrawing balance. -#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug)] +#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug, TypeInfo)] pub enum Reasons { /// Paying system transaction fees. Fee = 0, diff --git a/pallets/common/src/traits/checkpoint.rs b/pallets/common/src/traits/checkpoint.rs index 3a9bb28b7e..5e4f478a0b 100644 --- a/pallets/common/src/traits/checkpoint.rs +++ b/pallets/common/src/traits/checkpoint.rs @@ -3,18 +3,20 @@ use frame_support::decl_event; use frame_support::weights::Weight; use polymesh_primitives::calendar::{CheckpointId, CheckpointSchedule}; use polymesh_primitives::{impl_checked_inc, Balance, EventDid, IdentityId, Moment, Ticker}; +use scale_info::TypeInfo; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; /// ID of a `StoredSchedule`. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Encode, Decode, Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Default)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Default)] pub struct ScheduleId(pub u64); impl_checked_inc!(ScheduleId); /// One or more scheduled checkpoints in the future. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Encode, Decode, Copy, Clone, Debug, PartialEq, Eq)] +#[derive(Encode, Decode, TypeInfo, Copy, Clone, Debug, PartialEq, Eq)] pub struct StoredSchedule { /// A series of checkpoints in the future defined by the schedule. pub schedule: CheckpointSchedule, diff --git a/pallets/common/src/traits/group.rs b/pallets/common/src/traits/group.rs index 43964c73b8..4bc67c4052 100644 --- a/pallets/common/src/traits/group.rs +++ b/pallets/common/src/traits/group.rs @@ -24,6 +24,7 @@ use frame_support::{ traits::{ChangeMembers, EnsureOrigin, InitializeMembers}, weights::Weight, }; +use scale_info::TypeInfo; use sp_std::{ cmp::{Eq, Ordering, PartialEq}, vec::Vec, @@ -32,7 +33,7 @@ use sp_std::{ /// The number of group members. pub type MemberCount = u32; -#[derive(Encode, Decode, Default, Clone, PartialEq, Eq, Debug)] +#[derive(Encode, Decode, TypeInfo, Default, Clone, PartialEq, Eq, Debug)] pub struct InactiveMember { pub id: IdentityId, pub deactivated_at: Moment, diff --git a/pallets/common/src/traits/identity.rs b/pallets/common/src/traits/identity.rs index d6f609b4f9..a29a38457d 100644 --- a/pallets/common/src/traits/identity.rs +++ b/pallets/common/src/traits/identity.rs @@ -36,6 +36,7 @@ use polymesh_primitives::{ secondary_key::api::{LegacyPermissions, SecondaryKey}, AuthorizationData, IdentityClaim, IdentityId, InvestorUid, Permissions, Signatory, Ticker, }; +use scale_info::TypeInfo; use sp_core::H512; use sp_runtime::traits::{Dispatchable, IdentifyAccount, Member, Verify}; use sp_std::vec::Vec; @@ -67,7 +68,7 @@ pub struct TargetIdAuthorization { /// # TODO /// - Replace `H512` type by a template type which represents explicitly the relation with /// `TargetIdAuthorization`. -#[derive(codec::Encode, codec::Decode, Clone, PartialEq, Eq, Debug)] +#[derive(codec::Encode, codec::Decode, TypeInfo, Clone, PartialEq, Eq, Debug)] pub struct SecondaryKeyWithAuth { /// Secondary key to be added. pub secondary_key: SecondaryKey, @@ -169,7 +170,7 @@ pub trait Config: CommonConfig + pallet_timestamp::Config + crate::traits::base: type CddHandler: CddAndFeeDetails::Call>; type Public: IdentifyAccount; - type OffChainSignature: Verify + Member + Decode + Encode; + type OffChainSignature: Verify + Member + Decode + Encode + TypeInfo; type ProtocolFee: ChargeProtocolFee; /// Origin for Governance Committee voting majority origin. diff --git a/pallets/common/src/traits/imbalances.rs b/pallets/common/src/traits/imbalances.rs index 56463f7389..e3c4e2af07 100644 --- a/pallets/common/src/traits/imbalances.rs +++ b/pallets/common/src/traits/imbalances.rs @@ -15,7 +15,7 @@ use crate::traits::CommonConfig; use core::marker::PhantomData; -use frame_support::traits::{Imbalance, TryDrop}; +use frame_support::traits::{Imbalance, SameOrOther, TryDrop}; use polymesh_primitives::traits::BlockRewardsReserveCurrency; use polymesh_primitives::Balance; use sp_arithmetic::traits::Zero; @@ -29,6 +29,12 @@ use sp_std::{mem, result}; #[must_use] pub struct PositiveImbalance(Balance, PhantomData); +impl Default for PositiveImbalance { + fn default() -> Self { + Self::new(<_>::default()) + } +} + impl PositiveImbalance { /// Create a new positive imbalance from a balance. pub fn new(amount: Balance) -> Self { @@ -77,14 +83,16 @@ impl Imbalance for PositiveImbalance { mem::forget(other); } - fn offset(self, other: Self::Opposite) -> result::Result { + fn offset(self, other: Self::Opposite) -> SameOrOther { let (a, b) = (self.0, other.0); mem::forget((self, other)); - if a >= b { - Ok(Self::new(a - b)) + if a > b { + SameOrOther::Same(Self::new(a - b)) + } else if b > a { + SameOrOther::Other(NegativeImbalance::new(b - a)) } else { - Err(NegativeImbalance::new(b - a)) + SameOrOther::None } } @@ -105,6 +113,12 @@ impl Drop for PositiveImbalance { #[must_use] pub struct NegativeImbalance(Balance, PhantomData); +impl Default for NegativeImbalance { + fn default() -> Self { + Self::new(<_>::default()) + } +} + impl NegativeImbalance { /// Create a new negative imbalance from a balance. pub fn new(amount: Balance) -> Self { @@ -153,14 +167,16 @@ impl Imbalance for NegativeImbalance { mem::forget(other); } - fn offset(self, other: Self::Opposite) -> result::Result { + fn offset(self, other: Self::Opposite) -> SameOrOther { let (a, b) = (self.0, other.0); mem::forget((self, other)); - if a >= b { - Ok(Self::new(a - b)) + if a > b { + SameOrOther::Same(Self::new(a - b)) + } else if b > a { + SameOrOther::Other(PositiveImbalance::new(b - a)) } else { - Err(PositiveImbalance::new(b - a)) + SameOrOther::None } } diff --git a/pallets/compliance-manager/Cargo.toml b/pallets/compliance-manager/Cargo.toml index a4b5a608d4..0bd2a603b6 100644 --- a/pallets/compliance-manager/Cargo.toml +++ b/pallets/compliance-manager/Cargo.toml @@ -25,18 +25,19 @@ either = { version = "1.6.1", default-features = false } # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -sp-version = { version = "3.0.0", default-features = false } -sp-api = { version = "3.0.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-version = { version = "4.0.0-dev", default-features = false } +sp-api = { version = "4.0.0-dev", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } +frame-system = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } -pallet-timestamp = { version = "3.0.0", default-features = false } +pallet-timestamp = { version = "4.0.0-dev", default-features = false } [features] diff --git a/pallets/contracts/Cargo.toml b/pallets/contracts/Cargo.toml index 5d43208a08..138098abf4 100644 --- a/pallets/contracts/Cargo.toml +++ b/pallets/contracts/Cargo.toml @@ -9,13 +9,13 @@ edition = "2018" # Substrate specific serde = { version = "1.0.104", default-features = false } codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -frame-system = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } -pallet-contracts = { version = "3.0.0", default-features = false } -sp-core = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +pallet-contracts = { version = "4.0.0-dev", default-features = false } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } wat = { version = "1.0", optional = true, default-features = false } parity-wasm = { version = "0.41.0", default-features = false } @@ -27,7 +27,7 @@ polymesh-common-utilities = { path = "../common", default-features = false } pallet-protocol-fee = { path = "../protocol-fee", default-features = false } # Only in STD env -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } [features] default = ["std"] diff --git a/pallets/corporate-actions/Cargo.toml b/pallets/corporate-actions/Cargo.toml index db48d620e5..23ef8c1109 100644 --- a/pallets/corporate-actions/Cargo.toml +++ b/pallets/corporate-actions/Cargo.toml @@ -24,18 +24,19 @@ serde_derive = { version = "1.0.104", optional = true, default-features = false # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-arithmetic = { version = "3.0.0", default-features = false } -sp-core = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -sp-version = { version = "3.0.0", default-features = false } -sp-api = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } -pallet-timestamp = { version = "3.0.0", default-features = false } -pallet-session = { version = "3.0.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-arithmetic = { version = "4.0.0-dev", default-features = false } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-version = { version = "4.0.0-dev", default-features = false } +sp-api = { version = "4.0.0-dev", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } +pallet-timestamp = { version = "4.0.0-dev", default-features = false } +pallet-session = { version = "4.0.0-dev", default-features = false } pallet-compliance-manager = { path = "../compliance-manager", default-features = false, optional = true } diff --git a/pallets/corporate-actions/src/ballot/mod.rs b/pallets/corporate-actions/src/ballot/mod.rs index 835aad5a7c..42784f525b 100644 --- a/pallets/corporate-actions/src/ballot/mod.rs +++ b/pallets/corporate-actions/src/ballot/mod.rs @@ -95,6 +95,7 @@ use pallet_identity as identity; use polymesh_common_utilities::protocol_fee::{ChargeProtocolFee, ProtocolOp}; use polymesh_primitives::{Balance, EventDid, IdentityId, Moment}; use polymesh_primitives_derive::VecU8StrongTyped; +use scale_info::TypeInfo; use sp_runtime::traits::Zero; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; @@ -107,22 +108,25 @@ type ExternalAgents = pallet_external_agents::Module; /// A wrapper for a motion title. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Clone, PartialEq, Eq, Hash, Default, Debug, Decode, Encode, VecU8StrongTyped)] +#[derive(Encode, Decode, TypeInfo, VecU8StrongTyped)] +#[derive(Clone, PartialEq, Eq, Hash, Default, Debug)] pub struct MotionTitle(pub Vec); /// A wrapper for a motion info link. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Clone, PartialEq, Eq, Hash, Default, Debug, Decode, Encode, VecU8StrongTyped)] +#[derive(Encode, Decode, TypeInfo, VecU8StrongTyped)] +#[derive(Clone, PartialEq, Eq, Hash, Default, Debug)] pub struct MotionInfoLink(pub Vec); /// A wrapper for a choice's title. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Clone, PartialEq, Eq, Hash, Default, Debug, Decode, Encode, VecU8StrongTyped)] +#[derive(Encode, Decode, TypeInfo, VecU8StrongTyped)] +#[derive(Clone, PartialEq, Eq, Hash, Default, Debug)] pub struct ChoiceTitle(pub Vec); /// Details about motions #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Clone, PartialEq, Eq, Default, Debug, Encode, Decode)] +#[derive(Clone, PartialEq, Eq, Default, Debug, Encode, Decode, TypeInfo)] pub struct Motion { /// Title of the motion pub title: MotionTitle, @@ -137,7 +141,8 @@ pub struct Motion { /// A wrapper for a ballot's title. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Clone, PartialEq, Eq, Hash, Debug, Default, Decode, Encode, VecU8StrongTyped)] +#[derive(Encode, Decode, TypeInfo, VecU8StrongTyped)] +#[derive(Clone, PartialEq, Eq, Hash, Debug, Default)] pub struct BallotTitle(pub Vec); /// Metadata about a ballot. @@ -148,7 +153,7 @@ pub struct BallotTitle(pub Vec); /// the needed numbers aforementioned are cached away, /// and the metadata is not read on-chain again. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Clone, PartialEq, Eq, Debug, Encode, Decode, Default)] +#[derive(Clone, PartialEq, Eq, Debug, Encode, TypeInfo, Decode, Default)] pub struct BallotMeta { /// The ballot's title. pub title: BallotTitle, @@ -167,7 +172,7 @@ impl BallotMeta { /// Timestamp range details about vote start / end. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Copy, Clone, PartialEq, Eq, Default, Debug, Encode, Decode)] +#[derive(Copy, Clone, PartialEq, Eq, Default, Debug, Encode, Decode, TypeInfo)] pub struct BallotTimeRange { /// Timestamp at which voting starts. pub start: Moment, @@ -178,7 +183,7 @@ pub struct BallotTimeRange { /// A vote cast on some choice in some motion in a ballot. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Copy, Clone, PartialEq, Eq, Default, Debug, Encode, Decode)] +#[derive(Copy, Clone, PartialEq, Eq, Default, Debug, Encode, Decode, TypeInfo)] pub struct BallotVote { /// The weight / voting power assigned to this vote. pub power: Balance, diff --git a/pallets/corporate-actions/src/distribution/mod.rs b/pallets/corporate-actions/src/distribution/mod.rs index 920926b065..9296f4fbc2 100644 --- a/pallets/corporate-actions/src/distribution/mod.rs +++ b/pallets/corporate-actions/src/distribution/mod.rs @@ -86,6 +86,7 @@ use polymesh_primitives::{ storage_migration_ver, Balance, EventDid, IdentityId, Moment, PortfolioId, PortfolioNumber, Ticker, }; +use scale_info::TypeInfo; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; use sp_std::prelude::*; @@ -104,7 +105,7 @@ pub const PER_SHARE_PRECISION: Balance = 1_000_000; /// /// All information contained is used by on-chain logic. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Copy, Clone, PartialEq, Eq, Debug, Encode, Decode)] +#[derive(Copy, Clone, PartialEq, Eq, Debug, Encode, Decode, TypeInfo)] pub struct Distribution { /// The portfolio to distribute from. pub from: PortfolioId, diff --git a/pallets/corporate-actions/src/lib.rs b/pallets/corporate-actions/src/lib.rs index b771facd89..69205f9dba 100644 --- a/pallets/corporate-actions/src/lib.rs +++ b/pallets/corporate-actions/src/lib.rs @@ -115,6 +115,7 @@ use polymesh_primitives::{ IdentityId, Moment, Ticker, }; use polymesh_primitives_derive::VecU8StrongTyped; +use scale_info::TypeInfo; use sp_arithmetic::Permill; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; @@ -125,7 +126,7 @@ pub type Tax = Permill; /// How should `identities` in `TargetIdentities` be used? #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Clone, Copy, PartialEq, Eq, Encode, Decode, Debug)] +#[derive(Clone, Copy, PartialEq, Eq, Encode, Decode, TypeInfo, Debug)] pub enum TargetTreatment { /// Only those identities should be included. Include, @@ -152,7 +153,7 @@ impl TargetTreatment { /// A description of which identities that a CA will apply to. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Clone, PartialEq, Eq, Encode, Decode, Default, Debug)] +#[derive(Clone, PartialEq, Eq, Encode, Decode, TypeInfo, Default, Debug)] pub struct TargetIdentities { /// The specified identities either relevant or irrelevant, depending on `treatment`, for CAs. pub identities: Vec, @@ -178,7 +179,7 @@ impl TargetIdentities { /// The kind of a `CorporateAction`. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Copy, Clone, PartialEq, Eq, Encode, Decode, Debug)] +#[derive(Copy, Clone, PartialEq, Eq, Encode, Decode, TypeInfo, Debug)] pub enum CAKind { /// A predictable benefit. /// These are known at the time the asset is created. @@ -210,12 +211,13 @@ impl CAKind { } #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Clone, PartialEq, Eq, Encode, Decode, Default, Debug, VecU8StrongTyped)] +#[derive(Encode, Decode, TypeInfo, VecU8StrongTyped)] +#[derive(Clone, PartialEq, Eq, Default, Debug)] pub struct CADetails(pub Vec); /// Defines how to identify a CA's associated checkpoint, if any. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Copy, Clone, PartialEq, Eq, Encode, Decode, Debug)] +#[derive(Copy, Clone, PartialEq, Eq, Encode, Decode, TypeInfo, Debug)] pub enum CACheckpoint { /// CA uses a record date scheduled to occur in the future. /// Checkpoint ID will be taken after the record date. @@ -231,7 +233,7 @@ pub enum CACheckpoint { /// Defines the record date, at which impact should be calculated, /// along with checkpoint info to assess the impact at the date. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Copy, Clone, PartialEq, Eq, Encode, Decode, Debug)] +#[derive(Copy, Clone, PartialEq, Eq, Encode, Decode, TypeInfo, Debug)] pub struct RecordDate { /// When the impact should be calculated, or already has. pub date: Moment, @@ -241,7 +243,7 @@ pub struct RecordDate { /// Input specification of the record date used to derive impact for a CA. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Copy, Clone, PartialEq, Eq, Encode, Decode, Debug)] +#[derive(Copy, Clone, PartialEq, Eq, Encode, Decode, TypeInfo, Debug)] pub enum RecordDateSpec { /// Record date is in the future. /// A checkpoint should be created. @@ -255,7 +257,7 @@ pub enum RecordDateSpec { /// Details of a generic CA. /// The `(Ticker, ID)` denoting a unique identifier for the CA is stored as a key outside. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Clone, PartialEq, Eq, Encode, Decode, Debug)] +#[derive(Clone, PartialEq, Eq, Encode, Decode, TypeInfo, Debug)] pub struct CorporateAction { /// The kind of CA that this is. pub kind: CAKind, @@ -287,13 +289,13 @@ impl CorporateAction { /// By *local*, we mean that the same number might be used for a different `Ticker` /// to uniquely identify a different CA. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Copy, Clone, PartialEq, Eq, Encode, Decode, Default, Debug)] +#[derive(Copy, Clone, PartialEq, Eq, Encode, Decode, TypeInfo, Default, Debug)] pub struct LocalCAId(pub u32); impl_checked_inc!(LocalCAId); /// A unique global identifier for a CA. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Copy, Clone, PartialEq, Eq, Encode, Decode, Debug)] +#[derive(Copy, Clone, PartialEq, Eq, Encode, Decode, TypeInfo, Debug)] pub struct CAId { /// The `Ticker` component used to disambiguate the `local` one. pub ticker: Ticker, diff --git a/pallets/external-agents/Cargo.toml b/pallets/external-agents/Cargo.toml index 5c87b689bd..aec9fb0e3f 100644 --- a/pallets/external-agents/Cargo.toml +++ b/pallets/external-agents/Cargo.toml @@ -21,12 +21,13 @@ serde_derive = { version = "1.0.104", optional = true, default-features = false # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -frame-system = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-std = { version = "4.0.0-dev", default-features = false } # Only in STD -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } [features] default = ["std"] diff --git a/pallets/group/Cargo.toml b/pallets/group/Cargo.toml index 9c7bcc5df2..1d854b2f61 100644 --- a/pallets/group/Cargo.toml +++ b/pallets/group/Cargo.toml @@ -15,19 +15,20 @@ serde_derive = { version = "1.0.104", optional = true, default-features = false # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -sp-version = { version = "3.0.0", default-features = false } -sp-api = { version = "3.0.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-version = { version = "4.0.0-dev", default-features = false } +sp-api = { version = "4.0.0-dev", default-features = false } -pallet-timestamp = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } +pallet-timestamp = { version = "4.0.0-dev", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } # Only for benchmarking -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } [features] equalize = [] diff --git a/pallets/group/rpc/Cargo.toml b/pallets/group/rpc/Cargo.toml index dc8fad9d99..a8074d9ed9 100644 --- a/pallets/group/rpc/Cargo.toml +++ b/pallets/group/rpc/Cargo.toml @@ -15,16 +15,16 @@ pallet-group-rpc-runtime-api = { version = "2.0.0", path = "./runtime-api" } serde = { version = "1.0.104", features = ["derive"] } # Json RPC -jsonrpc-core = "15.0.0" -jsonrpc-core-client = "15.0.0" -jsonrpc-derive = "15.0.0" +jsonrpc-core = { version = "18.0.0", features = ["arbitrary_precision"] } +jsonrpc-core-client = { version = "18.0.0", features = ["arbitrary_precision"] } +jsonrpc-derive = "18.0.0" # Substrate codec = { package = "parity-scale-codec", version = "2.0.0" } -sp-runtime = { version = "3.0.0", default-features = false } -sp-blockchain = { version = "3.0.0", default_features = false} -sp-std = {version = "3.0.0", default_features = false } -sp-api = {version = "3.0.0", default_features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-blockchain = { version = "4.0.0-dev", default_features = false} +sp-std = {version = "4.0.0-dev", default_features = false } +sp-api = {version = "4.0.0-dev", default_features = false } [dev-dependencies] -substrate-test-runtime-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0"} +substrate-test-runtime-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop"} diff --git a/pallets/group/rpc/runtime-api/Cargo.toml b/pallets/group/rpc/runtime-api/Cargo.toml index f2883206e6..8602afa83f 100644 --- a/pallets/group/rpc/runtime-api/Cargo.toml +++ b/pallets/group/rpc/runtime-api/Cargo.toml @@ -14,9 +14,9 @@ serde = { version = "1.0.104", optional = true, features = ["derive"] } # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-api = { version = "3.0.0", default_features = false } -sp-std = { version = "3.0.0", default_features = false } -sp-runtime = { version = "3.0.0", default_features = false } +sp-api = { version = "4.0.0-dev", default_features = false } +sp-std = { version = "4.0.0-dev", default_features = false } +sp-runtime = { version = "4.0.0-dev", default_features = false } [dev-dependencies] serde_json = "1.0.41" diff --git a/pallets/group/src/lib.rs b/pallets/group/src/lib.rs index 6941139309..10a7292c73 100644 --- a/pallets/group/src/lib.rs +++ b/pallets/group/src/lib.rs @@ -313,7 +313,7 @@ impl, I: Instance> Module { /// Returns the current "active members" and any "valid member" whose revocation time-stamp is /// in the future. pub fn get_valid_members() -> Vec { - let now = >::get(); + let now = >::get(); Self::get_valid_members_at(now) } @@ -379,7 +379,7 @@ impl, I: Instance> GroupTrait for Module { /// Returns inactive members who are not expired yet. #[inline] fn get_inactive_members() -> Vec> { - let now = >::get(); + let now = >::get(); Self::inactive_members() .into_iter() .filter(|member| !Self::is_member_expired(member, now)) @@ -402,7 +402,7 @@ impl, I: Instance> GroupTrait for Module { Self::base_remove_active_member(who)?; let current_did = Context::current_identity::>().unwrap_or(GC_DID); - let deactivated_at = at.unwrap_or_else(>::get); + let deactivated_at = at.unwrap_or_else(>::get); let inactive_member = InactiveMember { id: who, expiry, @@ -411,7 +411,7 @@ impl, I: Instance> GroupTrait for Module { >::mutate(|members| { // Remove expired members. - let now = >::get(); + let now = >::get(); members.retain(|m| { if !Self::is_member_expired(m, now) { true diff --git a/pallets/identity/Cargo.toml b/pallets/identity/Cargo.toml index 0c37b61d3e..cba4b65891 100644 --- a/pallets/identity/Cargo.toml +++ b/pallets/identity/Cargo.toml @@ -12,29 +12,31 @@ polymesh-common-utilities = { path = "../common", default-features = false } polymesh-primitives = { path = "../../primitives", default-features = false } # Others +log = "0.4.8" serde = { version = "1.0.104", default-features = false } serde_derive = { version = "1.0.104", optional = true, default-features = false } either = { version = "1.6.1", default-features = false } # Cryptography -confidential_identity = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, tag = "confidential-identity-v2.0.0" } -confidential_identity_v1 = { package = "confidential_identity", git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, tag = "confidential-identity-v1.1.3" } +confidential_identity = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, branch = "confidential-identity-v2" } +confidential_identity_v1 = { package = "confidential_identity", git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, branch = "confidential-identity-v1" } schnorrkel = { version = "0.10.1", default-features = false, optional = true } # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -frame-support = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -pallet-timestamp = { version = "3.0.0", default-features = false } -sp-api = { version = "3.0.0", default-features = false } -sp-core = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-version = { version = "3.0.0", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +frame-system = { version = "4.0.0-dev", default-features = false } +pallet-timestamp = { version = "4.0.0-dev", default-features = false } +sp-api = { version = "4.0.0-dev", default-features = false } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-version = { version = "4.0.0-dev", default-features = false } # Only Benchmarking -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } hex = { version = "^0.4.0", default-features = false, features = ["alloc"], optional = true } [features] diff --git a/pallets/identity/src/auth.rs b/pallets/identity/src/auth.rs index 3a58013406..4b752532d9 100644 --- a/pallets/identity/src/auth.rs +++ b/pallets/identity/src/auth.rs @@ -139,7 +139,7 @@ impl Module { allow_expired: bool, auth_type: Option, ) -> Vec> { - let now = >::get(); + let now = >::get(); let auths = >::iter_prefix_values(signatory) .filter(|auth| allow_expired || auth.expiry.filter(|&e| e < now).is_none()); if let Some(auth_type) = auth_type { @@ -158,7 +158,7 @@ impl Module { ) -> Option> { Self::authorizations(target, *auth_id).filter(|auth| { auth.expiry - .filter(|&expiry| >::get() > expiry) + .filter(|&expiry| >::get() > expiry) .is_none() }) } @@ -182,7 +182,7 @@ impl Module { // Ensure that `auth.expiry`, if provided, is in the future. if let Some(expiry) = auth.expiry { - let now = >::get(); + let now = >::get(); ensure!(expiry > now, AuthorizationError::Expired); } diff --git a/pallets/identity/src/claims.rs b/pallets/identity/src/claims.rs index fd0c81af3d..ab429d37e2 100644 --- a/pallets/identity/src/claims.rs +++ b/pallets/identity/src/claims.rs @@ -65,7 +65,7 @@ impl Module { issuer: IdentityId, scope: Option, ) -> Option { - let now = >::get(); + let now = >::get(); Self::fetch_base_claim_with_issuer(id, claim_type, issuer, scope) .into_iter() @@ -112,7 +112,7 @@ impl Module { leeway: T::Moment, filter_cdd_id: Option, ) -> impl Iterator { - let exp_with_leeway = >::get() + let exp_with_leeway = >::get() .checked_add(&leeway) .unwrap_or_default(); @@ -217,7 +217,7 @@ impl Module { expiry: Option, ) { let claim_type = claim.claim_type(); - let last_update_date = >::get().saturated_into::(); + let last_update_date = >::get().saturated_into::(); let issuance_date = Self::fetch_claim(target, claim_type, issuer, scope.clone()) .map_or(last_update_date, |id_claim| id_claim.issuance_date); @@ -500,7 +500,7 @@ impl Module { ) -> DispatchResult { ensure_root(origin)?; - let now = >::get(); + let now = >::get(); ensure!( T::CddServiceProviders::get_valid_members_at(now).contains(&cdd), Error::::UnAuthorizedCddProvider diff --git a/pallets/identity/src/keys.rs b/pallets/identity/src/keys.rs index b3d47b37e4..9c021a25e1 100644 --- a/pallets/identity/src/keys.rs +++ b/pallets/identity/src/keys.rs @@ -22,7 +22,7 @@ use codec::{Decode, Encode as _}; use core::{iter, mem}; use frame_support::dispatch::DispatchResult; use frame_support::traits::{Currency as _, Get as _}; -use frame_support::{debug, ensure, StorageMap as _, StorageValue as _}; +use frame_support::{ensure, StorageMap as _, StorageValue as _}; use frame_system::ensure_signed; use pallet_base::{ensure_custom_length_ok, ensure_custom_string_limited}; use polymesh_common_utilities::constants::did::USER; @@ -54,7 +54,7 @@ const MAX_NAME_LEN: usize = 50; // Limit the maximum memory/cpu cost of an identities `DidRecord`. const MAX_DIDRECORD_SIZE: usize = 1_000_000; -type System = frame_system::Module; +type System = frame_system::Pallet; impl Module { /// Does the identity given by `did` exist? @@ -409,7 +409,7 @@ impl Module { let (_, did, _) = Self::ensure_primary_key(origin)?; // 0. Check expiration - let now = >::get(); + let now = >::get(); ensure!(now < expires_at, Error::::AuthorizationExpired); let authorization = TargetIdAuthorization { target_id: did, @@ -679,9 +679,9 @@ impl Module { where T::AccountId: core::fmt::Display, { - let acc = issuer.as_module_id().into_account(); + let acc = issuer.as_pallet_id().into_account(); let id = issuer.as_id(); - debug::info!( + log::info!( "Register Systematic id {} with account {} as {}", issuer, acc, diff --git a/pallets/identity/src/lib.rs b/pallets/identity/src/lib.rs index 67574725e7..a7c764054a 100644 --- a/pallets/identity/src/lib.rs +++ b/pallets/identity/src/lib.rs @@ -118,7 +118,7 @@ use polymesh_common_utilities::{ traits::identity::{ AuthorizationNonce, Config, IdentityFnTrait, RawEvent, SecondaryKeyWithAuth, }, - SystematicIssuers, GC_DID, SYSTEMATIC_ISSUERS, + SystematicIssuers, GC_DID, }; use polymesh_primitives::{ investor_zkproof_data::v1::InvestorZKProofData, secondary_key::api::LegacyPermissions, @@ -127,7 +127,7 @@ use polymesh_primitives::{ Signatory, Ticker, }; use sp_runtime::traits::Hash; -use sp_std::{convert::TryFrom, iter, prelude::*, vec}; +use sp_std::{convert::TryFrom, prelude::*}; pub type Event = polymesh_common_utilities::traits::identity::Event; @@ -197,7 +197,7 @@ decl_storage! { // Secondary keys of identities at genesis. `identities` have to be initialised. config(secondary_keys): Vec<(T::AccountId, IdentityId)>; build(|config: &GenesisConfig| { - SYSTEMATIC_ISSUERS + polymesh_common_utilities::SYSTEMATIC_ISSUERS .iter() .copied() .for_each(>::register_systematic_id); @@ -234,7 +234,7 @@ decl_storage! { >::link_account_key_to_did(secondary_account_id, did); let sk = SecondaryKey::from_account_id(secondary_account_id.clone()); >::mutate(did, |record| { - (*record).add_secondary_keys(iter::once(sk.clone())); + (*record).add_secondary_keys(core::iter::once(sk.clone())); }); >::deposit_event(RawEvent::SecondaryKeysAdded(did, vec![sk.into()])); } diff --git a/pallets/identity/src/types.rs b/pallets/identity/src/types.rs index abf4b040aa..7e447dfa33 100644 --- a/pallets/identity/src/types.rs +++ b/pallets/identity/src/types.rs @@ -2,6 +2,7 @@ use codec::{Decode, Encode}; use polymesh_primitives::{ClaimType, IdentityId, Permissions, Scope, SecondaryKey}; +use scale_info::TypeInfo; use sp_std::{prelude::*, vec::Vec}; #[cfg(feature = "std")] @@ -58,13 +59,13 @@ pub struct PermissionedCallOriginData { pub secondary_key: Option>, } -#[derive(Encode, Decode, Clone, PartialEq, Eq, Debug, PartialOrd, Ord)] +#[derive(Encode, Decode, TypeInfo, Clone, PartialEq, Eq, Debug, PartialOrd, Ord)] pub struct Claim1stKey { pub target: IdentityId, pub claim_type: ClaimType, } -#[derive(Encode, Decode, Clone, PartialEq, Eq, Debug, PartialOrd, Ord)] +#[derive(Encode, Decode, TypeInfo, Clone, PartialEq, Eq, Debug, PartialOrd, Ord)] pub struct Claim2ndKey { pub issuer: IdentityId, pub scope: Option, diff --git a/pallets/multisig/Cargo.toml b/pallets/multisig/Cargo.toml index 8f97a71fec..933c62ec21 100644 --- a/pallets/multisig/Cargo.toml +++ b/pallets/multisig/Cargo.toml @@ -17,16 +17,17 @@ serde = { version = "1.0.104", default-features = false } # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-runtime = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-core = { version = "3.0.0", default-features = false } -sp-version = { version = "3.0.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-version = { version = "4.0.0-dev", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } +frame-system = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } -pallet-timestamp = { version = "3.0.0", default-features = false } +pallet-timestamp = { version = "4.0.0-dev", default-features = false } [features] equalize = [] diff --git a/pallets/multisig/src/benchmarking.rs b/pallets/multisig/src/benchmarking.rs index 1eff32a1c6..27e5ced03c 100644 --- a/pallets/multisig/src/benchmarking.rs +++ b/pallets/multisig/src/benchmarking.rs @@ -23,7 +23,7 @@ use polymesh_common_utilities::{ pub type MultiSig = crate::Module; pub type Identity = identity::Module; -pub type Timestamp = pallet_timestamp::Module; +pub type Timestamp = pallet_timestamp::Pallet; fn generate_signers>>( signers: &mut Vec>, @@ -134,7 +134,7 @@ fn generate_multisig_and_proposal_for_alice(total_signers, signers_required).unwrap(); let proposal_id = >::ms_tx_done(multisig.clone()); - let proposal = Box::new(frame_system::Call::::remark(vec![]).into()); + let proposal = Box::new(frame_system::Call::::remark { remark: vec![] }.into()); Ok(( alice, multisig.clone(), diff --git a/pallets/multisig/src/lib.rs b/pallets/multisig/src/lib.rs index d898eefc4a..14668e67a4 100644 --- a/pallets/multisig/src/lib.rs +++ b/pallets/multisig/src/lib.rs @@ -105,6 +105,7 @@ use polymesh_common_utilities::{ transaction_payment::CddAndFeeDetails, Context, }; use polymesh_primitives::{extract_auth, AuthorizationData, IdentityId, Permissions, Signatory}; +use scale_info::TypeInfo; use sp_runtime::traits::{Dispatchable, Hash, One}; use sp_std::{convert::TryFrom, prelude::*}; @@ -131,7 +132,7 @@ pub trait Config: frame_system::Config + IdentityConfig { } /// Details of a multisig proposal -#[derive(Encode, Decode, Default, Clone, PartialEq, Eq, Debug)] +#[derive(Encode, Decode, TypeInfo, Default, Clone, PartialEq, Eq, Debug)] pub struct ProposalDetails { /// Number of yes votes pub approvals: u64, @@ -157,7 +158,7 @@ impl ProposalDetails { } } -#[derive(Encode, Decode, Clone, Debug, PartialEq, Eq)] +#[derive(Encode, Decode, TypeInfo, Clone, Debug, PartialEq, Eq)] /// Status of a multisig proposal pub enum ProposalStatus { /// Proposal does not exist @@ -877,19 +878,19 @@ impl Module { // Ensure proposal is not expired if let Some(expiry) = proposal_details.expiry { ensure!( - expiry > >::get(), + expiry > >::get(), Error::::ProposalExpired ); } if proposal_details.approvals >= Self::ms_signs_required(&multisig) { if let Some(proposal) = Self::proposals((multisig.clone(), proposal_id)) { - let execution_at = system::Module::::block_number() + One::one(); - let call = Call::::execute_scheduled_proposal( - multisig.clone(), + let execution_at = system::Pallet::::block_number() + One::one(); + let call = Call::::execute_scheduled_proposal { + multisig: multisig.clone(), proposal_id, multisig_did, - proposal.get_dispatch_info().weight, - ) + _proposal_weight: proposal.get_dispatch_info().weight, + } .into(); // Scheduling will fail when it's already scheduled (had enough votes already). @@ -986,7 +987,7 @@ impl Module { // Ensure proposal is not expired if let Some(expiry) = proposal_details.expiry { ensure!( - expiry > >::get(), + expiry > >::get(), Error::::ProposalExpired ); } diff --git a/pallets/permissions/Cargo.toml b/pallets/permissions/Cargo.toml index 4df87da6ef..89719ab671 100644 --- a/pallets/permissions/Cargo.toml +++ b/pallets/permissions/Cargo.toml @@ -14,13 +14,14 @@ serde = { version = "1.0.104", default-features = false } # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -frame-system = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } # Only for benchmarking -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } [features] equalize = [] diff --git a/pallets/permissions/src/lib.rs b/pallets/permissions/src/lib.rs index ee6eb874dd..5d252f0da2 100644 --- a/pallets/permissions/src/lib.rs +++ b/pallets/permissions/src/lib.rs @@ -32,6 +32,7 @@ use frame_support::{ }; use polymesh_common_utilities::traits::{AccountCallPermissionsData, CheckAccountCallPermissions}; use polymesh_primitives::{DispatchableName, PalletName}; +use scale_info::TypeInfo; use sp_runtime::{ traits::{DispatchInfoOf, PostDispatchInfoOf, SignedExtension}, transaction_validity::{TransactionValidity, TransactionValidityError, ValidTransaction}, @@ -81,7 +82,8 @@ impl Module { } /// A signed extension used in checking call permissions. -#[derive(Encode, Decode, Clone, Eq, PartialEq, Default)] +#[derive(Encode, Decode, TypeInfo, Clone, Eq, PartialEq, Default)] +#[scale_info(skip_type_params(T))] pub struct StoreCallMetadata(PhantomData); impl fmt::Debug for StoreCallMetadata { diff --git a/pallets/pips/Cargo.toml b/pallets/pips/Cargo.toml index 9a10030a58..cf9aade7c3 100644 --- a/pallets/pips/Cargo.toml +++ b/pallets/pips/Cargo.toml @@ -23,20 +23,21 @@ serde_derive = { version = "1.0.104", optional = true, default-features = false # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -sp-version = { version = "3.0.0", default-features = false } -sp-api = { version = "3.0.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-version = { version = "4.0.0-dev", default-features = false } +sp-api = { version = "4.0.0-dev", default-features = false } -frame-system = { package = "frame-system", version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } +frame-system = { package = "frame-system", version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } -pallet-timestamp = { version = "3.0.0", default-features = false } +pallet-timestamp = { version = "4.0.0-dev", default-features = false } # Benchmarking -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } rand = { version = "0.8.2", default-features = false, optional = true } rand_chacha = { version = "0.3.0", default-features = false, optional = true } pallet-committee = { path = "../committee", default-features = false, optional = true } diff --git a/pallets/pips/src/benchmarking.rs b/pallets/pips/src/benchmarking.rs index 57aea37c12..9c7e7cc3b8 100644 --- a/pallets/pips/src/benchmarking.rs +++ b/pallets/pips/src/benchmarking.rs @@ -64,7 +64,7 @@ fn zeroize_deposit() { /// Makes a proposal. fn make_proposal() -> (Box, Url, PipDescription) { let content = vec![b'X'; PROPOSAL_PADDING_LEN]; - let proposal = Box::new(frame_system::Call::::remark(content).into()); + let proposal = Box::new(frame_system::Call::::remark { remark: content }.into()); let url = Url::try_from(vec![b'X'; URL_LEN].as_slice()).unwrap(); let description = PipDescription::try_from(vec![b'X'; DESCRIPTION_LEN].as_slice()).unwrap(); (proposal, url, description) @@ -151,14 +151,13 @@ fn enact_call(num_approves: usize, num_rejects: usize, num_skips: usi .chain(iter::repeat(SnapshotResult::Skip).take(num_skips)) .collect(); snapshot_results.shuffle(&mut rng); - Call::::enact_snapshot_results( - Module::::snapshot_queue() - .iter() - .rev() - .map(|s| s.id) - .zip(snapshot_results.into_iter()) - .collect(), - ) + let results = Module::::snapshot_queue() + .iter() + .rev() + .map(|s| s.id) + .zip(snapshot_results.into_iter()) + .collect(); + Call::::enact_snapshot_results { results } } fn propose_verify(url: Url, description: PipDescription) -> DispatchResult { @@ -257,7 +256,7 @@ benchmarks! { zeroize_deposit::(); let some_url = Some(url.clone()); let some_desc = Some(description.clone()); - let call = Call::::propose(proposal, 0u32.into(), some_url, some_desc); + let call = Call::::propose { proposal, deposit: 0u32.into(), url: some_url, description: some_desc }; }: { call.dispatch_bypass_filter(origin).unwrap(); } @@ -301,11 +300,16 @@ benchmarks! { let proposer_did = SystematicIssuers::Committee.as_id(); identity::CurrentDid::put(proposer_did); zeroize_deposit::(); - let propose_call = Call::::propose(proposal, 0u32.into(), Some(url.clone()), Some(description.clone())); + let propose_call = Call::::propose { + proposal, + deposit: 0u32.into(), + url: Some(url.clone()), + description: Some(description.clone()) + }; propose_call.dispatch_bypass_filter(proposer_origin).unwrap(); let origin = T::VotingMajorityOrigin::successful_origin(); let id = PipId(0); - let call = Call::::approve_committee_proposal(id); + let call = Call::::approve_committee_proposal { id }; }: { call.dispatch_bypass_filter(origin).unwrap(); } @@ -330,7 +334,7 @@ benchmarks! { let id = PipId(0); assert_eq!(deposit, Deposits::::get(id, &user.account()).amount, "incorrect deposit in reject_proposal"); let vmo_origin = T::VotingMajorityOrigin::successful_origin(); - let call = Call::::reject_proposal(id); + let call = Call::::reject_proposal { id }; }: { call.dispatch_bypass_filter(vmo_origin).unwrap(); } @@ -353,9 +357,9 @@ benchmarks! { ).unwrap(); let id = PipId(0); let vmo_origin = T::VotingMajorityOrigin::successful_origin(); - let reject_call = Call::::reject_proposal(id); + let reject_call = Call::::reject_proposal { id }; reject_call.dispatch_bypass_filter(vmo_origin.clone()).unwrap(); - let call = Call::::prune_proposal(id); + let call = Call::::prune_proposal { id }; }: { call.dispatch_bypass_filter(vmo_origin).unwrap(); } @@ -380,9 +384,9 @@ benchmarks! { T::GovernanceCommittee::bench_set_release_coordinator(user.did()); Module::::snapshot(user.origin().into()).unwrap(); let vmo_origin = T::VotingMajorityOrigin::successful_origin(); - let enact_call = Call::::enact_snapshot_results(vec![(id, SnapshotResult::Approve)]); + let enact_call = Call::::enact_snapshot_results { results: vec![(id, SnapshotResult::Approve)] }; enact_call.dispatch_bypass_filter(vmo_origin).unwrap(); - let future_block = frame_system::Module::::block_number() + 100u32.into(); + let future_block = frame_system::Pallet::::block_number() + 100u32.into(); let origin = user.origin(); }: _(origin, id, Some(future_block)) verify { diff --git a/pallets/pips/src/lib.rs b/pallets/pips/src/lib.rs index 75ae930fbd..2c0fbeff86 100644 --- a/pallets/pips/src/lib.rs +++ b/pallets/pips/src/lib.rs @@ -121,6 +121,7 @@ use polymesh_primitives::{ }; use polymesh_primitives_derive::VecU8StrongTyped; use polymesh_runtime_common::PipsEnactSnapshotMaximumWeight; +use scale_info::TypeInfo; #[cfg(feature = "std")] use serde::{Deserialize, Serialize}; use sp_core::H256; @@ -164,19 +165,18 @@ pub trait WeightInfo { } /// A wrapper for a proposal url. -#[derive( - Decode, Encode, Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord, VecU8StrongTyped, -)] +#[derive(Decode, Encode, TypeInfo, VecU8StrongTyped)] +#[derive(Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)] pub struct Url(pub Vec); /// A wrapper for a proposal description. -#[derive( - Decode, Encode, Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord, VecU8StrongTyped, -)] +#[derive(Decode, Encode, TypeInfo, VecU8StrongTyped)] +#[derive(Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)] pub struct PipDescription(pub Vec); /// The global and unique identitifer of a Polymesh Improvement Proposal (PIP). -#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Default, Debug)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Default, Debug)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct PipId(pub u32); impl_checked_inc!(PipId); @@ -196,17 +196,17 @@ impl PipId { } /// Represents a proposal -#[derive(Encode, Decode, Clone, PartialEq, Eq)] +#[derive(Encode, Decode, TypeInfo, Clone, PartialEq, Eq)] #[cfg_attr(feature = "std", derive(Debug))] -pub struct Pip { +pub struct Pip { /// The proposal's unique id. pub id: PipId, /// The proposal being voted on. - pub proposal: T::Proposal, + pub proposal: Proposal, /// The latest state pub state: ProposalState, /// The issuer of `propose`. - pub proposer: Proposer, + pub proposer: Proposer, } /// A result of execution of get_votes. @@ -226,7 +226,8 @@ pub enum VoteCount { /// Either the entire proposal encoded as a byte vector or its hash. The latter represents large /// proposals. -#[derive(Encode, Decode, Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] pub enum ProposalData { /// The hash of the proposal. Hash(H256), @@ -235,7 +236,7 @@ pub enum ProposalData { } /// The various sorts of committees that can make a PIP. -#[derive(Encode, Decode, Clone, PartialEq, Eq, Debug)] +#[derive(Encode, Decode, TypeInfo, Clone, PartialEq, Eq, Debug)] pub enum Committee { /// The technical committee. Technical, @@ -244,7 +245,7 @@ pub enum Committee { } /// The proposer of a certain PIP. -#[derive(Encode, Decode, Clone, PartialEq, Eq, Debug)] +#[derive(Encode, Decode, TypeInfo, Clone, PartialEq, Eq, Debug)] pub enum Proposer { /// The proposer is of the community. Community(AccountId), @@ -253,9 +254,9 @@ pub enum Proposer { } /// Represents a proposal metadata -#[derive(Encode, Decode, Clone, PartialEq, Eq)] +#[derive(Encode, Decode, TypeInfo, Clone, PartialEq, Eq)] #[cfg_attr(feature = "std", derive(Debug))] -pub struct PipsMetadata { +pub struct PipsMetadata { /// The proposal's unique id. pub id: PipId, /// The proposal url for proposal discussion. @@ -263,7 +264,7 @@ pub struct PipsMetadata { /// The proposal description. pub description: Option, /// The block when the PIP was made. - pub created_at: T::BlockNumber, + pub created_at: BlockNumber, /// Assuming the runtime has a given `rv: RuntimeVersion` at the point of `Pips::propose`, /// then this field contains `rv.transaction_version`. /// @@ -275,11 +276,11 @@ pub struct PipsMetadata { /// /// This field has no operational on-chain effect and is provided for UI purposes only. /// On-chain effects are instead handled via scheduling. - pub expiry: MaybeBlock, + pub expiry: MaybeBlock, } /// For keeping track of proposal being voted on. -#[derive(PartialEq, Eq, Clone, Encode, Decode, Default)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo, Default)] #[cfg_attr(feature = "std", derive(Debug))] pub struct VotingResult { /// The current set of voters that approved with their stake. @@ -291,7 +292,7 @@ pub struct VotingResult { } /// A "vote" or "signal" on a PIP to move it up or down the review queue. -#[derive(PartialEq, Eq, Copy, Clone, Encode, Decode)] +#[derive(PartialEq, Eq, Copy, Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] pub struct Vote( /// `true` if there's agreement. @@ -308,7 +309,7 @@ pub struct VoteByPip { } /// The state a PIP is in. -#[derive(Encode, Decode, Copy, Clone, Eq, PartialEq, Debug)] +#[derive(Encode, Decode, TypeInfo, Copy, Clone, Eq, PartialEq, Debug)] pub enum ProposalState { /// Initial state. Proposal is open to voting. Pending, @@ -331,7 +332,7 @@ impl Default for ProposalState { } /// Information about deposit. -#[derive(Encode, Decode, Clone, PartialEq, Eq, Default)] +#[derive(Encode, Decode, TypeInfo, Clone, PartialEq, Eq, Default)] #[cfg_attr(feature = "std", derive(Debug))] pub struct DepositInfo { /// Owner of the deposit. @@ -341,26 +342,27 @@ pub struct DepositInfo { } /// ID of the taken snapshot in a sequence. -#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Default, Debug)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Default, Debug)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct SnapshotId(pub u32); impl_checked_inc!(SnapshotId); /// A snapshot's metadata, containing when it was created and who triggered it. /// The priority queue is stored separately (see `SnapshottedPip`). -#[derive(Encode, Decode, Clone, PartialEq, Eq)] +#[derive(Encode, Decode, TypeInfo, Clone, PartialEq, Eq)] #[cfg_attr(feature = "std", derive(Debug))] -pub struct SnapshotMetadata { +pub struct SnapshotMetadata { /// The block when the snapshot was made. - pub created_at: T::BlockNumber, + pub created_at: BlockNumber, /// Who triggered this snapshot? Should refer to someone in the GC. - pub made_by: T::AccountId, + pub made_by: AccountId, /// Unique ID of this snapshot. pub id: SnapshotId, } /// A PIP in the snapshot's priority queue for consideration by the GC. -#[derive(Encode, Decode, Copy, Clone, PartialEq, Eq)] +#[derive(Encode, Decode, TypeInfo, Copy, Clone, PartialEq, Eq)] #[cfg_attr(feature = "std", derive(Debug))] pub struct SnapshottedPip { /// Identifies the PIP this refers to. @@ -391,7 +393,7 @@ fn compare_spip(l: &SnapshottedPip, r: &SnapshottedPip) -> Ordering { /// A result to enact for one or many PIPs in the snapshot queue. // This type is only here due to `enact_snapshot_results`. -#[derive(codec::Encode, codec::Decode, Copy, Clone, PartialEq, Eq, Debug)] +#[derive(Encode, Decode, TypeInfo, Copy, Clone, PartialEq, Eq, Debug)] pub enum SnapshotResult { /// Approve the PIP and move it to the execution queue. Approve, @@ -407,6 +409,7 @@ pub type SkippedCount = u8; type Identity = identity::Module; type CallPermissions = pallet_permissions::Module; +type System = frame_system::Pallet; /// The module's configuration trait. pub trait Config: @@ -479,7 +482,7 @@ decl_storage! { ActivePipCount get(fn active_pip_count): u32; /// The metadata of the active proposals. - pub ProposalMetadata get(fn proposal_metadata): map hasher(twox_64_concat) PipId => Option>; + pub ProposalMetadata get(fn proposal_metadata): map hasher(twox_64_concat) PipId => Option>; /// Those who have locked a deposit. /// proposal (id, proposer) -> deposit @@ -487,7 +490,7 @@ decl_storage! { /// Actual proposal for a given id, if it's current. /// proposal id -> proposal - pub Proposals get(fn proposals): map hasher(twox_64_concat) PipId => Option>; + pub Proposals get(fn proposals): map hasher(twox_64_concat) PipId => Option>; /// PolymeshVotes on a given proposal, if it is ongoing. /// proposal id -> vote count @@ -516,7 +519,7 @@ decl_storage! { pub SnapshotQueue get(fn snapshot_queue): Vec; /// The metadata of the snapshot, if there is one. - pub SnapshotMeta get(fn snapshot_metadata): Option>; + pub SnapshotMeta get(fn snapshot_metadata): Option>; /// The number of times a certain PIP has been skipped. /// Once a (configurable) threshhold is exceeded, a PIP cannot be skipped again. @@ -780,7 +783,7 @@ decl_module! { } // Construct and add PIP to storage. - let created_at = >::block_number(); + let created_at = System::::block_number(); let expiry = Self::pending_pip_expiry() + created_at; let transaction_version = >::get().transaction_version; let proposal_data = Self::reportable_proposal_data(&*proposal); @@ -986,7 +989,7 @@ decl_module! { Self::is_proposal_state(id, ProposalState::Scheduled)?; // Ensure new `until` is a valid block number. - let next_block = >::block_number() + 1u32.into(); + let next_block = System::::block_number() + 1u32.into(); let new_until = until.unwrap_or(next_block); ensure!(new_until >= next_block, Error::::InvalidFutureBlockNumber); @@ -1036,7 +1039,7 @@ decl_module! { // Commit the new snapshot. let id = SnapshotIdSequence::try_mutate(try_next_post::)?; - let created_at = >::block_number(); + let created_at = System::::block_number(); >::set(Some(SnapshotMetadata { created_at, made_by, id })); let queue = LiveQueue::get(); SnapshotQueue::set(queue.clone()); @@ -1209,7 +1212,7 @@ impl Module { Self::reduce_lock(&depo_info.owner, depo_info.amount).unwrap(); depo_info.amount.saturating_add(acc) }); - >::remove_prefix(id); + >::remove_prefix(id, None); Self::deposit_event(RawEvent::ProposalRefund(did, id, total_refund)); } @@ -1252,7 +1255,7 @@ impl Module { Self::decrement_count_if_active(state); if prune { ProposalResult::remove(id); - ProposalVotes::::remove_prefix(id); + ProposalVotes::::remove_prefix(id, None); >::remove(id); if let Some(Proposer::Committee(_)) = Self::proposals(id).map(|p| p.proposer) { CommitteePips::mutate(|list| list.retain(|&i| i != id)); @@ -1276,10 +1279,10 @@ impl Module { // as you can only schedule calls for future blocks. let at = Self::default_enactment_period() .max(One::one()) - .saturating_add(>::block_number()); + .saturating_add(System::::block_number()); // Add to schedule. - let call = Call::::execute_scheduled_pip(id).into(); + let call = Call::::execute_scheduled_pip { id }.into(); let res = T::Scheduler::schedule_named( id.execution_name(), DispatchTime::At(at), @@ -1308,7 +1311,7 @@ impl Module { /// Adds a PIP expiry call to the PIP expiry schedule. fn schedule_pip_for_expiry(id: PipId, at: T::BlockNumber) { let did = GC_DID; - let call = Call::::expire_scheduled_pip(did, id).into(); + let call = Call::::expire_scheduled_pip { did, id }.into(); let event = match T::Scheduler::schedule_named( id.expiry_name(), DispatchTime::At(at), diff --git a/pallets/portfolio/Cargo.toml b/pallets/portfolio/Cargo.toml index 9b18e9b7c2..6379347c1a 100644 --- a/pallets/portfolio/Cargo.toml +++ b/pallets/portfolio/Cargo.toml @@ -20,13 +20,14 @@ serde = { version = "1.0.104", default-features = false } # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -frame-support = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -sp-arithmetic = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-arithmetic = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } # Only in STD -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } [features] equalize = [] diff --git a/pallets/portfolio/src/lib.rs b/pallets/portfolio/src/lib.rs index 17c6b3c937..21e0f8e472 100644 --- a/pallets/portfolio/src/lib.rs +++ b/pallets/portfolio/src/lib.rs @@ -61,13 +61,15 @@ use polymesh_primitives::{ extract_auth, identity_id::PortfolioValidityResult, storage_migration_ver, Balance, IdentityId, PortfolioId, PortfolioKind, PortfolioName, PortfolioNumber, SecondaryKey, Ticker, }; +use scale_info::TypeInfo; use sp_arithmetic::traits::Zero; use sp_std::prelude::Vec; type Identity = identity::Module; /// The ticker and balance of an asset to be moved from one portfolio to another. -#[derive(Encode, Decode, Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord)] pub struct MovePortfolioItem { /// The ticker of the asset to be moved. pub ticker: Ticker, @@ -199,8 +201,8 @@ decl_module! { Portfolios::remove(&primary_did, &num); NameToNumber::remove(&primary_did, &portfolio); PortfolioAssetCount::remove(&pid); - PortfolioAssetBalances::remove_prefix(&pid); - PortfolioLockedAssets::remove_prefix(&pid); + PortfolioAssetBalances::remove_prefix(&pid, None); + PortfolioLockedAssets::remove_prefix(&pid, None); PortfoliosInCustody::remove(&Self::custodian(&pid), &pid); PortfolioCustodian::remove(&pid); diff --git a/pallets/protocol-fee/Cargo.toml b/pallets/protocol-fee/Cargo.toml index 80e2b1ecce..331439370d 100644 --- a/pallets/protocol-fee/Cargo.toml +++ b/pallets/protocol-fee/Cargo.toml @@ -14,15 +14,16 @@ serde = { version = "1.0.104", default-features = false } # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -frame-support = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -sp-core = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } # benchmark-only -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } [features] default = ["std"] diff --git a/pallets/protocol-fee/rpc/Cargo.toml b/pallets/protocol-fee/rpc/Cargo.toml index b1327c5147..7813ea948b 100644 --- a/pallets/protocol-fee/rpc/Cargo.toml +++ b/pallets/protocol-fee/rpc/Cargo.toml @@ -10,12 +10,12 @@ pallet-protocol-fee-rpc-runtime-api = { path = "./runtime-api" } # General serde = { version = "1.0.104", features = ["derive"] } -jsonrpc-core = "15.0.0" -jsonrpc-core-client = "15.0.0" -jsonrpc-derive = "15.0.0" +jsonrpc-core = { version = "18.0.0", features = ["arbitrary_precision"] } +jsonrpc-core-client = { version = "18.0.0", features = ["arbitrary_precision"] } +jsonrpc-derive = "18.0.0" # Substrate codec = { package = "parity-scale-codec", version = "2.0.0" } -sp-runtime = { version = "3.0.0", default_features = false } -sp-blockchain = { version = "3.0.0", default_features = false} -sp-api = { version = "3.0.0", default_features = false} +sp-runtime = { version = "4.0.0-dev", default_features = false } +sp-blockchain = { version = "4.0.0-dev", default_features = false} +sp-api = { version = "4.0.0-dev", default_features = false} diff --git a/pallets/protocol-fee/rpc/runtime-api/Cargo.toml b/pallets/protocol-fee/rpc/runtime-api/Cargo.toml index a16adbc7cb..16130323e5 100644 --- a/pallets/protocol-fee/rpc/runtime-api/Cargo.toml +++ b/pallets/protocol-fee/rpc/runtime-api/Cargo.toml @@ -12,9 +12,9 @@ serde = { version = "1.0.104", optional = true, features = ["derive"] } # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-api = { version = "3.0.0", default_features = false} -sp-runtime = { version = "3.0.0", default_features = false} -frame-support = { version = "3.0.0", default-features = false } +sp-api = { version = "4.0.0-dev", default_features = false} +sp-runtime = { version = "4.0.0-dev", default_features = false} +frame-support = { version = "4.0.0-dev", default-features = false } [dev-dependencies] serde_json = "1.0.48" diff --git a/pallets/protocol-fee/src/benchmarking.rs b/pallets/protocol-fee/src/benchmarking.rs index be77ec302d..32a3d39fb7 100644 --- a/pallets/protocol-fee/src/benchmarking.rs +++ b/pallets/protocol-fee/src/benchmarking.rs @@ -18,7 +18,6 @@ use frame_benchmarking::benchmarks; use frame_system::RawOrigin; use polymesh_common_utilities::protocol_fee::ProtocolOp; use polymesh_primitives::PosRatio; -use sp_std::prelude::*; benchmarks! { change_coefficient { diff --git a/pallets/protocol-fee/src/lib.rs b/pallets/protocol-fee/src/lib.rs index 7724c4edee..5ec33c8aa2 100644 --- a/pallets/protocol-fee/src/lib.rs +++ b/pallets/protocol-fee/src/lib.rs @@ -152,8 +152,10 @@ impl Module { /// Computes the fee of the operation as `(base_fee * coefficient.0) / coefficient.1`. pub fn compute_fee(ops: &[ProtocolOp]) -> Balance { let coefficient = Self::coefficient(); - let ratio = Perbill::from_rational_approximation(coefficient.0, coefficient.1); - let base = ops.iter().fold(Zero::zero(), |a, e| a + Self::base_fees(e)); + let ratio = Perbill::from_rational(coefficient.0, coefficient.1); + let base = ops + .iter() + .fold(Zero::zero(), |a: Balance, e| a + Self::base_fees(e)); ratio * base } @@ -190,6 +192,7 @@ impl Module { // It always return the negative imbalance as negative_imbalance always >= positive_imbalance. let imbalance = negative_imbalance .offset(positive_imbalance) + .same() .map_err(|_| Error::::UnHandledImbalances)?; T::OnProtocolFeePayment::on_unbalanced(imbalance); } diff --git a/pallets/relayer/Cargo.toml b/pallets/relayer/Cargo.toml index c4f883f6c4..c6ec330bde 100644 --- a/pallets/relayer/Cargo.toml +++ b/pallets/relayer/Cargo.toml @@ -11,13 +11,14 @@ polymesh-primitives = { path = "../../primitives", default-features = false} # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-runtime = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-std = { version = "4.0.0-dev", default-features = false } # Only Benchmarking -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } [features] default = ["std"] diff --git a/pallets/relayer/src/benchmarking.rs b/pallets/relayer/src/benchmarking.rs index 9f1321b763..ebd97dc8bc 100644 --- a/pallets/relayer/src/benchmarking.rs +++ b/pallets/relayer/src/benchmarking.rs @@ -20,7 +20,6 @@ use polymesh_common_utilities::{ benchs::{user, AccountIdOf, User}, traits::{relayer::Config, TestUtilsFn}, }; -use sp_std::prelude::*; type Relayer = crate::Module; diff --git a/pallets/relayer/src/lib.rs b/pallets/relayer/src/lib.rs index 2f7699c1ae..49dd248bf5 100644 --- a/pallets/relayer/src/lib.rs +++ b/pallets/relayer/src/lib.rs @@ -57,6 +57,7 @@ pub use polymesh_common_utilities::traits::relayer::{ use polymesh_primitives::{ extract_auth, AuthorizationData, Balance, IdentityId, Signatory, TransactionError, }; +use scale_info::TypeInfo; use sp_runtime::transaction_validity::InvalidTransaction; type Identity = pallet_identity::Module; @@ -65,7 +66,8 @@ type Identity = pallet_identity::Module; /// /// This holds the subsidiser's paying key and the remaining POLYX balance /// available for subsidising transaction and protocol fees. -#[derive(Encode, Decode, Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord)] pub struct Subsidy { /// The subsidiser's paying key. pub paying_key: Acc, diff --git a/pallets/rewards/Cargo.toml b/pallets/rewards/Cargo.toml index be5890124e..430db08ca8 100644 --- a/pallets/rewards/Cargo.toml +++ b/pallets/rewards/Cargo.toml @@ -13,13 +13,14 @@ pallet-staking = { path = "../staking", default-features = false } # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } # Other serde = { version = "1.0.104", default-features = false } diff --git a/pallets/rewards/src/lib.rs b/pallets/rewards/src/lib.rs index 222871bbbf..ee3837a063 100644 --- a/pallets/rewards/src/lib.rs +++ b/pallets/rewards/src/lib.rs @@ -46,11 +46,12 @@ use frame_support::{ use frame_system::{ensure_none, ensure_root, RawOrigin}; use pallet_staking::{self as staking, RewardDestination}; use polymesh_common_utilities::{ - constants::{currency::POLY, REWARDS_MODULE_ID}, + constants::{currency::POLY, REWARDS_PALLET_ID}, traits::identity::Config as IdentityConfig, with_transaction, }; use polymesh_primitives::Balance; +use scale_info::TypeInfo; use sp_runtime::transaction_validity::{InvalidTransaction, TransactionLongevity}; use sp_runtime::{ traits::{AccountIdConversion, StaticLookup, Verify}, @@ -80,7 +81,7 @@ pub trait WeightInfo { } /// Represents an Itn reward's status. -#[derive(Decode, Encode, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Decode, Encode, TypeInfo, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] pub enum ItnRewardStatus { Unclaimed(Balance), Claimed, @@ -160,7 +161,7 @@ decl_module! { impl Module { /// The account ID of the rewards pot. pub fn account_id() -> T::AccountId { - REWARDS_MODULE_ID.into_account() + REWARDS_PALLET_ID.into_account() } /// Converts `polymesh_primitive::Balance` balances into (`bonded_amount`, `deposit_amount`). @@ -278,7 +279,12 @@ impl sp_runtime::traits::ValidateUnsigned for Module { fn validate_unsigned(_source: TransactionSource, call: &Self::Call) -> TransactionValidity { const PRIORITY: u64 = 100; - if let Call::claim_itn_reward(reward_address, itn_address, signature) = call { + if let Call::claim_itn_reward { + reward_address, + itn_address, + signature, + } = call + { if Self::valid_claim(reward_address, itn_address, signature) { return Ok(ValidTransaction { priority: PRIORITY, diff --git a/pallets/runtime/build_tool/Cargo.toml b/pallets/runtime/build_tool/Cargo.toml index 408291c902..c5c678caff 100644 --- a/pallets/runtime/build_tool/Cargo.toml +++ b/pallets/runtime/build_tool/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -substrate-wasm-builder = { version = "3.0.0", default-features = false} +substrate-wasm-builder = { version = "4.0.0-dev", default-features = false} [features] default = ["std"] diff --git a/pallets/runtime/ci/Cargo.toml b/pallets/runtime/ci/Cargo.toml index fb5592d454..69c566ccba 100644 --- a/pallets/runtime/ci/Cargo.toml +++ b/pallets/runtime/ci/Cargo.toml @@ -49,53 +49,55 @@ pallet-test-utils = { path = "../../test-utils", default-features = false } node-rpc-runtime-api = { path = "../../../rpc/runtime-api", default-features = false } pallet-staking-rpc-runtime-api = { package = "pallet-staking-rpc-runtime-api", path = "../../staking/rpc/runtime-api", default-features = false } pallet-protocol-fee-rpc-runtime-api = { package = "pallet-protocol-fee-rpc-runtime-api", path = "../../protocol-fee/rpc/runtime-api", default-features = false } -#pallet-contracts-rpc-runtime-api = { version = "3.0.0", default-features = false } +#pallet-contracts-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } # Crypto -cryptography_core = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, tag = "confidential-identity-v1.1.3" } +cryptography_core = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, branch = "confidential-identity-v1" } # Others lazy_static = { version = "1.4.0", default-features = false } +log = "0.4.8" serde = { version = "1.0.104", default-features = false } serde_derive = { version = "1.0.104", optional = true } # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -sp-version = { version = "3.0.0", default-features = false } -sp-api = { version = "3.0.0", default-features = false } -sp-inherents = { version = "3.0.0", default-features = false } -sp-offchain = { version = "3.0.0", default-features = false } -sp-staking = { version = "3.0.0", default-features = false } -sp-consensus-babe = { version = "0.9.0", default-features = false } -sp-session = { version = "3.0.0", default-features = false } -sp-authority-discovery = { version = "3.0.0", default-features = false } -sp-transaction-pool = { version = "3.0.0", default-features = false } -sp-block-builder = { version = "3.0.0", default-features = false } -sp-arithmetic = { version = "3.0.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-version = { version = "4.0.0-dev", default-features = false } +sp-api = { version = "4.0.0-dev", default-features = false } +sp-inherents = { version = "4.0.0-dev", default-features = false } +sp-offchain = { version = "4.0.0-dev", default-features = false } +sp-staking = { version = "4.0.0-dev", default-features = false } +sp-consensus-babe = { version = "0.10.0-dev", default-features = false } +sp-session = { version = "4.0.0-dev", default-features = false } +sp-authority-discovery = { version = "4.0.0-dev", default-features = false } +sp-transaction-pool = { version = "4.0.0-dev", default-features = false } +sp-block-builder = { version = "4.0.0-dev", default-features = false } +sp-arithmetic = { version = "4.0.0-dev", default-features = false } -pallet-authorship = { version = "3.0.0", default-features = false } -#pallet-contracts = { version = "3.0.0", default-features = false } -#pallet-contracts-primitives = { version = "3.0.0", default-features = false} -pallet-executive = { package = "frame-executive", version = "3.0.0", default-features = false } -pallet-grandpa = { version = "3.0.0", default-features = false } -pallet-im-online = { version = "3.0.0", default-features = false } -pallet-indices = { version = "3.0.0", default-features = false } -pallet-offences = { version = "3.0.0", default-features = false } -pallet-session = { version = "3.0.0", default-features = false } -pallet-timestamp = { version = "3.0.0", default-features = false } -pallet-babe = { version = "3.0.0", default-features = false } -pallet-authority-discovery = { version = "3.0.0", default-features = false } -pallet-randomness-collective-flip = { version = "3.0.0", default-features = false } -pallet-scheduler = { version = "3.0.0", default-features = false } -pallet-staking-reward-curve = { version = "3.0.0", default-features = false } +pallet-authorship = { version = "4.0.0-dev", default-features = false } +#pallet-contracts = { version = "4.0.0-dev", default-features = false } +#pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false} +pallet-executive = { package = "frame-executive", version = "4.0.0-dev", default-features = false } +pallet-grandpa = { version = "4.0.0-dev", default-features = false } +pallet-im-online = { version = "4.0.0-dev", default-features = false } +pallet-indices = { version = "4.0.0-dev", default-features = false } +pallet-offences = { version = "4.0.0-dev", default-features = false } +pallet-session = { version = "4.0.0-dev", default-features = false } +pallet-timestamp = { version = "4.0.0-dev", default-features = false } +pallet-babe = { version = "4.0.0-dev", default-features = false } +pallet-authority-discovery = { version = "4.0.0-dev", default-features = false } +pallet-randomness-collective-flip = { version = "4.0.0-dev", default-features = false } +pallet-scheduler = { version = "4.0.0-dev", default-features = false } +pallet-staking-reward-curve = { version = "4.0.0-dev", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } -frame-system-rpc-runtime-api = { version = "3.0.0", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +frame-system-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } smallvec = "1.4.0" [build-dependencies] diff --git a/pallets/runtime/ci/src/fee_details.rs b/pallets/runtime/ci/src/fee_details.rs index 0fa6904435..9deaccf8ab 100644 --- a/pallets/runtime/ci/src/fee_details.rs +++ b/pallets/runtime/ci/src/fee_details.rs @@ -58,50 +58,54 @@ where match call { // Register did call. // all did registration should go through CDD - Call::TestUtils(pallet_test_utils::Call::register_did(..)) => Ok(Some(caller.clone())), + Call::TestUtils(pallet_test_utils::Call::register_did { .. }) => { + Ok(Some(caller.clone())) + } // Call made by a new Account key to accept invitation to become a secondary key // of an existing multisig that has a valid CDD. The auth should be valid. - Call::MultiSig(pallet_multisig::Call::accept_multisig_signer_as_key(auth_id)) => { + Call::MultiSig(pallet_multisig::Call::accept_multisig_signer_as_key { auth_id }) => { is_auth_valid(caller, auth_id, CallType::AcceptMultiSigSigner) } // Call made by a new Account key to accept invitation to become a secondary key // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::join_identity_as_key(auth_id, ..)) => { + Call::Identity(pallet_identity::Call::join_identity_as_key { auth_id, .. }) => { is_auth_valid(caller, auth_id, CallType::AcceptIdentitySecondary) } // Call made by a new Account key to accept invitation to become the primary key // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::accept_primary_key(rotation_auth_id, ..)) => { - is_auth_valid(caller, rotation_auth_id, CallType::AcceptIdentityPrimary) - } + Call::Identity(pallet_identity::Call::accept_primary_key { + rotation_auth_id, .. + }) => is_auth_valid(caller, rotation_auth_id, CallType::AcceptIdentityPrimary), // Call made by a new Account key to accept invitation to become the primary key // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::rotate_primary_key_to_secondary( - rotation_auth_id, - .., - )) => is_auth_valid(caller, rotation_auth_id, CallType::RotatePrimaryToSecondary), + Call::Identity(pallet_identity::Call::rotate_primary_key_to_secondary { + auth_id, + .. + }) => is_auth_valid(caller, auth_id, CallType::RotatePrimaryToSecondary), // Call made by a new Account key to remove invitation for certain authorizations // in an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::remove_authorization(_, auth_id, true)) => { - is_auth_valid(caller, auth_id, CallType::RemoveAuthorization) - } + Call::Identity(pallet_identity::Call::remove_authorization { + auth_id, + _auth_issuer_pays: true, + .. + }) => is_auth_valid(caller, auth_id, CallType::RemoveAuthorization), // Call made by a user key to accept subsidy from a paying key. The auth should be valid. - Call::Relayer(pallet_relayer::Call::accept_paying_key(auth_id)) => { + Call::Relayer(pallet_relayer::Call::accept_paying_key { auth_id }) => { is_auth_valid(caller, auth_id, CallType::AcceptRelayerPayingKey) } // Call made by an Account key to propose, reject or approve a multisig transaction. // The multisig must have valid CDD and the caller must be a signer of the multisig. Call::MultiSig( - pallet_multisig::Call::create_or_approve_proposal_as_key(multisig, ..) - | pallet_multisig::Call::create_proposal_as_key(multisig, ..) - | pallet_multisig::Call::approve_as_key(multisig, ..) - | pallet_multisig::Call::reject_as_key(multisig, ..), + pallet_multisig::Call::create_or_approve_proposal_as_key { multisig, .. } + | pallet_multisig::Call::create_proposal_as_key { multisig, .. } + | pallet_multisig::Call::approve_as_key { multisig, .. } + | pallet_multisig::Call::reject_as_key { multisig, .. }, ) => handle_multisig(multisig, caller), // Call made by an Account key to propose or approve a multisig transaction via the bridge helper // The multisig must have valid CDD and the caller must be a signer of the multisig. Call::Bridge( - pallet_bridge::Call::propose_bridge_tx(..) - | pallet_bridge::Call::batch_propose_bridge_tx(..), + pallet_bridge::Call::propose_bridge_tx { .. } + | pallet_bridge::Call::batch_propose_bridge_tx { .. }, ) => handle_multisig(&Bridge::controller_key(), caller), // All other calls. // diff --git a/pallets/runtime/ci/src/runtime.rs b/pallets/runtime/ci/src/runtime.rs index 7a804144eb..0d6e6f74e7 100644 --- a/pallets/runtime/ci/src/runtime.rs +++ b/pallets/runtime/ci/src/runtime.rs @@ -7,8 +7,8 @@ use codec::Encode; use frame_support::traits::OnRuntimeUpgrade; use frame_support::{ - construct_runtime, debug, parameter_types, - traits::{KeyOwnerProofSystem, Randomness, SplitTwoWays}, + construct_runtime, parameter_types, + traits::{tokens::imbalance::SplitTwoWays, KeyOwnerProofSystem}, weights::Weight, }; //use pallet_contracts::weights::WeightInfo; @@ -95,15 +95,6 @@ parameter_types! { // Authorship: pub const UncleGenerations: BlockNumber = 0; - // Session: - // NOTE: `SessionHandler` and `SessionKeys` are co-dependent: - // One key will be used for each handler. - // The number and order of items in `SessionHandler` *MUST* be the same number - // and order of keys in `SessionKeys`. - // TODO: Introduce some structure to tie these together to make it a bit less of a footgun. - // This should be easy, since OneSessionHandler trait provides the `Key` as an associated type. #2858 - pub const DisabledValidatorsThreshold: Perbill = Perbill::from_percent(17); - // Contracts: pub const NetworkShareInFee: Perbill = Perbill::from_percent(60); pub const TombstoneDeposit: Balance = 0; @@ -116,13 +107,14 @@ parameter_types! { // Settlement: pub const MaxLegsInInstruction: u32 = 10; - // Offences: - pub OffencesWeightSoftLimit: Weight = Perbill::from_percent(60) * MaximumBlockWeight::get(); - // I'm online: - pub const SessionDuration: BlockNumber = EPOCH_DURATION_IN_SLOTS as _; pub const ImOnlineUnsignedPriority: TransactionPriority = TransactionPriority::max_value(); + pub const MaxAuthorities: u32 = 100_000; + pub const MaxKeys: u32 = 10_000; + pub const MaxPeerInHeartbeats: u32 = 10_000; + pub const MaxPeerDataEncodingSize: u32 = 1_000; + // Assets: pub const MaxNumberOfTMExtensionForAsset: u32 = 5; pub const AssetNameMaxLength: u32 = 128; @@ -191,7 +183,7 @@ parameter_types! { pub const MaxIterations: u32 = 10; pub const MaxValidatorPerIdentity: Permill = Permill::from_percent(33); // 0.05%. The higher the value, the more strict solution acceptance becomes. - pub MinSolutionScoreBump: Perbill = Perbill::from_rational_approximation(5u32, 10_000); + pub MinSolutionScoreBump: Perbill = Perbill::from_rational(5u32, 10_000); pub const MaxVariableInflationTotalIssuance: Balance = 1_000_000_000 * POLY; pub const FixedYearlyReward: Balance = 140_000_000 * POLY; pub const MinimumBond: Balance = 1 * POLY; @@ -301,7 +293,7 @@ impl pallet_test_utils::Config for Runtime { type WeightInfo = polymesh_weights::pallet_test_utils::WeightInfo; } -pub type AllModulesExported = AllModules; +pub type AllModulesExported = AllPallets; construct_runtime!( pub enum Runtime where @@ -309,88 +301,88 @@ construct_runtime!( NodeBlock = polymesh_primitives::Block, UncheckedExtrinsic = UncheckedExtrinsic { - System: frame_system::{Module, Call, Config, Storage, Event}, - Babe: pallet_babe::{Module, Call, Storage, Config, ValidateUnsigned}, - Timestamp: pallet_timestamp::{Module, Call, Storage, Inherent}, - Indices: pallet_indices::{Module, Call, Storage, Config, Event}, - Authorship: pallet_authorship::{Module, Call, Storage, Inherent}, + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Babe: pallet_babe::{Pallet, Call, Storage, Config, ValidateUnsigned}, + Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent}, + Indices: pallet_indices::{Pallet, Call, Storage, Config, Event}, + Authorship: pallet_authorship::{Pallet, Call, Storage, Inherent}, // Balance: Genesis config dependencies: System. - Balances: pallet_balances::{Module, Call, Storage, Config, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, // TransactionPayment: Genesis config dependencies: Balance. - TransactionPayment: pallet_transaction_payment::{Module, Storage}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, // Identity: Genesis config deps: Timestamp. - Identity: pallet_identity::{Module, Call, Storage, Event, Config}, + Identity: pallet_identity::{Pallet, Call, Storage, Event, Config}, // Polymesh Committees // CddServiceProviders (group only): Genesis config deps: Identity - CddServiceProviders: pallet_group::::{Module, Call, Storage, Event, Config}, + CddServiceProviders: pallet_group::::{Pallet, Call, Storage, Event, Config}, // Governance Council (committee) - PolymeshCommittee: pallet_committee::::{Module, Call, Storage, Origin, Event, Config}, + PolymeshCommittee: pallet_committee::::{Pallet, Call, Storage, Origin, Event, Config}, // CommitteeMembership: Genesis config deps: PolymeshCommittee, Identity. - CommitteeMembership: pallet_group::::{Module, Call, Storage, Event, Config}, + CommitteeMembership: pallet_group::::{Pallet, Call, Storage, Event, Config}, // Technical Committee - TechnicalCommittee: pallet_committee::::{Module, Call, Storage, Origin, Event, Config}, + TechnicalCommittee: pallet_committee::::{Pallet, Call, Storage, Origin, Event, Config}, // TechnicalCommitteeMembership: Genesis config deps: TechnicalCommittee, Identity - TechnicalCommitteeMembership: pallet_group::::{Module, Call, Storage, Event, Config}, + TechnicalCommitteeMembership: pallet_group::::{Pallet, Call, Storage, Event, Config}, // Upgrade Committee - UpgradeCommittee: pallet_committee::::{Module, Call, Storage, Origin, Event, Config}, + UpgradeCommittee: pallet_committee::::{Pallet, Call, Storage, Origin, Event, Config}, // UpgradeCommitteeMembership: Genesis config deps: UpgradeCommittee, Identity - UpgradeCommitteeMembership: pallet_group::::{Module, Call, Storage, Event, Config}, + UpgradeCommitteeMembership: pallet_group::::{Pallet, Call, Storage, Event, Config}, - MultiSig: pallet_multisig::{Module, Call, Config, Storage, Event}, + MultiSig: pallet_multisig::{Pallet, Call, Config, Storage, Event}, // Bridge: Genesis config deps: Multisig, Identity, Committees - Bridge: pallet_bridge::{Module, Call, Storage, Config, Event}, + Bridge: pallet_bridge::{Pallet, Call, Storage, Config, Event}, // Staking: Genesis config deps: Bridge, Balances, Indices, Identity, Babe, Timestamp, Committees - Staking: pallet_staking::{Module, Call, Config, Storage, Event, ValidateUnsigned}, - Offences: pallet_offences::{Module, Call, Storage, Event}, + Staking: pallet_staking::{Pallet, Call, Config, Storage, Event, ValidateUnsigned}, + Offences: pallet_offences::{Pallet, Storage, Event}, // Session: Genesis config deps: System. - Session: pallet_session::{Module, Call, Storage, Event, Config}, - AuthorityDiscovery: pallet_authority_discovery::{Module, Call, Config}, - Grandpa: pallet_grandpa::{Module, Call, Storage, Config, Event}, - Historical: pallet_session_historical::{Module}, - ImOnline: pallet_im_online::{Module, Call, Storage, Event, ValidateUnsigned, Config}, - RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Module, Call, Storage}, + Session: pallet_session::{Pallet, Call, Storage, Event, Config}, + AuthorityDiscovery: pallet_authority_discovery::{Pallet, Config}, + Grandpa: pallet_grandpa::{Pallet, Call, Storage, Config, Event}, + Historical: pallet_session_historical::{Pallet}, + ImOnline: pallet_im_online::{Pallet, Call, Storage, Event, ValidateUnsigned, Config}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, // Sudo. Usable initially. - Sudo: pallet_sudo::{Module, Call, Config, Storage, Event}, + Sudo: pallet_sudo::{Pallet, Call, Config, Storage, Event}, /* // Contracts - BaseContracts: pallet_contracts::{Module, Config, Storage, Event}, - Contracts: polymesh_contracts::{Module, Call, Storage, Event}, + BaseContracts: pallet_contracts::{Pallet, Config, Storage, Event}, + Contracts: polymesh_contracts::{Pallet, Call, Storage, Event}, */ // Asset: Genesis config deps: Timestamp, - Asset: pallet_asset::{Module, Call, Storage, Config, Event}, - CapitalDistribution: pallet_capital_distribution::{Module, Call, Storage, Event}, - Checkpoint: pallet_checkpoint::{Module, Call, Storage, Event, Config}, - ComplianceManager: pallet_compliance_manager::{Module, Call, Storage, Event}, - CorporateAction: pallet_corporate_actions::{Module, Call, Storage, Event, Config}, - CorporateBallot: pallet_corporate_ballot::{Module, Call, Storage, Event}, - Permissions: pallet_permissions::{Module}, - Pips: pallet_pips::{Module, Call, Storage, Event, Config}, - Portfolio: pallet_portfolio::{Module, Call, Storage, Event}, - ProtocolFee: pallet_protocol_fee::{Module, Call, Storage, Event, Config}, - Scheduler: pallet_scheduler::{Module, Call, Storage, Event}, - Settlement: pallet_settlement::{Module, Call, Storage, Event, Config}, - Statistics: pallet_statistics::{Module, Call, Storage, Event}, - Sto: pallet_sto::{Module, Call, Storage, Event}, - Treasury: pallet_treasury::{Module, Call, Event}, - Utility: pallet_utility::{Module, Call, Storage, Event}, - Base: pallet_base::{Module, Call, Event}, - ExternalAgents: pallet_external_agents::{Module, Call, Storage, Event}, - Relayer: pallet_relayer::{Module, Call, Storage, Event}, - Rewards: pallet_rewards::{Module, Call, Storage, Event, Config, ValidateUnsigned}, - TestUtils: pallet_test_utils::{Module, Call, Storage, Event } = 50, + Asset: pallet_asset::{Pallet, Call, Storage, Config, Event}, + CapitalDistribution: pallet_capital_distribution::{Pallet, Call, Storage, Event}, + Checkpoint: pallet_checkpoint::{Pallet, Call, Storage, Event, Config}, + ComplianceManager: pallet_compliance_manager::{Pallet, Call, Storage, Event}, + CorporateAction: pallet_corporate_actions::{Pallet, Call, Storage, Event, Config}, + CorporateBallot: pallet_corporate_ballot::{Pallet, Call, Storage, Event}, + Permissions: pallet_permissions::{Pallet}, + Pips: pallet_pips::{Pallet, Call, Storage, Event, Config}, + Portfolio: pallet_portfolio::{Pallet, Call, Storage, Event}, + ProtocolFee: pallet_protocol_fee::{Pallet, Call, Storage, Event, Config}, + Scheduler: pallet_scheduler::{Pallet, Call, Storage, Event}, + Settlement: pallet_settlement::{Pallet, Call, Storage, Event, Config}, + Statistics: pallet_statistics::{Pallet, Call, Storage, Event}, + Sto: pallet_sto::{Pallet, Call, Storage, Event}, + Treasury: pallet_treasury::{Pallet, Call, Event}, + Utility: pallet_utility::{Pallet, Call, Storage, Event}, + Base: pallet_base::{Pallet, Call, Event}, + ExternalAgents: pallet_external_agents::{Pallet, Call, Storage, Event}, + Relayer: pallet_relayer::{Pallet, Call, Storage, Event}, + Rewards: pallet_rewards::{Pallet, Call, Storage, Event, Config, ValidateUnsigned}, + TestUtils: pallet_test_utils::{Pallet, Call, Storage, Event } = 50, } ); @@ -407,6 +399,6 @@ pub trait DryRunRuntimeUpgrade { #[cfg(feature = "migration-dry-run")] impl DryRunRuntimeUpgrade for Runtime { fn dry_run_runtime_upgrade() -> Weight { - ::on_runtime_upgrade() + ::on_runtime_upgrade() } } diff --git a/pallets/runtime/common/Cargo.toml b/pallets/runtime/common/Cargo.toml index 04f8fdb415..b141f595f7 100644 --- a/pallets/runtime/common/Cargo.toml +++ b/pallets/runtime/common/Cargo.toml @@ -12,7 +12,7 @@ pallet-asset = { path = "../../asset", default-features = false } pallet-balances = { path = "../../balances", default-features = false } pallet-committee = { path = "../../committee", default-features = false } pallet-compliance-manager = { path = "../../compliance-manager", default-features = false } -#pallet-contracts = { version = "3.0.0", default-features = false } +#pallet-contracts = { version = "4.0.0-dev", default-features = false } pallet-identity = { path = "../../identity", default-features = false } pallet-multisig = { path = "../../multisig", default-features = false} pallet-portfolio = { path = "../../portfolio", default-features = false } @@ -27,18 +27,18 @@ smallvec = "1.4.0" # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } -pallet-timestamp = { version = "3.0.0", default-features = false } -pallet-authorship = { version = "3.0.0", default-features = false } +pallet-timestamp = { version = "4.0.0-dev", default-features = false } +pallet-authorship = { version = "4.0.0-dev", default-features = false } # Only benchmarking -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } [features] equalize = [] diff --git a/pallets/runtime/common/src/impls.rs b/pallets/runtime/common/src/impls.rs index 908a2f81b6..cda70721f9 100644 --- a/pallets/runtime/common/src/impls.rs +++ b/pallets/runtime/common/src/impls.rs @@ -50,7 +50,7 @@ where ::AccountId: Into, { fn on_nonzero_unbalanced(amount: NegativeImbalance) { - >::resolve_creating(&>::author(), amount); + >::resolve_creating(&>::author(), amount); } } diff --git a/pallets/runtime/common/src/lib.rs b/pallets/runtime/common/src/lib.rs index b2dacf33db..507ff19a4c 100644 --- a/pallets/runtime/common/src/lib.rs +++ b/pallets/runtime/common/src/lib.rs @@ -144,7 +144,7 @@ impl WeightToFeePolynomial for WeightToFee { fn polynomial() -> WeightToFeeCoefficients { smallvec![WeightToFeeCoefficient { degree: 1, - coeff_frac: Perbill::from_rational_approximation( + coeff_frac: Perbill::from_rational( PolyXBaseFee::get().into(), ExtrinsicBaseWeight::get() as u128 ), diff --git a/pallets/runtime/common/src/runtime.rs b/pallets/runtime/common/src/runtime.rs index e47dd7a7cf..0106798ce7 100644 --- a/pallets/runtime/common/src/runtime.rs +++ b/pallets/runtime/common/src/runtime.rs @@ -25,7 +25,7 @@ macro_rules! misc_pallet_impls { impl frame_system::Config for Runtime { /// The basic call filter to use in dispatchable. - type BaseCallFilter = (); + type BaseCallFilter = frame_support::traits::Everything; /// Block & extrinsics weights: base values and limits. type BlockWeights = polymesh_runtime_common::RuntimeBlockWeights; /// The maximum length of a block (in bytes). @@ -74,6 +74,7 @@ macro_rules! misc_pallet_impls { /// The data to be stored in an account. type AccountData = polymesh_common_utilities::traits::balances::AccountData; type SystemWeightInfo = polymesh_weights::frame_system::WeightInfo; + type OnSetCode = (); } impl pallet_base::Config for Runtime { @@ -86,6 +87,7 @@ macro_rules! misc_pallet_impls { type EpochDuration = EpochDuration; type ExpectedBlockTime = ExpectedBlockTime; type EpochChangeTrigger = pallet_babe::ExternalTrigger; + type DisabledValidators = Session; type KeyOwnerProofSystem = Historical; @@ -104,6 +106,7 @@ macro_rules! misc_pallet_impls { Offences, ReportLongevity, >; + type MaxAuthorities = MaxAuthorities; } impl pallet_indices::Config for Runtime { @@ -130,7 +133,7 @@ macro_rules! misc_pallet_impls { impl polymesh_common_utilities::traits::CommonConfig for Runtime { type AssetSubTraitTarget = Asset; - type BlockRewardsReserve = pallet_balances::Module; + type BlockRewardsReserve = pallet_balances::Pallet; } impl pallet_balances::Config for Runtime { @@ -138,7 +141,7 @@ macro_rules! misc_pallet_impls { type DustRemoval = (); type Event = Event; type ExistentialDeposit = ExistentialDeposit; - type AccountStore = frame_system::Module; + type AccountStore = frame_system::Pallet; type CddChecker = polymesh_runtime_common::cdd_check::CddChecker; type WeightInfo = polymesh_weights::pallet_balances::WeightInfo; } @@ -184,7 +187,6 @@ macro_rules! misc_pallet_impls { type SessionHandler = ::KeyTypeIdProviders; type Keys = SessionKeys; - type DisabledValidatorsThreshold = DisabledValidatorsThreshold; type WeightInfo = polymesh_weights::pallet_session::WeightInfo; } @@ -197,6 +199,7 @@ macro_rules! misc_pallet_impls { } impl pallet_staking::Config for Runtime { + const MAX_NOMINATIONS: u32 = pallet_staking::MAX_NOMINATIONS; type Currency = Balances; type UnixTime = Timestamp; type CurrencyToVote = frame_support::traits::U128CurrencyToVote; @@ -232,7 +235,9 @@ macro_rules! misc_pallet_impls { type WeightInfo = polymesh_weights::pallet_staking::WeightInfo; } - impl pallet_authority_discovery::Config for Runtime {} + impl pallet_authority_discovery::Config for Runtime { + type MaxAuthorities = MaxAuthorities; + } impl pallet_sudo::Config for Runtime { type Event = Event; @@ -277,7 +282,7 @@ macro_rules! misc_pallet_impls { type Currency = Balances; type ComplianceManager = pallet_compliance_manager::Module; type MaxNumberOfTMExtensionForAsset = MaxNumberOfTMExtensionForAsset; - type UnixTime = pallet_timestamp::Module; + type UnixTime = pallet_timestamp::Pallet; type AssetNameMaxLength = AssetNameMaxLength; type FundingRoundNameMaxLength = FundingRoundNameMaxLength; type AssetFn = Asset; @@ -354,13 +359,13 @@ macro_rules! misc_pallet_impls { type ScheduleOrigin = polymesh_primitives::EnsureRoot; type MaxScheduledPerBlock = MaxScheduledPerBlock; type WeightInfo = polymesh_weights::pallet_scheduler::WeightInfo; + type OriginPrivilegeCmp = frame_support::traits::EqualPrivilegeOnly; } impl pallet_offences::Config for Runtime { type Event = Event; type IdentificationTuple = pallet_session::historical::IdentificationTuple; type OnOffenceHandler = Staking; - type WeightSoftLimit = OffencesWeightSoftLimit; } type GrandpaKey = (sp_core::crypto::KeyTypeId, pallet_grandpa::AuthorityId); @@ -368,11 +373,14 @@ macro_rules! misc_pallet_impls { impl pallet_im_online::Config for Runtime { type AuthorityId = pallet_im_online::sr25519::AuthorityId; type Event = Event; + type NextSessionRotation = Babe; type ValidatorSet = Historical; type UnsignedPriority = ImOnlineUnsignedPriority; type ReportUnresponsiveness = Offences; - type SessionDuration = SessionDuration; type WeightInfo = polymesh_weights::pallet_im_online::WeightInfo; + type MaxKeys = MaxKeys; + type MaxPeerInHeartbeats = MaxPeerInHeartbeats; + type MaxPeerDataEncodingSize = MaxPeerDataEncodingSize; } impl pallet_grandpa::Config for Runtime { @@ -393,8 +401,11 @@ macro_rules! misc_pallet_impls { Offences, ReportLongevity, >; + type MaxAuthorities = MaxAuthorities; } + impl pallet_randomness_collective_flip::Config for Runtime {} + impl pallet_treasury::Config for Runtime { type Event = Event; type Currency = Balances; @@ -452,7 +463,7 @@ macro_rules! misc_pallet_impls { ); let raw_payload = SignedPayload::new(call, extra) .map_err(|e| { - debug::warn!("Unable to create signed payload: {:?}", e); + log::warn!("Unable to create signed payload: {:?}", e); }) .ok()?; let signature = raw_payload.using_encoded(|payload| C::sign(payload, public))?; @@ -522,7 +533,7 @@ macro_rules! runtime_apis { Block, frame_system::ChainContext, Runtime, - AllModules, + AllPallets, >; sp_api::impl_runtime_apis! { @@ -542,7 +553,7 @@ macro_rules! runtime_apis { impl sp_api::Metadata for Runtime { fn metadata() -> sp_core::OpaqueMetadata { - Runtime::metadata().into() + sp_core::OpaqueMetadata::new(Runtime::metadata().into()) } } @@ -562,18 +573,15 @@ macro_rules! runtime_apis { fn check_inherents(block: Block, data: InherentData) -> CheckInherentsResult { data.check_extrinsics(&block) } - - fn random_seed() -> ::Hash { - RandomnessCollectiveFlip::random_seed() - } } impl sp_transaction_pool::runtime_api::TaggedTransactionQueue for Runtime { fn validate_transaction( source: sp_runtime::transaction_validity::TransactionSource, tx: ::Extrinsic, + block_hash: ::Hash, ) -> sp_runtime::transaction_validity::TransactionValidity { - Executive::validate_transaction(source, tx) + Executive::validate_transaction(source, tx, block_hash) } } @@ -613,6 +621,10 @@ macro_rules! runtime_apis { .map(|p| p.encode()) .map(pallet_grandpa::fg_primitives::OpaqueKeyOwnershipProof::new) } + + fn current_set_id() -> pallet_grandpa::fg_primitives::SetId { + Grandpa::current_set_id() + } } impl sp_consensus_babe::BabeApi for Runtime { @@ -626,7 +638,7 @@ macro_rules! runtime_apis { slot_duration: Babe::slot_duration(), epoch_length: EpochDuration::get(), c: PRIMARY_PROBABILITY, - genesis_authorities: Babe::authorities(), + genesis_authorities: Babe::authorities().to_vec(), randomness: Babe::randomness(), allowed_slots: sp_consensus_babe::AllowedSlots::PrimaryAndSecondaryPlainSlots, } diff --git a/pallets/runtime/develop/Cargo.toml b/pallets/runtime/develop/Cargo.toml index 546707b8d0..d5d3e37cfb 100644 --- a/pallets/runtime/develop/Cargo.toml +++ b/pallets/runtime/develop/Cargo.toml @@ -36,7 +36,7 @@ pallet-relayer = { path = "../../relayer", default-features = false } pallet-sto = { path = "../../sto", default-features = false } pallet-settlement = { path = "../../settlement", default-features = false } pallet-staking = { path = "../../staking", default-features = false } -pallet-staking-reward-curve = { version = "3.0.0", default-features = false } +pallet-staking-reward-curve = { version = "4.0.0-dev", default-features = false } pallet-statistics = { path = "../../statistics", default-features = false } pallet-test-utils = { path = "../../test-utils", default-features = false } pallet-transaction-payment = { path = "../../transaction-payment", default-features = false } @@ -47,57 +47,59 @@ pallet-sudo = { path = "../../sudo", default-features = false } # Others serde = { version = "1.0.104", default-features = false } +log = "0.4.8" # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -sp-version = { version = "3.0.0", default-features = false } -sp-api = { version = "3.0.0", default-features = false } -sp-inherents = { version = "3.0.0", default-features = false } -sp-offchain = { version = "3.0.0", default-features = false } -sp-staking = { version = "3.0.0", default-features = false } -sp-consensus-babe = { version = "0.9.0", default-features = false } -sp-session = { version = "3.0.0", default-features = false } -sp-authority-discovery = { version = "3.0.0", default-features = false } -sp-transaction-pool = { version = "3.0.0", default-features = false } -sp-block-builder = { version = "3.0.0", default-features = false } -sp-arithmetic = { version = "3.0.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-version = { version = "4.0.0-dev", default-features = false } +sp-api = { version = "4.0.0-dev", default-features = false } +sp-inherents = { version = "4.0.0-dev", default-features = false } +sp-offchain = { version = "4.0.0-dev", default-features = false } +sp-staking = { version = "4.0.0-dev", default-features = false } +sp-consensus-babe = { version = "0.10.0-dev", default-features = false } +sp-session = { version = "4.0.0-dev", default-features = false } +sp-authority-discovery = { version = "4.0.0-dev", default-features = false } +sp-transaction-pool = { version = "4.0.0-dev", default-features = false } +sp-block-builder = { version = "4.0.0-dev", default-features = false } +sp-arithmetic = { version = "4.0.0-dev", default-features = false } # -pallet-authorship = { version = "3.0.0", default-features = false } -#pallet-contracts = { version = "3.0.0", default-features = false } -#pallet-contracts-primitives = { version = "3.0.0", default-features = false } -pallet-executive = { package = "frame-executive", version = "3.0.0", default-features = false } -pallet-grandpa = { version = "3.0.0", default-features = false } -pallet-im-online = { version = "3.0.0", default-features = false } -pallet-indices = { version = "3.0.0", default-features = false } -pallet-offences = { version = "3.0.0", default-features = false } -pallet-session = { version = "3.0.0", default-features = false } -pallet-timestamp = { version = "3.0.0", default-features = false } -pallet-babe = { version = "3.0.0", default-features = false } -pallet-authority-discovery = { version = "3.0.0", default-features = false } -pallet-randomness-collective-flip = { version = "3.0.0", default-features = false } -pallet-scheduler = { version = "3.0.0", default-features = false } +pallet-authorship = { version = "4.0.0-dev", default-features = false } +#pallet-contracts = { version = "4.0.0-dev", default-features = false } +#pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false } +pallet-executive = { package = "frame-executive", version = "4.0.0-dev", default-features = false } +pallet-grandpa = { version = "4.0.0-dev", default-features = false } +pallet-im-online = { version = "4.0.0-dev", default-features = false } +pallet-indices = { version = "4.0.0-dev", default-features = false } +pallet-offences = { version = "4.0.0-dev", default-features = false } +pallet-session = { version = "4.0.0-dev", default-features = false } +pallet-timestamp = { version = "4.0.0-dev", default-features = false } +pallet-babe = { version = "4.0.0-dev", default-features = false } +pallet-authority-discovery = { version = "4.0.0-dev", default-features = false } +pallet-randomness-collective-flip = { version = "4.0.0-dev", default-features = false } +pallet-scheduler = { version = "4.0.0-dev", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } # Crypto -cryptography_core = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, tag = "confidential-identity-v1.1.3" } +cryptography_core = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, branch = "confidential-identity-v1" } # RPC -frame-system-rpc-runtime-api = { version = "3.0.0", default-features = false } +frame-system-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } pallet-group-rpc-runtime-api = { path = "../../group/rpc/runtime-api", default-features = false } pallet-protocol-fee-rpc-runtime-api = { path = "../../protocol-fee/rpc/runtime-api", default-features = false } -#pallet-contracts-rpc-runtime-api = { version = "3.0.0", default-features = false } +#pallet-contracts-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } pallet-staking-rpc-runtime-api = { path = "../../staking/rpc/runtime-api", default-features = false } node-rpc-runtime-api = { path = "../../../rpc/runtime-api", default-features = false } # Used for runtime benchmarking -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } -frame-system-benchmarking = { version = "3.0.0", default-features = false, optional = true } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } +frame-system-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } hex-literal = { version = "0.3.1", optional = true } [build-dependencies] diff --git a/pallets/runtime/develop/src/benchmarks/pallet_session.rs b/pallets/runtime/develop/src/benchmarks/pallet_session.rs index 65ae51f0d8..44c398b355 100644 --- a/pallets/runtime/develop/src/benchmarks/pallet_session.rs +++ b/pallets/runtime/develop/src/benchmarks/pallet_session.rs @@ -21,13 +21,11 @@ // Modified by Polymath Inc - 4th January 2021 // - It uses our Staking pallet. -#![cfg_attr(not(feature = "std"), no_std)] - use core::convert::TryInto; use frame_benchmarking::benchmarks; use frame_support::traits::{Currency, OnInitialize}; use frame_system::RawOrigin; -use pallet_session::{Module as Session, *}; +use pallet_session::{Call, Pallet as Session}; use pallet_staking::{ benchmarking::create_validator_with_nominators_with_balance, MAX_NOMINATIONS, }; @@ -37,15 +35,15 @@ use sp_std::vec; use polymesh_common_utilities::constants::currency::POLY; -pub struct Module(pallet_session::Module); +pub struct Pallet(Session); pub trait Config: pallet_session::Config + pallet_session::historical::Config + pallet_staking::Config { } -impl OnInitialize for Module { +impl OnInitialize for Pallet { fn on_initialize(n: T::BlockNumber) -> frame_support::weights::Weight { - pallet_session::Module::::on_initialize(n) + Session::::on_initialize(n) } } @@ -99,8 +97,10 @@ benchmarks! { set_keys { let n = MAX_NOMINATIONS as u32; let validator = ValidatorInfo::::build(n).unwrap(); + let proof = validator.proof.clone(); + let keys = validator.keys.clone(); - }: _(RawOrigin::Signed(validator.controller), validator.keys, validator.proof) + }: _(RawOrigin::Signed(validator.controller), keys, proof) purge_keys { let n = MAX_NOMINATIONS as u32; diff --git a/pallets/runtime/develop/src/fee_details.rs b/pallets/runtime/develop/src/fee_details.rs index 0fa6904435..9f26ba1a39 100644 --- a/pallets/runtime/develop/src/fee_details.rs +++ b/pallets/runtime/develop/src/fee_details.rs @@ -58,50 +58,54 @@ where match call { // Register did call. // all did registration should go through CDD - Call::TestUtils(pallet_test_utils::Call::register_did(..)) => Ok(Some(caller.clone())), + Call::TestUtils(pallet_test_utils::Call::register_did { .. }) => { + Ok(Some(caller.clone())) + } // Call made by a new Account key to accept invitation to become a secondary key // of an existing multisig that has a valid CDD. The auth should be valid. - Call::MultiSig(pallet_multisig::Call::accept_multisig_signer_as_key(auth_id)) => { + Call::MultiSig(pallet_multisig::Call::accept_multisig_signer_as_key { auth_id }) => { is_auth_valid(caller, auth_id, CallType::AcceptMultiSigSigner) } // Call made by a new Account key to accept invitation to become a secondary key // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::join_identity_as_key(auth_id, ..)) => { + Call::Identity(pallet_identity::Call::join_identity_as_key { auth_id }) => { is_auth_valid(caller, auth_id, CallType::AcceptIdentitySecondary) } // Call made by a new Account key to accept invitation to become the primary key // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::accept_primary_key(rotation_auth_id, ..)) => { - is_auth_valid(caller, rotation_auth_id, CallType::AcceptIdentityPrimary) - } + Call::Identity(pallet_identity::Call::accept_primary_key { + rotation_auth_id, .. + }) => is_auth_valid(caller, rotation_auth_id, CallType::AcceptIdentityPrimary), // Call made by a new Account key to accept invitation to become the primary key // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::rotate_primary_key_to_secondary( - rotation_auth_id, - .., - )) => is_auth_valid(caller, rotation_auth_id, CallType::RotatePrimaryToSecondary), + Call::Identity(pallet_identity::Call::rotate_primary_key_to_secondary { + auth_id, + .. + }) => is_auth_valid(caller, auth_id, CallType::RotatePrimaryToSecondary), // Call made by a new Account key to remove invitation for certain authorizations // in an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::remove_authorization(_, auth_id, true)) => { - is_auth_valid(caller, auth_id, CallType::RemoveAuthorization) - } + Call::Identity(pallet_identity::Call::remove_authorization { + auth_id, + _auth_issuer_pays: true, + .. + }) => is_auth_valid(caller, auth_id, CallType::RemoveAuthorization), // Call made by a user key to accept subsidy from a paying key. The auth should be valid. - Call::Relayer(pallet_relayer::Call::accept_paying_key(auth_id)) => { + Call::Relayer(pallet_relayer::Call::accept_paying_key { auth_id }) => { is_auth_valid(caller, auth_id, CallType::AcceptRelayerPayingKey) } // Call made by an Account key to propose, reject or approve a multisig transaction. // The multisig must have valid CDD and the caller must be a signer of the multisig. Call::MultiSig( - pallet_multisig::Call::create_or_approve_proposal_as_key(multisig, ..) - | pallet_multisig::Call::create_proposal_as_key(multisig, ..) - | pallet_multisig::Call::approve_as_key(multisig, ..) - | pallet_multisig::Call::reject_as_key(multisig, ..), + pallet_multisig::Call::create_or_approve_proposal_as_key { multisig, .. } + | pallet_multisig::Call::create_proposal_as_key { multisig, .. } + | pallet_multisig::Call::approve_as_key { multisig, .. } + | pallet_multisig::Call::reject_as_key { multisig, .. }, ) => handle_multisig(multisig, caller), // Call made by an Account key to propose or approve a multisig transaction via the bridge helper // The multisig must have valid CDD and the caller must be a signer of the multisig. Call::Bridge( - pallet_bridge::Call::propose_bridge_tx(..) - | pallet_bridge::Call::batch_propose_bridge_tx(..), + pallet_bridge::Call::propose_bridge_tx { .. } + | pallet_bridge::Call::batch_propose_bridge_tx { .. }, ) => handle_multisig(&Bridge::controller_key(), caller), // All other calls. // diff --git a/pallets/runtime/develop/src/runtime.rs b/pallets/runtime/develop/src/runtime.rs index 841a8681b8..de3afb2084 100644 --- a/pallets/runtime/develop/src/runtime.rs +++ b/pallets/runtime/develop/src/runtime.rs @@ -3,10 +3,10 @@ use crate::{constants::time::*, fee_details::CddHandler}; use codec::Encode; use frame_support::{ - construct_runtime, debug, + construct_runtime, dispatch::DispatchResult, parameter_types, - traits::{KeyOwnerProofSystem, Randomness, SplitTwoWays}, + traits::{tokens::imbalance::SplitTwoWays, KeyOwnerProofSystem}, weights::Weight, }; use pallet_asset::checkpoint as pallet_checkpoint; @@ -92,15 +92,6 @@ parameter_types! { // Authorship: pub const UncleGenerations: BlockNumber = 0; - // Session: - // NOTE: `SessionHandler` and `SessionKeys` are co-dependent: - // One key will be used for each handler. - // The number and order of items in `SessionHandler` *MUST* be the same number - // and order of keys in `SessionKeys`. - // TODO: Introduce some structure to tie these together to make it a bit less of a footgun. - // This should be easy, since OneSessionHandler trait provides the `Key` as an associated type. #2858 - pub const DisabledValidatorsThreshold: Perbill = Perbill::from_percent(17); - // Contracts: pub const NetworkShareInFee: Perbill = Perbill::from_percent(60); pub const TombstoneDeposit: Balance = 0; @@ -112,13 +103,14 @@ parameter_types! { // Settlement: pub const MaxLegsInInstruction: u32 = 10; - // Offences: - pub OffencesWeightSoftLimit: Weight = Perbill::from_percent(60) * MaximumBlockWeight::get(); - // I'm online: - pub const SessionDuration: BlockNumber = EPOCH_DURATION_IN_SLOTS as _; pub const ImOnlineUnsignedPriority: TransactionPriority = TransactionPriority::max_value(); + pub const MaxAuthorities: u32 = 100_000; + pub const MaxKeys: u32 = 10_000; + pub const MaxPeerInHeartbeats: u32 = 10_000; + pub const MaxPeerDataEncodingSize: u32 = 1_000; + // Assets: pub const MaxNumberOfTMExtensionForAsset: u32 = 5; pub const AssetNameMaxLength: u32 = 128; @@ -187,7 +179,7 @@ parameter_types! { pub const MaxIterations: u32 = 10; pub const MaxValidatorPerIdentity: Permill = Permill::from_percent(33); // 0.05%. The higher the value, the more strict solution acceptance becomes. - pub MinSolutionScoreBump: Perbill = Perbill::from_rational_approximation(5u32, 10_000); + pub MinSolutionScoreBump: Perbill = Perbill::from_rational(5u32, 10_000); pub const MaxVariableInflationTotalIssuance: Balance = 1_000_000_000 * POLY; pub const FixedYearlyReward: Balance = 140_000_000 * POLY; pub const MinimumBond: Balance = 1 * POLY; @@ -315,88 +307,88 @@ construct_runtime!( NodeBlock = polymesh_primitives::Block, UncheckedExtrinsic = UncheckedExtrinsic { - System: frame_system::{Module, Call, Config, Storage, Event}, - Babe: pallet_babe::{Module, Call, Storage, Config, ValidateUnsigned}, - Timestamp: pallet_timestamp::{Module, Call, Storage, Inherent}, - Indices: pallet_indices::{Module, Call, Storage, Config, Event}, - Authorship: pallet_authorship::{Module, Call, Storage, Inherent}, + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Babe: pallet_babe::{Pallet, Call, Storage, Config, ValidateUnsigned}, + Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent}, + Indices: pallet_indices::{Pallet, Call, Storage, Config, Event}, + Authorship: pallet_authorship::{Pallet, Call, Storage, Inherent}, // Balance: Genesis config dependencies: System. - Balances: pallet_balances::{Module, Call, Storage, Config, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, // TransactionPayment: Genesis config dependencies: Balance. - TransactionPayment: pallet_transaction_payment::{Module, Storage}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, // Identity: Genesis config deps: Timestamp. - Identity: pallet_identity::{Module, Call, Storage, Event, Config}, + Identity: pallet_identity::{Pallet, Call, Storage, Event, Config}, // Polymesh Committees // CddServiceProviders (group only): Genesis config deps: Identity - CddServiceProviders: pallet_group::::{Module, Call, Storage, Event, Config}, + CddServiceProviders: pallet_group::::{Pallet, Call, Storage, Event, Config}, // Governance Council (committee) - PolymeshCommittee: pallet_committee::::{Module, Call, Storage, Origin, Event, Config}, + PolymeshCommittee: pallet_committee::::{Pallet, Call, Storage, Origin, Event, Config}, // CommitteeMembership: Genesis config deps: PolymeshCommittee, Identity. - CommitteeMembership: pallet_group::::{Module, Call, Storage, Event, Config}, + CommitteeMembership: pallet_group::::{Pallet, Call, Storage, Event, Config}, // Technical Committee - TechnicalCommittee: pallet_committee::::{Module, Call, Storage, Origin, Event, Config}, + TechnicalCommittee: pallet_committee::::{Pallet, Call, Storage, Origin, Event, Config}, // TechnicalCommitteeMembership: Genesis config deps: TechnicalCommittee, Identity - TechnicalCommitteeMembership: pallet_group::::{Module, Call, Storage, Event, Config}, + TechnicalCommitteeMembership: pallet_group::::{Pallet, Call, Storage, Event, Config}, // Upgrade Committee - UpgradeCommittee: pallet_committee::::{Module, Call, Storage, Origin, Event, Config}, + UpgradeCommittee: pallet_committee::::{Pallet, Call, Storage, Origin, Event, Config}, // UpgradeCommitteeMembership: Genesis config deps: UpgradeCommittee, Identity - UpgradeCommitteeMembership: pallet_group::::{Module, Call, Storage, Event, Config}, + UpgradeCommitteeMembership: pallet_group::::{Pallet, Call, Storage, Event, Config}, - MultiSig: pallet_multisig::{Module, Call, Config, Storage, Event}, + MultiSig: pallet_multisig::{Pallet, Call, Config, Storage, Event}, // Bridge: Genesis config deps: Multisig, Identity, Committees - Bridge: pallet_bridge::{Module, Call, Storage, Config, Event}, + Bridge: pallet_bridge::{Pallet, Call, Storage, Config, Event}, // Staking: Genesis config deps: Bridge, Balances, Indices, Identity, Babe, Timestamp, Committees - Staking: pallet_staking::{Module, Call, Config, Storage, Event, ValidateUnsigned}, - Offences: pallet_offences::{Module, Call, Storage, Event}, + Staking: pallet_staking::{Pallet, Call, Config, Storage, Event, ValidateUnsigned}, + Offences: pallet_offences::{Pallet, Storage, Event}, // Session: Genesis config deps: System. - Session: pallet_session::{Module, Call, Storage, Event, Config}, - AuthorityDiscovery: pallet_authority_discovery::{Module, Call, Config}, - Grandpa: pallet_grandpa::{Module, Call, Storage, Config, Event}, - Historical: pallet_session_historical::{Module}, - ImOnline: pallet_im_online::{Module, Call, Storage, Event, ValidateUnsigned, Config}, - RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Module, Call, Storage}, + Session: pallet_session::{Pallet, Call, Storage, Event, Config}, + AuthorityDiscovery: pallet_authority_discovery::{Pallet, Config}, + Grandpa: pallet_grandpa::{Pallet, Call, Storage, Config, Event}, + Historical: pallet_session_historical::{Pallet}, + ImOnline: pallet_im_online::{Pallet, Call, Storage, Event, ValidateUnsigned, Config}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, // Sudo. Usable initially. - Sudo: pallet_sudo::{Module, Call, Config, Storage, Event}, + Sudo: pallet_sudo::{Pallet, Call, Config, Storage, Event}, /* // Contracts - BaseContracts: pallet_contracts::{Module, Config, Storage, Event}, - Contracts: polymesh_contracts::{Module, Call, Storage, Event}, + BaseContracts: pallet_contracts::{Pallet, Config, Storage, Event}, + Contracts: polymesh_contracts::{Pallet, Call, Storage, Event}, */ // Asset: Genesis config deps: Timestamp, - Asset: pallet_asset::{Module, Call, Storage, Config, Event}, - CapitalDistribution: pallet_capital_distribution::{Module, Call, Storage, Event}, - Checkpoint: pallet_checkpoint::{Module, Call, Storage, Event, Config}, - ComplianceManager: pallet_compliance_manager::{Module, Call, Storage, Event}, - CorporateAction: pallet_corporate_actions::{Module, Call, Storage, Event, Config}, - CorporateBallot: pallet_corporate_ballot::{Module, Call, Storage, Event}, - Permissions: pallet_permissions::{Module}, - Pips: pallet_pips::{Module, Call, Storage, Event, Config}, - Portfolio: pallet_portfolio::{Module, Call, Storage, Event}, - ProtocolFee: pallet_protocol_fee::{Module, Call, Storage, Event, Config}, - Scheduler: pallet_scheduler::{Module, Call, Storage, Event}, - Settlement: pallet_settlement::{Module, Call, Storage, Event, Config}, - Statistics: pallet_statistics::{Module, Call, Storage, Event}, - Sto: pallet_sto::{Module, Call, Storage, Event}, - Treasury: pallet_treasury::{Module, Call, Event}, - Utility: pallet_utility::{Module, Call, Storage, Event}, - Base: pallet_base::{Module, Call, Event}, - ExternalAgents: pallet_external_agents::{Module, Call, Storage, Event}, - Relayer: pallet_relayer::{Module, Call, Storage, Event}, - Rewards: pallet_rewards::{Module, Call, Storage, Event, Config, ValidateUnsigned}, - TestUtils: pallet_test_utils::{Module, Call, Storage, Event } = 50, + Asset: pallet_asset::{Pallet, Call, Storage, Config, Event}, + CapitalDistribution: pallet_capital_distribution::{Pallet, Call, Storage, Event}, + Checkpoint: pallet_checkpoint::{Pallet, Call, Storage, Event, Config}, + ComplianceManager: pallet_compliance_manager::{Pallet, Call, Storage, Event}, + CorporateAction: pallet_corporate_actions::{Pallet, Call, Storage, Event, Config}, + CorporateBallot: pallet_corporate_ballot::{Pallet, Call, Storage, Event}, + Permissions: pallet_permissions::{Pallet}, + Pips: pallet_pips::{Pallet, Call, Storage, Event, Config}, + Portfolio: pallet_portfolio::{Pallet, Call, Storage, Event}, + ProtocolFee: pallet_protocol_fee::{Pallet, Call, Storage, Event, Config}, + Scheduler: pallet_scheduler::{Pallet, Call, Storage, Event}, + Settlement: pallet_settlement::{Pallet, Call, Storage, Event, Config}, + Statistics: pallet_statistics::{Pallet, Call, Storage, Event}, + Sto: pallet_sto::{Pallet, Call, Storage, Event}, + Treasury: pallet_treasury::{Pallet, Call, Event}, + Utility: pallet_utility::{Pallet, Call, Storage, Event}, + Base: pallet_base::{Pallet, Call, Event}, + ExternalAgents: pallet_external_agents::{Pallet, Call, Storage, Event}, + Relayer: pallet_relayer::{Pallet, Call, Storage, Event}, + Rewards: pallet_rewards::{Pallet, Call, Storage, Event, Config, ValidateUnsigned}, + TestUtils: pallet_test_utils::{Pallet, Call, Storage, Event } = 50, } ); @@ -408,10 +400,10 @@ polymesh_runtime_common::runtime_apis! { ) -> Result, sp_runtime::RuntimeString> { use frame_benchmarking::{Benchmarking, BenchmarkBatch, add_benchmark, TrackedStorageKey}; - type SystemBench = frame_system_benchmarking::Module; - impl frame_system_benchmarking::Config for Runtime {} + type SystemBench = frame_system_benchmarking::Pallet; + type SessionBench = crate::benchmarks::pallet_session::Pallet; - type SessionBench = crate::benchmarks::pallet_session::Module; + impl frame_system_benchmarking::Config for Runtime {} impl crate::benchmarks::pallet_session::Config for Runtime {} let whitelist: Vec = vec![ @@ -451,7 +443,6 @@ polymesh_runtime_common::runtime_apis! { add_benchmark!(params, batches, pallet_external_agents, ExternalAgents); add_benchmark!(params, batches, pallet_relayer, Relayer); add_benchmark!(params, batches, pallet_rewards, Rewards); - //add_benchmark!(params, batches, polymesh_contracts, Contracts); add_benchmark!(params, batches, pallet_committee, PolymeshCommittee); add_benchmark!(params, batches, pallet_utility, Utility); add_benchmark!(params, batches, pallet_treasury, Treasury); @@ -470,5 +461,55 @@ polymesh_runtime_common::runtime_apis! { if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) } Ok(batches) } + + fn benchmark_metadata(extra: bool) -> ( + Vec, + Vec, + ) { + use frame_support::traits::StorageInfoTrait; + use frame_benchmarking::{list_benchmark, Benchmarking, BenchmarkList}; + type SystemBench = frame_system_benchmarking::Pallet; + use crate::benchmarks::pallet_session::Pallet as SessionBench; + + let mut list = Vec::::new(); + + list_benchmark!(list, extra, pallet_asset, Asset); + list_benchmark!(list, extra, pallet_balances, Balances); + list_benchmark!(list, extra, pallet_identity, Identity); + list_benchmark!(list, extra, pallet_pips, Pips); + list_benchmark!(list, extra, pallet_multisig, MultiSig); + list_benchmark!(list, extra, pallet_portfolio, Portfolio); + list_benchmark!(list, extra, pallet_protocol_fee, ProtocolFee); + list_benchmark!(list, extra, frame_system, SystemBench); + list_benchmark!(list, extra, pallet_timestamp, Timestamp); + list_benchmark!(list, extra, pallet_settlement, Settlement); + list_benchmark!(list, extra, pallet_sto, Sto); + list_benchmark!(list, extra, pallet_checkpoint, Checkpoint); + list_benchmark!(list, extra, pallet_compliance_manager, ComplianceManager); + list_benchmark!(list, extra, pallet_corporate_actions, CorporateAction); + list_benchmark!(list, extra, pallet_corporate_ballot, CorporateBallot); + list_benchmark!(list, extra, pallet_capital_distribution, CapitalDistribution); + list_benchmark!(list, extra, pallet_external_agents, ExternalAgents); + list_benchmark!(list, extra, pallet_relayer, Relayer); + list_benchmark!(list, extra, pallet_rewards, Rewards); + list_benchmark!(list, extra, pallet_committee, PolymeshCommittee); + list_benchmark!(list, extra, pallet_utility, Utility); + list_benchmark!(list, extra, pallet_treasury, Treasury); + list_benchmark!(list, extra, pallet_im_online, ImOnline); + list_benchmark!(list, extra, pallet_group, CddServiceProviders); + list_benchmark!(list, extra, pallet_statistics, Statistics); + list_benchmark!(list, extra, pallet_permissions, Permissions); + list_benchmark!(list, extra, pallet_babe, Babe); + list_benchmark!(list, extra, pallet_indices, Indices); + list_benchmark!(list, extra, pallet_session, SessionBench::); + list_benchmark!(list, extra, pallet_grandpa, Grandpa); + list_benchmark!(list, extra, pallet_scheduler, Scheduler); + list_benchmark!(list, extra, pallet_staking, Staking); + list_benchmark!(list, extra, pallet_test_utils, TestUtils); + + let storage_info = AllPalletsWithSystem::storage_info(); + + return (list, storage_info) + } } } diff --git a/pallets/runtime/extensions/Cargo.toml b/pallets/runtime/extensions/Cargo.toml index 4936b1a3a4..8613bcd642 100644 --- a/pallets/runtime/extensions/Cargo.toml +++ b/pallets/runtime/extensions/Cargo.toml @@ -14,11 +14,12 @@ pallet-transaction-payment = { path = "../../transaction-payment", default-featu pallet-permissions = { path = "../../permissions", default-features = false } # Substrate -frame-system = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-runtime = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } [features] default = ["std"] @@ -32,4 +33,3 @@ std = [ "sp-runtime/std", "sp-std/std", ] - diff --git a/pallets/runtime/extensions/src/check_weight.rs b/pallets/runtime/extensions/src/check_weight.rs index 49c68bc57c..0f5f8b91c7 100644 --- a/pallets/runtime/extensions/src/check_weight.rs +++ b/pallets/runtime/extensions/src/check_weight.rs @@ -21,6 +21,7 @@ use codec::{Decode, Encode}; use frame_support::weights::{DispatchClass, DispatchInfo, PostDispatchInfo}; use frame_system::{CheckWeight as CW, Config}; +use scale_info::TypeInfo; use sp_runtime::{ traits::{DispatchInfoOf, Dispatchable, PostDispatchInfoOf, SignedExtension}, transaction_validity::{InvalidTransaction, TransactionValidity, TransactionValidityError}, @@ -28,7 +29,8 @@ use sp_runtime::{ }; /// Block resource (weight) limit check. -#[derive(Encode, Decode, Clone, Eq, PartialEq, Default)] +#[derive(Encode, Decode, Clone, Eq, PartialEq, Default, TypeInfo)] +#[scale_info(skip_type_params(T))] pub struct CheckWeight(CW); impl CheckWeight diff --git a/pallets/runtime/mainnet/Cargo.toml b/pallets/runtime/mainnet/Cargo.toml index 36cd059822..5c904a309e 100644 --- a/pallets/runtime/mainnet/Cargo.toml +++ b/pallets/runtime/mainnet/Cargo.toml @@ -48,9 +48,10 @@ pallet-utility = { path = "../../utility", default-features = false } node-rpc-runtime-api = { path = "../../../rpc/runtime-api", default-features = false } pallet-staking-rpc-runtime-api = { package = "pallet-staking-rpc-runtime-api", path = "../../staking/rpc/runtime-api", default-features = false } pallet-protocol-fee-rpc-runtime-api = { package = "pallet-protocol-fee-rpc-runtime-api", path = "../../protocol-fee/rpc/runtime-api", default-features = false } -#pallet-contracts-rpc-runtime-api = { version = "3.0.0", default-features = false } +#pallet-contracts-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } # Others +log = "0.4.8" lazy_static = { version = "1.4.0", default-features = false } serde = { version = "1.0.104", default-features = false } serde_derive = { version = "1.0.104", optional = true } @@ -58,42 +59,43 @@ smallvec = "1.4.0" # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -frame-support = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -frame-system-rpc-runtime-api = { version = "3.0.0", default-features = false } -pallet-authority-discovery = { version = "3.0.0", default-features = false } -pallet-authorship = { version = "3.0.0", default-features = false } -pallet-babe = { version = "3.0.0", default-features = false } -#pallet-contracts = { version = "3.0.0", default-features = false } -#pallet-contracts-primitives = { version = "3.0.0", default-features = false} -pallet-executive = { package = "frame-executive", version = "3.0.0", default-features = false } -pallet-grandpa = { version = "3.0.0", default-features = false } -pallet-im-online = { version = "3.0.0", default-features = false } -pallet-indices = { version = "3.0.0", default-features = false } -pallet-offences = { version = "3.0.0", default-features = false } -pallet-randomness-collective-flip = { version = "3.0.0", default-features = false } -pallet-scheduler = { version = "3.0.0", default-features = false } -pallet-session = { version = "3.0.0", default-features = false } -pallet-staking-reward-curve = { version = "3.0.0", default-features = false } -pallet-timestamp = { version = "3.0.0", default-features = false } -sp-api = { version = "3.0.0", default-features = false } -sp-arithmetic = { version = "3.0.0", default-features = false } -sp-authority-discovery = { version = "3.0.0", default-features = false } -sp-block-builder = { version = "3.0.0", default-features = false } -sp-consensus-babe = { version = "0.9.0", default-features = false } -sp-core = { version = "3.0.0", default-features = false } -sp-inherents = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } -sp-offchain = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -sp-session = { version = "3.0.0", default-features = false } -sp-staking = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-transaction-pool = { version = "3.0.0", default-features = false } -sp-version = { version = "3.0.0", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +frame-system-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } +pallet-authority-discovery = { version = "4.0.0-dev", default-features = false } +pallet-authorship = { version = "4.0.0-dev", default-features = false } +pallet-babe = { version = "4.0.0-dev", default-features = false } +#pallet-contracts = { version = "4.0.0-dev", default-features = false } +#pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false} +pallet-executive = { package = "frame-executive", version = "4.0.0-dev", default-features = false } +pallet-grandpa = { version = "4.0.0-dev", default-features = false } +pallet-im-online = { version = "4.0.0-dev", default-features = false } +pallet-indices = { version = "4.0.0-dev", default-features = false } +pallet-offences = { version = "4.0.0-dev", default-features = false } +pallet-randomness-collective-flip = { version = "4.0.0-dev", default-features = false } +pallet-scheduler = { version = "4.0.0-dev", default-features = false } +pallet-session = { version = "4.0.0-dev", default-features = false } +pallet-staking-reward-curve = { version = "4.0.0-dev", default-features = false } +pallet-timestamp = { version = "4.0.0-dev", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-api = { version = "4.0.0-dev", default-features = false } +sp-arithmetic = { version = "4.0.0-dev", default-features = false } +sp-authority-discovery = { version = "4.0.0-dev", default-features = false } +sp-block-builder = { version = "4.0.0-dev", default-features = false } +sp-consensus-babe = { version = "0.10.0-dev", default-features = false } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-inherents = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-offchain = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-session = { version = "4.0.0-dev", default-features = false } +sp-staking = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-transaction-pool = { version = "4.0.0-dev", default-features = false } +sp-version = { version = "4.0.0-dev", default-features = false } # Crypto -cryptography_core = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, tag = "confidential-identity-v1.1.3" } +cryptography_core = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, branch = "confidential-identity-v1" } [build-dependencies] polymesh-build-tool = { path = "../build_tool", default-features = false } diff --git a/pallets/runtime/mainnet/src/fee_details.rs b/pallets/runtime/mainnet/src/fee_details.rs index e4385ae334..4e9e343c5e 100644 --- a/pallets/runtime/mainnet/src/fee_details.rs +++ b/pallets/runtime/mainnet/src/fee_details.rs @@ -58,47 +58,49 @@ where match call { // Call made by a new Account key to accept invitation to become a secondary key // of an existing multisig that has a valid CDD. The auth should be valid. - Call::MultiSig(pallet_multisig::Call::accept_multisig_signer_as_key(auth_id)) => { + Call::MultiSig(pallet_multisig::Call::accept_multisig_signer_as_key { auth_id }) => { is_auth_valid(caller, auth_id, CallType::AcceptMultiSigSigner) } // Call made by a new Account key to accept invitation to become a secondary key // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::join_identity_as_key(auth_id, ..)) => { + Call::Identity(pallet_identity::Call::join_identity_as_key { auth_id, .. }) => { is_auth_valid(caller, auth_id, CallType::AcceptIdentitySecondary) } // Call made by a new Account key to accept invitation to become the primary key // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::accept_primary_key(rotation_auth_id, ..)) => { - is_auth_valid(caller, rotation_auth_id, CallType::AcceptIdentityPrimary) - } + Call::Identity(pallet_identity::Call::accept_primary_key { + rotation_auth_id, .. + }) => is_auth_valid(caller, rotation_auth_id, CallType::AcceptIdentityPrimary), // Call made by a new Account key to accept invitation to become the primary key // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::rotate_primary_key_to_secondary( - rotation_auth_id, - .., - )) => is_auth_valid(caller, rotation_auth_id, CallType::RotatePrimaryToSecondary), + Call::Identity(pallet_identity::Call::rotate_primary_key_to_secondary { + auth_id, + .. + }) => is_auth_valid(caller, auth_id, CallType::RotatePrimaryToSecondary), // Call made by a new Account key to remove invitation for certain authorizations // in an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::remove_authorization(_, auth_id, true)) => { - is_auth_valid(caller, auth_id, CallType::RemoveAuthorization) - } + Call::Identity(pallet_identity::Call::remove_authorization { + auth_id, + _auth_issuer_pays: true, + .. + }) => is_auth_valid(caller, auth_id, CallType::RemoveAuthorization), // Call made by a user key to accept subsidy from a paying key. The auth should be valid. - Call::Relayer(pallet_relayer::Call::accept_paying_key(auth_id)) => { + Call::Relayer(pallet_relayer::Call::accept_paying_key { auth_id }) => { is_auth_valid(caller, auth_id, CallType::AcceptRelayerPayingKey) } // Call made by an Account key to propose, reject or approve a multisig transaction. // The multisig must have valid CDD and the caller must be a signer of the multisig. Call::MultiSig( - pallet_multisig::Call::create_or_approve_proposal_as_key(multisig, ..) - | pallet_multisig::Call::create_proposal_as_key(multisig, ..) - | pallet_multisig::Call::approve_as_key(multisig, ..) - | pallet_multisig::Call::reject_as_key(multisig, ..), + pallet_multisig::Call::create_or_approve_proposal_as_key { multisig, .. } + | pallet_multisig::Call::create_proposal_as_key { multisig, .. } + | pallet_multisig::Call::approve_as_key { multisig, .. } + | pallet_multisig::Call::reject_as_key { multisig, .. }, ) => handle_multisig(multisig, caller), // Call made by an Account key to propose or approve a multisig transaction via the bridge helper // The multisig must have valid CDD and the caller must be a signer of the multisig. Call::Bridge( - pallet_bridge::Call::propose_bridge_tx(..) - | pallet_bridge::Call::batch_propose_bridge_tx(..), + pallet_bridge::Call::propose_bridge_tx { .. } + | pallet_bridge::Call::batch_propose_bridge_tx { .. }, ) => handle_multisig(&Bridge::controller_key(), caller), // All other calls. // diff --git a/pallets/runtime/mainnet/src/runtime.rs b/pallets/runtime/mainnet/src/runtime.rs index f17a48b9bc..355f3c0774 100644 --- a/pallets/runtime/mainnet/src/runtime.rs +++ b/pallets/runtime/mainnet/src/runtime.rs @@ -3,8 +3,8 @@ use crate::{constants::time::*, fee_details::CddHandler}; use codec::Encode; use frame_support::{ - construct_runtime, debug, parameter_types, - traits::{KeyOwnerProofSystem, Randomness, SplitTwoWays}, + construct_runtime, parameter_types, + traits::{tokens::imbalance::SplitTwoWays, KeyOwnerProofSystem}, weights::Weight, }; //use pallet_contracts::weights::WeightInfo; @@ -90,15 +90,6 @@ parameter_types! { // Authorship: pub const UncleGenerations: BlockNumber = 0; - // Session: - // NOTE: `SessionHandler` and `SessionKeys` are co-dependent: - // One key will be used for each handler. - // The number and order of items in `SessionHandler` *MUST* be the same number - // and order of keys in `SessionKeys`. - // TODO: Introduce some structure to tie these together to make it a bit less of a footgun. - // This should be easy, since OneSessionHandler trait provides the `Key` as an associated type. #2858 - pub const DisabledValidatorsThreshold: Perbill = Perbill::from_percent(17); - /* // Contracts: pub const NetworkShareInFee: Perbill = Perbill::from_percent(60); @@ -113,13 +104,14 @@ parameter_types! { // Settlement: pub const MaxLegsInInstruction: u32 = 10; - // Offences: - pub OffencesWeightSoftLimit: Weight = Perbill::from_percent(60) * MaximumBlockWeight::get(); - // I'm online: - pub const SessionDuration: BlockNumber = EPOCH_DURATION_IN_SLOTS as _; pub const ImOnlineUnsignedPriority: TransactionPriority = TransactionPriority::max_value(); + pub const MaxAuthorities: u32 = 100_000; + pub const MaxKeys: u32 = 10_000; + pub const MaxPeerInHeartbeats: u32 = 10_000; + pub const MaxPeerDataEncodingSize: u32 = 1_000; + // Assets: pub const MaxNumberOfTMExtensionForAsset: u32 = 5; pub const AssetNameMaxLength: u32 = 128; @@ -188,7 +180,7 @@ parameter_types! { pub const MaxIterations: u32 = 10; pub const MaxValidatorPerIdentity: Permill = Permill::from_percent(33); // 0.05%. The higher the value, the more strict solution acceptance becomes. - pub MinSolutionScoreBump: Perbill = Perbill::from_rational_approximation(5u32, 10_000); + pub MinSolutionScoreBump: Perbill = Perbill::from_rational(5u32, 10_000); pub const MaxVariableInflationTotalIssuance: Balance = 1_000_000_000 * POLY; pub const FixedYearlyReward: Balance = 140_000_000 * POLY; pub const MinimumBond: Balance = 1 * POLY; @@ -299,87 +291,87 @@ construct_runtime!( NodeBlock = polymesh_primitives::Block, UncheckedExtrinsic = UncheckedExtrinsic { - System: frame_system::{Module, Call, Config, Storage, Event}, - Babe: pallet_babe::{Module, Call, Storage, Config, ValidateUnsigned}, - Timestamp: pallet_timestamp::{Module, Call, Storage, Inherent}, - Indices: pallet_indices::{Module, Call, Storage, Config, Event}, - Authorship: pallet_authorship::{Module, Call, Storage, Inherent}, + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Babe: pallet_babe::{Pallet, Call, Storage, Config, ValidateUnsigned}, + Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent}, + Indices: pallet_indices::{Pallet, Call, Storage, Config, Event}, + Authorship: pallet_authorship::{Pallet, Call, Storage, Inherent}, // Balance: Genesis config dependencies: System. - Balances: pallet_balances::{Module, Call, Storage, Config, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, // TransactionPayment: Genesis config dependencies: Balance. - TransactionPayment: pallet_transaction_payment::{Module, Storage}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, // Identity: Genesis config deps: Timestamp. - Identity: pallet_identity::{Module, Call, Storage, Event, Config}, + Identity: pallet_identity::{Pallet, Call, Storage, Event, Config}, // Polymesh Committees // CddServiceProviders (group only): Genesis config deps: Identity - CddServiceProviders: pallet_group::::{Module, Call, Storage, Event, Config}, + CddServiceProviders: pallet_group::::{Pallet, Call, Storage, Event, Config}, // Governance Council (committee) - PolymeshCommittee: pallet_committee::::{Module, Call, Storage, Origin, Event, Config}, + PolymeshCommittee: pallet_committee::::{Pallet, Call, Storage, Origin, Event, Config}, // CommitteeMembership: Genesis config deps: PolymeshCommittee, Identity. - CommitteeMembership: pallet_group::::{Module, Call, Storage, Event, Config}, + CommitteeMembership: pallet_group::::{Pallet, Call, Storage, Event, Config}, // Technical Committee - TechnicalCommittee: pallet_committee::::{Module, Call, Storage, Origin, Event, Config}, + TechnicalCommittee: pallet_committee::::{Pallet, Call, Storage, Origin, Event, Config}, // TechnicalCommitteeMembership: Genesis config deps: TechnicalCommittee, Identity - TechnicalCommitteeMembership: pallet_group::::{Module, Call, Storage, Event, Config}, + TechnicalCommitteeMembership: pallet_group::::{Pallet, Call, Storage, Event, Config}, // Upgrade Committee - UpgradeCommittee: pallet_committee::::{Module, Call, Storage, Origin, Event, Config}, + UpgradeCommittee: pallet_committee::::{Pallet, Call, Storage, Origin, Event, Config}, // UpgradeCommitteeMembership: Genesis config deps: UpgradeCommittee, Identity - UpgradeCommitteeMembership: pallet_group::::{Module, Call, Storage, Event, Config}, + UpgradeCommitteeMembership: pallet_group::::{Pallet, Call, Storage, Event, Config}, - MultiSig: pallet_multisig::{Module, Call, Config, Storage, Event}, + MultiSig: pallet_multisig::{Pallet, Call, Config, Storage, Event}, // Bridge: Genesis config deps: Multisig, Identity, Committees - Bridge: pallet_bridge::{Module, Call, Storage, Config, Event}, + Bridge: pallet_bridge::{Pallet, Call, Storage, Config, Event}, // Staking: Genesis config deps: Bridge, Balances, Indices, Identity, Babe, Timestamp, Committees - Staking: pallet_staking::{Module, Call, Config, Storage, Event, ValidateUnsigned}, - Offences: pallet_offences::{Module, Call, Storage, Event}, + Staking: pallet_staking::{Pallet, Call, Config, Storage, Event, ValidateUnsigned}, + Offences: pallet_offences::{Pallet, Storage, Event}, // Session: Genesis config deps: System. - Session: pallet_session::{Module, Call, Storage, Event, Config}, - AuthorityDiscovery: pallet_authority_discovery::{Module, Call, Config}, - Grandpa: pallet_grandpa::{Module, Call, Storage, Config, Event}, - Historical: pallet_session_historical::{Module}, - ImOnline: pallet_im_online::{Module, Call, Storage, Event, ValidateUnsigned, Config}, - RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Module, Call, Storage}, + Session: pallet_session::{Pallet, Call, Storage, Event, Config}, + AuthorityDiscovery: pallet_authority_discovery::{Pallet, Config}, + Grandpa: pallet_grandpa::{Pallet, Call, Storage, Config, Event}, + Historical: pallet_session_historical::{Pallet}, + ImOnline: pallet_im_online::{Pallet, Call, Storage, Event, ValidateUnsigned, Config}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, // Sudo. Usable initially. - Sudo: pallet_sudo::{Module, Call, Config, Storage, Event}, + Sudo: pallet_sudo::{Pallet, Call, Config, Storage, Event}, /* // Contracts - BaseContracts: pallet_contracts::{Module, Config, Storage, Event}, - Contracts: polymesh_contracts::{Module, Call, Storage, Event}, + BaseContracts: pallet_contracts::{Pallet, Config, Storage, Event}, + Contracts: polymesh_contracts::{Pallet, Call, Storage, Event}, */ // Asset: Genesis config deps: Timestamp, - Asset: pallet_asset::{Module, Call, Storage, Config, Event}, - CapitalDistribution: pallet_capital_distribution::{Module, Call, Storage, Event}, - Checkpoint: pallet_checkpoint::{Module, Call, Storage, Event, Config}, - ComplianceManager: pallet_compliance_manager::{Module, Call, Storage, Event}, - CorporateAction: pallet_corporate_actions::{Module, Call, Storage, Event, Config}, - CorporateBallot: pallet_corporate_ballot::{Module, Call, Storage, Event}, - Permissions: pallet_permissions::{Module}, - Pips: pallet_pips::{Module, Call, Storage, Event, Config}, - Portfolio: pallet_portfolio::{Module, Call, Storage, Event}, - ProtocolFee: pallet_protocol_fee::{Module, Call, Storage, Event, Config}, - Scheduler: pallet_scheduler::{Module, Call, Storage, Event}, - Settlement: pallet_settlement::{Module, Call, Storage, Event, Config}, - Statistics: pallet_statistics::{Module, Call, Storage, Event}, - Sto: pallet_sto::{Module, Call, Storage, Event}, - Treasury: pallet_treasury::{Module, Call, Event}, - Utility: pallet_utility::{Module, Call, Storage, Event}, - Base: pallet_base::{Module, Call, Event}, - ExternalAgents: pallet_external_agents::{Module, Call, Storage, Event}, - Relayer: pallet_relayer::{Module, Call, Storage, Event}, - Rewards: pallet_rewards::{Module, Call, Storage, Event, Config, ValidateUnsigned}, + Asset: pallet_asset::{Pallet, Call, Storage, Config, Event}, + CapitalDistribution: pallet_capital_distribution::{Pallet, Call, Storage, Event}, + Checkpoint: pallet_checkpoint::{Pallet, Call, Storage, Event, Config}, + ComplianceManager: pallet_compliance_manager::{Pallet, Call, Storage, Event}, + CorporateAction: pallet_corporate_actions::{Pallet, Call, Storage, Event, Config}, + CorporateBallot: pallet_corporate_ballot::{Pallet, Call, Storage, Event}, + Permissions: pallet_permissions::{Pallet}, + Pips: pallet_pips::{Pallet, Call, Storage, Event, Config}, + Portfolio: pallet_portfolio::{Pallet, Call, Storage, Event}, + ProtocolFee: pallet_protocol_fee::{Pallet, Call, Storage, Event, Config}, + Scheduler: pallet_scheduler::{Pallet, Call, Storage, Event}, + Settlement: pallet_settlement::{Pallet, Call, Storage, Event, Config}, + Statistics: pallet_statistics::{Pallet, Call, Storage, Event}, + Sto: pallet_sto::{Pallet, Call, Storage, Event}, + Treasury: pallet_treasury::{Pallet, Call, Event}, + Utility: pallet_utility::{Pallet, Call, Storage, Event}, + Base: pallet_base::{Pallet, Call, Event}, + ExternalAgents: pallet_external_agents::{Pallet, Call, Storage, Event}, + Relayer: pallet_relayer::{Pallet, Call, Storage, Event}, + Rewards: pallet_rewards::{Pallet, Call, Storage, Event, Config, ValidateUnsigned}, } ); diff --git a/pallets/runtime/testnet/Cargo.toml b/pallets/runtime/testnet/Cargo.toml index eca27c081c..fcddd0e344 100644 --- a/pallets/runtime/testnet/Cargo.toml +++ b/pallets/runtime/testnet/Cargo.toml @@ -49,53 +49,55 @@ pallet-test-utils = { path = "../../test-utils", default-features = false } node-rpc-runtime-api = { path = "../../../rpc/runtime-api", default-features = false } pallet-staking-rpc-runtime-api = { package = "pallet-staking-rpc-runtime-api", path = "../../staking/rpc/runtime-api", default-features = false } pallet-protocol-fee-rpc-runtime-api = { package = "pallet-protocol-fee-rpc-runtime-api", path = "../../protocol-fee/rpc/runtime-api", default-features = false } -#pallet-contracts-rpc-runtime-api = { version = "3.0.0", default-features = false } +#pallet-contracts-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } # Crypto -cryptography_core = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, tag = "confidential-identity-v1.1.3" } +cryptography_core = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, branch = "confidential-identity-v1" } # Others lazy_static = { version = "1.4.0", default-features = false } +log = "0.4.8" serde = { version = "1.0.104", default-features = false } serde_derive = { version = "1.0.104", optional = true } # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -sp-version = { version = "3.0.0", default-features = false } -sp-api = { version = "3.0.0", default-features = false } -sp-inherents = { version = "3.0.0", default-features = false } -sp-offchain = { version = "3.0.0", default-features = false } -sp-staking = { version = "3.0.0", default-features = false } -sp-consensus-babe = { version = "0.9.0", default-features = false } -sp-session = { version = "3.0.0", default-features = false } -sp-authority-discovery = { version = "3.0.0", default-features = false } -sp-transaction-pool = { version = "3.0.0", default-features = false } -sp-block-builder = { version = "3.0.0", default-features = false } -sp-arithmetic = { version = "3.0.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-version = { version = "4.0.0-dev", default-features = false } +sp-api = { version = "4.0.0-dev", default-features = false } +sp-inherents = { version = "4.0.0-dev", default-features = false } +sp-offchain = { version = "4.0.0-dev", default-features = false } +sp-staking = { version = "4.0.0-dev", default-features = false } +sp-consensus-babe = { version = "0.10.0-dev", default-features = false } +sp-session = { version = "4.0.0-dev", default-features = false } +sp-authority-discovery = { version = "4.0.0-dev", default-features = false } +sp-transaction-pool = { version = "4.0.0-dev", default-features = false } +sp-block-builder = { version = "4.0.0-dev", default-features = false } +sp-arithmetic = { version = "4.0.0-dev", default-features = false } -pallet-authorship = { version = "3.0.0", default-features = false } -#pallet-contracts = { version = "3.0.0", default-features = false } -#pallet-contracts-primitives = { version = "3.0.0", default-features = false} -pallet-executive = { package = "frame-executive", version = "3.0.0", default-features = false } -pallet-grandpa = { version = "3.0.0", default-features = false } -pallet-im-online = { version = "3.0.0", default-features = false } -pallet-indices = { version = "3.0.0", default-features = false } -pallet-offences = { version = "3.0.0", default-features = false } -pallet-session = { version = "3.0.0", default-features = false } -pallet-timestamp = { version = "3.0.0", default-features = false } -pallet-babe = { version = "3.0.0", default-features = false } -pallet-authority-discovery = { version = "3.0.0", default-features = false } -pallet-randomness-collective-flip = { version = "3.0.0", default-features = false } -pallet-scheduler = { version = "3.0.0", default-features = false } -pallet-staking-reward-curve = { version = "3.0.0", default-features = false } +pallet-authorship = { version = "4.0.0-dev", default-features = false } +#pallet-contracts = { version = "4.0.0-dev", default-features = false } +#pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false} +pallet-executive = { package = "frame-executive", version = "4.0.0-dev", default-features = false } +pallet-grandpa = { version = "4.0.0-dev", default-features = false } +pallet-im-online = { version = "4.0.0-dev", default-features = false } +pallet-indices = { version = "4.0.0-dev", default-features = false } +pallet-offences = { version = "4.0.0-dev", default-features = false } +pallet-session = { version = "4.0.0-dev", default-features = false } +pallet-timestamp = { version = "4.0.0-dev", default-features = false } +pallet-babe = { version = "4.0.0-dev", default-features = false } +pallet-authority-discovery = { version = "4.0.0-dev", default-features = false } +pallet-randomness-collective-flip = { version = "4.0.0-dev", default-features = false } +pallet-scheduler = { version = "4.0.0-dev", default-features = false } +pallet-staking-reward-curve = { version = "4.0.0-dev", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } -frame-system-rpc-runtime-api = { version = "3.0.0", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +frame-system-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } smallvec = "1.4.0" [build-dependencies] diff --git a/pallets/runtime/testnet/src/fee_details.rs b/pallets/runtime/testnet/src/fee_details.rs index 0fa6904435..9deaccf8ab 100644 --- a/pallets/runtime/testnet/src/fee_details.rs +++ b/pallets/runtime/testnet/src/fee_details.rs @@ -58,50 +58,54 @@ where match call { // Register did call. // all did registration should go through CDD - Call::TestUtils(pallet_test_utils::Call::register_did(..)) => Ok(Some(caller.clone())), + Call::TestUtils(pallet_test_utils::Call::register_did { .. }) => { + Ok(Some(caller.clone())) + } // Call made by a new Account key to accept invitation to become a secondary key // of an existing multisig that has a valid CDD. The auth should be valid. - Call::MultiSig(pallet_multisig::Call::accept_multisig_signer_as_key(auth_id)) => { + Call::MultiSig(pallet_multisig::Call::accept_multisig_signer_as_key { auth_id }) => { is_auth_valid(caller, auth_id, CallType::AcceptMultiSigSigner) } // Call made by a new Account key to accept invitation to become a secondary key // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::join_identity_as_key(auth_id, ..)) => { + Call::Identity(pallet_identity::Call::join_identity_as_key { auth_id, .. }) => { is_auth_valid(caller, auth_id, CallType::AcceptIdentitySecondary) } // Call made by a new Account key to accept invitation to become the primary key // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::accept_primary_key(rotation_auth_id, ..)) => { - is_auth_valid(caller, rotation_auth_id, CallType::AcceptIdentityPrimary) - } + Call::Identity(pallet_identity::Call::accept_primary_key { + rotation_auth_id, .. + }) => is_auth_valid(caller, rotation_auth_id, CallType::AcceptIdentityPrimary), // Call made by a new Account key to accept invitation to become the primary key // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::rotate_primary_key_to_secondary( - rotation_auth_id, - .., - )) => is_auth_valid(caller, rotation_auth_id, CallType::RotatePrimaryToSecondary), + Call::Identity(pallet_identity::Call::rotate_primary_key_to_secondary { + auth_id, + .. + }) => is_auth_valid(caller, auth_id, CallType::RotatePrimaryToSecondary), // Call made by a new Account key to remove invitation for certain authorizations // in an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::remove_authorization(_, auth_id, true)) => { - is_auth_valid(caller, auth_id, CallType::RemoveAuthorization) - } + Call::Identity(pallet_identity::Call::remove_authorization { + auth_id, + _auth_issuer_pays: true, + .. + }) => is_auth_valid(caller, auth_id, CallType::RemoveAuthorization), // Call made by a user key to accept subsidy from a paying key. The auth should be valid. - Call::Relayer(pallet_relayer::Call::accept_paying_key(auth_id)) => { + Call::Relayer(pallet_relayer::Call::accept_paying_key { auth_id }) => { is_auth_valid(caller, auth_id, CallType::AcceptRelayerPayingKey) } // Call made by an Account key to propose, reject or approve a multisig transaction. // The multisig must have valid CDD and the caller must be a signer of the multisig. Call::MultiSig( - pallet_multisig::Call::create_or_approve_proposal_as_key(multisig, ..) - | pallet_multisig::Call::create_proposal_as_key(multisig, ..) - | pallet_multisig::Call::approve_as_key(multisig, ..) - | pallet_multisig::Call::reject_as_key(multisig, ..), + pallet_multisig::Call::create_or_approve_proposal_as_key { multisig, .. } + | pallet_multisig::Call::create_proposal_as_key { multisig, .. } + | pallet_multisig::Call::approve_as_key { multisig, .. } + | pallet_multisig::Call::reject_as_key { multisig, .. }, ) => handle_multisig(multisig, caller), // Call made by an Account key to propose or approve a multisig transaction via the bridge helper // The multisig must have valid CDD and the caller must be a signer of the multisig. Call::Bridge( - pallet_bridge::Call::propose_bridge_tx(..) - | pallet_bridge::Call::batch_propose_bridge_tx(..), + pallet_bridge::Call::propose_bridge_tx { .. } + | pallet_bridge::Call::batch_propose_bridge_tx { .. }, ) => handle_multisig(&Bridge::controller_key(), caller), // All other calls. // diff --git a/pallets/runtime/testnet/src/runtime.rs b/pallets/runtime/testnet/src/runtime.rs index 3da03e36f4..5724ec19ed 100644 --- a/pallets/runtime/testnet/src/runtime.rs +++ b/pallets/runtime/testnet/src/runtime.rs @@ -7,8 +7,8 @@ use codec::Encode; use frame_support::traits::OnRuntimeUpgrade; use frame_support::{ - construct_runtime, debug, parameter_types, - traits::{KeyOwnerProofSystem, Randomness, SplitTwoWays}, + construct_runtime, parameter_types, + traits::{tokens::imbalance::SplitTwoWays, KeyOwnerProofSystem}, weights::Weight, }; use pallet_asset::checkpoint as pallet_checkpoint; @@ -95,15 +95,6 @@ parameter_types! { // Authorship: pub const UncleGenerations: BlockNumber = 0; - // Session: - // NOTE: `SessionHandler` and `SessionKeys` are co-dependent: - // One key will be used for each handler. - // The number and order of items in `SessionHandler` *MUST* be the same number - // and order of keys in `SessionKeys`. - // TODO: Introduce some structure to tie these together to make it a bit less of a footgun. - // This should be easy, since OneSessionHandler trait provides the `Key` as an associated type. #2858 - pub const DisabledValidatorsThreshold: Perbill = Perbill::from_percent(17); - // Contracts: pub const NetworkShareInFee: Perbill = Perbill::from_percent(60); pub const TombstoneDeposit: Balance = 0; @@ -116,13 +107,14 @@ parameter_types! { // Settlement: pub const MaxLegsInInstruction: u32 = 10; - // Offences: - pub OffencesWeightSoftLimit: Weight = Perbill::from_percent(60) * MaximumBlockWeight::get(); - // I'm online: - pub const SessionDuration: BlockNumber = EPOCH_DURATION_IN_SLOTS as _; pub const ImOnlineUnsignedPriority: TransactionPriority = TransactionPriority::max_value(); + pub const MaxAuthorities: u32 = 100_000; + pub const MaxKeys: u32 = 10_000; + pub const MaxPeerInHeartbeats: u32 = 10_000; + pub const MaxPeerDataEncodingSize: u32 = 1_000; + // Assets: pub const MaxNumberOfTMExtensionForAsset: u32 = 5; pub const AssetNameMaxLength: u32 = 128; @@ -191,7 +183,7 @@ parameter_types! { pub const MaxIterations: u32 = 10; pub const MaxValidatorPerIdentity: Permill = Permill::from_percent(33); // 0.05%. The higher the value, the more strict solution acceptance becomes. - pub MinSolutionScoreBump: Perbill = Perbill::from_rational_approximation(5u32, 10_000); + pub MinSolutionScoreBump: Perbill = Perbill::from_rational(5u32, 10_000); pub const MaxVariableInflationTotalIssuance: Balance = 1_000_000_000 * POLY; pub const FixedYearlyReward: Balance = 140_000_000 * POLY; pub const MinimumBond: Balance = 1 * POLY; @@ -301,7 +293,7 @@ impl pallet_test_utils::Config for Runtime { type WeightInfo = polymesh_weights::pallet_test_utils::WeightInfo; } -pub type AllModulesExported = AllModules; +pub type AllModulesExported = AllPallets; construct_runtime!( pub enum Runtime where @@ -310,88 +302,88 @@ construct_runtime!( UncheckedExtrinsic = UncheckedExtrinsic { - System: frame_system::{Module, Call, Config, Storage, Event}, - Babe: pallet_babe::{Module, Call, Storage, Config, ValidateUnsigned}, - Timestamp: pallet_timestamp::{Module, Call, Storage, Inherent}, - Indices: pallet_indices::{Module, Call, Storage, Config, Event}, - Authorship: pallet_authorship::{Module, Call, Storage, Inherent}, + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Babe: pallet_babe::{Pallet, Call, Storage, Config, ValidateUnsigned}, + Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent}, + Indices: pallet_indices::{Pallet, Call, Storage, Config, Event}, + Authorship: pallet_authorship::{Pallet, Call, Storage, Inherent}, // Balance: Genesis config dependencies: System. - Balances: pallet_balances::{Module, Call, Storage, Config, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, // TransactionPayment: Genesis config dependencies: Balance. - TransactionPayment: pallet_transaction_payment::{Module, Storage}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, // Identity: Genesis config deps: Timestamp. - Identity: pallet_identity::{Module, Call, Storage, Event, Config}, + Identity: pallet_identity::{Pallet, Call, Storage, Event, Config}, // Polymesh Committees // CddServiceProviders (group only): Genesis config deps: Identity - CddServiceProviders: pallet_group::::{Module, Call, Storage, Event, Config}, + CddServiceProviders: pallet_group::::{Pallet, Call, Storage, Event, Config}, // Governance Council (committee) - PolymeshCommittee: pallet_committee::::{Module, Call, Storage, Origin, Event, Config}, + PolymeshCommittee: pallet_committee::::{Pallet, Call, Storage, Origin, Event, Config}, // CommitteeMembership: Genesis config deps: PolymeshCommittee, Identity. - CommitteeMembership: pallet_group::::{Module, Call, Storage, Event, Config}, + CommitteeMembership: pallet_group::::{Pallet, Call, Storage, Event, Config}, // Technical Committee - TechnicalCommittee: pallet_committee::::{Module, Call, Storage, Origin, Event, Config}, + TechnicalCommittee: pallet_committee::::{Pallet, Call, Storage, Origin, Event, Config}, // TechnicalCommitteeMembership: Genesis config deps: TechnicalCommittee, Identity - TechnicalCommitteeMembership: pallet_group::::{Module, Call, Storage, Event, Config}, + TechnicalCommitteeMembership: pallet_group::::{Pallet, Call, Storage, Event, Config}, // Upgrade Committee - UpgradeCommittee: pallet_committee::::{Module, Call, Storage, Origin, Event, Config}, + UpgradeCommittee: pallet_committee::::{Pallet, Call, Storage, Origin, Event, Config}, // UpgradeCommitteeMembership: Genesis config deps: UpgradeCommittee, Identity - UpgradeCommitteeMembership: pallet_group::::{Module, Call, Storage, Event, Config}, + UpgradeCommitteeMembership: pallet_group::::{Pallet, Call, Storage, Event, Config}, - MultiSig: pallet_multisig::{Module, Call, Config, Storage, Event}, + MultiSig: pallet_multisig::{Pallet, Call, Config, Storage, Event}, // Bridge: Genesis config deps: Multisig, Identity, Committees - Bridge: pallet_bridge::{Module, Call, Storage, Config, Event}, + Bridge: pallet_bridge::{Pallet, Call, Storage, Config, Event}, // Staking: Genesis config deps: Bridge, Balances, Indices, Identity, Babe, Timestamp, Committees - Staking: pallet_staking::{Module, Call, Config, Storage, Event, ValidateUnsigned}, - Offences: pallet_offences::{Module, Call, Storage, Event}, + Staking: pallet_staking::{Pallet, Call, Config, Storage, Event, ValidateUnsigned}, + Offences: pallet_offences::{Pallet, Storage, Event}, // Session: Genesis config deps: System. - Session: pallet_session::{Module, Call, Storage, Event, Config}, - AuthorityDiscovery: pallet_authority_discovery::{Module, Call, Config}, - Grandpa: pallet_grandpa::{Module, Call, Storage, Config, Event}, - Historical: pallet_session_historical::{Module}, - ImOnline: pallet_im_online::{Module, Call, Storage, Event, ValidateUnsigned, Config}, - RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Module, Call, Storage}, + Session: pallet_session::{Pallet, Call, Storage, Event, Config}, + AuthorityDiscovery: pallet_authority_discovery::{Pallet, Config}, + Grandpa: pallet_grandpa::{Pallet, Call, Storage, Config, Event}, + Historical: pallet_session_historical::{Pallet}, + ImOnline: pallet_im_online::{Pallet, Call, Storage, Event, ValidateUnsigned, Config}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, // Sudo. Usable initially. - Sudo: pallet_sudo::{Module, Call, Config, Storage, Event}, + Sudo: pallet_sudo::{Pallet, Call, Config, Storage, Event}, /* // Contracts - BaseContracts: pallet_contracts::{Module, Config, Storage, Event}, - Contracts: polymesh_contracts::{Module, Call, Storage, Event}, + BaseContracts: pallet_contracts::{Pallet, Config, Storage, Event}, + Contracts: polymesh_contracts::{Pallet, Call, Storage, Event}, */ // Asset: Genesis config deps: Timestamp, - Asset: pallet_asset::{Module, Call, Storage, Config, Event}, - CapitalDistribution: pallet_capital_distribution::{Module, Call, Storage, Event}, - Checkpoint: pallet_checkpoint::{Module, Call, Storage, Event, Config}, - ComplianceManager: pallet_compliance_manager::{Module, Call, Storage, Event}, - CorporateAction: pallet_corporate_actions::{Module, Call, Storage, Event, Config}, - CorporateBallot: pallet_corporate_ballot::{Module, Call, Storage, Event}, - Permissions: pallet_permissions::{Module}, - Pips: pallet_pips::{Module, Call, Storage, Event, Config}, - Portfolio: pallet_portfolio::{Module, Call, Storage, Event}, - ProtocolFee: pallet_protocol_fee::{Module, Call, Storage, Event, Config}, - Scheduler: pallet_scheduler::{Module, Call, Storage, Event}, - Settlement: pallet_settlement::{Module, Call, Storage, Event, Config}, - Statistics: pallet_statistics::{Module, Call, Storage, Event}, - Sto: pallet_sto::{Module, Call, Storage, Event}, - Treasury: pallet_treasury::{Module, Call, Event}, - Utility: pallet_utility::{Module, Call, Storage, Event}, - Base: pallet_base::{Module, Call, Event}, - ExternalAgents: pallet_external_agents::{Module, Call, Storage, Event}, - Relayer: pallet_relayer::{Module, Call, Storage, Event}, - Rewards: pallet_rewards::{Module, Call, Storage, Event, Config, ValidateUnsigned}, - TestUtils: pallet_test_utils::{Module, Call, Storage, Event } = 50, + Asset: pallet_asset::{Pallet, Call, Storage, Config, Event}, + CapitalDistribution: pallet_capital_distribution::{Pallet, Call, Storage, Event}, + Checkpoint: pallet_checkpoint::{Pallet, Call, Storage, Event, Config}, + ComplianceManager: pallet_compliance_manager::{Pallet, Call, Storage, Event}, + CorporateAction: pallet_corporate_actions::{Pallet, Call, Storage, Event, Config}, + CorporateBallot: pallet_corporate_ballot::{Pallet, Call, Storage, Event}, + Permissions: pallet_permissions::{Pallet}, + Pips: pallet_pips::{Pallet, Call, Storage, Event, Config}, + Portfolio: pallet_portfolio::{Pallet, Call, Storage, Event}, + ProtocolFee: pallet_protocol_fee::{Pallet, Call, Storage, Event, Config}, + Scheduler: pallet_scheduler::{Pallet, Call, Storage, Event}, + Settlement: pallet_settlement::{Pallet, Call, Storage, Event, Config}, + Statistics: pallet_statistics::{Pallet, Call, Storage, Event}, + Sto: pallet_sto::{Pallet, Call, Storage, Event}, + Treasury: pallet_treasury::{Pallet, Call, Event}, + Utility: pallet_utility::{Pallet, Call, Storage, Event}, + Base: pallet_base::{Pallet, Call, Event}, + ExternalAgents: pallet_external_agents::{Pallet, Call, Storage, Event}, + Relayer: pallet_relayer::{Pallet, Call, Storage, Event}, + Rewards: pallet_rewards::{Pallet, Call, Storage, Event, Config, ValidateUnsigned}, + TestUtils: pallet_test_utils::{Pallet, Call, Storage, Event } = 50, } ); @@ -408,6 +400,6 @@ pub trait DryRunRuntimeUpgrade { #[cfg(feature = "migration-dry-run")] impl DryRunRuntimeUpgrade for Runtime { fn dry_run_runtime_upgrade() -> Weight { - ::on_runtime_upgrade() + ::on_runtime_upgrade() } } diff --git a/pallets/runtime/tests/Cargo.toml b/pallets/runtime/tests/Cargo.toml index 74af7a4659..8f0bfcd29a 100644 --- a/pallets/runtime/tests/Cargo.toml +++ b/pallets/runtime/tests/Cargo.toml @@ -5,8 +5,8 @@ authors = ["Polymath"] edition = "2018" [dependencies] -confidential_identity = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, tag = "confidential-identity-v1.1.3" } -cryptography_core = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, tag = "confidential-identity-v1.1.3" } +confidential_identity = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, branch = "confidential-identity-v1" } +cryptography_core = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, branch = "confidential-identity-v1" } node-rpc-runtime-api = { path = "../../../rpc/runtime-api", default-features = false } pallet-asset = { path = "../../asset", default-features = false } pallet-balances = { path = "../../balances", default-features = false } @@ -55,54 +55,56 @@ lazy_static = "1.4.0" parking_lot = "0.11.1" env_logger = "0.7" serde_json = '1.0.48' +log = "0.4.8" # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -frame-benchmarking = { version = "3.0.0", optional = true } -frame-support = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -frame-system-rpc-runtime-api = { version = "3.0.0", default-features = false } +frame-benchmarking = { version = "4.0.0-dev", optional = true } +frame-support = { version = "4.0.0-dev", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +frame-system-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } ink_primitives = { git = "https://github.com/paritytech/ink", tag = "v2.1.0", default-features = false } -pallet-authority-discovery = { version = "3.0.0", default-features = false } -pallet-authorship = { version = "3.0.0", default-features = false } -pallet-babe = { version = "3.0.0", default-features = false } -#pallet-contracts = { version = "3.0.0", default-features = false } -#pallet-contracts-primitives = { version = "3.0.0", default-features = false } -#pallet-contracts-rpc-runtime-api = { version = "3.0.0", default-features = false } -pallet-executive = { package = "frame-executive", version = "3.0.0", default-features = false } -pallet-grandpa = { version = "3.0.0", default-features = false } -pallet-im-online = { version = "3.0.0", default-features = false } -pallet-indices = { version = "3.0.0", default-features = false } -pallet-offences = { version = "3.0.0", default-features = false } -pallet-randomness-collective-flip = { version = "3.0.0", default-features = false } -pallet-scheduler = { version = "3.0.0", default-features = false } -pallet-session = { version = "3.0.0", default-features = false, features = ["historical"] } -pallet-staking-reward-curve = { version = "3.0.0", default-features = false } -pallet-timestamp = { version = "3.0.0", default-features = false } -sp-api = { version = "3.0.0", default-features = false } -sp-arithmetic = { version = "3.0.0", default-features = false } -sp-authority-discovery = { version = "3.0.0", default-features = false } -sp-block-builder = { version = "3.0.0", default-features = false } -sp-consensus-babe = { version = "0.9.0", default-features = false } -sp-core = { version = "3.0.0", default-features = false } -sp-inherents = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } -sp-npos-elections = { version = "3.0.0", default-features = false} -sp-offchain = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -sp-session = { version = "3.0.0", default-features = false } -sp-staking = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-transaction-pool = { version = "3.0.0", default-features = false } -sp-version = { version = "3.0.0", default-features = false } +pallet-authority-discovery = { version = "4.0.0-dev", default-features = false } +pallet-authorship = { version = "4.0.0-dev", default-features = false } +pallet-babe = { version = "4.0.0-dev", default-features = false } +#pallet-contracts = { version = "4.0.0-dev", default-features = false } +#pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false } +#pallet-contracts-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } +pallet-executive = { package = "frame-executive", version = "4.0.0-dev", default-features = false } +pallet-grandpa = { version = "4.0.0-dev", default-features = false } +pallet-im-online = { version = "4.0.0-dev", default-features = false } +pallet-indices = { version = "4.0.0-dev", default-features = false } +pallet-offences = { version = "4.0.0-dev", default-features = false } +pallet-randomness-collective-flip = { version = "4.0.0-dev", default-features = false } +pallet-scheduler = { version = "4.0.0-dev", default-features = false } +pallet-session = { version = "4.0.0-dev", default-features = false, features = ["historical"] } +pallet-staking-reward-curve = { version = "4.0.0-dev", default-features = false } +pallet-timestamp = { version = "4.0.0-dev", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-api = { version = "4.0.0-dev", default-features = false } +sp-arithmetic = { version = "4.0.0-dev", default-features = false } +sp-authority-discovery = { version = "4.0.0-dev", default-features = false } +sp-block-builder = { version = "4.0.0-dev", default-features = false } +sp-consensus-babe = { version = "0.10.0-dev", default-features = false } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-inherents = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-npos-elections = { version = "4.0.0-dev", default-features = false} +sp-offchain = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-session = { version = "4.0.0-dev", default-features = false } +sp-staking = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-transaction-pool = { version = "4.0.0-dev", default-features = false } +sp-version = { version = "4.0.0-dev", default-features = false } -test_client = { package = "substrate-test-runtime-client", git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0", optional = true } -substrate-test-utils = { version = "3.0.0", optional = true } +test_client = { package = "substrate-test-runtime-client", git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop", optional = true } +substrate-test-utils = { version = "4.0.0-dev", optional = true } [dev-dependencies] libsecp256k1 = { version = "0.6", default-features = false } wat = "1.0" -sp-tracing = { version = "3.0.0", default-features = false } +sp-tracing = { version = "4.0.0-dev", default-features = false } [features] default = ["std", "equalize"] diff --git a/pallets/runtime/tests/src/asset_test.rs b/pallets/runtime/tests/src/asset_test.rs index 7e3131abbf..d30b9fcca3 100644 --- a/pallets/runtime/tests/src/asset_test.rs +++ b/pallets/runtime/tests/src/asset_test.rs @@ -59,7 +59,7 @@ type Identity = identity::Module; type Balances = balances::Module; //type Contracts = pallet_contracts::Module; type Asset = asset::Module; -type Timestamp = pallet_timestamp::Module; +type Timestamp = pallet_timestamp::Pallet; type ComplianceManager = compliance_manager::Module; type Portfolio = pallet_portfolio::Module; type AssetError = asset::Error; @@ -68,7 +68,7 @@ type Origin = ::Origin; type DidRecords = identity::DidRecords; type Statistics = statistics::Module; type AssetGenesis = asset::GenesisConfig; -type System = frame_system::Module; +type System = frame_system::Pallet; type ExternalAgents = pallet_external_agents::Module; type EAError = pallet_external_agents::Error; type FeeError = pallet_protocol_fee::Error; @@ -1725,7 +1725,7 @@ fn classic_ticker_claim_works() { [ .., frame_system::EventRecord { - event: super::storage::EventTest::pallet_asset( + event: super::storage::EventTest::Asset( pallet_asset::RawEvent::ClassicTickerClaimed(..) ), .. diff --git a/pallets/runtime/tests/src/balances_test.rs b/pallets/runtime/tests/src/balances_test.rs index 514f434a0c..9a3c20b4fb 100644 --- a/pallets/runtime/tests/src/balances_test.rs +++ b/pallets/runtime/tests/src/balances_test.rs @@ -20,7 +20,7 @@ use sp_runtime::traits::SignedExtension; use test_client::AccountKeyring; pub type Balances = balances::Module; -pub type System = frame_system::Module; +pub type System = frame_system::Pallet; type Identity = identity::Module; type Origin = ::Origin; type Error = balances::Error; @@ -46,10 +46,10 @@ fn signed_extension_charge_transaction_payment_work() { let alice_pub = AccountKeyring::Alice.to_account_id(); let alice_id = AccountKeyring::Alice.to_account_id(); - let call = runtime::Call::TestUtils(test_utils::Call::register_did( - InvestorUid::default(), - vec![], - )); + let call = runtime::Call::TestUtils(test_utils::Call::register_did { + uid: InvestorUid::default(), + secondary_keys: vec![], + }); assert!( as SignedExtension>::pre_dispatch( @@ -84,10 +84,10 @@ fn tipping_fails() { .monied(true) .build() .execute_with(|| { - let call = runtime::Call::TestUtils(test_utils::Call::register_did( - InvestorUid::default(), - vec![], - )); + let call = runtime::Call::TestUtils(test_utils::Call::register_did { + uid: InvestorUid::default(), + secondary_keys: vec![], + }); let len = 10; let alice_id = AccountKeyring::Alice.to_account_id(); assert!( @@ -299,7 +299,7 @@ fn transfer_with_memo_we() { let expected_events = vec![ EventRecord { phase: Phase::Initialization, - event: EventTest::pallet_balances(BalancesRawEvent::Transfer( + event: EventTest::Balances(BalancesRawEvent::Transfer( Some(alice_id), alice.clone(), Some(bob_id), @@ -311,7 +311,7 @@ fn transfer_with_memo_we() { }, EventRecord { phase: Phase::Initialization, - event: EventTest::pallet_balances(BalancesRawEvent::Transfer( + event: EventTest::Balances(BalancesRawEvent::Transfer( Some(alice_id), alice, Some(bob_id), diff --git a/pallets/runtime/tests/src/bridge.rs b/pallets/runtime/tests/src/bridge.rs index 38ee7eb327..2fc332a9be 100644 --- a/pallets/runtime/tests/src/bridge.rs +++ b/pallets/runtime/tests/src/bridge.rs @@ -20,8 +20,8 @@ type Identity = pallet_identity::Module; type Balances = pallet_balances::Module; type MultiSig = pallet_multisig::Module; type Origin = ::Origin; -type System = frame_system::Module; -type Scheduler = pallet_scheduler::Module; +type System = frame_system::Pallet; +type Scheduler = pallet_scheduler::Pallet; type BridgeTx = GBridgeTx; type BridgeTxDetail = GBridgeTxDetail; @@ -74,7 +74,9 @@ fn alice_bridge_tx(amount: u128) -> BridgeTx { } fn bridge_tx_to_proposal(tx: &BridgeTx) -> Call { - Call::Bridge(bridge::Call::handle_bridge_tx(tx.clone())) + Call::Bridge(bridge::Call::handle_bridge_tx { + bridge_tx: tx.clone(), + }) } fn alice_make_bridge_tx(amount: u128) -> BridgeTx { diff --git a/pallets/runtime/tests/src/committee_test.rs b/pallets/runtime/tests/src/committee_test.rs index db7092408c..936f2dba2c 100644 --- a/pallets/runtime/tests/src/committee_test.rs +++ b/pallets/runtime/tests/src/committee_test.rs @@ -23,7 +23,7 @@ use test_client::AccountKeyring; type Committee = committee::Module; type CommitteeGroup = group::Module; -type System = frame_system::Module; +type System = frame_system::Pallet; type Identity = identity::Module; type Pips = pallet_pips::Module; type Origin = ::Origin; @@ -54,7 +54,10 @@ fn motions_basic_environment_works_we() { } fn make_proposal(value: u64) -> Call { - Call::Identity(identity::Call::accept_primary_key(value, Some(value))) + Call::Identity(identity::Call::accept_primary_key { + rotation_auth_id: value, + optional_cdd_auth_id: Some(value), + }) } const APPROVE_0: &[(PipId, SnapshotResult)] = &[(PipId(0), SnapshotResult::Approve)]; @@ -97,7 +100,9 @@ fn check_scheduled(id: PipId) { } fn enact_snapshot_results_call() -> Call { - Call::Pips(pallet_pips::Call::enact_snapshot_results(APPROVE_0.into())) + Call::Pips(pallet_pips::Call::enact_snapshot_results { + results: APPROVE_0.into(), + }) } fn hash_enact_snapshot_results() -> H256 { @@ -139,11 +144,7 @@ fn single_member_committee_works_we() { let hash = hash_enact_snapshot_results(); let expected_event = EventRecord { phase: Phase::Initialization, - event: EventTest::pallet_committee_Instance1(CommitteeRawEvent::Executed( - alice_did, - hash, - Ok(()), - )), + event: EventTest::PolymeshCommittee(CommitteeRawEvent::Executed(alice_did, hash, Ok(()))), topics: vec![], }; assert_eq!(System::events().contains(&expected_event), true); @@ -301,7 +302,7 @@ fn changing_vote_threshold_works_we() { assert_eq!(Committee::vote_threshold(), (1, 1)); let call_svt = Box::new(Call::PolymeshCommittee( - pallet_committee::Call::set_vote_threshold(4, 17), + pallet_committee::Call::set_vote_threshold { n: 4, d: 17 }, )); assert_ok!(Committee::vote_or_propose( alice_signer, @@ -433,11 +434,7 @@ fn rage_quit_we() { let did = IdentityId::default(); let expected_event = EventRecord { phase: Phase::Initialization, - event: EventTest::pallet_committee_Instance1(CommitteeRawEvent::Executed( - did, - hash, - Ok(()), - )), + event: EventTest::PolymeshCommittee(CommitteeRawEvent::Executed(did, hash, Ok(()))), topics: vec![], }; assert_eq!(System::events().contains(&expected_event), true); @@ -515,7 +512,8 @@ fn release_coordinator_majority_we() { ); // Vote to change RC => bob. - let call = Call::PolymeshCommittee(pallet_committee::Call::set_release_coordinator(bob_id)); + let call = + Call::PolymeshCommittee(pallet_committee::Call::set_release_coordinator { id: bob_id }); assert_ok!(Committee::vote_or_propose( alice.clone(), true, diff --git a/pallets/runtime/tests/src/compliance_manager_test.rs b/pallets/runtime/tests/src/compliance_manager_test.rs index 2b29a290b8..6e4c51512b 100644 --- a/pallets/runtime/tests/src/compliance_manager_test.rs +++ b/pallets/runtime/tests/src/compliance_manager_test.rs @@ -30,7 +30,7 @@ use test_client::AccountKeyring; type Identity = identity::Module; type IdError = identity::Error; type Balances = balances::Module; -type Timestamp = pallet_timestamp::Module; +type Timestamp = pallet_timestamp::Pallet; type Asset = pallet_asset::Module; type ComplianceManager = compliance_manager::Module; type CDDGroup = group::Module; diff --git a/pallets/runtime/tests/src/corporate_actions_test.rs b/pallets/runtime/tests/src/corporate_actions_test.rs index e5d52f62cd..90473a64b1 100644 --- a/pallets/runtime/tests/src/corporate_actions_test.rs +++ b/pallets/runtime/tests/src/corporate_actions_test.rs @@ -36,12 +36,12 @@ use sp_arithmetic::Permill; use std::convert::TryInto; use test_client::AccountKeyring; -type System = frame_system::Module; +type System = frame_system::Pallet; type Origin = ::Origin; type Asset = pallet_asset::Module; type AssetError = pallet_asset::Error; type ExternalAgents = pallet_external_agents::Module; -type Timestamp = pallet_timestamp::Module; +type Timestamp = pallet_timestamp::Pallet; type Identity = pallet_identity::Module; type Authorizations = pallet_identity::Authorizations; type ComplianceManager = pallet_compliance_manager::Module; @@ -2070,7 +2070,7 @@ fn dist_claim_works() { CorporateActions::mutate(ticker, id.local_id, |ca| { let ca = ca.as_mut().unwrap(); ca.default_withholding_tax = P25; - ca.withholding_tax = vec![(bar.did, Tax::from_rational_approximation(1u32, 3u32))]; + ca.withholding_tax = vec![(bar.did, Tax::from_rational(1u32, 3u32))]; }); // Ensures that holder cannot claim or be pushed to again. diff --git a/pallets/runtime/tests/src/fee_details.rs b/pallets/runtime/tests/src/fee_details.rs index fd43b9b5a8..be78ce8e92 100644 --- a/pallets/runtime/tests/src/fee_details.rs +++ b/pallets/runtime/tests/src/fee_details.rs @@ -43,10 +43,10 @@ fn cdd_checks() { // register did bypasses cdd checks assert_eq!( CddHandler::get_valid_payer( - &Call::TestUtils(test_utils::Call::register_did( - InvestorUid::default(), - Default::default() - )), + &Call::TestUtils(test_utils::Call::register_did { + uid: InvestorUid::default(), + secondary_keys: Default::default() + }), &alice_account ), Ok(Some(AccountKeyring::Alice.to_account_id())) @@ -58,7 +58,7 @@ fn cdd_checks() { // normal tx without cdd should fail assert_noop!( CddHandler::get_valid_payer( - &Call::MultiSig(multisig::Call::change_sigs_required(1)), + &Call::MultiSig(multisig::Call::change_sigs_required { sigs_required: 1 }), &alice_account ), InvalidTransaction::Custom(TransactionError::CddRequired as u8) @@ -70,7 +70,7 @@ fn cdd_checks() { // call to accept being a multisig signer should fail when invalid auth assert_noop!( CddHandler::get_valid_payer( - &Call::MultiSig(multisig::Call::accept_multisig_signer_as_key(0)), + &Call::MultiSig(multisig::Call::accept_multisig_signer_as_key { auth_id: 0 }), &alice_account ), InvalidTransaction::Custom(TransactionError::InvalidAuthorization as u8) @@ -86,7 +86,9 @@ fn cdd_checks() { let alice_auth_id = get_last_auth_id(&alice_key_signatory); assert_noop!( CddHandler::get_valid_payer( - &Call::MultiSig(multisig::Call::accept_multisig_signer_as_key(alice_auth_id)), + &Call::MultiSig(multisig::Call::accept_multisig_signer_as_key { + auth_id: alice_auth_id + }), &alice_account ), InvalidTransaction::Custom(TransactionError::CddRequired as u8) @@ -98,11 +100,11 @@ fn cdd_checks() { // call to remove authorisation with issuer paying should fail if issuer does not have a valid cdd assert_noop!( CddHandler::get_valid_payer( - &Call::Identity(identity::Call::remove_authorization( - alice_account_signatory.clone(), - alice_auth_id, - true - )), + &Call::Identity(identity::Call::remove_authorization { + target: alice_account_signatory.clone(), + auth_id: alice_auth_id, + _auth_issuer_pays: true + }), &alice_account ), InvalidTransaction::Custom(TransactionError::CddRequired as u8) @@ -111,11 +113,11 @@ fn cdd_checks() { // call to remove authorisation with caller paying should fail if caller does not have a valid cdd assert_noop!( CddHandler::get_valid_payer( - &Call::Identity(identity::Call::remove_authorization( - alice_account_signatory.clone(), - alice_auth_id, - false - )), + &Call::Identity(identity::Call::remove_authorization { + target: alice_account_signatory.clone(), + auth_id: alice_auth_id, + _auth_issuer_pays: false + }), &alice_account ), InvalidTransaction::Custom(TransactionError::CddRequired as u8) @@ -132,11 +134,11 @@ fn cdd_checks() { // call to remove authorisation with caller paying should fail if caller does not have a valid cdd assert_noop!( CddHandler::get_valid_payer( - &Call::Identity(identity::Call::remove_authorization( - alice_account_signatory.clone(), - alice_auth_id, - false - )), + &Call::Identity(identity::Call::remove_authorization { + target: alice_account_signatory.clone(), + auth_id: alice_auth_id, + _auth_issuer_pays: false + }), &alice_account ), InvalidTransaction::Custom(TransactionError::CddRequired as u8) @@ -145,11 +147,11 @@ fn cdd_checks() { // call to remove authorisation with issuer paying should succeed as issuer has CDD assert_eq!( CddHandler::get_valid_payer( - &Call::Identity(identity::Call::remove_authorization( - alice_account_signatory, - alice_auth_id, - true - )), + &Call::Identity(identity::Call::remove_authorization { + target: alice_account_signatory, + auth_id: alice_auth_id, + _auth_issuer_pays: true + }), &alice_account ), Ok(Some(AccountKeyring::Charlie.to_account_id())) @@ -169,11 +171,11 @@ fn cdd_checks() { // call to remove authorisation with issuer paying should fail if issuer does not have a valid cdd assert_noop!( CddHandler::get_valid_payer( - &Call::Identity(identity::Call::remove_authorization( - charlie_account_signatory.clone(), - charlie_auth_id, - true - )), + &Call::Identity(identity::Call::remove_authorization { + target: charlie_account_signatory.clone(), + auth_id: charlie_auth_id, + _auth_issuer_pays: true + }), &charlie_account ), InvalidTransaction::Custom(TransactionError::CddRequired as u8) @@ -182,11 +184,11 @@ fn cdd_checks() { // call to remove authorisation with caller paying should succeed as caller has CDD assert_eq!( CddHandler::get_valid_payer( - &Call::Identity(identity::Call::remove_authorization( - charlie_account_signatory, - charlie_auth_id, - false - )), + &Call::Identity(identity::Call::remove_authorization { + target: charlie_account_signatory, + auth_id: charlie_auth_id, + _auth_issuer_pays: false + }), &charlie_account ), Ok(Some(AccountKeyring::Charlie.to_account_id())) @@ -206,7 +208,9 @@ fn cdd_checks() { assert_eq!( CddHandler::get_valid_payer( - &Call::MultiSig(multisig::Call::accept_multisig_signer_as_key(alice_auth_id)), + &Call::MultiSig(multisig::Call::accept_multisig_signer_as_key { + auth_id: alice_auth_id + }), &alice_account ), Ok(Some(AccountKeyring::Charlie.to_account_id())) @@ -215,7 +219,7 @@ fn cdd_checks() { // normal tx with cdd should succeed assert_eq!( CddHandler::get_valid_payer( - &Call::MultiSig(multisig::Call::change_sigs_required(1)), + &Call::MultiSig(multisig::Call::change_sigs_required { sigs_required: 1 }), &charlie_account ), Ok(Some(AccountKeyring::Charlie.to_account_id())) diff --git a/pallets/runtime/tests/src/identity_test.rs b/pallets/runtime/tests/src/identity_test.rs index 4a607e3c75..99373c3336 100644 --- a/pallets/runtime/tests/src/identity_test.rs +++ b/pallets/runtime/tests/src/identity_test.rs @@ -47,8 +47,8 @@ type Asset = pallet_asset::Module; type Balances = balances::Module; type Identity = identity::Module; type MultiSig = pallet_multisig::Module; -type System = frame_system::Module; -type Timestamp = pallet_timestamp::Module; +type System = frame_system::Pallet; +type Timestamp = pallet_timestamp::Pallet; type Origin = ::Origin; type CddServiceProviders = ::CddServiceProviders; @@ -479,11 +479,11 @@ fn frozen_secondary_keys_cdd_verification_test_we() { // 4. Bob should NOT transfer any amount. SE is simulated. // Balances::transfer_with_memo(Origin::signed(bob), charlie, 1_000, None), let payer = CddHandler::get_valid_payer( - &Call::Balances(balances::Call::transfer_with_memo( - AccountKeyring::Charlie.to_account_id().into(), - 1_000, - None, - )), + &Call::Balances(balances::Call::transfer_with_memo { + dest: AccountKeyring::Charlie.to_account_id().into(), + value: 1_000, + memo: None, + }), &AccountKeyring::Bob.to_account_id(), ); assert_noop!( diff --git a/pallets/runtime/tests/src/multisig.rs b/pallets/runtime/tests/src/multisig.rs index 75ddf1959e..db36efd622 100644 --- a/pallets/runtime/tests/src/multisig.rs +++ b/pallets/runtime/tests/src/multisig.rs @@ -11,12 +11,12 @@ use test_client::AccountKeyring; type Balances = pallet_balances::Module; type Identity = pallet_identity::Module; type MultiSig = pallet_multisig::Module; -type Timestamp = pallet_timestamp::Module; +type Timestamp = pallet_timestamp::Pallet; type Origin = ::Origin; type IdError = pallet_identity::Error; type Error = pallet_multisig::Error; -type System = frame_system::Module; -type Scheduler = pallet_scheduler::Module; +type System = frame_system::Pallet; +type Scheduler = pallet_scheduler::Pallet; #[test] fn create_multisig() { @@ -146,7 +146,9 @@ fn change_multisig_sigs_required() { true ); - let call = Box::new(Call::MultiSig(multisig::Call::change_sigs_required(1))); + let call = Box::new(Call::MultiSig(multisig::Call::change_sigs_required { + sigs_required: 1, + })); set_curr_did(Some(alice_did)); assert_ok!(MultiSig::create_proposal_as_key( @@ -211,7 +213,9 @@ fn create_or_approve_change_multisig_sigs_required() { MultiSig::ms_signers(musig_address.clone(), bob_signer), true ); - let call = Box::new(Call::MultiSig(multisig::Call::change_sigs_required(1))); + let call = Box::new(Call::MultiSig(multisig::Call::change_sigs_required { + sigs_required: 1, + })); assert_ok!(MultiSig::create_or_approve_proposal_as_key( bob.clone(), musig_address.clone(), @@ -290,9 +294,9 @@ fn remove_multisig_signer() { // No identity as multisig has not been set as a secondary / primary key assert_eq!(Identity::get_identity(&musig_address), None); - let call = Box::new(Call::MultiSig(multisig::Call::remove_multisig_signer( - bob_signer.clone(), - ))); + let call = Box::new(Call::MultiSig(multisig::Call::remove_multisig_signer { + signer: bob_signer.clone(), + })); assert_ok!(MultiSig::create_proposal_as_identity( alice.clone(), @@ -323,9 +327,9 @@ fn remove_multisig_signer() { set_curr_did(None); - let remove_alice = Box::new(Call::MultiSig(multisig::Call::remove_multisig_signer( - alice_signer.clone(), - ))); + let remove_alice = Box::new(Call::MultiSig(multisig::Call::remove_multisig_signer { + signer: alice_signer.clone(), + })); assert_ok!(MultiSig::create_proposal_as_identity( alice.clone(), @@ -381,9 +385,9 @@ fn add_multisig_signer() { false ); - let call = Box::new(Call::MultiSig(multisig::Call::add_multisig_signer( - bob_signer.clone(), - ))); + let call = Box::new(Call::MultiSig(multisig::Call::add_multisig_signer { + signer: bob_signer.clone(), + })); assert_ok!(MultiSig::create_proposal_as_identity( alice.clone(), @@ -395,9 +399,9 @@ fn add_multisig_signer() { next_block(); - let call2 = Box::new(Call::MultiSig(multisig::Call::add_multisig_signer( - charlie_signer.clone(), - ))); + let call2 = Box::new(Call::MultiSig(multisig::Call::add_multisig_signer { + signer: charlie_signer.clone(), + })); assert_ok!(MultiSig::create_proposal_as_identity( alice.clone(), @@ -745,9 +749,9 @@ fn check_for_approval_closure() { false ); - let call = Box::new(Call::MultiSig(multisig::Call::add_multisig_signer( - bob_signer.clone(), - ))); + let call = Box::new(Call::MultiSig(multisig::Call::add_multisig_signer { + signer: bob_signer.clone(), + })); set_curr_did(Some(alice_did)); assert_ok!(MultiSig::create_proposal_as_identity( alice.clone(), @@ -817,8 +821,12 @@ fn reject_proposals() { ], ); - let call1 = Box::new(Call::MultiSig(multisig::Call::change_sigs_required(4))); - let call2 = Box::new(Call::MultiSig(multisig::Call::change_sigs_required(5))); + let call1 = Box::new(Call::MultiSig(multisig::Call::change_sigs_required { + sigs_required: 4, + })); + let call2 = Box::new(Call::MultiSig(multisig::Call::change_sigs_required { + sigs_required: 5, + })); set_curr_did(Some(alice_did)); assert_ok!(MultiSig::create_proposal_as_identity( alice.clone(), @@ -929,7 +937,9 @@ fn expired_proposals() { ); let expires_at = 100u64; - let call = Box::new(Call::MultiSig(multisig::Call::change_sigs_required(2))); + let call = Box::new(Call::MultiSig(multisig::Call::change_sigs_required { + sigs_required: 2, + })); set_curr_did(Some(alice_did)); assert_ok!(MultiSig::create_proposal_as_identity( diff --git a/pallets/runtime/tests/src/pips_test.rs b/pallets/runtime/tests/src/pips_test.rs index f7ee30cbca..d4b32d16c4 100644 --- a/pallets/runtime/tests/src/pips_test.rs +++ b/pallets/runtime/tests/src/pips_test.rs @@ -12,7 +12,7 @@ use frame_support::{ assert_noop, assert_ok, dispatch::{DispatchError, DispatchResult}, traits::{LockableCurrency, WithdrawReasons}, - StorageDoubleMap, StorageMap, StorageValue, + StorageDoubleMap, StorageValue, }; use frame_system::{self, EventRecord}; use pallet_pips::{ @@ -25,7 +25,7 @@ use polymesh_common_utilities::{MaybeBlock, GC_DID}; use polymesh_primitives::{AccountId, BlockNumber}; use test_client::AccountKeyring; -type System = frame_system::Module; +type System = frame_system::Pallet; type Balances = pallet_balances::Module; type Pips = pallet_pips::Module; type Group = pallet_group::Module; @@ -34,7 +34,7 @@ type Treasury = treasury::Module; type Error = pallet_pips::Error; type Deposits = pallet_pips::Deposits; type Votes = pallet_pips::ProposalVotes; -type Scheduler = pallet_scheduler::Module; +type Scheduler = pallet_scheduler::Pallet; type Agenda = pallet_scheduler::Agenda; type Origin = ::Origin; @@ -47,7 +47,7 @@ macro_rules! assert_last_event { assert!(matches!( &*System::events(), [.., EventRecord { - event: EventTest::pallet_pips($event), + event: EventTest::Pips($event), .. }] if $cond @@ -81,7 +81,9 @@ fn spip(id: u32, dir: bool, power: u128) -> SnapshottedPip { } fn make_proposal(value: u64) -> Call { - Call::Pips(pallet_pips::Call::set_min_proposal_deposit(value.into())) + Call::Pips(pallet_pips::Call::set_min_proposal_deposit { + deposit: value.into(), + }) } fn proposal( @@ -952,12 +954,12 @@ fn only_gc_majority_stuff() { assert_ok!(community_proposal(proposer, 0)); assert_eq!(Pips::pip_id_sequence().0, id.0 + 1); assert_eq!(Pips::active_pip_count(), 1); - consensus_call(pallet_pips::Call::reject_proposal(id)); + consensus_call(pallet_pips::Call::reject_proposal { id }); assert_eq!(Pips::pip_id_sequence().0, id.0 + 1); assert_eq!(Pips::active_pip_count(), 0); assert_state(id, false, ProposalState::Rejected); // And now they seek consensus to and do prune. - consensus_call(pallet_pips::Call::prune_proposal(id)); + consensus_call(pallet_pips::Call::prune_proposal { id }); assert_eq!(Pips::proposals(id), None); // Bob & Charlie seek consensus. @@ -967,11 +969,10 @@ fn only_gc_majority_stuff() { let id_snapshot = Pips::pip_id_sequence(); assert_ok!(community_proposal(proposer, 0)); assert_ok!(Pips::snapshot(bob.origin())); - consensus_call(pallet_pips::Call::approve_committee_proposal(id_committee)); - consensus_call(pallet_pips::Call::enact_snapshot_results(vec![( - id_snapshot, - SnapshotResult::Approve, - )])); + consensus_call(pallet_pips::Call::approve_committee_proposal { id: id_committee }); + consensus_call(pallet_pips::Call::enact_snapshot_results { + results: vec![(id_snapshot, SnapshotResult::Approve)], + }); assert_state(id_committee, false, ProposalState::Scheduled); assert_state(id_snapshot, false, ProposalState::Scheduled); }); @@ -1003,7 +1004,7 @@ fn scheduled_proposal(proposer: User, member: User, deposit: u128) -> PipId { vec![(next_id, SnapshotResult::Approve)] )); assert_event_exists!( - EventTest::pallet_scheduler(pallet_scheduler::RawEvent::Scheduled(b, ..)), + EventTest::Scheduler(pallet_scheduler::Event::Scheduled(b, ..)), *b == System::block_number() + Pips::default_enactment_period() ); assert_state(next_id, false, ProposalState::Scheduled); @@ -1028,7 +1029,7 @@ fn failed_community_proposal(proposer: User, member: User, bad_id: PipId) -> Pip assert_ok!(proposal( &proposer.origin(), &Proposer::Community(proposer.acc()), - Call::Pips(pallet_pips::Call::reject_proposal(bad_id)), + Call::Pips(pallet_pips::Call::reject_proposal { id: bad_id }), deposit, None, None @@ -1160,7 +1161,7 @@ fn can_prune_states_that_cannot_be_rejected() { assert_ok!(proposal( &proposer.origin(), &Proposer::Community(proposer.acc()), - Call::Pips(pallet_pips::Call::reject_proposal(PipId(1337))), + Call::Pips(pallet_pips::Call::reject_proposal { id: PipId(1337) }), 300, None, None @@ -1360,7 +1361,7 @@ fn reject_proposal_will_unschedule() { assert_ok!(Pips::reject_proposal(gc_vmo(), id)); assert_eq!(Pips::pip_to_schedule(id), None); assert_event_exists!( - EventTest::pallet_scheduler(pallet_scheduler::RawEvent::Canceled(when, ..)), + EventTest::Scheduler(pallet_scheduler::Event::Canceled(when, ..)), *when == scheduled_at ); }; @@ -1407,7 +1408,7 @@ fn reschedule_execution_only_release_coordinator() { let id = scheduled_proposal(alice, alice, 0); let scheduled_at = Pips::pip_to_schedule(id); consensus_call( - pallet_pips::Call::reschedule_execution(id, None), + pallet_pips::Call::reschedule_execution { id, until: None }, &[&alice.origin(), &bob.origin(), &charlie.origin()], ); assert_eq!(scheduled_at, Pips::pip_to_schedule(id)); @@ -1498,9 +1499,7 @@ fn reschedule_execution_works() { // Regression test for . assert_eq!(Pips::active_pip_count(), 1); // Rescheduling currently works by cancelling + then scheduling again. Verify this. - assert_event_exists!(EventTest::pallet_scheduler( - pallet_scheduler::RawEvent::Canceled(..) - )); + assert_event_exists!(EventTest::Scheduler(pallet_scheduler::Event::Canceled(..))); assert_eq!(Pips::pip_to_schedule(id).unwrap(), next); assert_eq!(Agenda::get(scheduled_at), vec![None]); assert_matches!(&*Agenda::get(next), [Some(_)]); diff --git a/pallets/runtime/tests/src/portfolio.rs b/pallets/runtime/tests/src/portfolio.rs index 865dab5281..cbfd631498 100644 --- a/pallets/runtime/tests/src/portfolio.rs +++ b/pallets/runtime/tests/src/portfolio.rs @@ -152,7 +152,7 @@ fn cannot_delete_portfolio_with_asset() { )); // check MovedBetweenPortfolios event assert_last_event!( - EventTest::pallet_portfolio(Event::MovedBetweenPortfolios( + EventTest::Portfolio(Event::MovedBetweenPortfolios( did, from, to, i_ticker, i_amount, i_memo )), did == &owner.did @@ -317,7 +317,7 @@ fn do_move_asset_from_portfolio(memo: Option) { )); // check MovedBetweenPortfolios event assert_last_event!( - EventTest::pallet_portfolio(Event::MovedBetweenPortfolios( + EventTest::Portfolio(Event::MovedBetweenPortfolios( did, from, to, i_ticker, i_amount, i_memo )), did == &owner.did diff --git a/pallets/runtime/tests/src/relayer_test.rs b/pallets/runtime/tests/src/relayer_test.rs index 9fd10dbae0..07dcf5572a 100644 --- a/pallets/runtime/tests/src/relayer_test.rs +++ b/pallets/runtime/tests/src/relayer_test.rs @@ -36,24 +36,25 @@ type Error = pallet_relayer::Error; // ======================================= fn call_balance_transfer(val: Balance) -> ::Call { - Call::Balances(pallet_balances::Call::transfer( - MultiAddress::Id(AccountKeyring::Alice.to_account_id()), - val, - )) + Call::Balances(pallet_balances::Call::transfer { + dest: MultiAddress::Id(AccountKeyring::Alice.to_account_id()), + value: val, + }) } fn call_asset_register_ticker(name: &[u8]) -> ::Call { let ticker = Ticker::try_from(name).unwrap(); - Call::Asset(pallet_asset::Call::register_ticker(ticker)) + Call::Asset(pallet_asset::Call::register_ticker { ticker }) } fn call_relayer_remove_paying_key( user_key: AccountId, paying_key: AccountId, ) -> ::Call { - Call::Relayer(pallet_relayer::Call::remove_paying_key( - user_key, paying_key, - )) + Call::Relayer(pallet_relayer::Call::remove_paying_key { + user_key, + paying_key, + }) } /// create a transaction info struct from weight. Handy to avoid building the whole struct. @@ -550,12 +551,12 @@ fn do_relayer_accept_cdd_and_fees_test() { // Alice creates authoration to subsidise for Bob. assert_ok!(Relayer::set_paying_key(alice.origin(), bob.acc(), 0u128)); - let bob_auth_id = get_last_auth_id(&bob_sign); + let auth_id = get_last_auth_id(&bob_sign); // Check that Bob can accept the subsidy with Alice paying for the transaction. assert_eq!( CddHandler::get_valid_payer( - &DevCall::Relayer(pallet_relayer::Call::accept_paying_key(bob_auth_id)), + &DevCall::Relayer(pallet_relayer::Call::accept_paying_key { auth_id }), &bob.acc() ), Ok(Some(alice.acc())) diff --git a/pallets/runtime/tests/src/settlement_test.rs b/pallets/runtime/tests/src/settlement_test.rs index 6ed16e77f5..abec72e129 100644 --- a/pallets/runtime/tests/src/settlement_test.rs +++ b/pallets/runtime/tests/src/settlement_test.rs @@ -8,7 +8,7 @@ use super::{ ExtBuilder, }; use codec::Encode; -use frame_support::{assert_noop, assert_ok, IterableStorageDoubleMap, StorageMap}; +use frame_support::{assert_noop, assert_ok, IterableStorageDoubleMap}; use pallet_asset as asset; use pallet_balances as balances; use pallet_compliance_manager as compliance_manager; @@ -38,7 +38,7 @@ type Balances = balances::Module; type Asset = asset::Module; type Portfolio = pallet_portfolio::Module; type PortfolioError = pallet_portfolio::Error; -type Timestamp = pallet_timestamp::Module; +type Timestamp = pallet_timestamp::Pallet; type ComplianceManager = compliance_manager::Module; type AssetError = asset::Error; type OffChainSignature = AnySignature; @@ -47,9 +47,9 @@ type Moment = ::Moment; type BlockNumber = ::BlockNumber; type DidRecords = identity::DidRecords; type Settlement = pallet_settlement::Module; -type System = frame_system::Module; +type System = frame_system::Pallet; type Error = pallet_settlement::Error; -type Scheduler = scheduler::Module; +type Scheduler = scheduler::Pallet; const TICKER: Ticker = Ticker::new_unchecked([b'A', b'C', b'M', b'E', 0, 0, 0, 0, 0, 0, 0, 0]); const TICKER2: Ticker = Ticker::new_unchecked([b'A', b'C', b'M', b'E', b'2', 0, 0, 0, 0, 0, 0, 0]); diff --git a/pallets/runtime/tests/src/signed_extra.rs b/pallets/runtime/tests/src/signed_extra.rs index 8278f088c3..ec56ae0c97 100644 --- a/pallets/runtime/tests/src/signed_extra.rs +++ b/pallets/runtime/tests/src/signed_extra.rs @@ -17,7 +17,10 @@ use sp_std::convert::From; use test_client::AccountKeyring; pub fn make_call() -> (::Call, usize) { - (Call::System(frame_system::Call::remark(vec![])), 10) + ( + Call::System(frame_system::Call::remark { remark: vec![] }), + 10, + ) } /// Generate a `SignedExtra` value as it is defined in `Runtime`. diff --git a/pallets/runtime/tests/src/staking/mock.rs b/pallets/runtime/tests/src/staking/mock.rs index 69bd4c2a8d..9812550d14 100644 --- a/pallets/runtime/tests/src/staking/mock.rs +++ b/pallets/runtime/tests/src/staking/mock.rs @@ -24,8 +24,8 @@ use frame_support::{ dispatch::DispatchResult, parameter_types, traits::{ - Contains, Currency, FindAuthor, Get, Imbalance, KeyOwnerProofSystem, OnFinalize, - OnInitialize, OnUnbalanced, OneSessionHandler, + Contains, Currency, FindAuthor, GenesisBuild as _, Get, Imbalance, KeyOwnerProofSystem, + OnFinalize, OnInitialize, OnUnbalanced, OneSessionHandler, SortedMembers, }, weights::{constants::RocksDbWeight, DispatchInfo, Weight}, IterableStorageMap, StorageDoubleMap, StorageMap, StorageValue, @@ -54,7 +54,7 @@ use polymesh_primitives::{ }; use sp_core::H256; use sp_npos_elections::{ - reduce, to_support_map, CompactSolution, ElectionScore, EvaluateSupport, ExtendedBalance, + reduce, to_supports, ElectionScore, EvaluateSupport, ExtendedBalance, NposSolution, StakedAssignment, }; use sp_runtime::{ @@ -121,10 +121,10 @@ impl OneSessionHandler for OtherSessionHandler { }); } - fn on_disabled(validator_index: usize) { + fn on_disabled(validator_index: u32) { SESSION.with(|d| { let mut d = d.borrow_mut(); - let value = d.0[validator_index]; + let value = d.0[validator_index as usize]; d.1.insert(value); }) } @@ -148,21 +148,22 @@ frame_support::construct_runtime!( NodeBlock = Block, UncheckedExtrinsic = UncheckedExtrinsic, { - System: frame_system::{Module, Call, Config, Storage, Event}, - Babe: pallet_babe::{Module, Call, Storage, Config, Inherent, ValidateUnsigned}, - Timestamp: pallet_timestamp::{Module, Call, Storage, Inherent}, - Balances: pallet_balances::{Module, Call, Storage, Config, Event}, - Staking: staking::{Module, Call, Config, Storage, Event, ValidateUnsigned}, - Session: pallet_session::{Module, Call, Storage, Event, Config}, - Identity: pallet_identity::{Module, Call, Storage, Event, Config}, - CddServiceProviders: pallet_group::::{Module, Call, Storage, Event, Config}, - ProtocolFee: pallet_protocol_fee::{Module, Call, Storage, Event, Config}, - Scheduler: pallet_scheduler::{Module, Call, Storage, Event}, - Treasury: pallet_treasury::{Module, Call, Event}, - PolymeshCommittee: pallet_committee::::{Module, Call, Storage, Origin, Event, Config}, - Pips: pallet_pips::{Module, Call, Storage, Event, Config}, - TestUtils: pallet_test_utils::{Module, Call, Storage, Event}, - Base: pallet_base::{Module, Call, Event}, + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Babe: pallet_babe::{Pallet, Call, Storage, Config, ValidateUnsigned}, + Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent}, + Authorship: pallet_authorship::{Pallet, Call, Storage, Inherent}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + Staking: staking::{Pallet, Call, Config, Storage, Event, ValidateUnsigned}, + Session: pallet_session::{Pallet, Call, Storage, Event, Config}, + Identity: pallet_identity::{Pallet, Call, Storage, Event, Config}, + CddServiceProviders: pallet_group::::{Pallet, Call, Storage, Event, Config}, + ProtocolFee: pallet_protocol_fee::{Pallet, Call, Storage, Event, Config}, + Scheduler: pallet_scheduler::{Pallet, Call, Storage, Event}, + Treasury: pallet_treasury::{Pallet, Call, Event}, + PolymeshCommittee: pallet_committee::::{Pallet, Call, Storage, Origin, Event, Config}, + Pips: pallet_pips::{Pallet, Call, Storage, Event, Config}, + TestUtils: pallet_test_utils::{Pallet, Call, Storage, Event}, + Base: pallet_base::{Pallet, Call, Event}, } ); @@ -196,7 +197,7 @@ parameter_types! { } impl frame_system::Config for Test { - type BaseCallFilter = (); + type BaseCallFilter = frame_support::traits::Everything; type BlockWeights = (); type BlockLength = (); type DbWeight = RocksDbWeight; @@ -217,6 +218,7 @@ impl frame_system::Config for Test { type OnNewAccount = (); type OnKilledAccount = (); type SystemWeightInfo = (); + type OnSetCode = (); type SS58Prefix = (); } @@ -242,7 +244,6 @@ impl pallet_balances::Config for Test { parameter_types! { pub const UncleGenerations: u64 = 0; - pub const DisabledValidatorsThreshold: Perbill = Perbill::from_percent(25); } sp_runtime::impl_opaque_keys! { pub struct SessionKeys { @@ -257,7 +258,6 @@ impl pallet_session::Config for Test { type Event = Event; type ValidatorId = AccountId; type ValidatorIdOf = StashOf; - type DisabledValidatorsThreshold = DisabledValidatorsThreshold; type NextSessionRotation = pallet_session::PeriodicSessions; type WeightInfo = (); } @@ -361,6 +361,7 @@ impl pallet_scheduler::Config for Test { type ScheduleOrigin = EnsureRoot; type MaxScheduledPerBlock = MaxScheduledPerBlock; type WeightInfo = (); + type OriginPrivilegeCmp = frame_support::traits::EqualPrivilegeOnly; } impl pallet_test_utils::Config for Test { @@ -516,6 +517,7 @@ impl polymesh_common_utilities::traits::permissions::Config for Test { parameter_types! { pub const EpochDuration: u64 = 10; pub const ExpectedBlockTime: u64 = 1; + pub const MaxAuthorities: u32 = 100; } impl pallet_babe::Config for Test { @@ -523,6 +525,7 @@ impl pallet_babe::Config for Test { type EpochDuration = EpochDuration; type ExpectedBlockTime = ExpectedBlockTime; type EpochChangeTrigger = pallet_babe::ExternalTrigger; + type DisabledValidators = Session; type KeyOwnerProofSystem = (); type KeyOwnerProof = >::IdentificationTuple; type HandleEquivocation = pallet_babe::EquivocationHandler; + + type MaxAuthorities = MaxAuthorities; } pallet_staking_reward_curve::build! { @@ -582,12 +587,19 @@ parameter_types! { } impl Contains for TwoThousand { - fn sorted_members() -> std::vec::Vec { - [2000, 3000, 4000, 5000].to_vec() + fn contains(t: &u64) -> bool { + TwoThousand::get() == *t + } +} + +impl SortedMembers for TwoThousand { + fn sorted_members() -> Vec { + vec![TwoThousand::get()] } } impl Config for Test { + const MAX_NOMINATIONS: u32 = pallet_staking::MAX_NOMINATIONS; type Currency = Balances; type UnixTime = Timestamp; type CurrencyToVote = frame_support::traits::SaturatingCurrencyToVote; @@ -1289,7 +1301,7 @@ pub(crate) fn on_offence_in_era( let bonded_eras = staking::BondedEras::get(); for &(bonded_era, start_session) in bonded_eras.iter() { if bonded_era == era { - let _ = Staking::on_offence(offenders, slash_fraction, start_session).unwrap(); + let _ = Staking::on_offence(offenders, slash_fraction, start_session); return; } else if bonded_era > era { break; @@ -1301,8 +1313,7 @@ pub(crate) fn on_offence_in_era( offenders, slash_fraction, Staking::eras_start_session_index(era).unwrap(), - ) - .unwrap(); + ); } else { panic!("cannot slash in era {}", era); } @@ -1405,7 +1416,7 @@ pub(crate) fn horrible_phragmen_with_post_processing( let score = { let (_, _, better_score) = prepare_submission_with(true, true, 0, |_| {}); - let support = to_support_map::(&winners, &staked_assignment).unwrap(); + let support = to_supports::(&staked_assignment); let score = support.evaluate(); assert!(sp_npos_elections::is_score_better::( @@ -1443,7 +1454,7 @@ pub(crate) fn horrible_phragmen_with_post_processing( >(staked_assignment); let compact = - CompactAssignments::from_assignment(assignments_reduced, nominator_index, validator_index) + CompactAssignments::from_assignment(&assignments_reduced, nominator_index, validator_index) .unwrap(); // winner ids to index @@ -1468,7 +1479,7 @@ pub(crate) fn prepare_submission_with( winners, assignments, } = Staking::do_phragmen::(iterations).unwrap(); - let winners = sp_npos_elections::to_without_backing(winners); + let winners = winners.into_iter().map(|(who, _)| who).collect::>(); let mut staked = sp_npos_elections::assignment_ratio_to_staked( assignments, @@ -1513,15 +1524,14 @@ pub(crate) fn prepare_submission_with( Staking::slashable_balance_of_fn(), ); - let support_map = - to_support_map::(winners.as_slice(), staked.as_slice()).unwrap(); + let support_map = to_supports::(staked.as_slice()); support_map.evaluate() } else { Default::default() }; let compact = - CompactAssignments::from_assignment(assignments_reduced, nominator_index, validator_index) + CompactAssignments::from_assignment(&assignments_reduced, nominator_index, validator_index) .expect("Failed to create compact"); // winner ids to index @@ -1557,7 +1567,7 @@ pub(crate) fn staking_events() -> Vec> { .into_iter() .map(|r| r.event) .filter_map(|e| { - if let Event::staking(inner) = e { + if let Event::Staking(inner) = e { Some(inner) } else { None diff --git a/pallets/runtime/tests/src/staking/mod.rs b/pallets/runtime/tests/src/staking/mod.rs index 34babfd194..281f72ed48 100644 --- a/pallets/runtime/tests/src/staking/mod.rs +++ b/pallets/runtime/tests/src/staking/mod.rs @@ -108,6 +108,7 @@ use pallet_staking::*; use sp_npos_elections::ElectionScore; use sp_runtime::{ assert_eq_error_rate, + offchain::storage::MutateStorageError::ValueFunctionFailed, traits::BadOrigin, transaction_validity::{InvalidTransaction, TransactionValidity, ValidTransaction}, Perbill, @@ -337,10 +338,10 @@ fn rewards_should_work() { individual: vec![(11, 100), (21, 50)].into_iter().collect(), } ); - let part_for_10 = Perbill::from_rational_approximation::(1000, 1125); - let part_for_20 = Perbill::from_rational_approximation::(1000, 1375); - let part_for_100_from_10 = Perbill::from_rational_approximation::(125, 1125); - let part_for_100_from_20 = Perbill::from_rational_approximation::(375, 1375); + let part_for_10 = Perbill::from_rational::(1000, 1125); + let part_for_20 = Perbill::from_rational::(1000, 1375); + let part_for_100_from_10 = Perbill::from_rational::(125, 1125); + let part_for_100_from_20 = Perbill::from_rational::(375, 1375); start_session(2); start_session(3); @@ -746,9 +747,9 @@ fn nominators_also_get_slashed_pro_rata() { let slash_amount = slash_percent * exposed_stake; let validator_share = - Perbill::from_rational_approximation(exposed_validator, exposed_stake) * slash_amount; + Perbill::from_rational(exposed_validator, exposed_stake) * slash_amount; let nominator_share = - Perbill::from_rational_approximation(exposed_nominator, exposed_stake) * slash_amount; + Perbill::from_rational(exposed_nominator, exposed_stake) * slash_amount; // both slash amounts need to be positive for the test to make sense. assert!(validator_share > 0); @@ -2302,7 +2303,7 @@ fn reward_from_authorship_event_handler_works() { ExtBuilder::default().build_and_execute(|| { use pallet_authorship::EventHandler; - assert_eq!(>::author(), 11); + assert_eq!(>::author(), 11); >::note_author(11); >::note_uncle(21, 1); @@ -3296,7 +3297,7 @@ mod offchain_phragmen { use parking_lot::RwLock; use sp_core::offchain::{ testing::{PoolState, TestOffchainExt, TestTransactionPoolExt}, - OffchainExt, TransactionPoolExt, + OffchainDbExt, OffchainWorkerExt, TransactionPoolExt, }; use sp_io::TestExternalities; use sp_npos_elections::StakedAssignment; @@ -3338,7 +3339,8 @@ mod offchain_phragmen { seed[0..4].copy_from_slice(&iterations.to_le_bytes()); offchain_state.write().seed = seed; - ext.register_extension(OffchainExt::new(offchain)); + ext.register_extension(OffchainDbExt::new(offchain.clone())); + ext.register_extension(OffchainWorkerExt::new(offchain)); ext.register_extension(TransactionPoolExt::new(pool)); pool_state @@ -4244,6 +4246,7 @@ mod offchain_phragmen { // slash 10. This must happen outside of the election window. let offender_expo = Staking::eras_stakers(Staking::active_era().unwrap().index, 11); + on_offence_now( &[OffenceDetails { offender: (11, offender_expo.clone()), @@ -4257,7 +4260,9 @@ mod offchain_phragmen { assert_ok!(Staking::validate(Origin::signed(10), Default::default())); // open the election window and create snapshots. - run_to_block(32); + // FIXME(Centril, Neopallium): We changed this to 32. + // We're unsure as to why this was necessary and if it was entirely correct. + run_to_block(23); // a solution that has been prepared after the slash. let (compact, winners, score) = prepare_submission_with(true, false, 0, |a| { @@ -4358,49 +4363,24 @@ mod offchain_phragmen { // re-execute after the next. not allowed. assert_eq!( offchain_election::set_check_offchain_execution_status::(13), - Err("recently executed."), + Err(ValueFunctionFailed("recently executed.")), ); // a fork like situation -- re-execute 10, 11, 12. But it won't go through. assert_eq!( offchain_election::set_check_offchain_execution_status::(10), - Err("fork."), + Err(ValueFunctionFailed("fork.")), ); assert_eq!( offchain_election::set_check_offchain_execution_status::(11), - Err("fork."), + Err(ValueFunctionFailed("fork.")), ); assert_eq!( offchain_election::set_check_offchain_execution_status::(12), - Err("recently executed."), + Err(ValueFunctionFailed("recently executed.")), ); }) } - - #[test] - #[should_panic] - fn offence_is_blocked_when_window_open() { - ExtBuilder::default() - .offchain_election_ext() - .validator_count(4) - .has_stakers(false) - .build() - .execute_with(|| { - run_to_block(12); - assert_eq!(Staking::era_election_status(), ElectionStatus::Open(12)); - - let offender_expo = Staking::eras_stakers(Staking::active_era().unwrap().index, 10); - - // panic from the impl in mock - on_offence_now( - &[OffenceDetails { - offender: (10, offender_expo.clone()), - reporters: vec![], - }], - &[Perbill::from_percent(10)], - ); - }) - } } #[test] @@ -4480,8 +4460,8 @@ fn claim_reward_at_the_last_era_and_no_double_claim_and_invalid_claim() { let init_balance_10 = Balances::total_balance(&10); let init_balance_100 = Balances::total_balance(&100); - let part_for_10 = Perbill::from_rational_approximation::(1000, 1125); - let part_for_100 = Perbill::from_rational_approximation::(125, 1125); + let part_for_10 = Perbill::from_rational::(1000, 1125); + let part_for_100 = Perbill::from_rational::(125, 1125); // Check state Payee::::insert(11, RewardDestination::Controller); @@ -4944,7 +4924,7 @@ fn offences_weight_calculated_correctly() { ExtBuilder::default().nominate(true).build_and_execute(|| { // On offence with zero offenders: 4 Reads, 1 Write let zero_offence_weight = ::DbWeight::get().reads_writes(4, 1); - assert_eq!(Staking::on_offence(&[], &[Perbill::from_percent(50)], 0), Ok(zero_offence_weight)); + assert_eq!(Staking::on_offence(&[], &[Perbill::from_percent(50)], 0), zero_offence_weight); // On Offence with N offenders, Unapplied: 4 Reads, 1 Write + 4 Reads, 5 Writes let n_offence_unapplied_weight = ::DbWeight::get().reads_writes(4, 1) @@ -4957,7 +4937,7 @@ fn offences_weight_calculated_correctly() { reporters: vec![], } ).collect(); - assert_eq!(Staking::on_offence(&offenders, &[Perbill::from_percent(50)], 0), Ok(n_offence_unapplied_weight)); + assert_eq!(Staking::on_offence(&offenders, &[Perbill::from_percent(50)], 0), n_offence_unapplied_weight); // On Offence with one offenders, Applied let one_offender = [ @@ -4975,7 +4955,7 @@ fn offences_weight_calculated_correctly() { // `reward_cost` * reporters (1) + ::DbWeight::get().reads_writes(2, 2); - assert_eq!(Staking::on_offence(&one_offender, &[Perbill::from_percent(50)], 0), Ok(one_offence_unapplied_weight)); + assert_eq!(Staking::on_offence(&one_offender, &[Perbill::from_percent(50)], 0), one_offence_unapplied_weight); }); } @@ -5342,7 +5322,9 @@ fn voting_for_pip_overlays_with_staking() { let alice_proposal = |deposit: u128| { let signer = Origin::signed(alice_acc); - let proposal = Box::new(Call::Pips(pallet_pips::Call::set_min_proposal_deposit(0))); + let proposal = Box::new(Call::Pips(pallet_pips::Call::set_min_proposal_deposit { + deposit: 0, + })); Pips::propose(signer, proposal, deposit, None, None) }; @@ -5371,7 +5353,9 @@ fn slashing_leaves_pips_untouched() { let acc = 11; let propose = |deposit| { let signer = Origin::signed(acc); - let proposal = Box::new(Call::Pips(pallet_pips::Call::set_active_pip_limit(0))); + let proposal = Box::new(Call::Pips(pallet_pips::Call::set_active_pip_limit { + limit: 0, + })); Pips::propose(signer, proposal, deposit, None, None) }; let slash = |amount| { @@ -5519,10 +5503,10 @@ fn test_reward_scheduling() { individual: vec![(11, 100), (21, 50)].into_iter().collect(), } ); - let _part_for_10 = Perbill::from_rational_approximation::(1000, 1125); - let _part_for_20 = Perbill::from_rational_approximation::(1000, 1375); - let part_for_100_from_10 = Perbill::from_rational_approximation::(125, 1125); - let part_for_100_from_20 = Perbill::from_rational_approximation::(375, 1375); + let _part_for_10 = Perbill::from_rational::(1000, 1125); + let _part_for_20 = Perbill::from_rational::(1000, 1375); + let part_for_100_from_10 = Perbill::from_rational::(125, 1125); + let part_for_100_from_20 = Perbill::from_rational::(375, 1375); start_session(2); start_session(3); diff --git a/pallets/runtime/tests/src/statistics_test.rs b/pallets/runtime/tests/src/statistics_test.rs index b6f1bd6eca..93754a1631 100644 --- a/pallets/runtime/tests/src/statistics_test.rs +++ b/pallets/runtime/tests/src/statistics_test.rs @@ -299,7 +299,7 @@ fn should_verify_tms() { add_ctm(10); let ptm25 = TransferManager::PercentageTransferManager(HashablePermill( - Permill::from_rational_approximation(1u32, 4u32), + Permill::from_rational(1u32, 4u32), )); // Add ptm with max ownership limit of 50% assert_ok!(add_tm(ptm25.clone())); @@ -317,7 +317,7 @@ fn should_verify_tms() { // Advanced scenario where charlie is limited at 30% but others at 25% assert_ok!(add_tm(TransferManager::PercentageTransferManager( - HashablePermill(Permill::from_rational_approximation(3u32, 10u32)) + HashablePermill(Permill::from_rational(3u32, 10u32)) ))); // Transfer should fail when dave is breaching the default limit ensure_invalid_transfer(ticker, alice, dave, 1); diff --git a/pallets/runtime/tests/src/sto_test.rs b/pallets/runtime/tests/src/sto_test.rs index 2594bc7e1c..5e28aad8ec 100644 --- a/pallets/runtime/tests/src/sto_test.rs +++ b/pallets/runtime/tests/src/sto_test.rs @@ -26,7 +26,7 @@ type EAError = pallet_external_agents::Error; type PortfolioError = pallet_portfolio::Error; type ComplianceManager = compliance_manager::Module; type Settlement = pallet_settlement::Module; -type Timestamp = pallet_timestamp::Module; +type Timestamp = pallet_timestamp::Pallet; #[track_caller] fn test(logic: impl FnOnce()) { diff --git a/pallets/runtime/tests/src/storage.rs b/pallets/runtime/tests/src/storage.rs index ac93c61ecb..29da1fc030 100644 --- a/pallets/runtime/tests/src/storage.rs +++ b/pallets/runtime/tests/src/storage.rs @@ -4,10 +4,10 @@ use super::ext_builder::{ }; use codec::Encode; use frame_support::{ - assert_ok, debug, + assert_ok, dispatch::DispatchResult, parameter_types, - traits::{Currency, Imbalance, KeyOwnerProofSystem, OnInitialize, OnUnbalanced, Randomness}, + traits::{Currency, Imbalance, KeyOwnerProofSystem, OnInitialize, OnUnbalanced}, weights::{ DispatchInfo, RuntimeDbWeight, Weight, WeightToFeeCoefficient, WeightToFeeCoefficients, WeightToFeePolynomial, @@ -45,9 +45,7 @@ use polymesh_primitives::{ PortfolioNumber, Scope, ScopeId, TrustedFor, TrustedIssuer, }; use polymesh_runtime_common::{merge_active_and_inactive, runtime::VMO}; -use polymesh_runtime_develop::constants::time::{ - EPOCH_DURATION_IN_BLOCKS, EPOCH_DURATION_IN_SLOTS, MILLISECS_PER_BLOCK, -}; +use polymesh_runtime_develop::constants::time::{EPOCH_DURATION_IN_BLOCKS, MILLISECS_PER_BLOCK}; use smallvec::smallvec; use sp_core::{ crypto::{key_types, Pair as PairTrait}, @@ -126,7 +124,7 @@ parameter_types! { pub const SlashDeferDuration: pallet_staking::EraIndex = 4; pub const ElectionLookahead: BlockNumber = EPOCH_DURATION_IN_BLOCKS / 4; pub const MaxIterations: u32 = 10; - pub MinSolutionScoreBump: Perbill = Perbill::from_rational_approximation(5u32, 10_000); + pub MinSolutionScoreBump: Perbill = Perbill::from_rational(5u32, 10_000); pub const MaxNominatorRewardedPerValidator: u32 = 2048; pub const IndexDeposit: Balance = DOLLARS; pub const RewardCurve: &'static PiecewiseLinear<'static> = &REWARD_CURVE; @@ -137,12 +135,12 @@ parameter_types! { pub const MinimumBond: Balance = 1 * POLY; pub const MaxLegsInInstruction: u32 = 100; pub const ImOnlineUnsignedPriority: TransactionPriority = TransactionPriority::max_value(); - pub const SessionDuration: BlockNumber = EPOCH_DURATION_IN_SLOTS as _; + pub const MaxAuthorities: u32 = 100_000; + pub const MaxKeys: u32 = 10_000; + pub const MaxPeerInHeartbeats: u32 = 10_000; + pub const MaxPeerDataEncodingSize: u32 = 1_000; pub const ReportLongevity: u64 = BondingDuration::get() as u64 * SessionsPerEra::get() as u64 * EpochDuration::get(); - - pub OffencesWeightSoftLimit: Weight = Perbill::from_percent(60) * MaximumBlockWeight::get(); - } frame_support::construct_runtime!( @@ -151,90 +149,90 @@ frame_support::construct_runtime!( NodeBlock = polymesh_primitives::Block, UncheckedExtrinsic = UncheckedExtrinsic, { - System: frame_system::{Module, Call, Config, Storage, Event} = 0, - Babe: pallet_babe::{Module, Call, Storage, Config, ValidateUnsigned} = 1, - Timestamp: pallet_timestamp::{Module, Call, Storage, Inherent} = 2, - Indices: pallet_indices::{Module, Call, Storage, Config, Event} = 3, + System: frame_system::{Pallet, Call, Config, Storage, Event} = 0, + Babe: pallet_babe::{Pallet, Call, Storage, Config, ValidateUnsigned} = 1, + Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent} = 2, + Indices: pallet_indices::{Pallet, Call, Storage, Config, Event} = 3, // Balance: Genesis config dependencies: System. - Balances: pallet_balances::{Module, Call, Storage, Config, Event} = 4, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event} = 4, // TransactionPayment: Genesis config dependencies: Balance. - TransactionPayment: pallet_transaction_payment::{Module, Storage} = 5, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage} = 5, // Identity: Genesis config deps: Timestamp. - Identity: pallet_identity::{Module, Call, Storage, Event, Config} = 6, - // Authorship: pallet_authorship::{Module, Call, Storage, Inherent} = 7, + Identity: pallet_identity::{Pallet, Call, Storage, Event, Config} = 6, + // Authorship: pallet_authorship::{Pallet, Call, Storage, Inherent} = 7, // CddServiceProviders: Genesis config deps: Identity - CddServiceProviders: pallet_group::::{Module, Call, Storage, Event, Config} = 38, + CddServiceProviders: pallet_group::::{Pallet, Call, Storage, Event, Config} = 38, // Staking: Genesis config deps: Balances, Indices, Identity, Babe, Timestamp, CddServiceProviders. - Staking: pallet_staking::{Module, Call, Config, Storage, Event, ValidateUnsigned} = 8, - Offences: pallet_offences::{Module, Call, Storage, Event} = 9, + Staking: pallet_staking::{Pallet, Call, Config, Storage, Event, ValidateUnsigned} = 8, + Offences: pallet_offences::{Pallet, Storage, Event} = 9, // Session: Genesis config deps: System. - Session: pallet_session::{Module, Call, Storage, Event, Config} = 10, - Grandpa: pallet_grandpa::{Module, Call, Storage, Config, Event} = 12, - ImOnline: pallet_im_online::{Module, Call, Storage, Event, ValidateUnsigned, Config} = 13, - AuthorityDiscovery: pallet_authority_discovery::{Module, Call, Config} = 14, - RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Module, Call, Storage} = 15, - Historical: pallet_session_historical::{Module} = 16, + Session: pallet_session::{Pallet, Call, Storage, Event, Config} = 10, + Grandpa: pallet_grandpa::{Pallet, Call, Storage, Config, Event} = 12, + ImOnline: pallet_im_online::{Pallet, Call, Storage, Event, ValidateUnsigned, Config} = 13, + AuthorityDiscovery: pallet_authority_discovery::{Pallet, Config} = 14, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage} = 15, + Historical: pallet_session_historical::{Pallet} = 16, // Sudo. Usable initially. // RELEASE: remove this for release build. - Sudo: pallet_sudo::{Module, Call, Config, Storage, Event} = 17, - MultiSig: pallet_multisig::{Module, Call, Config, Storage, Event} = 18, + Sudo: pallet_sudo::{Pallet, Call, Config, Storage, Event} = 17, + MultiSig: pallet_multisig::{Pallet, Call, Config, Storage, Event} = 18, /* // Contracts - BaseContracts: pallet_contracts::{Module, Config, Storage, Event} = 19, - Contracts: polymesh_contracts::{Module, Call, Storage, Event} = 20, + BaseContracts: pallet_contracts::{Pallet, Config, Storage, Event} = 19, + Contracts: polymesh_contracts::{Pallet, Call, Storage, Event} = 20, */ // Polymesh Governance Committees - Treasury: pallet_treasury::{Module, Call, Event} = 21, - PolymeshCommittee: pallet_committee::::{Module, Call, Storage, Origin, Event, Config} = 22, + Treasury: pallet_treasury::{Pallet, Call, Event} = 21, + PolymeshCommittee: pallet_committee::::{Pallet, Call, Storage, Origin, Event, Config} = 22, // CommitteeMembership: Genesis config deps: PolymeshCommittee, Identity. - CommitteeMembership: pallet_group::::{Module, Call, Storage, Event, Config} = 23, - Pips: pallet_pips::{Module, Call, Storage, Event, Config} = 24, - TechnicalCommittee: pallet_committee::::{Module, Call, Storage, Origin, Event, Config} = 25, + CommitteeMembership: pallet_group::::{Pallet, Call, Storage, Event, Config} = 23, + Pips: pallet_pips::{Pallet, Call, Storage, Event, Config} = 24, + TechnicalCommittee: pallet_committee::::{Pallet, Call, Storage, Origin, Event, Config} = 25, // TechnicalCommitteeMembership: Genesis config deps: TechnicalCommittee, Identity - TechnicalCommitteeMembership: pallet_group::::{Module, Call, Storage, Event, Config} = 26, - UpgradeCommittee: pallet_committee::::{Module, Call, Storage, Origin, Event, Config} = 27, + TechnicalCommitteeMembership: pallet_group::::{Pallet, Call, Storage, Event, Config} = 26, + UpgradeCommittee: pallet_committee::::{Pallet, Call, Storage, Origin, Event, Config} = 27, // UpgradeCommitteeMembership: Genesis config deps: UpgradeCommittee - UpgradeCommitteeMembership: pallet_group::::{Module, Call, Storage, Event, Config} = 28, + UpgradeCommitteeMembership: pallet_group::::{Pallet, Call, Storage, Event, Config} = 28, //Polymesh //////////// // Asset: Genesis config deps: Timestamp, - Asset: pallet_asset::{Module, Call, Storage, Config, Event} = 29, + Asset: pallet_asset::{Pallet, Call, Storage, Config, Event} = 29, // Bridge: Genesis config deps: Multisig, Identity, - Bridge: pallet_bridge::{Module, Call, Storage, Config, Event} = 31, - ComplianceManager: pallet_compliance_manager::{Module, Call, Storage, Event} = 32, - Settlement: pallet_settlement::{Module, Call, Storage, Event, Config} = 36, - Sto: pallet_sto::{Module, Call, Storage, Event} = 37, - Statistics: pallet_statistics::{Module, Call, Storage, Event} = 39, - ProtocolFee: pallet_protocol_fee::{Module, Call, Storage, Event, Config} = 40, - Utility: pallet_utility::{Module, Call, Storage, Event} = 41, - Portfolio: pallet_portfolio::{Module, Call, Storage, Event} = 42, + Bridge: pallet_bridge::{Pallet, Call, Storage, Config, Event} = 31, + ComplianceManager: pallet_compliance_manager::{Pallet, Call, Storage, Event} = 32, + Settlement: pallet_settlement::{Pallet, Call, Storage, Event, Config} = 36, + Sto: pallet_sto::{Pallet, Call, Storage, Event} = 37, + Statistics: pallet_statistics::{Pallet, Call, Storage, Event} = 39, + ProtocolFee: pallet_protocol_fee::{Pallet, Call, Storage, Event, Config} = 40, + Utility: pallet_utility::{Pallet, Call, Storage, Event} = 41, + Portfolio: pallet_portfolio::{Pallet, Call, Storage, Event} = 42, // Removed pallet Confidential = 43, - Permissions: pallet_permissions::{Module, Storage} = 44, - Scheduler: pallet_scheduler::{Module, Call, Storage, Event} = 45, - CorporateAction: pallet_corporate_actions::{Module, Call, Storage, Event, Config} = 46, - CorporateBallot: corporate_ballots::{Module, Call, Storage, Event} = 47, - CapitalDistribution: capital_distributions::{Module, Call, Storage, Event} = 48, - Checkpoint: pallet_checkpoint::{Module, Call, Storage, Event, Config} = 49, - TestUtils: pallet_test_utils::{Module, Call, Storage, Event } = 50, - Base: pallet_base::{Module, Call, Event} = 51, - ExternalAgents: pallet_external_agents::{Module, Call, Storage, Event} = 52, - Relayer: pallet_relayer::{Module, Call, Storage, Event} = 53, - Rewards: pallet_rewards::{Module, Call, Storage, Event, Config} = 54, + Permissions: pallet_permissions::{Pallet, Storage} = 44, + Scheduler: pallet_scheduler::{Pallet, Call, Storage, Event} = 45, + CorporateAction: pallet_corporate_actions::{Pallet, Call, Storage, Event, Config} = 46, + CorporateBallot: corporate_ballots::{Pallet, Call, Storage, Event} = 47, + CapitalDistribution: capital_distributions::{Pallet, Call, Storage, Event} = 48, + Checkpoint: pallet_checkpoint::{Pallet, Call, Storage, Event, Config} = 49, + TestUtils: pallet_test_utils::{Pallet, Call, Storage, Event } = 50, + Base: pallet_base::{Pallet, Call, Event} = 51, + ExternalAgents: pallet_external_agents::{Pallet, Call, Storage, Event} = 52, + Relayer: pallet_relayer::{Pallet, Call, Storage, Event} = 53, + Rewards: pallet_rewards::{Pallet, Call, Storage, Event, Config} = 54, } ); @@ -355,7 +353,7 @@ impl OnUnbalanced> for DealWithFees { fn on_nonzero_unbalanced(amount: NegativeImbalance) { let target = account_from(5000); let positive_imbalance = Balances::deposit_creating(&target, amount.peek()); - let _ = amount.offset(positive_imbalance).map_err(|_| 4); // random value mapped for error + let _ = amount.offset(positive_imbalance).same().map_err(|_| 4); // random value mapped for error } } @@ -381,8 +379,6 @@ parameter_types! { pub const MaxReceiverConditionsPerCompliance: usize = 30; pub const MaxCompliancePerRequirement: usize = 10; - pub const DisabledValidatorsThreshold: Perbill = Perbill::from_percent(33); - pub MaximumSchedulerWeight: Weight = Perbill::from_percent(80) * MaximumBlockWeight::get(); pub const MaxScheduledPerBlock: u32 = 50; @@ -551,7 +547,7 @@ impl pallet_session::SessionHandler for TestSessionHandler { ) { } - fn on_disabled(_validator_index: usize) {} + fn on_disabled(_validator_index: u32) {} fn on_genesis_session(_validators: &[(AuthorityId, Ks)]) {} fn on_before_session_ending() {} @@ -741,11 +737,11 @@ pub fn authorizations_to(to: &Signatory) -> Vec Weight { - let block_number = frame_system::Module::::block_number() + 1; - frame_system::Module::::set_block_number(block_number); + let block_number = frame_system::Pallet::::block_number() + 1; + frame_system::Pallet::::set_block_number(block_number); // Call the timelocked tx handler. - pallet_scheduler::Module::::on_initialize(block_number) + pallet_scheduler::Pallet::::on_initialize(block_number) } pub fn fast_forward_to_block(n: u32) -> Weight { @@ -889,7 +885,10 @@ pub fn create_cdd_id_and_investor_uid(identity_id: IdentityId) -> (CddId, Invest } pub fn make_remark_proposal() -> Call { - Call::System(frame_system::Call::remark(vec![b'X'; 100])).into() + Call::System(frame_system::Call::remark { + remark: vec![b'X'; 100], + }) + .into() } crate fn set_curr_did(did: Option) { diff --git a/pallets/runtime/tests/src/transaction_payment_test.rs b/pallets/runtime/tests/src/transaction_payment_test.rs index 2062616af5..8cd54c2a26 100644 --- a/pallets/runtime/tests/src/transaction_payment_test.rs +++ b/pallets/runtime/tests/src/transaction_payment_test.rs @@ -12,6 +12,7 @@ use pallet_balances::Call as BalancesCall; use pallet_transaction_payment::{ChargeTransactionPayment, Multiplier, RuntimeDispatchInfo}; use polymesh_primitives::AccountId; use polymesh_primitives::TransactionError; +use sp_arithmetic::traits::One; use sp_runtime::{ testing::TestXt, traits::SignedExtension, @@ -21,14 +22,14 @@ use sp_runtime::{ use test_client::AccountKeyring; fn call() -> ::Call { - Call::Balances(BalancesCall::transfer( - MultiAddress::Id(AccountKeyring::Alice.to_account_id()), - 69, - )) + Call::Balances(BalancesCall::transfer { + dest: MultiAddress::Id(AccountKeyring::Alice.to_account_id()), + value: 69, + }) } type Balances = pallet_balances::Module; -type System = frame_system::Module; +type System = frame_system::Pallet; type TransactionPayment = pallet_transaction_payment::Module; /// create a transaction info struct from weight. Handy to avoid building the whole struct. diff --git a/pallets/runtime/tests/src/utility_test.rs b/pallets/runtime/tests/src/utility_test.rs index 7915b0e77c..eaa5a35742 100644 --- a/pallets/runtime/tests/src/utility_test.rs +++ b/pallets/runtime/tests/src/utility_test.rs @@ -23,7 +23,10 @@ use test_client::AccountKeyring; type Error = utility::Error; fn transfer(to: AccountId, amount: u128) -> Call { - Call::Balances(BalancesCall::transfer(to.into(), amount)) + Call::Balances(BalancesCall::transfer { + dest: to.into(), + value: amount, + }) } const ERROR: DispatchError = DispatchError::Module { @@ -35,7 +38,7 @@ const ERROR: DispatchError = DispatchError::Module { fn assert_event(event: Event) { assert_eq!( System::events().pop().unwrap().event, - EventTest::pallet_utility(event) + EventTest::Utility(event) ) } @@ -167,7 +170,10 @@ fn _relay_happy_case() { let origin = Origin::signed(alice); let transaction = UniqueCall::new( Utility::nonce(bob.clone()), - Call::Balances(BalancesCall::transfer(charlie.clone().into(), 50)), + Call::Balances(BalancesCall::transfer { + dest: charlie.clone().into(), + value: 50, + }), ); assert_ok!(Utility::relay_tx( @@ -199,7 +205,10 @@ fn _relay_unhappy_cases() { let origin = Origin::signed(alice); let transaction = UniqueCall::new( Utility::nonce(bob.clone()), - Call::Balances(BalancesCall::transfer(charlie.clone().into(), 59)), + Call::Balances(BalancesCall::transfer { + dest: charlie.clone().into(), + value: 59, + }), ); assert_noop!( @@ -226,7 +235,10 @@ fn _relay_unhappy_cases() { let transaction = UniqueCall::new( Utility::nonce(bob.clone()) + 1, - Call::Balances(BalancesCall::transfer(charlie.into(), 59)), + Call::Balances(BalancesCall::transfer { + dest: charlie.into(), + value: 59, + }), ); assert_noop!( @@ -262,7 +274,7 @@ fn batch_secondary_with_permissions() { bob.origin(), low_risk_name.clone() )); - assert_last_event!(EventTest::pallet_portfolio( + assert_last_event!(EventTest::Portfolio( pallet_portfolio::Event::PortfolioCreated(_, _, _) )); check_name(low_risk_name.clone()); @@ -306,16 +318,18 @@ fn batch_secondary_with_permissions() { // Call one disallowed and one allowed extrinsic in a batch. let calls = vec![ - Call::Portfolio(PortfolioCall::create_portfolio(high_risk_name.clone())), - Call::Portfolio(PortfolioCall::rename_portfolio( - 1u64.into(), - high_risk_name.clone(), - )), + Call::Portfolio(PortfolioCall::create_portfolio { + name: high_risk_name.clone(), + }), + Call::Portfolio(PortfolioCall::rename_portfolio { + num: 1u64.into(), + to_name: high_risk_name.clone(), + }), ]; assert_ok!(Utility::batch(bob.origin(), calls.clone())); - assert_event_doesnt_exist!(EventTest::pallet_utility(Event::BatchCompleted(_))); + assert_event_doesnt_exist!(EventTest::Utility(Event::BatchCompleted(_))); assert_event_exists!( - EventTest::pallet_utility(Event::BatchInterrupted(events, err)), + EventTest::Utility(Event::BatchInterrupted(events, err)), events == &[0] && err.0 == 0 ); check_name(low_risk_name); @@ -323,7 +337,7 @@ fn batch_secondary_with_permissions() { // Call the same extrinsics optimistically. assert_ok!(Utility::batch_optimistic(bob.origin(), calls)); assert_event_exists!( - EventTest::pallet_utility(Event::BatchOptimisticFailed(events, errors)), + EventTest::Utility(Event::BatchOptimisticFailed(events, errors)), events == &[0, 1] && errors.len() == 1 && errors[0].0 == 0 ); check_name(high_risk_name); diff --git a/pallets/settlement/Cargo.toml b/pallets/settlement/Cargo.toml index 934763ff78..9dfd599eb3 100644 --- a/pallets/settlement/Cargo.toml +++ b/pallets/settlement/Cargo.toml @@ -24,21 +24,21 @@ codec = { package = "parity-scale-codec", version = "2.0.0", default-features = hex-literal = "0.2.1" hex = { version = "0.4.2", optional = true } -sp-core = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } -sp-serializer = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -sp-version = { version = "3.0.0", default-features = false } -sp-api = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } -pallet-timestamp = { version = "3.0.0", default-features = false } -#pallet-contracts = { version = "3.0.0", default-features = false } -pallet-scheduler = { version = "3.0.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-version = { version = "4.0.0-dev", default-features = false } +sp-api = { version = "4.0.0-dev", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +pallet-timestamp = { version = "4.0.0-dev", default-features = false } +#pallet-contracts = { version = "4.0.0-dev", default-features = false } +pallet-scheduler = { version = "4.0.0-dev", default-features = false } # Only in STD -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } [features] equalize = [] diff --git a/pallets/settlement/src/benchmarking.rs b/pallets/settlement/src/benchmarking.rs index 909a548e18..e615a50b47 100644 --- a/pallets/settlement/src/benchmarking.rs +++ b/pallets/settlement/src/benchmarking.rs @@ -63,7 +63,7 @@ impl From> for UserData { } fn set_block_number(new_block_no: u64) { - system::Module::::set_block_number(new_block_no.saturated_into::()); + frame_system::Pallet::::set_block_number(new_block_no.saturated_into::()); } fn creator>>() -> User { @@ -854,7 +854,7 @@ benchmarks! { pub fn next_block() { use frame_support::traits::OnInitialize; - let block_number = frame_system::Module::::block_number() + 1u32.into(); - frame_system::Module::::set_block_number(block_number); - pallet_scheduler::Module::::on_initialize(block_number); + let block_number = frame_system::Pallet::::block_number() + 1u32.into(); + frame_system::Pallet::::set_block_number(block_number); + pallet_scheduler::Pallet::::on_initialize(block_number); } diff --git a/pallets/settlement/src/lib.rs b/pallets/settlement/src/lib.rs index c25ffefd03..105012fcab 100644 --- a/pallets/settlement/src/lib.rs +++ b/pallets/settlement/src/lib.rs @@ -65,7 +65,7 @@ use frame_support::{ weights::Weight, IterableStorageDoubleMap, }; -use frame_system::{self as system, ensure_root, RawOrigin}; +use frame_system::{ensure_root, RawOrigin}; use pallet_base::{ensure_string_limited, try_next_post}; use pallet_identity::{self as identity, PermissionedCallOriginData}; use polymesh_common_utilities::{ @@ -80,11 +80,12 @@ use polymesh_primitives::{ impl_checked_inc, storage_migration_ver, Balance, IdentityId, PortfolioId, SecondaryKey, Ticker, }; use polymesh_primitives_derive::VecU8StrongTyped; +use scale_info::TypeInfo; use sp_runtime::traits::{One, Verify}; use sp_std::{collections::btree_set::BTreeSet, convert::TryFrom, prelude::*}; type Identity = identity::Module; -type System = frame_system::Module; +type System = frame_system::Pallet; type Asset = pallet_asset::Module; type ExternalAgents = pallet_external_agents::Module; @@ -111,18 +112,18 @@ pub trait Config: } /// A global and unique venue ID. -#[derive(Copy, Clone, Encode, Decode, PartialEq, Eq, PartialOrd, Ord, Default, Debug)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Default, Debug)] pub struct VenueId(pub u64); impl_checked_inc!(VenueId); /// A wrapper for VenueDetails -#[derive( - Decode, Encode, Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, VecU8StrongTyped, -)] +#[derive(Encode, Decode, TypeInfo, VecU8StrongTyped)] +#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord)] pub struct VenueDetails(Vec); /// Status of an instruction -#[derive(Encode, Decode, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Encode, Decode, TypeInfo, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] pub enum InstructionStatus { /// Invalid instruction or details pruned Unknown, @@ -139,7 +140,8 @@ impl Default for InstructionStatus { } /// Type of the venue. Used for offchain filtering. -#[derive(Encode, Decode, Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] pub enum VenueType { /// Default type - used for mixed and unknown types Other, @@ -158,7 +160,7 @@ impl Default for VenueType { } /// Status of a leg -#[derive(Encode, Decode, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Encode, Decode, TypeInfo, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] pub enum LegStatus { /// It is waiting for affirmation PendingTokenLock, @@ -175,7 +177,7 @@ impl Default for LegStatus { } /// Status of an affirmation -#[derive(Encode, Decode, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Encode, Decode, TypeInfo, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] pub enum AffirmationStatus { /// Invalid affirmation Unknown, @@ -192,7 +194,8 @@ impl Default for AffirmationStatus { } /// Type of settlement -#[derive(Encode, Decode, Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)] pub enum SettlementType { /// Instruction should be settled in the next block as soon as all affirmations are received. SettleOnAffirmation, @@ -207,12 +210,14 @@ impl Default for SettlementType { } /// A per-Instruction leg ID. -#[derive(Copy, Clone, Encode, Decode, PartialEq, Eq, PartialOrd, Ord, Default, Debug)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Default, Debug)] pub struct LegId(pub u64); impl_checked_inc!(LegId); /// A global and unique instruction ID. -#[derive(Copy, Clone, Encode, Decode, PartialEq, Eq, PartialOrd, Ord, Default, Debug)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Default, Debug)] pub struct InstructionId(pub u64); impl_checked_inc!(InstructionId); @@ -223,8 +228,9 @@ impl InstructionId { } } -/// Details about an instruction -#[derive(Encode, Decode, Default, Clone, PartialEq, Eq, Debug, PartialOrd, Ord)] +/// Details about an instruction. +#[derive(Encode, Decode, TypeInfo)] +#[derive(Default, Clone, PartialEq, Eq, Debug, PartialOrd, Ord)] pub struct Instruction { /// Unique instruction id. It is an auto incrementing number pub instruction_id: InstructionId, @@ -242,8 +248,9 @@ pub struct Instruction { pub value_date: Option, } -/// Details of a leg including the leg id in the instruction -#[derive(Encode, Decode, Default, Clone, PartialEq, Eq, Debug, PartialOrd, Ord)] +/// Details of a leg including the leg id in the instruction. +#[derive(Encode, Decode, TypeInfo)] +#[derive(Default, Clone, PartialEq, Eq, Debug, PartialOrd, Ord)] pub struct Leg { /// Portfolio of the sender pub from: PortfolioId, @@ -255,8 +262,9 @@ pub struct Leg { pub amount: Balance, } -/// Details about a venue -#[derive(Encode, Decode, Clone, Default, PartialEq, Eq, Debug, PartialOrd, Ord)] +/// Details about a venue. +#[derive(Encode, Decode, TypeInfo)] +#[derive(Clone, Default, PartialEq, Eq, Debug, PartialOrd, Ord)] pub struct Venue { /// Identity of the venue's creator pub creator: IdentityId, @@ -280,13 +288,12 @@ pub struct Receipt { } /// A wrapper for VenueDetails -#[derive( - Decode, Encode, Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, VecU8StrongTyped, -)] +#[derive(Encode, Decode, TypeInfo, VecU8StrongTyped)] +#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord)] pub struct ReceiptMetadata(Vec); /// Details about an offchain transaction receipt that a user must input -#[derive(Encode, Decode, Clone, PartialEq, Eq, Debug, PartialOrd, Ord)] +#[derive(Encode, Decode, TypeInfo, Clone, PartialEq, Eq, Debug, PartialOrd, Ord)] pub struct ReceiptDetails { /// Unique receipt number set by the signer for their receipts pub receipt_uid: u64, @@ -871,7 +878,7 @@ decl_module! { })?; // Schedule instruction to be executed in the next block. - let execution_at = system::Module::::block_number() + One::one(); + let execution_at = System::::block_number() + One::one(); Self::schedule_instruction(id, execution_at, InstructionLegs::iter_prefix(id).count() as u32); Self::deposit_event(RawEvent::InstructionRescheduled(did, id)); @@ -971,7 +978,7 @@ impl Module { venue_id, status: InstructionStatus::Pending, settlement_type, - created_at: Some(>::get()), + created_at: Some(>::get()), trade_date, value_date, }; @@ -1083,7 +1090,7 @@ impl Module { } if let SettlementType::SettleOnBlock(block_number) = details.settlement_type { ensure!( - block_number > system::Module::::block_number(), + block_number > System::::block_number(), Error::::InstructionSettleBlockPassed ); } @@ -1179,9 +1186,9 @@ impl Module { let legs = InstructionLegs::drain_prefix(id).collect::>(); let details = >::take(id); VenueInstructions::remove(details.venue_id, id); - >::remove_prefix(id); + >::remove_prefix(id, None); InstructionAffirmsPending::remove(id); - AffirmsReceived::remove_prefix(id); + AffirmsReceived::remove_prefix(id, None); // We remove duplicates in memory before triggering storage actions let mut counter_parties = BTreeSet::new(); @@ -1343,7 +1350,7 @@ impl Module { && Self::instruction_details(id).settlement_type == SettlementType::SettleOnAffirmation { // Schedule instruction to be executed in the next block. - let execution_at = system::Module::::block_number() + One::one(); + let execution_at = System::::block_number() + One::one(); Self::schedule_instruction(id, execution_at, legs_count); } } @@ -1353,8 +1360,8 @@ impl Module { /// NB - It is expected to execute the given instruction into the given block number but /// it is not a guaranteed behavior, Scheduler may have other high priority task scheduled /// for the given block so there are chances where the instruction execution block no. may drift. - fn schedule_instruction(id: InstructionId, execution_at: T::BlockNumber, legs_count: u32) { - let call = Call::::execute_scheduled_instruction(id, legs_count).into(); + fn schedule_instruction(id: InstructionId, execution_at: T::BlockNumber, _legs_count: u32) { + let call = Call::::execute_scheduled_instruction { id, _legs_count }.into(); if let Err(_) = T::Scheduler::schedule_named( id.execution_name(), DispatchTime::At(execution_at), diff --git a/pallets/staking/Cargo.toml b/pallets/staking/Cargo.toml index 40b097ae0f..30c771fd81 100644 --- a/pallets/staking/Cargo.toml +++ b/pallets/staking/Cargo.toml @@ -12,30 +12,32 @@ pallet-identity = { path = "../identity", default-features = false} # General static_assertions = "1.1.0" serde = { version = "1.0.104", optional = true } +log = "0.4.8" # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false} -sp-runtime = { version = "3.0.0", default-features = false } -sp-arithmetic = { version = "3.0.0", default-features = false } -sp-staking = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -sp-npos-elections = { version = "3.0.0", default-features = false} +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false} +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-arithmetic = { version = "4.0.0-dev", default-features = false } +sp-staking = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +sp-npos-elections = { version = "4.0.0-dev", default-features = false} -pallet-session = { features = ["historical"], version = "3.0.0", default-features = false } -pallet-authorship = { version = "3.0.0", default-features = false } -pallet-babe = { version = "3.0.0", default-features = false } +pallet-session = { features = ["historical"], version = "4.0.0-dev", default-features = false } +pallet-authorship = { version = "4.0.0-dev", default-features = false } +pallet-babe = { version = "4.0.0-dev", default-features = false } # Optional imports for benchmarking -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } rand_chacha = { version = "0.2", default-features = false, optional = true } [dev-dependencies] -pallet-staking-reward-curve = { version = "3.0.0", default-features = false } -sp-tracing = "3.0.0" +pallet-staking-reward-curve = { version = "4.0.0-dev", default-features = false } +sp-tracing = "4.0.0-dev" [features] default = ["std"] diff --git a/pallets/staking/rpc/Cargo.toml b/pallets/staking/rpc/Cargo.toml index 9c3de1effe..edea8b0e85 100644 --- a/pallets/staking/rpc/Cargo.toml +++ b/pallets/staking/rpc/Cargo.toml @@ -7,11 +7,11 @@ edition = "2018" [dependencies] codec = { package = "parity-scale-codec", version = "2.0.0" } serde = { version = "1.0.104", features = ["derive"] } -jsonrpc-core = "15.0.0" -jsonrpc-core-client = "15.0.0" -jsonrpc-derive = "15.0.0" -sp-runtime = { version = "3.0.0", default_features = false } -sp-blockchain = { version = "3.0.0", default_features = false} -sp-api = { version = "3.0.0", default_features = false} +jsonrpc-core = { version = "18.0.0", features = ["arbitrary_precision"] } +jsonrpc-core-client = { version = "18.0.0", features = ["arbitrary_precision"] } +jsonrpc-derive = "18.0.0" +sp-runtime = { version = "4.0.0-dev", default_features = false } +sp-blockchain = { version = "4.0.0-dev", default_features = false} +sp-api = { version = "4.0.0-dev", default_features = false} pallet-staking-rpc-runtime-api = { version = "2.0.0", path = "./runtime-api" } diff --git a/pallets/staking/rpc/runtime-api/Cargo.toml b/pallets/staking/rpc/runtime-api/Cargo.toml index 9a95ae539f..d799944011 100644 --- a/pallets/staking/rpc/runtime-api/Cargo.toml +++ b/pallets/staking/rpc/runtime-api/Cargo.toml @@ -5,9 +5,9 @@ authors = ["Anonymous"] edition = "2018" [dependencies] -sp-api = { version = "3.0.0", default_features = false} -sp-runtime = { version = "3.0.0", default_features = false} -frame-support = { version = "3.0.0", default-features = false } +sp-api = { version = "4.0.0-dev", default_features = false} +sp-runtime = { version = "4.0.0-dev", default_features = false} +frame-support = { version = "4.0.0-dev", default-features = false } [dev-dependencies] serde_json = "1.0.48" diff --git a/pallets/staking/src/benchmarking.rs b/pallets/staking/src/benchmarking.rs index d84e290513..1059412341 100644 --- a/pallets/staking/src/benchmarking.rs +++ b/pallets/staking/src/benchmarking.rs @@ -556,7 +556,7 @@ benchmarks! { let v in 1 .. 10; let n in 1 .. 100; - create_validators_with_nominators_for_era::(v, n, MAX_NOMINATIONS, false, None).unwrap(); + create_validators_with_nominators_for_era::(v, n, MAX_NOMINATIONS as usize, false, None).unwrap(); let session_index = SessionIndex::one(); }: { let validators = Staking::::new_era(session_index).ok_or("`new_era` failed")?; @@ -566,7 +566,7 @@ benchmarks! { payout_all { let v in 1 .. 10; let n in 1 .. 100; - create_validators_with_nominators_for_era::(v, n, MAX_NOMINATIONS, false, None).unwrap(); + create_validators_with_nominators_for_era::(v, n, MAX_NOMINATIONS as usize, false, None).unwrap(); // Start a new Era let new_validators = Staking::::new_era(SessionIndex::one()).unwrap(); assert_eq!(new_validators.len(), v as usize); @@ -641,12 +641,12 @@ benchmarks! { // number of winners, also ValidatorCount let w in 16 .. 100; - assert!(w as usize >= MAX_NOMINATIONS, "doesn't support lower value"); + assert!(w as usize >= MAX_NOMINATIONS as usize, "doesn't support lower value"); let winners = create_validators_with_nominators_for_era::( v, n, - MAX_NOMINATIONS, + MAX_NOMINATIONS as usize, false, Some(w), ).unwrap(); @@ -712,12 +712,12 @@ benchmarks! { // number of winners, also ValidatorCount. let w in 16 .. 100; - assert!(w as usize >= MAX_NOMINATIONS, "doesn't support lower value"); + assert!(w as usize >= MAX_NOMINATIONS as usize, "doesn't support lower value"); let winners = create_validators_with_nominators_for_era::( v, n, - MAX_NOMINATIONS, + MAX_NOMINATIONS as usize, false, Some(w), ).unwrap(); @@ -801,7 +801,7 @@ benchmarks! { // number of nominator intent let n in 1000 .. 2000; - create_validators_with_nominators_for_era::(v, n, MAX_NOMINATIONS, false, None).unwrap(); + create_validators_with_nominators_for_era::(v, n, MAX_NOMINATIONS as usize, false, None).unwrap(); // needed for the solution to be generates. assert!(>::create_stakers_snapshot().0); diff --git a/pallets/staking/src/inflation.rs b/pallets/staking/src/inflation.rs index 753ff59892..d1ffd2dc30 100644 --- a/pallets/staking/src/inflation.rs +++ b/pallets/staking/src/inflation.rs @@ -43,7 +43,7 @@ where // Milliseconds per year for the Julian year (365.25 days). const MILLISECONDS_PER_YEAR: u64 = 1000 * 3600 * 24 * 36525 / 100; - let portion = Perbill::from_rational_approximation(era_duration as u64, MILLISECONDS_PER_YEAR); + let portion = Perbill::from_rational(era_duration as u64, MILLISECONDS_PER_YEAR); // Have fixed rewards kicked in? if total_tokens >= max_inflated_issuance { let payout = portion * non_inflated_yearly_reward; diff --git a/pallets/staking/src/lib.rs b/pallets/staking/src/lib.rs index ceee159692..5b18ea8cfb 100644 --- a/pallets/staking/src/lib.rs +++ b/pallets/staking/src/lib.rs @@ -295,6 +295,8 @@ pub mod offchain_election; pub mod inflation; pub mod weights; +use core::fmt; +use crate::_npos::{NposSolution, EvaluateSupport}; use codec::{Decode, Encode, HasCompact}; use frame_support::{ decl_error, decl_event, decl_module, decl_storage, @@ -323,10 +325,11 @@ use pallet_identity as identity; use pallet_session::historical; use polymesh_common_utilities::{identity::Config as IdentityConfig, Context, GC_DID}; use polymesh_primitives::IdentityId; +use scale_info::TypeInfo; use sp_npos_elections::{ - generate_solution_type, is_score_better, seq_phragmen, to_support_map, Assignment, - CompactSolution, ElectionResult as PrimitiveElectionResult, ElectionScore, EvaluateSupport, - ExtendedBalance, PerThing128, SupportMap, VoteWeight, + generate_solution_type, is_score_better, seq_phragmen, to_support_map, + Assignment, ElectionResult as PrimitiveElectionResult, ElectionScore, + ExtendedBalance, PerThing128, Supports, SupportMap, VoteWeight, }; use sp_runtime::{ curve::PiecewiseLinear, @@ -359,7 +362,6 @@ const STAKING_ID: LockIdentifier = *b"staking "; pub const MAX_UNLOCKING_CHUNKS: usize = 32; /// Maximum number of validators accounted for the weight estimation of `set_commission_cap`. pub const MAX_ALLOWED_VALIDATORS: u32 = 150; -pub const MAX_NOMINATIONS: usize = ::LIMIT; pub(crate) const LOG_TARGET: &'static str = "staking"; @@ -367,7 +369,7 @@ pub(crate) const LOG_TARGET: &'static str = "staking"; #[macro_export] macro_rules! log { ($level:tt, $patter:expr $(, $values:expr)* $(,)?) => { - frame_support::debug::$level!( + log::$level!( target: crate::LOG_TARGET, $patter $(, $values)* ) @@ -399,9 +401,15 @@ pub type RewardPoint = u32; // Note: Maximum nomination limit is set here -- 16. generate_solution_type!( #[compact] - pub struct CompactAssignments::(16) + pub struct CompactAssignments::< + VoterIndex = NominatorIndex, + TargetIndex = ValidatorIndex, + Accuracy = OffchainAccuracy + >(16) ); +pub const MAX_NOMINATIONS: u32 = ::LIMIT as u32; + /// Accuracy used for on-chain election. pub type ChainAccuracy = Perbill; @@ -431,7 +439,7 @@ impl CompactAssignments { } /// Information regarding the active era (era in used in session). -#[derive(Encode, Decode, RuntimeDebug)] +#[derive(Encode, Decode, RuntimeDebug, TypeInfo)] pub struct ActiveEraInfo { /// Index of era. pub index: EraIndex, @@ -445,7 +453,7 @@ pub struct ActiveEraInfo { /// Reward points of an era. Used to split era total payout between validators. /// /// This points will be used to reward validators and their respective nominators. -#[derive(PartialEq, Encode, Decode, Default, RuntimeDebug)] +#[derive(PartialEq, Encode, Decode, Default, RuntimeDebug, TypeInfo)] pub struct EraRewardPoints { /// Total number of points. Equals the sum of reward points for each validator. pub total: RewardPoint, @@ -454,7 +462,7 @@ pub struct EraRewardPoints { } /// Indicates the initial status of the staker. -#[derive(RuntimeDebug)] +#[derive(RuntimeDebug, TypeInfo)] #[derive(Clone)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub enum StakerStatus { @@ -467,7 +475,7 @@ pub enum StakerStatus { } /// A destination account for payment. -#[derive(PartialEq, Eq, Copy, Clone, Encode, Decode, RuntimeDebug)] +#[derive(PartialEq, Eq, Copy, Clone, Encode, Decode, RuntimeDebug, TypeInfo)] pub enum RewardDestination { /// Pay into the stash account, increasing the amount at stake accordingly. Staked, @@ -486,7 +494,7 @@ impl Default for RewardDestination { } /// Preference of what happens regarding validation. -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug, TypeInfo)] pub struct ValidatorPrefs { /// Reward that validator takes up-front; only the rest is split between themselves and /// nominators. @@ -513,7 +521,7 @@ impl Default for ValidatorPrefs { // ----------------------------------------------------------------------------- /// Preference of an identity regarding validation. -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo, RuntimeDebug)] pub struct PermissionedIdentityPrefs { /// Intended number of validators an identity wants to run. /// @@ -541,7 +549,7 @@ impl PermissionedIdentityPrefs { // ----------------------------------------------------------------------------- /// Just a Balance/BlockNumber tuple to encode when a chunk of funds will be unlocked. -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug, TypeInfo)] pub struct UnlockChunk { /// Amount of funds to be unlocked. #[codec(compact)] @@ -552,7 +560,7 @@ pub struct UnlockChunk { } /// The ledger of a (bonded) stash. -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug, TypeInfo)] pub struct StakingLedger { /// The stash account whose balance is actually locked and at stake. pub stash: AccountId, @@ -681,7 +689,7 @@ impl StakingLedger where } /// A record of the nominations made by a specific account. -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug, TypeInfo)] pub struct Nominations { /// The targets of nomination. pub targets: Vec, @@ -697,7 +705,7 @@ pub struct Nominations { } /// The amount of exposure (to slashing) than an individual nominator has. -#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Encode, Decode, RuntimeDebug)] +#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Encode, Decode, RuntimeDebug, TypeInfo)] pub struct IndividualExposure { /// The stash account of the nominator in question. pub who: AccountId, @@ -707,7 +715,7 @@ pub struct IndividualExposure { } /// A snapshot of the stake backing a single validator in the system. -#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Encode, Decode, Default, RuntimeDebug)] +#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Encode, Decode, Default, RuntimeDebug, TypeInfo)] pub struct Exposure { /// The total balance backing this validator. #[codec(compact)] @@ -721,7 +729,7 @@ pub struct Exposure { /// A pending slash record. The value of the slash has been computed but not applied yet, /// rather deferred for several eras. -#[derive(Encode, Decode, Default, RuntimeDebug)] +#[derive(Encode, Decode, Default, RuntimeDebug, TypeInfo)] pub struct UnappliedSlash { /// The stash ID of the offending validator. pub validator: AccountId, @@ -736,7 +744,7 @@ pub struct UnappliedSlash { } /// Indicate how an election round was computed. -#[derive(PartialEq, Eq, Clone, Copy, Encode, Decode, RuntimeDebug)] +#[derive(PartialEq, Eq, Clone, Copy, Encode, Decode, RuntimeDebug, TypeInfo)] pub enum ElectionCompute { /// Result was forcefully computed on chain at the end of the session. OnChain, @@ -748,7 +756,7 @@ pub enum ElectionCompute { } /// The result of an election round. -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo, RuntimeDebug)] pub struct ElectionResult { /// Flat list of validators who have been elected. elected_stashes: Vec, @@ -760,7 +768,7 @@ pub struct ElectionResult { } /// The status of the upcoming (offchain) election. -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo, RuntimeDebug)] pub enum ElectionStatus { /// Nothing has and will happen for now. submission window is not open. Closed, @@ -773,7 +781,7 @@ pub enum ElectionStatus { /// Note that these values must reflect the __total__ number, not only those that are present in the /// solution. In short, these should be the same size as the size of the values dumped in /// `SnapshotValidators` and `SnapshotNominators`. -#[derive(PartialEq, Eq, Clone, Copy, Encode, Decode, RuntimeDebug, Default)] +#[derive(PartialEq, Eq, Clone, Copy, Encode, Decode, TypeInfo, RuntimeDebug, Default)] pub struct ElectionSize { /// Number of validators in the snapshot of the current election round. #[codec(compact)] @@ -835,11 +843,11 @@ impl SessionInterface<::AccountId> for T w Convert<::AccountId, Option<::AccountId>>, { fn disable_validator(validator: &::AccountId) -> Result { - >::disable(validator) + Ok(>::disable(validator)) } fn validators() -> Vec<::AccountId> { - >::validators() + >::validators() } fn prune_historical_up_to(up_to: SessionIndex) { @@ -868,6 +876,9 @@ pub trait Config: /// [`BalanceOf`]. type CurrencyToVote: CurrencyToVote>; + /// Maximum number of nominations per nominator. + const MAX_NOMINATIONS: u32; + /// Tokens have been minted and are unused for validator-reward. /// See [Era payout](./index.html#era-payout). type RewardRemainder: OnUnbalanced>; @@ -978,7 +989,7 @@ pub trait Config: } /// Mode of era-forcing. -#[derive(Copy, Clone, PartialEq, Eq, Encode, Decode, RuntimeDebug)] +#[derive(Copy, Clone, PartialEq, Eq, Encode, Decode, RuntimeDebug, TypeInfo)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub enum Forcing { /// Not forcing anything - just let whatever happen. @@ -997,7 +1008,7 @@ impl Default for Forcing { /// Switch used to change the "victim" for slashing. Victims can be /// validators, both validators and nominators, or no-one. -#[derive(Copy, Clone, PartialEq, Eq, Encode, Decode, RuntimeDebug)] +#[derive(Copy, Clone, PartialEq, Eq, Encode, Decode, TypeInfo, RuntimeDebug)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub enum SlashingSwitch { /// Allow validators but not nominators to get slashed. @@ -1017,7 +1028,7 @@ impl Default for SlashingSwitch { // A value placed in storage that represents the current version of the Staking storage. This value // is used by the `on_runtime_upgrade` logic to determine whether we run storage migration logic. // This should match directly with the semantic versions of the Rust crate. -#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug)] +#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug, TypeInfo)] enum Releases { V1_0_0Ancient, V2_0_0, @@ -1564,7 +1575,8 @@ decl_module! { // either current session final based on the plan, or we're forcing. (Self::is_current_session_final() || Self::will_era_be_forced()) { - if let Some(next_session_change) = T::NextNewSession::estimate_next_new_session(now) { + let (maybe_next_session_change, estimate_next_new_session_weight) = T::NextNewSession::estimate_next_new_session(now); + if let Some(next_session_change) = maybe_next_session_change { if let Some(remaining) = next_session_change.checked_sub(&now) { if remaining <= T::ElectionLookahead::get() && !remaining.is_zero() { // create snapshot. @@ -1586,7 +1598,7 @@ decl_module! { } else { log!(warn, "💸 Estimating next session change failed."); } - add_weight(0, 0, T::NextNewSession::weight(now)) + add_weight(0, 0, estimate_next_new_session_weight) } // For `era_election_status`, `is_current_session_final`, `will_era_be_forced` add_weight(3, 0, 0); @@ -1603,7 +1615,7 @@ decl_module! { if Self::era_election_status().is_open_at(now) { let offchain_status = set_check_offchain_execution_status::(now); if let Err(why) = offchain_status { - log!(warn, "💸 skipping offchain worker in open election window due to [{}]", why); + log!(warn, "💸 skipping offchain worker in open election window due to [{:?}]", why); } else { if let Err(e) = compute_offchain_election::() { log!(error, "💸 Error in election offchain worker: {:?}", e); @@ -1636,25 +1648,6 @@ decl_module! { T::BondingDuration::get(), ) ); - - use sp_runtime::UpperOf; - // see the documentation of `Assignment::try_normalize`. Now we can ensure that this - // will always return `Ok`. - // 1. Maximum sum of Vec must fit into `UpperOf`. - assert!( - >>::try_into(MAX_NOMINATIONS) - .unwrap() - .checked_mul(::one().deconstruct().try_into().unwrap()) - .is_some() - ); - - // 2. Maximum sum of Vec must fit into `UpperOf`. - assert!( - >>::try_into(MAX_NOMINATIONS) - .unwrap() - .checked_mul(::one().deconstruct().try_into().unwrap()) - .is_some() - ); } /// Take the origin account as a stash and lock up `value` of its balance. `controller` will @@ -1704,7 +1697,7 @@ decl_module! { Err(Error::::InsufficientValue)? } - system::Module::::inc_consumers(&stash).map_err(|_| Error::::BadState)?; + system::Pallet::::inc_consumers(&stash).map_err(|_| Error::::BadState)?; // You're auto-bonded forever, here. We might improve this by only bonding when // you actually validate/nominate and remove once you unbond __everything__. @@ -1962,7 +1955,7 @@ decl_module! { let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; let stash = &ledger.stash; ensure!(!targets.is_empty(), Error::::EmptyTargets); - ensure!(targets.len() <= MAX_NOMINATIONS, Error::::TooManyTargets); + ensure!(targets.len() <= T::MAX_NOMINATIONS as usize, Error::::TooManyTargets); let old = Nominators::::get(stash).map_or_else(Vec::new, |x| x.targets); @@ -2772,7 +2765,7 @@ impl Module { // This is the fraction of the total reward that the validator and the // nominators will get. - let validator_total_reward_part = Perbill::from_rational_approximation( + let validator_total_reward_part = Perbill::from_rational( validator_reward_points, total_reward_points, ); @@ -2787,7 +2780,7 @@ impl Module { let validator_leftover_payout = validator_total_payout - validator_commission_payout; // Now let's calculate how this is split to the validator. - let validator_exposure_part = Perbill::from_rational_approximation( + let validator_exposure_part = Perbill::from_rational( exposure.own, exposure.total, ); @@ -2808,7 +2801,7 @@ impl Module { // Lets now calculate how this is split to the nominators. // Reward only the clipped exposures. Note this is not necessarily sorted. for nominator in exposure.others.iter() { - let nominator_exposure_part = Perbill::from_rational_approximation( + let nominator_exposure_part = Perbill::from_rational( nominator.value, exposure.total, ); @@ -3115,15 +3108,15 @@ impl Module { ); // build the support map thereof in order to evaluate. - let supports = to_support_map::(&winners, &staked_assignments) - .map_err(|_| Error::::OffchainElectionBogusEdge)?; + let supports_map = to_support_map::(&staked_assignments); + let supports = supports_map.clone().into_iter().collect::>(); // Check if the score is the same as the claimed one. let submitted_score = (&supports).evaluate(); ensure!(submitted_score == claimed_score, Error::::OffchainElectionBogusScore); // At last, alles Ok. Exposures and store the result. - let exposures = Self::collect_exposure(supports); + let exposures = Self::collect_exposure(supports_map); log!( info, "💸 A better solution (with compute {:?} and score {:?}) has been validated and stored on chain.", @@ -3238,7 +3231,7 @@ impl Module { let rest = max_payout.saturating_sub(validator_payout); // Schedule Rewards for the validators - let next_block_no = >::block_number() + 1u32.into(); + let next_block_no = >::block_number() + 1u32.into(); for (index, validator_id) in T::SessionInterface::validators().into_iter().enumerate() { let schedule_block_no = next_block_no + index.saturated_into::(); match T::RewardScheduler::schedule( @@ -3246,7 +3239,10 @@ impl Module { None, HIGHEST_PRIORITY, RawOrigin::Root.into(), - Call::::payout_stakers_by_system(validator_id.clone(), active_era.index).into() + Call::::payout_stakers_by_system { + validator_stash: validator_id.clone(), + era: active_era.index, + }.into() ) { Ok(_) => log!( info, @@ -3405,17 +3401,7 @@ impl Module { Self::slashable_balance_of_fn(), ); - let supports = to_support_map::( - &elected_stashes, - &staked_assignments, - ) - .map_err(|_| - log!( - error, - "💸 on-chain phragmen is failing due to a problem in the result. This must be a bug." - ) - ) - .ok()?; + let supports = to_support_map::(&staked_assignments); // collect exposures let exposures = Self::collect_exposure(supports); @@ -3561,16 +3547,16 @@ impl Module { >::remove(stash); >::remove(stash); - system::Module::::dec_consumers(stash); + system::Pallet::::dec_consumers(stash); Ok(()) } /// Clear all era information for given era. fn clear_era_information(era_index: EraIndex) { - >::remove_prefix(era_index); - >::remove_prefix(era_index); - >::remove_prefix(era_index); + >::remove_prefix(era_index, None); + >::remove_prefix(era_index, None); + >::remove_prefix(era_index, None); >::remove(era_index); >::remove(era_index); >::remove(era_index); @@ -3707,37 +3693,42 @@ impl Module { /// /// Once the first new_session is planned, all session must start and then end in order, though /// some session can lag in between the newest session planned and the latest session started. -impl pallet_session::SessionManager for Module { +impl pallet_session::SessionManager for Module +where ::BlockNumber: fmt::Display +{ fn new_session(new_index: SessionIndex) -> Option> { - frame_support::debug::native::trace!( + log::trace!( target: LOG_TARGET, "[{}] planning new_session({})", - >::block_number(), + >::block_number(), new_index ); Self::new_session(new_index) } fn start_session(start_index: SessionIndex) { - frame_support::debug::native::trace!( + log::trace!( target: LOG_TARGET, "[{}] starting start_session({})", - >::block_number(), + >::block_number(), start_index ); Self::start_session(start_index) } fn end_session(end_index: SessionIndex) { - frame_support::debug::native::trace!( + log::trace!( target: LOG_TARGET, "[{}] ending end_session({})", - >::block_number(), + >::block_number(), end_index ); Self::end_session(end_index) } } -impl historical::SessionManager>> for Module { +impl historical::SessionManager>> +for Module +where ::BlockNumber: fmt::Display +{ fn new_session(new_index: SessionIndex) -> Option>)>> { @@ -3773,7 +3764,7 @@ where } fn note_uncle(author: T::AccountId, _age: T::BlockNumber) { Self::reward_by_ids(vec![ - (>::author(), 2), + (>::author(), 2), (author, 1) ]) } @@ -3828,11 +3819,7 @@ for Module where offenders: &[OffenceDetails>], slash_fraction: &[Perbill], slash_session: SessionIndex, - ) -> Result { - if !Self::can_report() { - return Err(()) - } - + ) -> u64 { // Polymesh-Note: // When slashing is off or allowed for none, set slash fraction to zero. // --------------------------------------------------------------------- @@ -3856,7 +3843,7 @@ for Module where add_db_reads_writes(1, 0); if active_era.is_none() { // this offence need not be re-submitted. - return Ok(consumed_weight) + return consumed_weight } active_era.expect("value checked not to be `None`; qed").index }; @@ -3881,7 +3868,7 @@ for Module where match eras.iter().rev().filter(|&&(_, ref sesh)| sesh <= &slash_session).next() { Some(&(ref slash_era, _)) => *slash_era, // before bonding period. defensive - should be filtered out. - None => return Ok(consumed_weight), + None => return consumed_weight, } }; @@ -3949,11 +3936,7 @@ for Module where } } - Ok(consumed_weight) - } - - fn can_report() -> bool { - Self::era_election_status().is_closed() + consumed_weight } } @@ -3992,13 +3975,7 @@ impl ReportOffence impl frame_support::unsigned::ValidateUnsigned for Module { type Call = Call; fn validate_unsigned(source: TransactionSource, call: &Self::Call) -> TransactionValidity { - if let Call::submit_election_solution_unsigned( - _, - _, - score, - era, - _, - ) = call { + if let Call::submit_election_solution_unsigned { score, era, .. } = call { use offchain_election::DEFAULT_LONGEVITY; // discard solution not coming from the local OCW. @@ -4046,13 +4023,7 @@ impl frame_support::unsigned::ValidateUnsigned for Module { } fn pre_dispatch(call: &Self::Call) -> Result<(), TransactionValidityError> { - if let Call::submit_election_solution_unsigned( - _, - _, - score, - era, - _, - ) = call { + if let Call::submit_election_solution_unsigned { score, era, .. } = call { // IMPORTANT NOTE: These checks are performed in the dispatch call itself, yet we need // to duplicate them here to prevent a block producer from putting a previously // validated, yet no longer valid solution on chain. diff --git a/pallets/staking/src/offchain_election.rs b/pallets/staking/src/offchain_election.rs index 5983ca5c8a..813f371168 100644 --- a/pallets/staking/src/offchain_election.rs +++ b/pallets/staking/src/offchain_election.rs @@ -17,6 +17,7 @@ //! Helpers for offchain worker election. +use crate::_npos::{NposSolution, EvaluateSupport}; use crate::{ Call, CompactAssignments, Config, ElectionSize, Module, NominatorIndex, Nominators, OffchainAccuracy, ValidatorIndex, @@ -25,10 +26,13 @@ use codec::Decode; use frame_support::{traits::Get, weights::Weight, IterableStorageMap}; use frame_system::offchain::SubmitTransaction; use sp_npos_elections::{ - reduce, to_support_map, Assignment, CompactSolution, ElectionResult, ElectionScore, - EvaluateSupport, ExtendedBalance, + reduce, to_supports, Assignment, ElectionResult, ElectionScore, ExtendedBalance, +}; +use sp_runtime::{ + offchain::storage::{StorageValueRef, MutateStorageError}, + traits::TrailingZeroInput, + RuntimeDebug, }; -use sp_runtime::{offchain::storage::StorageValueRef, traits::TrailingZeroInput, RuntimeDebug}; use sp_std::{convert::TryInto, prelude::*}; /// Error types related to the offchain election machinery. @@ -71,18 +75,18 @@ pub(crate) const DEFAULT_LONGEVITY: u64 = 25; /// Returns `Ok(())` if offchain worker should happen, `Err(reason)` otherwise. pub fn set_check_offchain_execution_status( now: T::BlockNumber, -) -> Result<(), &'static str> { +) -> Result<(), MutateStorageError<::BlockNumber, &'static str>> { let storage = StorageValueRef::persistent(&OFFCHAIN_HEAD_DB); let threshold = T::BlockNumber::from(OFFCHAIN_REPEAT); let mutate_stat = - storage.mutate::<_, &'static str, _>(|maybe_head: Option>| { + storage.mutate::<_, &'static str, _>(|maybe_head| { match maybe_head { - Some(Some(head)) if now < head => Err("fork."), - Some(Some(head)) if now >= head && now <= head + threshold => { + Ok(Some(head)) if now < head => Err("fork."), + Ok(Some(head)) if now >= head && now <= head + threshold => { Err("recently executed.") } - Some(Some(head)) if now > head + threshold => { + Ok(Some(head)) if now > head + threshold => { // we can run again now. Write the new head. Ok(now) } @@ -93,14 +97,7 @@ pub fn set_check_offchain_execution_status( } }); - match mutate_stat { - // all good - Ok(Ok(_)) => Ok(()), - // failed to write. - Ok(Err(_)) => Err("failed to write to offchain db."), - // fork etc. - Err(why) => Err(why), - } + mutate_stat.map(drop) } /// The internal logic of the offchain worker of this module. This runs the phragmen election, @@ -131,16 +128,16 @@ pub(crate) fn compute_offchain_election() -> Result<(), OffchainElect ); // defensive-only: current era can never be none except genesis. - let current_era = >::current_era().unwrap_or_default(); + let era = >::current_era().unwrap_or_default(); // send it. - let call = Call::submit_election_solution_unsigned( + let call = Call::submit_election_solution_unsigned { winners, compact, score, - current_era, + era, size, - ).into(); + }.into(); SubmitTransaction::>::submit_unsigned_transaction(call) .map_err(|_| OffchainElectionError::PoolSubmissionFailed) @@ -359,7 +356,7 @@ pub fn prepare_submission( }; // Clean winners. - let winners = sp_npos_elections::to_without_backing(winners); + let winners = winners.into_iter().map(|(who, _)| who).collect::>(); // convert into absolute value and to obtain the reduced version. let mut staked = sp_npos_elections::assignment_ratio_to_staked( @@ -378,7 +375,7 @@ pub fn prepare_submission( // compact encode the assignment. let compact = CompactAssignments::from_assignment( - low_accuracy_assignment, + &low_accuracy_assignment, nominator_index, validator_index, ) @@ -417,8 +414,7 @@ pub fn prepare_submission( >::slashable_balance_of_fn(), ); - let support_map = to_support_map::(&winners, &staked) - .map_err(|_| OffchainElectionError::ElectionFailed)?; + let support_map = to_supports::(&staked); support_map.evaluate() }; diff --git a/pallets/staking/src/slashing.rs b/pallets/staking/src/slashing.rs index 1610299221..9349f1588c 100644 --- a/pallets/staking/src/slashing.rs +++ b/pallets/staking/src/slashing.rs @@ -54,6 +54,7 @@ use super::{ NegativeImbalanceOf, UnappliedSlash, Error, SlashingSwitch, }; +use scale_info::TypeInfo; use sp_runtime::{traits::{Zero, Saturating}, RuntimeDebug, DispatchResult}; use frame_support::{ StorageMap, StorageDoubleMap, ensure, @@ -70,7 +71,7 @@ const REWARD_F1: Perbill = Perbill::from_percent(50); pub type SpanIndex = u32; // A range of start..end eras for a slashing span. -#[derive(Encode, Decode)] +#[derive(Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Debug, PartialEq))] pub struct SlashingSpan { pub index: SpanIndex, @@ -85,7 +86,7 @@ impl SlashingSpan { } /// An encoding of all of a nominator's slashing spans. -#[derive(Encode, Decode, RuntimeDebug)] +#[derive(Encode, Decode, RuntimeDebug, TypeInfo)] pub struct SlashingSpans { // the index of the current slashing span of the nominator. different for // every stash, resets when the account hits free balance 0. @@ -175,7 +176,7 @@ impl SlashingSpans { } /// A slashing-span record for a particular stash. -#[derive(Encode, Decode, Default)] +#[derive(Encode, Decode, Default, TypeInfo)] pub struct SpanRecord { slashed: Balance, paid_out: Balance, @@ -549,8 +550,8 @@ impl<'a, T: 'a + Config> Drop for InspectingSpans<'a, T> { /// Clear slashing metadata for an obsolete era. pub(crate) fn clear_era_metadata(obsolete_era: EraIndex) { - as Store>::ValidatorSlashInEra::remove_prefix(&obsolete_era); - as Store>::NominatorSlashInEra::remove_prefix(&obsolete_era); + as Store>::ValidatorSlashInEra::remove_prefix(&obsolete_era, None); + as Store>::NominatorSlashInEra::remove_prefix(&obsolete_era, None); } /// Clear slashing metadata for a dead account. diff --git a/pallets/staking/src/testing_utils.rs b/pallets/staking/src/testing_utils.rs index ef423dd513..4197b463f6 100644 --- a/pallets/staking/src/testing_utils.rs +++ b/pallets/staking/src/testing_utils.rs @@ -39,8 +39,8 @@ const SEED: u32 = 0; /// This function removes all validators and nominators from storage. pub fn clear_validators_and_nominators() { - Validators::::remove_all(); - Nominators::::remove_all(); + Validators::::remove_all(None); + Nominators::::remove_all(None); } /// Grab a funded user with the given balance. @@ -309,14 +309,13 @@ pub fn get_weak_solution( >::slashable_balance_of_fn(), ); - let support_map = - to_support_map::(winners.as_slice(), staked.as_slice()).unwrap(); + let support_map = to_supports::(staked.as_slice()); support_map.evaluate() }; // compact encode the assignment. let compact = CompactAssignments::from_assignment( - low_accuracy_assignment, + &low_accuracy_assignment, nominator_index, validator_index, ) @@ -439,7 +438,7 @@ pub fn create_assignments_for_offchain( ), &'static str, > { - let ratio = OffchainAccuracy::from_rational_approximation(1, MAX_NOMINATIONS); + let ratio = OffchainAccuracy::from_rational(1, MAX_NOMINATIONS); let assignments: Vec> = >::iter() .take(num_assignments as usize) .map(|(n, t)| Assignment { diff --git a/pallets/statistics/Cargo.toml b/pallets/statistics/Cargo.toml index 3fb6d74d05..582f663d2e 100644 --- a/pallets/statistics/Cargo.toml +++ b/pallets/statistics/Cargo.toml @@ -15,24 +15,24 @@ serde_derive = { version = "1.0.112", optional = true, default-features = false} # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-api = { version = "3.0.0", default-features = false } -sp-arithmetic = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-api = { version = "4.0.0-dev", default-features = false } +sp-arithmetic = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +frame-support = { version = "4.0.0-dev", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } -frame-support = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } - -pallet-timestamp = { version = "3.0.0", default-features = false } -pallet-session = { version = "3.0.0", default-features = false } +pallet-timestamp = { version = "4.0.0-dev", default-features = false } +pallet-session = { version = "4.0.0-dev", default-features = false } # Only in STD -substrate-test-runtime-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymath-3.0.0", optional = true} +substrate-test-runtime-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop", optional = true} # Only in Benchmarks -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } [dev-dependencies] lazy_static = "1.4.0" diff --git a/pallets/statistics/src/lib.rs b/pallets/statistics/src/lib.rs index a03addbffe..a26d8c5b09 100644 --- a/pallets/statistics/src/lib.rs +++ b/pallets/statistics/src/lib.rs @@ -289,10 +289,8 @@ impl Module { total_supply: Balance, max_percentage: Percentage, ) -> DispatchResult { - let new_percentage = sp_arithmetic::Permill::from_rational_approximation( - receiver_balance + value, - total_supply, - ); + let new_percentage = + sp_arithmetic::Permill::from_rational(receiver_balance + value, total_supply); ensure!( new_percentage <= *max_percentage || Self::entity_exempt( diff --git a/pallets/sto/Cargo.toml b/pallets/sto/Cargo.toml index 164a9f264c..7d0bec04fc 100644 --- a/pallets/sto/Cargo.toml +++ b/pallets/sto/Cargo.toml @@ -20,22 +20,22 @@ polymesh-primitives-derive = { path = "../../primitives_derive", default-feature serde = { version = "1.0.104", default-features = false } serde_derive = { version = "1.0.104", optional = true, default-features = false } -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } -sp-serializer = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -sp-version = { version = "3.0.0", default-features = false } -sp-api = { version = "3.0.0", default-features = false } -pallet-timestamp = { version = "3.0.0", default-features = false } +codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-version = { version = "4.0.0-dev", default-features = false } +sp-api = { version = "4.0.0-dev", default-features = false } +pallet-timestamp = { version = "4.0.0-dev", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } # Only in STD -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } [features] equalize = [] diff --git a/pallets/sto/src/benchmarking.rs b/pallets/sto/src/benchmarking.rs index 8ed5c12e46..71f1fe6847 100644 --- a/pallets/sto/src/benchmarking.rs +++ b/pallets/sto/src/benchmarking.rs @@ -18,7 +18,7 @@ const RAISE_TICKER: Ticker = Ticker::repeating(b'B'); pub type Asset = pallet_asset::Module; pub type ComplianceManager = pallet_compliance_manager::Module; pub type Identity = pallet_identity::Module; -pub type Timestamp = pallet_timestamp::Module; +pub type Timestamp = pallet_timestamp::Pallet; pub type Settlement = pallet_settlement::Module; pub type Sto = crate::Module; diff --git a/pallets/sto/src/lib.rs b/pallets/sto/src/lib.rs index b4d6aa6da5..d40bb926c9 100644 --- a/pallets/sto/src/lib.rs +++ b/pallets/sto/src/lib.rs @@ -40,6 +40,7 @@ use polymesh_common_utilities::{ }; use polymesh_primitives::impl_checked_inc; use polymesh_primitives_derive::VecU8StrongTyped; +use scale_info::TypeInfo; use frame_support::weights::Weight; use polymesh_primitives::{Balance, EventDid, IdentityId, PortfolioId, Ticker}; @@ -52,15 +53,16 @@ type ExternalAgents = pallet_external_agents::Module; type Identity = pallet_identity::Module; type Portfolio = pallet_portfolio::Module; type Settlement = pallet_settlement::Module; -type Timestamp = pallet_timestamp::Module; +type Timestamp = pallet_timestamp::Pallet; /// The per-ticker ID of a fundraiser. -#[derive(Copy, Clone, Encode, Decode, PartialEq, Eq, PartialOrd, Ord, Default, Debug)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Default, Debug)] pub struct FundraiserId(pub u64); impl_checked_inc!(FundraiserId); /// Status of a Fundraiser. -#[derive(Clone, PartialEq, Eq, Encode, Decode, PartialOrd, Ord, Debug)] +#[derive(Clone, PartialEq, Eq, Encode, Decode, TypeInfo, PartialOrd, Ord, Debug)] pub enum FundraiserStatus { /// Fundraiser is open for investments if start_time <= current_time < end_time. Live, @@ -79,7 +81,8 @@ impl Default for FundraiserStatus { } /// Details about the Fundraiser. -#[derive(Encode, Decode, Default, Clone, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Default, Clone, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr(feature = "std", derive(Debug))] pub struct Fundraiser { /// The permissioned agent that created the `Fundraiser`. @@ -115,7 +118,8 @@ impl Fundraiser { } /// Single tier of a tiered pricing model. -#[derive(Encode, Decode, Default, Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Default, Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] pub struct PriceTier { /// Total amount available. pub total: Balance, @@ -125,7 +129,8 @@ pub struct PriceTier { /// Single price tier of a `Fundraiser`. /// Similar to a `PriceTier` but with an extra field `remaining` for tracking the amount available for purchase in a tier. -#[derive(Encode, Decode, Default, Clone, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Default, Clone, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr(feature = "std", derive(Debug))] pub struct FundraiserTier { /// Total amount available. @@ -146,10 +151,9 @@ impl Into for PriceTier { } } -/// Wrapper type for Fundraiser name -#[derive( - Decode, Encode, Clone, Default, Debug, PartialEq, Eq, PartialOrd, Ord, VecU8StrongTyped, -)] +/// Wrapper type for Fundraiser name. +#[derive(Encode, Decode, TypeInfo, VecU8StrongTyped)] +#[derive(Clone, Default, Debug, PartialEq, Eq, PartialOrd, Ord)] pub struct FundraiserName(Vec); pub trait WeightInfo { diff --git a/pallets/sudo/Cargo.toml b/pallets/sudo/Cargo.toml index 856e2b4e53..e3618fa093 100644 --- a/pallets/sudo/Cargo.toml +++ b/pallets/sudo/Cargo.toml @@ -15,14 +15,15 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] serde = { version = "1.0.104", optional = true } codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false} -sp-runtime = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false} +sp-runtime = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } [dev-dependencies] -sp-core = { version = "3.0.0", default-features = false } +sp-core = { version = "4.0.0-dev", default-features = false } [features] default = ["std"] diff --git a/pallets/test-utils/Cargo.toml b/pallets/test-utils/Cargo.toml index 0058ef2d3f..d997e4b0b8 100644 --- a/pallets/test-utils/Cargo.toml +++ b/pallets/test-utils/Cargo.toml @@ -16,15 +16,15 @@ serde = { version = "1.0.104", default-features = false } serde_derive = { version = "1.0.104", optional = true, default-features = false } # Crypto -confidential_identity = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, tag = "confidential-identity-v1.1.3" } +confidential_identity = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, branch = "confidential-identity-v1" } # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "3.0.0", default-features = false } - -frame-system = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } +sp-std = { version = "4.0.0-dev", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +frame-system = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } [features] diff --git a/pallets/test-utils/src/benchmarking.rs b/pallets/test-utils/src/benchmarking.rs index 06dcc6c843..58d02de0da 100644 --- a/pallets/test-utils/src/benchmarking.rs +++ b/pallets/test-utils/src/benchmarking.rs @@ -22,7 +22,6 @@ use polymesh_common_utilities::{ }; use frame_benchmarking::{account, benchmarks}; -use sp_std::prelude::*; const SEED: u32 = 0; #[cfg(feature = "running-ci")] @@ -70,5 +69,5 @@ benchmarks! { Module::::mock_cdd_register_did(cdd.origin().into(), user.account()) .expect("CDD provider cannot generate a DID for that user"); - }: _(user.origin, user.account) + }: _(user.origin(), user.account()) } diff --git a/pallets/transaction-payment/Cargo.toml b/pallets/transaction-payment/Cargo.toml index e5c68cdd4f..0859a42cbe 100644 --- a/pallets/transaction-payment/Cargo.toml +++ b/pallets/transaction-payment/Cargo.toml @@ -14,13 +14,14 @@ serde = { version = "1.0.104", default-features = false, optional = true } # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "3.0.0", default-features = false } -sp-api = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -pallet-timestamp = { version = "3.0.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-api = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +pallet-timestamp = { version = "4.0.0-dev", default-features = false } [dev-dependencies] serde_json = "1.0.56" diff --git a/pallets/transaction-payment/src/lib.rs b/pallets/transaction-payment/src/lib.rs index 90053d6170..031d459be0 100644 --- a/pallets/transaction-payment/src/lib.rs +++ b/pallets/transaction-payment/src/lib.rs @@ -68,6 +68,7 @@ use polymesh_common_utilities::traits::{ transaction_payment::{CddAndFeeDetails, ChargeTxFee}, }; use polymesh_primitives::TransactionError; +use scale_info::TypeInfo; use sp_runtime::{ traits::{ Convert, DispatchInfoOf, Dispatchable, PostDispatchInfoOf, SaturatedConversion, Saturating, @@ -199,7 +200,7 @@ where .get(DispatchClass::Normal) .max_total .unwrap_or_else(|| weights.max_block); - let current_block_weight = >::block_weight(); + let current_block_weight = >::block_weight(); let normal_block_weight = *current_block_weight .get(DispatchClass::Normal) .min(&normal_max_weight); @@ -240,7 +241,7 @@ where } /// Storage releases of the module. -#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug)] +#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug, TypeInfo)] enum Releases { /// Original version of the module. V1Ancient, @@ -344,7 +345,7 @@ decl_module! { target += addition; sp_io::TestExternalities::new_empty().execute_with(|| { - >::set_block_consumed_resources(target, 0); + >::set_block_consumed_resources(target, 0); let next = T::FeeMultiplierUpdate::convert(min_value); assert!(next > min_value, "The minimum bound of the multiplier is too low. When \ block saturation is more than target by 1% and multiplier is minimal then \ @@ -527,7 +528,8 @@ where /// Require the transactor pay for themselves and maybe include a tip to gain additional priority /// in the queue. -#[derive(Encode, Decode, Clone, Eq, PartialEq)] +#[derive(Encode, Decode, TypeInfo, Clone, Eq, PartialEq)] +#[scale_info(skip_type_params(T))] pub struct ChargeTransactionPayment(#[codec(compact)] BalanceOf); impl ChargeTransactionPayment diff --git a/pallets/transaction-payment/src/payment.rs b/pallets/transaction-payment/src/payment.rs index a6b2020a65..db697d2137 100644 --- a/pallets/transaction-payment/src/payment.rs +++ b/pallets/transaction-payment/src/payment.rs @@ -25,7 +25,8 @@ pub trait OnChargeTransaction { + Copy + MaybeSerializeDeserialize + Debug - + Default; + + Default + + scale_info::TypeInfo; type LiquidityInfo: Default; /// Before the transaction is executed the payment of the transaction fees @@ -156,10 +157,11 @@ where // merge the imbalance caused by paying the fees and refunding parts of it again. let adjusted_paid = paid .offset(refund_imbalance) + .same() .map_err(|_| TransactionValidityError::Invalid(InvalidTransaction::Payment))?; // Call someone else to handle the imbalance (fee and tip separately) - let imbalances = adjusted_paid.split(tip); - OU::on_unbalanceds(Some(imbalances.0).into_iter().chain(Some(imbalances.1))); + let (tip, fee) = adjusted_paid.split(tip); + OU::on_unbalanceds(Some(fee).into_iter().chain(Some(tip))); } Ok(()) } diff --git a/pallets/treasury/Cargo.toml b/pallets/treasury/Cargo.toml index d7a6412976..094d0b7606 100644 --- a/pallets/treasury/Cargo.toml +++ b/pallets/treasury/Cargo.toml @@ -17,18 +17,19 @@ serde_derive = { version = "1.0.104", optional = true, default-features = false # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -sp-version = { version = "3.0.0", default-features = false } -sp-api = { version = "3.0.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-version = { version = "4.0.0-dev", default-features = false } +sp-api = { version = "4.0.0-dev", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -frame-support = { version = "3.0.0", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } # Benchmarking -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } [features] equalize = [] diff --git a/pallets/treasury/src/lib.rs b/pallets/treasury/src/lib.rs index 3b5e9ae949..befc482b53 100644 --- a/pallets/treasury/src/lib.rs +++ b/pallets/treasury/src/lib.rs @@ -36,6 +36,7 @@ #[cfg(feature = "runtime-benchmarks")] pub mod benchmarking; +use frame_support::traits::{StorageInfo, StorageInfoTrait}; use frame_support::{ decl_error, decl_event, decl_module, ensure, traits::{Currency, ExistenceRequirement, Imbalance, OnUnbalanced, WithdrawReasons}, @@ -44,7 +45,7 @@ use frame_support::{ use frame_system::ensure_root; use pallet_identity as identity; use polymesh_common_utilities::{ - constants::TREASURY_MODULE_ID, traits::balances::Config as BalancesConfig, Context, GC_DID, + constants::TREASURY_PALLET_ID, traits::balances::Config as BalancesConfig, Context, GC_DID, }; use polymesh_primitives::{Beneficiary, IdentityId}; use sp_runtime::traits::{AccountIdConversion, Saturating}; @@ -151,7 +152,7 @@ impl Module { /// This actually does computation. If you need to keep using it, then make sure you cache the /// value and only call this once. fn account_id() -> T::AccountId { - TREASURY_MODULE_ID.into_account() + TREASURY_PALLET_ID.into_account() } fn unsafe_disbursement(target: IdentityId, amount: BalanceOf) { @@ -182,3 +183,9 @@ impl OnUnbalanced> for Module { Self::deposit_event(RawEvent::TreasuryReimbursement(current_did, numeric_amount)); } } + +impl StorageInfoTrait for Module { + fn storage_info() -> Vec { + Vec::new() + } +} diff --git a/pallets/utility/Cargo.toml b/pallets/utility/Cargo.toml index d6b81bc16e..1cf5a233be 100644 --- a/pallets/utility/Cargo.toml +++ b/pallets/utility/Cargo.toml @@ -15,13 +15,14 @@ polymesh-primitives = { path = "../../primitives", default-features = false } # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } -frame-benchmarking = { version = "3.0.0", default-features = false, optional = true } -frame-support = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -sp-core = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } +frame-support = { version = "4.0.0-dev", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } # Only for benchmarks hex-literal = "0.2.1" diff --git a/pallets/utility/src/benchmarking.rs b/pallets/utility/src/benchmarking.rs index 80f8edb070..dc13c32b2d 100644 --- a/pallets/utility/src/benchmarking.rs +++ b/pallets/utility/src/benchmarking.rs @@ -13,7 +13,7 @@ const MAX_CALLS: u32 = 30; /// Generate `c` no-op system remark calls. fn make_calls(c: u32) -> Vec<::Call> { - let call: ::Call = frame_system::Call::::remark(vec![]).into(); + let call: ::Call = frame_system::Call::::remark { remark: vec![] }.into(); vec![call; c as usize] } @@ -24,7 +24,11 @@ fn make_transfer_calls( amount: u128, ) -> Vec<::Call> { let idx = ::Lookup::unlookup(to); - let call: ::Call = BalancesCall::transfer(idx, amount.into()).into(); + let call: ::Call = BalancesCall::transfer { + dest: idx, + value: amount.into(), + } + .into(); vec![call; c as usize] } diff --git a/pallets/utility/src/lib.rs b/pallets/utility/src/lib.rs index 0ffa1d5b1f..85a27e68ed 100644 --- a/pallets/utility/src/lib.rs +++ b/pallets/utility/src/lib.rs @@ -60,7 +60,7 @@ use frame_support::{ weights::{GetDispatchInfo, Weight}, Parameter, }; -use frame_system::{ensure_root, ensure_signed, Module as System, RawOrigin}; +use frame_system::{ensure_root, ensure_signed, Pallet as System, RawOrigin}; use pallet_balances::{self as balances}; use pallet_permissions::with_call_metadata; use polymesh_common_utilities::{ @@ -68,6 +68,7 @@ use polymesh_common_utilities::{ identity::{AuthorizationNonce, Config as IdentityConfig}, with_transaction, }; +use scale_info::TypeInfo; use sp_runtime::{traits::Dispatchable, traits::Verify, DispatchError, RuntimeDebug}; use sp_std::prelude::*; @@ -138,7 +139,7 @@ decl_event! { } /// Wraps a `Call` and provides uniqueness through a nonce -#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug)] +#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo)] pub struct UniqueCall { nonce: AuthorizationNonce, call: Box, diff --git a/pallets/weights/Cargo.toml b/pallets/weights/Cargo.toml index 7d5fe5b432..70b0d6590f 100644 --- a/pallets/weights/Cargo.toml +++ b/pallets/weights/Cargo.toml @@ -6,16 +6,16 @@ edition = "2018" [dependencies] # substrate pallets -frame-support = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -pallet-timestamp = { version = "3.0.0", default-features = false } -pallet-babe = { version = "3.0.0", default-features = false } -pallet-im-online = { version = "3.0.0", default-features = false } -pallet-indices = { version = "3.0.0", default-features = false } -pallet-grandpa = { version = "3.0.0", default-features = false } -pallet-scheduler = { version = "3.0.0", default-features = false } -pallet-session = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +pallet-timestamp = { version = "4.0.0-dev", default-features = false } +pallet-babe = { version = "4.0.0-dev", default-features = false } +pallet-im-online = { version = "4.0.0-dev", default-features = false } +pallet-indices = { version = "4.0.0-dev", default-features = false } +pallet-grandpa = { version = "4.0.0-dev", default-features = false } +pallet-scheduler = { version = "4.0.0-dev", default-features = false } +pallet-session = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } # our pallets pallet-asset = { path = "../asset", default-features = false } diff --git a/pallets/weights/src/frame_system.rs b/pallets/weights/src/frame_system.rs index a4a9f76ef2..3a7e184b65 100644 --- a/pallets/weights/src/frame_system.rs +++ b/pallets/weights/src/frame_system.rs @@ -55,6 +55,9 @@ impl frame_system::WeightInfo for WeightInfo { fn remark(_b: u32) -> Weight { (1_594_000 as Weight) } + fn remark_with_event(_b: u32) -> Weight { + (1_787_000 as Weight) + } fn set_heap_pages() -> Weight { (2_017_000 as Weight).saturating_add(DbWeight::get().writes(1 as Weight)) } @@ -81,7 +84,4 @@ impl frame_system::WeightInfo for WeightInfo { .saturating_add((968_000 as Weight).saturating_mul(p as Weight)) .saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(p as Weight))) } - fn suicide() -> Weight { - (53_564_000 as Weight) - } } diff --git a/pallets/weights/src/pallet_babe.rs b/pallets/weights/src/pallet_babe.rs index 5b0e5b9a63..5d5da2df92 100644 --- a/pallets/weights/src/pallet_babe.rs +++ b/pallets/weights/src/pallet_babe.rs @@ -24,6 +24,10 @@ use polymesh_runtime_common::{ pub struct WeightInfo; impl pallet_babe::WeightInfo for WeightInfo { + fn plan_config_change() -> Weight { + 0 + } + // WARNING! Some components were not used: ["x"] fn report_equivocation(validator_count: u32) -> Weight { // we take the validator set count from the membership proof to diff --git a/polymesh_schema.json b/polymesh_schema.json index 391506766b..10437a49df 100644 --- a/polymesh_schema.json +++ b/polymesh_schema.json @@ -431,7 +431,12 @@ "Custom": "Vec" } }, - "InvestorZKProofData": "[u8; 64]", + "InvestorZKProofData": "Lookup336", + "Lookup336": { + "r": "CompressedRistretto", + "s": "Scalar" + }, + "CompressedRistretto": "[u8; 32]", "Scalar": "[u8; 32]", "RistrettoPoint": "[u8; 32]", "ZkProofData": { @@ -714,7 +719,7 @@ "RestrictionResult": { "_enum": ["Valid", "Invalid", "ForceValid"] }, - "Memo": "[u8;32]", + "Memo": "[u8; 32]", "BridgeTx": { "nonce": "u32", "recipient": "AccountId", @@ -904,7 +909,7 @@ "start": "Option", "period": "CalendarPeriod", "remaining": "u32" - }, + }, "InstructionStatus": { "_enum": { "Unknown": "", diff --git a/primitives/Cargo.toml b/primitives/Cargo.toml index d7e9e66428..f4dfa559fe 100644 --- a/primitives/Cargo.toml +++ b/primitives/Cargo.toml @@ -17,23 +17,24 @@ polymesh-primitives-derive = { path = "../primitives_derive", default-features = # Crypto blake2 = { version = "0.9", default-features = false } -confidential_identity = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, tag = "confidential-identity-v2.0.0" } -confidential_identity_v1 = { package = "confidential_identity", git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, tag = "confidential-identity-v1.1.3" } +confidential_identity = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, branch = "confidential-identity-v2" } +confidential_identity_v1 = { package = "confidential_identity", git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, branch = "confidential-identity-v1" } schnorrkel = { version = "0.10.1", default-features = false } # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -frame-support = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } -sp-application-crypto = { version = "3.0.0", default-features = false, optional = true } -sp-arithmetic = { version = "3.0.0", default-features = false } -sp-core = { version = "3.0.0", default-features = false } -sp-io = { version = "3.0.0", default-features = false } -sp-runtime = { version = "3.0.0", default-features = false } -sp-runtime-interface = { version = "3.0.0", default-features = false } -sp-std = { version = "3.0.0", default-features = false } -sp-version = { version = "3.0.0", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-application-crypto = { version = "4.0.0-dev", default-features = false, optional = true } +sp-arithmetic = { version = "4.0.0-dev", default-features = false } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-runtime-interface = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +sp-version = { version = "4.0.0-dev", default-features = false } libsecp256k1 = { version = "0.6", default-features = false, features = ["hmac", "static-context"] } [dev-dependencies] diff --git a/primitives/src/agent.rs b/primitives/src/agent.rs index 17a579f5cb..d653c842f9 100644 --- a/primitives/src/agent.rs +++ b/primitives/src/agent.rs @@ -1,5 +1,6 @@ use crate::impl_checked_inc; use codec::{Decode, Encode}; +use scale_info::TypeInfo; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; @@ -7,13 +8,15 @@ use sp_runtime::{Deserialize, Serialize}; /// By *local*, we mean that the same number might be used for a different `Ticker` /// to uniquely identify a different Agent Group. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Encode, Decode, Default, Debug)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Default, Debug)] pub struct AGId(pub u32); impl_checked_inc!(AGId); /// The available set of agent groups. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Encode, Decode, Debug)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Debug)] pub enum AgentGroup { /// Has all permissions. Full, diff --git a/primitives/src/asset.rs b/primitives/src/asset.rs index a7a80fcd40..4962fa2356 100644 --- a/primitives/src/asset.rs +++ b/primitives/src/asset.rs @@ -19,23 +19,23 @@ use crate::impl_checked_inc; use crate::statistics::TransferManagerResult; use codec::{Decode, Encode}; use polymesh_primitives_derive::VecU8StrongTyped; +use scale_info::TypeInfo; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; use sp_std::prelude::Vec; /// A wrapper for a token name. -#[derive( - Decode, Encode, Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord, VecU8StrongTyped, -)] +#[derive(Encode, Decode, TypeInfo, VecU8StrongTyped)] +#[derive(Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)] pub struct AssetName(pub Vec); /// The ID of a custom asset type. -#[derive(Encode, Decode, Copy, Clone, Default, Debug, PartialEq, Eq)] +#[derive(Encode, Decode, TypeInfo, Copy, Clone, Default, Debug, PartialEq, Eq)] pub struct CustomAssetTypeId(pub u32); impl_checked_inc!(CustomAssetTypeId); /// The type of security represented by a token. -#[derive(Encode, Decode, Copy, Clone, Debug, PartialEq, Eq)] +#[derive(Encode, Decode, TypeInfo, Copy, Clone, Debug, PartialEq, Eq)] pub enum AssetType { /// Common stock - a security that represents ownership in a corporation. EquityCommon, @@ -81,9 +81,8 @@ impl Default for AssetType { } /// A wrapper for a funding round name. -#[derive( - Decode, Encode, Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord, Default, VecU8StrongTyped, -)] +#[derive(Decode, Encode, TypeInfo, VecU8StrongTyped)] +#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord, Default)] pub struct FundingRoundName(pub Vec); /// Result of a granular can transfer. diff --git a/primitives/src/asset_identifier.rs b/primitives/src/asset_identifier.rs index cbcf16823a..4dcc8cb23d 100644 --- a/primitives/src/asset_identifier.rs +++ b/primitives/src/asset_identifier.rs @@ -1,9 +1,10 @@ use codec::{Decode, Encode}; use core::convert::TryInto; +use scale_info::TypeInfo; /// Implementation of common asset identifiers /// https://www.cusip.com/identifiers.html -#[derive(Encode, Decode, Clone, Debug, PartialEq, Eq)] +#[derive(Encode, Decode, TypeInfo, Clone, Debug, PartialEq, Eq)] pub enum AssetIdentifier { /// Universally recognized identifier for financial instruments /// Example: Amazon.com Inc - Common Stock diff --git a/primitives/src/authorization.rs b/primitives/src/authorization.rs index feff0523e9..c5be1e3d2b 100644 --- a/primitives/src/authorization.rs +++ b/primitives/src/authorization.rs @@ -19,12 +19,13 @@ use crate::{ }; use codec::{Decode, Encode}; use frame_support::dispatch::DispatchError; +use scale_info::TypeInfo; #[cfg(feature = "std")] use serde::{Deserialize, Serialize}; use sp_std::prelude::*; /// Authorization data for two step processes. -#[derive(Encode, Decode, Clone, PartialEq, Eq, Debug, PartialOrd, Ord)] +#[derive(Encode, Decode, TypeInfo, Clone, PartialEq, Eq, Debug, PartialOrd, Ord)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub enum AuthorizationData { /// CDD provider's attestation to change primary key @@ -130,7 +131,7 @@ impl From for DispatchError { } /// Authorization struct -#[derive(Encode, Decode, Clone, PartialEq, Debug)] +#[derive(Encode, Decode, TypeInfo, Clone, PartialEq, Debug)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct Authorization { /// Enum that contains authorization type and data diff --git a/primitives/src/calendar.rs b/primitives/src/calendar.rs index 8797284de2..909d6e43c2 100644 --- a/primitives/src/calendar.rs +++ b/primitives/src/calendar.rs @@ -2,18 +2,20 @@ use crate::Moment; use chrono::{Datelike, NaiveDate, NaiveDateTime}; use codec::{Decode, Encode}; use core::num::NonZeroU64; +use scale_info::TypeInfo; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; use sp_std::convert::TryFrom; /// A per-ticker checkpoint ID. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Encode, Decode, Default, Debug)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Default, Debug)] pub struct CheckpointId(pub u64); /// Calendar units for timing recurring operations. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Encode, Decode, Clone, Copy, Debug, PartialEq, Eq)] +#[derive(Encode, Decode, TypeInfo, Clone, Copy, Debug, PartialEq, Eq)] pub enum CalendarUnit { /// A unit of one second. Second, @@ -87,7 +89,7 @@ pub enum FixedOrVariableCalendarUnit { /// A simple period which is a multiple of a `CalendarUnit`. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Encode, Decode, Clone, Copy, Debug, Default, PartialEq, Eq)] +#[derive(Encode, Decode, TypeInfo, Clone, Copy, Debug, Default, PartialEq, Eq)] pub struct CalendarPeriod { /// The base calendar unit. pub unit: CalendarUnit, @@ -147,7 +149,7 @@ impl RecurringPeriod { /// `period` - defined with a non-0 multiplier - in case the checkpoint is to recur after `start` at /// regular intervals. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Encode, Decode, Clone, Copy, Debug, Default, PartialEq, Eq)] +#[derive(Encode, Decode, TypeInfo, Clone, Copy, Debug, Default, PartialEq, Eq)] pub struct CheckpointSchedule { /// Unix time in seconds. pub start: Moment, diff --git a/primitives/src/cdd_id.rs b/primitives/src/cdd_id.rs index ba2acd284b..8d3524e9cb 100644 --- a/primitives/src/cdd_id.rs +++ b/primitives/src/cdd_id.rs @@ -6,6 +6,7 @@ use confidential_identity_v1 as ci_v1; use polymesh_primitives_derive::SliceU8StrongTyped; #[cfg(feature = "std")] use polymesh_primitives_derive::{DeserializeU8StrongTyped, SerializeU8StrongTyped}; +use scale_info::TypeInfo; /// The investor UID identifies the legal entity of an investor. /// It should be kept encrypted in order to have the investor's portfolio hidden between several @@ -14,9 +15,8 @@ use polymesh_primitives_derive::{DeserializeU8StrongTyped, SerializeU8StrongType /// That UID is generated by any trusted CDD provider, based on the investor's Personal /// Identifiable Information (PII). That process is driven by the specification of the Polymath /// Unique Identity System (PUIS). -#[derive( - Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Encode, Decode, SliceU8StrongTyped, -)] +#[derive(Encode, Decode, TypeInfo, SliceU8StrongTyped)] +#[derive(Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( feature = "std", derive(SerializeU8StrongTyped, DeserializeU8StrongTyped) @@ -50,9 +50,8 @@ impl From<[u8; 32]> for InvestorUid { /// prove that that DID belongs to them. /// The main purpose of such a claim is to preserve privacy of the investor using several identities /// to handle their portfolio. -#[derive( - Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Encode, Decode, SliceU8StrongTyped, Hash, -)] +#[derive(Encode, Decode, TypeInfo, SliceU8StrongTyped)] +#[derive(Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr( feature = "std", derive(SerializeU8StrongTyped, DeserializeU8StrongTyped) diff --git a/primitives/src/compliance_manager.rs b/primitives/src/compliance_manager.rs index ef796b6cc4..018a2ce4d7 100644 --- a/primitives/src/compliance_manager.rs +++ b/primitives/src/compliance_manager.rs @@ -15,6 +15,7 @@ use crate::condition::{conditions_total_counts, Condition}; use codec::{Decode, Encode}; +use scale_info::TypeInfo; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; use sp_std::prelude::*; @@ -22,7 +23,7 @@ use sp_std::prelude::*; /// A compliance requirement. /// All sender and receiver conditions of the same compliance requirement must be true in order to execute the transfer. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Encode, Decode, Default, Clone, PartialEq, Eq, Debug)] +#[derive(Encode, Decode, TypeInfo, Default, Clone, PartialEq, Eq, Debug)] pub struct ComplianceRequirement { /// List of sender conditions pub sender_conditions: Vec, @@ -107,7 +108,7 @@ impl From for ConditionResult { /// List of compliance requirements associated to an asset. #[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] -#[derive(Encode, Decode, Default, Clone, PartialEq, Eq)] +#[derive(Encode, Decode, TypeInfo, Default, Clone, PartialEq, Eq)] pub struct AssetCompliance { /// This flag indicates if asset compliance should be enforced pub paused: bool, diff --git a/primitives/src/condition.rs b/primitives/src/condition.rs index 712dfd1e1a..3d45c23ac8 100644 --- a/primitives/src/condition.rs +++ b/primitives/src/condition.rs @@ -17,6 +17,7 @@ use crate::{Claim, ClaimType, IdentityId}; use codec::{Decode, Encode}; use core::iter; use either::Either; +use scale_info::TypeInfo; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; use sp_std::convert::TryInto; @@ -24,7 +25,7 @@ use sp_std::prelude::*; /// Defines a static / dynamic identity. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Encode, Decode, Copy, Clone, PartialEq, Eq, Debug, Hash)] +#[derive(Encode, Decode, TypeInfo, Copy, Clone, PartialEq, Eq, Debug, Hash)] pub enum TargetIdentity { /// Matches any of the external agents of an asset. Resolved dynamically. ExternalAgent, @@ -35,7 +36,7 @@ pub enum TargetIdentity { /// It defines the type of condition supported, and the filter information we will use to evaluate as a /// predicate. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Encode, Decode, Clone, PartialEq, Eq, Debug, Hash)] +#[derive(Encode, Decode, TypeInfo, Clone, PartialEq, Eq, Debug, Hash)] pub enum ConditionType { /// Condition to ensure that claim filter produces one claim. IsPresent(Claim), @@ -63,7 +64,7 @@ impl ConditionType { /// Denotes the set of `ClaimType`s for which an issuer is trusted. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Encode, Decode, Clone, PartialEq, Eq, Debug, Hash)] +#[derive(Encode, Decode, TypeInfo, Clone, PartialEq, Eq, Debug, Hash)] pub enum TrustedFor { /// Issuer is trusted for any `ClaimType`. Any, @@ -73,7 +74,7 @@ pub enum TrustedFor { /// A trusted issuer for a certain compliance `Condition` and what `ClaimType`s is trusted for. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Encode, Decode, Clone, PartialEq, Eq, Debug, Hash)] +#[derive(Encode, Decode, TypeInfo, Clone, PartialEq, Eq, Debug, Hash)] pub struct TrustedIssuer { /// The issuer trusted for the `Condition` or for the `Ticker`, /// depending on where `TrustedClaimIssuer` is included. @@ -125,7 +126,7 @@ impl From for TrustedIssuer { /// Type of claim requirements that a condition can have #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Encode, Decode, Clone, PartialEq, Eq, Debug, Hash)] +#[derive(Encode, Decode, TypeInfo, Clone, PartialEq, Eq, Debug, Hash)] pub struct Condition { /// Type of condition. pub condition_type: ConditionType, diff --git a/primitives/src/document.rs b/primitives/src/document.rs index b5303e494f..e9eda19dc0 100644 --- a/primitives/src/document.rs +++ b/primitives/src/document.rs @@ -17,39 +17,38 @@ use crate::{DocumentHash, Moment}; use codec::{Decode, Encode}; use polymesh_primitives_derive::VecU8StrongTyped; +use scale_info::TypeInfo; use sp_std::prelude::Vec; #[cfg(feature = "std")] use serde::{Deserialize, Serialize}; /// The local, per-ticker, ID of an asset documentation. -#[derive(Decode, Encode, Copy, Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Decode, Encode, TypeInfo)] +#[derive(Copy, Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct DocumentId(pub u32); /// A wrapper for a document name. -#[derive( - Decode, Encode, Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord, VecU8StrongTyped, -)] +#[derive(Decode, Encode, TypeInfo, VecU8StrongTyped)] +#[derive(Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct DocumentName(pub Vec); /// A wrapper for a document URI. -#[derive( - Decode, Encode, Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord, VecU8StrongTyped, -)] +#[derive(Decode, Encode, TypeInfo, VecU8StrongTyped)] +#[derive(Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct DocumentUri(pub Vec); /// A wrapper for a document's type. -#[derive( - Decode, Encode, Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord, VecU8StrongTyped, -)] +#[derive(Decode, Encode, TypeInfo, VecU8StrongTyped)] +#[derive(Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct DocumentType(pub Vec); /// Represents a document associated with an asset -#[derive(Decode, Encode, Clone, Debug, Default, PartialEq, Eq)] +#[derive(Decode, Encode, TypeInfo, Clone, Debug, Default, PartialEq, Eq)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct Document { /// An URI where more details can be discovered. diff --git a/primitives/src/document_hash.rs b/primitives/src/document_hash.rs index 985886dea6..2726a1aef8 100644 --- a/primitives/src/document_hash.rs +++ b/primitives/src/document_hash.rs @@ -14,6 +14,7 @@ // along with this program. If not, see . use codec::{Decode, Encode}; +use scale_info::TypeInfo; use sp_std::{ convert::{TryFrom, TryInto}, ops::Deref, @@ -21,7 +22,7 @@ use sp_std::{ }; /// A wrapper for a document hash. -#[derive(Clone, Copy, PartialEq, Eq, Debug, Encode, Decode)] +#[derive(Clone, Copy, PartialEq, Eq, Debug, Encode, Decode, TypeInfo)] pub enum DocumentHash { /// No hash None, diff --git a/primitives/src/ethereum.rs b/primitives/src/ethereum.rs index 126cac2328..50aa745b2e 100644 --- a/primitives/src/ethereum.rs +++ b/primitives/src/ethereum.rs @@ -4,6 +4,7 @@ // https://github.com/paritytech/polkadot/blob/013c4a8041e6f1739cc5b785a2874061919c5db9/runtime/common/src/claims.rs#L248-L251 use codec::{Decode, Encode}; +use scale_info::TypeInfo; #[cfg(feature = "std")] use serde::{self, Deserialize, Deserializer, Serialize, Serializer}; use sp_io::{crypto::secp256k1_ecdsa_recover, hashing::keccak_256}; @@ -12,7 +13,7 @@ use sp_std::vec::Vec; /// An Ethereum address (i.e. 20 bytes, used to represent an Ethereum account). /// /// This gets serialized to the 0x-prefixed hex representation. -#[derive(Clone, Copy, PartialEq, Eq, Encode, Decode, Default, Debug)] +#[derive(Clone, Copy, PartialEq, Eq, Encode, Decode, TypeInfo, Default, Debug)] pub struct EthereumAddress(pub [u8; 20]); #[cfg(feature = "std")] @@ -49,7 +50,7 @@ impl<'de> Deserialize<'de> for EthereumAddress { } /// A signed message according to the Ethereum protocol. -#[derive(Encode, Decode, Clone)] +#[derive(Encode, Decode, TypeInfo, Clone)] pub struct EcdsaSignature(pub [u8; 65]); impl PartialEq for EcdsaSignature { diff --git a/primitives/src/event_only.rs b/primitives/src/event_only.rs index 1a84c8bc17..838197858a 100644 --- a/primitives/src/event_only.rs +++ b/primitives/src/event_only.rs @@ -16,13 +16,15 @@ //! Provides a for-events-only protector newtype for arbitrary objects. use codec::{Decode, Encode}; +use scale_info::TypeInfo; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; /// A protective newtype around any type, /// signalling that the contained element is only for use by events. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Encode, Decode, Default, Debug)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default, Debug)] pub struct EventOnly(T); impl EventOnly { diff --git a/primitives/src/identity.rs b/primitives/src/identity.rs index bd1d097813..edd1225205 100644 --- a/primitives/src/identity.rs +++ b/primitives/src/identity.rs @@ -15,6 +15,7 @@ use crate::{SecondaryKey, Signatory}; use codec::{Decode, Encode}; +use scale_info::TypeInfo; use sp_core::{crypto::Public as PublicType, sr25519::Public}; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; @@ -22,7 +23,7 @@ use sp_std::{convert::From, prelude::Vec}; /// Identity information. #[allow(missing_docs)] -#[derive(Encode, Decode, Default, Clone, PartialEq, Debug)] +#[derive(Encode, Decode, Default, Clone, PartialEq, Debug, TypeInfo)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct Identity { pub primary_key: AccountId, diff --git a/primitives/src/identity_claim.rs b/primitives/src/identity_claim.rs index 490df4f51c..909dd4c0ed 100644 --- a/primitives/src/identity_claim.rs +++ b/primitives/src/identity_claim.rs @@ -16,6 +16,7 @@ use crate::{identity_id::IdentityId, CddId, Moment, Ticker}; use codec::{Decode, Encode}; +use scale_info::TypeInfo; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; use sp_std::{convert::From, prelude::*}; @@ -26,7 +27,8 @@ use super::jurisdiction::CountryCode; pub type ScopeId = IdentityId; #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Encode, Decode, Clone, PartialEq, Eq, Debug, PartialOrd, Ord, Hash)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Clone, PartialEq, Eq, Debug, PartialOrd, Ord, Hash)] /// Scope: Almost all claim needs a valid scope. pub enum Scope { /// Scoped to an Identity @@ -68,7 +70,7 @@ impl Scope { /// All possible claims in polymesh #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Encode, Decode, Clone, PartialEq, Eq, Debug, Hash)] +#[derive(Encode, Decode, TypeInfo, Clone, PartialEq, Eq, Debug, Hash)] pub enum Claim { /// User is Accredited Accredited(Scope), @@ -156,7 +158,8 @@ impl Claim { /// Claim type represent the claim without its data. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Encode, Decode, Copy, Clone, PartialEq, Eq, Debug, PartialOrd, Ord, Hash)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Copy, Clone, PartialEq, Eq, Debug, PartialOrd, Ord, Hash)] pub enum ClaimType { /// User is Accredited Accredited, @@ -192,7 +195,7 @@ impl Default for ClaimType { /// All information of a particular claim #[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] -#[derive(Encode, Decode, Clone, Default, PartialEq, Eq)] +#[derive(Encode, Decode, TypeInfo, Clone, Default, PartialEq, Eq)] pub struct IdentityClaim { /// Issuer of the claim pub claim_issuer: IdentityId, diff --git a/primitives/src/identity_id.rs b/primitives/src/identity_id.rs index 022ea7ec40..7686e50b18 100644 --- a/primitives/src/identity_id.rs +++ b/primitives/src/identity_id.rs @@ -20,6 +20,7 @@ use core::str; use polymesh_primitives_derive::VecU8StrongTyped; #[cfg(feature = "std")] use polymesh_primitives_derive::{DeserializeU8StrongTyped, SerializeU8StrongTyped}; +use scale_info::TypeInfo; #[cfg(feature = "std")] use serde::{Deserialize, Serialize}; use sp_runtime::traits::Printable; @@ -73,7 +74,8 @@ impl GenesisIdentityRecord { /// - "did:poly:ab01" /// - "did:poly:1" /// - "DID:poly:..." -#[derive(Encode, Decode, Default, PartialOrd, Ord, PartialEq, Eq, Clone, Copy, Hash)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Default, PartialOrd, Ord, PartialEq, Eq, Clone, Copy, Hash)] #[cfg_attr( feature = "std", derive(SerializeU8StrongTyped, DeserializeU8StrongTyped) @@ -213,14 +215,14 @@ impl Printable for IdentityId { /// A wrapper for a portfolio name. It is used for non-default (aka "user") portfolios only since /// default ones are nameless. -#[derive( - Decode, Encode, Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord, VecU8StrongTyped, -)] +#[derive(Decode, Encode, TypeInfo, VecU8StrongTyped)] +#[derive(Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct PortfolioName(pub Vec); /// The unique ID of a non-default portfolio. -#[derive(Decode, Encode, Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct PortfolioNumber(pub u64); @@ -237,7 +239,8 @@ impl From for PortfolioNumber { } /// TBD -#[derive(Decode, Encode, Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Decode, Encode, TypeInfo)] +#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub enum PortfolioKind { /// The default portfolio of a DID. @@ -261,7 +264,8 @@ impl From> for PortfolioKind { } /// The ID of a portfolio. -#[derive(Decode, Encode, Clone, Copy, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Clone, Copy, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct PortfolioId { /// The DID of the portfolio. diff --git a/primitives/src/investor_zkproof_data/v1.rs b/primitives/src/investor_zkproof_data/v1.rs index a7d2ec6093..71b6ba4f0b 100644 --- a/primitives/src/investor_zkproof_data/v1.rs +++ b/primitives/src/investor_zkproof_data/v1.rs @@ -4,6 +4,7 @@ use confidential_identity_v1::{ }; use blake2::{Blake2s, Digest}; +use scale_info::TypeInfo; use schnorrkel::Signature; use codec::{Decode, Encode, Error as CodecError, Input, Output}; @@ -12,7 +13,7 @@ use sp_runtime::{Deserialize, Serialize}; /// It is a wrapper over the signature generated by `ProofKeyPair::generate_id_match_proof`. /// -#[derive(Clone, PartialEq, Eq, Debug, Copy)] +#[derive(Clone, PartialEq, Eq, Debug, Copy, TypeInfo)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct InvestorZKProofData(pub Signature); diff --git a/primitives/src/investor_zkproof_data/v2.rs b/primitives/src/investor_zkproof_data/v2.rs index d19ae01a85..47a74b5c2d 100644 --- a/primitives/src/investor_zkproof_data/v2.rs +++ b/primitives/src/investor_zkproof_data/v2.rs @@ -1,16 +1,16 @@ use crate::{host_functions::native_rng, IdentityId, InvestorUid, Ticker}; +use codec::{Decode, Encode}; use confidential_identity::{ claim_proofs::{slice_to_ristretto_point, slice_to_scalar, Investor}, CddClaimData, InvestorTrait as _, ScopeClaimData, ScopeClaimProof, }; - -use codec::{Decode, Encode}; +use scale_info::TypeInfo; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; /// Investor ZKProof generated by PIUS v2. -#[derive(Debug, Encode, Decode, Clone, Copy)] +#[derive(Debug, Encode, TypeInfo, Decode, Clone, Copy)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct InvestorZKProofData(pub ScopeClaimProof); diff --git a/primitives/src/jurisdiction.rs b/primitives/src/jurisdiction.rs index 4fa0167d8e..5201cc7cf8 100644 --- a/primitives/src/jurisdiction.rs +++ b/primitives/src/jurisdiction.rs @@ -16,6 +16,7 @@ //! Data types and definitions of jurisdictions. use codec::{Decode, Encode}; +use scale_info::TypeInfo; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; use sp_std::prelude::*; @@ -24,7 +25,7 @@ macro_rules! country_codes { ( $([$discr:expr,$alpha2:ident, $alpha3:ident, $un:literal, $($extra:expr),*]),* $(,)? ) => { /// Existing country codes according to ISO-3166-1. #[allow(missing_docs)] - #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Debug, Decode, Encode, Hash)] + #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Debug, Decode, Encode, TypeInfo, Hash)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] #[repr(u16)] // Could use `u8`, strictly speaking, but leave room for growth! pub enum CountryCode { diff --git a/primitives/src/lib.rs b/primitives/src/lib.rs index a43c4defb7..c236f347c0 100644 --- a/primitives/src/lib.rs +++ b/primitives/src/lib.rs @@ -20,19 +20,19 @@ #![feature(bool_to_option)] use blake2::{Blake2b, Digest}; +use codec::{Decode, Encode}; use confidential_identity_v1::Scalar as ScalarV1; use frame_support::weights::Weight; use polymesh_primitives_derive::VecU8StrongTyped; -#[cfg(feature = "std")] -use sp_runtime::{Deserialize, Serialize}; -use sp_std::prelude::Vec; - -use codec::{Decode, Encode}; +use scale_info::TypeInfo; use sp_runtime::{ generic, traits::{BlakeTwo256, Verify}, MultiSignature, }; +#[cfg(feature = "std")] +use sp_runtime::{Deserialize, Serialize}; +use sp_std::prelude::Vec; /// An index to a block. /// 32-bits will allow for 136 years of blocks assuming 1 block per second. @@ -97,7 +97,8 @@ pub mod report { /// A positive coefficient: a pair of a numerator and a denominator. Defaults to `(1, 1)`. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Decode, Encode, Copy, Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Encode, Decode, TypeInfo)] +#[derive(Copy, Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] pub struct PosRatio(pub u32, pub u32); impl Default for PosRatio { @@ -283,7 +284,7 @@ pub enum TransactionError { } /// Represents the target identity and the amount requested by a beneficiary. -#[derive(Encode, Decode, Clone, PartialEq, Eq, Debug)] +#[derive(Encode, Decode, TypeInfo, Clone, PartialEq, Eq, Debug)] pub struct Beneficiary { /// Beneficiary identity. pub id: IdentityId, @@ -292,16 +293,14 @@ pub struct Beneficiary { } /// The name of a pallet. -#[derive( - Decode, Encode, Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord, VecU8StrongTyped, -)] +#[derive(Encode, Decode, TypeInfo, VecU8StrongTyped)] +#[derive(Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct PalletName(pub Vec); /// The name of a function within a pallet. -#[derive( - Decode, Encode, Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord, VecU8StrongTyped, -)] +#[derive(Encode, Decode, TypeInfo, VecU8StrongTyped)] +#[derive(Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct DispatchableName(pub Vec); @@ -309,7 +308,8 @@ pub struct DispatchableName(pub Vec); #[macro_export] macro_rules! storage_migration_ver { ($ver:literal) => { - #[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] + #[derive(Encode, Decode, scale_info::TypeInfo)] + #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] pub struct Version(u8); impl Version { diff --git a/primitives/src/migrate.rs b/primitives/src/migrate.rs index 5416c46477..155eaafab7 100644 --- a/primitives/src/migrate.rs +++ b/primitives/src/migrate.rs @@ -16,7 +16,7 @@ //! Defines a trait and implementations for storage migration. use codec::{Decode, Encode}; -use frame_support::migration::{put_storage_value, StorageIterator, StorageKeyIterator}; +use frame_support::migration::{put_storage_value, storage_iter, storage_key_iter}; use frame_support::storage::unhashed::kill_prefix; use frame_support::{ReversibleStorageHasher, StorageHasher, Twox128}; use sp_std::vec::Vec; @@ -101,7 +101,7 @@ pub fn migrate_map_rename T::Context>( new_item: &[u8], mut derive_context: C, ) { - StorageIterator::::new(module, item) + storage_iter::(module, item) .drain() .filter_map(|(key, old)| { let new = old.migrate(derive_context(&key))?; @@ -126,7 +126,7 @@ pub fn migrate_map_keys_and_value( KO: Decode, KN: Decode + Encode, { - StorageKeyIterator::::new(module, item) + storage_key_iter::(module, item) .drain() .filter_map(|(key, val)| map(key, val)) .for_each(|(kn, vn)| { @@ -188,7 +188,7 @@ pub fn migrate_double_map( KN1: Encode, KN2: Encode, { - let old_map = StorageIterator::::new(module, item) + let old_map = storage_iter::(module, item) .drain() .collect::, _)>>(); @@ -223,7 +223,7 @@ where V2: Encode, E: Encode + Decode, { - StorageIterator::::new(module, item).map(move |(raw_key, value)| { + storage_iter::(module, item).map(move |(raw_key, value)| { let (k1, k2) = decode_double_key::(&raw_key) .ok_or_else(|| MigrationError::DecodeKey(raw_key.clone().into()))?; let new_value = f(k1, k2, value).map_err(|e| MigrationError::Map(e))?; @@ -238,7 +238,7 @@ pub fn kill_item(module: &[u8], item: &[u8]) { let mut prefix = [0u8; 32]; prefix[0..16].copy_from_slice(&Twox128::hash(module)); prefix[16..32].copy_from_slice(&Twox128::hash(item)); - kill_prefix(&prefix) + kill_prefix(&prefix, None); } /// Moves a single or double map storage item under a new module prefix and removes the map from @@ -250,7 +250,7 @@ pub fn move_map_rename_module( new_module: &[u8], item: &[u8], ) { - StorageIterator::::new(old_module, item) + storage_iter::(old_module, item) .drain() .filter_map(|(key, val)| Some((key, val))) .for_each(|(key, val)| put_storage_value(new_module, item, &key, val)); diff --git a/primitives/src/secondary_key.rs b/primitives/src/secondary_key.rs index 4184264c19..dbec08ca6f 100644 --- a/primitives/src/secondary_key.rs +++ b/primitives/src/secondary_key.rs @@ -15,6 +15,7 @@ use crate::{DispatchableName, IdentityId, PalletName, PortfolioId, SubsetRestriction, Ticker}; use codec::{Decode, Encode}; +use scale_info::TypeInfo; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; use sp_std::{ @@ -53,7 +54,8 @@ pub type DispatchableNames = SubsetRestriction; /// A permission to call a set of functions, as described by `dispatchable_names`, /// within a given pallet `pallet_name`. -#[derive(Decode, Encode, Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Decode, Encode, TypeInfo)] +#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct PalletPermissions { /// The name of a pallet. @@ -130,7 +132,8 @@ pub type PortfolioPermissions = SubsetRestriction; /// Common cases of permissions: /// - `Permissions::empty()`: no permissions, /// - `Permissions::default()`: full permissions. -#[derive(Encode, Decode, Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Decode, Encode, TypeInfo)] +#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct Permissions { /// The subset of assets under management. @@ -212,7 +215,7 @@ impl Permissions { /// It supports different elements as a signer. #[allow(missing_docs)] -#[derive(Encode, Decode, Copy, Clone, PartialEq, Eq, Debug)] +#[derive(Encode, Decode, Copy, Clone, PartialEq, Eq, Debug, TypeInfo)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub enum Signatory { #[cfg_attr(feature = "std", serde(alias = "identity"))] @@ -300,7 +303,7 @@ where } /// A secondary key is a signatory with defined permissions. -#[derive(Encode, Decode, Default, Clone, PartialEq, Eq, Debug)] +#[derive(Encode, Decode, Default, Clone, PartialEq, Eq, Debug, TypeInfo)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct SecondaryKey { /// The account or identity that is the signatory of this key. @@ -399,13 +402,15 @@ pub mod api { }; use crate::{DispatchableName, PalletName, Signatory, SubsetRestriction}; use codec::{Decode, Encode}; + use scale_info::TypeInfo; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; use sp_std::convert::TryInto; use sp_std::vec::Vec; /// A permission to call functions within a given pallet. - #[derive(Decode, Encode, Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord)] + #[derive(Decode, Encode, TypeInfo)] + #[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct LegacyPalletPermissions { /// The name of a pallet. @@ -423,12 +428,14 @@ pub mod api { } /// Extrinsic permissions. - #[derive(Encode, Decode, Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord)] + #[derive(Decode, Encode, TypeInfo)] + #[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct LegacyExtrinsicPermissions(pub Option>); /// Signing key permissions. - #[derive(Encode, Decode, Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord)] + #[derive(Decode, Encode, TypeInfo)] + #[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct LegacyPermissions { /// The subset of assets under management. @@ -481,7 +488,7 @@ pub mod api { /// The same secondary key object without the extra trait constraints. /// It is needed because it's not possible to define `decl_event!` /// with the required restrictions on `AccountId` - #[derive(Encode, Decode, Default, Clone, PartialEq, Eq, Debug)] + #[derive(Encode, Decode, TypeInfo, Default, Clone, PartialEq, Eq, Debug)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct SecondaryKey { /// The account or identity that is the signatory of this key. diff --git a/primitives/src/smart_extension.rs b/primitives/src/smart_extension.rs index 5e7862f80d..db95586264 100644 --- a/primitives/src/smart_extension.rs +++ b/primitives/src/smart_extension.rs @@ -38,9 +38,8 @@ impl Default for SmartExtensionType { } /// A wrapper for a smart extension name. -#[derive( - Decode, Encode, Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord, VecU8StrongTyped, -)] +#[derive(Decode, Encode, VecU8StrongTyped)] +#[derive(Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)] pub struct SmartExtensionName(pub Vec); #[derive(Encode, Decode, Default, Clone, PartialEq, Debug)] diff --git a/primitives/src/statistics.rs b/primitives/src/statistics.rs index 04d1e9b419..4bb86025e9 100644 --- a/primitives/src/statistics.rs +++ b/primitives/src/statistics.rs @@ -14,6 +14,7 @@ // along with this program. If not, see . use codec::{Decode, Encode}; +use scale_info::TypeInfo; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; use sp_std::{hash::Hash, hash::Hasher, ops::Deref, ops::DerefMut, prelude::*}; @@ -25,7 +26,8 @@ pub type Percentage = HashablePermill; /// Transfer managers that can be attached to a Token for compliance. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Decode, Encode, Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Decode, Encode, TypeInfo)] +#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] pub enum TransferManager { /// CTM limits the number of active investors in a Token. CountTransferManager(Counter), @@ -45,7 +47,8 @@ pub struct TransferManagerResult { /// Wrapper around `sp_arithmetic::Permill` #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[derive(Decode, Encode, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Default)] +#[derive(Decode, Encode, TypeInfo)] +#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Default)] pub struct HashablePermill(pub sp_arithmetic::Permill); impl Hash for HashablePermill { diff --git a/primitives/src/subset.rs b/primitives/src/subset.rs index 3aa183b46e..781aa9eb15 100644 --- a/primitives/src/subset.rs +++ b/primitives/src/subset.rs @@ -15,6 +15,7 @@ use codec::{Decode, Encode}; use core::ops::Sub; +use scale_info::TypeInfo; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; use sp_std::{ @@ -48,7 +49,7 @@ pub trait LatticeOrd { /// The type of subsets of an open set of elements of type `A` where the whole set is always /// considered to be bigger than any finite set of its elements. This is true for infinite /// sets. When talking about finite sets, we have to add that they are _open_. -#[derive(Encode, Decode, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Encode, Decode, TypeInfo, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub enum SubsetRestriction { /// No restrictions, the whole set. diff --git a/primitives/src/ticker.rs b/primitives/src/ticker.rs index 498bbfd979..415771c932 100644 --- a/primitives/src/ticker.rs +++ b/primitives/src/ticker.rs @@ -17,6 +17,7 @@ use codec::{Decode, Encode, Error, Input}; #[cfg(feature = "std")] use polymesh_primitives_derive::{DeserializeU8StrongTyped, SerializeU8StrongTyped}; +use scale_info::TypeInfo; use sp_std::convert::TryFrom; use sp_std::vec::Vec; @@ -29,7 +30,8 @@ pub const TICKER_LEN: usize = 12; /// This type stores fixed-length case-sensitive byte strings. Any value of this type that is /// received by a Substrate module call method has to be converted to canonical uppercase /// representation using [`Ticker::canonize`]. -#[derive(Encode, Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Encode, TypeInfo)] +#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( feature = "std", derive(SerializeU8StrongTyped, DeserializeU8StrongTyped) diff --git a/rpc/Cargo.toml b/rpc/Cargo.toml index 84578d3711..5f7ff109d4 100644 --- a/rpc/Cargo.toml +++ b/rpc/Cargo.toml @@ -17,19 +17,19 @@ pallet-transaction-payment = { path = "../pallets/transaction-payment", default- # Substrate codec = { package = "parity-scale-codec", version = "2.0.0" } -sp-core = {version = "3.0.0", default_features = false } -sp-std = {version = "3.0.0", default_features = false } -sp-runtime = { version = "3.0.0", default-features = false } -sp-api = { version = "3.0.0", default-features = false } -sp-blockchain = { version = "3.0.0" } -sp-rpc = { version = "3.0.0" } -frame-support = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } +sp-core = {version = "4.0.0-dev", default_features = false } +sp-std = {version = "4.0.0-dev", default_features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-api = { version = "4.0.0-dev", default-features = false } +sp-blockchain = { version = "4.0.0-dev" } +sp-rpc = { version = "4.0.0-dev" } +frame-support = { version = "4.0.0-dev", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } # Others -jsonrpc-core = { version = "15.0", features = ["arbitrary_precision"] } -jsonrpc-core-client = "15.0.0" -jsonrpc-derive = "15.0.0" +jsonrpc-core = { version = "18.0.0", features = ["arbitrary_precision"] } +jsonrpc-core-client = { version = "18.0.0", features = ["arbitrary_precision"] } +jsonrpc-derive = "18.0.0" serde = { version = "1.0.104", optional = true, features = ["derive"] } [features] diff --git a/rpc/runtime-api/Cargo.toml b/rpc/runtime-api/Cargo.toml index edb7fc411a..d3a7904c0f 100644 --- a/rpc/runtime-api/Cargo.toml +++ b/rpc/runtime-api/Cargo.toml @@ -18,11 +18,11 @@ serde = { version = "1.0.104", optional = true, features = ["derive"] } # Substrate codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-api = { version = "3.0.0", default_features = false } -sp-std = { version = "3.0.0", default_features = false } -sp-runtime = { version = "3.0.0", default_features = false } -frame-support = { version = "3.0.0", default-features = false } -frame-system = { version = "3.0.0", default-features = false } +sp-api = { version = "4.0.0-dev", default_features = false } +sp-std = { version = "4.0.0-dev", default_features = false } +sp-runtime = { version = "4.0.0-dev", default_features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +frame-system = { version = "4.0.0-dev", default-features = false } [dev-dependencies] serde_json = "1.0.41" diff --git a/rpc/src/asset.rs b/rpc/src/asset.rs index 6996ab8683..6d2bb6c226 100644 --- a/rpc/src/asset.rs +++ b/rpc/src/asset.rs @@ -16,11 +16,10 @@ pub use node_rpc_runtime_api::asset::{AssetApi as AssetRuntimeApi, CanTransferResult}; use polymesh_primitives::{IdentityId, PortfolioId, Ticker}; -use jsonrpc_core::{Error as RpcError, ErrorCode, Result}; +use jsonrpc_core::{Error, Error as RpcError, ErrorCode, Result}; use jsonrpc_derive::rpc; use codec::Codec; -use jsonrpc_core::Error; use polymesh_primitives::asset::GranularCanTransferResult; use sp_api::{ApiRef, ProvideRuntimeApi}; use sp_blockchain::HeaderBackend; diff --git a/rustfmt.toml b/rustfmt.toml new file mode 100644 index 0000000000..d4fcd2a3e9 --- /dev/null +++ b/rustfmt.toml @@ -0,0 +1 @@ +merge_derives = false diff --git a/scripts/cli/environment.config.js b/scripts/cli/environment.config.js index 4451e1a368..6d62e8aac8 100644 --- a/scripts/cli/environment.config.js +++ b/scripts/cli/environment.config.js @@ -20,7 +20,7 @@ module.exports = { script: polymesh_bin, args: "-d /tmp/pmesh-primary-node --alice " + primary + - " --port 30334 --ws-port 9944 --rpc-port 9934", + " --port 30334 --ws-port 9944 --rpc-port 9933", env: { RUST_BACKTRACE: "1", }, diff --git a/scripts/cli/jest.config.js b/scripts/cli/jest.config.js index 820e97baf7..580b28f02e 100644 --- a/scripts/cli/jest.config.js +++ b/scripts/cli/jest.config.js @@ -10,4 +10,8 @@ module.exports = { setupFilesAfterEnv: ["/src/__tests__/setup.ts"], testPathIgnorePatterns: ["/src/__tests__/setup.ts"], testTimeout: 1_000_000, + moduleNameMapper: { + 'polymesh-typegen/(.*)': '/src/interfaces/$1', + '@polkadot/api/augment': '/src/interfaces/augment-api.ts', + } }; diff --git a/scripts/cli/package-lock.json b/scripts/cli/package-lock.json index c6635c2119..66705e1a6e 100644 --- a/scripts/cli/package-lock.json +++ b/scripts/cli/package-lock.json @@ -1,17 +1,18 @@ { - "name": "polymesh-cli", + "name": "@polymathnetwork/polymesh-cli", "version": "1.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "polymesh-cli", + "name": "@polymathnetwork/polymesh-cli", "version": "1.0.0", "license": "UNLICENSED", "dependencies": { - "@polkadot/api": "5.0.1", - "@polkadot/util": "^7.0.3", - "@polkadot/util-crypto": "^7.0.3", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@polkadot/api": "7.6.1", + "@polkadot/util": "^8.3.3", + "@polkadot/util-crypto": "^8.3.3", "@types/sqlite3": "^3.1.7", "chai": "4.2.0", "chalk": "4.1.0", @@ -37,7 +38,7 @@ }, "devDependencies": { "@babel/plugin-transform-modules-commonjs": "7.14.5", - "@polkadot/typegen": "5.0.1", + "@polkadot/typegen": "7.6.1", "@types/chai": "4.2.15", "@types/clear": "0.1.1", "@types/figlet": "1.2.1", @@ -55,12 +56,11 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "dependencies": { - "@babel/highlight": "^7.14.5" + "@babel/highlight": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -70,7 +70,6 @@ "version": "7.15.0", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -79,7 +78,6 @@ "version": "7.15.0", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz", "integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.15.0", @@ -109,7 +107,6 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -125,14 +122,12 @@ "node_modules/@babel/core/node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, "bin": { "semver": "bin/semver.js" } @@ -141,18 +136,16 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/@babel/generator": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", - "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", - "dev": true, + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", + "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", "dependencies": { - "@babel/types": "^7.15.6", + "@babel/types": "^7.16.8", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, @@ -164,16 +157,25 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-compilation-targets": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", - "dev": true, "dependencies": { "@babel/compat-data": "^7.15.0", "@babel/helper-validator-option": "^7.14.5", @@ -191,56 +193,82 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, "bin": { "semver": "bin/semver.js" } }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz", + "integrity": "sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", - "dev": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", "dependencies": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", - "dev": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", - "dev": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", - "dev": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", + "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -250,7 +278,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", - "dev": true, "dependencies": { "@babel/types": "^7.15.4" }, @@ -262,7 +289,6 @@ "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", - "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.15.4", "@babel/helper-replace-supers": "^7.15.4", @@ -278,36 +304,34 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", - "dev": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", - "dev": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", - "dev": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -317,7 +341,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", - "dev": true, "dependencies": { "@babel/types": "^7.15.4" }, @@ -326,22 +349,20 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", - "dev": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", "engines": { "node": ">=6.9.0" } @@ -350,7 +371,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -359,7 +379,6 @@ "version": "7.15.3", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.3.tgz", "integrity": "sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g==", - "dev": true, "dependencies": { "@babel/template": "^7.14.5", "@babel/traverse": "^7.15.0", @@ -370,12 +389,11 @@ } }, "node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -387,7 +405,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -399,7 +416,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -413,7 +429,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -421,14 +436,12 @@ "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, "engines": { "node": ">=4" } @@ -437,7 +450,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -446,10 +458,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", - "dev": true, + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz", + "integrity": "sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==", "bin": { "parser": "bin/babel-parser.js" }, @@ -457,6 +468,21 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", @@ -638,9 +664,9 @@ } }, "node_modules/@babel/register": { - "version": "7.15.3", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.15.3.tgz", - "integrity": "sha512-mj4IY1ZJkorClxKTImccn4T81+UKTo4Ux0+OFSV9hME1ooqS9UV+pJ6BjD0qXPK4T3XW/KNa79XByjeEMZz+fw==", + "version": "7.16.9", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.16.9.tgz", + "integrity": "sha512-jJ72wcghdRIlENfvALcyODhNoGE5j75cYHdC+aQMh6cU/P86tiiXTp9XYZct1UxUMo/4+BgQRyNZEGx0KWGS+g==", "dev": true, "dependencies": { "clone-deep": "^4.0.1", @@ -657,9 +683,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.15.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz", - "integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", + "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -668,32 +694,31 @@ } }, "node_modules/@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", - "dev": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", + "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.16.10", + "@babel/types": "^7.16.8", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -705,7 +730,6 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -721,16 +745,14 @@ "node_modules/@babel/traverse/node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "dev": true, + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1111,6 +1133,16 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/@noble/hashes": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-0.5.7.tgz", + "integrity": "sha512-R9PPYv7TqoYi+enikzZvwRQesGTxR0+jwqzZJGL0uNcf2NFL+lt/uvCCewtXXmr6jWBxiMuNjBfJwKv9UJaCng==" + }, + "node_modules/@noble/secp256k1": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.3.4.tgz", + "integrity": "sha512-ZVRouDO5mbdCiDg4zCd3ZZABduRtpy4tCnB33Gh9upHe9tRzpiqbRSN1VTjrj/2g8u2c6MBi0YLNnNQpBYOiWg==" + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1414,120 +1446,200 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/@polkadot/api": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-5.0.1.tgz", - "integrity": "sha512-5JDpM2Fjc80gHBju1B/rMBGDfAvY8UiU4XVlivJRk+mTVD3OTwbtTro4nmwJOub05xQCJvD/bnCuxG8eFSoq+Q==", - "dependencies": { - "@babel/runtime": "^7.14.6", - "@polkadot/api-derive": "5.0.1", - "@polkadot/keyring": "^7.0.1", - "@polkadot/rpc-core": "5.0.1", - "@polkadot/rpc-provider": "5.0.1", - "@polkadot/types": "5.0.1", - "@polkadot/types-known": "5.0.1", - "@polkadot/util": "^7.0.1", - "@polkadot/util-crypto": "^7.0.1", + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-7.6.1.tgz", + "integrity": "sha512-0VvWn8TIKX3o922ZjomsJEkysica1ScnjNYBG3+801gWG3WbCI+IdzdqazTkIMZL8r8HipmA4cjfS3Tdk+R9eg==", + "dependencies": { + "@babel/runtime": "^7.16.7", + "@polkadot/api-augment": "7.6.1", + "@polkadot/api-base": "7.6.1", + "@polkadot/api-derive": "7.6.1", + "@polkadot/keyring": "^8.3.3", + "@polkadot/rpc-augment": "7.6.1", + "@polkadot/rpc-core": "7.6.1", + "@polkadot/rpc-provider": "7.6.1", + "@polkadot/types": "7.6.1", + "@polkadot/types-augment": "7.6.1", + "@polkadot/types-codec": "7.6.1", + "@polkadot/types-create": "7.6.1", + "@polkadot/types-known": "7.6.1", + "@polkadot/util": "^8.3.3", + "@polkadot/util-crypto": "^8.3.3", "eventemitter3": "^4.0.7", - "rxjs": "^7.2.0" + "rxjs": "^7.5.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@polkadot/api-derive": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-5.0.1.tgz", - "integrity": "sha512-JZpH1JVLu3PvX4+A71iDLtNr6LL103dAFou61DxyJF4obyTmS2lzigG3xXqUFShiPDb19ywxQpsE4gAOP6emuQ==", + "node_modules/@polkadot/api-augment": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-7.6.1.tgz", + "integrity": "sha512-elkAVDzkcW909phGQNOM2M2ksfnjNeY67EnwIB0xBdFlfM7mVPdxqnAWHrBwbIsD3TdWzxtrNzWzyi7hvILt+A==", + "dependencies": { + "@babel/runtime": "^7.16.7", + "@polkadot/api-base": "7.6.1", + "@polkadot/rpc-augment": "7.6.1", + "@polkadot/types": "7.6.1", + "@polkadot/types-augment": "7.6.1", + "@polkadot/types-codec": "7.6.1", + "@polkadot/util": "^8.3.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/api-base": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-base/-/api-base-7.6.1.tgz", + "integrity": "sha512-HbbbQSzTc5W0QtV/5JMOHbINlrHeZ5w5Cdo2jmIkSZT8w8MxhnupzdvkjIX9B9F4/dFa0RdaP/J1FnLNFlUU1w==", "dependencies": { - "@babel/runtime": "^7.14.6", - "@polkadot/api": "5.0.1", - "@polkadot/rpc-core": "5.0.1", - "@polkadot/types": "5.0.1", - "@polkadot/util": "^7.0.1", - "@polkadot/util-crypto": "^7.0.1", - "rxjs": "^7.2.0" + "@babel/runtime": "^7.16.7", + "@polkadot/rpc-core": "7.6.1", + "@polkadot/types": "7.6.1", + "@polkadot/util": "^8.3.3", + "rxjs": "^7.5.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/api-derive": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-7.6.1.tgz", + "integrity": "sha512-cRoc1LTTwvEH9QtHIp7vWYn34dczuqg4xQSbZn/IqEzvmcpU7wJC3gLfEOCrqTIFDofPVyBOd7Vv3gjuey/82g==", + "dependencies": { + "@babel/runtime": "^7.16.7", + "@polkadot/api": "7.6.1", + "@polkadot/api-augment": "7.6.1", + "@polkadot/api-base": "7.6.1", + "@polkadot/rpc-core": "7.6.1", + "@polkadot/types": "7.6.1", + "@polkadot/types-codec": "7.6.1", + "@polkadot/util": "^8.3.3", + "@polkadot/util-crypto": "^8.3.3", + "rxjs": "^7.5.2" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/keyring": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-7.2.1.tgz", - "integrity": "sha512-WmiTsHKELX16uZWLvebDBckZIAXeJFfbcOM6m/VbMOjSV5C6xIKqiV3232Mn8ZuPKgsOf25Q78/IwJW1Dq53Qg==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-8.3.3.tgz", + "integrity": "sha512-TgoIpaTqn7voT7lDu5W6p0Z+216OImpqtHuaiFy125ekCQurrf9BVIdwp56y5qoFLDAZ5i9gnWHMIgOQ6AJj/Q==", "dependencies": { - "@babel/runtime": "^7.15.3", - "@polkadot/util": "7.2.1", - "@polkadot/util-crypto": "7.2.1" + "@babel/runtime": "^7.16.7", + "@polkadot/util": "8.3.3", + "@polkadot/util-crypto": "8.3.3" }, "engines": { "node": ">=14.0.0" }, "peerDependencies": { - "@polkadot/util": "7.2.1", - "@polkadot/util-crypto": "7.2.1" + "@polkadot/util": "8.3.3", + "@polkadot/util-crypto": "8.3.3" } }, "node_modules/@polkadot/networks": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-7.2.1.tgz", - "integrity": "sha512-YX8oQ7QQ2oq3YowwOiv/C82l849V0ZEzpR26YrPgKSXbYFbasho3Akf0zalndZJZV1Bb8EiOkzGoJ3ffogSPxA==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-8.3.3.tgz", + "integrity": "sha512-yj0DMqmzRZbvgaoZztV3/RPgYJjBhT17Dhu+FX/LUJzVbAF/RfjkzNsJT4Ta4kLDxQMYZq1avUac0ia2j9NcNw==", + "dependencies": { + "@babel/runtime": "^7.16.7", + "@polkadot/util": "8.3.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/rpc-augment": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-7.6.1.tgz", + "integrity": "sha512-lNeTS8Ma/0sAk3pvGxliQOkE016WZKXyS5uQWtcF2CRn2rn265Fb4I29n3KjTL8CRYtafvH6IRS0DSkKgbnL3w==", "dependencies": { - "@babel/runtime": "^7.15.3" + "@babel/runtime": "^7.16.7", + "@polkadot/rpc-core": "7.6.1", + "@polkadot/types": "7.6.1", + "@polkadot/types-codec": "7.6.1", + "@polkadot/util": "^8.3.3" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/rpc-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-5.0.1.tgz", - "integrity": "sha512-JMNOVQijjyJZNu9B8CJwIrQzGYzAp03uCBSbqYfzWBFnYVLKh7JmvOlkLnODM8uUYq0gVN4BaDUSPc39GpELAQ==", + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-7.6.1.tgz", + "integrity": "sha512-xq/GzUeBu1GsP4ngEYQeDrVnsullDBy/22yUY/ahNjkgAjXeOndrBFis+4lBiiksVQMgYZEzaHv89E0aCOBvAA==", "dependencies": { - "@babel/runtime": "^7.14.6", - "@polkadot/rpc-provider": "5.0.1", - "@polkadot/types": "5.0.1", - "@polkadot/util": "^7.0.1", - "rxjs": "^7.2.0" + "@babel/runtime": "^7.16.7", + "@polkadot/rpc-augment": "7.6.1", + "@polkadot/rpc-provider": "7.6.1", + "@polkadot/types": "7.6.1", + "@polkadot/util": "^8.3.3", + "rxjs": "^7.5.2" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/rpc-provider": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-5.0.1.tgz", - "integrity": "sha512-t+VKhMtQfQVgkZDqYnP/44KlBDmcCVo1/MvJ+DoNd7RUWUIBJt3v71G5gDSNeGMTyvxn0KK0qL4j+Nqr6c4FUQ==", + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-7.6.1.tgz", + "integrity": "sha512-jevBGp/n16ra+Y+JV8nnNRTtKPU1Oo3nBiyMhUla6crWLjMnLAYvcyteRq27aBmU3Olh4n/0xDVNCvTxfEghxQ==", + "dependencies": { + "@babel/runtime": "^7.16.7", + "@polkadot/keyring": "^8.3.3", + "@polkadot/types": "7.6.1", + "@polkadot/types-support": "7.6.1", + "@polkadot/util": "^8.3.3", + "@polkadot/util-crypto": "^8.3.3", + "@polkadot/x-fetch": "^8.3.3", + "@polkadot/x-global": "^8.3.3", + "@polkadot/x-ws": "^8.3.3", + "eventemitter3": "^4.0.7", + "mock-socket": "^9.1.2", + "nock": "^13.2.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/rpc-provider/node_modules/@polkadot/x-global": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", + "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", "dependencies": { - "@babel/runtime": "^7.14.6", - "@polkadot/types": "5.0.1", - "@polkadot/util": "^7.0.1", - "@polkadot/util-crypto": "^7.0.1", - "@polkadot/x-fetch": "^7.0.1", - "@polkadot/x-global": "^7.0.1", - "@polkadot/x-ws": "^7.0.1", - "eventemitter3": "^4.0.7" + "@babel/runtime": "^7.16.7" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/typegen": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@polkadot/typegen/-/typegen-5.0.1.tgz", - "integrity": "sha512-iFLJoWgIkn+J6MDw3AUWveP9qxVn1C+VeLJbpZ21St5WyeE148Tml0BmYnKLSXlaPMhZEwB+/IV3jpQ35dH4bw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.14.6", - "@babel/register": "^7.14.5", - "@babel/runtime": "^7.14.6", - "@polkadot/api": "5.0.1", - "@polkadot/rpc-provider": "5.0.1", - "@polkadot/types": "5.0.1", - "@polkadot/util": "^7.0.1", + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/typegen/-/typegen-7.6.1.tgz", + "integrity": "sha512-RCtpQWTmPMTHFbK5AXTy7Ncgx2aj4FhxnYFZxmpm2bZpXsf66mTKDu2vQiKN2vwPtjG8WnxuyB1fqnyGtebHPg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.16.12", + "@babel/register": "^7.16.9", + "@babel/runtime": "^7.16.7", + "@polkadot/api": "7.6.1", + "@polkadot/api-augment": "7.6.1", + "@polkadot/rpc-augment": "7.6.1", + "@polkadot/rpc-provider": "7.6.1", + "@polkadot/types": "7.6.1", + "@polkadot/types-augment": "7.6.1", + "@polkadot/types-codec": "7.6.1", + "@polkadot/types-create": "7.6.1", + "@polkadot/types-support": "7.6.1", + "@polkadot/util": "^8.3.3", + "@polkadot/x-ws": "^8.3.3", "handlebars": "^4.7.7", "websocket": "^1.0.34", - "yargs": "^17.0.1" + "yargs": "^17.3.1" }, "bin": { "polkadot-types-chain-info": "scripts/polkadot-types-chain-info.cjs", @@ -1540,45 +1652,318 @@ "node": ">=14.0.0" } }, + "node_modules/@polkadot/typegen/node_modules/@babel/compat-data": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz", + "integrity": "sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@polkadot/typegen/node_modules/@babel/core": { + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", + "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.16.7", + "@babel/parser": "^7.16.12", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.10", + "@babel/types": "^7.16.8", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@polkadot/typegen/node_modules/@babel/helper-compilation-targets": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", + "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@polkadot/typegen/node_modules/@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@polkadot/typegen/node_modules/@babel/helper-module-transforms": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", + "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@polkadot/typegen/node_modules/@babel/helper-simple-access": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", + "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@polkadot/typegen/node_modules/@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@polkadot/typegen/node_modules/@babel/helpers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz", + "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@polkadot/typegen/node_modules/browserslist": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", + "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/@polkadot/typegen/node_modules/caniuse-lite": { + "version": "1.0.30001303", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001303.tgz", + "integrity": "sha512-/Mqc1oESndUNszJP0kx0UaQU9kEv9nNtJ7Kn8AdA0mNnH8eR1cj0kG+NbNuC1Wq/b21eA8prhKRA3bbkjONegQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/@polkadot/typegen/node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@polkadot/typegen/node_modules/electron-to-chromium": { + "version": "1.4.56", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.56.tgz", + "integrity": "sha512-0k/S0FQqRRpJbX7YUjwCcLZ8D42RqGKtaiq90adXBOYgTIWwLA/g3toO8k9yEpqU8iC4QyaWYYWSTBIna8WV4g==", + "dev": true + }, + "node_modules/@polkadot/typegen/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@polkadot/typegen/node_modules/node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true + }, + "node_modules/@polkadot/typegen/node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/@polkadot/typegen/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@polkadot/typegen/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@polkadot/types": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-5.0.1.tgz", - "integrity": "sha512-aN6JKeF7ZYi5irYAaUoDqth6qlOlB15C5vhlDOojEorYLfRs/R+GCrO+lPSs+bKmSxh7BSRh500ikI/xD4nx5A==", + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-7.6.1.tgz", + "integrity": "sha512-4GotmyT6h5n2qpgqPKqzVzgZKuPS9fNMeQBBbhxZxjyFmSTYtIqQeyqFw1bgIGcsZBH81WK7yE1U221l8gmj1Q==", + "dependencies": { + "@babel/runtime": "^7.16.7", + "@polkadot/keyring": "^8.3.3", + "@polkadot/types-augment": "7.6.1", + "@polkadot/types-codec": "7.6.1", + "@polkadot/types-create": "7.6.1", + "@polkadot/util": "^8.3.3", + "@polkadot/util-crypto": "^8.3.3", + "rxjs": "^7.5.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/types-augment": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-7.6.1.tgz", + "integrity": "sha512-OLTVgMlSiZy37eXhUa6zYRHBUK7eJ2opovAKYpk+S8biA4nrq7LUXis2MnCP9C1TvsQozPlZ5q0M89WRVw96TA==", + "dependencies": { + "@babel/runtime": "^7.16.7", + "@polkadot/types": "7.6.1", + "@polkadot/types-codec": "7.6.1", + "@polkadot/util": "^8.3.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/types-codec": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-7.6.1.tgz", + "integrity": "sha512-Zm4oQJK4BeB3reElKCVfJm1tzVK2O+hfS9QlKJAHy+kYwPB20o0UYv1d0K1WOZedSmVIaoW/diOaxMePV1S55Q==", + "dependencies": { + "@babel/runtime": "^7.16.7", + "@polkadot/util": "^8.3.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/types-create": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-7.6.1.tgz", + "integrity": "sha512-vGUT5O3/bYpP/NOa/5TV8aCDoDE8DbeRSiykzQ8ceOrnmB4VrlJ+L4zklyiuRdAFXPYmi+7S9Dzr/IrNrf72wg==", "dependencies": { - "@babel/runtime": "^7.14.6", - "@polkadot/util": "^7.0.1", - "@polkadot/util-crypto": "^7.0.1", - "rxjs": "^7.2.0" + "@babel/runtime": "^7.16.7", + "@polkadot/types-codec": "7.6.1", + "@polkadot/util": "^8.3.3" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/types-known": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-5.0.1.tgz", - "integrity": "sha512-AIhPlN4r14ZW4wdwHZD2nIe1DE61ZO9PsyrCyAU3ysl6Cw6TI+txDCN3aS/8XYuC7wDLEgLB9vJv2sVWdCzqJg==", + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-7.6.1.tgz", + "integrity": "sha512-qViRhHpnDNxS4lZhF7suUvevpvH3x9wEiAchQJg8jWHoS25EuLEV+jrqqZS+2kA01bdEDJYWMAowp68g1palCg==", "dependencies": { - "@babel/runtime": "^7.14.6", - "@polkadot/networks": "^7.0.1", - "@polkadot/types": "5.0.1", - "@polkadot/util": "^7.0.1" + "@babel/runtime": "^7.16.7", + "@polkadot/networks": "^8.3.3", + "@polkadot/types": "7.6.1", + "@polkadot/types-codec": "7.6.1", + "@polkadot/types-create": "7.6.1", + "@polkadot/util": "^8.3.3" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@polkadot/util": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-7.2.1.tgz", - "integrity": "sha512-GilFg3i5dmu0H6dHEyh5bUw3yywmnFpEHfxFmKghL1ABDEr4qD0d/XAJ9UrzLFCBKbdTZsR0MDjgjVI2N84J1A==", + "node_modules/@polkadot/types-support": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-7.6.1.tgz", + "integrity": "sha512-ssLpYW1bo535sQ2V0FqBag4egGZTObeP+dKlyEMP+MzF/xYLxf+jjJ0czyyjpyR0XR539KfSsdixa49wzgSnAg==", "dependencies": { - "@babel/runtime": "^7.15.3", - "@polkadot/x-textdecoder": "7.2.1", - "@polkadot/x-textencoder": "7.2.1", + "@babel/runtime": "^7.16.7", + "@polkadot/util": "^8.3.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/util": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-8.3.3.tgz", + "integrity": "sha512-8u1NShSHrCFeFvxWL8WAyRN8y1/iPvijqYCDeeHziBxCNBrL3VKDc9GNF11skeay/EKQiCHBSBeAYyyQOpLebA==", + "dependencies": { + "@babel/runtime": "^7.16.7", + "@polkadot/x-bigint": "8.3.3", + "@polkadot/x-global": "8.3.3", + "@polkadot/x-textdecoder": "8.3.3", + "@polkadot/x-textencoder": "8.3.3", "@types/bn.js": "^4.11.6", - "bn.js": "^4.11.9", - "camelcase": "^5.3.1", + "bn.js": "^4.12.0", "ip-regex": "^4.3.0" }, "engines": { @@ -1586,43 +1971,71 @@ } }, "node_modules/@polkadot/util-crypto": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-7.2.1.tgz", - "integrity": "sha512-X3iGba/1JTL/0MNzMNEIlO9DNyKlwFV839jfGLDKhPbCuDmWp0NdQjF3mBmbvNwkXvn07WmhE7g3q9n5iTzqvQ==", - "dependencies": { - "@babel/runtime": "^7.15.3", - "@polkadot/networks": "7.2.1", - "@polkadot/util": "7.2.1", - "@polkadot/wasm-crypto": "^4.1.2", - "@polkadot/x-randomvalues": "7.2.1", - "base-x": "^3.0.8", - "base64-js": "^1.5.1", - "blakejs": "^1.1.1", - "bn.js": "^4.11.9", - "create-hash": "^1.2.0", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-8.3.3.tgz", + "integrity": "sha512-kXaT2VTEbJq1wNiV0Dz5qJuVWy7pK+x1QLcyWC+6OFERYO+BCp1Y2bTOcLUeF/gyyR/ZaRMMdTyu0ZbHrwH0xg==", + "dependencies": { + "@babel/runtime": "^7.16.7", + "@noble/hashes": "0.5.7", + "@noble/secp256k1": "1.3.4", + "@polkadot/networks": "8.3.3", + "@polkadot/util": "8.3.3", + "@polkadot/wasm-crypto": "^4.5.1", + "@polkadot/x-bigint": "8.3.3", + "@polkadot/x-randomvalues": "8.3.3", "ed2curve": "^0.3.0", - "elliptic": "^6.5.4", - "hash.js": "^1.1.7", - "js-sha3": "^0.8.0", - "scryptsy": "^2.1.0", - "tweetnacl": "^1.0.3", - "xxhashjs": "^0.2.2" + "micro-base": "^0.10.2", + "tweetnacl": "^1.0.3" }, "engines": { "node": ">=14.0.0" }, "peerDependencies": { - "@polkadot/util": "7.2.1" + "@polkadot/util": "8.3.3" + } + }, + "node_modules/@polkadot/util-crypto/node_modules/@polkadot/x-global": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", + "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "dependencies": { + "@babel/runtime": "^7.16.7" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/util-crypto/node_modules/@polkadot/x-randomvalues": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-8.3.3.tgz", + "integrity": "sha512-yxM6GWQholf+vY4dHxKVwtJwDzNUz4UJlL/iN3PA0cuhQ37gxmtJugnNAllcFd8LDNXEN47Ky6Ifw1OHHmZaVw==", + "dependencies": { + "@babel/runtime": "^7.16.7", + "@polkadot/x-global": "8.3.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/util/node_modules/@polkadot/x-global": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", + "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "dependencies": { + "@babel/runtime": "^7.16.7" + }, + "engines": { + "node": ">=14.0.0" } }, "node_modules/@polkadot/wasm-crypto": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-4.1.2.tgz", - "integrity": "sha512-2EKdOjIrD2xHP2rC+0G/3Qo6926nL/18vCFkd34lBd9zP9YNF2GDEtDY+zAeDIRFKe1sQHTpsKgNdYSWoV2eBg==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-4.5.1.tgz", + "integrity": "sha512-Cr21ais3Kq3aedIHZ3J1tjgeD/+K8FCiwEawr0oRywNBSJR8wyuZMePs4swR/6xm8wbBkpqoBVHz/UQHqqQJmA==", "dependencies": { - "@babel/runtime": "^7.14.6", - "@polkadot/wasm-crypto-asmjs": "^4.1.2", - "@polkadot/wasm-crypto-wasm": "^4.1.2" + "@babel/runtime": "^7.16.3", + "@polkadot/wasm-crypto-asmjs": "^4.5.1", + "@polkadot/wasm-crypto-wasm": "^4.5.1" }, "engines": { "node": ">=14.0.0" @@ -1633,95 +2046,153 @@ } }, "node_modules/@polkadot/wasm-crypto-asmjs": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-4.1.2.tgz", - "integrity": "sha512-3Q+vVUxDAC2tXgKMM3lKzx2JW+tarDpTjkvdxIKATyi8Ek69KkUqvMyJD0VL/iFZOFZED0YDX9UU4XOJ/astlg==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-4.5.1.tgz", + "integrity": "sha512-DOdRiWhxVvmqTvp+E9z1j+Yr0zDOGsDvqnT/eNw0Dl1FVUOImsEa7FKns/urASmcxCVEE1jtUWSnij29jrORMQ==", "dependencies": { - "@babel/runtime": "^7.14.6" + "@babel/runtime": "^7.16.3" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/wasm-crypto-wasm": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-4.1.2.tgz", - "integrity": "sha512-/l4IBEdQ41szHdHkuF//z1qr+XmWuLHlpBA7s9Eb221m1Fir6AKoCHoh1hp1r3v0ecZYLKvak1B225w6JAU3Fg==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-4.5.1.tgz", + "integrity": "sha512-hPwke85HxpgG/RAlwdCE8u5w7bThvWg399mlB+XjogXMxOUWBZSgq2XYbgzROUXx27inK9nStF4Pnc4zJnqs9A==", "dependencies": { - "@babel/runtime": "^7.14.6" + "@babel/runtime": "^7.16.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/x-bigint": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-8.3.3.tgz", + "integrity": "sha512-2CT25f0zN/uhch3KpM38jtQfFJ1zJCNT41exg49ztsOvm4f6l+6hW91NLhNAZ313B/c6Z4Lm3DalsjAOdBZ8Nw==", + "dependencies": { + "@babel/runtime": "^7.16.7", + "@polkadot/x-global": "8.3.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/x-bigint/node_modules/@polkadot/x-global": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", + "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "dependencies": { + "@babel/runtime": "^7.16.7" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/x-fetch": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-7.2.1.tgz", - "integrity": "sha512-osdZNPfrB50d7tfjVs4QRjfsb6xqC09JEeYzbUl24hUXPwtkQE8/379jayu1usPe9/JI2wKYGscdf/nRl4pBkA==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-8.3.3.tgz", + "integrity": "sha512-+ScnWnt0i1IF+fM9IC+OnjkTi5NonK+ji8q861hwkNCtK2ziibibcD3mGavCA6wZvij4wUTovWEsTc5Su0+KTA==", "dependencies": { - "@babel/runtime": "^7.15.3", - "@polkadot/x-global": "7.2.1", + "@babel/runtime": "^7.16.7", + "@polkadot/x-global": "8.3.3", "@types/node-fetch": "^2.5.12", - "node-fetch": "^2.6.1" + "node-fetch": "^2.6.7" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/x-fetch/node_modules/@polkadot/x-global": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", + "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "dependencies": { + "@babel/runtime": "^7.16.7" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/x-global": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-7.2.1.tgz", - "integrity": "sha512-VNW+76TxEPqvBy3XMNV05mJRPRGZcYh3k5HjW4+asYeFunMahH4zjmCulhtD9SRI/TqdfHTiqDOqKNKe2xJcVg==", + "version": "8.3.4-1", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.4-1.tgz", + "integrity": "sha512-6KlG5PAG7OKc+fPteDV+MXpuzHzpBKCWS6Fc+M08Mehwr+wccwAMV3q8tinCGn4qQV6iPwNOJd0cxRvPO4v9YQ==", + "peer": true, "dependencies": { - "@babel/runtime": "^7.15.3" + "@babel/runtime": "^7.16.7" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/x-randomvalues": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-7.2.1.tgz", - "integrity": "sha512-B4sjwX+gFweZ1YM1Cg/S9hAEx9E/gV/vqLW89PJB6+hyvsPS9eiVvfVpaOsohc7AgmuINm/bSQbNZvtC+BbbKw==", + "version": "8.3.4-1", + "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-8.3.4-1.tgz", + "integrity": "sha512-gWKOUMGzmca2ncxLiPxR2lMTopRhTjd/Ww3U+QWfzgXiNqZ8ZIb6tB9AZfVTH0WGKQFSSYJTTqwVg5VOoB96cQ==", + "peer": true, "dependencies": { - "@babel/runtime": "^7.15.3", - "@polkadot/x-global": "7.2.1" + "@babel/runtime": "^7.16.7", + "@polkadot/x-global": "8.3.4-1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/x-textdecoder": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-7.2.1.tgz", - "integrity": "sha512-yXSZ0P/D/8HT8gbkdTjw/1AKZIVbX3+mIfiDiN3VqUBzruV7ak5hA+D01I0woBGDqxWISoLQFtGrxPAQ8pwAcg==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-8.3.3.tgz", + "integrity": "sha512-oEvFJv/F+fQ336ciRuJJgJFtfyOX6a2Nyr/5GCkiSQjkEIdnBUuO49yXpHNmQsNI0WndLWIEitiVVa9KuDslYw==", "dependencies": { - "@babel/runtime": "^7.15.3", - "@polkadot/x-global": "7.2.1" + "@babel/runtime": "^7.16.7", + "@polkadot/x-global": "8.3.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/x-textdecoder/node_modules/@polkadot/x-global": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", + "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "dependencies": { + "@babel/runtime": "^7.16.7" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/x-textencoder": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-7.2.1.tgz", - "integrity": "sha512-1aqfxmfKSOWeOxmGBmk+RYrpqGtWywS6t0y/R3FI+k+s8NfIfGdcjMcupKq7khPh92PvVGkur+CnM/y6chn4XA==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-8.3.3.tgz", + "integrity": "sha512-acVsJjmlQ7aluUq8JARY2wJAbf+6dvZNoUrvgzdX/jl5MqvqeIXmX3LX71MyidLt27Z537VDgNzWw8V/524AVQ==", "dependencies": { - "@babel/runtime": "^7.15.3", - "@polkadot/x-global": "7.2.1" + "@babel/runtime": "^7.16.7", + "@polkadot/x-global": "8.3.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/x-textencoder/node_modules/@polkadot/x-global": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", + "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "dependencies": { + "@babel/runtime": "^7.16.7" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/x-ws": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-7.2.1.tgz", - "integrity": "sha512-sYnOF0qNdMuGFiRGWAtpkQQYIP44JFzGywap0CskhNEyCc+zDBi4l/ta3qHjeGta+h9rdVjDeYk2J86EsKlkSw==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-8.3.3.tgz", + "integrity": "sha512-Dd0kscZSb7MULVqo5isPZyqvErvgE7lYIwZ4IA0rNdgUWi3mrJWeeWrzVMxC6nbg6q1ahIEGxxZLMVzeI3u/Ew==", "dependencies": { - "@babel/runtime": "^7.15.3", - "@polkadot/x-global": "7.2.1", + "@babel/runtime": "^7.16.7", + "@polkadot/x-global": "8.3.3", "@types/websocket": "^1.0.4", "websocket": "^1.0.34" }, @@ -1729,6 +2200,17 @@ "node": ">=14.0.0" } }, + "node_modules/@polkadot/x-ws/node_modules/@polkadot/x-global": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", + "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "dependencies": { + "@babel/runtime": "^7.16.7" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -1825,11 +2307,6 @@ "@types/node": "*" } }, - "node_modules/@types/bn.js/node_modules/@types/node": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.6.1.tgz", - "integrity": "sha512-Sr7BhXEAer9xyGuCN3Ek9eg9xPviCF2gfu9kTfuU2HkTVAMYSDeX40fvpmo72n5nansg3nsBjuQBrsS28r+NUw==" - }, "node_modules/@types/chai": { "version": "4.2.15", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.15.tgz", @@ -1933,11 +2410,6 @@ "form-data": "^3.0.0" } }, - "node_modules/@types/node-fetch/node_modules/@types/node": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.6.1.tgz", - "integrity": "sha512-Sr7BhXEAer9xyGuCN3Ek9eg9xPviCF2gfu9kTfuU2HkTVAMYSDeX40fvpmo72n5nansg3nsBjuQBrsS28r+NUw==" - }, "node_modules/@types/prettier": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz", @@ -1968,18 +2440,13 @@ } }, "node_modules/@types/websocket": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.4.tgz", - "integrity": "sha512-qn1LkcFEKK8RPp459jkjzsfpbsx36BBt3oC3pITYtkoBw/aVX+EZFa5j3ThCRTNpLFvIMr5dSTD4RaMdilIOpA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz", + "integrity": "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==", "dependencies": { "@types/node": "*" } }, - "node_modules/@types/websocket/node_modules/@types/node": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.6.1.tgz", - "integrity": "sha512-Sr7BhXEAer9xyGuCN3Ek9eg9xPviCF2gfu9kTfuU2HkTVAMYSDeX40fvpmo72n5nansg3nsBjuQBrsS28r+NUw==" - }, "node_modules/@types/yargs": { "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", @@ -2459,33 +2926,6 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "node_modules/base-x": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", - "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -2509,11 +2949,6 @@ "node": ">=8" } }, - "node_modules/blakejs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.1.tgz", - "integrity": "sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg==" - }, "node_modules/blessed": { "version": "0.1.81", "resolved": "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz", @@ -2608,11 +3043,6 @@ "node": ">=8" } }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - }, "node_modules/browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", @@ -2623,7 +3053,6 @@ "version": "4.17.3", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz", "integrity": "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==", - "dev": true, "dependencies": { "caniuse-lite": "^1.0.30001264", "electron-to-chromium": "^1.3.857", @@ -2669,12 +3098,15 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "node_modules/bufferutil": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.3.tgz", - "integrity": "sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", + "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", "hasInstallScript": true, "dependencies": { - "node-gyp-build": "^4.2.0" + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" } }, "node_modules/bytes": { @@ -2753,6 +3185,7 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, "engines": { "node": ">=6" } @@ -2761,7 +3194,6 @@ "version": "1.0.30001265", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz", "integrity": "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==", - "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/browserslist" @@ -2862,15 +3294,6 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "node_modules/cjs-module-lexer": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", @@ -3136,7 +3559,6 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, "dependencies": { "safe-buffer": "~5.1.1" } @@ -3144,26 +3566,13 @@ "node_modules/convert-source-map/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -3255,11 +3664,6 @@ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", "dev": true }, - "node_modules/cuint": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", - "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=" - }, "node_modules/culvert": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/culvert/-/culvert-0.1.2.tgz", @@ -3593,22 +3997,7 @@ "node_modules/electron-to-chromium": { "version": "1.3.861", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.861.tgz", - "integrity": "sha512-GZyflmpMnZRdZ1e2yAyvuFwz1MPSVQelwHX4TJZyXypB8NcxdPvPNwy5lOTxnlkrK13EiQzyTPugRSnj6cBgKg==", - "dev": true - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } + "integrity": "sha512-GZyflmpMnZRdZ1e2yAyvuFwz1MPSVQelwHX4TJZyXypB8NcxdPvPNwy5lOTxnlkrK13EiQzyTPugRSnj6cBgKg==" }, "node_modules/emitter-listener": { "version": "1.1.2", @@ -3697,7 +4086,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, "engines": { "node": ">=6" } @@ -3865,11 +4253,11 @@ "integrity": "sha512-KTbrd3CAZ0cFceJEZr1e5uiMasabeCpXq1/5uvVxDl53o4jXJHnltasQoj2NkzrxD8hU9kdwjnMhoir/7nNx/A==" }, "node_modules/ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", "dependencies": { - "type": "^2.0.0" + "type": "^2.5.0" } }, "node_modules/ext/node_modules/type": { @@ -4263,7 +4651,6 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -4431,7 +4818,6 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, "engines": { "node": ">=4" } @@ -4552,38 +4938,6 @@ "node": ">=8" } }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, "node_modules/html-encoding-sniffer": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", @@ -5941,16 +6295,10 @@ "pako": "^0.2.5" } }, - "node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "3.14.1", @@ -6052,7 +6400,6 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, "bin": { "jsesc": "bin/jsesc" }, @@ -6081,14 +6428,12 @@ "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "optional": true + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "node_modules/json5": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, "dependencies": { "minimist": "^1.2.5" }, @@ -6213,6 +6558,11 @@ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" }, + "node_modules/lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" + }, "node_modules/log-driver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", @@ -6293,16 +6643,6 @@ "node": ">= 10" } }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -6318,6 +6658,12 @@ "node": ">= 8" } }, + "node_modules/micro-base": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/micro-base/-/micro-base-0.10.2.tgz", + "integrity": "sha512-lqqJrT7lfJtDmmiQ4zRLZuIJBk96t0RAc5pCrrWpL9zDeH5i/SUL85mku9HqzTI/OCZ8EQ3aicbMW+eK5Nyu5w==", + "deprecated": "Switch to @scure/base for audited version of the lib & updates" + }, "node_modules/micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", @@ -6367,16 +6713,6 @@ "node": ">=4" } }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" - }, "node_modules/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -6421,6 +6757,14 @@ "node": ">=10" } }, + "node_modules/mock-socket": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.1.2.tgz", + "integrity": "sha512-XKZkCnQ9ISOlTnaPg4LYYSMj7+6i78HyadYzLA5JM4465ibLdjappZD9Csnqc3Tfzep/eEK/LCJ29BTaLHoB1A==", + "engines": { + "node": ">= 8" + } + }, "node_modules/module-details-from-path": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", @@ -6514,17 +6858,82 @@ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" }, + "node_modules/nock": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.2.tgz", + "integrity": "sha512-PcBHuvl9i6zfaJ50A7LS55oU+nFLv8htXIhffJO+FxyfibdZ4jEvd9kTuvkrJireBFIGMZ+oUIRpMK5gU9h//g==", + "dependencies": { + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash.set": "^4.3.2", + "propagate": "^2.0.0" + }, + "engines": { + "node": ">= 10.13" + } + }, + "node_modules/nock/node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/nock/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node_modules/node-addon-api": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" }, "node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, "engines": { "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, "node_modules/node-gyp": { @@ -6554,9 +6963,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", - "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", + "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -6718,8 +7127,7 @@ "node_modules/node-releases": { "version": "1.1.77", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", - "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==", - "dev": true + "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==" }, "node_modules/nodejs-fs-utils": { "version": "1.2.5", @@ -7230,8 +7638,7 @@ "node_modules/picocolors": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" }, "node_modules/picomatch": { "version": "2.3.0", @@ -7610,6 +8017,14 @@ "node": ">= 6" } }, + "node_modules/propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", + "engines": { + "node": ">= 8" + } + }, "node_modules/proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz", @@ -7771,19 +8186,6 @@ "node": ">=0.8" } }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -8056,15 +8458,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -8116,11 +8509,11 @@ ] }, "node_modules/rxjs": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.3.0.tgz", - "integrity": "sha512-p2yuGIg9S1epc3vrjKf6iVb3RCaAYjYskkO+jHIaV0IjOPlJop4UnodOoFb2xeNwlguqLYvGw1b1McillYb5Gw==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.2.tgz", + "integrity": "sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w==", "dependencies": { - "tslib": "~2.1.0" + "tslib": "^2.1.0" } }, "node_modules/safe-buffer": { @@ -8164,11 +8557,6 @@ "node": ">=10" } }, - "node_modules/scryptsy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-2.1.0.tgz", - "integrity": "sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w==" - }, "node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -8230,18 +8618,6 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -8487,14 +8863,6 @@ "node": ">= 0.6" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -8699,7 +9067,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, "engines": { "node": ">=4" } @@ -9180,12 +9547,15 @@ } }, "node_modules/utf-8-validate": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.5.tgz", - "integrity": "sha512-+pnxRYsS/axEpkrrEpzYfNZGXp0IjC/9RIxwM5gntY4Koi8SHmUGSfxfWqxZdRxrtaoVstuOzUp/rbs3JSPELQ==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.8.tgz", + "integrity": "sha512-k4dW/Qja1BYDl2qD4tOMB9PFVha/UJtxTc1cXYOe3WwA/2m0Yn4qB7wLMpJyLJ/7DR0XnTut3HsCSzDT4ZvKgA==", "hasInstallScript": true, "dependencies": { - "node-gyp-build": "^4.2.0" + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" } }, "node_modules/util": { @@ -9519,14 +9889,6 @@ "node": "*" } }, - "node_modules/xxhashjs": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", - "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", - "dependencies": { - "cuint": "^0.2.2" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -9563,18 +9925,18 @@ } }, "node_modules/yargs": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", - "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", + "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", "dev": true, "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.0.0" }, "engines": { "node": ">=12" @@ -9589,6 +9951,41 @@ "node": ">=10" } }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", @@ -9601,25 +9998,22 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "requires": { - "@babel/highlight": "^7.14.5" + "@babel/highlight": "^7.16.7" } }, "@babel/compat-data": { "version": "7.15.0", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", - "dev": true + "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==" }, "@babel/core": { "version": "7.15.0", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz", "integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==", - "dev": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.15.0", @@ -9642,7 +10036,6 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -9650,30 +10043,26 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, "@babel/generator": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", - "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", - "dev": true, + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", + "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", "requires": { - "@babel/types": "^7.15.6", + "@babel/types": "^7.16.8", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, @@ -9681,16 +10070,22 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "requires": { + "@babel/types": "^7.16.7" + } + }, "@babel/helper-compilation-targets": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", - "dev": true, "requires": { "@babel/compat-data": "^7.15.0", "@babel/helper-validator-option": "^7.14.5", @@ -9701,54 +10096,70 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" } } }, + "@babel/helper-create-class-features-plugin": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz", + "integrity": "sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "requires": { + "@babel/types": "^7.16.7" + } + }, "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", - "dev": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", - "dev": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.7" } }, "@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", - "dev": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.7" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", - "dev": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", + "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.7" } }, "@babel/helper-module-imports": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", - "dev": true, "requires": { "@babel/types": "^7.15.4" } @@ -9757,7 +10168,6 @@ "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", - "dev": true, "requires": { "@babel/helper-module-imports": "^7.15.4", "@babel/helper-replace-supers": "^7.15.4", @@ -9770,67 +10180,60 @@ } }, "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", - "dev": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.7" } }, "@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", - "dev": true + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==" }, "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", - "dev": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-simple-access": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", - "dev": true, "requires": { "@babel/types": "^7.15.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", - "dev": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.7" } }, "@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" }, "@babel/helper-validator-option": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "dev": true + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==" }, "@babel/helpers": { "version": "7.15.3", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.3.tgz", "integrity": "sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g==", - "dev": true, "requires": { "@babel/template": "^7.14.5", "@babel/traverse": "^7.15.0", @@ -9838,12 +10241,11 @@ } }, "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -9852,7 +10254,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -9861,7 +10262,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -9872,7 +10272,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -9880,20 +10279,17 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -9901,10 +10297,18 @@ } }, "@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", - "dev": true + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz", + "integrity": "sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==" + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } }, "@babel/plugin-syntax-async-generators": { "version": "7.8.4", @@ -10036,9 +10440,9 @@ } }, "@babel/register": { - "version": "7.15.3", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.15.3.tgz", - "integrity": "sha512-mj4IY1ZJkorClxKTImccn4T81+UKTo4Ux0+OFSV9hME1ooqS9UV+pJ6BjD0qXPK4T3XW/KNa79XByjeEMZz+fw==", + "version": "7.16.9", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.16.9.tgz", + "integrity": "sha512-jJ72wcghdRIlENfvALcyODhNoGE5j75cYHdC+aQMh6cU/P86tiiXTp9XYZct1UxUMo/4+BgQRyNZEGx0KWGS+g==", "dev": true, "requires": { "clone-deep": "^4.0.1", @@ -10049,37 +10453,36 @@ } }, "@babel/runtime": { - "version": "7.15.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz", - "integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", + "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", - "dev": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", + "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.16.10", + "@babel/types": "^7.16.8", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -10088,7 +10491,6 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -10096,18 +10498,16 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "dev": true, + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", "requires": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } }, @@ -10408,6 +10808,16 @@ "chalk": "^4.0.0" } }, + "@noble/hashes": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-0.5.7.tgz", + "integrity": "sha512-R9PPYv7TqoYi+enikzZvwRQesGTxR0+jwqzZJGL0uNcf2NFL+lt/uvCCewtXXmr6jWBxiMuNjBfJwKv9UJaCng==" + }, + "@noble/secp256k1": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.3.4.tgz", + "integrity": "sha512-ZVRouDO5mbdCiDg4zCd3ZZABduRtpy4tCnB33Gh9upHe9tRzpiqbRSN1VTjrj/2g8u2c6MBi0YLNnNQpBYOiWg==" + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -10644,246 +11054,604 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "@polkadot/api": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-7.6.1.tgz", + "integrity": "sha512-0VvWn8TIKX3o922ZjomsJEkysica1ScnjNYBG3+801gWG3WbCI+IdzdqazTkIMZL8r8HipmA4cjfS3Tdk+R9eg==", + "requires": { + "@babel/runtime": "^7.16.7", + "@polkadot/api-augment": "7.6.1", + "@polkadot/api-base": "7.6.1", + "@polkadot/api-derive": "7.6.1", + "@polkadot/keyring": "^8.3.3", + "@polkadot/rpc-augment": "7.6.1", + "@polkadot/rpc-core": "7.6.1", + "@polkadot/rpc-provider": "7.6.1", + "@polkadot/types": "7.6.1", + "@polkadot/types-augment": "7.6.1", + "@polkadot/types-codec": "7.6.1", + "@polkadot/types-create": "7.6.1", + "@polkadot/types-known": "7.6.1", + "@polkadot/util": "^8.3.3", + "@polkadot/util-crypto": "^8.3.3", + "eventemitter3": "^4.0.7", + "rxjs": "^7.5.2" + } + }, + "@polkadot/api-augment": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-7.6.1.tgz", + "integrity": "sha512-elkAVDzkcW909phGQNOM2M2ksfnjNeY67EnwIB0xBdFlfM7mVPdxqnAWHrBwbIsD3TdWzxtrNzWzyi7hvILt+A==", + "requires": { + "@babel/runtime": "^7.16.7", + "@polkadot/api-base": "7.6.1", + "@polkadot/rpc-augment": "7.6.1", + "@polkadot/types": "7.6.1", + "@polkadot/types-augment": "7.6.1", + "@polkadot/types-codec": "7.6.1", + "@polkadot/util": "^8.3.3" + } + }, + "@polkadot/api-base": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-base/-/api-base-7.6.1.tgz", + "integrity": "sha512-HbbbQSzTc5W0QtV/5JMOHbINlrHeZ5w5Cdo2jmIkSZT8w8MxhnupzdvkjIX9B9F4/dFa0RdaP/J1FnLNFlUU1w==", + "requires": { + "@babel/runtime": "^7.16.7", + "@polkadot/rpc-core": "7.6.1", + "@polkadot/types": "7.6.1", + "@polkadot/util": "^8.3.3", + "rxjs": "^7.5.2" + } + }, + "@polkadot/api-derive": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-7.6.1.tgz", + "integrity": "sha512-cRoc1LTTwvEH9QtHIp7vWYn34dczuqg4xQSbZn/IqEzvmcpU7wJC3gLfEOCrqTIFDofPVyBOd7Vv3gjuey/82g==", + "requires": { + "@babel/runtime": "^7.16.7", + "@polkadot/api": "7.6.1", + "@polkadot/api-augment": "7.6.1", + "@polkadot/api-base": "7.6.1", + "@polkadot/rpc-core": "7.6.1", + "@polkadot/types": "7.6.1", + "@polkadot/types-codec": "7.6.1", + "@polkadot/util": "^8.3.3", + "@polkadot/util-crypto": "^8.3.3", + "rxjs": "^7.5.2" + } + }, + "@polkadot/keyring": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-8.3.3.tgz", + "integrity": "sha512-TgoIpaTqn7voT7lDu5W6p0Z+216OImpqtHuaiFy125ekCQurrf9BVIdwp56y5qoFLDAZ5i9gnWHMIgOQ6AJj/Q==", + "requires": { + "@babel/runtime": "^7.16.7", + "@polkadot/util": "8.3.3", + "@polkadot/util-crypto": "8.3.3" + } + }, + "@polkadot/networks": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-8.3.3.tgz", + "integrity": "sha512-yj0DMqmzRZbvgaoZztV3/RPgYJjBhT17Dhu+FX/LUJzVbAF/RfjkzNsJT4Ta4kLDxQMYZq1avUac0ia2j9NcNw==", + "requires": { + "@babel/runtime": "^7.16.7", + "@polkadot/util": "8.3.3" + } + }, + "@polkadot/rpc-augment": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-7.6.1.tgz", + "integrity": "sha512-lNeTS8Ma/0sAk3pvGxliQOkE016WZKXyS5uQWtcF2CRn2rn265Fb4I29n3KjTL8CRYtafvH6IRS0DSkKgbnL3w==", + "requires": { + "@babel/runtime": "^7.16.7", + "@polkadot/rpc-core": "7.6.1", + "@polkadot/types": "7.6.1", + "@polkadot/types-codec": "7.6.1", + "@polkadot/util": "^8.3.3" + } + }, + "@polkadot/rpc-core": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-7.6.1.tgz", + "integrity": "sha512-xq/GzUeBu1GsP4ngEYQeDrVnsullDBy/22yUY/ahNjkgAjXeOndrBFis+4lBiiksVQMgYZEzaHv89E0aCOBvAA==", + "requires": { + "@babel/runtime": "^7.16.7", + "@polkadot/rpc-augment": "7.6.1", + "@polkadot/rpc-provider": "7.6.1", + "@polkadot/types": "7.6.1", + "@polkadot/util": "^8.3.3", + "rxjs": "^7.5.2" + } + }, + "@polkadot/rpc-provider": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-7.6.1.tgz", + "integrity": "sha512-jevBGp/n16ra+Y+JV8nnNRTtKPU1Oo3nBiyMhUla6crWLjMnLAYvcyteRq27aBmU3Olh4n/0xDVNCvTxfEghxQ==", + "requires": { + "@babel/runtime": "^7.16.7", + "@polkadot/keyring": "^8.3.3", + "@polkadot/types": "7.6.1", + "@polkadot/types-support": "7.6.1", + "@polkadot/util": "^8.3.3", + "@polkadot/util-crypto": "^8.3.3", + "@polkadot/x-fetch": "^8.3.3", + "@polkadot/x-global": "^8.3.3", + "@polkadot/x-ws": "^8.3.3", + "eventemitter3": "^4.0.7", + "mock-socket": "^9.1.2", + "nock": "^13.2.2" + }, + "dependencies": { + "@polkadot/x-global": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", + "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "requires": { + "@babel/runtime": "^7.16.7" + } + } + } + }, + "@polkadot/typegen": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/typegen/-/typegen-7.6.1.tgz", + "integrity": "sha512-RCtpQWTmPMTHFbK5AXTy7Ncgx2aj4FhxnYFZxmpm2bZpXsf66mTKDu2vQiKN2vwPtjG8WnxuyB1fqnyGtebHPg==", + "dev": true, + "requires": { + "@babel/core": "^7.16.12", + "@babel/register": "^7.16.9", + "@babel/runtime": "^7.16.7", + "@polkadot/api": "7.6.1", + "@polkadot/api-augment": "7.6.1", + "@polkadot/rpc-augment": "7.6.1", + "@polkadot/rpc-provider": "7.6.1", + "@polkadot/types": "7.6.1", + "@polkadot/types-augment": "7.6.1", + "@polkadot/types-codec": "7.6.1", + "@polkadot/types-create": "7.6.1", + "@polkadot/types-support": "7.6.1", + "@polkadot/util": "^8.3.3", + "@polkadot/x-ws": "^8.3.3", + "handlebars": "^4.7.7", + "websocket": "^1.0.34", + "yargs": "^17.3.1" + }, + "dependencies": { + "@babel/compat-data": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz", + "integrity": "sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==", + "dev": true + }, + "@babel/core": { + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", + "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.16.7", + "@babel/parser": "^7.16.12", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.10", + "@babel/types": "^7.16.8", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", + "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", + "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-simple-access": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", + "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true + }, + "@babel/helpers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz", + "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "browserslist": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", + "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001303", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001303.tgz", + "integrity": "sha512-/Mqc1oESndUNszJP0kx0UaQU9kEv9nNtJ7Kn8AdA0mNnH8eR1cj0kG+NbNuC1Wq/b21eA8prhKRA3bbkjONegQ==", + "dev": true + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "electron-to-chromium": { + "version": "1.4.56", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.56.tgz", + "integrity": "sha512-0k/S0FQqRRpJbX7YUjwCcLZ8D42RqGKtaiq90adXBOYgTIWwLA/g3toO8k9yEpqU8iC4QyaWYYWSTBIna8WV4g==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true } } }, - "@polkadot/api": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-5.0.1.tgz", - "integrity": "sha512-5JDpM2Fjc80gHBju1B/rMBGDfAvY8UiU4XVlivJRk+mTVD3OTwbtTro4nmwJOub05xQCJvD/bnCuxG8eFSoq+Q==", - "requires": { - "@babel/runtime": "^7.14.6", - "@polkadot/api-derive": "5.0.1", - "@polkadot/keyring": "^7.0.1", - "@polkadot/rpc-core": "5.0.1", - "@polkadot/rpc-provider": "5.0.1", - "@polkadot/types": "5.0.1", - "@polkadot/types-known": "5.0.1", - "@polkadot/util": "^7.0.1", - "@polkadot/util-crypto": "^7.0.1", - "eventemitter3": "^4.0.7", - "rxjs": "^7.2.0" - } - }, - "@polkadot/api-derive": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-5.0.1.tgz", - "integrity": "sha512-JZpH1JVLu3PvX4+A71iDLtNr6LL103dAFou61DxyJF4obyTmS2lzigG3xXqUFShiPDb19ywxQpsE4gAOP6emuQ==", - "requires": { - "@babel/runtime": "^7.14.6", - "@polkadot/api": "5.0.1", - "@polkadot/rpc-core": "5.0.1", - "@polkadot/types": "5.0.1", - "@polkadot/util": "^7.0.1", - "@polkadot/util-crypto": "^7.0.1", - "rxjs": "^7.2.0" - } - }, - "@polkadot/keyring": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-7.2.1.tgz", - "integrity": "sha512-WmiTsHKELX16uZWLvebDBckZIAXeJFfbcOM6m/VbMOjSV5C6xIKqiV3232Mn8ZuPKgsOf25Q78/IwJW1Dq53Qg==", - "requires": { - "@babel/runtime": "^7.15.3", - "@polkadot/util": "7.2.1", - "@polkadot/util-crypto": "7.2.1" - } - }, - "@polkadot/networks": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-7.2.1.tgz", - "integrity": "sha512-YX8oQ7QQ2oq3YowwOiv/C82l849V0ZEzpR26YrPgKSXbYFbasho3Akf0zalndZJZV1Bb8EiOkzGoJ3ffogSPxA==", + "@polkadot/types": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-7.6.1.tgz", + "integrity": "sha512-4GotmyT6h5n2qpgqPKqzVzgZKuPS9fNMeQBBbhxZxjyFmSTYtIqQeyqFw1bgIGcsZBH81WK7yE1U221l8gmj1Q==", "requires": { - "@babel/runtime": "^7.15.3" + "@babel/runtime": "^7.16.7", + "@polkadot/keyring": "^8.3.3", + "@polkadot/types-augment": "7.6.1", + "@polkadot/types-codec": "7.6.1", + "@polkadot/types-create": "7.6.1", + "@polkadot/util": "^8.3.3", + "@polkadot/util-crypto": "^8.3.3", + "rxjs": "^7.5.2" } }, - "@polkadot/rpc-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-5.0.1.tgz", - "integrity": "sha512-JMNOVQijjyJZNu9B8CJwIrQzGYzAp03uCBSbqYfzWBFnYVLKh7JmvOlkLnODM8uUYq0gVN4BaDUSPc39GpELAQ==", + "@polkadot/types-augment": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-7.6.1.tgz", + "integrity": "sha512-OLTVgMlSiZy37eXhUa6zYRHBUK7eJ2opovAKYpk+S8biA4nrq7LUXis2MnCP9C1TvsQozPlZ5q0M89WRVw96TA==", "requires": { - "@babel/runtime": "^7.14.6", - "@polkadot/rpc-provider": "5.0.1", - "@polkadot/types": "5.0.1", - "@polkadot/util": "^7.0.1", - "rxjs": "^7.2.0" + "@babel/runtime": "^7.16.7", + "@polkadot/types": "7.6.1", + "@polkadot/types-codec": "7.6.1", + "@polkadot/util": "^8.3.3" } }, - "@polkadot/rpc-provider": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-5.0.1.tgz", - "integrity": "sha512-t+VKhMtQfQVgkZDqYnP/44KlBDmcCVo1/MvJ+DoNd7RUWUIBJt3v71G5gDSNeGMTyvxn0KK0qL4j+Nqr6c4FUQ==", + "@polkadot/types-codec": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-7.6.1.tgz", + "integrity": "sha512-Zm4oQJK4BeB3reElKCVfJm1tzVK2O+hfS9QlKJAHy+kYwPB20o0UYv1d0K1WOZedSmVIaoW/diOaxMePV1S55Q==", "requires": { - "@babel/runtime": "^7.14.6", - "@polkadot/types": "5.0.1", - "@polkadot/util": "^7.0.1", - "@polkadot/util-crypto": "^7.0.1", - "@polkadot/x-fetch": "^7.0.1", - "@polkadot/x-global": "^7.0.1", - "@polkadot/x-ws": "^7.0.1", - "eventemitter3": "^4.0.7" + "@babel/runtime": "^7.16.7", + "@polkadot/util": "^8.3.3" } }, - "@polkadot/typegen": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@polkadot/typegen/-/typegen-5.0.1.tgz", - "integrity": "sha512-iFLJoWgIkn+J6MDw3AUWveP9qxVn1C+VeLJbpZ21St5WyeE148Tml0BmYnKLSXlaPMhZEwB+/IV3jpQ35dH4bw==", - "dev": true, + "@polkadot/types-create": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-7.6.1.tgz", + "integrity": "sha512-vGUT5O3/bYpP/NOa/5TV8aCDoDE8DbeRSiykzQ8ceOrnmB4VrlJ+L4zklyiuRdAFXPYmi+7S9Dzr/IrNrf72wg==", "requires": { - "@babel/core": "^7.14.6", - "@babel/register": "^7.14.5", - "@babel/runtime": "^7.14.6", - "@polkadot/api": "5.0.1", - "@polkadot/rpc-provider": "5.0.1", - "@polkadot/types": "5.0.1", - "@polkadot/util": "^7.0.1", - "handlebars": "^4.7.7", - "websocket": "^1.0.34", - "yargs": "^17.0.1" + "@babel/runtime": "^7.16.7", + "@polkadot/types-codec": "7.6.1", + "@polkadot/util": "^8.3.3" } }, - "@polkadot/types": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-5.0.1.tgz", - "integrity": "sha512-aN6JKeF7ZYi5irYAaUoDqth6qlOlB15C5vhlDOojEorYLfRs/R+GCrO+lPSs+bKmSxh7BSRh500ikI/xD4nx5A==", + "@polkadot/types-known": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-7.6.1.tgz", + "integrity": "sha512-qViRhHpnDNxS4lZhF7suUvevpvH3x9wEiAchQJg8jWHoS25EuLEV+jrqqZS+2kA01bdEDJYWMAowp68g1palCg==", "requires": { - "@babel/runtime": "^7.14.6", - "@polkadot/util": "^7.0.1", - "@polkadot/util-crypto": "^7.0.1", - "rxjs": "^7.2.0" + "@babel/runtime": "^7.16.7", + "@polkadot/networks": "^8.3.3", + "@polkadot/types": "7.6.1", + "@polkadot/types-codec": "7.6.1", + "@polkadot/types-create": "7.6.1", + "@polkadot/util": "^8.3.3" } }, - "@polkadot/types-known": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-5.0.1.tgz", - "integrity": "sha512-AIhPlN4r14ZW4wdwHZD2nIe1DE61ZO9PsyrCyAU3ysl6Cw6TI+txDCN3aS/8XYuC7wDLEgLB9vJv2sVWdCzqJg==", + "@polkadot/types-support": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-7.6.1.tgz", + "integrity": "sha512-ssLpYW1bo535sQ2V0FqBag4egGZTObeP+dKlyEMP+MzF/xYLxf+jjJ0czyyjpyR0XR539KfSsdixa49wzgSnAg==", "requires": { - "@babel/runtime": "^7.14.6", - "@polkadot/networks": "^7.0.1", - "@polkadot/types": "5.0.1", - "@polkadot/util": "^7.0.1" + "@babel/runtime": "^7.16.7", + "@polkadot/util": "^8.3.3" } }, "@polkadot/util": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-7.2.1.tgz", - "integrity": "sha512-GilFg3i5dmu0H6dHEyh5bUw3yywmnFpEHfxFmKghL1ABDEr4qD0d/XAJ9UrzLFCBKbdTZsR0MDjgjVI2N84J1A==", - "requires": { - "@babel/runtime": "^7.15.3", - "@polkadot/x-textdecoder": "7.2.1", - "@polkadot/x-textencoder": "7.2.1", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-8.3.3.tgz", + "integrity": "sha512-8u1NShSHrCFeFvxWL8WAyRN8y1/iPvijqYCDeeHziBxCNBrL3VKDc9GNF11skeay/EKQiCHBSBeAYyyQOpLebA==", + "requires": { + "@babel/runtime": "^7.16.7", + "@polkadot/x-bigint": "8.3.3", + "@polkadot/x-global": "8.3.3", + "@polkadot/x-textdecoder": "8.3.3", + "@polkadot/x-textencoder": "8.3.3", "@types/bn.js": "^4.11.6", - "bn.js": "^4.11.9", - "camelcase": "^5.3.1", + "bn.js": "^4.12.0", "ip-regex": "^4.3.0" + }, + "dependencies": { + "@polkadot/x-global": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", + "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "requires": { + "@babel/runtime": "^7.16.7" + } + } } }, "@polkadot/util-crypto": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-7.2.1.tgz", - "integrity": "sha512-X3iGba/1JTL/0MNzMNEIlO9DNyKlwFV839jfGLDKhPbCuDmWp0NdQjF3mBmbvNwkXvn07WmhE7g3q9n5iTzqvQ==", - "requires": { - "@babel/runtime": "^7.15.3", - "@polkadot/networks": "7.2.1", - "@polkadot/util": "7.2.1", - "@polkadot/wasm-crypto": "^4.1.2", - "@polkadot/x-randomvalues": "7.2.1", - "base-x": "^3.0.8", - "base64-js": "^1.5.1", - "blakejs": "^1.1.1", - "bn.js": "^4.11.9", - "create-hash": "^1.2.0", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-8.3.3.tgz", + "integrity": "sha512-kXaT2VTEbJq1wNiV0Dz5qJuVWy7pK+x1QLcyWC+6OFERYO+BCp1Y2bTOcLUeF/gyyR/ZaRMMdTyu0ZbHrwH0xg==", + "requires": { + "@babel/runtime": "^7.16.7", + "@noble/hashes": "0.5.7", + "@noble/secp256k1": "1.3.4", + "@polkadot/networks": "8.3.3", + "@polkadot/util": "8.3.3", + "@polkadot/wasm-crypto": "^4.5.1", + "@polkadot/x-bigint": "8.3.3", + "@polkadot/x-randomvalues": "8.3.3", "ed2curve": "^0.3.0", - "elliptic": "^6.5.4", - "hash.js": "^1.1.7", - "js-sha3": "^0.8.0", - "scryptsy": "^2.1.0", - "tweetnacl": "^1.0.3", - "xxhashjs": "^0.2.2" + "micro-base": "^0.10.2", + "tweetnacl": "^1.0.3" + }, + "dependencies": { + "@polkadot/x-global": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", + "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "requires": { + "@babel/runtime": "^7.16.7" + } + }, + "@polkadot/x-randomvalues": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-8.3.3.tgz", + "integrity": "sha512-yxM6GWQholf+vY4dHxKVwtJwDzNUz4UJlL/iN3PA0cuhQ37gxmtJugnNAllcFd8LDNXEN47Ky6Ifw1OHHmZaVw==", + "requires": { + "@babel/runtime": "^7.16.7", + "@polkadot/x-global": "8.3.3" + } + } } }, "@polkadot/wasm-crypto": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-4.1.2.tgz", - "integrity": "sha512-2EKdOjIrD2xHP2rC+0G/3Qo6926nL/18vCFkd34lBd9zP9YNF2GDEtDY+zAeDIRFKe1sQHTpsKgNdYSWoV2eBg==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-4.5.1.tgz", + "integrity": "sha512-Cr21ais3Kq3aedIHZ3J1tjgeD/+K8FCiwEawr0oRywNBSJR8wyuZMePs4swR/6xm8wbBkpqoBVHz/UQHqqQJmA==", "requires": { - "@babel/runtime": "^7.14.6", - "@polkadot/wasm-crypto-asmjs": "^4.1.2", - "@polkadot/wasm-crypto-wasm": "^4.1.2" + "@babel/runtime": "^7.16.3", + "@polkadot/wasm-crypto-asmjs": "^4.5.1", + "@polkadot/wasm-crypto-wasm": "^4.5.1" } }, "@polkadot/wasm-crypto-asmjs": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-4.1.2.tgz", - "integrity": "sha512-3Q+vVUxDAC2tXgKMM3lKzx2JW+tarDpTjkvdxIKATyi8Ek69KkUqvMyJD0VL/iFZOFZED0YDX9UU4XOJ/astlg==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-4.5.1.tgz", + "integrity": "sha512-DOdRiWhxVvmqTvp+E9z1j+Yr0zDOGsDvqnT/eNw0Dl1FVUOImsEa7FKns/urASmcxCVEE1jtUWSnij29jrORMQ==", "requires": { - "@babel/runtime": "^7.14.6" + "@babel/runtime": "^7.16.3" } }, "@polkadot/wasm-crypto-wasm": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-4.1.2.tgz", - "integrity": "sha512-/l4IBEdQ41szHdHkuF//z1qr+XmWuLHlpBA7s9Eb221m1Fir6AKoCHoh1hp1r3v0ecZYLKvak1B225w6JAU3Fg==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-4.5.1.tgz", + "integrity": "sha512-hPwke85HxpgG/RAlwdCE8u5w7bThvWg399mlB+XjogXMxOUWBZSgq2XYbgzROUXx27inK9nStF4Pnc4zJnqs9A==", + "requires": { + "@babel/runtime": "^7.16.3" + } + }, + "@polkadot/x-bigint": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-8.3.3.tgz", + "integrity": "sha512-2CT25f0zN/uhch3KpM38jtQfFJ1zJCNT41exg49ztsOvm4f6l+6hW91NLhNAZ313B/c6Z4Lm3DalsjAOdBZ8Nw==", "requires": { - "@babel/runtime": "^7.14.6" + "@babel/runtime": "^7.16.7", + "@polkadot/x-global": "8.3.3" + }, + "dependencies": { + "@polkadot/x-global": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", + "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "requires": { + "@babel/runtime": "^7.16.7" + } + } } }, "@polkadot/x-fetch": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-7.2.1.tgz", - "integrity": "sha512-osdZNPfrB50d7tfjVs4QRjfsb6xqC09JEeYzbUl24hUXPwtkQE8/379jayu1usPe9/JI2wKYGscdf/nRl4pBkA==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-8.3.3.tgz", + "integrity": "sha512-+ScnWnt0i1IF+fM9IC+OnjkTi5NonK+ji8q861hwkNCtK2ziibibcD3mGavCA6wZvij4wUTovWEsTc5Su0+KTA==", "requires": { - "@babel/runtime": "^7.15.3", - "@polkadot/x-global": "7.2.1", + "@babel/runtime": "^7.16.7", + "@polkadot/x-global": "8.3.3", "@types/node-fetch": "^2.5.12", - "node-fetch": "^2.6.1" + "node-fetch": "^2.6.7" + }, + "dependencies": { + "@polkadot/x-global": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", + "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "requires": { + "@babel/runtime": "^7.16.7" + } + } } }, "@polkadot/x-global": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-7.2.1.tgz", - "integrity": "sha512-VNW+76TxEPqvBy3XMNV05mJRPRGZcYh3k5HjW4+asYeFunMahH4zjmCulhtD9SRI/TqdfHTiqDOqKNKe2xJcVg==", + "version": "8.3.4-1", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.4-1.tgz", + "integrity": "sha512-6KlG5PAG7OKc+fPteDV+MXpuzHzpBKCWS6Fc+M08Mehwr+wccwAMV3q8tinCGn4qQV6iPwNOJd0cxRvPO4v9YQ==", + "peer": true, "requires": { - "@babel/runtime": "^7.15.3" + "@babel/runtime": "^7.16.7" } }, "@polkadot/x-randomvalues": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-7.2.1.tgz", - "integrity": "sha512-B4sjwX+gFweZ1YM1Cg/S9hAEx9E/gV/vqLW89PJB6+hyvsPS9eiVvfVpaOsohc7AgmuINm/bSQbNZvtC+BbbKw==", + "version": "8.3.4-1", + "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-8.3.4-1.tgz", + "integrity": "sha512-gWKOUMGzmca2ncxLiPxR2lMTopRhTjd/Ww3U+QWfzgXiNqZ8ZIb6tB9AZfVTH0WGKQFSSYJTTqwVg5VOoB96cQ==", + "peer": true, "requires": { - "@babel/runtime": "^7.15.3", - "@polkadot/x-global": "7.2.1" + "@babel/runtime": "^7.16.7", + "@polkadot/x-global": "8.3.4-1" } }, "@polkadot/x-textdecoder": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-7.2.1.tgz", - "integrity": "sha512-yXSZ0P/D/8HT8gbkdTjw/1AKZIVbX3+mIfiDiN3VqUBzruV7ak5hA+D01I0woBGDqxWISoLQFtGrxPAQ8pwAcg==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-8.3.3.tgz", + "integrity": "sha512-oEvFJv/F+fQ336ciRuJJgJFtfyOX6a2Nyr/5GCkiSQjkEIdnBUuO49yXpHNmQsNI0WndLWIEitiVVa9KuDslYw==", "requires": { - "@babel/runtime": "^7.15.3", - "@polkadot/x-global": "7.2.1" + "@babel/runtime": "^7.16.7", + "@polkadot/x-global": "8.3.3" + }, + "dependencies": { + "@polkadot/x-global": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", + "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "requires": { + "@babel/runtime": "^7.16.7" + } + } } }, "@polkadot/x-textencoder": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-7.2.1.tgz", - "integrity": "sha512-1aqfxmfKSOWeOxmGBmk+RYrpqGtWywS6t0y/R3FI+k+s8NfIfGdcjMcupKq7khPh92PvVGkur+CnM/y6chn4XA==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-8.3.3.tgz", + "integrity": "sha512-acVsJjmlQ7aluUq8JARY2wJAbf+6dvZNoUrvgzdX/jl5MqvqeIXmX3LX71MyidLt27Z537VDgNzWw8V/524AVQ==", "requires": { - "@babel/runtime": "^7.15.3", - "@polkadot/x-global": "7.2.1" + "@babel/runtime": "^7.16.7", + "@polkadot/x-global": "8.3.3" + }, + "dependencies": { + "@polkadot/x-global": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", + "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "requires": { + "@babel/runtime": "^7.16.7" + } + } } }, "@polkadot/x-ws": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-7.2.1.tgz", - "integrity": "sha512-sYnOF0qNdMuGFiRGWAtpkQQYIP44JFzGywap0CskhNEyCc+zDBi4l/ta3qHjeGta+h9rdVjDeYk2J86EsKlkSw==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-8.3.3.tgz", + "integrity": "sha512-Dd0kscZSb7MULVqo5isPZyqvErvgE7lYIwZ4IA0rNdgUWi3mrJWeeWrzVMxC6nbg6q1ahIEGxxZLMVzeI3u/Ew==", "requires": { - "@babel/runtime": "^7.15.3", - "@polkadot/x-global": "7.2.1", + "@babel/runtime": "^7.16.7", + "@polkadot/x-global": "8.3.3", "@types/websocket": "^1.0.4", "websocket": "^1.0.34" + }, + "dependencies": { + "@polkadot/x-global": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", + "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "requires": { + "@babel/runtime": "^7.16.7" + } + } } }, "@sindresorhus/is": { @@ -10971,13 +11739,6 @@ "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", "requires": { "@types/node": "*" - }, - "dependencies": { - "@types/node": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.6.1.tgz", - "integrity": "sha512-Sr7BhXEAer9xyGuCN3Ek9eg9xPviCF2gfu9kTfuU2HkTVAMYSDeX40fvpmo72n5nansg3nsBjuQBrsS28r+NUw==" - } } }, "@types/chai": { @@ -11080,13 +11841,6 @@ "requires": { "@types/node": "*", "form-data": "^3.0.0" - }, - "dependencies": { - "@types/node": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.6.1.tgz", - "integrity": "sha512-Sr7BhXEAer9xyGuCN3Ek9eg9xPviCF2gfu9kTfuU2HkTVAMYSDeX40fvpmo72n5nansg3nsBjuQBrsS28r+NUw==" - } } }, "@types/prettier": { @@ -11119,18 +11873,11 @@ } }, "@types/websocket": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.4.tgz", - "integrity": "sha512-qn1LkcFEKK8RPp459jkjzsfpbsx36BBt3oC3pITYtkoBw/aVX+EZFa5j3ThCRTNpLFvIMr5dSTD4RaMdilIOpA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz", + "integrity": "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==", "requires": { "@types/node": "*" - }, - "dependencies": { - "@types/node": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.6.1.tgz", - "integrity": "sha512-Sr7BhXEAer9xyGuCN3Ek9eg9xPviCF2gfu9kTfuU2HkTVAMYSDeX40fvpmo72n5nansg3nsBjuQBrsS28r+NUw==" - } } }, "@types/yargs": { @@ -11520,19 +12267,6 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "base-x": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", - "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -11555,11 +12289,6 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, - "blakejs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.1.tgz", - "integrity": "sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg==" - }, "blessed": { "version": "0.1.81", "resolved": "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz", @@ -11635,11 +12364,6 @@ "fill-range": "^7.0.1" } }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - }, "browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", @@ -11650,7 +12374,6 @@ "version": "4.17.3", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz", "integrity": "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==", - "dev": true, "requires": { "caniuse-lite": "^1.0.30001264", "electron-to-chromium": "^1.3.857", @@ -11683,11 +12406,11 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "bufferutil": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.3.tgz", - "integrity": "sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", + "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", "requires": { - "node-gyp-build": "^4.2.0" + "node-gyp-build": "^4.3.0" } }, "bytes": { @@ -11746,13 +12469,13 @@ "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true }, "caniuse-lite": { "version": "1.0.30001265", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz", - "integrity": "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==", - "dev": true + "integrity": "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==" }, "caseless": { "version": "0.12.0", @@ -11829,15 +12552,6 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "cjs-module-lexer": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", @@ -12046,7 +12760,6 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, "requires": { "safe-buffer": "~5.1.1" }, @@ -12054,8 +12767,7 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" } } }, @@ -12064,18 +12776,6 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, "create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -12151,11 +12851,6 @@ } } }, - "cuint": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", - "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=" - }, "culvert": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/culvert/-/culvert-0.1.2.tgz", @@ -12416,22 +13111,7 @@ "electron-to-chromium": { "version": "1.3.861", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.861.tgz", - "integrity": "sha512-GZyflmpMnZRdZ1e2yAyvuFwz1MPSVQelwHX4TJZyXypB8NcxdPvPNwy5lOTxnlkrK13EiQzyTPugRSnj6cBgKg==", - "dev": true - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } + "integrity": "sha512-GZyflmpMnZRdZ1e2yAyvuFwz1MPSVQelwHX4TJZyXypB8NcxdPvPNwy5lOTxnlkrK13EiQzyTPugRSnj6cBgKg==" }, "emitter-listener": { "version": "1.1.2", @@ -12507,8 +13187,7 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, "escape-goat": { "version": "2.1.1", @@ -12622,11 +13301,11 @@ "integrity": "sha512-KTbrd3CAZ0cFceJEZr1e5uiMasabeCpXq1/5uvVxDl53o4jXJHnltasQoj2NkzrxD8hU9kdwjnMhoir/7nNx/A==" }, "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", "requires": { - "type": "^2.0.0" + "type": "^2.5.0" }, "dependencies": { "type": { @@ -12940,8 +13619,7 @@ "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" }, "get-caller-file": { "version": "2.0.5", @@ -13068,8 +13746,7 @@ "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "got": { "version": "9.6.0", @@ -13154,35 +13831,6 @@ "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", "dev": true }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, "html-encoding-sniffer": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", @@ -14244,16 +14892,10 @@ "pako": "^0.2.5" } }, - "js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "3.14.1", @@ -14330,8 +14972,7 @@ "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, "json-buffer": { "version": "3.0.0", @@ -14354,14 +14995,12 @@ "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "optional": true + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "json5": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, "requires": { "minimist": "^1.2.5" } @@ -14456,6 +15095,11 @@ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" + }, "log-driver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", @@ -14520,16 +15164,6 @@ "integrity": "sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA==", "dev": true }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -14542,6 +15176,11 @@ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, + "micro-base": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/micro-base/-/micro-base-0.10.2.tgz", + "integrity": "sha512-lqqJrT7lfJtDmmiQ4zRLZuIJBk96t0RAc5pCrrWpL9zDeH5i/SUL85mku9HqzTI/OCZ8EQ3aicbMW+eK5Nyu5w==" + }, "micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", @@ -14576,16 +15215,6 @@ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", "dev": true }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" - }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -14621,6 +15250,11 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" }, + "mock-socket": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.1.2.tgz", + "integrity": "sha512-XKZkCnQ9ISOlTnaPg4LYYSMj7+6i78HyadYzLA5JM4465ibLdjappZD9Csnqc3Tfzep/eEK/LCJ29BTaLHoB1A==" + }, "module-details-from-path": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", @@ -14701,15 +15335,65 @@ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" }, + "nock": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.2.tgz", + "integrity": "sha512-PcBHuvl9i6zfaJ50A7LS55oU+nFLv8htXIhffJO+FxyfibdZ4jEvd9kTuvkrJireBFIGMZ+oUIRpMK5gU9h//g==", + "requires": { + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash.set": "^4.3.2", + "propagate": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "node-addon-api": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" }, "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } }, "node-gyp": { "version": "3.8.0", @@ -14776,9 +15460,9 @@ } }, "node-gyp-build": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", - "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", + "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==" }, "node-int64": { "version": "0.4.0", @@ -14858,8 +15542,7 @@ "node-releases": { "version": "1.1.77", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", - "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==", - "dev": true + "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==" }, "nodejs-fs-utils": { "version": "1.2.5", @@ -15257,8 +15940,7 @@ "picocolors": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" }, "picomatch": { "version": "2.3.0", @@ -15544,6 +16226,11 @@ "sisteransi": "^1.0.5" } }, + "propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==" + }, "proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz", @@ -15664,16 +16351,6 @@ "mute-stream": "~0.0.4" } }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, "readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -15888,15 +16565,6 @@ "glob": "^7.1.3" } }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, "run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -15917,11 +16585,11 @@ "integrity": "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==" }, "rxjs": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.3.0.tgz", - "integrity": "sha512-p2yuGIg9S1epc3vrjKf6iVb3RCaAYjYskkO+jHIaV0IjOPlJop4UnodOoFb2xeNwlguqLYvGw1b1McillYb5Gw==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.2.tgz", + "integrity": "sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w==", "requires": { - "tslib": "~2.1.0" + "tslib": "^2.1.0" } }, "safe-buffer": { @@ -15948,11 +16616,6 @@ "xmlchars": "^2.2.0" } }, - "scryptsy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-2.1.0.tgz", - "integrity": "sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w==" - }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -16003,15 +16666,6 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -16195,14 +16849,6 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, "string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -16344,8 +16990,7 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, "to-readable-stream": { "version": "1.0.0", @@ -16690,11 +17335,11 @@ } }, "utf-8-validate": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.5.tgz", - "integrity": "sha512-+pnxRYsS/axEpkrrEpzYfNZGXp0IjC/9RIxwM5gntY4Koi8SHmUGSfxfWqxZdRxrtaoVstuOzUp/rbs3JSPELQ==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.8.tgz", + "integrity": "sha512-k4dW/Qja1BYDl2qD4tOMB9PFVha/UJtxTc1cXYOe3WwA/2m0Yn4qB7wLMpJyLJ/7DR0XnTut3HsCSzDT4ZvKgA==", "requires": { - "node-gyp-build": "^4.2.0" + "node-gyp-build": "^4.3.0" } }, "util": { @@ -16964,14 +17609,6 @@ "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=" }, - "xxhashjs": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", - "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", - "requires": { - "cuint": "^0.2.2" - } - }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -16998,18 +17635,46 @@ } }, "yargs": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", - "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", + "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", "dev": true, "requires": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.0.0" + }, + "dependencies": { + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", + "dev": true + } } }, "yargs-parser": { diff --git a/scripts/cli/package.json b/scripts/cli/package.json index 69f2fc46fa..9c6a29bed5 100644 --- a/scripts/cli/package.json +++ b/scripts/cli/package.json @@ -7,20 +7,14 @@ "bin": { "polymesh-cli": "./dist/polymesh_cli.js" }, - "resolutions": { - "@polkadot/keyring": "6.9.1", - "@polkadot/util-crypto": "6.9.1", - "@polkadot/util": "6.9.1" - }, "scripts": { "start": "npm run build", "create": "npm run build && npm run test", "build": "npm run clean:some && tsc -p .", - "build:types": "npm run generate:polymesh-types && npm run generate:polymesh-meta && npm run generate:defs && npm run generate:meta", - "generate:defs": "ts-node --skip-project node_modules/.bin/polkadot-types-from-defs --package polymesh-typegen/interfaces --input ./src/interfaces", + "build:types": "npm run generate:polymesh-meta && npm run generate:defs && npm run generate:meta", + "generate:defs": "ts-node --skip-project node_modules/.bin/polkadot-types-from-defs --package polymesh-typegen/interfaces --input ./src/interfaces --endpoint ./polymesh-meta.json", "generate:meta": "ts-node --skip-project node_modules/.bin/polkadot-types-from-chain --package polymesh-typegen/interfaces --endpoint ./polymesh-meta.json --output ./src/interfaces", "generate:polymesh-meta": "./chain_metadata.sh", - "generate:polymesh-types": "node ./util/updateTypes.js", "lint": "tsc --noEmit --pretty", "clean:some": "rm -rf ./dist ./docs", "clean:all": "rm -rf ./node_modules package-lock.json ./dist ./docs", @@ -51,15 +45,16 @@ "schema_test": "./util/schema_test.sh", "offchain_worker_test": "node ./dist/util/offchain_worker_test.js", "polyx_balances": "node ./util/userBalancePOLYX.js", - "test": "npm run clear_cache && jest --runInBand --silent && ./test.sh", + "test": "npm run clear_cache && jest --runInBand --silent && ./util/schema_test.sh", "clear_cache": "jest --clearCache" }, "author": "Polymath Network", "license": "UNLICENSED", "dependencies": { - "@polkadot/api": "5.0.1", - "@polkadot/util": "^7.0.3", - "@polkadot/util-crypto": "^7.0.3", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@polkadot/api": "7.6.1", + "@polkadot/util": "^8.3.3", + "@polkadot/util-crypto": "^8.3.3", "@types/sqlite3": "^3.1.7", "chai": "4.2.0", "chalk": "4.1.0", @@ -82,7 +77,7 @@ }, "devDependencies": { "@babel/plugin-transform-modules-commonjs": "7.14.5", - "@polkadot/typegen": "5.0.1", + "@polkadot/typegen": "7.6.1", "@types/chai": "4.2.15", "@types/clear": "0.1.1", "@types/figlet": "1.2.1", diff --git a/scripts/cli/polymesh-meta.json b/scripts/cli/polymesh-meta.json index 471eb7cfc6..c12e065843 100644 --- a/scripts/cli/polymesh-meta.json +++ b/scripts/cli/polymesh-meta.json @@ -1 +1 @@ -{"jsonrpc":"2.0","result":"0x6d6574610cbc1853797374656d011853797374656d401c4163636f756e7401010230543a3a4163636f756e744964944163636f756e74496e666f3c543a3a496e6465782c20543a3a4163636f756e74446174613e0031010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e8205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e3845787472696e736963436f756e7400000c753332040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e2c426c6f636b576569676874010038436f6e73756d6564576569676874600000000000000000000000000000000000000000000000000488205468652063757272656e742077656967687420666f722074686520626c6f636b2e40416c6c45787472696e736963734c656e00000c753332040004410120546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e24426c6f636b4861736801010538543a3a426c6f636b4e756d6265721c543a3a48617368008000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101050c7533321c5665633c75383e000400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d626572010038543a3a426c6f636b4e756d6265721000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801001c543a3a4861736880000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e1844696765737401002c4469676573744f663c543e040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e747301008c5665633c4576656e745265636f72643c543a3a4576656e742c20543a3a486173683e3e040004a0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e284576656e74436f756e740100284576656e74496e646578100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f706963730101021c543a3a48617368845665633c28543a3a426c6f636b4e756d6265722c204576656e74496e646578293e000400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e004d01205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e484c61737452756e74696d65557067726164650000584c61737452756e74696d6555706772616465496e666f04000455012053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e545570677261646564546f553332526566436f756e74010010626f6f6c0400044d012054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e585570677261646564546f4475616c526566436f756e74010010626f6f6c04000855012054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e732074776f207479706573206f662060526566436f756e74602e2046616c736548202864656661756c7429206966206e6f742e38457865637574696f6e50686173650000145068617365040004882054686520657865637574696f6e207068617365206f662074686520626c6f636b2e01242866696c6c5f626c6f636b04185f726174696f1c50657262696c6c040901204120646973706174636820746861742077696c6c2066696c6c2074686520626c6f636b2077656967687420757020746f2074686520676976656e20726174696f2e1872656d61726b041c5f72656d61726b1c5665633c75383e1c6c204d616b6520736f6d65206f6e2d636861696e2072656d61726b2e002c2023203c7765696768743e24202d20604f28312960e0202d2042617365205765696768743a20302e36363520c2b5732c20696e646570656e64656e74206f662072656d61726b206c656e6774682e50202d204e6f204442206f7065726174696f6e732e302023203c2f7765696768743e387365745f686561705f7061676573041470616765730c75363420fc2053657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e002c2023203c7765696768743e24202d20604f283129604c202d20312073746f726167652077726974652e64202d2042617365205765696768743a20312e34303520c2b57360202d203120777269746520746f20484541505f5041474553302023203c2f7765696768743e207365745f636f64650410636f64651c5665633c75383e28682053657420746865206e65772072756e74696d6520636f64652e002c2023203c7765696768743e3501202d20604f2843202b2053296020776865726520604360206c656e677468206f662060636f64656020616e642060536020636f6d706c6578697479206f66206063616e5f7365745f636f64656088202d20312073746f726167652077726974652028636f64656320604f28432960292e7901202d20312063616c6c20746f206063616e5f7365745f636f6465603a20604f28532960202863616c6c73206073705f696f3a3a6d6973633a3a72756e74696d655f76657273696f6e6020776869636820697320657870656e73697665292e2c202d2031206576656e742e7d012054686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652c206275742067656e6572616c6c792074686973206973207665727920657870656e736976652e902057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e302023203c2f7765696768743e5c7365745f636f64655f776974686f75745f636865636b730410636f64651c5665633c75383e201d012053657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e002c2023203c7765696768743e90202d20604f2843296020776865726520604360206c656e677468206f662060636f64656088202d20312073746f726167652077726974652028636f64656320604f28432960292e2c202d2031206576656e742e75012054686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652e2057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e302023203c2f7765696768743e5c7365745f6368616e6765735f747269655f636f6e666967044c6368616e6765735f747269655f636f6e666967804f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e28a02053657420746865206e6577206368616e676573207472696520636f6e66696775726174696f6e2e002c2023203c7765696768743e24202d20604f28312960b0202d20312073746f72616765207772697465206f722064656c6574652028636f64656320604f28312960292ed8202d20312063616c6c20746f20606465706f7369745f6c6f67603a20557365732060617070656e6460204150492c20736f204f28312964202d2042617365205765696768743a20372e32313820c2b57334202d204442205765696768743aa820202020202d205772697465733a204368616e67657320547269652c2053797374656d20446967657374302023203c2f7765696768743e2c7365745f73746f7261676504146974656d73345665633c4b657956616c75653e206c2053657420736f6d65206974656d73206f662073746f726167652e002c2023203c7765696768743e94202d20604f2849296020776865726520604960206c656e677468206f6620606974656d73607c202d206049602073746f72616765207772697465732028604f28312960292e74202d2042617365205765696768743a20302e353638202a206920c2b57368202d205772697465733a204e756d626572206f66206974656d73302023203c2f7765696768743e306b696c6c5f73746f7261676504106b657973205665633c4b65793e2078204b696c6c20736f6d65206974656d732066726f6d2073746f726167652e002c2023203c7765696768743efc202d20604f28494b296020776865726520604960206c656e677468206f6620606b6579736020616e6420604b60206c656e677468206f66206f6e65206b657964202d206049602073746f726167652064656c6574696f6e732e70202d2042617365205765696768743a202e333738202a206920c2b57368202d205772697465733a204e756d626572206f66206974656d73302023203c2f7765696768743e2c6b696c6c5f70726566697808187072656669780c4b6579205f7375626b6579730c7533322c1501204b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e003d01202a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e64657241012074686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e002c2023203c7765696768743edc202d20604f285029602077686572652060506020616d6f756e74206f66206b65797320776974682070726566697820607072656669786064202d206050602073746f726167652064656c6574696f6e732e74202d2042617365205765696768743a20302e383334202a205020c2b57380202d205772697465733a204e756d626572206f66207375626b657973202b2031302023203c2f7765696768743e01144045787472696e7369635375636365737304304469737061746368496e666f04b820416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e205c5b696e666f5c5d3c45787472696e7369634661696c6564083444697370617463684572726f72304469737061746368496e666f049420416e2065787472696e736963206661696c65642e205c5b6572726f722c20696e666f5c5d2c436f64655570646174656400045420603a636f6465602077617320757064617465642e284e65774163636f756e7404244163636f756e744964047c2041206e6577205c5b6163636f756e745c5d2077617320637265617465642e344b696c6c65644163636f756e7404244163636f756e744964046c20416e205c5b6163636f756e745c5d20776173207265617065642e1830426c6f636b57656967687473506c696d6974733a3a426c6f636b57656967687473850100c817a80400000000204aa9d10100008036be26000000000180914b872e010000010098f73e5d0100000100000000000000008036be26000000000180199ef1a20100000100204aa9d1010000010088526a740000008036be260000000000000004d020426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e2c426c6f636b4c656e6774684c6c696d6974733a3a426c6f636b4c656e67746830000078000000a0000000a00004a820546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e38426c6f636b48617368436f756e7438543a3a426c6f636b4e756d62657210fa000000045501204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e2044625765696768743c52756e74696d6544625765696768744080f0fa020000000000c2eb0b000000000409012054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e1c56657273696f6e3852756e74696d6556657273696f6e0d0430706f6c796d6573685f64657630706f6c796d6573685f64657601000000b90b00000000000048df6acb689907609b0300000037e397fc7c91f5e40100000040fe3ad401f8959a04000000d2bc9897eed08f1502000000f78b278be53f454c02000000ed99c5acb25eedf502000000cbca25e39f14238702000000687ad44ad37f03c201000000bc9d89904f5b923f0100000037c8bb1350a9a2a801000000ab3c0572291feb8b0100000018ef58a3b67ba77001000000329342994773047f01000000001a0b29f17d01f401000000f28e8080b6e2dfd001000000bb6ba9053c5c9d78010000009f242c2c886f3fce01000000595ac34c5ea1f5fe01000000020000000484204765742074686520636861696e27732063757272656e742076657273696f6e2e2853533538507265666978087538042a14a8205468652064657369676e61746564205353383520707265666978206f66207468697320636861696e2e0039012054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e20697331012074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f662069742061737020616e206964656e746966696572206f662074686520636861696e2e143c496e76616c6964537065634e616d6508150120546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d655420616e6420746865206e65772072756e74696d652e685370656356657273696f6e4e65656473546f496e637265617365084501205468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d655420616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e0cf0204661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e000d01204569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e4c4e6f6e44656661756c74436f6d706f7369746504010120537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e3c4e6f6e5a65726f526566436f756e740439012054686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e001042616265011042616265342845706f6368496e64657801000c75363420000000000000000004542043757272656e742065706f636820696e6465782e2c417574686f72697469657301009c5665633c28417574686f7269747949642c2042616265417574686f72697479576569676874293e0400046c2043757272656e742065706f636820617574686f7269746965732e2c47656e65736973536c6f74010010536c6f7420000000000000000008f82054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e205468697320697320309020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2c43757272656e74536c6f74010010536c6f7420000000000000000004542043757272656e7420736c6f74206e756d6265722e2852616e646f6d6e6573730100587363686e6f72726b656c3a3a52616e646f6d6e65737380000000000000000000000000000000000000000000000000000000000000000028b8205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e002c20232053656375726974790005012054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061f8206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e7915012063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d6265727320746861742074686973150120286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e206265050120757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e0d01206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e3c4e65787445706f6368436f6e6669670000504e657874436f6e66696744657363726970746f7204000498204e6578742065706f636820636f6e66696775726174696f6e2c206966206368616e6765642e384e65787452616e646f6d6e6573730100587363686e6f72726b656c3a3a52616e646f6d6e657373800000000000000000000000000000000000000000000000000000000000000000045c204e6578742065706f63682072616e646f6d6e6573732e3c4e657874417574686f72697469657301009c5665633c28417574686f7269747949642c2042616265417574686f72697479576569676874293e04000460204e6578742065706f636820617574686f7269746965732e305365676d656e74496e64657801000c7533321000000000247c2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e00f4205765206d616b6520612074726164656f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e01012057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f942060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e00ec204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e090120576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572791c2065706f63682e44556e646572436f6e737472756374696f6e0101050c7533326c5665633c7363686e6f72726b656c3a3a52616e646f6d6e6573733e0004000415012054574f582d4e4f54453a20605365676d656e74496e6465786020697320616e20696e6372656173696e6720696e74656765722c20736f2074686973206973206f6b61792e2c496e697469616c697a656400003c4d6179626552616e646f6d6e65737304000801012054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d65601d01206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e4c417574686f7256726652616e646f6d6e65737301003c4d6179626552616e646f6d6e65737304000c5d012054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e29207468617420696e636c756465732074686520565246206f75747075742067656e6572617465645101206174207468697320626c6f636b2e2054686973206669656c642073686f756c6420616c7761797320626520706f70756c6174656420647572696e6720626c6f636b2070726f63657373696e6720756e6c6573731901207365636f6e6461727920706c61696e20736c6f74732061726520656e61626c65642028776869636820646f6e277420636f6e7461696e206120565246206f7574707574292e204c6174656e657373010038543a3a426c6f636b4e756d626572100000000014d820486f77206c617465207468652063757272656e7420626c6f636b20697320636f6d706172656420746f2069747320706172656e742e001501205468697320656e74727920697320706f70756c617465642061732070617274206f6620626c6f636b20657865637574696f6e20616e6420697320636c65616e65642075701101206f6e20626c6f636b2066696e616c697a6174696f6e2e205175657279696e6720746869732073746f7261676520656e747279206f757473696465206f6620626c6f636bb020657865637574696f6e20636f6e746578742073686f756c6420616c77617973207969656c64207a65726f2e01084c7265706f72745f65717569766f636174696f6e084865717569766f636174696f6e5f70726f6f667045717569766f636174696f6e50726f6f663c543a3a4865616465723e3c6b65795f6f776e65725f70726f6f6640543a3a4b65794f776e657250726f6f66100d01205265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c207665726966790901207468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66110120616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c34206265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e6564084865717569766f636174696f6e5f70726f6f667045717569766f636174696f6e50726f6f663c543a3a4865616465723e3c6b65795f6f776e65725f70726f6f6640543a3a4b65794f776e657250726f6f66200d01205265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c207665726966790901207468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66110120616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c34206265207265706f727465642e110120546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c79190120626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c206173207375636819012069662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e28207265706f727465722e00083445706f63684475726174696f6e0c753634202c01000000000000140d0120546865206e756d626572206f66202a2a736c6f74732a2a207468617420616e2065706f63682074616b65732e20576520636f75706c652073657373696f6e7320746ffc2065706f6368732c20692e652e2077652073746172742061206e65772073657373696f6e206f6e636520746865206e65772065706f636820626567696e732e0101204e4f54453a2043757272656e746c79206974206973206e6f7420706f737369626c6520746f206368616e6765207468652065706f6368206475726174696f6e09012061667465722074686520636861696e2068617320737461727465642e20417474656d7074696e6720746f20646f20736f2077696c6c20627269636b20626c6f636b302070726f64756374696f6e2e444578706563746564426c6f636b54696d6524543a3a4d6f6d656e7420701700000000000014050120546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e67110120626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f75740501207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f740901206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473a0207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e00012454696d657374616d70012454696d657374616d70080c4e6f77010024543a3a4d6f6d656e7420000000000000000004902043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e24446964557064617465010010626f6f6c040004b420446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f01040c736574040c6e6f7748436f6d706163743c543a3a4d6f6d656e743e3c5820536574207468652063757272656e742074696d652e00590120546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6ed82070686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e004501205468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e74207370656369666965642062794420604d696e696d756d506572696f64602e00d820546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e002c2023203c7765696768743e3501202d20604f2831296020284e6f7465207468617420696d706c656d656e746174696f6e73206f6620604f6e54696d657374616d7053657460206d75737420616c736f20626520604f2831296029a101202d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202862656361757365206f6620604469645570646174653a3a74616b656020696e20606f6e5f66696e616c697a656029d8202d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f736574602e204d75737420626520604f283129602e302023203c2f7765696768743e0004344d696e696d756d506572696f6424543a3a4d6f6d656e7420b80b00000000000010690120546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a20706572696f64690120746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c2067656e6572616c6c79650120776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c20626520646f75626c6520746869737020706572696f64206f6e2064656661756c742073657474696e67732e00021c496e6469636573011c496e646963657304204163636f756e74730001023c543a3a4163636f756e74496e6465788828543a3a4163636f756e7449642c2042616c616e63654f663c543e2c20626f6f6c29000400048820546865206c6f6f6b75702066726f6d20696e64657820746f206163636f756e742e011414636c61696d0414696e6465783c543a3a4163636f756e74496e646578489c2041737369676e20616e2070726576696f75736c7920756e61737369676e656420696e6465782e00e0205061796d656e743a20604465706f736974602069732072657365727665642066726f6d207468652073656e646572206163636f756e742e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e00f4202d2060696e646578603a2074686520696e64657820746f20626520636c61696d65642e2054686973206d757374206e6f7420626520696e207573652e009420456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002c2023203c7765696768743e28202d20604f283129602e9c202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e64202d204f6e652072657365727665206f7065726174696f6e2e34202d204f6e65206576656e742e50202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d94202d204442205765696768743a203120526561642f577269746520284163636f756e747329302023203c2f7765696768743e207472616e73666572080c6e657730543a3a4163636f756e74496414696e6465783c543a3a4163636f756e74496e6465785061012041737369676e20616e20696e64657820616c7265616479206f776e6564206279207468652073656e64657220746f20616e6f74686572206163636f756e742e205468652062616c616e6365207265736572766174696f6ebc206973206566666563746976656c79207472616e7366657272656420746f20746865206e6577206163636f756e742e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002901202d2060696e646578603a2074686520696e64657820746f2062652072652d61737369676e65642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e6101202d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e009420456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002c2023203c7765696768743e28202d20604f283129602e9c202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e68202d204f6e65207472616e73666572206f7065726174696f6e2e34202d204f6e65206576656e742e50202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d34202d204442205765696768743ae4202020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e7429e8202020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e7429302023203c2f7765696768743e10667265650414696e6465783c543a3a4163636f756e74496e6465784898204672656520757020616e20696e646578206f776e6564206279207468652073656e6465722e006101205061796d656e743a20416e792070726576696f7573206465706f73697420706c6163656420666f722074686520696e64657820697320756e726573657276656420696e207468652073656e646572206163636f756e742e00590120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206f776e2074686520696e6465782e001101202d2060696e646578603a2074686520696e64657820746f2062652066726565642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e008820456d6974732060496e646578467265656460206966207375636365737366756c2e002c2023203c7765696768743e28202d20604f283129602e9c202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e64202d204f6e652072657365727665206f7065726174696f6e2e34202d204f6e65206576656e742e50202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d94202d204442205765696768743a203120526561642f577269746520284163636f756e747329302023203c2f7765696768743e38666f7263655f7472616e736665720c0c6e657730543a3a4163636f756e74496414696e6465783c543a3a4163636f756e74496e64657818667265657a6510626f6f6c54590120466f72636520616e20696e64657820746f20616e206163636f756e742e205468697320646f65736e277420726571756972652061206465706f7369742e2049662074686520696e64657820697320616c7265616479ec2068656c642c207468656e20616e79206465706f736974206973207265696d62757273656420746f206974732063757272656e74206f776e65722e00c820546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e00a8202d2060696e646578603a2074686520696e64657820746f206265202872652d2961737369676e65642e6101202d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e4501202d2060667265657a65603a2069662073657420746f206074727565602c2077696c6c20667265657a652074686520696e64657820736f2069742063616e6e6f74206265207472616e736665727265642e009420456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002c2023203c7765696768743e28202d20604f283129602e9c202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e7c202d20557020746f206f6e652072657365727665206f7065726174696f6e2e34202d204f6e65206576656e742e50202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d34202d204442205765696768743af8202020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e657229fc202020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e657229302023203c2f7765696768743e18667265657a650414696e6465783c543a3a4163636f756e74496e64657844690120467265657a6520616e20696e64657820736f2069742077696c6c20616c7761797320706f696e7420746f207468652073656e646572206163636f756e742e205468697320636f6e73756d657320746865206465706f7369742e005d0120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d7573742068617665206170206e6f6e2d66726f7a656e206163636f756e742060696e646578602e00b0202d2060696e646578603a2074686520696e64657820746f2062652066726f7a656e20696e20706c6163652e008c20456d6974732060496e64657846726f7a656e60206966207375636365737366756c2e002c2023203c7765696768743e28202d20604f283129602e9c202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e74202d20557020746f206f6e6520736c617368206f7065726174696f6e2e34202d204f6e65206576656e742e50202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d94202d204442205765696768743a203120526561642f577269746520284163636f756e747329302023203c2f7765696768743e010c34496e64657841737369676e656408244163636f756e744964304163636f756e74496e64657804b42041206163636f756e7420696e646578207761732061737369676e65642e205c5b696e6465782c2077686f5c5d28496e646578467265656404304163636f756e74496e64657804e82041206163636f756e7420696e64657820686173206265656e2066726565642075702028756e61737369676e6564292e205c5b696e6465785c5d2c496e64657846726f7a656e08304163636f756e74496e646578244163636f756e7449640429012041206163636f756e7420696e64657820686173206265656e2066726f7a656e20746f206974732063757272656e74206163636f756e742049442e205c5b696e6465782c2077686f5c5d041c4465706f7369743042616c616e63654f663c543e4040420f0000000000000000000000000004ac20546865206465706f736974206e656564656420666f7220726573657276696e6720616e20696e6465782e000328417574686f72736869700128417574686f72736869700c18556e636c65730100e85665633c556e636c65456e7472794974656d3c543a3a426c6f636b4e756d6265722c20543a3a486173682c20543a3a4163636f756e7449643e3e0400041c20556e636c657318417574686f72000030543a3a4163636f756e7449640400046420417574686f72206f662063757272656e7420626c6f636b2e30446964536574556e636c6573010010626f6f6c040004bc205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e0104287365745f756e636c657304286e65775f756e636c6573385665633c543a3a4865616465723e04642050726f76696465206120736574206f6620756e636c65732e00001c48496e76616c6964556e636c65506172656e74048c2054686520756e636c6520706172656e74206e6f7420696e2074686520636861696e2e40556e636c6573416c7265616479536574048420556e636c657320616c72656164792073657420696e2074686520626c6f636b2e34546f6f4d616e79556e636c6573044420546f6f206d616e7920756e636c65732e3047656e65736973556e636c6504582054686520756e636c652069732067656e657369732e30546f6f48696768556e636c6504802054686520756e636c6520697320746f6f206869676820696e20636861696e2e50556e636c65416c7265616479496e636c75646564047c2054686520756e636c6520697320616c726561647920696e636c756465642e204f6c64556e636c6504b82054686520756e636c652069736e277420726563656e7420656e6f75676820746f20626520696e636c756465642e042042616c616e636573012042616c616e6365730834546f74616c49737375616e636501001c42616c616e6365400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e144c6f636b7301010230543a3a4163636f756e744964645665633c42616c616e63654c6f636b3c42616c616e63653e3e00040008b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e0118207472616e736665720810646573748c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263651476616c756540436f6d706163743c42616c616e63653e58d8205472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e00090120607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e21012049742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e00190120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e002c2023203c7765696768743e3101202d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72cc202020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e6901202d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e004c2052656c617465642066756e6374696f6e733a0051012020202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e2d012020202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c206361757365d420202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e88202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d4501202d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429e0202d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e1501202d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e302023203c2f7765696768743e487472616e736665725f776974685f6d656d6f0c10646573748c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263651476616c756540436f6d706163743c42616c616e63653e106d656d6f304f7074696f6e3c4d656d6f3e200101205472616e7366657220746865206e61746976652063757272656e63792077697468207468652068656c70206f66206964656e74696669657220737472696e67f020746869732066756e6374696f6e616c6974792063616e2068656c7020746f20646966666572656e746961746520746865207472616e73666572732e002c2023203c7765696768743e4501202d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429e0202d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e1501202d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e302023203c2f7765696768743e906465706f7369745f626c6f636b5f7265776172645f726573657276655f62616c616e6365041476616c756540436f6d706163743c42616c616e63653e04e0204d6f766520736f6d6520504f4c59582066726f6d2062616c616e6365206f662073656c6620746f2062616c616e6365206f66204252522e2c7365745f62616c616e63650c0c77686f8c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365206e65775f6672656540436f6d706163743c42616c616e63653e306e65775f726573657276656440436f6d706163743c42616c616e63653e189420536574207468652062616c616e636573206f66206120676976656e206163636f756e742e00210120546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c090120616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e00b420546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e38666f7263655f7472616e736665720c18736f757263658c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636510646573748c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263651476616c756540436f6d706163743c42616c616e63653e1c51012045786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d61792062652c207370656369666965642e002c2023203c7765696768743e4101202d2053616d65206173207472616e736665722c20627574206164646974696f6e616c207265616420616e6420777269746520626563617573652074686520736f75726365206163636f756e74206973902020206e6f7420617373756d656420746f20626520696e20746865206f7665726c61792e302023203c2f7765696768743e506275726e5f6163636f756e745f62616c616e63650418616d6f756e741c42616c616e6365042d01204275726e732074686520676976656e20616d6f756e74206f6620746f6b656e732066726f6d207468652063616c6c6572277320667265652c20756e6c6f636b65642062616c616e63652e011c1c456e646f7765640c484f7074696f6e3c4964656e7469747949643e244163636f756e7449641c42616c616e636504350120416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e205c5b6469642c206163636f756e742c20667265655f62616c616e63655d205472616e7366657218484f7074696f6e3c4964656e7469747949643e244163636f756e744964484f7074696f6e3c4964656e7469747949643e244163636f756e7449641c42616c616e6365304f7074696f6e3c4d656d6f3e04f8205472616e7366657220737563636565646564202866726f6d5f6469642c2066726f6d2c20746f5f6469642c20746f2c2076616c75652c206d656d6f292e2842616c616e636553657410284964656e746974794964244163636f756e7449641c42616c616e63651c42616c616e636504d820412062616c616e6365207761732073657420627920726f6f7420286469642c2077686f2c20667265652c207265736572766564292e504163636f756e7442616c616e63654275726e65640c284964656e746974794964244163636f756e7449641c42616c616e636508410120546865206163636f756e7420616e642074686520616d6f756e74206f6620756e6c6f636b65642062616c616e6365206f662074686174206163636f756e74207468617420776173206275726e65642e90202863616c6c65722049642c2063616c6c6572206163636f756e742c20616d6f756e742920526573657276656408244163636f756e7449641c42616c616e6365041d0120536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e205c5b77686f2c2076616c75655d28556e726573657276656408244163636f756e7449641c42616c616e636504250120536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e205c5b77686f2c2076616c75655d4852657365727665526570617472696174656410244163636f756e744964244163636f756e7449641c42616c616e6365185374617475730c510120536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742edc2046696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652ea4205c5b66726f6d2c20746f2c2062616c616e63652c2064657374696e6174696f6e5f7374617475735d04484578697374656e7469616c4465706f7369741c42616c616e6365400000000000000000000000000000000004d420546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e14544c69717569646974795265737472696374696f6e7304c8204163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c204f766572666c6f77047420476f7420616e206f766572666c6f7720616674657220616464696e674c496e73756666696369656e7442616c616e636504782042616c616e636520746f6f206c6f7720746f2073656e642076616c7565484578697374656e7469616c4465706f73697404ec2056616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369744852656365697665724364644d697373696e67048c20526563656976657220646f6573206e6f74206861766520612076616c69642043444405485472616e73616374696f6e5061796d656e7401485472616e73616374696f6e5061796d656e7408444e6578744665654d756c7469706c6965720100284d756c7469706c69657240000064a7b3b6e00d0000000000000000003853746f7261676556657273696f6e01002052656c6561736573040000000008485472616e73616374696f6e427974654665653042616c616e63654f663c543e4064000000000000000000000000000000040d01205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e2c576569676874546f466565a45665633c576569676874546f466565436f656666696369656e743c42616c616e63654f663c543e3e3e5c040000000000000000000000000000000049b400000001040d012054686520706f6c796e6f6d69616c2074686174206973206170706c69656420696e206f7264657220746f20646572697665206665652066726f6d207765696768742e0006204964656e7469747901204964656e7469747938284469645265636f726473010106284964656e7469747949645c4469645265636f72643c543a3a4163636f756e7449643e0084000000000000000000000000000000000000000000000000000000000000000000045420444944202d3e206964656e7469747920696e666f2c497344696446726f7a656e010106284964656e74697479496410626f6f6c00040004e420444944202d3e20626f6f6c207468617420696e64696361746573206966207365636f6e64617279206b657973206172652066726f7a656e2e2843757272656e744469640000284964656e746974794964040004e02049742073746f726573207468652063757272656e74206964656e7469747920666f722063757272656e74207472616e73616374696f6e2e3043757272656e745061796572000030543a3a4163636f756e74496404000401012049742073746f726573207468652063757272656e74206761732066656520706179657220666f72207468652063757272656e74207472616e73616374696f6e18436c61696d730102052c436c61696d3173744b65792c436c61696d326e644b6579344964656e74697479436c61696d02c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a04f020285461726765742049442c20636c61696d20747970652920286973737565722c73636f706529202d3e204173736f63696174656420636c61696d73404b6579546f4964656e7469747949647301010530543a3a4163636f756e744964284964656e7469747949640080000000000000000000000000000000000000000000000000000000000000000000444d756c7469507572706f73654e6f6e636501000c75363420000000000000000004bc204e6f6e636520746f20656e7375726520756e6971756520616374696f6e732e207374617274732066726f6d20312e684f6666436861696e417574686f72697a6174696f6e4e6f6e6365010106284964656e74697479496448417574686f72697a6174696f6e4e6f6e63650020000000000000000004c820417574686f72697a6174696f6e206e6f6e636520706572204964656e746974792e20496e697469616c6c7920697320302e38417574686f72697a6174696f6e730002025c5369676e61746f72793c543a3a4163636f756e7449643e0c75363498417574686f72697a6174696f6e3c543a3a4163636f756e7449642c20543a3a4d6f6d656e743e05040004b020416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792f6b6579206861734c417574686f72697a6174696f6e73476976656e010206284964656e7469747949640c7536345c5369676e61746f72793c543a3a4163636f756e7449643e0584000000000000000000000000000000000000000000000000000000000000000000044d0120416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792068617320676976656e2e2028417574686f72697a65722c20617574685f6964202d3e20617574686f72697a6564296c43646441757468466f724d61737465724b6579526f746174696f6e010010626f6f6c0400086501204f62736f6c657465642073746f72616765207661726961626c652073757065726365646564206279206043646441757468466f725072696d6172794b6579526f746174696f6e602e204974206973206b65707420686572659820666f722074686520707572706f7365206f662073746f72616765206d6967726174696f6e2e7043646441757468466f725072696d6172794b6579526f746174696f6e010010626f6f6c0400085d01204120636f6e66696720666c616720746861742c206966207365742c20696e7374727563747320616e20617574686f72697a6174696f6e2066726f6d2061204344442070726f766964657220696e206f7264657220746f9c206368616e676520746865207072696d617279206b6579206f6620616e206964656e746974792e3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e484163636f756e744b6579526566436f756e7401010230543a3a4163636f756e7449640c753634002000000000000000001cc420486f77206d616e7920227374726f6e6722207265666572656e63657320746f20746865206163636f756e74206b65792e00fc205374726f6e67207265666572656e6365732077696c6c20626c6f636b2061206b65792066726f6d206c656176696e672069742773206964656e746974792e00cc2050616c6c657473207573696e6720227374726f6e6722207265666572656e63657320746f206163636f756e74206b6579733aac202a2052656c617965723a20466f722060757365725f6b65796020616e642060706179696e675f6b657960000158406364645f72656769737465725f64696408387461726765745f6163636f756e7430543a3a4163636f756e744964387365636f6e646172795f6b6579737c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e2cbc20526567697374657220607461726765745f6163636f756e746020776974682061206e6577204964656e746974792e00282023204661696c7572654901202d20606f726967696e602068617320746f206265206120616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65772020636c61696d732e6101202d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c7938206f6e65206964656e746974792ef8202d2045787465726e616c207365636f6e64617279206b6579732063616e206265206c696e6b656420746f206a757374206f6e65206964656e746974792e0024202320576569676874c42060375f3030305f3030305f303030202b203630305f303030202a207365636f6e646172795f6b6579732e6c656e28296054696e76616c69646174655f6364645f636c61696d730c0c636464284964656e7469747949643064697361626c655f66726f6d24543a3a4d6f6d656e7418657870697279444f7074696f6e3c543a3a4d6f6d656e743e10250120496e76616c69646174657320616e7920636c61696d2067656e6572617465642062792060636464602066726f6d206064697361626c655f66726f6d602074696d657374616d70732e00a020596f752063616e20616c736f20646566696e6520616e2065787069726174696f6e2074696d652c71012077686963682077696c6c20696e76616c696461746520616c6c20636c61696d732067656e657261746564206279207468617420606364646020616e642072656d6f766520697420617320434444206d656d6265722067726f75702e5472656d6f76655f7365636f6e646172795f6b65797304447369676e6572735f746f5f72656d6f7665705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e1cd82052656d6f76657320737065636966696564207365636f6e64617279206b657973206f662061204449442069662070726573656e742e00282023204661696c757265a42049742063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722e0024202320576569676874c420603935305f3030305f303030202b2036305f303030202a207369676e6572735f746f5f72656d6f76652e6c656e282960486163636570745f7072696d6172795f6b65790840726f746174696f6e5f617574685f69640c753634506f7074696f6e616c5f6364645f617574685f69642c4f7074696f6e3c7536343e3469012043616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e690120746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f76656429012074686973206368616e676520286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e006101205468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f726820756e6c696e6b656420746f20616e79206964656e746974792e00610120446966666572732066726f6d20726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727920696e20746861742069742077696c6c20756e6c696e6b20746865206f6c64207072696d617279206b6579a820696e7374656164206f66206c656176696e672069742061732061207365636f6e64617279206b65792e0030202320417267756d656e74732101202a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e8202a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f76696465727c726f746174655f7072696d6172795f6b65795f746f5f7365636f6e64617279081c617574685f69640c753634506f7074696f6e616c5f6364645f617574685f69642c4f7074696f6e3c7536343e3869012043616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e690120746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f7665642d012074686973206368616e67652c20286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e006101205468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f726820756e6c696e6b656420746f20616e79206964656e746974792e00650120446966666572732066726f6d206163636570745f7072696d6172795f6b657920696e20746861742069742077696c6c206c6561766520746865206f6c64207072696d617279206b65792061732061207365636f6e646172798901206b6579207769746820746865207065726d697373696f6e732073706563696669656420696e2074686520636f72726573706f6e64696e6720526f746174655072696d6172794b6579546f5365636f6e6461727920617574686f72697a6174696f6ea820696e7374656164206f6620756e6c696e6b696e6720746865206f6c64207072696d617279206b65792e0030202320417267756d656e74732101202a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e8202a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f7669646572986368616e67655f6364645f726571756972656d656e745f666f725f6d6b5f726f746174696f6e0434617574685f726571756972656410626f6f6c143901205365742069662043444420617574686f72697a6174696f6e20697320726571756972656420666f72207570646174696e67207072696d617279206b6579206f6620616e206964656e746974792e7c2043616c6c61626c652076696120726f6f742028676f7665726e616e6365290030202320417267756d656e7473d0202a2060617574685f7265717569726564602043444420417574686f72697a6174696f6e207265717569726564206f72206e6f74506a6f696e5f6964656e746974795f61735f6b6579041c617574685f69640c7536340494204a6f696e20616e206964656e746974792061732061207365636f6e64617279206b65792e546c656176655f6964656e746974795f61735f6b6579000490204c6561766520746865207365636f6e64617279206b65792773206964656e746974792e246164645f636c61696d0c18746172676574284964656e74697479496414636c61696d14436c61696d18657870697279444f7074696f6e3c543a3a4d6f6d656e743e0cc820416464732061206e657720636c61696d207265636f7264206f7220656469747320616e206578697374696e67206f6e652e00ac204f6e6c792063616c6c6564206279206469645f6973737565722773207365636f6e64617279206b65792e307265766f6b655f636c61696d0818746172676574284964656e74697479496414636c61696d14436c61696d0498204d61726b73207468652073706563696669656420636c61696d206173207265766f6b65642e607365745f7065726d697373696f6e5f746f5f7369676e657208187369676e65725c5369676e61746f72793c543a3a4163636f756e7449643e147065726d732c5065726d697373696f6e730ccc2053657473207065726d697373696f6e7320666f7220616e20737065636966696320607461726765745f6b657960206b65792e003901204f6e6c7920746865207072696d617279206b6579206f6620616e206964656e746974792069732061626c6520746f20736574207365636f6e64617279206b6579207065726d697373696f6e732e7c6c65676163795f7365745f7065726d697373696f6e5f746f5f7369676e657208187369676e65725c5369676e61746f72793c543a3a4163636f756e7449643e2c7065726d697373696f6e73444c65676163795065726d697373696f6e730c490120546869732066756e6374696f6e206973206120776f726b61726f756e6420666f722068747470733a2f2f6769746875622e636f6d2f706f6c6b61646f742d6a732f617070732f6973737565732f33363332d82049742073657473207065726d697373696f6e7320666f7220616e20737065636966696320607461726765745f6b657960206b65792e3901204f6e6c7920746865207072696d617279206b6579206f6620616e206964656e746974792069732061626c6520746f20736574207365636f6e64617279206b6579207065726d697373696f6e732e54667265657a655f7365636f6e646172795f6b6579730010c82049742064697361626c657320616c6c207365636f6e64617279206b657973206174206064696460206964656e746974792e00242023204572726f7273005c756e667265657a655f7365636f6e646172795f6b6579730004e02052652d656e61626c657320616c6c207365636f6e64617279206b657973206f66207468652063616c6c65722773206964656e746974792e446164645f617574686f72697a6174696f6e0c187461726765745c5369676e61746f72793c543a3a4163636f756e7449643e10646174617c417574686f72697a6174696f6e446174613c543a3a4163636f756e7449643e18657870697279444f7074696f6e3c543a3a4d6f6d656e743e045c204164647320616e20617574686f72697a6174696f6e2e5072656d6f76655f617574686f72697a6174696f6e0c187461726765745c5369676e61746f72793c543a3a4163636f756e7449643e1c617574685f69640c753634445f617574685f6973737565725f7061797310626f6f6c08682052656d6f76657320616e20617574686f72697a6174696f6e2e7901205f617574685f6973737565725f706179732064657465726d696e657320776865746865722074686520697373756572206f662074686520617574686f7269736174696f6e207061797320746865207472616e73616374696f6e20666565946164645f7365636f6e646172795f6b6579735f776974685f617574686f72697a6174696f6e083c6164646974696f6e616c5f6b6579739c5665633c5365636f6e646172794b657957697468417574683c543a3a4163636f756e7449643e3e28657870697265735f617424543a3a4d6f6d656e7430c02049742061646473207365636f6e64617279206b65797320746f20746172676574206964656e7469747920606964602e3d01204b65797320617265206469726563746c7920616464656420746f206964656e7469747920626563617573652065616368206f66207468656d2068617320616e20617574686f72697a6174696f6e2e002c20417267756d656e74733ab420202020202d20606f726967696e60205072696d617279206b6579206f662060696460206964656e746974792ef020202020202d2060696460204964656e74697479207768657265206e6577207365636f6e64617279206b6579732077696c6c2062652061646465642e710120202020202d20606164646974696f6e616c5f6b65797360204e6577207365636f6e64617279206974656d732028616e6420746865697220617574686f72697a6174696f6e20646174612920746f2061646420746f207461726765743820202020206964656e746974792e0020204661696c757265bc20202020202d2049742063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722ed420202020202d204b6579732073686f756c642062652061626c6520746f206c696e6b656420746f20616e79206964656e746974792e746164645f696e766573746f725f756e697175656e6573735f636c61696d1018746172676574284964656e74697479496414636c61696d14436c61696d1470726f6f664c496e766573746f725a4b50726f6f664461746118657870697279444f7074696f6e3c543a3a4d6f6d656e743e4c0d01204164642060436c61696d3a3a496e766573746f72556e697175656e6573736020636c61696d20666f72206120676976656e20746172676574206964656e746974792e002c2023203c7765696768743e45012020576569676874206f662074686520746869732065787472696e73696320697320646570656e64206f6e2074686520636f6d7075746174696f6e2074686174207573656420746f2076616c6964617465290120207468652070726f6f66206f6620636c61696d2c2077686963682077696c6c206265206120636f6e7374616e7420696e646570656e64656e74206f66207573657220696e707574732e302023203c2f7765696768743e0030202320417267756d656e7473b901202a206f726967696e202d2057686f2070726f76696465732074686520636c61696d20746f2074686520757365723f20496e207468697320636173652c20697427732074686520757365722773206163636f756e742069642061732074686520757365722070726f76696465732ee8202a20746172676574202d20604964656e7469747949646020746f2077686963682074686520636c61696d20676574732061737369676e65642eb8202a20636c61696d202d2060496e766573746f72556e697175656e6573736020636c61696d2064657461696c732eb0202a2070726f6f66202d20546f2076616c6964617465207468652073656c66206174746573746174696f6e2e70202a20657870697279202d20457870697279206f6620636c61696d2e00242023204572726f72733101202a20604469644d757374416c7265616479457869737460205461726765742073686f756c6420616c7265616479206265656e20612070617274206f66207468652065636f73797374656d2e9501202a2060436c61696d56617269616e744e6f74416c6c6f77656460205768656e206f726967696e20747279696e6720746f207061737320636c61696d2076617269616e74206f74686572207468616e2060496e766573746f72556e697175656e657373602ebd01202a2060436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f77656460205768656e2069737375657220697320646966666572656e742066726f6d20746172676574206f72204344445f494420697320696e76616c696420666f7220676976656e20757365722eb0202a2060496e76616c696453636f7065436c61696d205768656e2070726f6f6620697320696e76616c69642e4067635f6164645f6364645f636c61696d0418746172676574284964656e74697479496404490120417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c20616464732061206e65772063646420636c61696d207265636f72642e4c67635f7265766f6b655f6364645f636c61696d0418746172676574284964656e746974794964046d0120417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c2072656d6f76657320616e206578697374696e672063646420636c61696d207265636f72642e806164645f696e766573746f725f756e697175656e6573735f636c61696d5f76321418746172676574284964656e7469747949641473636f70651453636f706514636c61696d14436c61696d1470726f6f663c53636f7065436c61696d50726f6f6618657870697279444f7074696f6e3c543a3a4d6f6d656e743e00547265766f6b655f636c61696d5f62795f696e6465780c18746172676574284964656e74697479496428636c61696d5f7479706524436c61696d547970651473636f7065344f7074696f6e3c53636f70653e20f901205265766f6b6573206120737065636966696320636c61696d207573696e6720697473205b436c61696d20556e6971756520496e6465785d282f70616c6c65745f6964656e746974792f696e6465782e68746d6c23636c61696d2d756e697175652d696e6465782920636f6d706f7365642062792060746172676574602c6c2060636c61696d5f74797065602c20616e64206073636f7065602e00090120506c65617365206e6f7465207468617420606f726967696e60206d7573742062652074686520697373756572206f66207468652074617267657420636c61696d2e00242023204572726f72735101202d20605461726765744861734e6f6e5a65726f42616c616e6365417453636f7065496460207768656e20796f752074727920746f207265766f6b6520612060496e766573746f72556e697175656e6573732a60290120636c61696d2c20616e64206074617267657460206964656e74697479207374696c6c206861766520616e792062616c616e6365206f6e2074686520676976656e206073636f7065602e014c28446964437265617465640c284964656e746974794964244163636f756e744964705665633c5365636f6e646172794b65793c4163636f756e7449643e3e04b0204449442c207072696d617279206b6579206163636f756e742049442c207365636f6e64617279206b657973485365636f6e646172794b657973416464656408284964656e746974794964705665633c5365636f6e646172794b65793c4163636f756e7449643e3e0438204449442c206e6577206b657973505365636f6e646172794b65797352656d6f76656408284964656e746974794964645665633c5369676e61746f72793c4163636f756e7449643e3e047c204449442c20746865206b657973207468617420676f742072656d6f766564285369676e65724c65667408284964656e746974794964505369676e61746f72793c4163636f756e7449643e04b02041207369676e6572206c656674207468656972206964656e746974792e20286469642c207369676e657229785365636f6e646172794b65795065726d697373696f6e735570646174656410284964656e7469747949645c5365636f6e646172794b65793c4163636f756e7449643e2c5065726d697373696f6e732c5065726d697373696f6e73040901204449442c2075706461746564207365636f6e64617279206b65792c2070726576696f7573207065726d697373696f6e732c206e6577207065726d697373696f6e73445072696d6172794b6579557064617465640c284964656e746974794964244163636f756e744964244163636f756e74496404a0204449442c206f6c64207072696d617279206b6579206163636f756e742049442c206e657720494428436c61696d416464656408284964656e746974794964344964656e74697479436c61696d0430204449442c20636c61696d7330436c61696d5265766f6b656408284964656e746974794964344964656e74697479436c61696d0474204449442c20436c61696d547970652c20436c61696d204973737565724841737365744469645265676973746572656408284964656e746974794964185469636b657204282041737365742044494448417574686f72697a6174696f6e416464656418284964656e746974794964484f7074696f6e3c4964656e7469747949643e444f7074696f6e3c4163636f756e7449643e0c75363470417574686f72697a6174696f6e446174613c4163636f756e7449643e384f7074696f6e3c4d6f6d656e743e0864204e657720617574686f72697a6174696f6e2061646465642e35012028617574686f72697365645f62792c207461726765745f6469642c207461726765745f6b65792c20617574685f69642c20617574686f72697a6174696f6e5f646174612c206578706972792950417574686f72697a6174696f6e5265766f6b65640c484f7074696f6e3c4964656e7469747949643e444f7074696f6e3c4163636f756e7449643e0c75363408a420417574686f72697a6174696f6e207265766f6b65642062792074686520617574686f72697a65722ebc2028617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e52656a65637465640c484f7074696f6e3c4964656e7469747949643e444f7074696f6e3c4163636f756e7449643e0c75363408dc20417574686f72697a6174696f6e2072656a65637465642062792074686520757365722077686f2077617320617574686f72697a65642ebc2028617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e436f6e73756d65640c484f7074696f6e3c4964656e7469747949643e444f7074696f6e3c4163636f756e7449643e0c753634086020417574686f72697a6174696f6e20636f6e73756d65642ebc2028617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f696429704f6666436861696e417574686f72697a6174696f6e5265766f6b656408284964656e746974794964505369676e61746f72793c4163636f756e7449643e08a8204f66662d636861696e20417574686f72697a6174696f6e20686173206265656e207265766f6b65642e742028546172676574204964656e746974792c205369676e61746f72792988436464526571756972656d656e74466f725072696d6172794b6579557064617465640410626f6f6c0411012043444420726571756972656d656e7420666f72207570646174696e67207072696d617279206b6579206368616e6765642e20286e65775f726571756972656d656e742950436464436c61696d73496e76616c69646174656408284964656e746974794964184d6f6d656e740845012043444420636c61696d732067656e65726174656420627920604964656e74697479496460202861204344442050726f7669646572292068617665206265656e20696e76616c6964617465642066726f6d2820604d6f6d656e74602e4c5365636f6e646172794b65797346726f7a656e04284964656e74697479496404c820416c6c205365636f6e64617279206b657973206f6620746865206964656e74697479204944206172652066726f7a656e2e545365636f6e646172794b657973556e66726f7a656e04284964656e74697479496404d020416c6c205365636f6e64617279206b657973206f6620746865206964656e746974792049442061726520756e66726f7a656e2e584d6f636b496e766573746f725549444372656174656408284964656e7469747949642c496e766573746f725569640470204d6f636b656420496e766573746f7255696420637265617465642e0430496e697469616c504f4c5958c03c543a3a42616c616e6365732061732043757272656e63793c543a3a4163636f756e7449643e3e3a3a42616c616e63654000000000000000000000000000000000008434416c72656164794c696e6b656404e0204f6e65207365636f6e64617279206f72207072696d617279206b65792063616e206f6e6c792062656c6f6e6720746f206f6e6520444944584d697373696e6743757272656e744964656e7469747904b0204d697373696e672063757272656e74206964656e74697479206f6e20746865207472616e73616374696f6e30556e617574686f72697a656404c0205369676e61746f7279206973206e6f742070726520617574686f72697a656420627920746865206964656e7469747944496e76616c69644163636f756e744b657904ac204163636f756e742049642063616e6e6f74206265206578747261637465642066726f6d207369676e65725c556e417574686f72697a656443646450726f766964657204a0204f6e6c792043444420736572766963652070726f7669646572732061726520616c6c6f7765642e74496e76616c6964417574686f72697a6174696f6e46726f6d4f776e657204a420416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865206f776e65722e8c496e76616c6964417574686f72697a6174696f6e46726f6d43646450726f766964657204c020416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865204344442070726f76696465722e644e6f7443646450726f76696465724174746573746174696f6e04bc204174746573746174696f6e20776173206e6f7420627920612043444420736572766963652070726f76696465722e70417574686f72697a6174696f6e734e6f74466f7253616d654469647304a420417574686f72697a6174696f6e7320617265206e6f7420666f72207468652073616d65204449442e4c4469644d757374416c7265616479457869737404702054686520444944206d75737420616c72656164792065786973742e8043757272656e744964656e7469747943616e6e6f744265466f727761726465640451012043757272656e74206964656e746974792063616e6e6f7420626520666f727761726465642c206974206973206e6f742061207365636f6e64617279206b6579206f6620746172676574206964656e746974792e50417574686f72697a6174696f6e4578706972656404a020546865206f6666636861696e20617574686f72697a6174696f6e2068617320657870697265642e385461726765744861734e6f436464048420546865207461726765742044494420686173206e6f2076616c6964204344442e6c417574686f72697a6174696f6e4861734265656e5265766f6b656404ac20417574686f72697a6174696f6e20686173206265656e206578706c696369746c79207265766f6b65642e74496e76616c6964417574686f72697a6174696f6e5369676e6174757265049020416e20696e76616c696420617574686f72697a6174696f6e207369676e61747572652e344b65794e6f74416c6c6f77656404d82054686973206b6579206973206e6f7420616c6c6f77656420746f2065786563757465206120676976656e206f7065726174696f6e2e344e6f745072696d6172794b6579046501204f6e6c7920746865207072696d617279206b657920697320616c6c6f77656420746f207265766f6b6520616e204964656e74697479205369676e61746f7279206f66662d636861696e20617574686f72697a6174696f6e2e3c446964446f65734e6f7445786973740460205468652044494420646f6573206e6f742065786973742e40446964416c72656164794578697374730460205468652044494420616c7265616479206578697374732e785365636f6e646172794b657973436f6e7461696e5072696d6172794b657904b020546865207365636f6e64617279206b65797320636f6e7461696e20746865207072696d617279206b65792e444661696c6564546f43686172676546656504a420436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e284e6f74415369676e657204dc205369676e6572206973206e6f742061207365636f6e64617279206b6579206f66207468652070726f7669646564206964656e746974796c43616e6e6f744465636f64655369676e65724163636f756e7449640419012043616e6e6f7420636f6e7665727420612060543a3a4163636f756e7449646020746f2060416e795369676e61747572653a3a5369676e65723a3a4163636f756e744964602e484d756c746953696748617342616c616e6365042501204d756c74697369672063616e206e6f7420626520756e6c696e6b65642066726f6d20616e206964656e74697479207768696c65206974207374696c6c20686f6c647320504f4c595880436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f77656404090120436f6e666964656e7469616c2053636f706520636c61696d732063616e20626520616464656420627920616e204964656e7469747920746f2069742d73656c662e44496e76616c696453636f7065436c61696d04c0204164646974696f6e206f662061206e65772073636f706520636c61696d206765747320696e76616c6964617465642e58436c61696d56617269616e744e6f74416c6c6f77656404e82054727920746f20616464206120636c61696d2076617269616e74207573696e6720756e2d64657369676e617465642065787472696e7369632e805461726765744861734e6f6e5a65726f42616c616e6365417453636f706549640455012054727920746f2064656c6574652074686520495520636c61696d206576656e207768656e20746865207573657220686173206e6f6e207a65726f2062616c616e636520617420676976656e2073636f706549642e6443444449644e6f74556e69717565466f724964656e746974790421012043444449642073686f756c6420626520756e6971756520262073616d652077697468696e20616c6c2063646420636c61696d7320706f737365737365642062792061204449442e30496e76616c69644344444964040d01204e6f6e2073797374656d61746963204344442070726f7669646572732063616e206e6f74206372656174652064656661756c74206364645f696420636c61696d732e7c436c61696d416e6450726f6f6656657273696f6e73446f4e6f744d6174636804a020436c61696d20616e642050726f6f662076657273696f6e732061726520646966666572656e742e544163636f756e744b657949734265696e675573656404d420546865206163636f756e74206b6579206973206265696e6720757365642c2069742063616e277420626520756e6c696e6b65642e48437573746f6d53636f7065546f6f4c6f6e670870204120637573746f6d2073636f706520697320746f6f206c6f6e672ea02049742063616e206174206d6f737420626520603332602063686172616374657273206c6f6e672e074c4364645365727669636550726f7669646572730138496e7374616e63653247726f75700c344163746976654d656d6265727301003c5665633c4964656e7469747949643e040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100785665633c496e6163746976654d656d6265723c543a3a4d6f6d656e743e3e040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d697401000c753332100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e011c607365745f6163746976655f6d656d626572735f6c696d697404146c696d69742c4d656d626572436f756e74103901204368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e0030202320417267756d656e74731101202a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c0c77686f284964656e74697479496418657870697279444f7074696f6e3c543a3a4d6f6d656e743e086174444f7074696f6e3c543a3a4d6f6d656e743e40982044697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e00450120506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e702074696d652d7374616d702077696c6c20626520757064617465642e00510120416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f72610120696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e791d012067656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e00550120496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e0030202320417267756d656e747380202a2060617460202d205265766f636174696f6e2074696d652d7374616d702e98202a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e5901202a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c2074686555012067656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d626572040c77686f284964656e746974794964143d0120416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e0030202320417267756d656e7473d4202a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74bc202a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d626572040c77686f284964656e7469747949642855012052656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e00450120416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725d0120696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e20697420697365012072656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564e020636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e0030202320417267756d656e7473e0202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74cc202a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d626572081872656d6f7665284964656e7469747949640c616464284964656e74697479496420e0205377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b8204d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e0030202320417267756d656e7473d8202a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d8202a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702edc202a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d62657273041c6d656d626572733c5665633c4964656e7469747949643e182d01204368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702ebc204d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e0030202320417267756d656e7473dc202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f7490202a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700028510120416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f20612047431820766f74652e0030202320417267756d656e7473d0202a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e00202023204572726f720084202a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea8202a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e011c2c4d656d626572416464656408284964656e746974794964284964656e74697479496408e42054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e702063616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408284964656e746974794964284964656e74697479496408ec2054686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea42063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408284964656e746974794964284964656e74697479496408e82054686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea42063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c284964656e746974794964284964656e746974794964284964656e74697479496408dc2054776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e982063616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408284964656e7469747949643c5665633c4964656e7469747949643e08190120546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e842063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c284964656e7469747949642c4d656d626572436f756e742c4d656d626572436f756e7404310120546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d7904bc73705f7374643a3a6d61726b65723a3a5068616e746f6d446174613c284163636f756e7449642c204576656e74293e0470205068616e746f6d206d656d6265722c206e6576657220757365642e001c544f6e6c795072696d6172794b6579416c6c6f77656404b4204f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d62657204802047726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d62657204a82043616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f745175697404ac204c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790450204d697373696e672063757272656e7420444944684163746976654d656d626572734c696d6974457863656564656404610120546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f7704190120416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e0844506f6c796d657368436f6d6d69747465650148496e7374616e636531436f6d6d6974746565242450726f706f73616c730100305665633c543a3a486173683e040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001061c543a3a48617368843c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c00040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e670001061c543a3a4861736874506f6c796d657368566f7465733c543a3a426c6f636b4e756d6265723e00040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e7401000c753332100000000004482050726f706f73616c7320736f206661722e1c4d656d6265727301003c5665633c4964656e7469747949643e04000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c64010028287533322c2075333229200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f720000284964656e746974794964040004542052656c6561736520636f6f7264696e61746f722e304578706972657341667465720100684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0114487365745f766f74655f7468726573686f6c6408046e0c75333204640c75333218fc204368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e590120466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e0030202320417267756d656e7473fc202a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e0501202a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204086964284964656e7469747949641c84204368616e676573207468652072656c6561736520636f6f7264696e61746f722e0030202320417267756d656e7473c4202a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e00242023204572726f72732901202a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f61667465720418657870697279684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e10c4204368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e0030202320417267756d656e747388202a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f7365081c617070726f766510626f6f6c1063616c6c98426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e4419012050726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e610120416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c2101207468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00242023205765696768740031012054686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c65786974797c20666f72207265636f7264696e672074686520766f746520697473656c662e0030202320417267756d656e7473a4202a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f65012020204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb8202a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e00242023204572726f72733101202a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e0d01202a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c2070726f706f73616c1c543a3a4861736814696e6465783450726f706f73616c496e6465781c617070726f766510626f6f6c28a820566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d8206f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e0030202320417267756d656e7473d8202a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e80202a2060696e64657860202d205468652070726f706f73616c20696e6465782e3101202a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e00242023204572726f72730d01202a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e01282050726f706f7365640c284964656e7469747949643450726f706f73616c496e6465781048617368088d012041206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292edc20506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c284964656e7469747949643450726f706f73616c496e646578104861736810626f6f6c2c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c09012041206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674d0120612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e99012063616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410284964656e7469747949643450726f706f73616c496e646578104861736810626f6f6c08d0204120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e09012063616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314284964656e7469747949643450726f706f73616c496e64657810486173683c5665633c4964656e7469747949643e3c5665633c4964656e7469747949643e08942046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829fc2063616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414284964656e74697479496410486173682c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c0d012041206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e6745012074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e510120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414284964656e74697479496410486173682c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c0d012041206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e6745012074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e510120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c284964656e7469747949641048617368384469737061746368526573756c74083d012041206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e110120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408284964656e746974794964484f7074696f6e3c4964656e7469747949643e08982052656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642ee020506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408284964656e7469747949645c4d61796265426c6f636b3c426c6f636b4e756d6265723e089c2050726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec820506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c284964656e7469747949640c7533320c753332088820566f74696e67207468726573686f6c6420686173206265656e2075706461746564bc20506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f720024344475706c6963617465566f74650484204475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d626572088c2041204449442069736e27742070617274206f662074686520636f6d6d69747465652ed82054686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c0448204e6f20737563682070726f706f73616c2e3c50726f706f73616c4578706972656404942050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0450204475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e6465780464204d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e04982050726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a6563740c010120466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e050120416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222e010120546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d69745265616368656404b8204d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e094c436f6d6d69747465654d656d626572736869700138496e7374616e63653147726f75700c344163746976654d656d6265727301003c5665633c4964656e7469747949643e040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100785665633c496e6163746976654d656d6265723c543a3a4d6f6d656e743e3e040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d697401000c753332100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e011c607365745f6163746976655f6d656d626572735f6c696d697404146c696d69742c4d656d626572436f756e74103901204368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e0030202320417267756d656e74731101202a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c0c77686f284964656e74697479496418657870697279444f7074696f6e3c543a3a4d6f6d656e743e086174444f7074696f6e3c543a3a4d6f6d656e743e40982044697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e00450120506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e702074696d652d7374616d702077696c6c20626520757064617465642e00510120416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f72610120696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e791d012067656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e00550120496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e0030202320417267756d656e747380202a2060617460202d205265766f636174696f6e2074696d652d7374616d702e98202a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e5901202a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c2074686555012067656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d626572040c77686f284964656e746974794964143d0120416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e0030202320417267756d656e7473d4202a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74bc202a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d626572040c77686f284964656e7469747949642855012052656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e00450120416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725d0120696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e20697420697365012072656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564e020636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e0030202320417267756d656e7473e0202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74cc202a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d626572081872656d6f7665284964656e7469747949640c616464284964656e74697479496420e0205377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b8204d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e0030202320417267756d656e7473d8202a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d8202a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702edc202a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d62657273041c6d656d626572733c5665633c4964656e7469747949643e182d01204368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702ebc204d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e0030202320417267756d656e7473dc202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f7490202a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700028510120416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f20612047431820766f74652e0030202320417267756d656e7473d0202a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e00202023204572726f720084202a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea8202a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e011c2c4d656d626572416464656408284964656e746974794964284964656e74697479496408e42054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e702063616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408284964656e746974794964284964656e74697479496408ec2054686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea42063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408284964656e746974794964284964656e74697479496408e82054686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea42063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c284964656e746974794964284964656e746974794964284964656e74697479496408dc2054776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e982063616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408284964656e7469747949643c5665633c4964656e7469747949643e08190120546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e842063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c284964656e7469747949642c4d656d626572436f756e742c4d656d626572436f756e7404310120546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d7904bc73705f7374643a3a6d61726b65723a3a5068616e746f6d446174613c284163636f756e7449642c204576656e74293e0470205068616e746f6d206d656d6265722c206e6576657220757365642e001c544f6e6c795072696d6172794b6579416c6c6f77656404b4204f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d62657204802047726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d62657204a82043616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f745175697404ac204c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790450204d697373696e672063757272656e7420444944684163746976654d656d626572734c696d6974457863656564656404610120546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f7704190120416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e0a48546563686e6963616c436f6d6d69747465650148496e7374616e636533436f6d6d6974746565242450726f706f73616c730100305665633c543a3a486173683e040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001061c543a3a48617368843c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c00040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e670001061c543a3a4861736874506f6c796d657368566f7465733c543a3a426c6f636b4e756d6265723e00040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e7401000c753332100000000004482050726f706f73616c7320736f206661722e1c4d656d6265727301003c5665633c4964656e7469747949643e04000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c64010028287533322c2075333229200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f720000284964656e746974794964040004542052656c6561736520636f6f7264696e61746f722e304578706972657341667465720100684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0114487365745f766f74655f7468726573686f6c6408046e0c75333204640c75333218fc204368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e590120466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e0030202320417267756d656e7473fc202a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e0501202a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204086964284964656e7469747949641c84204368616e676573207468652072656c6561736520636f6f7264696e61746f722e0030202320417267756d656e7473c4202a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e00242023204572726f72732901202a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f61667465720418657870697279684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e10c4204368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e0030202320417267756d656e747388202a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f7365081c617070726f766510626f6f6c1063616c6c98426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e4419012050726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e610120416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c2101207468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00242023205765696768740031012054686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c65786974797c20666f72207265636f7264696e672074686520766f746520697473656c662e0030202320417267756d656e7473a4202a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f65012020204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb8202a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e00242023204572726f72733101202a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e0d01202a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c2070726f706f73616c1c543a3a4861736814696e6465783450726f706f73616c496e6465781c617070726f766510626f6f6c28a820566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d8206f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e0030202320417267756d656e7473d8202a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e80202a2060696e64657860202d205468652070726f706f73616c20696e6465782e3101202a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e00242023204572726f72730d01202a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e01282050726f706f7365640c284964656e7469747949643450726f706f73616c496e6465781048617368088d012041206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292edc20506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c284964656e7469747949643450726f706f73616c496e646578104861736810626f6f6c2c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c09012041206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674d0120612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e99012063616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410284964656e7469747949643450726f706f73616c496e646578104861736810626f6f6c08d0204120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e09012063616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314284964656e7469747949643450726f706f73616c496e64657810486173683c5665633c4964656e7469747949643e3c5665633c4964656e7469747949643e08942046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829fc2063616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414284964656e74697479496410486173682c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c0d012041206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e6745012074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e510120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414284964656e74697479496410486173682c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c0d012041206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e6745012074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e510120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c284964656e7469747949641048617368384469737061746368526573756c74083d012041206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e110120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408284964656e746974794964484f7074696f6e3c4964656e7469747949643e08982052656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642ee020506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408284964656e7469747949645c4d61796265426c6f636b3c426c6f636b4e756d6265723e089c2050726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec820506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c284964656e7469747949640c7533320c753332088820566f74696e67207468726573686f6c6420686173206265656e2075706461746564bc20506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f720024344475706c6963617465566f74650484204475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d626572088c2041204449442069736e27742070617274206f662074686520636f6d6d69747465652ed82054686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c0448204e6f20737563682070726f706f73616c2e3c50726f706f73616c4578706972656404942050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0450204475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e6465780464204d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e04982050726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a6563740c010120466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e050120416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222e010120546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d69745265616368656404b8204d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e0b70546563686e6963616c436f6d6d69747465654d656d626572736869700138496e7374616e63653347726f75700c344163746976654d656d6265727301003c5665633c4964656e7469747949643e040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100785665633c496e6163746976654d656d6265723c543a3a4d6f6d656e743e3e040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d697401000c753332100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e011c607365745f6163746976655f6d656d626572735f6c696d697404146c696d69742c4d656d626572436f756e74103901204368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e0030202320417267756d656e74731101202a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c0c77686f284964656e74697479496418657870697279444f7074696f6e3c543a3a4d6f6d656e743e086174444f7074696f6e3c543a3a4d6f6d656e743e40982044697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e00450120506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e702074696d652d7374616d702077696c6c20626520757064617465642e00510120416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f72610120696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e791d012067656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e00550120496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e0030202320417267756d656e747380202a2060617460202d205265766f636174696f6e2074696d652d7374616d702e98202a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e5901202a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c2074686555012067656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d626572040c77686f284964656e746974794964143d0120416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e0030202320417267756d656e7473d4202a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74bc202a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d626572040c77686f284964656e7469747949642855012052656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e00450120416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725d0120696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e20697420697365012072656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564e020636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e0030202320417267756d656e7473e0202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74cc202a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d626572081872656d6f7665284964656e7469747949640c616464284964656e74697479496420e0205377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b8204d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e0030202320417267756d656e7473d8202a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d8202a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702edc202a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d62657273041c6d656d626572733c5665633c4964656e7469747949643e182d01204368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702ebc204d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e0030202320417267756d656e7473dc202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f7490202a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700028510120416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f20612047431820766f74652e0030202320417267756d656e7473d0202a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e00202023204572726f720084202a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea8202a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e011c2c4d656d626572416464656408284964656e746974794964284964656e74697479496408e42054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e702063616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408284964656e746974794964284964656e74697479496408ec2054686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea42063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408284964656e746974794964284964656e74697479496408e82054686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea42063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c284964656e746974794964284964656e746974794964284964656e74697479496408dc2054776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e982063616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408284964656e7469747949643c5665633c4964656e7469747949643e08190120546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e842063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c284964656e7469747949642c4d656d626572436f756e742c4d656d626572436f756e7404310120546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d7904bc73705f7374643a3a6d61726b65723a3a5068616e746f6d446174613c284163636f756e7449642c204576656e74293e0470205068616e746f6d206d656d6265722c206e6576657220757365642e001c544f6e6c795072696d6172794b6579416c6c6f77656404b4204f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d62657204802047726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d62657204a82043616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f745175697404ac204c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790450204d697373696e672063757272656e7420444944684163746976654d656d626572734c696d6974457863656564656404610120546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f7704190120416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e0c4055706772616465436f6d6d69747465650148496e7374616e636534436f6d6d6974746565242450726f706f73616c730100305665633c543a3a486173683e040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001061c543a3a48617368843c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c00040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e670001061c543a3a4861736874506f6c796d657368566f7465733c543a3a426c6f636b4e756d6265723e00040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e7401000c753332100000000004482050726f706f73616c7320736f206661722e1c4d656d6265727301003c5665633c4964656e7469747949643e04000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c64010028287533322c2075333229200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f720000284964656e746974794964040004542052656c6561736520636f6f7264696e61746f722e304578706972657341667465720100684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0114487365745f766f74655f7468726573686f6c6408046e0c75333204640c75333218fc204368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e590120466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e0030202320417267756d656e7473fc202a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e0501202a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204086964284964656e7469747949641c84204368616e676573207468652072656c6561736520636f6f7264696e61746f722e0030202320417267756d656e7473c4202a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e00242023204572726f72732901202a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f61667465720418657870697279684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e10c4204368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e0030202320417267756d656e747388202a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f7365081c617070726f766510626f6f6c1063616c6c98426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e4419012050726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e610120416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c2101207468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00242023205765696768740031012054686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c65786974797c20666f72207265636f7264696e672074686520766f746520697473656c662e0030202320417267756d656e7473a4202a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f65012020204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb8202a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e00242023204572726f72733101202a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e0d01202a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c2070726f706f73616c1c543a3a4861736814696e6465783450726f706f73616c496e6465781c617070726f766510626f6f6c28a820566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d8206f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e0030202320417267756d656e7473d8202a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e80202a2060696e64657860202d205468652070726f706f73616c20696e6465782e3101202a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e00242023204572726f72730d01202a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e01282050726f706f7365640c284964656e7469747949643450726f706f73616c496e6465781048617368088d012041206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292edc20506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c284964656e7469747949643450726f706f73616c496e646578104861736810626f6f6c2c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c09012041206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674d0120612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e99012063616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410284964656e7469747949643450726f706f73616c496e646578104861736810626f6f6c08d0204120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e09012063616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314284964656e7469747949643450726f706f73616c496e64657810486173683c5665633c4964656e7469747949643e3c5665633c4964656e7469747949643e08942046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829fc2063616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414284964656e74697479496410486173682c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c0d012041206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e6745012074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e510120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414284964656e74697479496410486173682c4d656d626572436f756e742c4d656d626572436f756e742c4d656d626572436f756e740c0d012041206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e6745012074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e510120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c284964656e7469747949641048617368384469737061746368526573756c74083d012041206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e110120506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408284964656e746974794964484f7074696f6e3c4964656e7469747949643e08982052656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642ee020506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408284964656e7469747949645c4d61796265426c6f636b3c426c6f636b4e756d6265723e089c2050726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec820506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c284964656e7469747949640c7533320c753332088820566f74696e67207468726573686f6c6420686173206265656e2075706461746564bc20506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f720024344475706c6963617465566f74650484204475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d626572088c2041204449442069736e27742070617274206f662074686520636f6d6d69747465652ed82054686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c0448204e6f20737563682070726f706f73616c2e3c50726f706f73616c4578706972656404942050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0450204475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e6465780464204d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e04982050726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a6563740c010120466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e050120416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222e010120546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d69745265616368656404b8204d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e0d6855706772616465436f6d6d69747465654d656d626572736869700138496e7374616e63653447726f75700c344163746976654d656d6265727301003c5665633c4964656e7469747949643e040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100785665633c496e6163746976654d656d6265723c543a3a4d6f6d656e743e3e040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d697401000c753332100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e011c607365745f6163746976655f6d656d626572735f6c696d697404146c696d69742c4d656d626572436f756e74103901204368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e0030202320417267756d656e74731101202a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c0c77686f284964656e74697479496418657870697279444f7074696f6e3c543a3a4d6f6d656e743e086174444f7074696f6e3c543a3a4d6f6d656e743e40982044697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e00450120506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e702074696d652d7374616d702077696c6c20626520757064617465642e00510120416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f72610120696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e791d012067656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e00550120496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e0030202320417267756d656e747380202a2060617460202d205265766f636174696f6e2074696d652d7374616d702e98202a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e5901202a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c2074686555012067656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d626572040c77686f284964656e746974794964143d0120416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e0030202320417267756d656e7473d4202a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74bc202a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d626572040c77686f284964656e7469747949642855012052656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e00450120416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725d0120696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e20697420697365012072656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564e020636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e0030202320417267756d656e7473e0202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74cc202a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d626572081872656d6f7665284964656e7469747949640c616464284964656e74697479496420e0205377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b8204d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e0030202320417267756d656e7473d8202a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d8202a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702edc202a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d62657273041c6d656d626572733c5665633c4964656e7469747949643e182d01204368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702ebc204d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e0030202320417267756d656e7473dc202a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f7490202a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700028510120416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f20612047431820766f74652e0030202320417267756d656e7473d0202a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e00202023204572726f720084202a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea8202a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e011c2c4d656d626572416464656408284964656e746974794964284964656e74697479496408e42054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e702063616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408284964656e746974794964284964656e74697479496408ec2054686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea42063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408284964656e746974794964284964656e74697479496408e82054686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea42063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c284964656e746974794964284964656e746974794964284964656e74697479496408dc2054776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e982063616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408284964656e7469747949643c5665633c4964656e7469747949643e08190120546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e842063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c284964656e7469747949642c4d656d626572436f756e742c4d656d626572436f756e7404310120546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d7904bc73705f7374643a3a6d61726b65723a3a5068616e746f6d446174613c284163636f756e7449642c204576656e74293e0470205068616e746f6d206d656d6265722c206e6576657220757365642e001c544f6e6c795072696d6172794b6579416c6c6f77656404b4204f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d62657204802047726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d62657204a82043616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f745175697404ac204c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790450204d697373696e672063757272656e7420444944684163746976654d656d626572734c696d6974457863656564656404610120546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f7704190120416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e0e204d756c746953696701204d756c746953696730344d756c74695369674e6f6e636501000c753634200000000000000000042101204e6f6e636520746f20656e7375726520756e69717565204d756c746953696720616464726573736573206172652067656e6572617465643b207374617274732066726f6d20312e3c4d756c74695369675369676e65727301020630543a3a4163636f756e7449645c5369676e61746f72793c543a3a4163636f756e7449643e5c5369676e61746f72793c543a3a4163636f756e7449643e058400000000000000000000000000000000000000000000000000000000000000000004d4205369676e657273206f662061206d756c74697369672e20286d756c74697369672c207369676e657229203d3e207369676e65722e3c4e756d6265724f665369676e65727301010630543a3a4163636f756e7449640c7536340020000000000000000004cc204e756d626572206f6620617070726f7665642f6163636570746564207369676e657273206f662061206d756c74697369672e544d756c74695369675369676e73526571756972656401010630543a3a4163636f756e7449640c7536340020000000000000000004e020436f6e6669726d6174696f6e73207265717569726564206265666f72652070726f63657373696e672061206d756c74697369672074782e384d756c74695369675478446f6e6501010630543a3a4163636f756e7449640c75363400200000000000000000043501204e756d626572206f66207472616e73616374696f6e732070726f706f73656420696e2061206d756c74697369672e20557365642061732074782069643b207374617274732066726f6d20302e2450726f706f73616c730001054c28543a3a4163636f756e7449642c20753634292c543a3a50726f706f73616c0004000475012050726f706f73616c732070726573656e74656420666f7220766f74696e6720746f2061206d756c746973696720286d756c74697369672c2070726f706f73616c20696429203d3e204f7074696f6e3c543a3a50726f706f73616c3e2e2c50726f706f73616c49647300020630543a3a4163636f756e7449642c543a3a50726f706f73616c0c75363402040004942041206d617070696e67206f662070726f706f73616c7320746f207468656972204944732e14566f746573010105b028543a3a4163636f756e7449642c205369676e61746f72793c543a3a4163636f756e7449643e2c207536342910626f6f6c00040004250120496e646976696475616c206d756c7469736967207369676e657220766f7465732e20286d756c7469207369672c207369676e65722c2070726f706f73616c29203d3e20766f74652e344b6579546f4d756c746953696701010530543a3a4163636f756e74496430543a3a4163636f756e7449640080000000000000000000000000000000000000000000000000000000000000000004c8204d6170732061206d756c7469736967207369676e6572206b657920746f2061206d756c746973696720616464726573732e484d756c7469536967546f4964656e7469747901010630543a3a4163636f756e744964284964656e7469747949640080000000000000000000000000000000000000000000000000000000000000000004a4204d6170732061206d756c7469736967206163636f756e7420746f20697473206964656e746974792e3850726f706f73616c44657461696c0101054c28543a3a4163636f756e7449642c20753634296850726f706f73616c44657461696c733c543a3a4d6f6d656e743e004c00000000000000000000000000000000000000047c2044657461696c73206f662061206d756c74697369672070726f706f73616c485472616e73616374696f6e56657273696f6e01000c753332100000000004f420546865206c617374207472616e73616374696f6e2076657273696f6e2c207573656420666f7220606f6e5f72756e74696d655f75706772616465602e014c3c6372656174655f6d756c7469736967081c7369676e657273705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e34736967735f72657175697265640c753634144c20437265617465732061206d756c74697369670030202320417267756d656e7473a901202a20607369676e65727360202d205369676e657273206f6620746865206d756c7469736967202854686579206e65656420746f2061636365707420617574686f72697a6174696f6e206265666f72652074686579206172652061637475616c6c79206164646564292e1d01202a2060736967735f726571756972656460202d204e756d626572206f66207369677320726571756972656420746f2070726f636573732061206d756c74692d7369672074782e986372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6964656e7469747910206d756c746973696730543a3a4163636f756e7449642070726f706f73616c40426f783c543a3a50726f706f73616c3e18657870697279444f7074696f6e3c543a3a4d6f6d656e743e286175746f5f636c6f736510626f6f6c20410120437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea0202a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eb0202a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e0901202a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e350120496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e846372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6b657910206d756c746973696730543a3a4163636f756e7449642070726f706f73616c40426f783c543a3a50726f706f73616c3e18657870697279444f7074696f6e3c543a3a4d6f6d656e743e286175746f5f636c6f736510626f6f6c20410120437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea0202a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eb0202a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e0901202a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e350120496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e6c6372656174655f70726f706f73616c5f61735f6964656e7469747910206d756c746973696730543a3a4163636f756e7449642070726f706f73616c40426f783c543a3a50726f706f73616c3e18657870697279444f7074696f6e3c543a3a4d6f6d656e743e286175746f5f636c6f736510626f6f6c207020437265617465732061206d756c74697369672070726f706f73616c0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea0202a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eb0202a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e0901202a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e350120496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e586372656174655f70726f706f73616c5f61735f6b657910206d756c746973696730543a3a4163636f756e7449642070726f706f73616c40426f783c543a3a50726f706f73616c3e18657870697279444f7074696f6e3c543a3a4d6f6d656e743e286175746f5f636c6f736510626f6f6c207020437265617465732061206d756c74697369672070726f706f73616c0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea0202a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eb0202a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e0901202a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e350120496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4c617070726f76655f61735f6964656e7469747908206d756c746973696730543a3a4163636f756e7449642c70726f706f73616c5f69640c75363418e820417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea8202a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e05012049662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e38617070726f76655f61735f6b657908206d756c746973696730543a3a4163636f756e7449642c70726f706f73616c5f69640c75363418350120417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea8202a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e05012049662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4872656a6563745f61735f6964656e7469747908206d756c746973696730543a3a4163636f756e7449642c70726f706f73616c5f69640c75363418e42052656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea4202a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e05012049662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e3472656a6563745f61735f6b657908206d756c746973696730543a3a4163636f756e7449642c70726f706f73616c5f69640c7536341831012052656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e0030202320417267756d656e747384202a20606d756c746973696760202d204d756c746953696720616464726573732ea4202a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e05012049662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e886163636570745f6d756c74697369675f7369676e65725f61735f6964656e74697479041c617574685f69640c75363410110120416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206964656e746974792e0030202320417267756d656e7473b0202a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e746163636570745f6d756c74697369675f7369676e65725f61735f6b6579041c617574685f69640c753634102d0120416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206b657920284163636f756e744964292e0030202320417267756d656e7473b0202a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e4c6164645f6d756c74697369675f7369676e657204187369676e65725c5369676e61746f72793c543a3a4163636f756e7449643e102d0120416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e0030202320417267756d656e74737c202a20607369676e657260202d205369676e61746f727920746f206164642e5872656d6f76655f6d756c74697369675f7369676e657204187369676e65725c5369676e61746f72793c543a3a4163636f756e7449643e1041012052656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e0030202320417267756d656e747388202a20607369676e657260202d205369676e61746f727920746f2072656d6f76652e806164645f6d756c74697369675f7369676e6572735f7669615f63726561746f7208206d756c746973696730543a3a4163636f756e7449641c7369676e657273705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e24490120416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f662074686528206d756c74697369672e0030202320417267756d656e7473a0202a20606d756c746973696760202d2041646472657373206f6620746865206d756c74692073696788202a20607369676e65727360202d205369676e61746f7269657320746f206164642e0024202320576569676874a820603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e2829608c72656d6f76655f6d756c74697369675f7369676e6572735f7669615f63726561746f7208206d756c746973696730543a3a4163636f756e7449641c7369676e657273705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e24902052656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672ef42054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865206d756c74697369672e0030202320417267756d656e7473a0202a20606d756c746973696760202d2041646472657373206f6620746865206d756c74697369672e94202a20607369676e65727360202d205369676e61746f7269657320746f2072656d6f76652e0024202320576569676874a820603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e282960506368616e67655f736967735f72657175697265640434736967735f72657175697265640c753634145101204368616e67657320746865206e756d626572206f66207369676e6174757265732072657175697265642062792061206d756c74697369672e2054686973206d7573742062652063616c6c65642062792074686544206d756c746973696720697473656c662e0030202320417267756d656e7473dc202a2060736967735f726571756972656460202d204e6577206e756d626572206f66207265717569726564207369676e6174757265732e506d616b655f6d756c74697369675f7369676e657204206d756c746973696730543a3a4163636f756e74496414510120416464732061206d756c74697369672061732061207369676e6572206f662063757272656e7420646964206966207468652063757272656e7420646964206973207468652063726561746f72206f662074686528206d756c74697369672e0030202320417267756d656e747384202a20606d756c746973696760202d206d756c7469207369672061646472657373546d616b655f6d756c74697369675f7072696d61727908206d756c746973696730543a3a4163636f756e744964506f7074696f6e616c5f6364645f617574685f69642c4f7074696f6e3c7536343e14610120416464732061206d756c746973696720617320746865207072696d617279206b6579206f66207468652063757272656e7420646964206966207468652063757272656e7420444944206973207468652063726561746f7244206f6620746865206d756c74697369672e0030202320417267756d656e747388202a20606d756c74695f73696760202d206d756c746920736967206164647265737368657865637574655f7363686564756c65645f70726f706f73616c10206d756c746973696730543a3a4163636f756e7449642c70726f706f73616c5f69640c753634306d756c74697369675f646964284964656e746974794964405f70726f706f73616c5f7765696768741857656967687404750120526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20666f7220657865637574696e67207363686564756c6564206d756c74697369672070726f706f73616c2e01303c4d756c74695369674372656174656414284964656e746974794964244163636f756e744964244163636f756e744964645665633c5369676e61746f72793c4163636f756e7449643e3e0c75363408b0204576656e7420656d6974746564206166746572206372656174696f6e206f662061206d756c74697369672e690120417267756d656e74733a2063616c6c6572204449442c206d756c746973696720616464726573732c207369676e657273202870656e64696e6720617070726f76616c292c207369676e6174757265732072657175697265642e3450726f706f73616c41646465640c284964656e746974794964244163636f756e7449640c753634089c204576656e7420656d697474656420616674657220616464696e6720612070726f706f73616c2eb820417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e4050726f706f73616c457865637574656410284964656e746974794964244163636f756e7449640c75363410626f6f6c08ac204576656e7420656d6974746564207768656e20612070726f706f73616c2069732065786563757465642ed820417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442c20726573756c742e4c4d756c74695369675369676e657241646465640c284964656e746974794964244163636f756e744964505369676e61746f72793c4163636f756e7449643e08a4204576656e7420656d6974746564207768656e2061207369676e61746f72792069732061646465642ebc20417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206164646564207369676e65722e604d756c74695369675369676e6572417574686f72697a65640c284964656e746974794964244163636f756e744964505369676e61746f72793c4163636f756e7449643e080d01204576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f727920697320617574686f72697a656420746f2062652061646465642ed020417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722e544d756c74695369675369676e657252656d6f7665640c284964656e746974794964244163636f756e744964505369676e61746f72793c4163636f756e7449643e08d0204576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f72792069732072656d6f7665642ec420417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2072656d6f766564207369676e65722e844d756c74695369675369676e61747572657352657175697265644368616e6765640c284964656e746974794964244163636f756e7449640c753634080501204576656e7420656d6974746564207768656e20746865206e756d626572206f66207265717569726564207369676e617475726573206973206368616e6765642ee820417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206e6577207265717569726564207369676e6174757265732e4050726f706f73616c417070726f76656410284964656e746974794964244163636f756e744964505369676e61746f72793c4163636f756e7449643e0c75363408b8204576656e7420656d6974746564207768656e207468652070726f706f73616c2067657420617070726f7665642e050120417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e5450726f706f73616c52656a656374696f6e566f746510284964656e746974794964244163636f756e744964505369676e61746f72793c4163636f756e7449643e0c753634081101204576656e7420656d6974746564207768656e206120766f7465206973206361737420696e206661766f72206f662072656a656374696e6720612070726f706f73616c2e050120417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e4050726f706f73616c52656a65637465640c284964656e746974794964244163636f756e7449640c75363408ac204576656e7420656d6974746564207768656e20612070726f706f73616c2069732072656a65637465642eb820417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e5c50726f706f73616c457865637574696f6e4661696c6564043444697370617463684572726f7204e8204576656e7420656d6974746564207768656e207468657265277320616e206572726f7220696e2070726f706f73616c20657865637574696f6e405363686564756c696e674661696c6564043444697370617463684572726f720478205363686564756c696e67206f662070726f706f73616c206661696c732e005c284364644d697373696e6704c820546865206d756c7469736967206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e3c50726f706f73616c4d697373696e670474205468652070726f706f73616c20646f6573206e6f742065786973742e344465636f64696e674572726f720448204d756c746973696720616464726573732e244e6f5369676e6572730430204e6f207369676e6572732e7452657175697265645369676e6174757265734f75744f66426f756e647304a420546f6f20666577206f7220746f6f206d616e79207265717569726564207369676e6174757265732e284e6f74415369676e65720438204e6f742061207369676e65722e384e6f537563684d756c74697369670448204e6f2073756368206d756c74697369672e404e6f74456e6f7567685369676e6572730450204e6f7420656e6f756768207369676e6572732e344e6f6e63654f766572666c6f7704482041206e6f6e6365206f766572666c6f772e30416c7265616479566f746564043c20416c726561647920766f7465642e38416c7265616479415369676e6572044820416c72656164792061207369676e65722e444661696c6564546f43686172676546656504a420436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e484964656e746974794e6f7443726561746f7204c4204964656e746974792070726f7669646564206973206e6f7420746865206d756c746973696727732063726561746f722e404368616e67654e6f74416c6c6f776564042901204368616e67696e67206d756c746973696720706172616d6574657273206e6f7420616c6c6f7765642073696e6365206d756c74697369672069732061207072696d617279206b65792e4c5369676e6572416c72656164794c696e6b6564041501205369676e657220697320616e206163636f756e74206b6579207468617420697320616c7265616479206173736f63696174656420776974682061206d756c74697369672e584d697373696e6743757272656e744964656e74697479045c2043757272656e7420444944206973206d697373696e67344e6f745072696d6172794b657904f8205468652066756e6374696f6e2063616e206f6e6c792062652063616c6c656420627920746865207072696d617279206b6579206f6620746865206469645c50726f706f73616c416c726561647952656a656374656404782050726f706f73616c207761732072656a6563746564206561726c6965723c50726f706f73616c4578706972656404542050726f706f73616c2068617320657870697265645c50726f706f73616c416c7265616479457865637574656404782050726f706f73616c20776173206578656375746564206561726c6965725c4d756c74697369674d697373696e674964656e7469747904a0204d756c7469736967206973206e6f7420617474616368656420746f20616e206964656e74697479404661696c6564546f5363686564756c65047c205363686564756c696e67206f6620612070726f706f73616c206661696c7338546f6f4d616e795369676e6572730470204d6f7265207369676e657273207468616e2072657175697265642e0f1842726964676501184272696467652828436f6e74726f6c6c6572010030543a3a4163636f756e7449648000000000000000000000000000000000000000000000000000000000000000000c410120546865206d756c7469736967206163636f756e74206f66207468652062726964676520636f6e74726f6c6c65722e205468652067656e65736973207369676e65727320616363657074207468656972450120617574686f72697a6174696f6e7320616e64206172652061626c6520746f206765742074686569722070726f706f73616c732064656c6976657265642e20546865206272696467652063726561746f729c207472616e736665727320736f6d6520504f4c5920746f207468656972206964656e746974792e3c427269646765547844657461696c7301020230543a3a4163636f756e7449640c75333278427269646765547844657461696c3c543a3a426c6f636b4e756d6265723e02d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000859012044657461696c73206f6620627269646765207472616e73616374696f6e73206964656e7469666965642077697468207061697273206f662074686520726563697069656e74206163636f756e7420616e64207468656820627269646765207472616e73616374696f6e206e6f6e63652e1441646d696e010030543a3a4163636f756e744964800000000000000000000000000000000000000000000000000000000000000000043c205468652061646d696e206b65792e1846726f7a656e010010626f6f6c040004bc2057686574686572206f72206e6f742074686520627269646765206f7065726174696f6e2069732066726f7a656e2e30467265657a6541646d696e7301010230543a3a4163636f756e74496410626f6f6c00040004090120467265657a65206272696467652061646d696e732e20205468657365206163636f756e74732063616e206f6e6c7920667265657a6520746865206272696467652e2054696d656c6f636b010038543a3a426c6f636b4e756d6265721000000000083d012054686520627269646765207472616e73616374696f6e2074696d656c6f636b20706572696f642c20696e20626c6f636b732c2073696e63652074686520616363657074616e6365206f66207468653101207472616e73616374696f6e2070726f706f73616c20647572696e67207768696368207468652061646d696e206b65792063616e20667265657a6520746865207472616e73616374696f6e2e2c4272696467654c696d69740100642842616c616e63652c20543a3a426c6f636b4e756d6265722950000000000000000000000000000000000000000008290120546865206d6178696d756d206e756d626572206f66206272696467656420504f4c595820706572206964656e746974792077697468696e20612073657420696e74657276616c206f66f820626c6f636b732e204669656c64733a20504f4c595820616d6f756e7420616e642074686520626c6f636b20696e74657276616c206475726174696f6e2e30506f6c797842726964676564010106284964656e746974794964642842616c616e63652c20543a3a426c6f636b4e756d626572290050000000000000000000000000000000000000000008510120416d6f756e74206f6620504f4c5958206272696467656420627920746865206964656e7469747920696e206c61737420626c6f636b20696e74657276616c2e204669656c64733a2074686520627269646765649420616d6f756e7420616e6420746865206c61737420696e74657276616c206e756d6265722e4c4272696467654c696d69744578656d70746564010105284964656e74697479496410626f6f6c00040004c0204964656e746974696573206e6f7420636f6e73747261696e65642062792074686520627269646765206c696d69742e3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0144446368616e67655f636f6e74726f6c6c65720428636f6e74726f6c6c657230543a3a4163636f756e74496410a4204368616e6765732074686520636f6e74726f6c6c6572206163636f756e742061732061646d696e2e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e306368616e67655f61646d696e041461646d696e30543a3a4163636f756e7449641078204368616e67657320746865206272696467652061646d696e206b65792e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e3c6368616e67655f74696d656c6f636b042074696d656c6f636b38543a3a426c6f636b4e756d6265721074204368616e676573207468652074696d656c6f636b20706572696f642e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e18667265657a650014610120467265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c65206966206974206973206e6f7420616c72656164792066726f7a656e2e205768656e207468654d01206272696467652069732066726f7a656e2c20617474656d70746564207472616e73616374696f6e732067657420706f7374706f6e656420696e7374656164206f662067657474696e672068616e646c65642e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e20756e667265657a650010150120556e667265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c652069662069742069732066726f7a656e2e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c6368616e67655f6272696467655f6c696d69740818616d6f756e741c42616c616e6365206475726174696f6e38543a3a426c6f636b4e756d626572146c204368616e6765732074686520627269646765206c696d6974732e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ea8202d20604469766973696f6e42795a65726f6020696620606475726174696f6e60206973207a65726f2e586368616e67655f6272696467655f6578656d7074656404206578656d707465645c5665633c284964656e7469747949642c20626f6f6c293e10a0204368616e6765732074686520627269646765206c696d6974206578656d70746564206c6973742e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e58666f7263655f68616e646c655f6272696467655f747804246272696467655f74785842726964676554783c543a3a4163636f756e7449643e14290120466f726365732068616e646c696e672061207472616e73616374696f6e20627920627970617373696e672074686520627269646765206c696d697420616e642074696d656c6f636b2e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e2501202d20604e6f56616c69644364646020696620606272696467655f74782e726563697069656e746020646f6573206e6f74206861766520612076616c69642043444420636c61696d2e5c62617463685f70726f706f73655f6272696467655f747804286272696467655f7478736c5665633c42726964676554783c543a3a4163636f756e7449643e3e2449012050726f706f736573206120766563746f72206f6620627269646765207472616e73616374696f6e732e2054686520766563746f722069732070726f63657373656420756e74696c2074686520666972737451012070726f706f73616c2077686963682063617573657320616e206572726f722c20696e207768696368206361736520746865206572726f722069732072657475726e656420616e64207468652072657374206f66742070726f706f73616c7320617265206e6f742070726f6365737365642e0028202323204572726f7273cc202d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e0024202320576569676874b420603530305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829604470726f706f73655f6272696467655f747804246272696467655f74785842726964676554783c543a3a4163636f756e7449643e184d012050726f706f736573206120627269646765207472616e73616374696f6e2c20776869636820616d6f756e747320746f206d616b696e672061206d756c74697369672070726f706f73616c20666f7220746865590120627269646765207472616e73616374696f6e20696620746865207472616e73616374696f6e206973206e6577206f7220617070726f76696e6720616e206578697374696e672070726f706f73616c206966207468659c207472616e73616374696f6e2068617320616c7265616479206265656e2070726f706f7365642e0028202323204572726f7273cc202d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e4068616e646c655f6272696467655f747804246272696467655f74785842726964676554783c543a3a4163636f756e7449643e18c42048616e646c657320616e20617070726f76656420627269646765207472616e73616374696f6e2070726f706f73616c2e0028202323204572726f72731d01202d206042616443616c6c65726020696620606f726967696e60206973206e6f74206053656c663a3a636f6e74726f6c6c657260206f7220206053656c663a3a61646d696e602ef0202d206054696d656c6f636b656454786020696620746865207472616e73616374696f6e20737461747573206973206054696d656c6f636b6564602e0d01202d206050726f706f73616c416c726561647948616e646c65646020696620746865207472616e73616374696f6e20737461747573206973206048616e646c6564602e28667265657a655f74787304286272696467655f7478736c5665633c42726964676554783c543a3a4163636f756e7449643e3e208c20467265657a657320676976656e20627269646765207472616e73616374696f6e732e890120496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e0024202320576569676874b420603430305f3030305f303030202b20325f3030305f303030202a206272696467655f7478732e6c656e28296030756e667265657a655f74787304286272696467655f7478736c5665633c42726964676554783c543a3a4163636f756e7449643e3e209420556e667265657a657320676976656e20627269646765207472616e73616374696f6e732e890120496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e0024202320576569676874b420603430305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829606868616e646c655f7363686564756c65645f6272696467655f747804246272696467655f74785842726964676554783c543a3a4163636f756e7449643e189d0120526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f2068616e646c652061207363686564756c65642074696d656c6f636b656420627269646765207472616e73616374696f6e2e00242023204572726f72739c202d20604261644f726967696e6020696620606f726967696e60206973206e6f7420726f6f742efc202d206050726f706f73616c416c726561647948616e646c656460206966207472616e73616374696f6e20737461747573206973206048616e646c6564602ec0202d206046726f7a656e547860206966207472616e73616374696f6e20737461747573206973206046726f7a656e602e406164645f667265657a655f61646d696e0430667265657a655f61646d696e30543a3a4163636f756e744964105020416464206120667265657a652061646d696e2e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c72656d6f76655f667265657a655f61646d696e0430667265657a655f61646d696e30543a3a4163636f756e744964105c2052656d6f7665206120667265657a652061646d696e2e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e2872656d6f76655f74787304286272696467655f7478736c5665633c42726964676554783c543a3a4163636f756e7449643e3e14882052656d6f766520676976656e20627269646765207472616e73616374696f6e732e0028202323204572726f7273e4202d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ed4202d20604e6f7446726f7a656e60206966206120747820696e20606272696467655f74787360206973206e6f742066726f7a656e2e014044436f6e74726f6c6c65724368616e67656408284964656e746974794964244163636f756e744964049420436f6e6669726d6174696f6e206f662061207369676e657220736574206368616e67652e3041646d696e4368616e67656408284964656e746974794964244163636f756e744964047820436f6e6669726d6174696f6e206f662041646d696e206368616e67652e3c54696d656c6f636b4368616e67656408284964656e7469747949642c426c6f636b4e756d62657204a420436f6e6669726d6174696f6e206f662064656661756c742074696d656c6f636b206368616e67652e1c4272696467656408284964656e7469747949644c42726964676554783c4163636f756e7449643e04210120436f6e6669726d6174696f6e206f6620504f4c59582075706772616465206f6e20506f6c796d6573682066726f6d20504f4c5920746f6b656e73206f6e20457468657265756d2e1846726f7a656e04284964656e7469747949640494204e6f74696669636174696f6e206f6620667265657a696e6720746865206272696467652e20556e66726f7a656e04284964656e746974794964049c204e6f74696669636174696f6e206f6620756e667265657a696e6720746865206272696467652e2046726f7a656e547808284964656e7469747949644c42726964676554783c4163636f756e7449643e04a0204e6f74696669636174696f6e206f6620667265657a696e672061207472616e73616374696f6e2e28556e66726f7a656e547808284964656e7469747949644c42726964676554783c4163636f756e7449643e04a8204e6f74696669636174696f6e206f6620756e667265657a696e672061207472616e73616374696f6e2e3c4578656d70746564557064617465640c284964656e746974794964284964656e74697479496410626f6f6c04c8204578656d7074696f6e20737461747573206f6620616e206964656e7469747920686173206265656e20757064617465642e484272696467654c696d6974557064617465640c284964656e7469747949641c42616c616e63652c426c6f636b4e756d626572047c20427269646765206c696d697420686173206265656e20757064617465642e2854787348616e646c656404985665633c284163636f756e7449642c207533322c2048616e646c65645478537461747573293e08650120416e206576656e7420656d6974746564206166746572206120766563746f72206f66207472616e73616374696f6e732069732068616e646c65642e2054686520706172616d65746572206973206120766563746f72206f665501207475706c6573206f6620726563697069656e74206163636f756e742c20697473206e6f6e63652c20616e642074686520737461747573206f66207468652070726f636573736564207472616e73616374696f6e2e4442726964676554785363686564756c65640c284964656e7469747949644c42726964676554783c4163636f756e7449643e2c426c6f636b4e756d626572045420427269646765205478205363686564756c65642e5842726964676554785363686564756c654661696c65640c284964656e7469747949644c42726964676554783c4163636f756e7449643e1c5665633c75383e0478204661696c656420746f207363686564756c65204272696467652054782e40467265657a6541646d696e416464656408284964656e746974794964244163636f756e744964048c2041206e657720667265657a652061646d696e20686173206265656e2061646465642e48467265657a6541646d696e52656d6f76656408284964656e746974794964244163636f756e7449640484204120667265657a652061646d696e20686173206265656e2072656d6f7665642e24547852656d6f76656408284964656e7469747949644c42726964676554783c4163636f756e7449643e04a0204e6f74696669636174696f6e206f662072656d6f76696e672061207472616e73616374696f6e2e003440436f6e74726f6c6c65724e6f7453657404a8205468652062726964676520636f6e74726f6c6c65722061646472657373206973206e6f74207365742e2442616443616c6c657204dc20546865206f726967696e206973206e6f742074686520636f6e74726f6c6c6572206f72207468652061646d696e20616464726573732e2042616441646d696e049420546865206f726967696e206973206e6f74207468652061646d696e20616464726573732e284e6f56616c696443646404902054686520726563697069656e742044494420686173206e6f2076616c6964204344442e5850726f706f73616c416c726561647948616e646c6564043d012054686520627269646765207472616e73616374696f6e2070726f706f73616c2068617320616c7265616479206265656e2068616e646c656420616e64207468652066756e6473206d696e7465642e30556e617574686f72697a6564049820556e617574686f72697a656420746f20706572666f726d20616e206f7065726174696f6e2e1846726f7a656e0478205468652062726964676520697320616c72656164792066726f7a656e2e244e6f7446726f7a656e04682054686520627269646765206973206e6f742066726f7a656e2e2046726f7a656e5478046c20546865207472616e73616374696f6e2069732066726f7a656e2e484272696467654c696d69745265616368656404e820546865206964656e746974792773206d696e74656420746f74616c2068617320726561636865642074686520627269646765206c696d69742e204f766572666c6f7704b020546865206964656e746974792773206d696e74656420746f74616c20686173206f766572666c6f7765642e384469766973696f6e42795a65726f04d02054686520626c6f636b20696e74657276616c206475726174696f6e206973207a65726f2e2043616e6e6f74206469766964652e3054696d656c6f636b65645478047c20546865207472616e73616374696f6e2069732074696d656c6f636b65642e101c5374616b696e67011c5374616b696e679c30486973746f7279446570746801000c75333210540000001c8c204e756d626572206f66206572617320746f206b65657020696e20686973746f72792e00390120496e666f726d6174696f6e206973206b65707420666f72206572617320696e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e006101204d757374206265206d6f7265207468616e20746865206e756d626572206f6620657261732064656c617965642062792073657373696f6e206f74686572776973652e20492e652e2061637469766520657261206d757374390120616c7761797320626520696e20686973746f72792e20492e652e20606163746976655f657261203e2063757272656e745f657261202d20686973746f72795f646570746860206d757374206265302067756172616e746565642e3856616c696461746f72436f756e7401000c753332100000000004a82054686520696465616c206e756d626572206f66207374616b696e67207061727469636970616e74732e544d696e696d756d56616c696461746f72436f756e7401000c7533321000000000044101204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e34496e76756c6e657261626c65730100445665633c543a3a4163636f756e7449643e04000c590120416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e636520746865792772654d01206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f7572ac20696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e18426f6e64656400010530543a3a4163636f756e74496430543a3a4163636f756e744964000400040101204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e184c656467657200010230543a3a4163636f756e744964a45374616b696e674c65646765723c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e000400044501204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e14506179656501010530543a3a4163636f756e7449647c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e00040004e42057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e2856616c696461746f727301010530543a3a4163636f756e7449643856616c696461746f7250726566730008000004450120546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e284e6f6d696e61746f727300010530543a3a4163636f756e744964644e6f6d696e6174696f6e733c543a3a4163636f756e7449643e00040004650120546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f2074686520736574206f66207374617368206b657973206f6620616c6c2076616c696461746f727320746f206e6f6d696e6174652e2843757272656e74457261000020457261496e6465780400105c205468652063757272656e742065726120696e6465782e006501205468697320697320746865206c617465737420706c616e6e6564206572612c20646570656e64696e67206f6e20686f77207468652053657373696f6e2070616c6c657420717565756573207468652076616c696461746f7280207365742c206974206d6967687420626520616374697665206f72206e6f742e24416374697665457261000034416374697665457261496e666f040010d820546865206163746976652065726120696e666f726d6174696f6e2c20697420686f6c647320696e64657820616e642073746172742e0059012054686520616374697665206572612069732074686520657261206265696e672063757272656e746c792072657761726465642e2056616c696461746f7220736574206f66207468697320657261206d757374206265ac20657175616c20746f205b6053657373696f6e496e746572666163653a3a76616c696461746f7273605d2e5445726173537461727453657373696f6e496e64657800010520457261496e6465783053657373696f6e496e646578000400103101205468652073657373696f6e20696e646578206174207768696368207468652065726120737461727420666f7220746865206c6173742060484953544f52595f44455054486020657261732e006101204e6f74653a205468697320747261636b7320746865207374617274696e672073657373696f6e2028692e652e2073657373696f6e20696e646578207768656e20657261207374617274206265696e672061637469766529f020666f7220746865206572617320696e20605b43757272656e74457261202d20484953544f52595f44455054482c2043757272656e744572615d602e2c457261735374616b65727301020520457261496e64657830543a3a4163636f756e744964904578706f737572653c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e050c0000001878204578706f73757265206f662076616c696461746f72206174206572612e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e48457261735374616b657273436c697070656401020520457261496e64657830543a3a4163636f756e744964904578706f737572653c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e050c0000002c9820436c6970706564204578706f73757265206f662076616c696461746f72206174206572612e00590120546869732069732073696d696c617220746f205b60457261735374616b657273605d20627574206e756d626572206f66206e6f6d696e61746f7273206578706f736564206973207265647563656420746f20746865dc2060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732e1d0120284e6f74653a20746865206669656c642060746f74616c6020616e6420606f776e60206f6620746865206578706f737572652072656d61696e7320756e6368616e676564292ef42054686973206973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e005d012054686973206973206b657965642066697374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e484572617356616c696461746f72507265667301020520457261496e64657830543a3a4163636f756e7449643856616c696461746f725072656673050800001411012053696d696c617220746f2060457261735374616b657273602c207468697320686f6c64732074686520707265666572656e636573206f662076616c696461746f72732e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4c4572617356616c696461746f7252657761726400010520457261496e6465783042616c616e63654f663c543e0004000c09012054686520746f74616c2076616c696461746f7220657261207061796f757420666f7220746865206c6173742060484953544f52595f44455054486020657261732e0021012045726173207468617420686176656e27742066696e697368656420796574206f7220686173206265656e2072656d6f76656420646f65736e27742068617665207265776172642e4045726173526577617264506f696e747301010520457261496e64657874457261526577617264506f696e74733c543a3a4163636f756e7449643e0014000000000008ac205265776172647320666f7220746865206c6173742060484953544f52595f44455054486020657261732e250120496620726577617264206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207265776172642069732072657475726e65642e3845726173546f74616c5374616b6501010520457261496e6465783042616c616e63654f663c543e00400000000000000000000000000000000008ec2054686520746f74616c20616d6f756e74207374616b656420666f7220746865206c6173742060484953544f52595f44455054486020657261732e1d0120496620746f74616c206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207374616b652069732072657475726e65642e20466f72636545726101001c466f7263696e6704000454204d6f6465206f662065726120666f7263696e672e4c536c6173685265776172644672616374696f6e01001c50657262696c6c10000000000cf8205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e00e4205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e4c43616e63656c6564536c6173685061796f757401003042616c616e63654f663c543e40000000000000000000000000000000000815012054686520616d6f756e74206f662063757272656e637920676976656e20746f207265706f7274657273206f66206120736c617368206576656e7420776869636820776173ec2063616e63656c65642062792065787472616f7264696e6172792063697263756d7374616e6365732028652e672e20676f7665726e616e6365292e40556e6170706c696564536c617368657301010520457261496e646578bc5665633c556e6170706c696564536c6173683c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e3e00040004c420416c6c20756e6170706c69656420736c61736865732074686174206172652071756575656420666f72206c617465722e28426f6e646564457261730100745665633c28457261496e6465782c2053657373696f6e496e646578293e04001025012041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e00c8204d75737420636f6e7461696e7320696e666f726d6174696f6e20666f72206572617320666f72207468652072616e67653abc20605b6163746976655f657261202d20626f756e64696e675f6475726174696f6e3b206163746976655f6572615d604c56616c696461746f72536c617368496e45726100020520457261496e64657830543a3a4163636f756e7449645c2850657262696c6c2c2042616c616e63654f663c543e2905040008450120416c6c20736c617368696e67206576656e7473206f6e2076616c696461746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682070726f706f7274696f6e7020616e6420736c6173682076616c7565206f6620746865206572612e4c4e6f6d696e61746f72536c617368496e45726100020520457261496e64657830543a3a4163636f756e7449643042616c616e63654f663c543e05040004610120416c6c20736c617368696e67206576656e7473206f6e206e6f6d696e61746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682076616c7565206f6620746865206572612e34536c617368696e675370616e7300010530543a3a4163636f756e7449645c736c617368696e673a3a536c617368696e675370616e73000400048c20536c617368696e67207370616e7320666f72207374617368206163636f756e74732e245370616e536c6173680101058c28543a3a4163636f756e7449642c20736c617368696e673a3a5370616e496e6465782988736c617368696e673a3a5370616e5265636f72643c42616c616e63654f663c543e3e00800000000000000000000000000000000000000000000000000000000000000000083d01205265636f72647320696e666f726d6174696f6e2061626f757420746865206d6178696d756d20736c617368206f6620612073746173682077697468696e206120736c617368696e67207370616e2cb82061732077656c6c20617320686f77206d7563682072657761726420686173206265656e2070616964206f75742e584561726c69657374556e6170706c696564536c617368000020457261496e646578040004fc20546865206561726c696573742065726120666f72207768696368207765206861766520612070656e64696e672c20756e6170706c69656420736c6173682e48536e617073686f7456616c696461746f72730000445665633c543a3a4163636f756e7449643e040008650120536e617073686f74206f662076616c696461746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e48536e617073686f744e6f6d696e61746f72730000445665633c543a3a4163636f756e7449643e040008650120536e617073686f74206f66206e6f6d696e61746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e34517565756564456c65637465640000a8456c656374696f6e526573756c743c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e04000c650120546865206e6578742076616c696461746f72207365742e2041742074686520656e64206f6620616e206572612c206966207468697320697320617661696c61626c652028706f74656e7469616c6c792066726f6d20746865610120726573756c74206f6620616e206f6666636861696e20776f726b6572292c20697420697320696d6d6564696174656c7920757365642e204f74686572776973652c20746865206f6e2d636861696e20656c656374696f6e342069732065786563757465642e2c51756575656453636f7265000034456c656374696f6e53636f7265040004b0205468652073636f7265206f66207468652063757272656e74205b60517565756564456c6563746564605d2e44457261456c656374696f6e537461747573010078456c656374696f6e5374617475733c543a3a426c6f636b4e756d6265723e040008490120466c616720746f20636f6e74726f6c2074686520657865637574696f6e206f6620746865206f6666636861696e20656c656374696f6e2e205768656e20604f70656e285f29602c207765206163636570746c20736f6c7574696f6e7320746f206265207375626d69747465642e54497343757272656e7453657373696f6e46696e616c010010626f6f6c0400084d012054727565206966207468652063757272656e74202a2a706c616e6e65642a2a2073657373696f6e2069732066696e616c2e204e6f74652074686174207468697320646f6573206e6f742074616b65206572615820666f7263696e6720696e746f206163636f756e742e505065726d697373696f6e65644964656e74697479000105284964656e746974794964645065726d697373696f6e65644964656e74697479507265667300040004ec20456e74697469657320746861742061726520616c6c6f77656420746f2072756e206f70657261746f722f76616c696461746f72206e6f6465732e5856616c696461746f72436f6d6d697373696f6e43617001001c50657262696c6c10000000000415012045766572792076616c696461746f722068617320636f6d6d697373696f6e20746861742073686f756c6420626520696e207468652072616e6765205b302c204361705d2e504d696e696d756d426f6e645468726573686f6c6401003042616c616e63654f663c543e400000000000000000000000000000000004d020546865206d696e696d756d20616d6f756e74207769746820776869636820612076616c696461746f722063616e20626f6e642e48536c617368696e67416c6c6f776564466f72010038536c617368696e675377697463680402003853746f7261676556657273696f6e01002052656c6561736573040610cc2054727565206966206e6574776f726b20686173206265656e20757067726164656420746f20746869732076657273696f6e2e7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e00a020546869732069732073657420746f2076362e302e3120666f72206e6577206e6574776f726b732e018010626f6e640c28636f6e74726f6c6c65728c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263651476616c756554436f6d706163743c42616c616e63654f663c543e3e1470617965657c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e5865012054616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c8420626520746865206163636f756e74207468617420636f6e74726f6c732069742e003101206076616c756560206d757374206265206d6f7265207468616e2074686520606d696e696d756d5f62616c616e636560207370656369666965642062792060543a3a43757272656e6379602e00250120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e004020456d6974732060426f6e646564602e002c2023203c7765696768743ed4202d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e20202d204f2831292e68202d20546872656520657874726120444220656e74726965732e005101204e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e6564410120756e6c6573732074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e4c202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d34205765696768743a204f2831292c204442205765696768743a3101202d20526561643a20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c2043757272656e74204572612c20486973746f72792044657074682c204c6f636b73e0202d2057726974653a20426f6e6465642c2050617965652c205b4f726967696e204163636f756e745d2c204c6f636b732c204c6564676572302023203c2f7765696768743e28626f6e645f657874726104386d61785f6164646974696f6e616c54436f6d706163743c42616c616e63654f663c543e3e5465012041646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e63652075703420666f72207374616b696e672e00510120557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e650120556e6c696b65205b60626f6e64605d206f72205b60756e626f6e64605d20746869732066756e6374696f6e20646f6573206e6f7420696d706f736520616e79206c696d69746174696f6e206f6e2074686520616d6f756e744c20746861742063616e2062652061646465642e00610120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c657220616e64f82069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e004020456d6974732060426f6e646564602e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e20202d204f2831292e40202d204f6e6520444220656e7472792e34202d2d2d2d2d2d2d2d2d2d2d2d2c204442205765696768743a1501202d20526561643a2045726120456c656374696f6e205374617475732c20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c204c6f636b73a4202d2057726974653a205b4f726967696e204163636f756e745d2c204c6f636b732c204c6564676572302023203c2f7765696768743e18756e626f6e64041476616c756554436f6d706163743c42616c616e63654f663c543e3e805501205363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e64010120706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e250120543a3a43757272656e63793a3a6d696e696d756d5f62616c616e636528292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e004901204f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c20796f752063616e2063616c6c206077697468647261775f756e626f6e6465646020746f2061637475616c6c79206d6f7665c0207468652066756e6473206f7574206f66206d616e6167656d656e7420726561647920666f72207472616e736665722e003d01204e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d41585f554e4c4f434b494e475f4348554e4b5360293d012063616e20636f2d657869737473206174207468652073616d652074696d652e20496e207468617420636173652c205b6043616c6c3a3a77697468647261775f756e626f6e646564605d206e656564fc20746f2062652063616c6c656420666972737420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0d0120416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e004820456d6974732060556e626f6e646564602e00982053656520616c736f205b6043616c6c3a3a77697468647261775f756e626f6e646564605d2e002c2023203c7765696768743e4101202d20496e646570656e64656e74206f662074686520617267756d656e74732e204c696d697465642062757420706f74656e7469616c6c79206578706c6f697461626c6520636f6d706c65786974792e98202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732e6501202d20456163682063616c6c20287265717569726573207468652072656d61696e646572206f662074686520626f6e6465642062616c616e636520746f2062652061626f766520606d696e696d756d5f62616c616e63656029710120202077696c6c2063617573652061206e657720656e74727920746f20626520696e73657274656420696e746f206120766563746f722028604c65646765722e756e6c6f636b696e676029206b65707420696e2073746f726167652e5101202020546865206f6e6c792077617920746f20636c65616e207468652061666f72656d656e74696f6e65642073746f72616765206974656d20697320616c736f20757365722d636f6e74726f6c6c6564207669615c2020206077697468647261775f756e626f6e646564602e40202d204f6e6520444220656e7472792e2c202d2d2d2d2d2d2d2d2d2d34205765696768743a204f2831292c204442205765696768743a2501202d20526561643a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e744572612c204c6f636b732c205c5b4f726967696e204163636f756e745c5dac202d2057726974653a204c6f636b732c204c65646765722c205c5b4f726967696e204163636f756e745c5d28203c2f7765696768743e4477697468647261775f756e626f6e64656404486e756d5f736c617368696e675f7370616e730c7533327c2d012052656d6f766520616e7920756e6c6f636b6564206368756e6b732066726f6d207468652060756e6c6f636b696e67602071756575652066726f6d206f7572206d616e6167656d656e742e003501205468697320657373656e7469616c6c7920667265657320757020746861742062616c616e636520746f206265207573656420627920746865207374617368206163636f756e7420746f20646f4c2077686174657665722069742077616e74732e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0d0120416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e004c20456d697473206057697468647261776e602e006c2053656520616c736f205b6043616c6c3a3a756e626f6e64605d2e002c2023203c7765696768743e5501202d20436f756c6420626520646570656e64656e74206f6e2074686520606f726967696e6020617267756d656e7420616e6420686f77206d7563682060756e6c6f636b696e6760206368756e6b732065786973742e45012020497420696d706c6965732060636f6e736f6c69646174655f756e6c6f636b656460207768696368206c6f6f7073206f76657220604c65646765722e756e6c6f636b696e67602c207768696368206973f42020696e6469726563746c7920757365722d636f6e74726f6c6c65642e20536565205b60756e626f6e64605d20666f72206d6f72652064657461696c2e7901202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732c20796574207468652073697a65206f6620776869636820636f756c64206265206c61726765206261736564206f6e20606c6564676572602ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e40202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d090120436f6d706c6578697479204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2072656d6f766520205570646174653a2501202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c204c6f636b732c205b4f726967696e204163636f756e745da8202d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c656467657218204b696c6c3a4501202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c20426f6e6465642c20536c617368696e67205370616e732c205b4f726967696e482020204163636f756e745d2c204c6f636b735101202d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c682020205b4f726967696e204163636f756e745d2c204c6f636b7374202d2057726974657320456163683a205370616e536c617368202a20530d01204e4f54453a2057656967687420616e6e6f746174696f6e20697320746865206b696c6c207363656e6172696f2c20776520726566756e64206f74686572776973652e302023203c2f7765696768743e2076616c6964617465041470726566733856616c696461746f72507265667344e8204465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e00dc20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0d0120416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e98202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e30202d2d2d2d2d2d2d2d2d2d2d34205765696768743a204f2831292c204442205765696768743a90202d20526561643a2045726120456c656374696f6e205374617475732c204c656467657280202d2057726974653a204e6f6d696e61746f72732c2056616c696461746f7273302023203c2f7765696768743e206e6f6d696e617465041c74617267657473a05665633c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e4c1101204465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e00510120456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e20546869732063616e206f6e6c792062652063616c6c6564207768656e8c205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0d0120416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002c2023203c7765696768743e3101202d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f662060746172676574736020284e2901012077686963682069732063617070656420617420436f6d7061637441737369676e6d656e74733a3a4c494d495420284d41585f4e4f4d494e4154494f4e53292ed8202d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e28202d2d2d2d2d2d2d2d2d34205765696768743a204f284e2984207768657265204e20697320746865206e756d626572206f6620746172676574732c204442205765696768743ac8202d2052656164733a2045726120456c656374696f6e205374617475732c204c65646765722c2043757272656e742045726184202d205772697465733a2056616c696461746f72732c204e6f6d696e61746f7273302023203c2f7765696768743e146368696c6c0044c8204465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e00dc20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0d0120416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e54202d20436f6e7461696e73206f6e6520726561642ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e24202d2d2d2d2d2d2d2d34205765696768743a204f2831292c204442205765696768743a88202d20526561643a20457261456c656374696f6e5374617475732c204c656467657280202d2057726974653a2056616c696461746f72732c204e6f6d696e61746f7273302023203c2f7765696768743e247365745f7061796565041470617965657c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e40b8202852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e00dc20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e98202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e28202d2d2d2d2d2d2d2d2d3c202d205765696768743a204f28312934202d204442205765696768743a4c20202020202d20526561643a204c65646765724c20202020202d2057726974653a205061796565302023203c2f7765696768743e387365745f636f6e74726f6c6c65720428636f6e74726f6c6c65728c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263654090202852652d297365742074686520636f6e74726f6c6c6572206f6620612073746173682e00dc20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e98202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e2c202d2d2d2d2d2d2d2d2d2d34205765696768743a204f2831292c204442205765696768743af4202d20526561643a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c6572f8202d2057726974653a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c6572302023203c2f7765696768743e4c7365745f76616c696461746f725f636f756e74040c6e657730436f6d706163743c7533323e209420536574732074686520696465616c206e756d626572206f662076616c696461746f72732e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743e34205765696768743a204f2831295c2057726974653a2056616c696461746f7220436f756e74302023203c2f7765696768743e60696e6372656173655f76616c696461746f725f636f756e7404286164646974696f6e616c30436f6d706163743c7533323e1cac20496e6372656d656e74732074686520696465616c206e756d626572206f662076616c696461746f72732e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743e842053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e302023203c2f7765696768743e547363616c655f76616c696461746f725f636f756e740418666163746f721c50657263656e741cd4205363616c652075702074686520696465616c206e756d626572206f662076616c696461746f7273206279206120666163746f722e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743e842053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e302023203c2f7765696768743e686164645f7065726d697373696f6e65645f76616c696461746f7208206964656e74697479284964656e74697479496438696e74656e6465645f636f756e742c4f7074696f6e3c7533323e20410120476f7665726e616e636520636f6d6d6974746565206f6e20322f3320726473206d616a6f726974792063616e20696e74726f647563652061206e657720706f74656e7469616c206964656e74697479a10120746f2074686520706f6f6c206f66207065726d697373696f6e656420656e7469746965732077686f2063616e2072756e2076616c696461746f72732e205374616b696e67206d6f64756c65207573657320605065726d697373696f6e65644964656e7469747960590120746f20656e737572652076616c696461746f7273206861766520636f6d706c65746564204b594220636f6d706c69616e636520616e6420636f6e736964657273207468656d20666f722076616c69646174696f6e2e0030202320417267756d656e7473ec202a206f726967696e205265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e8c202a206964656e746974792056616c696461746f722773204964656e7469747949642e0901202a20696e74656e6465645f636f756e74204e6f2e206f662076616c696461746f727320676976656e206964656e7469747920696e74656e647320746f2072756e2e7472656d6f76655f7065726d697373696f6e65645f76616c696461746f7204206964656e74697479284964656e7469747949641cad012052656d6f766520616e206964656e746974792066726f6d2074686520706f6f6c206f66202877616e6e616265292076616c696461746f72206964656e7469746965732e204566666563747320617265206b6e6f776e20696e20746865206e6578742073657373696f6e2e1d01205374616b696e67206d6f64756c6520636865636b7320605065726d697373696f6e65644964656e746974796020746f20656e737572652076616c696461746f727320686176656420636f6d706c65746564204b594220636f6d706c69616e63650030202320417267756d656e7473f4202a206f726967696e205265717569726564206f726967696e20666f722072656d6f76696e67206120706f74656e7469616c2076616c696461746f722e8c202a206964656e746974792056616c696461746f722773204964656e7469747949642e7876616c69646174655f6364645f6578706972795f6e6f6d696e61746f7273041c74617267657473445665633c543a3a4163636f756e7449643e28a42056616c696461746520746865206e6f6d696e61746f727320434444206578706972792074696d652e00f420496620616e206163636f756e742066726f6d206120676976656e20736574206f662061646472657373206973206e6f6d696e6174696e67207468656ed420636865636b2074686520434444206578706972792074696d65206f6620697420616e6420696620697420697320657870697265643501207468656e20746865206163636f756e742073686f756c6420626520756e626f6e64656420616e642072656d6f7665642066726f6d20746865206e6f6d696e6174696e672070726f636573732e002820233c7765696768743e9c202d20446570656e6473206f6e20706173736564206c697374206f66204163636f756e7449642e2d01202d20446570656e6473206f6e20746865206e6f2e206f6620636c61696d206973737565727320616e206163636f756e7449642068617320666f722074686520434444206578706972792e2c20233c2f7765696768743e487365745f636f6d6d697373696f6e5f636170041c6e65775f6361701c50657262696c6c142501204368616e67657320636f6d6d697373696f6e2072617465207768696368206170706c69657320746f20616c6c2076616c696461746f72732e204f6e6c7920476f7665726e616e6365ac20636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e0030202320417267756d656e747390202a20606e65775f6361706020746865206e657720636f6d6d697373696f6e206361702e587365745f6d696e5f626f6e645f7468726573686f6c6404246e65775f76616c75653042616c616e63654f663c543e140501204368616e676573206d696e20626f6e642076616c756520746f206265207573656420696e2076616c696461746528292e204f6e6c7920476f7665726e616e6365ac20636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e0030202320417267756d656e747378202a20606e65775f76616c75656020746865206e6577206d696e696d756d34666f7263655f6e6f5f657261730024b020466f72636520746865726520746f206265206e6f206e6577206572617320696e646566696e6974656c792e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743e40202d204e6f20617267756d656e74732e3c202d205765696768743a204f28312948202d2057726974653a20466f726365457261302023203c2f7765696768743e34666f7263655f6e65775f65726100284d0120466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f6620746865206e6578742073657373696f6e2e20416674657220746869732c2069742077696c6c206265a020726573657420746f206e6f726d616c20286e6f6e2d666f7263656429206265686176696f75722e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743e40202d204e6f20617267756d656e74732e3c202d205765696768743a204f28312944202d20577269746520466f726365457261302023203c2f7765696768743e447365745f696e76756c6e657261626c65730434696e76756c6e657261626c6573445665633c543a3a4163636f756e7449643e20cc20536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743e1c202d204f2856295c202d2057726974653a20496e76756c6e657261626c6573302023203c2f7765696768743e34666f7263655f756e7374616b650814737461736830543a3a4163636f756e744964486e756d5f736c617368696e675f7370616e730c753332280d0120466f72636520612063757272656e74207374616b657220746f206265636f6d6520636f6d706c6574656c7920756e7374616b65642c20696d6d6564696174656c792e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743eec204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2062652072656d6f766564b82052656164733a20426f6e6465642c20536c617368696e67205370616e732c204163636f756e742c204c6f636b738501205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c204163636f756e742c204c6f636b736c2057726974657320456163683a205370616e536c617368202a2053302023203c2f7765696768743e50666f7263655f6e65775f6572615f616c776179730020050120466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f662073657373696f6e7320696e646566696e6974656c792e008820546865206469737061746368206f726967696e206d75737420626520526f6f742e002c2023203c7765696768743e3c202d205765696768743a204f28312948202d2057726974653a20466f726365457261302023203c2f7765696768743e5463616e63656c5f64656665727265645f736c617368080c65726120457261496e64657834736c6173685f696e6469636573205665633c7533323e34982043616e63656c20656e6163746d656e74206f66206120646566657272656420736c6173682e00b42043616e2062652063616c6c6564206279207468652060543a3a536c61736843616e63656c4f726967696e602e00050120506172616d65746572733a2065726120616e6420696e6469636573206f662074686520736c617368657320666f7220746861742065726120746f206b696c6c2e002c2023203c7765696768743e5420436f6d706c65786974793a204f2855202b205329b82077697468205520756e6170706c69656420736c6173686573207765696768746564207769746820553d31303030d420616e64205320697320746865206e756d626572206f6620736c61736820696e646963657320746f2062652063616e63656c65642e68202d20526561643a20556e6170706c69656420536c61736865736c202d2057726974653a20556e6170706c69656420536c6173686573302023203c2f7765696768743e387061796f75745f7374616b657273083c76616c696461746f725f737461736830543a3a4163636f756e7449640c65726120457261496e64657864110120506179206f757420616c6c20746865207374616b65727320626568696e6420612073696e676c652076616c696461746f7220666f7220612073696e676c65206572612e004d01202d206076616c696461746f725f73746173686020697320746865207374617368206163636f756e74206f66207468652076616c696461746f722e205468656972206e6f6d696e61746f72732c20757020746f290120202060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602c2077696c6c20616c736f207265636569766520746865697220726577617264732e3501202d206065726160206d617920626520616e7920657261206265747765656e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e00590120546865206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2e20416e79206163636f756e742063616e2063616c6c20746869732066756e6374696f6e2c206576656e20696678206974206973206e6f74206f6e65206f6620746865207374616b6572732e00010120546869732063616e206f6e6c792062652063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002c2023203c7765696768743e0101202d2054696d6520636f6d706c65786974793a206174206d6f7374204f284d61784e6f6d696e61746f72526577617264656450657256616c696461746f72292ec4202d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e30202d2d2d2d2d2d2d2d2d2d2d1d01204e20697320746865204e756d626572206f66207061796f75747320666f72207468652076616c696461746f722028696e636c7564696e67207468652076616c696461746f722920205765696768743a88202d205265776172642044657374696e6174696f6e205374616b65643a204f284e29c4202d205265776172642044657374696e6174696f6e20436f6e74726f6c6c657220284372656174696e67293a204f284e292c204442205765696768743a2901202d20526561643a20457261456c656374696f6e5374617475732c2043757272656e744572612c20486973746f727944657074682c204572617356616c696461746f725265776172642c2d01202020202020202020457261735374616b657273436c69707065642c2045726173526577617264506f696e74732c204572617356616c696461746f725072656673202838206974656d73291101202d205265616420456163683a20426f6e6465642c204c65646765722c2050617965652c204c6f636b732c2053797374656d204163636f756e74202835206974656d7329d8202d20577269746520456163683a2053797374656d204163636f756e742c204c6f636b732c204c6564676572202833206974656d7329302023203c2f7765696768743e187265626f6e64041476616c756554436f6d706163743c42616c616e63654f663c543e3e38e0205265626f6e64206120706f7274696f6e206f6620746865207374617368207363686564756c656420746f20626520756e6c6f636b65642e00550120546865206469737061746368206f726967696e206d757374206265207369676e65642062792074686520636f6e74726f6c6c65722c20616e642069742063616e206265206f6e6c792063616c6c6564207768656e8c205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002c2023203c7765696768743ed4202d2054696d6520636f6d706c65786974793a204f284c292c207768657265204c20697320756e6c6f636b696e67206368756e6b7394202d20426f756e64656420627920604d41585f554e4c4f434b494e475f4348554e4b53602ef4202d2053746f72616765206368616e6765733a2043616e277420696e6372656173652073746f726167652c206f6e6c792064656372656173652069742e40202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d34202d204442205765696768743a010120202020202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c204c6f636b732c205b4f726967696e204163636f756e745db820202020202d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c6564676572302023203c2f7765696768743e447365745f686973746f72795f646570746808446e65775f686973746f72795f646570746844436f6d706163743c457261496e6465783e485f6572615f6974656d735f64656c6574656430436f6d706163743c7533323e543101205365742060486973746f72794465707468602076616c75652e20546869732066756e6374696f6e2077696c6c2064656c65746520616e7920686973746f727920696e666f726d6174696f6e80207768656e2060486973746f727944657074686020697320726564756365642e003020506172616d65746572733a1101202d20606e65775f686973746f72795f6465707468603a20546865206e657720686973746f727920646570746820796f7520776f756c64206c696b6520746f207365742e4901202d20606572615f6974656d735f64656c65746564603a20546865206e756d626572206f66206974656d7320746861742077696c6c2062652064656c6574656420627920746869732064697370617463682e450120202020546869732073686f756c64207265706f727420616c6c207468652073746f72616765206974656d7320746861742077696c6c2062652064656c6574656420627920636c656172696e67206f6c6445012020202065726120686973746f72792e204e656564656420746f207265706f727420616e2061636375726174652077656967687420666f72207468652064697370617463682e2054727573746564206279a02020202060526f6f746020746f207265706f727420616e206163637572617465206e756d6265722e0054204f726967696e206d75737420626520726f6f742e002c2023203c7765696768743ee0202d20453a204e756d626572206f6620686973746f7279206465707468732072656d6f7665642c20692e652e203130202d3e2037203d20333c202d205765696768743a204f28452934202d204442205765696768743aa020202020202d2052656164733a2043757272656e74204572612c20486973746f72792044657074687020202020202d205772697465733a20486973746f7279204465707468310120202020202d20436c6561722050726566697820456163683a20457261205374616b6572732c204572615374616b657273436c69707065642c204572617356616c696461746f725072656673810120202020202d2057726974657320456163683a204572617356616c696461746f725265776172642c2045726173526577617264506f696e74732c2045726173546f74616c5374616b652c2045726173537461727453657373696f6e496e646578302023203c2f7765696768743e28726561705f73746173680814737461736830543a3a4163636f756e744964486e756d5f736c617368696e675f7370616e730c7533323c61012052656d6f766520616c6c20646174612073747275637475726520636f6e6365726e696e672061207374616b65722f7374617368206f6e6365206974732062616c616e636520697320617420746865206d696e696d756d2e6101205468697320697320657373656e7469616c6c79206571756976616c656e7420746f206077697468647261775f756e626f6e64656460206578636570742069742063616e2062652063616c6c656420627920616e796f6e65f820616e6420746865207461726765742060737461736860206d7573742068617665206e6f2066756e6473206c656674206265796f6e64207468652045442e009020546869732063616e2062652063616c6c65642066726f6d20616e79206f726967696e2e000101202d20607374617368603a20546865207374617368206163636f756e7420746f20726561702e204974732062616c616e6365206d757374206265207a65726f2e002c2023203c7765696768743e250120436f6d706c65786974793a204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e73206f6e20746865206163636f756e742e2c204442205765696768743ad8202d2052656164733a205374617368204163636f756e742c20426f6e6465642c20536c617368696e67205370616e732c204c6f636b73a501202d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c205374617368204163636f756e742c204c6f636b7374202d2057726974657320456163683a205370616e536c617368202a2053302023203c2f7765696768743e607375626d69745f656c656374696f6e5f736f6c7574696f6e141c77696e6e6572734c5665633c56616c696461746f72496e6465783e1c636f6d7061637448436f6d7061637441737369676e6d656e74731473636f726534456c656374696f6e53636f72650c65726120457261496e6465781073697a6530456c656374696f6e53697a65c4e4205375626d697420616e20656c656374696f6e20726573756c7420746f2074686520636861696e2e2049662074686520736f6c7574696f6e3a003420312e2069732076616c69642e150120322e206861732061206265747465722073636f7265207468616e206120706f74656e7469616c6c79206578697374696e6720736f6c7574696f6e206f6e20636861696e2e0084207468656e2c2069742077696c6c206265205f7075745f206f6e20636861696e2e00ac204120736f6c7574696f6e20636f6e7369737473206f662074776f20706965636573206f6620646174613a00f420312e206077696e6e657273603a206120666c617420766563746f72206f6620616c6c207468652077696e6e657273206f662074686520726f756e642e510120322e206061737369676e6d656e7473603a2074686520636f6d706163742076657273696f6e206f6620616e2061737369676e6d656e7420766563746f72207468617420656e636f6465732074686520656467653020202020776569676874732e00210120426f7468206f66207768696368206d617920626520636f6d7075746564207573696e67205f70687261676d656e5f2c206f7220616e79206f7468657220616c676f726974686d2e00a8204164646974696f6e616c6c792c20746865207375626d6974746572206d7573742070726f766964653a00c8202d20546865206073636f7265602074686174207468657920636c61696d20746865697220736f6c7574696f6e206861732e004d0120426f74682076616c696461746f727320616e64206e6f6d696e61746f72732077696c6c20626520726570726573656e74656420627920696e646963657320696e2074686520736f6c7574696f6e2e205468651d0120696e64696365732073686f756c6420726573706563742074686520636f72726573706f6e64696e6720747970657320285b6056616c696461746f72496e646578605d20616e643101205b604e6f6d696e61746f72496e646578605d292e204d6f72656f7665722c20746865792073686f756c642062652076616c6964207768656e207573656420746f20696e64657820696e746f5101205b60536e617073686f7456616c696461746f7273605d20616e64205b60536e617073686f744e6f6d696e61746f7273605d2e20416e7920696e76616c696420696e6465782077696c6c20636175736520746865610120736f6c7574696f6e20746f2062652072656a65637465642e2054686573652074776f2073746f72616765206974656d73206172652073657420647572696e672074686520656c656374696f6e2077696e646f7720616e6498206d6179206265207573656420746f2064657465726d696e652074686520696e64696365732e0060204120736f6c7574696f6e2069732076616c69642069663a00e420302e204974206973207375626d6974746564207768656e205b60457261456c656374696f6e537461747573605d20697320604f70656e602ef820312e2049747320636c61696d65642073636f726520697320657175616c20746f207468652073636f726520636f6d7075746564206f6e2d636861696e2eac20322e2050726573656e74732074686520636f7272656374206e756d626572206f662077696e6e6572732e550120332e20416c6c20696e6465786573206d7573742062652076616c7565206163636f7264696e6720746f2074686520736e617073686f7420766563746f72732e20416c6c20656467652076616c756573206d7573745d0120202020616c736f20626520636f727265637420616e642073686f756c64206e6f74206f766572666c6f7720746865206772616e756c6172697479206f662074686520726174696f20747970652028692e652e2032353640202020206f722062696c6c696f6e292e0d0120342e20466f72206561636820656467652c20616c6c2074617267657473206172652061637475616c6c79206e6f6d696e617465642062792074686520766f7465722e6c20352e2048617320636f72726563742073656c662d766f7465732e00c0204120736f6c7574696f6e732073636f726520697320636f6e736973746564206f66203320706172616d65746572733a00650120312e20606d696e207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d6178696d697a65642e650120322e206073756d207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d696e696d697a65642e410120332e206073756d207b20737570706f72742e746f74616c5e32207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c642062659c202020206d696e696d697a65642028746f20656e73757265206c6573732076617269616e636529002c2023203c7765696768743e190120546865207472616e73616374696f6e20697320617373756d656420746f20626520746865206c6f6e6765737420706174682c20612062657474657220736f6c7574696f6e2ea42020202d20496e697469616c20736f6c7574696f6e20697320616c6d6f7374207468652073616d652e45012020202d20576f72736520736f6c7574696f6e20697320726574726163656420696e207072652d64697370617463682d636865636b73207768696368207365747320697473206f776e207765696768742e302023203c2f7765696768743e847375626d69745f656c656374696f6e5f736f6c7574696f6e5f756e7369676e6564141c77696e6e6572734c5665633c56616c696461746f72496e6465783e1c636f6d7061637448436f6d7061637441737369676e6d656e74731473636f726534456c656374696f6e53636f72650c65726120457261496e6465781073697a6530456c656374696f6e53697a6524c020556e7369676e65642076657273696f6e206f6620607375626d69745f656c656374696f6e5f736f6c7574696f6e602e005d01204e6f746520746861742074686973206d757374207061737320746865205b6056616c6964617465556e7369676e6564605d20636865636b207768696368206f6e6c7920616c6c6f7773207472616e73616374696f6e7361012066726f6d20746865206c6f63616c206e6f646520746f20626520696e636c756465642e20496e206f7468657220776f7264732c206f6e6c792074686520626c6f636b20617574686f722063616e20696e636c756465206168207472616e73616374696f6e20696e2074686520626c6f636b2e002c2023203c7765696768743e8820536565205b607375626d69745f656c656374696f6e5f736f6c7574696f6e605d2e302023203c2f7765696768743e607061796f75745f7374616b6572735f62795f73797374656d083c76616c696461746f725f737461736830543a3a4163636f756e7449640c65726120457261496e6465780425012053797374656d2076657273696f6e206f6620607061796f75745f7374616b6572732829602e204f6e6c792062652063616c6c65642062792074686520726f6f74206f726967696e2e6c6368616e67655f736c617368696e675f616c6c6f7765645f666f72043c736c617368696e675f73776974636838536c617368696e67537769746368146d012053776974636820736c617368696e6720737461747573206f6e20746865206261736973206f6620676976656e2060536c617368696e67537769746368602e2043616e206f6e6c792062652063616c6c656420627920726f6f742e0030202320417267756d656e747378202a206f726967696e202d204163636f756e744964206f6620726f6f742e0501202a20736c617368696e675f737769746368202d20537769746368207573656420746f2073657420746865207461726765747320666f7220736c617368696e672eb07570646174655f7065726d697373696f6e65645f76616c696461746f725f696e74656e6465645f636f756e7408206964656e74697479284964656e746974794964486e65775f696e74656e6465645f636f756e740c75333218d4205570646174652074686520696e74656e6465642076616c696461746f7220636f756e7420666f72206120676976656e204449442e0030202320417267756d656e74733501202a206f726967696e207768696368206d75737420626520746865207265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e88202a206964656e7469747920746f2061646420617320612076616c696461746f722ec8202a206e65775f696e74656e6465645f636f756e74204e65772076616c7565206f6620696e74656e64656420636f756e742e0144244572615061796f75740c20457261496e6465781c42616c616e63651c42616c616e63650c59012054686520657261207061796f757420686173206265656e207365743b207468652066697273742062616c616e6365206973207468652076616c696461746f722d7061796f75743b20746865207365636f6e64206973c4207468652072656d61696e6465722066726f6d20746865206d6178696d756d20616d6f756e74206f66207265776172642eac205c5b6572615f696e6465782c2076616c696461746f725f7061796f75742c2072656d61696e6465725c5d185265776172640c284964656e746974794964244163636f756e7449641c42616c616e6365043d0120546865207374616b657220686173206265656e207265776172646564206279207468697320616d6f756e742e205c5b73746173685f6964656e746974792c2073746173682c20616d6f756e745c5d14536c61736808244163636f756e7449641c42616c616e6365082501204f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e58205c5b76616c696461746f722c20616d6f756e745c5d684f6c64536c617368696e675265706f7274446973636172646564043053657373696f6e496e646578081d0120416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c6490206e6f742062652070726f6365737365642e205c5b73657373696f6e5f696e6465785c5d3c5374616b696e67456c656374696f6e043c456c656374696f6e436f6d7075746504f42041206e657720736574206f66207374616b6572732077617320656c656374656420776974682074686520676976656e205c5b636f6d707574655c5d2e38536f6c7574696f6e53746f726564043c456c656374696f6e436f6d707574650419012041206e657720736f6c7574696f6e20666f7220746865207570636f6d696e6720656c656374696f6e20686173206265656e2073746f7265642e205c5b636f6d707574655c5d18426f6e6465640c284964656e746974794964244163636f756e7449641c42616c616e636510e820416e206163636f756e742068617320626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d005101204e4f54453a2054686973206576656e74206973206f6e6c7920656d6974746564207768656e2066756e64732061726520626f6e64656420766961206120646973706174636861626c652e204e6f7461626c792c25012069742077696c6c206e6f7420626520656d697474656420666f72207374616b696e672072657761726473207768656e20746865792061726520616464656420746f207374616b652e20556e626f6e6465640c284964656e746974794964244163636f756e7449641c42616c616e636504f020416e206163636f756e742068617320756e626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d244e6f6d696e617465640c284964656e746974794964244163636f756e744964385665633c4163636f756e7449643e048c2055736572206861732075706461746564207468656972206e6f6d696e6174696f6e732457697468647261776e08244163636f756e7449641c42616c616e6365085d0120416e206163636f756e74206861732063616c6c6564206077697468647261775f756e626f6e6465646020616e642072656d6f76656420756e626f6e64696e67206368756e6b7320776f727468206042616c616e636560b02066726f6d2074686520756e6c6f636b696e672071756575652e205c5b73746173682c20616d6f756e745c5d645065726d697373696f6e65644964656e74697479416464656408284964656e746974794964284964656e74697479496408f020416e20444944206861732069737375656420612063616e6469646163792e2053656520746865207472616e73616374696f6e20666f722077686f2e90204743206964656e74697479202c2056616c696461746f722773206964656e746974792e6c5065726d697373696f6e65644964656e7469747952656d6f76656408284964656e746974794964284964656e74697479496408ec2054686520676976656e206d656d626572207761732072656d6f7665642e2053656520746865207472616e73616374696f6e20666f722077686f2e90204743206964656e74697479202c2056616c696461746f722773206964656e746974792e54496e76616c6964617465644e6f6d696e61746f72730c284964656e746974794964244163636f756e744964385665633c4163636f756e7449643e0821012052656d6f766520746865206e6f6d696e61746f72732066726f6d207468652076616c6964206e6f6d696e61746f7273207768656e2074686572652043444420657870697265642e982043616c6c65722c205374617368206163636f756e744964206f66206e6f6d696e61746f727350436f6d6d697373696f6e436170557064617465640c284964656e7469747949641c50657262696c6c1c50657262696c6c0884205768656e20636f6d6d697373696f6e206361702067657420757064617465642e5c20286f6c642076616c75652c206e65772076616c7565296c4d696e696d756d426f6e645468726573686f6c645570646174656408484f7074696f6e3c4964656e7469747949643e1c42616c616e636504b0204d696e20626f6e64207468726573686f6c6420776173207570646174656420286e65772076616c7565292e885265776172645061796d656e745363686564756c696e67496e7465727275707465640c244163636f756e74496420457261496e6465783444697370617463684572726f7204d0205768656e207363686564756c696e67206f6620726577617264207061796d656e74732067657420696e7465727275707465642e64536c617368696e67416c6c6f776564466f724368616e6765640438536c617368696e6753776974636804942055706461746520666f722077686f6d2062616c616e63652067657420736c61736865642e2c3853657373696f6e735065724572613053657373696f6e496e64657810030000000470204e756d626572206f662073657373696f6e7320706572206572612e3c426f6e64696e674475726174696f6e20457261496e646578100700000004e4204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e48536c61736844656665724475726174696f6e20457261496e6465781004000000140101204e756d626572206f662065726173207468617420736c6173686573206172652064656665727265642062792c20616674657220636f6d7075746174696f6e2e00bc20546869732073686f756c64206265206c657373207468616e2074686520626f6e64696e67206475726174696f6e2e2d012053657420746f203020696620736c61736865732073686f756c64206265206170706c69656420696d6d6564696174656c792c20776974686f7574206f70706f7274756e69747920666f723820696e74657276656e74696f6e2e44456c656374696f6e4c6f6f6b616865616438543a3a426c6f636b4e756d626572104b0000001c710120546865206e756d626572206f6620626c6f636b73206265666f72652074686520656e64206f6620746865206572612066726f6d20776869636820656c656374696f6e207375626d697373696f6e732061726520616c6c6f7765642e006d012053657474696e67207468697320746f207a65726f2077696c6c2064697361626c6520746865206f6666636861696e20636f6d7075746520616e64206f6e6c79206f6e2d636861696e207365712d70687261676d656e2077696c6c2420626520757365642e007501205468697320697320626f756e646564206279206265696e672077697468696e20746865206c6173742073657373696f6e2e2048656e63652c2073657474696e6720697420746f20612076616c7565206d6f7265207468616e207468659c206c656e677468206f6620612073657373696f6e2077696c6c20626520706f696e746c6573732e344d6178497465726174696f6e730c753332100a0000000c2901204d6178696d756d206e756d626572206f662062616c616e63696e6720697465726174696f6e7320746f2072756e20696e20746865206f6666636861696e207375626d697373696f6e2e00ec2049662073657420746f20302c2062616c616e63655f736f6c7574696f6e2077696c6c206e6f7420626520657865637574656420617420616c6c2e504d696e536f6c7574696f6e53636f726542756d701c50657262696c6c1020a1070004610120546865207468726573686f6c64206f6620696d70726f76656d656e7420746861742073686f756c642062652070726f766964656420666f722061206e657720736f6c7574696f6e20746f2062652061636365707465642e804d61784e6f6d696e61746f72526577617264656450657256616c696461746f720c753332100008000010f820546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320726577617264656420666f7220656163682076616c696461746f722e00690120466f7220656163682076616c696461746f72206f6e6c79207468652060244d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732063616e20636c61696d2101207468656972207265776172642e2054686973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e5c4d617856616c696461746f725065724964656e746974791c5065726d696c6c10100905000cf4204d6178696d756d206e756d626572206f662076616c696461746f727320666f722065616368207065726d697373696f6e6564206964656e746974792e005901204d6178206e756d626572206f662076616c696461746f727320636f756e74203d20604d617856616c696461746f725065724964656e74697479202a2053656c663a3a76616c696461746f725f636f756e742829602e844d61785661726961626c65496e666c6174696f6e546f74616c49737375616e63653042616c616e63654f663c543e400080c6a47e8d03000000000000000000047101204d6178696d756d20616d6f756e74206f662060543a3a63757272656e63793a3a746f74616c5f69737375616e63652829602061667465722074686174206e6f6e2d696e666c6174656420726577617264732067657420706169642e444669786564596561726c795265776172643042616c616e63654f663c543e4000c0444a547f0000000000000000000004010120546f74616c2079656172207265776172647320746861742067657473207061696420647572696e6720666978656420726577617264207363686564756c652e2c4d696e696d756d426f6e643042616c616e63654f663c543e4040420f0000000000000000000000000004f0204d696e696d756d20616d6f756e74206f6620504f4c59582074686174206d75737420626520626f6e64656420666f722061206e657720626f6e642ea8344e6f74436f6e74726f6c6c65720468204e6f74206120636f6e74726f6c6c6572206163636f756e742e204e6f7453746173680454204e6f742061207374617368206163636f756e742e34416c7265616479426f6e646564046420537461736820697320616c726561647920626f6e6465642e34416c7265616479506169726564047820436f6e74726f6c6c657220697320616c7265616479207061697265642e30456d70747954617267657473046420546172676574732063616e6e6f7420626520656d7074792e44496e76616c6964536c617368496e646578048820536c617368207265636f726420696e646578206f7574206f6620626f756e64732e44496e73756666696369656e7456616c756504cc2043616e206e6f7420626f6e6420776974682076616c7565206c657373207468616e206d696e696d756d2062616c616e63652e304e6f4d6f72654368756e6b7304942043616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b732e344e6f556e6c6f636b4368756e6b04a42043616e206e6f74207265626f6e6420776974686f757420756e6c6f636b696e67206368756e6b732e3046756e64656454617267657404cc20417474656d7074696e6720746f2074617267657420612073746173682074686174207374696c6c206861732066756e64732e48496e76616c6964457261546f526577617264045c20496e76616c69642065726120746f207265776172642e484e6f74536f72746564416e64556e697175650484204974656d7320617265206e6f7420736f7274656420616e6420756e697175652e38416c7265616479436c61696d6564040d01205265776172647320666f72207468697320657261206861766520616c7265616479206265656e20636c61696d656420666f7220746869732076616c696461746f722e7c4f6666636861696e456c656374696f6e4561726c795375626d697373696f6e04e420546865207375626d697474656420726573756c74206973207265636569766564206f7574206f6620746865206f70656e2077696e646f772e784f6666636861696e456c656374696f6e5765616b5375626d697373696f6e04010120546865207375626d697474656420726573756c74206973206e6f7420617320676f6f6420617320746865206f6e652073746f726564206f6e20636861696e2e4c536e617073686f74556e617661696c61626c6504d02054686520736e617073686f742064617461206f66207468652063757272656e742077696e646f77206973206d697373696e672e804f6666636861696e456c656374696f6e426f67757357696e6e6572436f756e7404b020496e636f7272656374206e756d626572206f662077696e6e65727320776572652070726573656e7465642e6c4f6666636861696e456c656374696f6e426f67757357696e6e6572086101204f6e65206f6620746865207375626d69747465642077696e6e657273206973206e6f7420616e206163746976652063616e646964617465206f6e20636861696e2028696e646578206973206f7574206f662072616e67653820696e20736e617073686f74292e704f6666636861696e456c656374696f6e426f677573436f6d70616374085d01204572726f72207768696c65206275696c64696e67207468652061737369676e6d656e7420747970652066726f6d2074686520636f6d706163742e20546869732063616e2068617070656e20696620616e20696e646578a820697320696e76616c69642c206f72206966207468652077656967687473205f6f766572666c6f775f2e784f6666636861696e456c656374696f6e426f6775734e6f6d696e61746f72041501204f6e65206f6620746865207375626d6974746564206e6f6d696e61746f7273206973206e6f7420616e20616374697665206e6f6d696e61746f72206f6e20636861696e2e7c4f6666636861696e456c656374696f6e426f6775734e6f6d696e6174696f6e044d01204f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e206564676520746f20776869636820746865792068617665206e6f7420766f746564206f6e20636861696e2e844f6666636861696e456c656374696f6e536c61736865644e6f6d696e6174696f6e086101204f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e2065646765207768696368206973207375626d6974746564206265666f726520746865206c617374206e6f6e2d7a65726f5420736c617368206f6620746865207461726765742e744f6666636861696e456c656374696f6e426f67757353656c66566f746504250120412073656c6620766f7465206d757374206f6e6c79206265206f726967696e617465642066726f6d20612076616c696461746f7220746f204f4e4c59207468656d73656c7665732e644f6666636861696e456c656374696f6e426f6775734564676504450120546865207375626d697474656420726573756c742068617320756e6b6e6f776e206564676573207468617420617265206e6f7420616d6f6e67207468652070726573656e7465642077696e6e6572732e684f6666636861696e456c656374696f6e426f67757353636f72650419012054686520636c61696d65642073636f726520646f6573206e6f74206d61746368207769746820746865206f6e6520636f6d70757465642066726f6d2074686520646174612e844f6666636861696e456c656374696f6e426f677573456c656374696f6e53697a6504782054686520656c656374696f6e2073697a6520697320696e76616c69642e3843616c6c4e6f74416c6c6f776564044901205468652063616c6c206973206e6f7420616c6c6f7765642061742074686520676976656e2074696d652064756520746f207265737472696374696f6e73206f6620656c656374696f6e20706572696f642e58496e636f7272656374536c617368696e675370616e7304b420496e636f7272656374206e756d626572206f6620736c617368696e67207370616e732070726f76696465642e34416c7265616479457869737473049c205065726d697373696f6e65642076616c696461746f7220616c7265616479206578697374732e244e6f74457869737473048c205065726d697373696f6e65642076616c696461746f72206e6f74206578697374732e204e6f4368616e67650464205570646174657320776974682073616d652076616c75652e60496e76616c696456616c696461746f724964656e7469747904bc20476976656e20706f74656e7469616c2076616c696461746f72206964656e7469747920697320696e76616c69642e68496e76616c696456616c696461746f72436f6d6d697373696f6e04a02056616c696461746f7220707265667320617265206e6f7420696e2076616c69642072616e67652e6453746173684964656e74697479446f65734e6f74457869737404d82056616c696461746f72206f72206e6f6d696e61746f72207374617368206964656e7469747920646f6573206e6f742065786973742e7053746173684964656e746974794e6f745065726d697373696f6e656404bc2056616c696461746f72207374617368206964656e7469747920776173206e6f74207065726d697373696f6e65642e5453746173684964656e746974794e6f744344446564047c204e6f6d696e61746f7220737461736820776173206e6f742043444465642e64486974496e74656e64656456616c696461746f72436f756e7404c02052756e6e696e672076616c696461746f7220636f756e74206869742074686520696e74656e64656420636f756e742e98496e74656e646564436f756e744973457863656564696e67436f6e73656e7375734c696d6974043901205768656e2074686520696e74656e646564206e756d626572206f662076616c696461746f727320746f2072756e206973203e3d20322f33206f66206076616c696461746f725f636f756e74602e30426f6e64546f6f536d616c6c04e0205768656e2074686520616d6f756e7420746f20626520626f6e646564206973206c657373207468616e20604d696e696d756d426f6e6460204261645374617465043d0120496e7465726e616c20737461746520686173206265636f6d6520736f6d65686f7720636f7272757074656420616e6420746865206f7065726174696f6e2063616e6e6f7420636f6e74696e75652e38546f6f4d616e7954617267657473049820546f6f206d616e79206e6f6d696e6174696f6e207461726765747320737570706c6965642e244261645461726765740441012041206e6f6d696e6174696f6e207461726765742077617320737570706c69656420746861742077617320626c6f636b6564206f72206f7468657277697365206e6f7420612076616c696461746f722e11204f6666656e63657301204f6666656e636573101c5265706f727473000105345265706f727449644f663c543ed04f6666656e636544657461696c733c543a3a4163636f756e7449642c20543a3a4964656e74696669636174696f6e5475706c653e00040004490120546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e4044656665727265644f6666656e6365730100645665633c44656665727265644f6666656e63654f663c543e3e0400086501204465666572726564207265706f72747320746861742068617665206265656e2072656a656374656420627920746865206f6666656e63652068616e646c657220616e64206e65656420746f206265207375626d6974746564442061742061206c617465722074696d652e58436f6e63757272656e745265706f727473496e646578010205104b696e64384f706171756554696d65536c6f74485665633c5265706f727449644f663c543e3e050400042901204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e485265706f72747342794b696e64496e646578010105104b696e641c5665633c75383e00040018110120456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e00bc20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e004901204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f66690120646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e010001041c4f6666656e63650c104b696e64384f706171756554696d65536c6f7410626f6f6c10550120546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e644d0120286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e206c617374190120656c656d656e7420696e64696361746573206f6620746865206f6666656e636520776173206170706c69656420287472756529206f7220717565756564202866616c73652974205c5b6b696e642c2074696d65736c6f742c206170706c6965645c5d2e0000121c53657373696f6e011c53657373696f6e1c2856616c696461746f727301004c5665633c543a3a56616c696461746f7249643e0400047c205468652063757272656e7420736574206f662076616c696461746f72732e3043757272656e74496e64657801003053657373696f6e496e646578100000000004782043757272656e7420696e646578206f66207468652073657373696f6e2e345175657565644368616e676564010010626f6f6c040008390120547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f7273a420686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e285175657565644b6579730100785665633c28543a3a56616c696461746f7249642c20543a3a4b657973293e0400083d012054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b657973e02077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e4844697361626c656456616c696461746f72730100205665633c7533323e04000c8020496e6469636573206f662064697361626c65642076616c696461746f72732e003501205468652073657420697320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e732061206e657720736574206f66206964656e7469746965732e204e6578744b65797300010538543a3a56616c696461746f7249641c543a3a4b657973000400049c20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e204b65794f776e657200010550284b65795479706549642c205665633c75383e2938543a3a56616c696461746f72496400040004090120546865206f776e6572206f662061206b65792e20546865206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e0108207365745f6b65797308106b6579731c543a3a4b6579731470726f6f661c5665633c75383e38e82053657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b657973602e210120416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722ec4205468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e00d420546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e002c2023203c7765696768743e54202d20436f6d706c65786974793a20604f28312960590120202041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468206f662060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642ef0202d20446252656164733a20606f726967696e206163636f756e74602c2060543a3a56616c696461746f7249644f66602c20604e6578744b65797360a4202d2044625772697465733a20606f726967696e206163636f756e74602c20604e6578744b6579736084202d204462526561647320706572206b65792069643a20604b65794f776e65726088202d20446257726974657320706572206b65792069643a20604b65794f776e657260302023203c2f7765696768743e2870757267655f6b6579730030cc2052656d6f76657320616e792073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c65722ec4205468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e00d420546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e002c2023203c7765696768743eb4202d20436f6d706c65786974793a20604f2831296020696e206e756d626572206f66206b65792074797065732e590120202041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468206f662060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642ef0202d20446252656164733a2060543a3a56616c696461746f7249644f66602c20604e6578744b657973602c20606f726967696e206163636f756e7460a4202d2044625772697465733a20604e6578744b657973602c20606f726967696e206163636f756e74608c202d20446257726974657320706572206b65792069643a20604b65794f776e64657260302023203c2f7765696768743e0104284e657753657373696f6e043053657373696f6e496e646578086501204e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e7420697320746865205c5b73657373696f6e5f696e6465785c5d2c206e6f742074686520626c6f636b88206e756d626572206173207468652074797065206d6967687420737567676573742e001430496e76616c696450726f6f66046420496e76616c6964206f776e6572736869702070726f6f662e5c4e6f4173736f63696174656456616c696461746f72496404a0204e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e344475706c6963617465644b657904682052656769737465726564206475706c6963617465206b65792e184e6f4b65797304a8204e6f206b65797320617265206173736f63696174656420776974682074686973206163636f756e742e244e6f4163636f756e74041d01204b65792073657474696e67206163636f756e74206973206e6f74206c6976652c20736f206974277320696d706f737369626c6520746f206173736f6369617465206b6579732e1348417574686f72697479446973636f76657279000100000000141c4772616e647061013c4772616e64706146696e616c6974791814537461746501006c53746f72656453746174653c543a3a426c6f636b4e756d6265723e04000490205374617465206f66207468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e676500008c53746f72656450656e64696e674368616e67653c543a3a426c6f636b4e756d6265723e040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000038543a3a426c6f636b4e756d626572040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c656400008028543a3a426c6f636b4e756d6265722c20543a3a426c6f636b4e756d626572290400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e3043757272656e7453657449640100145365744964200000000000000000085d0120546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c697469657329c420696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e30536574496453657373696f6e0001051453657449643053657373696f6e496e6465780004001059012041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e00b82054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e010c4c7265706f72745f65717569766f636174696f6e084865717569766f636174696f6e5f70726f6f66a845717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3c6b65795f6f776e65725f70726f6f6640543a3a4b65794f776e657250726f6f66100d01205265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f82065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66fc20616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e6365482077696c6c206265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e6564084865717569766f636174696f6e5f70726f6f66a845717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3c6b65795f6f776e65725f70726f6f6640543a3a4b65794f776e657250726f6f66240d01205265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f82065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66fc20616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e6365482077696c6c206265207265706f727465642e00110120546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c79190120626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c206173207375636819012069662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e28207265706f727465722e306e6f74655f7374616c6c6564081464656c617938543a3a426c6f636b4e756d6265726c626573745f66696e616c697a65645f626c6f636b5f6e756d62657238543a3a426c6f636b4e756d6265721c1d01204e6f74652074686174207468652063757272656e7420617574686f7269747920736574206f6620746865204752414e4450412066696e616c69747920676164676574206861732901207374616c6c65642e20546869732077696c6c2074726967676572206120666f7263656420617574686f7269747920736574206368616e67652061742074686520626567696e6e696e672101206f6620746865206e6578742073657373696f6e2c20746f20626520656e6163746564206064656c61796020626c6f636b7320616674657220746861742e205468652064656c617915012073686f756c64206265206869676820656e6f75676820746f20736166656c7920617373756d6520746861742074686520626c6f636b207369676e616c6c696e6720746865290120666f72636564206368616e67652077696c6c206e6f742062652072652d6f726765642028652e672e203130303020626c6f636b73292e20546865204752414e44504120766f7465727329012077696c6c20737461727420746865206e657720617574686f7269747920736574207573696e672074686520676976656e2066696e616c697a656420626c6f636b20617320626173652e5c204f6e6c792063616c6c61626c6520627920726f6f742e010c384e6577417574686f7269746965730434417574686f726974794c69737404d8204e657720617574686f726974792073657420686173206265656e206170706c6965642e205c5b617574686f726974795f7365745c5d1850617573656400049c2043757272656e7420617574686f726974792073657420686173206265656e207061757365642e1c526573756d65640004a02043757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e001c2c50617573654661696c656408090120417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665a8202865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e30526573756d654661696c656408150120417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e277420706175736564a42028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e344368616e676550656e64696e6704ec20417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e1c546f6f536f6f6e04c02043616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e60496e76616c69644b65794f776e65727368697050726f6f660435012041206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f6604350120416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f7274041901204120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e1528486973746f726963616c00000000001620496d4f6e6c696e650120496d4f6e6c696e6510384865617274626561744166746572010038543a3a426c6f636b4e756d62657210000000001831012054686520626c6f636b206e756d6265722061667465722077686963682069742773206f6b20746f2073656e64206865617274626561747320696e2063757272656e742073657373696f6e2e0011012041742074686520626567696e6e696e67206f6620656163682073657373696f6e20776520736574207468697320746f20612076616c756520746861742073686f756c64d02066616c6c20726f7567686c7920696e20746865206d6964646c65206f66207468652073657373696f6e206475726174696f6e2e010120546865206964656120697320746f206669727374207761697420666f72207468652076616c696461746f727320746f2070726f64756365206120626c6f636b390120696e207468652063757272656e742073657373696f6e2c20736f20746861742074686520686561727462656174206c61746572206f6e2077696c6c206e6f74206265206e65636573736172792e104b65797301004c5665633c543a3a417574686f7269747949643e040004d0205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e485265636569766564486561727462656174730002053053657373696f6e496e6465782441757468496e6465781c5665633c75383e05040008f020466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206041757468496e6465786020746f8020606f6666636861696e3a3a4f70617175654e6574776f726b5374617465602e38417574686f726564426c6f636b730102053053657373696f6e496e6465783856616c696461746f7249643c543e0c75333205100000000008150120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206056616c696461746f7249643c543e6020746f20746865c8206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e0104246865617274626561740824686561727462656174644865617274626561743c543a3a426c6f636b4e756d6265723e285f7369676e6174757265bc3c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e6174757265242c2023203c7765696768743e4101202d20436f6d706c65786974793a20604f284b202b20452960207768657265204b206973206c656e677468206f6620604b6579736020286865617274626561742e76616c696461746f72735f6c656e290101202020616e642045206973206c656e677468206f6620606865617274626561742e6e6574776f726b5f73746174652e65787465726e616c5f61646472657373608c2020202d20604f284b29603a206465636f64696e67206f66206c656e67746820604b60b02020202d20604f284529603a206465636f64696e672f656e636f64696e67206f66206c656e677468206045603d01202d20446252656164733a2070616c6c65745f73657373696f6e206056616c696461746f7273602c2070616c6c65745f73657373696f6e206043757272656e74496e646578602c20604b657973602c5c202020605265636569766564486561727462656174736084202d2044625772697465733a206052656365697665644865617274626561747360302023203c2f7765696768743e010c444865617274626561745265636569766564042c417574686f7269747949640405012041206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f72697479496460205c5b617574686f726974795f69645c5d1c416c6c476f6f640004d42041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2c536f6d654f66666c696e6504605665633c4964656e74696669636174696f6e5475706c653e043d012041742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e652076616c696461746f722077617320666f756e6420746f206265205c5b6f66666c696e655c5d2e000828496e76616c69644b65790464204e6f6e206578697374656e74207075626c6963206b65792e4c4475706c6963617465644865617274626561740458204475706c696361746564206865617274626561742e176052616e646f6d6e657373436f6c6c656374697665466c6970016052616e646f6d6e657373436f6c6c656374697665466c6970043852616e646f6d4d6174657269616c0100305665633c543a3a486173683e04000c610120536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e2054686973610120697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f664420746865206f6c6465737420686173682e010000000018105375646f01105375646f040c4b6579010030543a3a4163636f756e74496480000000000000000000000000000000000000000000000000000000000000000004842054686520604163636f756e74496460206f6620746865207375646f206b65792e0110107375646f041063616c6c60426f783c3c5420617320436f6e6669673e3a3a43616c6c3e2839012041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c2023203c7765696768743e20202d204f2831292e64202d204c696d697465642073746f726167652072656164732e60202d204f6e6520444220777269746520286576656e74292ec8202d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e302023203c2f7765696768743e547375646f5f756e636865636b65645f776569676874081063616c6c60426f783c3c5420617320436f6e6669673e3a3a43616c6c3e1c5f776569676874185765696768742839012041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e310120546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b4205375646f207573657220746f20737065636966792074686520776569676874206f66207468652063616c6c2e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c2023203c7765696768743e20202d204f2831292ed0202d2054686520776569676874206f6620746869732063616c6c20697320646566696e6564206279207468652063616c6c65722e302023203c2f7765696768743e1c7365745f6b6579040c6e65778c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263652475012041757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c2023203c7765696768743e20202d204f2831292e64202d204c696d697465642073746f726167652072656164732e44202d204f6e65204442206368616e67652e302023203c2f7765696768743e1c7375646f5f6173080c77686f8c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263651063616c6c60426f783c3c5420617320436f6e6669673e3a3a43616c6c3e2c51012041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d44206120676976656e206163636f756e742e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c2023203c7765696768743e20202d204f2831292e64202d204c696d697465642073746f726167652072656164732e60202d204f6e6520444220777269746520286576656e74292ec8202d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e302023203c2f7765696768743e010c14537564696404384469737061746368526573756c74048c2041207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d284b65794368616e67656404244163636f756e74496404010120546865205c5b7375646f65725c5d206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e285375646f4173446f6e6504384469737061746368526573756c74048c2041207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d00042c526571756972655375646f04802053656e646572206d75737420626520746865205375646f206163636f756e741914417373657401144173736574541c5469636b657273010102185469636b6572745469636b6572526567697374726174696f6e3c543a3a4d6f6d656e743e00840000000000000000000000000000000000000000000000000000000000000000000874205469636b657220726567697374726174696f6e2064657461696c732e7c20287469636b657229202d3e205469636b6572526567697374726174696f6e305469636b6572436f6e66696701008c5469636b6572526567697374726174696f6e436f6e6669673c543a3a4d6f6d656e743e0800000870205469636b657220726567697374726174696f6e20636f6e6669672e9420287469636b657229202d3e205469636b6572526567697374726174696f6e436f6e66696718546f6b656e73010102185469636b6572345365637572697479546f6b656e00c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008e02044657461696c73206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e050120287469636b657229202d3e205365637572697479546f6b656e2064657461696c73205b72657475726e73205365637572697479546f6b656e207374727563745d2841737365744e616d6573010102185469636b65722441737365744e616d6500040008ec204173736574206e616d65206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e6020287469636b657229202d3e206041737365744e616d65602442616c616e63654f66010202185469636b6572284964656e7469747949641c42616c616e636506400000000000000000000000000000000008b42054686520746f74616c206173736574207469636b65722062616c616e636520706572206964656e746974792e6420287469636b65722c2044494429202d3e2042616c616e63652c4964656e74696669657273010102185469636b6572505665633c41737365744964656e7469666965723e00040004b82041206d6170206f662061207469636b6572206e616d6520616e64206173736574206964656e746966696572732e50437573746f6d54797065496453657175656e6365010044437573746f6d417373657454797065496410000000000cc420546865206e65787420604173736574547970653a3a437573746f6d6020494420696e207468652073657175656e63652e00d0204e756d6265727320696e207468652073657175656e63652073746172742066726f6d203120726174686572207468616e20302e2c437573746f6d547970657301010544437573746f6d41737365745479706549641c5665633c75383e00040004f8204d61707320637573746f6d20617373657420747970652069647320746f20746865207265676973746572656420737472696e6720636f6e74656e74732e48437573746f6d5479706573496e76657273650101021c5665633c75383e44437573746f6d417373657454797065496400100000000004610120496e7665727365206d6170206f662060437573746f6d5479706573602c2066726f6d207265676973746572656420737472696e6720636f6e74656e747320746f20637573746f6d2061737365742074797065206964732e3046756e64696e67526f756e64010102185469636b65724046756e64696e67526f756e644e616d65000400089c20546865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e60207469636b6572202d3e2066756e64696e6720726f756e6450497373756564496e46756e64696e67526f756e6401010268285469636b65722c2046756e64696e67526f756e644e616d65291c42616c616e63650040000000000000000000000000000000000811012054686520746f74616c2062616c616e636573206f6620746f6b656e732069737375656420696e20616c6c207265636f726465642066756e64696e6720726f756e64732e8c20287469636b65722c2066756e64696e6720726f756e6429202d3e2062616c616e63651846726f7a656e010102185469636b657210626f6f6c00040008e82054686520736574206f662066726f7a656e2061737365747320696d706c656d656e7465642061732061206d656d62657273686970206d61702e3c207469636b6572202d3e20626f6f6c5c41737365744f776e65727368697052656c6174696f6e73010206284964656e746974794964185469636b65725841737365744f776e65727368697052656c6174696f6e0204000888205469636b65727320616e6420746f6b656e206f776e656420627920612075736572842028757365722c207469636b657229202d3e2041737365744f776e657273686970384173736574446f63756d656e7473010202185469636b657228446f63756d656e74496420446f63756d656e7405140000000000087c20446f63756d656e747320617474616368656420746f20616e2041737365747420287469636b65722c20646f635f696429202d3e20646f63756d656e74604173736574446f63756d656e7473496453657175656e6365010102185469636b657228446f63756d656e7449640010000000000880205065722d7469636b657220646f63756d656e7420494420636f756e7465722e4c20287469636b657229202d3e20646f635f696438436c61737369635469636b657273000102185469636b657264436c61737369635469636b6572526567697374726174696f6e00040004f0205469636b657220726567697374726174696f6e2064657461696c73206f6e20506f6c796d61746820436c6173736963202f20457468657265756d2e4042616c616e63654f66417453636f70650102061c53636f70654964284964656e7469747949641c42616c616e63650640000000000000000000000000000000000ccc2042616c616e636573206765742073746f726564206f6e20746865206261736973206f6620746865206053636f70654964602e9d01205269676874206e6f77206974206973206f6e6c792068656c7066756c20666f722074686520554920707572706f7365732062757420696e206675747572652069742063616e206265207573656420746f20646f206d697261636c6573206f6e2d636861696e2e88202853636f706549642c204964656e74697479496429203d3e2042616c616e63652e4041676772656761746542616c616e6365010202185469636b65721c53636f706549641c42616c616e63650640000000000000000000000000000000000825012053746f7265206167677265676174652062616c616e6365206f662074686f7365206964656e746974696573207468617420686173207468652073616d65206053636f70654964602e7820285469636b65722c2053636f7065496429203d3e2042616c616e63652e2453636f706549644f66010202185469636b6572284964656e7469747949641c53636f706549640680000000000000000000000000000000000000000000000000000000000000000008dc20547261636b73207468652053636f70654964206f6620746865206964656e7469747920666f72206120676976656e207469636b65722e8420285469636b65722c204964656e74697479496429203d3e2053636f706549642e6444697361626c65496e766573746f72556e697175656e657373010102185469636b657210626f6f6c0004001031012044656369646573207768657468657220696e766573746f7220756e697175656e65737320726571756972656d656e7420697320656e666f7263656420666f7220746869732061737365742e8c206066616c736560206d65616e73207468617420697420697320656e666f726365642e0040205469636b6572203d3e20626f6f6c2e3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e01483c72656769737465725f7469636b657204187469636b6572185469636b6572240901205265676973746572732061206e6577207469636b6572206f7220657874656e64732076616c6964697479206f6620616e206578697374696e67207469636b65722e1501204e423a205469636b65722076616c696469747920646f6573206e6f742067657420636172727920666f7277617264207768656e2072656e6577696e67207469636b65722e0030202320417267756d656e7473cd01202a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e7c202a20607469636b657260207469636b657220746f2072656769737465722e00382023205065726d697373696f6e7320202a204173736574586163636570745f7469636b65725f7472616e73666572041c617574685f69640c753634306c20416363657074732061207469636b6572207472616e736665722e00310120436f6e73756d65732074686520617574686f72697a6174696f6e2060617574685f6964602028736565206070616c6c65745f6964656e746974793a3a636f6e73756d655f6175746860292e2901204e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e0030202320417267756d656e7473cd01202a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292efc202a2060617574685f69646020417574686f72697a6174696f6e204944206f66207469636b6572207472616e7366657220617574686f72697a6174696f6e2e0028202323204572726f72736d01202d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f696460206973206e6f7420612076616c6964207469636b6574207472616e7366657220617574686f72697a6174696f6e2e007c6163636570745f61737365745f6f776e6572736869705f7472616e73666572041c617574685f69640c75363418f020546869732066756e6374696f6e206973207573656420746f20616363657074206120746f6b656e206f776e657273686970207472616e736665722e2901204e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e0030202320417267756d656e7473cd01202a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e3101202a2060617574685f69646020417574686f72697a6174696f6e204944206f662074686520746f6b656e206f776e657273686970207472616e7366657220617574686f72697a6174696f6e2e306372656174655f61737365741c106e616d652441737365744e616d65187469636b6572185469636b657224646976697369626c6510626f6f6c2861737365745f74797065244173736574547970652c6964656e74696669657273505665633c41737365744964656e7469666965723e3466756e64696e675f726f756e64604f7074696f6e3c46756e64696e67526f756e644e616d653e2864697361626c655f697510626f6f6c68310120496e697469616c697a65732061206e657720736563757269747920746f6b656e2c20776974682074686520696e6974696174696e67206163636f756e7420617320697473206f776e65722e19012054686520746f74616c20737570706c792077696c6c20696e697469616c6c79206265207a65726f2e20546f206d696e7420746f6b656e732c2075736520606973737565602e0030202320417267756d656e7473c901202a20606f726967696e60202d20636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e88202a20606e616d6560202d20746865206e616d65206f662074686520746f6b656e2eb4202a20607469636b657260202d20746865207469636b65722073796d626f6c206f662074686520746f6b656e2e3101202a2060646976697369626c6560202d206120626f6f6c65616e20746f206964656e74696679207468652064697669736962696c69747920737461747573206f662074686520746f6b656e2e84202a206061737365745f7479706560202d2074686520617373657420747970652ec4202a20606964656e7469666965727360202d206120766563746f72206f66206173736574206964656e746966696572732ebc202a206066756e64696e675f726f756e6460202d206e616d65206f66207468652066756e64696e6720726f756e642e5101202a206064697361626c655f697560202d2077686574686572206f72206e6f7420696e766573746f7220756e697175656e65737320656e666f7263656d656e742073686f756c642062652064697361626c65642ecc202020546869732063616e6e6f74206265206368616e676564206166746572206372656174696e67207468652061737365742e0028202323204572726f72730101202d2060496e76616c696441737365744964656e7469666965726020696620616e79206f6620606964656e74696669657273602061726520696e76616c69642e5501202d20604d61784c656e6774684f6641737365744e616d6545786365656465646020696620606e616d65602773206c656e67746820657863656564732060543a3a41737365744e616d654d61784c656e677468602e5901202d206046756e64696e67526f756e644e616d654d61784c656e67746845786365656465646020696620746865206e616d65206f66207468652066756e64696e6720726f756e64206973206c6f6e6765722074686174802060543a3a46756e64696e67526f756e644e616d654d61784c656e677468602ed8202d20604173736574416c726561647943726561746564602069662061737365742077617320616c726561647920637265617465642e6101202d20605469636b6572546f6f4c6f6e676020696620607469636b6572602773206c656e6774682069732067726561746572207468616e2060636f6e6669672e6d61785f7469636b65725f6c656e6774686020636861696e2c20706172616d657465722ea502202d20605469636b65724e6f7441736369696020696620607469636b657260206973206e6f742079657420726567697374657265642c20616e6420636f6e7461696e73206e6f6e2d6173636969207072696e7461626c652063686172616374657273202866726f6d20636f646520333220746f2031323629206f7220616e7920636861726163746572206166746572206669727374206f6363757272656e6365206f6620605c30602e003c202323205065726d697373696f6e7330202a20506f7274666f6c696f18667265657a6504187469636b6572185469636b65722cc020467265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e0030202320417267756d656e7473b8202a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e98202a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e0028202323204572726f7273c4202d2060416c726561647946726f7a656e6020696620607469636b65726020697320616c72656164792066726f7a656e2e00382023205065726d697373696f6e7320202a20417373657420756e667265657a6504187469636b6572185469636b65722cc820556e667265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e0030202320417267756d656e7473b8202a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722eb4202a20607469636b657260202d20746865207469636b6572206f66207468652066726f7a656e20746f6b656e2e0028202323204572726f7273b4202d20604e6f7446726f7a656e6020696620607469636b657260206973206e6f742066726f7a656e207965742e00382023205065726d697373696f6e7320202a2041737365743072656e616d655f617373657408187469636b6572185469636b6572106e616d652441737365744e616d65345c2052656e616d6573206120676976656e20746f6b656e2e0030202320417267756d656e7473b8202a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e98202a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e98202a20606e616d6560202d20746865206e6577206e616d65206f662074686520746f6b656e2e0028202323204572726f72731501202d20604d61784c656e6774684f6641737365744e616d65457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e642060543a3a41737365744e616d654d61784c656e677468602e00382023205065726d697373696f6e7320202a20417373657414697373756508187469636b6572185469636b657218616d6f756e741c42616c616e63652ca82049737375652c206f72206d696e742c206e657720746f6b656e7320746f207468652063616c6c65722cb0207768696368206d75737420626520616e20617574686f72697a65642065787465726e616c206167656e742e0030202320417267756d656e74733101202a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e64202a20607469636b657260206f662074686520746f6b656e2e98202a2060616d6f756e7460206f6620746f6b656e73207468617420676574206973737565642e00382023205065726d697373696f6e7320202a20417373657430202a20506f7274666f6c696f1872656465656d08187469636b6572185469636b65721476616c75651c42616c616e63653cd1012052656465656d73206578697374696e6720746f6b656e73206279207265647563696e67207468652062616c616e6365206f66207468652063616c6c657227732064656661756c7420706f7274666f6c696f20616e642074686520746f74616c20737570706c79206f662074686520746f6b656e0030202320417267756d656e74733101202a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e80202a20607469636b657260205469636b6572206f662074686520746f6b656e2e98202a206076616c75656020416d6f756e74206f6620746f6b656e7320746f2072656465656d2e00242023204572726f72736501202d2060556e617574686f72697a6564602049662063616c6c656420627920736f6d656f6e6520776974686f75742074686520617070726f7072696174652065787465726e616c206167656e74207065726d697373696f6e735d01202d2060496e76616c69644772616e756c6172697479602049662074686520616d6f756e74206973206e6f7420646976697369626c652062792031305e3620666f72206e6f6e2d646976697369626c6520746f6b656e739101202d2060496e73756666696369656e74506f7274666f6c696f42616c616e636560204966207468652063616c6c657227732064656661756c7420706f7274666f6c696f20646f65736e2774206861766520656e6f75676820667265652062616c616e636500382023205065726d697373696f6e7320202a20417373657430202a20506f7274666f6c696f386d616b655f646976697369626c6504187469636b6572185469636b65722c98204d616b657320616e20696e646976697369626c6520746f6b656e20646976697369626c652e0030202320417267756d656e74733101202a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e80202a20607469636b657260205469636b6572206f662074686520746f6b656e2e0028202323204572726f7273f0202d20604173736574416c7265616479446976697369626c656020696620607469636b65726020697320616c726561647920646976697369626c652e00382023205065726d697373696f6e7320202a204173736574346164645f646f63756d656e74730810646f6373345665633c446f63756d656e743e187469636b6572185469636b657224842041646420646f63756d656e747320666f72206120676976656e20746f6b656e2e0030202320417267756d656e74733101202a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e80202a20607469636b657260205469636b6572206f662074686520746f6b656e2ebc202a2060646f63736020446f63756d656e747320746f20626520617474616368656420746f20607469636b6572602e00382023205065726d697373696f6e7320202a2041737365744072656d6f76655f646f63756d656e7473080c6964733c5665633c446f63756d656e7449643e187469636b6572185469636b657224902052656d6f766520646f63756d656e747320666f72206120676976656e20746f6b656e2e0030202320417267756d656e74733101202a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e80202a20607469636b657260205469636b6572206f662074686520746f6b656e2ecc202a20606964736020446f63756d656e74732069647320746f2062652072656d6f7665642066726f6d20607469636b6572602e00382023205065726d697373696f6e7320202a204173736574447365745f66756e64696e675f726f756e6408187469636b6572185469636b6572106e616d654046756e64696e67526f756e644e616d6534b0205365747320746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e0030202320417267756d656e74732d01202a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e98202a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2ee8202a20606e616d6560202d207468652064657369726564206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e0028202323204572726f72732901202d206046756e64696e67526f756e644e616d654d61784c656e677468457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e802060543a3a46756e64696e67526f756e644e616d654d61784c656e677468602e00382023205065726d697373696f6e7320202a204173736574487570646174655f6964656e7469666965727308187469636b6572185469636b65722c6964656e74696669657273505665633c41737365744964656e7469666965723e347c205570646174657320746865206173736574206964656e746966696572732e0030202320417267756d656e74732d01202a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e98202a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e5d01202a20606964656e7469666965727360202d20746865206173736574206964656e7469666965727320746f206265207570646174656420696e2074686520666f726d206f66206120766563746f72206f66207061697273d0202020206f6620604964656e746966696572547970656020616e64206041737365744964656e746966696572602076616c75652e0028202323204572726f72733501202d2060496e76616c696441737365744964656e7469666965726020696620606964656e746966696572736020636f6e7461696e7320616e7920696e76616c6964206964656e7469666965722e00382023205065726d697373696f6e7320202a20417373657450636c61696d5f636c61737369635f7469636b657208187469636b6572185469636b657248657468657265756d5f7369676e61747572653845636473615369676e617475726538010120436c61696d20612073797374656d61746963616c6c7920726573657276656420506f6c796d61746820436c61737369632028504d432920607469636b657260b020616e64207472616e7366657220697420746f2074686520606f726967696e602773206964656e746974792e00410120546f2076657269667920746861742074686520606f726967696e6020697320696e20636f6e74726f6c206f662074686520457468657265756d206163636f756e74206f6e2074686520626f6f6b732c150120616e2060657468657265756d5f7369676e61747572656020636f6e7461696e696e672074686520606f726967696e6027732044494420617320746865206d657373616765ac206d7573742062652070726f7669646564206279207468617420457468657265756d206163636f756e742e00242023204572726f72733501202d20604e6f53756368436c61737369635469636b6572602069662074686973206973206e6f7420612073797374656d61746963616c6c7920726573657276656420504d43207469636b65722e5501202d20605469636b6572416c7265616479526567697374657265646020696620746865207469636b65722077617320616c726561647920726567697374657265642c20652e672e2c20627920606f726967696e602e2101202d20605469636b6572526567697374726174696f6e457870697265646020696620746865207469636b6572277320726567697374726174696f6e2068617320657870697265642e74202d20604261644f726967696e60206966206e6f74207369676e65642e1d01202d2060496e76616c6964457468657265756d5369676e617475726560206966207468652060657468657265756d5f7369676e617475726560206973206e6f742076616c69642e2d01202d20604e6f74416e4f776e6572602069662074686520657468657265756d206163636f756e74206973206e6f7420746865206f776e6572206f662074686520504d43207469636b65722e58726573657276655f636c61737369635f7469636b65720c54636c61737369635f7469636b65725f696d706f72744c436c61737369635469636b6572496d706f727430636f6e74726163745f646964284964656e74697479496418636f6e6669678c5469636b6572526567697374726174696f6e436f6e6669673c543a3a4d6f6d656e743e34a42052657365727665206120506f6c796d61746820436c61737369632028504d4329207469636b65722e1101204d7573742062652063616c6c656420627920726f6f742c20616e642061737369676e7320746865207469636b657220746f20612073797374656d61746963204449442e0030202320417267756d656e74737c202a20606f726967696e60207768696368206d75737420626520726f6f742ef0202a2060636c61737369635f7469636b65725f696d706f7274602073706563696669636174696f6e20666f722074686520504d43207469636b65722e6101202a2060636f6e74726163745f6469646020746f207265736572766520746865207469636b657220746f2069662060636c61737369635f7469636b65725f696d706f72742e69735f636f6e74726163746020686f6c64732ec0202a2060636f6e6669676020746f2075736520666f722065787069727920616e64207469636b6572206c656e6774682e00242023204572726f72734d01202a20604173736574416c726561647943726561746564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b65726020776173206372656174656420617320616e2061737365742e6501202a20605469636b6572546f6f4c6f6e6760206966207468652060636f6e6669676020636f6e736964657273207468652060636c61737369635f7469636b65725f696d706f72742e7469636b65726020746f6f206c6f6e672e5901202a20605469636b6572416c726561647952656769737465726564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b6572602077617320616c726561647920726567697374657265642e4c636f6e74726f6c6c65725f7472616e736665720c187469636b6572185469636b65721476616c75651c42616c616e63653866726f6d5f706f7274666f6c696f2c506f7274666f6c696f49641c510120466f726365732061207472616e73666572206f6620746f6b656e2066726f6d206066726f6d5f706f7274666f6c696f6020746f207468652063616c6c657227732064656661756c7420706f7274666f6c696f2e0030202320417267756d656e74735901202a20606f726967696e60204d75737420626520616e2065787465726e616c206167656e74207769746820617070726f707269617465207065726d697373696f6e7320666f72206120676976656e207469636b65722e9c202a20607469636b657260205469636b65722073796d626f6c206f66207468652061737365742ed0202a206076616c7565602020416d6f756e74206f6620746f6b656e73206e65656420746f20666f726365207472616e736665722e0101202a206066726f6d5f706f7274666f6c696f602046726f6d2077686f6d20706f7274666f6c696f20746f6b656e732067657473207472616e736665727265642e6872656769737465725f637573746f6d5f61737365745f74797065040874791c5665633c75383e247c20526567697374657273206120637573746f6d20617373657420747970652e00d4205468652070726f766964656420607479602077696c6c20626520626f756e6420746f20616e20494420696e2073746f726167652ec0205468652049442063616e207468656e206265207573656420696e20604173736574547970653a3a437573746f6d602e29012053686f756c6420746865206074796020616c726561647920657869737420696e2073746f726167652c206e6f207365636f6e642049442069732061737369676e656420746f2069742e0030202320417267756d656e747394202a20606f726967696e602077686f2063616c6c6564207468652065787472696e7369632ef4202a206074796020636f6e7461696e732074686520737472696e6720726570726573656e746174696f6e206f662074686520617373657420747970652e0158205472616e7366657214284964656e746974794964185469636b65722c506f7274666f6c696f49642c506f7274666f6c696f49641c42616c616e63650878204576656e7420666f72207472616e73666572206f6620746f6b656e732ee02063616c6c6572204449442c207469636b65722c2066726f6d20706f7274666f6c696f2c20746f20706f7274666f6c696f2c2076616c75651849737375656418284964656e746974794964185469636b6572284964656e7469747949641c42616c616e63654046756e64696e67526f756e644e616d651c42616c616e6365087420456d6974207768656e20746f6b656e7320676574206973737565642e79012063616c6c6572204449442c207469636b65722c2062656e6566696369617279204449442c2076616c75652c2066756e64696e6720726f756e642c20746f74616c2069737375656420696e20746869732066756e64696e6720726f756e642052656465656d656410284964656e746974794964185469636b6572284964656e7469747949641c42616c616e6365087c20456d6974207768656e20746f6b656e73206765742072656465656d65642e942063616c6c6572204449442c207469636b65722c202066726f6d204449442c2076616c75653041737365744372656174656418284964656e746974794964185469636b657210626f6f6c24417373657454797065284964656e74697479496410626f6f6c0884204576656e7420666f72206372656174696f6e206f66207468652061737365742e99012063616c6c6572204449442f206f776e6572204449442c207469636b65722c2064697669736962696c6974792c20617373657420747970652c2062656e6566696369617279204449442c2064697361626c6520696e766573746f7220756e697175656e657373484964656e74696669657273557064617465640c284964656e746974794964185469636b6572505665633c41737365744964656e7469666965723e08d8204576656e7420656d6974746564207768656e20616e7920746f6b656e206964656e746966696572732061726520757064617465642e11012063616c6c6572204449442c207469636b65722c206120766563746f72206f6620286964656e74696669657220747970652c206964656e7469666965722076616c7565294c44697669736962696c6974794368616e6765640c284964656e746974794964185469636b657210626f6f6c0888204576656e7420666f72206368616e676520696e2064697669736962696c6974792e842063616c6c6572204449442c207469636b65722c2064697669736962696c697479405472616e73666572576974684461746118284964656e746974794964185469636b6572284964656e746974794964284964656e7469747949641c42616c616e63651c5665633c75383e08390120416e206164646974696f6e616c206576656e7420746f205472616e736665723b20656d6974746564207768656e20607472616e736665725f776974685f64617461602069732063616c6c65642ecc2063616c6c657220444944202c207469636b65722c2066726f6d204449442c20746f204449442c2076616c75652c20646174612849734973737561626c6508185469636b657210626f6f6c08542069735f6973737561626c652829206f7574707574a0207469636b65722c2072657475726e2076616c7565202874727565206966206973737561626c6529405469636b6572526567697374657265640c284964656e746974794964185469636b6572384f7074696f6e3c4d6f6d656e743e088020456d6974207768656e207469636b657220697320726567697374657265642ef02063616c6c657220444944202f207469636b6572206f776e6572206469642c207469636b65722c207469636b6572206f776e65722c20657870697279445469636b65725472616e736665727265640c284964656e746974794964185469636b6572284964656e746974794964088420456d6974207768656e207469636b6572206973207472616e736665727265642ed42063616c6c657220444944202f207469636b6572207472616e7366657272656420746f204449442c207469636b65722c2066726f6d6441737365744f776e6572736869705472616e736665727265640c284964656e746974794964185469636b6572284964656e74697479496408a820456d6974207768656e20746f6b656e206f776e657273686970206973207472616e736665727265642ef82063616c6c657220444944202f20746f6b656e206f776e657273686970207472616e7366657272656420746f204449442c207469636b65722c2066726f6d2c417373657446726f7a656e08284964656e746974794964185469636b657208a820416e206576656e7420656d6974746564207768656e20616e2061737365742069732066726f7a656e2e7c20506172616d657465723a2063616c6c6572204449442c207469636b65722e344173736574556e66726f7a656e08284964656e746974794964185469636b657208b020416e206576656e7420656d6974746564207768656e20616e20617373657420697320756e66726f7a656e2e7c20506172616d657465723a2063616c6c6572204449442c207469636b65722e30417373657452656e616d65640c284964656e746974794964185469636b65722441737365744e616d6508a820416e206576656e7420656d6974746564207768656e206120746f6b656e2069732072656e616d65642ec020506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720746f6b656e206e616d652e3c46756e64696e67526f756e645365740c284964656e746974794964185469636b65724046756e64696e67526f756e644e616d6508150120416e206576656e74206361727279696e6720746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e64206f662061207469636b65722ed020506172616d65746572733a2063616c6c6572204449442c207469636b65722c2066756e64696e6720726f756e64206e616d652e34446f63756d656e74416464656410284964656e746974794964185469636b657228446f63756d656e74496420446f63756d656e7404902041206e657720646f63756d656e7420617474616368656420746f20616e2061737365743c446f63756d656e7452656d6f7665640c284964656e746974794964185469636b657228446f63756d656e7449640484204120646f63756d656e742072656d6f7665642066726f6d20616e20617373657440457874656e73696f6e52656d6f7665640c284964656e746974794964185469636b6572244163636f756e7449640864204120657874656e73696f6e20676f742072656d6f7665642e782063616c6c6572204449442c207469636b65722c204163636f756e74496450436c61737369635469636b6572436c61696d65640c284964656e746974794964185469636b65723c457468657265756d41646472657373043901204120506f6c796d61746820436c617373696320746f6b656e2077617320636c61696d656420616e64207472616e7366657272656420746f2061206e6f6e2d73797374656d61746963204449442e48436f6e74726f6c6c65725472616e7366657210284964656e746974794964185469636b65722c506f7274666f6c696f49641c42616c616e636508b8204576656e7420666f72207768656e206120666f72636564207472616e736665722074616b657320706c6163652e19012063616c6c6572204449442f20636f6e74726f6c6c6572204449442c207469636b65722c20506f7274666f6c696f206f6620746f6b656e20686f6c6465722c2076616c75652e54437573746f6d4173736574547970654578697374730c284964656e74697479496444437573746f6d41737365745479706549641c5665633c75383e08b4204120637573746f6d206173736574207479706520616c726561647920657869737473206f6e2d636861696e2e35012063616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e64437573746f6d417373657454797065526567697374657265640c284964656e74697479496444437573746f6d41737365745479706549641c5665633c75383e08b4204120637573746f6d2061737365742074797065207761732072656769737465726564206f6e2d636861696e2e35012063616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e0c784d61784e756d6265724f66544d457874656e73696f6e466f7241737365740c7533321005000000004841737365744e616d654d61784c656e6774680c7533321080000000006446756e64696e67526f756e644e616d654d61784c656e6774680c7533321080000000007c30556e617574686f72697a65640470205468652075736572206973206e6f7420617574686f72697a65642e3c416c726561647941726368697665640484205768656e20657874656e73696f6e20616c72656164792061726368697665642e44416c7265616479556e41726368697665640490205768656e20657874656e73696f6e20616c726561647920756e2d61726368697665642e5c457874656e73696f6e416c726561647950726573656e740484205768656e20657874656e73696f6e20697320616c72656164792061646465642e4c4173736574416c72656164794372656174656404902054686520746f6b656e2068617320616c7265616479206265656e20637265617465642e345469636b6572546f6f4c6f6e67049420546865207469636b6572206c656e677468206973206f76657220746865206c696d69742e385469636b65724e6f74417363696904a020546865207469636b657220686173206e6f6e2d61736369692d656e636f6465642070617274732e5c5469636b6572416c72656164795265676973746572656404c820546865207469636b657220697320616c7265616479207265676973746572656420746f20736f6d656f6e6520656c73652e54546f74616c537570706c7941626f76654c696d697404942054686520746f74616c20737570706c792069732061626f766520746865206c696d69742e2c4e6f537563684173736574043c204e6f207375636820746f6b656e2e34416c726561647946726f7a656e04742054686520746f6b656e20697320616c72656164792066726f7a656e2e284e6f74416e4f776e6572049c204e6f7420616e206f776e6572206f662074686520746f6b656e206f6e20457468657265756d2e3c42616c616e63654f766572666c6f7704ac20416e206f766572666c6f77207768696c652063616c63756c6174696e67207468652062616c616e63652e4c546f74616c537570706c794f766572666c6f7704c020416e206f766572666c6f77207768696c652063616c63756c6174696e672074686520746f74616c20737570706c792e48496e76616c69644772616e756c6172697479046020416e20696e76616c6964206772616e756c61726974792e244e6f7446726f7a656e046820546865206173736574206d7573742062652066726f7a656e2e3c496e76616c69645472616e736665720488205472616e736665722076616c69646174696f6e20636865636b206661696c65642e4c496e73756666696369656e7442616c616e63650498205468652073656e6465722062616c616e6365206973206e6f742073756666696369656e742e544173736574416c7265616479446976697369626c6504802054686520746f6b656e20697320616c726561647920646976697369626c652e784d6178696d756d544d457874656e73696f6e4c696d697452656163686564049d01204e756d626572206f66205472616e73666572204d616e6167657220657874656e73696f6e7320617474616368656420746f20616e20617373657420697320657175616c20746f204d61784e756d6265724f66544d457874656e73696f6e466f7241737365742e70496e636f6d70617469626c65457874656e73696f6e56657273696f6e04e020476976656e20736d61727420657874656e73696f6e206973206e6f7420636f6d70617469626c652077697468207468652061737365742e60496e76616c6964457468657265756d5369676e6174757265049820416e20696e76616c696420457468657265756d206045636473615369676e6174757265602e4c4e6f53756368436c61737369635469636b6572049c2054686520676976656e207469636b6572206973206e6f74206120636c6173736963206f6e652e645469636b6572526567697374726174696f6e45787069726564049020526567697374726174696f6e206f66207469636b65722068617320657870697265642e5053656e64657253616d65417352656365697665720488205472616e736665727320746f2073656c6620617265206e6f7420616c6c6f776564244e6f53756368446f63048c2054686520676976656e20446f63756d656e7420646f6573206e6f742065786973742e704d61784c656e6774684f6641737365744e616d65457863656564656404c0204d6178696d756d206c656e677468206f66206173736574206e616d6520686173206265656e2065786365656465642e8446756e64696e67526f756e644e616d654d61784c656e677468457863656564656404f0204d6178696d756d206c656e677468206f66207468652066756e64696e6720726f756e64206e616d6520686173206265656e2065786365656465642e58496e76616c696441737365744964656e746966696572049020536f6d65206041737365744964656e746966696572602077617320696e76616c69642e84496e766573746f72556e697175656e657373436c61696d4e6f74416c6c6f77656404ec20496e766573746f7220556e697175656e65737320636c61696d7320617265206e6f7420616c6c6f77656420666f7220746869732061737365742e60496e76616c6964437573746f6d4173736574547970654964047420496e76616c69642060437573746f6d4173736574547970654964602e1a4c4361706974616c446973747269627574696f6e014c4361706974616c446973747269627574696f6e0c34446973747269627574696f6e73000102104341496430446973747269627574696f6e0004000c350120416c6c206361706974616c20646973747269627574696f6e732c207469656420746f207468656972207265737065637469766520636f72706f7261746520616374696f6e732028434173292e005c20284341496429203d3e20446973747269627574696f6e28486f6c646572506169640101024828434149642c204964656e7469747949642910626f6f6c0004000c8c2048617320616e20617373657420686f6c646572206265656e2070616964207965743f00a42028434149642c2044494429202d3e2057617320444944207061696420696e2074686520434149643f3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e011428646973747269627574651c1463615f6964104341496424706f7274666f6c696f5c4f7074696f6e3c506f7274666f6c696f4e756d6265723e2063757272656e6379185469636b6572247065725f73686172651c42616c616e636518616d6f756e741c42616c616e6365287061796d656e745f6174184d6f6d656e7428657870697265735f6174384f7074696f6e3c4d6f6d656e743ea8290120537461727420616e64206174746163682061206361706974616c20646973747269627574696f6e2c20746f20746865204341206964656e746966696564206279206063615f6964602c690120776974682060616d6f756e74602066756e647320696e206063757272656e6379602077697468647261776e2066726f6d2060706f7274666f6c696f602062656c6f6e67696e6720746f20606f726967696e602773204449442e002d012054686520646973747269627574696f6e2077696c6c20636f6d6d656e636520617420607061796d656e745f61746020616e64206578706972652061742060657870697265735f6174602ccc2069662070726f76696465642c206f7220696620604e6f6e65602c207468656e2074686572652773206e6f206578706972792e002901205468652066756e64732077696c6c206265206c6f636b656420696e2060706f7274666f6c696f602066726f6d207768656e206064697374726962757465602069732063616c6c65642e3901205768656e2074686572652773206e6f206578706972792c20736f6d652066756e6473206d6179206265206c6f636b656420696e646566696e6974656c7920696e2060706f7274666f6c696f602c19012064756520746f20636c61696d616e7473206e6f74207769746864726177696e67206f72206e6f2062656e6566697473206265696e672070757368656420746f207468656d2e2d0120466f7220696e646976697369626c652063757272656e636965732c20756e6c6f636b656420616d6f756e74732c206f66206c657373207468616e206f6e652077686f6c6520756e69742cac2077696c6c206e6f74206265207472616e7366657261626c652066726f6d2060706f7274666f6c696f602e510120486f77657665722c20696620776520696d6167696e6520746861742075736572732060416c6963656020616e642060426f626020626f74682061726520656e7469746c656420746f20312e3520756e6974732c550120616e64206f6e6c7920726563656976652060316020756e69747320656163682c207468656e2060302e35202b20302e35203d20316020756e69747320617265206c65667420696e2060706f7274666f6c696f602c70207768696368206973206e6f77207472616e736665727261626c652e003420232320417267756d656e74734901202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e0501202d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e5d01202d2060706f7274666f6c696f60207370656369666965732074686520706f7274666f6c696f206e756d626572206f6620746865206167656e7420746f20646973747269627574652060616d6f756e74602066726f6d2ef8202d206063757272656e63796020746f20776974686472617720616e6420646973747269627574652066726f6d207468652060706f7274666f6c696f602efc202d20607065725f73686172656020616d6f756e74206f66206063757272656e63796020746f20776974686472617720616e6420646973747269627574652e2901202020205370656369666965642061732061207065722d6d696c6c696f6e2c20692e652e206031202f2031305e36607468206f66206f6e65206063757272656e63796020746f6b656e2ef4202d2060616d6f756e7460206f66206063757272656e63796020746f20776974686472617720616e642064697374726962757465206174206d6f73742e1d01202d20607061796d656e745f61746020737065636966696573207768656e2062656e6566697473206d617920666972737420626520707573686564206f7220636c61696d65642e2d01202d2060657870697265735f617460207370656369666965732c2069662070726f76696465642c207768656e2072656d61696e696e672062656e65666974732061726520666f72666569749420202020616e64206d6179206265207265636c61696d656420627920606f726967696e602e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed4202d2060446973747269627574696e67417373657460206966206063615f69642e7469636b6572203d3d2063757272656e6379602e0101202d20604578706972794265666f72655061796d656e74602069662060657870697265735f61742e756e777261702829203c3d207061796d656e745f6174602ee8202d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412eac202d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652eec202d20605265636f72644461746541667465725374617274602069662043412773207265636f72642064617465203e207061796d656e745f61742e3501202d2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f662060706f7274666f6c696f602e5901202d2060496e73756666696369656e74506f7274666f6c696f42616c616e6365602069662060706f7274666f6c696f6020686173206c657373207468616e2060616d6f756e7460206f66206063757272656e6379602e0501202d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e4901202d206043414e6f7442656e656669746020696620746865204341206973206e6f74206f66206b696e64205072656469637461626c6542656e656669742f556e7072656469637461626c6542656e6566697400382023205065726d697373696f6e7320202a20417373657430202a20506f7274666f6c696f14636c61696d041463615f696410434149645c050120436c61696d20612062656e65666974206f6620746865206361706974616c20646973747269627574696f6e20617474616368656420746f206063615f6964602e00ac20546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5d0120506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e00150120416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e3d01204d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c9c20746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e003420232320417267756d656e74734901202d20606f726967696e60207768696368206d757374206265206120686f6c646572206f662074686520617373657420616e6420656c696769626c6520666f722074686520646973747269627574696f6e2e0501202d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e00242023204572726f72732901202d2060486f6c646572416c7265616479506169646020696620606f726967696e602773204449442068617320616c7265616479207265636569766564206974732062656e656669742e1d01202d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec8202d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee8202d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee8202d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef8202d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e3901202d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e3901202d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e2501202d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e30707573685f62656e65666974081463615f6964104341496418686f6c646572284964656e74697479496460fc20507573682062656e65666974206f6620616e206f6e676f696e6720646973747269627574696f6e20746f2074686520676976656e2060686f6c646572602e00ac20546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5d0120506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e00150120416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e3d01204d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c9c20746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e003420232320417267756d656e74734901202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e3d01202d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e7320746f20707573682062656e656669747320666f722e80202d2060686f6c6465726020746f20707573682062656e656669747320746f2e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e1d01202d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec8202d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee8202d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee8202d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ee0202d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f74207461726765742060686f6c646572602e3901202d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e3901202d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e2501202d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e1c7265636c61696d041463615f696410434149642c9420417373756d696e67206120646973747269627574696f6e2068617320657870697265642ce820756e6c6f636b207468652072656d61696e696e6720616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e003420232320417267756d656e74734901202d20606f726967696e60207768696368206d757374206265207468652063726561746f72206f6620746865206361706974616c20646973747269627574696f6e207469656420746f206063615f6964602e2101202d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e20746f207265636c61696d20666f722e00242023204572726f72731d01202d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602e3101202d2060416c72656164795265636c61696d65646020696620746869732066756e6374696f6e2068617320616c7265616479206265656e2063616c6c6564207375636365737366756c6c792e88202d20604e6f74457870697265646020696620606e6f77203c20657870697279602e4c72656d6f76655f646973747269627574696f6e041463615f696410434149642cc02052656d6f766573206120646973747269627574696f6e2074686174206861736e27742073746172746564207965742ce020756e6c6f636b696e67207468652066756c6c20616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e003420232320417267756d656e74734901202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e4d01202d206063615f696460206964656e7469666965732074686520434120776974682061206e6f742d7965742d73746172746564206361706974616c20646973747269627574696f6e20746f2072656d6f76652e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e1d01202d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec0202d2060446973747269627574696f6e537461727465646020696620607061796d656e745f6174203c3d206e6f77602e01101c437265617465640c204576656e74446964104341496430446973747269627574696f6e10bc2041206361706974616c20646973747269627574696f6e2c20776974682064657461696c7320696e636c756465642c3501207761732063726561746564206279207468652044494420287065726d697373696f6e6564206167656e742920666f7220746865204341206964656e746966696564206279206043414964602e00ac20284167656e74204449442c20434127732049442c20646973747269627574696f6e2064657461696c73293842656e65666974436c61696d656418204576656e74446964204576656e74446964104341496430446973747269627574696f6e1c42616c616e63650c5461780c5501204120746f6b656e20686f6c64657227732062656e65666974206f662061206361706974616c20646973747269627574696f6e20666f722074686520676976656e206043414964602077617320636c61696d65642e009501202843616c6c6572204449442c20486f6c6465722f436c61696d616e74204449442c20434127732049442c207570646174656420646973747269627574696f6e2064657461696c732c2044494427732062656e656669742c20444944277320746178202529245265636c61696d65640c204576656e7444696410434149641c42616c616e63650c9c2053746174732066726f6d2060707573685f62656e65666974602077617320656d69747465642e00190120284167656e74204449442c20434127732049442c206d61782072657175657374656420444944732c2070726f63657373656420444944732c206661696c65642044494473291c52656d6f76656408204576656e7444696410434149640c902041206361706974616c20646973747269627574696f6e207761732072656d6f7665642e005420284167656e74204449442c20434127732049442900383043414e6f7442656e6566697404d82041206361706974616c20646973747269627574696f6e20776173206d61646520666f722061206e6f6e2d62656e656669742043412e34416c726561647945786973747304ac204120646973747269627574696f6e20616c72656164792065786973747320666f7220746869732043412e4c4578706972794265666f72655061796d656e74082d01204120646973747269627574696f6e732070726f766964656420657870697279206461746520776173207374726963746c79206265666f726520697473207061796d656e7420646174652e250120496e206f7468657220776f7264732c2065766572797468696e6720746f206469737472696275746520776f756c6420696d6d6564696174656c7920626520666f726665697465642e44446973747269627574696e67417373657408f42043757272656e63792074686174206973206469737472696275746564206973207468652073616d65206173207468652043412773207469636b65722e6d012043616c6c696e67206167656e7420697320617474656d7074696e67206120666f726d206f662073746f636b2073706c69742c207768696368206973206e6f742077686174207468652065787472696e73696320697320666f722e44486f6c646572416c72656164795061696404d82054686520746f6b656e20686f6c6465722068617320616c7265616479206265656e20706169642074686569722062656e656669742e484e6f53756368446973747269627574696f6e04c82041206361706974616c20646973747269627574696f6e20646f65736e277420657869737420666f7220746869732043412e5843616e6e6f74436c61696d4265666f7265537461727404650120446973747269627574696f6e20616c6c6f746d656e742063616e6e6f7420626520636c61696d6564206173207468652063757272656e742074696d65206973206265666f72652073746172742d6f662d7061796d656e742e5843616e6e6f74436c61696d4166746572457870697279046d0120446973747269627574696f6e27732065787069727920686173207061737365642e204449442063616e6e6f7420636c61696d20616e796d6f726520616e642068617320666f72666569746564207468652062656e65666974732e8042616c616e6365506572536861726550726f647563744f766572666c6f776564042d01204d756c7469706c69636174696f6e206f66207468652062616c616e636520776974682074686520706572207368617265207061796f757420616d6f756e74206f766572666c6f7765642e584e6f74446973747269627574696f6e43726561746f7204c420444944206973206e6f7420746865206f6e652077686f20637265617465642074686520646973747269627574696f6e2e40416c72656164795265636c61696d656404d8204449442077686f20637265617465642074686520646973747269627574696f6e20616c726561647920646964207265636c61696d2e284e6f744578706972656404f420446973747269627574696f6e20686164206e6f742065787069726564207965742c206f722074686572652773206e6f2065787069727920646174652e4c446973747269627574696f6e53746172746564040501204120646973747269627574696f6e20686173206265656e206163746976617465642c20617320607061796d656e745f6174203c3d206e6f776020686f6c64732e6c496e73756666696369656e7452656d61696e696e67416d6f756e74043101204120646973747269627574696f6e2068617320696e73756666696369656e742072656d61696e696e6720616d6f756e74206f662063757272656e637920746f20646973747269627574652e1b28436865636b706f696e740128436865636b706f696e742c2c546f74616c537570706c79010202185469636b657230436865636b706f696e74496470706f6c796d6573685f7072696d6974697665733a3a42616c616e63650540000000000000000000000000000000000cb420546f74616c20737570706c79206f662074686520746f6b656e2061742074686520636865636b706f696e742e00ec20287469636b65722c20636865636b706f696e74496429202d3e20746f74616c20737570706c7920617420676976656e20636865636b706f696e741c42616c616e636501020258285469636b65722c20436865636b706f696e74496429284964656e74697479496470706f6c796d6573685f7072696d6974697665733a3a42616c616e63650540000000000000000000000000000000000c882042616c616e6365206f66206120444944206174206120636865636b706f696e742e00050120287469636b65722c206469642c20636865636b706f696e7420494429202d3e2042616c616e6365206f66206120444944206174206120636865636b706f696e7450436865636b706f696e74496453657175656e6365010102185469636b657230436865636b706f696e74496400200000000000000000108c20436865636b706f696e74732049442067656e657261746f722073657175656e63652ea8204944206f6620666972737420636865636b706f696e74206973203120696e7374656164206f6620302e007c20287469636b657229202d3e206e6f2e206f6620636865636b706f696e74733842616c616e636555706461746573010202185469636b6572284964656e746974794964445665633c436865636b706f696e7449643e05040008bc20436865636b706f696e747320776865726520612044494427732062616c616e63652077617320757064617465642ef020287469636b65722c2064696429202d3e205b636865636b706f696e7420494420776865726520757365722062616c616e6365206368616e6765645d2854696d657374616d7073010202185469636b657230436865636b706f696e744964184d6f6d656e7405200000000000000000185c20436865636b706f696e742074696d657374616d70732e000901204576657279207363686564756c652d6f726967696e6174656420636865636b706f696e74206d6170732069747320494420746f20697473206475652074696d652e210120457665727920636865636b706f696e74206d616e75616c6c792063726561746564206d6170732069747320494420746f207468652074696d65206f66207265636f7264696e672e00d020287469636b657229202d3e2028636865636b706f696e7420494429202d3e20636865636b706f696e742074696d657374616d70585363686564756c65734d6178436f6d706c657869747901000c75363420000000000000000008190120546865206d6178696d756d20636f6d706c657869747920616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365749c2028692e652e20605363686564756c6573602073746f72616765206974656d2062656c6f77292e485363686564756c65496453657175656e6365010102185469636b6572285363686564756c654964002000000000000000000cb420436865636b706f696e74207363686564756c652049442073657175656e636520666f72207469636b6572732e006020287469636b657229202d3e207363686564756c65204944245363686564756c6573010102185469636b65724c5665633c53746f7265645363686564756c653e0004000c8820436865636b706f696e74207363686564756c657320666f72207469636b6572732e005c20287469636b657229202d3e205b7363686564756c655d405363686564756c65526566436f756e74010202185469636b6572285363686564756c6549640c75333205100000000020010120486f77206d616e7920227374726f6e6722207265666572656e6365732061726520746865726520746f206120676976656e20605363686564756c654964603f00fc205468652070726573656e6365206f66206120227374726f6e6722207265666572656e63652c20696e207468652073656e7365206f66206052633c543e602ce020656e7461696c73207468617420746865207265666572656e636564207363686564756c652063616e6e6f742062652072656d6f7665642ed820546875732c206173206c6f6e6720617320607374726f6e675f7265665f636f756e74287363686564756c655f696429203e2030602cac206072656d6f76655f7363686564756c65287363686564756c655f696429602077696c6c206572726f722e00a820287469636b65722c207363686564756c6520494429202d3e207374726f6e672072656620636f756e74385363686564756c65506f696e7473010202185469636b6572285363686564756c654964445665633c436865636b706f696e7449643e0504000cc420416c6c2074686520636865636b706f696e7473206120676976656e207363686564756c65206f726967696e617465642e00a420287469636b65722c207363686564756c6520494429202d3e205b636865636b706f696e742049445d3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0110446372656174655f636865636b706f696e7404187469636b6572185469636b657224c4204372656174657320612073696e676c6520636865636b706f696e74206174207468652063757272656e742074696d652e0030202320417267756d656e74733101202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602ea4202d20607469636b65726020746f206372656174652074686520636865636b706f696e7420666f722e00242023204572726f72735901202d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e1101202d2060436f756e7465724f766572666c6f77602069662074686520746f74616c20636865636b706f696e7420636f756e74657220776f756c64206f766572666c6f772e707365745f7363686564756c65735f6d61785f636f6d706c657869747904386d61785f636f6d706c65786974790c753634245d01205365747320746865206d617820636f6d706c6578697479206f662061207363686564756c652073657420666f7220616e20617262697472617279207469636b657220746f20606d61785f636f6d706c6578697479602ebc20546865206e6577206d6178696d756d206973206e6f7420656e666f7263656420726574726f6163746976656c792cb820616e64206f6e6c79206170706c696573206f6e6365206e6577207363686564756c657320617265206d6164652e00ac204d7573742062652063616c6c6564206173206120504950202872657175697265732022726f6f7422292e0030202320417267756d656e74737c202d20606f726967696e602069732074686520726f6f74206f726967696e2e0d01202d20606d61785f636f6d706c65786974796020616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365742e3c6372656174655f7363686564756c6508187469636b6572185469636b6572207363686564756c65305363686564756c65537065634ca820437265617465732061207363686564756c652067656e65726174696e6720636865636b706f696e7473d820696e20746865206675747572652061742065697468657220612066697865642074696d65206f7220617420696e74657276616c732e000d0120546865207363686564756c6520737461727473206f7574207769746820607374726f6e675f7265665f636f756e74287363686564756c655f696429203c2d2030602e0030202320417267756d656e74732501202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e9c202d20607469636b65726020746f2063726561746520746865207363686564756c6520666f722eb4202d20607363686564756c656020746861742077696c6c2067656e657261746520636865636b706f696e74732e00242023204572726f72735901202d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e1101202d20605363686564756c654475726174696f6e546f6f53686f72746020696620746865207363686564756c65206475726174696f6e20697320746f6f2073686f72742e2501202d2060496e73756666696369656e744163636f756e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c64206e6f7420626520636861726765642e5101202d2060436f756e7465724f766572666c6f776020696620746865207363686564756c65204944206f7220746f74616c20636865636b706f696e7420636f756e7465727320776f756c64206f766572666c6f772e6101202d20604661696c6564546f436f6d707574654e657874436865636b706f696e746020696620746865206e65787420636865636b706f696e7420666f7220607363686564756c656020697320696e2074686520706173742e00382023205065726d697373696f6e7320202a2041737365743c72656d6f76655f7363686564756c6508187469636b6572185469636b6572086964285363686564756c6549643801012052656d6f7665732074686520636865636b706f696e74207363686564756c65206f6620616e206173736574206964656e74696669656420627920606964602e0030202320417267756d656e74732501202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602ea0202d20607469636b65726020746f2072656d6f766520746865207363686564756c652066726f6d2e0d01202d2060696460206f6620746865207363686564756c652c207768656e2069742077617320637265617465642062792060637265617465645f7363686564756c65602e00242023204572726f72735901202d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e4501202d20604e6f436865636b706f696e745363686564756c6560206966206069646020646f6573206e6f74206964656e746966792061207363686564756c6520666f72207468697320607469636b6572602ef8202d20605363686564756c654e6f7452656d6f7661626c656020696620606964602065786973747320627574206973206e6f742072656d6f7661626c652e00382023205065726d697373696f6e7320202a204173736574011044436865636b706f696e744372656174656414404f7074696f6e3c4576656e744469643e185469636b657230436865636b706f696e7449641c42616c616e6365184d6f6d656e740c68204120636865636b706f696e742077617320637265617465642e002101202863616c6c6572204449442c207469636b65722c20636865636b706f696e742049442c20746f74616c20737570706c792c20636865636b706f696e742074696d657374616d7029844d6178696d756d5363686564756c6573436f6d706c65786974794368616e67656408284964656e7469747949640c7536340c2d0120546865206d6178696d756d20636f6d706c657869747920666f7220616e20617262697472617279207469636b65722773207363686564756c652073657420776173206368616e6765642e006820284743204449442c20746865206e6577206d6178696d756d293c5363686564756c65437265617465640c204576656e74446964185469636b65723853746f7265645363686564756c650c8c204120636865636b706f696e74207363686564756c652077617320637265617465642e007c202863616c6c6572204449442c207469636b65722c207363686564756c65293c5363686564756c6552656d6f7665640c284964656e746974794964185469636b65723853746f7265645363686564756c650c8c204120636865636b706f696e74207363686564756c65207761732072656d6f7665642e007c202863616c6c6572204449442c207469636b65722c207363686564756c65290014384e6f537563685363686564756c6504d0204120636865636b706f696e74207363686564756c6520646f6573206e6f7420657869737420666f72207468652061737365742e505363686564756c654e6f7452656d6f7661626c65042101204120636865636b706f696e74207363686564756c65206973206e6f742072656d6f7661626c6520617320607265665f636f756e74287363686564756c655f696429203e2030602e744661696c6564546f436f6d707574654e657874436865636b706f696e74089c204661696c656420746f20636f6d7075746520746865206e65787420636865636b706f696e742ed420546865207363686564756c6520646f6573206e6f74206861766520616e79207570636f6d696e6720636865636b706f696e74732e605363686564756c654475726174696f6e546f6f53686f727404c020546865206475726174696f6e206f662061207363686564756c6520706572696f6420697320746f6f2073686f72742e4c5363686564756c6573546f6f436f6d706c657808d42054686520736574206f66207363686564756c65732074616b656e20746f6765746865722061726520746f6f20636f6d706c65782efc20466f72206578616d706c652c20746865792061726520746f6f206d616e792c206f722074686579206f636375727320746f6f206672657175656e746c792e1c44436f6d706c69616e63654d616e616765720144436f6d706c69616e63654d616e616765720c404173736574436f6d706c69616e636573010102185469636b65723c4173736574436f6d706c69616e63650008000004e820417373657420636f6d706c69616e636520666f722061207469636b657220285469636b6572202d3e204173736574436f6d706c69616e6365294854727573746564436c61696d497373756572010102185469636b6572485665633c547275737465644973737565723e00040004dc204c697374206f66207472757374656420636c61696d20697373756572205469636b6572202d3e20497373756572204964656e746974793853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0124686164645f636f6d706c69616e63655f726571756972656d656e740c187469636b6572185469636b65724473656e6465725f636f6e646974696f6e73385665633c436f6e646974696f6e3e4c72656365697665725f636f6e646974696f6e73385665633c436f6e646974696f6e3e2c09012041646473206120636f6d706c69616e636520726571756972656d656e7420746f20616e206173736574277320636f6d706c69616e6365206279207469636b65722efc2049662074686520636f6d706c69616e636520726571756972656d656e742069732061206475706c69636174652c20697420646f6573206e6f7468696e672e0030202320417267756d656e74733101202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65727c202a207469636b6572202d2053796d626f6c206f6620746865206173736574c8202a2073656e6465725f636f6e646974696f6e73202d2053656e646572207472616e7366657220636f6e646974696f6e732ed8202a2072656365697665725f636f6e646974696f6e73202d205265636569766572207472616e7366657220636f6e646974696f6e732e00382023205065726d697373696f6e7320202a2041737365747472656d6f76655f636f6d706c69616e63655f726571756972656d656e7408187469636b6572185469636b65720869640c75333224f42052656d6f766573206120636f6d706c69616e636520726571756972656d656e742066726f6d20616e206173736574277320636f6d706c69616e63652e0030202320417267756d656e74733101202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65727c202a207469636b6572202d2053796d626f6c206f6620746865206173736574f4202a206964202d20436f6d706c69616e636520726571756972656d656e74206964207768696368206973206e65656420746f2062652072656d6f76656400382023205065726d697373696f6e7320202a204173736574607265706c6163655f61737365745f636f6d706c69616e636508187469636b6572185469636b65724061737365745f636f6d706c69616e6365685665633c436f6d706c69616e6365526571756972656d656e743e3c0101205265706c6163657320616e206173736574277320636f6d706c69616e6365206279207469636b657220776974682061206e657720636f6d706c69616e63652e00010120436f6d706c69616e636520726571756972656d656e74732077696c6c20626520736f727465642028617363656e64696e6720627920696429206265666f726590207265706c6163696e67207468652063757272656e7420726571756972656d656e74732e0030202320417267756d656e74737c202a20607469636b657260202d20746865206173736574207469636b65722cc0202a206061737365745f636f6d706c69616e6365202d20746865206e657720617373657420636f6d706c69616e63652e00242023204572726f7273f4202a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722eb501202a20604475706c69636174654173736574436f6d706c69616e636560206966206061737365745f636f6d706c69616e63656020636f6e7461696e73206d756c7469706c6520656e74726965732077697468207468652073616d652060726571756972656d656e745f6964602e00382023205065726d697373696f6e7320202a2041737365745872657365745f61737365745f636f6d706c69616e636504187469636b6572185469636b657220782052656d6f76657320616e206173736574277320636f6d706c69616e63650030202320417267756d656e74733101202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65727c202a207469636b6572202d2053796d626f6c206f662074686520617373657400382023205065726d697373696f6e7320202a2041737365745870617573655f61737365745f636f6d706c69616e636504187469636b6572185469636b6572201501205061757365732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e0030202320417267756d656e74733101202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65727c202a207469636b6572202d2053796d626f6c206f662074686520617373657400382023205065726d697373696f6e7320202a2041737365745c726573756d655f61737365745f636f6d706c69616e636504187469636b6572185469636b657220190120526573756d65732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e0030202320417267756d656e74733101202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65727c202a207469636b6572202d2053796d626f6c206f662074686520617373657400382023205065726d697373696f6e7320202a204173736574806164645f64656661756c745f747275737465645f636c61696d5f69737375657208187469636b6572185469636b657218697373756572345472757374656449737375657224fc204164647320616e6f746865722064656661756c74207472757374656420636c61696d2069737375657220617420746865207469636b6572206c6576656c2e0030202320417267756d656e74733501202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e80202a207469636b6572202d2053796d626f6c206f66207468652061737365742ecc202a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e00382023205065726d697373696f6e7320202a2041737365748c72656d6f76655f64656661756c745f747275737465645f636c61696d5f69737375657208187469636b6572185469636b657218697373756572284964656e7469747949642479012052656d6f7665732074686520676976656e2060697373756572602066726f6d2074686520736574206f662064656661756c74207472757374656420636c61696d206973737565727320617420746865207469636b6572206c6576656c2e0030202320417267756d656e74733501202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e80202a207469636b6572202d2053796d626f6c206f66207468652061737365742ecc202a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e00382023205065726d697373696f6e7320202a204173736574746368616e67655f636f6d706c69616e63655f726571756972656d656e7408187469636b6572185469636b65721c6e65775f72657154436f6d706c69616e6365526571756972656d656e7424f4204d6f6469667920616e206578697374696e6720636f6d706c69616e636520726571756972656d656e74206f66206120676976656e207469636b65722e0030202320417267756d656e74733501202a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e80202a207469636b6572202d2053796d626f6c206f66207468652061737365742e90202a206e65775f726571202d20436f6d706c69616e636520726571756972656d656e742e00382023205065726d697373696f6e7320202a204173736574012470436f6d706c69616e6365526571756972656d656e74437265617465640c284964656e746974794964185469636b657254436f6d706c69616e6365526571756972656d656e7408d020456d6974746564207768656e206e657720636f6d706c69616e636520726571756972656d656e7420697320637265617465642eb4202863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e70436f6d706c69616e6365526571756972656d656e7452656d6f7665640c284964656e746974794964185469636b65720c75333208c820456d6974746564207768656e206120636f6d706c69616e636520726571756972656d656e742069732072656d6f7665642e98202863616c6c6572204449442c205469636b65722c20726571756972656d656e745f6964292e5c4173736574436f6d706c69616e63655265706c616365640c284964656e746974794964185469636b6572685665633c436f6d706c69616e6365526571756972656d656e743e08b820456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206973207265706c616365642ed820506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720617373657420636f6d706c69616e63652e504173736574436f6d706c69616e6365526573657408284964656e746974794964185469636b657208dc20456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206f662061207469636b65722069732072657365742e58202863616c6c6572204449442c205469636b6572292e584173736574436f6d706c69616e6365526573756d656408284964656e746974794964185469636b657208050120456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b6572206765747320726573756d652e58202863616c6c6572204449442c205469636b6572292e544173736574436f6d706c69616e636550617573656408284964656e746974794964185469636b657208050120456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b65722067657473207061757365642e58202863616c6c6572204449442c205469636b6572292e70436f6d706c69616e6365526571756972656d656e744368616e6765640c284964656e746974794964185469636b657254436f6d706c69616e6365526571756972656d656e7408e420456d6974746564207768656e20636f6d706c69616e636520726571756972656d656e7420676574206d6f6469666965642f6368616e67652eb4202863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e785472757374656444656661756c74436c61696d49737375657241646465640c284964656e746974794964185469636b6572345472757374656449737375657208190120456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b657220676574732061646465642eac202863616c6c6572204449442c205469636b65722c2041646465642054727573746564497373756572292e805472757374656444656661756c74436c61696d49737375657252656d6f7665640c284964656e746974794964185469636b6572284964656e746974794964081d0120456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b6572206765742072656d6f7665642eb4202863616c6c6572204449442c205469636b65722c2052656d6f7665642054727573746564497373756572292e04584d6178436f6e646974696f6e436f6d706c65786974790c7533321032000000001830556e617574686f72697a656404602055736572206973206e6f7420617574686f72697a65642e2c4469644e6f744578697374043820446964206e6f7420657869737478496e76616c6964436f6d706c69616e6365526571756972656d656e74496404a020436f6d706c69616e636520726571756972656d656e7420696420646f65736e277420657869737484496e636f72726563744f7065726174696f6e4f6e5472757374656449737375657204a0204973737565722065786973742062757420747279696e6720746f2061646420697420616761696e7c4475706c6963617465436f6d706c69616e6365526571756972656d656e747304b420546865726520617265206475706c696361746520636f6d706c69616e636520726571756972656d656e74732e7c436f6d706c69616e6365526571756972656d656e74546f6f436f6d706c65780415012054686520776f7273742063617365207363656e6172696f206f662074686520636f6d706c69616e636520726571756972656d656e7420697320746f6f20636f6d706c65781d3c436f72706f72617465416374696f6e013c436f72706f72617465416374696f6e24404d617844657461696c734c656e67746801000c75333210000000001c5d012044657465726d696e657320746865206d6178696d756d206e756d626572206f6620627974657320746861742074686520667265652d666f726d206064657461696c7360206f6620612043412063616e2073746f72652e002901204e6f746520746861742074686973206973206e6f7420746865206e756d626572206f662060636861726073206f7220746865206e756d626572206f66205b6772617068656d65735d2e4101205768696c652074686973206d617920626520756e6e61747572616c20696e207465726d73206f662068756d616e20756e6465727374616e64696e67206f66206120746578742773206c656e6774682c6501206974206d6f726520636c6f73656c79207265666c656374732061637475616c2073746f7261676520636f73747320286027612760206973206368656170657220746f2073746f7265207468616e20616e20656d6f6a69292e00d0205b6772617068656d65735d3a2068747470733a2f2f656e2e77696b6970656469612e6f72672f77696b692f4772617068656d655c44656661756c745461726765744964656e746974696573010102185469636b6572405461726765744964656e7469746965730008000110f020546865206964656e7469746965732074617267657465642062792064656661756c7420666f722043417320666f722074686973207469636b65722c8c2065697468657220746f206265206578636c75646564206f7220696e636c756465642e007820287469636b6572203d3e20746172676574206964656e746974696573295444656661756c7457697468686f6c64696e67546178010102185469636b65720c54617800100000000020ad01205468652064656661756c7420616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722074686973207469636b6572207768656e20646973747269627574696e67206469766964656e64732e00350120546f20756e6465727374616e642077697468686f6c64696e67207461782c20652e672e2c206c6574277320617373756d65207468617420796f7520686f6c642041434d45207368617265732ec42041434d45206e6f77206465636964657320746f2064697374726962757465203130302053454b20746f20416c6963652e590120416c696365206c6976657320696e2053776564656e2c20736f20536b617474657665726b6574202874686520537765646973682074617820617574686f72697479292077616e747320333025206f6620746861742e5d01205468656e2074686f736520313030202a2033302520617265207769746868656c642066726f6d20416c6963652c20616e642041434d452077696c6c2073656e64207468656d20746f20536b617474657665726b65742e006820287469636b6572203d3e202520746f2077697468686f6c64294444696457697468686f6c64696e67546178010102185469636b6572585665633c284964656e7469747949642c20546178293e0004001049012054686520616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722061206365727461696e207469636b65722078204449442e6d0120496620616e20656e7472792065786973747320666f722061206365727461696e204449442c206974206f7665727269646573207468652064656661756c7420696e206044656661756c7457697468686f6c64696e67546178602e008820287469636b6572203d3e205b286469642c202520746f2077697468686f6c64295d304341496453657175656e6365010102185469636b6572244c6f63616c4341496400100000000008b420546865206e657874207065722d605469636b65726020434120494420696e207468652073657175656e63652e4d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652e40436f72706f72617465416374696f6e73000202185469636b6572244c6f63616c434149643c436f72706f72617465416374696f6e050400146c20416c6c207265636f72646564204341732074687573206661722ea4204f6e6c792067656e6572696320696e666f726d6174696f6e2069732073746f72656420686572652e7d01205370656369666963206043414b696e6460732c20652e672e2c2062656e656669747320616e6420636f72706f726174652062616c6c6f74732c206d617920757365206164646974696f6e616c206f6e2d636861696e2073746f726167652e00b420287469636b6572203d3e206c6f63616c204944203d3e2074686520636f72706f7261746520616374696f6e29244341446f634c696e6b01010210434149643c5665633c446f63756d656e7449643e00040014d0204173736f63696174696f6e732066726f6d2043417320746f2060446f63756d656e74607320766961207468656972204944732e5c202843414964203d3e205b446f63756d656e7449645d29000501205468652060436f72706f72617465416374696f6e7360206d61702073746f72657320605469636b6572203d3e204c6f63616c4964203d3e20546865204341602c250120736f2077652063616e20696e66657220605469636b6572203d3e2043414964602e205468657265666f72652c20776520646f6e2774206e656564206120646f75626c65206d61702e1c44657461696c73010102104341496424434144657461696c7300040008e8204173736f6369617465732064657461696c7320696e20667265652d666f726d207465787420776974682061204341206279206974732049442e50202843414964203d3e20434144657461696c73293853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0120587365745f6d61785f64657461696c735f6c656e67746804186c656e6774680c75333208d42053657420746865206d617820606c656e67746860206f66206064657461696c736020696e207465726d73206f662062797465732e78204d6179206f6e6c792062652063616c6c6564207669612061205049502e4c7365745f64656661756c745f7461726765747308187469636b6572185469636b65721c74617267657473405461726765744964656e74697469657334d020536574207468652064656661756c7420434120605461726765744964656e7469746965736020746f206074617267657473602e003420232320417267756d656e74734901202d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ee8202d20607469636b65726020666f72207768696368207468652064656661756c74206964656e74697469657320617265206368616e67696e672ed0202d20607461726765747360207468652064656661756c7420746172676574206964656e74697469657320666f7220612043412e0028202323204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e3501202d2060546f6f4d616e79546172676574496473602069662060746172676574732e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e00382023205065726d697373696f6e7320202a2041737365746c7365745f64656661756c745f77697468686f6c64696e675f74617808187469636b6572185469636b65720c7461780c54617830410120536574207468652064656661756c742077697468686f6c64696e672074617820666f7220616c6c204449447320616e64204341732072656c6576616e7420746f207468697320607469636b6572602e003420232320417267756d656e74734901202d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ecc202d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2e0901202d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e0028202323204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e00382023205065726d697373696f6e7320202a2041737365745c7365745f6469645f77697468686f6c64696e675f7461780c187469636b6572185469636b65722474617865645f646964284964656e7469747949640c7461782c4f7074696f6e3c5461783e40f820536574207468652077697468686f6c64696e6720746178206f6620607469636b65726020666f72206074617865645f6469646020746f2060746178602e85012049662060536f6d652874617829602c2074686973206f7665727269646573207468652064656661756c742077697468686f6c64696e6720746178206f6620607469636b65726020746f20607461786020666f72206074617865645f646964602e0101204f74686572776973652c20696620604e6f6e65602c207468652064656661756c742077697468686f6c64696e67207461782077696c6c20626520757365642e003420232320417267756d656e74734901202d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ecc202d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2ee8202d206074617865645f6469646020746861742077696c6c2068617665206974732077697468686f6c64696e672074617820757064617465642e0901202d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e0028202323204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e8501202d2060546f6f4d616e794469645461786573602069662060536f6d6528746178296020616e6420616464696e6720746865206f7665727269646520776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e00382023205065726d697373696f6e7320202a20417373657464696e6974696174655f636f72706f726174655f616374696f6e20187469636b6572185469636b6572106b696e641843414b696e64246465636c5f64617465184d6f6d656e742c7265636f72645f64617465584f7074696f6e3c5265636f726444617465537065633e1c64657461696c7324434144657461696c731c74617267657473604f7074696f6e3c5461726765744964656e7469746965733e5c64656661756c745f77697468686f6c64696e675f7461782c4f7074696f6e3c5461783e3c77697468686f6c64696e675f746178784f7074696f6e3c5665633c284964656e7469747949642c20546178293e3e784d0120496e69746961746573206120434120666f7220607469636b657260206f6620606b696e64602077697468206064657461696c736020616e64206f746865722070726f766964656420617267756d656e74732e003420232320417267756d656e74734901202d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732e90202d20607469636b657260207468617420746865204341206973206d61646520666f722e80202d20606b696e6460206f66204341206265696e6720696e697469617465642e9c202d20606465636c5f6461746560206f66204341206272696e6720696e697469616c697a65642ef4202d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f6620746869732043412e65012020202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e5101202d206064657461696c7360206f662074686520434120696e20667265652d7465787420666f726d2c20757020746f2061206365727461696e206e756d626572206f6620627974657320696e206c656e6774682ef8202d206074617267657473602c20696620616e792c20776869636820746869732043412069732072656c6576616e742f697272656c6576616e7420746f2e4d01202020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f7461726765747360292e6101202d206064656661756c745f77697468686f6c64696e675f746178602c20696620616e792c206973207468652064656661756c742077697468686f6c64696e672074617820746f2075736520666f7220746869732043412e6d01202020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f77697468686f6c64696e675f74617860292e2501202d206077697468686f6c64696e675f746178602c20696620616e792c2070726f7669646573207065722d4449442077697468686f6c64696e6720746178206f76657272696465732e5d01202020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f6469645f77697468686f6c64696e675f74617860292e00242023204572726f72732101202d206044657461696c73546f6f4c6f6e6760206966206064657461696c732e6c656e28296020676f6573206265796f6e6420606d61785f64657461696c735f6c656e677468602e2901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e6d01202d2060436f756e7465724f766572666c6f776020696e2074686520756e6c696b656c79206576656e74207468617420736f206d616e79204341732077657265206372656174656420666f72207468697320607469636b6572602cfc2020207468617420696e7465676572206f766572666c6f7720776f756c642068617665206f63637572656420696620696e737465616420616c6c6f7765642e7901202d2060546f6f4d616e79446964546178657360206966206077697468686f6c64696e675f7461782e756e7772617028292e6c656e28296020776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e0501202d20604475706c69636174654469645461786020696620612044494420697320696e636c75646564206d6f7265207468616e206f6e636520696e20607774602e5901202d2060546f6f4d616e79546172676574496473602069662060746172676574732e756e7772617028292e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e0501202d20604465636c44617465496e4675747572656020696620746865206465636c61726174696f6e2064617465206973206e6f7420696e2074686520706173742e5501202d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e00382023205065726d697373696f6e7320202a2041737365742c6c696e6b5f63615f646f6308086964104341496410646f63733c5665633c446f63756d656e7449643e48b0204c696e6b2074686520676976656e204341206069646020746f2074686520676976656e2060646f6373602ef820416e792070726576696f7573206c696e6b7320666f7220746865204341206172652072656d6f76656420696e206661766f72206f662060646f6373602e0059012054686520776f726b666c6f77206865726520697320746f206164642074686520646f63756d656e747320616e6420696e6974696174696e672074686520434120696e20616e79206f7264657220646573697265642ec8204f6e636520626f74682065786973742c20746865792063616e206e6f77206265206c696e6b656420746f6765746865722e003420232320417267756d656e74735501202d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206069642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732eac202d2060696460206f662074686520434120746f206173736f636961746520776974682060646f6373602eb4202d2060646f63736020746f206173736f6369617465207769746820746865204341207769746820606964602e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc202d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e1d01202d20604e6f53756368446f636020696620616e79206f662060646f63736020646f6573206e6f74206964656e7469667920616e206578697374696e6720646f63756d656e742e00382023205065726d697373696f6e7320202a2041737365742472656d6f76655f6361041463615f6964104341496448982052656d6f76657320746865204341206964656e746966696564206279206063615f6964602e00c8204173736f63696174656420646174612c207375636820617320646f63756d656e74206c696e6b732c2062616c6c6f74732cb020616e64206361706974616c20646973747269627574696f6e732061726520616c736f2072656d6f7665642e00d820416e79207363686564756c65206173736f636961746564207769746820746865207265636f726420646174652077696c6c20736565b420607374726f6e675f7265665f636f756e74287363686564756c655f696429602064656372656d656e7465642e003420232320417267756d656e74736101202d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e7c202d206063615f696460206f662074686520434120746f2072656d6f76652e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc202d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e00382023205065726d697373696f6e7320202a204173736574486368616e67655f7265636f72645f64617465081463615f696410434149642c7265636f72645f64617465584f7074696f6e3c5265636f726444617465537065633e3ce4204368616e67657320746865207265636f72642064617465206f6620746865204341206964656e746966696564206279206063615f6964602e003420232320417267756d656e74736101202d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e78202d206063615f696460206f662074686520434120746f20616c7465722ef0202d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f66207468652043412e65012020202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc202d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e5501202d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e00382023205065726d697373696f6e7320202a20417373657401245c4d617844657461696c734c656e6774684368616e67656408284964656e7469747949640c75333208d820546865206d6178696d756d206c656e677468206f66206064657461696c736020696e20627974657320776173206368616e6765642e5420284743204449442c206e6577206c656e677468297844656661756c745461726765744964656e7469746965734368616e6765640c284964656e746974794964185469636b6572405461726765744964656e74697469657308f02054686520736574206f662064656661756c7420605461726765744964656e7469746965736020666f722061207469636b6572206368616e6765642ea820284167656e74204449442c205469636b65722c204e6577205461726765744964656e746974696573297044656661756c7457697468686f6c64696e675461784368616e6765640c284964656e746974794964185469636b65720c54617808c8205468652064656661756c742077697468686f6c64696e672074617820666f722061207469636b6572206368616e6765642e7820284167656e74204449442c205469636b65722c204e657720546178292e6044696457697468686f6c64696e675461784368616e67656410284964656e746974794964185469636b6572284964656e7469747949642c4f7074696f6e3c5461783e08f0205468652077697468686f6c64696e672074617820737065636966696320746f20612044494420666f722061207469636b6572206368616e6765642ea420284167656e74204449442c205469636b65722c205461786564204449442c204e657720546178292e384341415472616e736665727265640c284964656e746974794964185469636b6572284964656e74697479496408702041206e65772044494420776173206d61646520746865204341412e9020284e657720434141204449442c205469636b65722c204e65772043414120444944292e2c4341496e6974696174656410204576656e7444696410434149643c436f72706f72617465416374696f6e24434144657461696c73085020412043412077617320696e697469617465642eac20284167656e74204449442c2043412069642c207468652043412c207468652043412064657461696c73293443414c696e6b6564546f446f630c284964656e74697479496410434149643c5665633c446f63756d656e7449643e0888204120434120776173206c696e6b656420746f206120736574206f6620646f63732eb020284167656e74204449442c2043412049642c204c697374206f6620646f63206964656e746966696572732924434152656d6f76656408204576656e74446964104341496408482041204341207761732072656d6f7665642e4c20284167656e74204449442c20434120496429445265636f7264446174654368616e6765640c204576656e7444696410434149643c436f72706f72617465416374696f6e047020412043412773207265636f72642064617465206368616e6765642e08304d61785461726765744964730c75333210e803000000284d6178446964576874730c75333210e8030000003048417574684e6f744341415472616e736665720409012054686520617574686f72697a6174696f6e2074797065206973206e6f7420746f207472616e73666572207468652043414120746f20616e6f74686572204449442e3844657461696c73546f6f4c6f6e6704dc20546865206064657461696c7360206f66206120434120657863656564656420746865206d617820616c6c6f776564206c656e6774682e3c4475706c696361746544696454617808250120412077697468686f6c64696e6720746178206f7665727269646520666f72206120676976656e204449442077617320737065636966696564206d6f7265207468616e206f6e63652e09012054686520636861696e207265667573656420746f206d616b6520612063686f6963652c20616e642068656e63652074686572652077617320616e206572726f722e3c546f6f4d616e79446964546178657304cc20546f6f206d616e792077697468686f6c64696e6720746178206f76657272696465732077657265207370656369666965642e40546f6f4d616e7954617267657449647304e820546f6f206d616e79206964656e74697469657320696e20605461726765744964656e746974696573602077657265207370656369666965642e484e6f53756368436865636b706f696e744964040901204f6e204341206372656174696f6e2c206120636865636b706f696e74204944207761732070726f766964656420776869636820646f65736e27742065786973742e204e6f53756368434104a8204120434120776974682074686520676976656e2060434149646020646964206e6f742065786973742e304e6f5265636f726444617465048c2054686520434120646964206e6f7420686176652061207265636f726420646174652e505265636f726444617465416674657253746172740ce020412043412773207265636f7264206461746520776173207374726963746c792061667465722074686520227374617274222074696d652c90207768657265202273746172742220697320636f6e7465787420646570656e64656e742e850120466f72206578616d706c652c20697420636f756c6420626520746865207374617274206f6620612062616c6c6f742c206f72207468652073746172742d6f662d7061796d656e7420696e206361706974616c20646973747269627574696f6e2e5c4465636c4461746541667465725265636f72644461746504f020412043412773206465636c61726174696f6e206461746520776173207374726963746c7920616674657220697473207265636f726420646174652e404465636c44617465496e46757475726504b820412043412773206465636c61726174696f6e2064617465206f636375727320696e20746865206675747572652e3c4e6f74546172676574656442794341047020434120646f6573206e6f742074617267657420746865204449442e1e3c436f72706f7261746542616c6c6f74013c436f72706f7261746542616c6c6f7418144d6574617300010210434149642842616c6c6f744d6574610004000c80204d65746164617461206f66206120636f72706f726174652062616c6c6f742e005420284341496429203d3e2042616c6c6f744d6574612854696d6552616e67657300010210434149643c42616c6c6f7454696d6552616e676500040010e42054696d652064657461696c73206f66206120636f72706f726174652062616c6c6f74206173736f636961746564207769746820612043412ed0205468652074696d657374616d70732064656e6f7465207768656e20766f74696e672073746172747320616e642073746f70732e006820284341496429203d3e2042616c6c6f7454696d6552616e6765404d6f74696f6e4e756d43686f696365730101021043414964205665633c7531363e00040024c82053746f72657320686f77206d616e792063686f696365732074686572652061726520696e2065616368206d6f74696f6e2e00250120417420616c6c2074696d65732c2074686520696e76617269616e7420686f6c6473207468617420606d6f74696f6e5f63686f696365735b6964785d6020697320657175616c20746f310120606d657461732e756e7772617028292e6d6f74696f6e735b6964785d2e63686f696365732e6c656e2829602e20546861742069732c2074686973206973206a75737420612063616368652c1101207573656420746f2061766f6964206665746368696e6720616c6c20746865206d6f74696f6e732077697468207468656972206173736f6369617465642074657874732e0001012060753136602063686f696365732073686f756c64206265206d6f7265207468616e20656e6f75676820746f20666974207265616c207573652063617365732e00b020284341496429203d3e204e756d626572206f662063686f6963657320696e2065616368206d6f74696f6e2e0c524356010102104341496410626f6f6c00040010dc2049732072616e6b65642063686f69636520766f74696e6720285243562920656e61626c656420666f7220746869732062616c6c6f743f650120466f7220616e20756e6465727374616e64696e67206f6620686f77205243562069732068616e646c65642c20736565206e6f7465206f6e206042616c6c6f74566f7465602773206066616c6c6261636b60206669656c642e003c20284341496429203d3e20626f6f6c1c526573756c74730101021043414964305665633c42616c616e63653e0004001cb02053746f7265732074686520746f74616c20766f74652074616c6c79206f6e20656163682063686f6963652e006820524356206973206e6f74206163636f756e74656420666f722cd02061732074686572652061726520746f6f206d616e792077616e747320746f20696e74657270726574207468652067726170682c9c20616e64206265636175736520697420776f756c64206e6f7420626520656666696369656e742e008420284341496429203d3e205b63757272656e7420766f746520776569676874735d14566f7465730102021043414964284964656e7469747949643c5665633c42616c6c6f74566f74653e06040018ac2053746f726573206561636820444944277320766f74657320696e206120676976656e2062616c6c6f742ef8205365652074686520646f63756d656e746174696f6e206f66206042616c6c6f74566f74656020666f72206e6f746573206f6e2073656d616e746963732e008420284341496429203d3e202844494429203d3e205b766f7465207765696768745d001d012055736572206d75737420656e746572203020766f746520776569676874206966207468657920646f6e27742077616e7420746f20766f746520666f7220612063686f6963652e0118346174746163685f62616c6c6f74101463615f696410434149641472616e67653c42616c6c6f7454696d6552616e6765106d6574612842616c6c6f744d6574610c72637610626f6f6c68ec20417474616368206120636f72706f726174652062616c6c6f7420746f20746865204341206964656e746966696564206279206063615f6964602e00b0205468652062616c6c6f742077696c6c2061646d697420766f7465732077697468696e206072616e6765602eb4205468652062616c6c6f742773206d657461646174612069732070726f766964656420627920606d657461602c090120776869636820696e636c75646573207468652062616c6c6f74207469746c652c20746865206d6f74696f6e732c2074686569722063686f696365732c206574632e7c2053656520746865206042616c6c6f744d6574616020666f72206d6f72652e003420232320417267756d656e74734901202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602ed4202d206063615f696460206964656e7469666965732074686520434120746f20617474616368207468652062616c6c6f7420746f2ec4202d206072616e67656020737065636966696573207768656e20766f74696e672073746172747320616e6420656e64732ef0202d20606d6574616020737065636966696573207468652062616c6c6f742773206d657461646174612061732061666f72656d656e74696f6e65642ee8202d2060726376602073706563696669657320776865746865722052435620697320656e61626c656420666f7220746869732062616c6c6f742e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee8202d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef4202d206043414e6f744e6f746963656020696620746865204341206973206e6f74206f662074686520604973737565724e6f7469636560206b696e642ec0202d206053746172744166746572456e6460206966206072616e67652e7374617274203e2072616e67652e656e64602e2d01202d20604e6f774166746572456e646020696620606e6f77203e2072616e67652e656e646020776865726520606e6f7760206973207468652063757272656e742074696d657374616d702eac202d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652e5d01202d20605265636f7264446174654166746572537461727460206966206064617465203e2072616e67652e73746172746020776865726520606461746560206973207468652043412773207265636f726420646174652ebc202d2060416c726561647945786973747360206966207468657265277320612062616c6c6f7420616c72656164792e3501202d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e0d01202d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e0501202d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e10766f7465081463615f6964104341496414766f7465733c5665633c42616c6c6f74566f74653e44150120436173742060766f7465736020696e207468652062616c6c6f7420617474616368656420746f20746865204341206964656e746966696564206279206063615f6964602e003420232320417267756d656e74730d01202d20606f726967696e60207768696368206d7573742062652061207065726d697373696f6e6564207369676e6572207461726765746564206279207468652043412ebc202d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e2501202d2060766f7465736020737065636966696573207468652062616c616e63657320746f2061737369676e20746f20656163682063686f69636520696e207468652062616c6c6f742e5901202020205468652066756c6c20766f74696e6720706f776572206f6620606f726967696e60277320444944206d6179206265207573656420666f722065616368206d6f74696f6e20696e207468652062616c6c6f742e00242023204572726f7273e0202d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e0101202d2060566f74696e674e6f7453746172746564602069662074686520766f74696e6720706572696f64206861736e277420636f6d6d656e636564207965742edc202d2060566f74696e67416c7265616479456e646564602069662074686520766f74696e6720706572696f642068617320656e6465642e6101202d206057726f6e67566f7465436f756e746020696620746865206e756d626572206f662063686f6963657320696e207468652062616c6c6f7420646f6573206e6f74206d617463682060766f7465732e6c656e2829602ee8202d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef8202d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e2501202d2060496e73756666696369656e74566f746573602069662074686520766f74696e6720706f776572207573656420666f7220616e79206d6f74696f6e20696e2060766f74657360a8202020206578636565647320606f726967696e60277320444944277320766f74696e6720706f7765722e286368616e67655f656e64081463615f696410434149640c656e64184d6f6d656e7430090120416d656e642074686520656e642064617465206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e003420232320417267756d656e74734901202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602ebc202d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ec8202d2060656e64602073706563696669657320746865206e657720656e642064617465206f66207468652062616c6c6f742e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee0202d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e3501202d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e90202d206053746172744166746572456e646020696620607374617274203e20656e64602e2c6368616e67655f6d657461081463615f69641043414964106d6574612842616c6c6f744d65746134650120416d656e6420746865206d6574616461746120287469746c652c206d6f74696f6e732c206574632e29206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e003420232320417267756d656e74734901202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602ebc202d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e94202d20606d657461602073706563696669657320746865206e6577206d657461646174612e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee0202d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e3501202d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e3501202d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e0d01202d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e286368616e67655f726376081463615f696410434149640c72637610626f6f6c2c090120416d656e642052435620737570706f727420666f72207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e003420232320417267756d656e74734901202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602ebc202d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ed0202d206072637660207370656369666965732069662052435620697320746f20626520737570706f72746564206f72206e6f742e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee0202d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e3501202d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e3472656d6f76655f62616c6c6f74041463615f6964104341496428cc2052656d6f7665207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e003420232320417267756d656e74734901202d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602ebc202d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e00242023204572726f72732901202d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee0202d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e3501202d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e01181c4372656174656414284964656e74697479496410434149643c42616c6c6f7454696d6552616e67652842616c6c6f744d65746110626f6f6c0c80204120636f72706f726174652062616c6c6f742077617320637265617465642e00190120284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e642c2042616c6c6f74206d657461646174612c2052435620656e61626c65643f2920566f7465436173740c284964656e74697479496410434149643c5665633c42616c6c6f74566f74653e0c9c204120766f746520776173206361737420696e206120636f72706f726174652062616c6c6f742e00642028766f746572204449442c20434149642c20566f746573293052616e67654368616e6765640c284964656e74697479496410434149643c42616c6c6f7454696d6552616e67650cd4204120636f72706f726174652062616c6c6f74206368616e676564206974732073746172742f656e6420646174652072616e67652e009c20284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e64292c4d6574614368616e6765640c284964656e74697479496410434149642842616c6c6f744d6574610ca4204120636f72706f726174652062616c6c6f74206368616e67656420697473206d657461646174612e008c20284167656e74204449442c20434127732049442c204e6577206d6574616461746129285243564368616e6765640c284964656e746974794964104341496410626f6f6c0cb0204120636f72706f726174652062616c6c6f74206368616e676564206974732052435620737570706f72742e008820284167656e74204449442c20434127732049442c204e657720737570706f7274291c52656d6f76656408204576656e7444696410434149640c80204120636f72706f726174652062616c6c6f74207761732072656d6f7665642e005420284167656e74204449442c20434127732049442900382c43414e6f744e6f7469636504e4204120636f72706f726174652062616c6c6f7420776173206d61646520666f722061206e6f6e20604973737565724e6f74696365602043412e34416c726561647945786973747304bc204120636f72706f726174652062616c6c6f7420616c72656164792065786973747320666f7220746869732043412e304e6f5375636842616c6c6f7404b8204120636f72706f726174652062616c6c6f7420646f65736e277420657869737420666f7220746869732043412e3453746172744166746572456e64041501204120636f72706f726174652062616c6c6f7427732073746172742074696d6520776173207374726963746c79206166746572207468652062616c6c6f74277320656e642e2c4e6f774166746572456e64041101204120636f72706f726174652062616c6c6f74277320656e642074696d6520776173207374726963746c79206265666f7265207468652063757272656e742074696d652e5c4e756d6265724f6643686f696365734f766572666c6f77043d0120496620736f6d65206d6f74696f6e20696e206120636f72706f726174652062616c6c6f7420686173206d6f72652063686f69636573207468616e20776f756c642066697420696e2060753136602e50566f74696e67416c72656164795374617274656404050120566f74696e67207374617274656420616c72656164792e20416d656e64696e6720612062616c6c6f74206973206e6f206c6f6e67657220706f737369626c652e40566f74696e674e6f7453746172746564046c20566f74696e67206861736e27742073746172746564207965742e48566f74696e67416c7265616479456e646564045820566f74696e6720656e64656420616c72656164792e3857726f6e67566f7465436f756e740419012050726f7669646564206c697374206f662062616c616e63657320646f6573206e6f74206d617463682074686520746f74616c206e756d626572206f662063686f696365732e44496e73756666696369656e74566f74657304410120566f74696e6720706f7765722075736564206279206120444944206f6e2061206d6f74696f6e2065786365656473207468617420776869636820697320617661696c61626c6520746f207468656d2e444e6f5375636852435646616c6c6261636b04c020546865205243562066616c6c6261636b206f6620736f6d652063686f69636520646f6573206e6f742065786973742e3052435653656c664379636c6504b820546865205243562066616c6c6261636b20706f696e747320746f20746865206f726967696e2063686f6963652e345243564e6f74416c6c6f776564049020524356206973206e6f7420616c6c6f77656420666f7220746869732062616c6c6f742e1f2c5065726d697373696f6e73000000000448556e617574686f72697a656443616c6c657204f0205468652063616c6c6572206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e201050697073011050697073544c5072756e65486973746f726963616c50697073010010626f6f6c040004fc2044657465726d696e6573207768657468657220686973746f726963616c20504950206461746120697320706572736973746564206f722072656d6f766564584d696e696d756d50726f706f73616c4465706f73697401001c42616c616e63654000000000000000000000000000000000041d0120546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f7220636f6d6d756e69747920504950206372656174696f6e2e5844656661756c74456e6163746d656e74506572696f64010038543a3a426c6f636b4e756d62657210000000000439012044656661756c7420656e6163746d656e7420706572696f6420746861742077696c6c2062652075736520616674657220612070726f706f73616c2069732061636365707465642062792047432e4050656e64696e675069704578706972790100684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e040108f420486f77206d616e7920626c6f636b732077696c6c2069742074616b652c2061667465722061206050656e64696e67602050495020657870697265732cf420617373756d696e6720697420686173206e6f74207472616e736974696f6e656420746f20616e6f74686572206050726f706f73616c5374617465603f3c4d6178506970536b6970436f756e74010030536b6970706564436f756e740400048901204d6178696d756d2074696d65732061205049502063616e20626520736b6970706564206265666f72652074726967676572696e67206043616e6e6f74536b69705069706020696e2060656e6163745f736e617073686f745f726573756c7473602e384163746976655069704c696d697401000c753332100000000008c420546865206d6178696d756d20616c6c6f776564206e756d62657220666f722060416374697665506970436f756e74602e0101204f6e636520726561636865642c206e657720504950732063616e6e6f742062652070726f706f73656420627920636f6d6d756e697479206d656d626572732e34506970496453657175656e6365010014506970496410000000000409012050726f706f73616c7320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f662050495073206f66662d636861696e2e48536e617073686f74496453657175656e6365010028536e617073686f7449641000000000041d0120536e617073686f747320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f6620736e617073686f7473206f66662d636861696e2e38416374697665506970436f756e7401000c753332100000000004c820546f74616c20636f756e74206f662063757272656e742070656e64696e67206f72207363686564756c656420504950732e4050726f706f73616c4d657461646174610001051450697049643c506970734d657461646174613c543e000400049820546865206d65746164617461206f6620746865206163746976652070726f706f73616c732e204465706f7369747301020514506970496430543a3a4163636f756e744964644465706f736974496e666f3c543a3a4163636f756e7449643e05c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008842054686f73652077686f2068617665206c6f636b65642061206465706f7369742e8c2070726f706f73616c202869642c2070726f706f73657229202d3e206465706f7369742450726f706f73616c73000105145069704964185069703c543e00040008c42041637475616c2070726f706f73616c20666f72206120676976656e2069642c20696620697427732063757272656e742e602070726f706f73616c206964202d3e2070726f706f73616c3850726f706f73616c526573756c7401010514506970496430566f74696e67526573756c7400a00000000000000000000000000000000000000000000000000000000000000000000000000000000008d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e682070726f706f73616c206964202d3e20766f746520636f756e743450726f706f73616c566f74657300020514506970496430543a3a4163636f756e74496410566f746505040008050120566f746573207065722050726f706f73616c20616e64206163636f756e742e205573656420746f2061766f696420646f75626c6520766f74652069737375652e7c202870726f706f73616c2069642c206163636f756e7429202d3e20566f746534506970546f5363686564756c6500010514506970496438543a3a426c6f636b4e756d62657200040004fc204d617073205049507320746f2074686520626c6f636b20617420776869636820746865792077696c6c2062652065786563757465642c20696620616e792e244c697665517565756501004c5665633c536e617073686f747465645069703e040018cc2041206c697665207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029a0206f662070656e64696e67205049507320757020746f2074686520616374697665206c696d69742ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e00450120556e6c696b652060536e617073686f745175657565602c2074686973207175657565206973206c6976652c2067657474696e6720757064617465642077697468206561636820766f746520636173742e2d012054686520736e617073686f74206973207468657265666f726520657373656e7469616c6c79206120706f696e742d696e2d74696d6520636c6f6e65206f6620746869732071756575652e34536e617073686f74517565756501004c5665633c536e617073686f747465645069703e040014590120546865207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029206f6620504950732061742074686520706f696e74206f6620736e617073686f7474696e672ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e000901204120717565756564205049502063616e20626520736b69707065642e20446f696e6720736f2062756d70732074686520607069705f736b69705f636f756e74602e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e30536e617073686f744d65746100004c536e617073686f744d657461646174613c543e040004bc20546865206d65746164617461206f662074686520736e617073686f742c206966207468657265206973206f6e652e30506970536b6970436f756e7401010514506970496430536b6970706564436f756e7400040008d020546865206e756d626572206f662074696d65732061206365727461696e2050495020686173206265656e20736b69707065642e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e34436f6d6d6974746565506970730100285665633c50697049643e040008d420416c6c206578697374696e672050495073207768657265207468652070726f706f736572206973206120636f6d6d69747465652e39012054686973206c6973742069732061206361636865206f6620616c6c2069647320696e206050726f706f73616c73602077697468206050726f706f7365723a3a436f6d6d6974746565285f29602e3853746f7261676556657273696f6e01001c56657273696f6e0400000144647365745f7072756e655f686973746f726963616c5f7069707304147072756e6510626f6f6c14a8204368616e6765207768657468657220636f6d706c65746564205049507320617265207072756e65642e702043616e206f6e6c792062652063616c6c656420627920726f6f742e0030202320417267756d656e7473f4202a20607072756e656020737065636966696573207768657468657220636f6d706c6574656420504950732073686f756c64206265207072756e65642e607365745f6d696e5f70726f706f73616c5f6465706f736974041c6465706f7369741c42616c616e6365142501204368616e676520746865206d696e696d756d2070726f706f73616c206465706f73697420616d6f756e7420726571756972656420746f20737461727420612070726f706f73616c2e702043616e206f6e6c792062652063616c6c656420627920726f6f742e0030202320417267756d656e7473f4202a20606465706f7369746020746865206e6577206d696e206465706f73697420726571756972656420746f20737461727420612070726f706f73616c707365745f64656661756c745f656e6163746d656e745f706572696f6404206475726174696f6e38543a3a426c6f636b4e756d6265721494204368616e6765207468652064656661756c7420656e6163746d656e7420706572696f642e702043616e206f6e6c792062652063616c6c656420627920726f6f742e0030202320417267756d656e74736d01202a20606475726174696f6e6020746865206e65772064656661756c7420656e6163746d656e7420706572696f642069742074616b657320666f722061207363686564756c65642050495020746f2062652065786563757465642e587365745f70656e64696e675f7069705f6578706972790418657870697279684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e180901204368616e67652074686520616d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020697320657870697265642eb820496620606578706972796020697320604e6f6e6560207468656e2050495073206e65766572206578706972652e702043616e206f6e6c792062652063616c6c656420627920726f6f742e0030202320417267756d656e74732101202a2060657870697279602074686520626c6f636b2d74696d652069742074616b657320666f722061207374696c6c2d6050656e64696e67602050495020746f206578706972652e587365745f6d61785f7069705f736b69705f636f756e74040c6d617830536b6970706564436f756e7414d8204368616e676520746865206d6178696d756d20736b697020636f756e742028606d61785f7069705f736b69705f636f756e7460292e702043616e206f6e6c792062652063616c6c656420627920726f6f742e0030202320417267756d656e7473f0202a20606d61786020736b697073206265666f72652061205049502063616e6e6f7420626520736b697070656420627920474320616e796d6f72652e507365745f6163746976655f7069705f6c696d697404146c696d69740c753332146d01204368616e676520746865206d6178696d756d206e756d626572206f66206163746976652050495073206265666f726520636f6d6d756e697479206d656d626572732063616e6e6f742070726f706f736520616e797468696e672e702043616e206f6e6c792062652063616c6c656420627920726f6f742e0030202320417267756d656e747394202a20606c696d697460206f6620636f6e63757272656e742061637469766520504950732e1c70726f706f7365102070726f706f73616c40426f783c543a3a50726f706f73616c3e1c6465706f7369741c42616c616e63650c75726c2c4f7074696f6e3c55726c3e2c6465736372697074696f6e584f7074696f6e3c5069704465736372697074696f6e3e2409012041206e6574776f726b206d656d6265722063726561746573206120504950206279207375626d697474696e67206120646973706174636861626c652077686963685901206368616e67657320746865206e6574776f726b20696e20736f6d657761792e2041206d696e696d756d206465706f73697420697320726571756972656420746f206f70656e2061206e65772070726f706f73616c2e0030202320417267756d656e7473cc202a206070726f706f73657260206973206569746865722061207369676e696e67206b6579206f7220636f6d6d69747465652e6901202020205573656420746f20756e6465727374616e6420776865746865722074686973206973206120636f6d6d69747465652070726f706f73616c20616e6420766572696669656420616761696e737420606f726967696e602e84202a206070726f706f73616c60206120646973706174636861626c652063616c6c4901202a20606465706f73697460206d696e696d756d206465706f7369742076616c75652c2077686963682069732069676e6f726564206966206070726f706f73657260206973206120636f6d6d69747465652ed0202a206075726c602061206c696e6b20746f2061207765627369746520666f722070726f706f73616c2064697363757373696f6e10766f74650c086964145069704964286179655f6f725f6e617910626f6f6c1c6465706f7369741c42616c616e636548210120566f74652065697468657220696e206661766f722028606179655f6f725f6e617960203d3d207472756529206f7220616761696e7374206120504950207769746820606964602e5101205468652022636f6e76696e6374696f6e22206f7220737472656e677468206f662074686520766f746520697320676976656e20627920606465706f736974602c2077686963682069732072657365727665642e0090204e6f746520746861742060766f746560206973202a6e6f742a2061646469746976652efc20546861742069732c2060766f74652869642c20747275652c203530296020666f6c6c6f7765642062792060766f74652869642c20747275652c20343029604d012077696c6c2066697273742072657365727665206035306020616e64207468656e20726566756e6420603530202d203130602c20656e64696e672075702077697468206034306020696e206465706f7369742e290120546f206164642061746f70206f66206578697374696e6720766f7465732c20796f75276c6c206e65656420606578697374696e675f6465706f736974202b206164646974696f6e602e0030202320417267756d656e747350202a20606964602c2070726f706f73616c206964e0202a20606179655f6f725f6e6179602c206120626f6f6c20726570726573656e74696e6720666f72206f7220616761696e737420766f7465ec202a20606465706f736974602c207468652022636f6e76696374696f6e2220776974682077686963682074686520766f7465206973206d6164652e00242023204572726f7273e8202a20604e6f5375636850726f706f73616c60206966206069646020646f65736e2774207265666572656e636520612076616c6964205049502ee8202a20604e6f7446726f6d436f6d6d756e697479602069662070726f706f73616c20776173206d616465206279206120636f6d6d69747465652ec4202a2060496e636f727265637450726f706f73616c537461746560206966205049502069736e27742070656e64696e672e3101202a2060496e73756666696369656e744465706f7369746020696620606f726967696e602063616e6e6f74207265736572766520606465706f736974202d206f6c645f6465706f736974602e68617070726f76655f636f6d6d69747465655f70726f706f73616c040869641450697049641cd820417070726f766573207468652070656e64696e6720636f6d6d69747465652050495020676976656e2062792074686520606964602e00242023204572726f72730901202a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2edc202a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ee8202a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c2069736e27742070656e64696e672ee4202a20604e6f744279436f6d6d697474656560206966207468652070726f706f73616c2069736e2774206279206120636f6d6d69747465652e3c72656a6563745f70726f706f73616c0408696414506970496420fc2052656a65637473207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e7920626f6e6465642066756e64732cbc20617373756d696e67206974206861736e2774206265656e2063616e63656c6c6564206f722065786563757465642e0901204e6f746520746861742070726f706f73616c73207363686564756c65642d666f722d657865637574696f6e2063616e20616c736f2062652072656a65637465642e00242023204572726f72730901202a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2edc202a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742e1901202a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c207761732063616e63656c6c6564206f722065786563757465642e387072756e655f70726f706f73616c04086964145069704964242d01205072756e65207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e792066756e6473206e6f7420616c726561647920726566756e6465642e682054686520504950206d6179206e6f7420626520616374697665000d0120546869732066756e6374696f6e20697320696e74656e64656420666f722073746f72616765206761726261676520636f6c6c656374696f6e20707572706f7365732e00242023204572726f72730901202a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2edc202a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ed8202a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c206973206163746976652e5072657363686564756c655f657865637574696f6e0808696414506970496414756e74696c584f7074696f6e3c543a3a426c6f636b4e756d6265723e24e420557064617465732074686520657865637574696f6e207363686564756c65206f66207468652050495020676976656e20627920606964602e0030202320417267756d656e74733501202a2060756e74696c6020646566696e6573207468652066757475726520626c6f636b2077686572652074686520656e6163746d656e7420706572696f642077696c6c2066696e69736865642e490120202020604e6f6e65602076616c7565206d65616e73207468617420656e6163746d656e7420706572696f6420697320676f696e6720746f2066696e69736820696e20746865206e65787420626c6f636b2e00242023204572726f72733d01202a206052657363686564756c654e6f74427952656c65617365436f6f7264696e61746f726020756e6c657373207472696767657265642062792072656c6561736520636f6f7264696e61746f722e2501202a2060496e636f727265637450726f706f73616c53746174656020756e6c657373207468652070726f706f73616c2077617320696e2061207363686564756c65642073746174652e38636c6561725f736e617073686f740010ec20436c656172732074686520736e617073686f7420616e6420656d69747320746865206576656e742060536e617073686f74436c6561726564602e00242023204572726f72734101202a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e20736e617073686f74001411012054616b65732061206e657720736e617073686f74206f66207468652063757272656e74206c697374206f66206163746976652026262070656e64696e6720504950732e2d0120546865205049507320617265207468656e20736f7274656420696e746f2061207072696f72697479207175657565206261736564206f6e2065616368205049502773207765696768742e00242023204572726f72734101202a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e58656e6163745f736e617073686f745f726573756c7473041c726573756c7473705665633c2850697049642c20536e617073686f74526573756c74293e44d420456e616374732060726573756c74736020666f7220746865205049507320696e2074686520736e617073686f742071756575652e2d012054686520736e617073686f742077696c6c20626520617661696c61626c6520666f72206675727468657220656e6163746d656e747320756e74696c20697420697320636c65617265642e005901205468652060726573756c7473602061726520656e636f6465642061206c697374206f6620602869642c20726573756c7429602077686572652060726573756c7460206973206170706c69656420746f20606964602e4d01204e6f746520746861742074686520736e617073686f74207072696f7269747920717565756520697320656e636f646564207769746820746865202a6c6f77657374207072696f726974792066697273742a2e590120736f2060726573756c7473203d205b2869642c20417070726f7665295d602077696c6c20617070726f76652060536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20315d602e00242023204572726f72731101202a20604261644f726967696e60202d20756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2e2501202a206043616e6e6f74536b697050697060202d206120676976656e205049502068617320616c7265616479206265656e20736b697070656420746f6f206d616e792074696d65732e1101202a2060536e617073686f74526573756c74546f6f4c6172676560202d206f6e206c656e28726573756c747329203e206c656e28736e617073686f745f7175657565292e74202a2060536e617073686f7449644d69736d6174636860202d2069663a28202020606060746578749c20202020e2888320286920e2888820302e2e536e617073686f7451756575652e6c656e2829292e0101202020202020726573756c74735b695d2e3020e289a020536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20695d2e696418202020606060fc20202020546869732069732070726f746563747320616761696e737420636c656172696e67207175657565207768696c6520474320697320766f74696e672e54657865637574655f7363686564756c65645f7069700408696414506970496404dc20496e7465726e616c20646973706174636861626c6520746861742068616e646c657320657865637574696f6e206f662061205049502e506578706972655f7363686564756c65645f706970080c646964284964656e74697479496408696414506970496404e020496e7465726e616c20646973706174636861626c6520746861742068616e646c65732065787069726174696f6e206f662061205049502e015050486973746f726963616c506970735072756e65640c284964656e74697479496410626f6f6c10626f6f6c044901205072756e696e6720486973746f726963616c205049507320697320656e61626c6564206f722064697361626c6564202863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293c50726f706f73616c4372656174656420284964656e7469747949644c50726f706f7365723c4163636f756e7449643e1450697049641c42616c616e63652c4f7074696f6e3c55726c3e584f7074696f6e3c5069704465736372697074696f6e3e5c4d61796265426c6f636b3c426c6f636b4e756d6265723e3050726f706f73616c44617461149c20412050495020776173206d61646520776974682061206042616c616e636560207374616b652e0038202320506172616d65746572733a0055012043616c6c6572204449442c2050726f706f7365722c205049502049442c206465706f7369742c2055524c2c206465736372697074696f6e2c206578706972792074696d652c2070726f706f73616c20646174612e5050726f706f73616c5374617465557064617465640c284964656e7469747949641450697049643450726f706f73616c537461746504dc2054726967676572656420656163682074696d6520746865207374617465206f6620612070726f706f73616c20697320616d656e64656414566f74656414284964656e746974794964244163636f756e74496414506970496410626f6f6c1c42616c616e636504fc20604163636f756e7449646020766f7465642060626f6f6c60206f6e207468652070726f706f73616c207265666572656e636564206279206050697049646024506970436c6f7365640c284964656e74697479496414506970496410626f6f6c04ec2050697020686173206265656e20636c6f7365642c20626f6f6c20696e6469636174657320776865746865722064617461206973207072756e656448457865637574696f6e5363686564756c65640c284964656e7469747949641450697049642c426c6f636b4e756d62657204e420457865637574696f6e206f6620612050495020686173206265656e207363686564756c656420617420737065636966696320626c6f636b2e7444656661756c74456e6163746d656e74506572696f644368616e6765640c284964656e7469747949642c426c6f636b4e756d6265722c426c6f636b4e756d62657208dc2044656661756c7420656e6163746d656e7420706572696f642028696e20626c6f636b732920686173206265656e206368616e6765642e94202863616c6c6572204449442c206f6c6420706572696f642c206e657720706572696f6429744d696e696d756d50726f706f73616c4465706f7369744368616e6765640c284964656e7469747949641c42616c616e63651c42616c616e63650880204d696e696d756d206465706f73697420616d6f756e74206d6f64696669656494202863616c6c6572204449442c206f6c6420616d6f756e742c206e657720616d6f756e74295c50656e64696e675069704578706972794368616e6765640c284964656e7469747949645c4d61796265426c6f636b3c426c6f636b4e756d6265723e5c4d61796265426c6f636b3c426c6f636b4e756d6265723e08d020416d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020657870697265732e94202863616c6c6572204449442c206f6c64206578706972792c206e65772065787069727929584d6178506970536b6970436f756e744368616e6765640c284964656e74697479496430536b6970706564436f756e7430536b6970706564436f756e7408d020546865206d6178696d756d2074696d65732061205049502063616e20626520736b697070656420776173206368616e6765642e8c202863616c6c6572204449442c206f6c642076616c75652c206e65772076616c756529544163746976655069704c696d69744368616e6765640c284964656e7469747949640c7533320c75333208bc20546865206d6178696d756d206e756d626572206f6620616374697665205049507320776173206368616e6765642e8c202863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293850726f706f73616c526566756e640c284964656e7469747949641450697049641c42616c616e6365084020526566756e642070726f706f73616c4c202869642c20746f74616c20616d6f756e74293c536e617073686f74436c656172656408284964656e74697479496428536e617073686f74496404682054686520736e617073686f742077617320636c65617265642e34536e617073686f7454616b656e0c284964656e74697479496428536e617073686f7449644c5665633c536e617073686f747465645069703e04682041206e657720736e617073686f74207761732074616b656e2e28506970536b69707065640c284964656e74697479496414506970496430536b6970706564436f756e7408a420412050495020696e2074686520736e617073686f742071756575652077617320736b69707065642e84202867635f6469642c207069705f69642c206e65775f736b69705f636f756e742958536e617073686f74526573756c7473456e616374656414284964656e746974794964484f7074696f6e3c536e617073686f7449643e685665633c2850697049642c20536b6970706564436f756e74293e285665633c50697049643e285665633c50697049643e08350120526573756c74732028652e672e2c20617070726f7665642c2072656a65637465642c20616e6420736b6970706564292c207765726520656e616374656420666f7220736f6d6520504950732e5501202867635f6469642c20736e617073686f745f69645f6f70742c20736b69707065645f706970735f776974685f6e65775f636f756e742c2072656a65637465645f706970732c20617070726f7665645f706970732964457865637574696f6e5363686564756c696e674661696c65640c284964656e7469747949641450697049642c426c6f636b4e756d626572041101205363686564756c696e67206f66207468652050495020666f7220657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e3c4578706972795363686564756c65640c284964656e7469747949641450697049642c426c6f636b4e756d626572049c205468652050495020686173206265656e207363686564756c656420666f72206578706972792e584578706972795363686564756c696e674661696c65640c284964656e7469747949641450697049642c426c6f636b4e756d626572040501205363686564756c696e67206f66207468652050495020666f7220657870697279206661696c656420696e20746865207363686564756c65722070616c6c65742e64457865637574696f6e43616e63656c6c696e674661696c65640414506970496404f42043616e63656c6c696e67207468652050495020657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e00488452657363686564756c654e6f74427952656c65617365436f6f7264696e61746f72043501204f6e6c79207468652047432072656c6561736520636f6f7264696e61746f7220697320616c6c6f77656420746f2072657363686564756c652070726f706f73616c20657865637574696f6e2e404e6f7446726f6d436f6d6d756e69747908f02054686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2ed0205468652070726f706f73616c206d7573742062652066726f6d2074686520636f6d6d756e6974792c206275742069736e27742e384e6f744279436f6d6d697474656508f02054686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2eb8205468652070726f706f73616c206d75737420626520627920636f6d6d756e6974792c206275742069736e27742e44546f6f4d616e7941637469766550697073082d01205468652063757272656e74206e756d626572206f6620616374697665202870656e64696e67207c207363686564756c65642920504950732065786365656420746865206d6178696d756da020616e64207468652070726f706f73616c206973206e6f74206279206120636f6d6d69747465652e40496e636f72726563744465706f73697404a02050726f706f7365722073706563696669657320616e20696e636f7272656374206465706f7369744c496e73756666696369656e744465706f73697404b82050726f706f7365722063616e2774206166666f726420746f206c6f636b206d696e696d756d206465706f736974384e6f5375636850726f706f73616c0474205468652070726f706f73616c20646f6573206e6f742065786973742e4c4e6f7441436f6d6d69747465654d656d6265720488204e6f742070617274206f6620676f7665726e616e636520636f6d6d69747465652e60496e76616c6964467574757265426c6f636b4e756d62657204dc205768656e206120626c6f636b206e756d626572206973206c657373207468616e2063757272656e7420626c6f636b206e756d6265722e544e756d6265724f66566f74657345786365656465640480205768656e206e756d626572206f6620766f746573206f766572666c6f77732e685374616b65416d6f756e744f66566f7465734578636565646564049c205768656e207374616b6520616d6f756e74206f66206120766f7465206f766572666c6f77732e584d697373696e6743757272656e744964656e746974790450204d697373696e672063757272656e742044494458496e636f727265637450726f706f73616c537461746504942050726f706f73616c206973206e6f7420696e2074686520636f72726563742073746174653443616e6e6f74536b6970506970040101205768656e20656e616374696e6720736e617073686f7420726573756c74732c20616e20756e736b69707061626c65205049502077617320736b69707065642e58536e617073686f74526573756c74546f6f4c6172676504190120547269656420746f20656e61637420726573756c747320666f722074686520736e617073686f74207175657565206f766572666c6f77696e6720697473206c656e6774682e48536e617073686f7449644d69736d6174636804610120547269656420746f20656e61637420726573756c7420666f7220504950207769746820696420646966666572656e742066726f6d20746861742061742074686520706f736974696f6e20696e207468652071756575652e705363686564756c656450726f706f73616c446f65736e74457869737404010120457865637574696f6e206f662061207363686564756c65642070726f706f73616c206661696c65642062656361757365206974206973206d697373696e672e6c50726f706f73616c4e6f74496e5363686564756c6564537461746504010120412070726f706f73616c2074686174206973206e6f7420696e2061207363686564756c65642073746174652063616e6e6f742062652065786563757465642e2124506f7274666f6c696f0124506f7274666f6c696f244c4e657874506f7274666f6c696f4e756d626572010106284964656e7469747949643c506f7274666f6c696f4e756d6265720020010000000000000004cc20546865206e65787420706f7274666f6c696f2073657175656e6365206e756d626572206f6620616e206964656e746974792e28506f7274666f6c696f73010206284964656e7469747949643c506f7274666f6c696f4e756d62657234506f7274666f6c696f4e616d650504000c41012054686520736574206f66206578697374696e6720706f7274666f6c696f732077697468207468656972206e616d65732e2049662061206365727461696e2070616972206f6620612044494420616e64590120706f7274666f6c696f206e756d626572206d61707320746f20604e6f6e6560207468656e2073756368206120706f7274666f6c696f20646f65736e27742065786973742e20436f6e76657273656c792c206966206135012070616972206d61707320746f2060536f6d65286e616d652960207468656e2073756368206120706f7274666f6c696f2065786973747320616e642069732063616c6c656420606e616d65602e304e616d65546f4e756d626572010206284964656e74697479496434506f7274666f6c696f4e616d653c506f7274666f6c696f4e756d6265720220010000000000000008e420496e7665727365206d6170206f662060506f7274666f6c696f7360207573656420746f20656e737572652062696a6563746976697469792ca420616e6420756e697175656e657373206f66206e616d657320696e2060506f7274666f6c696f73602e4c506f7274666f6c696f4173736574436f756e740101052c506f7274666f6c696f49640c7536340020000000000000000004fc20486f77206d616e79206173736574732077697468206e6f6e2d7a65726f2062616c616e6365207468697320706f7274666f6c696f20636f6e7461696e732e58506f7274666f6c696f417373657442616c616e6365730102052c506f7274666f6c696f4964185469636b65721c42616c616e63650240000000000000000000000000000000000488205468652061737365742062616c616e636573206f6620706f7274666f6c696f732e54506f7274666f6c696f4c6f636b65644173736574730102052c506f7274666f6c696f4964185469636b65721c42616c616e636502400000000000000000000000000000000008a020416d6f756e74206f6620617373657473206c6f636b656420696e206120706f7274666f6c696f2e2d01205468657365206173736574732073686f7720757020696e20706f7274666f6c696f2062616c616e6365206275742063616e206e6f74206265207472616e7366657272656420617761792e48506f7274666f6c696f437573746f6469616e0001052c506f7274666f6c696f4964284964656e7469747949640004000481012054686520637573746f6469616e206f66206120706172746963756c617220706f7274666f6c696f2e204e6f6e6520696d706c696573207468617420746865206964656e74697479206f776e65722069732074686520637573746f6469616e2e4c506f7274666f6c696f73496e437573746f6479010206284964656e7469747949642c506f7274666f6c696f496410626f6f6c0504000c550120547261636b7320616c6c2074686520706f7274666f6c696f7320696e20637573746f6479206f66206120706172746963756c6172206964656e746974792e204f6e6c79207573656420627920746865205549732ea501205768656e206074727565602069732073746f726564206173207468652076616c756520666f72206120676976656e2060286469642c2070696429602c206974206d65616e73207468617420607069646020697320696e20637573746f6479206f662060646964602ea501206066616c7365602076616c75657320617265206e65766572206578706c696369746c792073746f72656420696e20746865206d61702c20616e642061726520696e737465616420696e6665727265642062792074686520616273656e6365206f662061206b65792e3853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0118406372656174655f706f7274666f6c696f04106e616d6534506f7274666f6c696f4e616d6504ac2043726561746573206120706f7274666f6c696f20776974682074686520676976656e20606e616d65602e4064656c6574655f706f7274666f6c696f040c6e756d3c506f7274666f6c696f4e756d6265722039012044656c657465732061207573657220706f7274666f6c696f2e204120706f7274666f6c696f2063616e2062652064656c65746564206f6e6c7920696620697420686173206e6f2066756e64732e00242023204572726f72732101202a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2ef4202a2060506f7274666f6c696f4e6f74456d707479602069662074686520706f7274666f6c696f207374696c6c20686f6c647320616e7920617373657400382023205065726d697373696f6e7330202a20506f7274666f6c696f506d6f76655f706f7274666f6c696f5f66756e64730c1066726f6d2c506f7274666f6c696f496408746f2c506f7274666f6c696f4964146974656d73585665633c4d6f7665506f7274666f6c696f4974656d3e3c6101204d6f766573206120746f6b656e20616d6f756e742066726f6d206f6e6520706f7274666f6c696f206f6620616e206964656e7469747920746f20616e6f7468657220706f7274666f6c696f206f66207468652073616d65e4206964656e746974792e204d7573742062652063616c6c65642062792074686520637573746f6469616e206f66207468652073656e6465722e15012046756e64732066726f6d2064656c6574656420706f7274666f6c696f732063616e20616c736f206265207265636f7665726564207669612074686973206d6574686f642e00e420412073686f7274206d656d6f2063616e20626520616464656420746f20746f206561636820746f6b656e20616d6f756e74206d6f7665642e00242023204572726f72736d01202a2060506f7274666f6c696f446f65734e6f74457869737460206966206f6e65206f7220626f7468206f662074686520706f7274666f6c696f73207265666572656e636520616e20696e76616c696420706f7274666f6c696f2e5501202a206064657374696e6174696f6e5f69735f73616d655f706f7274666f6c696f6020696620626f74682073656e64657220616e6420726563656976657220706f7274666f6c696f20617265207468652073616d659501202a2060446966666572656e744964656e74697479506f7274666f6c696f7360206966207468652073656e64657220616e6420726563656976657220706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e7469746965734d01202a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f66207468652066726f6d20706f7274666f6c696f4501202a2060496e73756666696369656e74506f7274666f6c696f42616c616e636560206966207468652073656e64657220646f6573206e6f74206861766520656e6f75676820667265652062616c616e636500382023205065726d697373696f6e7330202a20506f7274666f6c696f4072656e616d655f706f7274666f6c696f080c6e756d3c506f7274666f6c696f4e756d6265721c746f5f6e616d6534506f7274666f6c696f4e616d651c842052656e616d65732061206e6f6e2d64656661756c7420706f7274666f6c696f2e00242023204572726f72732101202a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2e00382023205065726d697373696f6e7330202a20506f7274666f6c696f58717569745f706f7274666f6c696f5f637573746f6479040c7069642c506f7274666f6c696f496420c0205768656e2063616c6c65642062792074686520637573746f6469616e206f662060706f7274666f6c696f5f6964602c4d0120616c6c6f77732072657475726e696e672074686520637573746f6479206f662074686520706f7274666f6c696f20746f2074686520706f7274666f6c696f206f776e657220756e696c61746572616c6c792e00242023204572726f72736101202a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f74207468652063757272656e7420637573746f6469616e206f662060706f7274666f6c696f5f6964602e00382023205065726d697373696f6e7330202a20506f7274666f6c696f606163636570745f706f7274666f6c696f5f637573746f6479041c617574685f69640c75363400011840506f7274666f6c696f437265617465640c284964656e7469747949643c506f7274666f6c696f4e756d62657234506f7274666f6c696f4e616d6518b42054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c7920637265617465642e0034202320506172616d657465727334202a206f726967696e204449444c202a20706f7274666f6c696f206e756d62657244202a20706f7274666f6c696f206e616d6540506f7274666f6c696f44656c6574656408284964656e7469747949643c506f7274666f6c696f4e756d62657214b42054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c792072656d6f7665642e0034202320506172616d657465727334202a206f726967696e204449444c202a20706f7274666f6c696f206e756d626572584d6f7665644265747765656e506f7274666f6c696f7318284964656e7469747949642c506f7274666f6c696f49642c506f7274666f6c696f4964185469636b65721c42616c616e6365304f7074696f6e3c4d656d6f3e20f4204120746f6b656e20616d6f756e7420686173206265656e206d6f7665642066726f6d206f6e6520706f7274666f6c696f20746f20616e6f746865722e0034202320506172616d657465727334202a206f726967696e204449444c202a20736f7572636520706f7274666f6c696f60202a2064657374696e6174696f6e20706f7274666f6c696f3c202a206173736574207469636b65727c202a2061737365742062616c616e6365207468617420776173206d6f76656440506f7274666f6c696f52656e616d65640c284964656e7469747949643c506f7274666f6c696f4e756d62657234506f7274666f6c696f4e616d651801012054686520706f7274666f6c696f206964656e746966696564207769746820606e756d6020686173206265656e2072656e616d656420746f20606e616d65602e0034202320506172616d657465727334202a206f726967696e204449444c202a20706f7274666f6c696f206e756d62657244202a20706f7274666f6c696f206e616d653855736572506f7274666f6c696f7308284964656e746974794964945665633c28506f7274666f6c696f4e756d6265722c20506f7274666f6c696f4e616d65293e14d820416c6c206e6f6e2d64656661756c7420706f7274666f6c696f206e756d6265727320616e64206e616d6573206f662061204449442e0034202320506172616d657465727334202a206f726967696e2044494478202a20766563746f72206f66206e756d6265722d6e616d6520706169727364506f7274666f6c696f437573746f6469616e4368616e6765640c284964656e7469747949642c506f7274666f6c696f4964284964656e74697479496418f820437573746f6479206f66206120706f7274666f6c696f20686173206265656e20676976656e20746f206120646966666572656e74206964656e746974790034202320506172616d657465727334202a206f726967696e204449443c202a20706f7274666f6c696f20696468202a20706f7274666f6c696f20637573746f6469616e20646964002454506f7274666f6c696f446f65734e6f74457869737404742054686520706f7274666f6c696f20646f65736e27742065786973742e70496e73756666696369656e74506f7274666f6c696f42616c616e636504a020496e73756666696369656e742062616c616e636520666f722061207472616e73616374696f6e2e6844657374696e6174696f6e497353616d65506f7274666f6c696f04ec2054686520736f7572636520616e642064657374696e6174696f6e20706f7274666f6c696f732073686f756c6420626520646966666572656e742e64506f7274666f6c696f4e616d65416c7265616479496e5573650435012054686520706f7274666f6c696f20636f756c646e27742062652072656e616d65642062656361757365207468652063686f73656e206e616d6520697320616c726561647920696e207573652e945365636f6e646172794b65794e6f74417574686f72697a6564466f72506f7274666f6c696f04010120546865207365636f6e64617279206b6579206973206e6f7420617574686f72697a656420746f206163636573732074686520706f7274666f6c696f2873292e54556e617574686f72697a6564437573746f6469616e04f82054686520706f72666f6c696f277320637573746f6479206973207769746820736f6d656f6e65206f74686572207468616e207468652063616c6c65722e60496e73756666696369656e74546f6b656e734c6f636b656404c02043616e206e6f7420756e6c6f636b206d6f726520746f6b656e73207468616e207768617420617265206c6f636b656444506f7274666f6c696f4e6f74456d70747904c02054686520706f7274666f6c696f207374696c6c2068617320736f6d652061737365742062616c616e6365206c6566746c446966666572656e744964656e74697479506f7274666f6c696f7304b82054686520706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e746974696573222c50726f746f636f6c466565012c50726f746f636f6c466565082042617365466565730101052850726f746f636f6c4f701c42616c616e636500400000000000000000000000000000000004150120546865206d617070696e67206f66206f7065726174696f6e206e616d657320746f2074686520626173652066656573206f662074686f7365206f7065726174696f6e732e2c436f656666696369656e74010020506f73526174696f200100000001000000041501205468652066656520636f656666696369656e74206173206120706f73697469766520726174696f6e616c20286e756d657261746f722c2064656e6f6d696e61746f72292e0108486368616e67655f636f656666696369656e74042c636f656666696369656e7420506f73526174696f10c4204368616e676573207468652066656520636f656666696369656e7420666f722074686520726f6f74206f726967696e2e00242023204572726f72738c202a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e3c6368616e67655f626173655f66656508086f702850726f746f636f6c4f7020626173655f6665651c42616c616e636510b0204368616e67657320746865206120626173652066656520666f722074686520726f6f74206f726967696e2e00242023204572726f72738c202a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e010c1846656553657408284964656e7469747949641c42616c616e63650488205468652070726f746f636f6c20666565206f6620616e206f7065726174696f6e2e38436f656666696369656e7453657408284964656e74697479496420506f73526174696f0454205468652066656520636f656666696369656e742e284665654368617267656408244163636f756e7449641c42616c616e636504342046656520636861726765642e000c68496e73756666696369656e744163636f756e7442616c616e636504b420496e73756666696369656e74206163636f756e742062616c616e636520746f2070617920746865206665652e4c556e48616e646c6564496d62616c616e636573048c204e6f742061626c6520746f2068616e646c65642074686520696d62616c616e63657368496e73756666696369656e745375627369647942616c616e636504b420496e73756666696369656e7420737562736964792062616c616e636520746f2070617920746865206665652e23245363686564756c657201245363686564756c65720c184167656e646101010538543a3a426c6f636b4e756d62657271015665633c4f7074696f6e3c5363686564756c65643c3c5420617320436f6e6669673e3a3a43616c6c2c20543a3a426c6f636b4e756d6265722c20543a3a0a50616c6c6574734f726967696e2c20543a3a4163636f756e7449643e3e3e000400044d01204974656d7320746f2062652065786563757465642c20696e64657865642062792074686520626c6f636b206e756d626572207468617420746865792073686f756c64206265206578656375746564206f6e2e184c6f6f6b75700001051c5665633c75383e6c5461736b416464726573733c543a3a426c6f636b4e756d6265723e000400040101204c6f6f6b75702066726f6d206964656e7469747920746f2074686520626c6f636b206e756d62657220616e6420696e646578206f6620746865207461736b2e3853746f7261676556657273696f6e01002052656c656173657304000c7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e0098204e6577206e6574776f726b732073746172742077697468206c6173742076657273696f6e2e0118207363686564756c6510107768656e38543a3a426c6f636b4e756d626572386d617962655f706572696f646963a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e207072696f72697479487363686564756c653a3a5072696f726974791063616c6c60426f783c3c5420617320436f6e6669673e3a3a43616c6c3e287420416e6f6e796d6f75736c79207363686564756c652061207461736b2e002c2023203c7765696768743ea0202d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c7390202d2042617365205765696768743a2032322e3239202b202e313236202a205320c2b57334202d204442205765696768743a4c20202020202d20526561643a204167656e64615020202020202d2057726974653a204167656e64613d01202d2057696c6c20757365206261736520776569676874206f662032352077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c73302023203c2f7765696768743e1863616e63656c08107768656e38543a3a426c6f636b4e756d62657214696e6465780c75333228982043616e63656c20616e20616e6f6e796d6f75736c79207363686564756c6564207461736b2e002c2023203c7765696768743ea0202d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c7394202d2042617365205765696768743a2032322e3135202b20322e383639202a205320c2b57334202d204442205765696768743a4c20202020202d20526561643a204167656e64617020202020202d2057726974653a204167656e64612c204c6f6f6b75704101202d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c73302023203c2f7765696768743e387363686564756c655f6e616d6564140869641c5665633c75383e107768656e38543a3a426c6f636b4e756d626572386d617962655f706572696f646963a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e207072696f72697479487363686564756c653a3a5072696f726974791063616c6c60426f783c3c5420617320436f6e6669673e3a3a43616c6c3e285c205363686564756c652061206e616d6564207461736b2e002c2023203c7765696768743ea0202d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c738c202d2042617365205765696768743a2032392e36202b202e313539202a205320c2b57334202d204442205765696768743a6c20202020202d20526561643a204167656e64612c204c6f6f6b75707020202020202d2057726974653a204167656e64612c204c6f6f6b75704d01202d2057696c6c20757365206261736520776569676874206f662033352077686963682073686f756c6420626520676f6f6420666f72206d6f7265207468616e203330207363686564756c65642063616c6c73302023203c2f7765696768743e3063616e63656c5f6e616d6564040869641c5665633c75383e287c2043616e63656c2061206e616d6564207363686564756c6564207461736b2e002c2023203c7765696768743ea0202d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c7394202d2042617365205765696768743a2032342e3931202b20322e393037202a205320c2b57334202d204442205765696768743a6c20202020202d20526561643a204167656e64612c204c6f6f6b75707020202020202d2057726974653a204167656e64612c204c6f6f6b75704101202d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c73302023203c2f7765696768743e387363686564756c655f61667465721014616674657238543a3a426c6f636b4e756d626572386d617962655f706572696f646963a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e207072696f72697479487363686564756c653a3a5072696f726974791063616c6c60426f783c3c5420617320436f6e6669673e3a3a43616c6c3e14ac20416e6f6e796d6f75736c79207363686564756c652061207461736b20616674657220612064656c61792e002c2023203c7765696768743e582053616d65206173205b607363686564756c65605d2e302023203c2f7765696768743e507363686564756c655f6e616d65645f6166746572140869641c5665633c75383e14616674657238543a3a426c6f636b4e756d626572386d617962655f706572696f646963a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e207072696f72697479487363686564756c653a3a5072696f726974791063616c6c60426f783c3c5420617320436f6e6669673e3a3a43616c6c3e1494205363686564756c652061206e616d6564207461736b20616674657220612064656c61792e002c2023203c7765696768743e702053616d65206173205b607363686564756c655f6e616d6564605d2e302023203c2f7765696768743e010c245363686564756c6564082c426c6f636b4e756d6265720c7533320494205363686564756c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d2043616e63656c6564082c426c6f636b4e756d6265720c75333204902043616e63656c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d28446973706174636865640c605461736b416464726573733c426c6f636b4e756d6265723e3c4f7074696f6e3c5665633c75383e3e384469737061746368526573756c7404ac204469737061746368656420736f6d65207461736b2e205c5b7461736b2c2069642c20726573756c745c5d0010404661696c6564546f5363686564756c650468204661696c656420746f207363686564756c6520612063616c6c204e6f74466f756e6404802043616e6e6f742066696e6420746865207363686564756c65642063616c6c2e5c546172676574426c6f636b4e756d626572496e5061737404a820476976656e2074617267657420626c6f636b206e756d62657220697320696e2074686520706173742e4852657363686564756c654e6f4368616e676504f42052657363686564756c65206661696c6564206265636175736520697420646f6573206e6f74206368616e6765207363686564756c65642074696d652e2428536574746c656d656e740128536574746c656d656e74442456656e7565496e666f0001051c56656e756549641456656e7565000400049820496e666f2061626f757420612076656e75652e2076656e75655f6964202d3e2076656e75651c44657461696c730101051c56656e756549643056656e756544657461696c7300040008e420467265652d666f726d20746578742061626f757420612076656e75652e2076656e75655f6964202d3e206056656e756544657461696c736060204f6e6c79206e656564656420666f72207468652055492e4456656e7565496e737472756374696f6e730102051c56656e7565496434496e737472756374696f6e49640828290500107020496e737472756374696f6e7320756e64657220612076656e75652e60204f6e6c79206e656564656420666f72207468652055492e00842076656e75655f6964202d3e20696e737472756374696f6e5f6964202d3e2028293056656e75655369676e6572730102051c56656e7565496430543a3a4163636f756e74496410626f6f6c05040004e4205369676e65727320616c6c6f776564206279207468652076656e75652e202876656e75655f69642c207369676e657229202d3e20626f6f6c285573657256656e756573010105284964656e746974794964305665633c56656e756549643e000400047101204172726179206f662076656e756573206372656174656420627920616e206964656e746974792e204f6e6c79206e656564656420666f72207468652055492e204964656e746974794964202d3e205665633c76656e75655f69643e48496e737472756374696f6e44657461696c7301010534496e737472756374696f6e496498496e737472756374696f6e3c543a3a4d6f6d656e742c20543a3a426c6f636b4e756d6265723e00540000000000000000000000000000000000000000000411012044657461696c732061626f757420616e20696e737472756374696f6e2e20696e737472756374696f6e5f6964202d3e20696e737472756374696f6e5f64657461696c733c496e737472756374696f6e4c65677301020534496e737472756374696f6e4964144c656749640c4c65670579010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ec204c65677320756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656750496e737472756374696f6e4c656753746174757301020534496e737472756374696f6e4964144c656749645c4c65675374617475733c543a3a4163636f756e7449643e05040004310120537461747573206f662061206c656720756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656753746174757364496e737472756374696f6e41666669726d7350656e64696e6701010534496e737472756374696f6e49640c75363400200000000000000000048101204e756d626572206f662061666669726d6174696f6e732070656e64696e67206265666f726520696e737472756374696f6e2069732065786563757465642e20696e737472756374696f6e5f6964202d3e2061666669726d5f70656e64696e673c41666669726d73526563656976656401020534496e737472756374696f6e49642c506f7274666f6c696f49644441666669726d6174696f6e53746174757305040004990120547261636b732061666669726d6174696f6e7320726563656976656420666f7220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c20636f756e7465725f706172747929202d3e2041666669726d6174696f6e537461747573405573657241666669726d6174696f6e730102052c506f7274666f6c696f496434496e737472756374696f6e49644441666669726d6174696f6e5374617475730504000855012048656c70732061207573657220747261636b2074686569722070656e64696e6720696e737472756374696f6e7320616e642061666669726d6174696f6e7320286f6e6c79206e656564656420666f72205549292ed42028636f756e7465725f70617274792c20696e737472756374696f6e5f696429202d3e2041666669726d6174696f6e5374617475733052656365697074735573656401020530543a3a4163636f756e7449640c75363410626f6f6c02040004150120547261636b7320726564656d7074696f6e206f662072656365697074732e20287369676e65722c20726563656970745f75696429202d3e20726563656970745f757365643856656e756546696c746572696e67010102185469636b657210626f6f6c00040004fd0120547261636b73206966206120746f6b656e2068617320656e61626c65642066696c746572696e672076656e75657320746861742063616e2063726561746520696e737472756374696f6e7320696e766f6c76696e6720746865697220746f6b656e2e205469636b6572202d3e2066696c746572696e675f656e61626c65643856656e7565416c6c6f774c697374010202185469636b65721c56656e7565496410626f6f6c05040008c5012056656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c6172207469636b65722e204f6e6c7920757365642069662066696c746572696e6720697320656e61626c65642e7820287469636b65722c2076656e75655f696429202d3e20616c6c6f7765643056656e7565436f756e74657201001c56656e75654964200000000000000000041901204e756d626572206f662076656e75657320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d6265722948496e737472756374696f6e436f756e746572010034496e737472756374696f6e4964200000000000000000043101204e756d626572206f6620696e737472756374696f6e7320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d626572293853746f7261676556657273696f6e01001c56657273696f6e040004442053746f726167652076657273696f6e2e0144306372656174655f76656e75650c1c64657461696c733056656e756544657461696c731c7369676e657273445665633c543a3a4163636f756e7449643e0c7479702456656e756554797065145c205265676973746572732061206e65772076656e75652e00a8202a206064657461696c7360202d2045787472612064657461696c732061626f757420612076656e75654101202a20607369676e65727360202d204172726179206f66207369676e65727320746861742061726520616c6c6f77656420746f207369676e20726563656970747320666f7220746869732076656e756598202a206074797060202d2054797065206f662076656e7565206265696e672063726561746564507570646174655f76656e75655f64657461696c73080869641c56656e756549641c64657461696c733056656e756544657461696c731060204564697420612076656e756527732064657461696c732e00b8202a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742ec4202a206064657461696c7360207370656369666965732074686520757064617465642076656e75652064657461696c732e447570646174655f76656e75655f74797065080869641c56656e756549640c7479702456656e7565547970651054204564697420612076656e7565277320747970652e00b8202a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742eb8202a206074797065602073706563696669657320746865206e65772074797065206f66207468652076656e75652e3c6164645f696e737472756374696f6e142076656e75655f69641c56656e756549643c736574746c656d656e745f7479706578536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e2874726164655f64617465444f7074696f6e3c543a3a4d6f6d656e743e2876616c75655f64617465444f7074696f6e3c543a3a4d6f6d656e743e106c656773205665633c4c65673e306020416464732061206e657720696e737472756374696f6e2e0030202320417267756d656e7473f0202a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e0d01202a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c6564610120202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e5501202a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e7101202a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b8202a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e00242023205765696768749c20603935305f3030305f303030202b20315f3030305f303030202a206c6567732e6c656e282960686164645f616e645f61666669726d5f696e737472756374696f6e182076656e75655f69641c56656e756549643c736574746c656d656e745f7479706578536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e2874726164655f64617465444f7074696f6e3c543a3a4d6f6d656e743e2876616c75655f64617465444f7074696f6e3c543a3a4d6f6d656e743e106c656773205665633c4c65673e28706f7274666f6c696f73405665633c506f7274666f6c696f49643e3490204164647320616e642061666669726d732061206e657720696e737472756374696f6e2e0030202320417267756d656e7473f0202a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e0d01202a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c6564610120202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e5501202a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e7101202a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b8202a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e7101202a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2075736520696e20746869732061666669726d6174696f6e732e00382023205065726d697373696f6e7330202a20506f7274666f6c696f4861666669726d5f696e737472756374696f6e0c08696434496e737472756374696f6e496428706f7274666f6c696f73405665633c506f7274666f6c696f49643e386d61785f6c6567735f636f756e740c75333224c02050726f766964652061666669726d6174696f6e20746f20616e206578697374696e6720696e737472756374696f6e2e0030202320417267756d656e74738c202a2060696460202d20496e737472756374696f6e20696420746f2061666669726d2e6d01202a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2061666669726d207468697320696e737472756374696f6e2efc202a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f206265202061666669726d65642e00382023205065726d697373696f6e7330202a20506f7274666f6c696f5077697468647261775f61666669726d6174696f6e0c08696434496e737472756374696f6e496428706f7274666f6c696f73405665633c506f7274666f6c696f49643e386d61785f6c6567735f636f756e740c75333224c420576974686472617720616e2061666669726d6174696f6e20666f72206120676976656e20696e737472756374696f6e2e0030202320417267756d656e7473f0202a2060696460202d20496e737472756374696f6e20696420666f7220746861742061666669726d6174696f6e206765742077697468647261776e2e6101202a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2077697468647261772061666669726d6174696f6e2e0501202a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f20626520756e2d61666669726d65642e00382023205065726d697373696f6e7330202a20506f7274666f6c696f4872656a6563745f696e737472756374696f6e0c08696434496e737472756374696f6e496424706f7274666f6c696f2c506f7274666f6c696f49642c6e756d5f6f665f6c6567730c75333224842052656a6563747320616e206578697374696e6720696e737472756374696f6e2e0030202320417267756d656e74738c202a2060696460202d20496e737472756374696f6e20696420746f2072656a6563742ed4202a2060706f7274666f6c696f60202d20506f7274666f6c696f20746f2072656a6563742074686520696e737472756374696f6e2ed4202a20606e756d5f6f665f6c65677360202d204e756d626572206f66206c65677320696e2074686520696e737472756374696f6e2e00382023205065726d697373696f6e7330202a20506f7274666f6c696f5061666669726d5f776974685f72656365697074731008696434496e737472756374696f6e49643c726563656970745f64657461696c73dc5665633c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e28706f7274666f6c696f73405665633c506f7274666f6c696f49643e386d61785f6c6567735f636f756e740c75333230d0204163636570747320616e20696e737472756374696f6e20616e6420636c61696d732061207369676e656420726563656970742e0030202320417267756d656e747380202a2060696460202d2054617267657420696e737472756374696f6e2069642eac202a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d8202a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e90202a20607369676e657260202d205369676e6572206f662074686520726563656970742e88202a20607369676e65645f6461746160202d205369676e656420726563656970742e7d01202a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f20616363657074207468697320696e737472756374696f6e207769746800382023205065726d697373696f6e7330202a20506f7274666f6c696f34636c61696d5f726563656970740808696434496e737472756374696f6e49643c726563656970745f64657461696c73c85265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e2c6420436c61696d732061207369676e656420726563656970742e0030202320417267756d656e7473c0202a2060696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742eac202a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d8202a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e90202a20607369676e657260202d205369676e6572206f662074686520726563656970742e88202a20607369676e65645f6461746160202d205369676e656420726563656970742e00382023205065726d697373696f6e7330202a20506f7274666f6c696f3c756e636c61696d5f726563656970740838696e737472756374696f6e5f696434496e737472756374696f6e4964186c65675f6964144c65674964209c20556e636c61696d7320612070726576696f75736c7920636c61696d656420726563656970742e0030202320417267756d656e7473f0202a2060696e737472756374696f6e5f696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742eac202a20606c65675f696460202d20546172676574206c656720696420666f7220746865207265636569707400382023205065726d697373696f6e7330202a20506f7274666f6c696f4c7365745f76656e75655f66696c746572696e6708187469636b6572185469636b65721c656e61626c656410626f6f6c20c420456e61626c6573206f722064697361626c65642076656e75652066696c746572696e6720666f72206120746f6b656e2e0030202320417267756d656e7473b8202a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e1d01202a2060656e61626c656460202d20426f6f6c65616e20746861742064656369646573206966207468652066696c746572696e672073686f756c6420626520656e61626c65642e00382023205065726d697373696f6e7320202a20417373657430616c6c6f775f76656e75657308187469636b6572185469636b65721876656e756573305665633c56656e756549643e1c110120416c6c6f7773206164646974696f6e616c2076656e75657320746f2063726561746520696e737472756374696f6e7320696e766f6c76696e6720616e2061737365742e00b8202a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e8101202a206076656e75657360202d204172726179206f662076656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e00382023205065726d697373696f6e7320202a2041737365743c646973616c6c6f775f76656e75657308187469636b6572185469636b65721876656e756573305665633c56656e756549643e1c6d01205265766f6b6573207065726d697373696f6e20676976656e20746f2076656e75657320666f72206372656174696e6720696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c61722061737365742e00b8202a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2ea901202a206076656e75657360202d204172726179206f662076656e756573207468617420617265206e6f206c6f6e67657220616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e00382023205065726d697373696f6e7320202a2041737365745c6368616e67655f726563656970745f76616c6964697479082c726563656970745f7569640c7536342076616c696469747910626f6f6c140101204d61726b732061207265636569707420697373756564206279207468652063616c6c657220617320636c61696d6564206f72206e6f7420636c61696d65642ec501205468697320616c6c6f77732074686520726563656970742069737375657220746f20696e76616c696461746520616e20616c7265616479206973737565642072656365697074206f7220726576616c696461746520616e20616c726561647920636c61696d656420726563656970742e00b0202a2060726563656970745f75696460202d20556e69717565204944206f662074686520726563656970742eb0202a206076616c696469747960202d204e65772076616c6964697479206f662074686520726563656970742e74657865637574655f7363686564756c65645f696e737472756374696f6e0808696434496e737472756374696f6e49642c5f6c6567735f636f756e740c75333204850120526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f20657865637574652061207363686564756c656420736574746c656d656e7420696e737472756374696f6e2e5872657363686564756c655f696e737472756374696f6e0408696434496e737472756374696f6e496428882052657363686564756c65732061206661696c656420696e737472756374696f6e2e0030202320417267756d656e7473b8202a2060696460202d2054617267657420696e737472756374696f6e20696420746f2072657363686564756c652e00382023205065726d697373696f6e7330202a20506f7274666f6c696f00242023204572726f72734101202a2060496e737472756374696f6e4e6f744661696c656460202d20496e737472756374696f6e206e6f7420696e2061206661696c6564207374617465206f7220646f6573206e6f742065786973742e014c3056656e75654372656174656410284964656e7469747949641c56656e756549643056656e756544657461696c732456656e75655479706504f02041206e65772076656e756520686173206265656e206372656174656420286469642c2076656e75655f69642c2064657461696c732c2074797065294c56656e756544657461696c73557064617465640c284964656e7469747949641c56656e756549643056656e756544657461696c7304190120416e206578697374696e672076656e756527732064657461696c7320686173206265656e207570646174656420286469642c2076656e75655f69642c2064657461696c73294056656e756554797065557064617465640c284964656e7469747949641c56656e756549642456656e75655479706504010120416e206578697374696e672076656e75652773207479706520686173206265656e207570646174656420286469642c2076656e75655f69642c20747970652948496e737472756374696f6e437265617465641c284964656e7469747949641c56656e7565496434496e737472756374696f6e49646c536574746c656d656e74547970653c426c6f636b4e756d6265723e384f7074696f6e3c4d6f6d656e743e384f7074696f6e3c4d6f6d656e743e205665633c4c65673e088c2041206e657720696e737472756374696f6e20686173206265656e20637265617465643d0120286469642c2076656e75655f69642c20696e737472756374696f6e5f69642c20736574746c656d656e745f747970652c2074726164655f646174652c2076616c75655f646174652c206c656773294c496e737472756374696f6e41666669726d65640c284964656e7469747949642c506f7274666f6c696f496434496e737472756374696f6e496404090120416e20696e737472756374696f6e20686173206265656e2061666669726d656420286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964295041666669726d6174696f6e57697468647261776e0c284964656e7469747949642c506f7274666f6c696f496434496e737472756374696f6e4964040d0120416e2061666669726d6174696f6e20686173206265656e2077697468647261776e20286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964294c496e737472756374696f6e52656a656374656408284964656e74697479496434496e737472756374696f6e496404dc20416e20696e737472756374696f6e20686173206265656e2072656a656374656420286469642c20696e737472756374696f6e5f6964293852656365697074436c61696d656418284964656e74697479496434496e737472756374696f6e4964144c656749640c753634244163636f756e7449643c526563656970744d657461646174610481012041207265636569707420686173206265656e20636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e65722c2072656365697074206d6574616461746129585265636569707456616c69646974794368616e67656410284964656e746974794964244163636f756e7449640c75363410626f6f6c0411012041207265636569707420686173206265656e20696e76616c69646174656420286469642c207369676e65722c20726563656970745f7569642c2076616c6964697479294052656365697074556e636c61696d656414284964656e74697479496434496e737472756374696f6e4964144c656749640c753634244163636f756e7449640441012041207265636569707420686173206265656e20756e636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e6572293856656e756546696c746572696e670c284964656e746974794964185469636b657210626f6f6c046d012056656e75652066696c746572696e6720686173206265656e20656e61626c6564206f722064697361626c656420666f722061207469636b657220286469642c207469636b65722c2066696c746572696e675f656e61626c6564293456656e756573416c6c6f7765640c284964656e746974794964185469636b6572305665633c56656e756549643e04e02056656e75657320616464656420746f20616c6c6f77206c69737420286469642c207469636b65722c207665633c76656e75655f69643e293456656e756573426c6f636b65640c284964656e746974794964185469636b6572305665633c56656e756549643e04e02056656e75657320616464656420746f20626c6f636b206c69737420286469642c207469636b65722c207665633c76656e75655f69643e29484c65674661696c6564457865637574696f6e0c284964656e74697479496434496e737472756374696f6e4964144c6567496404e020457865637574696f6e206f662061206c6567206661696c656420286469642c20696e737472756374696f6e5f69642c206c65675f69642944496e737472756374696f6e4661696c656408284964656e74697479496434496e737472756374696f6e496404cc20496e737472756374696f6e206661696c656420657865637574696f6e20286469642c20696e737472756374696f6e5f6964294c496e737472756374696f6e457865637574656408284964656e74697479496434496e737472756374696f6e496404dc20496e737472756374696f6e206578656375746564207375636365737366756c6c79286469642c20696e737472756374696f6e5f6964294456656e7565556e617574686f72697a65640c284964656e746974794964185469636b65721c56656e756549640405012056656e7565206e6f742070617274206f662074686520746f6b656e277320616c6c6f77206c69737420286469642c205469636b65722c2076656e75655f696429405363686564756c696e674661696c6564043444697370617463684572726f720484205363686564756c696e67206f6620696e737472756374696f6e206661696c732e58496e737472756374696f6e52657363686564756c656408284964656e74697479496434496e737472756374696f6e4964087020496e737472756374696f6e2069732072657363686564756c65642e74202863616c6c6572204449442c20696e737472756374696f6e5f696429006430496e76616c696456656e756504582056656e756520646f6573206e6f742065786973742e30556e617574686f72697a656404ac2053656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e3c4e6f50656e64696e6741666669726d04d4204e6f2070656e64696e672061666669726d6174696f6e20666f72207468652070726f766964656420696e737472756374696f6e2e58496e737472756374696f6e4e6f7441666669726d6564048c20496e737472756374696f6e20686173206e6f74206265656e2061666669726d65642e54496e737472756374696f6e4e6f7450656e64696e6704bc2050726f766964656420696e737472756374696f6e206973206e6f742070656e64696e6720657865637574696f6e2e50496e737472756374696f6e4e6f744661696c656404bc2050726f766964656420696e737472756374696f6e206973206e6f74206661696c696e6720657865637574696f6e2e344c65674e6f7450656e64696e67049c2050726f7669646564206c6567206973206e6f742070656e64696e6720657865637574696f6e2e48556e617574686f72697a65645369676e6572049c205369676e6572206973206e6f7420617574686f72697a6564206279207468652076656e75652e5452656365697074416c7265616479436c61696d65640458205265636569707420616c726561647920757365642e44526563656970744e6f74436c61696d656404582052656365697074206e6f742075736564207965742e44556e617574686f72697a656456656e756504a82056656e756520646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e484661696c6564546f4c6f636b546f6b656e73042501205768696c652061666669726d696e6720746865207472616e736665722c2073797374656d206661696c656420746f206c6f636b207468652061737365747320696e766f6c7665642e44496e737472756374696f6e4661696c6564047c20496e737472756374696f6e206661696c656420746f20657865637574652e5c496e737472756374696f6e4461746573496e76616c6964047820496e737472756374696f6e2068617320696e76616c696420646174657370496e737472756374696f6e536574746c65426c6f636b50617373656404ac20496e737472756374696f6e27732074617267657420736574746c6520626c6f636b20726561636865642e40496e76616c69645369676e6174757265047c204f6666636861696e207369676e617475726520697320696e76616c69642e4853616d6553656e646572526563656976657204882053656e64657220616e6420726563656976657220617265207468652073616d652e44506f7274666f6c696f4d69736d6174636804290120506f7274666f6c696f20696e207265636569707420646f6573206e6f74206d61746368207769746820706f7274666f6c696f732070726f76696465642062792074686520757365722e44536574746c654f6e50617374426c6f636b046501205468652070726f766964656420736574746c656d656e7420626c6f636b206e756d62657220697320696e20746865207061737420616e642063616e6e6f74206265207573656420627920746865207363686564756c65722e4c4e6f506f7274666f6c696f50726f766964656404410120506f7274666f6c696f20626173656420616374696f6e732072657175697265206174206c65617374206f6e6520706f7274666f6c696f20746f2062652070726f766964656420617320696e7075742e6c556e657870656374656441666669726d6174696f6e537461747573044901205468652063757272656e7420696e737472756374696f6e2061666669726d6174696f6e2073746174757320646f6573206e6f7420737570706f7274207468652072657175657374656420616374696f6e2e404661696c6564546f5363686564756c650490205363686564756c696e67206f6620616e20696e737472756374696f6e206661696c732e404c6567436f756e74546f6f536d616c6c04a901204c65677320636f756e742073686f756c64206d61746368657320776974682074686520746f74616c206e756d626572206f66206c65677320696e20776869636820676976656e20706f7274666f6c696f20616374206173206066726f6d5f706f7274666f6c696f602e48556e6b6e6f776e496e737472756374696f6e047820496e737472756374696f6e2073746174757320697320756e6b6e6f776e64496e737472756374696f6e486173546f6f4d616e794c65677304c8204d6178696d756d206c65677320746861742063616e20626520696e20612073696e676c6520696e737472756374696f6e2e2528537461746973746963730128537461746973746963730c584163746976655472616e736665724d616e6167657273010102185469636b6572505665633c5472616e736665724d616e616765723e00040004c8205472616e73666572206d616e61676572732063757272656e746c7920656e61626c656420666f7220616e2041737365742e54496e766573746f72436f756e745065724173736574010102185469636b65721c436f756e7465720020000000000000000004a4204e756d626572206f662063757272656e7420696e766573746f727320696e20616e2061737365742e384578656d7074456e74697469657301020264285469636b65722c205472616e736665724d616e61676572291c53636f7065496410626f6f6c0204000c490120456e746974696573206578656d70742066726f6d207472616e73666572206d616e61676572732e204578656d7074696f6e7320726571756972656d656e747320617265206261736564206f6e20544d532e4d0120544d73206d61792072657175697265206a757374207468652073656e6465722c206a757374207468652072656365697665722c20626f7468206f722065697468657220746f206265206578656d707465642e3d012043544d2072657175697265732073656e64657220746f206265206578656d70746564207768696c652050544d20726571756972657320726563656976657220746f206265206578656d707465642e0110506164645f7472616e736665725f6d616e6167657208187469636b6572185469636b6572506e65775f7472616e736665725f6d616e616765723c5472616e736665724d616e61676572387420416464732061206e6577207472616e73666572206d616e616765722e0030202320417267756d656e7473c901202a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e1501202a20607469636b657260207469636b657220666f7220776869636820746865207472616e73666572206d616e616765727320617265206265696e6720757064617465642edc202a20606e65775f7472616e736665725f6d616e6167657260205472616e73666572206d616e61676572206265696e672061646465642e00242023204572726f7273f4202a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722e6901202a20604475706c69636174655472616e736665724d616e616765726020696620606e65775f7472616e736665725f6d616e616765726020697320616c726561647920656e61626c656420666f7220746865207469636b65722e3901202a20605472616e736665724d616e61676572734c696d697452656163686564602069662074686520607469636b65726020616c726561647920686173206d617820544d7320617474616368656400382023205065726d697373696f6e7320202a2041737365745c72656d6f76655f7472616e736665725f6d616e6167657208187469636b6572185469636b6572407472616e736665725f6d616e616765723c5472616e736665724d616e6167657234702052656d6f7665732061207472616e73666572206d616e616765722e0030202320417267756d656e7473c901202a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e1501202a20607469636b657260207469636b657220666f7220776869636820746865207472616e73666572206d616e616765727320617265206265696e6720757064617465642ed4202a20607472616e736665725f6d616e6167657260205472616e73666572206d616e61676572206265696e672072656d6f7665642e00242023204572726f7273f4202a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722ead01202a20605472616e736665724d616e616765724d697373696e6760206966206061737365745f636f6d706c69616e63656020636f6e7461696e73206d756c7469706c6520656e74726965732077697468207468652073616d652060726571756972656d656e745f6964602e00382023205065726d697373696f6e7320202a204173736574546164645f6578656d707465645f656e7469746965730c187469636b6572185469636b6572407472616e736665725f6d616e616765723c5472616e736665724d616e61676572446578656d707465645f656e746974696573305665633c53636f706549643e34a0204578656d707420656e7469746965732066726f6d2061207472616e73666572206d616e616765720030202320417267756d656e7473c901202a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e0901202a20607469636b657260207469636b657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e5901202a20607472616e736665725f6d616e6167657260205472616e73666572206d616e6167657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e3d01202a20606578656d707465645f656e746974696573602053636f706549647320666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e00242023204572726f7273f4202a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722e00382023205065726d697373696f6e7320202a2041737365746072656d6f76655f6578656d707465645f656e7469746965730c187469636b6572185469636b6572407472616e736665725f6d616e616765723c5472616e736665724d616e6167657220656e746974696573305665633c53636f706549643e34e82072656d6f766520656e7469746965732066726f6d206578656d7074696f6e206c697374206f662061207472616e73666572206d616e616765720030202320417267756d656e7473c901202a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e0901202a20607469636b657260207469636b657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e5901202a20607472616e736665725f6d616e6167657260205472616e73666572206d616e6167657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e1d01202a206073636f70655f696473602053636f706549647320666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e00242023204572726f7273f4202a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722e00382023205065726d697373696f6e7320202a2041737365740110505472616e736665724d616e6167657241646465640c284964656e746974794964185469636b65723c5472616e736665724d616e6167657204882041206e6577207472616e73666572206d616e61676572207761732061646465642e585472616e736665724d616e6167657252656d6f7665640c284964656e746974794964185469636b65723c5472616e736665724d616e6167657204a820416e206578697374696e67207472616e73666572206d616e61676572207761732072656d6f7665642e3c4578656d7074696f6e73416464656410284964656e746974794964185469636b65723c5472616e736665724d616e61676572305665633c53636f706549643e04b4206053636f706549646073207765726520616464656420746f20746865206578656d7074696f6e206c6973742e444578656d7074696f6e7352656d6f76656410284964656e746974794964185469636b65723c5472616e736665724d616e61676572305665633c53636f706549643e04c4206053636f70654964607320776572652072656d6f7665642066726f6d20746865206578656d7074696f6e206c6973742e046c4d61785472616e736665724d616e616765727350657241737365740c75333210030000000010604475706c69636174655472616e736665724d616e61676572049020546865207472616e73666572206d616e6167657220616c726561647920657869737473585472616e736665724d616e616765724d697373696e670480205472616e73666572206d616e61676572206973206e6f7420656e61626c65643c496e76616c69645472616e736665720454205472616e73666572206e6f7420616c6c6f776564705472616e736665724d616e61676572734c696d69745265616368656404150120546865206c696d6974206f66207472616e73666572206d616e616765727320616c6c6f77656420666f7220616e20617373657420686173206265656e2072656163686564260c53746f010c53746f0c2c46756e6472616973657273000202185469636b65723046756e6472616973657249645446756e647261697365723c543a3a4d6f6d656e743e05040008b020416c6c2066756e64726169736572732074686174206172652063757272656e746c792072756e6e696e672e9820287469636b65722c2066756e647261697365725f696429202d3e2046756e647261697365723c46756e64726169736572436f756e74010102185469636b65723046756e64726169736572496400200000000000000000049c20546f74616c2066756e6472616973657273206372656174656420666f72206120746f6b656e2e3c46756e647261697365724e616d6573010202185469636b65723046756e6472616973657249643846756e647261697365724e616d6505040008b4204e616d6520666f72207468652046756e647261697365722e204f6e6c792075736564206f6666636861696e2eac20287469636b65722c2066756e647261697365725f696429202d3e2046756e64726169736572206e616d650118446372656174655f66756e6472616973657228486f66666572696e675f706f7274666f6c696f2c506f7274666f6c696f4964386f66666572696e675f6173736574185469636b65724472616973696e675f706f7274666f6c696f2c506f7274666f6c696f49643472616973696e675f6173736574185469636b6572147469657273385665633c5072696365546965723e2076656e75655f69641c56656e75654964147374617274444f7074696f6e3c543a3a4d6f6d656e743e0c656e64444f7074696f6e3c543a3a4d6f6d656e743e486d696e696d756d5f696e766573746d656e741c42616c616e63653c66756e647261697365725f6e616d653846756e647261697365724e616d654064204372656174652061206e65772066756e647261697365722e001101202a20606f66666572696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e672074686520606f66666572696e675f6173736574602ea8202a20606f66666572696e675f617373657460202d204173736574206265696e67206f6666657265642e0901202a206072616973696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e6720746865206072616973696e675f6173736574602e3901202a206072616973696e675f617373657460202d204173736574206265696e672065786368616e67656420666f7220606f66666572696e675f617373657460206f6e20696e766573746d656e742eec202a2060746965727360202d20507269636520746965727320746f2063686172676520696e766573746f7273206f6e20696e766573746d656e742eac202a206076656e75655f696460202d2056656e756520746f2068616e646c6520736574746c656d656e742e5101202a2060737461727460202d2046756e647261697365722073746172742074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c20737461727420696d6d6564696174656c792e2d01202a2060656e6460202d2046756e6472616973657220656e642074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c206e65766572206578706972652ed101202a20606d696e696d756d5f696e766573746d656e7460202d204d696e696d756d20616d6f756e74206f66206072616973696e675f617373657460207468617420616e20696e766573746f72206e6565647320746f207370656e6420746f20696e7665737420696e20746869732072616973652ef4202a206066756e647261697365725f6e616d6560202d2046756e64726169736572206e616d652c206f6e6c79207573656420696e20746865205549732e00382023205065726d697373696f6e7320202a20417373657430202a20506f7274666f6c696f18696e766573741c50696e766573746d656e745f706f7274666f6c696f2c506f7274666f6c696f49644466756e64696e675f706f7274666f6c696f2c506f7274666f6c696f4964386f66666572696e675f6173736574185469636b65720869643046756e6472616973657249643c70757263686173655f616d6f756e741c42616c616e6365246d61785f70726963653c4f7074696f6e3c42616c616e63653e1c72656365697074e84f7074696f6e3c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e306020496e7665737420696e20612066756e647261697365722e004501202a2060696e766573746d656e745f706f7274666f6c696f60202d20506f7274666f6c696f207468617420606f66666572696e675f6173736574602077696c6c206265206465706f736974656420696e2e0501202a206066756e64696e675f706f7274666f6c696f60202d20506f7274666f6c696f20746861742077696c6c2066756e642074686520696e766573746d656e742ea4202a20606f66666572696e675f617373657460202d20417373657420746f20696e7665737420696e2eb0202a2060696460202d204944206f66207468652066756e6472616973657220746f20696e7665737420696e2ef8202a206070757263686173655f616d6f756e7460202d20416d6f756e74206f6620606f66666572696e675f61737365746020746f2070757263686173652ebd01202a20606d61785f707269636560202d204d6178696d756d20707269636520746f207061792070657220756e6974206f6620606f66666572696e675f6173736574602c20496620604e6f6e6560746865726520617265206e6f20636f6e73747261696e7473206f6e2070726963652e6d01202a20607265636569707460202d204f66662d636861696e207265636569707420746f2075736520696e7374656164206f66206f6e2d636861696e2062616c616e636520696e206066756e64696e675f706f7274666f6c696f602e00382023205065726d697373696f6e7330202a20506f7274666f6c696f44667265657a655f66756e6472616973657208386f66666572696e675f6173736574185469636b65720869643046756e6472616973657249641c5420467265657a6520612066756e647261697365722e0098202a20606f66666572696e675f617373657460202d20417373657420746f20667265657a652ea4202a2060696460202d204944206f66207468652066756e6472616973657220746f20667265657a652e00382023205065726d697373696f6e7320202a2041737365744c756e667265657a655f66756e6472616973657208386f66666572696e675f6173736574185469636b65720869643046756e6472616973657249641c5c20556e667265657a6520612066756e647261697365722e00a0202a20606f66666572696e675f617373657460202d20417373657420746f20756e667265657a652eac202a2060696460202d204944206f66207468652066756e6472616973657220746f20756e667265657a652e00382023205065726d697373696f6e7320202a204173736574606d6f646966795f66756e647261697365725f77696e646f7710386f66666572696e675f6173736574185469636b65720869643046756e64726169736572496414737461727424543a3a4d6f6d656e740c656e64444f7074696f6e3c543a3a4d6f6d656e743e24b8204d6f64696679207468652074696d652077696e646f7720612066756e64726169736572206973206163746976650098202a20606f66666572696e675f617373657460202d20417373657420746f206d6f646966792ea4202a2060696460202d204944206f66207468652066756e6472616973657220746f206d6f646966792ea4202a2060737461727460202d204e6577207374617274206f66207468652066756e647261697365722ebc202a2060656e6460202d204e657720656e64206f66207468652066756e6472616973657220746f206d6f646966792e00382023205065726d697373696f6e7320202a2041737365741073746f7008386f66666572696e675f6173736574185469636b65720869643046756e6472616973657249641c4c2053746f7020612066756e647261697365722e0090202a20606f66666572696e675f617373657460202d20417373657420746f2073746f702e9c202a2060696460202d204944206f66207468652066756e6472616973657220746f2073746f702e00382023205065726d697373696f6e7320202a20417373657401184446756e647261697365724372656174656410284964656e7469747949643046756e6472616973657249643846756e647261697365724e616d654846756e647261697365723c4d6f6d656e743e088c2041206e65772066756e6472616973657220686173206265656e20637265617465642e010120284167656e74204449442c2066756e647261697365722069642c2066756e64726169736572206e616d652c2066756e647261697365722064657461696c732920496e76657374656418284964656e7469747949643046756e647261697365724964185469636b6572185469636b65721c42616c616e63651c42616c616e636508a020416e20696e766573746f7220696e76657374656420696e207468652066756e647261697365722e89012028496e766573746f722c2066756e647261697365725f69642c206f66666572696e6720746f6b656e2c20726169736520746f6b656e2c206f66666572696e675f746f6b656e5f616d6f756e742c2072616973655f746f6b656e5f616d6f756e74294046756e6472616973657246726f7a656e08284964656e7469747949643046756e647261697365724964087820412066756e6472616973657220686173206265656e2066726f7a656e2e6c20284167656e74204449442c2066756e64726169736572206964294846756e64726169736572556e66726f7a656e08284964656e7469747949643046756e647261697365724964088020412066756e6472616973657220686173206265656e20756e66726f7a656e2e6c20284167656e74204449442c2066756e64726169736572206964296046756e6472616973657257696e646f774d6f64696669656418204576656e744469643046756e647261697365724964184d6f6d656e74384f7074696f6e3c4d6f6d656e743e184d6f6d656e74384f7074696f6e3c4d6f6d656e743e089c20412066756e647261697365722077696e646f7720686173206265656e206d6f6469666965642e0d0120284167656e74204449442c2066756e647261697365722069642c206f6c645f73746172742c206f6c645f656e642c206e65775f73746172742c206e65775f656e64294046756e64726169736572436c6f73656408284964656e7469747949643046756e647261697365724964087c20412066756e6472616973657220686173206265656e2073746f707065642e6c20284167656e74204449442c2066756e6472616973657220696429003030556e617574686f72697a656404ac2053656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e204f766572666c6f77049020416e2061726974686d65746963206f7065726174696f6e206f766572666c6f7765642e6c496e73756666696369656e74546f6b656e7352656d61696e696e670484204e6f7420656e6f75676820746f6b656e73206c65667420666f722073616c652e4846756e647261697365724e6f74466f756e6404582046756e64726169736572206e6f7420666f756e642e4446756e647261697365724e6f744c69766504a02046756e64726169736572206973206569746865722066726f7a656e206f722073746f707065642e4046756e64726169736572436c6f73656404b02046756e6472616973657220686173206265656e20636c6f7365642f73746f7070656420616c72656164792e4446756e647261697365724578706972656404d420496e746572616374696e67207769746820612066756e6472616973657220706173742074686520656e6420604d6f6d656e74602e30496e76616c696456656e7565046c20416e20696e76616c69642076656e75652070726f76696465642e44496e76616c69645072696365546965727304290120416e20696e646976696475616c20707269636520746965722077617320696e76616c6964206f72206120736574206f662070726963652074696572732077617320696e76616c69642e54496e76616c69644f66666572696e6757696e646f770461012057696e646f77202873746172742074696d652c20656e642074696d65292068617320696e76616c696420706172616d65746572732c20652e672073746172742074696d6520697320616674657220656e642074696d652e404d61785072696365457863656564656404c0205072696365206f662074686520696e766573746d656e7420657863656564656420746865206d61782070726963652e58496e766573746d656e74416d6f756e74546f6f4c6f7704ec20496e766573746d656e7420616d6f756e74206973206c6f776572207468616e206d696e696d756d20696e766573746d656e7420616d6f756e742e272054726561737572790001083064697362757273656d656e74043462656e65666963696172696573785665633c42656e65666963696172793c42616c616e63654f663c543e3e3e185501204974207472616e73666572732062616c616e6365732066726f6d20747265617375727920746f2065616368206f662062656e6566696369617269657320616e642074686520737065636966696320616d6f756e744820666f722065616368206f66207468656d2e00202023204572726f72c8202a20604261644f726967696e603a204f6e6c7920726f6f742063616e2065786563757465207472616e73616374696f6e2e6101202a2060496e73756666696369656e7442616c616e6365603a2049662074726561737572792062616c616e636573206973206e6f7420656e6f75676820746f20636f76657220616c6c2062656e656669636961726965732e347265696d62757273656d656e740418616d6f756e743042616c616e63654f663c543e0c2101204974207472616e7366657273207468652073706563696669632060616d6f756e74602066726f6d20606f726967696e60206163636f756e7420696e746f2074726561737572792e004d01204f6e6c79206163636f756e747320776869636820617265206173736f63696174656420746f20616e206964656e746974792063616e206d616b65206120646f6e6174696f6e20746f2074726561737572792e010850547265617375727944697362757273656d656e740c284964656e746974794964284964656e7469747949641c42616c616e6365088c2044697362757273656d656e7420746f206120746172676574204964656e746974792e682028746172676574206964656e746974792c20616d6f756e74295454726561737572795265696d62757273656d656e7408284964656e7469747949641c42616c616e63650460205472656173757279207265696d62757273656d656e742e00044c496e73756666696369656e7442616c616e6365047c2050726f706f73657227732062616c616e636520697320746f6f206c6f772e281c5574696c697479011c5574696c69747904184e6f6e63657301010530543a3a4163636f756e74496448417574686f72697a6174696f6e4e6f6e636500200000000000000000000110146261746368041463616c6c73605665633c3c5420617320436f6e6669673e3a3a43616c6c3e48c8204469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e00ec20546869732077696c6c206578656375746520756e74696c20746865206669727374206f6e65206661696c7320616e64207468656e2073746f702e00b0204d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273f0202d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e0024202320576569676874a4202d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e34202d204f6e65206576656e742e00c10120546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e3501206576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e20746865590120604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d616465510120616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c657465646050206576656e74206973206465706f73697465642e3062617463685f61746f6d6963041463616c6c73605665633c3c5420617320436f6e6669673e3a3a43616c6c3e4cc8204469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e00190120546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c2073746f7070696e6720617420746865206669727374206661696c7572652cc420696e207768696368206361736520746865207374617465206368616e6765732061726520726f6c6c6564206261636b2e2901204f6e206661696c7572652c20616e206576656e7420604261746368496e746572727570746564286661696c7572655f6964782c206572726f722960206973206465706f73697465642e00b0204d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273f0202d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e0024202320576569676874a4202d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e34202d204f6e65206576656e742e00190120546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef820546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ee820496620616e792063616c6c206661696c65642c207468656e20604261746368496e74657272757074656460206973206465706f73697465642e190120496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e4062617463685f6f7074696d6973746963041463616c6c73605665633c3c5420617320436f6e6669673e3a3a43616c6c3e54c8204469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e00050120546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c20697272657370656374697665206f66206661696c757265732e0d0120416e79206661696c757265732077696c6c20626520617661696c61626c6520696e2061206042617463684f7074696d69737469634661696c656460206576656e742e00b0204d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273f0202d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e000024202320576569676874a4202d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e34202d204f6e65206576656e742e00190120546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef820546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642efc20496620616e792063616c6c206661696c65642c207468656e206042617463684f7074696d69737469634661696c656460206973206465706f73697465642c01012077697468206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c2061732077656c6c206173206120766563746f722c206f66206572726f72732e190120496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e2072656c61795f74780c1874617267657430543a3a4163636f756e744964247369676e617475726550543a3a4f6666436861696e5369676e61747572651063616c6c7c556e6971756543616c6c3c3c5420617320436f6e6669673e3a3a43616c6c3e30a42052656c617920612063616c6c20666f722061207461726765742066726f6d20616e206f726967696e0055012052656c6179696e6720696e207468697320636f6e746578742072656665727320746f20746865206162696c697479206f66206f726967696e20746f206d616b6520612063616c6c206f6e20626568616c66206f6620207461726765742e006c204665657320617265206368617267656420746f206f726967696e0034202320506172616d657465727388202d2060746172676574603a204163636f756e7420746f2062652072656c61796564ec202d20607369676e6174757265603a205369676e61747572652066726f6d2074617267657420617574686f72697a696e67207468652072656c6179c4202d206063616c6c603a2043616c6c20746f2062652072656c61796564206f6e20626568616c66206f662074617267657400010c404261746368496e746572727570746564082c4576656e74436f756e74731c4572726f7241740cb0204261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792ee020496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f72206561636820646973706174636820616e64f82074686520696e646578206f6620746865206669727374206661696c696e672064697370617463682061732077656c6c20617320746865206572726f722e5442617463684f7074696d69737469634661696c6564082c4576656e74436f756e7473305665633c4572726f7241743e0cb0204261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792ed020496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c20616e642d01206120766563746f72206f6620616e79206661696c65642064697370617463686573207769746820746865697220696e646963657320616e64206173736f636961746564206572726f722e384261746368436f6d706c65746564042c4576656e74436f756e747308cc204261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722ed420496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682064697370617463682e000c40496e76616c69645369676e61747572650478204f6666636861696e207369676e617475726520697320696e76616c6964405461726765744364644d697373696e6704842054617267657420646f6573206e6f74206861766520612076616c69642043444430496e76616c69644e6f6e63650c6c2050726f7669646564206e6f6e63652077617320696e76616c69641501204966207468652070726f7669646564206e6f6e6365203c2063757272656e74206e6f6e63652c207468652063616c6c2077617320616c72656164792065786563757465646101204966207468652070726f7669646564206e6f6e6365203e2063757272656e74206e6f6e63652c207468652063616c6c287329206265666f7265207468652063757272656e74206661696c656420746f206578656375746529104261736500010001043c556e65787065637465644572726f7204544f7074696f6e3c44697370617463684572726f723e04e820416e20756e6578706563746564206572726f722068617070656e656420746861742073686f756c6420626520696e766573746967617465642e04184d61784c656e0c753332100008000000081c546f6f4c6f6e67088420457863656564656420612067656e65726963206c656e677468206c696d69742e210120546865206c696d697420636f756c6420626520666f7220616e7920736f7274206f66206c69737473206f66207468696e67732c20696e636c7564696e67206120737472696e672e3c436f756e7465724f766572666c6f7718bc205468652073657175656e636520636f756e74657220666f7220736f6d657468696e67206f766572666c6f7765642e002101205768656e20746869732068617070656e7320646570656e6473206f6e20652e672e2c20746865206361706163697479206f6620746865206964656e74696669657220747970652e3d0120466f72206578616d706c652c207765206d69676874206861766520607075622073747275637420506970496428753332293b602c207769746820607533323a3a4d4158602063617061636974792e5d0120496e2070726163746963652c207468657365206572726f72732077696c6c206e657665722068617070656e20627574206e6f20636f646520706174682073686f756c6420726573756c7420696e20612070616e69632c010120736f20746865736520636f726e6572206361736573206e65656420746f20626520636f7665726564207769746820616e206572726f722076617269616e742e2a3845787465726e616c4167656e7473013845787465726e616c4167656e747314304147496453657175656e6365010102185469636b6572104147496400100000000010b420546865206e657874207065722d605469636b65726020414720494420696e207468652073657175656e63652e004d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652c90207768696368207374617274732066726f6d20312c20726174686572207468616e20302e1c4167656e744f66010202284964656e746974794964185469636b65720828290200042901204d61707320616e206167656e742028604964656e746974794964602920746f20616c6c20616c6c20605469636b6572607320746865792062656c6f6e6720746f2c20696620616e792e3047726f75704f664167656e74000202185469636b6572284964656e746974794964284167656e7447726f7570050400043501204d617073206167656e74732028604964656e746974794964602920666f72206120605469636b65726020746f207768617420414720746865792062656c6f6e6720746f2c20696620616e792e344e756d46756c6c4167656e7473010102185469636b65720c75333200100000000004dc204d617073206120605469636b65726020746f20746865206e756d626572206f66206046756c6c60206167656e747320666f722069742e4047726f75705065726d697373696f6e73000202185469636b657210414749645045787472696e7369635065726d697373696f6e73050400045d0120466f7220637573746f6d20414773206f66206120605469636b6572602c206d61707320746f2077686174207065726d697373696f6e7320616e206167656e7420696e207468617420414720776f756c6420686176652e0118306372656174655f67726f757008187469636b6572185469636b6572147065726d735045787472696e7369635065726d697373696f6e7348e82043726561746573206120637573746f6d206167656e742067726f7570202841472920666f722074686520676976656e20607469636b6572602e00d8205468652041472077696c6c206861766520746865207065726d697373696f6e7320617320676976656e20627920607065726d73602e2d012054686973206e6577204147206973207468656e2061737369676e656420606964203d204147496453657175656e63653a3a6765742829202b20316020617320697473206041474964602c3d0120776869636820796f752063616e2075736520617320604167656e7447726f75703a3a437573746f6d2869642960207768656e20616464696e67206167656e747320666f7220607469636b6572602e0030202320417267756d656e7473a0202d20607469636b65726020746f206164642074686520637573746f6d2067726f757020666f722e94202d20607065726d7360207468617420746865206e65772041472077696c6c20686176652e00242023204572726f72733d01202d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e2501202d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672e2901202d2060436f756e7465724f766572666c6f776020696620604147496453657175656e63653a3a6765742829202b20316020776f756c642065786365656420607533323a3a4d4158602e00382023205065726d697373696f6e7320202a20417373657420202a204167656e74547365745f67726f75705f7065726d697373696f6e730c187469636b6572185469636b65720869641041474964147065726d735045787472696e7369635065726d697373696f6e733c5501205570646174657320746865207065726d697373696f6e73206f662074686520637573746f6d204147206964656e74696669656420627920606964602c20666f722074686520676976656e20607469636b6572602e0030202320417267756d656e747394202d20607469636b6572602074686520637573746f6d2041472062656c6f6e677320746f2ea8202d206069646020666f722074686520637573746f6d2041472077697468696e20607469636b6572602e98202d20607065726d736020746f207570646174652074686520637573746f6d20414720746f2e00242023204572726f72733d01202d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e2501202d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672ed0202d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472e00382023205065726d697373696f6e7320202a20417373657420202a204167656e743072656d6f76655f6167656e7408187469636b6572185469636b6572146167656e74284964656e74697479496438a02052656d6f76652074686520676976656e20606167656e74602066726f6d20607469636b6572602e0030202320417267756d656e7473ac202d20607469636b6572602074686174206861732074686520606167656e746020746f2072656d6f76652e84202d20606167656e7460206f6620607469636b65726020746f2072656d6f76652e00242023204572726f72733d01202d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732edc202d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602eec202d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e746020697320746865206c6173742066756c6c206f6e652e00382023205065726d697373696f6e7320202a20417373657420202a204167656e7420616264696361746504187469636b6572185469636b65722c84204162646963617465206167656e747368697020666f7220607469636b6572602e0030202320417267756d656e7473b0202d20607469636b657260206f66207768696368207468652063616c6c657220697320616e206167656e742e00242023204572726f7273e8202d20604e6f74416e4167656e7460206966207468652063616c6c6572206973206e6f7420616e206167656e74206f6620607469636b6572602e0101202d206052656d6f76696e674c61737446756c6c4167656e7460206966207468652063616c6c657220697320746865206c6173742066756c6c206167656e742e00382023205065726d697373696f6e7320202a204173736574306368616e67655f67726f75700c187469636b6572185469636b6572146167656e74284964656e7469747949641467726f7570284167656e7447726f757040f0204368616e676520746865206167656e742067726f7570207468617420606167656e74602062656c6f6e677320746f20696e20607469636b6572602e0030202320417267756d656e747384202d20607469636b6572602074686174206861732074686520606167656e74602ebc202d20606167656e7460206f6620607469636b65726020746f206368616e6765207468652067726f757020666f722ecc202d206067726f757060207468617420606167656e74602077696c6c2062656c6f6e6720746f20696e20607469636b6572602e00242023204572726f72733d01202d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ed0202d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472edc202d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602e3101202d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e7460207761732061206046756c6c60206f6e6520616e64206973206265696e672064656d6f7465642e00382023205065726d697373696f6e7320202a20417373657420202a204167656e744c6163636570745f6265636f6d655f6167656e74041c617574685f69640c7536344005012041636365707420616e20617574686f72697a6174696f6e20627920616e206167656e742022416c696365222077686f206973737565642060617574685f696460dc20746f20616c736f206265636f6d6520616e206167656e74206f6620746865207469636b657220416c696365207370656369666965642e0030202320417267756d656e7473d4202d2060617574685f696460206964656e74696679696e672074686520617574686f72697a6174696f6e20746f206163636570742e00242023204572726f72734901202d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e3901202d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f69646020697320666f7220616e206175746820746861742068617320657870697265642e5101202d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f7420666f72206120604265636f6d654167656e7460206175746820747970652e2901202d2060556e617574686f72697a65644167656e74602069662022416c69636522206973206e6f74207065726d697373696f6e656420746f2070726f766964652074686520617574682e1101202d20604e6f53756368414760206966207468652067726f757020726566657272656420746f206120637573746f6d207468617420646f6573206e6f742065786973742e1101202d2060416c7265616479416e4167656e7460206966207468652063616c6c657220697320616c726561647920616e206167656e74206f6620746865207469636b65722e00382023205065726d697373696f6e7320202a204167656e7401143047726f75704372656174656410204576656e74446964185469636b657210414749645045787472696e7369635065726d697373696f6e730c7020416e204167656e742047726f75702077617320637265617465642e00d4202843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773207065726d697373696f6e73295c47726f75705065726d697373696f6e735570646174656410204576656e74446964185469636b657210414749645045787472696e7369635065726d697373696f6e730ca820416e204167656e742047726f75702773207065726d697373696f6e732077617320757064617465642e00e4202843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773206e6577207065726d697373696f6e7329284167656e7441646465640c204576656e74446964185469636b6572284167656e7447726f75700c5020416e206167656e74207761732061646465642e00c8202843616c6c65722f4167656e74204449442c204167656e742773207469636b65722c204167656e7427732067726f757029304167656e7452656d6f7665640c204576656e74446964185469636b6572284964656e7469747949640c5820416e206167656e74207761732072656d6f7665642e00a8202843616c6c6572204449442c204167656e742773207469636b65722c204167656e74277320444944293047726f75704368616e67656410204576656e74446964185469636b6572284964656e746974794964284167656e7447726f75700c7820416e206167656e7427732067726f757020776173206368616e6765642e001901202843616c6c6572204449442c204167656e742773207469636b65722c204167656e742773204449442c20546865206e65772067726f7570206f6620746865206167656e74290018204e6f53756368414704f020416e20414720776974682074686520676976656e2060414749646020646964206e6f7420657869737420666f722074686520605469636b6572602e44556e617574686f72697a65644167656e7404ec20546865206167656e74206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e38416c7265616479416e4167656e7404ec205468652070726f766964656420606167656e746020697320616c726561647920616e206167656e7420666f722074686520605469636b6572602e284e6f74416e4167656e7404dc205468652070726f766964656420606167656e7460206973206e6f7420616e206167656e7420666f722074686520605469636b6572602e5452656d6f76696e674c61737446756c6c4167656e7408e42054686973206167656e7420697320746865206c6173742066756c6c206f6e652c20616e642069742773206265696e672072656d6f7665642c6c206d616b696e6720746865206173736574206f727068616e65642e845365636f6e646172794b65794e6f74417574686f72697a6564466f724173736574042101205468652063616c6c65722773207365636f6e64617279206b657920646f6573206e6f74206861766520746865207265717569726564206173736574207065726d697373696f6e2e2b1c52656c61796572011c52656c61796572042453756273696469657300010230543a3a4163636f756e74496454537562736964793c543a3a4163636f756e7449643e00040018ec20546865207375627369647920666f7220612060757365725f6b657960206966207468657920617265206265696e6720737562736964697365642c882061732061206d61702060757365725f6b657960203d3e206053756273696479602e0009012041206b65792063616e206f6e6c792068617665206f6e65207375627369647920617420612074696d652e2020546f206368616e67652073756273696469736572731d012061206b6579206e6565647320746f2063616c6c206072656d6f76655f706179696e675f6b65796020746f2072656d6f7665207468652063757272656e7420737562736964792ca4206265666f726520746865792063616e206163636570742061206e657720737562736964697365722e0118387365745f706179696e675f6b65790820757365725f6b657930543a3a4163636f756e7449642c706f6c79785f6c696d69741c42616c616e636520c101204372656174657320616e20617574686f72697a6174696f6e20746f20616c6c6f772060757365725f6b65796020746f20616363657074207468652063616c6c65722028606f726967696e203d3d20706179696e675f6b6579602920617320746865697220737562736964697365722e0030202320417267756d656e7473a0202d2060757365725f6b657960207468652075736572206b657920746f207375627369646973652ee8202d2060706f6c79785f6c696d6974602074686520696e697469616c20504f4c5958206c696d697420666f72207468697320737562736964792e00242023204572726f72733501202d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e446163636570745f706179696e675f6b6579041c617574685f69640c7536343898204163636570747320612060706179696e675f6b65796020617574686f72697a6174696f6e2e0030202320417267756d656e7473ec202d2060617574685f6964602074686520617574686f72697a6174696f6e20696420746f2061636365707420612060706179696e675f6b6579602e00242023204572726f72734901202d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e3101202d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f6964602074686520617574686f72697a6174696f6e2068617320657870697265642e7101202d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f742061206041646452656c61796572506179696e674b65796020617574686f72697a6174696f6e2ea901202d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f206163636570742074686520617574686f72697a6174696f6e20666f72207468652060757365725f6b6579602ed901202d20604e6f74417574686f72697a6564466f72506179696e674b6579602069662074686520617574686f72697a6174696f6e2077617320637265617465642062792061207369676e657220746861742069736e277420617574686f72697a6564206279207468652060706179696e675f6b6579602e3501202d2060557365724b65794364644d697373696e6760206966207468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e4501202d2060506179696e674b65794364644d697373696e6760206966207468652060706179696e675f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e3501202d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e4472656d6f76655f706179696e675f6b65790820757365725f6b657930543a3a4163636f756e74496428706179696e675f6b657930543a3a4163636f756e7449642cb02052656d6f766573207468652060706179696e675f6b6579602066726f6d20612060757365725f6b6579602e0030202320417267756d656e7473d8202d2060757365725f6b657960207468652075736572206b657920746f2072656d6f76652074686520737562736964792066726f6d2e0d01202d2060706179696e675f6b6579602074686520706179696e67206b6579207468617420776173207375627369646973696e67207468652060757365725f6b6579602e00242023204572726f72739101202d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2072656d6f766520746865207375627369647920666f72207468652060757365725f6b6579602efc202d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e3501202d20604e6f74506179696e674b657960206966207468652060706179696e675f6b65796020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e3501202d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e487570646174655f706f6c79785f6c696d69740820757365725f6b657930543a3a4163636f756e7449642c706f6c79785f6c696d69741c42616c616e636528b820557064617465732074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e0030202320417267756d656e74732101202d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e3901202d2060706f6c79785f6c696d6974602074686520616d6f756e74206f6620504f4c595820617661696c61626c6520666f72207375627369646973696e67207468652060757365725f6b6579602e00242023204572726f7273fc202d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e1501202d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e3501202d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e50696e6372656173655f706f6c79785f6c696d69740820757365725f6b657930543a3a4163636f756e74496418616d6f756e741c42616c616e63652cbc20496e6372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e0030202320417267756d656e74732101202d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e1101202d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2061646420746f207468652073756273696479206f662060757365725f6b6579602e00242023204572726f7273fc202d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e1501202d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e3501202d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e4101202d20604f7665726c6f776020696620746865207375627369647927732072656d61696e696e6720504f4c595820776f756c642068617665206f766572666c6f7765642060753132383a3a4d4158602e5064656372656173655f706f6c79785f6c696d69740820757365725f6b657930543a3a4163636f756e74496418616d6f756e741c42616c616e63652cbc2044656372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e0030202320417267756d656e74732101202d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e2501202d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2072656d6f76652066726f6d207468652073756273696479206f662060757365725f6b6579602e00242023204572726f7273fc202d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e1501202d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e3501202d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e0d01202d20604f7665726c6f776020696620746865207375627369647920686173206c657373207468656e2060616d6f756e746020504f4c59582072656d61696e696e672e01104c417574686f72697a6564506179696e674b657914204576656e74446964244163636f756e744964244163636f756e7449641c42616c616e63650c7536340cd020417574686f72697a6174696f6e20676976656e20666f722060706179696e675f6b65796020746f2060757365725f6b6579602e000501202843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20496e697469616c20504f4c5958206c696d69742c204175746820494429444163636570746564506179696e674b65790c204576656e74446964244163636f756e744964244163636f756e7449640c5420416363657074656420706179696e67206b65792e008c202843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294052656d6f766564506179696e674b65790c204576656e74446964244163636f756e744964244163636f756e7449640c502052656d6f76656420706179696e67206b65792e008c202843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294455706461746564506f6c79784c696d697414204576656e74446964244163636f756e744964244163636f756e7449641c42616c616e63651c42616c616e63650c54205570646174656420706f6c7978206c696d69742e001501202843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20504f4c5958206c696d69742c206f6c642072656d61696e696e6720504f4c595829001c44557365724b65794364644d697373696e6704d0205468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e4c506179696e674b65794364644d697373696e6704d0205468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e2c4e6f506179696e674b657904b0205468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e304e6f74506179696e674b657904b4205468652060757365725f6b65796020686173206120646966666572656e742060706179696e675f6b6579602e644e6f74417574686f72697a6564466f72506179696e674b657904bc20546865207369676e6572206973206e6f7420617574686f72697a656420666f722060706179696e675f6b6579602e5c4e6f74417574686f72697a6564466f72557365724b657904b420546865207369676e6572206973206e6f7420617574686f72697a656420666f722060757365725f6b6579602e204f766572666c6f7704bc205468652072656d61696e696e6720504f4c595820666f722060757365725f6b657960206f766572666c6f7765642e2c1c52657761726473011c52657761726473042849746e5265776172647300010230543a3a4163636f756e7449643c49746e526577617264537461747573000400040101204d6170206f66202849746e204164647265737320604163636f756e7449646029202d3e2028526577617264206049746e52657761726453746174757360292e010840636c61696d5f69746e5f7265776172640c387265776172645f6164647265737330543a3a4163636f756e7449642c69746e5f6164647265737330543a3a4163636f756e744964247369676e617475726550543a3a4f6666436861696e5369676e6174757265345420436c61696d20616e2049544e207265776172642e003420232320417267756d656e7473dc202a206069746e5f61646472657373602073706563696679696e672074686520617761726465642061646472657373206f6e2049544e2ed8202a20607369676e6174757265602061757468656e7469636174696e672074686520636c61696d20746f20746865207265776172642e790120202020546865207369676e61747572652073686f756c6420636f6e7461696e20607265776172645f616464726573736020666f6c6c6f7765642062792074686520737566666978206022636c61696d5f69746e5f72657761726422602cbc20202020616e64206d7573742068617665206265656e207369676e6564206279206069746e5f61646472657373602e00242023204572726f72734901202a2060496e73756666696369656e7442616c616e636560202d2049746e20726577617264732068617320696e73756666696369656e742066756e647320746f20697373756520746865207265776172642e3501202a2060496e76616c69645369676e617475726560202d20607369676e6174757265602068616420616e20696e76616c6964207369676e6572206f7220696e76616c6964206d6573736167652e6d01202a206049746e526577617264416c7265616479436c61696d656460202d205265776172642069737375656420746f20746865206069746e5f61646472657373602068617320616c7265616479206265656e20636c61696d65642e8d01202a2060556e6b6e6f776e49746e4164647265737360202d206069746e5f6164647265737360206973206e6f7420696e207468652072657761726473207461626c6520616e6420686173206e6f2072657761726420746f20626520636c61696d65642e547365745f69746e5f7265776172645f737461747573082c69746e5f6164647265737330543a3a4163636f756e744964187374617475733c49746e5265776172645374617475730001044049746e526577617264436c61696d656408244163636f756e7449641c42616c616e636504602049746e207265776172642077617320636c61696d65642e001044556e6b6e6f776e49746e4164647265737304d0204164647265737320776173206e6f7420666f756e6420696e20746865206c697374206f662049746e206164647265737365732e5c49746e526577617264416c7265616479436c61696d656404802049746e207265776172642077617320616c726561647920636c61696d65642e40496e76616c69645369676e617475726504802050726f7669646564207369676e61747572652077617320696e76616c69642e54556e61626c65546f436f7665727442616c616e636504b42042616c616e63652063616e206e6f7420626520636f6e76657274656420746f2061207072696d69746976652e2d24546573745574696c730124546573745574696c730001103072656769737465725f646964080c7569642c496e766573746f72556964387365636f6e646172795f6b6579737c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e2851012047656e6572617465732061206e657720604964656e7469747949446020666f72207468652063616c6c65722c20616e642069737375657320612073656c662d67656e6572617465642043444420636c61696d2e00f4205468652063616c6c6572206163636f756e742077696c6c20626520746865207072696d617279206b6579206f662074686174206964656e746974792e610120466f722065616368206163636f756e74206f6620607365636f6e646172795f6b657973602c2061206e657720604a6f696e4964656e746974796020617574686f72697a6174696f6e20697320637265617465642c20736f45012065616368206f66207468656d2077696c6c206e65656420746f20616363657074206974206265666f7265206265636f6d652070617274206f662074686973206e657720604964656e746974794944602e00242023204572726f7273d901202d2060416c72656164794c696e6b656460206966207468652063616c6c6572206163636f756e74206f7220696620616e79206f662074686520676976656e20607365636f6e646172795f6b657973602068617320616c7265616479206c696e6b656420746f20616e20604964656e746974794944605101202d20605365636f6e646172794b657973436f6e7461696e5072696d6172794b65796020696620607365636f6e646172795f6b6579736020636f6e7461696e73207468652063616c6c6572206163636f756e742eec202d2060446964416c726561647945786973747360206966206175746f2d67656e6572617465642044494420616c7265616479206578697374732e546d6f636b5f6364645f72656769737465725f64696404387461726765745f6163636f756e7430543a3a4163636f756e744964304101205265676973746572732061206e6577204964656e7469747920666f722074686520607461726765745f6163636f756e746020616e642069737375657320612043444420636c61696d20746f2069742e55012054686520496e766573746f72205549442069732067656e6572617465642064657465726d696e6973746963616c6c79206279207468652068617368206f66207468652067656e6572617465642044494420616e64b4207468656e2077652066697820697420746f20626520636f6d706c69616e74207769746820555549442076342e0018202320536565e0202d205b52464320343132323a20555549445d2868747470733a2f2f746f6f6c732e696574662e6f72672f68746d6c2f726663343132322900282023204661696c7572654d01202d20606f726967696e602068617320746f20626520616e20616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65772020636c61696d732e6101202d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c7938206f6e65206964656e746974792e286765745f6d795f64696400049c20456d69747320616e206576656e7420776974682063616c6c65722773206964656e746974792e286765745f6364645f6f6604086f6630543a3a4163636f756e74496404d820456d69747320616e206576656e7420776974682063616c6c65722773206964656e7469747920616e6420434444207374617475732e010c584d6f636b496e766573746f725549444372656174656408284964656e7469747949642c496e766573746f725569640811012041206e6577206d6f636b65642060496e766573746f725569646020686173206265656e206372656174656420666f722074686520676976656e204964656e746974792e782028546172676574204449442c204e657720496e766573746f72556964292444696453746174757308284964656e746974794964244163636f756e74496408e820456d6974732074686520604964656e7469747949646020616e642074686520604163636f756e74496460206f66207468652063616c6c65722e74202843616c6c6572204449442c2043616c6c6572206163636f756e7429244364645374617475730c484f7074696f6e3c4964656e7469747949643e244163636f756e74496410626f6f6c0c59012053686f777320746865206044494460206173736f63696174656420746f2074686520604163636f756e744964602c20616e64206120666c616720696e64696361746573206966207468617420444944206861732061442076616c69642043444420636c61696d2edc2028546172676574204449442c20546172676574204163636f756e742c20612076616c69642043444420636c61696d2065786973747329000032042040436865636b5370656356657273696f6e38436865636b547856657273696f6e30436865636b47656e6573697338436865636b4d6f7274616c69747928436865636b4e6f6e63652c436865636b576569676874604368617267655472616e73616374696f6e5061796d656e744453746f726543616c6c4d65746164617461","id":"1"} +{"jsonrpc":"2.0","result":"0x6d6574610e550a000c1c73705f636f72651863727970746f2c4163636f756e7449643332000004000401205b75383b2033325d0000040000032000000008000800000503000c08306672616d655f73797374656d2c4163636f756e74496e666f0814496e64657801102c4163636f756e74446174610114001401146e6f6e6365100114496e646578000124636f6e73756d657273100120526566436f756e7400012470726f766964657273100120526566436f756e7400012c73756666696369656e7473100120526566436f756e740001106461746114012c4163636f756e74446174610000100000050500141064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e6365732c4163636f756e744461746100001001106672656518011c42616c616e6365000120726573657276656418011c42616c616e636500012c6d6973635f66726f7a656e18011c42616c616e63650001286665655f66726f7a656e18011c42616c616e636500001800000507001c0c346672616d655f737570706f72741c77656967687473405065724469737061746368436c6173730404540120000c01186e6f726d616c2001045400012c6f7065726174696f6e616c200104540001246d616e6461746f727920010454000020000005060024083c7072696d69746976655f74797065731048323536000004000401205b75383b2033325d00002800000208002c102873705f72756e74696d651c67656e6572696318646967657374184469676573740410486173680124000401106c6f67733001545665633c4469676573744974656d3c486173683e3e000030000002340034102873705f72756e74696d651c67656e6572696318646967657374284469676573744974656d0410486173680124011c3c4368616e67657354726965526f6f740400240110486173680002002850726552756e74696d650800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e00060024436f6e73656e7375730800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e000400105365616c0800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e000500444368616e676573547269655369676e616c04003c01444368616e676573547269655369676e616c000700144f74686572040028011c5665633c75383e0000006452756e74696d65456e7669726f6e6d656e745570646174656400080000380000030400000008003c102873705f72756e74696d651c67656e6572696318646967657374444368616e676573547269655369676e616c000104404e6577436f6e66696775726174696f6e04004001804f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e000000004004184f7074696f6e04045401440108104e6f6e6500000010536f6d650400440000010000440c1c73705f636f7265306368616e6765735f74726965604368616e67657354726965436f6e66696775726174696f6e000008013c6469676573745f696e74657276616c10010c7533320001346469676573745f6c6576656c7310010c7533320000480000024c004c08306672616d655f73797374656d2c4576656e745265636f7264080445015004540124000c01147068617365fd03011450686173650001146576656e7450010445000118746f70696373010401185665633c543e0000500c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d65144576656e7400019c1853797374656d04005401706672616d655f73797374656d3a3a4576656e743c52756e74696d653e0000001c496e6469636573040070017870616c6c65745f696e64696365733a3a4576656e743c52756e74696d653e0003002042616c616e636573040074017c70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d653e000500204964656e7469747904008c017c70616c6c65745f6964656e746974793a3a4576656e743c52756e74696d653e0007004c4364645365727669636550726f7669646572730400290101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365323e00080044506f6c796d657368436f6d6d69747465650400350101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365313e0009004c436f6d6d69747465654d656d626572736869700400490101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365313e000a0048546563686e6963616c436f6d6d69747465650400510101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365333e000b0070546563686e6963616c436f6d6d69747465654d656d626572736869700400590101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365333e000c004055706772616465436f6d6d69747465650400610101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365343e000d006855706772616465436f6d6d69747465654d656d626572736869700400690101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365343e000e00204d756c746953696704007101017c70616c6c65745f6d756c74697369673a3a4576656e743c52756e74696d653e000f001842726964676504007501017470616c6c65745f6272696467653a3a4576656e743c52756e74696d653e0010001c5374616b696e6704008901017870616c6c65745f7374616b696e673a3a4576656e743c52756e74696d653e001100204f6666656e63657304009d01015870616c6c65745f6f6666656e6365733a3a4576656e740012001c53657373696f6e0400a101015470616c6c65745f73657373696f6e3a3a4576656e740013001c4772616e6470610400a501015470616c6c65745f6772616e6470613a3a4576656e7400150020496d4f6e6c696e650400b901018070616c6c65745f696d5f6f6e6c696e653a3a4576656e743c52756e74696d653e001700105375646f0400dd01016c70616c6c65745f7375646f3a3a4576656e743c52756e74696d653e0019001441737365740400e101017070616c6c65745f61737365743a3a4576656e743c52756e74696d653e001a004c4361706974616c446973747269627574696f6e04003902018870616c6c65745f6361706974616c5f646973747269627574696f6e3a3a4576656e74001b0028436865636b706f696e7404005102016070616c6c65745f636865636b706f696e743a3a4576656e74001c0044436f6d706c69616e63654d616e6167657204007102018070616c6c65745f636f6d706c69616e63655f6d616e616765723a3a4576656e74001d003c436f72706f72617465416374696f6e0400a502017c70616c6c65745f636f72706f726174655f616374696f6e733a3a4576656e74001e003c436f72706f7261746542616c6c6f740400d902017870616c6c65745f636f72706f726174655f62616c6c6f743a3a4576656e74001f00105069707304001103016c70616c6c65745f706970733a3a4576656e743c52756e74696d653e00210024506f7274666f6c696f04005903015c70616c6c65745f706f7274666f6c696f3a3a4576656e740022002c50726f746f636f6c46656504006903018c70616c6c65745f70726f746f636f6c5f6665653a3a4576656e743c52756e74696d653e002300245363686564756c657204007103018070616c6c65745f7363686564756c65723a3a4576656e743c52756e74696d653e00240028536574746c656d656e7404007d03018470616c6c65745f736574746c656d656e743a3a4576656e743c52756e74696d653e00250028537461746973746963730400a903016070616c6c65745f737461746973746963733a3a4576656e740026000c53746f0400b503016870616c6c65745f73746f3a3a4576656e743c52756e74696d653e0027002054726561737572790400d103017c70616c6c65745f74726561737572793a3a4576656e743c52756e74696d653e0028001c5574696c6974790400d503015470616c6c65745f7574696c6974793a3a4576656e7400290010426173650400e503014870616c6c65745f626173653a3a4576656e74002a003845787465726e616c4167656e74730400ed03017470616c6c65745f65787465726e616c5f6167656e74733a3a4576656e74002b001c52656c617965720400f103017870616c6c65745f72656c617965723a3a4576656e743c52756e74696d653e002c001c526577617264730400f503017870616c6c65745f726577617264733a3a4576656e743c52756e74696d653e002d0024546573745574696c730400f903018470616c6c65745f746573745f7574696c733a3a4576656e743c52756e74696d653e00320000540c306672616d655f73797374656d1870616c6c6574144576656e740404540001184045787472696e7369635375636365737304005801304469737061746368496e666f000004b4416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e205c5b696e666f5c5d3c45787472696e7369634661696c6564080064013444697370617463684572726f7200005801304469737061746368496e666f00010490416e2065787472696e736963206661696c65642e205c5b6572726f722c20696e666f5c5d2c436f64655570646174656400020450603a636f6465602077617320757064617465642e284e65774163636f756e740400000130543a3a4163636f756e7449640003047841206e6577205c5b6163636f756e745c5d2077617320637265617465642e344b696c6c65644163636f756e740400000130543a3a4163636f756e74496400040468416e205c5b6163636f756e745c5d20776173207265617065642e2052656d61726b65640800000130543a3a4163636f756e744964000024011c543a3a48617368000504d04f6e206f6e2d636861696e2072656d61726b2068617070656e65642e205c5b6f726967696e2c2072656d61726b5f686173685c5d04704576656e7420666f72207468652053797374656d2070616c6c65742e580c346672616d655f737570706f72741c77656967687473304469737061746368496e666f00000c0118776569676874200118576569676874000114636c6173735c01344469737061746368436c617373000120706179735f6665656001105061797300005c0c346672616d655f737570706f72741c77656967687473344469737061746368436c61737300010c184e6f726d616c0000002c4f7065726174696f6e616c000100244d616e6461746f727900020000600c346672616d655f737570706f72741c7765696768747310506179730001080c596573000000084e6f0001000064082873705f72756e74696d653444697370617463684572726f72000120144f746865720000003043616e6e6f744c6f6f6b7570000100244261644f726967696e000200184d6f64756c65080114696e64657808010875380001146572726f72080108753800030044436f6e73756d657252656d61696e696e670004002c4e6f50726f76696465727300050014546f6b656e0400680128546f6b656e4572726f720006002841726974686d6574696304006c013c41726974686d657469634572726f720007000068082873705f72756e74696d6528546f6b656e4572726f7200011c1c4e6f46756e647300000020576f756c644469650001003042656c6f774d696e696d756d0002003043616e6e6f7443726561746500030030556e6b6e6f776e41737365740004001846726f7a656e0005002c556e737570706f72746564000600006c082873705f72756e74696d653c41726974686d657469634572726f7200010c24556e646572666c6f77000000204f766572666c6f77000100384469766973696f6e42795a65726f00020000700c3870616c6c65745f696e64696365731870616c6c6574144576656e7404045400010c34496e64657841737369676e65640800000130543a3a4163636f756e744964000010013c543a3a4163636f756e74496e646578000004b041206163636f756e7420696e646578207761732061737369676e65642e205c5b696e6465782c2077686f5c5d28496e6465784672656564040010013c543a3a4163636f756e74496e646578000104e441206163636f756e7420696e64657820686173206265656e2066726565642075702028756e61737369676e6564292e205c5b696e6465785c5d2c496e64657846726f7a656e080010013c543a3a4163636f756e74496e6465780000000130543a3a4163636f756e744964000204250141206163636f756e7420696e64657820686173206265656e2066726f7a656e20746f206974732063757272656e74206163636f756e742049442e205c5b696e6465782c2077686f5c5d0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909741064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e636573205261774576656e7404244163636f756e7449640100011c1c456e646f7765640c007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000018011c42616c616e63650000043101416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e205c5b6469642c206163636f756e742c20667265655f62616c616e63655d205472616e7366657218007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e74496400007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000018011c42616c616e636500008001304f7074696f6e3c4d656d6f3e000104f45472616e7366657220737563636565646564202866726f6d5f6469642c2066726f6d2c20746f5f6469642c20746f2c2076616c75652c206d656d6f292e2842616c616e636553657410007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000018011c42616c616e6365000204d4412062616c616e6365207761732073657420627920726f6f7420286469642c2077686f2c20667265652c207265736572766564292e504163636f756e7442616c616e63654275726e65640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e63650003083d01546865206163636f756e7420616e642074686520616d6f756e74206f6620756e6c6f636b65642062616c616e6365206f662074686174206163636f756e74207468617420776173206275726e65642e8c2863616c6c65722049642c2063616c6c6572206163636f756e742c20616d6f756e742920526573657276656408000001244163636f756e744964000018011c42616c616e63650004041901536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e205c5b77686f2c2076616c75655d28556e726573657276656408000001244163636f756e744964000018011c42616c616e63650005042101536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e205c5b77686f2c2076616c75655d4852657365727665526570617472696174656410000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000088011853746174757300060c4d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652ea05c5b66726f6d2c20746f2c2062616c616e63652c2064657374696e6174696f6e5f7374617475735d085c4576656e747320666f722074686973206d6f64756c652e007804184f7074696f6e040454017c0108104e6f6e6500000010536f6d6504007c00000100007c0c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f6964284964656e746974794964000004000401385b75383b20555549445f4c454e5d00008004184f7074696f6e04045401840108104e6f6e6500000010536f6d650400840000010000841064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e636573104d656d6f000004000401205b75383b2033325d00008814346672616d655f737570706f72741874726169747318746f6b656e73106d6973633442616c616e63655374617475730001081046726565000000205265736572766564000100008c1064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479205261774576656e7408244163636f756e7449640100184d6f6d656e740120014c28446964437265617465640c007c01284964656e74697479496400000001244163636f756e74496400009001705665633c5365636f6e646172794b65793c4163636f756e7449643e3e000004ac4449442c207072696d617279206b6579206163636f756e742049442c207365636f6e64617279206b657973485365636f6e646172794b657973416464656408007c01284964656e74697479496400009001705665633c5365636f6e646172794b65793c4163636f756e7449643e3e000104344449442c206e6577206b657973505365636f6e646172794b65797352656d6f76656408007c01284964656e7469747949640000f001645665633c5369676e61746f72793c4163636f756e7449643e3e000204784449442c20746865206b657973207468617420676f742072656d6f766564285369676e65724c65667408007c01284964656e74697479496400009801505369676e61746f72793c4163636f756e7449643e000304ac41207369676e6572206c656674207468656972206964656e746974792e20286469642c207369676e657229785365636f6e646172794b65795065726d697373696f6e735570646174656410007c01284964656e746974794964000094015c5365636f6e646172794b65793c4163636f756e7449643e00009c012c5065726d697373696f6e7300009c012c5065726d697373696f6e7300040405014449442c2075706461746564207365636f6e64617279206b65792c2070726576696f7573207065726d697373696f6e732c206e6577207065726d697373696f6e73445072696d6172794b6579557064617465640c007c01284964656e74697479496400000001244163636f756e74496400000001244163636f756e7449640005049c4449442c206f6c64207072696d617279206b6579206163636f756e742049442c206e657720494428436c61696d416464656408007c01284964656e7469747949640000f401344964656e74697479436c61696d0006042c4449442c20636c61696d7330436c61696d5265766f6b656408007c01284964656e7469747949640000f401344964656e74697479436c61696d000704704449442c20436c61696d547970652c20436c61696d204973737565724841737365744469645265676973746572656408007c01284964656e7469747949640000a401185469636b65720008042441737365742044494448417574686f72697a6174696f6e416464656418007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e00000d0101444f7074696f6e3c4163636f756e7449643e000020010c753634000011010170417574686f72697a6174696f6e446174613c4163636f756e7449643e0000f801384f7074696f6e3c4d6f6d656e743e000908604e657720617574686f72697a6174696f6e2061646465642e310128617574686f72697365645f62792c207461726765745f6469642c207461726765745f6b65792c20617574685f69642c20617574686f72697a6174696f6e5f646174612c206578706972792950417574686f72697a6174696f6e5265766f6b65640c007801484f7074696f6e3c4964656e7469747949643e00000d0101444f7074696f6e3c4163636f756e7449643e000020010c753634000a08a0417574686f72697a6174696f6e207265766f6b65642062792074686520617574686f72697a65722eb828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e52656a65637465640c007801484f7074696f6e3c4964656e7469747949643e00000d0101444f7074696f6e3c4163636f756e7449643e000020010c753634000b08d8417574686f72697a6174696f6e2072656a65637465642062792074686520757365722077686f2077617320617574686f72697a65642eb828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e436f6e73756d65640c007801484f7074696f6e3c4964656e7469747949643e00000d0101444f7074696f6e3c4163636f756e7449643e000020010c753634000c085c417574686f72697a6174696f6e20636f6e73756d65642eb828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f696429704f6666436861696e417574686f72697a6174696f6e5265766f6b656408007c01284964656e74697479496400009801505369676e61746f72793c4163636f756e7449643e000d08a44f66662d636861696e20417574686f72697a6174696f6e20686173206265656e207265766f6b65642e7028546172676574204964656e746974792c205369676e61746f72792988436464526571756972656d656e74466f725072696d6172794b65795570646174656404001d010110626f6f6c000e040d0143444420726571756972656d656e7420666f72207570646174696e67207072696d617279206b6579206368616e6765642e20286e65775f726571756972656d656e742950436464436c61696d73496e76616c69646174656408007c01284964656e74697479496400002001184d6f6d656e74000f08410143444420636c61696d732067656e65726174656420627920604964656e74697479496460202861204344442050726f7669646572292068617665206265656e20696e76616c6964617465642066726f6d24604d6f6d656e74602e4c5365636f6e646172794b65797346726f7a656e04007c01284964656e746974794964001004c4416c6c205365636f6e64617279206b657973206f6620746865206964656e74697479204944206172652066726f7a656e2e545365636f6e646172794b657973556e66726f7a656e04007c01284964656e746974794964001104cc416c6c205365636f6e64617279206b657973206f6620746865206964656e746974792049442061726520756e66726f7a656e2e584d6f636b496e766573746f725549444372656174656408007c01284964656e74697479496400002101012c496e766573746f725569640012046c4d6f636b656420496e766573746f7255696420637265617465642e085c4576656e747320666f722074686973206d6f64756c652e0090000002940094104c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65790c617069305365636f6e646172794b657904244163636f756e7449640100000801187369676e65729801505369676e61746f72793c4163636f756e7449643e00012c7065726d697373696f6e739c012c5065726d697373696f6e730000980c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579245369676e61746f727904244163636f756e74496401000108204964656e7469747904007c01284964656e7469747949640000001c4163636f756e7404000001244163636f756e744964000100009c0c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65792c5065726d697373696f6e7300000c01146173736574a0014041737365745065726d697373696f6e7300012465787472696e736963b4015045787472696e7369635065726d697373696f6e73000124706f7274666f6c696fd80150506f7274666f6c696f5065726d697373696f6e730000a00c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101a4010c1457686f6c650000001454686573650400ac012c42547265655365743c413e000100184578636570740400ac012c42547265655365743c413e00020000a40c4c706f6c796d6573685f7072696d697469766573187469636b6572185469636b657200000400a801405b75383b205449434b45525f4c454e5d0000a80000030c0000000800ac0420425472656553657404045401a4000400b0000000b0000002a400b40c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101b8010c1457686f6c650000001454686573650400d0012c42547265655365743c413e000100184578636570740400d0012c42547265655365743c413e00020000b80c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65794450616c6c65745065726d697373696f6e73000008012c70616c6c65745f6e616d65bc012850616c6c65744e616d65000148646973706174636861626c655f6e616d6573c00144446973706174636861626c654e616d65730000bc084c706f6c796d6573685f7072696d6974697665732850616c6c65744e616d650000040028011c5665633c75383e0000c00c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101c4010c1457686f6c650000001454686573650400c8012c42547265655365743c413e000100184578636570740400c8012c42547265655365743c413e00020000c4084c706f6c796d6573685f7072696d69746976657340446973706174636861626c654e616d650000040028011c5665633c75383e0000c80420425472656553657404045401c4000400cc000000cc000002c400d00420425472656553657404045401b8000400d4000000d4000002b800d80c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101dc010c1457686f6c650000001454686573650400e8012c42547265655365743c413e000100184578636570740400e8012c42547265655365743c413e00020000dc0c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f69642c506f7274666f6c696f4964000008010c6469647c01284964656e7469747949640001106b696e64e00134506f7274666f6c696f4b696e640000e00c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f696434506f7274666f6c696f4b696e640001081c44656661756c7400000010557365720400e4013c506f7274666f6c696f4e756d62657200010000e40c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f69643c506f7274666f6c696f4e756d6265720000040020010c7536340000e80420425472656553657404045401dc000400ec000000ec000002dc00f00000029800f40c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d344964656e74697479436c61696d0000140130636c61696d5f6973737565727c01284964656e74697479496400013469737375616e63655f646174652001184d6f6d656e740001406c6173745f7570646174655f646174652001184d6f6d656e74000118657870697279f801384f7074696f6e3c4d6f6d656e743e000114636c61696dfc0114436c61696d0000f804184f7074696f6e04045401200108104e6f6e6500000010536f6d650400200000010000fc0c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d14436c61696d000130284163637265646974656404000101011453636f706500000024416666696c6961746504000101011453636f7065000100244275794c6f636b757004000101011453636f70650002002853656c6c4c6f636b757004000101011453636f706500030050437573746f6d657244756544696c6967656e63650400050101144364644964000400404b6e6f77596f7572437573746f6d657204000101011453636f7065000500304a7572697364696374696f6e08000901012c436f756e747279436f646500000101011453636f7065000600204578656d7074656404000101011453636f70650007001c426c6f636b656404000101011453636f706500080048496e766573746f72556e697175656e6573730c000101011453636f706500007c011c53636f706549640000050101144364644964000900184e6f44617461000a0050496e766573746f72556e697175656e65737356320400050101144364644964000b000001010c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d1453636f706500010c204964656e7469747904007c01284964656e746974794964000000185469636b65720400a401185469636b657200010018437573746f6d040028011c5665633c75383e0002000005010c4c706f6c796d6573685f7072696d697469766573186364645f6964144364644964000004000401205b75383b2033325d000009010c4c706f6c796d6573685f7072696d697469766573306a7572697364696374696f6e2c436f756e747279436f64650001e90308414600000008415800010008414c00020008445a00030008415300040008414400050008414f000600084149000700084151000800084147000900084152000a0008414d000b00084157000c00084155000d00084154000e0008415a000f0008425300100008424800110008424400120008424200130008425900140008424500150008425a00160008424a00170008424d00180008425400190008424f001a00084241001b00084257001c00084256001d00084252001e00085647001f0008494f00200008424e002100084247002200084246002300084249002400084b4800250008434d002600084341002700084356002800084b59002900084346002a00085444002b0008434c002c0008434e002d0008484b002e00084d4f002f0008435800300008434300310008434f003200084b4d00330008434700340008434400350008434b003600084352003700084349003800084852003900084355003a00084359003b0008435a003c0008444b003d0008444a003e0008444d003f0008444f00400008454300410008454700420008535600430008475100440008455200450008454500460008455400470008464b00480008464f00490008464a004a00084649004b00084652004c00084746004d00085046004e00085446004f0008474100500008474d00510008474500520008444500530008474800540008474900550008475200560008474c005700084744005800084750005900084755005a00084754005b00084747005c0008474e005d00084757005e00084759005f0008485400600008484d00610008564100620008484e00630008485500640008495300650008494e006600084944006700084952006800084951006900084945006a0008494d006b0008494c006c00084954006d00084a4d006e00084a50006f00084a45007000084a4f007100084b5a007200084b45007300084b49007400084b50007500084b52007600084b57007700084b47007800084c41007900084c56007a00084c42007b00084c53007c00084c52007d00084c59007e00084c49007f00084c54008000084c55008100084d4b008200084d47008300084d57008400084d59008500084d56008600084d4c008700084d54008800084d48008900084d51008a00084d52008b00084d55008c00085954008d00084d58008e0008464d008f00084d44009000084d43009100084d4e009200084d45009300084d53009400084d41009500084d5a009600084d4d009700084e41009800084e52009900084e50009a00084e4c009b0008414e009c00084e43009d00084e5a009e00084e49009f00084e4500a000084e4700a100084e5500a200084e4600a300084d5000a400084e4f00a500084f4d00a60008504b00a70008505700a80008505300a90008504100aa0008504700ab0008505900ac0008504500ad0008504800ae0008504e00af0008504c00b00008505400b10008505200b20008514100b30008524500b40008524f00b50008525500b60008525700b70008424c00b80008534800b900084b4e00ba00084c4300bb00084d4600bc0008504d00bd0008564300be0008575300bf0008534d00c00008535400c10008534100c20008534e00c30008525300c40008534300c50008534c00c60008534700c70008534b00c80008534900c90008534200ca0008534f00cb00085a4100cc0008475300cd0008535300ce0008455300cf00084c4b00d00008534400d10008535200d20008534a00d30008535a00d40008534500d50008434800d60008535900d70008545700d80008544a00d90008545a00da0008544800db0008544c00dc0008544700dd0008544b00de0008544f00df0008545400e00008544e00e10008545200e20008544d00e30008544300e40008545600e50008554700e60008554100e70008414500e80008474200e90008555300ea0008554d00eb0008555900ec0008555a00ed0008565500ee0008564500ef0008564e00f00008564900f10008574600f20008454800f30008594500f400085a4d00f500085a5700f60008425100f70008435700f80008535800f900000d0104184f7074696f6e04045401000108104e6f6e6500000010536f6d65040000000001000011010c4c706f6c796d6573685f7072696d69746976657334617574686f72697a6174696f6e44417574686f72697a6174696f6e4461746104244163636f756e74496401000128604174746573745072696d6172794b6579526f746174696f6e04007c01284964656e74697479496400000040526f746174655072696d6172794b6579000100385472616e736665725469636b65720400a401185469636b6572000200444164644d756c74695369675369676e657204000001244163636f756e744964000300585472616e7366657241737365744f776e6572736869700400a401185469636b6572000400304a6f696e4964656e7469747904009c012c5065726d697373696f6e7300050040506f7274666f6c696f437573746f64790400dc012c506f7274666f6c696f49640006002c4265636f6d654167656e740800a401185469636b65720000150101284167656e7447726f75700007004c41646452656c61796572506179696e674b65790c000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e63650008006c526f746174655072696d6172794b6579546f5365636f6e6461727904009c012c5065726d697373696f6e730009000015010c4c706f6c796d6573685f7072696d697469766573146167656e74284167656e7447726f75700001141046756c6c00000018437573746f6d04001901011041474964000100284578636570744d65746100020034506f6c796d657368563143414100030034506f6c796d65736856315049410004000019010c4c706f6c796d6573685f7072696d697469766573146167656e7410414749640000040010010c75333200001d01000005000021010c4c706f6c796d6573685f7072696d697469766573186364645f69642c496e766573746f7255696400000400250101205b75383b2031365d0000250100000310000000080029011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449012d01011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400003101013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e002d01083070616c6c65745f67726f757024496e7374616e6365320000000031010000027c003501084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d6265720110044901390101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800003101013c5665633c4964656e7469747949643e00003101013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e74697479496400002401104861736800003d0101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e003901084070616c6c65745f636f6d6d697474656524496e7374616e636531000000003d010418526573756c74080454014101044501640108084f6b04004101000000000c45727204006400000100004101000004000045010864706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573284d61796265426c6f636b042c426c6f636b4e756d6265720110010810536f6d65040010012c426c6f636b4e756d626572000000104e6f6e650001000049011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449014d01011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400003101013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e004d01083070616c6c65745f67726f757024496e7374616e636531000000005101084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d6265720110044901550101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800003101013c5665633c4964656e7469747949643e00003101013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e74697479496400002401104861736800003d0101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e005501084070616c6c65745f636f6d6d697474656524496e7374616e6365330000000059011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449015d01011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400003101013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e005d01083070616c6c65745f67726f757024496e7374616e636533000000006101084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d6265720110044901650101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800003101013c5665633c4964656e7469747949643e00003101013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e74697479496400002401104861736800003d0101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e006501084070616c6c65745f636f6d6d697474656524496e7374616e6365340000000069011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449016d01011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400003101013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e006d01083070616c6c65745f67726f757024496e7374616e636534000000007101083c70616c6c65745f6d756c7469736967205261774576656e7404244163636f756e744964010001303c4d756c74695369674372656174656414007c01284964656e74697479496400000001244163636f756e74496400000001244163636f756e7449640000f001645665633c5369676e61746f72793c4163636f756e7449643e3e000020010c753634000008ac4576656e7420656d6974746564206166746572206372656174696f6e206f662061206d756c74697369672e6501417267756d656e74733a2063616c6c6572204449442c206d756c746973696720616464726573732c207369676e657273202870656e64696e6720617070726f76616c292c207369676e6174757265732072657175697265642e3450726f706f73616c41646465640c007c01284964656e74697479496400000001244163636f756e744964000020010c753634000108984576656e7420656d697474656420616674657220616464696e6720612070726f706f73616c2eb4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e4050726f706f73616c457865637574656410007c01284964656e74697479496400000001244163636f756e744964000020010c75363400001d010110626f6f6c000208a84576656e7420656d6974746564207768656e20612070726f706f73616c2069732065786563757465642ed4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442c20726573756c742e4c4d756c74695369675369676e657241646465640c007c01284964656e74697479496400000001244163636f756e74496400009801505369676e61746f72793c4163636f756e7449643e000308a04576656e7420656d6974746564207768656e2061207369676e61746f72792069732061646465642eb8417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206164646564207369676e65722e604d756c74695369675369676e6572417574686f72697a65640c007c01284964656e74697479496400000001244163636f756e74496400009801505369676e61746f72793c4163636f756e7449643e00040809014576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f727920697320617574686f72697a656420746f2062652061646465642ecc417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722e544d756c74695369675369676e657252656d6f7665640c007c01284964656e74697479496400000001244163636f756e74496400009801505369676e61746f72793c4163636f756e7449643e000508cc4576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f72792069732072656d6f7665642ec0417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2072656d6f766564207369676e65722e844d756c74695369675369676e61747572657352657175697265644368616e6765640c007c01284964656e74697479496400000001244163636f756e744964000020010c75363400060801014576656e7420656d6974746564207768656e20746865206e756d626572206f66207265717569726564207369676e617475726573206973206368616e6765642ee4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206e6577207265717569726564207369676e6174757265732e4050726f706f73616c417070726f76656410007c01284964656e74697479496400000001244163636f756e74496400009801505369676e61746f72793c4163636f756e7449643e000020010c753634000708b44576656e7420656d6974746564207768656e207468652070726f706f73616c2067657420617070726f7665642e0101417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e5450726f706f73616c52656a656374696f6e566f746510007c01284964656e74697479496400000001244163636f756e74496400009801505369676e61746f72793c4163636f756e7449643e000020010c7536340008080d014576656e7420656d6974746564207768656e206120766f7465206973206361737420696e206661766f72206f662072656a656374696e6720612070726f706f73616c2e0101417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e4050726f706f73616c52656a65637465640c007c01284964656e74697479496400000001244163636f756e744964000020010c753634000908a84576656e7420656d6974746564207768656e20612070726f706f73616c2069732072656a65637465642eb4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e5c50726f706f73616c457865637574696f6e4661696c6564040064013444697370617463684572726f72000a04e44576656e7420656d6974746564207768656e207468657265277320616e206572726f7220696e2070726f706f73616c20657865637574696f6e405363686564756c696e674661696c6564040064013444697370617463684572726f72000b04745363686564756c696e67206f662070726f706f73616c206661696c732e085c4576656e747320666f722074686973206d6f64756c652e007501083470616c6c65745f627269646765205261774576656e7408244163636f756e74496401002c426c6f636b4e756d6265720110014044436f6e74726f6c6c65724368616e67656408007c01284964656e74697479496400000001244163636f756e74496400000490436f6e6669726d6174696f6e206f662061207369676e657220736574206368616e67652e3041646d696e4368616e67656408007c01284964656e74697479496400000001244163636f756e74496400010474436f6e6669726d6174696f6e206f662041646d696e206368616e67652e3c54696d656c6f636b4368616e67656408007c01284964656e746974794964000010012c426c6f636b4e756d626572000204a0436f6e6669726d6174696f6e206f662064656661756c742074696d656c6f636b206368616e67652e1c4272696467656408007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e0003041d01436f6e6669726d6174696f6e206f6620504f4c59582075706772616465206f6e20506f6c796d6573682066726f6d20504f4c5920746f6b656e73206f6e20457468657265756d2e1846726f7a656e04007c01284964656e746974794964000404904e6f74696669636174696f6e206f6620667265657a696e6720746865206272696467652e20556e66726f7a656e04007c01284964656e746974794964000504984e6f74696669636174696f6e206f6620756e667265657a696e6720746865206272696467652e2046726f7a656e547808007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e0006049c4e6f74696669636174696f6e206f6620667265657a696e672061207472616e73616374696f6e2e28556e66726f7a656e547808007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e000704a44e6f74696669636174696f6e206f6620756e667265657a696e672061207472616e73616374696f6e2e3c4578656d70746564557064617465640c007c01284964656e74697479496400007c01284964656e74697479496400001d010110626f6f6c000804c44578656d7074696f6e20737461747573206f6620616e206964656e7469747920686173206265656e20757064617465642e484272696467654c696d6974557064617465640c007c01284964656e746974794964000018011c42616c616e6365000010012c426c6f636b4e756d62657200090478427269646765206c696d697420686173206265656e20757064617465642e2854787348616e646c656404007d0101985665633c284163636f756e7449642c207533322c2048616e646c65645478537461747573293e000a086101416e206576656e7420656d6974746564206166746572206120766563746f72206f66207472616e73616374696f6e732069732068616e646c65642e2054686520706172616d65746572206973206120766563746f72206f6651017475706c6573206f6620726563697069656e74206163636f756e742c20697473206e6f6e63652c20616e642074686520737461747573206f66207468652070726f636573736564207472616e73616374696f6e2e4442726964676554785363686564756c65640c007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e000010012c426c6f636b4e756d626572000b0450427269646765205478205363686564756c65642e5842726964676554785363686564756c654661696c65640c007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e000028011c5665633c75383e000c04744661696c656420746f207363686564756c65204272696467652054782e40467265657a6541646d696e416464656408007c01284964656e74697479496400000001244163636f756e744964000d048841206e657720667265657a652061646d696e20686173206265656e2061646465642e48467265657a6541646d696e52656d6f76656408007c01284964656e74697479496400000001244163636f756e744964000e04804120667265657a652061646d696e20686173206265656e2072656d6f7665642e24547852656d6f76656408007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e000f049c4e6f74696669636174696f6e206f662072656d6f76696e672061207472616e73616374696f6e2e085c4576656e747320666f722074686973206d6f64756c652e007901083470616c6c65745f627269646765204272696467655478041c4163636f756e740100001001146e6f6e636510010c753332000124726563697069656e7400011c4163636f756e74000118616d6f756e7418011c42616c616e636500011c74785f686173682401104832353600007d0100000281010081010000040c00108501008501083470616c6c65745f6272696467653c48616e646c656454785374617475730001081c53756363657373000000144572726f72040028011c5665633c75383e000100008901083870616c6c65745f7374616b696e67205261774576656e74081c42616c616e63650118244163636f756e74496401000144244572615061796f75740c00100120457261496e646578000018011c42616c616e6365000018011c42616c616e636500000c550154686520657261207061796f757420686173206265656e207365743b207468652066697273742062616c616e6365206973207468652076616c696461746f722d7061796f75743b20746865207365636f6e64206973c07468652072656d61696e6465722066726f6d20746865206d6178696d756d20616d6f756e74206f66207265776172642ea85c5b6572615f696e6465782c2076616c696461746f725f7061796f75742c2072656d61696e6465725c5d185265776172640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e63650001043901546865207374616b657220686173206265656e207265776172646564206279207468697320616d6f756e742e205c5b73746173685f6964656e746974792c2073746173682c20616d6f756e745c5d14536c61736808000001244163636f756e744964000018011c42616c616e636500020821014f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e545c5b76616c696461746f722c20616d6f756e745c5d684f6c64536c617368696e675265706f7274446973636172646564040010013053657373696f6e496e6465780003081901416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c648c6e6f742062652070726f6365737365642e205c5b73657373696f6e5f696e6465785c5d3c5374616b696e67456c656374696f6e04008d01013c456c656374696f6e436f6d70757465000404f041206e657720736574206f66207374616b6572732077617320656c656374656420776974682074686520676976656e205c5b636f6d707574655c5d2e38536f6c7574696f6e53746f72656404008d01013c456c656374696f6e436f6d70757465000504150141206e657720736f6c7574696f6e20666f7220746865207570636f6d696e6720656c656374696f6e20686173206265656e2073746f7265642e205c5b636f6d707574655c5d18426f6e6465640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000610e4416e206163636f756e742068617320626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d004d014e4f54453a2054686973206576656e74206973206f6e6c7920656d6974746564207768656e2066756e64732061726520626f6e64656420766961206120646973706174636861626c652e204e6f7461626c792c210169742077696c6c206e6f7420626520656d697474656420666f72207374616b696e672072657761726473207768656e20746865792061726520616464656420746f207374616b652e20556e626f6e6465640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000704ec416e206163636f756e742068617320756e626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d244e6f6d696e617465640c007c01284964656e74697479496400000001244163636f756e7449640000910101385665633c4163636f756e7449643e0008048855736572206861732075706461746564207468656972206e6f6d696e6174696f6e732457697468647261776e08000001244163636f756e744964000018011c42616c616e63650009085901416e206163636f756e74206861732063616c6c6564206077697468647261775f756e626f6e6465646020616e642072656d6f76656420756e626f6e64696e67206368756e6b7320776f727468206042616c616e636560ac66726f6d2074686520756e6c6f636b696e672071756575652e205c5b73746173682c20616d6f756e745c5d645065726d697373696f6e65644964656e74697479416464656408007c01284964656e74697479496400007c01284964656e746974794964000a08ec416e20444944206861732069737375656420612063616e6469646163792e2053656520746865207472616e73616374696f6e20666f722077686f2e8c4743206964656e74697479202c2056616c696461746f722773206964656e746974792e6c5065726d697373696f6e65644964656e7469747952656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000b08e854686520676976656e206d656d626572207761732072656d6f7665642e2053656520746865207472616e73616374696f6e20666f722077686f2e8c4743206964656e74697479202c2056616c696461746f722773206964656e746974792e54496e76616c6964617465644e6f6d696e61746f72730c007c01284964656e74697479496400000001244163636f756e7449640000910101385665633c4163636f756e7449643e000c081d0152656d6f766520746865206e6f6d696e61746f72732066726f6d207468652076616c6964206e6f6d696e61746f7273207768656e2074686572652043444420657870697265642e9443616c6c65722c205374617368206163636f756e744964206f66206e6f6d696e61746f727350436f6d6d697373696f6e436170557064617465640c007c01284964656e74697479496400009501011c50657262696c6c00009501011c50657262696c6c000d08805768656e20636f6d6d697373696f6e206361702067657420757064617465642e58286f6c642076616c75652c206e65772076616c7565296c4d696e696d756d426f6e645468726573686f6c645570646174656408007801484f7074696f6e3c4964656e7469747949643e000018011c42616c616e6365000e04ac4d696e20626f6e64207468726573686f6c6420776173207570646174656420286e65772076616c7565292e885265776172645061796d656e745363686564756c696e67496e7465727275707465640c000001244163636f756e7449640000100120457261496e646578000064013444697370617463684572726f72000f04cc5768656e207363686564756c696e67206f6620726577617264207061796d656e74732067657420696e7465727275707465642e64536c617368696e67416c6c6f776564466f724368616e676564040099010138536c617368696e675377697463680010049055706461746520666f722077686f6d2062616c616e63652067657420736c61736865642e085c4576656e747320666f722074686973206d6f64756c652e008d01083870616c6c65745f7374616b696e673c456c656374696f6e436f6d7075746500010c1c4f6e436861696e000000185369676e656400010020556e7369676e6564000200009101000002000095010c3473705f61726974686d65746963287065725f7468696e67731c50657262696c6c0000040010010c75333200009901083870616c6c65745f7374616b696e6738536c617368696e6753776974636800010c2456616c696461746f720000005456616c696461746f72416e644e6f6d696e61746f72000100104e6f6e65000200009d010c3c70616c6c65745f6f6666656e6365731870616c6c6574144576656e740001041c4f6666656e63650800250101104b696e6400002801384f706171756554696d65536c6f7400000c5101546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e643501286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e4c5c5b6b696e642c2074696d65736c6f745c5d2e04304576656e747320747970652ea1010c3870616c6c65745f73657373696f6e1870616c6c6574144576656e74000104284e657753657373696f6e040010013053657373696f6e496e64657800000849014e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e7420697320746865205c5b73657373696f6e5f696e6465785c5d2c206e6f74207468659c626c6f636b206e756d626572206173207468652074797065206d6967687420737567676573742e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909a5010c3870616c6c65745f6772616e6470611870616c6c6574144576656e7400010c384e6577417574686f7269746965730400a9010134417574686f726974794c697374000004d44e657720617574686f726974792073657420686173206265656e206170706c6965642e205c5b617574686f726974795f7365745c5d185061757365640001049843757272656e7420617574686f726974792073657420686173206265656e207061757365642e1c526573756d65640002049c43757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909a901000002ad0100ad0100000408b1012000b1010c4c73705f66696e616c6974795f6772616e6470610c617070185075626c696300000400b501013c656432353531393a3a5075626c69630000b5010c1c73705f636f72651c65643235353139185075626c6963000004000401205b75383b2033325d0000b9010c4070616c6c65745f696d5f6f6e6c696e651870616c6c6574144576656e7404045400010c4448656172746265617452656365697665640400bd010138543a3a417574686f726974794964000004010141206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f72697479496460205c5b617574686f726974795f69645c5d1c416c6c476f6f64000104d041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2c536f6d654f66666c696e650400c501016c5665633c4964656e74696669636174696f6e5475706c653c543e3e000204390141742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e652076616c696461746f722077617320666f756e6420746f206265205c5b6f66666c696e655c5d2e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909bd01104070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139185075626c696300000400c101013c737232353531393a3a5075626c69630000c1010c1c73705f636f72651c73723235353139185075626c6963000004000401205b75383b2033325d0000c501000002c90100c9010000040800cd0100cd01083870616c6c65745f7374616b696e67204578706f7375726508244163636f756e74496401001c42616c616e63650118000c0114746f74616cd101011c42616c616e636500010c6f776ed101011c42616c616e63650001186f7468657273d50101ac5665633c496e646976696475616c4578706f737572653c4163636f756e7449642c2042616c616e63653e3e0000d1010000061800d501000002d90100d901083870616c6c65745f7374616b696e6748496e646976696475616c4578706f7375726508244163636f756e74496401001c42616c616e636501180008010c77686f0001244163636f756e74496400011476616c7565d101011c42616c616e63650000dd01082c70616c6c65745f7375646f205261774576656e7404244163636f756e7449640100010c14537564696404003d0101384469737061746368526573756c740000048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d284b65794368616e67656404000001244163636f756e744964000104fc546865205c5b7375646f65725c5d206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e285375646f4173446f6e6504003d0101384469737061746368526573756c740002048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d085c4576656e747320666f722074686973206d6f64756c652e00e1011064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473146173736574205261774576656e7408184d6f6d656e740120244163636f756e74496401000158205472616e7366657214007c01284964656e7469747949640000a401185469636b65720000dc012c506f7274666f6c696f49640000dc012c506f7274666f6c696f4964000018011c42616c616e6365000008744576656e7420666f72207472616e73666572206f6620746f6b656e732edc63616c6c6572204449442c207469636b65722c2066726f6d20706f7274666f6c696f2c20746f20706f7274666f6c696f2c2076616c75651849737375656418007c01284964656e7469747949640000a401185469636b657200007c01284964656e746974794964000018011c42616c616e63650000e501014046756e64696e67526f756e644e616d65000018011c42616c616e636500010870456d6974207768656e20746f6b656e7320676574206973737565642e750163616c6c6572204449442c207469636b65722c2062656e6566696369617279204449442c2076616c75652c2066756e64696e6720726f756e642c20746f74616c2069737375656420696e20746869732066756e64696e6720726f756e642052656465656d656410007c01284964656e7469747949640000a401185469636b657200007c01284964656e746974794964000018011c42616c616e636500020878456d6974207768656e20746f6b656e73206765742072656465656d65642e9063616c6c6572204449442c207469636b65722c202066726f6d204449442c2076616c75653041737365744372656174656418007c01284964656e7469747949640000a401185469636b657200001d010110626f6f6c0000e901012441737365745479706500007c01284964656e74697479496400001d010110626f6f6c000308804576656e7420666f72206372656174696f6e206f66207468652061737365742e950163616c6c6572204449442f206f776e6572204449442c207469636b65722c2064697669736962696c6974792c20617373657420747970652c2062656e6566696369617279204449442c2064697361626c6520696e766573746f7220756e697175656e657373484964656e74696669657273557064617465640c007c01284964656e7469747949640000a401185469636b65720000f10101505665633c41737365744964656e7469666965723e000408d44576656e7420656d6974746564207768656e20616e7920746f6b656e206964656e746966696572732061726520757064617465642e0d0163616c6c6572204449442c207469636b65722c206120766563746f72206f6620286964656e74696669657220747970652c206964656e7469666965722076616c7565294c44697669736962696c6974794368616e6765640c007c01284964656e7469747949640000a401185469636b657200001d010110626f6f6c000508844576656e7420666f72206368616e676520696e2064697669736962696c6974792e8063616c6c6572204449442c207469636b65722c2064697669736962696c697479405472616e73666572576974684461746118007c01284964656e7469747949640000a401185469636b657200007c01284964656e74697479496400007c01284964656e746974794964000018011c42616c616e6365000028011c5665633c75383e0006083501416e206164646974696f6e616c206576656e7420746f205472616e736665723b20656d6974746564207768656e20607472616e736665725f776974685f64617461602069732063616c6c65642ec863616c6c657220444944202c207469636b65722c2066726f6d204449442c20746f204449442c2076616c75652c20646174612849734973737561626c650800a401185469636b657200001d010110626f6f6c0007085069735f6973737561626c652829206f75747075749c7469636b65722c2072657475726e2076616c7565202874727565206966206973737561626c6529405469636b6572526567697374657265640c007c01284964656e7469747949640000a401185469636b65720000f801384f7074696f6e3c4d6f6d656e743e0008087c456d6974207768656e207469636b657220697320726567697374657265642eec63616c6c657220444944202f207469636b6572206f776e6572206469642c207469636b65722c207469636b6572206f776e65722c20657870697279445469636b65725472616e736665727265640c007c01284964656e7469747949640000a401185469636b657200007c01284964656e74697479496400090880456d6974207768656e207469636b6572206973207472616e736665727265642ed063616c6c657220444944202f207469636b6572207472616e7366657272656420746f204449442c207469636b65722c2066726f6d6441737365744f776e6572736869705472616e736665727265640c007c01284964656e7469747949640000a401185469636b657200007c01284964656e746974794964000a08a4456d6974207768656e20746f6b656e206f776e657273686970206973207472616e736665727265642ef463616c6c657220444944202f20746f6b656e206f776e657273686970207472616e7366657272656420746f204449442c207469636b65722c2066726f6d2c417373657446726f7a656e08007c01284964656e7469747949640000a401185469636b6572000b08a4416e206576656e7420656d6974746564207768656e20616e2061737365742069732066726f7a656e2e78506172616d657465723a2063616c6c6572204449442c207469636b65722e344173736574556e66726f7a656e08007c01284964656e7469747949640000a401185469636b6572000c08ac416e206576656e7420656d6974746564207768656e20616e20617373657420697320756e66726f7a656e2e78506172616d657465723a2063616c6c6572204449442c207469636b65722e30417373657452656e616d65640c007c01284964656e7469747949640000a401185469636b657200000102012441737365744e616d65000d08a4416e206576656e7420656d6974746564207768656e206120746f6b656e2069732072656e616d65642ebc506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720746f6b656e206e616d652e3c46756e64696e67526f756e645365740c007c01284964656e7469747949640000a401185469636b65720000e501014046756e64696e67526f756e644e616d65000e081101416e206576656e74206361727279696e6720746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e64206f662061207469636b65722ecc506172616d65746572733a2063616c6c6572204449442c207469636b65722c2066756e64696e6720726f756e64206e616d652e34446f63756d656e74416464656410007c01284964656e7469747949640000a401185469636b6572000005020128446f63756d656e744964000009020120446f63756d656e74000f048c41206e657720646f63756d656e7420617474616368656420746f20616e2061737365743c446f63756d656e7452656d6f7665640c007c01284964656e7469747949640000a401185469636b6572000005020128446f63756d656e744964001004804120646f63756d656e742072656d6f7665642066726f6d20616e20617373657440457874656e73696f6e52656d6f7665640c007c01284964656e7469747949640000a401185469636b657200000001244163636f756e744964001108604120657874656e73696f6e20676f742072656d6f7665642e7463616c6c6572204449442c207469636b65722c204163636f756e74496450436c61737369635469636b6572436c61696d65640c007c01284964656e7469747949640000a401185469636b657200003502013c457468657265756d4164647265737300120435014120506f6c796d61746820436c617373696320746f6b656e2077617320636c61696d656420616e64207472616e7366657272656420746f2061206e6f6e2d73797374656d61746963204449442e48436f6e74726f6c6c65725472616e7366657210007c01284964656e7469747949640000a401185469636b65720000dc012c506f7274666f6c696f4964000018011c42616c616e6365001308b44576656e7420666f72207768656e206120666f72636564207472616e736665722074616b657320706c6163652e150163616c6c6572204449442f20636f6e74726f6c6c6572204449442c207469636b65722c20506f7274666f6c696f206f6620746f6b656e20686f6c6465722c2076616c75652e54437573746f6d4173736574547970654578697374730c007c01284964656e7469747949640000ed010144437573746f6d4173736574547970654964000028011c5665633c75383e001408b04120637573746f6d206173736574207479706520616c726561647920657869737473206f6e2d636861696e2e310163616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e64437573746f6d417373657454797065526567697374657265640c007c01284964656e7469747949640000ed010144437573746f6d4173736574547970654964000028011c5665633c75383e001508b04120637573746f6d2061737365742074797065207761732072656769737465726564206f6e2d636861696e2e310163616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e085c4576656e747320666f722074686973206d6f64756c652e00e5010c4c706f6c796d6573685f7072696d6974697665731461737365744046756e64696e67526f756e644e616d650000040028011c5665633c75383e0000e9010c4c706f6c796d6573685f7072696d6974697665731461737365742441737365745479706500012c30457175697479436f6d6d6f6e0000003c45717569747950726566657272656400010024436f6d6d6f646974790002002c4669786564496e636f6d6500030010524549540004001046756e6400050054526576656e7565536861726541677265656d656e74000600445374727563747572656450726f64756374000700284465726976617469766500080018437573746f6d0400ed010144437573746f6d417373657454797065496400090028537461626c65436f696e000a0000ed010c4c706f6c796d6573685f7072696d69746976657314617373657444437573746f6d41737365745479706549640000040010010c7533320000f101000002f50100f5010c4c706f6c796d6573685f7072696d6974697665734061737365745f6964656e7469666965723c41737365744964656e7469666965720001101443555349500400f901011c5b75383b20395d0000001043494e530400f901011c5b75383b20395d000100104953494e0400a801205b75383b2031325d0002000c4c45490400fd0101205b75383b2032305d00030000f901000003090000000800fd0100000314000000080001020c4c706f6c796d6573685f7072696d6974697665731461737365742441737365744e616d650000040028011c5665633c75383e000005020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7428446f63756d656e7449640000040010010c753332000009020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7420446f63756d656e74000014010c7572690d02012c446f63756d656e74557269000130636f6e74656e745f6861736811020130446f63756d656e74486173680001106e616d6529020130446f63756d656e744e616d65000120646f635f747970652d0201504f7074696f6e3c446f63756d656e74547970653e00012c66696c696e675f64617465f801384f7074696f6e3c4d6f6d656e743e00000d020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e742c446f63756d656e745572690000040028011c5665633c75383e000011020c4c706f6c796d6573685f7072696d69746976657334646f63756d656e745f6861736830446f63756d656e7448617368000124104e6f6e6500000010483531320400150201205b75383b2036345d00010010483338340400190201205b75383b2034385d000200104833323004001d0201205b75383b2034305d000300104832353604000401205b75383b2033325d00040010483232340400210201205b75383b2032385d00050010483139320400250201205b75383b2032345d00060010483136300400fd0101205b75383b2032305d00070010483132380400250101205b75383b2031365d00080000150200000340000000080019020000033000000008001d0200000328000000080021020000031c0000000800250200000318000000080029020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7430446f63756d656e744e616d650000040028011c5665633c75383e00002d0204184f7074696f6e0404540131020108104e6f6e6500000010536f6d6504003102000001000031020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7430446f63756d656e74547970650000040028011c5665633c75383e000035020c4c706f6c796d6573685f7072696d69746976657320657468657265756d3c457468657265756d4164647265737300000400fd0101205b75383b2032305d000039020c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e144576656e740001101c437265617465640c003d0201204576656e7444696400004102011043414964000049020130446973747269627574696f6e000010b841206361706974616c20646973747269627574696f6e2c20776974682064657461696c7320696e636c756465642c31017761732063726561746564206279207468652044494420287065726d697373696f6e6564206167656e742920666f7220746865204341206964656e746966696564206279206043414964602e00a8284167656e74204449442c20434127732049442c20646973747269627574696f6e2064657461696c73293842656e65666974436c61696d656418003d0201204576656e7444696400003d0201204576656e7444696400004102011043414964000049020130446973747269627574696f6e000018011c42616c616e636500004d02010c54617800010c51014120746f6b656e20686f6c64657227732062656e65666974206f662061206361706974616c20646973747269627574696f6e20666f722074686520676976656e206043414964602077617320636c61696d65642e0091012843616c6c6572204449442c20486f6c6465722f436c61696d616e74204449442c20434127732049442c207570646174656420646973747269627574696f6e2064657461696c732c2044494427732062656e656669742c20444944277320746178202529245265636c61696d65640c003d0201204576656e7444696400004102011043414964000018011c42616c616e636500020c9853746174732066726f6d2060707573685f62656e65666974602077617320656d69747465642e001501284167656e74204449442c20434127732049442c206d61782072657175657374656420444944732c2070726f63657373656420444944732c206661696c65642044494473291c52656d6f76656408003d0201204576656e744469640000410201104341496400030c8c41206361706974616c20646973747269627574696f6e207761732072656d6f7665642e0050284167656e74204449442c204341277320494429085c4576656e747320666f722074686973206d6f64756c652e003d020c4c706f6c796d6573685f7072696d697469766573286576656e745f6f6e6c79244576656e744f6e6c79040454017c0004007c01045400004102086070616c6c65745f636f72706f726174655f616374696f6e73104341496400000801187469636b6572a401185469636b65720001206c6f63616c5f6964450201244c6f63616c4341496400004502086070616c6c65745f636f72706f726174655f616374696f6e73244c6f63616c434149640000040010010c753332000049020c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e30446973747269627574696f6e000020011066726f6ddc012c506f7274666f6c696f496400012063757272656e6379a401185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e636500012472656d61696e696e6718011c42616c616e63650001247265636c61696d65641d010110626f6f6c0001287061796d656e745f61742001184d6f6d656e74000128657870697265735f6174f801384f7074696f6e3c4d6f6d656e743e00004d020c3473705f61726974686d65746963287065725f7468696e67731c5065726d696c6c0000040010010c753332000051021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e74144576656e7400011044436865636b706f696e74437265617465641400550201404f7074696f6e3c4576656e744469643e0000a401185469636b6572000059020130436865636b706f696e744964000018011c42616c616e636500002001184d6f6d656e7400000c644120636865636b706f696e742077617320637265617465642e001d012863616c6c6572204449442c207469636b65722c20636865636b706f696e742049442c20746f74616c20737570706c792c20636865636b706f696e742074696d657374616d7029844d6178696d756d5363686564756c6573436f6d706c65786974794368616e67656408007c01284964656e746974794964000020010c75363400010c2901546865206d6178696d756d20636f6d706c657869747920666f7220616e20617262697472617279207469636b65722773207363686564756c652073657420776173206368616e6765642e0064284743204449442c20746865206e6577206d6178696d756d293c5363686564756c65437265617465640c003d0201204576656e744469640000a401185469636b657200005d02013853746f7265645363686564756c6500020c884120636865636b706f696e74207363686564756c652077617320637265617465642e00782863616c6c6572204449442c207469636b65722c207363686564756c65293c5363686564756c6552656d6f7665640c007c01284964656e7469747949640000a401185469636b657200005d02013853746f7265645363686564756c6500030c884120636865636b706f696e74207363686564756c65207761732072656d6f7665642e00782863616c6c6572204449442c207469636b65722c207363686564756c6529085c4576656e747320666f722074686973206d6f64756c652e00550204184f7074696f6e040454013d020108104e6f6e6500000010536f6d6504003d02000001000059020c4c706f6c796d6573685f7072696d6974697665732063616c656e64617230436865636b706f696e7449640000040020010c75363400005d021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e743853746f7265645363686564756c6500001001207363686564756c6561020148436865636b706f696e745363686564756c6500010869646d0201285363686564756c65496400010861742001184d6f6d656e7400012472656d61696e696e6710010c753332000061020c4c706f6c796d6573685f7072696d6974697665732063616c656e64617248436865636b706f696e745363686564756c65000008011473746172742001184d6f6d656e74000118706572696f646502013843616c656e646172506572696f64000065020c4c706f6c796d6573685f7072696d6974697665732063616c656e6461723843616c656e646172506572696f640000080110756e69746902013043616c656e646172556e6974000118616d6f756e7420010c753634000069020c4c706f6c796d6573685f7072696d6974697665732063616c656e6461723043616c656e646172556e697400011c185365636f6e64000000184d696e75746500010010486f75720002000c446179000300105765656b000400144d6f6e74680005001059656172000600006d021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e74285363686564756c6549640000040020010c75363400007102086470616c6c65745f636f6d706c69616e63655f6d616e61676572144576656e7400012470436f6d706c69616e6365526571756972656d656e74437265617465640c007c01284964656e7469747949640000a401185469636b6572000075020154436f6d706c69616e6365526571756972656d656e74000008cc456d6974746564207768656e206e657720636f6d706c69616e636520726571756972656d656e7420697320637265617465642eb02863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e70436f6d706c69616e6365526571756972656d656e7452656d6f7665640c007c01284964656e7469747949640000a401185469636b6572000010010c753332000108c4456d6974746564207768656e206120636f6d706c69616e636520726571756972656d656e742069732072656d6f7665642e942863616c6c6572204449442c205469636b65722c20726571756972656d656e745f6964292e5c4173736574436f6d706c69616e63655265706c616365640c007c01284964656e7469747949640000a401185469636b65720000a10201685665633c436f6d706c69616e6365526571756972656d656e743e000208b4456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206973207265706c616365642ed4506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720617373657420636f6d706c69616e63652e504173736574436f6d706c69616e6365526573657408007c01284964656e7469747949640000a401185469636b6572000308d8456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206f662061207469636b65722069732072657365742e542863616c6c6572204449442c205469636b6572292e584173736574436f6d706c69616e6365526573756d656408007c01284964656e7469747949640000a401185469636b65720004080101456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b6572206765747320726573756d652e542863616c6c6572204449442c205469636b6572292e544173736574436f6d706c69616e636550617573656408007c01284964656e7469747949640000a401185469636b65720005080101456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b65722067657473207061757365642e542863616c6c6572204449442c205469636b6572292e70436f6d706c69616e6365526571756972656d656e744368616e6765640c007c01284964656e7469747949640000a401185469636b6572000075020154436f6d706c69616e6365526571756972656d656e74000608e0456d6974746564207768656e20636f6d706c69616e636520726571756972656d656e7420676574206d6f6469666965642f6368616e67652eb02863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e785472757374656444656661756c74436c61696d49737375657241646465640c007c01284964656e7469747949640000a401185469636b6572000091020134547275737465644973737565720007081501456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b657220676574732061646465642ea82863616c6c6572204449442c205469636b65722c2041646465642054727573746564497373756572292e805472757374656444656661756c74436c61696d49737375657252656d6f7665640c007c01284964656e7469747949640000a401185469636b657200007c01284964656e7469747949640008081901456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b6572206765742072656d6f7665642eb02863616c6c6572204449442c205469636b65722c2052656d6f7665642054727573746564497373756572292e085c4576656e747320666f722074686973206d6f64756c652e0075020c4c706f6c796d6573685f7072696d69746976657348636f6d706c69616e63655f6d616e6167657254436f6d706c69616e6365526571756972656d656e7400000c014473656e6465725f636f6e646974696f6e73790201385665633c436f6e646974696f6e3e00014c72656365697665725f636f6e646974696f6e73790201385665633c436f6e646974696f6e3e000108696410010c753332000079020000027d02007d020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e24436f6e646974696f6e0000080138636f6e646974696f6e5f7479706581020134436f6e646974696f6e5479706500011c697373756572738d0201485665633c547275737465644973737565723e000081020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e34436f6e646974696f6e5479706500011424497350726573656e740400fc0114436c61696d000000204973416273656e740400fc0114436c61696d0001001c4973416e794f660400850201285665633c436c61696d3e0002002049734e6f6e654f660400850201285665633c436c61696d3e0003002849734964656e746974790400890201385461726765744964656e74697479000400008502000002fc0089020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e385461726765744964656e746974790001083445787465726e616c4167656e7400000020537065636966696304007c01284964656e746974794964000100008d0200000291020091020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e345472757374656449737375657200000801186973737565727c01284964656e74697479496400012c747275737465645f666f729502012854727573746564466f72000095020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e2854727573746564466f720001080c416e790000002053706563696669630400990201385665633c436c61696d547970653e0001000099020000029d02009d020c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d24436c61696d54797065000130284163637265646974656400000024416666696c69617465000100244275794c6f636b75700002002853656c6c4c6f636b757000030050437573746f6d657244756544696c6967656e6365000400404b6e6f77596f7572437573746f6d6572000500304a7572697364696374696f6e000600204578656d707465640007001c426c6f636b656400080048496e766573746f72556e697175656e657373000900184e6f54797065000a0050496e766573746f72556e697175656e6573735632000b0000a102000002750200a502086070616c6c65745f636f72706f726174655f616374696f6e73144576656e740001245c4d617844657461696c734c656e6774684368616e67656408007c01284964656e746974794964000010010c753332000008d4546865206d6178696d756d206c656e677468206f66206064657461696c736020696e20627974657320776173206368616e6765642e50284743204449442c206e6577206c656e677468297844656661756c745461726765744964656e7469746965734368616e6765640c007c01284964656e7469747949640000a401185469636b65720000a90201405461726765744964656e746974696573000108ec54686520736574206f662064656661756c7420605461726765744964656e7469746965736020666f722061207469636b6572206368616e6765642ea4284167656e74204449442c205469636b65722c204e6577205461726765744964656e746974696573297044656661756c7457697468686f6c64696e675461784368616e6765640c007c01284964656e7469747949640000a401185469636b657200004d02010c546178000208c45468652064656661756c742077697468686f6c64696e672074617820666f722061207469636b6572206368616e6765642e74284167656e74204449442c205469636b65722c204e657720546178292e6044696457697468686f6c64696e675461784368616e67656410007c01284964656e7469747949640000a401185469636b657200007c01284964656e7469747949640000b102012c4f7074696f6e3c5461783e000308ec5468652077697468686f6c64696e672074617820737065636966696320746f20612044494420666f722061207469636b6572206368616e6765642ea0284167656e74204449442c205469636b65722c205461786564204449442c204e657720546178292e384341415472616e736665727265640c007c01284964656e7469747949640000a401185469636b657200007c01284964656e7469747949640004086c41206e65772044494420776173206d61646520746865204341412e8c284e657720434141204449442c205469636b65722c204e65772043414120444944292e2c4341496e6974696174656410003d0201204576656e74446964000041020110434149640000b502013c436f72706f72617465416374696f6e0000d1020124434144657461696c730005084c412043412077617320696e697469617465642ea8284167656e74204449442c2043412069642c207468652043412c207468652043412064657461696c73293443414c696e6b6564546f446f630c007c01284964656e746974794964000041020110434149640000d502013c5665633c446f63756d656e7449643e000608844120434120776173206c696e6b656420746f206120736574206f6620646f63732eac284167656e74204449442c2043412049642c204c697374206f6620646f63206964656e746966696572732924434152656d6f76656408003d0201204576656e74446964000041020110434149640007084441204341207761732072656d6f7665642e48284167656e74204449442c20434120496429445265636f7264446174654368616e6765640c003d0201204576656e74446964000041020110434149640000b502013c436f72706f72617465416374696f6e0008046c412043412773207265636f72642064617465206368616e6765642e085c4576656e747320666f722074686973206d6f64756c652e00a902086070616c6c65745f636f72706f726174655f616374696f6e73405461726765744964656e74697469657300000801286964656e7469746965733101013c5665633c4964656e7469747949643e00012474726561746d656e74ad02013c54617267657454726561746d656e740000ad02086070616c6c65745f636f72706f726174655f616374696f6e733c54617267657454726561746d656e740001081c496e636c7564650000001c4578636c75646500010000b10204184f7074696f6e040454014d020108104e6f6e6500000010536f6d6504004d020000010000b502086070616c6c65745f636f72706f726174655f616374696f6e733c436f72706f72617465416374696f6e00001801106b696e64b902011843414b696e640001246465636c5f646174652001184d6f6d656e7400012c7265636f72645f64617465bd0201484f7074696f6e3c5265636f7264446174653e00011c74617267657473a90201405461726765744964656e74697469657300015c64656661756c745f77697468686f6c64696e675f7461784d02010c54617800013c77697468686f6c64696e675f746178c90201585665633c284964656e7469747949642c20546178293e0000b902086070616c6c65745f636f72706f726174655f616374696f6e731843414b696e64000114485072656469637461626c6542656e6566697400000050556e7072656469637461626c6542656e65666974000100304973737565724e6f746963650002003852656f7267616e697a6174696f6e000300144f7468657200040000bd0204184f7074696f6e04045401c1020108104e6f6e6500000010536f6d650400c1020000010000c102086070616c6c65745f636f72706f726174655f616374696f6e73285265636f7264446174650000080110646174652001184d6f6d656e74000128636865636b706f696e74c50201304341436865636b706f696e740000c502086070616c6c65745f636f72706f726174655f616374696f6e73304341436865636b706f696e74000108245363686564756c656408006d0201285363686564756c654964000020010c753634000000204578697374696e67040059020130436865636b706f696e74496400010000c902000002cd0200cd02000004087c4d0200d102086070616c6c65745f636f72706f726174655f616374696f6e7324434144657461696c730000040028011c5665633c75383e0000d502000002050200d9020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74144576656e740001181c4372656174656414007c01284964656e746974794964000041020110434149640000dd02013c42616c6c6f7454696d6552616e67650000e102012842616c6c6f744d65746100001d010110626f6f6c00000c7c4120636f72706f726174652062616c6c6f742077617320637265617465642e001501284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e642c2042616c6c6f74206d657461646174612c2052435620656e61626c65643f2920566f7465436173740c007c01284964656e7469747949640000410201104341496400000103013c5665633c42616c6c6f74566f74653e00010c984120766f746520776173206361737420696e206120636f72706f726174652062616c6c6f742e006028766f746572204449442c20434149642c20566f746573293052616e67654368616e6765640c007c01284964656e746974794964000041020110434149640000dd02013c42616c6c6f7454696d6552616e676500020cd04120636f72706f726174652062616c6c6f74206368616e676564206974732073746172742f656e6420646174652072616e67652e0098284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e64292c4d6574614368616e6765640c007c01284964656e746974794964000041020110434149640000e102012842616c6c6f744d65746100030ca04120636f72706f726174652062616c6c6f74206368616e67656420697473206d657461646174612e0088284167656e74204449442c20434127732049442c204e6577206d6574616461746129285243564368616e6765640c007c01284964656e7469747949640000410201104341496400001d010110626f6f6c00040cac4120636f72706f726174652062616c6c6f74206368616e676564206974732052435620737570706f72742e0084284167656e74204449442c20434127732049442c204e657720737570706f7274291c52656d6f76656408003d0201204576656e744469640000410201104341496400050c7c4120636f72706f726174652062616c6c6f74207761732072656d6f7665642e0050284167656e74204449442c204341277320494429085c4576656e747320666f722074686973206d6f64756c652e00dd020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f743c42616c6c6f7454696d6552616e6765000008011473746172742001184d6f6d656e7400010c656e642001184d6f6d656e740000e1020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742842616c6c6f744d65746100000801147469746c65e502012c42616c6c6f745469746c6500011c6d6f74696f6e73e902012c5665633c4d6f74696f6e3e0000e5020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c42616c6c6f745469746c650000040028011c5665633c75383e0000e902000002ed0200ed020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74184d6f74696f6e00000c01147469746c65f102012c4d6f74696f6e5469746c65000124696e666f5f6c696e6bf50201384d6f74696f6e496e666f4c696e6b00011c63686f69636573f90201405665633c43686f6963655469746c653e0000f1020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c4d6f74696f6e5469746c650000040028011c5665633c75383e0000f5020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74384d6f74696f6e496e666f4c696e6b0000040028011c5665633c75383e0000f902000002fd0200fd020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c43686f6963655469746c650000040028011c5665633c75383e0000010300000205030005030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742842616c6c6f74566f74650000080114706f77657218011c42616c616e636500012066616c6c6261636b0903012c4f7074696f6e3c7531363e0000090304184f7074696f6e040454010d030108104e6f6e6500000010536f6d6504000d0300000100000d0300000504001103082c70616c6c65745f70697073205261774576656e7408244163636f756e74496401002c426c6f636b4e756d6265720110015050486973746f726963616c506970735072756e65640c007c01284964656e74697479496400001d010110626f6f6c00001d010110626f6f6c00000445015072756e696e6720486973746f726963616c205049507320697320656e61626c6564206f722064697361626c6564202863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293c50726f706f73616c4372656174656420007c01284964656e74697479496400001503014c50726f706f7365723c4163636f756e7449643e00001d0301145069704964000018011c42616c616e636500002103012c4f7074696f6e3c55726c3e0000290301584f7074696f6e3c5069704465736372697074696f6e3e00004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00003103013050726f706f73616c4461746100011498412050495020776173206d61646520776974682061206042616c616e636560207374616b652e00342320506172616d65746572733a00510143616c6c6572204449442c2050726f706f7365722c205049502049442c206465706f7369742c2055524c2c206465736372697074696f6e2c206578706972792074696d652c2070726f706f73616c20646174612e5050726f706f73616c5374617465557064617465640c007c01284964656e74697479496400001d030114506970496400003503013450726f706f73616c5374617465000204d854726967676572656420656163682074696d6520746865207374617465206f6620612070726f706f73616c20697320616d656e64656414566f74656414007c01284964656e74697479496400000001244163636f756e74496400001d030114506970496400001d010110626f6f6c000018011c42616c616e6365000304f8604163636f756e7449646020766f7465642060626f6f6c60206f6e207468652070726f706f73616c207265666572656e636564206279206050697049646024506970436c6f7365640c007c01284964656e74697479496400001d030114506970496400001d010110626f6f6c000404e850697020686173206265656e20636c6f7365642c20626f6f6c20696e6469636174657320776865746865722064617461206973207072756e656448457865637574696f6e5363686564756c65640c007c01284964656e74697479496400001d0301145069704964000010012c426c6f636b4e756d626572000504e0457865637574696f6e206f6620612050495020686173206265656e207363686564756c656420617420737065636966696320626c6f636b2e7444656661756c74456e6163746d656e74506572696f644368616e6765640c007c01284964656e746974794964000010012c426c6f636b4e756d626572000010012c426c6f636b4e756d626572000608d844656661756c7420656e6163746d656e7420706572696f642028696e20626c6f636b732920686173206265656e206368616e6765642e902863616c6c6572204449442c206f6c6420706572696f642c206e657720706572696f6429744d696e696d756d50726f706f73616c4465706f7369744368616e6765640c007c01284964656e746974794964000018011c42616c616e6365000018011c42616c616e63650007087c4d696e696d756d206465706f73697420616d6f756e74206d6f646966696564902863616c6c6572204449442c206f6c6420616d6f756e742c206e657720616d6f756e74295c50656e64696e675069704578706972794368616e6765640c007c01284964656e74697479496400004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e000808cc416d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020657870697265732e902863616c6c6572204449442c206f6c64206578706972792c206e65772065787069727929584d6178506970536b6970436f756e744368616e6765640c007c01284964656e7469747949640000080130536b6970706564436f756e740000080130536b6970706564436f756e74000908cc546865206d6178696d756d2074696d65732061205049502063616e20626520736b697070656420776173206368616e6765642e882863616c6c6572204449442c206f6c642076616c75652c206e65772076616c756529544163746976655069704c696d69744368616e6765640c007c01284964656e746974794964000010010c753332000010010c753332000a08b8546865206d6178696d756d206e756d626572206f6620616374697665205049507320776173206368616e6765642e882863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293850726f706f73616c526566756e640c007c01284964656e74697479496400001d0301145069704964000018011c42616c616e6365000b083c526566756e642070726f706f73616c482869642c20746f74616c20616d6f756e74293c536e617073686f74436c656172656408007c01284964656e746974794964000039030128536e617073686f744964000c046454686520736e617073686f742077617320636c65617265642e34536e617073686f7454616b656e0c007c01284964656e746974794964000039030128536e617073686f74496400003d03014c5665633c536e617073686f747465645069703e000d046441206e657720736e617073686f74207761732074616b656e2e28506970536b69707065640c007c01284964656e74697479496400001d03011450697049640000080130536b6970706564436f756e74000e08a0412050495020696e2074686520736e617073686f742071756575652077617320736b69707065642e802867635f6469642c207069705f69642c206e65775f736b69705f636f756e742958536e617073686f74526573756c7473456e616374656414007c01284964656e7469747949640000490301484f7074696f6e3c536e617073686f7449643e00004d0301685665633c2850697049642c20536b6970706564436f756e74293e0000550301285665633c50697049643e0000550301285665633c50697049643e000f083101526573756c74732028652e672e2c20617070726f7665642c2072656a65637465642c20616e6420736b6970706564292c207765726520656e616374656420666f7220736f6d6520504950732e51012867635f6469642c20736e617073686f745f69645f6f70742c20736b69707065645f706970735f776974685f6e65775f636f756e742c2072656a65637465645f706970732c20617070726f7665645f706970732964457865637574696f6e5363686564756c696e674661696c65640c007c01284964656e74697479496400001d0301145069704964000010012c426c6f636b4e756d6265720010040d015363686564756c696e67206f66207468652050495020666f7220657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e3c4578706972795363686564756c65640c007c01284964656e74697479496400001d0301145069704964000010012c426c6f636b4e756d626572001104985468652050495020686173206265656e207363686564756c656420666f72206578706972792e584578706972795363686564756c696e674661696c65640c007c01284964656e74697479496400001d0301145069704964000010012c426c6f636b4e756d62657200120401015363686564756c696e67206f66207468652050495020666f7220657870697279206661696c656420696e20746865207363686564756c65722070616c6c65742e64457865637574696f6e43616e63656c6c696e674661696c656404001d0301145069704964001304f043616e63656c6c696e67207468652050495020657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e085c4576656e747320666f722074686973206d6f64756c652e001503082c70616c6c65745f706970732050726f706f73657204244163636f756e7449640100010824436f6d6d756e69747904000001244163636f756e74496400000024436f6d6d6974746565040019030124436f6d6d6974746565000100001903082c70616c6c65745f7069707324436f6d6d697474656500010824546563686e6963616c0000001c55706772616465000100001d03082c70616c6c65745f706970731450697049640000040010010c7533320000210304184f7074696f6e0404540125030108104e6f6e6500000010536f6d650400250300000100002503082c70616c6c65745f706970730c55726c0000040028011c5665633c75383e0000290304184f7074696f6e040454012d030108104e6f6e6500000010536f6d6504002d0300000100002d03082c70616c6c65745f70697073385069704465736372697074696f6e0000040028011c5665633c75383e00003103082c70616c6c65745f706970733050726f706f73616c4461746100010810486173680400240110483235360000002050726f706f73616c040028011c5665633c75383e000100003503082c70616c6c65745f706970733450726f706f73616c53746174650001181c50656e64696e670000002052656a6563746564000100245363686564756c6564000200184661696c65640003002045786563757465640004001c45787069726564000500003903082c70616c6c65745f7069707328536e617073686f7449640000040010010c75333200003d030000024103004103082c70616c6c65745f7069707338536e617073686f74746564506970000008010869641d03011450697049640001187765696768744503013c28626f6f6c2c2042616c616e63652900004503000004081d011800490304184f7074696f6e0404540139030108104e6f6e6500000010536f6d650400390300000100004d030000025103005103000004081d03080055030000021d030059031064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747324706f7274666f6c696f144576656e7400011840506f7274666f6c696f437265617465640c007c01284964656e7469747949640000e4013c506f7274666f6c696f4e756d62657200005d030134506f7274666f6c696f4e616d65000018b054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c7920637265617465642e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572402a20706f7274666f6c696f206e616d6540506f7274666f6c696f44656c6574656408007c01284964656e7469747949640000e4013c506f7274666f6c696f4e756d626572000114b054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c792072656d6f7665642e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572584d6f7665644265747765656e506f7274666f6c696f7318007c01284964656e7469747949640000dc012c506f7274666f6c696f49640000dc012c506f7274666f6c696f49640000a401185469636b6572000018011c42616c616e636500008001304f7074696f6e3c4d656d6f3e000220f04120746f6b656e20616d6f756e7420686173206265656e206d6f7665642066726f6d206f6e6520706f7274666f6c696f20746f20616e6f746865722e00302320506172616d6574657273302a206f726967696e20444944482a20736f7572636520706f7274666f6c696f5c2a2064657374696e6174696f6e20706f7274666f6c696f382a206173736574207469636b6572782a2061737365742062616c616e6365207468617420776173206d6f76656440506f7274666f6c696f52656e616d65640c007c01284964656e7469747949640000e4013c506f7274666f6c696f4e756d62657200005d030134506f7274666f6c696f4e616d65000318fc54686520706f7274666f6c696f206964656e746966696564207769746820606e756d6020686173206265656e2072656e616d656420746f20606e616d65602e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572402a20706f7274666f6c696f206e616d653855736572506f7274666f6c696f7308007c01284964656e7469747949640000610301945665633c28506f7274666f6c696f4e756d6265722c20506f7274666f6c696f4e616d65293e000414d4416c6c206e6f6e2d64656661756c7420706f7274666f6c696f206e756d6265727320616e64206e616d6573206f662061204449442e00302320506172616d6574657273302a206f726967696e20444944742a20766563746f72206f66206e756d6265722d6e616d6520706169727364506f7274666f6c696f437573746f6469616e4368616e6765640c007c01284964656e7469747949640000dc012c506f7274666f6c696f496400007c01284964656e746974794964000518f4437573746f6479206f66206120706f7274666f6c696f20686173206265656e20676976656e20746f206120646966666572656e74206964656e7469747900302320506172616d6574657273302a206f726967696e20444944382a20706f7274666f6c696f206964642a20706f7274666f6c696f20637573746f6469616e20646964085c4576656e747320666f722074686973206d6f64756c652e005d030c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f696434506f7274666f6c696f4e616d650000040028011c5665633c75383e00006103000002650300650300000408e45d03006903084c70616c6c65745f70726f746f636f6c5f666565205261774576656e7404244163636f756e7449640100010c1846656553657408007c01284964656e746974794964000018011c42616c616e6365000004845468652070726f746f636f6c20666565206f6620616e206f7065726174696f6e2e38436f656666696369656e7453657408007c01284964656e74697479496400006d030120506f73526174696f000104505468652066656520636f656666696369656e742e284665654368617267656408000001244163636f756e744964000018011c42616c616e63650002043046656520636861726765642e085c4576656e747320666f722074686973206d6f64756c652e006d03084c706f6c796d6573685f7072696d69746976657320506f73526174696f0000080010010c753332000010010c753332000071030c4070616c6c65745f7363686564756c65721870616c6c6574144576656e7404045400010c245363686564756c65640800100138543a3a426c6f636b4e756d626572000010010c753332000004905363686564756c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d2043616e63656c65640800100138543a3a426c6f636b4e756d626572000010010c7533320001048c43616e63656c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d28446973706174636865640c007503016c5461736b416464726573733c543a3a426c6f636b4e756d6265723e00007903013c4f7074696f6e3c5665633c75383e3e00003d0101384469737061746368526573756c74000204a84469737061746368656420736f6d65207461736b2e205c5b7461736b2c2069642c20726573756c745c5d04304576656e747320747970652e750300000408101000790304184f7074696f6e04045401280108104e6f6e6500000010536f6d6504002800000100007d03084470616c6c65745f736574746c656d656e74205261774576656e740c184d6f6d656e7401202c426c6f636b4e756d6265720110244163636f756e7449640100014c3056656e75654372656174656410007c01284964656e74697479496400008103011c56656e7565496400008503013056656e756544657461696c7300008903012456656e756554797065000004ec41206e65772076656e756520686173206265656e206372656174656420286469642c2076656e75655f69642c2064657461696c732c2074797065294c56656e756544657461696c73557064617465640c007c01284964656e74697479496400008103011c56656e7565496400008503013056656e756544657461696c730001041501416e206578697374696e672076656e756527732064657461696c7320686173206265656e207570646174656420286469642c2076656e75655f69642c2064657461696c73294056656e756554797065557064617465640c007c01284964656e74697479496400008103011c56656e7565496400008903012456656e756554797065000204fc416e206578697374696e672076656e75652773207479706520686173206265656e207570646174656420286469642c2076656e75655f69642c20747970652948496e737472756374696f6e437265617465641c007c01284964656e74697479496400008103011c56656e7565496400008d030134496e737472756374696f6e496400009103016c536574746c656d656e74547970653c426c6f636b4e756d6265723e0000f801384f7074696f6e3c4d6f6d656e743e0000f801384f7074696f6e3c4d6f6d656e743e0000950301205665633c4c65673e0003088841206e657720696e737472756374696f6e20686173206265656e20637265617465643901286469642c2076656e75655f69642c20696e737472756374696f6e5f69642c20736574746c656d656e745f747970652c2074726164655f646174652c2076616c75655f646174652c206c656773294c496e737472756374696f6e41666669726d65640c007c01284964656e7469747949640000dc012c506f7274666f6c696f496400008d030134496e737472756374696f6e49640004040501416e20696e737472756374696f6e20686173206265656e2061666669726d656420286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964295041666669726d6174696f6e57697468647261776e0c007c01284964656e7469747949640000dc012c506f7274666f6c696f496400008d030134496e737472756374696f6e49640005040901416e2061666669726d6174696f6e20686173206265656e2077697468647261776e20286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964294c496e737472756374696f6e52656a656374656408007c01284964656e74697479496400008d030134496e737472756374696f6e4964000604d8416e20696e737472756374696f6e20686173206265656e2072656a656374656420286469642c20696e737472756374696f6e5f6964293852656365697074436c61696d656418007c01284964656e74697479496400008d030134496e737472756374696f6e496400009d0301144c65674964000020010c75363400000001244163636f756e7449640000a103013c526563656970744d657461646174610007047d0141207265636569707420686173206265656e20636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e65722c2072656365697074206d6574616461746129585265636569707456616c69646974794368616e67656410007c01284964656e74697479496400000001244163636f756e744964000020010c75363400001d010110626f6f6c0008040d0141207265636569707420686173206265656e20696e76616c69646174656420286469642c207369676e65722c20726563656970745f7569642c2076616c6964697479294052656365697074556e636c61696d656414007c01284964656e74697479496400008d030134496e737472756374696f6e496400009d0301144c65674964000020010c75363400000001244163636f756e7449640009043d0141207265636569707420686173206265656e20756e636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e6572293856656e756546696c746572696e670c007c01284964656e7469747949640000a401185469636b657200001d010110626f6f6c000a04690156656e75652066696c746572696e6720686173206265656e20656e61626c6564206f722064697361626c656420666f722061207469636b657220286469642c207469636b65722c2066696c746572696e675f656e61626c6564293456656e756573416c6c6f7765640c007c01284964656e7469747949640000a401185469636b65720000a50301305665633c56656e756549643e000b04dc56656e75657320616464656420746f20616c6c6f77206c69737420286469642c207469636b65722c207665633c76656e75655f69643e293456656e756573426c6f636b65640c007c01284964656e7469747949640000a401185469636b65720000a50301305665633c56656e756549643e000c04dc56656e75657320616464656420746f20626c6f636b206c69737420286469642c207469636b65722c207665633c76656e75655f69643e29484c65674661696c6564457865637574696f6e0c007c01284964656e74697479496400008d030134496e737472756374696f6e496400009d0301144c65674964000d04dc457865637574696f6e206f662061206c6567206661696c656420286469642c20696e737472756374696f6e5f69642c206c65675f69642944496e737472756374696f6e4661696c656408007c01284964656e74697479496400008d030134496e737472756374696f6e4964000e04c8496e737472756374696f6e206661696c656420657865637574696f6e20286469642c20696e737472756374696f6e5f6964294c496e737472756374696f6e457865637574656408007c01284964656e74697479496400008d030134496e737472756374696f6e4964000f04d8496e737472756374696f6e206578656375746564207375636365737366756c6c79286469642c20696e737472756374696f6e5f6964294456656e7565556e617574686f72697a65640c007c01284964656e7469747949640000a401185469636b657200008103011c56656e75654964001004010156656e7565206e6f742070617274206f662074686520746f6b656e277320616c6c6f77206c69737420286469642c205469636b65722c2076656e75655f696429405363686564756c696e674661696c6564040064013444697370617463684572726f72001104805363686564756c696e67206f6620696e737472756374696f6e206661696c732e58496e737472756374696f6e52657363686564756c656408007c01284964656e74697479496400008d030134496e737472756374696f6e49640012086c496e737472756374696f6e2069732072657363686564756c65642e702863616c6c6572204449442c20696e737472756374696f6e5f696429085c4576656e747320666f722074686973206d6f64756c652e008103084470616c6c65745f736574746c656d656e741c56656e756549640000040020010c75363400008503084470616c6c65745f736574746c656d656e743056656e756544657461696c730000040028011c5665633c75383e00008903084470616c6c65745f736574746c656d656e742456656e756554797065000110144f7468657200000030446973747269627574696f6e0001000c53746f0002002045786368616e6765000300008d03084470616c6c65745f736574746c656d656e7434496e737472756374696f6e49640000040020010c75363400009103084470616c6c65745f736574746c656d656e7438536574746c656d656e7454797065042c426c6f636b4e756d626572011001084c536574746c654f6e41666669726d6174696f6e00000034536574746c654f6e426c6f636b040010012c426c6f636b4e756d6265720001000095030000029903009903084470616c6c65745f736574746c656d656e740c4c6567000010011066726f6ddc012c506f7274666f6c696f4964000108746fdc012c506f7274666f6c696f49640001146173736574a401185469636b6572000118616d6f756e7418011c42616c616e636500009d03084470616c6c65745f736574746c656d656e74144c656749640000040020010c7536340000a103084470616c6c65745f736574746c656d656e743c526563656970744d657461646174610000040028011c5665633c75383e0000a503000002810300a9031064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732873746174697374696373144576656e74000110505472616e736665724d616e6167657241646465640c007c01284964656e7469747949640000a401185469636b65720000ad03013c5472616e736665724d616e616765720000048441206e6577207472616e73666572206d616e61676572207761732061646465642e585472616e736665724d616e6167657252656d6f7665640c007c01284964656e7469747949640000a401185469636b65720000ad03013c5472616e736665724d616e61676572000104a4416e206578697374696e67207472616e73666572206d616e61676572207761732072656d6f7665642e3c4578656d7074696f6e73416464656410007c01284964656e7469747949640000a401185469636b65720000ad03013c5472616e736665724d616e616765720000310101305665633c53636f706549643e000204b06053636f706549646073207765726520616464656420746f20746865206578656d7074696f6e206c6973742e444578656d7074696f6e7352656d6f76656410007c01284964656e7469747949640000a401185469636b65720000ad03013c5472616e736665724d616e616765720000310101305665633c53636f706549643e000304c06053636f70654964607320776572652072656d6f7665642066726f6d20746865206578656d7074696f6e206c6973742e085c4576656e747320666f722074686973206d6f64756c652e00ad030c4c706f6c796d6573685f7072696d69746976657328737461746973746963733c5472616e736665724d616e6167657200010850436f756e745472616e736665724d616e61676572040020011c436f756e7465720000006450657263656e746167655472616e736665724d616e616765720400b103012850657263656e7461676500010000b1030c4c706f6c796d6573685f7072696d69746976657328737461746973746963733c4861736861626c655065726d696c6c000004004d02015873705f61726974686d657469633a3a5065726d696c6c0000b503082870616c6c65745f73746f205261774576656e7404184d6f6d656e74012001184446756e647261697365724372656174656410007c01284964656e7469747949640000b903013046756e6472616973657249640000bd03013846756e647261697365724e616d650000c103014846756e647261697365723c4d6f6d656e743e0000088841206e65772066756e6472616973657220686173206265656e20637265617465642efc284167656e74204449442c2066756e647261697365722069642c2066756e64726169736572206e616d652c2066756e647261697365722064657461696c732920496e76657374656418007c01284964656e7469747949640000b903013046756e6472616973657249640000a401185469636b65720000a401185469636b6572000018011c42616c616e6365000018011c42616c616e63650001089c416e20696e766573746f7220696e76657374656420696e207468652066756e647261697365722e850128496e766573746f722c2066756e647261697365725f69642c206f66666572696e6720746f6b656e2c20726169736520746f6b656e2c206f66666572696e675f746f6b656e5f616d6f756e742c2072616973655f746f6b656e5f616d6f756e74294046756e6472616973657246726f7a656e08007c01284964656e7469747949640000b903013046756e64726169736572496400020874412066756e6472616973657220686173206265656e2066726f7a656e2e68284167656e74204449442c2066756e64726169736572206964294846756e64726169736572556e66726f7a656e08007c01284964656e7469747949640000b903013046756e6472616973657249640003087c412066756e6472616973657220686173206265656e20756e66726f7a656e2e68284167656e74204449442c2066756e64726169736572206964296046756e6472616973657257696e646f774d6f64696669656418003d0201204576656e744469640000b903013046756e64726169736572496400002001184d6f6d656e740000f801384f7074696f6e3c4d6f6d656e743e00002001184d6f6d656e740000f801384f7074696f6e3c4d6f6d656e743e00040898412066756e647261697365722077696e646f7720686173206265656e206d6f6469666965642e0901284167656e74204449442c2066756e647261697365722069642c206f6c645f73746172742c206f6c645f656e642c206e65775f73746172742c206e65775f656e64294046756e64726169736572436c6f73656408007c01284964656e7469747949640000b903013046756e64726169736572496400050878412066756e6472616973657220686173206265656e2073746f707065642e68284167656e74204449442c2066756e6472616973657220696429085c4576656e747320666f722074686973206d6f64756c652e00b903082870616c6c65745f73746f3046756e6472616973657249640000040020010c7536340000bd03082870616c6c65745f73746f3846756e647261697365724e616d650000040028011c5665633c75383e0000c103082870616c6c65745f73746f2846756e6472616973657204184d6f6d656e740120002c011c63726561746f727c01284964656e7469747949640001486f66666572696e675f706f7274666f6c696fdc012c506f7274666f6c696f49640001386f66666572696e675f6173736574a401185469636b657200014472616973696e675f706f7274666f6c696fdc012c506f7274666f6c696f496400013472616973696e675f6173736574a401185469636b65720001147469657273c503014c5665633c46756e64726169736572546965723e00012076656e75655f69648103011c56656e7565496400011473746172742001184d6f6d656e7400010c656e64f801384f7074696f6e3c4d6f6d656e743e000118737461747573cd03014046756e647261697365725374617475730001486d696e696d756d5f696e766573746d656e7418011c42616c616e63650000c503000002c90300c903082870616c6c65745f73746f3846756e647261697365725469657200000c0114746f74616c18011c42616c616e6365000114707269636518011c42616c616e636500012472656d61696e696e6718011c42616c616e63650000cd03082870616c6c65745f73746f4046756e64726169736572537461747573000110104c6976650000001846726f7a656e00010018436c6f7365640002002c436c6f7365644561726c7900030000d103083c70616c6c65745f7472656173757279205261774576656e74041c42616c616e63650118010850547265617375727944697362757273656d656e740c007c01284964656e74697479496400007c01284964656e746974794964000018011c42616c616e63650000088844697362757273656d656e7420746f206120746172676574204964656e746974792e6428746172676574206964656e746974792c20616d6f756e74295454726561737572795265696d62757273656d656e7408007c01284964656e746974794964000018011c42616c616e63650001045c5472656173757279207265696d62757273656d656e742e085c4576656e747320666f722074686973206d6f64756c652e00d503083870616c6c65745f7574696c697479144576656e7400010c404261746368496e7465727275707465640800d903012c4576656e74436f756e74730000dd03011c4572726f72417400000cac4261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792edc496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f72206561636820646973706174636820616e64f474686520696e646578206f6620746865206669727374206661696c696e672064697370617463682061732077656c6c20617320746865206572726f722e5442617463684f7074696d69737469634661696c65640800d903012c4576656e74436f756e74730000e10301305665633c4572726f7241743e00010cac4261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792ecc496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c20616e6429016120766563746f72206f6620616e79206661696c65642064697370617463686573207769746820746865697220696e646963657320616e64206173736f636961746564206572726f722e384261746368436f6d706c657465640400d903012c4576656e74436f756e7473000208c84261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722ed0496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682064697370617463682e0c5c4576656e747320666f722074686973206d6f64756c652e00304576656e747320747970652ed9030000021000dd0300000408106400e103000002dd0300e5031064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731062617365144576656e740001043c556e65787065637465644572726f720400e90301544f7074696f6e3c44697370617463684572726f723e000004e4416e20756e6578706563746564206572726f722068617070656e656420746861742073686f756c6420626520696e766573746967617465642e085c4576656e747320666f722074686973206d6f64756c652e00e90304184f7074696f6e04045401640108104e6f6e6500000010536f6d650400640000010000ed031064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974733c65787465726e616c5f6167656e7473144576656e740001143047726f75704372656174656410003d0201204576656e744469640000a401185469636b6572000019010110414749640000b4015045787472696e7369635065726d697373696f6e7300000c6c416e204167656e742047726f75702077617320637265617465642e00d02843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773207065726d697373696f6e73295c47726f75705065726d697373696f6e735570646174656410003d0201204576656e744469640000a401185469636b6572000019010110414749640000b4015045787472696e7369635065726d697373696f6e7300010ca4416e204167656e742047726f75702773207065726d697373696f6e732077617320757064617465642e00e02843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773206e6577207065726d697373696f6e7329284167656e7441646465640c003d0201204576656e744469640000a401185469636b65720000150101284167656e7447726f757000020c4c416e206167656e74207761732061646465642e00c42843616c6c65722f4167656e74204449442c204167656e742773207469636b65722c204167656e7427732067726f757029304167656e7452656d6f7665640c003d0201204576656e744469640000a401185469636b657200007c01284964656e74697479496400030c54416e206167656e74207761732072656d6f7665642e00a42843616c6c6572204449442c204167656e742773207469636b65722c204167656e74277320444944293047726f75704368616e67656410003d0201204576656e744469640000a401185469636b657200007c01284964656e7469747949640000150101284167656e7447726f757000040c74416e206167656e7427732067726f757020776173206368616e6765642e0015012843616c6c6572204449442c204167656e742773207469636b65722c204167656e742773204449442c20546865206e65772067726f7570206f6620746865206167656e7429085c4576656e747320666f722074686973206d6f64756c652e00f1031064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731c72656c61796572205261774576656e7404244163636f756e744964010001104c417574686f72697a6564506179696e674b657914003d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000020010c75363400000ccc417574686f72697a6174696f6e20676976656e20666f722060706179696e675f6b65796020746f2060757365725f6b6579602e0001012843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20496e697469616c20504f4c5958206c696d69742c204175746820494429444163636570746564506179696e674b65790c003d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e74496400010c50416363657074656420706179696e67206b65792e00882843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294052656d6f766564506179696e674b65790c003d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e74496400020c4c52656d6f76656420706179696e67206b65792e00882843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294455706461746564506f6c79784c696d697414003d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000018011c42616c616e636500030c505570646174656420706f6c7978206c696d69742e0011012843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20504f4c5958206c696d69742c206f6c642072656d61696e696e6720504f4c595829085c4576656e747320666f722074686973206d6f64756c652e00f503083870616c6c65745f72657761726473205261774576656e7404244163636f756e744964010001044049746e526577617264436c61696d656408000001244163636f756e744964000018011c42616c616e63650000045c49746e207265776172642077617320636c61696d65642e085c4576656e747320666f722074686973206d6f64756c652e00f903084470616c6c65745f746573745f7574696c73205261774576656e7404244163636f756e7449640100010c584d6f636b496e766573746f725549444372656174656408007c01284964656e74697479496400002101012c496e766573746f725569640000080d0141206e6577206d6f636b65642060496e766573746f725569646020686173206265656e206372656174656420666f722074686520676976656e204964656e746974792e7428546172676574204449442c204e657720496e766573746f72556964292444696453746174757308007c01284964656e74697479496400000001244163636f756e744964000108e4456d6974732074686520604964656e7469747949646020616e642074686520604163636f756e74496460206f66207468652063616c6c65722e702843616c6c6572204449442c2043616c6c6572206163636f756e7429244364645374617475730c007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e74496400001d010110626f6f6c00020c550153686f777320746865206044494460206173736f63696174656420746f2074686520604163636f756e744964602c20616e64206120666c616720696e646963617465732069662074686174204449442068617320614076616c69642043444420636c61696d2ed828546172676574204449442c20546172676574204163636f756e742c20612076616c69642043444420636c61696d2065786973747329085c4576656e747320666f722074686973206d6f64756c652e00fd0308306672616d655f73797374656d14506861736500010c384170706c7945787472696e736963040010010c7533320000003046696e616c697a6174696f6e00010038496e697469616c697a6174696f6e00020000010400000224000504000002750300090408306672616d655f73797374656d584c61737452756e74696d6555706772616465496e666f0000080130737065635f76657273696f6e0d04014c636f6465633a3a436f6d706163743c7533323e000124737065635f6e616d651104016473705f72756e74696d653a3a52756e74696d65537472696e6700000d0400000610001104000005020015040c306672616d655f73797374656d1870616c6c65741043616c6c0404540001282866696c6c5f626c6f636b040114726174696f9501011c50657262696c6c00000405014120646973706174636820746861742077696c6c2066696c6c2074686520626c6f636b2077656967687420757020746f2074686520676976656e20726174696f2e1872656d61726b04011872656d61726b28011c5665633c75383e000114684d616b6520736f6d65206f6e2d636861696e2072656d61726b2e002823203c7765696768743e202d20604f283129602c23203c2f7765696768743e387365745f686561705f7061676573040114706167657320010c753634000224f853657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e002823203c7765696768743e202d20604f28312960482d20312073746f726167652077726974652e602d2042617365205765696768743a20312e34303520c2b5735c2d203120777269746520746f20484541505f50414745533c2d203120646967657374206974656d2c23203c2f7765696768743e207365745f636f6465040110636f646528011c5665633c75383e0003306453657420746865206e65772072756e74696d6520636f64652e002823203c7765696768743e31012d20604f2843202b2053296020776865726520604360206c656e677468206f662060636f64656020616e642060536020636f6d706c6578697479206f66206063616e5f7365745f636f64656045012d20312063616c6c20746f206063616e5f7365745f636f6465603a20604f28532960202863616c6c73206073705f696f3a3a6d6973633a3a72756e74696d655f76657273696f6e60207768696368206973342020657870656e73697665292e842d20312073746f726167652077726974652028636f64656320604f28432960292e402d203120646967657374206974656d2e282d2031206576656e742e4d0154686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652c206275742067656e6572616c6c7920746869732069732076657279b8657870656e736976652e2057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e2c23203c2f7765696768743e5c7365745f636f64655f776974686f75745f636865636b73040110636f646528011c5665633c75383e000424190153657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e002823203c7765696768743e8c2d20604f2843296020776865726520604360206c656e677468206f662060636f646560842d20312073746f726167652077726974652028636f64656320604f28432960292e402d203120646967657374206974656d2e282d2031206576656e742e550154686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652e2057652077696c6c207472656174207468697320617320612066756c6c48626c6f636b2e2023203c2f7765696768743e5c7365745f6368616e6765735f747269655f636f6e66696704014c6368616e6765735f747269655f636f6e6669674001804f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e0005289c53657420746865206e6577206368616e676573207472696520636f6e66696775726174696f6e2e002823203c7765696768743e202d20604f28312960ac2d20312073746f72616765207772697465206f722064656c6574652028636f64656320604f28312960292ed42d20312063616c6c20746f20606465706f7369745f6c6f67603a20557365732060617070656e6460204150492c20736f204f283129602d2042617365205765696768743a20372e32313820c2b573302d204442205765696768743aa4202020202d205772697465733a204368616e67657320547269652c2053797374656d204469676573742c23203c2f7765696768743e2c7365745f73746f726167650401146974656d73190401345665633c4b657956616c75653e0006206853657420736f6d65206974656d73206f662073746f726167652e002823203c7765696768743e902d20604f2849296020776865726520604960206c656e677468206f6620606974656d7360782d206049602073746f72616765207772697465732028604f28312960292e702d2042617365205765696768743a20302e353638202a206920c2b573642d205772697465733a204e756d626572206f66206974656d732c23203c2f7765696768743e306b696c6c5f73746f726167650401106b657973210401205665633c4b65793e000720744b696c6c20736f6d65206974656d732066726f6d2073746f726167652e002823203c7765696768743ef82d20604f28494b296020776865726520604960206c656e677468206f6620606b6579736020616e6420604b60206c656e677468206f66206f6e65206b6579602d206049602073746f726167652064656c6574696f6e732e6c2d2042617365205765696768743a202e333738202a206920c2b573642d205772697465733a204e756d626572206f66206974656d732c23203c2f7765696768743e2c6b696c6c5f70726566697808011870726566697828010c4b657900011c7375626b65797310010c75333200082c11014b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e0039012a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e6465723d0174686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e002823203c7765696768743ed82d20604f285029602077686572652060506020616d6f756e74206f66206b657973207769746820707265666978206070726566697860602d206050602073746f726167652064656c6574696f6e732e702d2042617365205765696768743a20302e383334202a205020c2b5737c2d205772697465733a204e756d626572206f66207375626b657973202b20312c23203c2f7765696768743e4472656d61726b5f776974685f6576656e7404011872656d61726b28011c5665633c75383e000918a44d616b6520736f6d65206f6e2d636861696e2072656d61726b20616e6420656d6974206576656e742e002823203c7765696768743eb42d20604f28622960207768657265206220697320746865206c656e677468206f66207468652072656d61726b2e282d2031206576656e742e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e19040000021d04001d04000004082828002104000002280025040c306672616d655f73797374656d186c696d69747330426c6f636b5765696768747300000c0128626173655f626c6f636b2001185765696768740001246d61785f626c6f636b2001185765696768740001247065725f636c617373290401845065724469737061746368436c6173733c57656967687473506572436c6173733e000029040c346672616d655f737570706f72741c77656967687473405065724469737061746368436c617373040454012d04000c01186e6f726d616c2d0401045400012c6f7065726174696f6e616c2d040104540001246d616e6461746f72792d0401045400002d040c306672616d655f73797374656d186c696d6974733c57656967687473506572436c6173730000100138626173655f65787472696e7369632001185765696768740001346d61785f65787472696e736963f801384f7074696f6e3c5765696768743e0001246d61785f746f74616cf801384f7074696f6e3c5765696768743e0001207265736572766564f801384f7074696f6e3c5765696768743e000031040c306672616d655f73797374656d186c696d6974732c426c6f636b4c656e677468000004010c6d6178350401545065724469737061746368436c6173733c7533323e000035040c346672616d655f737570706f72741c77656967687473405065724469737061746368436c6173730404540110000c01186e6f726d616c1001045400012c6f7065726174696f6e616c100104540001246d616e6461746f727910010454000039040c346672616d655f737570706f72741c776569676874733c52756e74696d654462576569676874000008011072656164200118576569676874000114777269746520011857656967687400003d04082873705f76657273696f6e3852756e74696d6556657273696f6e00001c0124737065635f6e616d651104013452756e74696d65537472696e67000124696d706c5f6e616d651104013452756e74696d65537472696e67000144617574686f72696e675f76657273696f6e10010c753332000130737065635f76657273696f6e10010c753332000130696d706c5f76657273696f6e10010c753332000110617069734104011c4170697356656300014c7472616e73616374696f6e5f76657273696f6e10010c75333200004104040c436f77040454014504000400450400000045040000024904004904000004084d0410004d0400000308000000080051040c306672616d655f73797374656d1870616c6c6574144572726f720404540001143c496e76616c6964537065634e616d650000081101546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e685370656356657273696f6e4e65656473546f496e63726561736500010841015468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e00020cec4661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e0009014569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e4c4e6f6e44656661756c74436f6d706f73697465000304fc537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e3c4e6f6e5a65726f526566436f756e74000404350154686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e046c4572726f7220666f72207468652053797374656d2070616c6c6574550410346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e646564566563080454015904045300000400610401185665633c543e00005904000004085d0420005d040c4473705f636f6e73656e7375735f626162650c617070185075626c696300000400c101013c737232353531393a3a5075626c6963000061040000025904006504084873705f636f6e73656e7375735f736c6f747310536c6f740000040020010c753634000069040c4473705f636f6e73656e7375735f626162651c64696765737473504e657874436f6e66696744657363726970746f72000104085631080104636d040128287536342c2075363429000134616c6c6f7765645f736c6f747371040130416c6c6f776564536c6f7473000100006d04000004082020007104084473705f636f6e73656e7375735f6261626530416c6c6f776564536c6f747300010c305072696d617279536c6f7473000000745072696d617279416e645365636f6e64617279506c61696e536c6f74730001006c5072696d617279416e645365636f6e64617279565246536c6f747300020000750410346672616d655f737570706f72741c73746f726167652c626f756e6465645f76656328426f756e6465645665630804540104045300000400790401185665633c543e0000790400000204007d0404184f7074696f6e04045401040108104e6f6e6500000010536f6d6504000400000100008104084473705f636f6e73656e7375735f62616265584261626545706f6368436f6e66696775726174696f6e0000080104636d040128287536342c2075363429000134616c6c6f7765645f736c6f747371040130416c6c6f776564536c6f7473000085040c2c70616c6c65745f626162651870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f6689040184426f783c45717569766f636174696f6e50726f6f663c543a3a4865616465723e3e00013c6b65795f6f776e65725f70726f6f6695040140543a3a4b65794f776e657250726f6f6600001009015265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667905017468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f660d01616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c306265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f6689040184426f783c45717569766f636174696f6e50726f6f663c543a3a4865616465723e3e00013c6b65795f6f776e65725f70726f6f6695040140543a3a4b65794f776e657250726f6f6600012009015265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667905017468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f660d01616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c306265207265706f727465642e0d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e48706c616e5f636f6e6669675f6368616e6765040118636f6e666967690401504e657874436f6e66696744657363726970746f720002105d01506c616e20616e2065706f636820636f6e666967206368616e67652e205468652065706f636820636f6e666967206368616e6765206973207265636f7264656420616e642077696c6c20626520656e6163746564206f6e5101746865206e6578742063616c6c20746f2060656e6163745f65706f63685f6368616e6765602e2054686520636f6e6669672077696c6c20626520616374697661746564206f6e652065706f63682061667465722e59014d756c7469706c652063616c6c7320746f2074686973206d6574686f642077696c6c207265706c61636520616e79206578697374696e6720706c616e6e656420636f6e666967206368616e6765207468617420686164546e6f74206265656e20656e6163746564207965742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e8904084873705f636f6e73656e7375735f736c6f74734445717569766f636174696f6e50726f6f660818486561646572018d04084964015d04001001206f6666656e6465725d0401084964000110736c6f7465040110536c6f7400013066697273745f6865616465728d0401184865616465720001347365636f6e645f6865616465728d04011848656164657200008d04102873705f72756e74696d651c67656e65726963186865616465721848656164657208184e756d626572011010486173680191040014012c706172656e745f68617368240130486173683a3a4f75747075740001186e756d6265720d0401184e756d62657200012873746174655f726f6f74240130486173683a3a4f757470757400013c65787472696e736963735f726f6f74240130486173683a3a4f75747075740001186469676573742c01504469676573743c486173683a3a4f75747075743e000091040c2873705f72756e74696d65187472616974732c426c616b6554776f323536000000009504082873705f73657373696f6e3c4d656d6265727368697050726f6f6600000c011c73657373696f6e10013053657373696f6e496e646578000128747269655f6e6f646573210401305665633c5665633c75383e3e00013c76616c696461746f725f636f756e7410013856616c696461746f72436f756e74000099040c2c70616c6c65745f626162651870616c6c6574144572726f7204045400010c60496e76616c696445717569766f636174696f6e50726f6f660000043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c69644b65794f776e65727368697050726f6f66000104310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400020415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a0909099d040c4070616c6c65745f74696d657374616d701870616c6c65741043616c6c0404540001040c73657404010c6e6f77a1040124543a3a4d6f6d656e7400004054536574207468652063757272656e742074696d652e005501546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6ed470686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e0041015468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e742073706563696669656420627940604d696e696d756d506572696f64602e00d4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e002823203c7765696768743e31012d20604f2831296020284e6f7465207468617420696d706c656d656e746174696f6e73206f6620604f6e54696d657374616d7053657460206d75737420616c736f20626520604f283129602961012d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202862656361757365206f6620604469645570646174653a3a74616b656020696e402020606f6e5f66696e616c697a656029d42d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f736574602e204d75737420626520604f283129602e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ea1040000062000a5040000040c00181d0100a9040c3870616c6c65745f696e64696365731870616c6c65741043616c6c04045400011414636c61696d040114696e64657810013c543a3a4163636f756e74496e6465780000489841737369676e20616e2070726576696f75736c7920756e61737369676e656420696e6465782e00dc5061796d656e743a20604465706f736974602069732072657365727665642066726f6d207468652073656e646572206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e00f02d2060696e646578603a2074686520696e64657820746f20626520636c61696d65642e2054686973206d757374206e6f7420626520696e207573652e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e602d204f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e207472616e7366657208010c6e6577000130543a3a4163636f756e744964000114696e64657810013c543a3a4163636f756e74496e6465780001505d0141737369676e20616e20696e64657820616c7265616479206f776e6564206279207468652073656e64657220746f20616e6f74686572206163636f756e742e205468652062616c616e6365207265736572766174696f6eb86973206566666563746976656c79207472616e7366657272656420746f20746865206e6577206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0025012d2060696e646578603a2074686520696e64657820746f2062652072652d61737369676e65642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e5d012d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e642d204f6e65207472616e73666572206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743ae02020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e7429e42020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e74292c23203c2f7765696768743e1066726565040114696e64657810013c543a3a4163636f756e74496e646578000248944672656520757020616e20696e646578206f776e6564206279207468652073656e6465722e005d015061796d656e743a20416e792070726576696f7573206465706f73697420706c6163656420666f722074686520696e64657820697320756e726573657276656420696e207468652073656e646572206163636f756e742e005501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206f776e2074686520696e6465782e000d012d2060696e646578603a2074686520696e64657820746f2062652066726565642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e0084456d6974732060496e646578467265656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e602d204f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e38666f7263655f7472616e736665720c010c6e6577000130543a3a4163636f756e744964000114696e64657810013c543a3a4163636f756e74496e646578000118667265657a651d010110626f6f6c0003545501466f72636520616e20696e64657820746f20616e206163636f756e742e205468697320646f65736e277420726571756972652061206465706f7369742e2049662074686520696e64657820697320616c7265616479e868656c642c207468656e20616e79206465706f736974206973207265696d62757273656420746f206974732063757272656e74206f776e65722e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e00a42d2060696e646578603a2074686520696e64657820746f206265202872652d2961737369676e65642e5d012d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e41012d2060667265657a65603a2069662073657420746f206074727565602c2077696c6c20667265657a652074686520696e64657820736f2069742063616e6e6f74206265207472616e736665727265642e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e782d20557020746f206f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743af42020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e657229f82020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e6572292c23203c2f7765696768743e18667265657a65040114696e64657810013c543a3a4163636f756e74496e6465780004484101467265657a6520616e20696e64657820736f2069742077696c6c20616c7761797320706f696e7420746f207468652073656e646572206163636f756e742e205468697320636f6e73756d657320746865206465706f7369742e005901546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d757374206861766520616c6e6f6e2d66726f7a656e206163636f756e742060696e646578602e00ac2d2060696e646578603a2074686520696e64657820746f2062652066726f7a656e20696e20706c6163652e0088456d6974732060496e64657846726f7a656e60206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e702d20557020746f206f6e6520736c617368206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ead040c3870616c6c65745f696e64696365731870616c6c6574144572726f720404540001142c4e6f7441737369676e65640000048c54686520696e64657820776173206e6f7420616c72656164792061737369676e65642e204e6f744f776e6572000104a454686520696e6465782069732061737369676e656420746f20616e6f74686572206163636f756e742e14496e5573650002047054686520696e64657820776173206e6f7420617661696c61626c652e2c4e6f745472616e73666572000304c854686520736f7572636520616e642064657374696e6174696f6e206163636f756e747320617265206964656e746963616c2e245065726d616e656e74000404d054686520696e646578206973207065726d616e656e7420616e64206d6179206e6f742062652066726565642f6368616e6765642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909b104000002b50400b504084470616c6c65745f617574686f727368697038556e636c65456e7472794974656d0c2c426c6f636b4e756d62657201101048617368012418417574686f72010001083c496e636c7573696f6e486569676874040010012c426c6f636b4e756d62657200000014556e636c6508002401104861736800000d0101384f7074696f6e3c417574686f723e00010000b9040c4470616c6c65745f617574686f72736869701870616c6c65741043616c6c040454000104287365745f756e636c65730401286e65775f756e636c6573bd0401385665633c543a3a4865616465723e0000046050726f76696465206120736574206f6620756e636c65732e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ebd040000028d0400c1040c4470616c6c65745f617574686f72736869701870616c6c6574144572726f7204045400011c48496e76616c6964556e636c65506172656e740000048854686520756e636c6520706172656e74206e6f7420696e2074686520636861696e2e40556e636c6573416c726561647953657400010480556e636c657320616c72656164792073657420696e2074686520626c6f636b2e34546f6f4d616e79556e636c657300020440546f6f206d616e7920756e636c65732e3047656e65736973556e636c650003045454686520756e636c652069732067656e657369732e30546f6f48696768556e636c650004047c54686520756e636c6520697320746f6f206869676820696e20636861696e2e50556e636c65416c7265616479496e636c756465640005047854686520756e636c6520697320616c726561647920696e636c756465642e204f6c64556e636c65000604b454686520756e636c652069736e277420726563656e7420656e6f75676820746f20626520696e636c756465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909c504000002c90400c904083c70616c6c65745f62616c616e6365732c42616c616e63654c6f636b041c42616c616e63650118000c010869644d0401384c6f636b4964656e746966696572000118616d6f756e7418011c42616c616e636500011c726561736f6e73cd04011c526561736f6e730000cd041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e6365731c526561736f6e7300010c0c466565000000104d6973630001000c416c6c00020000d104083c70616c6c65745f62616c616e6365731043616c6c040454000118207472616e7366657208011064657374d504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565d101011c42616c616e6365000058d45472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e000501607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e1d0149742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e001501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e002823203c7765696768743e2d012d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72c82020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e65012d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e004852656c617465642066756e6374696f6e733a004d0120202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e290120202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c206361757365d0202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e842d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d41012d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429dc2d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e487472616e736665725f776974685f6d656d6f0c011064657374d504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565d101011c42616c616e63650001106d656d6f8001304f7074696f6e3c4d656d6f3e000120fc5472616e7366657220746865206e61746976652063757272656e63792077697468207468652068656c70206f66206964656e74696669657220737472696e67ec746869732066756e6374696f6e616c6974792063616e2068656c7020746f20646966666572656e746961746520746865207472616e73666572732e002823203c7765696768743e41012d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429dc2d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e906465706f7369745f626c6f636b5f7265776172645f726573657276655f62616c616e636504011476616c7565d101011c42616c616e6365000204dc4d6f766520736f6d6520504f4c59582066726f6d2062616c616e6365206f662073656c6620746f2062616c616e6365206f66204252522e2c7365745f62616c616e63650c010c77686fd504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263650001206e65775f66726565d101011c42616c616e63650001306e65775f7265736572766564d101011c42616c616e636500031890536574207468652062616c616e636573206f66206120676976656e206163636f756e742e001d01546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c0501616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e00b0546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e38666f7263655f7472616e736665720c0118736f75726365d504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011064657374d504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565d101011c42616c616e636500041c4d0145786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d6179206265287370656369666965642e002823203c7765696768743e3d012d2053616d65206173207472616e736665722c20627574206164646974696f6e616c207265616420616e6420777269746520626563617573652074686520736f75726365206163636f756e742069738c20206e6f7420617373756d656420746f20626520696e20746865206f7665726c61792e2c23203c2f7765696768743e506275726e5f6163636f756e745f62616c616e6365040118616d6f756e7418011c42616c616e636500050429014275726e732074686520676976656e20616d6f756e74206f6620746f6b656e732066726f6d207468652063616c6c6572277320667265652c20756e6c6f636b65642062616c616e63652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ed5040c2873705f72756e74696d65306d756c746961646472657373304d756c74694164647265737308244163636f756e7449640100304163636f756e74496e6465780110011408496404000001244163636f756e74496400000014496e64657804000d0401304163636f756e74496e6465780001000c526177040028011c5665633c75383e0002002441646472657373333204000401205b75383b2033325d000300244164647265737332300400fd0101205b75383b2032305d00040000d904083c70616c6c65745f62616c616e636573144572726f72040454000114544c69717569646974795265737472696374696f6e73000004c44163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c204f766572666c6f7700010470476f7420616e206f766572666c6f7720616674657220616464696e674c496e73756666696369656e7442616c616e63650002047442616c616e636520746f6f206c6f7720746f2073656e642076616c7565484578697374656e7469616c4465706f736974000304e856616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369744852656365697665724364644d697373696e6700040488526563656976657220646f6573206e6f74206861766520612076616c69642043444400dd040c3473705f61726974686d657469632c66697865645f706f696e742446697865645531323800000400180110753132380000e104086870616c6c65745f7472616e73616374696f6e5f7061796d656e742052656c6561736573000108245631416e6369656e7400000008563200010000e504000002e90400e9040c346672616d655f737570706f72741c7765696768747358576569676874546f466565436f656666696369656e74041c42616c616e6365011800100134636f6566665f696e746567657218011c42616c616e6365000128636f6566665f667261639501011c50657262696c6c0001206e656761746976651d010110626f6f6c00011864656772656508010875380000ed040c4c706f6c796d6573685f7072696d697469766573206964656e74697479204964656e7469747904244163636f756e74496401000008012c7072696d6172795f6b65790001244163636f756e7449640001387365636f6e646172795f6b657973f10401705665633c5365636f6e646172794b65793c4163636f756e7449643e3e0000f104000002f50400f5040c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579305365636f6e646172794b657904244163636f756e7449640100000801187369676e65729801505369676e61746f72793c4163636f756e7449643e00012c7065726d697373696f6e739c012c5065726d697373696f6e730000f90400000408fd04010500fd040c3c70616c6c65745f6964656e746974791474797065732c436c61696d3173744b657900000801187461726765747c01284964656e746974794964000128636c61696d5f747970659d020124436c61696d54797065000001050c3c70616c6c65745f6964656e746974791474797065732c436c61696d326e644b657900000801186973737565727c01284964656e74697479496400011473636f7065050501344f7074696f6e3c53636f70653e0000050504184f7074696f6e0404540101010108104e6f6e6500000010536f6d650400010100000100000905000004089820000d050c4c706f6c796d6573685f7072696d69746976657334617574686f72697a6174696f6e34417574686f72697a6174696f6e08244163636f756e7449640100184d6f6d656e74012000100148617574686f72697a6174696f6e5f6461746111010170417574686f72697a6174696f6e446174613c4163636f756e7449643e000134617574686f72697a65645f62797c01284964656e746974794964000118657870697279f801384f7074696f6e3c4d6f6d656e743e00011c617574685f696420010c75363400001105000004087c20001505083c70616c6c65745f6964656e746974791c56657273696f6e00000400080108753800001905083c70616c6c65745f6964656e746974791043616c6c040454000158406364645f72656769737465725f6469640801387461726765745f6163636f756e74000130543a3a4163636f756e7449640001387365636f6e646172795f6b657973f104017c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e00002cb8526567697374657220607461726765745f6163636f756e746020776974682061206e6577204964656e746974792e002423204661696c75726545012d20606f726967696e602068617320746f206265206120616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792ef42d2045787465726e616c207365636f6e64617279206b6579732063616e206265206c696e6b656420746f206a757374206f6e65206964656e746974792e00202320576569676874c060375f3030305f3030305f303030202b203630305f303030202a207365636f6e646172795f6b6579732e6c656e28296054696e76616c69646174655f6364645f636c61696d730c010c6364647c01284964656e74697479496400013064697361626c655f66726f6d200124543a3a4d6f6d656e74000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001102101496e76616c69646174657320616e7920636c61696d2067656e6572617465642062792060636464602066726f6d206064697361626c655f66726f6d602074696d657374616d70732e009c596f752063616e20616c736f20646566696e6520616e2065787069726174696f6e2074696d652c6d0177686963682077696c6c20696e76616c696461746520616c6c20636c61696d732067656e657261746564206279207468617420606364646020616e642072656d6f766520697420617320434444206d656d6265722067726f75702e5472656d6f76655f7365636f6e646172795f6b6579730401447369676e6572735f746f5f72656d6f7665f001705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e00021cd452656d6f76657320737065636966696564207365636f6e64617279206b657973206f662061204449442069662070726573656e742e002423204661696c757265a049742063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722e00202320576569676874c0603935305f3030305f303030202b2036305f303030202a207369676e6572735f746f5f72656d6f76652e6c656e282960486163636570745f7072696d6172795f6b6579080140726f746174696f6e5f617574685f696420010c7536340001506f7074696f6e616c5f6364645f617574685f6964f8012c4f7074696f6e3c7536343e000334650143616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e6501746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f766564250174686973206368616e676520286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e005d015468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f7264756e6c696e6b656420746f20616e79206964656e746974792e005d01446966666572732066726f6d20726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727920696e20746861742069742077696c6c20756e6c696e6b20746865206f6c64207072696d617279206b6579a4696e7374656164206f66206c656176696e672069742061732061207365636f6e64617279206b65792e002c2320417267756d656e74731d012a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e42a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f7669646572986368616e67655f6364645f726571756972656d656e745f666f725f6d6b5f726f746174696f6e040134617574685f72657175697265641d010110626f6f6c00041435015365742069662043444420617574686f72697a6174696f6e20697320726571756972656420666f72207570646174696e67207072696d617279206b6579206f6620616e206964656e746974792e7843616c6c61626c652076696120726f6f742028676f7665726e616e636529002c2320417267756d656e7473cc2a2060617574685f7265717569726564602043444420417574686f72697a6174696f6e207265717569726564206f72206e6f74506a6f696e5f6964656e746974795f61735f6b657904011c617574685f696420010c753634000504904a6f696e20616e206964656e746974792061732061207365636f6e64617279206b65792e546c656176655f6964656e746974795f61735f6b65790006048c4c6561766520746865207365636f6e64617279206b65792773206964656e746974792e246164645f636c61696d0c01187461726765747c01284964656e746974794964000114636c61696dfc0114436c61696d000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e00070cc4416464732061206e657720636c61696d207265636f7264206f7220656469747320616e206578697374696e67206f6e652e00a84f6e6c792063616c6c6564206279206469645f6973737565722773207365636f6e64617279206b65792e307265766f6b655f636c61696d0801187461726765747c01284964656e746974794964000114636c61696dfc0114436c61696d000804944d61726b73207468652073706563696669656420636c61696d206173207265766f6b65642e607365745f7065726d697373696f6e5f746f5f7369676e65720801187369676e657298015c5369676e61746f72793c543a3a4163636f756e7449643e0001147065726d739c012c5065726d697373696f6e7300090cc853657473207065726d697373696f6e7320666f7220616e20737065636966696320607461726765745f6b657960206b65792e0035014f6e6c7920746865207072696d617279206b6579206f6620616e206964656e746974792069732061626c6520746f20736574207365636f6e64617279206b6579207065726d697373696f6e732e7c6c65676163795f7365745f7065726d697373696f6e5f746f5f7369676e65720801187369676e657298015c5369676e61746f72793c543a3a4163636f756e7449643e00012c7065726d697373696f6e731d0501444c65676163795065726d697373696f6e73000a0c4501546869732066756e6374696f6e206973206120776f726b61726f756e6420666f722068747470733a2f2f6769746875622e636f6d2f706f6c6b61646f742d6a732f617070732f6973737565732f33363332d449742073657473207065726d697373696f6e7320666f7220616e20737065636966696320607461726765745f6b657960206b65792e35014f6e6c7920746865207072696d617279206b6579206f6620616e206964656e746974792069732061626c6520746f20736574207365636f6e64617279206b6579207065726d697373696f6e732e54667265657a655f7365636f6e646172795f6b657973000b10c449742064697361626c657320616c6c207365636f6e64617279206b657973206174206064696460206964656e746974792e002023204572726f7273005c756e667265657a655f7365636f6e646172795f6b657973000c04dc52652d656e61626c657320616c6c207365636f6e64617279206b657973206f66207468652063616c6c65722773206964656e746974792e446164645f617574686f72697a6174696f6e0c011874617267657498015c5369676e61746f72793c543a3a4163636f756e7449643e000110646174611101017c417574686f72697a6174696f6e446174613c543a3a4163636f756e7449643e000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e000d04584164647320616e20617574686f72697a6174696f6e2e5072656d6f76655f617574686f72697a6174696f6e0c011874617267657498015c5369676e61746f72793c543a3a4163636f756e7449643e00011c617574685f696420010c7536340001445f617574685f6973737565725f706179731d010110626f6f6c000e086452656d6f76657320616e20617574686f72697a6174696f6e2e75015f617574685f6973737565725f706179732064657465726d696e657320776865746865722074686520697373756572206f662074686520617574686f7269736174696f6e207061797320746865207472616e73616374696f6e20666565946164645f7365636f6e646172795f6b6579735f776974685f617574686f72697a6174696f6e08013c6164646974696f6e616c5f6b6579733105019c5665633c5365636f6e646172794b657957697468417574683c543a3a4163636f756e7449643e3e000128657870697265735f6174200124543a3a4d6f6d656e74000f30bc49742061646473207365636f6e64617279206b65797320746f20746172676574206964656e7469747920606964602e39014b65797320617265206469726563746c7920616464656420746f206964656e7469747920626563617573652065616368206f66207468656d2068617320616e20617574686f72697a6174696f6e2e0028417267756d656e74733ab0202020202d20606f726967696e60205072696d617279206b6579206f662060696460206964656e746974792eec202020202d2060696460204964656e74697479207768657265206e6577207365636f6e64617279206b6579732077696c6c2062652061646465642e6d01202020202d20606164646974696f6e616c5f6b65797360204e6577207365636f6e64617279206974656d732028616e6420746865697220617574686f72697a6174696f6e20646174612920746f2061646420746f2074617267657434202020206964656e746974792e001c4661696c757265b8202020202d2049742063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722ed0202020202d204b6579732073686f756c642062652061626c6520746f206c696e6b656420746f20616e79206964656e746974792e746164645f696e766573746f725f756e697175656e6573735f636c61696d1001187461726765747c01284964656e746974794964000114636c61696dfc0114436c61696d00011470726f6f663d05014c496e766573746f725a4b50726f6f6644617461000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e00104c09014164642060436c61696d3a3a496e766573746f72556e697175656e6573736020636c61696d20666f72206120676976656e20746172676574206964656e746974792e002823203c7765696768743e410120576569676874206f662074686520746869732065787472696e73696320697320646570656e64206f6e2074686520636f6d7075746174696f6e2074686174207573656420746f2076616c69646174652501207468652070726f6f66206f6620636c61696d2c2077686963682077696c6c206265206120636f6e7374616e7420696e646570656e64656e74206f66207573657220696e707574732e2c23203c2f7765696768743e002c2320417267756d656e7473b5012a206f726967696e202d2057686f2070726f76696465732074686520636c61696d20746f2074686520757365723f20496e207468697320636173652c20697427732074686520757365722773206163636f756e742069642061732074686520757365722070726f76696465732ee42a20746172676574202d20604964656e7469747949646020746f2077686963682074686520636c61696d20676574732061737369676e65642eb42a20636c61696d202d2060496e766573746f72556e697175656e6573736020636c61696d2064657461696c732eac2a2070726f6f66202d20546f2076616c6964617465207468652073656c66206174746573746174696f6e2e6c2a20657870697279202d20457870697279206f6620636c61696d2e002023204572726f72732d012a20604469644d757374416c7265616479457869737460205461726765742073686f756c6420616c7265616479206265656e20612070617274206f66207468652065636f73797374656d2e91012a2060436c61696d56617269616e744e6f74416c6c6f77656460205768656e206f726967696e20747279696e6720746f207061737320636c61696d2076617269616e74206f74686572207468616e2060496e766573746f72556e697175656e657373602eb9012a2060436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f77656460205768656e2069737375657220697320646966666572656e742066726f6d20746172676574206f72204344445f494420697320696e76616c696420666f7220676976656e20757365722eac2a2060496e76616c696453636f7065436c61696d205768656e2070726f6f6620697320696e76616c69642e4067635f6164645f6364645f636c61696d0401187461726765747c01284964656e7469747949640011044501417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c20616464732061206e65772063646420636c61696d207265636f72642e4c67635f7265766f6b655f6364645f636c61696d0401187461726765747c01284964656e7469747949640012046901417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c2072656d6f76657320616e206578697374696e672063646420636c61696d207265636f72642e806164645f696e766573746f725f756e697175656e6573735f636c61696d5f76321401187461726765747c01284964656e74697479496400011473636f70650101011453636f7065000114636c61696dfc0114436c61696d00011470726f6f664d05013c53636f7065436c61696d50726f6f66000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e001300547265766f6b655f636c61696d5f62795f696e6465780c01187461726765747c01284964656e746974794964000128636c61696d5f747970659d020124436c61696d5479706500011473636f7065050501344f7074696f6e3c53636f70653e001420f5015265766f6b6573206120737065636966696320636c61696d207573696e6720697473205b436c61696d20556e6971756520496e6465785d282f70616c6c65745f6964656e746974792f696e6465782e68746d6c23636c61696d2d756e697175652d696e6465782920636f6d706f7365642062792060746172676574602c6860636c61696d5f74797065602c20616e64206073636f7065602e000501506c65617365206e6f7465207468617420606f726967696e60206d7573742062652074686520697373756572206f66207468652074617267657420636c61696d2e002023204572726f72734d012d20605461726765744861734e6f6e5a65726f42616c616e6365417453636f7065496460207768656e20796f752074727920746f207265766f6b6520612060496e766573746f72556e697175656e6573732a602501636c61696d2c20616e64206074617267657460206964656e74697479207374696c6c206861766520616e792062616c616e6365206f6e2074686520676976656e206073636f7065602e7c726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727908011c617574685f696420010c7536340001506f7074696f6e616c5f6364645f617574685f6964f8012c4f7074696f6e3c7536343e001538650143616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e6501746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f766564290174686973206368616e67652c20286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e005d015468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f7264756e6c696e6b656420746f20616e79206964656e746974792e006101446966666572732066726f6d206163636570745f7072696d6172795f6b657920696e20746861742069742077696c6c206c6561766520746865206f6c64207072696d617279206b65792061732061207365636f6e6461727985016b6579207769746820746865207065726d697373696f6e732073706563696669656420696e2074686520636f72726573706f6e64696e6720526f746174655072696d6172794b6579546f5365636f6e6461727920617574686f72697a6174696f6ea4696e7374656164206f6620756e6c696e6b696e6720746865206f6c64207072696d617279206b65792e002c2320417267756d656e74731d012a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e42a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f76696465720c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e1d05104c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65790c617069444c65676163795065726d697373696f6e7300000c01146173736574a0014041737365745065726d697373696f6e7300012465787472696e736963210501684c656761637945787472696e7369635065726d697373696f6e73000124706f7274666f6c696fd80150506f7274666f6c696f5065726d697373696f6e7300002105104c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65790c617069684c656761637945787472696e7369635065726d697373696f6e7300000400250501904f7074696f6e3c5665633c4c656761637950616c6c65745065726d697373696f6e733e3e0000250504184f7074696f6e0404540129050108104e6f6e6500000010536f6d6504002905000001000029050000022d05002d05104c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65790c6170695c4c656761637950616c6c65745065726d697373696f6e7300000c012c70616c6c65745f6e616d65bc012850616c6c65744e616d65000114746f74616c1d010110626f6f6c000148646973706174636861626c655f6e616d6573cc01545665633c446973706174636861626c654e616d653e0000310500000235050035051064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479505365636f6e646172794b6579576974684175746804244163636f756e7449640100000801347365636f6e646172795f6b657994015c5365636f6e646172794b65793c4163636f756e7449643e000138617574685f7369676e6174757265390501104835313200003905083c7072696d69746976655f7479706573104835313200000400150201205b75383b2036345d00003d05104c706f6c796d6573685f7072696d69746976657354696e766573746f725f7a6b70726f6f665f646174610876314c496e766573746f725a4b50726f6f664461746100000400410501245369676e6174757265000041050c287363686e6f72726b656c107369676e245369676e61747572650000080104524505014c436f6d7072657373656452697374726574746f00010473490501185363616c6172000045050c40637572766532353531395f64616c656b2472697374726574746f4c436f6d7072657373656452697374726574746f000004000401205b75383b2033325d000049050c40637572766532353531395f64616c656b187363616c6172185363616c6172000004011462797465730401205b75383b2033325d00004d050c54636f6e666964656e7469616c5f6964656e7469747930636c61696d5f70726f6f66733c53636f7065436c61696d50726f6f6600000c016470726f6f665f73636f70655f69645f77656c6c666f726d6564510501245369676e617475726500016c70726f6f665f73636f70655f69645f6364645f69645f6d617463685505012c5a6b50726f6f664461746100012073636f70655f69645d05013852697374726574746f506f696e74000051050c54636f6e666964656e7469616c5f6964656e74697479107369676e245369676e61747572650000080104524505014c436f6d7072657373656452697374726574746f00010473490501185363616c6172000055050c54636f6e666964656e7469616c5f6964656e7469747930636c61696d5f70726f6f66732c5a6b50726f6f664461746100000c014c6368616c6c656e67655f726573706f6e736573590501945b5363616c61723b205a4b5f50524f4f465f444154415f4348475f524553504f4e5345535d00016073756274726163745f65787072657373696f6e735f7265735d05013852697374726574746f506f696e74000158626c696e6465645f73636f70655f6469645f686173685d05013852697374726574746f506f696e7400005905000003020000004905005d050c40637572766532353531395f64616c656b2472697374726574746f3852697374726574746f506f696e74000004006105013045647761726473506f696e74000061050c40637572766532353531395f64616c656b1c656477617264733045647761726473506f696e74000010010458650501304669656c64456c656d656e7400010459650501304669656c64456c656d656e740001045a650501304669656c64456c656d656e7400010454650501304669656c64456c656d656e74000065051840637572766532353531395f64616c656b1c6261636b656e641873657269616c0c753634146669656c64384669656c64456c656d656e74353100000400690501205b7536343b20355d000069050000030500000020006d05083c70616c6c65745f6964656e74697479144572726f7204045400018434416c72656164794c696e6b6564000004dc4f6e65207365636f6e64617279206f72207072696d617279206b65792063616e206f6e6c792062656c6f6e6720746f206f6e6520444944584d697373696e6743757272656e744964656e74697479000104ac4d697373696e672063757272656e74206964656e74697479206f6e20746865207472616e73616374696f6e30556e617574686f72697a6564000204bc5369676e61746f7279206973206e6f742070726520617574686f72697a656420627920746865206964656e7469747944496e76616c69644163636f756e744b6579000304a84163636f756e742049642063616e6e6f74206265206578747261637465642066726f6d207369676e65725c556e417574686f72697a656443646450726f76696465720004049c4f6e6c792043444420736572766963652070726f7669646572732061726520616c6c6f7765642e74496e76616c6964417574686f72697a6174696f6e46726f6d4f776e6572000504a0416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865206f776e65722e8c496e76616c6964417574686f72697a6174696f6e46726f6d43646450726f7669646572000604bc416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865204344442070726f76696465722e644e6f7443646450726f76696465724174746573746174696f6e000704b84174746573746174696f6e20776173206e6f7420627920612043444420736572766963652070726f76696465722e70417574686f72697a6174696f6e734e6f74466f7253616d6544696473000804a0417574686f72697a6174696f6e7320617265206e6f7420666f72207468652073616d65204449442e4c4469644d757374416c726561647945786973740009046c54686520444944206d75737420616c72656164792065786973742e8043757272656e744964656e7469747943616e6e6f744265466f72776172646564000a044d0143757272656e74206964656e746974792063616e6e6f7420626520666f727761726465642c206974206973206e6f742061207365636f6e64617279206b6579206f6620746172676574206964656e746974792e50417574686f72697a6174696f6e45787069726564000b049c546865206f6666636861696e20617574686f72697a6174696f6e2068617320657870697265642e385461726765744861734e6f436464000c0480546865207461726765742044494420686173206e6f2076616c6964204344442e6c417574686f72697a6174696f6e4861734265656e5265766f6b6564000d04a8417574686f72697a6174696f6e20686173206265656e206578706c696369746c79207265766f6b65642e74496e76616c6964417574686f72697a6174696f6e5369676e6174757265000e048c416e20696e76616c696420617574686f72697a6174696f6e207369676e61747572652e344b65794e6f74416c6c6f776564000f04d454686973206b6579206973206e6f7420616c6c6f77656420746f2065786563757465206120676976656e206f7065726174696f6e2e344e6f745072696d6172794b657900100461014f6e6c7920746865207072696d617279206b657920697320616c6c6f77656420746f207265766f6b6520616e204964656e74697479205369676e61746f7279206f66662d636861696e20617574686f72697a6174696f6e2e3c446964446f65734e6f7445786973740011045c5468652044494420646f6573206e6f742065786973742e40446964416c72656164794578697374730012045c5468652044494420616c7265616479206578697374732e785365636f6e646172794b657973436f6e7461696e5072696d6172794b6579001304ac546865207365636f6e64617279206b65797320636f6e7461696e20746865207072696d617279206b65792e444661696c6564546f436861726765466565001404a0436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e284e6f74415369676e6572001504d85369676e6572206973206e6f742061207365636f6e64617279206b6579206f66207468652070726f7669646564206964656e746974796c43616e6e6f744465636f64655369676e65724163636f756e744964001604150143616e6e6f7420636f6e7665727420612060543a3a4163636f756e7449646020746f2060416e795369676e61747572653a3a5369676e65723a3a4163636f756e744964602e484d756c746953696748617342616c616e636500170421014d756c74697369672063616e206e6f7420626520756e6c696e6b65642066726f6d20616e206964656e74697479207768696c65206974207374696c6c20686f6c647320504f4c595880436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f7765640018040501436f6e666964656e7469616c2053636f706520636c61696d732063616e20626520616464656420627920616e204964656e7469747920746f2069742d73656c662e44496e76616c696453636f7065436c61696d001904bc4164646974696f6e206f662061206e65772073636f706520636c61696d206765747320696e76616c6964617465642e58436c61696d56617269616e744e6f74416c6c6f776564001a04e454727920746f20616464206120636c61696d2076617269616e74207573696e6720756e2d64657369676e617465642065787472696e7369632e805461726765744861734e6f6e5a65726f42616c616e6365417453636f70654964001b04510154727920746f2064656c6574652074686520495520636c61696d206576656e207768656e20746865207573657220686173206e6f6e207a65726f2062616c616e636520617420676976656e2073636f706549642e6443444449644e6f74556e69717565466f724964656e74697479001c041d0143444449642073686f756c6420626520756e6971756520262073616d652077697468696e20616c6c2063646420636c61696d7320706f737365737365642062792061204449442e30496e76616c69644344444964001d0409014e6f6e2073797374656d61746963204344442070726f7669646572732063616e206e6f74206372656174652064656661756c74206364645f696420636c61696d732e7c436c61696d416e6450726f6f6656657273696f6e73446f4e6f744d61746368001e049c436c61696d20616e642050726f6f662076657273696f6e732061726520646966666572656e742e544163636f756e744b657949734265696e6755736564001f04d0546865206163636f756e74206b6579206973206265696e6720757365642c2069742063616e277420626520756e6c696e6b65642e48437573746f6d53636f7065546f6f4c6f6e670020086c4120637573746f6d2073636f706520697320746f6f206c6f6e672e9c49742063616e206174206d6f737420626520603332602063686172616374657273206c6f6e672e00710500000275050075051064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f757038496e6163746976654d656d62657204184d6f6d656e740120000c010869647c01284964656e74697479496400013864656163746976617465645f61742001184d6f6d656e74000118657870697279f801384f7074696f6e3c4d6f6d656e743e00007905083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001086174f801444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733101013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e7d05083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e0081050c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d651043616c6c0001a41853797374656d0400150401ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53797374656d2c2052756e74696d653e00000010426162650400850401a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426162652c2052756e74696d653e0001002454696d657374616d7004009d0401b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54696d657374616d702c2052756e74696d653e0002001c496e64696365730400a90401b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496e64696365732c2052756e74696d653e00030028417574686f72736869700400b90401bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c417574686f72736869702c2052756e74696d653e0004002042616c616e6365730400d10401b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c42616c616e6365732c2052756e74696d653e000500204964656e746974790400190501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4964656e746974792c2052756e74696d653e0007004c4364645365727669636550726f7669646572730400790501e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4364645365727669636550726f7669646572732c2052756e74696d653e00080044506f6c796d657368436f6d6d69747465650400850501d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f6c796d657368436f6d6d69747465652c2052756e74696d653e0009004c436f6d6d69747465654d656d626572736869700400890501e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6d6d69747465654d656d626572736869702c2052756e74696d653e000a0048546563686e6963616c436f6d6d697474656504008d0501dd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546563686e6963616c436f6d6d69747465652c2052756e74696d653e000b0070546563686e6963616c436f6d6d69747465654d656d626572736869700400910501050273656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546563686e6963616c436f6d6d69747465654d656d626572736869702c2052756e74696d653e000c004055706772616465436f6d6d69747465650400950501d50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c55706772616465436f6d6d69747465652c2052756e74696d653e000d006855706772616465436f6d6d69747465654d656d626572736869700400990501fd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c55706772616465436f6d6d69747465654d656d626572736869702c2052756e74696d653e000e00204d756c746953696704009d0501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d756c74695369672c2052756e74696d653e000f00184272696467650400a10501ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4272696467652c2052756e74696d653e0010001c5374616b696e670400b10501b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5374616b696e672c2052756e74696d653e0011001c53657373696f6e0400a50601b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53657373696f6e2c2052756e74696d653e0013001c4772616e6470610400b10601b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4772616e6470612c2052756e74696d653e00150020496d4f6e6c696e650400dd0601b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496d4f6e6c696e652c2052756e74696d653e001700105375646f0400fd0601a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5375646f2c2052756e74696d653e0019001441737365740400010701a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c41737365742c2052756e74696d653e001a004c4361706974616c446973747269627574696f6e04001d0701e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4361706974616c446973747269627574696f6e2c2052756e74696d653e001b0028436865636b706f696e740400250701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436865636b706f696e742c2052756e74696d653e001c0044436f6d706c69616e63654d616e6167657204002d0701d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6d706c69616e63654d616e616765722c2052756e74696d653e001d003c436f72706f72617465416374696f6e0400310701d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f72706f72617465416374696f6e2c2052756e74696d653e001e003c436f72706f7261746542616c6c6f740400450701d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f72706f7261746542616c6c6f742c2052756e74696d653e001f0010506970730400490701a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506970732c2052756e74696d653e00210024506f7274666f6c696f0400590701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f7274666f6c696f2c2052756e74696d653e0022002c50726f746f636f6c4665650400650701c10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50726f746f636f6c4665652c2052756e74696d653e002300245363686564756c657204006d0701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5363686564756c65722c2052756e74696d653e00240028536574746c656d656e740400750701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c536574746c656d656e742c2052756e74696d653e00250028537461746973746963730400890701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c537461746973746963732c2052756e74696d653e0026000c53746f04008d0701a10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53746f2c2052756e74696d653e0027002054726561737572790400a10701b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54726561737572792c2052756e74696d653e0028001c5574696c6974790400ad0701b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5574696c6974792c2052756e74696d653e00290010426173650400b90701a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426173652c2052756e74696d653e002a003845787465726e616c4167656e74730400bd0701cd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c45787465726e616c4167656e74732c2052756e74696d653e002b001c52656c617965720400c10701b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c52656c617965722c2052756e74696d653e002c001c526577617264730400c50701b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c526577617264732c2052756e74696d653e002d0024546573745574696c730400cd0701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546573745574696c732c2052756e74696d653e003200008505084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279450101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f76651d010110626f6f6c00011063616c6c81050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f76651d010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e8905083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001086174f801444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733101013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e8d05084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279450101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f76651d010110626f6f6c00011063616c6c81050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f76651d010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e9105083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001086174f801444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733101013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e9505084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279450101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f76651d010110626f6f6c00011063616c6c81050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f76651d010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e9905083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001086174f801444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733101013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e9d05083c70616c6c65745f6d756c74697369671043616c6c04045400014c3c6372656174655f6d756c746973696708011c7369676e657273f001705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000134736967735f726571756972656420010c75363400001448437265617465732061206d756c7469736967002c2320417267756d656e7473a5012a20607369676e65727360202d205369676e657273206f6620746865206d756c7469736967202854686579206e65656420746f2061636365707420617574686f72697a6174696f6e206265666f72652074686579206172652061637475616c6c79206164646564292e19012a2060736967735f726571756972656460202d204e756d626572206f66207369677320726571756972656420746f2070726f636573732061206d756c74692d7369672074782e986372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6964656e746974791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616c81050140426f783c543a3a50726f706f73616c3e000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f73651d010110626f6f6c0001203d01437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e846372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6b65791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616c81050140426f783c543a3a50726f706f73616c3e000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f73651d010110626f6f6c0002203d01437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e6c6372656174655f70726f706f73616c5f61735f6964656e746974791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616c81050140426f783c543a3a50726f706f73616c3e000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f73651d010110626f6f6c0003206c437265617465732061206d756c74697369672070726f706f73616c002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e586372656174655f70726f706f73616c5f61735f6b65791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616c81050140426f783c543a3a50726f706f73616c3e000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f73651d010110626f6f6c0004206c437265617465732061206d756c74697369672070726f706f73616c002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4c617070726f76655f61735f6964656e746974790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c753634000518e4417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea42a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e38617070726f76655f61735f6b65790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340006183101417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea42a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4872656a6563745f61735f6964656e746974790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c753634000718e052656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea02a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e3472656a6563745f61735f6b65790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340008182d0152656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea02a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e886163636570745f6d756c74697369675f7369676e65725f61735f6964656e7469747904011c617574685f696420010c7536340009100d01416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206964656e746974792e002c2320417267756d656e7473ac2a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e746163636570745f6d756c74697369675f7369676e65725f61735f6b657904011c617574685f696420010c753634000a102901416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206b657920284163636f756e744964292e002c2320417267756d656e7473ac2a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e4c6164645f6d756c74697369675f7369676e65720401187369676e657298015c5369676e61746f72793c543a3a4163636f756e7449643e000b102901416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e002c2320417267756d656e7473782a20607369676e657260202d205369676e61746f727920746f206164642e5872656d6f76655f6d756c74697369675f7369676e65720401187369676e657298015c5369676e61746f72793c543a3a4163636f756e7449643e000c103d0152656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e002c2320417267756d656e7473842a20607369676e657260202d205369676e61746f727920746f2072656d6f76652e806164645f6d756c74697369675f7369676e6572735f7669615f63726561746f720801206d756c7469736967000130543a3a4163636f756e74496400011c7369676e657273f001705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000d244501416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865246d756c74697369672e002c2320417267756d656e74739c2a20606d756c746973696760202d2041646472657373206f6620746865206d756c746920736967842a20607369676e65727360202d205369676e61746f7269657320746f206164642e00202320576569676874a4603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e2829608c72656d6f76655f6d756c74697369675f7369676e6572735f7669615f63726561746f720801206d756c7469736967000130543a3a4163636f756e74496400011c7369676e657273f001705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000e248c52656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672ef054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865206d756c74697369672e002c2320417267756d656e74739c2a20606d756c746973696760202d2041646472657373206f6620746865206d756c74697369672e902a20607369676e65727360202d205369676e61746f7269657320746f2072656d6f76652e00202320576569676874a4603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e282960506368616e67655f736967735f7265717569726564040134736967735f726571756972656420010c753634000f144d014368616e67657320746865206e756d626572206f66207369676e6174757265732072657175697265642062792061206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865406d756c746973696720697473656c662e002c2320417267756d656e7473d82a2060736967735f726571756972656460202d204e6577206e756d626572206f66207265717569726564207369676e6174757265732e506d616b655f6d756c74697369675f7369676e65720401206d756c7469736967000130543a3a4163636f756e7449640010144d01416464732061206d756c74697369672061732061207369676e6572206f662063757272656e7420646964206966207468652063757272656e7420646964206973207468652063726561746f72206f6620746865246d756c74697369672e002c2320417267756d656e7473802a20606d756c746973696760202d206d756c7469207369672061646472657373546d616b655f6d756c74697369675f7072696d6172790801206d756c7469736967000130543a3a4163636f756e7449640001506f7074696f6e616c5f6364645f617574685f6964f8012c4f7074696f6e3c7536343e0011145d01416464732061206d756c746973696720617320746865207072696d617279206b6579206f66207468652063757272656e7420646964206966207468652063757272656e7420444944206973207468652063726561746f72406f6620746865206d756c74697369672e002c2320417267756d656e7473842a20606d756c74695f73696760202d206d756c746920736967206164647265737368657865637574655f7363686564756c65645f70726f706f73616c1001206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340001306d756c74697369675f6469647c01284964656e7469747949640001405f70726f706f73616c5f7765696768742001185765696768740012047101526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20666f7220657865637574696e67207363686564756c6564206d756c74697369672070726f706f73616c2e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ea105083470616c6c65745f6272696467651043616c6c040454000144446368616e67655f636f6e74726f6c6c6572040128636f6e74726f6c6c6572000130543a3a4163636f756e744964000010a04368616e6765732074686520636f6e74726f6c6c6572206163636f756e742061732061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e306368616e67655f61646d696e04011461646d696e000130543a3a4163636f756e744964000110744368616e67657320746865206272696467652061646d696e206b65792e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e3c6368616e67655f74696d656c6f636b04012074696d656c6f636b100138543a3a426c6f636b4e756d626572000210704368616e676573207468652074696d656c6f636b20706572696f642e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e18667265657a650003145d01467265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c65206966206974206973206e6f7420616c72656164792066726f7a656e2e205768656e2074686549016272696467652069732066726f7a656e2c20617474656d70746564207472616e73616374696f6e732067657420706f7374706f6e656420696e7374656164206f662067657474696e672068616e646c65642e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e20756e667265657a650004101101556e667265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c652069662069742069732066726f7a656e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c6368616e67655f6272696467655f6c696d6974080118616d6f756e7418011c42616c616e63650001206475726174696f6e100138543a3a426c6f636b4e756d626572000514684368616e6765732074686520627269646765206c696d6974732e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ea42d20604469766973696f6e42795a65726f6020696620606475726174696f6e60206973207a65726f2e586368616e67655f6272696467655f6578656d707465640401206578656d70746564a505015c5665633c284964656e7469747949642c20626f6f6c293e0006109c4368616e6765732074686520627269646765206c696d6974206578656d70746564206c6973742e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e58666f7263655f68616e646c655f6272696467655f74780401246272696467655f74787901015842726964676554783c543a3a4163636f756e7449643e0007142501466f726365732068616e646c696e672061207472616e73616374696f6e20627920627970617373696e672074686520627269646765206c696d697420616e642074696d656c6f636b2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e21012d20604e6f56616c69644364646020696620606272696467655f74782e726563697069656e746020646f6573206e6f74206861766520612076616c69642043444420636c61696d2e5c62617463685f70726f706f73655f6272696467655f74780401286272696467655f747873ad05016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000824450150726f706f736573206120766563746f72206f6620627269646765207472616e73616374696f6e732e2054686520766563746f722069732070726f63657373656420756e74696c207468652066697273744d0170726f706f73616c2077686963682063617573657320616e206572726f722c20696e207768696368206361736520746865206572726f722069732072657475726e656420616e64207468652072657374206f667070726f706f73616c7320617265206e6f742070726f6365737365642e00242323204572726f7273c82d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e00202320576569676874b0603530305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829604470726f706f73655f6272696467655f74780401246272696467655f74787901015842726964676554783c543a3a4163636f756e7449643e000918490150726f706f736573206120627269646765207472616e73616374696f6e2c20776869636820616d6f756e747320746f206d616b696e672061206d756c74697369672070726f706f73616c20666f72207468655501627269646765207472616e73616374696f6e20696620746865207472616e73616374696f6e206973206e6577206f7220617070726f76696e6720616e206578697374696e672070726f706f73616c20696620746865987472616e73616374696f6e2068617320616c7265616479206265656e2070726f706f7365642e00242323204572726f7273c82d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e4068616e646c655f6272696467655f74780401246272696467655f74787901015842726964676554783c543a3a4163636f756e7449643e000a18c048616e646c657320616e20617070726f76656420627269646765207472616e73616374696f6e2070726f706f73616c2e00242323204572726f727319012d206042616443616c6c65726020696620606f726967696e60206973206e6f74206053656c663a3a636f6e74726f6c6c657260206f7220206053656c663a3a61646d696e602eec2d206054696d656c6f636b656454786020696620746865207472616e73616374696f6e20737461747573206973206054696d656c6f636b6564602e09012d206050726f706f73616c416c726561647948616e646c65646020696620746865207472616e73616374696f6e20737461747573206973206048616e646c6564602e28667265657a655f7478730401286272696467655f747873ad05016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000b2088467265657a657320676976656e20627269646765207472616e73616374696f6e732e8501496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e00202320576569676874b0603430305f3030305f303030202b20325f3030305f303030202a206272696467655f7478732e6c656e28296030756e667265657a655f7478730401286272696467655f747873ad05016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000c2090556e667265657a657320676976656e20627269646765207472616e73616374696f6e732e8501496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e00202320576569676874b0603430305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829606868616e646c655f7363686564756c65645f6272696467655f74780401246272696467655f74787901015842726964676554783c543a3a4163636f756e7449643e000d189901526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f2068616e646c652061207363686564756c65642074696d656c6f636b656420627269646765207472616e73616374696f6e2e002023204572726f7273982d20604261644f726967696e6020696620606f726967696e60206973206e6f7420726f6f742ef82d206050726f706f73616c416c726561647948616e646c656460206966207472616e73616374696f6e20737461747573206973206048616e646c6564602ebc2d206046726f7a656e547860206966207472616e73616374696f6e20737461747573206973206046726f7a656e602e406164645f667265657a655f61646d696e040130667265657a655f61646d696e000130543a3a4163636f756e744964000e104c416464206120667265657a652061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c72656d6f76655f667265657a655f61646d696e040130667265657a655f61646d696e000130543a3a4163636f756e744964000f105852656d6f7665206120667265657a652061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e2872656d6f76655f7478730401286272696467655f747873ad05016c5665633c42726964676554783c543a3a4163636f756e7449643e3e0010148452656d6f766520676976656e20627269646765207472616e73616374696f6e732e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ed02d20604e6f7446726f7a656e60206966206120747820696e20606272696467655f74787360206973206e6f742066726f7a656e2e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ea505000002a90500a905000004087c1d0100ad05000002790100b105083870616c6c65745f7374616b696e671043616c6c04045400018010626f6e640c0128636f6e74726f6c6c6572d504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565d101013042616c616e63654f663c543e0001147061796565b505017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e000058610154616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c80626520746865206163636f756e74207468617420636f6e74726f6c732069742e002d016076616c756560206d757374206265206d6f7265207468616e2074686520606d696e696d756d5f62616c616e636560207370656369666965642062792060543a3a43757272656e6379602e002101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e003c456d6974732060426f6e646564602e002823203c7765696768743ed02d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e1c2d204f2831292e642d20546872656520657874726120444220656e74726965732e004d014e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e65643d01756e6c6573732074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e482d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a2d012d20526561643a20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c2043757272656e74204572612c20486973746f72792044657074682c204c6f636b73dc2d2057726974653a20426f6e6465642c2050617965652c205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e28626f6e645f65787472610401386d61785f6164646974696f6e616cd101013042616c616e63654f663c543e000154610141646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e636520757030666f72207374616b696e672e004d01557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e6101556e6c696b65205b60626f6e64605d206f72205b60756e626f6e64605d20746869732066756e6374696f6e20646f6573206e6f7420696d706f736520616e79206c696d69746174696f6e206f6e2074686520616d6f756e7448746861742063616e2062652061646465642e005d01546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c657220616e64f469742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e003c456d6974732060426f6e646564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e1c2d204f2831292e3c2d204f6e6520444220656e7472792e302d2d2d2d2d2d2d2d2d2d2d2d284442205765696768743a11012d20526561643a2045726120456c656374696f6e205374617475732c20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c204c6f636b73a02d2057726974653a205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e18756e626f6e6404011476616c7565d101013042616c616e63654f663c543e00028051015363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e64fc706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e2101543a3a43757272656e63793a3a6d696e696d756d5f62616c616e636528292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e0045014f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c20796f752063616e2063616c6c206077697468647261775f756e626f6e6465646020746f2061637475616c6c79206d6f7665bc7468652066756e6473206f7574206f66206d616e6167656d656e7420726561647920666f72207472616e736665722e0039014e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d41585f554e4c4f434b494e475f4348554e4b536029390163616e20636f2d657869737473206174207468652073616d652074696d652e20496e207468617420636173652c205b6043616c6c3a3a77697468647261775f756e626f6e646564605d206e656564f8746f2062652063616c6c656420666972737420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e0044456d6974732060556e626f6e646564602e009453656520616c736f205b6043616c6c3a3a77697468647261775f756e626f6e646564605d2e002823203c7765696768743e3d012d20496e646570656e64656e74206f662074686520617267756d656e74732e204c696d697465642062757420706f74656e7469616c6c79206578706c6f697461626c6520636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732e61012d20456163682063616c6c20287265717569726573207468652072656d61696e646572206f662074686520626f6e6465642062616c616e636520746f2062652061626f766520606d696e696d756d5f62616c616e636560296d01202077696c6c2063617573652061206e657720656e74727920746f20626520696e73657274656420696e746f206120766563746f722028604c65646765722e756e6c6f636b696e676029206b65707420696e2073746f726167652e4d012020546865206f6e6c792077617920746f20636c65616e207468652061666f72656d656e74696f6e65642073746f72616765206974656d20697320616c736f20757365722d636f6e74726f6c6c6564207669615820206077697468647261775f756e626f6e646564602e3c2d204f6e6520444220656e7472792e282d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a21012d20526561643a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e744572612c204c6f636b732c205c5b4f726967696e204163636f756e745c5da82d2057726974653a204c6f636b732c204c65646765722c205c5b4f726967696e204163636f756e745c5d243c2f7765696768743e4477697468647261775f756e626f6e6465640401486e756d5f736c617368696e675f7370616e7310010c75333200037c290152656d6f766520616e7920756e6c6f636b6564206368756e6b732066726f6d207468652060756e6c6f636b696e67602071756575652066726f6d206f7572206d616e6167656d656e742e0031015468697320657373656e7469616c6c7920667265657320757020746861742062616c616e636520746f206265207573656420627920746865207374617368206163636f756e7420746f20646f4877686174657665722069742077616e74732e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e0048456d697473206057697468647261776e602e006853656520616c736f205b6043616c6c3a3a756e626f6e64605d2e002823203c7765696768743e51012d20436f756c6420626520646570656e64656e74206f6e2074686520606f726967696e6020617267756d656e7420616e6420686f77206d7563682060756e6c6f636b696e6760206368756e6b732065786973742e410120497420696d706c6965732060636f6e736f6c69646174655f756e6c6f636b656460207768696368206c6f6f7073206f76657220604c65646765722e756e6c6f636b696e67602c207768696368206973f020696e6469726563746c7920757365722d636f6e74726f6c6c65642e20536565205b60756e626f6e64605d20666f72206d6f72652064657461696c2e75012d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732c20796574207468652073697a65206f6620776869636820636f756c64206265206c61726765206261736564206f6e20606c6564676572602ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e3c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0501436f6d706c6578697479204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2072656d6f76651c5570646174653a21012d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c204c6f636b732c205b4f726967696e204163636f756e745da42d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c6564676572144b696c6c3a41012d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c20426f6e6465642c20536c617368696e67205370616e732c205b4f726967696e4420204163636f756e745d2c204c6f636b734d012d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c6420205b4f726967696e204163636f756e745d2c204c6f636b73702d2057726974657320456163683a205370616e536c617368202a205309014e4f54453a2057656967687420616e6e6f746174696f6e20697320746865206b696c6c207363656e6172696f2c20776520726566756e64206f74686572776973652e2c23203c2f7765696768743e2076616c69646174650401147072656673b905013856616c696461746f725072656673000444e44465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e2c2d2d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a8c2d20526561643a2045726120456c656374696f6e205374617475732c204c65646765727c2d2057726974653a204e6f6d696e61746f72732c2056616c696461746f72732c23203c2f7765696768743e206e6f6d696e61746504011c74617267657473c10501a05665633c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e00054c0d014465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e004d01456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e20546869732063616e206f6e6c792062652063616c6c6564207768656e885b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743e2d012d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f662060746172676574736020284e29fc77686963682069732063617070656420617420436f6d7061637441737369676e6d656e74733a3a4c494d495420284d41585f4e4f4d494e4154494f4e53292ed42d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e242d2d2d2d2d2d2d2d2d305765696768743a204f284e29807768657265204e20697320746865206e756d626572206f662074617267657473284442205765696768743ac42d2052656164733a2045726120456c656374696f6e205374617475732c204c65646765722c2043757272656e7420457261802d205772697465733a2056616c696461746f72732c204e6f6d696e61746f72732c23203c2f7765696768743e146368696c6c000644c44465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e502d20436f6e7461696e73206f6e6520726561642ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e202d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a842d20526561643a20457261456c656374696f6e5374617475732c204c65646765727c2d2057726974653a2056616c696461746f72732c204e6f6d696e61746f72732c23203c2f7765696768743e247365745f70617965650401147061796565b505017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e000740b42852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e242d2d2d2d2d2d2d2d2d382d205765696768743a204f283129302d204442205765696768743a48202020202d20526561643a204c656467657248202020202d2057726974653a2050617965652c23203c2f7765696768743e387365745f636f6e74726f6c6c6572040128636f6e74726f6c6c6572d504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263650008408c2852652d297365742074686520636f6e74726f6c6c6572206f6620612073746173682e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e282d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743af02d20526561643a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c6572f42d2057726974653a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c65722c23203c2f7765696768743e4c7365745f76616c696461746f725f636f756e7404010c6e65770d04010c75333200092090536574732074686520696465616c206e756d626572206f662076616c696461746f72732e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e305765696768743a204f2831295857726974653a2056616c696461746f7220436f756e742c23203c2f7765696768743e60696e6372656173655f76616c696461746f725f636f756e740401286164646974696f6e616c0d04010c753332000a1ca8496e6372656d656e74732074686520696465616c206e756d626572206f662076616c696461746f72732e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e8053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e2c23203c2f7765696768743e547363616c655f76616c696461746f725f636f756e74040118666163746f72c505011c50657263656e74000b1cd05363616c652075702074686520696465616c206e756d626572206f662076616c696461746f7273206279206120666163746f722e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e8053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e2c23203c2f7765696768743e686164645f7065726d697373696f6e65645f76616c696461746f720801206964656e746974797c01284964656e746974794964000138696e74656e6465645f636f756e74c905012c4f7074696f6e3c7533323e000c203d01476f7665726e616e636520636f6d6d6974746565206f6e20322f3320726473206d616a6f726974792063616e20696e74726f647563652061206e657720706f74656e7469616c206964656e746974799d01746f2074686520706f6f6c206f66207065726d697373696f6e656420656e7469746965732077686f2063616e2072756e2076616c696461746f72732e205374616b696e67206d6f64756c65207573657320605065726d697373696f6e65644964656e74697479605501746f20656e737572652076616c696461746f7273206861766520636f6d706c65746564204b594220636f6d706c69616e636520616e6420636f6e736964657273207468656d20666f722076616c69646174696f6e2e002c2320417267756d656e7473e82a206f726967696e205265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e882a206964656e746974792056616c696461746f722773204964656e7469747949642e05012a20696e74656e6465645f636f756e74204e6f2e206f662076616c696461746f727320676976656e206964656e7469747920696e74656e647320746f2072756e2e7472656d6f76655f7065726d697373696f6e65645f76616c696461746f720401206964656e746974797c01284964656e746974794964000d1ca90152656d6f766520616e206964656e746974792066726f6d2074686520706f6f6c206f66202877616e6e616265292076616c696461746f72206964656e7469746965732e204566666563747320617265206b6e6f776e20696e20746865206e6578742073657373696f6e2e19015374616b696e67206d6f64756c6520636865636b7320605065726d697373696f6e65644964656e746974796020746f20656e737572652076616c696461746f7273206861766560636f6d706c65746564204b594220636f6d706c69616e6365002c2320417267756d656e7473f02a206f726967696e205265717569726564206f726967696e20666f722072656d6f76696e67206120706f74656e7469616c2076616c696461746f722e882a206964656e746974792056616c696461746f722773204964656e7469747949642e7876616c69646174655f6364645f6578706972795f6e6f6d696e61746f727304011c74617267657473910101445665633c543a3a4163636f756e7449643e000e28a056616c696461746520746865206e6f6d696e61746f727320434444206578706972792074696d652e00f0496620616e206163636f756e742066726f6d206120676976656e20736574206f662061646472657373206973206e6f6d696e6174696e67207468656ed0636865636b2074686520434444206578706972792074696d65206f6620697420616e64206966206974206973206578706972656431017468656e20746865206163636f756e742073686f756c6420626520756e626f6e64656420616e642072656d6f7665642066726f6d20746865206e6f6d696e6174696e672070726f636573732e0024233c7765696768743e982d20446570656e6473206f6e20706173736564206c697374206f66204163636f756e7449642e29012d20446570656e6473206f6e20746865206e6f2e206f6620636c61696d206973737565727320616e206163636f756e7449642068617320666f722074686520434444206578706972792e28233c2f7765696768743e487365745f636f6d6d697373696f6e5f63617004011c6e65775f6361709501011c50657262696c6c000f1421014368616e67657320636f6d6d697373696f6e2072617465207768696368206170706c69657320746f20616c6c2076616c696461746f72732e204f6e6c7920476f7665726e616e6365a8636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e002c2320417267756d656e74738c2a20606e65775f6361706020746865206e657720636f6d6d697373696f6e206361702e587365745f6d696e5f626f6e645f7468726573686f6c640401246e65775f76616c756518013042616c616e63654f663c543e00101401014368616e676573206d696e20626f6e642076616c756520746f206265207573656420696e2076616c696461746528292e204f6e6c7920476f7665726e616e6365a8636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e002c2320417267756d656e7473742a20606e65775f76616c75656020746865206e6577206d696e696d756d34666f7263655f6e6f5f65726173001124ac466f72636520746865726520746f206265206e6f206e6577206572617320696e646566696e6974656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e3c2d204e6f20617267756d656e74732e382d205765696768743a204f283129442d2057726974653a20466f7263654572612c23203c2f7765696768743e34666f7263655f6e65775f6572610012284901466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f6620746865206e6578742073657373696f6e2e20416674657220746869732c2069742077696c6c2062659c726573657420746f206e6f726d616c20286e6f6e2d666f7263656429206265686176696f75722e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e3c2d204e6f20617267756d656e74732e382d205765696768743a204f283129402d20577269746520466f7263654572612c23203c2f7765696768743e447365745f696e76756c6e657261626c6573040134696e76756c6e657261626c6573910101445665633c543a3a4163636f756e7449643e001320c8536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e182d204f285629582d2057726974653a20496e76756c6e657261626c65732c23203c2f7765696768743e34666f7263655f756e7374616b650801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c7533320014280901466f72636520612063757272656e74207374616b657220746f206265636f6d6520636f6d706c6574656c7920756e7374616b65642c20696d6d6564696174656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743ee84f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2062652072656d6f766564b452656164733a20426f6e6465642c20536c617368696e67205370616e732c204163636f756e742c204c6f636b7381015772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c204163636f756e742c204c6f636b736857726974657320456163683a205370616e536c617368202a20532c23203c2f7765696768743e50666f7263655f6e65775f6572615f616c776179730015200101466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f662073657373696f6e7320696e646566696e6974656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e382d205765696768743a204f283129442d2057726974653a20466f7263654572612c23203c2f7765696768743e5463616e63656c5f64656665727265645f736c61736808010c657261100120457261496e646578000134736c6173685f696e6469636573d90301205665633c7533323e0016349443616e63656c20656e6163746d656e74206f66206120646566657272656420736c6173682e00b043616e2062652063616c6c6564206279207468652060543a3a536c61736843616e63656c4f726967696e602e000101506172616d65746572733a2065726120616e6420696e6469636573206f662074686520736c617368657320666f7220746861742065726120746f206b696c6c2e002823203c7765696768743e50436f6d706c65786974793a204f2855202b205329b477697468205520756e6170706c69656420736c6173686573207765696768746564207769746820553d31303030d0616e64205320697320746865206e756d626572206f6620736c61736820696e646963657320746f2062652063616e63656c65642e642d20526561643a20556e6170706c69656420536c6173686573682d2057726974653a20556e6170706c69656420536c61736865732c23203c2f7765696768743e387061796f75745f7374616b65727308013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e6465780017640d01506179206f757420616c6c20746865207374616b65727320626568696e6420612073696e676c652076616c696461746f7220666f7220612073696e676c65206572612e0049012d206076616c696461746f725f73746173686020697320746865207374617368206163636f756e74206f66207468652076616c696461746f722e205468656972206e6f6d696e61746f72732c20757020746f2501202060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602c2077696c6c20616c736f207265636569766520746865697220726577617264732e31012d206065726160206d617920626520616e7920657261206265747765656e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e005501546865206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2e20416e79206163636f756e742063616e2063616c6c20746869732066756e6374696f6e2c206576656e206966746974206973206e6f74206f6e65206f6620746865207374616b6572732e00fc546869732063616e206f6e6c792062652063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743efc2d2054696d6520636f6d706c65786974793a206174206d6f7374204f284d61784e6f6d696e61746f72526577617264656450657256616c696461746f72292ec02d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e2c2d2d2d2d2d2d2d2d2d2d2d19014e20697320746865204e756d626572206f66207061796f75747320666f72207468652076616c696461746f722028696e636c7564696e67207468652076616c696461746f72291c5765696768743a842d205265776172642044657374696e6174696f6e205374616b65643a204f284e29c02d205265776172642044657374696e6174696f6e20436f6e74726f6c6c657220284372656174696e67293a204f284e29284442205765696768743a25012d20526561643a20457261456c656374696f6e5374617475732c2043757272656e744572612c20486973746f727944657074682c204572617356616c696461746f725265776172642c29012020202020202020457261735374616b657273436c69707065642c2045726173526577617264506f696e74732c204572617356616c696461746f725072656673202838206974656d73290d012d205265616420456163683a20426f6e6465642c204c65646765722c2050617965652c204c6f636b732c2053797374656d204163636f756e74202835206974656d7329d42d20577269746520456163683a2053797374656d204163636f756e742c204c6f636b732c204c6564676572202833206974656d73292c23203c2f7765696768743e187265626f6e6404011476616c7565d101013042616c616e63654f663c543e001838dc5265626f6e64206120706f7274696f6e206f6620746865207374617368207363686564756c656420746f20626520756e6c6f636b65642e005101546865206469737061746368206f726967696e206d757374206265207369676e65642062792074686520636f6e74726f6c6c65722c20616e642069742063616e206265206f6e6c792063616c6c6564207768656e885b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ed02d2054696d6520636f6d706c65786974793a204f284c292c207768657265204c20697320756e6c6f636b696e67206368756e6b73902d20426f756e64656420627920604d41585f554e4c4f434b494e475f4348554e4b53602ef02d2053746f72616765206368616e6765733a2043616e277420696e6372656173652073746f726167652c206f6e6c792064656372656173652069742e3c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743afc202020202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c204c6f636b732c205b4f726967696e204163636f756e745db4202020202d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e447365745f686973746f72795f64657074680801446e65775f686973746f72795f64657074680d040120457261496e6465780001485f6572615f6974656d735f64656c657465640d04010c7533320019542d015365742060486973746f72794465707468602076616c75652e20546869732066756e6374696f6e2077696c6c2064656c65746520616e7920686973746f727920696e666f726d6174696f6e7c7768656e2060486973746f727944657074686020697320726564756365642e002c506172616d65746572733a0d012d20606e65775f686973746f72795f6465707468603a20546865206e657720686973746f727920646570746820796f7520776f756c64206c696b6520746f207365742e45012d20606572615f6974656d735f64656c65746564603a20546865206e756d626572206f66206974656d7320746861742077696c6c2062652064656c6574656420627920746869732064697370617463682e4101202020546869732073686f756c64207265706f727420616c6c207468652073746f72616765206974656d7320746861742077696c6c2062652064656c6574656420627920636c656172696e67206f6c64410120202065726120686973746f72792e204e656564656420746f207265706f727420616e2061636375726174652077656967687420666f72207468652064697370617463682e20547275737465642062799c20202060526f6f746020746f207265706f727420616e206163637572617465206e756d6265722e00504f726967696e206d75737420626520726f6f742e002823203c7765696768743edc2d20453a204e756d626572206f6620686973746f7279206465707468732072656d6f7665642c20692e652e203130202d3e2037203d2033382d205765696768743a204f284529302d204442205765696768743a9c202020202d2052656164733a2043757272656e74204572612c20486973746f72792044657074686c202020202d205772697465733a20486973746f72792044657074682d01202020202d20436c6561722050726566697820456163683a20457261205374616b6572732c204572615374616b657273436c69707065642c204572617356616c696461746f7250726566737d01202020202d2057726974657320456163683a204572617356616c696461746f725265776172642c2045726173526577617264506f696e74732c2045726173546f74616c5374616b652c2045726173537461727453657373696f6e496e6465782c23203c2f7765696768743e28726561705f73746173680801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c753332001a3c5d0152656d6f766520616c6c20646174612073747275637475726520636f6e6365726e696e672061207374616b65722f7374617368206f6e6365206974732062616c616e636520697320617420746865206d696e696d756d2e5d015468697320697320657373656e7469616c6c79206571756976616c656e7420746f206077697468647261775f756e626f6e64656460206578636570742069742063616e2062652063616c6c656420627920616e796f6e65f4616e6420746865207461726765742060737461736860206d7573742068617665206e6f2066756e6473206c656674206265796f6e64207468652045442e008c546869732063616e2062652063616c6c65642066726f6d20616e79206f726967696e2e00fc2d20607374617368603a20546865207374617368206163636f756e7420746f20726561702e204974732062616c616e6365206d757374206265207a65726f2e002823203c7765696768743e2101436f6d706c65786974793a204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e73206f6e20746865206163636f756e742e284442205765696768743ad42d2052656164733a205374617368204163636f756e742c20426f6e6465642c20536c617368696e67205370616e732c204c6f636b73a1012d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c205374617368204163636f756e742c204c6f636b73702d2057726974657320456163683a205370616e536c617368202a20532c23203c2f7765696768743e607375626d69745f656c656374696f6e5f736f6c7574696f6e14011c77696e6e657273cd05014c5665633c56616c696461746f72496e6465783e00011c636f6d70616374d1050148436f6d7061637441737369676e6d656e747300011473636f72659d060134456c656374696f6e53636f726500010c657261100120457261496e64657800011073697a65a1060130456c656374696f6e53697a65001bc4e05375626d697420616e20656c656374696f6e20726573756c7420746f2074686520636861696e2e2049662074686520736f6c7574696f6e3a0030312e2069732076616c69642e1101322e206861732061206265747465722073636f7265207468616e206120706f74656e7469616c6c79206578697374696e6720736f6c7574696f6e206f6e20636861696e2e00807468656e2c2069742077696c6c206265205f7075745f206f6e20636861696e2e00a84120736f6c7574696f6e20636f6e7369737473206f662074776f20706965636573206f6620646174613a00f0312e206077696e6e657273603a206120666c617420766563746f72206f6620616c6c207468652077696e6e657273206f662074686520726f756e642e4d01322e206061737369676e6d656e7473603a2074686520636f6d706163742076657273696f6e206f6620616e2061737369676e6d656e7420766563746f72207468617420656e636f6465732074686520656467652c202020776569676874732e001d01426f7468206f66207768696368206d617920626520636f6d7075746564207573696e67205f70687261676d656e5f2c206f7220616e79206f7468657220616c676f726974686d2e00a44164646974696f6e616c6c792c20746865207375626d6974746572206d7573742070726f766964653a00c42d20546865206073636f7265602074686174207468657920636c61696d20746865697220736f6c7574696f6e206861732e004901426f74682076616c696461746f727320616e64206e6f6d696e61746f72732077696c6c20626520726570726573656e74656420627920696e646963657320696e2074686520736f6c7574696f6e2e205468651901696e64696365732073686f756c6420726573706563742074686520636f72726573706f6e64696e6720747970657320285b6056616c696461746f72496e646578605d20616e642d015b604e6f6d696e61746f72496e646578605d292e204d6f72656f7665722c20746865792073686f756c642062652076616c6964207768656e207573656420746f20696e64657820696e746f4d015b60536e617073686f7456616c696461746f7273605d20616e64205b60536e617073686f744e6f6d696e61746f7273605d2e20416e7920696e76616c696420696e6465782077696c6c206361757365207468655d01736f6c7574696f6e20746f2062652072656a65637465642e2054686573652074776f2073746f72616765206974656d73206172652073657420647572696e672074686520656c656374696f6e2077696e646f7720616e64946d6179206265207573656420746f2064657465726d696e652074686520696e64696365732e005c4120736f6c7574696f6e2069732076616c69642069663a00e0302e204974206973207375626d6974746564207768656e205b60457261456c656374696f6e537461747573605d20697320604f70656e602ef4312e2049747320636c61696d65642073636f726520697320657175616c20746f207468652073636f726520636f6d7075746564206f6e2d636861696e2ea8322e2050726573656e74732074686520636f7272656374206e756d626572206f662077696e6e6572732e5101332e20416c6c20696e6465786573206d7573742062652076616c7565206163636f7264696e6720746f2074686520736e617073686f7420766563746f72732e20416c6c20656467652076616c756573206d7573745901202020616c736f20626520636f727265637420616e642073686f756c64206e6f74206f766572666c6f7720746865206772616e756c6172697479206f662074686520726174696f20747970652028692e652e203235363c2020206f722062696c6c696f6e292e0901342e20466f72206561636820656467652c20616c6c2074617267657473206172652061637475616c6c79206e6f6d696e617465642062792074686520766f7465722e68352e2048617320636f72726563742073656c662d766f7465732e00bc4120736f6c7574696f6e732073636f726520697320636f6e736973746564206f66203320706172616d65746572733a006101312e20606d696e207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d6178696d697a65642e6101322e206073756d207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d696e696d697a65642e3d01332e206073756d207b20737570706f72742e746f74616c5e32207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265982020206d696e696d697a65642028746f20656e73757265206c6573732076617269616e636529002823203c7765696768743e1501546865207472616e73616374696f6e20697320617373756d656420746f20626520746865206c6f6e6765737420706174682c20612062657474657220736f6c7574696f6e2ea020202d20496e697469616c20736f6c7574696f6e20697320616c6d6f7374207468652073616d652e410120202d20576f72736520736f6c7574696f6e20697320726574726163656420696e207072652d64697370617463682d636865636b73207768696368207365747320697473206f776e207765696768742e2c23203c2f7765696768743e847375626d69745f656c656374696f6e5f736f6c7574696f6e5f756e7369676e656414011c77696e6e657273cd05014c5665633c56616c696461746f72496e6465783e00011c636f6d70616374d1050148436f6d7061637441737369676e6d656e747300011473636f72659d060134456c656374696f6e53636f726500010c657261100120457261496e64657800011073697a65a1060130456c656374696f6e53697a65001c24bc556e7369676e65642076657273696f6e206f6620607375626d69745f656c656374696f6e5f736f6c7574696f6e602e0059014e6f746520746861742074686973206d757374207061737320746865205b6056616c6964617465556e7369676e6564605d20636865636b207768696368206f6e6c7920616c6c6f7773207472616e73616374696f6e735d0166726f6d20746865206c6f63616c206e6f646520746f20626520696e636c756465642e20496e206f7468657220776f7264732c206f6e6c792074686520626c6f636b20617574686f722063616e20696e636c7564652061647472616e73616374696f6e20696e2074686520626c6f636b2e002823203c7765696768743e84536565205b607375626d69745f656c656374696f6e5f736f6c7574696f6e605d2e2c23203c2f7765696768743e607061796f75745f7374616b6572735f62795f73797374656d08013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e646578001d04210153797374656d2076657273696f6e206f6620607061796f75745f7374616b6572732829602e204f6e6c792062652063616c6c65642062792074686520726f6f74206f726967696e2e6c6368616e67655f736c617368696e675f616c6c6f7765645f666f7204013c736c617368696e675f73776974636899010138536c617368696e67537769746368001e14690153776974636820736c617368696e6720737461747573206f6e20746865206261736973206f6620676976656e2060536c617368696e67537769746368602e2043616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473742a206f726967696e202d204163636f756e744964206f6620726f6f742e01012a20736c617368696e675f737769746368202d20537769746368207573656420746f2073657420746865207461726765747320666f7220736c617368696e672eb07570646174655f7065726d697373696f6e65645f76616c696461746f725f696e74656e6465645f636f756e740801206964656e746974797c01284964656e7469747949640001486e65775f696e74656e6465645f636f756e7410010c753332001f18d05570646174652074686520696e74656e6465642076616c696461746f7220636f756e7420666f72206120676976656e204449442e002c2320417267756d656e747331012a206f726967696e207768696368206d75737420626520746865207265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e842a206964656e7469747920746f2061646420617320612076616c696461746f722ec42a206e65775f696e74656e6465645f636f756e74204e65772076616c7565206f6620696e74656e64656420636f756e742e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652eb505083870616c6c65745f7374616b696e674452657761726444657374696e6174696f6e04244163636f756e74496401000110185374616b656400000014537461736800010028436f6e74726f6c6c65720002001c4163636f756e7404000001244163636f756e74496400030000b905083870616c6c65745f7374616b696e673856616c696461746f7250726566730000080128636f6d6d697373696f6ebd05011c50657262696c6c00011c626c6f636b65641d010110626f6f6c0000bd05000006950100c105000002d50400c5050c3473705f61726974686d65746963287065725f7468696e67731c50657263656e740000040008010875380000c90504184f7074696f6e04045401100108104e6f6e6500000010536f6d650400100000010000cd050000020d0300d105083870616c6c65745f7374616b696e6748436f6d7061637441737369676e6d656e74730000400118766f74657331d50500000118766f74657332e10500000118766f74657333f50500000118766f74657334010600000118766f746573350d0600000118766f74657336190600000118766f74657337250600000118766f74657338310600000118766f746573393d060000011c766f746573313049060000011c766f746573313155060000011c766f746573313261060000011c766f74657331336d060000011c766f746573313479060000011c766f746573313585060000011c766f74657331369106000000d505000002d90500d905000004080d04dd0500dd050000060d0300e105000002e50500e5050000040c0d04e905dd0500e90500000408dd05ed0500ed05000006f10500f1050c3473705f61726974686d65746963287065725f7468696e677318506572553136000004000d03010c7531360000f505000002f90500f9050000040c0d04fd05dd0500fd0500000302000000e90500010600000205060005060000040c0d040906dd0500090600000303000000e905000d0600000211060011060000040c0d041506dd0500150600000304000000e9050019060000021d06001d060000040c0d042106dd0500210600000305000000e90500250600000229060029060000040c0d042d06dd05002d0600000306000000e90500310600000235060035060000040c0d043906dd0500390600000307000000e905003d0600000241060041060000040c0d044506dd0500450600000308000000e9050049060000024d06004d060000040c0d045106dd0500510600000309000000e90500550600000259060059060000040c0d045d06dd05005d060000030a000000e90500610600000265060065060000040c0d046906dd050069060000030b000000e905006d0600000271060071060000040c0d047506dd050075060000030c000000e9050079060000027d06007d060000040c0d048106dd050081060000030d000000e90500850600000289060089060000040c0d048d06dd05008d060000030e000000e90500910600000295060095060000040c0d049906dd050099060000030f000000e905009d06000003030000001800a106083870616c6c65745f7374616b696e6730456c656374696f6e53697a65000008012876616c696461746f7273dd05013856616c696461746f72496e6465780001286e6f6d696e61746f72730d0401384e6f6d696e61746f72496e6465780000a5060c3870616c6c65745f73657373696f6e1870616c6c65741043616c6c040454000108207365745f6b6579730801106b657973a906011c543a3a4b65797300011470726f6f6628011c5665633c75383e000038e453657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b657973602e1d01416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722ec05468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e00d0546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e002823203c7765696768743e11012d20436f6d706c65786974793a20604f283129602e2041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468206f6698202060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642eec2d20446252656164733a20606f726967696e206163636f756e74602c2060543a3a56616c696461746f7249644f66602c20604e6578744b65797360a02d2044625772697465733a20606f726967696e206163636f756e74602c20604e6578744b65797360802d204462526561647320706572206b65792069643a20604b65794f776e657260842d20446257726974657320706572206b65792069643a20604b65794f776e6572602c23203c2f7765696768743e2870757267655f6b657973000140c852656d6f76657320616e792073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c65722e00c05468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e005501546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265205369676e656420616e6420746865206163636f756e74206d757374206265206569746865722062655d01636f6e7665727469626c6520746f20612076616c696461746f72204944207573696e672074686520636861696e2773207479706963616c2061646472657373696e672073797374656d20287468697320757375616c6c7951016d65616e73206265696e67206120636f6e74726f6c6c6572206163636f756e7429206f72206469726563746c7920636f6e7665727469626c6520696e746f20612076616c696461746f722049442028776869636894757375616c6c79206d65616e73206265696e672061207374617368206163636f756e74292e002823203c7765696768743e61012d20436f6d706c65786974793a20604f2831296020696e206e756d626572206f66206b65792074797065732e2041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468a420206f662060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642eec2d20446252656164733a2060543a3a56616c696461746f7249644f66602c20604e6578744b657973602c20606f726967696e206163636f756e7460a02d2044625772697465733a20604e6578744b657973602c20606f726967696e206163636f756e7460842d20446257726974657320706572206b65792069643a20604b65794f776e6572602c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ea9060c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d652c53657373696f6e4b657973000010011c6772616e647061b10101d03c4772616e647061206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000110626162655d0401c43c42616265206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000124696d5f6f6e6c696e65bd0101d43c496d4f6e6c696e65206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300014c617574686f726974795f646973636f76657279ad0601fc3c417574686f72697479446973636f76657279206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c69630000ad060c5873705f617574686f726974795f646973636f766572790c617070185075626c696300000400c101013c737232353531393a3a5075626c69630000b1060c3870616c6c65745f6772616e6470611870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66b50601bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f6695040140543a3a4b65794f776e657250726f6f6600001009015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66b50601bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f6695040140543a3a4b65794f776e657250726f6f6600012409015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e000d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e306e6f74655f7374616c6c656408011464656c6179100138543a3a426c6f636b4e756d62657200016c626573745f66696e616c697a65645f626c6f636b5f6e756d626572100138543a3a426c6f636b4e756d62657200021c19014e6f74652074686174207468652063757272656e7420617574686f7269747920736574206f6620746865204752414e4450412066696e616c697479206761646765742068617325017374616c6c65642e20546869732077696c6c2074726967676572206120666f7263656420617574686f7269747920736574206368616e67652061742074686520626567696e6e696e671d016f6620746865206e6578742073657373696f6e2c20746f20626520656e6163746564206064656c61796020626c6f636b7320616674657220746861742e205468652064656c6179110173686f756c64206265206869676820656e6f75676820746f20736166656c7920617373756d6520746861742074686520626c6f636b207369676e616c6c696e67207468652501666f72636564206368616e67652077696c6c206e6f742062652072652d6f726765642028652e672e203130303020626c6f636b73292e20546865204752414e44504120766f74657273250177696c6c20737461727420746865206e657720617574686f7269747920736574207573696e672074686520676976656e2066696e616c697a656420626c6f636b20617320626173652e584f6e6c792063616c6c61626c6520627920726f6f742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632eb506084c73705f66696e616c6974795f6772616e6470614445717569766f636174696f6e50726f6f660804480124044e0110000801187365745f6964200114536574496400013065717569766f636174696f6eb906014845717569766f636174696f6e3c482c204e3e0000b906084c73705f66696e616c6974795f6772616e6470613045717569766f636174696f6e0804480124044e011001081c507265766f74650400bd060139016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265766f74653c482c204e3e2c0a417574686f726974795369676e61747572653e00000024507265636f6d6d69740400d1060141016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265636f6d6d69743c482c204e3e2c0a417574686f726974795369676e61747572653e00010000bd06084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401b101045601c106045301c50600100130726f756e645f6e756d62657220010c7536340001206964656e74697479b101010849640001146669727374cd06011828562c2053290001187365636f6e64cd06011828562c2053290000c106084066696e616c6974795f6772616e6470611c507265766f74650804480124044e01100008012c7461726765745f68617368240104480001347461726765745f6e756d6265721001044e0000c5060c4c73705f66696e616c6974795f6772616e6470610c617070245369676e617475726500000400c9060148656432353531393a3a5369676e61747572650000c9060c1c73705f636f72651c65643235353139245369676e617475726500000400150201205b75383b2036345d0000cd0600000408c106c50600d106084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401b101045601d506045301c50600100130726f756e645f6e756d62657220010c7536340001206964656e74697479b101010849640001146669727374d906011828562c2053290001187365636f6e64d906011828562c2053290000d506084066696e616c6974795f6772616e64706124507265636f6d6d69740804480124044e01100008012c7461726765745f68617368240104480001347461726765745f6e756d6265721001044e0000d90600000408d506c50600dd060c4070616c6c65745f696d5f6f6e6c696e651870616c6c65741043616c6c04045400010424686561727462656174080124686561727462656174e10601644865617274626561743c543a3a426c6f636b4e756d6265723e0001247369676e6174757265f50601bc3c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e61747572650000242823203c7765696768743e61012d20436f6d706c65786974793a20604f284b202b20452960207768657265204b206973206c656e677468206f6620604b6579736020286865617274626561742e76616c696461746f72735f6c656e2920616e642045206973d820206c656e677468206f6620606865617274626561742e6e6574776f726b5f73746174652e65787465726e616c5f61646472657373608820202d20604f284b29603a206465636f64696e67206f66206c656e67746820604b60ac20202d20604f284529603a206465636f64696e672f656e636f64696e67206f66206c656e6774682060456039012d20446252656164733a2070616c6c65745f73657373696f6e206056616c696461746f7273602c2070616c6c65745f73657373696f6e206043757272656e74496e646578602c20604b657973602c5820206052656365697665644865617274626561747360802d2044625772697465733a2060526563656976656448656172746265617473602c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ee106084070616c6c65745f696d5f6f6e6c696e6524486561727462656174042c426c6f636b4e756d626572011000140130626c6f636b5f6e756d62657210012c426c6f636b4e756d6265720001346e6574776f726b5f7374617465e50601484f70617175654e6574776f726b537461746500013473657373696f6e5f696e64657810013053657373696f6e496e64657800013c617574686f726974795f696e64657810012441757468496e64657800013876616c696461746f72735f6c656e10010c7533320000e5060c1c73705f636f7265206f6666636861696e484f70617175654e6574776f726b5374617465000008011c706565725f6964e90601304f706171756550656572496400014865787465726e616c5f616464726573736573ed0601505665633c4f70617175654d756c7469616464723e0000e906081c73705f636f7265304f70617175655065657249640000040028011c5665633c75383e0000ed06000002f10600f1060c1c73705f636f7265206f6666636861696e3c4f70617175654d756c7469616464720000040028011c5665633c75383e0000f506104070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139245369676e617475726500000400f9060148737232353531393a3a5369676e61747572650000f9060c1c73705f636f72651c73723235353139245369676e617475726500000400150201205b75383b2036345d0000fd06082c70616c6c65745f7375646f1043616c6c040454000110107375646f04011063616c6c81050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000028350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e547375646f5f756e636865636b65645f77656967687408011063616c6c81050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00011c5f776569676874200118576569676874000128350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e2d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b05375646f207573657220746f20737065636966792074686520776569676874206f66207468652063616c6c2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292ecc2d2054686520776569676874206f6620746869732063616c6c20697320646566696e6564206279207468652063616c6c65722e2c23203c2f7765696768743e1c7365745f6b657904010c6e6577d504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365000224710141757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e402d204f6e65204442206368616e67652e2c23203c2f7765696768743e1c7375646f5f617308010c77686fd504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011063616c6c81050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00032c4d0141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d406120676976656e206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e0107083070616c6c65745f61737365741043616c6c0404540001483c72656769737465725f7469636b65720401187469636b6572a401185469636b657200002405015265676973746572732061206e6577207469636b6572206f7220657874656e64732076616c6964697479206f6620616e206578697374696e67207469636b65722e11014e423a205469636b65722076616c696469747920646f6573206e6f742067657420636172727920666f7277617264207768656e2072656e6577696e67207469636b65722e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e782a20607469636b657260207469636b657220746f2072656769737465722e003423205065726d697373696f6e731c2a204173736574586163636570745f7469636b65725f7472616e7366657204011c617574685f696420010c75363400013068416363657074732061207469636b6572207472616e736665722e002d01436f6e73756d65732074686520617574686f72697a6174696f6e2060617574685f6964602028736565206070616c6c65745f6964656e746974793a3a636f6e73756d655f6175746860292e25014e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292ef82a2060617574685f69646020417574686f72697a6174696f6e204944206f66207469636b6572207472616e7366657220617574686f72697a6174696f6e2e00242323204572726f727369012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f696460206973206e6f7420612076616c6964207469636b6574207472616e7366657220617574686f72697a6174696f6e2e007c6163636570745f61737365745f6f776e6572736869705f7472616e7366657204011c617574685f696420010c753634000218ec546869732066756e6374696f6e206973207573656420746f20616363657074206120746f6b656e206f776e657273686970207472616e736665722e25014e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e2d012a2060617574685f69646020417574686f72697a6174696f6e204944206f662074686520746f6b656e206f776e657273686970207472616e7366657220617574686f72697a6174696f6e2e306372656174655f61737365741c01106e616d650102012441737365744e616d650001187469636b6572a401185469636b6572000124646976697369626c651d010110626f6f6c00012861737365745f74797065e901012441737365745479706500012c6964656e74696669657273f10101505665633c41737365744964656e7469666965723e00013466756e64696e675f726f756e64050701604f7074696f6e3c46756e64696e67526f756e644e616d653e00012864697361626c655f69751d010110626f6f6c0003682d01496e697469616c697a65732061206e657720736563757269747920746f6b656e2c20776974682074686520696e6974696174696e67206163636f756e7420617320697473206f776e65722e150154686520746f74616c20737570706c792077696c6c20696e697469616c6c79206265207a65726f2e20546f206d696e7420746f6b656e732c2075736520606973737565602e002c2320417267756d656e7473c5012a20606f726967696e60202d20636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e842a20606e616d6560202d20746865206e616d65206f662074686520746f6b656e2eb02a20607469636b657260202d20746865207469636b65722073796d626f6c206f662074686520746f6b656e2e2d012a2060646976697369626c6560202d206120626f6f6c65616e20746f206964656e74696679207468652064697669736962696c69747920737461747573206f662074686520746f6b656e2e802a206061737365745f7479706560202d2074686520617373657420747970652ec02a20606964656e7469666965727360202d206120766563746f72206f66206173736574206964656e746966696572732eb82a206066756e64696e675f726f756e6460202d206e616d65206f66207468652066756e64696e6720726f756e642e4d012a206064697361626c655f697560202d2077686574686572206f72206e6f7420696e766573746f7220756e697175656e65737320656e666f7263656d656e742073686f756c642062652064697361626c65642ec82020546869732063616e6e6f74206265206368616e676564206166746572206372656174696e67207468652061737365742e00242323204572726f7273fc2d2060496e76616c696441737365744964656e7469666965726020696620616e79206f6620606964656e74696669657273602061726520696e76616c69642e51012d20604d61784c656e6774684f6641737365744e616d6545786365656465646020696620606e616d65602773206c656e67746820657863656564732060543a3a41737365744e616d654d61784c656e677468602e55012d206046756e64696e67526f756e644e616d654d61784c656e67746845786365656465646020696620746865206e616d65206f66207468652066756e64696e6720726f756e64206973206c6f6e67657220746861747c60543a3a46756e64696e67526f756e644e616d654d61784c656e677468602ed42d20604173736574416c726561647943726561746564602069662061737365742077617320616c726561647920637265617465642e5d012d20605469636b6572546f6f4c6f6e676020696620607469636b6572602773206c656e6774682069732067726561746572207468616e2060636f6e6669672e6d61785f7469636b65725f6c656e6774686020636861696e28706172616d657465722ea1022d20605469636b65724e6f7441736369696020696620607469636b657260206973206e6f742079657420726567697374657265642c20616e6420636f6e7461696e73206e6f6e2d6173636969207072696e7461626c652063686172616374657273202866726f6d20636f646520333220746f2031323629206f7220616e7920636861726163746572206166746572206669727374206f6363757272656e6365206f6620605c30602e00382323205065726d697373696f6e732c2a20506f7274666f6c696f18667265657a650401187469636b6572a401185469636b657200042cbc467265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e00242323204572726f7273c02d2060416c726561647946726f7a656e6020696620607469636b65726020697320616c72656164792066726f7a656e2e003423205065726d697373696f6e731c2a20417373657420756e667265657a650401187469636b6572a401185469636b657200052cc4556e667265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722eb02a20607469636b657260202d20746865207469636b6572206f66207468652066726f7a656e20746f6b656e2e00242323204572726f7273b02d20604e6f7446726f7a656e6020696620607469636b657260206973206e6f742066726f7a656e207965742e003423205065726d697373696f6e731c2a2041737365743072656e616d655f61737365740801187469636b6572a401185469636b65720001106e616d650102012441737365744e616d650006345852656e616d6573206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e942a20606e616d6560202d20746865206e6577206e616d65206f662074686520746f6b656e2e00242323204572726f727311012d20604d61784c656e6774684f6641737365744e616d65457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e6060543a3a41737365744e616d654d61784c656e677468602e003423205065726d697373696f6e731c2a2041737365741469737375650801187469636b6572a401185469636b6572000118616d6f756e7418011c42616c616e636500072ca449737375652c206f72206d696e742c206e657720746f6b656e7320746f207468652063616c6c65722cac7768696368206d75737420626520616e20617574686f72697a65642065787465726e616c206167656e742e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e602a20607469636b657260206f662074686520746f6b656e2e942a2060616d6f756e7460206f6620746f6b656e73207468617420676574206973737565642e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f1872656465656d0801187469636b6572a401185469636b657200011476616c756518011c42616c616e636500083ccd0152656465656d73206578697374696e6720746f6b656e73206279207265647563696e67207468652062616c616e6365206f66207468652063616c6c657227732064656661756c7420706f7274666f6c696f20616e642074686520746f74616c20737570706c79206f662074686520746f6b656e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e942a206076616c75656020416d6f756e74206f6620746f6b656e7320746f2072656465656d2e002023204572726f727361012d2060556e617574686f72697a6564602049662063616c6c656420627920736f6d656f6e6520776974686f75742074686520617070726f7072696174652065787465726e616c206167656e74207065726d697373696f6e7359012d2060496e76616c69644772616e756c6172697479602049662074686520616d6f756e74206973206e6f7420646976697369626c652062792031305e3620666f72206e6f6e2d646976697369626c6520746f6b656e738d012d2060496e73756666696369656e74506f7274666f6c696f42616c616e636560204966207468652063616c6c657227732064656661756c7420706f7274666f6c696f20646f65736e2774206861766520656e6f75676820667265652062616c616e6365003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f386d616b655f646976697369626c650401187469636b6572a401185469636b657200092c944d616b657320616e20696e646976697369626c6520746f6b656e20646976697369626c652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e00242323204572726f7273ec2d20604173736574416c7265616479446976697369626c656020696620607469636b65726020697320616c726561647920646976697369626c652e003423205065726d697373696f6e731c2a204173736574346164645f646f63756d656e7473080110646f6373090701345665633c446f63756d656e743e0001187469636b6572a401185469636b6572000a248041646420646f63756d656e747320666f72206120676976656e20746f6b656e2e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2eb82a2060646f63736020446f63756d656e747320746f20626520617474616368656420746f20607469636b6572602e003423205065726d697373696f6e731c2a2041737365744072656d6f76655f646f63756d656e747308010c696473d502013c5665633c446f63756d656e7449643e0001187469636b6572a401185469636b6572000b248c52656d6f766520646f63756d656e747320666f72206120676976656e20746f6b656e2e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2ec82a20606964736020446f63756d656e74732069647320746f2062652072656d6f7665642066726f6d20607469636b6572602e003423205065726d697373696f6e731c2a204173736574447365745f66756e64696e675f726f756e640801187469636b6572a401185469636b65720001106e616d65e501014046756e64696e67526f756e644e616d65000c34ac5365747320746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e002c2320417267756d656e747329012a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2ee42a20606e616d6560202d207468652064657369726564206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e00242323204572726f727325012d206046756e64696e67526f756e644e616d654d61784c656e677468457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e7c60543a3a46756e64696e67526f756e644e616d654d61784c656e677468602e003423205065726d697373696f6e731c2a204173736574487570646174655f6964656e746966696572730801187469636b6572a401185469636b657200012c6964656e74696669657273f10101505665633c41737365744964656e7469666965723e000d34785570646174657320746865206173736574206964656e746966696572732e002c2320417267756d656e747329012a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e59012a20606964656e7469666965727360202d20746865206173736574206964656e7469666965727320746f206265207570646174656420696e2074686520666f726d206f66206120766563746f72206f66207061697273cc2020206f6620604964656e746966696572547970656020616e64206041737365744964656e746966696572602076616c75652e00242323204572726f727331012d2060496e76616c696441737365744964656e7469666965726020696620606964656e746966696572736020636f6e7461696e7320616e7920696e76616c6964206964656e7469666965722e003423205065726d697373696f6e731c2a20417373657450636c61696d5f636c61737369635f7469636b65720801187469636b6572a401185469636b6572000148657468657265756d5f7369676e61747572650d07013845636473615369676e6174757265000e38fc436c61696d20612073797374656d61746963616c6c7920726573657276656420506f6c796d61746820436c61737369632028504d432920607469636b657260ac616e64207472616e7366657220697420746f2074686520606f726967696e602773206964656e746974792e003d01546f2076657269667920746861742074686520606f726967696e6020697320696e20636f6e74726f6c206f662074686520457468657265756d206163636f756e74206f6e2074686520626f6f6b732c1101616e2060657468657265756d5f7369676e61747572656020636f6e7461696e696e672074686520606f726967696e6027732044494420617320746865206d657373616765a86d7573742062652070726f7669646564206279207468617420457468657265756d206163636f756e742e002023204572726f727331012d20604e6f53756368436c61737369635469636b6572602069662074686973206973206e6f7420612073797374656d61746963616c6c7920726573657276656420504d43207469636b65722e51012d20605469636b6572416c7265616479526567697374657265646020696620746865207469636b65722077617320616c726561647920726567697374657265642c20652e672e2c20627920606f726967696e602e1d012d20605469636b6572526567697374726174696f6e457870697265646020696620746865207469636b6572277320726567697374726174696f6e2068617320657870697265642e702d20604261644f726967696e60206966206e6f74207369676e65642e19012d2060496e76616c6964457468657265756d5369676e617475726560206966207468652060657468657265756d5f7369676e617475726560206973206e6f742076616c69642e29012d20604e6f74416e4f776e6572602069662074686520657468657265756d206163636f756e74206973206e6f7420746865206f776e6572206f662074686520504d43207469636b65722e58726573657276655f636c61737369635f7469636b65720c0154636c61737369635f7469636b65725f696d706f72741507014c436c61737369635469636b6572496d706f7274000130636f6e74726163745f6469647c01284964656e746974794964000118636f6e6669671907018c5469636b6572526567697374726174696f6e436f6e6669673c543a3a4d6f6d656e743e000f34a052657365727665206120506f6c796d61746820436c61737369632028504d4329207469636b65722e0d014d7573742062652063616c6c656420627920726f6f742c20616e642061737369676e7320746865207469636b657220746f20612073797374656d61746963204449442e002c2320417267756d656e7473782a20606f726967696e60207768696368206d75737420626520726f6f742eec2a2060636c61737369635f7469636b65725f696d706f7274602073706563696669636174696f6e20666f722074686520504d43207469636b65722e5d012a2060636f6e74726163745f6469646020746f207265736572766520746865207469636b657220746f2069662060636c61737369635f7469636b65725f696d706f72742e69735f636f6e74726163746020686f6c64732ebc2a2060636f6e6669676020746f2075736520666f722065787069727920616e64207469636b6572206c656e6774682e002023204572726f727349012a20604173736574416c726561647943726561746564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b65726020776173206372656174656420617320616e2061737365742e61012a20605469636b6572546f6f4c6f6e6760206966207468652060636f6e6669676020636f6e736964657273207468652060636c61737369635f7469636b65725f696d706f72742e7469636b65726020746f6f206c6f6e672e55012a20605469636b6572416c726561647952656769737465726564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b6572602077617320616c726561647920726567697374657265642e4c636f6e74726f6c6c65725f7472616e736665720c01187469636b6572a401185469636b657200011476616c756518011c42616c616e636500013866726f6d5f706f7274666f6c696fdc012c506f7274666f6c696f496400101c4d01466f726365732061207472616e73666572206f6620746f6b656e2066726f6d206066726f6d5f706f7274666f6c696f6020746f207468652063616c6c657227732064656661756c7420706f7274666f6c696f2e002c2320417267756d656e747355012a20606f726967696e60204d75737420626520616e2065787465726e616c206167656e74207769746820617070726f707269617465207065726d697373696f6e7320666f72206120676976656e207469636b65722e982a20607469636b657260205469636b65722073796d626f6c206f66207468652061737365742ecc2a206076616c7565602020416d6f756e74206f6620746f6b656e73206e65656420746f20666f726365207472616e736665722efc2a206066726f6d5f706f7274666f6c696f602046726f6d2077686f6d20706f7274666f6c696f20746f6b656e732067657473207472616e736665727265642e6872656769737465725f637573746f6d5f61737365745f74797065040108747928011c5665633c75383e00112478526567697374657273206120637573746f6d20617373657420747970652e00d05468652070726f766964656420607479602077696c6c20626520626f756e6420746f20616e20494420696e2073746f726167652ebc5468652049442063616e207468656e206265207573656420696e20604173736574547970653a3a437573746f6d602e250153686f756c6420746865206074796020616c726561647920657869737420696e2073746f726167652c206e6f207365636f6e642049442069732061737369676e656420746f2069742e002c2320417267756d656e7473902a20606f726967696e602077686f2063616c6c6564207468652065787472696e7369632ef02a206074796020636f6e7461696e732074686520737472696e6720726570726573656e746174696f6e206f662074686520617373657420747970652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e050704184f7074696f6e04045401e5010108104e6f6e6500000010536f6d650400e501000001000009070000020902000d070c4c706f6c796d6573685f7072696d69746976657320657468657265756d3845636473615369676e617475726500000400110701205b75383b2036355d000011070000034100000008001507083070616c6c65745f61737365744c436c61737369635469636b6572496d706f727400001001246574685f6f776e65723502013c457468657265756d416464726573730001187469636b6572a401185469636b657200012c69735f636f6e74726163741d010110626f6f6c00012869735f637265617465641d010110626f6f6c00001907083070616c6c65745f6173736574605469636b6572526567697374726174696f6e436f6e6669670404550120000801446d61785f7469636b65725f6c656e677468080108753800014c726567697374726174696f6e5f6c656e677468f801244f7074696f6e3c553e00001d070c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e1043616c6c04045400011428646973747269627574651c011463615f69644102011043414964000124706f7274666f6c696f2107015c4f7074696f6e3c506f7274666f6c696f4e756d6265723e00012063757272656e6379a401185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e63650001287061796d656e745f61742001184d6f6d656e74000128657870697265735f6174f801384f7074696f6e3c4d6f6d656e743e0000a82501537461727420616e64206174746163682061206361706974616c20646973747269627574696f6e2c20746f20746865204341206964656e746966696564206279206063615f6964602c6501776974682060616d6f756e74602066756e647320696e206063757272656e6379602077697468647261776e2066726f6d2060706f7274666f6c696f602062656c6f6e67696e6720746f20606f726967696e602773204449442e00290154686520646973747269627574696f6e2077696c6c20636f6d6d656e636520617420607061796d656e745f61746020616e64206578706972652061742060657870697265735f6174602cc869662070726f76696465642c206f7220696620604e6f6e65602c207468656e2074686572652773206e6f206578706972792e0025015468652066756e64732077696c6c206265206c6f636b656420696e2060706f7274666f6c696f602066726f6d207768656e206064697374726962757465602069732063616c6c65642e35015768656e2074686572652773206e6f206578706972792c20736f6d652066756e6473206d6179206265206c6f636b656420696e646566696e6974656c7920696e2060706f7274666f6c696f602c150164756520746f20636c61696d616e7473206e6f74207769746864726177696e67206f72206e6f2062656e6566697473206265696e672070757368656420746f207468656d2e2901466f7220696e646976697369626c652063757272656e636965732c20756e6c6f636b656420616d6f756e74732c206f66206c657373207468616e206f6e652077686f6c6520756e69742ca877696c6c206e6f74206265207472616e7366657261626c652066726f6d2060706f7274666f6c696f602e4d01486f77657665722c20696620776520696d6167696e6520746861742075736572732060416c6963656020616e642060426f626020626f74682061726520656e7469746c656420746f20312e3520756e6974732c5101616e64206f6e6c7920726563656976652060316020756e69747320656163682c207468656e2060302e35202b20302e35203d20316020756e69747320617265206c65667420696e2060706f7274666f6c696f602c6c7768696368206973206e6f77207472616e736665727261626c652e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e01012d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e59012d2060706f7274666f6c696f60207370656369666965732074686520706f7274666f6c696f206e756d626572206f6620746865206167656e7420746f20646973747269627574652060616d6f756e74602066726f6d2ef42d206063757272656e63796020746f20776974686472617720616e6420646973747269627574652066726f6d207468652060706f7274666f6c696f602ef82d20607065725f73686172656020616d6f756e74206f66206063757272656e63796020746f20776974686472617720616e6420646973747269627574652e25012020205370656369666965642061732061207065722d6d696c6c696f6e2c20692e652e206031202f2031305e36607468206f66206f6e65206063757272656e63796020746f6b656e2ef02d2060616d6f756e7460206f66206063757272656e63796020746f20776974686472617720616e642064697374726962757465206174206d6f73742e19012d20607061796d656e745f61746020737065636966696573207768656e2062656e6566697473206d617920666972737420626520707573686564206f7220636c61696d65642e29012d2060657870697265735f617460207370656369666965732c2069662070726f76696465642c207768656e2072656d61696e696e672062656e65666974732061726520666f726665697490202020616e64206d6179206265207265636c61696d656420627920606f726967696e602e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed02d2060446973747269627574696e67417373657460206966206063615f69642e7469636b6572203d3d2063757272656e6379602efc2d20604578706972794265666f72655061796d656e74602069662060657870697265735f61742e756e777261702829203c3d207061796d656e745f6174602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ea82d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652ee82d20605265636f72644461746541667465725374617274602069662043412773207265636f72642064617465203e207061796d656e745f61742e31012d2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f662060706f7274666f6c696f602e55012d2060496e73756666696369656e74506f7274666f6c696f42616c616e6365602069662060706f7274666f6c696f6020686173206c657373207468616e2060616d6f756e7460206f66206063757272656e6379602e01012d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e45012d206043414e6f7442656e656669746020696620746865204341206973206e6f74206f66206b696e64205072656469637461626c6542656e656669742f556e7072656469637461626c6542656e65666974003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f14636c61696d04011463615f6964410201104341496400015c0101436c61696d20612062656e65666974206f6620746865206361706974616c20646973747269627574696f6e20617474616368656420746f206063615f6964602e00a8546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5901506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e001101416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e39014d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c98746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e0030232320417267756d656e747345012d20606f726967696e60207768696368206d757374206265206120686f6c646572206f662074686520617373657420616e6420656c696769626c6520666f722074686520646973747269627574696f6e2e01012d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e002023204572726f727325012d2060486f6c646572416c7265616479506169646020696620606f726967696e602773204449442068617320616c7265616479207265636569766564206974732062656e656669742e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec42d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee42d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef42d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e35012d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e35012d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e21012d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e30707573685f62656e6566697408011463615f69644102011043414964000118686f6c6465727c01284964656e746974794964000260f8507573682062656e65666974206f6620616e206f6e676f696e6720646973747269627574696f6e20746f2074686520676976656e2060686f6c646572602e00a8546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5901506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e001101416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e39014d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c98746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e39012d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e7320746f20707573682062656e656669747320666f722e7c2d2060686f6c6465726020746f20707573682062656e656669747320746f2e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec42d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee42d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412edc2d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f74207461726765742060686f6c646572602e35012d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e35012d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e21012d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e1c7265636c61696d04011463615f6964410201104341496400032c90417373756d696e67206120646973747269627574696f6e2068617320657870697265642ce4756e6c6f636b207468652072656d61696e696e6720616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e0030232320417267756d656e747345012d20606f726967696e60207768696368206d757374206265207468652063726561746f72206f6620746865206361706974616c20646973747269627574696f6e207469656420746f206063615f6964602e1d012d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e20746f207265636c61696d20666f722e002023204572726f727319012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602e2d012d2060416c72656164795265636c61696d65646020696620746869732066756e6374696f6e2068617320616c7265616479206265656e2063616c6c6564207375636365737366756c6c792e842d20604e6f74457870697265646020696620606e6f77203c20657870697279602e4c72656d6f76655f646973747269627574696f6e04011463615f6964410201104341496400042cbc52656d6f766573206120646973747269627574696f6e2074686174206861736e27742073746172746564207965742cdc756e6c6f636b696e67207468652066756c6c20616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e49012d206063615f696460206964656e7469666965732074686520434120776974682061206e6f742d7965742d73746172746564206361706974616c20646973747269627574696f6e20746f2072656d6f76652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ebc2d2060446973747269627574696f6e537461727465646020696620607061796d656e745f6174203c3d206e6f77602e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e210704184f7074696f6e04045401e40108104e6f6e6500000010536f6d650400e4000001000025070c3070616c6c65745f617373657428636865636b706f696e741043616c6c040454000110446372656174655f636865636b706f696e740401187469636b6572a401185469636b6572000024c04372656174657320612073696e676c6520636865636b706f696e74206174207468652063757272656e742074696d652e002c2320417267756d656e74732d012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602ea02d20607469636b65726020746f206372656174652074686520636865636b706f696e7420666f722e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e0d012d2060436f756e7465724f766572666c6f77602069662074686520746f74616c20636865636b706f696e7420636f756e74657220776f756c64206f766572666c6f772e707365745f7363686564756c65735f6d61785f636f6d706c65786974790401386d61785f636f6d706c657869747920010c75363400012459015365747320746865206d617820636f6d706c6578697479206f662061207363686564756c652073657420666f7220616e20617262697472617279207469636b657220746f20606d61785f636f6d706c6578697479602eb8546865206e6577206d6178696d756d206973206e6f7420656e666f7263656420726574726f6163746976656c792cb4616e64206f6e6c79206170706c696573206f6e6365206e6577207363686564756c657320617265206d6164652e00a84d7573742062652063616c6c6564206173206120504950202872657175697265732022726f6f7422292e002c2320417267756d656e7473782d20606f726967696e602069732074686520726f6f74206f726967696e2e09012d20606d61785f636f6d706c65786974796020616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365742e3c6372656174655f7363686564756c650801187469636b6572a401185469636b65720001207363686564756c65290701305363686564756c655370656300024ca4437265617465732061207363686564756c652067656e65726174696e6720636865636b706f696e7473d4696e20746865206675747572652061742065697468657220612066697865642074696d65206f7220617420696e74657276616c732e000901546865207363686564756c6520737461727473206f7574207769746820607374726f6e675f7265665f636f756e74287363686564756c655f696429203c2d2030602e002c2320417267756d656e747321012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e982d20607469636b65726020746f2063726561746520746865207363686564756c6520666f722eb02d20607363686564756c656020746861742077696c6c2067656e657261746520636865636b706f696e74732e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e0d012d20605363686564756c654475726174696f6e546f6f53686f72746020696620746865207363686564756c65206475726174696f6e20697320746f6f2073686f72742e21012d2060496e73756666696369656e744163636f756e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c64206e6f7420626520636861726765642e4d012d2060436f756e7465724f766572666c6f776020696620746865207363686564756c65204944206f7220746f74616c20636865636b706f696e7420636f756e7465727320776f756c64206f766572666c6f772e5d012d20604661696c6564546f436f6d707574654e657874436865636b706f696e746020696620746865206e65787420636865636b706f696e7420666f7220607363686564756c656020697320696e2074686520706173742e003423205065726d697373696f6e731c2a2041737365743c72656d6f76655f7363686564756c650801187469636b6572a401185469636b657200010869646d0201285363686564756c654964000338fc52656d6f7665732074686520636865636b706f696e74207363686564756c65206f6620616e206173736574206964656e74696669656420627920606964602e002c2320417267756d656e747321012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e9c2d20607469636b65726020746f2072656d6f766520746865207363686564756c652066726f6d2e09012d2060696460206f6620746865207363686564756c652c207768656e2069742077617320637265617465642062792060637265617465645f7363686564756c65602e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e41012d20604e6f436865636b706f696e745363686564756c6560206966206069646020646f6573206e6f74206964656e746966792061207363686564756c6520666f72207468697320607469636b6572602ef42d20605363686564756c654e6f7452656d6f7661626c656020696620606964602065786973747320627574206973206e6f742072656d6f7661626c652e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e29070c3070616c6c65745f617373657428636865636b706f696e74305363686564756c655370656300000c01147374617274f801384f7074696f6e3c4d6f6d656e743e000118706572696f646502013843616c656e646172506572696f6400012472656d61696e696e6710010c75333200002d07086470616c6c65745f636f6d706c69616e63655f6d616e616765721043616c6c040454000124686164645f636f6d706c69616e63655f726571756972656d656e740c01187469636b6572a401185469636b657200014473656e6465725f636f6e646974696f6e73790201385665633c436f6e646974696f6e3e00014c72656365697665725f636f6e646974696f6e73790201385665633c436f6e646974696f6e3e00002c050141646473206120636f6d706c69616e636520726571756972656d656e7420746f20616e206173736574277320636f6d706c69616e6365206279207469636b65722ef849662074686520636f6d706c69616e636520726571756972656d656e742069732061206475706c69636174652c20697420646f6573206e6f7468696e672e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574c42a2073656e6465725f636f6e646974696f6e73202d2053656e646572207472616e7366657220636f6e646974696f6e732ed42a2072656365697665725f636f6e646974696f6e73202d205265636569766572207472616e7366657220636f6e646974696f6e732e003423205065726d697373696f6e731c2a2041737365747472656d6f76655f636f6d706c69616e63655f726571756972656d656e740801187469636b6572a401185469636b6572000108696410010c753332000124f052656d6f766573206120636f6d706c69616e636520726571756972656d656e742066726f6d20616e206173736574277320636f6d706c69616e63652e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574f02a206964202d20436f6d706c69616e636520726571756972656d656e74206964207768696368206973206e65656420746f2062652072656d6f766564003423205065726d697373696f6e731c2a204173736574607265706c6163655f61737365745f636f6d706c69616e63650801187469636b6572a401185469636b657200014061737365745f636f6d706c69616e6365a10201685665633c436f6d706c69616e6365526571756972656d656e743e00023cfc5265706c6163657320616e206173736574277320636f6d706c69616e6365206279207469636b657220776974682061206e657720636f6d706c69616e63652e00fc436f6d706c69616e636520726571756972656d656e74732077696c6c20626520736f727465642028617363656e64696e6720627920696429206265666f72658c7265706c6163696e67207468652063757272656e7420726571756972656d656e74732e002c2320417267756d656e7473782a20607469636b657260202d20746865206173736574207469636b65722cbc2a206061737365745f636f6d706c69616e6365202d20746865206e657720617373657420636f6d706c69616e63652e002023204572726f7273f02a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722eb1012a20604475706c69636174654173736574436f6d706c69616e636560206966206061737365745f636f6d706c69616e63656020636f6e7461696e73206d756c7469706c6520656e74726965732077697468207468652073616d652060726571756972656d656e745f6964602e003423205065726d697373696f6e731c2a2041737365745872657365745f61737365745f636f6d706c69616e63650401187469636b6572a401185469636b65720003207452656d6f76657320616e206173736574277320636f6d706c69616e6365002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a2041737365745870617573655f61737365745f636f6d706c69616e63650401187469636b6572a401185469636b657200042011015061757365732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a2041737365745c726573756d655f61737365745f636f6d706c69616e63650401187469636b6572a401185469636b65720005201501526573756d65732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a204173736574806164645f64656661756c745f747275737465645f636c61696d5f6973737565720801187469636b6572a401185469636b65720001186973737565729102013454727573746564497373756572000624f84164647320616e6f746865722064656661756c74207472757374656420636c61696d2069737375657220617420746865207469636b6572206c6576656c2e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742ec82a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e003423205065726d697373696f6e731c2a2041737365748c72656d6f76655f64656661756c745f747275737465645f636c61696d5f6973737565720801187469636b6572a401185469636b65720001186973737565727c01284964656e746974794964000724750152656d6f7665732074686520676976656e2060697373756572602066726f6d2074686520736574206f662064656661756c74207472757374656420636c61696d206973737565727320617420746865207469636b6572206c6576656c2e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742ec82a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e003423205065726d697373696f6e731c2a204173736574746368616e67655f636f6d706c69616e63655f726571756972656d656e740801187469636b6572a401185469636b657200011c6e65775f72657175020154436f6d706c69616e6365526571756972656d656e74000824f04d6f6469667920616e206578697374696e6720636f6d706c69616e636520726571756972656d656e74206f66206120676976656e207469636b65722e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742e8c2a206e65775f726571202d20436f6d706c69616e636520726571756972656d656e742e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e3107086070616c6c65745f636f72706f726174655f616374696f6e731043616c6c040454000120587365745f6d61785f64657461696c735f6c656e6774680401186c656e67746810010c753332000008d053657420746865206d617820606c656e67746860206f66206064657461696c736020696e207465726d73206f662062797465732e744d6179206f6e6c792062652063616c6c6564207669612061205049502e4c7365745f64656661756c745f746172676574730801187469636b6572a401185469636b657200011c74617267657473a90201405461726765744964656e746974696573000134cc536574207468652064656661756c7420434120605461726765744964656e7469746965736020746f206074617267657473602e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ee42d20607469636b65726020666f72207768696368207468652064656661756c74206964656e74697469657320617265206368616e67696e672ecc2d20607461726765747360207468652064656661756c7420746172676574206964656e74697469657320666f7220612043412e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e31012d2060546f6f4d616e79546172676574496473602069662060746172676574732e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e003423205065726d697373696f6e731c2a2041737365746c7365745f64656661756c745f77697468686f6c64696e675f7461780801187469636b6572a401185469636b657200010c7461784d02010c5461780002303d01536574207468652064656661756c742077697468686f6c64696e672074617820666f7220616c6c204449447320616e64204341732072656c6576616e7420746f207468697320607469636b6572602e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ec82d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2e05012d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e003423205065726d697373696f6e731c2a2041737365745c7365745f6469645f77697468686f6c64696e675f7461780c01187469636b6572a401185469636b657200012474617865645f6469647c01284964656e74697479496400010c746178b102012c4f7074696f6e3c5461783e000340f4536574207468652077697468686f6c64696e6720746178206f6620607469636b65726020666f72206074617865645f6469646020746f2060746178602e810149662060536f6d652874617829602c2074686973206f7665727269646573207468652064656661756c742077697468686f6c64696e6720746178206f6620607469636b65726020746f20607461786020666f72206074617865645f646964602efc4f74686572776973652c20696620604e6f6e65602c207468652064656661756c742077697468686f6c64696e67207461782077696c6c20626520757365642e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ec82d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2ee42d206074617865645f6469646020746861742077696c6c2068617665206974732077697468686f6c64696e672074617820757064617465642e05012d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e81012d2060546f6f4d616e794469645461786573602069662060536f6d6528746178296020616e6420616464696e6720746865206f7665727269646520776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e003423205065726d697373696f6e731c2a20417373657464696e6974696174655f636f72706f726174655f616374696f6e2001187469636b6572a401185469636b65720001106b696e64b902011843414b696e640001246465636c5f646174652001184d6f6d656e7400012c7265636f72645f64617465350701584f7074696f6e3c5265636f726444617465537065633e00011c64657461696c73d1020124434144657461696c7300011c746172676574733d0701604f7074696f6e3c5461726765744964656e7469746965733e00015c64656661756c745f77697468686f6c64696e675f746178b102012c4f7074696f6e3c5461783e00013c77697468686f6c64696e675f746178410701784f7074696f6e3c5665633c284964656e7469747949642c20546178293e3e0004784901496e69746961746573206120434120666f7220607469636b657260206f6620606b696e64602077697468206064657461696c736020616e64206f746865722070726f766964656420617267756d656e74732e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732e8c2d20607469636b657260207468617420746865204341206973206d61646520666f722e7c2d20606b696e6460206f66204341206265696e6720696e697469617465642e982d20606465636c5f6461746560206f66204341206272696e6720696e697469616c697a65642ef02d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f6620746869732043412e610120202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e4d012d206064657461696c7360206f662074686520434120696e20667265652d7465787420666f726d2c20757020746f2061206365727461696e206e756d626572206f6620627974657320696e206c656e6774682ef42d206074617267657473602c20696620616e792c20776869636820746869732043412069732072656c6576616e742f697272656c6576616e7420746f2e49012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f7461726765747360292e5d012d206064656661756c745f77697468686f6c64696e675f746178602c20696620616e792c206973207468652064656661756c742077697468686f6c64696e672074617820746f2075736520666f7220746869732043412e69012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f77697468686f6c64696e675f74617860292e21012d206077697468686f6c64696e675f746178602c20696620616e792c2070726f7669646573207065722d4449442077697468686f6c64696e6720746178206f76657272696465732e59012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f6469645f77697468686f6c64696e675f74617860292e002023204572726f72731d012d206044657461696c73546f6f4c6f6e6760206966206064657461696c732e6c656e28296020676f6573206265796f6e6420606d61785f64657461696c735f6c656e677468602e25012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e69012d2060436f756e7465724f766572666c6f776020696e2074686520756e6c696b656c79206576656e74207468617420736f206d616e79204341732077657265206372656174656420666f72207468697320607469636b6572602cf820207468617420696e7465676572206f766572666c6f7720776f756c642068617665206f63637572656420696620696e737465616420616c6c6f7765642e75012d2060546f6f4d616e79446964546178657360206966206077697468686f6c64696e675f7461782e756e7772617028292e6c656e28296020776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e01012d20604475706c69636174654469645461786020696620612044494420697320696e636c75646564206d6f7265207468616e206f6e636520696e20607774602e55012d2060546f6f4d616e79546172676574496473602069662060746172676574732e756e7772617028292e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e01012d20604465636c44617465496e4675747572656020696620746865206465636c61726174696f6e2064617465206973206e6f7420696e2074686520706173742e51012d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e003423205065726d697373696f6e731c2a2041737365742c6c696e6b5f63615f646f6308010869644102011043414964000110646f6373d502013c5665633c446f63756d656e7449643e000548ac4c696e6b2074686520676976656e204341206069646020746f2074686520676976656e2060646f6373602ef4416e792070726576696f7573206c696e6b7320666f7220746865204341206172652072656d6f76656420696e206661766f72206f662060646f6373602e00550154686520776f726b666c6f77206865726520697320746f206164642074686520646f63756d656e747320616e6420696e6974696174696e672074686520434120696e20616e79206f7264657220646573697265642ec44f6e636520626f74682065786973742c20746865792063616e206e6f77206265206c696e6b656420746f6765746865722e0030232320417267756d656e747351012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206069642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732ea82d2060696460206f662074686520434120746f206173736f636961746520776974682060646f6373602eb02d2060646f63736020746f206173736f6369617465207769746820746865204341207769746820606964602e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e19012d20604e6f53756368446f636020696620616e79206f662060646f63736020646f6573206e6f74206964656e7469667920616e206578697374696e6720646f63756d656e742e003423205065726d697373696f6e731c2a2041737365742472656d6f76655f636104011463615f696441020110434149640006489452656d6f76657320746865204341206964656e746966696564206279206063615f6964602e00c44173736f63696174656420646174612c207375636820617320646f63756d656e74206c696e6b732c2062616c6c6f74732cac616e64206361706974616c20646973747269627574696f6e732061726520616c736f2072656d6f7665642e00d4416e79207363686564756c65206173736f636961746564207769746820746865207265636f726420646174652077696c6c20736565b0607374726f6e675f7265665f636f756e74287363686564756c655f696429602064656372656d656e7465642e0030232320417267756d656e74735d012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e782d206063615f696460206f662074686520434120746f2072656d6f76652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e003423205065726d697373696f6e731c2a204173736574486368616e67655f7265636f72645f6461746508011463615f6964410201104341496400012c7265636f72645f64617465350701584f7074696f6e3c5265636f726444617465537065633e00073ce04368616e67657320746865207265636f72642064617465206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e74735d012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e742d206063615f696460206f662074686520434120746f20616c7465722eec2d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f66207468652043412e610120202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e51012d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e350704184f7074696f6e0404540139070108104e6f6e6500000010536f6d650400390700000100003907086070616c6c65745f636f72706f726174655f616374696f6e73385265636f7264446174655370656300010c245363686564756c656404002001184d6f6d656e74000000404578697374696e675363686564756c6504006d0201285363686564756c654964000100204578697374696e67040059020130436865636b706f696e744964000200003d0704184f7074696f6e04045401a9020108104e6f6e6500000010536f6d650400a9020000010000410704184f7074696f6e04045401c9020108104e6f6e6500000010536f6d650400c902000001000045070c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f741043616c6c040454000118346174746163685f62616c6c6f7410011463615f6964410201104341496400011472616e6765dd02013c42616c6c6f7454696d6552616e67650001106d657461e102012842616c6c6f744d65746100010c7263761d010110626f6f6c000068e8417474616368206120636f72706f726174652062616c6c6f7420746f20746865204341206964656e746966696564206279206063615f6964602e00ac5468652062616c6c6f742077696c6c2061646d697420766f7465732077697468696e206072616e6765602eb05468652062616c6c6f742773206d657461646174612069732070726f766964656420627920606d657461602c0501776869636820696e636c75646573207468652062616c6c6f74207469746c652c20746865206d6f74696f6e732c2074686569722063686f696365732c206574632e7853656520746865206042616c6c6f744d6574616020666f72206d6f72652e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602ed02d206063615f696460206964656e7469666965732074686520434120746f20617474616368207468652062616c6c6f7420746f2ec02d206072616e67656020737065636966696573207768656e20766f74696e672073746172747320616e6420656e64732eec2d20606d6574616020737065636966696573207468652062616c6c6f742773206d657461646174612061732061666f72656d656e74696f6e65642ee42d2060726376602073706563696669657320776865746865722052435620697320656e61626c656420666f7220746869732062616c6c6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef02d206043414e6f744e6f746963656020696620746865204341206973206e6f74206f662074686520604973737565724e6f7469636560206b696e642ebc2d206053746172744166746572456e6460206966206072616e67652e7374617274203e2072616e67652e656e64602e29012d20604e6f774166746572456e646020696620606e6f77203e2072616e67652e656e646020776865726520606e6f7760206973207468652063757272656e742074696d657374616d702ea82d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652e59012d20605265636f7264446174654166746572537461727460206966206064617465203e2072616e67652e73746172746020776865726520606461746560206973207468652043412773207265636f726420646174652eb82d2060416c726561647945786973747360206966207468657265277320612062616c6c6f7420616c72656164792e31012d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e09012d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e01012d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e10766f746508011463615f69644102011043414964000114766f7465730103013c5665633c42616c6c6f74566f74653e0001441101436173742060766f7465736020696e207468652062616c6c6f7420617474616368656420746f20746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747309012d20606f726967696e60207768696368206d7573742062652061207065726d697373696f6e6564207369676e6572207461726765746564206279207468652043412eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e21012d2060766f7465736020737065636966696573207468652062616c616e63657320746f2061737369676e20746f20656163682063686f69636520696e207468652062616c6c6f742e55012020205468652066756c6c20766f74696e6720706f776572206f6620606f726967696e60277320444944206d6179206265207573656420666f722065616368206d6f74696f6e20696e207468652062616c6c6f742e002023204572726f7273dc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742efc2d2060566f74696e674e6f7453746172746564602069662074686520766f74696e6720706572696f64206861736e277420636f6d6d656e636564207965742ed82d2060566f74696e67416c7265616479456e646564602069662074686520766f74696e6720706572696f642068617320656e6465642e5d012d206057726f6e67566f7465436f756e746020696620746865206e756d626572206f662063686f6963657320696e207468652062616c6c6f7420646f6573206e6f74206d617463682060766f7465732e6c656e2829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef42d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e21012d2060496e73756666696369656e74566f746573602069662074686520766f74696e6720706f776572207573656420666f7220616e79206d6f74696f6e20696e2060766f74657360a42020206578636565647320606f726967696e60277320444944277320766f74696e6720706f7765722e286368616e67655f656e6408011463615f6964410201104341496400010c656e642001184d6f6d656e740002300501416d656e642074686520656e642064617465206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ec42d2060656e64602073706563696669657320746865206e657720656e642064617465206f66207468652062616c6c6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e8c2d206053746172744166746572456e646020696620607374617274203e20656e64602e2c6368616e67655f6d65746108011463615f696441020110434149640001106d657461e102012842616c6c6f744d6574610003346101416d656e6420746865206d6574616461746120287469746c652c206d6f74696f6e732c206574632e29206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e902d20606d657461602073706563696669657320746865206e6577206d657461646174612e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e31012d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e09012d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e286368616e67655f72637608011463615f6964410201104341496400010c7263761d010110626f6f6c00042c0501416d656e642052435620737570706f727420666f72207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ecc2d206072637660207370656369666965732069662052435620697320746f20626520737570706f72746564206f72206e6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e3472656d6f76655f62616c6c6f7404011463615f69644102011043414964000528c852656d6f7665207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e4907082c70616c6c65745f706970731043616c6c040454000144647365745f7072756e655f686973746f726963616c5f706970730401147072756e651d010110626f6f6c000014a44368616e6765207768657468657220636f6d706c65746564205049507320617265207072756e65642e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473f02a20607072756e656020737065636966696573207768657468657220636f6d706c6574656420504950732073686f756c64206265207072756e65642e607365745f6d696e5f70726f706f73616c5f6465706f73697404011c6465706f73697418011c42616c616e636500011421014368616e676520746865206d696e696d756d2070726f706f73616c206465706f73697420616d6f756e7420726571756972656420746f20737461727420612070726f706f73616c2e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473f02a20606465706f7369746020746865206e6577206d696e206465706f73697420726571756972656420746f20737461727420612070726f706f73616c707365745f64656661756c745f656e6163746d656e745f706572696f640401206475726174696f6e100138543a3a426c6f636b4e756d626572000214904368616e6765207468652064656661756c7420656e6163746d656e7420706572696f642e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e747369012a20606475726174696f6e6020746865206e65772064656661756c7420656e6163746d656e7420706572696f642069742074616b657320666f722061207363686564756c65642050495020746f2062652065786563757465642e587365745f70656e64696e675f7069705f657870697279040118657870697279450101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e00031805014368616e67652074686520616d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020697320657870697265642eb4496620606578706972796020697320604e6f6e6560207468656e2050495073206e65766572206578706972652e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e74731d012a2060657870697279602074686520626c6f636b2d74696d652069742074616b657320666f722061207374696c6c2d6050656e64696e67602050495020746f206578706972652e587365745f6d61785f7069705f736b69705f636f756e7404010c6d6178080130536b6970706564436f756e74000414d44368616e676520746865206d6178696d756d20736b697020636f756e742028606d61785f7069705f736b69705f636f756e7460292e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473ec2a20606d61786020736b697073206265666f72652061205049502063616e6e6f7420626520736b697070656420627920474320616e796d6f72652e507365745f6163746976655f7069705f6c696d69740401146c696d697410010c75333200051469014368616e676520746865206d6178696d756d206e756d626572206f66206163746976652050495073206265666f726520636f6d6d756e697479206d656d626572732063616e6e6f742070726f706f736520616e797468696e672e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473902a20606c696d697460206f6620636f6e63757272656e742061637469766520504950732e1c70726f706f736510012070726f706f73616c81050140426f783c543a3a50726f706f73616c3e00011c6465706f73697418011c42616c616e636500010c75726c2103012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e290301584f7074696f6e3c5069704465736372697074696f6e3e000624050141206e6574776f726b206d656d6265722063726561746573206120504950206279207375626d697474696e67206120646973706174636861626c6520776869636855016368616e67657320746865206e6574776f726b20696e20736f6d657761792e2041206d696e696d756d206465706f73697420697320726571756972656420746f206f70656e2061206e65772070726f706f73616c2e002c2320417267756d656e7473c82a206070726f706f73657260206973206569746865722061207369676e696e67206b6579206f7220636f6d6d69747465652e65012020205573656420746f20756e6465727374616e6420776865746865722074686973206973206120636f6d6d69747465652070726f706f73616c20616e6420766572696669656420616761696e737420606f726967696e602e802a206070726f706f73616c60206120646973706174636861626c652063616c6c45012a20606465706f73697460206d696e696d756d206465706f7369742076616c75652c2077686963682069732069676e6f726564206966206070726f706f73657260206973206120636f6d6d69747465652ecc2a206075726c602061206c696e6b20746f2061207765627369746520666f722070726f706f73616c2064697363757373696f6e10766f74650c010869641d03011450697049640001286179655f6f725f6e61791d010110626f6f6c00011c6465706f73697418011c42616c616e63650007481d01566f74652065697468657220696e206661766f722028606179655f6f725f6e617960203d3d207472756529206f7220616761696e7374206120504950207769746820606964602e4d015468652022636f6e76696e6374696f6e22206f7220737472656e677468206f662074686520766f746520697320676976656e20627920606465706f736974602c2077686963682069732072657365727665642e008c4e6f746520746861742060766f746560206973202a6e6f742a2061646469746976652ef8546861742069732c2060766f74652869642c20747275652c203530296020666f6c6c6f7765642062792060766f74652869642c20747275652c2034302960490177696c6c2066697273742072657365727665206035306020616e64207468656e20726566756e6420603530202d203130602c20656e64696e672075702077697468206034306020696e206465706f7369742e2501546f206164642061746f70206f66206578697374696e6720766f7465732c20796f75276c6c206e65656420606578697374696e675f6465706f736974202b206164646974696f6e602e002c2320417267756d656e74734c2a20606964602c2070726f706f73616c206964dc2a20606179655f6f725f6e6179602c206120626f6f6c20726570726573656e74696e6720666f72206f7220616761696e737420766f7465e82a20606465706f736974602c207468652022636f6e76696374696f6e2220776974682077686963682074686520766f7465206973206d6164652e002023204572726f7273e42a20604e6f5375636850726f706f73616c60206966206069646020646f65736e2774207265666572656e636520612076616c6964205049502ee42a20604e6f7446726f6d436f6d6d756e697479602069662070726f706f73616c20776173206d616465206279206120636f6d6d69747465652ec02a2060496e636f727265637450726f706f73616c537461746560206966205049502069736e27742070656e64696e672e2d012a2060496e73756666696369656e744465706f7369746020696620606f726967696e602063616e6e6f74207265736572766520606465706f736974202d206f6c645f6465706f736974602e68617070726f76655f636f6d6d69747465655f70726f706f73616c04010869641d030114506970496400081cd4417070726f766573207468652070656e64696e6720636f6d6d69747465652050495020676976656e2062792074686520606964602e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ee42a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c2069736e27742070656e64696e672ee02a20604e6f744279436f6d6d697474656560206966207468652070726f706f73616c2069736e2774206279206120636f6d6d69747465652e3c72656a6563745f70726f706f73616c04010869641d0301145069704964000920f852656a65637473207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e7920626f6e6465642066756e64732cb8617373756d696e67206974206861736e2774206265656e2063616e63656c6c6564206f722065786563757465642e05014e6f746520746861742070726f706f73616c73207363686564756c65642d666f722d657865637574696f6e2063616e20616c736f2062652072656a65637465642e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742e15012a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c207761732063616e63656c6c6564206f722065786563757465642e387072756e655f70726f706f73616c04010869641d0301145069704964000a2429015072756e65207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e792066756e6473206e6f7420616c726561647920726566756e6465642e6454686520504950206d6179206e6f7420626520616374697665000901546869732066756e6374696f6e20697320696e74656e64656420666f722073746f72616765206761726261676520636f6c6c656374696f6e20707572706f7365732e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ed42a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c206973206163746976652e5072657363686564756c655f657865637574696f6e08010869641d0301145069704964000114756e74696cc90501584f7074696f6e3c543a3a426c6f636b4e756d6265723e000b24e0557064617465732074686520657865637574696f6e207363686564756c65206f66207468652050495020676976656e20627920606964602e002c2320417267756d656e747331012a2060756e74696c6020646566696e6573207468652066757475726520626c6f636b2077686572652074686520656e6163746d656e7420706572696f642077696c6c2066696e69736865642e4501202020604e6f6e65602076616c7565206d65616e73207468617420656e6163746d656e7420706572696f6420697320676f696e6720746f2066696e69736820696e20746865206e65787420626c6f636b2e002023204572726f727339012a206052657363686564756c654e6f74427952656c65617365436f6f7264696e61746f726020756e6c657373207472696767657265642062792072656c6561736520636f6f7264696e61746f722e21012a2060496e636f727265637450726f706f73616c53746174656020756e6c657373207468652070726f706f73616c2077617320696e2061207363686564756c65642073746174652e38636c6561725f736e617073686f74000c10e8436c656172732074686520736e617073686f7420616e6420656d69747320746865206576656e742060536e617073686f74436c6561726564602e002023204572726f72733d012a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e20736e617073686f74000d140d0154616b65732061206e657720736e617073686f74206f66207468652063757272656e74206c697374206f66206163746976652026262070656e64696e6720504950732e2901546865205049507320617265207468656e20736f7274656420696e746f2061207072696f72697479207175657565206261736564206f6e2065616368205049502773207765696768742e002023204572726f72733d012a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e58656e6163745f736e617073686f745f726573756c747304011c726573756c74734d0701705665633c2850697049642c20536e617073686f74526573756c74293e000e44d0456e616374732060726573756c74736020666f7220746865205049507320696e2074686520736e617073686f742071756575652e290154686520736e617073686f742077696c6c20626520617661696c61626c6520666f72206675727468657220656e6163746d656e747320756e74696c20697420697320636c65617265642e0055015468652060726573756c7473602061726520656e636f6465642061206c697374206f6620602869642c20726573756c7429602077686572652060726573756c7460206973206170706c69656420746f20606964602e49014e6f746520746861742074686520736e617073686f74207072696f7269747920717565756520697320656e636f646564207769746820746865202a6c6f77657374207072696f726974792066697273742a2e5501736f2060726573756c7473203d205b2869642c20417070726f7665295d602077696c6c20617070726f76652060536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20315d602e002023204572726f72730d012a20604261644f726967696e60202d20756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2e21012a206043616e6e6f74536b697050697060202d206120676976656e205049502068617320616c7265616479206265656e20736b697070656420746f6f206d616e792074696d65732e0d012a2060536e617073686f74526573756c74546f6f4c6172676560202d206f6e206c656e28726573756c747329203e206c656e28736e617073686f745f7175657565292e702a2060536e617073686f7449644d69736d6174636860202d2069663a2420206060607465787498202020e2888320286920e2888820302e2e536e617073686f7451756575652e6c656e2829292efc2020202020726573756c74735b695d2e3020e289a020536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20695d2e6964142020606060f8202020546869732069732070726f746563747320616761696e737420636c656172696e67207175657565207768696c6520474320697320766f74696e672e54657865637574655f7363686564756c65645f70697004010869641d0301145069704964000f04d8496e7465726e616c20646973706174636861626c6520746861742068616e646c657320657865637574696f6e206f662061205049502e506578706972655f7363686564756c65645f70697008010c6469647c01284964656e74697479496400010869641d0301145069704964001004dc496e7465726e616c20646973706174636861626c6520746861742068616e646c65732065787069726174696f6e206f662061205049502e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e4d070000025107005107000004081d035507005507082c70616c6c65745f7069707338536e617073686f74526573756c7400010c1c417070726f76650000001852656a65637400010010536b6970000200005907084070616c6c65745f706f7274666f6c696f1043616c6c040454000118406372656174655f706f7274666f6c696f0401106e616d655d030134506f7274666f6c696f4e616d65000004a843726561746573206120706f7274666f6c696f20776974682074686520676976656e20606e616d65602e4064656c6574655f706f7274666f6c696f04010c6e756de4013c506f7274666f6c696f4e756d626572000120350144656c657465732061207573657220706f7274666f6c696f2e204120706f7274666f6c696f2063616e2062652064656c65746564206f6e6c7920696620697420686173206e6f2066756e64732e002023204572726f72731d012a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2ef02a2060506f7274666f6c696f4e6f74456d707479602069662074686520706f7274666f6c696f207374696c6c20686f6c647320616e79206173736574003423205065726d697373696f6e732c2a20506f7274666f6c696f506d6f76655f706f7274666f6c696f5f66756e64730c011066726f6ddc012c506f7274666f6c696f4964000108746fdc012c506f7274666f6c696f49640001146974656d735d0701585665633c4d6f7665506f7274666f6c696f4974656d3e00023c5d014d6f766573206120746f6b656e20616d6f756e742066726f6d206f6e6520706f7274666f6c696f206f6620616e206964656e7469747920746f20616e6f7468657220706f7274666f6c696f206f66207468652073616d65e06964656e746974792e204d7573742062652063616c6c65642062792074686520637573746f6469616e206f66207468652073656e6465722e110146756e64732066726f6d2064656c6574656420706f7274666f6c696f732063616e20616c736f206265207265636f7665726564207669612074686973206d6574686f642e00e0412073686f7274206d656d6f2063616e20626520616464656420746f20746f206561636820746f6b656e20616d6f756e74206d6f7665642e002023204572726f727369012a2060506f7274666f6c696f446f65734e6f74457869737460206966206f6e65206f7220626f7468206f662074686520706f7274666f6c696f73207265666572656e636520616e20696e76616c696420706f7274666f6c696f2e51012a206064657374696e6174696f6e5f69735f73616d655f706f7274666f6c696f6020696620626f74682073656e64657220616e6420726563656976657220706f7274666f6c696f20617265207468652073616d6591012a2060446966666572656e744964656e74697479506f7274666f6c696f7360206966207468652073656e64657220616e6420726563656976657220706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e74697469657349012a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f66207468652066726f6d20706f7274666f6c696f41012a2060496e73756666696369656e74506f7274666f6c696f42616c616e636560206966207468652073656e64657220646f6573206e6f74206861766520656e6f75676820667265652062616c616e6365003423205065726d697373696f6e732c2a20506f7274666f6c696f4072656e616d655f706f7274666f6c696f08010c6e756de4013c506f7274666f6c696f4e756d62657200011c746f5f6e616d655d030134506f7274666f6c696f4e616d6500031c8052656e616d65732061206e6f6e2d64656661756c7420706f7274666f6c696f2e002023204572726f72731d012a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2e003423205065726d697373696f6e732c2a20506f7274666f6c696f58717569745f706f7274666f6c696f5f637573746f647904010c706964dc012c506f7274666f6c696f4964000420bc5768656e2063616c6c65642062792074686520637573746f6469616e206f662060706f7274666f6c696f5f6964602c4901616c6c6f77732072657475726e696e672074686520637573746f6479206f662074686520706f7274666f6c696f20746f2074686520706f7274666f6c696f206f776e657220756e696c61746572616c6c792e002023204572726f72735d012a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f74207468652063757272656e7420637573746f6469616e206f662060706f7274666f6c696f5f6964602e003423205065726d697373696f6e732c2a20506f7274666f6c696f606163636570745f706f7274666f6c696f5f637573746f647904011c617574685f696420010c7536340005000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e5d070000026107006107084070616c6c65745f706f7274666f6c696f444d6f7665506f7274666f6c696f4974656d00000c01187469636b6572a401185469636b6572000118616d6f756e7418011c42616c616e63650001106d656d6f8001304f7074696f6e3c4d656d6f3e00006507084c70616c6c65745f70726f746f636f6c5f6665651043616c6c040454000108486368616e67655f636f656666696369656e7404012c636f656666696369656e746d030120506f73526174696f000010c04368616e676573207468652066656520636f656666696369656e7420666f722074686520726f6f74206f726967696e2e002023204572726f7273882a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e3c6368616e67655f626173655f6665650801086f706907012850726f746f636f6c4f70000120626173655f66656518011c42616c616e6365000110ac4368616e67657320746865206120626173652066656520666f722074686520726f6f74206f726967696e2e002023204572726f7273882a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e69070c64706f6c796d6573685f636f6d6d6f6e5f7574696c69746965733070726f746f636f6c5f6665652850726f746f636f6c4f700001344c417373657452656769737465725469636b65720000002841737365744973737565000100444173736574416464446f63756d656e7473000200404173736574437265617465417373657400030060436865636b706f696e744372656174655363686564756c65000400a4436f6d706c69616e63654d616e61676572416464436f6d706c69616e6365526571756972656d656e74000500584964656e746974794364645265676973746572446964000600404964656e74697479416464436c61696d000700a44964656e746974794164645365636f6e646172794b65797357697468417574686f72697a6174696f6e0008002c5069707350726f706f736500090040436f6e747261637473507574436f6465000a006c436f72706f7261746542616c6c6f7441747461636842616c6c6f74000b00744361706974616c446973747269627574696f6e44697374726962757465000c00006d070c4070616c6c65745f7363686564756c65721870616c6c65741043616c6c040454000118207363686564756c651001107768656e100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963710701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c81050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00002870416e6f6e796d6f75736c79207363686564756c652061207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c738c2d2042617365205765696768743a2032322e3239202b202e313236202a205320c2b573302d204442205765696768743a48202020202d20526561643a204167656e64614c202020202d2057726974653a204167656e646139012d2057696c6c20757365206261736520776569676874206f662032352077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e1863616e63656c0801107768656e100138543a3a426c6f636b4e756d626572000114696e64657810010c7533320001289443616e63656c20616e20616e6f6e796d6f75736c79207363686564756c6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73902d2042617365205765696768743a2032322e3135202b20322e383639202a205320c2b573302d204442205765696768743a48202020202d20526561643a204167656e64616c202020202d2057726974653a204167656e64612c204c6f6f6b75703d012d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e387363686564756c655f6e616d6564140108696428011c5665633c75383e0001107768656e100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963710701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c81050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000228585363686564756c652061206e616d6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73882d2042617365205765696768743a2032392e36202b202e313539202a205320c2b573302d204442205765696768743a68202020202d20526561643a204167656e64612c204c6f6f6b75706c202020202d2057726974653a204167656e64612c204c6f6f6b757049012d2057696c6c20757365206261736520776569676874206f662033352077686963682073686f756c6420626520676f6f6420666f72206d6f7265207468616e203330207363686564756c65642063616c6c732c23203c2f7765696768743e3063616e63656c5f6e616d6564040108696428011c5665633c75383e0003287843616e63656c2061206e616d6564207363686564756c6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73902d2042617365205765696768743a2032342e3931202b20322e393037202a205320c2b573302d204442205765696768743a68202020202d20526561643a204167656e64612c204c6f6f6b75706c202020202d2057726974653a204167656e64612c204c6f6f6b75703d012d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e387363686564756c655f61667465721001146166746572100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963710701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c81050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000414a8416e6f6e796d6f75736c79207363686564756c652061207461736b20616674657220612064656c61792e002823203c7765696768743e5453616d65206173205b607363686564756c65605d2e2c23203c2f7765696768743e507363686564756c655f6e616d65645f6166746572140108696428011c5665633c75383e0001146166746572100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963710701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c81050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000514905363686564756c652061206e616d6564207461736b20616674657220612064656c61792e002823203c7765696768743ec453616d65206173205b607363686564756c655f6e616d6564605d2853656c663a3a7363686564756c655f6e616d6564292e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e710704184f7074696f6e0404540175030108104e6f6e6500000010536f6d650400750300000100007507084470616c6c65745f736574746c656d656e741043616c6c040454000144306372656174655f76656e75650c011c64657461696c738503013056656e756544657461696c7300011c7369676e657273910101445665633c543a3a4163636f756e7449643e00010c7479708903012456656e756554797065000014585265676973746572732061206e65772076656e75652e00a42a206064657461696c7360202d2045787472612064657461696c732061626f757420612076656e75653d012a20607369676e65727360202d204172726179206f66207369676e65727320746861742061726520616c6c6f77656420746f207369676e20726563656970747320666f7220746869732076656e7565942a206074797060202d2054797065206f662076656e7565206265696e672063726561746564507570646174655f76656e75655f64657461696c7308010869648103011c56656e7565496400011c64657461696c738503013056656e756544657461696c730001105c4564697420612076656e756527732064657461696c732e00b42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742ec02a206064657461696c7360207370656369666965732074686520757064617465642076656e75652064657461696c732e447570646174655f76656e75655f7479706508010869648103011c56656e7565496400010c7479708903012456656e756554797065000210504564697420612076656e7565277320747970652e00b42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742eb42a206074797065602073706563696669657320746865206e65772074797065206f66207468652076656e75652e3c6164645f696e737472756374696f6e14012076656e75655f69648103011c56656e7565496400013c736574746c656d656e745f7479706591030178536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e00012874726164655f64617465f801444f7074696f6e3c543a3a4d6f6d656e743e00012876616c75655f64617465f801444f7074696f6e3c543a3a4d6f6d656e743e0001106c656773950301205665633c4c65673e0003305c416464732061206e657720696e737472756374696f6e2e002c2320417267756d656e7473ec2a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e09012a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c65645d01202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e51012a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b42a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e0020232057656967687498603935305f3030305f303030202b20315f3030305f303030202a206c6567732e6c656e282960686164645f616e645f61666669726d5f696e737472756374696f6e18012076656e75655f69648103011c56656e7565496400013c736574746c656d656e745f7479706591030178536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e00012874726164655f64617465f801444f7074696f6e3c543a3a4d6f6d656e743e00012876616c75655f64617465f801444f7074696f6e3c543a3a4d6f6d656e743e0001106c656773950301205665633c4c65673e000128706f7274666f6c696f73ec01405665633c506f7274666f6c696f49643e0004348c4164647320616e642061666669726d732061206e657720696e737472756374696f6e2e002c2320417267756d656e7473ec2a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e09012a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c65645d01202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e51012a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b42a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e6d012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2075736520696e20746869732061666669726d6174696f6e732e003423205065726d697373696f6e732c2a20506f7274666f6c696f4861666669726d5f696e737472756374696f6e0c010869648d030134496e737472756374696f6e4964000128706f7274666f6c696f73ec01405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000524bc50726f766964652061666669726d6174696f6e20746f20616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e7473882a2060696460202d20496e737472756374696f6e20696420746f2061666669726d2e69012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2061666669726d207468697320696e737472756374696f6e2ef82a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f206265202061666669726d65642e003423205065726d697373696f6e732c2a20506f7274666f6c696f5077697468647261775f61666669726d6174696f6e0c010869648d030134496e737472756374696f6e4964000128706f7274666f6c696f73ec01405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000624c0576974686472617720616e2061666669726d6174696f6e20666f72206120676976656e20696e737472756374696f6e2e002c2320417267756d656e7473ec2a2060696460202d20496e737472756374696f6e20696420666f7220746861742061666669726d6174696f6e206765742077697468647261776e2e5d012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2077697468647261772061666669726d6174696f6e2e01012a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f20626520756e2d61666669726d65642e003423205065726d697373696f6e732c2a20506f7274666f6c696f4872656a6563745f696e737472756374696f6e0c010869648d030134496e737472756374696f6e4964000124706f7274666f6c696fdc012c506f7274666f6c696f496400012c6e756d5f6f665f6c65677310010c7533320007248052656a6563747320616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e7473882a2060696460202d20496e737472756374696f6e20696420746f2072656a6563742ed02a2060706f7274666f6c696f60202d20506f7274666f6c696f20746f2072656a6563742074686520696e737472756374696f6e2ed02a20606e756d5f6f665f6c65677360202d204e756d626572206f66206c65677320696e2074686520696e737472756374696f6e2e003423205065726d697373696f6e732c2a20506f7274666f6c696f5061666669726d5f776974685f726563656970747310010869648d030134496e737472756374696f6e496400013c726563656970745f64657461696c73790701dc5665633c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e000128706f7274666f6c696f73ec01405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000830cc4163636570747320616e20696e737472756374696f6e20616e6420636c61696d732061207369676e656420726563656970742e002c2320417267756d656e74737c2a2060696460202d2054617267657420696e737472756374696f6e2069642ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d42a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e8c2a20607369676e657260202d205369676e6572206f662074686520726563656970742e842a20607369676e65645f6461746160202d205369676e656420726563656970742e79012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f20616363657074207468697320696e737472756374696f6e2077697468003423205065726d697373696f6e732c2a20506f7274666f6c696f34636c61696d5f7265636569707408010869648d030134496e737472756374696f6e496400013c726563656970745f64657461696c737d0701c85265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e00092c60436c61696d732061207369676e656420726563656970742e002c2320417267756d656e7473bc2a2060696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d42a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e8c2a20607369676e657260202d205369676e6572206f662074686520726563656970742e842a20607369676e65645f6461746160202d205369676e656420726563656970742e003423205065726d697373696f6e732c2a20506f7274666f6c696f3c756e636c61696d5f72656365697074080138696e737472756374696f6e5f69648d030134496e737472756374696f6e49640001186c65675f69649d0301144c65674964000a2098556e636c61696d7320612070726576696f75736c7920636c61696d656420726563656970742e002c2320417267756d656e7473ec2a2060696e737472756374696f6e5f696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074003423205065726d697373696f6e732c2a20506f7274666f6c696f4c7365745f76656e75655f66696c746572696e670801187469636b6572a401185469636b657200011c656e61626c65641d010110626f6f6c000b20c0456e61626c6573206f722064697361626c65642076656e75652066696c746572696e6720666f72206120746f6b656e2e002c2320417267756d656e7473b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e19012a2060656e61626c656460202d20426f6f6c65616e20746861742064656369646573206966207468652066696c746572696e672073686f756c6420626520656e61626c65642e003423205065726d697373696f6e731c2a20417373657430616c6c6f775f76656e7565730801187469636b6572a401185469636b657200011876656e756573a50301305665633c56656e756549643e000c1c0d01416c6c6f7773206164646974696f6e616c2076656e75657320746f2063726561746520696e737472756374696f6e7320696e766f6c76696e6720616e2061737365742e00b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e7d012a206076656e75657360202d204172726179206f662076656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e003423205065726d697373696f6e731c2a2041737365743c646973616c6c6f775f76656e7565730801187469636b6572a401185469636b657200011876656e756573a50301305665633c56656e756549643e000d1c69015265766f6b6573207065726d697373696f6e20676976656e20746f2076656e75657320666f72206372656174696e6720696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c61722061737365742e00b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2ea5012a206076656e75657360202d204172726179206f662076656e756573207468617420617265206e6f206c6f6e67657220616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e003423205065726d697373696f6e731c2a2041737365745c6368616e67655f726563656970745f76616c696469747908012c726563656970745f75696420010c75363400012076616c69646974791d010110626f6f6c000e14fc4d61726b732061207265636569707420697373756564206279207468652063616c6c657220617320636c61696d6564206f72206e6f7420636c61696d65642ec1015468697320616c6c6f77732074686520726563656970742069737375657220746f20696e76616c696461746520616e20616c7265616479206973737565642072656365697074206f7220726576616c696461746520616e20616c726561647920636c61696d656420726563656970742e00ac2a2060726563656970745f75696460202d20556e69717565204944206f662074686520726563656970742eac2a206076616c696469747960202d204e65772076616c6964697479206f662074686520726563656970742e74657865637574655f7363686564756c65645f696e737472756374696f6e08010869648d030134496e737472756374696f6e496400012c5f6c6567735f636f756e7410010c753332000f048101526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f20657865637574652061207363686564756c656420736574746c656d656e7420696e737472756374696f6e2e5872657363686564756c655f696e737472756374696f6e04010869648d030134496e737472756374696f6e49640010288452657363686564756c65732061206661696c656420696e737472756374696f6e2e002c2320417267756d656e7473b42a2060696460202d2054617267657420696e737472756374696f6e20696420746f2072657363686564756c652e003423205065726d697373696f6e732c2a20506f7274666f6c696f002023204572726f72733d012a2060496e737472756374696f6e4e6f744661696c656460202d20496e737472756374696f6e206e6f7420696e2061206661696c6564207374617465206f7220646f6573206e6f742065786973742e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e79070000027d07007d07084470616c6c65745f736574746c656d656e74385265636569707444657461696c7308244163636f756e7449640100444f6666436861696e5369676e61747572650181070014012c726563656970745f75696420010c7536340001186c65675f69649d0301144c656749640001187369676e65720001244163636f756e7449640001247369676e6174757265810701444f6666436861696e5369676e61747572650001206d65746164617461a103013c526563656970744d6574616461746100008107082873705f72756e74696d65384d756c74695369676e617475726500010c1c456432353531390400c9060148656432353531393a3a5369676e61747572650000001c537232353531390400f9060148737232353531393a3a5369676e617475726500010014456364736104008507014065636473613a3a5369676e61747572650002000085070c1c73705f636f7265146563647361245369676e617475726500000400110701205b75383b2036355d00008907084470616c6c65745f737461746973746963731043616c6c040454000110506164645f7472616e736665725f6d616e616765720801187469636b6572a401185469636b65720001506e65775f7472616e736665725f6d616e61676572ad03013c5472616e736665724d616e6167657200003870416464732061206e6577207472616e73666572206d616e616765722e002c2320417267756d656e7473c5012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e11012a20607469636b657260207469636b657220666f7220776869636820746865207472616e73666572206d616e616765727320617265206265696e6720757064617465642ed82a20606e65775f7472616e736665725f6d616e6167657260205472616e73666572206d616e61676572206265696e672061646465642e002023204572726f7273f02a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722e65012a20604475706c69636174655472616e736665724d616e616765726020696620606e65775f7472616e736665725f6d616e616765726020697320616c726561647920656e61626c656420666f7220746865207469636b65722e35012a20605472616e736665724d616e61676572734c696d697452656163686564602069662074686520607469636b65726020616c726561647920686173206d617820544d73206174746163686564003423205065726d697373696f6e731c2a2041737365745c72656d6f76655f7472616e736665725f6d616e616765720801187469636b6572a401185469636b65720001407472616e736665725f6d616e61676572ad03013c5472616e736665724d616e616765720001346c52656d6f7665732061207472616e73666572206d616e616765722e002c2320417267756d656e7473c5012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e11012a20607469636b657260207469636b657220666f7220776869636820746865207472616e73666572206d616e616765727320617265206265696e6720757064617465642ed02a20607472616e736665725f6d616e6167657260205472616e73666572206d616e61676572206265696e672072656d6f7665642e002023204572726f7273f02a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722ea9012a20605472616e736665724d616e616765724d697373696e6760206966206061737365745f636f6d706c69616e63656020636f6e7461696e73206d756c7469706c6520656e74726965732077697468207468652073616d652060726571756972656d656e745f6964602e003423205065726d697373696f6e731c2a204173736574546164645f6578656d707465645f656e7469746965730c01187469636b6572a401185469636b65720001407472616e736665725f6d616e61676572ad03013c5472616e736665724d616e616765720001446578656d707465645f656e746974696573310101305665633c53636f706549643e0002349c4578656d707420656e7469746965732066726f6d2061207472616e73666572206d616e61676572002c2320417267756d656e7473c5012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e05012a20607469636b657260207469636b657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e55012a20607472616e736665725f6d616e6167657260205472616e73666572206d616e6167657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e39012a20606578656d707465645f656e746974696573602053636f706549647320666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e002023204572726f7273f02a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722e003423205065726d697373696f6e731c2a2041737365746072656d6f76655f6578656d707465645f656e7469746965730c01187469636b6572a401185469636b65720001407472616e736665725f6d616e61676572ad03013c5472616e736665724d616e61676572000120656e746974696573310101305665633c53636f706549643e000334e472656d6f766520656e7469746965732066726f6d206578656d7074696f6e206c697374206f662061207472616e73666572206d616e61676572002c2320417267756d656e7473c5012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e05012a20607469636b657260207469636b657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e55012a20607472616e736665725f6d616e6167657260205472616e73666572206d616e6167657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e19012a206073636f70655f696473602053636f706549647320666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e002023204572726f7273f02a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e8d07082870616c6c65745f73746f1043616c6c040454000118446372656174655f66756e647261697365722801486f66666572696e675f706f7274666f6c696fdc012c506f7274666f6c696f49640001386f66666572696e675f6173736574a401185469636b657200014472616973696e675f706f7274666f6c696fdc012c506f7274666f6c696f496400013472616973696e675f6173736574a401185469636b65720001147469657273910701385665633c5072696365546965723e00012076656e75655f69648103011c56656e756549640001147374617274f801444f7074696f6e3c543a3a4d6f6d656e743e00010c656e64f801444f7074696f6e3c543a3a4d6f6d656e743e0001486d696e696d756d5f696e766573746d656e7418011c42616c616e636500013c66756e647261697365725f6e616d65bd03013846756e647261697365724e616d65000040604372656174652061206e65772066756e647261697365722e000d012a20606f66666572696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e672074686520606f66666572696e675f6173736574602ea42a20606f66666572696e675f617373657460202d204173736574206265696e67206f6666657265642e05012a206072616973696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e6720746865206072616973696e675f6173736574602e35012a206072616973696e675f617373657460202d204173736574206265696e672065786368616e67656420666f7220606f66666572696e675f617373657460206f6e20696e766573746d656e742ee82a2060746965727360202d20507269636520746965727320746f2063686172676520696e766573746f7273206f6e20696e766573746d656e742ea82a206076656e75655f696460202d2056656e756520746f2068616e646c6520736574746c656d656e742e4d012a2060737461727460202d2046756e647261697365722073746172742074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c20737461727420696d6d6564696174656c792e29012a2060656e6460202d2046756e6472616973657220656e642074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c206e65766572206578706972652ecd012a20606d696e696d756d5f696e766573746d656e7460202d204d696e696d756d20616d6f756e74206f66206072616973696e675f617373657460207468617420616e20696e766573746f72206e6565647320746f207370656e6420746f20696e7665737420696e20746869732072616973652ef02a206066756e647261697365725f6e616d6560202d2046756e64726169736572206e616d652c206f6e6c79207573656420696e20746865205549732e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f18696e766573741c0150696e766573746d656e745f706f7274666f6c696fdc012c506f7274666f6c696f496400014466756e64696e675f706f7274666f6c696fdc012c506f7274666f6c696f49640001386f66666572696e675f6173736574a401185469636b65720001086964b903013046756e64726169736572496400013c70757263686173655f616d6f756e7418011c42616c616e63650001246d61785f70726963659907013c4f7074696f6e3c42616c616e63653e00011c726563656970749d0701e84f7074696f6e3c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e0001305c496e7665737420696e20612066756e647261697365722e0041012a2060696e766573746d656e745f706f7274666f6c696f60202d20506f7274666f6c696f207468617420606f66666572696e675f6173736574602077696c6c206265206465706f736974656420696e2e01012a206066756e64696e675f706f7274666f6c696f60202d20506f7274666f6c696f20746861742077696c6c2066756e642074686520696e766573746d656e742ea02a20606f66666572696e675f617373657460202d20417373657420746f20696e7665737420696e2eac2a2060696460202d204944206f66207468652066756e6472616973657220746f20696e7665737420696e2ef42a206070757263686173655f616d6f756e7460202d20416d6f756e74206f6620606f66666572696e675f61737365746020746f2070757263686173652eb9012a20606d61785f707269636560202d204d6178696d756d20707269636520746f207061792070657220756e6974206f6620606f66666572696e675f6173736574602c20496620604e6f6e6560746865726520617265206e6f20636f6e73747261696e7473206f6e2070726963652e69012a20607265636569707460202d204f66662d636861696e207265636569707420746f2075736520696e7374656164206f66206f6e2d636861696e2062616c616e636520696e206066756e64696e675f706f7274666f6c696f602e003423205065726d697373696f6e732c2a20506f7274666f6c696f44667265657a655f66756e647261697365720801386f66666572696e675f6173736574a401185469636b65720001086964b903013046756e64726169736572496400021c50467265657a6520612066756e647261697365722e00942a20606f66666572696e675f617373657460202d20417373657420746f20667265657a652ea02a2060696460202d204944206f66207468652066756e6472616973657220746f20667265657a652e003423205065726d697373696f6e731c2a2041737365744c756e667265657a655f66756e647261697365720801386f66666572696e675f6173736574a401185469636b65720001086964b903013046756e64726169736572496400031c58556e667265657a6520612066756e647261697365722e009c2a20606f66666572696e675f617373657460202d20417373657420746f20756e667265657a652ea82a2060696460202d204944206f66207468652066756e6472616973657220746f20756e667265657a652e003423205065726d697373696f6e731c2a204173736574606d6f646966795f66756e647261697365725f77696e646f771001386f66666572696e675f6173736574a401185469636b65720001086964b903013046756e6472616973657249640001147374617274200124543a3a4d6f6d656e7400010c656e64f801444f7074696f6e3c543a3a4d6f6d656e743e000424b44d6f64696679207468652074696d652077696e646f7720612066756e647261697365722069732061637469766500942a20606f66666572696e675f617373657460202d20417373657420746f206d6f646966792ea02a2060696460202d204944206f66207468652066756e6472616973657220746f206d6f646966792ea02a2060737461727460202d204e6577207374617274206f66207468652066756e647261697365722eb82a2060656e6460202d204e657720656e64206f66207468652066756e6472616973657220746f206d6f646966792e003423205065726d697373696f6e731c2a2041737365741073746f700801386f66666572696e675f6173736574a401185469636b65720001086964b903013046756e64726169736572496400051c4853746f7020612066756e647261697365722e008c2a20606f66666572696e675f617373657460202d20417373657420746f2073746f702e982a2060696460202d204944206f66207468652066756e6472616973657220746f2073746f702e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e91070000029507009507082870616c6c65745f73746f245072696365546965720000080114746f74616c18011c42616c616e6365000114707269636518011c42616c616e63650000990704184f7074696f6e04045401180108104e6f6e6500000010536f6d6504001800000100009d0704184f7074696f6e040454017d070108104e6f6e6500000010536f6d6504007d070000010000a107083c70616c6c65745f74726561737572791043616c6c0404540001083064697362757273656d656e7404013462656e65666963696172696573a50701785665633c42656e65666963696172793c42616c616e63654f663c543e3e3e00001851014974207472616e73666572732062616c616e6365732066726f6d20747265617375727920746f2065616368206f662062656e6566696369617269657320616e642074686520737065636966696320616d6f756e7444666f722065616368206f66207468656d2e001c23204572726f72c42a20604261644f726967696e603a204f6e6c7920726f6f742063616e2065786563757465207472616e73616374696f6e2e5d012a2060496e73756666696369656e7442616c616e6365603a2049662074726561737572792062616c616e636573206973206e6f7420656e6f75676820746f20636f76657220616c6c2062656e656669636961726965732e347265696d62757273656d656e74040118616d6f756e7418013042616c616e63654f663c543e00010c1d014974207472616e7366657273207468652073706563696669632060616d6f756e74602066726f6d20606f726967696e60206163636f756e7420696e746f2074726561737572792e0049014f6e6c79206163636f756e747320776869636820617265206173736f63696174656420746f20616e206964656e746974792063616e206d616b65206120646f6e6174696f6e20746f2074726561737572792e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ea507000002a90700a907084c706f6c796d6573685f7072696d6974697665732c42656e6566696369617279041c42616c616e636501180008010869647c01284964656e746974794964000118616d6f756e7418011c42616c616e63650000ad07083870616c6c65745f7574696c6974791043616c6c04045400011014626174636804011463616c6c73b10701605665633c3c5420617320436f6e6669673e3a3a43616c6c3e000048c44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e00e8546869732077696c6c206578656375746520756e74696c20746865206669727374206f6e65206661696c7320616e64207468656e2073746f702e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e00202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e00bd01546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e31016576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e207468655501604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d6164654d01616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c65746564604c6576656e74206973206465706f73697465642e3062617463685f61746f6d696304011463616c6c73b10701605665633c3c5420617320436f6e6669673e3a3a43616c6c3e00014cc44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e001501546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c2073746f7070696e6720617420746865206669727374206661696c7572652cc0696e207768696368206361736520746865207374617465206368616e6765732061726520726f6c6c6564206261636b2e25014f6e206661696c7572652c20616e206576656e7420604261746368496e746572727570746564286661696c7572655f6964782c206572726f722960206973206465706f73697465642e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e00202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e001501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef4546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ee4496620616e792063616c6c206661696c65642c207468656e20604261746368496e74657272757074656460206973206465706f73697465642e1501496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e4062617463685f6f7074696d697374696304011463616c6c73b10701605665633c3c5420617320436f6e6669673e3a3a43616c6c3e000254c44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e000101546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c20697272657370656374697665206f66206661696c757265732e0901416e79206661696c757265732077696c6c20626520617661696c61626c6520696e2061206042617463684f7074696d69737469634661696c656460206576656e742e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e0000202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e001501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef4546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ef8496620616e792063616c6c206661696c65642c207468656e206042617463684f7074696d69737469634661696c656460206973206465706f73697465642cfc77697468206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c2061732077656c6c206173206120766563746f72286f66206572726f72732e1501496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e2072656c61795f74780c0118746172676574000130543a3a4163636f756e7449640001247369676e617475726581070150543a3a4f6666436861696e5369676e617475726500011063616c6cb507017c556e6971756543616c6c3c3c5420617320436f6e6669673e3a3a43616c6c3e000330a052656c617920612063616c6c20666f722061207461726765742066726f6d20616e206f726967696e00510152656c6179696e6720696e207468697320636f6e746578742072656665727320746f20746865206162696c697479206f66206f726967696e20746f206d616b6520612063616c6c206f6e20626568616c66206f661c7461726765742e00684665657320617265206368617267656420746f206f726967696e00302320506172616d6574657273842d2060746172676574603a204163636f756e7420746f2062652072656c61796564e82d20607369676e6174757265603a205369676e61747572652066726f6d2074617267657420617574686f72697a696e67207468652072656c6179c02d206063616c6c603a2043616c6c20746f2062652072656c61796564206f6e20626568616c66206f6620746172676574000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652eb107000002810500b507083870616c6c65745f7574696c69747928556e6971756543616c6c040443018105000801146e6f6e6365200148417574686f72697a6174696f6e4e6f6e636500011063616c6c81050118426f783c433e0000b907082c70616c6c65745f626173651043616c6c0404540001000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ebd07085870616c6c65745f65787465726e616c5f6167656e74731043616c6c040454000118306372656174655f67726f75700801187469636b6572a401185469636b65720001147065726d73b4015045787472696e7369635065726d697373696f6e73000048e443726561746573206120637573746f6d206167656e742067726f7570202841472920666f722074686520676976656e20607469636b6572602e00d45468652041472077696c6c206861766520746865207065726d697373696f6e7320617320676976656e20627920607065726d73602e290154686973206e6577204147206973207468656e2061737369676e656420606964203d204147496453657175656e63653a3a6765742829202b20316020617320697473206041474964602c3901776869636820796f752063616e2075736520617320604167656e7447726f75703a3a437573746f6d2869642960207768656e20616464696e67206167656e747320666f7220607469636b6572602e002c2320417267756d656e74739c2d20607469636b65726020746f206164642074686520637573746f6d2067726f757020666f722e902d20607065726d7360207468617420746865206e65772041472077696c6c20686176652e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e21012d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672e25012d2060436f756e7465724f766572666c6f776020696620604147496453657175656e63653a3a6765742829202b20316020776f756c642065786365656420607533323a3a4d4158602e003423205065726d697373696f6e731c2a2041737365741c2a204167656e74547365745f67726f75705f7065726d697373696f6e730c01187469636b6572a401185469636b6572000108696419010110414749640001147065726d73b4015045787472696e7369635065726d697373696f6e7300013c51015570646174657320746865207065726d697373696f6e73206f662074686520637573746f6d204147206964656e74696669656420627920606964602c20666f722074686520676976656e20607469636b6572602e002c2320417267756d656e7473902d20607469636b6572602074686520637573746f6d2041472062656c6f6e677320746f2ea42d206069646020666f722074686520637573746f6d2041472077697468696e20607469636b6572602e942d20607065726d736020746f207570646174652074686520637573746f6d20414720746f2e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e21012d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672ecc2d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472e003423205065726d697373696f6e731c2a2041737365741c2a204167656e743072656d6f76655f6167656e740801187469636b6572a401185469636b65720001146167656e747c01284964656e7469747949640002389c52656d6f76652074686520676976656e20606167656e74602066726f6d20607469636b6572602e002c2320417267756d656e7473a82d20607469636b6572602074686174206861732074686520606167656e746020746f2072656d6f76652e802d20606167656e7460206f6620607469636b65726020746f2072656d6f76652e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ed82d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602ee82d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e746020697320746865206c6173742066756c6c206f6e652e003423205065726d697373696f6e731c2a2041737365741c2a204167656e742061626469636174650401187469636b6572a401185469636b657200032c804162646963617465206167656e747368697020666f7220607469636b6572602e002c2320417267756d656e7473ac2d20607469636b657260206f66207768696368207468652063616c6c657220697320616e206167656e742e002023204572726f7273e42d20604e6f74416e4167656e7460206966207468652063616c6c6572206973206e6f7420616e206167656e74206f6620607469636b6572602efc2d206052656d6f76696e674c61737446756c6c4167656e7460206966207468652063616c6c657220697320746865206c6173742066756c6c206167656e742e003423205065726d697373696f6e731c2a204173736574306368616e67655f67726f75700c01187469636b6572a401185469636b65720001146167656e747c01284964656e74697479496400011467726f7570150101284167656e7447726f7570000440ec4368616e676520746865206167656e742067726f7570207468617420606167656e74602062656c6f6e677320746f20696e20607469636b6572602e002c2320417267756d656e7473802d20607469636b6572602074686174206861732074686520606167656e74602eb82d20606167656e7460206f6620607469636b65726020746f206368616e6765207468652067726f757020666f722ec82d206067726f757060207468617420606167656e74602077696c6c2062656c6f6e6720746f20696e20607469636b6572602e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ecc2d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472ed82d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602e2d012d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e7460207761732061206046756c6c60206f6e6520616e64206973206265696e672064656d6f7465642e003423205065726d697373696f6e731c2a2041737365741c2a204167656e744c6163636570745f6265636f6d655f6167656e7404011c617574685f696420010c753634000540010141636365707420616e20617574686f72697a6174696f6e20627920616e206167656e742022416c696365222077686f206973737565642060617574685f696460d8746f20616c736f206265636f6d6520616e206167656e74206f6620746865207469636b657220416c696365207370656369666965642e002c2320417267756d656e7473d02d2060617574685f696460206964656e74696679696e672074686520617574686f72697a6174696f6e20746f206163636570742e002023204572726f727345012d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e35012d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f69646020697320666f7220616e206175746820746861742068617320657870697265642e4d012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f7420666f72206120604265636f6d654167656e7460206175746820747970652e25012d2060556e617574686f72697a65644167656e74602069662022416c69636522206973206e6f74207065726d697373696f6e656420746f2070726f766964652074686520617574682e0d012d20604e6f53756368414760206966207468652067726f757020726566657272656420746f206120637573746f6d207468617420646f6573206e6f742065786973742e0d012d2060416c7265616479416e4167656e7460206966207468652063616c6c657220697320616c726561647920616e206167656e74206f6620746865207469636b65722e003423205065726d697373696f6e731c2a204167656e740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ec107083870616c6c65745f72656c617965721043616c6c040454000118387365745f706179696e675f6b6579080120757365725f6b6579000130543a3a4163636f756e74496400012c706f6c79785f6c696d697418011c42616c616e6365000020bd014372656174657320616e20617574686f72697a6174696f6e20746f20616c6c6f772060757365725f6b65796020746f20616363657074207468652063616c6c65722028606f726967696e203d3d20706179696e675f6b6579602920617320746865697220737562736964697365722e002c2320417267756d656e74739c2d2060757365725f6b657960207468652075736572206b657920746f207375627369646973652ee42d2060706f6c79785f6c696d6974602074686520696e697469616c20504f4c5958206c696d697420666f72207468697320737562736964792e002023204572726f727331012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e446163636570745f706179696e675f6b657904011c617574685f696420010c753634000138944163636570747320612060706179696e675f6b65796020617574686f72697a6174696f6e2e002c2320417267756d656e7473e82d2060617574685f6964602074686520617574686f72697a6174696f6e20696420746f2061636365707420612060706179696e675f6b6579602e002023204572726f727345012d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e2d012d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f6964602074686520617574686f72697a6174696f6e2068617320657870697265642e6d012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f742061206041646452656c61796572506179696e674b65796020617574686f72697a6174696f6e2ea5012d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f206163636570742074686520617574686f72697a6174696f6e20666f72207468652060757365725f6b6579602ed5012d20604e6f74417574686f72697a6564466f72506179696e674b6579602069662074686520617574686f72697a6174696f6e2077617320637265617465642062792061207369676e657220746861742069736e277420617574686f72697a6564206279207468652060706179696e675f6b6579602e31012d2060557365724b65794364644d697373696e6760206966207468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e41012d2060506179696e674b65794364644d697373696e6760206966207468652060706179696e675f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e4472656d6f76655f706179696e675f6b6579080120757365725f6b6579000130543a3a4163636f756e744964000128706179696e675f6b6579000130543a3a4163636f756e74496400022cac52656d6f766573207468652060706179696e675f6b6579602066726f6d20612060757365725f6b6579602e002c2320417267756d656e7473d42d2060757365725f6b657960207468652075736572206b657920746f2072656d6f76652074686520737562736964792066726f6d2e09012d2060706179696e675f6b6579602074686520706179696e67206b6579207468617420776173207375627369646973696e67207468652060757365725f6b6579602e002023204572726f72738d012d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2072656d6f766520746865207375627369647920666f72207468652060757365725f6b6579602ef82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e31012d20604e6f74506179696e674b657960206966207468652060706179696e675f6b65796020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e487570646174655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e74496400012c706f6c79785f6c696d697418011c42616c616e6365000328b4557064617465732074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e35012d2060706f6c79785f6c696d6974602074686520616d6f756e74206f6620504f4c595820617661696c61626c6520666f72207375627369646973696e67207468652060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e50696e6372656173655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e744964000118616d6f756e7418011c42616c616e636500042cb8496e6372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e0d012d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2061646420746f207468652073756273696479206f662060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e3d012d20604f7665726c6f776020696620746865207375627369647927732072656d61696e696e6720504f4c595820776f756c642068617665206f766572666c6f7765642060753132383a3a4d4158602e5064656372656173655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e744964000118616d6f756e7418011c42616c616e636500052cb844656372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e21012d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2072656d6f76652066726f6d207468652073756273696479206f662060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e09012d20604f7665726c6f776020696620746865207375627369647920686173206c657373207468656e2060616d6f756e746020504f4c59582072656d61696e696e672e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ec507083870616c6c65745f726577617264731043616c6c04045400010840636c61696d5f69746e5f7265776172640c01387265776172645f61646472657373000130543a3a4163636f756e74496400012c69746e5f61646472657373000130543a3a4163636f756e7449640001247369676e617475726581070150543a3a4f6666436861696e5369676e617475726500003450436c61696d20616e2049544e207265776172642e0030232320417267756d656e7473d82a206069746e5f61646472657373602073706563696679696e672074686520617761726465642061646472657373206f6e2049544e2ed42a20607369676e6174757265602061757468656e7469636174696e672074686520636c61696d20746f20746865207265776172642e7501202020546865207369676e61747572652073686f756c6420636f6e7461696e20607265776172645f616464726573736020666f6c6c6f7765642062792074686520737566666978206022636c61696d5f69746e5f72657761726422602cb8202020616e64206d7573742068617665206265656e207369676e6564206279206069746e5f61646472657373602e002023204572726f727345012a2060496e73756666696369656e7442616c616e636560202d2049746e20726577617264732068617320696e73756666696369656e742066756e647320746f20697373756520746865207265776172642e31012a2060496e76616c69645369676e617475726560202d20607369676e6174757265602068616420616e20696e76616c6964207369676e6572206f7220696e76616c6964206d6573736167652e69012a206049746e526577617264416c7265616479436c61696d656460202d205265776172642069737375656420746f20746865206069746e5f61646472657373602068617320616c7265616479206265656e20636c61696d65642e89012a2060556e6b6e6f776e49746e4164647265737360202d206069746e5f6164647265737360206973206e6f7420696e207468652072657761726473207461626c6520616e6420686173206e6f2072657761726420746f20626520636c61696d65642e547365745f69746e5f7265776172645f73746174757308012c69746e5f61646472657373000130543a3a4163636f756e744964000118737461747573c907013c49746e5265776172645374617475730001000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ec907083870616c6c65745f726577617264733c49746e52657761726453746174757300010824556e636c61696d6564040018011c42616c616e63650000001c436c61696d656400010000cd07084470616c6c65745f746573745f7574696c731043616c6c0404540001103072656769737465725f64696408010c7569642101012c496e766573746f725569640001387365636f6e646172795f6b657973f104017c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e0000284d0147656e6572617465732061206e657720604964656e7469747949446020666f72207468652063616c6c65722c20616e642069737375657320612073656c662d67656e6572617465642043444420636c61696d2e00f05468652063616c6c6572206163636f756e742077696c6c20626520746865207072696d617279206b6579206f662074686174206964656e746974792e5d01466f722065616368206163636f756e74206f6620607365636f6e646172795f6b657973602c2061206e657720604a6f696e4964656e746974796020617574686f72697a6174696f6e20697320637265617465642c20736f410165616368206f66207468656d2077696c6c206e65656420746f20616363657074206974206265666f7265206265636f6d652070617274206f662074686973206e657720604964656e746974794944602e002023204572726f7273d5012d2060416c72656164794c696e6b656460206966207468652063616c6c6572206163636f756e74206f7220696620616e79206f662074686520676976656e20607365636f6e646172795f6b657973602068617320616c7265616479206c696e6b656420746f20616e20604964656e746974794944604d012d20605365636f6e646172794b657973436f6e7461696e5072696d6172794b65796020696620607365636f6e646172795f6b6579736020636f6e7461696e73207468652063616c6c6572206163636f756e742ee82d2060446964416c726561647945786973747360206966206175746f2d67656e6572617465642044494420616c7265616479206578697374732e546d6f636b5f6364645f72656769737465725f6469640401387461726765745f6163636f756e74000130543a3a4163636f756e7449640001303d015265676973746572732061206e6577204964656e7469747920666f722074686520607461726765745f6163636f756e746020616e642069737375657320612043444420636c61696d20746f2069742e510154686520496e766573746f72205549442069732067656e6572617465642064657465726d696e6973746963616c6c79206279207468652068617368206f66207468652067656e6572617465642044494420616e64b07468656e2077652066697820697420746f20626520636f6d706c69616e74207769746820555549442076342e00142320536565dc2d205b52464320343132323a20555549445d2868747470733a2f2f746f6f6c732e696574662e6f72672f68746d6c2f7266633431323229002423204661696c75726549012d20606f726967696e602068617320746f20626520616e20616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792e286765745f6d795f64696400020498456d69747320616e206576656e7420776974682063616c6c65722773206964656e746974792e286765745f6364645f6f660401086f66000130543a3a4163636f756e744964000304d4456d69747320616e206576656e7420776974682063616c6c65722773206964656e7469747920616e6420434444207374617475732e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ed107084070616c6c65745f636f6d6d697474656534506f6c796d657368566f746573042c426c6f636b4e756d626572011000100114696e64657810013450726f706f73616c496e646578000110617965733101013c5665633c4964656e7469747949643e0001106e6179733101013c5665633c4964656e7469747949643e0001186578706972794501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0000d507084070616c6c65745f636f6d6d69747465651c56657273696f6e0000040008010875380000d907084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e00dd07083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00e107084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e00e507083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00e907084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e00ed07083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00f10700000408009800f50700000408002000f9070000040800810500fd070000040c009820000108083c70616c6c65745f6d756c74697369673c50726f706f73616c44657461696c73040454012000140124617070726f76616c7320010c75363400012872656a656374696f6e7320010c7536340001187374617475730508013850726f706f73616c537461747573000118657870697279f801244f7074696f6e3c543e0001286175746f5f636c6f73651d010110626f6f6c00000508083c70616c6c65745f6d756c74697369673850726f706f73616c5374617475730001141c496e76616c69640000003c4163746976654f72457870697265640001004c457865637574696f6e5375636365737366756c0002003c457865637574696f6e4661696c65640003002052656a6563746564000400000908083c70616c6c65745f6d756c7469736967144572726f7204045400015c284364644d697373696e67000004c4546865206d756c7469736967206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e3c50726f706f73616c4d697373696e67000104705468652070726f706f73616c20646f6573206e6f742065786973742e344465636f64696e674572726f72000204444d756c746973696720616464726573732e244e6f5369676e6572730003042c4e6f207369676e6572732e7452657175697265645369676e6174757265734f75744f66426f756e6473000404a0546f6f20666577206f7220746f6f206d616e79207265717569726564207369676e6174757265732e284e6f74415369676e6572000504344e6f742061207369676e65722e384e6f537563684d756c7469736967000604444e6f2073756368206d756c74697369672e404e6f74456e6f7567685369676e6572730007044c4e6f7420656e6f756768207369676e6572732e344e6f6e63654f766572666c6f770008044441206e6f6e6365206f766572666c6f772e30416c7265616479566f74656400090438416c726561647920766f7465642e38416c7265616479415369676e6572000a0444416c72656164792061207369676e65722e444661696c6564546f436861726765466565000b04a0436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e484964656e746974794e6f7443726561746f72000c04c04964656e746974792070726f7669646564206973206e6f7420746865206d756c746973696727732063726561746f722e404368616e67654e6f74416c6c6f776564000d0425014368616e67696e67206d756c746973696720706172616d6574657273206e6f7420616c6c6f7765642073696e6365206d756c74697369672069732061207072696d617279206b65792e4c5369676e6572416c72656164794c696e6b6564000e0411015369676e657220697320616e206163636f756e74206b6579207468617420697320616c7265616479206173736f63696174656420776974682061206d756c74697369672e584d697373696e6743757272656e744964656e74697479000f045843757272656e7420444944206973206d697373696e67344e6f745072696d6172794b6579001004f45468652066756e6374696f6e2063616e206f6e6c792062652063616c6c656420627920746865207072696d617279206b6579206f6620746865206469645c50726f706f73616c416c726561647952656a65637465640011047450726f706f73616c207761732072656a6563746564206561726c6965723c50726f706f73616c457870697265640012045050726f706f73616c2068617320657870697265645c50726f706f73616c416c726561647945786563757465640013047450726f706f73616c20776173206578656375746564206561726c6965725c4d756c74697369674d697373696e674964656e746974790014049c4d756c7469736967206973206e6f7420617474616368656420746f20616e206964656e74697479404661696c6564546f5363686564756c65001504785363686564756c696e67206f6620612070726f706f73616c206661696c7338546f6f4d616e795369676e6572730016046c4d6f7265207369676e657273207468616e2072657175697265642e045c4d756c7469736967206d6f64756c65206572726f72732e0d08000004080010001108083470616c6c65745f62726964676538427269646765547844657461696c042c426c6f636b4e756d626572011000100118616d6f756e7418011c42616c616e636500011873746174757315080138427269646765547853746174757300013c657865637574696f6e5f626c6f636b10012c426c6f636b4e756d62657200011c74785f686173682401104832353600001508083470616c6c65745f62726964676538427269646765547853746174757300011418416273656e740000001c50656e64696e67040008010875380001001846726f7a656e0002002854696d656c6f636b65640003001c48616e646c6564000400001908000004081810001d08083470616c6c65745f6272696467651c56657273696f6e00000400080108753800002108083470616c6c65745f627269646765144572726f7204045400013440436f6e74726f6c6c65724e6f74536574000004a45468652062726964676520636f6e74726f6c6c65722061646472657373206973206e6f74207365742e2442616443616c6c6572000104d8546865206f726967696e206973206e6f742074686520636f6e74726f6c6c6572206f72207468652061646d696e20616464726573732e2042616441646d696e00020490546865206f726967696e206973206e6f74207468652061646d696e20616464726573732e284e6f56616c69644364640003048c54686520726563697069656e742044494420686173206e6f2076616c6964204344442e5850726f706f73616c416c726561647948616e646c6564000404390154686520627269646765207472616e73616374696f6e2070726f706f73616c2068617320616c7265616479206265656e2068616e646c656420616e64207468652066756e6473206d696e7465642e30556e617574686f72697a656400050494556e617574686f72697a656420746f20706572666f726d20616e206f7065726174696f6e2e1846726f7a656e000604745468652062726964676520697320616c72656164792066726f7a656e2e244e6f7446726f7a656e0007046454686520627269646765206973206e6f742066726f7a656e2e2046726f7a656e547800080468546865207472616e73616374696f6e2069732066726f7a656e2e484272696467654c696d697452656163686564000904e4546865206964656e746974792773206d696e74656420746f74616c2068617320726561636865642074686520627269646765206c696d69742e204f766572666c6f77000a04ac546865206964656e746974792773206d696e74656420746f74616c20686173206f766572666c6f7765642e384469766973696f6e42795a65726f000b04cc54686520626c6f636b20696e74657276616c206475726174696f6e206973207a65726f2e2043616e6e6f74206469766964652e3054696d656c6f636b65645478000c0478546865207472616e73616374696f6e2069732074696d656c6f636b65642e002508083870616c6c65745f7374616b696e67345374616b696e674c656467657208244163636f756e74496401001c42616c616e636501180014011473746173680001244163636f756e744964000114746f74616cd101011c42616c616e6365000118616374697665d101011c42616c616e6365000124756e6c6f636b696e67290801645665633c556e6c6f636b4368756e6b3c42616c616e63653e3e00013c636c61696d65645f72657761726473d90301345665633c457261496e6465783e000029080000022d08002d08083870616c6c65745f7374616b696e672c556e6c6f636b4368756e6b041c42616c616e636501180008011476616c7565d101011c42616c616e636500010c6572610d040120457261496e64657800003108083870616c6c65745f7374616b696e672c4e6f6d696e6174696f6e7304244163636f756e7449640100000c011c74617267657473910101385665633c4163636f756e7449643e0001307375626d69747465645f696e100120457261496e646578000128737570707265737365641d010110626f6f6c00003508083870616c6c65745f7374616b696e6734416374697665457261496e666f0000080114696e646578100120457261496e6465780001147374617274f8012c4f7074696f6e3c7536343e00003908000004081000003d08083870616c6c65745f7374616b696e673c457261526577617264506f696e747304244163636f756e744964010000080114746f74616c10012c526577617264506f696e74000128696e646976696475616c4108018042547265654d61703c4163636f756e7449642c20526577617264506f696e743e00004108042042547265654d617008044b010004560110000400450800000045080000020d08004908083870616c6c65745f7374616b696e671c466f7263696e67000110284e6f74466f7263696e6700000020466f7263654e657700010024466f7263654e6f6e650002002c466f726365416c77617973000300004d080000025108005108083870616c6c65745f7374616b696e6738556e6170706c696564536c61736808244163636f756e74496401001c42616c616e636501180014012476616c696461746f720001244163636f756e74496400010c6f776e18011c42616c616e63650001186f7468657273550801645665633c284163636f756e7449642c2042616c616e6365293e0001247265706f7274657273910101385665633c4163636f756e7449643e0001187061796f757418011c42616c616e6365000055080000025908005908000004080018005d08000004089501180061080c3870616c6c65745f7374616b696e6720736c617368696e6734536c617368696e675370616e7300001001287370616e5f696e6465781001245370616e496e6465780001286c6173745f7374617274100120457261496e6465780001486c6173745f6e6f6e7a65726f5f736c617368100120457261496e6465780001147072696f72d90301345665633c457261496e6465783e000065080c3870616c6c65745f7374616b696e6720736c617368696e67285370616e5265636f7264041c42616c616e636501180008011c736c617368656418011c42616c616e6365000120706169645f6f757418011c42616c616e636500006908083870616c6c65745f7374616b696e6738456c656374696f6e526573756c7408244163636f756e74496401001c42616c616e63650118000c013c656c65637465645f73746173686573910101385665633c4163636f756e7449643e0001246578706f7375726573c50101b85665633c284163636f756e7449642c204578706f737572653c4163636f756e7449642c2042616c616e63653e293e00011c636f6d707574658d01013c456c656374696f6e436f6d7075746500006d08083870616c6c65745f7374616b696e6738456c656374696f6e537461747573042c426c6f636b4e756d6265720110010818436c6f736564000000104f70656e040010012c426c6f636b4e756d626572000100007108083870616c6c65745f7374616b696e67645065726d697373696f6e65644964656e7469747950726566730000080138696e74656e6465645f636f756e7410010c75333200013472756e6e696e675f636f756e7410010c75333200007508083870616c6c65745f7374616b696e672052656c65617365730001203456315f305f30416e6369656e740000001856325f305f300001001856335f305f300002001856345f305f300003001856355f305f300004001856365f305f300005001856365f305f310006001856375f305f30000700007908083870616c6c65745f7374616b696e67144572726f720404540001a8344e6f74436f6e74726f6c6c6572000004644e6f74206120636f6e74726f6c6c6572206163636f756e742e204e6f745374617368000104504e6f742061207374617368206163636f756e742e34416c7265616479426f6e64656400020460537461736820697320616c726561647920626f6e6465642e34416c726561647950616972656400030474436f6e74726f6c6c657220697320616c7265616479207061697265642e30456d7074795461726765747300040460546172676574732063616e6e6f7420626520656d7074792e44496e76616c6964536c617368496e64657800050484536c617368207265636f726420696e646578206f7574206f6620626f756e64732e44496e73756666696369656e7456616c7565000604c843616e206e6f7420626f6e6420776974682076616c7565206c657373207468616e206d696e696d756d2062616c616e63652e304e6f4d6f72654368756e6b730007049043616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b732e344e6f556e6c6f636b4368756e6b000804a043616e206e6f74207265626f6e6420776974686f757420756e6c6f636b696e67206368756e6b732e3046756e646564546172676574000904c8417474656d7074696e6720746f2074617267657420612073746173682074686174207374696c6c206861732066756e64732e48496e76616c6964457261546f526577617264000a0458496e76616c69642065726120746f207265776172642e484e6f74536f72746564416e64556e69717565000b04804974656d7320617265206e6f7420736f7274656420616e6420756e697175652e38416c7265616479436c61696d6564000c0409015265776172647320666f72207468697320657261206861766520616c7265616479206265656e20636c61696d656420666f7220746869732076616c696461746f722e7c4f6666636861696e456c656374696f6e4561726c795375626d697373696f6e000d04e0546865207375626d697474656420726573756c74206973207265636569766564206f7574206f6620746865206f70656e2077696e646f772e784f6666636861696e456c656374696f6e5765616b5375626d697373696f6e000e04fc546865207375626d697474656420726573756c74206973206e6f7420617320676f6f6420617320746865206f6e652073746f726564206f6e20636861696e2e4c536e617073686f74556e617661696c61626c65000f04cc54686520736e617073686f742064617461206f66207468652063757272656e742077696e646f77206973206d697373696e672e804f6666636861696e456c656374696f6e426f67757357696e6e6572436f756e74001004ac496e636f7272656374206e756d626572206f662077696e6e65727320776572652070726573656e7465642e6c4f6666636861696e456c656374696f6e426f67757357696e6e65720011085d014f6e65206f6620746865207375626d69747465642077696e6e657273206973206e6f7420616e206163746976652063616e646964617465206f6e20636861696e2028696e646578206973206f7574206f662072616e676534696e20736e617073686f74292e704f6666636861696e456c656374696f6e426f677573436f6d7061637400120859014572726f72207768696c65206275696c64696e67207468652061737369676e6d656e7420747970652066726f6d2074686520636f6d706163742e20546869732063616e2068617070656e20696620616e20696e646578a4697320696e76616c69642c206f72206966207468652077656967687473205f6f766572666c6f775f2e784f6666636861696e456c656374696f6e426f6775734e6f6d696e61746f7200130411014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f7273206973206e6f7420616e20616374697665206e6f6d696e61746f72206f6e20636861696e2e7c4f6666636861696e456c656374696f6e426f6775734e6f6d696e6174696f6e00140449014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e206564676520746f20776869636820746865792068617665206e6f7420766f746564206f6e20636861696e2e844f6666636861696e456c656374696f6e536c61736865644e6f6d696e6174696f6e0015085d014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e2065646765207768696368206973207375626d6974746564206265666f726520746865206c617374206e6f6e2d7a65726f50736c617368206f6620746865207461726765742e744f6666636861696e456c656374696f6e426f67757353656c66566f74650016042101412073656c6620766f7465206d757374206f6e6c79206265206f726967696e617465642066726f6d20612076616c696461746f7220746f204f4e4c59207468656d73656c7665732e644f6666636861696e456c656374696f6e426f677573456467650017044101546865207375626d697474656420726573756c742068617320756e6b6e6f776e206564676573207468617420617265206e6f7420616d6f6e67207468652070726573656e7465642077696e6e6572732e684f6666636861696e456c656374696f6e426f67757353636f7265001804150154686520636c61696d65642073636f726520646f6573206e6f74206d61746368207769746820746865206f6e6520636f6d70757465642066726f6d2074686520646174612e844f6666636861696e456c656374696f6e426f677573456c656374696f6e53697a650019047454686520656c656374696f6e2073697a6520697320696e76616c69642e3843616c6c4e6f74416c6c6f776564001a0445015468652063616c6c206973206e6f7420616c6c6f7765642061742074686520676976656e2074696d652064756520746f207265737472696374696f6e73206f6620656c656374696f6e20706572696f642e58496e636f7272656374536c617368696e675370616e73001b04b0496e636f7272656374206e756d626572206f6620736c617368696e67207370616e732070726f76696465642e34416c7265616479457869737473001c04985065726d697373696f6e65642076616c696461746f7220616c7265616479206578697374732e244e6f74457869737473001d04885065726d697373696f6e65642076616c696461746f72206e6f74206578697374732e204e6f4368616e6765001e04605570646174657320776974682073616d652076616c75652e60496e76616c696456616c696461746f724964656e74697479001f04b8476976656e20706f74656e7469616c2076616c696461746f72206964656e7469747920697320696e76616c69642e68496e76616c696456616c696461746f72436f6d6d697373696f6e0020049c56616c696461746f7220707265667320617265206e6f7420696e2076616c69642072616e67652e6453746173684964656e74697479446f65734e6f744578697374002104d456616c696461746f72206f72206e6f6d696e61746f72207374617368206964656e7469747920646f6573206e6f742065786973742e7053746173684964656e746974794e6f745065726d697373696f6e6564002204b856616c696461746f72207374617368206964656e7469747920776173206e6f74207065726d697373696f6e65642e5453746173684964656e746974794e6f744344446564002304784e6f6d696e61746f7220737461736820776173206e6f742043444465642e64486974496e74656e64656456616c696461746f72436f756e74002404bc52756e6e696e672076616c696461746f7220636f756e74206869742074686520696e74656e64656420636f756e742e98496e74656e646564436f756e744973457863656564696e67436f6e73656e7375734c696d697400250435015768656e2074686520696e74656e646564206e756d626572206f662076616c696461746f727320746f2072756e206973203e3d20322f33206f66206076616c696461746f725f636f756e74602e30426f6e64546f6f536d616c6c002604dc5768656e2074686520616d6f756e7420746f20626520626f6e646564206973206c657373207468616e20604d696e696d756d426f6e64602042616453746174650027043901496e7465726e616c20737461746520686173206265636f6d6520736f6d65686f7720636f7272757074656420616e6420746865206f7065726174696f6e2063616e6e6f7420636f6e74696e75652e38546f6f4d616e795461726765747300280494546f6f206d616e79206e6f6d696e6174696f6e207461726765747320737570706c6965642e244261645461726765740029043d0141206e6f6d696e6174696f6e207461726765742077617320737570706c69656420746861742077617320626c6f636b6564206f72206f7468657277697365206e6f7420612076616c696461746f722e04744572726f7220666f7220746865207374616b696e67206d6f64756c652e7d080c2873705f7374616b696e671c6f6666656e6365384f6666656e636544657461696c7308205265706f727465720100204f6666656e64657201c901000801206f6666656e646572c90101204f6666656e6465720001247265706f7274657273910101345665633c5265706f727465723e000081080000040825012800850800000289080089080000040800a906008d08000004089108280091080c1c73705f636f72651863727970746f244b65795479706549640000040038011c5b75383b20345d000095080c3870616c6c65745f73657373696f6e1870616c6c6574144572726f7204045400011430496e76616c696450726f6f6600000460496e76616c6964206f776e6572736869702070726f6f662e5c4e6f4173736f63696174656456616c696461746f7249640001049c4e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e344475706c6963617465644b65790002046452656769737465726564206475706c6963617465206b65792e184e6f4b657973000304a44e6f206b65797320617265206173736f63696174656420776974682074686973206163636f756e742e244e6f4163636f756e7400040419014b65792073657474696e67206163636f756e74206973206e6f74206c6976652c20736f206974277320696d706f737369626c6520746f206173736f6369617465206b6579732e04744572726f7220666f72207468652073657373696f6e2070616c6c65742e9908083870616c6c65745f6772616e6470612c53746f726564537461746504044e01100110104c6976650000003050656e64696e6750617573650801307363686564756c65645f61741001044e00011464656c61791001044e000100185061757365640002003450656e64696e67526573756d650801307363686564756c65645f61741001044e00011464656c61791001044e000300009d08083870616c6c65745f6772616e6470614c53746f72656450656e64696e674368616e676508044e0110144c696d697400001001307363686564756c65645f61741001044e00011464656c61791001044e0001406e6578745f617574686f726974696573a108016c426f756e646564417574686f726974794c6973743c4c696d69743e000118666f72636564c90501244f7074696f6e3c4e3e0000a10810346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401ad01045300000400a90101185665633c543e0000a5080c3870616c6c65745f6772616e6470611870616c6c6574144572726f7204045400011c2c50617573654661696c65640000080501417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665a42865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e30526573756d654661696c65640001081101417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e277420706175736564a028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e344368616e676550656e64696e67000204e8417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e1c546f6f536f6f6e000304bc43616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e60496e76616c69644b65794f776e65727368697050726f6f66000404310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f660005043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400060415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909a90810346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401bd01045300000400ad0801185665633c543e0000ad08000002bd0100b10810346672616d655f737570706f727418747261697473106d69736334577261707065724f706171756504045401b5080008000d04000000b5080104540000b508084070616c6c65745f696d5f6f6e6c696e6564426f756e6465644f70617175654e6574776f726b53746174650c4c506565724964456e636f64696e674c696d697400584d756c746941646472456e636f64696e674c696d697400384164647265737365734c696d6974000008011c706565725f6964b908019c5765616b426f756e6465645665633c75382c20506565724964456e636f64696e674c696d69743e00014865787465726e616c5f616464726573736573bd08012d015765616b426f756e6465645665633c5765616b426f756e6465645665633c75382c204d756c746941646472456e636f64696e674c696d69743e2c204164647265737365734c696d69740a3e0000b90810346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401080453000004002801185665633c543e0000bd0810346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401b908045300000400c10801185665633c543e0000c108000002b90800c5080c4070616c6c65745f696d5f6f6e6c696e651870616c6c6574144572726f7204045400010828496e76616c69644b6579000004604e6f6e206578697374656e74207075626c6963206b65792e4c4475706c696361746564486561727462656174000104544475706c696361746564206865617274626561742e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909c908082c70616c6c65745f7375646f144572726f720404540001042c526571756972655375646f0000047c53656e646572206d75737420626520746865205375646f206163636f756e7404644572726f7220666f7220746865205375646f206d6f64756c65cd08083070616c6c65745f6173736574485469636b6572526567697374726174696f6e0404550120000801146f776e65727c01284964656e746974794964000118657870697279f801244f7074696f6e3c553e0000d108083070616c6c65745f6173736574345365637572697479546f6b656e0000100130746f74616c5f737570706c7918011c42616c616e63650001246f776e65725f6469647c01284964656e746974794964000124646976697369626c651d010110626f6f6c00012861737365745f74797065e90101244173736574547970650000d50800000408a47c00d90800000408a4e50100dd08000004087ca400e108083070616c6c65745f61737365745841737365744f776e65727368697052656c6174696f6e00010c204e6f744f776e65640000002c5469636b65724f776e65640001002841737365744f776e656400020000e50800000408a4050200e908083070616c6c65745f617373657464436c61737369635469636b6572526567697374726174696f6e00000801246574685f6f776e65723502013c457468657265756d4164647265737300012869735f637265617465641d010110626f6f6c0000ed08000004087c7c00f108083070616c6c65745f61737365741c56657273696f6e0000040008010875380000f508083070616c6c65745f6173736574144572726f7204045400017c30556e617574686f72697a65640000046c5468652075736572206973206e6f7420617574686f72697a65642e3c416c72656164794172636869766564000104805768656e20657874656e73696f6e20616c72656164792061726368697665642e44416c7265616479556e41726368697665640002048c5768656e20657874656e73696f6e20616c726561647920756e2d61726368697665642e5c457874656e73696f6e416c726561647950726573656e74000304805768656e20657874656e73696f6e20697320616c72656164792061646465642e4c4173736574416c7265616479437265617465640004048c54686520746f6b656e2068617320616c7265616479206265656e20637265617465642e345469636b6572546f6f4c6f6e6700050490546865207469636b6572206c656e677468206973206f76657220746865206c696d69742e385469636b65724e6f7441736369690006049c546865207469636b657220686173206e6f6e2d61736369692d656e636f6465642070617274732e5c5469636b6572416c726561647952656769737465726564000704c4546865207469636b657220697320616c7265616479207265676973746572656420746f20736f6d656f6e6520656c73652e54546f74616c537570706c7941626f76654c696d69740008049054686520746f74616c20737570706c792069732061626f766520746865206c696d69742e2c4e6f537563684173736574000904384e6f207375636820746f6b656e2e34416c726561647946726f7a656e000a047054686520746f6b656e20697320616c72656164792066726f7a656e2e284e6f74416e4f776e6572000b04984e6f7420616e206f776e6572206f662074686520746f6b656e206f6e20457468657265756d2e3c42616c616e63654f766572666c6f77000c04a8416e206f766572666c6f77207768696c652063616c63756c6174696e67207468652062616c616e63652e4c546f74616c537570706c794f766572666c6f77000d04bc416e206f766572666c6f77207768696c652063616c63756c6174696e672074686520746f74616c20737570706c792e48496e76616c69644772616e756c6172697479000e045c416e20696e76616c6964206772616e756c61726974792e244e6f7446726f7a656e000f0464546865206173736574206d7573742062652066726f7a656e2e3c496e76616c69645472616e73666572001004845472616e736665722076616c69646174696f6e20636865636b206661696c65642e4c496e73756666696369656e7442616c616e6365001104945468652073656e6465722062616c616e6365206973206e6f742073756666696369656e742e544173736574416c7265616479446976697369626c650012047c54686520746f6b656e20697320616c726561647920646976697369626c652e784d6178696d756d544d457874656e73696f6e4c696d69745265616368656400130499014e756d626572206f66205472616e73666572204d616e6167657220657874656e73696f6e7320617474616368656420746f20616e20617373657420697320657175616c20746f204d61784e756d6265724f66544d457874656e73696f6e466f7241737365742e70496e636f6d70617469626c65457874656e73696f6e56657273696f6e001404dc476976656e20736d61727420657874656e73696f6e206973206e6f7420636f6d70617469626c652077697468207468652061737365742e60496e76616c6964457468657265756d5369676e617475726500150494416e20696e76616c696420457468657265756d206045636473615369676e6174757265602e4c4e6f53756368436c61737369635469636b65720016049854686520676976656e207469636b6572206973206e6f74206120636c6173736963206f6e652e645469636b6572526567697374726174696f6e457870697265640017048c526567697374726174696f6e206f66207469636b65722068617320657870697265642e5053656e64657253616d6541735265636569766572001804845472616e736665727320746f2073656c6620617265206e6f7420616c6c6f776564244e6f53756368446f630019048854686520676976656e20446f63756d656e7420646f6573206e6f742065786973742e704d61784c656e6774684f6641737365744e616d654578636565646564001a04bc4d6178696d756d206c656e677468206f66206173736574206e616d6520686173206265656e2065786365656465642e8446756e64696e67526f756e644e616d654d61784c656e6774684578636565646564001b04ec4d6178696d756d206c656e677468206f66207468652066756e64696e6720726f756e64206e616d6520686173206265656e2065786365656465642e58496e76616c696441737365744964656e746966696572001c048c536f6d65206041737365744964656e746966696572602077617320696e76616c69642e84496e766573746f72556e697175656e657373436c61696d4e6f74416c6c6f776564001d04e8496e766573746f7220556e697175656e65737320636c61696d7320617265206e6f7420616c6c6f77656420666f7220746869732061737365742e60496e76616c6964437573746f6d4173736574547970654964001e0470496e76616c69642060437573746f6d4173736574547970654964602e00f9080000040841027c00fd080c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e1c56657273696f6e000004000801087538000001090c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e144572726f720404540001383043414e6f7442656e65666974000004d441206361706974616c20646973747269627574696f6e20776173206d61646520666f722061206e6f6e2d62656e656669742043412e34416c7265616479457869737473000104a84120646973747269627574696f6e20616c72656164792065786973747320666f7220746869732043412e4c4578706972794265666f72655061796d656e7400020829014120646973747269627574696f6e732070726f766964656420657870697279206461746520776173207374726963746c79206265666f726520697473207061796d656e7420646174652e2101496e206f7468657220776f7264732c2065766572797468696e6720746f206469737472696275746520776f756c6420696d6d6564696174656c7920626520666f726665697465642e44446973747269627574696e674173736574000308f043757272656e63792074686174206973206469737472696275746564206973207468652073616d65206173207468652043412773207469636b65722e690143616c6c696e67206167656e7420697320617474656d7074696e67206120666f726d206f662073746f636b2073706c69742c207768696368206973206e6f742077686174207468652065787472696e73696320697320666f722e44486f6c646572416c726561647950616964000404d454686520746f6b656e20686f6c6465722068617320616c7265616479206265656e20706169642074686569722062656e656669742e484e6f53756368446973747269627574696f6e000504c441206361706974616c20646973747269627574696f6e20646f65736e277420657869737420666f7220746869732043412e5843616e6e6f74436c61696d4265666f726553746172740006046101446973747269627574696f6e20616c6c6f746d656e742063616e6e6f7420626520636c61696d6564206173207468652063757272656e742074696d65206973206265666f72652073746172742d6f662d7061796d656e742e5843616e6e6f74436c61696d41667465724578706972790007046901446973747269627574696f6e27732065787069727920686173207061737365642e204449442063616e6e6f7420636c61696d20616e796d6f726520616e642068617320666f72666569746564207468652062656e65666974732e8042616c616e6365506572536861726550726f647563744f766572666c6f77656400080429014d756c7469706c69636174696f6e206f66207468652062616c616e636520776974682074686520706572207368617265207061796f757420616d6f756e74206f766572666c6f7765642e584e6f74446973747269627574696f6e43726561746f72000904c0444944206973206e6f7420746865206f6e652077686f20637265617465642074686520646973747269627574696f6e2e40416c72656164795265636c61696d6564000a04d44449442077686f20637265617465642074686520646973747269627574696f6e20616c726561647920646964207265636c61696d2e284e6f7445787069726564000b04f0446973747269627574696f6e20686164206e6f742065787069726564207965742c206f722074686572652773206e6f2065787069727920646174652e4c446973747269627574696f6e53746172746564000c0401014120646973747269627574696f6e20686173206265656e206163746976617465642c20617320607061796d656e745f6174203c3d206e6f776020686f6c64732e6c496e73756666696369656e7452656d61696e696e67416d6f756e74000d042d014120646973747269627574696f6e2068617320696e73756666696369656e742072656d61696e696e6720616d6f756e74206f662063757272656e637920746f20646973747269627574652e00050900000408a459020009090000040805097c000d0900000259020011090000025d0200150900000408a46d020019090c3070616c6c65745f617373657428636865636b706f696e741c56657273696f6e00000400080108753800001d090c3070616c6c65745f617373657428636865636b706f696e74144572726f72040454000114384e6f537563685363686564756c65000004cc4120636865636b706f696e74207363686564756c6520646f6573206e6f7420657869737420666f72207468652061737365742e505363686564756c654e6f7452656d6f7661626c650001041d014120636865636b706f696e74207363686564756c65206973206e6f742072656d6f7661626c6520617320607265665f636f756e74287363686564756c655f696429203e2030602e744661696c6564546f436f6d707574654e657874436865636b706f696e74000208984661696c656420746f20636f6d7075746520746865206e65787420636865636b706f696e742ed0546865207363686564756c6520646f6573206e6f74206861766520616e79207570636f6d696e6720636865636b706f696e74732e605363686564756c654475726174696f6e546f6f53686f7274000304bc546865206475726174696f6e206f662061207363686564756c6520706572696f6420697320746f6f2073686f72742e4c5363686564756c6573546f6f436f6d706c6578000408d054686520736574206f66207363686564756c65732074616b656e20746f6765746865722061726520746f6f20636f6d706c65782ef8466f72206578616d706c652c20746865792061726520746f6f206d616e792c206f722074686579206f636375727320746f6f206672657175656e746c792e0021090c4c706f6c796d6573685f7072696d69746976657348636f6d706c69616e63655f6d616e616765723c4173736574436f6d706c69616e636500000801187061757365641d010110626f6f6c000130726571756972656d656e7473a10201685665633c436f6d706c69616e6365526571756972656d656e743e00002509086470616c6c65745f636f6d706c69616e63655f6d616e616765721c56657273696f6e00000400080108753800002909086470616c6c65745f636f6d706c69616e63655f6d616e61676572144572726f7204045400011830556e617574686f72697a65640000045c55736572206973206e6f7420617574686f72697a65642e2c4469644e6f74457869737400010434446964206e6f7420657869737478496e76616c6964436f6d706c69616e6365526571756972656d656e7449640002049c436f6d706c69616e636520726571756972656d656e7420696420646f65736e277420657869737484496e636f72726563744f7065726174696f6e4f6e547275737465644973737565720003049c4973737565722065786973742062757420747279696e6720746f2061646420697420616761696e7c4475706c6963617465436f6d706c69616e6365526571756972656d656e7473000404b0546865726520617265206475706c696361746520636f6d706c69616e636520726571756972656d656e74732e7c436f6d706c69616e6365526571756972656d656e74546f6f436f6d706c6578000504110154686520776f7273742063617365207363656e6172696f206f662074686520636f6d706c69616e636520726571756972656d656e7420697320746f6f20636f6d706c6578002d0900000408a44502003109086070616c6c65745f636f72706f726174655f616374696f6e731c56657273696f6e00000400080108753800003509086070616c6c65745f636f72706f726174655f616374696f6e73144572726f7204045400013048417574684e6f744341415472616e73666572000004050154686520617574686f72697a6174696f6e2074797065206973206e6f7420746f207472616e73666572207468652043414120746f20616e6f74686572204449442e3844657461696c73546f6f4c6f6e67000104d8546865206064657461696c7360206f66206120434120657863656564656420746865206d617820616c6c6f776564206c656e6774682e3c4475706c69636174654469645461780002082101412077697468686f6c64696e6720746178206f7665727269646520666f72206120676976656e204449442077617320737065636966696564206d6f7265207468616e206f6e63652e050154686520636861696e207265667573656420746f206d616b6520612063686f6963652c20616e642068656e63652074686572652077617320616e206572726f722e3c546f6f4d616e794469645461786573000304c8546f6f206d616e792077697468686f6c64696e6720746178206f76657272696465732077657265207370656369666965642e40546f6f4d616e79546172676574496473000404e4546f6f206d616e79206964656e74697469657320696e20605461726765744964656e746974696573602077657265207370656369666965642e484e6f53756368436865636b706f696e74496400050405014f6e204341206372656174696f6e2c206120636865636b706f696e74204944207761732070726f766964656420776869636820646f65736e27742065786973742e204e6f537563684341000604a44120434120776974682074686520676976656e2060434149646020646964206e6f742065786973742e304e6f5265636f7264446174650007048854686520434120646964206e6f7420686176652061207265636f726420646174652e505265636f7264446174654166746572537461727400080cdc412043412773207265636f7264206461746520776173207374726963746c792061667465722074686520227374617274222074696d652c8c7768657265202273746172742220697320636f6e7465787420646570656e64656e742e8101466f72206578616d706c652c20697420636f756c6420626520746865207374617274206f6620612062616c6c6f742c206f72207468652073746172742d6f662d7061796d656e7420696e206361706974616c20646973747269627574696f6e2e5c4465636c4461746541667465725265636f726444617465000904ec412043412773206465636c61726174696f6e206461746520776173207374726963746c7920616674657220697473207265636f726420646174652e404465636c44617465496e467574757265000a04b4412043412773206465636c61726174696f6e2064617465206f636375727320696e20746865206675747572652e3c4e6f74546172676574656442794341000b046c434120646f6573206e6f742074617267657420746865204449442e00390900000218003d090c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74144572726f720404540001382c43414e6f744e6f74696365000004e04120636f72706f726174652062616c6c6f7420776173206d61646520666f722061206e6f6e20604973737565724e6f74696365602043412e34416c7265616479457869737473000104b84120636f72706f726174652062616c6c6f7420616c72656164792065786973747320666f7220746869732043412e304e6f5375636842616c6c6f74000204b44120636f72706f726174652062616c6c6f7420646f65736e277420657869737420666f7220746869732043412e3453746172744166746572456e6400030411014120636f72706f726174652062616c6c6f7427732073746172742074696d6520776173207374726963746c79206166746572207468652062616c6c6f74277320656e642e2c4e6f774166746572456e640004040d014120636f72706f726174652062616c6c6f74277320656e642074696d6520776173207374726963746c79206265666f7265207468652063757272656e742074696d652e5c4e756d6265724f6643686f696365734f766572666c6f770005043901496620736f6d65206d6f74696f6e20696e206120636f72706f726174652062616c6c6f7420686173206d6f72652063686f69636573207468616e20776f756c642066697420696e2060753136602e50566f74696e67416c7265616479537461727465640006040101566f74696e67207374617274656420616c72656164792e20416d656e64696e6720612062616c6c6f74206973206e6f206c6f6e67657220706f737369626c652e40566f74696e674e6f745374617274656400070468566f74696e67206861736e27742073746172746564207965742e48566f74696e67416c7265616479456e64656400080454566f74696e6720656e64656420616c72656164792e3857726f6e67566f7465436f756e74000904150150726f7669646564206c697374206f662062616c616e63657320646f6573206e6f74206d617463682074686520746f74616c206e756d626572206f662063686f696365732e44496e73756666696369656e74566f746573000a043d01566f74696e6720706f7765722075736564206279206120444944206f6e2061206d6f74696f6e2065786365656473207468617420776869636820697320617661696c61626c6520746f207468656d2e444e6f5375636852435646616c6c6261636b000b04bc546865205243562066616c6c6261636b206f6620736f6d652063686f69636520646f6573206e6f742065786973742e3052435653656c664379636c65000c04b4546865205243562066616c6c6261636b20706f696e747320746f20746865206f726967696e2063686f6963652e345243564e6f74416c6c6f776564000d048c524356206973206e6f7420616c6c6f77656420666f7220746869732062616c6c6f742e004109084870616c6c65745f7065726d697373696f6e73144572726f7204045400010448556e617574686f72697a656443616c6c6572000004ec5468652063616c6c6572206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e004509082c70616c6c65745f7069707330506970734d65746164617461042c426c6f636b4e756d62657201100018010869641d030114506970496400010c75726c2103012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e290301584f7074696f6e3c5069704465736372697074696f6e3e000128637265617465645f617410012c426c6f636b4e756d62657200014c7472616e73616374696f6e5f76657273696f6e10010c7533320001186578706972794501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00004909000004081d0300004d09082c70616c6c65745f706970732c4465706f736974496e666f04244163636f756e7449640100000801146f776e65720001244163636f756e744964000118616d6f756e7418011c42616c616e636500005109082c70616c6c65745f706970730c506970082050726f706f73616c018105244163636f756e74496401000010010869641d030114506970496400012070726f706f73616c8105012050726f706f73616c00011473746174653503013450726f706f73616c537461746500012070726f706f7365721503014c50726f706f7365723c4163636f756e7449643e00005509082c70616c6c65745f7069707330566f74696e67526573756c740000100128617965735f636f756e7410010c753332000128617965735f7374616b6518011c42616c616e63650001286e6179735f636f756e7410010c7533320001286e6179735f7374616b6518011c42616c616e636500005909082c70616c6c65745f7069707310566f7465000008001d010110626f6f6c000018011c42616c616e636500005d09082c70616c6c65745f7069707340536e617073686f744d65746164617461082c426c6f636b4e756d6265720110244163636f756e7449640100000c0128637265617465645f617410012c426c6f636b4e756d62657200011c6d6164655f62790001244163636f756e744964000108696439030128536e617073686f74496400006109082c70616c6c65745f706970731c56657273696f6e00000400080108753800006509082c70616c6c65745f70697073144572726f720404540001488452657363686564756c654e6f74427952656c65617365436f6f7264696e61746f7200000431014f6e6c79207468652047432072656c6561736520636f6f7264696e61746f7220697320616c6c6f77656420746f2072657363686564756c652070726f706f73616c20657865637574696f6e2e404e6f7446726f6d436f6d6d756e697479000108ec54686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2ecc5468652070726f706f73616c206d7573742062652066726f6d2074686520636f6d6d756e6974792c206275742069736e27742e384e6f744279436f6d6d6974746565000208ec54686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2eb45468652070726f706f73616c206d75737420626520627920636f6d6d756e6974792c206275742069736e27742e44546f6f4d616e794163746976655069707300030829015468652063757272656e74206e756d626572206f6620616374697665202870656e64696e67207c207363686564756c65642920504950732065786365656420746865206d6178696d756d9c616e64207468652070726f706f73616c206973206e6f74206279206120636f6d6d69747465652e40496e636f72726563744465706f7369740004049c50726f706f7365722073706563696669657320616e20696e636f7272656374206465706f7369744c496e73756666696369656e744465706f736974000504b450726f706f7365722063616e2774206166666f726420746f206c6f636b206d696e696d756d206465706f736974384e6f5375636850726f706f73616c000604705468652070726f706f73616c20646f6573206e6f742065786973742e4c4e6f7441436f6d6d69747465654d656d626572000704844e6f742070617274206f6620676f7665726e616e636520636f6d6d69747465652e60496e76616c6964467574757265426c6f636b4e756d626572000804d85768656e206120626c6f636b206e756d626572206973206c657373207468616e2063757272656e7420626c6f636b206e756d6265722e544e756d6265724f66566f74657345786365656465640009047c5768656e206e756d626572206f6620766f746573206f766572666c6f77732e685374616b65416d6f756e744f66566f7465734578636565646564000a04985768656e207374616b6520616d6f756e74206f66206120766f7465206f766572666c6f77732e584d697373696e6743757272656e744964656e74697479000b044c4d697373696e672063757272656e742044494458496e636f727265637450726f706f73616c5374617465000c049050726f706f73616c206973206e6f7420696e2074686520636f72726563742073746174653443616e6e6f74536b6970506970000d04fc5768656e20656e616374696e6720736e617073686f7420726573756c74732c20616e20756e736b69707061626c65205049502077617320736b69707065642e58536e617073686f74526573756c74546f6f4c61726765000e041501547269656420746f20656e61637420726573756c747320666f722074686520736e617073686f74207175657565206f766572666c6f77696e6720697473206c656e6774682e48536e617073686f7449644d69736d61746368000f045d01547269656420746f20656e61637420726573756c7420666f7220504950207769746820696420646966666572656e742066726f6d20746861742061742074686520706f736974696f6e20696e207468652071756575652e705363686564756c656450726f706f73616c446f65736e744578697374001004fc457865637574696f6e206f662061207363686564756c65642070726f706f73616c206661696c65642062656361757365206974206973206d697373696e672e6c50726f706f73616c4e6f74496e5363686564756c65645374617465001104fc412070726f706f73616c2074686174206973206e6f7420696e2061207363686564756c65642073746174652063616e6e6f742062652065786563757465642e006909000004087ce4006d09000004087c5d0300710900000408dca4007509000004087cdc007909084070616c6c65745f706f7274666f6c696f1c56657273696f6e00000400080108753800007d09084070616c6c65745f706f7274666f6c696f144572726f7204045400012454506f7274666f6c696f446f65734e6f7445786973740000047054686520706f7274666f6c696f20646f65736e27742065786973742e70496e73756666696369656e74506f7274666f6c696f42616c616e63650001049c496e73756666696369656e742062616c616e636520666f722061207472616e73616374696f6e2e6844657374696e6174696f6e497353616d65506f7274666f6c696f000204e854686520736f7572636520616e642064657374696e6174696f6e20706f7274666f6c696f732073686f756c6420626520646966666572656e742e64506f7274666f6c696f4e616d65416c7265616479496e557365000304310154686520706f7274666f6c696f20636f756c646e27742062652072656e616d65642062656361757365207468652063686f73656e206e616d6520697320616c726561647920696e207573652e945365636f6e646172794b65794e6f74417574686f72697a6564466f72506f7274666f6c696f000404fc546865207365636f6e64617279206b6579206973206e6f7420617574686f72697a656420746f206163636573732074686520706f7274666f6c696f2873292e54556e617574686f72697a6564437573746f6469616e000504f454686520706f72666f6c696f277320637573746f6479206973207769746820736f6d656f6e65206f74686572207468616e207468652063616c6c65722e60496e73756666696369656e74546f6b656e734c6f636b6564000604bc43616e206e6f7420756e6c6f636b206d6f726520746f6b656e73207468616e207768617420617265206c6f636b656444506f7274666f6c696f4e6f74456d707479000704bc54686520706f7274666f6c696f207374696c6c2068617320736f6d652061737365742062616c616e6365206c6566746c446966666572656e744964656e74697479506f7274666f6c696f73000804b454686520706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e746974696573008109084c70616c6c65745f70726f746f636f6c5f666565144572726f7204045400010c68496e73756666696369656e744163636f756e7442616c616e6365000004b0496e73756666696369656e74206163636f756e742062616c616e636520746f2070617920746865206665652e4c556e48616e646c6564496d62616c616e636573000104884e6f742061626c6520746f2068616e646c65642074686520696d62616c616e63657368496e73756666696369656e745375627369647942616c616e6365000204b0496e73756666696369656e7420737562736964792062616c616e636520746f2070617920746865206665652e008509000002890900890904184f7074696f6e040454018d090108104e6f6e6500000010536f6d6504008d0900000100008d09084070616c6c65745f7363686564756c65722c5363686564756c65645632101043616c6c0181052c426c6f636b4e756d62657201103450616c6c6574734f726967696e019109244163636f756e7449640100001401206d617962655f69647903013c4f7074696f6e3c5665633c75383e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c8105011043616c6c0001386d617962655f706572696f646963710701944f7074696f6e3c7363686564756c653a3a506572696f643c426c6f636b4e756d6265723e3e0001186f726967696e9109013450616c6c6574734f726967696e000091090c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d65304f726967696e43616c6c65720001141873797374656d0400950901746672616d655f73797374656d3a3a4f726967696e3c52756e74696d653e00000044506f6c796d657368436f6d6d69747465650400990901f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365313e00090048546563686e6963616c436f6d6d697474656504009d0901f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365333e000b004055706772616465436f6d6d69747465650400a10901f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365343e000d0010566f69640400a50901110173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a566f696400040000950908306672616d655f73797374656d245261774f726967696e04244163636f756e7449640100010c10526f6f74000000185369676e656404000001244163636f756e744964000100104e6f6e65000200009909084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449013901010420456e646f72736564000000009d09084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449015501010420456e646f7273656400000000a109084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449016501010420456e646f7273656400000000a509081c73705f636f726510566f696400010000a909084070616c6c65745f7363686564756c65722052656c656173657300010808563100000008563200010000ad090c4070616c6c65745f7363686564756c65721870616c6c6574144572726f72040454000110404661696c6564546f5363686564756c65000004644661696c656420746f207363686564756c6520612063616c6c204e6f74466f756e640001047c43616e6e6f742066696e6420746865207363686564756c65642063616c6c2e5c546172676574426c6f636b4e756d626572496e50617374000204a4476976656e2074617267657420626c6f636b206e756d62657220697320696e2074686520706173742e4852657363686564756c654e6f4368616e6765000304f052657363686564756c65206661696c6564206265636175736520697420646f6573206e6f74206368616e6765207363686564756c65642074696d652e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909b109084470616c6c65745f736574746c656d656e741456656e7565000008011c63726561746f727c01284964656e74697479496400012876656e75655f747970658903012456656e7565547970650000b5090000040881038d0300b9090000040881030000bd09084470616c6c65745f736574746c656d656e742c496e737472756374696f6e08184d6f6d656e7401202c426c6f636b4e756d6265720110001c0138696e737472756374696f6e5f69648d030134496e737472756374696f6e496400012076656e75655f69648103011c56656e75654964000118737461747573c1090144496e737472756374696f6e53746174757300013c736574746c656d656e745f747970659103016c536574746c656d656e74547970653c426c6f636b4e756d6265723e000128637265617465645f6174f801384f7074696f6e3c4d6f6d656e743e00012874726164655f64617465f801384f7074696f6e3c4d6f6d656e743e00012876616c75655f64617465f801384f7074696f6e3c4d6f6d656e743e0000c109084470616c6c65745f736574746c656d656e7444496e737472756374696f6e53746174757300010c1c556e6b6e6f776e0000001c50656e64696e67000100184661696c656400020000c509000004088d039d0300c909084470616c6c65745f736574746c656d656e74244c656753746174757304244163636f756e7449640100010c4050656e64696e67546f6b656e4c6f636b00000040457865637574696f6e50656e64696e6700010050457865637574696f6e546f4265536b697070656408000001244163636f756e744964000020010c75363400020000cd09000004088d03dc00d109084470616c6c65745f736574746c656d656e744441666669726d6174696f6e53746174757300010c1c556e6b6e6f776e0000001c50656e64696e670001002041666669726d656400020000d50900000408dc8d0300d90900000408a4810300dd09084470616c6c65745f736574746c656d656e741c56657273696f6e0000040008010875380000e109084470616c6c65745f736574746c656d656e74144572726f7204045400016430496e76616c696456656e75650000045456656e756520646f6573206e6f742065786973742e30556e617574686f72697a6564000104a853656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e3c4e6f50656e64696e6741666669726d000204d04e6f2070656e64696e672061666669726d6174696f6e20666f72207468652070726f766964656420696e737472756374696f6e2e58496e737472756374696f6e4e6f7441666669726d656400030488496e737472756374696f6e20686173206e6f74206265656e2061666669726d65642e54496e737472756374696f6e4e6f7450656e64696e67000404b850726f766964656420696e737472756374696f6e206973206e6f742070656e64696e6720657865637574696f6e2e50496e737472756374696f6e4e6f744661696c6564000504b850726f766964656420696e737472756374696f6e206973206e6f74206661696c696e6720657865637574696f6e2e344c65674e6f7450656e64696e670006049850726f7669646564206c6567206973206e6f742070656e64696e6720657865637574696f6e2e48556e617574686f72697a65645369676e6572000704985369676e6572206973206e6f7420617574686f72697a6564206279207468652076656e75652e5452656365697074416c7265616479436c61696d6564000804545265636569707420616c726561647920757365642e44526563656970744e6f74436c61696d65640009045452656365697074206e6f742075736564207965742e44556e617574686f72697a656456656e7565000a04a456656e756520646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e484661696c6564546f4c6f636b546f6b656e73000b0421015768696c652061666669726d696e6720746865207472616e736665722c2073797374656d206661696c656420746f206c6f636b207468652061737365747320696e766f6c7665642e44496e737472756374696f6e4661696c6564000c0478496e737472756374696f6e206661696c656420746f20657865637574652e5c496e737472756374696f6e4461746573496e76616c6964000d0474496e737472756374696f6e2068617320696e76616c696420646174657370496e737472756374696f6e536574746c65426c6f636b506173736564000e04a8496e737472756374696f6e27732074617267657420736574746c6520626c6f636b20726561636865642e40496e76616c69645369676e6174757265000f04784f6666636861696e207369676e617475726520697320696e76616c69642e4853616d6553656e64657252656365697665720010048453656e64657220616e6420726563656976657220617265207468652073616d652e44506f7274666f6c696f4d69736d617463680011042501506f7274666f6c696f20696e207265636569707420646f6573206e6f74206d61746368207769746820706f7274666f6c696f732070726f76696465642062792074686520757365722e44536574746c654f6e50617374426c6f636b00120461015468652070726f766964656420736574746c656d656e7420626c6f636b206e756d62657220697320696e20746865207061737420616e642063616e6e6f74206265207573656420627920746865207363686564756c65722e4c4e6f506f7274666f6c696f50726f76696465640013043d01506f7274666f6c696f20626173656420616374696f6e732072657175697265206174206c65617374206f6e6520706f7274666f6c696f20746f2062652070726f766964656420617320696e7075742e6c556e657870656374656441666669726d6174696f6e53746174757300140445015468652063757272656e7420696e737472756374696f6e2061666669726d6174696f6e2073746174757320646f6573206e6f7420737570706f7274207468652072657175657374656420616374696f6e2e404661696c6564546f5363686564756c650015048c5363686564756c696e67206f6620616e20696e737472756374696f6e206661696c732e404c6567436f756e74546f6f536d616c6c001604a5014c65677320636f756e742073686f756c64206d61746368657320776974682074686520746f74616c206e756d626572206f66206c65677320696e20776869636820676976656e20706f7274666f6c696f20616374206173206066726f6d5f706f7274666f6c696f602e48556e6b6e6f776e496e737472756374696f6e00170474496e737472756374696f6e2073746174757320697320756e6b6e6f776e64496e737472756374696f6e486173546f6f4d616e794c656773001804c44d6178696d756d206c65677320746861742063616e20626520696e20612073696e676c6520696e737472756374696f6e2e04844572726f727320666f722074686520536574746c656d656e74206d6f64756c652ee509000002ad0300e90900000408ed097c00ed0900000408a4ad0300f109084470616c6c65745f73746174697374696373144572726f72040454000110604475706c69636174655472616e736665724d616e616765720000048c546865207472616e73666572206d616e6167657220616c726561647920657869737473585472616e736665724d616e616765724d697373696e670001047c5472616e73666572206d616e61676572206973206e6f7420656e61626c65643c496e76616c69645472616e73666572000204505472616e73666572206e6f7420616c6c6f776564705472616e736665724d616e61676572734c696d6974526561636865640003041101546865206c696d6974206f66207472616e73666572206d616e616765727320616c6c6f77656420666f7220616e20617373657420686173206265656e2072656163686564046453746174697374696373206d6f64756c65206572726f72732ef50900000408a4b90300f909082870616c6c65745f73746f144572726f7204045400013030556e617574686f72697a6564000004a853656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e204f766572666c6f770001048c416e2061726974686d65746963206f7065726174696f6e206f766572666c6f7765642e6c496e73756666696369656e74546f6b656e7352656d61696e696e67000204804e6f7420656e6f75676820746f6b656e73206c65667420666f722073616c652e4846756e647261697365724e6f74466f756e640003045446756e64726169736572206e6f7420666f756e642e4446756e647261697365724e6f744c6976650004049c46756e64726169736572206973206569746865722066726f7a656e206f722073746f707065642e4046756e64726169736572436c6f736564000504ac46756e6472616973657220686173206265656e20636c6f7365642f73746f7070656420616c72656164792e4446756e6472616973657245787069726564000604d0496e746572616374696e67207769746820612066756e6472616973657220706173742074686520656e6420604d6f6d656e74602e30496e76616c696456656e756500070468416e20696e76616c69642076656e75652070726f76696465642e44496e76616c6964507269636554696572730008042501416e20696e646976696475616c20707269636520746965722077617320696e76616c6964206f72206120736574206f662070726963652074696572732077617320696e76616c69642e54496e76616c69644f66666572696e6757696e646f770009045d0157696e646f77202873746172742074696d652c20656e642074696d65292068617320696e76616c696420706172616d65746572732c20652e672073746172742074696d6520697320616674657220656e642074696d652e404d617850726963654578636565646564000a04bc5072696365206f662074686520696e766573746d656e7420657863656564656420746865206d61782070726963652e58496e766573746d656e74416d6f756e74546f6f4c6f77000b04e8496e766573746d656e7420616d6f756e74206973206c6f776572207468616e206d696e696d756d20696e766573746d656e7420616d6f756e742e04844572726f727320666f722074686520536574746c656d656e74206d6f64756c652efd09083c70616c6c65745f7472656173757279144572726f720404540001044c496e73756666696369656e7442616c616e63650000047850726f706f73657227732062616c616e636520697320746f6f206c6f772e04784572726f7220666f7220746865207472656173757279206d6f64756c652e010a083870616c6c65745f7574696c697479144572726f7204045400010c40496e76616c69645369676e6174757265000004744f6666636861696e207369676e617475726520697320696e76616c6964405461726765744364644d697373696e670001048054617267657420646f6573206e6f74206861766520612076616c69642043444430496e76616c69644e6f6e636500020c6850726f7669646564206e6f6e63652077617320696e76616c696411014966207468652070726f7669646564206e6f6e6365203c2063757272656e74206e6f6e63652c207468652063616c6c2077617320616c72656164792065786563757465645d014966207468652070726f7669646564206e6f6e6365203e2063757272656e74206e6f6e63652c207468652063616c6c287329206265666f7265207468652063757272656e74206661696c656420746f206578656375746500050a082c70616c6c65745f62617365144572726f720404540001081c546f6f4c6f6e6700000880457863656564656420612067656e65726963206c656e677468206c696d69742e1d01546865206c696d697420636f756c6420626520666f7220616e7920736f7274206f66206c69737473206f66207468696e67732c20696e636c7564696e67206120737472696e672e3c436f756e7465724f766572666c6f77000118b85468652073657175656e636520636f756e74657220666f7220736f6d657468696e67206f766572666c6f7765642e001d015768656e20746869732068617070656e7320646570656e6473206f6e20652e672e2c20746865206361706163697479206f6620746865206964656e74696669657220747970652e3901466f72206578616d706c652c207765206d69676874206861766520607075622073747275637420506970496428753332293b602c207769746820607533323a3a4d4158602063617061636974792e5901496e2070726163746963652c207468657365206572726f72732077696c6c206e657665722068617070656e20627574206e6f20636f646520706174682073686f756c6420726573756c7420696e20612070616e69632cfc736f20746865736520636f726e6572206361736573206e65656420746f20626520636f7665726564207769746820616e206572726f722076617269616e742e00090a00000408a41901000d0a085870616c6c65745f65787465726e616c5f6167656e7473144572726f72040454000118204e6f537563684147000004ec416e20414720776974682074686520676976656e2060414749646020646964206e6f7420657869737420666f722074686520605469636b6572602e44556e617574686f72697a65644167656e74000104e8546865206167656e74206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e38416c7265616479416e4167656e74000204e85468652070726f766964656420606167656e746020697320616c726561647920616e206167656e7420666f722074686520605469636b6572602e284e6f74416e4167656e74000304d85468652070726f766964656420606167656e7460206973206e6f7420616e206167656e7420666f722074686520605469636b6572602e5452656d6f76696e674c61737446756c6c4167656e74000408e054686973206167656e7420697320746865206c6173742066756c6c206f6e652c20616e642069742773206265696e672072656d6f7665642c686d616b696e6720746865206173736574206f727068616e65642e845365636f6e646172794b65794e6f74417574686f72697a6564466f7241737365740005041d015468652063616c6c65722773207365636f6e64617279206b657920646f6573206e6f74206861766520746865207265717569726564206173736574207065726d697373696f6e2e00110a083870616c6c65745f72656c617965721c53756273696479040c416363010000080128706179696e675f6b657900010c41636300012472656d61696e696e6718011c42616c616e63650000150a083870616c6c65745f72656c61796572144572726f7204045400011c44557365724b65794364644d697373696e67000004cc5468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e4c506179696e674b65794364644d697373696e67000104cc5468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e2c4e6f506179696e674b6579000204ac5468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e304e6f74506179696e674b6579000304b05468652060757365725f6b65796020686173206120646966666572656e742060706179696e675f6b6579602e644e6f74417574686f72697a6564466f72506179696e674b6579000404b8546865207369676e6572206973206e6f7420617574686f72697a656420666f722060706179696e675f6b6579602e5c4e6f74417574686f72697a6564466f72557365724b6579000504b0546865207369676e6572206973206e6f7420617574686f72697a656420666f722060757365725f6b6579602e204f766572666c6f77000604b85468652072656d61696e696e6720504f4c595820666f722060757365725f6b657960206f766572666c6f7765642e00190a083870616c6c65745f72657761726473144572726f7204045400011044556e6b6e6f776e49746e41646472657373000004cc4164647265737320776173206e6f7420666f756e6420696e20746865206c697374206f662049746e206164647265737365732e5c49746e526577617264416c7265616479436c61696d65640001047c49746e207265776172642077617320616c726561647920636c61696d65642e40496e76616c69645369676e61747572650002047c50726f7669646564207369676e61747572652077617320696e76616c69642e54556e61626c65546f436f7665727442616c616e6365000304b042616c616e63652063616e206e6f7420626520636f6e76657274656420746f2061207072696d69746976652e001d0a084470616c6c65745f746573745f7574696c73144572726f7204045400010000210a102873705f72756e74696d651c67656e657269634c756e636865636b65645f65787472696e73696348556e636865636b656445787472696e736963101c4164647265737301d5041043616c6c018105245369676e617475726501810714457874726101250a00040028000000250a00000420290a2d0a310a350a3d0a410a490a4d0a00290a10306672616d655f73797374656d28657874656e73696f6e7348636865636b5f737065635f76657273696f6e40436865636b5370656356657273696f6e040454000000002d0a10306672616d655f73797374656d28657874656e73696f6e7340636865636b5f74785f76657273696f6e38436865636b547856657273696f6e04045400000000310a10306672616d655f73797374656d28657874656e73696f6e7334636865636b5f67656e6573697330436865636b47656e6573697304045400000000350a10306672616d655f73797374656d28657874656e73696f6e733c636865636b5f6d6f7274616c69747938436865636b4d6f7274616c69747904045400000400390a010c4572610000390a102873705f72756e74696d651c67656e657269630c6572610c4572610001010420496d6d6f7274616c0000001c4d6f7274616c31040008000001001c4d6f7274616c32040008000002001c4d6f7274616c33040008000003001c4d6f7274616c34040008000004001c4d6f7274616c35040008000005001c4d6f7274616c36040008000006001c4d6f7274616c37040008000007001c4d6f7274616c38040008000008001c4d6f7274616c3904000800000900204d6f7274616c313004000800000a00204d6f7274616c313104000800000b00204d6f7274616c313204000800000c00204d6f7274616c313304000800000d00204d6f7274616c313404000800000e00204d6f7274616c313504000800000f00204d6f7274616c313604000800001000204d6f7274616c313704000800001100204d6f7274616c313804000800001200204d6f7274616c313904000800001300204d6f7274616c323004000800001400204d6f7274616c323104000800001500204d6f7274616c323204000800001600204d6f7274616c323304000800001700204d6f7274616c323404000800001800204d6f7274616c323504000800001900204d6f7274616c323604000800001a00204d6f7274616c323704000800001b00204d6f7274616c323804000800001c00204d6f7274616c323904000800001d00204d6f7274616c333004000800001e00204d6f7274616c333104000800001f00204d6f7274616c333204000800002000204d6f7274616c333304000800002100204d6f7274616c333404000800002200204d6f7274616c333504000800002300204d6f7274616c333604000800002400204d6f7274616c333704000800002500204d6f7274616c333804000800002600204d6f7274616c333904000800002700204d6f7274616c343004000800002800204d6f7274616c343104000800002900204d6f7274616c343204000800002a00204d6f7274616c343304000800002b00204d6f7274616c343404000800002c00204d6f7274616c343504000800002d00204d6f7274616c343604000800002e00204d6f7274616c343704000800002f00204d6f7274616c343804000800003000204d6f7274616c343904000800003100204d6f7274616c353004000800003200204d6f7274616c353104000800003300204d6f7274616c353204000800003400204d6f7274616c353304000800003500204d6f7274616c353404000800003600204d6f7274616c353504000800003700204d6f7274616c353604000800003800204d6f7274616c353704000800003900204d6f7274616c353804000800003a00204d6f7274616c353904000800003b00204d6f7274616c363004000800003c00204d6f7274616c363104000800003d00204d6f7274616c363204000800003e00204d6f7274616c363304000800003f00204d6f7274616c363404000800004000204d6f7274616c363504000800004100204d6f7274616c363604000800004200204d6f7274616c363704000800004300204d6f7274616c363804000800004400204d6f7274616c363904000800004500204d6f7274616c373004000800004600204d6f7274616c373104000800004700204d6f7274616c373204000800004800204d6f7274616c373304000800004900204d6f7274616c373404000800004a00204d6f7274616c373504000800004b00204d6f7274616c373604000800004c00204d6f7274616c373704000800004d00204d6f7274616c373804000800004e00204d6f7274616c373904000800004f00204d6f7274616c383004000800005000204d6f7274616c383104000800005100204d6f7274616c383204000800005200204d6f7274616c383304000800005300204d6f7274616c383404000800005400204d6f7274616c383504000800005500204d6f7274616c383604000800005600204d6f7274616c383704000800005700204d6f7274616c383804000800005800204d6f7274616c383904000800005900204d6f7274616c393004000800005a00204d6f7274616c393104000800005b00204d6f7274616c393204000800005c00204d6f7274616c393304000800005d00204d6f7274616c393404000800005e00204d6f7274616c393504000800005f00204d6f7274616c393604000800006000204d6f7274616c393704000800006100204d6f7274616c393804000800006200204d6f7274616c393904000800006300244d6f7274616c31303004000800006400244d6f7274616c31303104000800006500244d6f7274616c31303204000800006600244d6f7274616c31303304000800006700244d6f7274616c31303404000800006800244d6f7274616c31303504000800006900244d6f7274616c31303604000800006a00244d6f7274616c31303704000800006b00244d6f7274616c31303804000800006c00244d6f7274616c31303904000800006d00244d6f7274616c31313004000800006e00244d6f7274616c31313104000800006f00244d6f7274616c31313204000800007000244d6f7274616c31313304000800007100244d6f7274616c31313404000800007200244d6f7274616c31313504000800007300244d6f7274616c31313604000800007400244d6f7274616c31313704000800007500244d6f7274616c31313804000800007600244d6f7274616c31313904000800007700244d6f7274616c31323004000800007800244d6f7274616c31323104000800007900244d6f7274616c31323204000800007a00244d6f7274616c31323304000800007b00244d6f7274616c31323404000800007c00244d6f7274616c31323504000800007d00244d6f7274616c31323604000800007e00244d6f7274616c31323704000800007f00244d6f7274616c31323804000800008000244d6f7274616c31323904000800008100244d6f7274616c31333004000800008200244d6f7274616c31333104000800008300244d6f7274616c31333204000800008400244d6f7274616c31333304000800008500244d6f7274616c31333404000800008600244d6f7274616c31333504000800008700244d6f7274616c31333604000800008800244d6f7274616c31333704000800008900244d6f7274616c31333804000800008a00244d6f7274616c31333904000800008b00244d6f7274616c31343004000800008c00244d6f7274616c31343104000800008d00244d6f7274616c31343204000800008e00244d6f7274616c31343304000800008f00244d6f7274616c31343404000800009000244d6f7274616c31343504000800009100244d6f7274616c31343604000800009200244d6f7274616c31343704000800009300244d6f7274616c31343804000800009400244d6f7274616c31343904000800009500244d6f7274616c31353004000800009600244d6f7274616c31353104000800009700244d6f7274616c31353204000800009800244d6f7274616c31353304000800009900244d6f7274616c31353404000800009a00244d6f7274616c31353504000800009b00244d6f7274616c31353604000800009c00244d6f7274616c31353704000800009d00244d6f7274616c31353804000800009e00244d6f7274616c31353904000800009f00244d6f7274616c3136300400080000a000244d6f7274616c3136310400080000a100244d6f7274616c3136320400080000a200244d6f7274616c3136330400080000a300244d6f7274616c3136340400080000a400244d6f7274616c3136350400080000a500244d6f7274616c3136360400080000a600244d6f7274616c3136370400080000a700244d6f7274616c3136380400080000a800244d6f7274616c3136390400080000a900244d6f7274616c3137300400080000aa00244d6f7274616c3137310400080000ab00244d6f7274616c3137320400080000ac00244d6f7274616c3137330400080000ad00244d6f7274616c3137340400080000ae00244d6f7274616c3137350400080000af00244d6f7274616c3137360400080000b000244d6f7274616c3137370400080000b100244d6f7274616c3137380400080000b200244d6f7274616c3137390400080000b300244d6f7274616c3138300400080000b400244d6f7274616c3138310400080000b500244d6f7274616c3138320400080000b600244d6f7274616c3138330400080000b700244d6f7274616c3138340400080000b800244d6f7274616c3138350400080000b900244d6f7274616c3138360400080000ba00244d6f7274616c3138370400080000bb00244d6f7274616c3138380400080000bc00244d6f7274616c3138390400080000bd00244d6f7274616c3139300400080000be00244d6f7274616c3139310400080000bf00244d6f7274616c3139320400080000c000244d6f7274616c3139330400080000c100244d6f7274616c3139340400080000c200244d6f7274616c3139350400080000c300244d6f7274616c3139360400080000c400244d6f7274616c3139370400080000c500244d6f7274616c3139380400080000c600244d6f7274616c3139390400080000c700244d6f7274616c3230300400080000c800244d6f7274616c3230310400080000c900244d6f7274616c3230320400080000ca00244d6f7274616c3230330400080000cb00244d6f7274616c3230340400080000cc00244d6f7274616c3230350400080000cd00244d6f7274616c3230360400080000ce00244d6f7274616c3230370400080000cf00244d6f7274616c3230380400080000d000244d6f7274616c3230390400080000d100244d6f7274616c3231300400080000d200244d6f7274616c3231310400080000d300244d6f7274616c3231320400080000d400244d6f7274616c3231330400080000d500244d6f7274616c3231340400080000d600244d6f7274616c3231350400080000d700244d6f7274616c3231360400080000d800244d6f7274616c3231370400080000d900244d6f7274616c3231380400080000da00244d6f7274616c3231390400080000db00244d6f7274616c3232300400080000dc00244d6f7274616c3232310400080000dd00244d6f7274616c3232320400080000de00244d6f7274616c3232330400080000df00244d6f7274616c3232340400080000e000244d6f7274616c3232350400080000e100244d6f7274616c3232360400080000e200244d6f7274616c3232370400080000e300244d6f7274616c3232380400080000e400244d6f7274616c3232390400080000e500244d6f7274616c3233300400080000e600244d6f7274616c3233310400080000e700244d6f7274616c3233320400080000e800244d6f7274616c3233330400080000e900244d6f7274616c3233340400080000ea00244d6f7274616c3233350400080000eb00244d6f7274616c3233360400080000ec00244d6f7274616c3233370400080000ed00244d6f7274616c3233380400080000ee00244d6f7274616c3233390400080000ef00244d6f7274616c3234300400080000f000244d6f7274616c3234310400080000f100244d6f7274616c3234320400080000f200244d6f7274616c3234330400080000f300244d6f7274616c3234340400080000f400244d6f7274616c3234350400080000f500244d6f7274616c3234360400080000f600244d6f7274616c3234370400080000f700244d6f7274616c3234380400080000f800244d6f7274616c3234390400080000f900244d6f7274616c3235300400080000fa00244d6f7274616c3235310400080000fb00244d6f7274616c3235320400080000fc00244d6f7274616c3235330400080000fd00244d6f7274616c3235340400080000fe00244d6f7274616c3235350400080000ff00003d0a10306672616d655f73797374656d28657874656e73696f6e732c636865636b5f6e6f6e636528436865636b4e6f6e6365040454000004000d040120543a3a496e6465780000410a0c4c706f6c796d6573685f657874656e73696f6e7330636865636b5f7765696768742c436865636b57656967687404045400000400450a011443573c543e0000450a10306672616d655f73797374656d28657874656e73696f6e7330636865636b5f7765696768742c436865636b57656967687404045400000000490a086870616c6c65745f7472616e73616374696f6e5f7061796d656e74604368617267655472616e73616374696f6e5061796d656e7404045400000400d101013042616c616e63654f663c543e00004d0a084870616c6c65745f7065726d697373696f6e734453746f726543616c6c4d6574616461746104045400000000510a0c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d651c52756e74696d6500000000bc1853797374656d011853797374656d401c4163636f756e7401010402000c4101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e8205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e3845787472696e736963436f756e74000010040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e2c426c6f636b57656967687401001c600000000000000000000000000000000000000000000000000488205468652063757272656e742077656967687420666f722074686520626c6f636b2e40416c6c45787472696e736963734c656e000010040004410120546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e24426c6f636b486173680101040510248000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101040510280400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d6265720100101000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801002480000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e1844696765737401002c040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e7473010048040010a0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e005901204e4f54453a20546869732073746f72616765206974656d206973206578706c696369746c7920756e626f756e6465642073696e6365206974206973206e6576657220696e74656e64656420746f2062652072656164642066726f6d2077697468696e207468652072756e74696d652e284576656e74436f756e74010010100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f70696373010104022405040400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e004d01205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e484c61737452756e74696d65557067726164650000090404000455012053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e545570677261646564546f553332526566436f756e7401001d010400044d012054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e605570677261646564546f547269706c65526566436f756e7401001d010400085d012054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e73207468726565207479706573206f662060526566436f756e74602e2046616c736548202864656661756c7429206966206e6f742e38457865637574696f6e50686173650000fd03040004882054686520657865637574696f6e207068617365206f662074686520626c6f636b2e01150401541830426c6f636b576569676874732504850100c817a80400000000204aa9d10100008036be26000000000180914b872e010000010098f73e5d0100000100000000000000008036be26000000000180199ef1a20100000100204aa9d1010000010088526a740000008036be260000000000000004d020426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e2c426c6f636b4c656e677468310430000078000000a0000000a00004a820546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e38426c6f636b48617368436f756e741010fa000000045501204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e20446257656967687439044080f0fa020000000000c2eb0b000000000409012054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e1c56657273696f6e3d040d0430706f6c796d6573685f64657630706f6c796d6573685f64657601000000ba0b00000000000048df6acb689907609b0300000037e397fc7c91f5e40100000040fe3ad401f8959a05000000d2bc9897eed08f1503000000f78b278be53f454c02000000ed99c5acb25eedf503000000cbca25e39f14238702000000687ad44ad37f03c201000000bc9d89904f5b923f0100000037c8bb1350a9a2a801000000ab3c0572291feb8b0100000018ef58a3b67ba77001000000329342994773047f01000000001a0b29f17d01f401000000f28e8080b6e2dfd001000000bb6ba9053c5c9d78010000009f242c2c886f3fce01000000595ac34c5ea1f5fe01000000020000000484204765742074686520636861696e27732063757272656e742076657273696f6e2e28535335385072656669780d03082a0014a8205468652064657369676e61746564205353383520707265666978206f66207468697320636861696e2e0039012054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e20697331012074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f662069742061737020616e206964656e746966696572206f662074686520636861696e2e015104001042616265011042616265402845706f6368496e64657801002020000000000000000004542043757272656e742065706f636820696e6465782e2c417574686f726974696573010055040400046c2043757272656e742065706f636820617574686f7269746965732e2c47656e65736973536c6f740100650420000000000000000008f82054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e205468697320697320309020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2c43757272656e74536c6f740100650420000000000000000004542043757272656e7420736c6f74206e756d6265722e2852616e646f6d6e65737301000480000000000000000000000000000000000000000000000000000000000000000028b8205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e002c20232053656375726974790005012054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061f8206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e7915012063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d6265727320746861742074686973150120286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e206265050120757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e0d01206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e6050656e64696e6745706f6368436f6e6669674368616e67650000690404000461012050656e64696e672065706f636820636f6e66696775726174696f6e206368616e676520746861742077696c6c206265206170706c696564207768656e20746865206e6578742065706f636820697320656e61637465642e384e65787452616e646f6d6e657373010004800000000000000000000000000000000000000000000000000000000000000000045c204e6578742065706f63682072616e646f6d6e6573732e3c4e657874417574686f7269746965730100550404000460204e6578742065706f636820617574686f7269746965732e305365676d656e74496e6465780100101000000000247c2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e00f4205765206d616b6520612074726164656f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e01012057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f942060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e00ec204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e090120576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572791c2065706f63682e44556e646572436f6e737472756374696f6e0101040510750404000415012054574f582d4e4f54453a20605365676d656e74496e6465786020697320616e20696e6372656173696e6720696e74656765722c20736f2074686973206973206f6b61792e2c496e697469616c697a656400007d0404000801012054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d65601d01206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e4c417574686f7256726652616e646f6d6e65737301007d0404001015012054686973206669656c642073686f756c6420616c7761797320626520706f70756c6174656420647572696e6720626c6f636b2070726f63657373696e6720756e6c6573731901207365636f6e6461727920706c61696e20736c6f74732061726520656e61626c65642028776869636820646f6e277420636f6e7461696e206120565246206f7574707574292e0051012049742069732073657420696e20606f6e5f696e697469616c697a65602c206265666f72652069742077696c6c20636f6e7461696e207468652076616c75652066726f6d20746865206c61737420626c6f636b2e2845706f6368537461727401007503200000000000000000145d012054686520626c6f636b206e756d62657273207768656e20746865206c61737420616e642063757272656e742065706f6368206861766520737461727465642c20726573706563746976656c7920604e2d316020616e641420604e602e4901204e4f54453a20576520747261636b207468697320697320696e206f7264657220746f20616e6e6f746174652074686520626c6f636b206e756d626572207768656e206120676976656e20706f6f6c206f66590120656e74726f7079207761732066697865642028692e652e20697420776173206b6e6f776e20746f20636861696e206f6273657276657273292e2053696e63652065706f6368732061726520646566696e656420696e590120736c6f74732c207768696368206d617920626520736b69707065642c2074686520626c6f636b206e756d62657273206d6179206e6f74206c696e6520757020776974682074686520736c6f74206e756d626572732e204c6174656e657373010010100000000014d820486f77206c617465207468652063757272656e7420626c6f636b20697320636f6d706172656420746f2069747320706172656e742e001501205468697320656e74727920697320706f70756c617465642061732070617274206f6620626c6f636b20657865637574696f6e20616e6420697320636c65616e65642075701101206f6e20626c6f636b2066696e616c697a6174696f6e2e205175657279696e6720746869732073746f7261676520656e747279206f757473696465206f6620626c6f636bb020657865637574696f6e20636f6e746578742073686f756c6420616c77617973207969656c64207a65726f2e2c45706f6368436f6e6669670000810404000861012054686520636f6e66696775726174696f6e20666f72207468652063757272656e742065706f63682e2053686f756c64206e6576657220626520604e6f6e656020617320697420697320696e697469616c697a656420696e242067656e657369732e3c4e65787445706f6368436f6e666967000081040400082d012054686520636f6e66696775726174696f6e20666f7220746865206e6578742065706f63682c20604e6f6e65602069662074686520636f6e6669672077696c6c206e6f74206368616e6765e82028796f752063616e2066616c6c6261636b20746f206045706f6368436f6e6669676020696e737465616420696e20746861742063617365292e018504000c3445706f63684475726174696f6e20202c010000000000000cec2054686520616d6f756e74206f662074696d652c20696e20736c6f74732c207468617420656163682065706f63682073686f756c64206c6173742e1901204e4f54453a2043757272656e746c79206974206973206e6f7420706f737369626c6520746f206368616e6765207468652065706f6368206475726174696f6e20616674657221012074686520636861696e2068617320737461727465642e20417474656d7074696e6720746f20646f20736f2077696c6c20627269636b20626c6f636b2070726f64756374696f6e2e444578706563746564426c6f636b54696d652020701700000000000014050120546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e67110120626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f75740501207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f740901206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473a0207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e384d6178417574686f7269746965731010a08601000488204d6178206e756d626572206f6620617574686f72697469657320616c6c6f776564019904012454696d657374616d70012454696d657374616d70080c4e6f7701002020000000000000000004902043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e2444696455706461746501001d01040004b420446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f019d040004344d696e696d756d506572696f642020b80b000000000000104d0120546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a5d0120706572696f6420746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c5d012067656e6572616c6c7920776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c206265a020646f75626c65207468697320706572696f64206f6e2064656661756c742073657474696e67732e00021c496e6469636573011c496e646963657304204163636f756e74730001040210a5040400048820546865206c6f6f6b75702066726f6d20696e64657820746f206163636f756e742e01a9040170041c4465706f736974184040420f0000000000000000000000000004ac20546865206465706f736974206e656564656420666f7220726573657276696e6720616e20696e6465782e01ad040328417574686f72736869700128417574686f72736869700c18556e636c65730100b1040400041c20556e636c657318417574686f720000000400046420417574686f72206f662063757272656e7420626c6f636b2e30446964536574556e636c657301001d01040004bc205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e01b904000440556e636c6547656e65726174696f6e731010000000000ccc20546865206e756d626572206f6620626c6f636b73206261636b2077652073686f756c642061636365707420756e636c65732ee42054686973206d65616e7320746861742077652077696c6c206465616c207769746820756e636c652d706172656e7473207468617420617265942060556e636c6547656e65726174696f6e73202b203160206265666f726520606e6f77602e01c104042042616c616e636573012042616c616e6365730834546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e144c6f636b730101040200c504040008b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e01d104017404484578697374656e7469616c4465706f73697418400000000000000000000000000000000004d420546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e01d90405485472616e73616374696f6e5061796d656e7401485472616e73616374696f6e5061796d656e7408444e6578744665654d756c7469706c6965720100dd0440000064a7b3b6e00d0000000000000000003853746f7261676556657273696f6e0100e104040000000008485472616e73616374696f6e42797465466565184064000000000000000000000000000000040d01205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e2c576569676874546f466565e5045c040000000000000000000000000000000049b400000001040d012054686520706f6c796e6f6d69616c2074686174206973206170706c69656420696e206f7264657220746f20646572697665206665652066726f6d207765696768742e0006204964656e7469747901204964656e7469747938284469645265636f726473010104067ced0484000000000000000000000000000000000000000000000000000000000000000000045420444944202d3e206964656e7469747920696e666f2c497344696446726f7a656e010104067c1d01040004e420444944202d3e20626f6f6c207468617420696e64696361746573206966207365636f6e64617279206b657973206172652066726f7a656e2e2843757272656e7444696400007c040004e02049742073746f726573207468652063757272656e74206964656e7469747920666f722063757272656e74207472616e73616374696f6e2e3043757272656e74506179657200000004000401012049742073746f726573207468652063757272656e74206761732066656520706179657220666f72207468652063757272656e74207472616e73616374696f6e18436c61696d730101080502f904f4c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a04f020285461726765742049442c20636c61696d20747970652920286973737565722c73636f706529202d3e204173736f63696174656420636c61696d73404b6579546f4964656e7469747949647301010405007c80000000000000000000000000000000000000000000000000000000000000000000444d756c7469507572706f73654e6f6e636501002020000000000000000004bc204e6f6e636520746f20656e7375726520756e6971756520616374696f6e732e207374617274732066726f6d20312e684f6666436861696e417574686f72697a6174696f6e4e6f6e6365010104067c2020000000000000000004c820417574686f72697a6174696f6e206e6f6e636520706572204964656e746974792e20496e697469616c6c7920697320302e38417574686f72697a6174696f6e73000108020509050d05040004b020416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792f6b6579206861734c417574686f72697a6174696f6e73476976656e010108060511059884000000000000000000000000000000000000000000000000000000000000000000044d0120416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792068617320676976656e2e2028417574686f72697a65722c20617574685f6964202d3e20617574686f72697a6564296c43646441757468466f724d61737465724b6579526f746174696f6e01001d010400086501204f62736f6c657465642073746f72616765207661726961626c652073757065726365646564206279206043646441757468466f725072696d6172794b6579526f746174696f6e602e204974206973206b65707420686572659820666f722074686520707572706f7365206f662073746f72616765206d6967726174696f6e2e7043646441757468466f725072696d6172794b6579526f746174696f6e01001d010400085d01204120636f6e66696720666c616720746861742c206966207365742c20696e7374727563747320616e20617574686f72697a6174696f6e2066726f6d2061204344442070726f766964657220696e206f7264657220746f9c206368616e676520746865207072696d617279206b6579206f6620616e206964656e746974792e3853746f7261676556657273696f6e01001505040004442053746f726167652076657273696f6e2e484163636f756e744b6579526566436f756e740101040200202000000000000000001cc420486f77206d616e7920227374726f6e6722207265666572656e63657320746f20746865206163636f756e74206b65792e00fc205374726f6e67207265666572656e6365732077696c6c20626c6f636b2061206b65792066726f6d206c656176696e672069742773206964656e746974792e00cc2050616c6c657473207573696e6720227374726f6e6722207265666572656e63657320746f206163636f756e74206b6579733aac202a2052656c617965723a20466f722060757365725f6b65796020616e642060706179696e675f6b65796000011905018c0430496e697469616c504f4c595818400000000000000000000000000000000000016d05074c4364645365727669636550726f7669646572730138496e7374616e63653247726f75700c344163746976654d656d6265727301003101040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d6265727301007105040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01790501290100017d050844506f6c796d657368436f6d6d69747465650148496e7374616e636531436f6d6d6974746565242450726f706f73616c7301000104040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f6600010406248105040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e670001040624d107040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100310104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401007503200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201004501040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e0100d507040004442053746f726167652076657273696f6e2e0185050135010001d907094c436f6d6d69747465654d656d626572736869700138496e7374616e63653147726f75700c344163746976654d656d6265727301003101040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d6265727301007105040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e0189050149010001dd070a48546563686e6963616c436f6d6d69747465650148496e7374616e636533436f6d6d6974746565242450726f706f73616c7301000104040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f6600010406248105040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e670001040624d107040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100310104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401007503200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201004501040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e0100d507040004442053746f726167652076657273696f6e2e018d050151010001e1070b70546563686e6963616c436f6d6d69747465654d656d626572736869700138496e7374616e63653347726f75700c344163746976654d656d6265727301003101040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d6265727301007105040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e0191050159010001e5070c4055706772616465436f6d6d69747465650148496e7374616e636534436f6d6d6974746565242450726f706f73616c7301000104040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f6600010406248105040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e670001040624d107040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100310104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401007503200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201004501040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e0100d507040004442053746f726167652076657273696f6e2e0195050161010001e9070d6855706772616465436f6d6d69747465654d656d626572736869700138496e7374616e63653447726f75700c344163746976654d656d6265727301003101040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d6265727301007105040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e0199050169010001ed070e204d756c746953696701204d756c746953696730344d756c74695369674e6f6e6365010020200000000000000000042101204e6f6e636520746f20656e7375726520756e69717565204d756c746953696720616464726573736573206172652067656e6572617465643b207374617274732066726f6d20312e3c4d756c74695369675369676e6572730101080605f107988400000000000000000000000000000000000000000000000000000000000000000004d4205369676e657273206f662061206d756c74697369672e20286d756c74697369672c207369676e657229203d3e207369676e65722e3c4e756d6265724f665369676e65727301010406002020000000000000000004cc204e756d626572206f6620617070726f7665642f6163636570746564207369676e657273206f662061206d756c74697369672e544d756c74695369675369676e73526571756972656401010406002020000000000000000004e020436f6e6669726d6174696f6e73207265717569726564206265666f72652070726f63657373696e672061206d756c74697369672074782e384d756c74695369675478446f6e65010104060020200000000000000000043501204e756d626572206f66207472616e73616374696f6e732070726f706f73656420696e2061206d756c74697369672e20557365642061732074782069643b207374617274732066726f6d20302e2450726f706f73616c7300010405f507810504000475012050726f706f73616c732070726573656e74656420666f7220766f74696e6720746f2061206d756c746973696720286d756c74697369672c2070726f706f73616c20696429203d3e204f7074696f6e3c543a3a50726f706f73616c3e2e2c50726f706f73616c4964730001080602f90720040004942041206d617070696e67206f662070726f706f73616c7320746f207468656972204944732e14566f74657301010405fd071d01040004250120496e646976696475616c206d756c7469736967207369676e657220766f7465732e20286d756c7469207369672c207369676e65722c2070726f706f73616c29203d3e20766f74652e344b6579546f4d756c746953696701010405000080000000000000000000000000000000000000000000000000000000000000000004c8204d6170732061206d756c7469736967207369676e6572206b657920746f2061206d756c746973696720616464726573732e484d756c7469536967546f4964656e7469747901010406007c80000000000000000000000000000000000000000000000000000000000000000004a4204d6170732061206d756c7469736967206163636f756e7420746f20697473206964656e746974792e3850726f706f73616c44657461696c01010405f50701084c00000000000000000000000000000000000000047c2044657461696c73206f662061206d756c74697369672070726f706f73616c485472616e73616374696f6e56657273696f6e010010100000000004f420546865206c617374207472616e73616374696f6e2076657273696f6e2c207573656420666f7220606f6e5f72756e74696d655f75706772616465602e019d05017101000109080f1842726964676501184272696467652828436f6e74726f6c6c65720100008000000000000000000000000000000000000000000000000000000000000000000c410120546865206d756c7469736967206163636f756e74206f66207468652062726964676520636f6e74726f6c6c65722e205468652067656e65736973207369676e65727320616363657074207468656972450120617574686f72697a6174696f6e7320616e64206172652061626c6520746f206765742074686569722070726f706f73616c732064656c6976657265642e20546865206272696467652063726561746f729c207472616e736665727320736f6d6520504f4c5920746f207468656972206964656e746974792e3c427269646765547844657461696c7301010802020d081108d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000859012044657461696c73206f6620627269646765207472616e73616374696f6e73206964656e7469666965642077697468207061697273206f662074686520726563697069656e74206163636f756e7420616e64207468656820627269646765207472616e73616374696f6e206e6f6e63652e1441646d696e010000800000000000000000000000000000000000000000000000000000000000000000043c205468652061646d696e206b65792e1846726f7a656e01001d01040004bc2057686574686572206f72206e6f742074686520627269646765206f7065726174696f6e2069732066726f7a656e2e30467265657a6541646d696e7301010402001d01040004090120467265657a65206272696467652061646d696e732e20205468657365206163636f756e74732063616e206f6e6c7920667265657a6520746865206272696467652e2054696d656c6f636b0100101000000000083d012054686520627269646765207472616e73616374696f6e2074696d656c6f636b20706572696f642c20696e20626c6f636b732c2073696e63652074686520616363657074616e6365206f66207468653101207472616e73616374696f6e2070726f706f73616c20647572696e67207768696368207468652061646d696e206b65792063616e20667265657a6520746865207472616e73616374696f6e2e2c4272696467654c696d69740100190850000000000000000000000000000000000000000008290120546865206d6178696d756d206e756d626572206f66206272696467656420504f4c595820706572206964656e746974792077697468696e20612073657420696e74657276616c206f66f820626c6f636b732e204669656c64733a20504f4c595820616d6f756e7420616e642074686520626c6f636b20696e74657276616c206475726174696f6e2e30506f6c797842726964676564010104067c190850000000000000000000000000000000000000000008510120416d6f756e74206f6620504f4c5958206272696467656420627920746865206964656e7469747920696e206c61737420626c6f636b20696e74657276616c2e204669656c64733a2074686520627269646765649420616d6f756e7420616e6420746865206c61737420696e74657276616c206e756d6265722e4c4272696467654c696d69744578656d70746564010104057c1d01040004c0204964656e746974696573206e6f7420636f6e73747261696e65642062792074686520627269646765206c696d69742e3853746f7261676556657273696f6e01001d08040004442053746f726167652076657273696f6e2e01a10501750100012108101c5374616b696e67011c5374616b696e679c30486973746f7279446570746801001010540000001c8c204e756d626572206f66206572617320746f206b65657020696e20686973746f72792e00390120496e666f726d6174696f6e206973206b65707420666f72206572617320696e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e006101204d757374206265206d6f7265207468616e20746865206e756d626572206f6620657261732064656c617965642062792073657373696f6e206f74686572776973652e20492e652e2061637469766520657261206d757374390120616c7761797320626520696e20686973746f72792e20492e652e20606163746976655f657261203e2063757272656e745f657261202d20686973746f72795f646570746860206d757374206265302067756172616e746565642e3856616c696461746f72436f756e74010010100000000004a82054686520696465616c206e756d626572206f66207374616b696e67207061727469636970616e74732e544d696e696d756d56616c696461746f72436f756e740100101000000000044101204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e34496e76756c6e657261626c65730100910104000c590120416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e636520746865792772654d01206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f7572ac20696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e18426f6e6465640001040500000400040101204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e184c6564676572000104020025080400044501204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e1450617965650101040500b505040004e42057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e2856616c696461746f72730101040500b90508000004450120546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e284e6f6d696e61746f727300010405003108040004650120546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f2074686520736574206f66207374617368206b657973206f6620616c6c2076616c696461746f727320746f206e6f6d696e6174652e2843757272656e744572610000100400105c205468652063757272656e742065726120696e6465782e006501205468697320697320746865206c617465737420706c616e6e6564206572612c20646570656e64696e67206f6e20686f77207468652053657373696f6e2070616c6c657420717565756573207468652076616c696461746f7280207365742c206974206d6967687420626520616374697665206f72206e6f742e2441637469766545726100003508040010d820546865206163746976652065726120696e666f726d6174696f6e2c20697420686f6c647320696e64657820616e642073746172742e0059012054686520616374697665206572612069732074686520657261206265696e672063757272656e746c792072657761726465642e2056616c696461746f7220736574206f66207468697320657261206d757374206265ac20657175616c20746f205b6053657373696f6e496e746572666163653a3a76616c696461746f7273605d2e5445726173537461727453657373696f6e496e6465780001040510100400103101205468652073657373696f6e20696e646578206174207768696368207468652065726120737461727420666f7220746865206c6173742060484953544f52595f44455054486020657261732e006101204e6f74653a205468697320747261636b7320746865207374617274696e672073657373696f6e2028692e652e2073657373696f6e20696e646578207768656e20657261207374617274206265696e672061637469766529f020666f7220746865206572617320696e20605b43757272656e74457261202d20484953544f52595f44455054482c2043757272656e744572615d602e2c457261735374616b65727301010805053908cd010c0000001878204578706f73757265206f662076616c696461746f72206174206572612e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e48457261735374616b657273436c697070656401010805053908cd010c0000002c9820436c6970706564204578706f73757265206f662076616c696461746f72206174206572612e00590120546869732069732073696d696c617220746f205b60457261735374616b657273605d20627574206e756d626572206f66206e6f6d696e61746f7273206578706f736564206973207265647563656420746f20746865dc2060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732e1d0120284e6f74653a20746865206669656c642060746f74616c6020616e6420606f776e60206f6620746865206578706f737572652072656d61696e7320756e6368616e676564292ef42054686973206973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e005d012054686973206973206b657965642066697374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e484572617356616c696461746f72507265667301010805053908b9050800001411012053696d696c617220746f2060457261735374616b657273602c207468697320686f6c64732074686520707265666572656e636573206f662076616c696461746f72732e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4c4572617356616c696461746f7252657761726400010405101804000c09012054686520746f74616c2076616c696461746f7220657261207061796f757420666f7220746865206c6173742060484953544f52595f44455054486020657261732e0021012045726173207468617420686176656e27742066696e697368656420796574206f7220686173206265656e2072656d6f76656420646f65736e27742068617665207265776172642e4045726173526577617264506f696e747301010405103d0814000000000008ac205265776172647320666f7220746865206c6173742060484953544f52595f44455054486020657261732e250120496620726577617264206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207265776172642069732072657475726e65642e3845726173546f74616c5374616b65010104051018400000000000000000000000000000000008ec2054686520746f74616c20616d6f756e74207374616b656420666f7220746865206c6173742060484953544f52595f44455054486020657261732e1d0120496620746f74616c206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207374616b652069732072657475726e65642e20466f7263654572610100490804000454204d6f6465206f662065726120666f7263696e672e4c536c6173685265776172644672616374696f6e0100950110000000000cf8205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e00e4205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e4c43616e63656c6564536c6173685061796f757401001840000000000000000000000000000000000815012054686520616d6f756e74206f662063757272656e637920676976656e20746f207265706f7274657273206f66206120736c617368206576656e7420776869636820776173ec2063616e63656c65642062792065787472616f7264696e6172792063697263756d7374616e6365732028652e672e20676f7665726e616e6365292e40556e6170706c696564536c617368657301010405104d08040004c420416c6c20756e6170706c69656420736c61736865732074686174206172652071756575656420666f72206c617465722e28426f6e646564457261730100050404001025012041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e00c8204d75737420636f6e7461696e7320696e666f726d6174696f6e20666f72206572617320666f72207468652072616e67653abc20605b6163746976655f657261202d20626f756e64696e675f6475726174696f6e3b206163746976655f6572615d604c56616c696461746f72536c617368496e457261000108050539085d08040008450120416c6c20736c617368696e67206576656e7473206f6e2076616c696461746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682070726f706f7274696f6e7020616e6420736c6173682076616c7565206f6620746865206572612e4c4e6f6d696e61746f72536c617368496e4572610001080505390818040004610120416c6c20736c617368696e67206576656e7473206f6e206e6f6d696e61746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682076616c7565206f6620746865206572612e34536c617368696e675370616e73000104050061080400048c20536c617368696e67207370616e7320666f72207374617368206163636f756e74732e245370616e536c617368010104050d086508800000000000000000000000000000000000000000000000000000000000000000083d01205265636f72647320696e666f726d6174696f6e2061626f757420746865206d6178696d756d20736c617368206f6620612073746173682077697468696e206120736c617368696e67207370616e2cb82061732077656c6c20617320686f77206d7563682072657761726420686173206265656e2070616964206f75742e584561726c69657374556e6170706c696564536c617368000010040004fc20546865206561726c696573742065726120666f72207768696368207765206861766520612070656e64696e672c20756e6170706c69656420736c6173682e48536e617073686f7456616c696461746f727300009101040008650120536e617073686f74206f662076616c696461746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e48536e617073686f744e6f6d696e61746f727300009101040008650120536e617073686f74206f66206e6f6d696e61746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e34517565756564456c65637465640000690804000c650120546865206e6578742076616c696461746f72207365742e2041742074686520656e64206f6620616e206572612c206966207468697320697320617661696c61626c652028706f74656e7469616c6c792066726f6d20746865610120726573756c74206f6620616e206f6666636861696e20776f726b6572292c20697420697320696d6d6564696174656c7920757365642e204f74686572776973652c20746865206f6e2d636861696e20656c656374696f6e342069732065786563757465642e2c51756575656453636f726500009d06040004b0205468652073636f7265206f66207468652063757272656e74205b60517565756564456c6563746564605d2e44457261456c656374696f6e53746174757301006d08040008490120466c616720746f20636f6e74726f6c2074686520657865637574696f6e206f6620746865206f6666636861696e20656c656374696f6e2e205768656e20604f70656e285f29602c207765206163636570746c20736f6c7574696f6e7320746f206265207375626d69747465642e54497343757272656e7453657373696f6e46696e616c01001d010400084d012054727565206966207468652063757272656e74202a2a706c616e6e65642a2a2073657373696f6e2069732066696e616c2e204e6f74652074686174207468697320646f6573206e6f742074616b65206572615820666f7263696e6720696e746f206163636f756e742e505065726d697373696f6e65644964656e74697479000104057c7108040004ec20456e74697469657320746861742061726520616c6c6f77656420746f2072756e206f70657261746f722f76616c696461746f72206e6f6465732e5856616c696461746f72436f6d6d697373696f6e4361700100950110000000000415012045766572792076616c696461746f722068617320636f6d6d697373696f6e20746861742073686f756c6420626520696e207468652072616e6765205b302c204361705d2e504d696e696d756d426f6e645468726573686f6c64010018400000000000000000000000000000000004d020546865206d696e696d756d20616d6f756e74207769746820776869636820612076616c696461746f722063616e20626f6e642e48536c617368696e67416c6c6f776564466f72010099010402003853746f7261676556657273696f6e01007508040610cc2054727565206966206e6574776f726b20686173206265656e20757067726164656420746f20746869732076657273696f6e2e7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e00a020546869732069732073657420746f2076362e302e3120666f72206e6577206e6574776f726b732e01b1050189012c3853657373696f6e735065724572611010030000000470204e756d626572206f662073657373696f6e7320706572206572612e3c426f6e64696e674475726174696f6e10100700000004e4204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e48536c61736844656665724475726174696f6e101004000000140101204e756d626572206f662065726173207468617420736c6173686573206172652064656665727265642062792c20616674657220636f6d7075746174696f6e2e00bc20546869732073686f756c64206265206c657373207468616e2074686520626f6e64696e67206475726174696f6e2e2d012053657420746f203020696620736c61736865732073686f756c64206265206170706c69656420696d6d6564696174656c792c20776974686f7574206f70706f7274756e69747920666f723820696e74657276656e74696f6e2e44456c656374696f6e4c6f6f6b616865616410104b0000001c710120546865206e756d626572206f6620626c6f636b73206265666f72652074686520656e64206f6620746865206572612066726f6d20776869636820656c656374696f6e207375626d697373696f6e732061726520616c6c6f7765642e006d012053657474696e67207468697320746f207a65726f2077696c6c2064697361626c6520746865206f6666636861696e20636f6d7075746520616e64206f6e6c79206f6e2d636861696e207365712d70687261676d656e2077696c6c2420626520757365642e007501205468697320697320626f756e646564206279206265696e672077697468696e20746865206c6173742073657373696f6e2e2048656e63652c2073657474696e6720697420746f20612076616c7565206d6f7265207468616e207468659c206c656e677468206f6620612073657373696f6e2077696c6c20626520706f696e746c6573732e344d6178497465726174696f6e7310100a0000000c2901204d6178696d756d206e756d626572206f662062616c616e63696e6720697465726174696f6e7320746f2072756e20696e20746865206f6666636861696e207375626d697373696f6e2e00ec2049662073657420746f20302c2062616c616e63655f736f6c7574696f6e2077696c6c206e6f7420626520657865637574656420617420616c6c2e504d696e536f6c7574696f6e53636f726542756d7095011020a1070004610120546865207468726573686f6c64206f6620696d70726f76656d656e7420746861742073686f756c642062652070726f766964656420666f722061206e657720736f6c7574696f6e20746f2062652061636365707465642e804d61784e6f6d696e61746f72526577617264656450657256616c696461746f7210100008000010f820546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320726577617264656420666f7220656163682076616c696461746f722e00690120466f7220656163682076616c696461746f72206f6e6c79207468652060244d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732063616e20636c61696d2101207468656972207265776172642e2054686973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e5c4d617856616c696461746f725065724964656e746974794d0210100905000cf4204d6178696d756d206e756d626572206f662076616c696461746f727320666f722065616368207065726d697373696f6e6564206964656e746974792e005901204d6178206e756d626572206f662076616c696461746f727320636f756e74203d20604d617856616c696461746f725065724964656e74697479202a2053656c663a3a76616c696461746f725f636f756e742829602e844d61785661726961626c65496e666c6174696f6e546f74616c49737375616e636518400080c6a47e8d03000000000000000000047101204d6178696d756d20616d6f756e74206f662060543a3a63757272656e63793a3a746f74616c5f69737375616e63652829602061667465722074686174206e6f6e2d696e666c6174656420726577617264732067657420706169642e444669786564596561726c79526577617264184000c0444a547f0000000000000000000004010120546f74616c2079656172207265776172647320746861742067657473207061696420647572696e6720666978656420726577617264207363686564756c652e2c4d696e696d756d426f6e64184040420f0000000000000000000000000004f0204d696e696d756d20616d6f756e74206f6620504f4c59582074686174206d75737420626520626f6e64656420666f722061206e657720626f6e642e01790811204f6666656e63657301204f6666656e6365730c1c5265706f72747300010405247d08040004490120546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e58436f6e63757272656e745265706f727473496e6465780101080505810801040400042901204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e485265706f72747342794b696e64496e64657801010405250128040018110120456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e00bc20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e004901204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f66690120646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e00019d010000121c53657373696f6e011c53657373696f6e1c2856616c696461746f7273010091010400047c205468652063757272656e7420736574206f662076616c696461746f72732e3043757272656e74496e646578010010100000000004782043757272656e7420696e646578206f66207468652073657373696f6e2e345175657565644368616e67656401001d01040008390120547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f7273a420686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e285175657565644b657973010085080400083d012054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b657973e02077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e4844697361626c656456616c696461746f72730100d9030400148020496e6469636573206f662064697361626c65642076616c696461746f72732e003d01205468652076656320697320616c77617973206b65707420736f7274656420736f20746861742077652063616e2066696e642077686574686572206120676976656e2076616c696461746f722069733d012064697361626c6564207573696e672062696e617279207365617263682e204974206765747320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e73642061206e657720736574206f66206964656e7469746965732e204e6578744b6579730001040500a9060400049c20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e204b65794f776e6572000104058d0800040004090120546865206f776e6572206f662061206b65792e20546865206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e01a50601a101000195081348417574686f72697479446973636f766572790000000000141c4772616e647061011c4772616e647061181453746174650100990804000490205374617465206f66207468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e676500009d08040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000010040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c6564000075030400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e3043757272656e745365744964010020200000000000000000085d0120546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c697469657329c420696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e30536574496453657373696f6e00010405201004001059012041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e00b82054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e01b10601a50104384d6178417574686f7269746965731010a0860100045c204d617820417574686f72697469657320696e2075736501a5081528486973746f726963616c00000000001620496d4f6e6c696e650120496d4f6e6c696e651038486561727462656174416674657201001010000000002c1d012054686520626c6f636b206e756d6265722061667465722077686963682069742773206f6b20746f2073656e64206865617274626561747320696e207468652063757272656e74242073657373696f6e2e0025012041742074686520626567696e6e696e67206f6620656163682073657373696f6e20776520736574207468697320746f20612076616c756520746861742073686f756c642066616c6c350120726f7567686c7920696e20746865206d6964646c65206f66207468652073657373696f6e206475726174696f6e2e20546865206964656120697320746f206669727374207761697420666f721901207468652076616c696461746f727320746f2070726f64756365206120626c6f636b20696e207468652063757272656e742073657373696f6e2c20736f207468617420746865a820686561727462656174206c61746572206f6e2077696c6c206e6f74206265206e65636573736172792e00390120546869732076616c75652077696c6c206f6e6c79206265207573656420617320612066616c6c6261636b206966207765206661696c20746f2067657420612070726f7065722073657373696f6e2d012070726f677265737320657374696d6174652066726f6d20604e65787453657373696f6e526f746174696f6e602c2061732074686f736520657374696d617465732073686f756c642062650101206d6f7265206163637572617465207468656e207468652076616c75652077652063616c63756c61746520666f7220604865617274626561744166746572602e104b6579730100a908040004d0205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e4852656365697665644865617274626561747300010805057503b1080400083d0120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206053657373696f6e496e6465786020616e64206041757468496e6465786020746fb02060577261707065724f70617175653c426f756e6465644f70617175654e6574776f726b53746174653e602e38417574686f726564426c6f636b730101080505390810100000000008150120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206056616c696461746f7249643c543e6020746f20746865c8206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e01dd0601b9010440556e7369676e65645072696f726974792020ffffffffffffffff10f0204120636f6e66696775726174696f6e20666f722062617365207072696f72697479206f6620756e7369676e6564207472616e73616374696f6e732e0015012054686973206973206578706f73656420736f20746861742069742063616e2062652074756e656420666f7220706172746963756c61722072756e74696d652c207768656eb4206d756c7469706c652070616c6c6574732073656e6420756e7369676e6564207472616e73616374696f6e732e01c508176052616e646f6d6e657373436f6c6c656374697665466c6970016052616e646f6d6e657373436f6c6c656374697665466c6970043852616e646f6d4d6174657269616c0100010404000c610120536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e2054686973610120697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f664420746865206f6c6465737420686173682e0000000018105375646f01105375646f040c4b657901000080000000000000000000000000000000000000000000000000000000000000000004842054686520604163636f756e74496460206f6620746865207375646f206b65792e01fd0601dd010001c9081914417373657401144173736574541c5469636b65727301010402a4cd08840000000000000000000000000000000000000000000000000000000000000000000874205469636b657220726567697374726174696f6e2064657461696c732e7c20287469636b657229202d3e205469636b6572526567697374726174696f6e305469636b6572436f6e666967010019070800000870205469636b657220726567697374726174696f6e20636f6e6669672e9420287469636b657229202d3e205469636b6572526567697374726174696f6e436f6e66696718546f6b656e7301010402a4d108c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008e02044657461696c73206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e050120287469636b657229202d3e205365637572697479546f6b656e2064657461696c73205b72657475726e73205365637572697479546f6b656e207374727563745d2841737365744e616d657301010402a40102040008ec204173736574206e616d65206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e6020287469636b657229202d3e206041737365744e616d65602442616c616e63654f660101080206d50818400000000000000000000000000000000008b42054686520746f74616c206173736574207469636b65722062616c616e636520706572206964656e746974792e6420287469636b65722c2044494429202d3e2042616c616e63652c4964656e7469666965727301010402a4f101040004b82041206d6170206f662061207469636b6572206e616d6520616e64206173736574206964656e746966696572732e50437573746f6d54797065496453657175656e63650100ed0110000000000cc420546865206e65787420604173736574547970653a3a437573746f6d6020494420696e207468652073657175656e63652e00d0204e756d6265727320696e207468652073657175656e63652073746172742066726f6d203120726174686572207468616e20302e2c437573746f6d547970657301010405ed0128040004f8204d61707320637573746f6d20617373657420747970652069647320746f20746865207265676973746572656420737472696e6720636f6e74656e74732e48437573746f6d5479706573496e76657273650101040228ed01100000000004610120496e7665727365206d6170206f662060437573746f6d5479706573602c2066726f6d207265676973746572656420737472696e6720636f6e74656e747320746f20637573746f6d2061737365742074797065206964732e3046756e64696e67526f756e6401010402a4e5010400089c20546865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e60207469636b6572202d3e2066756e64696e6720726f756e6450497373756564496e46756e64696e67526f756e6401010402d9081840000000000000000000000000000000000811012054686520746f74616c2062616c616e636573206f6620746f6b656e732069737375656420696e20616c6c207265636f726465642066756e64696e6720726f756e64732e8c20287469636b65722c2066756e64696e6720726f756e6429202d3e2062616c616e63651846726f7a656e01010402a41d01040008e82054686520736574206f662066726f7a656e2061737365747320696d706c656d656e7465642061732061206d656d62657273686970206d61702e3c207469636b6572202d3e20626f6f6c5c41737365744f776e65727368697052656c6174696f6e730101080602dd08e10804000888205469636b65727320616e6420746f6b656e206f776e656420627920612075736572842028757365722c207469636b657229202d3e2041737365744f776e657273686970384173736574446f63756d656e74730101080205e5080902140000000000087c20446f63756d656e747320617474616368656420746f20616e2041737365747420287469636b65722c20646f635f696429202d3e20646f63756d656e74604173736574446f63756d656e7473496453657175656e636501010402a4050210000000000880205065722d7469636b657220646f63756d656e7420494420636f756e7465722e4c20287469636b657229202d3e20646f635f696438436c61737369635469636b65727300010402a4e908040004f0205469636b657220726567697374726174696f6e2064657461696c73206f6e20506f6c796d61746820436c6173736963202f20457468657265756d2e4042616c616e63654f66417453636f70650101080606ed081840000000000000000000000000000000000ccc2042616c616e636573206765742073746f726564206f6e20746865206261736973206f6620746865206053636f70654964602e9d01205269676874206e6f77206974206973206f6e6c792068656c7066756c20666f722074686520554920707572706f7365732062757420696e206675747572652069742063616e206265207573656420746f20646f206d697261636c6573206f6e2d636861696e2e88202853636f706549642c204964656e74697479496429203d3e2042616c616e63652e4041676772656761746542616c616e63650101080206d5081840000000000000000000000000000000000825012053746f7265206167677265676174652062616c616e6365206f662074686f7365206964656e746974696573207468617420686173207468652073616d65206053636f70654964602e7820285469636b65722c2053636f7065496429203d3e2042616c616e63652e2453636f706549644f660101080206d5087c80000000000000000000000000000000000000000000000000000000000000000008dc20547261636b73207468652053636f70654964206f6620746865206964656e7469747920666f72206120676976656e207469636b65722e8420285469636b65722c204964656e74697479496429203d3e2053636f706549642e6444697361626c65496e766573746f72556e697175656e65737301010402a41d0104001031012044656369646573207768657468657220696e766573746f7220756e697175656e65737320726571756972656d656e7420697320656e666f7263656420666f7220746869732061737365742e8c206066616c736560206d65616e73207468617420697420697320656e666f726365642e0040205469636b6572203d3e20626f6f6c2e3853746f7261676556657273696f6e0100f108040004442053746f726167652076657273696f6e2e01010701e1010c784d61784e756d6265724f66544d457874656e73696f6e466f724173736574101005000000004841737365744e616d654d61784c656e677468101080000000006446756e64696e67526f756e644e616d654d61784c656e6774681010800000000001f5081a4c4361706974616c446973747269627574696f6e014c4361706974616c446973747269627574696f6e0c34446973747269627574696f6e73000104024102490204000c350120416c6c206361706974616c20646973747269627574696f6e732c207469656420746f207468656972207265737065637469766520636f72706f7261746520616374696f6e732028434173292e005c20284341496429203d3e20446973747269627574696f6e28486f6c6465725061696401010402f9081d0104000c8c2048617320616e20617373657420686f6c646572206265656e2070616964207965743f00a42028434149642c2044494429202d3e2057617320444944207061696420696e2074686520434149643f3853746f7261676556657273696f6e0100fd08040004442053746f726167652076657273696f6e2e011d07013902000101091b28436865636b706f696e740128436865636b706f696e742c2c546f74616c537570706c79010108020505091840000000000000000000000000000000000cb420546f74616c20737570706c79206f662074686520746f6b656e2061742074686520636865636b706f696e742e00ec20287469636b65722c20636865636b706f696e74496429202d3e20746f74616c20737570706c7920617420676976656e20636865636b706f696e741c42616c616e6365010108020509091840000000000000000000000000000000000c882042616c616e6365206f66206120444944206174206120636865636b706f696e742e00050120287469636b65722c206469642c20636865636b706f696e7420494429202d3e2042616c616e6365206f66206120444944206174206120636865636b706f696e7450436865636b706f696e74496453657175656e636501010402a45902200000000000000000108c20436865636b706f696e74732049442067656e657261746f722073657175656e63652ea8204944206f6620666972737420636865636b706f696e74206973203120696e7374656164206f6620302e007c20287469636b657229202d3e206e6f2e206f6620636865636b706f696e74733842616c616e6365557064617465730101080205d5080d09040008bc20436865636b706f696e747320776865726520612044494427732062616c616e63652077617320757064617465642ef020287469636b65722c2064696429202d3e205b636865636b706f696e7420494420776865726520757365722062616c616e6365206368616e6765645d2854696d657374616d70730101080205050920200000000000000000185c20436865636b706f696e742074696d657374616d70732e000901204576657279207363686564756c652d6f726967696e6174656420636865636b706f696e74206d6170732069747320494420746f20697473206475652074696d652e210120457665727920636865636b706f696e74206d616e75616c6c792063726561746564206d6170732069747320494420746f207468652074696d65206f66207265636f7264696e672e00d020287469636b657229202d3e2028636865636b706f696e7420494429202d3e20636865636b706f696e742074696d657374616d70585363686564756c65734d6178436f6d706c657869747901002020000000000000000008190120546865206d6178696d756d20636f6d706c657869747920616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365749c2028692e652e20605363686564756c6573602073746f72616765206974656d2062656c6f77292e485363686564756c65496453657175656e636501010402a46d022000000000000000000cb420436865636b706f696e74207363686564756c652049442073657175656e636520666f72207469636b6572732e006020287469636b657229202d3e207363686564756c65204944245363686564756c657301010402a4110904000c8820436865636b706f696e74207363686564756c657320666f72207469636b6572732e005c20287469636b657229202d3e205b7363686564756c655d405363686564756c65526566436f756e740101080205150910100000000020010120486f77206d616e7920227374726f6e6722207265666572656e6365732061726520746865726520746f206120676976656e20605363686564756c654964603f00fc205468652070726573656e6365206f66206120227374726f6e6722207265666572656e63652c20696e207468652073656e7365206f66206052633c543e602ce020656e7461696c73207468617420746865207265666572656e636564207363686564756c652063616e6e6f742062652072656d6f7665642ed820546875732c206173206c6f6e6720617320607374726f6e675f7265665f636f756e74287363686564756c655f696429203e2030602cac206072656d6f76655f7363686564756c65287363686564756c655f696429602077696c6c206572726f722e00a820287469636b65722c207363686564756c6520494429202d3e207374726f6e672072656620636f756e74385363686564756c65506f696e7473010108020515090d0904000cc420416c6c2074686520636865636b706f696e7473206120676976656e207363686564756c65206f726967696e617465642e00a420287469636b65722c207363686564756c6520494429202d3e205b636865636b706f696e742049445d3853746f7261676556657273696f6e01001909040004442053746f726167652076657273696f6e2e01250701510200011d091c44436f6d706c69616e63654d616e616765720144436f6d706c69616e63654d616e616765720c404173736574436f6d706c69616e63657301010402a4210908000004e820417373657420636f6d706c69616e636520666f722061207469636b657220285469636b6572202d3e204173736574436f6d706c69616e6365294854727573746564436c61696d49737375657201010402a48d02040004dc204c697374206f66207472757374656420636c61696d20697373756572205469636b6572202d3e20497373756572204964656e746974793853746f7261676556657273696f6e01002509040004442053746f726167652076657273696f6e2e012d0701710204584d6178436f6e646974696f6e436f6d706c6578697479101032000000000129091d3c436f72706f72617465416374696f6e013c436f72706f72617465416374696f6e24404d617844657461696c734c656e67746801001010000000001c5d012044657465726d696e657320746865206d6178696d756d206e756d626572206f6620627974657320746861742074686520667265652d666f726d206064657461696c7360206f6620612043412063616e2073746f72652e002901204e6f746520746861742074686973206973206e6f7420746865206e756d626572206f662060636861726073206f7220746865206e756d626572206f66205b6772617068656d65735d2e4101205768696c652074686973206d617920626520756e6e61747572616c20696e207465726d73206f662068756d616e20756e6465727374616e64696e67206f66206120746578742773206c656e6774682c6501206974206d6f726520636c6f73656c79207265666c656374732061637475616c2073746f7261676520636f73747320286027612760206973206368656170657220746f2073746f7265207468616e20616e20656d6f6a69292e00d0205b6772617068656d65735d3a2068747470733a2f2f656e2e77696b6970656469612e6f72672f77696b692f4772617068656d655c44656661756c745461726765744964656e74697469657301010402a4a90208000110f020546865206964656e7469746965732074617267657465642062792064656661756c7420666f722043417320666f722074686973207469636b65722c8c2065697468657220746f206265206578636c75646564206f7220696e636c756465642e007820287469636b6572203d3e20746172676574206964656e746974696573295444656661756c7457697468686f6c64696e6754617801010402a44d02100000000020ad01205468652064656661756c7420616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722074686973207469636b6572207768656e20646973747269627574696e67206469766964656e64732e00350120546f20756e6465727374616e642077697468686f6c64696e67207461782c20652e672e2c206c6574277320617373756d65207468617420796f7520686f6c642041434d45207368617265732ec42041434d45206e6f77206465636964657320746f2064697374726962757465203130302053454b20746f20416c6963652e590120416c696365206c6976657320696e2053776564656e2c20736f20536b617474657665726b6574202874686520537765646973682074617820617574686f72697479292077616e747320333025206f6620746861742e5d01205468656e2074686f736520313030202a2033302520617265207769746868656c642066726f6d20416c6963652c20616e642041434d452077696c6c2073656e64207468656d20746f20536b617474657665726b65742e006820287469636b6572203d3e202520746f2077697468686f6c64294444696457697468686f6c64696e6754617801010402a4c90204001049012054686520616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722061206365727461696e207469636b65722078204449442e6d0120496620616e20656e7472792065786973747320666f722061206365727461696e204449442c206974206f7665727269646573207468652064656661756c7420696e206044656661756c7457697468686f6c64696e67546178602e008820287469636b6572203d3e205b286469642c202520746f2077697468686f6c64295d304341496453657175656e636501010402a44502100000000008b420546865206e657874207065722d605469636b65726020434120494420696e207468652073657175656e63652e4d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652e40436f72706f72617465416374696f6e7300010802052d09b5020400146c20416c6c207265636f72646564204341732074687573206661722ea4204f6e6c792067656e6572696320696e666f726d6174696f6e2069732073746f72656420686572652e7d01205370656369666963206043414b696e6460732c20652e672e2c2062656e656669747320616e6420636f72706f726174652062616c6c6f74732c206d617920757365206164646974696f6e616c206f6e2d636861696e2073746f726167652e00b420287469636b6572203d3e206c6f63616c204944203d3e2074686520636f72706f7261746520616374696f6e29244341446f634c696e6b010104024102d502040014d0204173736f63696174696f6e732066726f6d2043417320746f2060446f63756d656e74607320766961207468656972204944732e5c202843414964203d3e205b446f63756d656e7449645d29000501205468652060436f72706f72617465416374696f6e7360206d61702073746f72657320605469636b6572203d3e204c6f63616c4964203d3e20546865204341602c250120736f2077652063616e20696e66657220605469636b6572203d3e2043414964602e205468657265666f72652c20776520646f6e2774206e656564206120646f75626c65206d61702e1c44657461696c73010104024102d102040008e8204173736f6369617465732064657461696c7320696e20667265652d666f726d207465787420776974682061204341206279206974732049442e50202843414964203d3e20434144657461696c73293853746f7261676556657273696f6e01003109040004442053746f726167652076657273696f6e2e01310701a50208304d61785461726765744964731010e803000000284d6178446964576874731010e8030000000135091e3c436f72706f7261746542616c6c6f74013c436f72706f7261746542616c6c6f7418144d65746173000104024102e10204000c80204d65746164617461206f66206120636f72706f726174652062616c6c6f742e005420284341496429203d3e2042616c6c6f744d6574612854696d6552616e676573000104024102dd02040010e42054696d652064657461696c73206f66206120636f72706f726174652062616c6c6f74206173736f636961746564207769746820612043412ed0205468652074696d657374616d70732064656e6f7465207768656e20766f74696e672073746172747320616e642073746f70732e006820284341496429203d3e2042616c6c6f7454696d6552616e6765404d6f74696f6e4e756d43686f69636573010104024102cd05040024c82053746f72657320686f77206d616e792063686f696365732074686572652061726520696e2065616368206d6f74696f6e2e00250120417420616c6c2074696d65732c2074686520696e76617269616e7420686f6c6473207468617420606d6f74696f6e5f63686f696365735b6964785d6020697320657175616c20746f310120606d657461732e756e7772617028292e6d6f74696f6e735b6964785d2e63686f696365732e6c656e2829602e20546861742069732c2074686973206973206a75737420612063616368652c1101207573656420746f2061766f6964206665746368696e6720616c6c20746865206d6f74696f6e732077697468207468656972206173736f6369617465642074657874732e0001012060753136602063686f696365732073686f756c64206265206d6f7265207468616e20656e6f75676820746f20666974207265616c207573652063617365732e00b020284341496429203d3e204e756d626572206f662063686f6963657320696e2065616368206d6f74696f6e2e0c5243560101040241021d01040010dc2049732072616e6b65642063686f69636520766f74696e6720285243562920656e61626c656420666f7220746869732062616c6c6f743f650120466f7220616e20756e6465727374616e64696e67206f6620686f77205243562069732068616e646c65642c20736565206e6f7465206f6e206042616c6c6f74566f7465602773206066616c6c6261636b60206669656c642e003c20284341496429203d3e20626f6f6c1c526573756c7473010104024102390904001cb02053746f7265732074686520746f74616c20766f74652074616c6c79206f6e20656163682063686f6963652e006820524356206973206e6f74206163636f756e74656420666f722cd02061732074686572652061726520746f6f206d616e792077616e747320746f20696e74657270726574207468652067726170682c9c20616e64206265636175736520697420776f756c64206e6f7420626520656666696369656e742e008420284341496429203d3e205b63757272656e7420766f746520776569676874735d14566f7465730101080206f9080103040018ac2053746f726573206561636820444944277320766f74657320696e206120676976656e2062616c6c6f742ef8205365652074686520646f63756d656e746174696f6e206f66206042616c6c6f74566f74656020666f72206e6f746573206f6e2073656d616e746963732e008420284341496429203d3e202844494429203d3e205b766f7465207765696768745d001d012055736572206d75737420656e746572203020766f746520776569676874206966207468657920646f6e27742077616e7420746f20766f746520666f7220612063686f6963652e01450701d90200013d091f2c5065726d697373696f6e7300000000014109201050697073011050697073544c5072756e65486973746f726963616c5069707301001d01040004fc2044657465726d696e6573207768657468657220686973746f726963616c20504950206461746120697320706572736973746564206f722072656d6f766564584d696e696d756d50726f706f73616c4465706f7369740100184000000000000000000000000000000000041d0120546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f7220636f6d6d756e69747920504950206372656174696f6e2e5844656661756c74456e6163746d656e74506572696f6401001010000000000439012044656661756c7420656e6163746d656e7420706572696f6420746861742077696c6c2062652075736520616674657220612070726f706f73616c2069732061636365707465642062792047432e4050656e64696e6750697045787069727901004501040108f420486f77206d616e7920626c6f636b732077696c6c2069742074616b652c2061667465722061206050656e64696e67602050495020657870697265732cf420617373756d696e6720697420686173206e6f74207472616e736974696f6e656420746f20616e6f74686572206050726f706f73616c5374617465603f3c4d6178506970536b6970436f756e740100080400048901204d6178696d756d2074696d65732061205049502063616e20626520736b6970706564206265666f72652074726967676572696e67206043616e6e6f74536b69705069706020696e2060656e6163745f736e617073686f745f726573756c7473602e384163746976655069704c696d6974010010100000000008c420546865206d6178696d756d20616c6c6f776564206e756d62657220666f722060416374697665506970436f756e74602e0101204f6e636520726561636865642c206e657720504950732063616e6e6f742062652070726f706f73656420627920636f6d6d756e697479206d656d626572732e34506970496453657175656e636501001d0310000000000409012050726f706f73616c7320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f662050495073206f66662d636861696e2e48536e617073686f74496453657175656e6365010039031000000000041d0120536e617073686f747320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f6620736e617073686f7473206f66662d636861696e2e38416374697665506970436f756e74010010100000000004c820546f74616c20636f756e74206f662063757272656e742070656e64696e67206f72207363686564756c656420504950732e4050726f706f73616c4d65746164617461000104051d0345090400049820546865206d65746164617461206f6620746865206163746976652070726f706f73616c732e204465706f73697473010108050549094d09c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008842054686f73652077686f2068617665206c6f636b65642061206465706f7369742e8c2070726f706f73616c202869642c2070726f706f73657229202d3e206465706f7369742450726f706f73616c73000104051d035109040008c42041637475616c2070726f706f73616c20666f72206120676976656e2069642c20696620697427732063757272656e742e602070726f706f73616c206964202d3e2070726f706f73616c3850726f706f73616c526573756c74010104051d035509a00000000000000000000000000000000000000000000000000000000000000000000000000000000008d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e682070726f706f73616c206964202d3e20766f746520636f756e743450726f706f73616c566f746573000108050549095909040008050120566f746573207065722050726f706f73616c20616e64206163636f756e742e205573656420746f2061766f696420646f75626c6520766f74652069737375652e7c202870726f706f73616c2069642c206163636f756e7429202d3e20566f746534506970546f5363686564756c65000104051d0310040004fc204d617073205049507320746f2074686520626c6f636b20617420776869636820746865792077696c6c2062652065786563757465642c20696620616e792e244c697665517565756501003d03040018cc2041206c697665207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029a0206f662070656e64696e67205049507320757020746f2074686520616374697665206c696d69742ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e00450120556e6c696b652060536e617073686f745175657565602c2074686973207175657565206973206c6976652c2067657474696e6720757064617465642077697468206561636820766f746520636173742e2d012054686520736e617073686f74206973207468657265666f726520657373656e7469616c6c79206120706f696e742d696e2d74696d6520636c6f6e65206f6620746869732071756575652e34536e617073686f74517565756501003d03040014590120546865207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029206f6620504950732061742074686520706f696e74206f6620736e617073686f7474696e672ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e000901204120717565756564205049502063616e20626520736b69707065642e20446f696e6720736f2062756d70732074686520607069705f736b69705f636f756e74602e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e30536e617073686f744d65746100005d09040004bc20546865206d65746164617461206f662074686520736e617073686f742c206966207468657265206973206f6e652e30506970536b6970436f756e74010104051d0308040008d020546865206e756d626572206f662074696d65732061206365727461696e2050495020686173206265656e20736b69707065642e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e34436f6d6d69747465655069707301005503040008d420416c6c206578697374696e672050495073207768657265207468652070726f706f736572206973206120636f6d6d69747465652e39012054686973206c6973742069732061206361636865206f6620616c6c2069647320696e206050726f706f73616c73602077697468206050726f706f7365723a3a436f6d6d6974746565285f29602e3853746f7261676556657273696f6e01006109040000014907011103000165092124506f7274666f6c696f0124506f7274666f6c696f244c4e657874506f7274666f6c696f4e756d626572010104067ce420010000000000000004cc20546865206e65787420706f7274666f6c696f2073657175656e6365206e756d626572206f6620616e206964656e746974792e28506f7274666f6c696f73010108060569095d0304000c41012054686520736574206f66206578697374696e6720706f7274666f6c696f732077697468207468656972206e616d65732e2049662061206365727461696e2070616972206f6620612044494420616e64590120706f7274666f6c696f206e756d626572206d61707320746f20604e6f6e6560207468656e2073756368206120706f7274666f6c696f20646f65736e27742065786973742e20436f6e76657273656c792c206966206135012070616972206d61707320746f2060536f6d65286e616d652960207468656e2073756368206120706f7274666f6c696f2065786973747320616e642069732063616c6c656420606e616d65602e304e616d65546f4e756d62657201010806026d09e420010000000000000008e420496e7665727365206d6170206f662060506f7274666f6c696f7360207573656420746f20656e737572652062696a6563746976697469792ca420616e6420756e697175656e657373206f66206e616d657320696e2060506f7274666f6c696f73602e4c506f7274666f6c696f4173736574436f756e7401010405dc2020000000000000000004fc20486f77206d616e79206173736574732077697468206e6f6e2d7a65726f2062616c616e6365207468697320706f7274666f6c696f20636f6e7461696e732e58506f7274666f6c696f417373657442616c616e636573010108050271091840000000000000000000000000000000000488205468652061737365742062616c616e636573206f6620706f7274666f6c696f732e54506f7274666f6c696f4c6f636b65644173736574730101080502710918400000000000000000000000000000000008a020416d6f756e74206f6620617373657473206c6f636b656420696e206120706f7274666f6c696f2e2d01205468657365206173736574732073686f7720757020696e20706f7274666f6c696f2062616c616e6365206275742063616e206e6f74206265207472616e7366657272656420617761792e48506f7274666f6c696f437573746f6469616e00010405dc7c04000481012054686520637573746f6469616e206f66206120706172746963756c617220706f7274666f6c696f2e204e6f6e6520696d706c696573207468617420746865206964656e74697479206f776e65722069732074686520637573746f6469616e2e4c506f7274666f6c696f73496e437573746f6479010108060575091d0104000c550120547261636b7320616c6c2074686520706f7274666f6c696f7320696e20637573746f6479206f66206120706172746963756c6172206964656e746974792e204f6e6c79207573656420627920746865205549732ea501205768656e206074727565602069732073746f726564206173207468652076616c756520666f72206120676976656e2060286469642c2070696429602c206974206d65616e73207468617420607069646020697320696e20637573746f6479206f662060646964602ea501206066616c7365602076616c75657320617265206e65766572206578706c696369746c792073746f72656420696e20746865206d61702c20616e642061726520696e737465616420696e6665727265642062792074686520616273656e6365206f662061206b65792e3853746f7261676556657273696f6e01007909040004442053746f726167652076657273696f6e2e01590701590300017d09222c50726f746f636f6c466565012c50726f746f636f6c4665650820426173654665657301010405690718400000000000000000000000000000000004150120546865206d617070696e67206f66206f7065726174696f6e206e616d657320746f2074686520626173652066656573206f662074686f7365206f7065726174696f6e732e2c436f656666696369656e7401006d03200100000001000000041501205468652066656520636f656666696369656e74206173206120706f73697469766520726174696f6e616c20286e756d657261746f722c2064656e6f6d696e61746f72292e0165070169030001810923245363686564756c657201245363686564756c65720c184167656e6461010104051085090400044d01204974656d7320746f2062652065786563757465642c20696e64657865642062792074686520626c6f636b206e756d626572207468617420746865792073686f756c64206265206578656375746564206f6e2e184c6f6f6b7570000104052875030400040101204c6f6f6b75702066726f6d206964656e7469747920746f2074686520626c6f636b206e756d62657220616e6420696e646578206f6620746865207461736b2e3853746f7261676556657273696f6e0100a90904000c7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e0098204e6577206e6574776f726b732073746172742077697468206c6173742076657273696f6e2e016d0701710308344d6178696d756d576569676874202000806e877401000008450120546865206d6178696d756d207765696768742074686174206d6179206265207363686564756c65642070657220626c6f636b20666f7220616e7920646973706174636861626c6573206f66206c657373a4207072696f72697479207468616e20607363686564756c653a3a484152445f444541444c494e45602e504d61785363686564756c6564506572426c6f636b101032000000081d0120546865206d6178696d756d206e756d626572206f66207363686564756c65642063616c6c7320696e2074686520717565756520666f7220612073696e676c6520626c6f636b2edc204e6f74207374726963746c7920656e666f726365642c20627574207573656420666f722077656967687420657374696d6174696f6e2e01ad092428536574746c656d656e740128536574746c656d656e74442456656e7565496e666f000104058103b1090400049820496e666f2061626f757420612076656e75652e2076656e75655f6964202d3e2076656e75651c44657461696c730101040581038503040008e420467265652d666f726d20746578742061626f757420612076656e75652e2076656e75655f6964202d3e206056656e756544657461696c736060204f6e6c79206e656564656420666f72207468652055492e4456656e7565496e737472756374696f6e730101080505b509410100107020496e737472756374696f6e7320756e64657220612076656e75652e60204f6e6c79206e656564656420666f72207468652055492e00842076656e75655f6964202d3e20696e737472756374696f6e5f6964202d3e2028293056656e75655369676e6572730101080505b9091d01040004e4205369676e65727320616c6c6f776564206279207468652076656e75652e202876656e75655f69642c207369676e657229202d3e20626f6f6c285573657256656e756573010104057ca5030400047101204172726179206f662076656e756573206372656174656420627920616e206964656e746974792e204f6e6c79206e656564656420666f72207468652055492e204964656e746974794964202d3e205665633c76656e75655f69643e48496e737472756374696f6e44657461696c73010104058d03bd09540000000000000000000000000000000000000000000411012044657461696c732061626f757420616e20696e737472756374696f6e2e20696e737472756374696f6e5f6964202d3e20696e737472756374696f6e5f64657461696c733c496e737472756374696f6e4c6567730101080505c509990379010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ec204c65677320756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656750496e737472756374696f6e4c65675374617475730101080505c509c909040004310120537461747573206f662061206c656720756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656753746174757364496e737472756374696f6e41666669726d7350656e64696e67010104058d0320200000000000000000048101204e756d626572206f662061666669726d6174696f6e732070656e64696e67206265666f726520696e737472756374696f6e2069732065786563757465642e20696e737472756374696f6e5f6964202d3e2061666669726d5f70656e64696e673c41666669726d7352656365697665640101080505cd09d109040004990120547261636b732061666669726d6174696f6e7320726563656976656420666f7220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c20636f756e7465725f706172747929202d3e2041666669726d6174696f6e537461747573405573657241666669726d6174696f6e730101080505d509d10904000855012048656c70732061207573657220747261636b2074686569722070656e64696e6720696e737472756374696f6e7320616e642061666669726d6174696f6e7320286f6e6c79206e656564656420666f72205549292ed42028636f756e7465725f70617274792c20696e737472756374696f6e5f696429202d3e2041666669726d6174696f6e537461747573305265636569707473557365640101080502f5071d01040004150120547261636b7320726564656d7074696f6e206f662072656365697074732e20287369676e65722c20726563656970745f75696429202d3e20726563656970745f757365643856656e756546696c746572696e6701010402a41d01040004fd0120547261636b73206966206120746f6b656e2068617320656e61626c65642066696c746572696e672076656e75657320746861742063616e2063726561746520696e737472756374696f6e7320696e766f6c76696e6720746865697220746f6b656e2e205469636b6572202d3e2066696c746572696e675f656e61626c65643856656e7565416c6c6f774c6973740101080205d9091d01040008c5012056656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c6172207469636b65722e204f6e6c7920757365642069662066696c746572696e6720697320656e61626c65642e7820287469636b65722c2076656e75655f696429202d3e20616c6c6f7765643056656e7565436f756e74657201008103200000000000000000041901204e756d626572206f662076656e75657320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d6265722948496e737472756374696f6e436f756e74657201008d03200000000000000000043101204e756d626572206f6620696e737472756374696f6e7320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d626572293853746f7261676556657273696f6e0100dd09040004442053746f726167652076657273696f6e2e017507017d030001e1092528537461746973746963730128537461746973746963730c584163746976655472616e736665724d616e616765727301010402a4e509040004c8205472616e73666572206d616e61676572732063757272656e746c7920656e61626c656420666f7220616e2041737365742e54496e766573746f72436f756e74506572417373657401010402a42020000000000000000004a4204e756d626572206f662063757272656e7420696e766573746f727320696e20616e2061737365742e384578656d7074456e7469746965730101080202e9091d0104000c490120456e746974696573206578656d70742066726f6d207472616e73666572206d616e61676572732e204578656d7074696f6e7320726571756972656d656e747320617265206261736564206f6e20544d532e4d0120544d73206d61792072657175697265206a757374207468652073656e6465722c206a757374207468652072656365697665722c20626f7468206f722065697468657220746f206265206578656d707465642e3d012043544d2072657175697265732073656e64657220746f206265206578656d70746564207768696c652050544d20726571756972657320726563656976657220746f206265206578656d707465642e01890701a903046c4d61785472616e736665724d616e616765727350657241737365741010030000000001f109260c53746f010c53746f0c2c46756e64726169736572730001080205f509c103040008b020416c6c2066756e64726169736572732074686174206172652063757272656e746c792072756e6e696e672e9820287469636b65722c2066756e647261697365725f696429202d3e2046756e647261697365723c46756e64726169736572436f756e7401010402a4b903200000000000000000049c20546f74616c2066756e6472616973657273206372656174656420666f72206120746f6b656e2e3c46756e647261697365724e616d65730101080205f509bd03040008b4204e616d6520666f72207468652046756e647261697365722e204f6e6c792075736564206f6666636861696e2eac20287469636b65722c2066756e647261697365725f696429202d3e2046756e64726169736572206e616d65018d0701b5030001f909272054726561737572790001a10701d1030001fd09281c5574696c697479011c5574696c69747904184e6f6e6365730101040500202000000000000000000001ad0701d5030001010a2910426173650001b90701e50304184d61784c656e1010000800000001050a2a3845787465726e616c4167656e7473013845787465726e616c4167656e747314304147496453657175656e636501010402a41901100000000010b420546865206e657874207065722d605469636b65726020414720494420696e207468652073657175656e63652e004d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652c90207768696368207374617274732066726f6d20312c20726174686572207468616e20302e1c4167656e744f660101080202dd08410100042901204d61707320616e206167656e742028604964656e746974794964602920746f20616c6c20616c6c20605469636b6572607320746865792062656c6f6e6720746f2c20696620616e792e3047726f75704f664167656e740001080205d50815010400043501204d617073206167656e74732028604964656e746974794964602920666f72206120605469636b65726020746f207768617420414720746865792062656c6f6e6720746f2c20696620616e792e344e756d46756c6c4167656e747301010402a410100000000004dc204d617073206120605469636b65726020746f20746865206e756d626572206f66206046756c6c60206167656e747320666f722069742e4047726f75705065726d697373696f6e730001080205090ab40400045d0120466f7220637573746f6d20414773206f66206120605469636b6572602c206d61707320746f2077686174207065726d697373696f6e7320616e206167656e7420696e207468617420414720776f756c6420686176652e01bd0701ed0300010d0a2b1c52656c61796572011c52656c6179657204245375627369646965730001040200110a040018ec20546865207375627369647920666f7220612060757365725f6b657960206966207468657920617265206265696e6720737562736964697365642c882061732061206d61702060757365725f6b657960203d3e206053756273696479602e0009012041206b65792063616e206f6e6c792068617665206f6e65207375627369647920617420612074696d652e2020546f206368616e67652073756273696469736572731d012061206b6579206e6565647320746f2063616c6c206072656d6f76655f706179696e675f6b65796020746f2072656d6f7665207468652063757272656e7420737562736964792ca4206265666f726520746865792063616e206163636570742061206e657720737562736964697365722e01c10701f1030001150a2c1c52657761726473011c52657761726473042849746e526577617264730001040200c9070400040101204d6170206f66202849746e204164647265737320604163636f756e7449646029202d3e2028526577617264206049746e52657761726453746174757360292e01c50701f5030001190a2d24546573745574696c730124546573745574696c730001cd0701f90300011d0a32210a042040436865636b5370656356657273696f6e290a1038436865636b547856657273696f6e2d0a1030436865636b47656e65736973310a2438436865636b4d6f7274616c697479350a2428436865636b4e6f6e63653d0a41012c436865636b576569676874410a4101604368617267655472616e73616374696f6e5061796d656e74490a41014453746f726543616c6c4d657461646174614d0a4101510a","id":"1"} diff --git a/scripts/cli/src/helpers/corporate_actions_helper.ts b/scripts/cli/src/helpers/corporate_actions_helper.ts index ab47334d0f..4ac240ccd2 100644 --- a/scripts/cli/src/helpers/corporate_actions_helper.ts +++ b/scripts/cli/src/helpers/corporate_actions_helper.ts @@ -1,13 +1,6 @@ -import { Keyring } from "@polkadot/api"; import type { KeyringPair } from "@polkadot/keyring/types"; -import { CAKind, Document } from "polymesh-typegen/interfaces"; import { Ticker } from "../types"; -import { - sendTx, - ApiSingleton, - keyToIdentityIds, - transferAmount, -} from "../util/init"; +import { sendTx, ApiSingleton, keyToIdentityIds } from "../util/init"; export async function changeDefaultTargetIdentitites( signer: KeyringPair, @@ -85,7 +78,7 @@ export async function linkCaToDoc( const transaction = api.tx.corporateAction.linkCaDoc( { ticker, - local_id: caId, + localId: caId, }, docIds ); @@ -100,15 +93,11 @@ export async function removeCa( const api = await ApiSingleton.getInstance(); const transaction = api.tx.corporateAction.removeCa({ ticker: ticker, - local_id: caId, + localId: caId, }); await sendTx(signer, transaction); } -async function toIdentity(keyPair: KeyringPair) { - return (await keyToIdentityIds(keyPair.publicKey)).toString(); -} - export async function recordDateChange( signer: KeyringPair, ticker: Ticker, @@ -138,7 +127,7 @@ export async function createDistribution( const payAt = currentBlockTime.toNumber(); const transaction = api.tx.capitalDistribution.distribute( - { ticker, local_id: caId }, + { ticker, localId: caId }, portfolio, currency, perShare, @@ -165,7 +154,7 @@ export async function claimDistribution( const transaction = api.tx.capitalDistribution.claim({ ticker, - local_id: caId, + localId: caId, }); console.log("claiming distribution"); await sendTx(signer, transaction); diff --git a/scripts/cli/src/helpers/identity_helper.ts b/scripts/cli/src/helpers/identity_helper.ts index aaba144485..e96266d579 100644 --- a/scripts/cli/src/helpers/identity_helper.ts +++ b/scripts/cli/src/helpers/identity_helper.ts @@ -89,12 +89,12 @@ export async function authorizeJoinToIdentities( let last_auth_id: AnyNumber = 0; auths - .map(([key, value]) => value) + .map(([, value]) => value) .filter((value) => value.isSome) .forEach((value) => { const auth = value.unwrap(); - if (auth.auth_id > last_auth_id) { - last_auth_id = auth.auth_id; + if (auth.authId > last_auth_id) { + last_auth_id = auth.authId; } }); const transaction = api.tx.identity.joinIdentityAsKey(last_auth_id); diff --git a/scripts/cli/src/interfaces/augment-api-consts.ts b/scripts/cli/src/interfaces/augment-api-consts.ts index 858d4708df..ca12ec393a 100644 --- a/scripts/cli/src/interfaces/augment-api-consts.ts +++ b/scripts/cli/src/interfaces/augment-api-consts.ts @@ -1,22 +1,30 @@ // Auto-generated via `yarn polkadot-types-from-chain`, do not edit /* eslint-disable */ -import type { Vec, u32, u64, u8 } from '@polkadot/types'; -import type { Codec } from '@polkadot/types/types'; -import type { Balance, BalanceOf, BlockNumber, Moment, Perbill, Permill, RuntimeDbWeight } from '@polkadot/types/interfaces/runtime'; -import type { SessionIndex } from '@polkadot/types/interfaces/session'; -import type { EraIndex } from '@polkadot/types/interfaces/staking'; -import type { RuntimeVersion } from '@polkadot/types/interfaces/state'; -import type { WeightToFeeCoefficient } from '@polkadot/types/interfaces/support'; -import type { BlockLength, BlockWeights } from '@polkadot/types/interfaces/system'; -import type { ApiTypes } from '@polkadot/api/types'; +import type { ApiTypes } from '@polkadot/api-base/types'; +import type { Vec, u128, u16, u32, u64 } from '@polkadot/types-codec'; +import type { Codec } from '@polkadot/types-codec/types'; +import type { Perbill, Permill } from '@polkadot/types/interfaces/runtime'; +import type { FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, SpVersionRuntimeVersion } from '@polkadot/types/lookup'; -declare module '@polkadot/api/types/consts' { - export interface AugmentedConsts { +declare module '@polkadot/api-base/types/consts' { + export interface AugmentedConsts { asset: { assetNameMaxLength: u32 & AugmentedConst; fundingRoundNameMaxLength: u32 & AugmentedConst; - maxNumberOfTmExtensionForAsset: u32 & AugmentedConst; + maxNumberOfTMExtensionForAsset: u32 & AugmentedConst; + /** + * Generic const + **/ + [key: string]: Codec; + }; + authorship: { + /** + * The number of blocks back we should accept uncles. + * This means that we will deal with uncle-parents that are + * `UncleGenerations + 1` before `now`. + **/ + uncleGenerations: u32 & AugmentedConst; /** * Generic const **/ @@ -24,11 +32,9 @@ declare module '@polkadot/api/types/consts' { }; babe: { /** - * The number of **slots** that an epoch takes. We couple sessions to - * epochs, i.e. we start a new session once the new epoch begins. - * NOTE: Currently it is not possible to change the epoch duration - * after the chain has started. Attempting to do so will brick block - * production. + * The amount of time, in slots, that each epoch should last. + * NOTE: Currently it is not possible to change the epoch duration after + * the chain has started. Attempting to do so will brick block production. **/ epochDuration: u64 & AugmentedConst; /** @@ -38,7 +44,11 @@ declare module '@polkadot/api/types/consts' { * duration and the security parameter `c` (where `1 - c` represents * the probability of a slot being empty). **/ - expectedBlockTime: Moment & AugmentedConst; + expectedBlockTime: u64 & AugmentedConst; + /** + * Max number of authorities allowed + **/ + maxAuthorities: u32 & AugmentedConst; /** * Generic const **/ @@ -48,7 +58,7 @@ declare module '@polkadot/api/types/consts' { /** * The minimum amount required to keep an account open. **/ - existentialDeposit: Balance & AugmentedConst; + existentialDeposit: u128 & AugmentedConst; /** * Generic const **/ @@ -76,8 +86,31 @@ declare module '@polkadot/api/types/consts' { **/ [key: string]: Codec; }; + grandpa: { + /** + * Max Authorities in use + **/ + maxAuthorities: u32 & AugmentedConst; + /** + * Generic const + **/ + [key: string]: Codec; + }; identity: { - initialPolyx: Balance & AugmentedConst; + initialPOLYX: u128 & AugmentedConst; + /** + * Generic const + **/ + [key: string]: Codec; + }; + imOnline: { + /** + * A configuration for base priority of unsigned transactions. + * + * This is exposed so that it can be tuned for particular runtime, when + * multiple pallets send unsigned transactions. + **/ + unsignedPriority: u64 & AugmentedConst; /** * Generic const **/ @@ -87,7 +120,23 @@ declare module '@polkadot/api/types/consts' { /** * The deposit needed for reserving an index. **/ - deposit: BalanceOf & AugmentedConst; + deposit: u128 & AugmentedConst; + /** + * Generic const + **/ + [key: string]: Codec; + }; + scheduler: { + /** + * The maximum weight that may be scheduled per block for any dispatchables of less + * priority than `schedule::HARD_DEADLINE`. + **/ + maximumWeight: u64 & AugmentedConst; + /** + * The maximum number of scheduled calls in the queue for a single block. + * Not strictly enforced, but used for weight estimation. + **/ + maxScheduledPerBlock: u32 & AugmentedConst; /** * Generic const **/ @@ -97,7 +146,7 @@ declare module '@polkadot/api/types/consts' { /** * Number of eras that staked funds must remain bonded for. **/ - bondingDuration: EraIndex & AugmentedConst; + bondingDuration: u32 & AugmentedConst; /** * The number of blocks before the end of the era from which election submissions are allowed. * @@ -107,11 +156,11 @@ declare module '@polkadot/api/types/consts' { * This is bounded by being within the last session. Hence, setting it to a value more than the * length of a session will be pointless. **/ - electionLookahead: BlockNumber & AugmentedConst; + electionLookahead: u32 & AugmentedConst; /** * Total year rewards that gets paid during fixed reward schedule. **/ - fixedYearlyReward: BalanceOf & AugmentedConst; + fixedYearlyReward: u128 & AugmentedConst; /** * Maximum number of balancing iterations to run in the offchain submission. * @@ -134,11 +183,11 @@ declare module '@polkadot/api/types/consts' { /** * Maximum amount of `T::currency::total_issuance()` after that non-inflated rewards get paid. **/ - maxVariableInflationTotalIssuance: BalanceOf & AugmentedConst; + maxVariableInflationTotalIssuance: u128 & AugmentedConst; /** * Minimum amount of POLYX that must be bonded for a new bond. **/ - minimumBond: BalanceOf & AugmentedConst; + minimumBond: u128 & AugmentedConst; /** * The threshold of improvement that should be provided for a new solution to be accepted. **/ @@ -146,7 +195,7 @@ declare module '@polkadot/api/types/consts' { /** * Number of sessions per era. **/ - sessionsPerEra: SessionIndex & AugmentedConst; + sessionsPerEra: u32 & AugmentedConst; /** * Number of eras that slashes are deferred by, after computation. * @@ -154,7 +203,7 @@ declare module '@polkadot/api/types/consts' { * Set to 0 if slashes should be applied immediately, without opportunity for * intervention. **/ - slashDeferDuration: EraIndex & AugmentedConst; + slashDeferDuration: u32 & AugmentedConst; /** * Generic const **/ @@ -171,19 +220,19 @@ declare module '@polkadot/api/types/consts' { /** * Maximum number of block number to block hash mappings to keep (oldest pruned first). **/ - blockHashCount: BlockNumber & AugmentedConst; + blockHashCount: u32 & AugmentedConst; /** * The maximum length of a block (in bytes). **/ - blockLength: BlockLength & AugmentedConst; + blockLength: FrameSystemLimitsBlockLength & AugmentedConst; /** * Block & extrinsics weights: base values and limits. **/ - blockWeights: BlockWeights & AugmentedConst; + blockWeights: FrameSystemLimitsBlockWeights & AugmentedConst; /** * The weight of runtime database operations the runtime can invoke. **/ - dbWeight: RuntimeDbWeight & AugmentedConst; + dbWeight: FrameSupportWeightsRuntimeDbWeight & AugmentedConst; /** * The designated SS85 prefix of this chain. * @@ -191,11 +240,11 @@ declare module '@polkadot/api/types/consts' { * that the runtime should know about the prefix in order to make use of it as * an identifier of the chain. **/ - ss58Prefix: u8 & AugmentedConst; + ss58Prefix: u16 & AugmentedConst; /** * Get the chain's current version. **/ - version: RuntimeVersion & AugmentedConst; + version: SpVersionRuntimeVersion & AugmentedConst; /** * Generic const **/ @@ -203,12 +252,12 @@ declare module '@polkadot/api/types/consts' { }; 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. + * 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: Moment & AugmentedConst; + minimumPeriod: u64 & AugmentedConst; /** * Generic const **/ @@ -218,19 +267,15 @@ declare module '@polkadot/api/types/consts' { /** * The fee to be paid for making a transaction; the per-byte portion. **/ - transactionByteFee: BalanceOf & AugmentedConst; + transactionByteFee: u128 & AugmentedConst; /** * The polynomial that is applied in order to derive fee from weight. **/ - weightToFee: Vec & AugmentedConst; + weightToFee: Vec & AugmentedConst; /** * Generic const **/ [key: string]: Codec; }; - } - - export interface QueryableConsts extends AugmentedConsts { - [key: string]: QueryableModuleConsts; - } -} + } // AugmentedConsts +} // declare module diff --git a/scripts/cli/src/interfaces/augment-api-errors.ts b/scripts/cli/src/interfaces/augment-api-errors.ts index 59237ddeff..00ba58c29a 100644 --- a/scripts/cli/src/interfaces/augment-api-errors.ts +++ b/scripts/cli/src/interfaces/augment-api-errors.ts @@ -1,10 +1,10 @@ // Auto-generated via `yarn polkadot-types-from-chain`, do not edit /* eslint-disable */ -import type { ApiTypes } from '@polkadot/api/types'; +import type { ApiTypes } from '@polkadot/api-base/types'; -declare module '@polkadot/api/types/errors' { - export interface AugmentedErrors { +declare module '@polkadot/api-base/types/errors' { + export interface AugmentedErrors { asset: { /** * When extension already archived. @@ -169,6 +169,24 @@ declare module '@polkadot/api/types/errors' { **/ [key: string]: AugmentedError; }; + babe: { + /** + * A given equivocation report is valid but already previously reported. + **/ + DuplicateOffenceReport: AugmentedError; + /** + * An equivocation proof provided as part of an equivocation report is invalid. + **/ + InvalidEquivocationProof: AugmentedError; + /** + * A key ownership proof provided as part of an equivocation report is invalid. + **/ + InvalidKeyOwnershipProof: AugmentedError; + /** + * Generic error + **/ + [key: string]: AugmentedError; + }; balances: { /** * Value too low to create account due to existential deposit @@ -199,7 +217,7 @@ declare module '@polkadot/api/types/errors' { /** * The sequence counter for something overflowed. * - * When this happens depends on the capacity of the identifier type. + * When this happens depends on e.g., the capacity of the identifier type. * For example, we might have `pub struct PipId(u32);`, with `u32::MAX` capacity. * In practice, these errors will never happen but no code path should result in a panic, * so these corner cases need to be covered with an error variant. @@ -802,6 +820,32 @@ declare module '@polkadot/api/types/errors' { **/ [key: string]: AugmentedError; }; + indices: { + /** + * The index was not available. + **/ + InUse: AugmentedError; + /** + * The index was not already assigned. + **/ + NotAssigned: AugmentedError; + /** + * The index is assigned to another account. + **/ + NotOwner: AugmentedError; + /** + * The source and destination accounts are identical. + **/ + NotTransfer: AugmentedError; + /** + * The index is permanent and may not be freed/changed. + **/ + Permanent: AugmentedError; + /** + * Generic error + **/ + [key: string]: AugmentedError; + }; multiSig: { /** * Already a signer. @@ -1678,6 +1722,12 @@ declare module '@polkadot/api/types/errors' { **/ [key: string]: AugmentedError; }; + testUtils: { + /** + * Generic error + **/ + [key: string]: AugmentedError; + }; treasury: { /** * Proposer's balance is too low. @@ -1787,9 +1837,5 @@ declare module '@polkadot/api/types/errors' { **/ [key: string]: AugmentedError; }; - } - - export interface DecoratedErrors extends AugmentedErrors { - [key: string]: ModuleErrors; - } -} + } // AugmentedErrors +} // declare module diff --git a/scripts/cli/src/interfaces/augment-api-events.ts b/scripts/cli/src/interfaces/augment-api-events.ts index 0c07992c8d..cc1af241fa 100644 --- a/scripts/cli/src/interfaces/augment-api-events.ts +++ b/scripts/cli/src/interfaces/augment-api-events.ts @@ -1,132 +1,122 @@ // Auto-generated via `yarn polkadot-types-from-chain`, do not edit /* eslint-disable */ -import type { Bytes, Option, Vec, bool, u32, u64 } from '@polkadot/types'; -import type { ITuple } from '@polkadot/types/types'; -import type { BalanceStatus } from '@polkadot/types/interfaces/balances'; -import type { EthereumAddress } from '@polkadot/types/interfaces/claims'; -import type { MemberCount, ProposalIndex } from '@polkadot/types/interfaces/collective'; -import type { AuthorityId } from '@polkadot/types/interfaces/consensus'; -import type { AuthorityList } from '@polkadot/types/interfaces/grandpa'; -import type { Kind, OpaqueTimeSlot } from '@polkadot/types/interfaces/offences'; -import type { AccountId, AccountIndex, Balance, BlockNumber, Hash, Moment, Perbill, PhantomData } from '@polkadot/types/interfaces/runtime'; -import type { TaskAddress } from '@polkadot/types/interfaces/scheduler'; -import type { IdentificationTuple, SessionIndex } from '@polkadot/types/interfaces/session'; -import type { ElectionCompute, EraIndex } from '@polkadot/types/interfaces/staking'; -import type { DispatchError, DispatchInfo, DispatchResult } from '@polkadot/types/interfaces/system'; -import type { AGId, AgentGroup, AssetIdentifier, AssetName, AssetType, AuthorizationData, BallotMeta, BallotTimeRange, BallotVote, BridgeTx, CADetails, CAId, CheckpointId, ComplianceRequirement, CorporateAction, CustomAssetTypeId, Distribution, Document, DocumentId, ErrorAt, EventCounts, EventDid, ExtrinsicPermissions, FundingRoundName, Fundraiser, FundraiserId, FundraiserName, HandledTxStatus, IdentityClaim, IdentityId, InstructionId, InvestorUid, Leg, LegId, MaybeBlock, Memo, Permissions, PipDescription, PipId, PortfolioId, PortfolioName, PortfolioNumber, PosRatio, ProposalData, ProposalState, Proposer, ReceiptMetadata, ScopeId, SecondaryKey, SettlementType, Signatory, SkippedCount, SlashingSwitch, SnapshotId, SnapshottedPip, StoredSchedule, TargetIdentities, Tax, Ticker, TransferManager, TrustedIssuer, Url, VenueDetails, VenueId, VenueType } from 'polymesh-typegen/interfaces/default'; -import type { ApiTypes } from '@polkadot/api/types'; +import type { ApiTypes } from '@polkadot/api-base/types'; +import type { Bytes, Null, Option, Result, U8aFixed, Vec, bool, u128, u32, u64, u8 } from '@polkadot/types-codec'; +import type { ITuple } from '@polkadot/types-codec/types'; +import type { AccountId32, H256, Perbill, Permill } from '@polkadot/types/interfaces/runtime'; +import type { FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchInfo, PalletBridgeBridgeTx, PalletBridgeHandledTxStatus, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsCaId, PalletCorporateActionsCorporateAction, PalletCorporateActionsDistribution, PalletCorporateActionsTargetIdentities, PalletImOnlineSr25519AppSr25519Public, PalletPipsProposalData, PalletPipsProposalState, PalletPipsProposer, PalletPipsSnapshottedPip, PalletSettlementLeg, PalletSettlementSettlementType, PalletSettlementVenueType, PalletStakingElectionCompute, PalletStakingExposure, PalletStakingSlashingSwitch, PalletStoFundraiser, PolymeshCommonUtilitiesBalancesMemo, PolymeshCommonUtilitiesCheckpointStoredSchedule, PolymeshCommonUtilitiesMaybeBlock, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetAssetType, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAuthorizationAuthorizationData, PolymeshPrimitivesCddIdInvestorUid, PolymeshPrimitivesComplianceManagerComplianceRequirement, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesEthereumEthereumAddress, PolymeshPrimitivesEventOnly, PolymeshPrimitivesIdentityClaim, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKeyApiSecondaryKey, PolymeshPrimitivesSecondaryKeyPermissions, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesStatisticsTransferManager, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesTicker, SpFinalityGrandpaAppPublic, SpRuntimeDispatchError } from '@polkadot/types/lookup'; -declare module '@polkadot/api/types/events' { - export interface AugmentedEvents { +declare module '@polkadot/api-base/types/events' { + export interface AugmentedEvents { asset: { /** * Event for creation of the asset. * caller DID/ owner DID, ticker, divisibility, asset type, beneficiary DID, disable investor uniqueness **/ - AssetCreated: AugmentedEvent; + AssetCreated: AugmentedEvent; /** * An event emitted when an asset is frozen. * Parameter: caller DID, ticker. **/ - AssetFrozen: AugmentedEvent; + AssetFrozen: AugmentedEvent; /** * Emit when token ownership is transferred. * caller DID / token ownership transferred to DID, ticker, from **/ - AssetOwnershipTransferred: AugmentedEvent; + AssetOwnershipTransferred: AugmentedEvent; /** * An event emitted when a token is renamed. * Parameters: caller DID, ticker, new token name. **/ - AssetRenamed: AugmentedEvent; + AssetRenamed: AugmentedEvent; /** * An event emitted when an asset is unfrozen. * Parameter: caller DID, ticker. **/ - AssetUnfrozen: AugmentedEvent; + AssetUnfrozen: AugmentedEvent; /** * A Polymath Classic token was claimed and transferred to a non-systematic DID. **/ - ClassicTickerClaimed: AugmentedEvent; + ClassicTickerClaimed: AugmentedEvent; /** * Event for when a forced transfer takes place. * caller DID/ controller DID, ticker, Portfolio of token holder, value. **/ - ControllerTransfer: AugmentedEvent; + ControllerTransfer: AugmentedEvent; /** * A custom asset type already exists on-chain. * caller DID, the ID of the custom asset type, the string contents registered. **/ - CustomAssetTypeExists: AugmentedEvent; + CustomAssetTypeExists: AugmentedEvent; /** * A custom asset type was registered on-chain. * caller DID, the ID of the custom asset type, the string contents registered. **/ - CustomAssetTypeRegistered: AugmentedEvent; + CustomAssetTypeRegistered: AugmentedEvent; /** * Event for change in divisibility. * caller DID, ticker, divisibility **/ - DivisibilityChanged: AugmentedEvent; + DivisibilityChanged: AugmentedEvent; /** * A new document attached to an asset **/ - DocumentAdded: AugmentedEvent; + DocumentAdded: AugmentedEvent; /** * A document removed from an asset **/ - DocumentRemoved: AugmentedEvent; + DocumentRemoved: AugmentedEvent; /** * A extension got removed. * caller DID, ticker, AccountId **/ - ExtensionRemoved: AugmentedEvent; + ExtensionRemoved: AugmentedEvent; /** * An event carrying the name of the current funding round of a ticker. * Parameters: caller DID, ticker, funding round name. **/ - FundingRoundSet: AugmentedEvent; + FundingRoundSet: AugmentedEvent; /** * Event emitted when any token identifiers are updated. * caller DID, ticker, a vector of (identifier type, identifier value) **/ - IdentifiersUpdated: AugmentedEvent]>; + IdentifiersUpdated: AugmentedEvent]>; /** * is_issuable() output * ticker, return value (true if issuable) **/ - IsIssuable: AugmentedEvent; + IsIssuable: AugmentedEvent; /** * Emit when tokens get issued. * caller DID, ticker, beneficiary DID, value, funding round, total issued in this funding round **/ - Issued: AugmentedEvent; + Issued: AugmentedEvent; /** * Emit when tokens get redeemed. * caller DID, ticker, from DID, value **/ - Redeemed: AugmentedEvent; + Redeemed: AugmentedEvent; /** * Emit when ticker is registered. * caller DID / ticker owner did, ticker, ticker owner, expiry **/ - TickerRegistered: AugmentedEvent]>; + TickerRegistered: AugmentedEvent]>; /** * Emit when ticker is transferred. * caller DID / ticker transferred to DID, ticker, from **/ - TickerTransferred: AugmentedEvent; + TickerTransferred: AugmentedEvent; /** * Event for transfer of tokens. * caller DID, ticker, from portfolio, to portfolio, value **/ - Transfer: AugmentedEvent; + Transfer: AugmentedEvent; /** * An additional event to Transfer; emitted when `transfer_with_data` is called. * caller DID , ticker, from DID, to DID, value, data **/ - TransferWithData: AugmentedEvent; + TransferWithData: AugmentedEvent; /** * Generic event **/ @@ -137,33 +127,33 @@ declare module '@polkadot/api/types/events' { * The account and the amount of unlocked balance of that account that was burned. * (caller Id, caller account, amount) **/ - AccountBalanceBurned: AugmentedEvent; + AccountBalanceBurned: AugmentedEvent; /** * A balance was set by root (did, who, free, reserved). **/ - BalanceSet: AugmentedEvent; + BalanceSet: AugmentedEvent; /** * An account was created with some free balance. \[did, account, free_balance] **/ - Endowed: AugmentedEvent, AccountId, Balance]>; + Endowed: AugmentedEvent, AccountId32, u128]>; /** * Some balance was reserved (moved from free to reserved). \[who, value] **/ - Reserved: AugmentedEvent; + Reserved: AugmentedEvent; /** * Some balance was moved from the reserve of the first account to the second account. * Final argument indicates the destination balance type. * \[from, to, balance, destination_status] **/ - ReserveRepatriated: AugmentedEvent; + ReserveRepatriated: AugmentedEvent; /** * Transfer succeeded (from_did, from, to_did, to, value, memo). **/ - Transfer: AugmentedEvent, AccountId, Option, AccountId, Balance, Option]>; + Transfer: AugmentedEvent, AccountId32, Option, AccountId32, u128, Option]>; /** * Some balance was unreserved (moved from reserved to free). \[who, value] **/ - Unreserved: AugmentedEvent; + Unreserved: AugmentedEvent; /** * Generic event **/ @@ -173,7 +163,7 @@ declare module '@polkadot/api/types/events' { /** * An unexpected error happened that should be investigated. **/ - UnexpectedError: AugmentedEvent]>; + UnexpectedError: AugmentedEvent]>; /** * Generic event **/ @@ -183,68 +173,68 @@ declare module '@polkadot/api/types/events' { /** * Confirmation of Admin change. **/ - AdminChanged: AugmentedEvent; + AdminChanged: AugmentedEvent; /** * Confirmation of POLYX upgrade on Polymesh from POLY tokens on Ethereum. **/ - Bridged: AugmentedEvent; + Bridged: AugmentedEvent; /** * Bridge limit has been updated. **/ - BridgeLimitUpdated: AugmentedEvent; + BridgeLimitUpdated: AugmentedEvent; /** * Bridge Tx Scheduled. **/ - BridgeTxScheduled: AugmentedEvent; + BridgeTxScheduled: AugmentedEvent; /** * Failed to schedule Bridge Tx. **/ - BridgeTxScheduleFailed: AugmentedEvent; + BridgeTxScheduleFailed: AugmentedEvent; /** * Confirmation of a signer set change. **/ - ControllerChanged: AugmentedEvent; + ControllerChanged: AugmentedEvent; /** * Exemption status of an identity has been updated. **/ - ExemptedUpdated: AugmentedEvent; + ExemptedUpdated: AugmentedEvent; /** * A new freeze admin has been added. **/ - FreezeAdminAdded: AugmentedEvent; + FreezeAdminAdded: AugmentedEvent; /** * A freeze admin has been removed. **/ - FreezeAdminRemoved: AugmentedEvent; + FreezeAdminRemoved: AugmentedEvent; /** * Notification of freezing the bridge. **/ - Frozen: AugmentedEvent; + Frozen: AugmentedEvent; /** * Notification of freezing a transaction. **/ - FrozenTx: AugmentedEvent; + FrozenTx: AugmentedEvent; /** * Confirmation of default timelock change. **/ - TimelockChanged: AugmentedEvent; + TimelockChanged: AugmentedEvent; /** * Notification of removing a transaction. **/ - TxRemoved: AugmentedEvent; + TxRemoved: AugmentedEvent; /** * An event emitted after a vector of transactions is handled. The parameter is a vector of * tuples of recipient account, its nonce, and the status of the processed transaction. **/ - TxsHandled: AugmentedEvent>]>; + TxsHandled: AugmentedEvent>]>; /** * Notification of unfreezing the bridge. **/ - Unfrozen: AugmentedEvent; + Unfrozen: AugmentedEvent; /** * Notification of unfreezing a transaction. **/ - UnfrozenTx: AugmentedEvent; + UnfrozenTx: AugmentedEvent; /** * Generic event **/ @@ -256,26 +246,26 @@ declare module '@polkadot/api/types/events' { * * (Caller DID, Holder/Claimant DID, CA's ID, updated distribution details, DID's benefit, DID's tax %) **/ - BenefitClaimed: AugmentedEvent; + BenefitClaimed: AugmentedEvent; /** * A capital distribution, with details included, * was created by the DID (permissioned agent) for the CA identified by `CAId`. * * (Agent DID, CA's ID, distribution details) **/ - Created: AugmentedEvent; + Created: AugmentedEvent; /** * Stats from `push_benefit` was emitted. * * (Agent DID, CA's ID, max requested DIDs, processed DIDs, failed DIDs) **/ - Reclaimed: AugmentedEvent; + Reclaimed: AugmentedEvent; /** * A capital distribution was removed. * * (Agent DID, CA's ID) **/ - Removed: AugmentedEvent; + Removed: AugmentedEvent; /** * Generic event **/ @@ -285,36 +275,36 @@ declare module '@polkadot/api/types/events' { /** * The limit of how many active members there can be concurrently was changed. **/ - ActiveLimitChanged: AugmentedEvent; + ActiveLimitChanged: AugmentedEvent; /** * Phantom member, never used. **/ - Dummy: AugmentedEvent; + Dummy: AugmentedEvent; /** * The given member was added; see the transaction for who. * caller DID, New member DID. **/ - MemberAdded: AugmentedEvent; + MemberAdded: AugmentedEvent; /** * The given member was removed; see the transaction for who. * caller DID, member DID that get removed. **/ - MemberRemoved: AugmentedEvent; + MemberRemoved: AugmentedEvent; /** * The given member has been revoked at specific time-stamp. * caller DID, member DID that get revoked. **/ - MemberRevoked: AugmentedEvent; + MemberRevoked: AugmentedEvent; /** * The membership was reset; see the transaction for who the new set is. * caller DID, List of new members. **/ - MembersReset: AugmentedEvent]>; + MembersReset: AugmentedEvent]>; /** * Two members were swapped; see the transaction for who. * caller DID, Removed DID, New add DID. **/ - MembersSwapped: AugmentedEvent; + MembersSwapped: AugmentedEvent; /** * Generic event **/ @@ -326,25 +316,25 @@ declare module '@polkadot/api/types/events' { * * (caller DID, ticker, checkpoint ID, total supply, checkpoint timestamp) **/ - CheckpointCreated: AugmentedEvent, Ticker, CheckpointId, Balance, Moment]>; + CheckpointCreated: AugmentedEvent, PolymeshPrimitivesTicker, u64, u128, u64]>; /** * The maximum complexity for an arbitrary ticker's schedule set was changed. * * (GC DID, the new maximum) **/ - MaximumSchedulesComplexityChanged: AugmentedEvent; + MaximumSchedulesComplexityChanged: AugmentedEvent; /** * A checkpoint schedule was created. * * (caller DID, ticker, schedule) **/ - ScheduleCreated: AugmentedEvent; + ScheduleCreated: AugmentedEvent; /** * A checkpoint schedule was removed. * * (caller DID, ticker, schedule) **/ - ScheduleRemoved: AugmentedEvent; + ScheduleRemoved: AugmentedEvent; /** * Generic event **/ @@ -354,36 +344,36 @@ declare module '@polkadot/api/types/events' { /** * The limit of how many active members there can be concurrently was changed. **/ - ActiveLimitChanged: AugmentedEvent; + ActiveLimitChanged: AugmentedEvent; /** * Phantom member, never used. **/ - Dummy: AugmentedEvent; + Dummy: AugmentedEvent; /** * The given member was added; see the transaction for who. * caller DID, New member DID. **/ - MemberAdded: AugmentedEvent; + MemberAdded: AugmentedEvent; /** * The given member was removed; see the transaction for who. * caller DID, member DID that get removed. **/ - MemberRemoved: AugmentedEvent; + MemberRemoved: AugmentedEvent; /** * The given member has been revoked at specific time-stamp. * caller DID, member DID that get revoked. **/ - MemberRevoked: AugmentedEvent; + MemberRevoked: AugmentedEvent; /** * The membership was reset; see the transaction for who the new set is. * caller DID, List of new members. **/ - MembersReset: AugmentedEvent]>; + MembersReset: AugmentedEvent]>; /** * Two members were swapped; see the transaction for who. * caller DID, Removed DID, New add DID. **/ - MembersSwapped: AugmentedEvent; + MembersSwapped: AugmentedEvent; /** * Generic event **/ @@ -394,47 +384,47 @@ declare module '@polkadot/api/types/events' { * Emitted when an asset compliance for a given ticker gets paused. * (caller DID, Ticker). **/ - AssetCompliancePaused: AugmentedEvent; + AssetCompliancePaused: AugmentedEvent; /** * Emitted when an asset compliance is replaced. * Parameters: caller DID, ticker, new asset compliance. **/ - AssetComplianceReplaced: AugmentedEvent]>; + AssetComplianceReplaced: AugmentedEvent]>; /** * Emitted when an asset compliance of a ticker is reset. * (caller DID, Ticker). **/ - AssetComplianceReset: AugmentedEvent; + AssetComplianceReset: AugmentedEvent; /** * Emitted when an asset compliance for a given ticker gets resume. * (caller DID, Ticker). **/ - AssetComplianceResumed: AugmentedEvent; + AssetComplianceResumed: AugmentedEvent; /** * Emitted when compliance requirement get modified/change. * (caller DID, Ticker, ComplianceRequirement). **/ - ComplianceRequirementChanged: AugmentedEvent; + ComplianceRequirementChanged: AugmentedEvent; /** * Emitted when new compliance requirement is created. * (caller DID, Ticker, ComplianceRequirement). **/ - ComplianceRequirementCreated: AugmentedEvent; + ComplianceRequirementCreated: AugmentedEvent; /** * Emitted when a compliance requirement is removed. * (caller DID, Ticker, requirement_id). **/ - ComplianceRequirementRemoved: AugmentedEvent; + ComplianceRequirementRemoved: AugmentedEvent; /** * Emitted when default claim issuer list for a given ticker gets added. * (caller DID, Ticker, Added TrustedIssuer). **/ - TrustedDefaultClaimIssuerAdded: AugmentedEvent; + TrustedDefaultClaimIssuerAdded: AugmentedEvent; /** * Emitted when default claim issuer list for a given ticker get removed. * (caller DID, Ticker, Removed TrustedIssuer). **/ - TrustedDefaultClaimIssuerRemoved: AugmentedEvent; + TrustedDefaultClaimIssuerRemoved: AugmentedEvent; /** * Generic event **/ @@ -445,46 +435,46 @@ declare module '@polkadot/api/types/events' { * A new DID was made the CAA. * (New CAA DID, Ticker, New CAA DID). **/ - CAATransferred: AugmentedEvent; + CAATransferred: AugmentedEvent; /** * A CA was initiated. * (Agent DID, CA id, the CA, the CA details) **/ - CAInitiated: AugmentedEvent; + CAInitiated: AugmentedEvent; /** * A CA was linked to a set of docs. * (Agent DID, CA Id, List of doc identifiers) **/ - CALinkedToDoc: AugmentedEvent]>; + CALinkedToDoc: AugmentedEvent]>; /** * A CA was removed. * (Agent DID, CA Id) **/ - CARemoved: AugmentedEvent; + CARemoved: AugmentedEvent; /** * The set of default `TargetIdentities` for a ticker changed. * (Agent DID, Ticker, New TargetIdentities) **/ - DefaultTargetIdentitiesChanged: AugmentedEvent; + DefaultTargetIdentitiesChanged: AugmentedEvent; /** * The default withholding tax for a ticker changed. * (Agent DID, Ticker, New Tax). **/ - DefaultWithholdingTaxChanged: AugmentedEvent; + DefaultWithholdingTaxChanged: AugmentedEvent; /** * The withholding tax specific to a DID for a ticker changed. * (Agent DID, Ticker, Taxed DID, New Tax). **/ - DidWithholdingTaxChanged: AugmentedEvent]>; + DidWithholdingTaxChanged: AugmentedEvent]>; /** * The maximum length of `details` in bytes was changed. * (GC DID, new length) **/ - MaxDetailsLengthChanged: AugmentedEvent; + MaxDetailsLengthChanged: AugmentedEvent; /** * A CA's record date changed. **/ - RecordDateChanged: AugmentedEvent; + RecordDateChanged: AugmentedEvent; /** * Generic event **/ @@ -496,37 +486,37 @@ declare module '@polkadot/api/types/events' { * * (Agent DID, CA's ID, Voting start/end, Ballot metadata, RCV enabled?) **/ - Created: AugmentedEvent; + Created: AugmentedEvent; /** * A corporate ballot changed its metadata. * * (Agent DID, CA's ID, New metadata) **/ - MetaChanged: AugmentedEvent; + MetaChanged: AugmentedEvent; /** * A corporate ballot changed its start/end date range. * * (Agent DID, CA's ID, Voting start/end) **/ - RangeChanged: AugmentedEvent; + RangeChanged: AugmentedEvent; /** * A corporate ballot changed its RCV support. * * (Agent DID, CA's ID, New support) **/ - RCVChanged: AugmentedEvent; + RCVChanged: AugmentedEvent; /** * A corporate ballot was removed. * * (Agent DID, CA's ID) **/ - Removed: AugmentedEvent; + Removed: AugmentedEvent; /** * A vote was cast in a corporate ballot. * * (voter DID, CAId, Votes) **/ - VoteCast: AugmentedEvent]>; + VoteCast: AugmentedEvent]>; /** * Generic event **/ @@ -538,31 +528,31 @@ declare module '@polkadot/api/types/events' { * * (Caller/Agent DID, Agent's ticker, Agent's group) **/ - AgentAdded: AugmentedEvent; + AgentAdded: AugmentedEvent; /** * An agent was removed. * * (Caller DID, Agent's ticker, Agent's DID) **/ - AgentRemoved: AugmentedEvent; + AgentRemoved: AugmentedEvent; /** * An agent's group was changed. * * (Caller DID, Agent's ticker, Agent's DID, The new group of the agent) **/ - GroupChanged: AugmentedEvent; + GroupChanged: AugmentedEvent; /** * An Agent Group was created. * * (Caller DID, AG's ticker, AG's ID, AG's permissions) **/ - GroupCreated: AugmentedEvent; + GroupCreated: AugmentedEvent; /** * An Agent Group's permissions was updated. * * (Caller DID, AG's ticker, AG's ID, AG's new permissions) **/ - GroupPermissionsUpdated: AugmentedEvent; + GroupPermissionsUpdated: AugmentedEvent; /** * Generic event **/ @@ -572,7 +562,7 @@ declare module '@polkadot/api/types/events' { /** * New authority set has been applied. \[authority_set\] **/ - NewAuthorities: AugmentedEvent; + NewAuthorities: AugmentedEvent>]>; /** * Current authority set has been paused. **/ @@ -590,32 +580,32 @@ declare module '@polkadot/api/types/events' { /** * Asset DID **/ - AssetDidRegistered: AugmentedEvent; + AssetDidRegistered: AugmentedEvent; /** * New authorization added. * (authorised_by, target_did, target_key, auth_id, authorization_data, expiry) **/ - AuthorizationAdded: AugmentedEvent, Option, u64, AuthorizationData, Option]>; + AuthorizationAdded: AugmentedEvent, Option, u64, PolymeshPrimitivesAuthorizationAuthorizationData, Option]>; /** * Authorization consumed. * (authorized_identity, authorized_key, auth_id) **/ - AuthorizationConsumed: AugmentedEvent, Option, u64]>; + AuthorizationConsumed: AugmentedEvent, Option, u64]>; /** * Authorization rejected by the user who was authorized. * (authorized_identity, authorized_key, auth_id) **/ - AuthorizationRejected: AugmentedEvent, Option, u64]>; + AuthorizationRejected: AugmentedEvent, Option, u64]>; /** * Authorization revoked by the authorizer. * (authorized_identity, authorized_key, auth_id) **/ - AuthorizationRevoked: AugmentedEvent, Option, u64]>; + AuthorizationRevoked: AugmentedEvent, Option, u64]>; /** * CDD claims generated by `IdentityId` (a CDD Provider) have been invalidated from * `Moment`. **/ - CddClaimsInvalidated: AugmentedEvent; + CddClaimsInvalidated: AugmentedEvent; /** * CDD requirement for updating primary key changed. (new_requirement) **/ @@ -623,52 +613,52 @@ declare module '@polkadot/api/types/events' { /** * DID, claims **/ - ClaimAdded: AugmentedEvent; + ClaimAdded: AugmentedEvent; /** * DID, ClaimType, Claim Issuer **/ - ClaimRevoked: AugmentedEvent; + ClaimRevoked: AugmentedEvent; /** * DID, primary key account ID, secondary keys **/ - DidCreated: AugmentedEvent]>; + DidCreated: AugmentedEvent]>; /** * Mocked InvestorUid created. **/ - MockInvestorUIDCreated: AugmentedEvent; + MockInvestorUIDCreated: AugmentedEvent; /** * Off-chain Authorization has been revoked. * (Target Identity, Signatory) **/ - OffChainAuthorizationRevoked: AugmentedEvent; + OffChainAuthorizationRevoked: AugmentedEvent; /** * DID, old primary key account ID, new ID **/ - PrimaryKeyUpdated: AugmentedEvent; + PrimaryKeyUpdated: AugmentedEvent; /** * DID, updated secondary key, previous permissions, new permissions **/ - SecondaryKeyPermissionsUpdated: AugmentedEvent; + SecondaryKeyPermissionsUpdated: AugmentedEvent; /** * DID, new keys **/ - SecondaryKeysAdded: AugmentedEvent]>; + SecondaryKeysAdded: AugmentedEvent]>; /** * All Secondary keys of the identity ID are frozen. **/ - SecondaryKeysFrozen: AugmentedEvent; + SecondaryKeysFrozen: AugmentedEvent; /** * DID, the keys that got removed **/ - SecondaryKeysRemoved: AugmentedEvent]>; + SecondaryKeysRemoved: AugmentedEvent]>; /** * All Secondary keys of the identity ID are unfrozen. **/ - SecondaryKeysUnfrozen: AugmentedEvent; + SecondaryKeysUnfrozen: AugmentedEvent; /** * A signer left their identity. (did, signer) **/ - SignerLeft: AugmentedEvent; + SignerLeft: AugmentedEvent; /** * Generic event **/ @@ -682,11 +672,11 @@ declare module '@polkadot/api/types/events' { /** * A new heartbeat was received from `AuthorityId` \[authority_id\] **/ - HeartbeatReceived: AugmentedEvent; + HeartbeatReceived: AugmentedEvent; /** * At the end of the session, at least one validator was found to be \[offline\]. **/ - SomeOffline: AugmentedEvent]>; + SomeOffline: AugmentedEvent>]>; /** * Generic event **/ @@ -696,15 +686,15 @@ declare module '@polkadot/api/types/events' { /** * A account index was assigned. \[index, who\] **/ - IndexAssigned: AugmentedEvent; + IndexAssigned: AugmentedEvent; /** * A account index has been freed up (unassigned). \[index\] **/ - IndexFreed: AugmentedEvent; + IndexFreed: AugmentedEvent; /** * A account index has been frozen to its current account ID. \[index, who\] **/ - IndexFrozen: AugmentedEvent; + IndexFrozen: AugmentedEvent; /** * Generic event **/ @@ -715,60 +705,60 @@ declare module '@polkadot/api/types/events' { * Event emitted after creation of a multisig. * Arguments: caller DID, multisig address, signers (pending approval), signatures required. **/ - MultiSigCreated: AugmentedEvent, u64]>; + MultiSigCreated: AugmentedEvent, u64]>; /** * Event emitted when the number of required signatures is changed. * Arguments: caller DID, multisig, new required signatures. **/ - MultiSigSignaturesRequiredChanged: AugmentedEvent; + MultiSigSignaturesRequiredChanged: AugmentedEvent; /** * Event emitted when a signatory is added. * Arguments: caller DID, multisig, added signer. **/ - MultiSigSignerAdded: AugmentedEvent; + MultiSigSignerAdded: AugmentedEvent; /** * Event emitted when a multisig signatory is authorized to be added. * Arguments: caller DID, multisig, authorized signer. **/ - MultiSigSignerAuthorized: AugmentedEvent; + MultiSigSignerAuthorized: AugmentedEvent; /** * Event emitted when a multisig signatory is removed. * Arguments: caller DID, multisig, removed signer. **/ - MultiSigSignerRemoved: AugmentedEvent; + MultiSigSignerRemoved: AugmentedEvent; /** * Event emitted after adding a proposal. * Arguments: caller DID, multisig, proposal ID. **/ - ProposalAdded: AugmentedEvent; + ProposalAdded: AugmentedEvent; /** * Event emitted when the proposal get approved. * Arguments: caller DID, multisig, authorized signer, proposal id. **/ - ProposalApproved: AugmentedEvent; + ProposalApproved: AugmentedEvent; /** * Event emitted when a proposal is executed. * Arguments: caller DID, multisig, proposal ID, result. **/ - ProposalExecuted: AugmentedEvent; + ProposalExecuted: AugmentedEvent; /** * Event emitted when there's an error in proposal execution **/ - ProposalExecutionFailed: AugmentedEvent; + ProposalExecutionFailed: AugmentedEvent; /** * Event emitted when a proposal is rejected. * Arguments: caller DID, multisig, proposal ID. **/ - ProposalRejected: AugmentedEvent; + ProposalRejected: AugmentedEvent; /** * Event emitted when a vote is cast in favor of rejecting a proposal. * Arguments: caller DID, multisig, authorized signer, proposal id. **/ - ProposalRejectionVote: AugmentedEvent; + ProposalRejectionVote: AugmentedEvent; /** * Scheduling of proposal fails. **/ - SchedulingFailed: AugmentedEvent; + SchedulingFailed: AugmentedEvent; /** * Generic event **/ @@ -777,11 +767,10 @@ declare module '@polkadot/api/types/events' { offences: { /** * There is an offence reported of the given `kind` happened at the `session_index` and - * (kind-specific) time slot. This event is not deposited for duplicate slashes. last - * element indicates of the offence was applied (true) or queued (false) - * \[kind, timeslot, applied\]. + * (kind-specific) time slot. This event is not deposited for duplicate slashes. + * \[kind, timeslot\]. **/ - Offence: AugmentedEvent; + Offence: AugmentedEvent; /** * Generic event **/ @@ -792,60 +781,60 @@ declare module '@polkadot/api/types/events' { * The maximum number of active PIPs was changed. * (caller DID, old value, new value) **/ - ActivePipLimitChanged: AugmentedEvent; + ActivePipLimitChanged: AugmentedEvent; /** * Default enactment period (in blocks) has been changed. * (caller DID, old period, new period) **/ - DefaultEnactmentPeriodChanged: AugmentedEvent; + DefaultEnactmentPeriodChanged: AugmentedEvent; /** * Cancelling the PIP execution failed in the scheduler pallet. **/ - ExecutionCancellingFailed: AugmentedEvent; + ExecutionCancellingFailed: AugmentedEvent; /** * Execution of a PIP has been scheduled at specific block. **/ - ExecutionScheduled: AugmentedEvent; + ExecutionScheduled: AugmentedEvent; /** * Scheduling of the PIP for execution failed in the scheduler pallet. **/ - ExecutionSchedulingFailed: AugmentedEvent; + ExecutionSchedulingFailed: AugmentedEvent; /** * The PIP has been scheduled for expiry. **/ - ExpiryScheduled: AugmentedEvent; + ExpiryScheduled: AugmentedEvent; /** * Scheduling of the PIP for expiry failed in the scheduler pallet. **/ - ExpirySchedulingFailed: AugmentedEvent; + ExpirySchedulingFailed: AugmentedEvent; /** * Pruning Historical PIPs is enabled or disabled (caller DID, old value, new value) **/ - HistoricalPipsPruned: AugmentedEvent; + HistoricalPipsPruned: AugmentedEvent; /** * The maximum times a PIP can be skipped was changed. * (caller DID, old value, new value) **/ - MaxPipSkipCountChanged: AugmentedEvent; + MaxPipSkipCountChanged: AugmentedEvent; /** * Minimum deposit amount modified * (caller DID, old amount, new amount) **/ - MinimumProposalDepositChanged: AugmentedEvent; + MinimumProposalDepositChanged: AugmentedEvent; /** * Amount of blocks after which a pending PIP expires. * (caller DID, old expiry, new expiry) **/ - PendingPipExpiryChanged: AugmentedEvent; + PendingPipExpiryChanged: AugmentedEvent; /** * Pip has been closed, bool indicates whether data is pruned **/ - PipClosed: AugmentedEvent; + PipClosed: AugmentedEvent; /** * A PIP in the snapshot queue was skipped. * (gc_did, pip_id, new_skip_count) **/ - PipSkipped: AugmentedEvent; + PipSkipped: AugmentedEvent; /** * A PIP was made with a `Balance` stake. * @@ -853,33 +842,33 @@ declare module '@polkadot/api/types/events' { * * Caller DID, Proposer, PIP ID, deposit, URL, description, expiry time, proposal data. **/ - ProposalCreated: AugmentedEvent, Option, MaybeBlock, ProposalData]>; + ProposalCreated: AugmentedEvent, Option, PolymeshCommonUtilitiesMaybeBlock, PalletPipsProposalData]>; /** * Refund proposal * (id, total amount) **/ - ProposalRefund: AugmentedEvent; + ProposalRefund: AugmentedEvent; /** * Triggered each time the state of a proposal is amended **/ - ProposalStateUpdated: AugmentedEvent; + ProposalStateUpdated: AugmentedEvent; /** * The snapshot was cleared. **/ - SnapshotCleared: AugmentedEvent; + SnapshotCleared: AugmentedEvent; /** * Results (e.g., approved, rejected, and skipped), were enacted for some PIPs. * (gc_did, snapshot_id_opt, skipped_pips_with_new_count, rejected_pips, approved_pips) **/ - SnapshotResultsEnacted: AugmentedEvent, Vec>, Vec, Vec]>; + SnapshotResultsEnacted: AugmentedEvent, Vec>, Vec, Vec]>; /** * A new snapshot was taken. **/ - SnapshotTaken: AugmentedEvent]>; + SnapshotTaken: AugmentedEvent]>; /** * `AccountId` voted `bool` on the proposal referenced by `PipId` **/ - Voted: AugmentedEvent; + Voted: AugmentedEvent; /** * Generic event **/ @@ -891,54 +880,54 @@ declare module '@polkadot/api/types/events' { * tally (yes votes, no votes and total seats given respectively as `MemberCount`). * Parameters: caller DID, proposal hash, yay vote count, nay vote count, total seats. **/ - Approved: AugmentedEvent; + Approved: AugmentedEvent; /** * A motion was executed; `DispatchResult` is `Ok(())` if returned without error. * Parameters: caller DID, proposal hash, result of proposal dispatch. **/ - Executed: AugmentedEvent; + Executed: AugmentedEvent]>; /** * Proposal expiry time has been updated. * Parameters: caller DID, new expiry time (if any). **/ - ExpiresAfterUpdated: AugmentedEvent; + ExpiresAfterUpdated: AugmentedEvent; /** * Final votes on a motion (given hash) * caller DID, ProposalIndex, Proposal hash, yes voters, no voter **/ - FinalVotes: AugmentedEvent, Vec]>; + FinalVotes: AugmentedEvent, Vec]>; /** * A motion (given hash) has been proposed (by given account) with a threshold (given `MemberCount`). * Parameters: caller DID, proposal index, proposal hash. **/ - Proposed: AugmentedEvent; + Proposed: AugmentedEvent; /** * A motion was rejected by the required threshold with the following * tally (yes votes, no votes and total seats given respectively as `MemberCount`). * Parameters: caller DID, proposal hash, yay vote count, nay vote count, total seats. **/ - Rejected: AugmentedEvent; + Rejected: AugmentedEvent; /** * Release coordinator has been updated. * Parameters: caller DID, DID of the release coordinator. **/ - ReleaseCoordinatorUpdated: AugmentedEvent]>; + ReleaseCoordinatorUpdated: AugmentedEvent]>; /** * A motion (given hash) has been voted on by given account, leaving * a tally (yes votes, no votes and total seats given respectively as `MemberCount`). * caller DID, Proposal index, Proposal hash, current vote, yay vote count, nay vote count, total seats. **/ - Voted: AugmentedEvent; + Voted: AugmentedEvent; /** * A vote on a motion (given hash) has been retracted. * caller DID, ProposalIndex, Proposal hash, vote that was retracted **/ - VoteRetracted: AugmentedEvent; + VoteRetracted: AugmentedEvent; /** * Voting threshold has been updated * Parameters: caller DID, numerator, denominator **/ - VoteThresholdUpdated: AugmentedEvent; + VoteThresholdUpdated: AugmentedEvent; /** * Generic event **/ @@ -955,7 +944,7 @@ declare module '@polkadot/api/types/events' { * * asset ticker * * asset balance that was moved **/ - MovedBetweenPortfolios: AugmentedEvent]>; + MovedBetweenPortfolios: AugmentedEvent]>; /** * The portfolio has been successfully created. * @@ -964,7 +953,7 @@ declare module '@polkadot/api/types/events' { * * portfolio number * * portfolio name **/ - PortfolioCreated: AugmentedEvent; + PortfolioCreated: AugmentedEvent; /** * Custody of a portfolio has been given to a different identity * @@ -973,7 +962,7 @@ declare module '@polkadot/api/types/events' { * * portfolio id * * portfolio custodian did **/ - PortfolioCustodianChanged: AugmentedEvent; + PortfolioCustodianChanged: AugmentedEvent; /** * The portfolio has been successfully removed. * @@ -981,7 +970,7 @@ declare module '@polkadot/api/types/events' { * * origin DID * * portfolio number **/ - PortfolioDeleted: AugmentedEvent; + PortfolioDeleted: AugmentedEvent; /** * The portfolio identified with `num` has been renamed to `name`. * @@ -990,7 +979,7 @@ declare module '@polkadot/api/types/events' { * * portfolio number * * portfolio name **/ - PortfolioRenamed: AugmentedEvent; + PortfolioRenamed: AugmentedEvent; /** * All non-default portfolio numbers and names of a DID. * @@ -998,7 +987,7 @@ declare module '@polkadot/api/types/events' { * * origin DID * * vector of number-name pairs **/ - UserPortfolios: AugmentedEvent>]>; + UserPortfolios: AugmentedEvent>]>; /** * Generic event **/ @@ -1008,15 +997,15 @@ declare module '@polkadot/api/types/events' { /** * The fee coefficient. **/ - CoefficientSet: AugmentedEvent; + CoefficientSet: AugmentedEvent; /** * Fee charged. **/ - FeeCharged: AugmentedEvent; + FeeCharged: AugmentedEvent; /** * The protocol fee of an operation. **/ - FeeSet: AugmentedEvent; + FeeSet: AugmentedEvent; /** * Generic event **/ @@ -1028,25 +1017,25 @@ declare module '@polkadot/api/types/events' { * * (Caller DID, User Key, Paying Key) **/ - AcceptedPayingKey: AugmentedEvent; + AcceptedPayingKey: AugmentedEvent; /** * Authorization given for `paying_key` to `user_key`. * * (Caller DID, User Key, Paying Key, Initial POLYX limit, Auth ID) **/ - AuthorizedPayingKey: AugmentedEvent; + AuthorizedPayingKey: AugmentedEvent; /** * Removed paying key. * * (Caller DID, User Key, Paying Key) **/ - RemovedPayingKey: AugmentedEvent; + RemovedPayingKey: AugmentedEvent; /** * Updated polyx limit. * * (Caller DID, User Key, Paying Key, POLYX limit, old remaining POLYX) **/ - UpdatedPolyxLimit: AugmentedEvent; + UpdatedPolyxLimit: AugmentedEvent; /** * Generic event **/ @@ -1056,7 +1045,7 @@ declare module '@polkadot/api/types/events' { /** * Itn reward was claimed. **/ - ItnRewardClaimed: AugmentedEvent; + ItnRewardClaimed: AugmentedEvent; /** * Generic event **/ @@ -1066,15 +1055,15 @@ declare module '@polkadot/api/types/events' { /** * Canceled some task. \[when, index\] **/ - Canceled: AugmentedEvent; + Canceled: AugmentedEvent; /** * Dispatched some task. \[task, id, result\] **/ - Dispatched: AugmentedEvent, DispatchResult]>; + Dispatched: AugmentedEvent, Option, Result]>; /** * Scheduled some task. \[when, index\] **/ - Scheduled: AugmentedEvent; + Scheduled: AugmentedEvent; /** * Generic event **/ @@ -1082,10 +1071,10 @@ declare module '@polkadot/api/types/events' { }; session: { /** - * New session has happened. Note that the argument is the \[session_index\], not the block - * number as the type might suggest. + * New session has happened. Note that the argument is the \[session_index\], not the + * block number as the type might suggest. **/ - NewSession: AugmentedEvent; + NewSession: AugmentedEvent; /** * Generic event **/ @@ -1095,81 +1084,81 @@ declare module '@polkadot/api/types/events' { /** * An affirmation has been withdrawn (did, portfolio, instruction_id) **/ - AffirmationWithdrawn: AugmentedEvent; + AffirmationWithdrawn: AugmentedEvent; /** * An instruction has been affirmed (did, portfolio, instruction_id) **/ - InstructionAffirmed: AugmentedEvent; + InstructionAffirmed: AugmentedEvent; /** * A new instruction has been created * (did, venue_id, instruction_id, settlement_type, trade_date, value_date, legs) **/ - InstructionCreated: AugmentedEvent, Option, Vec]>; + InstructionCreated: AugmentedEvent, Option, Vec]>; /** * Instruction executed successfully(did, instruction_id) **/ - InstructionExecuted: AugmentedEvent; + InstructionExecuted: AugmentedEvent; /** * Instruction failed execution (did, instruction_id) **/ - InstructionFailed: AugmentedEvent; + InstructionFailed: AugmentedEvent; /** * An instruction has been rejected (did, instruction_id) **/ - InstructionRejected: AugmentedEvent; + InstructionRejected: AugmentedEvent; /** * Instruction is rescheduled. * (caller DID, instruction_id) **/ - InstructionRescheduled: AugmentedEvent; + InstructionRescheduled: AugmentedEvent; /** * Execution of a leg failed (did, instruction_id, leg_id) **/ - LegFailedExecution: AugmentedEvent; + LegFailedExecution: AugmentedEvent; /** * A receipt has been claimed (did, instruction_id, leg_id, receipt_uid, signer, receipt metadata) **/ - ReceiptClaimed: AugmentedEvent; + ReceiptClaimed: AugmentedEvent; /** * A receipt has been unclaimed (did, instruction_id, leg_id, receipt_uid, signer) **/ - ReceiptUnclaimed: AugmentedEvent; + ReceiptUnclaimed: AugmentedEvent; /** * A receipt has been invalidated (did, signer, receipt_uid, validity) **/ - ReceiptValidityChanged: AugmentedEvent; + ReceiptValidityChanged: AugmentedEvent; /** * Scheduling of instruction fails. **/ - SchedulingFailed: AugmentedEvent; + SchedulingFailed: AugmentedEvent; /** * A new venue has been created (did, venue_id, details, type) **/ - VenueCreated: AugmentedEvent; + VenueCreated: AugmentedEvent; /** * An existing venue's details has been updated (did, venue_id, details) **/ - VenueDetailsUpdated: AugmentedEvent; + VenueDetailsUpdated: AugmentedEvent; /** * Venue filtering has been enabled or disabled for a ticker (did, ticker, filtering_enabled) **/ - VenueFiltering: AugmentedEvent; + VenueFiltering: AugmentedEvent; /** * Venues added to allow list (did, ticker, vec) **/ - VenuesAllowed: AugmentedEvent]>; + VenuesAllowed: AugmentedEvent]>; /** * Venues added to block list (did, ticker, vec) **/ - VenuesBlocked: AugmentedEvent]>; + VenuesBlocked: AugmentedEvent]>; /** * An existing venue's type has been updated (did, venue_id, type) **/ - VenueTypeUpdated: AugmentedEvent; + VenueTypeUpdated: AugmentedEvent; /** * Venue not part of the token's allow list (did, Ticker, venue_id) **/ - VenueUnauthorized: AugmentedEvent; + VenueUnauthorized: AugmentedEvent; /** * Generic event **/ @@ -1182,80 +1171,80 @@ declare module '@polkadot/api/types/events' { * NOTE: This event is only emitted when funds are bonded via a dispatchable. Notably, * it will not be emitted for staking rewards when they are added to stake. **/ - Bonded: AugmentedEvent; + Bonded: AugmentedEvent; /** * When commission cap get updated. * (old value, new value) **/ - CommissionCapUpdated: AugmentedEvent; + CommissionCapUpdated: AugmentedEvent; /** * The era payout has been set; the first balance is the validator-payout; the second is * the remainder from the maximum amount of reward. * \[era_index, validator_payout, remainder\] **/ - EraPayout: AugmentedEvent; + EraPayout: AugmentedEvent; /** * Remove the nominators from the valid nominators when there CDD expired. * Caller, Stash accountId of nominators **/ - InvalidatedNominators: AugmentedEvent]>; + InvalidatedNominators: AugmentedEvent]>; /** * Min bond threshold was updated (new value). **/ - MinimumBondThresholdUpdated: AugmentedEvent, Balance]>; + MinimumBondThresholdUpdated: AugmentedEvent, u128]>; /** * User has updated their nominations **/ - Nominated: AugmentedEvent]>; + Nominated: AugmentedEvent]>; /** * An old slashing report from a prior era was discarded because it could * not be processed. \[session_index\] **/ - OldSlashingReportDiscarded: AugmentedEvent; + OldSlashingReportDiscarded: AugmentedEvent; /** * An DID has issued a candidacy. See the transaction for who. * GC identity , Validator's identity. **/ - PermissionedIdentityAdded: AugmentedEvent; + PermissionedIdentityAdded: AugmentedEvent; /** * The given member was removed. See the transaction for who. * GC identity , Validator's identity. **/ - PermissionedIdentityRemoved: AugmentedEvent; + PermissionedIdentityRemoved: AugmentedEvent; /** * The staker has been rewarded by this amount. \[stash_identity, stash, amount\] **/ - Reward: AugmentedEvent; + Reward: AugmentedEvent; /** * When scheduling of reward payments get interrupted. **/ - RewardPaymentSchedulingInterrupted: AugmentedEvent; + RewardPaymentSchedulingInterrupted: AugmentedEvent; /** * One validator (and its nominators) has been slashed by the given amount. * \[validator, amount\] **/ - Slash: AugmentedEvent; + Slash: AugmentedEvent; /** * Update for whom balance get slashed. **/ - SlashingAllowedForChanged: AugmentedEvent; + SlashingAllowedForChanged: AugmentedEvent; /** * A new solution for the upcoming election has been stored. \[compute\] **/ - SolutionStored: AugmentedEvent; + SolutionStored: AugmentedEvent; /** * A new set of stakers was elected with the given \[compute\]. **/ - StakingElection: AugmentedEvent; + StakingElection: AugmentedEvent; /** * An account has unbonded this amount. \[did, stash, amount\] **/ - Unbonded: AugmentedEvent; + Unbonded: AugmentedEvent; /** * An account has called `withdraw_unbonded` and removed unbonding chunks worth `Balance` * from the unlocking queue. \[stash, amount\] **/ - Withdrawn: AugmentedEvent; + Withdrawn: AugmentedEvent; /** * Generic event **/ @@ -1265,19 +1254,19 @@ declare module '@polkadot/api/types/events' { /** * `ScopeId`s were added to the exemption list. **/ - ExemptionsAdded: AugmentedEvent]>; + ExemptionsAdded: AugmentedEvent]>; /** * `ScopeId`s were removed from the exemption list. **/ - ExemptionsRemoved: AugmentedEvent]>; + ExemptionsRemoved: AugmentedEvent]>; /** * A new transfer manager was added. **/ - TransferManagerAdded: AugmentedEvent; + TransferManagerAdded: AugmentedEvent; /** * An existing transfer manager was removed. **/ - TransferManagerRemoved: AugmentedEvent; + TransferManagerRemoved: AugmentedEvent; /** * Generic event **/ @@ -1288,32 +1277,32 @@ declare module '@polkadot/api/types/events' { * A fundraiser has been stopped. * (Agent DID, fundraiser id) **/ - FundraiserClosed: AugmentedEvent; + FundraiserClosed: AugmentedEvent; /** * A new fundraiser has been created. * (Agent DID, fundraiser id, fundraiser name, fundraiser details) **/ - FundraiserCreated: AugmentedEvent; + FundraiserCreated: AugmentedEvent; /** * A fundraiser has been frozen. * (Agent DID, fundraiser id) **/ - FundraiserFrozen: AugmentedEvent; + FundraiserFrozen: AugmentedEvent; /** * A fundraiser has been unfrozen. * (Agent DID, fundraiser id) **/ - FundraiserUnfrozen: AugmentedEvent; + FundraiserUnfrozen: AugmentedEvent; /** * A fundraiser window has been modified. * (Agent DID, fundraiser id, old_start, old_end, new_start, new_end) **/ - FundraiserWindowModified: AugmentedEvent, Moment, Option]>; + FundraiserWindowModified: AugmentedEvent, u64, Option]>; /** * An investor invested in the fundraiser. * (Investor, fundraiser_id, offering token, raise token, offering_token_amount, raise_token_amount) **/ - Invested: AugmentedEvent; + Invested: AugmentedEvent; /** * Generic event **/ @@ -1323,15 +1312,15 @@ declare module '@polkadot/api/types/events' { /** * The \[sudoer\] just switched identity; the old key is supplied. **/ - KeyChanged: AugmentedEvent; + KeyChanged: AugmentedEvent; /** * A sudo just took place. \[result\] **/ - Sudid: AugmentedEvent; + Sudid: AugmentedEvent]>; /** * A sudo just took place. \[result\] **/ - SudoAsDone: AugmentedEvent; + SudoAsDone: AugmentedEvent]>; /** * Generic event **/ @@ -1345,19 +1334,23 @@ declare module '@polkadot/api/types/events' { /** * An extrinsic failed. \[error, info\] **/ - ExtrinsicFailed: AugmentedEvent; + ExtrinsicFailed: AugmentedEvent; /** * An extrinsic completed successfully. \[info\] **/ - ExtrinsicSuccess: AugmentedEvent; + ExtrinsicSuccess: AugmentedEvent; /** * An \[account\] was reaped. **/ - KilledAccount: AugmentedEvent; + KilledAccount: AugmentedEvent; /** * A new \[account\] was created. **/ - NewAccount: AugmentedEvent; + NewAccount: AugmentedEvent; + /** + * On on-chain remark happened. \[origin, remark_hash\] + **/ + Remarked: AugmentedEvent; /** * Generic event **/ @@ -1369,54 +1362,54 @@ declare module '@polkadot/api/types/events' { * tally (yes votes, no votes and total seats given respectively as `MemberCount`). * Parameters: caller DID, proposal hash, yay vote count, nay vote count, total seats. **/ - Approved: AugmentedEvent; + Approved: AugmentedEvent; /** * A motion was executed; `DispatchResult` is `Ok(())` if returned without error. * Parameters: caller DID, proposal hash, result of proposal dispatch. **/ - Executed: AugmentedEvent; + Executed: AugmentedEvent]>; /** * Proposal expiry time has been updated. * Parameters: caller DID, new expiry time (if any). **/ - ExpiresAfterUpdated: AugmentedEvent; + ExpiresAfterUpdated: AugmentedEvent; /** * Final votes on a motion (given hash) * caller DID, ProposalIndex, Proposal hash, yes voters, no voter **/ - FinalVotes: AugmentedEvent, Vec]>; + FinalVotes: AugmentedEvent, Vec]>; /** * A motion (given hash) has been proposed (by given account) with a threshold (given `MemberCount`). * Parameters: caller DID, proposal index, proposal hash. **/ - Proposed: AugmentedEvent; + Proposed: AugmentedEvent; /** * A motion was rejected by the required threshold with the following * tally (yes votes, no votes and total seats given respectively as `MemberCount`). * Parameters: caller DID, proposal hash, yay vote count, nay vote count, total seats. **/ - Rejected: AugmentedEvent; + Rejected: AugmentedEvent; /** * Release coordinator has been updated. * Parameters: caller DID, DID of the release coordinator. **/ - ReleaseCoordinatorUpdated: AugmentedEvent]>; + ReleaseCoordinatorUpdated: AugmentedEvent]>; /** * A motion (given hash) has been voted on by given account, leaving * a tally (yes votes, no votes and total seats given respectively as `MemberCount`). * caller DID, Proposal index, Proposal hash, current vote, yay vote count, nay vote count, total seats. **/ - Voted: AugmentedEvent; + Voted: AugmentedEvent; /** * A vote on a motion (given hash) has been retracted. * caller DID, ProposalIndex, Proposal hash, vote that was retracted **/ - VoteRetracted: AugmentedEvent; + VoteRetracted: AugmentedEvent; /** * Voting threshold has been updated * Parameters: caller DID, numerator, denominator **/ - VoteThresholdUpdated: AugmentedEvent; + VoteThresholdUpdated: AugmentedEvent; /** * Generic event **/ @@ -1426,36 +1419,36 @@ declare module '@polkadot/api/types/events' { /** * The limit of how many active members there can be concurrently was changed. **/ - ActiveLimitChanged: AugmentedEvent; + ActiveLimitChanged: AugmentedEvent; /** * Phantom member, never used. **/ - Dummy: AugmentedEvent; + Dummy: AugmentedEvent; /** * The given member was added; see the transaction for who. * caller DID, New member DID. **/ - MemberAdded: AugmentedEvent; + MemberAdded: AugmentedEvent; /** * The given member was removed; see the transaction for who. * caller DID, member DID that get removed. **/ - MemberRemoved: AugmentedEvent; + MemberRemoved: AugmentedEvent; /** * The given member has been revoked at specific time-stamp. * caller DID, member DID that get revoked. **/ - MemberRevoked: AugmentedEvent; + MemberRevoked: AugmentedEvent; /** * The membership was reset; see the transaction for who the new set is. * caller DID, List of new members. **/ - MembersReset: AugmentedEvent]>; + MembersReset: AugmentedEvent]>; /** * Two members were swapped; see the transaction for who. * caller DID, Removed DID, New add DID. **/ - MembersSwapped: AugmentedEvent; + MembersSwapped: AugmentedEvent; /** * Generic event **/ @@ -1467,17 +1460,17 @@ declare module '@polkadot/api/types/events' { * valid CDD claim. * (Target DID, Target Account, a valid CDD claim exists) **/ - CddStatus: AugmentedEvent, AccountId, bool]>; + CddStatus: AugmentedEvent, AccountId32, bool]>; /** * Emits the `IdentityId` and the `AccountId` of the caller. * (Caller DID, Caller account) **/ - DidStatus: AugmentedEvent; + DidStatus: AugmentedEvent; /** * A new mocked `InvestorUid` has been created for the given Identity. * (Target DID, New InvestorUid) **/ - MockInvestorUIDCreated: AugmentedEvent; + MockInvestorUIDCreated: AugmentedEvent; /** * Generic event **/ @@ -1488,11 +1481,11 @@ declare module '@polkadot/api/types/events' { * Disbursement to a target Identity. * (target identity, amount) **/ - TreasuryDisbursement: AugmentedEvent; + TreasuryDisbursement: AugmentedEvent; /** * Treasury reimbursement. **/ - TreasuryReimbursement: AugmentedEvent; + TreasuryReimbursement: AugmentedEvent; /** * Generic event **/ @@ -1504,54 +1497,54 @@ declare module '@polkadot/api/types/events' { * tally (yes votes, no votes and total seats given respectively as `MemberCount`). * Parameters: caller DID, proposal hash, yay vote count, nay vote count, total seats. **/ - Approved: AugmentedEvent; + Approved: AugmentedEvent; /** * A motion was executed; `DispatchResult` is `Ok(())` if returned without error. * Parameters: caller DID, proposal hash, result of proposal dispatch. **/ - Executed: AugmentedEvent; + Executed: AugmentedEvent]>; /** * Proposal expiry time has been updated. * Parameters: caller DID, new expiry time (if any). **/ - ExpiresAfterUpdated: AugmentedEvent; + ExpiresAfterUpdated: AugmentedEvent; /** * Final votes on a motion (given hash) * caller DID, ProposalIndex, Proposal hash, yes voters, no voter **/ - FinalVotes: AugmentedEvent, Vec]>; + FinalVotes: AugmentedEvent, Vec]>; /** * A motion (given hash) has been proposed (by given account) with a threshold (given `MemberCount`). * Parameters: caller DID, proposal index, proposal hash. **/ - Proposed: AugmentedEvent; + Proposed: AugmentedEvent; /** * A motion was rejected by the required threshold with the following * tally (yes votes, no votes and total seats given respectively as `MemberCount`). * Parameters: caller DID, proposal hash, yay vote count, nay vote count, total seats. **/ - Rejected: AugmentedEvent; + Rejected: AugmentedEvent; /** * Release coordinator has been updated. * Parameters: caller DID, DID of the release coordinator. **/ - ReleaseCoordinatorUpdated: AugmentedEvent]>; + ReleaseCoordinatorUpdated: AugmentedEvent]>; /** * A motion (given hash) has been voted on by given account, leaving * a tally (yes votes, no votes and total seats given respectively as `MemberCount`). * caller DID, Proposal index, Proposal hash, current vote, yay vote count, nay vote count, total seats. **/ - Voted: AugmentedEvent; + Voted: AugmentedEvent; /** * A vote on a motion (given hash) has been retracted. * caller DID, ProposalIndex, Proposal hash, vote that was retracted **/ - VoteRetracted: AugmentedEvent; + VoteRetracted: AugmentedEvent; /** * Voting threshold has been updated * Parameters: caller DID, numerator, denominator **/ - VoteThresholdUpdated: AugmentedEvent; + VoteThresholdUpdated: AugmentedEvent; /** * Generic event **/ @@ -1561,36 +1554,36 @@ declare module '@polkadot/api/types/events' { /** * The limit of how many active members there can be concurrently was changed. **/ - ActiveLimitChanged: AugmentedEvent; + ActiveLimitChanged: AugmentedEvent; /** * Phantom member, never used. **/ - Dummy: AugmentedEvent; + Dummy: AugmentedEvent; /** * The given member was added; see the transaction for who. * caller DID, New member DID. **/ - MemberAdded: AugmentedEvent; + MemberAdded: AugmentedEvent; /** * The given member was removed; see the transaction for who. * caller DID, member DID that get removed. **/ - MemberRemoved: AugmentedEvent; + MemberRemoved: AugmentedEvent; /** * The given member has been revoked at specific time-stamp. * caller DID, member DID that get revoked. **/ - MemberRevoked: AugmentedEvent; + MemberRevoked: AugmentedEvent; /** * The membership was reset; see the transaction for who the new set is. * caller DID, List of new members. **/ - MembersReset: AugmentedEvent]>; + MembersReset: AugmentedEvent]>; /** * Two members were swapped; see the transaction for who. * caller DID, Removed DID, New add DID. **/ - MembersSwapped: AugmentedEvent; + MembersSwapped: AugmentedEvent; /** * Generic event **/ @@ -1601,27 +1594,23 @@ declare module '@polkadot/api/types/events' { * Batch of dispatches completed fully with no error. * Includes a vector of event counts for each dispatch. **/ - BatchCompleted: AugmentedEvent; + BatchCompleted: AugmentedEvent]>; /** * Batch of dispatches did not complete fully. * Includes a vector of event counts for each dispatch and * the index of the first failing dispatch as well as the error. **/ - BatchInterrupted: AugmentedEvent; + BatchInterrupted: AugmentedEvent, ITuple<[u32, SpRuntimeDispatchError]>]>; /** * Batch of dispatches did not complete fully. * Includes a vector of event counts for each call and * a vector of any failed dispatches with their indices and associated error. **/ - BatchOptimisticFailed: AugmentedEvent]>; + BatchOptimisticFailed: AugmentedEvent, Vec>]>; /** * Generic event **/ [key: string]: AugmentedEvent; }; - } - - export interface DecoratedEvents extends AugmentedEvents { - [key: string]: ModuleEvents; - } -} + } // AugmentedEvents +} // declare module diff --git a/scripts/cli/src/interfaces/augment-api-query.ts b/scripts/cli/src/interfaces/augment-api-query.ts index 772d8e8cb4..955c9e5a73 100644 --- a/scripts/cli/src/interfaces/augment-api-query.ts +++ b/scripts/cli/src/interfaces/augment-api-query.ts @@ -1,133 +1,120 @@ // Auto-generated via `yarn polkadot-types-from-chain`, do not edit /* eslint-disable */ -import type { Bytes, Option, Vec, bool, u16, u32, u64 } from '@polkadot/types'; -import type { AnyNumber, ITuple, Observable } from '@polkadot/types/types'; -import type { UncleEntryItem } from '@polkadot/types/interfaces/authorship'; -import type { BabeAuthorityWeight, MaybeRandomness, NextConfigDescriptor, Randomness } from '@polkadot/types/interfaces/babe'; -import type { BalanceLock } from '@polkadot/types/interfaces/balances'; -import type { AuthorityId } from '@polkadot/types/interfaces/consensus'; -import type { Proposal } from '@polkadot/types/interfaces/democracy'; -import type { Vote } from '@polkadot/types/interfaces/elections'; -import type { SetId, StoredPendingChange, StoredState } from '@polkadot/types/interfaces/grandpa'; -import type { AuthIndex } from '@polkadot/types/interfaces/imOnline'; -import type { DeferredOffenceOf, Kind, OffenceDetails, OpaqueTimeSlot, ReportIdOf } from '@polkadot/types/interfaces/offences'; -import type { AccountId, AccountIndex, Balance, BalanceOf, BlockNumber, Call, Hash, KeyTypeId, Moment, Perbill, Releases, Slot, ValidatorId } from '@polkadot/types/interfaces/runtime'; -import type { Scheduled, TaskAddress } from '@polkadot/types/interfaces/scheduler'; -import type { Keys, SessionIndex } from '@polkadot/types/interfaces/session'; -import type { ActiveEraInfo, ElectionResult, ElectionScore, ElectionStatus, EraIndex, EraRewardPoints, Exposure, Forcing, Nominations, RewardDestination, SlashingSpans, SpanIndex, SpanRecord, StakingLedger, UnappliedSlash, ValidatorPrefs } from '@polkadot/types/interfaces/staking'; -import type { AccountInfo, ConsumedWeight, DigestOf, EventIndex, EventRecord, LastRuntimeUpgradeInfo, Phase } from '@polkadot/types/interfaces/system'; -import type { Multiplier } from '@polkadot/types/interfaces/txpayment'; -import type { AGId, AffirmationStatus, AgentGroup, AssetCompliance, AssetIdentifier, AssetName, AssetOwnershipRelation, Authorization, AuthorizationNonce, BallotMeta, BallotTimeRange, BallotVote, BridgeTxDetail, CADetails, CAId, CheckpointId, Claim1stKey, Claim2ndKey, ClassicTickerRegistration, CorporateAction, Counter, CustomAssetTypeId, DepositInfo, DidRecord, Distribution, Document, DocumentId, ExtrinsicPermissions, FundingRoundName, Fundraiser, FundraiserId, FundraiserName, IdentityClaim, IdentityId, InactiveMember, Instruction, InstructionId, ItnRewardStatus, Leg, LegId, LegStatus, LocalCAId, MaybeBlock, PermissionedIdentityPrefs, Pip, PipId, PipsMetadata, PolymeshVotes, PortfolioId, PortfolioName, PortfolioNumber, PosRatio, ProposalDetails, ProtocolOp, ScheduleId, ScopeId, SecurityToken, Signatory, SkippedCount, SlashingSwitch, SnapshotId, SnapshotMetadata, SnapshottedPip, StoredSchedule, Subsidy, TargetIdentities, Tax, Ticker, TickerRegistration, TickerRegistrationConfig, TransferManager, TrustedIssuer, Venue, VenueDetails, VenueId, Version, VotingResult } from 'polymesh-typegen/interfaces/default'; -import type { ApiTypes } from '@polkadot/api/types'; +import type { ApiTypes } from '@polkadot/api-base/types'; +import type { Bytes, Null, Option, U8aFixed, Vec, WrapperOpaque, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec'; +import type { AnyNumber, ITuple } from '@polkadot/types-codec/types'; +import type { AccountId32, Call, H256, Perbill, Permill } from '@polkadot/types/interfaces/runtime'; +import type { FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, PalletAssetAssetOwnershipRelation, PalletAssetClassicTickerRegistration, PalletAssetSecurityToken, PalletAssetTickerRegistration, PalletAssetTickerRegistrationConfig, PalletAuthorshipUncleEntryItem, PalletBalancesBalanceLock, PalletBridgeBridgeTxDetail, PalletCommitteePolymeshVotes, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsCaId, PalletCorporateActionsCorporateAction, PalletCorporateActionsDistribution, PalletCorporateActionsTargetIdentities, PalletGrandpaStoredPendingChange, PalletGrandpaStoredState, PalletIdentityClaim1stKey, PalletIdentityClaim2ndKey, PalletImOnlineBoundedOpaqueNetworkState, PalletImOnlineSr25519AppSr25519Public, PalletMultisigProposalDetails, PalletPipsDepositInfo, PalletPipsPip, PalletPipsPipsMetadata, PalletPipsSnapshotMetadata, PalletPipsSnapshottedPip, PalletPipsVote, PalletPipsVotingResult, PalletRelayerSubsidy, PalletRewardsItnRewardStatus, PalletSchedulerReleases, PalletSchedulerScheduledV2, PalletSettlementAffirmationStatus, PalletSettlementInstruction, PalletSettlementLeg, PalletSettlementLegStatus, PalletSettlementVenue, PalletStakingActiveEraInfo, PalletStakingElectionResult, PalletStakingElectionStatus, PalletStakingEraRewardPoints, PalletStakingExposure, PalletStakingForcing, PalletStakingNominations, PalletStakingPermissionedIdentityPrefs, PalletStakingReleases, PalletStakingRewardDestination, PalletStakingSlashingSlashingSpans, PalletStakingSlashingSpanRecord, PalletStakingSlashingSwitch, PalletStakingStakingLedger, PalletStakingUnappliedSlash, PalletStakingValidatorPrefs, PalletStoFundraiser, PalletTransactionPaymentReleases, PolymeshCommonUtilitiesCheckpointStoredSchedule, PolymeshCommonUtilitiesGroupInactiveMember, PolymeshCommonUtilitiesMaybeBlock, PolymeshCommonUtilitiesProtocolFeeProtocolOp, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAuthorization, PolymeshPrimitivesComplianceManagerAssetCompliance, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesIdentity, PolymeshPrimitivesIdentityClaim, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesStatisticsTransferManager, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesTicker, PolymeshRuntimeDevelopRuntimeSessionKeys, SpConsensusBabeAppPublic, SpConsensusBabeBabeEpochConfiguration, SpConsensusBabeDigestsNextConfigDescriptor, SpCoreCryptoKeyTypeId, SpRuntimeDigest, SpStakingOffenceOffenceDetails } from '@polkadot/types/lookup'; +import type { Observable } from '@polkadot/types/types'; -declare module '@polkadot/api/types/storage' { - export interface AugmentedQueries { +declare module '@polkadot/api-base/types/storage' { + export interface AugmentedQueries { asset: { /** * Store aggregate balance of those identities that has the same `ScopeId`. * (Ticker, ScopeId) => Balance. **/ - aggregateBalance: AugmentedQuery Observable, [Ticker, ScopeId]> & QueryableStorageEntry; + aggregateBalance: AugmentedQuery Observable, [PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityId]> & QueryableStorageEntry; /** * Documents attached to an Asset * (ticker, doc_id) -> document **/ - assetDocuments: AugmentedQuery Observable, [Ticker, DocumentId]> & QueryableStorageEntry; + assetDocuments: AugmentedQuery Observable, [PolymeshPrimitivesTicker, u32]> & QueryableStorageEntry; /** * Per-ticker document ID counter. * (ticker) -> doc_id **/ - assetDocumentsIdSequence: AugmentedQuery Observable, [Ticker]> & QueryableStorageEntry; + assetDocumentsIdSequence: AugmentedQuery Observable, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * Asset name of the token corresponding to the token ticker. * (ticker) -> `AssetName` **/ - assetNames: AugmentedQuery Observable, [Ticker]> & QueryableStorageEntry; + assetNames: AugmentedQuery Observable, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * Tickers and token owned by a user * (user, ticker) -> AssetOwnership **/ - assetOwnershipRelations: AugmentedQuery Observable, [IdentityId, Ticker]> & QueryableStorageEntry; + assetOwnershipRelations: AugmentedQuery Observable, [PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * The total asset ticker balance per identity. * (ticker, DID) -> Balance **/ - balanceOf: AugmentedQuery Observable, [Ticker, IdentityId]> & QueryableStorageEntry; + balanceOf: AugmentedQuery Observable, [PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityId]> & QueryableStorageEntry; /** * Balances get stored on the basis of the `ScopeId`. * Right now it is only helpful for the UI purposes but in future it can be used to do miracles on-chain. * (ScopeId, IdentityId) => Balance. **/ - balanceOfAtScope: AugmentedQuery Observable, [ScopeId, IdentityId]> & QueryableStorageEntry; + balanceOfAtScope: AugmentedQuery Observable, [PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]> & QueryableStorageEntry; /** * Ticker registration details on Polymath Classic / Ethereum. **/ - classicTickers: AugmentedQuery Observable>, [Ticker]> & QueryableStorageEntry; + classicTickers: AugmentedQuery Observable>, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * The next `AssetType::Custom` ID in the sequence. * * Numbers in the sequence start from 1 rather than 0. **/ - customTypeIdSequence: AugmentedQuery Observable, []> & QueryableStorageEntry; + customTypeIdSequence: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Maps custom asset type ids to the registered string contents. **/ - customTypes: AugmentedQuery Observable, [CustomAssetTypeId]> & QueryableStorageEntry; + customTypes: AugmentedQuery Observable, [u32]> & QueryableStorageEntry; /** * Inverse map of `CustomTypes`, from registered string contents to custom asset type ids. **/ - customTypesInverse: AugmentedQuery Observable, [Bytes]> & QueryableStorageEntry; + customTypesInverse: AugmentedQuery Observable, [Bytes]> & QueryableStorageEntry; /** * Decides whether investor uniqueness requirement is enforced for this asset. * `false` means that it is enforced. * * Ticker => bool. **/ - disableInvestorUniqueness: AugmentedQuery Observable, [Ticker]> & QueryableStorageEntry; + disableInvestorUniqueness: AugmentedQuery Observable, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * The set of frozen assets implemented as a membership map. * ticker -> bool **/ - frozen: AugmentedQuery Observable, [Ticker]> & QueryableStorageEntry; + frozen: AugmentedQuery Observable, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * The name of the current funding round. * ticker -> funding round **/ - fundingRound: AugmentedQuery Observable, [Ticker]> & QueryableStorageEntry; + fundingRound: AugmentedQuery Observable, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * A map of a ticker name and asset identifiers. **/ - identifiers: AugmentedQuery Observable>, [Ticker]> & QueryableStorageEntry; + identifiers: AugmentedQuery Observable>, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * The total balances of tokens issued in all recorded funding rounds. * (ticker, funding round) -> balance **/ - issuedInFundingRound: AugmentedQuery | [Ticker | string | Uint8Array, FundingRoundName | string]) => Observable, [ITuple<[Ticker, FundingRoundName]>]> & QueryableStorageEntry]>; + issuedInFundingRound: AugmentedQuery | [PolymeshPrimitivesTicker | string | Uint8Array, Bytes | string | Uint8Array]) => Observable, [ITuple<[PolymeshPrimitivesTicker, Bytes]>]> & QueryableStorageEntry]>; /** * Tracks the ScopeId of the identity for a given ticker. * (Ticker, IdentityId) => ScopeId. **/ - scopeIdOf: AugmentedQuery Observable, [Ticker, IdentityId]> & QueryableStorageEntry; + scopeIdOf: AugmentedQuery Observable, [PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityId]> & QueryableStorageEntry; /** * Storage version. **/ - storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; + storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Ticker registration config. * (ticker) -> TickerRegistrationConfig **/ - tickerConfig: AugmentedQuery Observable, []> & QueryableStorageEntry; + tickerConfig: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Ticker registration details. * (ticker) -> TickerRegistration **/ - tickers: AugmentedQuery Observable, [Ticker]> & QueryableStorageEntry; + tickers: AugmentedQuery Observable, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * Details of the token corresponding to the token ticker. * (ticker) -> SecurityToken details [returns SecurityToken struct] **/ - tokens: AugmentedQuery Observable, [Ticker]> & QueryableStorageEntry; + tokens: AugmentedQuery Observable, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * Generic query **/ @@ -137,7 +124,7 @@ declare module '@polkadot/api/types/storage' { /** * Author of current block. **/ - author: AugmentedQuery Observable>, []> & QueryableStorageEntry; + author: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Whether uncles were already set in this block. **/ @@ -145,7 +132,7 @@ declare module '@polkadot/api/types/storage' { /** * Uncles **/ - uncles: AugmentedQuery Observable>, []> & QueryableStorageEntry; + uncles: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Generic query **/ @@ -155,31 +142,45 @@ declare module '@polkadot/api/types/storage' { /** * Current epoch authorities. **/ - authorities: AugmentedQuery Observable>>, []> & QueryableStorageEntry; + authorities: AugmentedQuery Observable>>, []> & QueryableStorageEntry; /** - * Temporary value (cleared at block finalization) that includes the VRF output generated - * at this block. This field should always be populated during block processing unless + * This field should always be populated during block processing unless * secondary plain slots are enabled (which don't contain a VRF output). + * + * It is set in `on_initialize`, before it will contain the value from the last block. **/ - authorVrfRandomness: AugmentedQuery Observable, []> & QueryableStorageEntry; + authorVrfRandomness: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Current slot number. **/ - currentSlot: AugmentedQuery Observable, []> & QueryableStorageEntry; + currentSlot: AugmentedQuery Observable, []> & QueryableStorageEntry; + /** + * The configuration for the current epoch. Should never be `None` as it is initialized in + * genesis. + **/ + epochConfig: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Current epoch index. **/ epochIndex: AugmentedQuery Observable, []> & QueryableStorageEntry; + /** + * The block numbers when the last and current epoch have started, respectively `N-1` and + * `N`. + * NOTE: We track this is in order to annotate the block number when a given pool of + * entropy was fixed (i.e. it was known to chain observers). Since epochs are defined in + * slots, which may be skipped, the block numbers may not line up with the slot numbers. + **/ + epochStart: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * The slot at which the first epoch actually started. This is 0 * until the first block of the chain. **/ - genesisSlot: AugmentedQuery Observable, []> & QueryableStorageEntry; + genesisSlot: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Temporary value (cleared at block finalization) which is `Some` * if per-block initialization has already been called for current block. **/ - initialized: AugmentedQuery Observable>, []> & QueryableStorageEntry; + initialized: AugmentedQuery Observable>>, []> & QueryableStorageEntry; /** * How late the current block is compared to its parent. * @@ -187,19 +188,24 @@ declare module '@polkadot/api/types/storage' { * on block finalization. Querying this storage entry outside of block * execution context should always yield zero. **/ - lateness: AugmentedQuery Observable, []> & QueryableStorageEntry; + lateness: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Next epoch authorities. **/ - nextAuthorities: AugmentedQuery Observable>>, []> & QueryableStorageEntry; + nextAuthorities: AugmentedQuery Observable>>, []> & QueryableStorageEntry; /** - * Next epoch configuration, if changed. + * The configuration for the next epoch, `None` if the config will not change + * (you can fallback to `EpochConfig` instead in that case). **/ - nextEpochConfig: AugmentedQuery Observable>, []> & QueryableStorageEntry; + nextEpochConfig: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Next epoch randomness. **/ - nextRandomness: AugmentedQuery Observable, []> & QueryableStorageEntry; + nextRandomness: AugmentedQuery Observable, []> & QueryableStorageEntry; + /** + * Pending epoch configuration change that will be applied when the next epoch is enacted. + **/ + pendingEpochConfigChange: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * The epoch randomness for the *current* epoch. * @@ -212,7 +218,7 @@ declare module '@polkadot/api/types/storage' { * used where a number is needed that cannot have been chosen by an * adversary, for purposes such as public-coin zero-knowledge proofs. **/ - randomness: AugmentedQuery Observable, []> & QueryableStorageEntry; + randomness: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Randomness under construction. * @@ -228,7 +234,7 @@ declare module '@polkadot/api/types/storage' { /** * TWOX-NOTE: `SegmentIndex` is an increasing integer, so this is okay. **/ - underConstruction: AugmentedQuery Observable>, [u32]> & QueryableStorageEntry; + underConstruction: AugmentedQuery Observable>, [u32]> & QueryableStorageEntry; /** * Generic query **/ @@ -239,11 +245,11 @@ declare module '@polkadot/api/types/storage' { * Any liquidity locks on some account balances. * NOTE: Should only be accessed when setting, changing and freeing a lock. **/ - locks: AugmentedQuery Observable>, [AccountId]> & QueryableStorageEntry; + locks: AugmentedQuery Observable>, [AccountId32]> & QueryableStorageEntry; /** * The total units issued in the system. **/ - totalIssuance: AugmentedQuery Observable, []> & QueryableStorageEntry; + totalIssuance: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Generic query **/ @@ -253,31 +259,31 @@ declare module '@polkadot/api/types/storage' { /** * The admin key. **/ - admin: AugmentedQuery Observable, []> & QueryableStorageEntry; + admin: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * The maximum number of bridged POLYX per identity within a set interval of * blocks. Fields: POLYX amount and the block interval duration. **/ - bridgeLimit: AugmentedQuery Observable>, []> & QueryableStorageEntry; + bridgeLimit: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Identities not constrained by the bridge limit. **/ - bridgeLimitExempted: AugmentedQuery Observable, [IdentityId]> & QueryableStorageEntry; + bridgeLimitExempted: AugmentedQuery Observable, [PolymeshPrimitivesIdentityId]> & QueryableStorageEntry; /** * Details of bridge transactions identified with pairs of the recipient account and the * bridge transaction nonce. **/ - bridgeTxDetails: AugmentedQuery Observable, [AccountId, u32]> & QueryableStorageEntry; + bridgeTxDetails: AugmentedQuery Observable, [AccountId32, u32]> & QueryableStorageEntry; /** * The multisig account of the bridge controller. The genesis signers accept their * authorizations and are able to get their proposals delivered. The bridge creator * transfers some POLY to their identity. **/ - controller: AugmentedQuery Observable, []> & QueryableStorageEntry; + controller: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Freeze bridge admins. These accounts can only freeze the bridge. **/ - freezeAdmins: AugmentedQuery Observable, [AccountId]> & QueryableStorageEntry; + freezeAdmins: AugmentedQuery Observable, [AccountId32]> & QueryableStorageEntry; /** * Whether or not the bridge operation is frozen. **/ @@ -286,16 +292,16 @@ declare module '@polkadot/api/types/storage' { * Amount of POLYX bridged by the identity in last block interval. Fields: the bridged * amount and the last interval number. **/ - polyxBridged: AugmentedQuery Observable>, [IdentityId]> & QueryableStorageEntry; + polyxBridged: AugmentedQuery Observable>, [PolymeshPrimitivesIdentityId]> & QueryableStorageEntry; /** * Storage version. **/ - storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; + storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * The bridge transaction timelock period, in blocks, since the acceptance of the * transaction proposal during which the admin key can freeze the transaction. **/ - timelock: AugmentedQuery Observable, []> & QueryableStorageEntry; + timelock: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Generic query **/ @@ -307,17 +313,17 @@ declare module '@polkadot/api/types/storage' { * * (CAId) => Distribution **/ - distributions: AugmentedQuery Observable>, [CAId]> & QueryableStorageEntry; + distributions: AugmentedQuery Observable>, [PalletCorporateActionsCaId]> & QueryableStorageEntry; /** * Has an asset holder been paid yet? * * (CAId, DID) -> Was DID paid in the CAId? **/ - holderPaid: AugmentedQuery | [CAId | { ticker?: any; local_id?: any } | string | Uint8Array, IdentityId | string | Uint8Array]) => Observable, [ITuple<[CAId, IdentityId]>]> & QueryableStorageEntry]>; + holderPaid: AugmentedQuery | [PalletCorporateActionsCaId | { ticker?: any; localId?: any } | string | Uint8Array, PolymeshPrimitivesIdentityId | string | Uint8Array]) => Observable, [ITuple<[PalletCorporateActionsCaId, PolymeshPrimitivesIdentityId]>]> & QueryableStorageEntry]>; /** * Storage version. **/ - storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; + storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Generic query **/ @@ -327,7 +333,7 @@ declare module '@polkadot/api/types/storage' { /** * The current "active" membership, stored as an ordered Vec. **/ - activeMembers: AugmentedQuery Observable>, []> & QueryableStorageEntry; + activeMembers: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Limit of how many "active" members there can be. **/ @@ -335,7 +341,7 @@ declare module '@polkadot/api/types/storage' { /** * The current "inactive" membership, stored as an ordered Vec. **/ - inactiveMembers: AugmentedQuery Observable>, []> & QueryableStorageEntry; + inactiveMembers: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Generic query **/ @@ -347,31 +353,31 @@ declare module '@polkadot/api/types/storage' { * * (ticker, did, checkpoint ID) -> Balance of a DID at a checkpoint **/ - balance: AugmentedQuery | [Ticker | string | Uint8Array, CheckpointId | AnyNumber | Uint8Array], arg2: IdentityId | string | Uint8Array) => Observable, [ITuple<[Ticker, CheckpointId]>, IdentityId]> & QueryableStorageEntry, IdentityId]>; + balance: AugmentedQuery | [PolymeshPrimitivesTicker | string | Uint8Array, u64 | AnyNumber | Uint8Array], arg2: PolymeshPrimitivesIdentityId | string | Uint8Array) => Observable, [ITuple<[PolymeshPrimitivesTicker, u64]>, PolymeshPrimitivesIdentityId]> & QueryableStorageEntry, PolymeshPrimitivesIdentityId]>; /** * Checkpoints where a DID's balance was updated. * (ticker, did) -> [checkpoint ID where user balance changed] **/ - balanceUpdates: AugmentedQuery Observable>, [Ticker, IdentityId]> & QueryableStorageEntry; + balanceUpdates: AugmentedQuery Observable>, [PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityId]> & QueryableStorageEntry; /** * Checkpoints ID generator sequence. * ID of first checkpoint is 1 instead of 0. * * (ticker) -> no. of checkpoints **/ - checkpointIdSequence: AugmentedQuery Observable, [Ticker]> & QueryableStorageEntry; + checkpointIdSequence: AugmentedQuery Observable, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * Checkpoint schedule ID sequence for tickers. * * (ticker) -> schedule ID **/ - scheduleIdSequence: AugmentedQuery Observable, [Ticker]> & QueryableStorageEntry; + scheduleIdSequence: AugmentedQuery Observable, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * All the checkpoints a given schedule originated. * * (ticker, schedule ID) -> [checkpoint ID] **/ - schedulePoints: AugmentedQuery Observable>, [Ticker, ScheduleId]> & QueryableStorageEntry; + schedulePoints: AugmentedQuery Observable>, [PolymeshPrimitivesTicker, u64]> & QueryableStorageEntry; /** * How many "strong" references are there to a given `ScheduleId`? * @@ -382,13 +388,13 @@ declare module '@polkadot/api/types/storage' { * * (ticker, schedule ID) -> strong ref count **/ - scheduleRefCount: AugmentedQuery Observable, [Ticker, ScheduleId]> & QueryableStorageEntry; + scheduleRefCount: AugmentedQuery Observable, [PolymeshPrimitivesTicker, u64]> & QueryableStorageEntry; /** * Checkpoint schedules for tickers. * * (ticker) -> [schedule] **/ - schedules: AugmentedQuery Observable>, [Ticker]> & QueryableStorageEntry; + schedules: AugmentedQuery Observable>, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * The maximum complexity allowed for an arbitrary ticker's schedule set * (i.e. `Schedules` storage item below). @@ -397,7 +403,7 @@ declare module '@polkadot/api/types/storage' { /** * Storage version. **/ - storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; + storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Checkpoint timestamps. * @@ -406,13 +412,13 @@ declare module '@polkadot/api/types/storage' { * * (ticker) -> (checkpoint ID) -> checkpoint timestamp **/ - timestamps: AugmentedQuery Observable, [Ticker, CheckpointId]> & QueryableStorageEntry; + timestamps: AugmentedQuery Observable, [PolymeshPrimitivesTicker, u64]> & QueryableStorageEntry; /** * Total supply of the token at the checkpoint. * * (ticker, checkpointId) -> total supply at given checkpoint **/ - totalSupply: AugmentedQuery Observable, [Ticker, CheckpointId]> & QueryableStorageEntry; + totalSupply: AugmentedQuery Observable, [PolymeshPrimitivesTicker, u64]> & QueryableStorageEntry; /** * Generic query **/ @@ -422,7 +428,7 @@ declare module '@polkadot/api/types/storage' { /** * The current "active" membership, stored as an ordered Vec. **/ - activeMembers: AugmentedQuery Observable>, []> & QueryableStorageEntry; + activeMembers: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Limit of how many "active" members there can be. **/ @@ -430,7 +436,7 @@ declare module '@polkadot/api/types/storage' { /** * The current "inactive" membership, stored as an ordered Vec. **/ - inactiveMembers: AugmentedQuery Observable>, []> & QueryableStorageEntry; + inactiveMembers: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Generic query **/ @@ -440,15 +446,15 @@ declare module '@polkadot/api/types/storage' { /** * Asset compliance for a ticker (Ticker -> AssetCompliance) **/ - assetCompliances: AugmentedQuery Observable, [Ticker]> & QueryableStorageEntry; + assetCompliances: AugmentedQuery Observable, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * Storage version. **/ - storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; + storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * List of trusted claim issuer Ticker -> Issuer Identity **/ - trustedClaimIssuer: AugmentedQuery Observable>, [Ticker]> & QueryableStorageEntry; + trustedClaimIssuer: AugmentedQuery Observable>, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * Generic query **/ @@ -462,12 +468,12 @@ declare module '@polkadot/api/types/storage' { * The `CorporateActions` map stores `Ticker => LocalId => The CA`, * so we can infer `Ticker => CAId`. Therefore, we don't need a double map. **/ - caDocLink: AugmentedQuery Observable>, [CAId]> & QueryableStorageEntry; + caDocLink: AugmentedQuery Observable>, [PalletCorporateActionsCaId]> & QueryableStorageEntry; /** * The next per-`Ticker` CA ID in the sequence. * The full ID is defined as a combination of `Ticker` and a number in this sequence. **/ - caIdSequence: AugmentedQuery Observable, [Ticker]> & QueryableStorageEntry; + caIdSequence: AugmentedQuery Observable, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * All recorded CAs thus far. * Only generic information is stored here. @@ -475,14 +481,14 @@ declare module '@polkadot/api/types/storage' { * * (ticker => local ID => the corporate action) **/ - corporateActions: AugmentedQuery Observable>, [Ticker, LocalCAId]> & QueryableStorageEntry; + corporateActions: AugmentedQuery Observable>, [PolymeshPrimitivesTicker, u32]> & QueryableStorageEntry; /** * The identities targeted by default for CAs for this ticker, * either to be excluded or included. * * (ticker => target identities) **/ - defaultTargetIdentities: AugmentedQuery Observable, [Ticker]> & QueryableStorageEntry; + defaultTargetIdentities: AugmentedQuery Observable, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * The default amount of tax to withhold ("withholding tax", WT) for this ticker when distributing dividends. * @@ -493,19 +499,19 @@ declare module '@polkadot/api/types/storage' { * * (ticker => % to withhold) **/ - defaultWithholdingTax: AugmentedQuery Observable, [Ticker]> & QueryableStorageEntry; + defaultWithholdingTax: AugmentedQuery Observable, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * Associates details in free-form text with a CA by its ID. * (CAId => CADetails) **/ - details: AugmentedQuery Observable, [CAId]> & QueryableStorageEntry; + details: AugmentedQuery Observable, [PalletCorporateActionsCaId]> & QueryableStorageEntry; /** * The amount of tax to withhold ("withholding tax", WT) for a certain ticker x DID. * If an entry exists for a certain DID, it overrides the default in `DefaultWithholdingTax`. * * (ticker => [(did, % to withhold)] **/ - didWithholdingTax: AugmentedQuery Observable>>, [Ticker]> & QueryableStorageEntry; + didWithholdingTax: AugmentedQuery Observable>>, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * Determines the maximum number of bytes that the free-form `details` of a CA can store. * @@ -519,7 +525,7 @@ declare module '@polkadot/api/types/storage' { /** * Storage version. **/ - storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; + storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Generic query **/ @@ -531,7 +537,7 @@ declare module '@polkadot/api/types/storage' { * * (CAId) => BallotMeta **/ - metas: AugmentedQuery Observable>, [CAId]> & QueryableStorageEntry; + metas: AugmentedQuery Observable>, [PalletCorporateActionsCaId]> & QueryableStorageEntry; /** * Stores how many choices there are in each motion. * @@ -543,14 +549,14 @@ declare module '@polkadot/api/types/storage' { * * (CAId) => Number of choices in each motion. **/ - motionNumChoices: AugmentedQuery Observable>, [CAId]> & QueryableStorageEntry; + motionNumChoices: AugmentedQuery Observable>, [PalletCorporateActionsCaId]> & QueryableStorageEntry; /** * Is ranked choice voting (RCV) enabled for this ballot? * For an understanding of how RCV is handled, see note on `BallotVote`'s `fallback` field. * * (CAId) => bool **/ - rcv: AugmentedQuery Observable, [CAId]> & QueryableStorageEntry; + rcv: AugmentedQuery Observable, [PalletCorporateActionsCaId]> & QueryableStorageEntry; /** * Stores the total vote tally on each choice. * @@ -560,14 +566,14 @@ declare module '@polkadot/api/types/storage' { * * (CAId) => [current vote weights] **/ - results: AugmentedQuery Observable>, [CAId]> & QueryableStorageEntry; + results: AugmentedQuery Observable>, [PalletCorporateActionsCaId]> & QueryableStorageEntry; /** * Time details of a corporate ballot associated with a CA. * The timestamps denote when voting starts and stops. * * (CAId) => BallotTimeRange **/ - timeRanges: AugmentedQuery Observable>, [CAId]> & QueryableStorageEntry; + timeRanges: AugmentedQuery Observable>, [PalletCorporateActionsCaId]> & QueryableStorageEntry; /** * Stores each DID's votes in a given ballot. * See the documentation of `BallotVote` for notes on semantics. @@ -576,7 +582,7 @@ declare module '@polkadot/api/types/storage' { * * User must enter 0 vote weight if they don't want to vote for a choice. **/ - votes: AugmentedQuery Observable>, [CAId, IdentityId]> & QueryableStorageEntry; + votes: AugmentedQuery Observable>, [PalletCorporateActionsCaId, PolymeshPrimitivesIdentityId]> & QueryableStorageEntry; /** * Generic query **/ @@ -586,26 +592,26 @@ declare module '@polkadot/api/types/storage' { /** * Maps an agent (`IdentityId`) to all all `Ticker`s they belong to, if any. **/ - agentOf: AugmentedQuery Observable>, [IdentityId, Ticker]> & QueryableStorageEntry; + agentOf: AugmentedQuery Observable, [PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * The next per-`Ticker` AG ID in the sequence. * * The full ID is defined as a combination of `Ticker` and a number in this sequence, * which starts from 1, rather than 0. **/ - agIdSequence: AugmentedQuery Observable, [Ticker]> & QueryableStorageEntry; + agIdSequence: AugmentedQuery Observable, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * Maps agents (`IdentityId`) for a `Ticker` to what AG they belong to, if any. **/ - groupOfAgent: AugmentedQuery Observable>, [Ticker, IdentityId]> & QueryableStorageEntry; + groupOfAgent: AugmentedQuery Observable>, [PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityId]> & QueryableStorageEntry; /** * For custom AGs of a `Ticker`, maps to what permissions an agent in that AG would have. **/ - groupPermissions: AugmentedQuery Observable>, [Ticker, AGId]> & QueryableStorageEntry; + groupPermissions: AugmentedQuery Observable>, [PolymeshPrimitivesTicker, u32]> & QueryableStorageEntry; /** * Maps a `Ticker` to the number of `Full` agents for it. **/ - numFullAgents: AugmentedQuery Observable, [Ticker]> & QueryableStorageEntry; + numFullAgents: AugmentedQuery Observable, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * Generic query **/ @@ -616,30 +622,30 @@ declare module '@polkadot/api/types/storage' { * The number of changes (both in terms of keys and underlying economic responsibilities) * in the "set" of Grandpa validators from genesis. **/ - currentSetId: AugmentedQuery Observable, []> & QueryableStorageEntry; + currentSetId: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * next block number where we can force a change. **/ - nextForced: AugmentedQuery Observable>, []> & QueryableStorageEntry; + nextForced: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Pending change: (signaled at, scheduled change). **/ - pendingChange: AugmentedQuery Observable>, []> & QueryableStorageEntry; + pendingChange: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * A mapping from grandpa set ID to the index of the *most recent* session for which its * members were responsible. * * TWOX-NOTE: `SetId` is not under user control. **/ - setIdSession: AugmentedQuery Observable>, [SetId]> & QueryableStorageEntry; + setIdSession: AugmentedQuery Observable>, [u64]> & QueryableStorageEntry; /** * `true` if we are currently stalled. **/ - stalled: AugmentedQuery Observable>>, []> & QueryableStorageEntry; + stalled: AugmentedQuery Observable>>, []> & QueryableStorageEntry; /** * State of the current authority set. **/ - state: AugmentedQuery Observable, []> & QueryableStorageEntry; + state: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Generic query **/ @@ -655,15 +661,15 @@ declare module '@polkadot/api/types/storage' { * * Relayer: For `user_key` and `paying_key` * **/ - accountKeyRefCount: AugmentedQuery Observable, [AccountId]> & QueryableStorageEntry; + accountKeyRefCount: AugmentedQuery Observable, [AccountId32]> & QueryableStorageEntry; /** * All authorizations that an identity/key has **/ - authorizations: AugmentedQuery Observable>, [Signatory, u64]> & QueryableStorageEntry; + authorizations: AugmentedQuery Observable>, [PolymeshPrimitivesSecondaryKeySignatory, u64]> & QueryableStorageEntry; /** * All authorizations that an identity has given. (Authorizer, auth_id -> authorized) **/ - authorizationsGiven: AugmentedQuery Observable, [IdentityId, u64]> & QueryableStorageEntry; + authorizationsGiven: AugmentedQuery Observable, [PolymeshPrimitivesIdentityId, u64]> & QueryableStorageEntry; /** * Obsoleted storage variable superceded by `CddAuthForPrimaryKeyRotation`. It is kept here * for the purpose of storage migration. @@ -677,24 +683,24 @@ declare module '@polkadot/api/types/storage' { /** * (Target ID, claim type) (issuer,scope) -> Associated claims **/ - claims: AugmentedQuery Observable, [Claim1stKey, Claim2ndKey]> & QueryableStorageEntry; + claims: AugmentedQuery Observable, [PalletIdentityClaim1stKey, PalletIdentityClaim2ndKey]> & QueryableStorageEntry; /** * It stores the current identity for current transaction. **/ - currentDid: AugmentedQuery Observable>, []> & QueryableStorageEntry; + currentDid: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * It stores the current gas fee payer for the current transaction **/ - currentPayer: AugmentedQuery Observable>, []> & QueryableStorageEntry; + currentPayer: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * DID -> identity info **/ - didRecords: AugmentedQuery Observable, [IdentityId]> & QueryableStorageEntry; + didRecords: AugmentedQuery Observable, [PolymeshPrimitivesIdentityId]> & QueryableStorageEntry; /** * DID -> bool that indicates if secondary keys are frozen. **/ - isDidFrozen: AugmentedQuery Observable, [IdentityId]> & QueryableStorageEntry; - keyToIdentityIds: AugmentedQuery Observable, [AccountId]> & QueryableStorageEntry; + isDidFrozen: AugmentedQuery Observable, [PolymeshPrimitivesIdentityId]> & QueryableStorageEntry; + keyToIdentityIds: AugmentedQuery Observable, [AccountId32]> & QueryableStorageEntry; /** * Nonce to ensure unique actions. starts from 1. **/ @@ -702,11 +708,11 @@ declare module '@polkadot/api/types/storage' { /** * Authorization nonce per Identity. Initially is 0. **/ - offChainAuthorizationNonce: AugmentedQuery Observable, [IdentityId]> & QueryableStorageEntry; + offChainAuthorizationNonce: AugmentedQuery Observable, [PolymeshPrimitivesIdentityId]> & QueryableStorageEntry; /** * Storage version. **/ - storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; + storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Generic query **/ @@ -717,25 +723,30 @@ declare module '@polkadot/api/types/storage' { * For each session index, we keep a mapping of `ValidatorId` to the * number of blocks authored by the given authority. **/ - authoredBlocks: AugmentedQuery Observable, [SessionIndex, ValidatorId]> & QueryableStorageEntry; + authoredBlocks: AugmentedQuery Observable, [u32, AccountId32]> & QueryableStorageEntry; /** - * The block number after which it's ok to send heartbeats in current session. + * The block number after which it's ok to send heartbeats in the 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. * - * 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. + * This value will only be used as a fallback if we fail to get a proper session + * progress estimate from `NextSessionRotation`, as those estimates should be + * more accurate then the value we calculate for `HeartbeatAfter`. **/ - heartbeatAfter: AugmentedQuery Observable, []> & QueryableStorageEntry; + heartbeatAfter: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * The current set of keys that may issue a heartbeat. **/ - keys: AugmentedQuery Observable>, []> & QueryableStorageEntry; + keys: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** - * For each session index, we keep a mapping of `AuthIndex` to - * `offchain::OpaqueNetworkState`. + * For each session index, we keep a mapping of `SessionIndex` and `AuthIndex` to + * `WrapperOpaque`. **/ - receivedHeartbeats: AugmentedQuery Observable>, [SessionIndex, AuthIndex]> & QueryableStorageEntry; + receivedHeartbeats: AugmentedQuery Observable>>, [u32, u32]> & QueryableStorageEntry; /** * Generic query **/ @@ -745,7 +756,7 @@ declare module '@polkadot/api/types/storage' { /** * The lookup from index to account. **/ - accounts: AugmentedQuery Observable>>, [AccountIndex]> & QueryableStorageEntry; + accounts: AugmentedQuery Observable>>, [u32]> & QueryableStorageEntry; /** * Generic query **/ @@ -755,7 +766,7 @@ declare module '@polkadot/api/types/storage' { /** * Maps a multisig signer key to a multisig address. **/ - keyToMultiSig: AugmentedQuery Observable, [AccountId]> & QueryableStorageEntry; + keyToMultiSig: AugmentedQuery Observable, [AccountId32]> & QueryableStorageEntry; /** * Nonce to ensure unique MultiSig addresses are generated; starts from 1. **/ @@ -763,35 +774,35 @@ declare module '@polkadot/api/types/storage' { /** * Signers of a multisig. (multisig, signer) => signer. **/ - multiSigSigners: AugmentedQuery Observable, [AccountId, Signatory]> & QueryableStorageEntry; + multiSigSigners: AugmentedQuery Observable, [AccountId32, PolymeshPrimitivesSecondaryKeySignatory]> & QueryableStorageEntry; /** * Confirmations required before processing a multisig tx. **/ - multiSigSignsRequired: AugmentedQuery Observable, [AccountId]> & QueryableStorageEntry; + multiSigSignsRequired: AugmentedQuery Observable, [AccountId32]> & QueryableStorageEntry; /** * Maps a multisig account to its identity. **/ - multiSigToIdentity: AugmentedQuery Observable, [AccountId]> & QueryableStorageEntry; + multiSigToIdentity: AugmentedQuery Observable, [AccountId32]> & QueryableStorageEntry; /** * Number of transactions proposed in a multisig. Used as tx id; starts from 0. **/ - multiSigTxDone: AugmentedQuery Observable, [AccountId]> & QueryableStorageEntry; + multiSigTxDone: AugmentedQuery Observable, [AccountId32]> & QueryableStorageEntry; /** * Number of approved/accepted signers of a multisig. **/ - numberOfSigners: AugmentedQuery Observable, [AccountId]> & QueryableStorageEntry; + numberOfSigners: AugmentedQuery Observable, [AccountId32]> & QueryableStorageEntry; /** * Details of a multisig proposal **/ - proposalDetail: AugmentedQuery | [AccountId | string | Uint8Array, u64 | AnyNumber | Uint8Array]) => Observable, [ITuple<[AccountId, u64]>]> & QueryableStorageEntry]>; + proposalDetail: AugmentedQuery | [AccountId32 | string | Uint8Array, u64 | AnyNumber | Uint8Array]) => Observable, [ITuple<[AccountId32, u64]>]> & QueryableStorageEntry]>; /** * A mapping of proposals to their IDs. **/ - proposalIds: AugmentedQuery Observable>, [AccountId, Proposal]> & QueryableStorageEntry; + proposalIds: AugmentedQuery Observable>, [AccountId32, Call]> & QueryableStorageEntry; /** * Proposals presented for voting to a multisig (multisig, proposal id) => Option. **/ - proposals: AugmentedQuery | [AccountId | string | Uint8Array, u64 | AnyNumber | Uint8Array]) => Observable>, [ITuple<[AccountId, u64]>]> & QueryableStorageEntry]>; + proposals: AugmentedQuery | [AccountId32 | string | Uint8Array, u64 | AnyNumber | Uint8Array]) => Observable>, [ITuple<[AccountId32, u64]>]> & QueryableStorageEntry]>; /** * The last transaction version, used for `on_runtime_upgrade`. **/ @@ -799,7 +810,7 @@ declare module '@polkadot/api/types/storage' { /** * Individual multisig signer votes. (multi sig, signer, proposal) => vote. **/ - votes: AugmentedQuery | [AccountId | string | Uint8Array, Signatory | { Identity: any } | { Account: any } | string | Uint8Array, u64 | AnyNumber | Uint8Array]) => Observable, [ITuple<[AccountId, Signatory, u64]>]> & QueryableStorageEntry]>; + votes: AugmentedQuery | [AccountId32 | string | Uint8Array, PolymeshPrimitivesSecondaryKeySignatory | { Identity: any } | { Account: any } | string | Uint8Array, u64 | AnyNumber | Uint8Array]) => Observable, [ITuple<[AccountId32, PolymeshPrimitivesSecondaryKeySignatory, u64]>]> & QueryableStorageEntry]>; /** * Generic query **/ @@ -809,16 +820,11 @@ declare module '@polkadot/api/types/storage' { /** * A vector of reports of the same kind that happened at the same time slot. **/ - concurrentReportsIndex: AugmentedQuery Observable>, [Kind, OpaqueTimeSlot]> & QueryableStorageEntry; - /** - * Deferred reports that have been rejected by the offence handler and need to be submitted - * at a later time. - **/ - deferredOffences: AugmentedQuery Observable>, []> & QueryableStorageEntry; + concurrentReportsIndex: AugmentedQuery Observable>, [U8aFixed, Bytes]> & QueryableStorageEntry; /** * The primary structure that holds all offence records keyed by report identifiers. **/ - reports: AugmentedQuery Observable>, [ReportIdOf]> & QueryableStorageEntry; + reports: AugmentedQuery Observable>, [H256]> & QueryableStorageEntry; /** * Enumerates all reports of a kind along with the time they happened. * @@ -827,7 +833,7 @@ declare module '@polkadot/api/types/storage' { * 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, [Kind]> & QueryableStorageEntry; + reportsByKindIndex: AugmentedQuery Observable, [U8aFixed]> & QueryableStorageEntry; /** * Generic query **/ @@ -847,16 +853,16 @@ declare module '@polkadot/api/types/storage' { * All existing PIPs where the proposer is a committee. * This list is a cache of all ids in `Proposals` with `Proposer::Committee(_)`. **/ - committeePips: AugmentedQuery Observable>, []> & QueryableStorageEntry; + committeePips: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Default enactment period that will be use after a proposal is accepted by GC. **/ - defaultEnactmentPeriod: AugmentedQuery Observable, []> & QueryableStorageEntry; + defaultEnactmentPeriod: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Those who have locked a deposit. * proposal (id, proposer) -> deposit **/ - deposits: AugmentedQuery Observable, [PipId, AccountId]> & QueryableStorageEntry; + deposits: AugmentedQuery Observable, [u32, AccountId32]> & QueryableStorageEntry; /** * A live priority queue (lowest priority at index 0) * of pending PIPs up to the active limit. @@ -865,52 +871,52 @@ declare module '@polkadot/api/types/storage' { * Unlike `SnapshotQueue`, this queue is live, getting updated with each vote cast. * The snapshot is therefore essentially a point-in-time clone of this queue. **/ - liveQueue: AugmentedQuery Observable>, []> & QueryableStorageEntry; + liveQueue: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Maximum times a PIP can be skipped before triggering `CannotSkipPip` in `enact_snapshot_results`. **/ - maxPipSkipCount: AugmentedQuery Observable, []> & QueryableStorageEntry; + maxPipSkipCount: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * The minimum amount to be used as a deposit for community PIP creation. **/ - minimumProposalDeposit: AugmentedQuery Observable, []> & QueryableStorageEntry; + minimumProposalDeposit: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * How many blocks will it take, after a `Pending` PIP expires, * assuming it has not transitioned to another `ProposalState`? **/ - pendingPipExpiry: AugmentedQuery Observable, []> & QueryableStorageEntry; + pendingPipExpiry: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Proposals so far. id can be used to keep track of PIPs off-chain. **/ - pipIdSequence: AugmentedQuery Observable, []> & QueryableStorageEntry; + pipIdSequence: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * The number of times a certain PIP has been skipped. * Once a (configurable) threshhold is exceeded, a PIP cannot be skipped again. **/ - pipSkipCount: AugmentedQuery Observable, [PipId]> & QueryableStorageEntry; + pipSkipCount: AugmentedQuery Observable, [u32]> & QueryableStorageEntry; /** * Maps PIPs to the block at which they will be executed, if any. **/ - pipToSchedule: AugmentedQuery Observable>, [PipId]> & QueryableStorageEntry; + pipToSchedule: AugmentedQuery Observable>, [u32]> & QueryableStorageEntry; /** * The metadata of the active proposals. **/ - proposalMetadata: AugmentedQuery Observable>, [PipId]> & QueryableStorageEntry; + proposalMetadata: AugmentedQuery Observable>, [u32]> & QueryableStorageEntry; /** * PolymeshVotes on a given proposal, if it is ongoing. * proposal id -> vote count **/ - proposalResult: AugmentedQuery Observable, [PipId]> & QueryableStorageEntry; + proposalResult: AugmentedQuery Observable, [u32]> & QueryableStorageEntry; /** * Actual proposal for a given id, if it's current. * proposal id -> proposal **/ - proposals: AugmentedQuery Observable>, [PipId]> & QueryableStorageEntry; + proposals: AugmentedQuery Observable>, [u32]> & QueryableStorageEntry; /** * Votes per Proposal and account. Used to avoid double vote issue. * (proposal id, account) -> Vote **/ - proposalVotes: AugmentedQuery Observable>, [PipId, AccountId]> & QueryableStorageEntry; + proposalVotes: AugmentedQuery Observable>>, [u32, AccountId32]> & QueryableStorageEntry; /** * Determines whether historical PIP data is persisted or removed **/ @@ -918,11 +924,11 @@ declare module '@polkadot/api/types/storage' { /** * Snapshots so far. id can be used to keep track of snapshots off-chain. **/ - snapshotIdSequence: AugmentedQuery Observable, []> & QueryableStorageEntry; + snapshotIdSequence: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * The metadata of the snapshot, if there is one. **/ - snapshotMeta: AugmentedQuery Observable>, []> & QueryableStorageEntry; + snapshotMeta: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * The priority queue (lowest priority at index 0) of PIPs at the point of snapshotting. * Priority is defined by the `weight` in the `SnapshottedPip`. @@ -930,8 +936,8 @@ declare module '@polkadot/api/types/storage' { * A queued PIP can be skipped. Doing so bumps the `pip_skip_count`. * Once a (configurable) threshhold is exceeded, a PIP cannot be skipped again. **/ - snapshotQueue: AugmentedQuery Observable>, []> & QueryableStorageEntry; - storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; + snapshotQueue: AugmentedQuery Observable>, []> & QueryableStorageEntry; + storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Generic query **/ @@ -941,11 +947,11 @@ declare module '@polkadot/api/types/storage' { /** * Time after which a proposal will expire. **/ - expiresAfter: AugmentedQuery Observable, []> & QueryableStorageEntry; + expiresAfter: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * The current members of the committee. **/ - members: AugmentedQuery Observable>, []> & QueryableStorageEntry; + members: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Proposals so far. **/ @@ -953,19 +959,19 @@ declare module '@polkadot/api/types/storage' { /** * Actual proposal for a given hash. **/ - proposalOf: AugmentedQuery Observable>, [Hash]> & QueryableStorageEntry; + proposalOf: AugmentedQuery Observable>, [H256]> & QueryableStorageEntry; /** * The hashes of the active proposals. **/ - proposals: AugmentedQuery Observable>, []> & QueryableStorageEntry; + proposals: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Release coordinator. **/ - releaseCoordinator: AugmentedQuery Observable>, []> & QueryableStorageEntry; + releaseCoordinator: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Storage version. **/ - storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; + storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Vote threshold for an approval. **/ @@ -973,7 +979,7 @@ declare module '@polkadot/api/types/storage' { /** * PolymeshVotes on a given proposal, if it is ongoing. **/ - voting: AugmentedQuery Observable>, [Hash]> & QueryableStorageEntry; + voting: AugmentedQuery Observable>, [H256]> & QueryableStorageEntry; /** * Generic query **/ @@ -984,44 +990,44 @@ declare module '@polkadot/api/types/storage' { * Inverse map of `Portfolios` used to ensure bijectivitiy, * and uniqueness of names in `Portfolios`. **/ - nameToNumber: AugmentedQuery Observable, [IdentityId, PortfolioName]> & QueryableStorageEntry; + nameToNumber: AugmentedQuery Observable, [PolymeshPrimitivesIdentityId, Bytes]> & QueryableStorageEntry; /** * The next portfolio sequence number of an identity. **/ - nextPortfolioNumber: AugmentedQuery Observable, [IdentityId]> & QueryableStorageEntry; + nextPortfolioNumber: AugmentedQuery Observable, [PolymeshPrimitivesIdentityId]> & QueryableStorageEntry; /** * The asset balances of portfolios. **/ - portfolioAssetBalances: AugmentedQuery Observable, [PortfolioId, Ticker]> & QueryableStorageEntry; + portfolioAssetBalances: AugmentedQuery Observable, [PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * How many assets with non-zero balance this portfolio contains. **/ - portfolioAssetCount: AugmentedQuery Observable, [PortfolioId]> & QueryableStorageEntry; + portfolioAssetCount: AugmentedQuery Observable, [PolymeshPrimitivesIdentityIdPortfolioId]> & QueryableStorageEntry; /** * The custodian of a particular portfolio. None implies that the identity owner is the custodian. **/ - portfolioCustodian: AugmentedQuery Observable>, [PortfolioId]> & QueryableStorageEntry; + portfolioCustodian: AugmentedQuery Observable>, [PolymeshPrimitivesIdentityIdPortfolioId]> & QueryableStorageEntry; /** * Amount of assets locked in a portfolio. * These assets show up in portfolio balance but can not be transferred away. **/ - portfolioLockedAssets: AugmentedQuery Observable, [PortfolioId, Ticker]> & QueryableStorageEntry; + portfolioLockedAssets: AugmentedQuery Observable, [PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * The set of existing portfolios with their names. If a certain pair of a DID and * portfolio number maps to `None` then such a portfolio doesn't exist. Conversely, if a * pair maps to `Some(name)` then such a portfolio exists and is called `name`. **/ - portfolios: AugmentedQuery Observable, [IdentityId, PortfolioNumber]> & QueryableStorageEntry; + portfolios: AugmentedQuery Observable, [PolymeshPrimitivesIdentityId, u64]> & QueryableStorageEntry; /** * Tracks all the portfolios in custody of a particular identity. Only used by the UIs. * When `true` is stored as the value for a given `(did, pid)`, it means that `pid` is in custody of `did`. * `false` values are never explicitly stored in the map, and are instead inferred by the absence of a key. **/ - portfoliosInCustody: AugmentedQuery Observable, [IdentityId, PortfolioId]> & QueryableStorageEntry; + portfoliosInCustody: AugmentedQuery Observable, [PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId]> & QueryableStorageEntry; /** * Storage version. **/ - storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; + storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Generic query **/ @@ -1031,11 +1037,11 @@ declare module '@polkadot/api/types/storage' { /** * The mapping of operation names to the base fees of those operations. **/ - baseFees: AugmentedQuery Observable, [ProtocolOp]> & QueryableStorageEntry; + baseFees: AugmentedQuery Observable, [PolymeshCommonUtilitiesProtocolFeeProtocolOp]> & QueryableStorageEntry; /** * The fee coefficient as a positive rational (numerator, denominator). **/ - coefficient: AugmentedQuery Observable, []> & QueryableStorageEntry; + coefficient: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Generic query **/ @@ -1047,7 +1053,7 @@ declare module '@polkadot/api/types/storage' { * is arranged as a ring buffer with `block_number % 81` being the index into the `Vec` of * the oldest hash. **/ - randomMaterial: AugmentedQuery Observable>, []> & QueryableStorageEntry; + randomMaterial: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Generic query **/ @@ -1062,7 +1068,7 @@ declare module '@polkadot/api/types/storage' { * a key needs to call `remove_paying_key` to remove the current subsidy, * before they can accept a new subsidiser. **/ - subsidies: AugmentedQuery Observable>, [AccountId]> & QueryableStorageEntry; + subsidies: AugmentedQuery Observable>, [AccountId32]> & QueryableStorageEntry; /** * Generic query **/ @@ -1072,7 +1078,7 @@ declare module '@polkadot/api/types/storage' { /** * Map of (Itn Address `AccountId`) -> (Reward `ItnRewardStatus`). **/ - itnRewards: AugmentedQuery Observable>, [AccountId]> & QueryableStorageEntry; + itnRewards: AugmentedQuery Observable>, [AccountId32]> & QueryableStorageEntry; /** * Generic query **/ @@ -1082,17 +1088,17 @@ declare module '@polkadot/api/types/storage' { /** * Items to be executed, indexed by the block number that they should be executed on. **/ - agenda: AugmentedQuery Observable>>, [BlockNumber]> & QueryableStorageEntry; + agenda: AugmentedQuery Observable>>, [u32]> & QueryableStorageEntry; /** * Lookup from identity to the block number and index of the task. **/ - lookup: AugmentedQuery Observable>, [Bytes]> & QueryableStorageEntry; + lookup: AugmentedQuery Observable>>, [Bytes]> & QueryableStorageEntry; /** * Storage version of the pallet. * * New networks start with last version. **/ - storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; + storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Generic query **/ @@ -1102,21 +1108,23 @@ declare module '@polkadot/api/types/storage' { /** * Current index of the session. **/ - currentIndex: AugmentedQuery Observable, []> & QueryableStorageEntry; + currentIndex: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Indices of disabled validators. * - * The set is cleared when `on_session_ending` returns a new set of identities. + * The vec is always kept sorted so that we can find whether a given validator is + * disabled using binary search. It gets cleared when `on_session_ending` returns + * a new set of identities. **/ disabledValidators: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * The owner of a key. The key is the `KeyTypeId` + the encoded key. **/ - keyOwner: AugmentedQuery | [KeyTypeId | AnyNumber | Uint8Array, Bytes | string | Uint8Array]) => Observable>, [ITuple<[KeyTypeId, Bytes]>]> & QueryableStorageEntry]>; + keyOwner: AugmentedQuery | [SpCoreCryptoKeyTypeId | string | Uint8Array, Bytes | string | Uint8Array]) => Observable>, [ITuple<[SpCoreCryptoKeyTypeId, Bytes]>]> & QueryableStorageEntry]>; /** * The next session keys for a validator. **/ - nextKeys: AugmentedQuery Observable>, [ValidatorId]> & QueryableStorageEntry; + nextKeys: AugmentedQuery Observable>, [AccountId32]> & QueryableStorageEntry; /** * True if the underlying economic identities or weighting behind the validators * has changed in the queued validator set. @@ -1126,11 +1134,11 @@ declare module '@polkadot/api/types/storage' { * 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>>, []> & QueryableStorageEntry; + queuedKeys: AugmentedQuery Observable>>, []> & QueryableStorageEntry; /** * The current set of validators. **/ - validators: AugmentedQuery Observable>, []> & QueryableStorageEntry; + validators: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Generic query **/ @@ -1140,77 +1148,77 @@ declare module '@polkadot/api/types/storage' { /** * Tracks affirmations received for an instruction. (instruction_id, counter_party) -> AffirmationStatus **/ - affirmsReceived: AugmentedQuery Observable, [InstructionId, PortfolioId]> & QueryableStorageEntry; + affirmsReceived: AugmentedQuery Observable, [u64, PolymeshPrimitivesIdentityIdPortfolioId]> & QueryableStorageEntry; /** * Free-form text about a venue. venue_id -> `VenueDetails` * Only needed for the UI. **/ - details: AugmentedQuery Observable, [VenueId]> & QueryableStorageEntry; + details: AugmentedQuery Observable, [u64]> & QueryableStorageEntry; /** * Number of affirmations pending before instruction is executed. instruction_id -> affirm_pending **/ - instructionAffirmsPending: AugmentedQuery Observable, [InstructionId]> & QueryableStorageEntry; + instructionAffirmsPending: AugmentedQuery Observable, [u64]> & QueryableStorageEntry; /** * Number of instructions in the system (It's one more than the actual number) **/ - instructionCounter: AugmentedQuery Observable, []> & QueryableStorageEntry; + instructionCounter: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Details about an instruction. instruction_id -> instruction_details **/ - instructionDetails: AugmentedQuery Observable, [InstructionId]> & QueryableStorageEntry; + instructionDetails: AugmentedQuery Observable, [u64]> & QueryableStorageEntry; /** * Legs under an instruction. (instruction_id, leg_id) -> Leg **/ - instructionLegs: AugmentedQuery Observable, [InstructionId, LegId]> & QueryableStorageEntry; + instructionLegs: AugmentedQuery Observable, [u64, u64]> & QueryableStorageEntry; /** * Status of a leg under an instruction. (instruction_id, leg_id) -> LegStatus **/ - instructionLegStatus: AugmentedQuery Observable, [InstructionId, LegId]> & QueryableStorageEntry; + instructionLegStatus: AugmentedQuery Observable, [u64, u64]> & QueryableStorageEntry; /** * Tracks redemption of receipts. (signer, receipt_uid) -> receipt_used **/ - receiptsUsed: AugmentedQuery Observable, [AccountId, u64]> & QueryableStorageEntry; + receiptsUsed: AugmentedQuery Observable, [AccountId32, u64]> & QueryableStorageEntry; /** * Storage version. **/ - storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; + storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Helps a user track their pending instructions and affirmations (only needed for UI). * (counter_party, instruction_id) -> AffirmationStatus **/ - userAffirmations: AugmentedQuery Observable, [PortfolioId, InstructionId]> & QueryableStorageEntry; + userAffirmations: AugmentedQuery Observable, [PolymeshPrimitivesIdentityIdPortfolioId, u64]> & QueryableStorageEntry; /** * Array of venues created by an identity. Only needed for the UI. IdentityId -> Vec **/ - userVenues: AugmentedQuery Observable>, [IdentityId]> & QueryableStorageEntry; + userVenues: AugmentedQuery Observable>, [PolymeshPrimitivesIdentityId]> & QueryableStorageEntry; /** * Venues that are allowed to create instructions involving a particular ticker. Only used if filtering is enabled. * (ticker, venue_id) -> allowed **/ - venueAllowList: AugmentedQuery Observable, [Ticker, VenueId]> & QueryableStorageEntry; + venueAllowList: AugmentedQuery Observable, [PolymeshPrimitivesTicker, u64]> & QueryableStorageEntry; /** * Number of venues in the system (It's one more than the actual number) **/ - venueCounter: AugmentedQuery Observable, []> & QueryableStorageEntry; + venueCounter: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Tracks if a token has enabled filtering venues that can create instructions involving their token. Ticker -> filtering_enabled **/ - venueFiltering: AugmentedQuery Observable, [Ticker]> & QueryableStorageEntry; + venueFiltering: AugmentedQuery Observable, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * Info about a venue. venue_id -> venue **/ - venueInfo: AugmentedQuery Observable>, [VenueId]> & QueryableStorageEntry; + venueInfo: AugmentedQuery Observable>, [u64]> & QueryableStorageEntry; /** * Instructions under a venue. * Only needed for the UI. * * venue_id -> instruction_id -> () **/ - venueInstructions: AugmentedQuery Observable>, [VenueId, InstructionId]> & QueryableStorageEntry; + venueInstructions: AugmentedQuery Observable, [u64, u64]> & QueryableStorageEntry; /** * Signers allowed by the venue. (venue_id, signer) -> bool **/ - venueSigners: AugmentedQuery Observable, [VenueId, AccountId]> & QueryableStorageEntry; + venueSigners: AugmentedQuery Observable, [u64, AccountId32]> & QueryableStorageEntry; /** * Generic query **/ @@ -1223,44 +1231,44 @@ declare module '@polkadot/api/types/storage' { * The active era is the era being currently rewarded. Validator set of this era must be * equal to [`SessionInterface::validators`]. **/ - activeEra: AugmentedQuery Observable>, []> & QueryableStorageEntry; + activeEra: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Map from all locked "stash" accounts to the controller account. **/ - bonded: AugmentedQuery Observable>, [AccountId]> & QueryableStorageEntry; + bonded: AugmentedQuery Observable>, [AccountId32]> & QueryableStorageEntry; /** * A mapping from still-bonded eras to the first session index of that era. * * Must contains information for eras for the range: * `[active_era - bounding_duration; active_era]` **/ - bondedEras: AugmentedQuery Observable>>, []> & QueryableStorageEntry; + bondedEras: AugmentedQuery Observable>>, []> & QueryableStorageEntry; /** * The amount of currency given to reporters of a slash event which was * canceled by extraordinary circumstances (e.g. governance). **/ - canceledSlashPayout: AugmentedQuery Observable, []> & QueryableStorageEntry; + canceledSlashPayout: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * The current era index. * * This is the latest planned era, depending on how the Session pallet queues the validator * set, it might be active or not. **/ - currentEra: AugmentedQuery Observable>, []> & QueryableStorageEntry; + currentEra: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * The earliest era for which we have a pending, unapplied slash. **/ - earliestUnappliedSlash: AugmentedQuery Observable>, []> & QueryableStorageEntry; + earliestUnappliedSlash: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Flag to control the execution of the offchain election. When `Open(_)`, we accept * solutions to be submitted. **/ - eraElectionStatus: AugmentedQuery Observable, []> & QueryableStorageEntry; + eraElectionStatus: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Rewards for the last `HISTORY_DEPTH` eras. * If reward hasn't been set or has been removed then 0 reward is returned. **/ - erasRewardPoints: AugmentedQuery Observable, [EraIndex]> & QueryableStorageEntry; + erasRewardPoints: AugmentedQuery Observable, [u32]> & QueryableStorageEntry; /** * Exposure of validator at era. * @@ -1269,7 +1277,7 @@ declare module '@polkadot/api/types/storage' { * Is it removed after `HISTORY_DEPTH` eras. * If stakers hasn't been set or has been removed then empty exposure is returned. **/ - erasStakers: AugmentedQuery Observable, [EraIndex, AccountId]> & QueryableStorageEntry; + erasStakers: AugmentedQuery Observable, [u32, AccountId32]> & QueryableStorageEntry; /** * Clipped Exposure of validator at era. * @@ -1283,19 +1291,19 @@ declare module '@polkadot/api/types/storage' { * Is it removed after `HISTORY_DEPTH` eras. * If stakers hasn't been set or has been removed then empty exposure is returned. **/ - erasStakersClipped: AugmentedQuery Observable, [EraIndex, AccountId]> & QueryableStorageEntry; + erasStakersClipped: AugmentedQuery Observable, [u32, AccountId32]> & QueryableStorageEntry; /** * The session index at which the era start for the last `HISTORY_DEPTH` eras. * * Note: This tracks the starting session (i.e. session index when era start being active) * for the eras in `[CurrentEra - HISTORY_DEPTH, CurrentEra]`. **/ - erasStartSessionIndex: AugmentedQuery Observable>, [EraIndex]> & QueryableStorageEntry; + erasStartSessionIndex: AugmentedQuery Observable>, [u32]> & QueryableStorageEntry; /** * The total amount staked for the last `HISTORY_DEPTH` eras. * If total hasn't been set or has been removed then 0 stake is returned. **/ - erasTotalStake: AugmentedQuery Observable, [EraIndex]> & QueryableStorageEntry; + erasTotalStake: AugmentedQuery Observable, [u32]> & QueryableStorageEntry; /** * Similar to `ErasStakers`, this holds the preferences of validators. * @@ -1303,17 +1311,17 @@ declare module '@polkadot/api/types/storage' { * * Is it removed after `HISTORY_DEPTH` eras. **/ - erasValidatorPrefs: AugmentedQuery Observable, [EraIndex, AccountId]> & QueryableStorageEntry; + erasValidatorPrefs: AugmentedQuery Observable, [u32, AccountId32]> & QueryableStorageEntry; /** * The total validator era payout for the last `HISTORY_DEPTH` eras. * * Eras that haven't finished yet or has been removed doesn't have reward. **/ - erasValidatorReward: AugmentedQuery Observable>, [EraIndex]> & QueryableStorageEntry; + erasValidatorReward: AugmentedQuery Observable>, [u32]> & QueryableStorageEntry; /** * Mode of era forcing. **/ - forceEra: AugmentedQuery Observable, []> & QueryableStorageEntry; + forceEra: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Number of eras to keep in history. * @@ -1329,7 +1337,7 @@ declare module '@polkadot/api/types/storage' { * easy to initialize and the performance hit is minimal (we expect no more than four * invulnerables) and restricted to testnets. **/ - invulnerables: AugmentedQuery Observable>, []> & QueryableStorageEntry; + invulnerables: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * True if the current **planned** session is final. Note that this does not take era * forcing into account. @@ -1338,11 +1346,11 @@ declare module '@polkadot/api/types/storage' { /** * Map from all (unlocked) "controller" accounts to the info regarding the staking. **/ - ledger: AugmentedQuery Observable>, [AccountId]> & QueryableStorageEntry; + ledger: AugmentedQuery Observable>, [AccountId32]> & QueryableStorageEntry; /** * The minimum amount with which a validator can bond. **/ - minimumBondThreshold: AugmentedQuery Observable, []> & QueryableStorageEntry; + minimumBondThreshold: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Minimum number of staking participants before emergency conditions are imposed. **/ @@ -1350,34 +1358,34 @@ declare module '@polkadot/api/types/storage' { /** * The map from nominator stash key to the set of stash keys of all validators to nominate. **/ - nominators: AugmentedQuery Observable>, [AccountId]> & QueryableStorageEntry; + nominators: AugmentedQuery Observable>, [AccountId32]> & QueryableStorageEntry; /** * All slashing events on nominators, mapped by era to the highest slash value of the era. **/ - nominatorSlashInEra: AugmentedQuery Observable>, [EraIndex, AccountId]> & QueryableStorageEntry; + nominatorSlashInEra: AugmentedQuery Observable>, [u32, AccountId32]> & QueryableStorageEntry; /** * Where the reward payment should be made. Keyed by stash. **/ - payee: AugmentedQuery Observable, [AccountId]> & QueryableStorageEntry; + payee: AugmentedQuery Observable, [AccountId32]> & QueryableStorageEntry; /** * Entities that are allowed to run operator/validator nodes. **/ - permissionedIdentity: AugmentedQuery Observable>, [IdentityId]> & QueryableStorageEntry; + permissionedIdentity: AugmentedQuery Observable>, [PolymeshPrimitivesIdentityId]> & QueryableStorageEntry; /** * The next validator set. At the end of an era, if this is available (potentially from the * result of an offchain worker), it is immediately used. Otherwise, the on-chain election * is executed. **/ - queuedElected: AugmentedQuery Observable>, []> & QueryableStorageEntry; + queuedElected: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * The score of the current [`QueuedElected`]. **/ - queuedScore: AugmentedQuery Observable>, []> & QueryableStorageEntry; - slashingAllowedFor: AugmentedQuery Observable, []> & QueryableStorageEntry; + queuedScore: AugmentedQuery Observable>>, []> & QueryableStorageEntry; + slashingAllowedFor: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Slashing spans for stash accounts. **/ - slashingSpans: AugmentedQuery Observable>, [AccountId]> & QueryableStorageEntry; + slashingSpans: AugmentedQuery Observable>, [AccountId32]> & QueryableStorageEntry; /** * The percentage of the slash that is distributed to reporters. * @@ -1388,28 +1396,28 @@ declare module '@polkadot/api/types/storage' { * Snapshot of nominators at the beginning of the current election window. This should only * have a value when [`EraElectionStatus`] == `ElectionStatus::Open(_)`. **/ - snapshotNominators: AugmentedQuery Observable>>, []> & QueryableStorageEntry; + snapshotNominators: AugmentedQuery Observable>>, []> & QueryableStorageEntry; /** * Snapshot of validators at the beginning of the current election window. This should only * have a value when [`EraElectionStatus`] == `ElectionStatus::Open(_)`. **/ - snapshotValidators: AugmentedQuery Observable>>, []> & QueryableStorageEntry; + snapshotValidators: AugmentedQuery Observable>>, []> & QueryableStorageEntry; /** * 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, [ITuple<[AccountId, SpanIndex]>]> & QueryableStorageEntry]>; + spanSlash: AugmentedQuery | [AccountId32 | string | Uint8Array, u32 | AnyNumber | Uint8Array]) => Observable, [ITuple<[AccountId32, u32]>]> & QueryableStorageEntry]>; /** * True if network has been upgraded to this version. * Storage version of the pallet. * * This is set to v6.0.1 for new networks. **/ - storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; + storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * All unapplied slashes that are queued for later. **/ - unappliedSlashes: AugmentedQuery Observable>, [EraIndex]> & QueryableStorageEntry; + unappliedSlashes: AugmentedQuery Observable>, [u32]> & QueryableStorageEntry; /** * Every validator has commission that should be in the range [0, Cap]. **/ @@ -1421,12 +1429,12 @@ declare module '@polkadot/api/types/storage' { /** * The map from (wannabe) validator stash key to the preferences of that validator. **/ - validators: AugmentedQuery Observable, [AccountId]> & QueryableStorageEntry; + validators: AugmentedQuery Observable, [AccountId32]> & QueryableStorageEntry; /** * All slashing events on validators, mapped by era to the highest slash proportion * and slash value of the era. **/ - validatorSlashInEra: AugmentedQuery Observable>>, [EraIndex, AccountId]> & QueryableStorageEntry; + validatorSlashInEra: AugmentedQuery Observable>>, [u32, AccountId32]> & QueryableStorageEntry; /** * Generic query **/ @@ -1436,17 +1444,17 @@ declare module '@polkadot/api/types/storage' { /** * Transfer managers currently enabled for an Asset. **/ - activeTransferManagers: AugmentedQuery Observable>, [Ticker]> & QueryableStorageEntry; + activeTransferManagers: AugmentedQuery Observable>, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * Entities exempt from transfer managers. Exemptions requirements are based on TMS. * TMs may require just the sender, just the receiver, both or either to be exempted. * CTM requires sender to be exempted while PTM requires receiver to be exempted. **/ - exemptEntities: AugmentedQuery | [Ticker | string | Uint8Array, TransferManager | { CountTransferManager: any } | { PercentageTransferManager: any } | string | Uint8Array], arg2: ScopeId | string | Uint8Array) => Observable, [ITuple<[Ticker, TransferManager]>, ScopeId]> & QueryableStorageEntry, ScopeId]>; + exemptEntities: AugmentedQuery | [PolymeshPrimitivesTicker | string | Uint8Array, PolymeshPrimitivesStatisticsTransferManager | { CountTransferManager: any } | { PercentageTransferManager: any } | string | Uint8Array], arg2: PolymeshPrimitivesIdentityId | string | Uint8Array) => Observable, [ITuple<[PolymeshPrimitivesTicker, PolymeshPrimitivesStatisticsTransferManager]>, PolymeshPrimitivesIdentityId]> & QueryableStorageEntry, PolymeshPrimitivesIdentityId]>; /** * Number of current investors in an asset. **/ - investorCountPerAsset: AugmentedQuery Observable, [Ticker]> & QueryableStorageEntry; + investorCountPerAsset: AugmentedQuery Observable, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * Generic query **/ @@ -1456,17 +1464,17 @@ declare module '@polkadot/api/types/storage' { /** * Total fundraisers created for a token. **/ - fundraiserCount: AugmentedQuery Observable, [Ticker]> & QueryableStorageEntry; + fundraiserCount: AugmentedQuery Observable, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * Name for the Fundraiser. Only used offchain. * (ticker, fundraiser_id) -> Fundraiser name **/ - fundraiserNames: AugmentedQuery Observable, [Ticker, FundraiserId]> & QueryableStorageEntry; + fundraiserNames: AugmentedQuery Observable, [PolymeshPrimitivesTicker, u64]> & QueryableStorageEntry; /** * All fundraisers that are currently running. * (ticker, fundraiser_id) -> Fundraiser **/ - fundraisers: AugmentedQuery Observable>, [Ticker, FundraiserId]> & QueryableStorageEntry; + fundraisers: AugmentedQuery Observable>, [PolymeshPrimitivesTicker, u64]> & QueryableStorageEntry; /** * Generic query **/ @@ -1476,7 +1484,7 @@ declare module '@polkadot/api/types/storage' { /** * The `AccountId` of the sudo key. **/ - key: AugmentedQuery Observable, []> & QueryableStorageEntry; + key: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Generic query **/ @@ -1486,7 +1494,7 @@ declare module '@polkadot/api/types/storage' { /** * The full account information for a particular account ID. **/ - account: AugmentedQuery Observable, [AccountId]> & QueryableStorageEntry; + account: AugmentedQuery Observable, [AccountId32]> & QueryableStorageEntry; /** * Total length (in bytes) for all extrinsics put together, for the current block. **/ @@ -1494,23 +1502,26 @@ declare module '@polkadot/api/types/storage' { /** * Map of block numbers to block hashes. **/ - blockHash: AugmentedQuery Observable, [BlockNumber]> & QueryableStorageEntry; + blockHash: AugmentedQuery Observable, [u32]> & QueryableStorageEntry; /** * The current weight for the block. **/ - blockWeight: AugmentedQuery Observable, []> & QueryableStorageEntry; + blockWeight: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Digest of the current block, also part of the block header. **/ - digest: AugmentedQuery Observable, []> & QueryableStorageEntry; + digest: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * The number of events in the `Events` list. **/ - eventCount: AugmentedQuery Observable, []> & QueryableStorageEntry; + eventCount: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Events deposited for the current block. + * + * NOTE: This storage item is explicitly unbounded since it is never intended to be read + * from within the runtime. **/ - events: AugmentedQuery Observable>, []> & QueryableStorageEntry; + events: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Mapping between a topic (represented by T::Hash) and a vector of indexes * of events in the `>` list. @@ -1523,11 +1534,11 @@ declare module '@polkadot/api/types/storage' { * 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>>, [Hash]> & QueryableStorageEntry; + eventTopics: AugmentedQuery Observable>>, [H256]> & QueryableStorageEntry; /** * The execution phase of the block. **/ - executionPhase: AugmentedQuery Observable>, []> & QueryableStorageEntry; + executionPhase: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Total extrinsics count for the current block. **/ @@ -1539,20 +1550,20 @@ declare module '@polkadot/api/types/storage' { /** * Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened. **/ - lastRuntimeUpgrade: AugmentedQuery Observable>, []> & QueryableStorageEntry; + lastRuntimeUpgrade: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * The current block number being processed. Set by `execute_block`. **/ - number: AugmentedQuery Observable, []> & QueryableStorageEntry; + number: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Hash of the previous block. **/ - parentHash: AugmentedQuery Observable, []> & QueryableStorageEntry; + parentHash: AugmentedQuery Observable, []> & QueryableStorageEntry; /** - * True if we have upgraded so that AccountInfo contains two types of `RefCount`. False + * True if we have upgraded so that AccountInfo contains three types of `RefCount`. False * (default) if not. **/ - upgradedToDualRefCount: AugmentedQuery Observable, []> & QueryableStorageEntry; + upgradedToTripleRefCount: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * True if we have upgraded so that `type RefCount` is `u32`. False (default) if not. **/ @@ -1566,11 +1577,11 @@ declare module '@polkadot/api/types/storage' { /** * Time after which a proposal will expire. **/ - expiresAfter: AugmentedQuery Observable, []> & QueryableStorageEntry; + expiresAfter: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * The current members of the committee. **/ - members: AugmentedQuery Observable>, []> & QueryableStorageEntry; + members: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Proposals so far. **/ @@ -1578,19 +1589,19 @@ declare module '@polkadot/api/types/storage' { /** * Actual proposal for a given hash. **/ - proposalOf: AugmentedQuery Observable>, [Hash]> & QueryableStorageEntry; + proposalOf: AugmentedQuery Observable>, [H256]> & QueryableStorageEntry; /** * The hashes of the active proposals. **/ - proposals: AugmentedQuery Observable>, []> & QueryableStorageEntry; + proposals: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Release coordinator. **/ - releaseCoordinator: AugmentedQuery Observable>, []> & QueryableStorageEntry; + releaseCoordinator: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Storage version. **/ - storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; + storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Vote threshold for an approval. **/ @@ -1598,7 +1609,7 @@ declare module '@polkadot/api/types/storage' { /** * PolymeshVotes on a given proposal, if it is ongoing. **/ - voting: AugmentedQuery Observable>, [Hash]> & QueryableStorageEntry; + voting: AugmentedQuery Observable>, [H256]> & QueryableStorageEntry; /** * Generic query **/ @@ -1608,7 +1619,7 @@ declare module '@polkadot/api/types/storage' { /** * The current "active" membership, stored as an ordered Vec. **/ - activeMembers: AugmentedQuery Observable>, []> & QueryableStorageEntry; + activeMembers: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Limit of how many "active" members there can be. **/ @@ -1616,7 +1627,7 @@ declare module '@polkadot/api/types/storage' { /** * The current "inactive" membership, stored as an ordered Vec. **/ - inactiveMembers: AugmentedQuery Observable>, []> & QueryableStorageEntry; + inactiveMembers: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Generic query **/ @@ -1636,15 +1647,15 @@ declare module '@polkadot/api/types/storage' { /** * Current time for the current block. **/ - now: AugmentedQuery Observable, []> & QueryableStorageEntry; + now: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Generic query **/ [key: string]: QueryableStorageEntry; }; transactionPayment: { - nextFeeMultiplier: AugmentedQuery Observable, []> & QueryableStorageEntry; - storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; + nextFeeMultiplier: AugmentedQuery Observable, []> & QueryableStorageEntry; + storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Generic query **/ @@ -1654,11 +1665,11 @@ declare module '@polkadot/api/types/storage' { /** * Time after which a proposal will expire. **/ - expiresAfter: AugmentedQuery Observable, []> & QueryableStorageEntry; + expiresAfter: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * The current members of the committee. **/ - members: AugmentedQuery Observable>, []> & QueryableStorageEntry; + members: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Proposals so far. **/ @@ -1666,19 +1677,19 @@ declare module '@polkadot/api/types/storage' { /** * Actual proposal for a given hash. **/ - proposalOf: AugmentedQuery Observable>, [Hash]> & QueryableStorageEntry; + proposalOf: AugmentedQuery Observable>, [H256]> & QueryableStorageEntry; /** * The hashes of the active proposals. **/ - proposals: AugmentedQuery Observable>, []> & QueryableStorageEntry; + proposals: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Release coordinator. **/ - releaseCoordinator: AugmentedQuery Observable>, []> & QueryableStorageEntry; + releaseCoordinator: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Storage version. **/ - storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; + storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Vote threshold for an approval. **/ @@ -1686,7 +1697,7 @@ declare module '@polkadot/api/types/storage' { /** * PolymeshVotes on a given proposal, if it is ongoing. **/ - voting: AugmentedQuery Observable>, [Hash]> & QueryableStorageEntry; + voting: AugmentedQuery Observable>, [H256]> & QueryableStorageEntry; /** * Generic query **/ @@ -1696,7 +1707,7 @@ declare module '@polkadot/api/types/storage' { /** * The current "active" membership, stored as an ordered Vec. **/ - activeMembers: AugmentedQuery Observable>, []> & QueryableStorageEntry; + activeMembers: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Limit of how many "active" members there can be. **/ @@ -1704,22 +1715,18 @@ declare module '@polkadot/api/types/storage' { /** * The current "inactive" membership, stored as an ordered Vec. **/ - inactiveMembers: AugmentedQuery Observable>, []> & QueryableStorageEntry; + inactiveMembers: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Generic query **/ [key: string]: QueryableStorageEntry; }; utility: { - nonces: AugmentedQuery Observable, [AccountId]> & QueryableStorageEntry; + nonces: AugmentedQuery Observable, [AccountId32]> & QueryableStorageEntry; /** * Generic query **/ [key: string]: QueryableStorageEntry; }; - } - - export interface QueryableStorage extends AugmentedQueries { - [key: string]: QueryableModuleStorage; - } -} + } // AugmentedQueries +} // declare module diff --git a/scripts/cli/src/interfaces/augment-api-rpc.ts b/scripts/cli/src/interfaces/augment-api-rpc.ts index 9405e6412a..e83269bef8 100644 --- a/scripts/cli/src/interfaces/augment-api-rpc.ts +++ b/scripts/cli/src/interfaces/augment-api-rpc.ts @@ -1,15 +1,17 @@ // Auto-generated via `yarn polkadot-types-from-chain`, do not edit /* eslint-disable */ -import type { Bytes, HashMap, Json, Metadata, Null, Option, StorageKey, Text, U256, U64, Vec, bool, u32, u64 } from '@polkadot/types'; -import type { AnyNumber, Codec, IExtrinsic, Observable } from '@polkadot/types/types'; +import type { AugmentedRpc } from '@polkadot/rpc-core/types'; +import type { Metadata, StorageKey } from '@polkadot/types'; +import type { Bytes, HashMap, Json, Null, Option, Text, U256, U64, Vec, bool, u32, u64 } from '@polkadot/types-codec'; +import type { AnyNumber, Codec } from '@polkadot/types-codec/types'; import type { ExtrinsicOrHash, ExtrinsicStatus } from '@polkadot/types/interfaces/author'; import type { EpochAuthorship } from '@polkadot/types/interfaces/babe'; import type { BeefySignedCommitment } from '@polkadot/types/interfaces/beefy'; import type { BlockHash } from '@polkadot/types/interfaces/chain'; import type { PrefixedStorageKey } from '@polkadot/types/interfaces/childstate'; import type { AuthorityId } from '@polkadot/types/interfaces/consensus'; -import type { ContractCallRequest, ContractExecResult, ContractInstantiateResult, InstantiateRequest } from '@polkadot/types/interfaces/contracts'; +import type { CodeUploadRequest, CodeUploadResult, ContractCallRequest, ContractExecResult, ContractInstantiateResult, InstantiateRequest } from '@polkadot/types/interfaces/contracts'; import type { CreatedBlock } from '@polkadot/types/interfaces/engine'; import type { EthAccount, EthCallRequest, EthFilter, EthFilterChanges, EthLog, EthReceipt, EthRichBlock, EthSubKind, EthSubParams, EthSyncStatus, EthTransaction, EthTransactionRequest, EthWork } from '@polkadot/types/interfaces/eth'; import type { Extrinsic } from '@polkadot/types/interfaces/extrinsics'; @@ -21,8 +23,9 @@ import type { RpcMethods } from '@polkadot/types/interfaces/rpc'; import type { AccountId, BlockNumber, H160, H256, H64, Hash, Header, Index, Justification, KeyValue, SignedBlock, StorageData } from '@polkadot/types/interfaces/runtime'; import type { ReadProof, RuntimeVersion, TraceBlockResponse } from '@polkadot/types/interfaces/state'; import type { ApplyExtrinsicResult, ChainProperties, ChainType, Health, NetworkState, NodeRole, PeerInfo, SyncState } from '@polkadot/types/interfaces/system'; +import type { IExtrinsic, Observable } from '@polkadot/types/types'; -declare module '@polkadot/rpc-core/types.jsonrpc' { +declare module '@polkadot/rpc-core/types/jsonrpc' { export interface RpcInterface { author: { /** @@ -113,6 +116,10 @@ declare module '@polkadot/rpc-core/types.jsonrpc' { * Returns a child storage entry at a specific block state **/ getStorage: AugmentedRpc<(childKey: PrefixedStorageKey | string | Uint8Array, key: StorageKey | string | Uint8Array | any, at?: Hash | string | Uint8Array) => Observable>>; + /** + * Returns child storage entries for multiple keys at a specific block state + **/ + getStorageEntries: AugmentedRpc<(childKey: PrefixedStorageKey | string | Uint8Array, keys: Vec | (StorageKey | string | Uint8Array | any)[], at?: Hash | string | Uint8Array) => Observable>>>; /** * Returns the hash of a child storage entry at a block state **/ @@ -126,7 +133,7 @@ declare module '@polkadot/rpc-core/types.jsonrpc' { /** * Executes a call to a contract **/ - call: AugmentedRpc<(callRequest: ContractCallRequest | { origin?: any; dest?: any; value?: any; gasLimit?: any; inputData?: any } | string | Uint8Array, at?: BlockHash | string | Uint8Array) => Observable>; + call: AugmentedRpc<(callRequest: ContractCallRequest | { origin?: any; dest?: any; value?: any; gasLimit?: any; storageDepositLimit?: any; inputData?: any } | string | Uint8Array, at?: BlockHash | string | Uint8Array) => Observable>; /** * Returns the value under a specified storage key in a contract **/ @@ -134,11 +141,15 @@ declare module '@polkadot/rpc-core/types.jsonrpc' { /** * Instantiate a new contract **/ - instantiate: AugmentedRpc<(request: InstantiateRequest | { origin?: any; endowment?: any; gasLimit?: any; code?: any; data?: any; salt?: any } | string | Uint8Array, at?: BlockHash | string | Uint8Array) => Observable>; + instantiate: AugmentedRpc<(request: InstantiateRequest | { origin?: any; value?: any; gasLimit?: any; storageDepositLimit?: any; code?: any; data?: any; salt?: any } | string | Uint8Array, at?: BlockHash | string | Uint8Array) => Observable>; /** * Returns the projected time a given contract will be able to sustain paying its rent **/ rentProjection: AugmentedRpc<(address: AccountId | string | Uint8Array, at?: BlockHash | string | Uint8Array) => Observable>>; + /** + * Upload new code without instantiating a contract from it + **/ + uploadCode: AugmentedRpc<(uploadRequest: CodeUploadRequest | { origin?: any; code?: any; storageDepositLimit?: any } | string | Uint8Array, at?: BlockHash | string | Uint8Array) => Observable>; }; engine: { /** @@ -456,7 +467,7 @@ declare module '@polkadot/rpc-core/types.jsonrpc' { /** * Provides a way to trace the re-execution of a single block **/ - traceBlock: AugmentedRpc<(block: Hash | string | Uint8Array, targets: Option | null | object | string | Uint8Array, storageKeys: Option | null | object | string | Uint8Array) => Observable>; + traceBlock: AugmentedRpc<(block: Hash | string | Uint8Array, targets: Option | null | object | string | Uint8Array, storageKeys: Option | null | object | string | Uint8Array, methods: Option | null | object | string | Uint8Array) => Observable>; }; syncstate: { /** @@ -552,5 +563,5 @@ declare module '@polkadot/rpc-core/types.jsonrpc' { **/ sha3: AugmentedRpc<(data: Bytes | string | Uint8Array) => Observable>; }; - } -} + } // RpcInterface +} // declare module diff --git a/scripts/cli/src/interfaces/augment-api-tx.ts b/scripts/cli/src/interfaces/augment-api-tx.ts index 306f3d4af5..072449451e 100644 --- a/scripts/cli/src/interfaces/augment-api-tx.ts +++ b/scripts/cli/src/interfaces/augment-api-tx.ts @@ -1,24 +1,14 @@ // Auto-generated via `yarn polkadot-types-from-chain`, do not edit /* eslint-disable */ -import type { Bytes, Compact, Option, Vec, bool, u32, u64 } from '@polkadot/types'; -import type { AnyNumber, ITuple } from '@polkadot/types/types'; -import type { BabeEquivocationProof } from '@polkadot/types/interfaces/babe'; -import type { MemberCount, ProposalIndex } from '@polkadot/types/interfaces/collective'; -import type { Proposal } from '@polkadot/types/interfaces/democracy'; -import type { EcdsaSignature, Extrinsic, Signature } from '@polkadot/types/interfaces/extrinsics'; -import type { GrandpaEquivocationProof, KeyOwnerProof } from '@polkadot/types/interfaces/grandpa'; -import type { Heartbeat } from '@polkadot/types/interfaces/imOnline'; -import type { AccountId, AccountIndex, Balance, BalanceOf, BlockNumber, Call, ChangesTrieConfiguration, Hash, Header, KeyValue, LookupSource, Moment, Perbill, Percent, Weight } from '@polkadot/types/interfaces/runtime'; -import type { Period, Priority } from '@polkadot/types/interfaces/scheduler'; -import type { Keys } from '@polkadot/types/interfaces/session'; -import type { CompactAssignments, ElectionScore, ElectionSize, EraIndex, RewardDestination, ValidatorIndex, ValidatorPrefs } from '@polkadot/types/interfaces/staking'; -import type { Key } from '@polkadot/types/interfaces/system'; -import type { AGId, AgentGroup, AssetIdentifier, AssetName, AssetType, AuthorizationData, BallotMeta, BallotTimeRange, BallotVote, Beneficiary, BridgeTx, CADetails, CAId, CAKind, Claim, ClaimType, ClassicTickerImport, ComplianceRequirement, Condition, Document, DocumentId, ExtrinsicPermissions, FundingRoundName, FundraiserId, FundraiserName, IdentityId, InstructionId, InvestorUid, InvestorZKProofData, ItnRewardStatus, Leg, LegId, LegacyPermissions, MaybeBlock, Memo, MovePortfolioItem, OffChainSignature, Permissions, PipDescription, PipId, PortfolioId, PortfolioName, PortfolioNumber, PosRatio, PriceTier, ProtocolOp, ReceiptDetails, RecordDateSpec, ScheduleId, ScheduleSpec, Scope, ScopeClaimProof, ScopeId, SecondaryKey, SecondaryKeyWithAuth, SettlementType, Signatory, SkippedCount, SlashingSwitch, SnapshotResult, TargetIdentities, Tax, Ticker, TickerRegistrationConfig, TransferManager, TrustedIssuer, UniqueCall, Url, VenueDetails, VenueId, VenueType } from 'polymesh-typegen/interfaces/default'; -import type { ApiTypes, SubmittableExtrinsic } from '@polkadot/api/types'; +import type { ApiTypes } from '@polkadot/api-base/types'; +import type { Bytes, Compact, Option, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec'; +import type { AnyNumber, ITuple } from '@polkadot/types-codec/types'; +import type { AccountId32, Call, H256, MultiAddress, Perbill, Percent, Permill } from '@polkadot/types/interfaces/runtime'; +import type { ConfidentialIdentityClaimProofsScopeClaimProof, PalletAssetCheckpointScheduleSpec, PalletAssetClassicTickerImport, PalletAssetTickerRegistrationConfig, PalletBridgeBridgeTx, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsCaId, PalletCorporateActionsCaKind, PalletCorporateActionsRecordDateSpec, PalletCorporateActionsTargetIdentities, PalletImOnlineHeartbeat, PalletImOnlineSr25519AppSr25519Signature, PalletPipsSnapshotResult, PalletPortfolioMovePortfolioItem, PalletRewardsItnRewardStatus, PalletSettlementLeg, PalletSettlementReceiptDetails, PalletSettlementSettlementType, PalletSettlementVenueType, PalletStakingCompactAssignments, PalletStakingElectionSize, PalletStakingRewardDestination, PalletStakingSlashingSwitch, PalletStakingValidatorPrefs, PalletStoPriceTier, PalletUtilityUniqueCall, PolymeshCommonUtilitiesBalancesMemo, PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth, PolymeshCommonUtilitiesMaybeBlock, PolymeshCommonUtilitiesProtocolFeeProtocolOp, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetAssetType, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAuthorizationAuthorizationData, PolymeshPrimitivesBeneficiary, PolymeshPrimitivesCddIdInvestorUid, PolymeshPrimitivesComplianceManagerComplianceRequirement, PolymeshPrimitivesCondition, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesEthereumEcdsaSignature, PolymeshPrimitivesIdentityClaimClaim, PolymeshPrimitivesIdentityClaimClaimType, PolymeshPrimitivesIdentityClaimScope, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKey, PolymeshPrimitivesSecondaryKeyApiLegacyPermissions, PolymeshPrimitivesSecondaryKeyPermissions, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesStatisticsTransferManager, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesTicker, PolymeshRuntimeDevelopRuntimeSessionKeys, SpConsensusBabeDigestsNextConfigDescriptor, SpConsensusSlotsEquivocationProof, SpCoreChangesTrieChangesTrieConfiguration, SpFinalityGrandpaEquivocationProof, SpRuntimeHeader, SpRuntimeMultiSignature, SpSessionMembershipProof } from '@polkadot/types/lookup'; -declare module '@polkadot/api/types/submittable' { - export interface AugmentedSubmittables { +declare module '@polkadot/api-base/types/submittable' { + export interface AugmentedSubmittables { asset: { /** * This function is used to accept a token ownership transfer. @@ -55,7 +45,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - addDocuments: AugmentedSubmittable<(docs: Vec | (Document | { uri?: any; content_hash?: any; name?: any; doc_type?: any; filing_date?: any } | string | Uint8Array)[], ticker: Ticker | string | Uint8Array) => SubmittableExtrinsic, [Vec, Ticker]>; + addDocuments: AugmentedSubmittable<(docs: Vec | (PolymeshPrimitivesDocument | { uri?: any; contentHash?: any; name?: any; docType?: any; filingDate?: any } | string | Uint8Array)[], ticker: PolymeshPrimitivesTicker | string | Uint8Array) => SubmittableExtrinsic, [Vec, PolymeshPrimitivesTicker]>; /** * Claim a systematically reserved Polymath Classic (PMC) `ticker` * and transfer it to the `origin`'s identity. @@ -72,7 +62,7 @@ declare module '@polkadot/api/types/submittable' { * - `InvalidEthereumSignature` if the `ethereum_signature` is not valid. * - `NotAnOwner` if the ethereum account is not the owner of the PMC ticker. **/ - claimClassicTicker: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, ethereumSignature: EcdsaSignature | string | Uint8Array) => SubmittableExtrinsic, [Ticker, EcdsaSignature]>; + claimClassicTicker: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, ethereumSignature: PolymeshPrimitivesEthereumEcdsaSignature | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, PolymeshPrimitivesEthereumEcdsaSignature]>; /** * Forces a transfer of token from `from_portfolio` to the caller's default portfolio. * @@ -82,7 +72,7 @@ declare module '@polkadot/api/types/submittable' { * * `value` Amount of tokens need to force transfer. * * `from_portfolio` From whom portfolio tokens gets transferred. **/ - controllerTransfer: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, value: Balance | AnyNumber | Uint8Array, fromPortfolio: PortfolioId | { did?: any; kind?: any } | string | Uint8Array) => SubmittableExtrinsic, [Ticker, Balance, PortfolioId]>; + controllerTransfer: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, value: u128 | AnyNumber | Uint8Array, fromPortfolio: PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, u128, PolymeshPrimitivesIdentityIdPortfolioId]>; /** * Initializes a new security token, with the initiating account as its owner. * The total supply will initially be zero. To mint tokens, use `issue`. @@ -111,7 +101,7 @@ declare module '@polkadot/api/types/submittable' { * ## Permissions * * Portfolio **/ - createAsset: AugmentedSubmittable<(name: AssetName | string, ticker: Ticker | string | Uint8Array, divisible: bool | boolean | Uint8Array, assetType: AssetType | { EquityCommon: any } | { EquityPreferred: any } | { Commodity: any } | { FixedIncome: any } | { REIT: any } | { Fund: any } | { RevenueShareAgreement: any } | { StructuredProduct: any } | { Derivative: any } | { Custom: any } | { StableCoin: any } | string | Uint8Array, identifiers: Vec | (AssetIdentifier | { CUSIP: any } | { CINS: any } | { ISIN: any } | { LEI: any } | string | Uint8Array)[], fundingRound: Option | null | object | string | Uint8Array, disableIu: bool | boolean | Uint8Array) => SubmittableExtrinsic, [AssetName, Ticker, bool, AssetType, Vec, Option, bool]>; + createAsset: AugmentedSubmittable<(name: Bytes | string | Uint8Array, ticker: PolymeshPrimitivesTicker | string | Uint8Array, divisible: bool | boolean | Uint8Array, assetType: PolymeshPrimitivesAssetAssetType | { EquityCommon: any } | { EquityPreferred: any } | { Commodity: any } | { FixedIncome: any } | { REIT: any } | { Fund: any } | { RevenueShareAgreement: any } | { StructuredProduct: any } | { Derivative: any } | { Custom: any } | { StableCoin: any } | string | Uint8Array, identifiers: Vec | (PolymeshPrimitivesAssetIdentifier | { CUSIP: any } | { CINS: any } | { ISIN: any } | { LEI: any } | string | Uint8Array)[], fundingRound: Option | null | object | string | Uint8Array, disableIu: bool | boolean | Uint8Array) => SubmittableExtrinsic, [Bytes, PolymeshPrimitivesTicker, bool, PolymeshPrimitivesAssetAssetType, Vec, Option, bool]>; /** * Freezes transfers and minting of a given token. * @@ -125,7 +115,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - freeze: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array) => SubmittableExtrinsic, [Ticker]>; + freeze: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker]>; /** * Issue, or mint, new tokens to the caller, * which must be an authorized external agent. @@ -139,7 +129,7 @@ declare module '@polkadot/api/types/submittable' { * * Asset * * Portfolio **/ - issue: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, amount: Balance | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Ticker, Balance]>; + issue: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, amount: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, u128]>; /** * Makes an indivisible token divisible. * @@ -153,7 +143,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - makeDivisible: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array) => SubmittableExtrinsic, [Ticker]>; + makeDivisible: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker]>; /** * Redeems existing tokens by reducing the balance of the caller's default portfolio and the total supply of the token * @@ -171,7 +161,7 @@ declare module '@polkadot/api/types/submittable' { * * Asset * * Portfolio **/ - redeem: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, value: Balance | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Ticker, Balance]>; + redeem: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, value: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, u128]>; /** * Registers a custom asset type. * @@ -195,7 +185,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - registerTicker: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array) => SubmittableExtrinsic, [Ticker]>; + registerTicker: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker]>; /** * Remove documents for a given token. * @@ -207,7 +197,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - removeDocuments: AugmentedSubmittable<(ids: Vec | (DocumentId | AnyNumber | Uint8Array)[], ticker: Ticker | string | Uint8Array) => SubmittableExtrinsic, [Vec, Ticker]>; + removeDocuments: AugmentedSubmittable<(ids: Vec | (u32 | AnyNumber | Uint8Array)[], ticker: PolymeshPrimitivesTicker | string | Uint8Array) => SubmittableExtrinsic, [Vec, PolymeshPrimitivesTicker]>; /** * Renames a given token. * @@ -223,7 +213,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - renameAsset: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, name: AssetName | string) => SubmittableExtrinsic, [Ticker, AssetName]>; + renameAsset: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, name: Bytes | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, Bytes]>; /** * Reserve a Polymath Classic (PMC) ticker. * Must be called by root, and assigns the ticker to a systematic DID. @@ -239,7 +229,7 @@ declare module '@polkadot/api/types/submittable' { * * `TickerTooLong` if the `config` considers the `classic_ticker_import.ticker` too long. * * `TickerAlreadyRegistered` if `classic_ticker_import.ticker` was already registered. **/ - reserveClassicTicker: AugmentedSubmittable<(classicTickerImport: ClassicTickerImport | { eth_owner?: any; ticker?: any; is_contract?: any; is_created?: any } | string | Uint8Array, contractDid: IdentityId | string | Uint8Array, config: TickerRegistrationConfig | { max_ticker_length?: any; registration_length?: any } | string | Uint8Array) => SubmittableExtrinsic, [ClassicTickerImport, IdentityId, TickerRegistrationConfig]>; + reserveClassicTicker: AugmentedSubmittable<(classicTickerImport: PalletAssetClassicTickerImport | { ethOwner?: any; ticker?: any; isContract?: any; isCreated?: any } | string | Uint8Array, contractDid: PolymeshPrimitivesIdentityId | string | Uint8Array, config: PalletAssetTickerRegistrationConfig | { maxTickerLength?: any; registrationLength?: any } | string | Uint8Array) => SubmittableExtrinsic, [PalletAssetClassicTickerImport, PolymeshPrimitivesIdentityId, PalletAssetTickerRegistrationConfig]>; /** * Sets the name of the current funding round. * @@ -255,7 +245,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - setFundingRound: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, name: FundingRoundName | string) => SubmittableExtrinsic, [Ticker, FundingRoundName]>; + setFundingRound: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, name: Bytes | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, Bytes]>; /** * Unfreezes transfers and minting of a given token. * @@ -269,7 +259,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - unfreeze: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array) => SubmittableExtrinsic, [Ticker]>; + unfreeze: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker]>; /** * Updates the asset identifiers. * @@ -285,7 +275,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - updateIdentifiers: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, identifiers: Vec | (AssetIdentifier | { CUSIP: any } | { CINS: any } | { ISIN: any } | { LEI: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Ticker, Vec]>; + updateIdentifiers: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, identifiers: Vec | (PolymeshPrimitivesAssetIdentifier | { CUSIP: any } | { CINS: any } | { ISIN: any } | { LEI: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, Vec]>; /** * Generic tx **/ @@ -295,20 +285,27 @@ declare module '@polkadot/api/types/submittable' { /** * Provide a set of uncles. **/ - setUncles: AugmentedSubmittable<(newUncles: Vec
| (Header | { parentHash?: any; number?: any; stateRoot?: any; extrinsicsRoot?: any; digest?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec
]>; + setUncles: AugmentedSubmittable<(newUncles: Vec | (SpRuntimeHeader | { parentHash?: any; number?: any; stateRoot?: any; extrinsicsRoot?: any; digest?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** * Generic tx **/ [key: string]: SubmittableExtrinsicFunction; }; babe: { + /** + * Plan an epoch config change. The epoch config change is recorded and will be enacted on + * the next call to `enact_epoch_change`. The config will be activated one epoch after. + * Multiple calls to this method will replace any existing planned config change that had + * not been enacted yet. + **/ + planConfigChange: AugmentedSubmittable<(config: SpConsensusBabeDigestsNextConfigDescriptor | { V1: any } | string | Uint8Array) => SubmittableExtrinsic, [SpConsensusBabeDigestsNextConfigDescriptor]>; /** * Report authority equivocation/misbehavior. This method will verify * the equivocation proof and validate the given key ownership proof * against the extracted offender. If both are valid, the offence will * be reported. **/ - reportEquivocation: AugmentedSubmittable<(equivocationProof: BabeEquivocationProof | { offender?: any; slotNumber?: any; firstHeader?: any; secondHeader?: any } | string | Uint8Array, keyOwnerProof: KeyOwnerProof | { session?: any; trieNodes?: any; validatorCount?: any } | string | Uint8Array) => SubmittableExtrinsic, [BabeEquivocationProof, KeyOwnerProof]>; + reportEquivocation: AugmentedSubmittable<(equivocationProof: SpConsensusSlotsEquivocationProof | { offender?: any; slot?: any; firstHeader?: any; secondHeader?: any } | string | Uint8Array, keyOwnerProof: SpSessionMembershipProof | { session?: any; trieNodes?: any; validatorCount?: any } | string | Uint8Array) => SubmittableExtrinsic, [SpConsensusSlotsEquivocationProof, SpSessionMembershipProof]>; /** * Report authority equivocation/misbehavior. This method will verify * the equivocation proof and validate the given key ownership proof @@ -319,7 +316,7 @@ declare module '@polkadot/api/types/submittable' { * if the block author is defined it will be defined as the equivocation * reporter. **/ - reportEquivocationUnsigned: AugmentedSubmittable<(equivocationProof: BabeEquivocationProof | { offender?: any; slotNumber?: any; firstHeader?: any; secondHeader?: any } | string | Uint8Array, keyOwnerProof: KeyOwnerProof | { session?: any; trieNodes?: any; validatorCount?: any } | string | Uint8Array) => SubmittableExtrinsic, [BabeEquivocationProof, KeyOwnerProof]>; + reportEquivocationUnsigned: AugmentedSubmittable<(equivocationProof: SpConsensusSlotsEquivocationProof | { offender?: any; slot?: any; firstHeader?: any; secondHeader?: any } | string | Uint8Array, keyOwnerProof: SpSessionMembershipProof | { session?: any; trieNodes?: any; validatorCount?: any } | string | Uint8Array) => SubmittableExtrinsic, [SpConsensusSlotsEquivocationProof, SpSessionMembershipProof]>; /** * Generic tx **/ @@ -329,11 +326,11 @@ declare module '@polkadot/api/types/submittable' { /** * Burns the given amount of tokens from the caller's free, unlocked balance. **/ - burnAccountBalance: AugmentedSubmittable<(amount: Balance | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Balance]>; + burnAccountBalance: AugmentedSubmittable<(amount: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u128]>; /** * Move some POLYX from balance of self to balance of BRR. **/ - depositBlockRewardReserveBalance: AugmentedSubmittable<(value: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Compact]>; + depositBlockRewardReserveBalance: AugmentedSubmittable<(value: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Compact]>; /** * Exactly as `transfer`, except the origin must be root and the source account may be * specified. @@ -343,7 +340,7 @@ declare module '@polkadot/api/types/submittable' { * not assumed to be in the overlay. * # **/ - forceTransfer: AugmentedSubmittable<(source: LookupSource | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, dest: LookupSource | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, value: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [LookupSource, LookupSource, Compact]>; + forceTransfer: AugmentedSubmittable<(source: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, dest: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, value: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [MultiAddress, MultiAddress, Compact]>; /** * Set the balances of a given account. * @@ -352,7 +349,7 @@ declare module '@polkadot/api/types/submittable' { * * The dispatch origin for this call is `root`. **/ - setBalance: AugmentedSubmittable<(who: LookupSource | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, newFree: Compact | AnyNumber | Uint8Array, newReserved: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [LookupSource, Compact, Compact]>; + setBalance: AugmentedSubmittable<(who: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, newFree: Compact | AnyNumber | Uint8Array, newReserved: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [MultiAddress, Compact, Compact]>; /** * Transfer some liquid free balance to another account. * @@ -377,7 +374,7 @@ declare module '@polkadot/api/types/submittable' { * - Origin account is already in memory, so no DB operations for them. * # **/ - transfer: AugmentedSubmittable<(dest: LookupSource | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, value: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [LookupSource, Compact]>; + transfer: AugmentedSubmittable<(dest: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, value: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [MultiAddress, Compact]>; /** * Transfer the native currency with the help of identifier string * this functionality can help to differentiate the transfers. @@ -388,7 +385,13 @@ declare module '@polkadot/api/types/submittable' { * - Origin account is already in memory, so no DB operations for them. * # **/ - transferWithMemo: AugmentedSubmittable<(dest: LookupSource | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, value: Compact | AnyNumber | Uint8Array, memo: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [LookupSource, Compact, Option]>; + transferWithMemo: AugmentedSubmittable<(dest: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, value: Compact | AnyNumber | Uint8Array, memo: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [MultiAddress, Compact, Option]>; + /** + * Generic tx + **/ + [key: string]: SubmittableExtrinsicFunction; + }; + base: { /** * Generic tx **/ @@ -401,7 +404,7 @@ declare module '@polkadot/api/types/submittable' { * ## Errors * - `BadAdmin` if `origin` is not `Self::admin()` account. **/ - addFreezeAdmin: AugmentedSubmittable<(freezeAdmin: AccountId | string | Uint8Array) => SubmittableExtrinsic, [AccountId]>; + addFreezeAdmin: AugmentedSubmittable<(freezeAdmin: AccountId32 | string | Uint8Array) => SubmittableExtrinsic, [AccountId32]>; /** * Proposes a vector of bridge transactions. The vector is processed until the first * proposal which causes an error, in which case the error is returned and the rest of @@ -413,21 +416,21 @@ declare module '@polkadot/api/types/submittable' { * # Weight * `500_000_000 + 7_000_000 * bridge_txs.len()` **/ - batchProposeBridgeTx: AugmentedSubmittable<(bridgeTxs: Vec | (BridgeTx | { nonce?: any; recipient?: any; amount?: any; tx_hash?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; + batchProposeBridgeTx: AugmentedSubmittable<(bridgeTxs: Vec | (PalletBridgeBridgeTx | { nonce?: any; recipient?: any; amount?: any; txHash?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** * Changes the bridge admin key. * * ## Errors * - `BadAdmin` if `origin` is not `Self::admin()` account. **/ - changeAdmin: AugmentedSubmittable<(admin: AccountId | string | Uint8Array) => SubmittableExtrinsic, [AccountId]>; + changeAdmin: AugmentedSubmittable<(admin: AccountId32 | string | Uint8Array) => SubmittableExtrinsic, [AccountId32]>; /** * Changes the bridge limit exempted list. * * ## Errors * - `BadAdmin` if `origin` is not `Self::admin()` account. **/ - changeBridgeExempted: AugmentedSubmittable<(exempted: Vec> | ([IdentityId | string | Uint8Array, bool | boolean | Uint8Array])[]) => SubmittableExtrinsic, [Vec>]>; + changeBridgeExempted: AugmentedSubmittable<(exempted: Vec> | ([PolymeshPrimitivesIdentityId | string | Uint8Array, bool | boolean | Uint8Array])[]) => SubmittableExtrinsic, [Vec>]>; /** * Changes the bridge limits. * @@ -435,21 +438,21 @@ declare module '@polkadot/api/types/submittable' { * - `BadAdmin` if `origin` is not `Self::admin()` account. * - `DivisionByZero` if `duration` is zero. **/ - changeBridgeLimit: AugmentedSubmittable<(amount: Balance | AnyNumber | Uint8Array, duration: BlockNumber | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Balance, BlockNumber]>; + changeBridgeLimit: AugmentedSubmittable<(amount: u128 | AnyNumber | Uint8Array, duration: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u128, u32]>; /** * Changes the controller account as admin. * * ## Errors * - `BadAdmin` if `origin` is not `Self::admin()` account. **/ - changeController: AugmentedSubmittable<(controller: AccountId | string | Uint8Array) => SubmittableExtrinsic, [AccountId]>; + changeController: AugmentedSubmittable<(controller: AccountId32 | string | Uint8Array) => SubmittableExtrinsic, [AccountId32]>; /** * Changes the timelock period. * * ## Errors * - `BadAdmin` if `origin` is not `Self::admin()` account. **/ - changeTimelock: AugmentedSubmittable<(timelock: BlockNumber | AnyNumber | Uint8Array) => SubmittableExtrinsic, [BlockNumber]>; + changeTimelock: AugmentedSubmittable<(timelock: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32]>; /** * Forces handling a transaction by bypassing the bridge limit and timelock. * @@ -457,7 +460,7 @@ declare module '@polkadot/api/types/submittable' { * - `BadAdmin` if `origin` is not `Self::admin()` account. * - `NoValidCdd` if `bridge_tx.recipient` does not have a valid CDD claim. **/ - forceHandleBridgeTx: AugmentedSubmittable<(bridgeTx: BridgeTx | { nonce?: any; recipient?: any; amount?: any; tx_hash?: any } | string | Uint8Array) => SubmittableExtrinsic, [BridgeTx]>; + forceHandleBridgeTx: AugmentedSubmittable<(bridgeTx: PalletBridgeBridgeTx | { nonce?: any; recipient?: any; amount?: any; txHash?: any } | string | Uint8Array) => SubmittableExtrinsic, [PalletBridgeBridgeTx]>; /** * Freezes transaction handling in the bridge module if it is not already frozen. When the * bridge is frozen, attempted transactions get postponed instead of getting handled. @@ -476,7 +479,7 @@ declare module '@polkadot/api/types/submittable' { * # Weight * `400_000_000 + 2_000_000 * bridge_txs.len()` **/ - freezeTxs: AugmentedSubmittable<(bridgeTxs: Vec | (BridgeTx | { nonce?: any; recipient?: any; amount?: any; tx_hash?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; + freezeTxs: AugmentedSubmittable<(bridgeTxs: Vec | (PalletBridgeBridgeTx | { nonce?: any; recipient?: any; amount?: any; txHash?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** * Handles an approved bridge transaction proposal. * @@ -485,7 +488,7 @@ declare module '@polkadot/api/types/submittable' { * - `TimelockedTx` if the transaction status is `Timelocked`. * - `ProposalAlreadyHandled` if the transaction status is `Handled`. **/ - handleBridgeTx: AugmentedSubmittable<(bridgeTx: BridgeTx | { nonce?: any; recipient?: any; amount?: any; tx_hash?: any } | string | Uint8Array) => SubmittableExtrinsic, [BridgeTx]>; + handleBridgeTx: AugmentedSubmittable<(bridgeTx: PalletBridgeBridgeTx | { nonce?: any; recipient?: any; amount?: any; txHash?: any } | string | Uint8Array) => SubmittableExtrinsic, [PalletBridgeBridgeTx]>; /** * Root callable extrinsic, used as an internal call to handle a scheduled timelocked bridge transaction. * @@ -494,7 +497,7 @@ declare module '@polkadot/api/types/submittable' { * - `ProposalAlreadyHandled` if transaction status is `Handled`. * - `FrozenTx` if transaction status is `Frozen`. **/ - handleScheduledBridgeTx: AugmentedSubmittable<(bridgeTx: BridgeTx | { nonce?: any; recipient?: any; amount?: any; tx_hash?: any } | string | Uint8Array) => SubmittableExtrinsic, [BridgeTx]>; + handleScheduledBridgeTx: AugmentedSubmittable<(bridgeTx: PalletBridgeBridgeTx | { nonce?: any; recipient?: any; amount?: any; txHash?: any } | string | Uint8Array) => SubmittableExtrinsic, [PalletBridgeBridgeTx]>; /** * Proposes a bridge transaction, which amounts to making a multisig proposal for the * bridge transaction if the transaction is new or approving an existing proposal if the @@ -503,14 +506,14 @@ declare module '@polkadot/api/types/submittable' { * ## Errors * - `ControllerNotSet` if `Controllers` was not set. **/ - proposeBridgeTx: AugmentedSubmittable<(bridgeTx: BridgeTx | { nonce?: any; recipient?: any; amount?: any; tx_hash?: any } | string | Uint8Array) => SubmittableExtrinsic, [BridgeTx]>; + proposeBridgeTx: AugmentedSubmittable<(bridgeTx: PalletBridgeBridgeTx | { nonce?: any; recipient?: any; amount?: any; txHash?: any } | string | Uint8Array) => SubmittableExtrinsic, [PalletBridgeBridgeTx]>; /** * Remove a freeze admin. * * ## Errors * - `BadAdmin` if `origin` is not `Self::admin()` account. **/ - removeFreezeAdmin: AugmentedSubmittable<(freezeAdmin: AccountId | string | Uint8Array) => SubmittableExtrinsic, [AccountId]>; + removeFreezeAdmin: AugmentedSubmittable<(freezeAdmin: AccountId32 | string | Uint8Array) => SubmittableExtrinsic, [AccountId32]>; /** * Remove given bridge transactions. * @@ -518,7 +521,7 @@ declare module '@polkadot/api/types/submittable' { * - `BadAdmin` if `origin` is not `Self::admin()` account. * - `NotFrozen` if a tx in `bridge_txs` is not frozen. **/ - removeTxs: AugmentedSubmittable<(bridgeTxs: Vec | (BridgeTx | { nonce?: any; recipient?: any; amount?: any; tx_hash?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; + removeTxs: AugmentedSubmittable<(bridgeTxs: Vec | (PalletBridgeBridgeTx | { nonce?: any; recipient?: any; amount?: any; txHash?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** * Unfreezes transaction handling in the bridge module if it is frozen. * @@ -536,7 +539,7 @@ declare module '@polkadot/api/types/submittable' { * # Weight * `400_000_000 + 7_000_000 * bridge_txs.len()` **/ - unfreezeTxs: AugmentedSubmittable<(bridgeTxs: Vec | (BridgeTx | { nonce?: any; recipient?: any; amount?: any; tx_hash?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; + unfreezeTxs: AugmentedSubmittable<(bridgeTxs: Vec | (PalletBridgeBridgeTx | { nonce?: any; recipient?: any; amount?: any; txHash?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** * Generic tx **/ @@ -568,7 +571,7 @@ declare module '@polkadot/api/types/submittable' { * - `BalanceAmountProductSupplyDivisionFailed` if `ba * supply` would overflow. * - Other errors can occur if the compliance manager rejects the transfer. **/ - claim: AugmentedSubmittable<(caId: CAId | { ticker?: any; local_id?: any } | string | Uint8Array) => SubmittableExtrinsic, [CAId]>; + claim: AugmentedSubmittable<(caId: PalletCorporateActionsCaId | { ticker?: any; localId?: any } | string | Uint8Array) => SubmittableExtrinsic, [PalletCorporateActionsCaId]>; /** * Start and attach a capital distribution, to the CA identified by `ca_id`, * with `amount` funds in `currency` withdrawn from `portfolio` belonging to `origin`'s DID. @@ -613,7 +616,7 @@ declare module '@polkadot/api/types/submittable' { * * Asset * * Portfolio **/ - distribute: AugmentedSubmittable<(caId: CAId | { ticker?: any; local_id?: any } | string | Uint8Array, portfolio: Option | null | object | string | Uint8Array, currency: Ticker | string | Uint8Array, perShare: Balance | AnyNumber | Uint8Array, amount: Balance | AnyNumber | Uint8Array, paymentAt: Moment | AnyNumber | Uint8Array, expiresAt: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [CAId, Option, Ticker, Balance, Balance, Moment, Option]>; + distribute: AugmentedSubmittable<(caId: PalletCorporateActionsCaId | { ticker?: any; localId?: any } | string | Uint8Array, portfolio: Option | null | object | string | Uint8Array, currency: PolymeshPrimitivesTicker | string | Uint8Array, perShare: u128 | AnyNumber | Uint8Array, amount: u128 | AnyNumber | Uint8Array, paymentAt: u64 | AnyNumber | Uint8Array, expiresAt: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PalletCorporateActionsCaId, Option, PolymeshPrimitivesTicker, u128, u128, u64, Option]>; /** * Push benefit of an ongoing distribution to the given `holder`. * @@ -640,7 +643,7 @@ declare module '@polkadot/api/types/submittable' { * - `BalanceAmountProductSupplyDivisionFailed` if `ba * supply` would overflow. * - Other errors can occur if the compliance manager rejects the transfer. **/ - pushBenefit: AugmentedSubmittable<(caId: CAId | { ticker?: any; local_id?: any } | string | Uint8Array, holder: IdentityId | string | Uint8Array) => SubmittableExtrinsic, [CAId, IdentityId]>; + pushBenefit: AugmentedSubmittable<(caId: PalletCorporateActionsCaId | { ticker?: any; localId?: any } | string | Uint8Array, holder: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PalletCorporateActionsCaId, PolymeshPrimitivesIdentityId]>; /** * Assuming a distribution has expired, * unlock the remaining amount in the distributor portfolio. @@ -654,7 +657,7 @@ declare module '@polkadot/api/types/submittable' { * - `AlreadyReclaimed` if this function has already been called successfully. * - `NotExpired` if `now < expiry`. **/ - reclaim: AugmentedSubmittable<(caId: CAId | { ticker?: any; local_id?: any } | string | Uint8Array) => SubmittableExtrinsic, [CAId]>; + reclaim: AugmentedSubmittable<(caId: PalletCorporateActionsCaId | { ticker?: any; localId?: any } | string | Uint8Array) => SubmittableExtrinsic, [PalletCorporateActionsCaId]>; /** * Removes a distribution that hasn't started yet, * unlocking the full amount in the distributor portfolio. @@ -668,7 +671,7 @@ declare module '@polkadot/api/types/submittable' { * - `NoSuchDistribution` if there's no capital distribution for `ca_id`. * - `DistributionStarted` if `payment_at <= now`. **/ - removeDistribution: AugmentedSubmittable<(caId: CAId | { ticker?: any; local_id?: any } | string | Uint8Array) => SubmittableExtrinsic, [CAId]>; + removeDistribution: AugmentedSubmittable<(caId: PalletCorporateActionsCaId | { ticker?: any; localId?: any } | string | Uint8Array) => SubmittableExtrinsic, [PalletCorporateActionsCaId]>; /** * Generic tx **/ @@ -695,7 +698,7 @@ declare module '@polkadot/api/types/submittable' { * * `origin` - Origin representing `AddOrigin` or root * * `who` - IdentityId to be added to the group. **/ - addMember: AugmentedSubmittable<(who: IdentityId | string | Uint8Array) => SubmittableExtrinsic, [IdentityId]>; + addMember: AugmentedSubmittable<(who: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId]>; /** * Disables a member at specific moment. * @@ -714,7 +717,7 @@ declare module '@polkadot/api/types/submittable' { * * `expiry` - Time-stamp when `who` is removed from CDD. As soon as it is expired, the * generated claims will be "invalid" as `who` is not considered a member of the group. **/ - disableMember: AugmentedSubmittable<(who: IdentityId | string | Uint8Array, expiry: Option | null | object | string | Uint8Array, at: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [IdentityId, Option, Option]>; + disableMember: AugmentedSubmittable<(who: PolymeshPrimitivesIdentityId | string | Uint8Array, expiry: Option | null | object | string | Uint8Array, at: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, Option, Option]>; /** * Removes a member `who` from the set. May only be called from `RemoveOrigin` or root. * @@ -727,7 +730,7 @@ declare module '@polkadot/api/types/submittable' { * * `origin` - Origin representing `RemoveOrigin` or root * * `who` - IdentityId to be removed from the group. **/ - removeMember: AugmentedSubmittable<(who: IdentityId | string | Uint8Array) => SubmittableExtrinsic, [IdentityId]>; + removeMember: AugmentedSubmittable<(who: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId]>; /** * Changes the membership to a new set, disregarding the existing membership. * May only be called from `ResetOrigin` or root. @@ -736,14 +739,14 @@ declare module '@polkadot/api/types/submittable' { * * `origin` - Origin representing `ResetOrigin` or root * * `members` - New set of identities **/ - resetMembers: AugmentedSubmittable<(members: Vec | (IdentityId | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; + resetMembers: AugmentedSubmittable<(members: Vec | (PolymeshPrimitivesIdentityId | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** * Change this group's limit for how many concurrent active members they may be. * * # Arguments * * `limit` - the number of active members there may be concurrently. **/ - setActiveMembersLimit: AugmentedSubmittable<(limit: MemberCount | AnyNumber | Uint8Array) => SubmittableExtrinsic, [MemberCount]>; + setActiveMembersLimit: AugmentedSubmittable<(limit: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32]>; /** * Swaps out one member `remove` for another member `add`. * @@ -754,7 +757,7 @@ declare module '@polkadot/api/types/submittable' { * * `remove` - IdentityId to be removed from the group. * * `add` - IdentityId to be added in place of `remove`. **/ - swapMember: AugmentedSubmittable<(remove: IdentityId | string | Uint8Array, add: IdentityId | string | Uint8Array) => SubmittableExtrinsic, [IdentityId, IdentityId]>; + swapMember: AugmentedSubmittable<(remove: PolymeshPrimitivesIdentityId | string | Uint8Array, add: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; /** * Generic tx **/ @@ -772,7 +775,7 @@ declare module '@polkadot/api/types/submittable' { * - `UnauthorizedAgent` if the DID of `origin` isn't a permissioned agent for `ticker`. * - `CounterOverflow` if the total checkpoint counter would overflow. **/ - createCheckpoint: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array) => SubmittableExtrinsic, [Ticker]>; + createCheckpoint: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker]>; /** * Creates a schedule generating checkpoints * in the future at either a fixed time or at intervals. @@ -794,7 +797,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - createSchedule: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, schedule: ScheduleSpec | { start?: any; period?: any; remaining?: any } | string | Uint8Array) => SubmittableExtrinsic, [Ticker, ScheduleSpec]>; + createSchedule: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, schedule: PalletAssetCheckpointScheduleSpec | { start?: any; period?: any; remaining?: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, PalletAssetCheckpointScheduleSpec]>; /** * Removes the checkpoint schedule of an asset identified by `id`. * @@ -811,7 +814,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - removeSchedule: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, id: ScheduleId | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Ticker, ScheduleId]>; + removeSchedule: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, id: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, u64]>; /** * Sets the max complexity of a schedule set for an arbitrary ticker to `max_complexity`. * The new maximum is not enforced retroactively, @@ -850,7 +853,7 @@ declare module '@polkadot/api/types/submittable' { * * `origin` - Origin representing `AddOrigin` or root * * `who` - IdentityId to be added to the group. **/ - addMember: AugmentedSubmittable<(who: IdentityId | string | Uint8Array) => SubmittableExtrinsic, [IdentityId]>; + addMember: AugmentedSubmittable<(who: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId]>; /** * Disables a member at specific moment. * @@ -869,7 +872,7 @@ declare module '@polkadot/api/types/submittable' { * * `expiry` - Time-stamp when `who` is removed from CDD. As soon as it is expired, the * generated claims will be "invalid" as `who` is not considered a member of the group. **/ - disableMember: AugmentedSubmittable<(who: IdentityId | string | Uint8Array, expiry: Option | null | object | string | Uint8Array, at: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [IdentityId, Option, Option]>; + disableMember: AugmentedSubmittable<(who: PolymeshPrimitivesIdentityId | string | Uint8Array, expiry: Option | null | object | string | Uint8Array, at: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, Option, Option]>; /** * Removes a member `who` from the set. May only be called from `RemoveOrigin` or root. * @@ -882,7 +885,7 @@ declare module '@polkadot/api/types/submittable' { * * `origin` - Origin representing `RemoveOrigin` or root * * `who` - IdentityId to be removed from the group. **/ - removeMember: AugmentedSubmittable<(who: IdentityId | string | Uint8Array) => SubmittableExtrinsic, [IdentityId]>; + removeMember: AugmentedSubmittable<(who: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId]>; /** * Changes the membership to a new set, disregarding the existing membership. * May only be called from `ResetOrigin` or root. @@ -891,14 +894,14 @@ declare module '@polkadot/api/types/submittable' { * * `origin` - Origin representing `ResetOrigin` or root * * `members` - New set of identities **/ - resetMembers: AugmentedSubmittable<(members: Vec | (IdentityId | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; + resetMembers: AugmentedSubmittable<(members: Vec | (PolymeshPrimitivesIdentityId | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** * Change this group's limit for how many concurrent active members they may be. * * # Arguments * * `limit` - the number of active members there may be concurrently. **/ - setActiveMembersLimit: AugmentedSubmittable<(limit: MemberCount | AnyNumber | Uint8Array) => SubmittableExtrinsic, [MemberCount]>; + setActiveMembersLimit: AugmentedSubmittable<(limit: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32]>; /** * Swaps out one member `remove` for another member `add`. * @@ -909,7 +912,7 @@ declare module '@polkadot/api/types/submittable' { * * `remove` - IdentityId to be removed from the group. * * `add` - IdentityId to be added in place of `remove`. **/ - swapMember: AugmentedSubmittable<(remove: IdentityId | string | Uint8Array, add: IdentityId | string | Uint8Array) => SubmittableExtrinsic, [IdentityId, IdentityId]>; + swapMember: AugmentedSubmittable<(remove: PolymeshPrimitivesIdentityId | string | Uint8Array, add: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; /** * Generic tx **/ @@ -929,7 +932,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - addComplianceRequirement: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, senderConditions: Vec | (Condition | { condition_type?: any; issuers?: any } | string | Uint8Array)[], receiverConditions: Vec | (Condition | { condition_type?: any; issuers?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Ticker, Vec, Vec]>; + addComplianceRequirement: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, senderConditions: Vec | (PolymeshPrimitivesCondition | { conditionType?: any; issuers?: any } | string | Uint8Array)[], receiverConditions: Vec | (PolymeshPrimitivesCondition | { conditionType?: any; issuers?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, Vec, Vec]>; /** * Adds another default trusted claim issuer at the ticker level. * @@ -941,7 +944,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - addDefaultTrustedClaimIssuer: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, issuer: TrustedIssuer | { issuer?: any; trusted_for?: any } | string | Uint8Array) => SubmittableExtrinsic, [Ticker, TrustedIssuer]>; + addDefaultTrustedClaimIssuer: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, issuer: PolymeshPrimitivesConditionTrustedIssuer | { issuer?: any; trustedFor?: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, PolymeshPrimitivesConditionTrustedIssuer]>; /** * Modify an existing compliance requirement of a given ticker. * @@ -953,7 +956,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - changeComplianceRequirement: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, newReq: ComplianceRequirement | { sender_conditions?: any; receiver_conditions?: any; id?: any } | string | Uint8Array) => SubmittableExtrinsic, [Ticker, ComplianceRequirement]>; + changeComplianceRequirement: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, newReq: PolymeshPrimitivesComplianceManagerComplianceRequirement | { senderConditions?: any; receiverConditions?: any; id?: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, PolymeshPrimitivesComplianceManagerComplianceRequirement]>; /** * Pauses the verification of conditions for `ticker` during transfers. * @@ -964,7 +967,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - pauseAssetCompliance: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array) => SubmittableExtrinsic, [Ticker]>; + pauseAssetCompliance: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker]>; /** * Removes a compliance requirement from an asset's compliance. * @@ -976,7 +979,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - removeComplianceRequirement: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, id: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Ticker, u32]>; + removeComplianceRequirement: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, id: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, u32]>; /** * Removes the given `issuer` from the set of default trusted claim issuers at the ticker level. * @@ -988,7 +991,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - removeDefaultTrustedClaimIssuer: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, issuer: IdentityId | string | Uint8Array) => SubmittableExtrinsic, [Ticker, IdentityId]>; + removeDefaultTrustedClaimIssuer: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, issuer: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityId]>; /** * Replaces an asset's compliance by ticker with a new compliance. * @@ -1006,7 +1009,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - replaceAssetCompliance: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, assetCompliance: Vec | (ComplianceRequirement | { sender_conditions?: any; receiver_conditions?: any; id?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Ticker, Vec]>; + replaceAssetCompliance: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, assetCompliance: Vec | (PolymeshPrimitivesComplianceManagerComplianceRequirement | { senderConditions?: any; receiverConditions?: any; id?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, Vec]>; /** * Removes an asset's compliance * @@ -1017,7 +1020,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - resetAssetCompliance: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array) => SubmittableExtrinsic, [Ticker]>; + resetAssetCompliance: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker]>; /** * Resumes the verification of conditions for `ticker` during transfers. * @@ -1028,7 +1031,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - resumeAssetCompliance: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array) => SubmittableExtrinsic, [Ticker]>; + resumeAssetCompliance: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker]>; /** * Generic tx **/ @@ -1052,7 +1055,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - changeRecordDate: AugmentedSubmittable<(caId: CAId | { ticker?: any; local_id?: any } | string | Uint8Array, recordDate: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [CAId, Option]>; + changeRecordDate: AugmentedSubmittable<(caId: PalletCorporateActionsCaId | { ticker?: any; localId?: any } | string | Uint8Array, recordDate: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PalletCorporateActionsCaId, Option]>; /** * Initiates a CA for `ticker` of `kind` with `details` and other provided arguments. * @@ -1085,7 +1088,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - initiateCorporateAction: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, kind: CAKind | 'PredictableBenefit' | 'UnpredictableBenefit' | 'IssuerNotice' | 'Reorganization' | 'Other' | number | Uint8Array, declDate: Moment | AnyNumber | Uint8Array, recordDate: Option | null | object | string | Uint8Array, details: CADetails | string, targets: Option | null | object | string | Uint8Array, defaultWithholdingTax: Option | null | object | string | Uint8Array, withholdingTax: Option>> | null | object | string | Uint8Array) => SubmittableExtrinsic, [Ticker, CAKind, Moment, Option, CADetails, Option, Option, Option>>]>; + initiateCorporateAction: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, kind: PalletCorporateActionsCaKind | 'PredictableBenefit' | 'UnpredictableBenefit' | 'IssuerNotice' | 'Reorganization' | 'Other' | number | Uint8Array, declDate: u64 | AnyNumber | Uint8Array, recordDate: Option | null | object | string | Uint8Array, details: Bytes | string | Uint8Array, targets: Option | null | object | string | Uint8Array, defaultWithholdingTax: Option | null | object | string | Uint8Array, withholdingTax: Option>> | null | object | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, PalletCorporateActionsCaKind, u64, Option, Bytes, Option, Option, Option>>]>; /** * Link the given CA `id` to the given `docs`. * Any previous links for the CA are removed in favor of `docs`. @@ -1106,7 +1109,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - linkCaDoc: AugmentedSubmittable<(id: CAId | { ticker?: any; local_id?: any } | string | Uint8Array, docs: Vec | (DocumentId | AnyNumber | Uint8Array)[]) => SubmittableExtrinsic, [CAId, Vec]>; + linkCaDoc: AugmentedSubmittable<(id: PalletCorporateActionsCaId | { ticker?: any; localId?: any } | string | Uint8Array, docs: Vec | (u32 | AnyNumber | Uint8Array)[]) => SubmittableExtrinsic, [PalletCorporateActionsCaId, Vec]>; /** * Removes the CA identified by `ca_id`. * @@ -1127,7 +1130,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - removeCa: AugmentedSubmittable<(caId: CAId | { ticker?: any; local_id?: any } | string | Uint8Array) => SubmittableExtrinsic, [CAId]>; + removeCa: AugmentedSubmittable<(caId: PalletCorporateActionsCaId | { ticker?: any; localId?: any } | string | Uint8Array) => SubmittableExtrinsic, [PalletCorporateActionsCaId]>; /** * Set the default CA `TargetIdentities` to `targets`. * @@ -1143,7 +1146,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - setDefaultTargets: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, targets: TargetIdentities | { identities?: any; treatment?: any } | string | Uint8Array) => SubmittableExtrinsic, [Ticker, TargetIdentities]>; + setDefaultTargets: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, targets: PalletCorporateActionsTargetIdentities | { identities?: any; treatment?: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, PalletCorporateActionsTargetIdentities]>; /** * Set the default withholding tax for all DIDs and CAs relevant to this `ticker`. * @@ -1158,7 +1161,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - setDefaultWithholdingTax: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, tax: Tax | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Ticker, Tax]>; + setDefaultWithholdingTax: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, tax: Permill | AnyNumber | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, Permill]>; /** * Set the withholding tax of `ticker` for `taxed_did` to `tax`. * If `Some(tax)`, this overrides the default withholding tax of `ticker` to `tax` for `taxed_did`. @@ -1177,7 +1180,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - setDidWithholdingTax: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, taxedDid: IdentityId | string | Uint8Array, tax: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [Ticker, IdentityId, Option]>; + setDidWithholdingTax: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, taxedDid: PolymeshPrimitivesIdentityId | string | Uint8Array, tax: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityId, Option]>; /** * Set the max `length` of `details` in terms of bytes. * May only be called via a PIP. @@ -1217,7 +1220,7 @@ declare module '@polkadot/api/types/submittable' { * - `TooLong` if any of the embedded strings in `meta` are too long. * - `InsufficientBalance` if the protocol fee couldn't be charged. **/ - attachBallot: AugmentedSubmittable<(caId: CAId | { ticker?: any; local_id?: any } | string | Uint8Array, range: BallotTimeRange | { start?: any; end?: any } | string | Uint8Array, meta: BallotMeta | { title?: any; motions?: any } | string | Uint8Array, rcv: bool | boolean | Uint8Array) => SubmittableExtrinsic, [CAId, BallotTimeRange, BallotMeta, bool]>; + attachBallot: AugmentedSubmittable<(caId: PalletCorporateActionsCaId | { ticker?: any; localId?: any } | string | Uint8Array, range: PalletCorporateActionsBallotBallotTimeRange | { start?: any; end?: any } | string | Uint8Array, meta: PalletCorporateActionsBallotBallotMeta | { title?: any; motions?: any } | string | Uint8Array, rcv: bool | boolean | Uint8Array) => SubmittableExtrinsic, [PalletCorporateActionsCaId, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotMeta, bool]>; /** * Amend the end date of the ballot of the CA identified by `ca_id`. * @@ -1232,7 +1235,7 @@ declare module '@polkadot/api/types/submittable' { * - `VotingAlreadyStarted` if `start >= now`, where `now` is the current time. * - `StartAfterEnd` if `start > end`. **/ - changeEnd: AugmentedSubmittable<(caId: CAId | { ticker?: any; local_id?: any } | string | Uint8Array, end: Moment | AnyNumber | Uint8Array) => SubmittableExtrinsic, [CAId, Moment]>; + changeEnd: AugmentedSubmittable<(caId: PalletCorporateActionsCaId | { ticker?: any; localId?: any } | string | Uint8Array, end: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [PalletCorporateActionsCaId, u64]>; /** * Amend the metadata (title, motions, etc.) of the ballot of the CA identified by `ca_id`. * @@ -1248,7 +1251,7 @@ declare module '@polkadot/api/types/submittable' { * - `NumberOfChoicesOverflow` if the total choice in `meta` overflows `usize`. * - `TooLong` if any of the embedded strings in `meta` are too long. **/ - changeMeta: AugmentedSubmittable<(caId: CAId | { ticker?: any; local_id?: any } | string | Uint8Array, meta: BallotMeta | { title?: any; motions?: any } | string | Uint8Array) => SubmittableExtrinsic, [CAId, BallotMeta]>; + changeMeta: AugmentedSubmittable<(caId: PalletCorporateActionsCaId | { ticker?: any; localId?: any } | string | Uint8Array, meta: PalletCorporateActionsBallotBallotMeta | { title?: any; motions?: any } | string | Uint8Array) => SubmittableExtrinsic, [PalletCorporateActionsCaId, PalletCorporateActionsBallotBallotMeta]>; /** * Amend RCV support for the ballot of the CA identified by `ca_id`. * @@ -1262,7 +1265,7 @@ declare module '@polkadot/api/types/submittable' { * - `NoSuchBallot` if `ca_id` does not identify a ballot. * - `VotingAlreadyStarted` if `start >= now`, where `now` is the current time. **/ - changeRcv: AugmentedSubmittable<(caId: CAId | { ticker?: any; local_id?: any } | string | Uint8Array, rcv: bool | boolean | Uint8Array) => SubmittableExtrinsic, [CAId, bool]>; + changeRcv: AugmentedSubmittable<(caId: PalletCorporateActionsCaId | { ticker?: any; localId?: any } | string | Uint8Array, rcv: bool | boolean | Uint8Array) => SubmittableExtrinsic, [PalletCorporateActionsCaId, bool]>; /** * Remove the ballot of the CA identified by `ca_id`. * @@ -1275,7 +1278,7 @@ declare module '@polkadot/api/types/submittable' { * - `NoSuchBallot` if `ca_id` does not identify a ballot. * - `VotingAlreadyStarted` if `start >= now`, where `now` is the current time. **/ - removeBallot: AugmentedSubmittable<(caId: CAId | { ticker?: any; local_id?: any } | string | Uint8Array) => SubmittableExtrinsic, [CAId]>; + removeBallot: AugmentedSubmittable<(caId: PalletCorporateActionsCaId | { ticker?: any; localId?: any } | string | Uint8Array) => SubmittableExtrinsic, [PalletCorporateActionsCaId]>; /** * Cast `votes` in the ballot attached to the CA identified by `ca_id`. * @@ -1295,7 +1298,7 @@ declare module '@polkadot/api/types/submittable' { * - `InsufficientVotes` if the voting power used for any motion in `votes` * exceeds `origin`'s DID's voting power. **/ - vote: AugmentedSubmittable<(caId: CAId | { ticker?: any; local_id?: any } | string | Uint8Array, votes: Vec | (BallotVote | { power?: any; fallback?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [CAId, Vec]>; + vote: AugmentedSubmittable<(caId: PalletCorporateActionsCaId | { ticker?: any; localId?: any } | string | Uint8Array, votes: Vec | (PalletCorporateActionsBallotBallotVote | { power?: any; fallback?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [PalletCorporateActionsCaId, Vec]>; /** * Generic tx **/ @@ -1315,7 +1318,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - abdicate: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array) => SubmittableExtrinsic, [Ticker]>; + abdicate: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker]>; /** * Accept an authorization by an agent "Alice" who issued `auth_id` * to also become an agent of the ticker Alice specified. @@ -1353,7 +1356,7 @@ declare module '@polkadot/api/types/submittable' { * * Asset * * Agent **/ - changeGroup: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, agent: IdentityId | string | Uint8Array, group: AgentGroup | { Full: any } | { Custom: any } | { ExceptMeta: any } | { PolymeshV1CAA: any } | { PolymeshV1PIA: any } | string | Uint8Array) => SubmittableExtrinsic, [Ticker, IdentityId, AgentGroup]>; + changeGroup: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, agent: PolymeshPrimitivesIdentityId | string | Uint8Array, group: PolymeshPrimitivesAgentAgentGroup | { Full: any } | { Custom: any } | { ExceptMeta: any } | { PolymeshV1CAA: any } | { PolymeshV1PIA: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityId, PolymeshPrimitivesAgentAgentGroup]>; /** * Creates a custom agent group (AG) for the given `ticker`. * @@ -1374,7 +1377,7 @@ declare module '@polkadot/api/types/submittable' { * * Asset * * Agent **/ - createGroup: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, perms: ExtrinsicPermissions | { Whole: any } | { These: any } | { Except: any } | string | Uint8Array) => SubmittableExtrinsic, [Ticker, ExtrinsicPermissions]>; + createGroup: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, perms: PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions | { Whole: any } | { These: any } | { Except: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions]>; /** * Remove the given `agent` from `ticker`. * @@ -1391,7 +1394,7 @@ declare module '@polkadot/api/types/submittable' { * * Asset * * Agent **/ - removeAgent: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, agent: IdentityId | string | Uint8Array) => SubmittableExtrinsic, [Ticker, IdentityId]>; + removeAgent: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, agent: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityId]>; /** * Updates the permissions of the custom AG identified by `id`, for the given `ticker`. * @@ -1409,7 +1412,7 @@ declare module '@polkadot/api/types/submittable' { * * Asset * * Agent **/ - setGroupPermissions: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, id: AGId | AnyNumber | Uint8Array, perms: ExtrinsicPermissions | { Whole: any } | { These: any } | { Except: any } | string | Uint8Array) => SubmittableExtrinsic, [Ticker, AGId, ExtrinsicPermissions]>; + setGroupPermissions: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, id: u32 | AnyNumber | Uint8Array, perms: PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions | { Whole: any } | { These: any } | { Except: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, u32, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions]>; /** * Generic tx **/ @@ -1425,14 +1428,14 @@ declare module '@polkadot/api/types/submittable' { * will start the new authority set using the given finalized block as base. * Only callable by root. **/ - noteStalled: AugmentedSubmittable<(delay: BlockNumber | AnyNumber | Uint8Array, bestFinalizedBlockNumber: BlockNumber | AnyNumber | Uint8Array) => SubmittableExtrinsic, [BlockNumber, BlockNumber]>; + noteStalled: AugmentedSubmittable<(delay: u32 | AnyNumber | Uint8Array, bestFinalizedBlockNumber: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32, u32]>; /** * Report voter equivocation/misbehavior. This method will verify the * equivocation proof and validate the given key ownership proof * against the extracted offender. If both are valid, the offence * will be reported. **/ - reportEquivocation: AugmentedSubmittable<(equivocationProof: GrandpaEquivocationProof | { setId?: any; equivocation?: any } | string | Uint8Array, keyOwnerProof: KeyOwnerProof | { session?: any; trieNodes?: any; validatorCount?: any } | string | Uint8Array) => SubmittableExtrinsic, [GrandpaEquivocationProof, KeyOwnerProof]>; + reportEquivocation: AugmentedSubmittable<(equivocationProof: SpFinalityGrandpaEquivocationProof | { setId?: any; equivocation?: any } | string | Uint8Array, keyOwnerProof: SpSessionMembershipProof | { session?: any; trieNodes?: any; validatorCount?: any } | string | Uint8Array) => SubmittableExtrinsic, [SpFinalityGrandpaEquivocationProof, SpSessionMembershipProof]>; /** * Report voter equivocation/misbehavior. This method will verify the * equivocation proof and validate the given key ownership proof @@ -1444,7 +1447,7 @@ declare module '@polkadot/api/types/submittable' { * if the block author is defined it will be defined as the equivocation * reporter. **/ - reportEquivocationUnsigned: AugmentedSubmittable<(equivocationProof: GrandpaEquivocationProof | { setId?: any; equivocation?: any } | string | Uint8Array, keyOwnerProof: KeyOwnerProof | { session?: any; trieNodes?: any; validatorCount?: any } | string | Uint8Array) => SubmittableExtrinsic, [GrandpaEquivocationProof, KeyOwnerProof]>; + reportEquivocationUnsigned: AugmentedSubmittable<(equivocationProof: SpFinalityGrandpaEquivocationProof | { setId?: any; equivocation?: any } | string | Uint8Array, keyOwnerProof: SpSessionMembershipProof | { session?: any; trieNodes?: any; validatorCount?: any } | string | Uint8Array) => SubmittableExtrinsic, [SpFinalityGrandpaEquivocationProof, SpSessionMembershipProof]>; /** * Generic tx **/ @@ -1470,13 +1473,13 @@ declare module '@polkadot/api/types/submittable' { /** * Adds an authorization. **/ - addAuthorization: AugmentedSubmittable<(target: Signatory | { Identity: any } | { Account: any } | string | Uint8Array, data: AuthorizationData | { AttestPrimaryKeyRotation: any } | { RotatePrimaryKey: any } | { TransferTicker: any } | { AddMultiSigSigner: any } | { TransferAssetOwnership: any } | { JoinIdentity: any } | { PortfolioCustody: any } | { BecomeAgent: any } | { AddRelayerPayingKey: any } | { RotatePrimaryKeyToSecondary: any } | string | Uint8Array, expiry: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [Signatory, AuthorizationData, Option]>; + addAuthorization: AugmentedSubmittable<(target: PolymeshPrimitivesSecondaryKeySignatory | { Identity: any } | { Account: any } | string | Uint8Array, data: PolymeshPrimitivesAuthorizationAuthorizationData | { AttestPrimaryKeyRotation: any } | { RotatePrimaryKey: any } | { TransferTicker: any } | { AddMultiSigSigner: any } | { TransferAssetOwnership: any } | { JoinIdentity: any } | { PortfolioCustody: any } | { BecomeAgent: any } | { AddRelayerPayingKey: any } | { RotatePrimaryKeyToSecondary: any } | string | Uint8Array, expiry: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesAuthorizationAuthorizationData, Option]>; /** * Adds a new claim record or edits an existing one. * * Only called by did_issuer's secondary key. **/ - addClaim: AugmentedSubmittable<(target: IdentityId | string | Uint8Array, claim: Claim | { Accredited: any } | { Affiliate: any } | { BuyLockup: any } | { SellLockup: any } | { CustomerDueDiligence: any } | { KnowYourCustomer: any } | { Jurisdiction: any } | { Exempted: any } | { Blocked: any } | { InvestorUniqueness: any } | { NoData: any } | { InvestorUniquenessV2: any } | string | Uint8Array, expiry: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [IdentityId, Claim, Option]>; + addClaim: AugmentedSubmittable<(target: PolymeshPrimitivesIdentityId | string | Uint8Array, claim: PolymeshPrimitivesIdentityClaimClaim | { Accredited: any } | { Affiliate: any } | { BuyLockup: any } | { SellLockup: any } | { CustomerDueDiligence: any } | { KnowYourCustomer: any } | { Jurisdiction: any } | { Exempted: any } | { Blocked: any } | { InvestorUniqueness: any } | { NoData: any } | { InvestorUniquenessV2: any } | string | Uint8Array, expiry: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityClaimClaim, Option]>; /** * Add `Claim::InvestorUniqueness` claim for a given target identity. * @@ -1498,8 +1501,8 @@ declare module '@polkadot/api/types/submittable' { * * `ConfidentialScopeClaimNotAllowed` When issuer is different from target or CDD_ID is invalid for given user. * * `InvalidScopeClaim When proof is invalid. **/ - addInvestorUniquenessClaim: AugmentedSubmittable<(target: IdentityId | string | Uint8Array, claim: Claim | { Accredited: any } | { Affiliate: any } | { BuyLockup: any } | { SellLockup: any } | { CustomerDueDiligence: any } | { KnowYourCustomer: any } | { Jurisdiction: any } | { Exempted: any } | { Blocked: any } | { InvestorUniqueness: any } | { NoData: any } | { InvestorUniquenessV2: any } | string | Uint8Array, proof: InvestorZKProofData | string | Uint8Array, expiry: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [IdentityId, Claim, InvestorZKProofData, Option]>; - addInvestorUniquenessClaimV2: AugmentedSubmittable<(target: IdentityId | string | Uint8Array, scope: Scope | { Identity: any } | { Ticker: any } | { Custom: any } | string | Uint8Array, claim: Claim | { Accredited: any } | { Affiliate: any } | { BuyLockup: any } | { SellLockup: any } | { CustomerDueDiligence: any } | { KnowYourCustomer: any } | { Jurisdiction: any } | { Exempted: any } | { Blocked: any } | { InvestorUniqueness: any } | { NoData: any } | { InvestorUniquenessV2: any } | string | Uint8Array, proof: ScopeClaimProof | { proof_scope_id_wellformed?: any; proof_scope_id_cdd_id_match?: any; scope_id?: any } | string | Uint8Array, expiry: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [IdentityId, Scope, Claim, ScopeClaimProof, Option]>; + addInvestorUniquenessClaim: AugmentedSubmittable<(target: PolymeshPrimitivesIdentityId | string | Uint8Array, claim: PolymeshPrimitivesIdentityClaimClaim | { Accredited: any } | { Affiliate: any } | { BuyLockup: any } | { SellLockup: any } | { CustomerDueDiligence: any } | { KnowYourCustomer: any } | { Jurisdiction: any } | { Exempted: any } | { Blocked: any } | { InvestorUniqueness: any } | { NoData: any } | { InvestorUniquenessV2: any } | string | Uint8Array, proof: PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData | { r?: any; s?: any } | string | Uint8Array, expiry: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityClaimClaim, PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData, Option]>; + addInvestorUniquenessClaimV2: AugmentedSubmittable<(target: PolymeshPrimitivesIdentityId | string | Uint8Array, scope: PolymeshPrimitivesIdentityClaimScope | { Identity: any } | { Ticker: any } | { Custom: any } | string | Uint8Array, claim: PolymeshPrimitivesIdentityClaimClaim | { Accredited: any } | { Affiliate: any } | { BuyLockup: any } | { SellLockup: any } | { CustomerDueDiligence: any } | { KnowYourCustomer: any } | { Jurisdiction: any } | { Exempted: any } | { Blocked: any } | { InvestorUniqueness: any } | { NoData: any } | { InvestorUniquenessV2: any } | string | Uint8Array, proof: ConfidentialIdentityClaimProofsScopeClaimProof | { proofScopeIdWellformed?: any; proofScopeIdCddIdMatch?: any; scopeId?: any } | string | Uint8Array, expiry: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityClaimScope, PolymeshPrimitivesIdentityClaimClaim, ConfidentialIdentityClaimProofsScopeClaimProof, Option]>; /** * It adds secondary keys to target identity `id`. * Keys are directly added to identity because each of them has an authorization. @@ -1514,7 +1517,7 @@ declare module '@polkadot/api/types/submittable' { * - It can only called by primary key owner. * - Keys should be able to linked to any identity. **/ - addSecondaryKeysWithAuthorization: AugmentedSubmittable<(additionalKeys: Vec | (SecondaryKeyWithAuth | { secondary_key?: any; auth_signature?: any } | string | Uint8Array)[], expiresAt: Moment | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Vec, Moment]>; + addSecondaryKeysWithAuthorization: AugmentedSubmittable<(additionalKeys: Vec | (PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth | { secondaryKey?: any; authSignature?: any } | string | Uint8Array)[], expiresAt: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Vec, u64]>; /** * Register `target_account` with a new Identity. * @@ -1528,7 +1531,7 @@ declare module '@polkadot/api/types/submittable' { * # Weight * `7_000_000_000 + 600_000 * secondary_keys.len()` **/ - cddRegisterDid: AugmentedSubmittable<(targetAccount: AccountId | string | Uint8Array, secondaryKeys: Vec | (SecondaryKey | { signer?: any; permissions?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [AccountId, Vec]>; + cddRegisterDid: AugmentedSubmittable<(targetAccount: AccountId32 | string | Uint8Array, secondaryKeys: Vec | (PolymeshPrimitivesSecondaryKey | { signer?: any; permissions?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [AccountId32, Vec]>; /** * Set if CDD authorization is required for updating primary key of an identity. * Callable via root (governance) @@ -1547,18 +1550,18 @@ declare module '@polkadot/api/types/submittable' { /** * Assuming this is executed by the GC voting majority, adds a new cdd claim record. **/ - gcAddCddClaim: AugmentedSubmittable<(target: IdentityId | string | Uint8Array) => SubmittableExtrinsic, [IdentityId]>; + gcAddCddClaim: AugmentedSubmittable<(target: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId]>; /** * Assuming this is executed by the GC voting majority, removes an existing cdd claim record. **/ - gcRevokeCddClaim: AugmentedSubmittable<(target: IdentityId | string | Uint8Array) => SubmittableExtrinsic, [IdentityId]>; + gcRevokeCddClaim: AugmentedSubmittable<(target: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId]>; /** * Invalidates any claim generated by `cdd` from `disable_from` timestamps. * * You can also define an expiration time, * which will invalidate all claims generated by that `cdd` and remove it as CDD member group. **/ - invalidateCddClaims: AugmentedSubmittable<(cdd: IdentityId | string | Uint8Array, disableFrom: Moment | AnyNumber | Uint8Array, expiry: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [IdentityId, Moment, Option]>; + invalidateCddClaims: AugmentedSubmittable<(cdd: PolymeshPrimitivesIdentityId | string | Uint8Array, disableFrom: u64 | AnyNumber | Uint8Array, expiry: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, u64, Option]>; /** * Join an identity as a secondary key. **/ @@ -1572,12 +1575,12 @@ declare module '@polkadot/api/types/submittable' { * It sets permissions for an specific `target_key` key. * Only the primary key of an identity is able to set secondary key permissions. **/ - legacySetPermissionToSigner: AugmentedSubmittable<(signer: Signatory | { Identity: any } | { Account: any } | string | Uint8Array, permissions: LegacyPermissions | { asset?: any; extrinsic?: any; portfolio?: any } | string | Uint8Array) => SubmittableExtrinsic, [Signatory, LegacyPermissions]>; + legacySetPermissionToSigner: AugmentedSubmittable<(signer: PolymeshPrimitivesSecondaryKeySignatory | { Identity: any } | { Account: any } | string | Uint8Array, permissions: PolymeshPrimitivesSecondaryKeyApiLegacyPermissions | { asset?: any; extrinsic?: any; portfolio?: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesSecondaryKeyApiLegacyPermissions]>; /** * Removes an authorization. * _auth_issuer_pays determines whether the issuer of the authorisation pays the transaction fee **/ - removeAuthorization: AugmentedSubmittable<(target: Signatory | { Identity: any } | { Account: any } | string | Uint8Array, authId: u64 | AnyNumber | Uint8Array, authIssuerPays: bool | boolean | Uint8Array) => SubmittableExtrinsic, [Signatory, u64, bool]>; + removeAuthorization: AugmentedSubmittable<(target: PolymeshPrimitivesSecondaryKeySignatory | { Identity: any } | { Account: any } | string | Uint8Array, authId: u64 | AnyNumber | Uint8Array, authIssuerPays: bool | boolean | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesSecondaryKeySignatory, u64, bool]>; /** * Removes specified secondary keys of a DID if present. * @@ -1587,11 +1590,11 @@ declare module '@polkadot/api/types/submittable' { * # Weight * `950_000_000 + 60_000 * signers_to_remove.len()` **/ - removeSecondaryKeys: AugmentedSubmittable<(signersToRemove: Vec | (Signatory | { Identity: any } | { Account: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; + removeSecondaryKeys: AugmentedSubmittable<(signersToRemove: Vec | (PolymeshPrimitivesSecondaryKeySignatory | { Identity: any } | { Account: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** * Marks the specified claim as revoked. **/ - revokeClaim: AugmentedSubmittable<(target: IdentityId | string | Uint8Array, claim: Claim | { Accredited: any } | { Affiliate: any } | { BuyLockup: any } | { SellLockup: any } | { CustomerDueDiligence: any } | { KnowYourCustomer: any } | { Jurisdiction: any } | { Exempted: any } | { Blocked: any } | { InvestorUniqueness: any } | { NoData: any } | { InvestorUniquenessV2: any } | string | Uint8Array) => SubmittableExtrinsic, [IdentityId, Claim]>; + revokeClaim: AugmentedSubmittable<(target: PolymeshPrimitivesIdentityId | string | Uint8Array, claim: PolymeshPrimitivesIdentityClaimClaim | { Accredited: any } | { Affiliate: any } | { BuyLockup: any } | { SellLockup: any } | { CustomerDueDiligence: any } | { KnowYourCustomer: any } | { Jurisdiction: any } | { Exempted: any } | { Blocked: any } | { InvestorUniqueness: any } | { NoData: any } | { InvestorUniquenessV2: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityClaimClaim]>; /** * Revokes a specific claim using its [Claim Unique Index](/pallet_identity/index.html#claim-unique-index) composed by `target`, * `claim_type`, and `scope`. @@ -1602,7 +1605,7 @@ declare module '@polkadot/api/types/submittable' { * - `TargetHasNonZeroBalanceAtScopeId` when you try to revoke a `InvestorUniqueness*` * claim, and `target` identity still have any balance on the given `scope`. **/ - revokeClaimByIndex: AugmentedSubmittable<(target: IdentityId | string | Uint8Array, claimType: ClaimType | 'Accredited' | 'Affiliate' | 'BuyLockup' | 'SellLockup' | 'CustomerDueDiligence' | 'KnowYourCustomer' | 'Jurisdiction' | 'Exempted' | 'Blocked' | 'InvestorUniqueness' | 'NoData' | 'InvestorUniquenessV2' | number | Uint8Array, scope: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [IdentityId, ClaimType, Option]>; + revokeClaimByIndex: AugmentedSubmittable<(target: PolymeshPrimitivesIdentityId | string | Uint8Array, claimType: PolymeshPrimitivesIdentityClaimClaimType | 'Accredited' | 'Affiliate' | 'BuyLockup' | 'SellLockup' | 'CustomerDueDiligence' | 'KnowYourCustomer' | 'Jurisdiction' | 'Exempted' | 'Blocked' | 'InvestorUniqueness' | 'NoType' | 'InvestorUniquenessV2' | number | Uint8Array, scope: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityClaimClaimType, Option]>; /** * Call this with the new primary key. By invoking this method, caller accepts authorization * to become the new primary key of the issuing identity. If a CDD service provider approved @@ -1625,7 +1628,7 @@ declare module '@polkadot/api/types/submittable' { * * Only the primary key of an identity is able to set secondary key permissions. **/ - setPermissionToSigner: AugmentedSubmittable<(signer: Signatory | { Identity: any } | { Account: any } | string | Uint8Array, perms: Permissions | { asset?: any; extrinsic?: any; portfolio?: any } | string | Uint8Array) => SubmittableExtrinsic, [Signatory, Permissions]>; + setPermissionToSigner: AugmentedSubmittable<(signer: PolymeshPrimitivesSecondaryKeySignatory | { Identity: any } | { Account: any } | string | Uint8Array, perms: PolymeshPrimitivesSecondaryKeyPermissions | { asset?: any; extrinsic?: any; portfolio?: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesSecondaryKeyPermissions]>; /** * Re-enables all secondary keys of the caller's identity. **/ @@ -1638,8 +1641,8 @@ declare module '@polkadot/api/types/submittable' { imOnline: { /** * # - * - Complexity: `O(K + E)` where K is length of `Keys` (heartbeat.validators_len) - * and E is length of `heartbeat.network_state.external_address` + * - Complexity: `O(K + E)` where K is length of `Keys` (heartbeat.validators_len) and E is + * length of `heartbeat.network_state.external_address` * - `O(K)`: decoding of length `K` * - `O(E)`: decoding/encoding of length `E` * - DbReads: pallet_session `Validators`, pallet_session `CurrentIndex`, `Keys`, @@ -1647,7 +1650,7 @@ declare module '@polkadot/api/types/submittable' { * - DbWrites: `ReceivedHeartbeats` * # **/ - heartbeat: AugmentedSubmittable<(heartbeat: Heartbeat | { blockNumber?: any; networkState?: any; sessionIndex?: any; authorityIndex?: any; validatorsLen?: any } | string | Uint8Array, signature: Signature | string | Uint8Array) => SubmittableExtrinsic, [Heartbeat, Signature]>; + heartbeat: AugmentedSubmittable<(heartbeat: PalletImOnlineHeartbeat | { blockNumber?: any; networkState?: any; sessionIndex?: any; authorityIndex?: any; validatorsLen?: any } | string | Uint8Array, signature: PalletImOnlineSr25519AppSr25519Signature | string | Uint8Array) => SubmittableExtrinsic, [PalletImOnlineHeartbeat, PalletImOnlineSr25519AppSr25519Signature]>; /** * Generic tx **/ @@ -1674,7 +1677,7 @@ declare module '@polkadot/api/types/submittable' { * - DB Weight: 1 Read/Write (Accounts) * # **/ - claim: AugmentedSubmittable<(index: AccountIndex | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountIndex]>; + claim: AugmentedSubmittable<(index: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32]>; /** * Force an index to an account. This doesn't require a deposit. If the index is already * held, then any deposit is reimbursed to its current owner. @@ -1698,7 +1701,7 @@ declare module '@polkadot/api/types/submittable' { * - Writes: Indices Accounts, System Account (original owner) * # **/ - forceTransfer: AugmentedSubmittable<(updated: AccountId | string | Uint8Array, index: AccountIndex | AnyNumber | Uint8Array, freeze: bool | boolean | Uint8Array) => SubmittableExtrinsic, [AccountId, AccountIndex, bool]>; + forceTransfer: AugmentedSubmittable<(updated: AccountId32 | string | Uint8Array, index: u32 | AnyNumber | Uint8Array, freeze: bool | boolean | Uint8Array) => SubmittableExtrinsic, [AccountId32, u32, bool]>; /** * Free up an index owned by the sender. * @@ -1719,9 +1722,10 @@ declare module '@polkadot/api/types/submittable' { * - DB Weight: 1 Read/Write (Accounts) * # **/ - free: AugmentedSubmittable<(index: AccountIndex | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountIndex]>; + free: AugmentedSubmittable<(index: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32]>; /** - * Freeze an index so it will always point to the sender account. This consumes the deposit. + * Freeze an index so it will always point to the sender account. This consumes the + * deposit. * * The dispatch origin for this call must be _Signed_ and the signing account must have a * non-frozen account `index`. @@ -1739,7 +1743,7 @@ declare module '@polkadot/api/types/submittable' { * - DB Weight: 1 Read/Write (Accounts) * # **/ - freeze: AugmentedSubmittable<(index: AccountIndex | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountIndex]>; + freeze: AugmentedSubmittable<(index: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32]>; /** * Assign an index already owned by the sender to another account. The balance reservation * is effectively transferred to the new account. @@ -1762,7 +1766,7 @@ declare module '@polkadot/api/types/submittable' { * - Writes: Indices Accounts, System Account (recipient) * # **/ - transfer: AugmentedSubmittable<(updated: AccountId | string | Uint8Array, index: AccountIndex | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId, AccountIndex]>; + transfer: AugmentedSubmittable<(updated: AccountId32 | string | Uint8Array, index: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId32, u32]>; /** * Generic tx **/ @@ -1789,7 +1793,7 @@ declare module '@polkadot/api/types/submittable' { * # Arguments * * `signer` - Signatory to add. **/ - addMultisigSigner: AugmentedSubmittable<(signer: Signatory | { Identity: any } | { Account: any } | string | Uint8Array) => SubmittableExtrinsic, [Signatory]>; + addMultisigSigner: AugmentedSubmittable<(signer: PolymeshPrimitivesSecondaryKeySignatory | { Identity: any } | { Account: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesSecondaryKeySignatory]>; /** * Adds a signer to the multisig. This must be called by the creator identity of the * multisig. @@ -1801,7 +1805,7 @@ declare module '@polkadot/api/types/submittable' { * # Weight * `900_000_000 + 3_000_000 * signers.len()` **/ - addMultisigSignersViaCreator: AugmentedSubmittable<(multisig: AccountId | string | Uint8Array, signers: Vec | (Signatory | { Identity: any } | { Account: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [AccountId, Vec]>; + addMultisigSignersViaCreator: AugmentedSubmittable<(multisig: AccountId32 | string | Uint8Array, signers: Vec | (PolymeshPrimitivesSecondaryKeySignatory | { Identity: any } | { Account: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [AccountId32, Vec]>; /** * Approves a multisig proposal using the caller's identity. * @@ -1810,7 +1814,7 @@ declare module '@polkadot/api/types/submittable' { * * `proposal_id` - Proposal id to approve. * If quorum is reached, the proposal will be immediately executed. **/ - approveAsIdentity: AugmentedSubmittable<(multisig: AccountId | string | Uint8Array, proposalId: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId, u64]>; + approveAsIdentity: AugmentedSubmittable<(multisig: AccountId32 | string | Uint8Array, proposalId: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId32, u64]>; /** * Approves a multisig proposal using the caller's secondary key (`AccountId`). * @@ -1819,7 +1823,7 @@ declare module '@polkadot/api/types/submittable' { * * `proposal_id` - Proposal id to approve. * If quorum is reached, the proposal will be immediately executed. **/ - approveAsKey: AugmentedSubmittable<(multisig: AccountId | string | Uint8Array, proposalId: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId, u64]>; + approveAsKey: AugmentedSubmittable<(multisig: AccountId32 | string | Uint8Array, proposalId: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId32, u64]>; /** * Changes the number of signatures required by a multisig. This must be called by the * multisig itself. @@ -1835,7 +1839,7 @@ declare module '@polkadot/api/types/submittable' { * * `signers` - Signers of the multisig (They need to accept authorization before they are actually added). * * `sigs_required` - Number of sigs required to process a multi-sig tx. **/ - createMultisig: AugmentedSubmittable<(signers: Vec | (Signatory | { Identity: any } | { Account: any } | string | Uint8Array)[], sigsRequired: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Vec, u64]>; + createMultisig: AugmentedSubmittable<(signers: Vec | (PolymeshPrimitivesSecondaryKeySignatory | { Identity: any } | { Account: any } | string | Uint8Array)[], sigsRequired: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Vec, u64]>; /** * Creates a multisig proposal if it hasn't been created or approves it if it has. * @@ -1846,7 +1850,7 @@ declare module '@polkadot/api/types/submittable' { * * `auto_close` - Close proposal on receiving enough reject votes. * If this is 1 out of `m` multisig, the proposal will be immediately executed. **/ - createOrApproveProposalAsIdentity: AugmentedSubmittable<(multisig: AccountId | string | Uint8Array, proposal: Proposal | { callIndex?: any; args?: any } | string | Uint8Array, expiry: Option | null | object | string | Uint8Array, autoClose: bool | boolean | Uint8Array) => SubmittableExtrinsic, [AccountId, Proposal, Option, bool]>; + createOrApproveProposalAsIdentity: AugmentedSubmittable<(multisig: AccountId32 | string | Uint8Array, proposal: Call | { callIndex?: any; args?: any } | string | Uint8Array, expiry: Option | null | object | string | Uint8Array, autoClose: bool | boolean | Uint8Array) => SubmittableExtrinsic, [AccountId32, Call, Option, bool]>; /** * Creates a multisig proposal if it hasn't been created or approves it if it has. * @@ -1857,7 +1861,7 @@ declare module '@polkadot/api/types/submittable' { * * `auto_close` - Close proposal on receiving enough reject votes. * If this is 1 out of `m` multisig, the proposal will be immediately executed. **/ - createOrApproveProposalAsKey: AugmentedSubmittable<(multisig: AccountId | string | Uint8Array, proposal: Proposal | { callIndex?: any; args?: any } | string | Uint8Array, expiry: Option | null | object | string | Uint8Array, autoClose: bool | boolean | Uint8Array) => SubmittableExtrinsic, [AccountId, Proposal, Option, bool]>; + createOrApproveProposalAsKey: AugmentedSubmittable<(multisig: AccountId32 | string | Uint8Array, proposal: Call | { callIndex?: any; args?: any } | string | Uint8Array, expiry: Option | null | object | string | Uint8Array, autoClose: bool | boolean | Uint8Array) => SubmittableExtrinsic, [AccountId32, Call, Option, bool]>; /** * Creates a multisig proposal * @@ -1868,7 +1872,7 @@ declare module '@polkadot/api/types/submittable' { * * `auto_close` - Close proposal on receiving enough reject votes. * If this is 1 out of `m` multisig, the proposal will be immediately executed. **/ - createProposalAsIdentity: AugmentedSubmittable<(multisig: AccountId | string | Uint8Array, proposal: Proposal | { callIndex?: any; args?: any } | string | Uint8Array, expiry: Option | null | object | string | Uint8Array, autoClose: bool | boolean | Uint8Array) => SubmittableExtrinsic, [AccountId, Proposal, Option, bool]>; + createProposalAsIdentity: AugmentedSubmittable<(multisig: AccountId32 | string | Uint8Array, proposal: Call | { callIndex?: any; args?: any } | string | Uint8Array, expiry: Option | null | object | string | Uint8Array, autoClose: bool | boolean | Uint8Array) => SubmittableExtrinsic, [AccountId32, Call, Option, bool]>; /** * Creates a multisig proposal * @@ -1879,11 +1883,11 @@ declare module '@polkadot/api/types/submittable' { * * `auto_close` - Close proposal on receiving enough reject votes. * If this is 1 out of `m` multisig, the proposal will be immediately executed. **/ - createProposalAsKey: AugmentedSubmittable<(multisig: AccountId | string | Uint8Array, proposal: Proposal | { callIndex?: any; args?: any } | string | Uint8Array, expiry: Option | null | object | string | Uint8Array, autoClose: bool | boolean | Uint8Array) => SubmittableExtrinsic, [AccountId, Proposal, Option, bool]>; + createProposalAsKey: AugmentedSubmittable<(multisig: AccountId32 | string | Uint8Array, proposal: Call | { callIndex?: any; args?: any } | string | Uint8Array, expiry: Option | null | object | string | Uint8Array, autoClose: bool | boolean | Uint8Array) => SubmittableExtrinsic, [AccountId32, Call, Option, bool]>; /** * Root callable extrinsic, used as an internal call for executing scheduled multisig proposal. **/ - executeScheduledProposal: AugmentedSubmittable<(multisig: AccountId | string | Uint8Array, proposalId: u64 | AnyNumber | Uint8Array, multisigDid: IdentityId | string | Uint8Array, proposalWeight: Weight | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId, u64, IdentityId, Weight]>; + executeScheduledProposal: AugmentedSubmittable<(multisig: AccountId32 | string | Uint8Array, proposalId: u64 | AnyNumber | Uint8Array, multisigDid: PolymeshPrimitivesIdentityId | string | Uint8Array, proposalWeight: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId32, u64, PolymeshPrimitivesIdentityId, u64]>; /** * Adds a multisig as the primary key of the current did if the current DID is the creator * of the multisig. @@ -1891,7 +1895,7 @@ declare module '@polkadot/api/types/submittable' { * # Arguments * * `multi_sig` - multi sig address **/ - makeMultisigPrimary: AugmentedSubmittable<(multisig: AccountId | string | Uint8Array, optionalCddAuthId: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [AccountId, Option]>; + makeMultisigPrimary: AugmentedSubmittable<(multisig: AccountId32 | string | Uint8Array, optionalCddAuthId: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [AccountId32, Option]>; /** * Adds a multisig as a signer of current did if the current did is the creator of the * multisig. @@ -1899,7 +1903,7 @@ declare module '@polkadot/api/types/submittable' { * # Arguments * * `multisig` - multi sig address **/ - makeMultisigSigner: AugmentedSubmittable<(multisig: AccountId | string | Uint8Array) => SubmittableExtrinsic, [AccountId]>; + makeMultisigSigner: AugmentedSubmittable<(multisig: AccountId32 | string | Uint8Array) => SubmittableExtrinsic, [AccountId32]>; /** * Rejects a multisig proposal using the caller's identity. * @@ -1908,7 +1912,7 @@ declare module '@polkadot/api/types/submittable' { * * `proposal_id` - Proposal id to reject. * If quorum is reached, the proposal will be immediately executed. **/ - rejectAsIdentity: AugmentedSubmittable<(multisig: AccountId | string | Uint8Array, proposalId: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId, u64]>; + rejectAsIdentity: AugmentedSubmittable<(multisig: AccountId32 | string | Uint8Array, proposalId: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId32, u64]>; /** * Rejects a multisig proposal using the caller's secondary key (`AccountId`). * @@ -1917,14 +1921,14 @@ declare module '@polkadot/api/types/submittable' { * * `proposal_id` - Proposal id to reject. * If quorum is reached, the proposal will be immediately executed. **/ - rejectAsKey: AugmentedSubmittable<(multisig: AccountId | string | Uint8Array, proposalId: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId, u64]>; + rejectAsKey: AugmentedSubmittable<(multisig: AccountId32 | string | Uint8Array, proposalId: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId32, u64]>; /** * Removes a signer from the multisig. This must be called by the multisig itself. * * # Arguments * * `signer` - Signatory to remove. **/ - removeMultisigSigner: AugmentedSubmittable<(signer: Signatory | { Identity: any } | { Account: any } | string | Uint8Array) => SubmittableExtrinsic, [Signatory]>; + removeMultisigSigner: AugmentedSubmittable<(signer: PolymeshPrimitivesSecondaryKeySignatory | { Identity: any } | { Account: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesSecondaryKeySignatory]>; /** * Removes a signer from the multisig. * This must be called by the creator identity of the multisig. @@ -1936,7 +1940,7 @@ declare module '@polkadot/api/types/submittable' { * # Weight * `900_000_000 + 3_000_000 * signers.len()` **/ - removeMultisigSignersViaCreator: AugmentedSubmittable<(multisig: AccountId | string | Uint8Array, signers: Vec | (Signatory | { Identity: any } | { Account: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [AccountId, Vec]>; + removeMultisigSignersViaCreator: AugmentedSubmittable<(multisig: AccountId32 | string | Uint8Array, signers: Vec | (PolymeshPrimitivesSecondaryKeySignatory | { Identity: any } | { Account: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [AccountId32, Vec]>; /** * Generic tx **/ @@ -1952,7 +1956,7 @@ declare module '@polkadot/api/types/submittable' { * * `IncorrectProposalState` if the proposal isn't pending. * * `NotByCommittee` if the proposal isn't by a committee. **/ - approveCommitteeProposal: AugmentedSubmittable<(id: PipId | AnyNumber | Uint8Array) => SubmittableExtrinsic, [PipId]>; + approveCommitteeProposal: AugmentedSubmittable<(id: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32]>; /** * Clears the snapshot and emits the event `SnapshotCleared`. * @@ -1979,15 +1983,15 @@ declare module '@polkadot/api/types/submittable' { * ``` * This is protects against clearing queue while GC is voting. **/ - enactSnapshotResults: AugmentedSubmittable<(results: Vec> | ([PipId | AnyNumber | Uint8Array, SnapshotResult | 'Approve' | 'Reject' | 'Skip' | number | Uint8Array])[]) => SubmittableExtrinsic, [Vec>]>; + enactSnapshotResults: AugmentedSubmittable<(results: Vec> | ([u32 | AnyNumber | Uint8Array, PalletPipsSnapshotResult | 'Approve' | 'Reject' | 'Skip' | number | Uint8Array])[]) => SubmittableExtrinsic, [Vec>]>; /** * Internal dispatchable that handles execution of a PIP. **/ - executeScheduledPip: AugmentedSubmittable<(id: PipId | AnyNumber | Uint8Array) => SubmittableExtrinsic, [PipId]>; + executeScheduledPip: AugmentedSubmittable<(id: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32]>; /** * Internal dispatchable that handles expiration of a PIP. **/ - expireScheduledPip: AugmentedSubmittable<(did: IdentityId | string | Uint8Array, id: PipId | AnyNumber | Uint8Array) => SubmittableExtrinsic, [IdentityId, PipId]>; + expireScheduledPip: AugmentedSubmittable<(did: PolymeshPrimitivesIdentityId | string | Uint8Array, id: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, u32]>; /** * A network member creates a PIP by submitting a dispatchable which * changes the network in someway. A minimum deposit is required to open a new proposal. @@ -1999,7 +2003,7 @@ declare module '@polkadot/api/types/submittable' { * * `deposit` minimum deposit value, which is ignored if `proposer` is a committee. * * `url` a link to a website for proposal discussion **/ - propose: AugmentedSubmittable<(proposal: Proposal | { callIndex?: any; args?: any } | string | Uint8Array, deposit: Balance | AnyNumber | Uint8Array, url: Option | null | object | string | Uint8Array, description: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [Proposal, Balance, Option, Option]>; + propose: AugmentedSubmittable<(proposal: Call | { callIndex?: any; args?: any } | string | Uint8Array, deposit: u128 | AnyNumber | Uint8Array, url: Option | null | object | string | Uint8Array, description: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [Call, u128, Option, Option]>; /** * Prune the PIP given by the `id`, refunding any funds not already refunded. * The PIP may not be active @@ -2011,7 +2015,7 @@ declare module '@polkadot/api/types/submittable' { * * `NoSuchProposal` if the PIP with `id` doesn't exist. * * `IncorrectProposalState` if the proposal is active. **/ - pruneProposal: AugmentedSubmittable<(id: PipId | AnyNumber | Uint8Array) => SubmittableExtrinsic, [PipId]>; + pruneProposal: AugmentedSubmittable<(id: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32]>; /** * Rejects the PIP given by the `id`, refunding any bonded funds, * assuming it hasn't been cancelled or executed. @@ -2022,7 +2026,7 @@ declare module '@polkadot/api/types/submittable' { * * `NoSuchProposal` if the PIP with `id` doesn't exist. * * `IncorrectProposalState` if the proposal was cancelled or executed. **/ - rejectProposal: AugmentedSubmittable<(id: PipId | AnyNumber | Uint8Array) => SubmittableExtrinsic, [PipId]>; + rejectProposal: AugmentedSubmittable<(id: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32]>; /** * Updates the execution schedule of the PIP given by `id`. * @@ -2034,7 +2038,7 @@ declare module '@polkadot/api/types/submittable' { * * `RescheduleNotByReleaseCoordinator` unless triggered by release coordinator. * * `IncorrectProposalState` unless the proposal was in a scheduled state. **/ - rescheduleExecution: AugmentedSubmittable<(id: PipId | AnyNumber | Uint8Array, until: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PipId, Option]>; + rescheduleExecution: AugmentedSubmittable<(id: u32 | AnyNumber | Uint8Array, until: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [u32, Option]>; /** * Change the maximum number of active PIPs before community members cannot propose anything. * Can only be called by root. @@ -2050,7 +2054,7 @@ declare module '@polkadot/api/types/submittable' { * # Arguments * * `duration` the new default enactment period it takes for a scheduled PIP to be executed. **/ - setDefaultEnactmentPeriod: AugmentedSubmittable<(duration: BlockNumber | AnyNumber | Uint8Array) => SubmittableExtrinsic, [BlockNumber]>; + setDefaultEnactmentPeriod: AugmentedSubmittable<(duration: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32]>; /** * Change the maximum skip count (`max_pip_skip_count`). * Can only be called by root. @@ -2058,7 +2062,7 @@ declare module '@polkadot/api/types/submittable' { * # Arguments * * `max` skips before a PIP cannot be skipped by GC anymore. **/ - setMaxPipSkipCount: AugmentedSubmittable<(max: SkippedCount | AnyNumber | Uint8Array) => SubmittableExtrinsic, [SkippedCount]>; + setMaxPipSkipCount: AugmentedSubmittable<(max: u8 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u8]>; /** * Change the minimum proposal deposit amount required to start a proposal. * Can only be called by root. @@ -2066,7 +2070,7 @@ declare module '@polkadot/api/types/submittable' { * # Arguments * * `deposit` the new min deposit required to start a proposal **/ - setMinProposalDeposit: AugmentedSubmittable<(deposit: Balance | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Balance]>; + setMinProposalDeposit: AugmentedSubmittable<(deposit: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u128]>; /** * Change the amount of blocks after which a pending PIP is expired. * If `expiry` is `None` then PIPs never expire. @@ -2075,7 +2079,7 @@ declare module '@polkadot/api/types/submittable' { * # Arguments * * `expiry` the block-time it takes for a still-`Pending` PIP to expire. **/ - setPendingPipExpiry: AugmentedSubmittable<(expiry: MaybeBlock | { Some: any } | { None: any } | string | Uint8Array) => SubmittableExtrinsic, [MaybeBlock]>; + setPendingPipExpiry: AugmentedSubmittable<(expiry: PolymeshCommonUtilitiesMaybeBlock | { Some: any } | { None: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshCommonUtilitiesMaybeBlock]>; /** * Change whether completed PIPs are pruned. * Can only be called by root. @@ -2112,7 +2116,7 @@ declare module '@polkadot/api/types/submittable' { * * `IncorrectProposalState` if PIP isn't pending. * * `InsufficientDeposit` if `origin` cannot reserve `deposit - old_deposit`. **/ - vote: AugmentedSubmittable<(id: PipId | AnyNumber | Uint8Array, ayeOrNay: bool | boolean | Uint8Array, deposit: Balance | AnyNumber | Uint8Array) => SubmittableExtrinsic, [PipId, bool, Balance]>; + vote: AugmentedSubmittable<(id: u32 | AnyNumber | Uint8Array, ayeOrNay: bool | boolean | Uint8Array, deposit: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32, bool, u128]>; /** * Generic tx **/ @@ -2125,7 +2129,7 @@ declare module '@polkadot/api/types/submittable' { * # Arguments * * `expiry` - The new expiry time. **/ - setExpiresAfter: AugmentedSubmittable<(expiry: MaybeBlock | { Some: any } | { None: any } | string | Uint8Array) => SubmittableExtrinsic, [MaybeBlock]>; + setExpiresAfter: AugmentedSubmittable<(expiry: PolymeshCommonUtilitiesMaybeBlock | { Some: any } | { None: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshCommonUtilitiesMaybeBlock]>; /** * Changes the release coordinator. * @@ -2135,7 +2139,7 @@ declare module '@polkadot/api/types/submittable' { * # Errors * * `NotAMember`, If the new coordinator `id` is not part of the committee. **/ - setReleaseCoordinator: AugmentedSubmittable<(id: IdentityId | string | Uint8Array) => SubmittableExtrinsic, [IdentityId]>; + setReleaseCoordinator: AugmentedSubmittable<(id: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId]>; /** * Change the vote threshold the determines the winning proposal. * For e.g., for a simple majority use (1, 2) which represents the in-equation ">= 1/2". @@ -2157,7 +2161,7 @@ declare module '@polkadot/api/types/submittable' { * # Errors * * `NotAMember`, if the `origin` is not a member of this committee. **/ - vote: AugmentedSubmittable<(proposal: Hash | string | Uint8Array, index: ProposalIndex | AnyNumber | Uint8Array, approve: bool | boolean | Uint8Array) => SubmittableExtrinsic, [Hash, ProposalIndex, bool]>; + vote: AugmentedSubmittable<(proposal: H256 | string | Uint8Array, index: u32 | AnyNumber | Uint8Array, approve: bool | boolean | Uint8Array) => SubmittableExtrinsic, [H256, u32, bool]>; /** * Proposes to the committee that `call` should be executed in its name. * Alternatively, if the hash of `call` has already been recorded, i.e., already proposed, @@ -2188,7 +2192,7 @@ declare module '@polkadot/api/types/submittable' { /** * Creates a portfolio with the given `name`. **/ - createPortfolio: AugmentedSubmittable<(name: PortfolioName | string) => SubmittableExtrinsic, [PortfolioName]>; + createPortfolio: AugmentedSubmittable<(name: Bytes | string | Uint8Array) => SubmittableExtrinsic, [Bytes]>; /** * Deletes a user portfolio. A portfolio can be deleted only if it has no funds. * @@ -2199,7 +2203,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Portfolio **/ - deletePortfolio: AugmentedSubmittable<(num: PortfolioNumber | AnyNumber | Uint8Array) => SubmittableExtrinsic, [PortfolioNumber]>; + deletePortfolio: AugmentedSubmittable<(num: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u64]>; /** * Moves a token amount from one portfolio of an identity to another portfolio of the same * identity. Must be called by the custodian of the sender. @@ -2217,7 +2221,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Portfolio **/ - movePortfolioFunds: AugmentedSubmittable<(from: PortfolioId | { did?: any; kind?: any } | string | Uint8Array, to: PortfolioId | { did?: any; kind?: any } | string | Uint8Array, items: Vec | (MovePortfolioItem | { ticker?: any; amount?: any; memo?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [PortfolioId, PortfolioId, Vec]>; + movePortfolioFunds: AugmentedSubmittable<(from: PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array, to: PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array, items: Vec | (PalletPortfolioMovePortfolioItem | { ticker?: any; amount?: any; memo?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesIdentityIdPortfolioId, Vec]>; /** * When called by the custodian of `portfolio_id`, * allows returning the custody of the portfolio to the portfolio owner unilaterally. @@ -2228,7 +2232,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Portfolio **/ - quitPortfolioCustody: AugmentedSubmittable<(pid: PortfolioId | { did?: any; kind?: any } | string | Uint8Array) => SubmittableExtrinsic, [PortfolioId]>; + quitPortfolioCustody: AugmentedSubmittable<(pid: PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityIdPortfolioId]>; /** * Renames a non-default portfolio. * @@ -2238,7 +2242,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Portfolio **/ - renamePortfolio: AugmentedSubmittable<(num: PortfolioNumber | AnyNumber | Uint8Array, toName: PortfolioName | string) => SubmittableExtrinsic, [PortfolioNumber, PortfolioName]>; + renamePortfolio: AugmentedSubmittable<(num: u64 | AnyNumber | Uint8Array, toName: Bytes | string | Uint8Array) => SubmittableExtrinsic, [u64, Bytes]>; /** * Generic tx **/ @@ -2251,14 +2255,14 @@ declare module '@polkadot/api/types/submittable' { * # Errors * * `BadOrigin` - Only root allowed. **/ - changeBaseFee: AugmentedSubmittable<(op: ProtocolOp | 'AssetRegisterTicker' | 'AssetIssue' | 'AssetAddDocuments' | 'AssetCreateAsset' | 'CheckpointCreateSchedule' | 'ComplianceManagerAddComplianceRequirement' | 'IdentityCddRegisterDid' | 'IdentityAddClaim' | 'IdentityAddSecondaryKeysWithAuthorization' | 'PipsPropose' | 'ContractsPutCode' | 'CorporateBallotAttachBallot' | 'CapitalDistributionDistribute' | number | Uint8Array, baseFee: Balance | AnyNumber | Uint8Array) => SubmittableExtrinsic, [ProtocolOp, Balance]>; + changeBaseFee: AugmentedSubmittable<(op: PolymeshCommonUtilitiesProtocolFeeProtocolOp | 'AssetRegisterTicker' | 'AssetIssue' | 'AssetAddDocuments' | 'AssetCreateAsset' | 'CheckpointCreateSchedule' | 'ComplianceManagerAddComplianceRequirement' | 'IdentityCddRegisterDid' | 'IdentityAddClaim' | 'IdentityAddSecondaryKeysWithAuthorization' | 'PipsPropose' | 'ContractsPutCode' | 'CorporateBallotAttachBallot' | 'CapitalDistributionDistribute' | number | Uint8Array, baseFee: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [PolymeshCommonUtilitiesProtocolFeeProtocolOp, u128]>; /** * Changes the fee coefficient for the root origin. * * # Errors * * `BadOrigin` - Only root allowed. **/ - changeCoefficient: AugmentedSubmittable<(coefficient: PosRatio) => SubmittableExtrinsic, [PosRatio]>; + changeCoefficient: AugmentedSubmittable<(coefficient: PolymeshPrimitivesPosRatio) => SubmittableExtrinsic, [PolymeshPrimitivesPosRatio]>; /** * Generic tx **/ @@ -2295,7 +2299,7 @@ declare module '@polkadot/api/types/submittable' { * - `UnauthorizedCaller` if `origin` is not authorized to call this extrinsic. * - `Overlow` if the subsidy has less then `amount` POLYX remaining. **/ - decreasePolyxLimit: AugmentedSubmittable<(userKey: AccountId | string | Uint8Array, amount: Balance | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId, Balance]>; + decreasePolyxLimit: AugmentedSubmittable<(userKey: AccountId32 | string | Uint8Array, amount: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId32, u128]>; /** * Increase the available POLYX for a `user_key`. * @@ -2309,7 +2313,7 @@ declare module '@polkadot/api/types/submittable' { * - `UnauthorizedCaller` if `origin` is not authorized to call this extrinsic. * - `Overlow` if the subsidy's remaining POLYX would have overflowed `u128::MAX`. **/ - increasePolyxLimit: AugmentedSubmittable<(userKey: AccountId | string | Uint8Array, amount: Balance | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId, Balance]>; + increasePolyxLimit: AugmentedSubmittable<(userKey: AccountId32 | string | Uint8Array, amount: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId32, u128]>; /** * Removes the `paying_key` from a `user_key`. * @@ -2323,7 +2327,7 @@ declare module '@polkadot/api/types/submittable' { * - `NotPayingKey` if the `paying_key` doesn't match the current `paying_key`. * - `UnauthorizedCaller` if `origin` is not authorized to call this extrinsic. **/ - removePayingKey: AugmentedSubmittable<(userKey: AccountId | string | Uint8Array, payingKey: AccountId | string | Uint8Array) => SubmittableExtrinsic, [AccountId, AccountId]>; + removePayingKey: AugmentedSubmittable<(userKey: AccountId32 | string | Uint8Array, payingKey: AccountId32 | string | Uint8Array) => SubmittableExtrinsic, [AccountId32, AccountId32]>; /** * Creates an authorization to allow `user_key` to accept the caller (`origin == paying_key`) as their subsidiser. * @@ -2334,7 +2338,7 @@ declare module '@polkadot/api/types/submittable' { * # Errors * - `UnauthorizedCaller` if `origin` is not authorized to call this extrinsic. **/ - setPayingKey: AugmentedSubmittable<(userKey: AccountId | string | Uint8Array, polyxLimit: Balance | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId, Balance]>; + setPayingKey: AugmentedSubmittable<(userKey: AccountId32 | string | Uint8Array, polyxLimit: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId32, u128]>; /** * Updates the available POLYX for a `user_key`. * @@ -2347,7 +2351,7 @@ declare module '@polkadot/api/types/submittable' { * - `NotPayingKey` if `origin` doesn't match the current `paying_key`. * - `UnauthorizedCaller` if `origin` is not authorized to call this extrinsic. **/ - updatePolyxLimit: AugmentedSubmittable<(userKey: AccountId | string | Uint8Array, polyxLimit: Balance | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId, Balance]>; + updatePolyxLimit: AugmentedSubmittable<(userKey: AccountId32 | string | Uint8Array, polyxLimit: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId32, u128]>; /** * Generic tx **/ @@ -2369,8 +2373,8 @@ declare module '@polkadot/api/types/submittable' { * * `ItnRewardAlreadyClaimed` - Reward issued to the `itn_address` has already been claimed. * * `UnknownItnAddress` - `itn_address` is not in the rewards table and has no reward to be claimed. **/ - claimItnReward: AugmentedSubmittable<(rewardAddress: AccountId | string | Uint8Array, itnAddress: AccountId | string | Uint8Array, signature: OffChainSignature | { Ed25519: any } | { Sr25519: any } | { Ecdsa: any } | string | Uint8Array) => SubmittableExtrinsic, [AccountId, AccountId, OffChainSignature]>; - setItnRewardStatus: AugmentedSubmittable<(itnAddress: AccountId | string | Uint8Array, status: ItnRewardStatus | { Unclaimed: any } | { Claimed: any } | string | Uint8Array) => SubmittableExtrinsic, [AccountId, ItnRewardStatus]>; + claimItnReward: AugmentedSubmittable<(rewardAddress: AccountId32 | string | Uint8Array, itnAddress: AccountId32 | string | Uint8Array, signature: SpRuntimeMultiSignature | { Ed25519: any } | { Sr25519: any } | { Ecdsa: any } | string | Uint8Array) => SubmittableExtrinsic, [AccountId32, AccountId32, SpRuntimeMultiSignature]>; + setItnRewardStatus: AugmentedSubmittable<(itnAddress: AccountId32 | string | Uint8Array, status: PalletRewardsItnRewardStatus | { Unclaimed: any } | { Claimed: any } | string | Uint8Array) => SubmittableExtrinsic, [AccountId32, PalletRewardsItnRewardStatus]>; /** * Generic tx **/ @@ -2389,7 +2393,7 @@ declare module '@polkadot/api/types/submittable' { * - Will use base weight of 100 which should be good for up to 30 scheduled calls * # **/ - cancel: AugmentedSubmittable<(when: BlockNumber | AnyNumber | Uint8Array, index: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [BlockNumber, u32]>; + cancel: AugmentedSubmittable<(when: u32 | AnyNumber | Uint8Array, index: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32, u32]>; /** * Cancel a named scheduled task. * @@ -2415,7 +2419,7 @@ declare module '@polkadot/api/types/submittable' { * - Will use base weight of 25 which should be good for up to 30 scheduled calls * # **/ - schedule: AugmentedSubmittable<(when: BlockNumber | AnyNumber | Uint8Array, maybePeriodic: Option | null | object | string | Uint8Array, priority: Priority | AnyNumber | Uint8Array, call: Call | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic, [BlockNumber, Option, Priority, Call]>; + schedule: AugmentedSubmittable<(when: u32 | AnyNumber | Uint8Array, maybePeriodic: Option> | null | object | string | Uint8Array, priority: u8 | AnyNumber | Uint8Array, call: Call | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic, [u32, Option>, u8, Call]>; /** * Anonymously schedule a task after a delay. * @@ -2423,7 +2427,7 @@ declare module '@polkadot/api/types/submittable' { * Same as [`schedule`]. * # **/ - scheduleAfter: AugmentedSubmittable<(after: BlockNumber | AnyNumber | Uint8Array, maybePeriodic: Option | null | object | string | Uint8Array, priority: Priority | AnyNumber | Uint8Array, call: Call | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic, [BlockNumber, Option, Priority, Call]>; + scheduleAfter: AugmentedSubmittable<(after: u32 | AnyNumber | Uint8Array, maybePeriodic: Option> | null | object | string | Uint8Array, priority: u8 | AnyNumber | Uint8Array, call: Call | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic, [u32, Option>, u8, Call]>; /** * Schedule a named task. * @@ -2436,15 +2440,15 @@ declare module '@polkadot/api/types/submittable' { * - Will use base weight of 35 which should be good for more than 30 scheduled calls * # **/ - scheduleNamed: AugmentedSubmittable<(id: Bytes | string | Uint8Array, when: BlockNumber | AnyNumber | Uint8Array, maybePeriodic: Option | null | object | string | Uint8Array, priority: Priority | AnyNumber | Uint8Array, call: Call | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic, [Bytes, BlockNumber, Option, Priority, Call]>; + scheduleNamed: AugmentedSubmittable<(id: Bytes | string | Uint8Array, when: u32 | AnyNumber | Uint8Array, maybePeriodic: Option> | null | object | string | Uint8Array, priority: u8 | AnyNumber | Uint8Array, call: Call | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic, [Bytes, u32, Option>, u8, Call]>; /** * Schedule a named task after a delay. * * # - * Same as [`schedule_named`]. + * Same as [`schedule_named`](Self::schedule_named). * # **/ - scheduleNamedAfter: AugmentedSubmittable<(id: Bytes | string | Uint8Array, after: BlockNumber | AnyNumber | Uint8Array, maybePeriodic: Option | null | object | string | Uint8Array, priority: Priority | AnyNumber | Uint8Array, call: Call | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic, [Bytes, BlockNumber, Option, Priority, Call]>; + scheduleNamedAfter: AugmentedSubmittable<(id: Bytes | string | Uint8Array, after: u32 | AnyNumber | Uint8Array, maybePeriodic: Option> | null | object | string | Uint8Array, priority: u8 | AnyNumber | Uint8Array, call: Call | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic, [Bytes, u32, Option>, u8, Call]>; /** * Generic tx **/ @@ -2453,16 +2457,20 @@ declare module '@polkadot/api/types/submittable' { session: { /** * Removes any session key(s) of the function caller. + * * This doesn't take effect until the next session. * - * The dispatch origin of this function must be signed. + * The dispatch origin of this function must be Signed and the account must be either be + * convertible to a validator ID using the chain's typical addressing system (this usually + * means being a controller account) or directly convertible into a validator ID (which + * usually means being a stash account). * * # - * - Complexity: `O(1)` in number of key types. - * Actual cost depends on the number of length of `T::Keys::key_ids()` which is fixed. + * - Complexity: `O(1)` in number of key types. Actual cost depends on the number of length + * of `T::Keys::key_ids()` which is fixed. * - DbReads: `T::ValidatorIdOf`, `NextKeys`, `origin account` * - DbWrites: `NextKeys`, `origin account` - * - DbWrites per key id: `KeyOwnder` + * - DbWrites per key id: `KeyOwner` * # **/ purgeKeys: AugmentedSubmittable<() => SubmittableExtrinsic, []>; @@ -2474,15 +2482,15 @@ declare module '@polkadot/api/types/submittable' { * The dispatch origin of this function must be signed. * * # - * - Complexity: `O(1)` - * Actual cost depends on the number of length of `T::Keys::key_ids()` which is fixed. + * - Complexity: `O(1)`. Actual cost depends on the number of length of + * `T::Keys::key_ids()` which is fixed. * - DbReads: `origin account`, `T::ValidatorIdOf`, `NextKeys` * - DbWrites: `origin account`, `NextKeys` * - DbReads per key id: `KeyOwner` * - DbWrites per key id: `KeyOwner` * # **/ - setKeys: AugmentedSubmittable<(keys: Keys | string | Uint8Array, proof: Bytes | string | Uint8Array) => SubmittableExtrinsic, [Keys, Bytes]>; + setKeys: AugmentedSubmittable<(keys: PolymeshRuntimeDevelopRuntimeSessionKeys | { grandpa?: any; babe?: any; imOnline?: any; authorityDiscovery?: any } | string | Uint8Array, proof: Bytes | string | Uint8Array) => SubmittableExtrinsic, [PolymeshRuntimeDevelopRuntimeSessionKeys, Bytes]>; /** * Generic tx **/ @@ -2504,7 +2512,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Portfolio **/ - addAndAffirmInstruction: AugmentedSubmittable<(venueId: VenueId | AnyNumber | Uint8Array, settlementType: SettlementType | { SettleOnAffirmation: any } | { SettleOnBlock: any } | string | Uint8Array, tradeDate: Option | null | object | string | Uint8Array, valueDate: Option | null | object | string | Uint8Array, legs: Vec | (Leg | { from?: any; to?: any; asset?: any; amount?: any } | string | Uint8Array)[], portfolios: Vec | (PortfolioId | { did?: any; kind?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [VenueId, SettlementType, Option, Option, Vec, Vec]>; + addAndAffirmInstruction: AugmentedSubmittable<(venueId: u64 | AnyNumber | Uint8Array, settlementType: PalletSettlementSettlementType | { SettleOnAffirmation: any } | { SettleOnBlock: any } | string | Uint8Array, tradeDate: Option | null | object | string | Uint8Array, valueDate: Option | null | object | string | Uint8Array, legs: Vec | (PalletSettlementLeg | { from?: any; to?: any; asset?: any; amount?: any } | string | Uint8Array)[], portfolios: Vec | (PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [u64, PalletSettlementSettlementType, Option, Option, Vec, Vec]>; /** * Adds a new instruction. * @@ -2519,7 +2527,7 @@ declare module '@polkadot/api/types/submittable' { * # Weight * `950_000_000 + 1_000_000 * legs.len()` **/ - addInstruction: AugmentedSubmittable<(venueId: VenueId | AnyNumber | Uint8Array, settlementType: SettlementType | { SettleOnAffirmation: any } | { SettleOnBlock: any } | string | Uint8Array, tradeDate: Option | null | object | string | Uint8Array, valueDate: Option | null | object | string | Uint8Array, legs: Vec | (Leg | { from?: any; to?: any; asset?: any; amount?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [VenueId, SettlementType, Option, Option, Vec]>; + addInstruction: AugmentedSubmittable<(venueId: u64 | AnyNumber | Uint8Array, settlementType: PalletSettlementSettlementType | { SettleOnAffirmation: any } | { SettleOnBlock: any } | string | Uint8Array, tradeDate: Option | null | object | string | Uint8Array, valueDate: Option | null | object | string | Uint8Array, legs: Vec | (PalletSettlementLeg | { from?: any; to?: any; asset?: any; amount?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [u64, PalletSettlementSettlementType, Option, Option, Vec]>; /** * Provide affirmation to an existing instruction. * @@ -2531,7 +2539,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Portfolio **/ - affirmInstruction: AugmentedSubmittable<(id: InstructionId | AnyNumber | Uint8Array, portfolios: Vec | (PortfolioId | { did?: any; kind?: any } | string | Uint8Array)[], maxLegsCount: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [InstructionId, Vec, u32]>; + affirmInstruction: AugmentedSubmittable<(id: u64 | AnyNumber | Uint8Array, portfolios: Vec | (PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array)[], maxLegsCount: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u64, Vec, u32]>; /** * Accepts an instruction and claims a signed receipt. * @@ -2546,7 +2554,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Portfolio **/ - affirmWithReceipts: AugmentedSubmittable<(id: InstructionId | AnyNumber | Uint8Array, receiptDetails: Vec | (ReceiptDetails | { receipt_uid?: any; leg_id?: any; signer?: any; signature?: any; metadata?: any } | string | Uint8Array)[], portfolios: Vec | (PortfolioId | { did?: any; kind?: any } | string | Uint8Array)[], maxLegsCount: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [InstructionId, Vec, Vec, u32]>; + affirmWithReceipts: AugmentedSubmittable<(id: u64 | AnyNumber | Uint8Array, receiptDetails: Vec | (PalletSettlementReceiptDetails | { receiptUid?: any; legId?: any; signer?: any; signature?: any; metadata?: any } | string | Uint8Array)[], portfolios: Vec | (PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array)[], maxLegsCount: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u64, Vec, Vec, u32]>; /** * Allows additional venues to create instructions involving an asset. * @@ -2556,7 +2564,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - allowVenues: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, venues: Vec | (VenueId | AnyNumber | Uint8Array)[]) => SubmittableExtrinsic, [Ticker, Vec]>; + allowVenues: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, venues: Vec | (u64 | AnyNumber | Uint8Array)[]) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, Vec]>; /** * Marks a receipt issued by the caller as claimed or not claimed. * This allows the receipt issuer to invalidate an already issued receipt or revalidate an already claimed receipt. @@ -2578,7 +2586,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Portfolio **/ - claimReceipt: AugmentedSubmittable<(id: InstructionId | AnyNumber | Uint8Array, receiptDetails: ReceiptDetails | { receipt_uid?: any; leg_id?: any; signer?: any; signature?: any; metadata?: any } | string | Uint8Array) => SubmittableExtrinsic, [InstructionId, ReceiptDetails]>; + claimReceipt: AugmentedSubmittable<(id: u64 | AnyNumber | Uint8Array, receiptDetails: PalletSettlementReceiptDetails | { receiptUid?: any; legId?: any; signer?: any; signature?: any; metadata?: any } | string | Uint8Array) => SubmittableExtrinsic, [u64, PalletSettlementReceiptDetails]>; /** * Registers a new venue. * @@ -2586,7 +2594,7 @@ declare module '@polkadot/api/types/submittable' { * * `signers` - Array of signers that are allowed to sign receipts for this venue * * `typ` - Type of venue being created **/ - createVenue: AugmentedSubmittable<(details: VenueDetails | string, signers: Vec | (AccountId | string | Uint8Array)[], typ: VenueType | 'Other' | 'Distribution' | 'Sto' | 'Exchange' | number | Uint8Array) => SubmittableExtrinsic, [VenueDetails, Vec, VenueType]>; + createVenue: AugmentedSubmittable<(details: Bytes | string | Uint8Array, signers: Vec | (AccountId32 | string | Uint8Array)[], typ: PalletSettlementVenueType | 'Other' | 'Distribution' | 'Sto' | 'Exchange' | number | Uint8Array) => SubmittableExtrinsic, [Bytes, Vec, PalletSettlementVenueType]>; /** * Revokes permission given to venues for creating instructions involving a particular asset. * @@ -2596,11 +2604,11 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - disallowVenues: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, venues: Vec | (VenueId | AnyNumber | Uint8Array)[]) => SubmittableExtrinsic, [Ticker, Vec]>; + disallowVenues: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, venues: Vec | (u64 | AnyNumber | Uint8Array)[]) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, Vec]>; /** * Root callable extrinsic, used as an internal call to execute a scheduled settlement instruction. **/ - executeScheduledInstruction: AugmentedSubmittable<(id: InstructionId | AnyNumber | Uint8Array, legsCount: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [InstructionId, u32]>; + executeScheduledInstruction: AugmentedSubmittable<(id: u64 | AnyNumber | Uint8Array, legsCount: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u64, u32]>; /** * Rejects an existing instruction. * @@ -2612,7 +2620,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Portfolio **/ - rejectInstruction: AugmentedSubmittable<(id: InstructionId | AnyNumber | Uint8Array, portfolio: PortfolioId | { did?: any; kind?: any } | string | Uint8Array, numOfLegs: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [InstructionId, PortfolioId, u32]>; + rejectInstruction: AugmentedSubmittable<(id: u64 | AnyNumber | Uint8Array, portfolio: PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array, numOfLegs: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u64, PolymeshPrimitivesIdentityIdPortfolioId, u32]>; /** * Reschedules a failed instruction. * @@ -2625,7 +2633,7 @@ declare module '@polkadot/api/types/submittable' { * # Errors * * `InstructionNotFailed` - Instruction not in a failed state or does not exist. **/ - rescheduleInstruction: AugmentedSubmittable<(id: InstructionId | AnyNumber | Uint8Array) => SubmittableExtrinsic, [InstructionId]>; + rescheduleInstruction: AugmentedSubmittable<(id: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u64]>; /** * Enables or disabled venue filtering for a token. * @@ -2636,7 +2644,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - setVenueFiltering: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, enabled: bool | boolean | Uint8Array) => SubmittableExtrinsic, [Ticker, bool]>; + setVenueFiltering: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, enabled: bool | boolean | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, bool]>; /** * Unclaims a previously claimed receipt. * @@ -2647,21 +2655,21 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Portfolio **/ - unclaimReceipt: AugmentedSubmittable<(instructionId: InstructionId | AnyNumber | Uint8Array, legId: LegId | AnyNumber | Uint8Array) => SubmittableExtrinsic, [InstructionId, LegId]>; + unclaimReceipt: AugmentedSubmittable<(instructionId: u64 | AnyNumber | Uint8Array, legId: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u64, u64]>; /** * Edit a venue's details. * * * `id` specifies the ID of the venue to edit. * * `details` specifies the updated venue details. **/ - updateVenueDetails: AugmentedSubmittable<(id: VenueId | AnyNumber | Uint8Array, details: VenueDetails | string) => SubmittableExtrinsic, [VenueId, VenueDetails]>; + updateVenueDetails: AugmentedSubmittable<(id: u64 | AnyNumber | Uint8Array, details: Bytes | string | Uint8Array) => SubmittableExtrinsic, [u64, Bytes]>; /** * Edit a venue's type. * * * `id` specifies the ID of the venue to edit. * * `type` specifies the new type of the venue. **/ - updateVenueType: AugmentedSubmittable<(id: VenueId | AnyNumber | Uint8Array, typ: VenueType | 'Other' | 'Distribution' | 'Sto' | 'Exchange' | number | Uint8Array) => SubmittableExtrinsic, [VenueId, VenueType]>; + updateVenueType: AugmentedSubmittable<(id: u64 | AnyNumber | Uint8Array, typ: PalletSettlementVenueType | 'Other' | 'Distribution' | 'Sto' | 'Exchange' | number | Uint8Array) => SubmittableExtrinsic, [u64, PalletSettlementVenueType]>; /** * Withdraw an affirmation for a given instruction. * @@ -2673,7 +2681,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Portfolio **/ - withdrawAffirmation: AugmentedSubmittable<(id: InstructionId | AnyNumber | Uint8Array, portfolios: Vec | (PortfolioId | { did?: any; kind?: any } | string | Uint8Array)[], maxLegsCount: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [InstructionId, Vec, u32]>; + withdrawAffirmation: AugmentedSubmittable<(id: u64 | AnyNumber | Uint8Array, portfolios: Vec | (PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array)[], maxLegsCount: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u64, Vec, u32]>; /** * Generic tx **/ @@ -2690,7 +2698,7 @@ declare module '@polkadot/api/types/submittable' { * * identity Validator's IdentityId. * * intended_count No. of validators given identity intends to run. **/ - addPermissionedValidator: AugmentedSubmittable<(identity: IdentityId | string | Uint8Array, intendedCount: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [IdentityId, Option]>; + addPermissionedValidator: AugmentedSubmittable<(identity: PolymeshPrimitivesIdentityId | string | Uint8Array, intendedCount: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, Option]>; /** * Take the origin account as a stash and lock up `value` of its balance. `controller` will * be the account that controls it. @@ -2715,7 +2723,7 @@ declare module '@polkadot/api/types/submittable' { * - Write: Bonded, Payee, [Origin Account], Locks, Ledger * # **/ - bond: AugmentedSubmittable<(controller: LookupSource | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, value: Compact | AnyNumber | Uint8Array, payee: RewardDestination | { Staked: any } | { Stash: any } | { Controller: any } | { Account: any } | { None: any } | string | Uint8Array) => SubmittableExtrinsic, [LookupSource, Compact, RewardDestination]>; + bond: AugmentedSubmittable<(controller: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, value: Compact | AnyNumber | Uint8Array, payee: PalletStakingRewardDestination | { Staked: any } | { Stash: any } | { Controller: any } | { Account: any } | string | Uint8Array) => SubmittableExtrinsic, [MultiAddress, Compact, PalletStakingRewardDestination]>; /** * Add some extra amount that have appeared in the stash `free_balance` into the balance up * for staking. @@ -2739,7 +2747,7 @@ declare module '@polkadot/api/types/submittable' { * - Write: [Origin Account], Locks, Ledger * # **/ - bondExtra: AugmentedSubmittable<(maxAdditional: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Compact]>; + bondExtra: AugmentedSubmittable<(maxAdditional: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Compact]>; /** * Cancel enactment of a deferred slash. * @@ -2755,7 +2763,7 @@ declare module '@polkadot/api/types/submittable' { * - Write: Unapplied Slashes * # **/ - cancelDeferredSlash: AugmentedSubmittable<(era: EraIndex | AnyNumber | Uint8Array, slashIndices: Vec | (u32 | AnyNumber | Uint8Array)[]) => SubmittableExtrinsic, [EraIndex, Vec]>; + cancelDeferredSlash: AugmentedSubmittable<(era: u32 | AnyNumber | Uint8Array, slashIndices: Vec | (u32 | AnyNumber | Uint8Array)[]) => SubmittableExtrinsic, [u32, Vec]>; /** * Switch slashing status on the basis of given `SlashingSwitch`. Can only be called by root. * @@ -2763,7 +2771,7 @@ declare module '@polkadot/api/types/submittable' { * * origin - AccountId of root. * * slashing_switch - Switch used to set the targets for slashing. **/ - changeSlashingAllowedFor: AugmentedSubmittable<(slashingSwitch: SlashingSwitch | 'Validator' | 'ValidatorAndNominator' | 'None' | number | Uint8Array) => SubmittableExtrinsic, [SlashingSwitch]>; + changeSlashingAllowedFor: AugmentedSubmittable<(slashingSwitch: PalletStakingSlashingSwitch | 'Validator' | 'ValidatorAndNominator' | 'None' | number | Uint8Array) => SubmittableExtrinsic, [PalletStakingSlashingSwitch]>; /** * Declare no desire to either validate or nominate. * @@ -2832,7 +2840,7 @@ declare module '@polkadot/api/types/submittable' { * Writes Each: SpanSlash * S * # **/ - forceUnstake: AugmentedSubmittable<(stash: AccountId | string | Uint8Array, numSlashingSpans: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId, u32]>; + forceUnstake: AugmentedSubmittable<(stash: AccountId32 | string | Uint8Array, numSlashingSpans: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId32, u32]>; /** * Increments the ideal number of validators. * @@ -2864,7 +2872,7 @@ declare module '@polkadot/api/types/submittable' { * - Writes: Validators, Nominators * # **/ - nominate: AugmentedSubmittable<(targets: Vec | (LookupSource | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; + nominate: AugmentedSubmittable<(targets: Vec | (MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** * Pay out all the stakers behind a single validator for a single era. * @@ -2892,11 +2900,11 @@ declare module '@polkadot/api/types/submittable' { * - Write Each: System Account, Locks, Ledger (3 items) * # **/ - payoutStakers: AugmentedSubmittable<(validatorStash: AccountId | string | Uint8Array, era: EraIndex | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId, EraIndex]>; + payoutStakers: AugmentedSubmittable<(validatorStash: AccountId32 | string | Uint8Array, era: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId32, u32]>; /** * System version of `payout_stakers()`. Only be called by the root origin. **/ - payoutStakersBySystem: AugmentedSubmittable<(validatorStash: AccountId | string | Uint8Array, era: EraIndex | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId, EraIndex]>; + payoutStakersBySystem: AugmentedSubmittable<(validatorStash: AccountId32 | string | Uint8Array, era: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId32, u32]>; /** * Remove all data structure concerning a staker/stash once its balance is at the minimum. * This is essentially equivalent to `withdraw_unbonded` except it can be called by anyone @@ -2914,7 +2922,7 @@ declare module '@polkadot/api/types/submittable' { * - Writes Each: SpanSlash * S * # **/ - reapStash: AugmentedSubmittable<(stash: AccountId | string | Uint8Array, numSlashingSpans: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId, u32]>; + reapStash: AugmentedSubmittable<(stash: AccountId32 | string | Uint8Array, numSlashingSpans: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId32, u32]>; /** * Rebond a portion of the stash scheduled to be unlocked. * @@ -2931,7 +2939,7 @@ declare module '@polkadot/api/types/submittable' { * - Writes: [Origin Account], Locks, Ledger * # **/ - rebond: AugmentedSubmittable<(value: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Compact]>; + rebond: AugmentedSubmittable<(value: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Compact]>; /** * Remove an identity from the pool of (wannabe) validator identities. Effects are known in the next session. * Staking module checks `PermissionedIdentity` to ensure validators have @@ -2941,7 +2949,7 @@ declare module '@polkadot/api/types/submittable' { * * origin Required origin for removing a potential validator. * * identity Validator's IdentityId. **/ - removePermissionedValidator: AugmentedSubmittable<(identity: IdentityId | string | Uint8Array) => SubmittableExtrinsic, [IdentityId]>; + removePermissionedValidator: AugmentedSubmittable<(identity: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId]>; /** * Scale up the ideal number of validators by a factor. * @@ -2978,7 +2986,7 @@ declare module '@polkadot/api/types/submittable' { * - Write: Bonded, Ledger New Controller, Ledger Old Controller * # **/ - setController: AugmentedSubmittable<(controller: LookupSource | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array) => SubmittableExtrinsic, [LookupSource]>; + setController: AugmentedSubmittable<(controller: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array) => SubmittableExtrinsic, [MultiAddress]>; /** * Set `HistoryDepth` value. This function will delete any history information * when `HistoryDepth` is reduced. @@ -3002,7 +3010,7 @@ declare module '@polkadot/api/types/submittable' { * - Writes Each: ErasValidatorReward, ErasRewardPoints, ErasTotalStake, ErasStartSessionIndex * # **/ - setHistoryDepth: AugmentedSubmittable<(newHistoryDepth: Compact | AnyNumber | Uint8Array, eraItemsDeleted: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Compact, Compact]>; + setHistoryDepth: AugmentedSubmittable<(newHistoryDepth: Compact | AnyNumber | Uint8Array, eraItemsDeleted: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Compact, Compact]>; /** * Set the validators who cannot be slashed (if any). * @@ -3013,7 +3021,7 @@ declare module '@polkadot/api/types/submittable' { * - Write: Invulnerables * # **/ - setInvulnerables: AugmentedSubmittable<(invulnerables: Vec | (AccountId | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; + setInvulnerables: AugmentedSubmittable<(invulnerables: Vec | (AccountId32 | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** * Changes min bond value to be used in validate(). Only Governance * committee is allowed to change this value. @@ -3021,7 +3029,7 @@ declare module '@polkadot/api/types/submittable' { * # Arguments * * `new_value` the new minimum **/ - setMinBondThreshold: AugmentedSubmittable<(newValue: BalanceOf | AnyNumber | Uint8Array) => SubmittableExtrinsic, [BalanceOf]>; + setMinBondThreshold: AugmentedSubmittable<(newValue: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u128]>; /** * (Re-)set the payment target for a controller. * @@ -3040,7 +3048,7 @@ declare module '@polkadot/api/types/submittable' { * - Write: Payee * # **/ - setPayee: AugmentedSubmittable<(payee: RewardDestination | { Staked: any } | { Stash: any } | { Controller: any } | { Account: any } | { None: any } | string | Uint8Array) => SubmittableExtrinsic, [RewardDestination]>; + setPayee: AugmentedSubmittable<(payee: PalletStakingRewardDestination | { Staked: any } | { Stash: any } | { Controller: any } | { Account: any } | string | Uint8Array) => SubmittableExtrinsic, [PalletStakingRewardDestination]>; /** * Sets the ideal number of validators. * @@ -3103,7 +3111,7 @@ declare module '@polkadot/api/types/submittable' { * - Worse solution is retraced in pre-dispatch-checks which sets its own weight. * # **/ - submitElectionSolution: AugmentedSubmittable<(winners: Vec | (ValidatorIndex | AnyNumber | Uint8Array)[], compact: CompactAssignments | { votes1?: any; votes2?: any; votes3?: any; votes4?: any; votes5?: any; votes6?: any; votes7?: any; votes8?: any; votes9?: any; votes10?: any; votes11?: any; votes12?: any; votes13?: any; votes14?: any; votes15?: any; votes16?: any } | string | Uint8Array, score: ElectionScore, era: EraIndex | AnyNumber | Uint8Array, size: ElectionSize | { validators?: any; nominators?: any } | string | Uint8Array) => SubmittableExtrinsic, [Vec, CompactAssignments, ElectionScore, EraIndex, ElectionSize]>; + submitElectionSolution: AugmentedSubmittable<(winners: Vec | (u16 | AnyNumber | Uint8Array)[], compact: PalletStakingCompactAssignments | { votes1?: any; votes2?: any; votes3?: any; votes4?: any; votes5?: any; votes6?: any; votes7?: any; votes8?: any; votes9?: any; votes10?: any; votes11?: any; votes12?: any; votes13?: any; votes14?: any; votes15?: any; votes16?: any } | string | Uint8Array, score: Vec, era: u32 | AnyNumber | Uint8Array, size: PalletStakingElectionSize | { validators?: any; nominators?: any } | string | Uint8Array) => SubmittableExtrinsic, [Vec, PalletStakingCompactAssignments, Vec, u32, PalletStakingElectionSize]>; /** * Unsigned version of `submit_election_solution`. * @@ -3115,7 +3123,7 @@ declare module '@polkadot/api/types/submittable' { * See [`submit_election_solution`]. * # **/ - submitElectionSolutionUnsigned: AugmentedSubmittable<(winners: Vec | (ValidatorIndex | AnyNumber | Uint8Array)[], compact: CompactAssignments | { votes1?: any; votes2?: any; votes3?: any; votes4?: any; votes5?: any; votes6?: any; votes7?: any; votes8?: any; votes9?: any; votes10?: any; votes11?: any; votes12?: any; votes13?: any; votes14?: any; votes15?: any; votes16?: any } | string | Uint8Array, score: ElectionScore, era: EraIndex | AnyNumber | Uint8Array, size: ElectionSize | { validators?: any; nominators?: any } | string | Uint8Array) => SubmittableExtrinsic, [Vec, CompactAssignments, ElectionScore, EraIndex, ElectionSize]>; + submitElectionSolutionUnsigned: AugmentedSubmittable<(winners: Vec | (u16 | AnyNumber | Uint8Array)[], compact: PalletStakingCompactAssignments | { votes1?: any; votes2?: any; votes3?: any; votes4?: any; votes5?: any; votes6?: any; votes7?: any; votes8?: any; votes9?: any; votes10?: any; votes11?: any; votes12?: any; votes13?: any; votes14?: any; votes15?: any; votes16?: any } | string | Uint8Array, score: Vec, era: u32 | AnyNumber | Uint8Array, size: PalletStakingElectionSize | { validators?: any; nominators?: any } | string | Uint8Array) => SubmittableExtrinsic, [Vec, PalletStakingCompactAssignments, Vec, u32, PalletStakingElectionSize]>; /** * 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 @@ -3150,7 +3158,7 @@ declare module '@polkadot/api/types/submittable' { * - Write: Locks, Ledger, \[Origin Account\] * **/ - unbond: AugmentedSubmittable<(value: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Compact]>; + unbond: AugmentedSubmittable<(value: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Compact]>; /** * Update the intended validator count for a given DID. * @@ -3159,7 +3167,7 @@ declare module '@polkadot/api/types/submittable' { * * identity to add as a validator. * * new_intended_count New value of intended count. **/ - updatePermissionedValidatorIntendedCount: AugmentedSubmittable<(identity: IdentityId | string | Uint8Array, newIntendedCount: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [IdentityId, u32]>; + updatePermissionedValidatorIntendedCount: AugmentedSubmittable<(identity: PolymeshPrimitivesIdentityId | string | Uint8Array, newIntendedCount: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, u32]>; /** * Declare the desire to validate for the origin controller. * @@ -3179,7 +3187,7 @@ declare module '@polkadot/api/types/submittable' { * - Write: Nominators, Validators * # **/ - validate: AugmentedSubmittable<(prefs: ValidatorPrefs | { commission?: any; blocked?: any } | string | Uint8Array) => SubmittableExtrinsic, [ValidatorPrefs]>; + validate: AugmentedSubmittable<(prefs: PalletStakingValidatorPrefs | { commission?: any; blocked?: any } | string | Uint8Array) => SubmittableExtrinsic, [PalletStakingValidatorPrefs]>; /** * Validate the nominators CDD expiry time. * @@ -3192,7 +3200,7 @@ declare module '@polkadot/api/types/submittable' { * - Depends on the no. of claim issuers an accountId has for the CDD expiry. * # **/ - validateCddExpiryNominators: AugmentedSubmittable<(targets: Vec | (AccountId | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; + validateCddExpiryNominators: AugmentedSubmittable<(targets: Vec | (AccountId32 | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** * Remove any unlocked chunks from the `unlocking` queue from our management. * @@ -3248,7 +3256,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - addExemptedEntities: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, transferManager: TransferManager | { CountTransferManager: any } | { PercentageTransferManager: any } | string | Uint8Array, exemptedEntities: Vec | (ScopeId | string | Uint8Array)[]) => SubmittableExtrinsic, [Ticker, TransferManager, Vec]>; + addExemptedEntities: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, transferManager: PolymeshPrimitivesStatisticsTransferManager | { CountTransferManager: any } | { PercentageTransferManager: any } | string | Uint8Array, exemptedEntities: Vec | (PolymeshPrimitivesIdentityId | string | Uint8Array)[]) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, PolymeshPrimitivesStatisticsTransferManager, Vec]>; /** * Adds a new transfer manager. * @@ -3265,7 +3273,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - addTransferManager: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, newTransferManager: TransferManager | { CountTransferManager: any } | { PercentageTransferManager: any } | string | Uint8Array) => SubmittableExtrinsic, [Ticker, TransferManager]>; + addTransferManager: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, newTransferManager: PolymeshPrimitivesStatisticsTransferManager | { CountTransferManager: any } | { PercentageTransferManager: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, PolymeshPrimitivesStatisticsTransferManager]>; /** * remove entities from exemption list of a transfer manager * @@ -3281,7 +3289,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - removeExemptedEntities: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, transferManager: TransferManager | { CountTransferManager: any } | { PercentageTransferManager: any } | string | Uint8Array, entities: Vec | (ScopeId | string | Uint8Array)[]) => SubmittableExtrinsic, [Ticker, TransferManager, Vec]>; + removeExemptedEntities: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, transferManager: PolymeshPrimitivesStatisticsTransferManager | { CountTransferManager: any } | { PercentageTransferManager: any } | string | Uint8Array, entities: Vec | (PolymeshPrimitivesIdentityId | string | Uint8Array)[]) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, PolymeshPrimitivesStatisticsTransferManager, Vec]>; /** * Removes a transfer manager. * @@ -3297,7 +3305,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - removeTransferManager: AugmentedSubmittable<(ticker: Ticker | string | Uint8Array, transferManager: TransferManager | { CountTransferManager: any } | { PercentageTransferManager: any } | string | Uint8Array) => SubmittableExtrinsic, [Ticker, TransferManager]>; + removeTransferManager: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, transferManager: PolymeshPrimitivesStatisticsTransferManager | { CountTransferManager: any } | { PercentageTransferManager: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, PolymeshPrimitivesStatisticsTransferManager]>; /** * Generic tx **/ @@ -3322,7 +3330,7 @@ declare module '@polkadot/api/types/submittable' { * * Asset * * Portfolio **/ - createFundraiser: AugmentedSubmittable<(offeringPortfolio: PortfolioId | { did?: any; kind?: any } | string | Uint8Array, offeringAsset: Ticker | string | Uint8Array, raisingPortfolio: PortfolioId | { did?: any; kind?: any } | string | Uint8Array, raisingAsset: Ticker | string | Uint8Array, tiers: Vec | (PriceTier | { total?: any; price?: any } | string | Uint8Array)[], venueId: VenueId | AnyNumber | Uint8Array, start: Option | null | object | string | Uint8Array, end: Option | null | object | string | Uint8Array, minimumInvestment: Balance | AnyNumber | Uint8Array, fundraiserName: FundraiserName | string) => SubmittableExtrinsic, [PortfolioId, Ticker, PortfolioId, Ticker, Vec, VenueId, Option, Option, Balance, FundraiserName]>; + createFundraiser: AugmentedSubmittable<(offeringPortfolio: PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array, offeringAsset: PolymeshPrimitivesTicker | string | Uint8Array, raisingPortfolio: PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array, raisingAsset: PolymeshPrimitivesTicker | string | Uint8Array, tiers: Vec | (PalletStoPriceTier | { total?: any; price?: any } | string | Uint8Array)[], venueId: u64 | AnyNumber | Uint8Array, start: Option | null | object | string | Uint8Array, end: Option | null | object | string | Uint8Array, minimumInvestment: u128 | AnyNumber | Uint8Array, fundraiserName: Bytes | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesTicker, Vec, u64, Option, Option, u128, Bytes]>; /** * Freeze a fundraiser. * @@ -3332,7 +3340,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - freezeFundraiser: AugmentedSubmittable<(offeringAsset: Ticker | string | Uint8Array, id: FundraiserId | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Ticker, FundraiserId]>; + freezeFundraiser: AugmentedSubmittable<(offeringAsset: PolymeshPrimitivesTicker | string | Uint8Array, id: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, u64]>; /** * Invest in a fundraiser. * @@ -3347,7 +3355,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Portfolio **/ - invest: AugmentedSubmittable<(investmentPortfolio: PortfolioId | { did?: any; kind?: any } | string | Uint8Array, fundingPortfolio: PortfolioId | { did?: any; kind?: any } | string | Uint8Array, offeringAsset: Ticker | string | Uint8Array, id: FundraiserId | AnyNumber | Uint8Array, purchaseAmount: Balance | AnyNumber | Uint8Array, maxPrice: Option | null | object | string | Uint8Array, receipt: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PortfolioId, PortfolioId, Ticker, FundraiserId, Balance, Option, Option]>; + invest: AugmentedSubmittable<(investmentPortfolio: PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array, fundingPortfolio: PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array, offeringAsset: PolymeshPrimitivesTicker | string | Uint8Array, id: u64 | AnyNumber | Uint8Array, purchaseAmount: u128 | AnyNumber | Uint8Array, maxPrice: Option | null | object | string | Uint8Array, receipt: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesTicker, u64, u128, Option, Option]>; /** * Modify the time window a fundraiser is active * @@ -3359,7 +3367,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - modifyFundraiserWindow: AugmentedSubmittable<(offeringAsset: Ticker | string | Uint8Array, id: FundraiserId | AnyNumber | Uint8Array, start: Moment | AnyNumber | Uint8Array, end: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [Ticker, FundraiserId, Moment, Option]>; + modifyFundraiserWindow: AugmentedSubmittable<(offeringAsset: PolymeshPrimitivesTicker | string | Uint8Array, id: u64 | AnyNumber | Uint8Array, start: u64 | AnyNumber | Uint8Array, end: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, u64, u64, Option]>; /** * Stop a fundraiser. * @@ -3369,7 +3377,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - stop: AugmentedSubmittable<(offeringAsset: Ticker | string | Uint8Array, id: FundraiserId | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Ticker, FundraiserId]>; + stop: AugmentedSubmittable<(offeringAsset: PolymeshPrimitivesTicker | string | Uint8Array, id: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, u64]>; /** * Unfreeze a fundraiser. * @@ -3379,7 +3387,7 @@ declare module '@polkadot/api/types/submittable' { * # Permissions * * Asset **/ - unfreezeFundraiser: AugmentedSubmittable<(offeringAsset: Ticker | string | Uint8Array, id: FundraiserId | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Ticker, FundraiserId]>; + unfreezeFundraiser: AugmentedSubmittable<(offeringAsset: PolymeshPrimitivesTicker | string | Uint8Array, id: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, u64]>; /** * Generic tx **/ @@ -3397,7 +3405,7 @@ declare module '@polkadot/api/types/submittable' { * - One DB change. * # **/ - setKey: AugmentedSubmittable<(updated: LookupSource | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array) => SubmittableExtrinsic, [LookupSource]>; + setKey: AugmentedSubmittable<(updated: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array) => SubmittableExtrinsic, [MultiAddress]>; /** * Authenticates the sudo key and dispatches a function call with `Root` origin. * @@ -3424,7 +3432,7 @@ declare module '@polkadot/api/types/submittable' { * - Weight of derivative `call` execution + 10,000. * # **/ - sudoAs: AugmentedSubmittable<(who: LookupSource | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, call: Call | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic, [LookupSource, Call]>; + sudoAs: AugmentedSubmittable<(who: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, call: Call | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic, [MultiAddress, Call]>; /** * Authenticates the sudo key and dispatches a function call with `Root` origin. * This function does not check the weight of the call, and instead allows the @@ -3437,7 +3445,7 @@ declare module '@polkadot/api/types/submittable' { * - The weight of this call is defined by the caller. * # **/ - sudoUncheckedWeight: AugmentedSubmittable<(call: Call | { callIndex?: any; args?: any } | string | Uint8Array, weight: Weight | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Call, Weight]>; + sudoUncheckedWeight: AugmentedSubmittable<(call: Call | { callIndex?: any; args?: any } | string | Uint8Array, weight: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Call, u64]>; /** * Generic tx **/ @@ -3461,7 +3469,7 @@ declare module '@polkadot/api/types/submittable' { * - Writes: Number of subkeys + 1 * # **/ - killPrefix: AugmentedSubmittable<(prefix: Key | string | Uint8Array, subkeys: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Key, u32]>; + killPrefix: AugmentedSubmittable<(prefix: Bytes | string | Uint8Array, subkeys: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Bytes, u32]>; /** * Kill some items from storage. * @@ -3472,17 +3480,24 @@ declare module '@polkadot/api/types/submittable' { * - Writes: Number of items * # **/ - killStorage: AugmentedSubmittable<(keys: Vec | (Key | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; + killStorage: AugmentedSubmittable<(keys: Vec | (Bytes | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** * Make some on-chain remark. * * # * - `O(1)` - * - Base Weight: 0.665 µs, independent of remark length. - * - No DB operations. * # **/ remark: AugmentedSubmittable<(remark: Bytes | string | Uint8Array) => SubmittableExtrinsic, [Bytes]>; + /** + * Make some on-chain remark and emit event. + * + * # + * - `O(b)` where b is the length of the remark. + * - 1 event. + * # + **/ + remarkWithEvent: AugmentedSubmittable<(remark: Bytes | string | Uint8Array) => SubmittableExtrinsic, [Bytes]>; /** * Set the new changes trie configuration. * @@ -3495,17 +3510,19 @@ declare module '@polkadot/api/types/submittable' { * - Writes: Changes Trie, System Digest * # **/ - setChangesTrieConfig: AugmentedSubmittable<(changesTrieConfig: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [Option]>; + setChangesTrieConfig: AugmentedSubmittable<(changesTrieConfig: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [Option]>; /** * Set the new runtime code. * * # * - `O(C + S)` where `C` length of `code` and `S` complexity of `can_set_code` + * - 1 call to `can_set_code`: `O(S)` (calls `sp_io::misc::runtime_version` which is + * expensive). * - 1 storage write (codec `O(C)`). - * - 1 call to `can_set_code`: `O(S)` (calls `sp_io::misc::runtime_version` which is expensive). + * - 1 digest item. * - 1 event. - * The weight of this function is dependent on the runtime, but generally this is very expensive. - * We will treat this as a full block. + * The weight of this function is dependent on the runtime, but generally this is very + * expensive. We will treat this as a full block. * # **/ setCode: AugmentedSubmittable<(code: Bytes | string | Uint8Array) => SubmittableExtrinsic, [Bytes]>; @@ -3515,9 +3532,10 @@ declare module '@polkadot/api/types/submittable' { * # * - `O(C)` where `C` length of `code` * - 1 storage write (codec `O(C)`). + * - 1 digest item. * - 1 event. - * The weight of this function is dependent on the runtime. We will treat this as a full block. - * # + * The weight of this function is dependent on the runtime. We will treat this as a full + * block. # **/ setCodeWithoutChecks: AugmentedSubmittable<(code: Bytes | string | Uint8Array) => SubmittableExtrinsic, [Bytes]>; /** @@ -3528,6 +3546,7 @@ declare module '@polkadot/api/types/submittable' { * - 1 storage write. * - Base Weight: 1.405 µs * - 1 write to HEAP_PAGES + * - 1 digest item * # **/ setHeapPages: AugmentedSubmittable<(pages: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u64]>; @@ -3541,7 +3560,7 @@ declare module '@polkadot/api/types/submittable' { * - Writes: Number of items * # **/ - setStorage: AugmentedSubmittable<(items: Vec | (KeyValue)[]) => SubmittableExtrinsic, [Vec]>; + setStorage: AugmentedSubmittable<(items: Vec> | ([Bytes | string | Uint8Array, Bytes | string | Uint8Array])[]) => SubmittableExtrinsic, [Vec>]>; /** * Generic tx **/ @@ -3554,7 +3573,7 @@ declare module '@polkadot/api/types/submittable' { * # Arguments * * `expiry` - The new expiry time. **/ - setExpiresAfter: AugmentedSubmittable<(expiry: MaybeBlock | { Some: any } | { None: any } | string | Uint8Array) => SubmittableExtrinsic, [MaybeBlock]>; + setExpiresAfter: AugmentedSubmittable<(expiry: PolymeshCommonUtilitiesMaybeBlock | { Some: any } | { None: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshCommonUtilitiesMaybeBlock]>; /** * Changes the release coordinator. * @@ -3564,7 +3583,7 @@ declare module '@polkadot/api/types/submittable' { * # Errors * * `NotAMember`, If the new coordinator `id` is not part of the committee. **/ - setReleaseCoordinator: AugmentedSubmittable<(id: IdentityId | string | Uint8Array) => SubmittableExtrinsic, [IdentityId]>; + setReleaseCoordinator: AugmentedSubmittable<(id: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId]>; /** * Change the vote threshold the determines the winning proposal. * For e.g., for a simple majority use (1, 2) which represents the in-equation ">= 1/2". @@ -3586,7 +3605,7 @@ declare module '@polkadot/api/types/submittable' { * # Errors * * `NotAMember`, if the `origin` is not a member of this committee. **/ - vote: AugmentedSubmittable<(proposal: Hash | string | Uint8Array, index: ProposalIndex | AnyNumber | Uint8Array, approve: bool | boolean | Uint8Array) => SubmittableExtrinsic, [Hash, ProposalIndex, bool]>; + vote: AugmentedSubmittable<(proposal: H256 | string | Uint8Array, index: u32 | AnyNumber | Uint8Array, approve: bool | boolean | Uint8Array) => SubmittableExtrinsic, [H256, u32, bool]>; /** * Proposes to the committee that `call` should be executed in its name. * Alternatively, if the hash of `call` has already been recorded, i.e., already proposed, @@ -3633,7 +3652,7 @@ declare module '@polkadot/api/types/submittable' { * * `origin` - Origin representing `AddOrigin` or root * * `who` - IdentityId to be added to the group. **/ - addMember: AugmentedSubmittable<(who: IdentityId | string | Uint8Array) => SubmittableExtrinsic, [IdentityId]>; + addMember: AugmentedSubmittable<(who: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId]>; /** * Disables a member at specific moment. * @@ -3652,7 +3671,7 @@ declare module '@polkadot/api/types/submittable' { * * `expiry` - Time-stamp when `who` is removed from CDD. As soon as it is expired, the * generated claims will be "invalid" as `who` is not considered a member of the group. **/ - disableMember: AugmentedSubmittable<(who: IdentityId | string | Uint8Array, expiry: Option | null | object | string | Uint8Array, at: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [IdentityId, Option, Option]>; + disableMember: AugmentedSubmittable<(who: PolymeshPrimitivesIdentityId | string | Uint8Array, expiry: Option | null | object | string | Uint8Array, at: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, Option, Option]>; /** * Removes a member `who` from the set. May only be called from `RemoveOrigin` or root. * @@ -3665,7 +3684,7 @@ declare module '@polkadot/api/types/submittable' { * * `origin` - Origin representing `RemoveOrigin` or root * * `who` - IdentityId to be removed from the group. **/ - removeMember: AugmentedSubmittable<(who: IdentityId | string | Uint8Array) => SubmittableExtrinsic, [IdentityId]>; + removeMember: AugmentedSubmittable<(who: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId]>; /** * Changes the membership to a new set, disregarding the existing membership. * May only be called from `ResetOrigin` or root. @@ -3674,14 +3693,14 @@ declare module '@polkadot/api/types/submittable' { * * `origin` - Origin representing `ResetOrigin` or root * * `members` - New set of identities **/ - resetMembers: AugmentedSubmittable<(members: Vec | (IdentityId | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; + resetMembers: AugmentedSubmittable<(members: Vec | (PolymeshPrimitivesIdentityId | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** * Change this group's limit for how many concurrent active members they may be. * * # Arguments * * `limit` - the number of active members there may be concurrently. **/ - setActiveMembersLimit: AugmentedSubmittable<(limit: MemberCount | AnyNumber | Uint8Array) => SubmittableExtrinsic, [MemberCount]>; + setActiveMembersLimit: AugmentedSubmittable<(limit: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32]>; /** * Swaps out one member `remove` for another member `add`. * @@ -3692,7 +3711,7 @@ declare module '@polkadot/api/types/submittable' { * * `remove` - IdentityId to be removed from the group. * * `add` - IdentityId to be added in place of `remove`. **/ - swapMember: AugmentedSubmittable<(remove: IdentityId | string | Uint8Array, add: IdentityId | string | Uint8Array) => SubmittableExtrinsic, [IdentityId, IdentityId]>; + swapMember: AugmentedSubmittable<(remove: PolymeshPrimitivesIdentityId | string | Uint8Array, add: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; /** * Generic tx **/ @@ -3702,7 +3721,7 @@ declare module '@polkadot/api/types/submittable' { /** * Emits an event with caller's identity and CDD status. **/ - getCddOf: AugmentedSubmittable<(of: AccountId | string | Uint8Array) => SubmittableExtrinsic, [AccountId]>; + getCddOf: AugmentedSubmittable<(of: AccountId32 | string | Uint8Array) => SubmittableExtrinsic, [AccountId32]>; /** * Emits an event with caller's identity. **/ @@ -3721,7 +3740,7 @@ declare module '@polkadot/api/types/submittable' { * - `target_account` (primary key of the new Identity) can be linked to just one and only * one identity. **/ - mockCddRegisterDid: AugmentedSubmittable<(targetAccount: AccountId | string | Uint8Array) => SubmittableExtrinsic, [AccountId]>; + mockCddRegisterDid: AugmentedSubmittable<(targetAccount: AccountId32 | string | Uint8Array) => SubmittableExtrinsic, [AccountId32]>; /** * Generates a new `IdentityID` for the caller, and issues a self-generated CDD claim. * @@ -3734,7 +3753,7 @@ declare module '@polkadot/api/types/submittable' { * - `SecondaryKeysContainPrimaryKey` if `secondary_keys` contains the caller account. * - `DidAlreadyExists` if auto-generated DID already exists. **/ - registerDid: AugmentedSubmittable<(uid: InvestorUid | string | Uint8Array, secondaryKeys: Vec | (SecondaryKey | { signer?: any; permissions?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [InvestorUid, Vec]>; + registerDid: AugmentedSubmittable<(uid: PolymeshPrimitivesCddIdInvestorUid | string | Uint8Array, secondaryKeys: Vec | (PolymeshPrimitivesSecondaryKey | { signer?: any; permissions?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [PolymeshPrimitivesCddIdInvestorUid, Vec]>; /** * Generic tx **/ @@ -3754,11 +3773,12 @@ declare module '@polkadot/api/types/submittable' { * * # * - `O(1)` (Note that implementations of `OnTimestampSet` must also be `O(1)`) - * - 1 storage read and 1 storage mutation (codec `O(1)`). (because of `DidUpdate::take` in `on_finalize`) + * - 1 storage read and 1 storage mutation (codec `O(1)`). (because of `DidUpdate::take` in + * `on_finalize`) * - 1 event handler `on_timestamp_set`. Must be `O(1)`. * # **/ - set: AugmentedSubmittable<(now: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Compact]>; + set: AugmentedSubmittable<(now: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Compact]>; /** * Generic tx **/ @@ -3773,13 +3793,13 @@ declare module '@polkadot/api/types/submittable' { * * `BadOrigin`: Only root can execute transaction. * * `InsufficientBalance`: If treasury balances is not enough to cover all beneficiaries. **/ - disbursement: AugmentedSubmittable<(beneficiaries: Vec | (Beneficiary | { id?: any; amount?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; + disbursement: AugmentedSubmittable<(beneficiaries: Vec | (PolymeshPrimitivesBeneficiary | { id?: any; amount?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** * It transfers the specific `amount` from `origin` account into treasury. * * Only accounts which are associated to an identity can make a donation to treasury. **/ - reimbursement: AugmentedSubmittable<(amount: BalanceOf | AnyNumber | Uint8Array) => SubmittableExtrinsic, [BalanceOf]>; + reimbursement: AugmentedSubmittable<(amount: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u128]>; /** * Generic tx **/ @@ -3792,7 +3812,7 @@ declare module '@polkadot/api/types/submittable' { * # Arguments * * `expiry` - The new expiry time. **/ - setExpiresAfter: AugmentedSubmittable<(expiry: MaybeBlock | { Some: any } | { None: any } | string | Uint8Array) => SubmittableExtrinsic, [MaybeBlock]>; + setExpiresAfter: AugmentedSubmittable<(expiry: PolymeshCommonUtilitiesMaybeBlock | { Some: any } | { None: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshCommonUtilitiesMaybeBlock]>; /** * Changes the release coordinator. * @@ -3802,7 +3822,7 @@ declare module '@polkadot/api/types/submittable' { * # Errors * * `NotAMember`, If the new coordinator `id` is not part of the committee. **/ - setReleaseCoordinator: AugmentedSubmittable<(id: IdentityId | string | Uint8Array) => SubmittableExtrinsic, [IdentityId]>; + setReleaseCoordinator: AugmentedSubmittable<(id: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId]>; /** * Change the vote threshold the determines the winning proposal. * For e.g., for a simple majority use (1, 2) which represents the in-equation ">= 1/2". @@ -3824,7 +3844,7 @@ declare module '@polkadot/api/types/submittable' { * # Errors * * `NotAMember`, if the `origin` is not a member of this committee. **/ - vote: AugmentedSubmittable<(proposal: Hash | string | Uint8Array, index: ProposalIndex | AnyNumber | Uint8Array, approve: bool | boolean | Uint8Array) => SubmittableExtrinsic, [Hash, ProposalIndex, bool]>; + vote: AugmentedSubmittable<(proposal: H256 | string | Uint8Array, index: u32 | AnyNumber | Uint8Array, approve: bool | boolean | Uint8Array) => SubmittableExtrinsic, [H256, u32, bool]>; /** * Proposes to the committee that `call` should be executed in its name. * Alternatively, if the hash of `call` has already been recorded, i.e., already proposed, @@ -3871,7 +3891,7 @@ declare module '@polkadot/api/types/submittable' { * * `origin` - Origin representing `AddOrigin` or root * * `who` - IdentityId to be added to the group. **/ - addMember: AugmentedSubmittable<(who: IdentityId | string | Uint8Array) => SubmittableExtrinsic, [IdentityId]>; + addMember: AugmentedSubmittable<(who: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId]>; /** * Disables a member at specific moment. * @@ -3890,7 +3910,7 @@ declare module '@polkadot/api/types/submittable' { * * `expiry` - Time-stamp when `who` is removed from CDD. As soon as it is expired, the * generated claims will be "invalid" as `who` is not considered a member of the group. **/ - disableMember: AugmentedSubmittable<(who: IdentityId | string | Uint8Array, expiry: Option | null | object | string | Uint8Array, at: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [IdentityId, Option, Option]>; + disableMember: AugmentedSubmittable<(who: PolymeshPrimitivesIdentityId | string | Uint8Array, expiry: Option | null | object | string | Uint8Array, at: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, Option, Option]>; /** * Removes a member `who` from the set. May only be called from `RemoveOrigin` or root. * @@ -3903,7 +3923,7 @@ declare module '@polkadot/api/types/submittable' { * * `origin` - Origin representing `RemoveOrigin` or root * * `who` - IdentityId to be removed from the group. **/ - removeMember: AugmentedSubmittable<(who: IdentityId | string | Uint8Array) => SubmittableExtrinsic, [IdentityId]>; + removeMember: AugmentedSubmittable<(who: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId]>; /** * Changes the membership to a new set, disregarding the existing membership. * May only be called from `ResetOrigin` or root. @@ -3912,14 +3932,14 @@ declare module '@polkadot/api/types/submittable' { * * `origin` - Origin representing `ResetOrigin` or root * * `members` - New set of identities **/ - resetMembers: AugmentedSubmittable<(members: Vec | (IdentityId | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; + resetMembers: AugmentedSubmittable<(members: Vec | (PolymeshPrimitivesIdentityId | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** * Change this group's limit for how many concurrent active members they may be. * * # Arguments * * `limit` - the number of active members there may be concurrently. **/ - setActiveMembersLimit: AugmentedSubmittable<(limit: MemberCount | AnyNumber | Uint8Array) => SubmittableExtrinsic, [MemberCount]>; + setActiveMembersLimit: AugmentedSubmittable<(limit: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32]>; /** * Swaps out one member `remove` for another member `add`. * @@ -3930,7 +3950,7 @@ declare module '@polkadot/api/types/submittable' { * * `remove` - IdentityId to be removed from the group. * * `add` - IdentityId to be added in place of `remove`. **/ - swapMember: AugmentedSubmittable<(remove: IdentityId | string | Uint8Array, add: IdentityId | string | Uint8Array) => SubmittableExtrinsic, [IdentityId, IdentityId]>; + swapMember: AugmentedSubmittable<(remove: PolymeshPrimitivesIdentityId | string | Uint8Array, add: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; /** * Generic tx **/ @@ -4018,16 +4038,11 @@ declare module '@polkadot/api/types/submittable' { * - `call`: Call to be relayed on behalf of target * **/ - relayTx: AugmentedSubmittable<(target: AccountId | string | Uint8Array, signature: OffChainSignature | { Ed25519: any } | { Sr25519: any } | { Ecdsa: any } | string | Uint8Array, call: UniqueCall | { nonce?: any; call?: any } | string | Uint8Array) => SubmittableExtrinsic, [AccountId, OffChainSignature, UniqueCall]>; + relayTx: AugmentedSubmittable<(target: AccountId32 | string | Uint8Array, signature: SpRuntimeMultiSignature | { Ed25519: any } | { Sr25519: any } | { Ecdsa: any } | string | Uint8Array, call: PalletUtilityUniqueCall | { nonce?: any; call?: any } | string | Uint8Array) => SubmittableExtrinsic, [AccountId32, SpRuntimeMultiSignature, PalletUtilityUniqueCall]>; /** * Generic tx **/ [key: string]: SubmittableExtrinsicFunction; }; - } - - export interface SubmittableExtrinsics extends AugmentedSubmittables { - (extrinsic: Call | Extrinsic | Uint8Array | string): SubmittableExtrinsic; - [key: string]: SubmittableModuleExtrinsics; - } -} + } // AugmentedSubmittables +} // declare module diff --git a/scripts/cli/src/interfaces/augment-api.ts b/scripts/cli/src/interfaces/augment-api.ts index c283f4fa44..921d2f824d 100644 --- a/scripts/cli/src/interfaces/augment-api.ts +++ b/scripts/cli/src/interfaces/augment-api.ts @@ -1,7 +1,6 @@ // Auto-generated via `yarn polkadot-types-from-chain`, do not edit /* eslint-disable */ -import '@polkadot/api/augment/rpc'; import './augment-api-consts'; import './augment-api-errors'; import './augment-api-events'; diff --git a/scripts/cli/src/interfaces/augment-types.ts b/scripts/cli/src/interfaces/augment-types.ts index 966dfbe316..e5bf3ba6c5 100644 --- a/scripts/cli/src/interfaces/augment-types.ts +++ b/scripts/cli/src/interfaces/augment-types.ts @@ -1,7 +1,8 @@ // Auto-generated via `yarn polkadot-types-from-defs`, do not edit /* eslint-disable */ -import type { BitVec, Bool, Bytes, Compact, Data, I128, I16, I256, I32, I64, I8, Json, Null, Option, Raw, StorageKey, Text, Type, U128, U16, U256, U32, U64, U8, USize, Vec, bool, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types'; +import type { Data, StorageKey } from '@polkadot/types'; +import type { BitVec, Bool, Bytes, I128, I16, I256, I32, I64, I8, Json, Null, Raw, Text, Type, U128, U16, U256, U32, U64, U8, USize, bool, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types-codec'; import type { AssetApproval, AssetApprovalKey, AssetBalance, AssetDestroyWitness, AssetDetails, AssetMetadata, TAssetBalance, TAssetDepositBalance } from '@polkadot/types/interfaces/assets'; import type { BlockAttestations, IncludedBlocks, MoreAttestations } from '@polkadot/types/interfaces/attestations'; import type { RawAuraPreDigest } from '@polkadot/types/interfaces/aura'; @@ -10,46 +11,46 @@ import type { UncleEntryItem } from '@polkadot/types/interfaces/authorship'; import type { AllowedSlots, BabeAuthorityWeight, BabeBlockWeight, BabeEpochConfiguration, BabeEquivocationProof, BabeWeight, EpochAuthorship, MaybeRandomness, MaybeVrf, NextConfigDescriptor, NextConfigDescriptorV1, Randomness, RawBabePreDigest, RawBabePreDigestCompat, RawBabePreDigestPrimary, RawBabePreDigestPrimaryTo159, RawBabePreDigestSecondaryPlain, RawBabePreDigestSecondaryTo159, RawBabePreDigestSecondaryVRF, RawBabePreDigestTo159, SlotNumber, VrfData, VrfOutput, VrfProof } from '@polkadot/types/interfaces/babe'; import type { AccountData, BalanceLock, BalanceLockTo212, BalanceStatus, Reasons, ReserveData, ReserveIdentifier, VestingSchedule, WithdrawReasons } from '@polkadot/types/interfaces/balances'; import type { BeefyCommitment, BeefyId, BeefyNextAuthoritySet, BeefyPayload, BeefySignedCommitment, MmrRootHash, ValidatorSetId } from '@polkadot/types/interfaces/beefy'; -import type { BridgedBlockHash, BridgedBlockNumber, BridgedHeader, InitializationData } from '@polkadot/types/interfaces/bridges'; +import type { BridgeMessageId, BridgedBlockHash, BridgedBlockNumber, BridgedHeader, CallOrigin, ChainId, DeliveredMessages, DispatchFeePayment, InboundLaneData, InboundRelayer, InitializationData, LaneId, MessageData, MessageKey, MessageNonce, MessagesDeliveryProofOf, MessagesProofOf, OperatingMode, OutboundLaneData, OutboundMessageFee, OutboundPayload, Parameter, RelayerId, UnrewardedRelayer, UnrewardedRelayersState } from '@polkadot/types/interfaces/bridges'; import type { BlockHash } from '@polkadot/types/interfaces/chain'; import type { PrefixedStorageKey } from '@polkadot/types/interfaces/childstate'; -import type { EthereumAddress, StatementKind } from '@polkadot/types/interfaces/claims'; +import type { StatementKind } from '@polkadot/types/interfaces/claims'; import type { CollectiveOrigin, MemberCount, ProposalIndex, Votes, VotesTo230 } from '@polkadot/types/interfaces/collective'; import type { AuthorityId, RawVRFOutput } from '@polkadot/types/interfaces/consensus'; -import type { AliveContractInfo, CodeHash, ContractCallRequest, ContractExecResult, ContractExecResultErr, ContractExecResultErrModule, ContractExecResultOk, ContractExecResultResult, ContractExecResultSuccessTo255, ContractExecResultSuccessTo260, ContractExecResultTo255, ContractExecResultTo260, ContractExecResultTo267, ContractInfo, ContractInstantiateResult, ContractStorageKey, DeletedContract, ExecReturnValue, Gas, HostFnWeights, HostFnWeightsTo264, InstantiateRequest, InstantiateReturnValue, InstructionWeights, Limits, LimitsTo264, PrefabWasmModule, RentProjection, Schedule, ScheduleTo212, ScheduleTo258, ScheduleTo264, SeedOf, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts'; -import type { ContractConstructorSpec, ContractContractSpec, ContractCryptoHasher, ContractDiscriminant, ContractDisplayName, ContractEventParamSpec, ContractEventSpec, ContractLayoutArray, ContractLayoutCell, ContractLayoutEnum, ContractLayoutHash, ContractLayoutHashingStrategy, ContractLayoutKey, ContractLayoutStruct, ContractLayoutStructField, ContractMessageParamSpec, ContractMessageSpec, ContractProject, ContractProjectContract, ContractProjectSource, ContractSelector, ContractStorageLayout, ContractTypeSpec } from '@polkadot/types/interfaces/contractsAbi'; +import type { AliveContractInfo, CodeHash, CodeUploadRequest, CodeUploadResult, CodeUploadResultValue, ContractCallFlags, ContractCallRequest, ContractExecResult, ContractExecResultErr, ContractExecResultErrModule, ContractExecResultOk, ContractExecResultResult, ContractExecResultSuccessTo255, ContractExecResultSuccessTo260, ContractExecResultTo255, ContractExecResultTo260, ContractExecResultTo267, ContractInfo, ContractInstantiateResult, ContractInstantiateResultTo267, ContractReturnFlags, ContractStorageKey, DeletedContract, ExecReturnValue, Gas, HostFnWeights, HostFnWeightsTo264, InstantiateRequest, InstantiateReturnValue, InstantiateReturnValueTo267, InstructionWeights, Limits, LimitsTo264, PrefabWasmModule, RentProjection, Schedule, ScheduleTo212, ScheduleTo258, ScheduleTo264, SeedOf, StorageDeposit, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts'; +import type { ContractConstructorSpecLatest, ContractConstructorSpecV0, ContractConstructorSpecV1, ContractConstructorSpecV2, ContractConstructorSpecV3, ContractContractSpecV0, ContractContractSpecV1, ContractContractSpecV2, ContractContractSpecV3, ContractCryptoHasher, ContractDiscriminant, ContractDisplayName, ContractEventParamSpecLatest, ContractEventParamSpecV0, ContractEventParamSpecV2, ContractEventSpecLatest, ContractEventSpecV0, ContractEventSpecV1, ContractEventSpecV2, ContractLayoutArray, ContractLayoutCell, ContractLayoutEnum, ContractLayoutHash, ContractLayoutHashingStrategy, ContractLayoutKey, ContractLayoutStruct, ContractLayoutStructField, ContractMessageParamSpecLatest, ContractMessageParamSpecV0, ContractMessageParamSpecV2, ContractMessageSpecLatest, ContractMessageSpecV0, ContractMessageSpecV1, ContractMessageSpecV2, ContractMetadata, ContractMetadataLatest, ContractMetadataV0, ContractMetadataV1, ContractMetadataV2, ContractMetadataV3, ContractProject, ContractProjectContract, ContractProjectInfo, ContractProjectSource, ContractProjectV0, ContractSelector, ContractStorageLayout, ContractTypeSpec } from '@polkadot/types/interfaces/contractsAbi'; import type { FundIndex, FundInfo, LastContribution, TrieIndex } from '@polkadot/types/interfaces/crowdloan'; import type { ConfigData, MessageId, OverweightIndex, PageCounter, PageIndexData } from '@polkadot/types/interfaces/cumulus'; import type { AccountVote, AccountVoteSplit, AccountVoteStandard, Conviction, Delegations, PreimageStatus, PreimageStatusAvailable, PriorLock, PropIndex, Proposal, ProxyState, ReferendumIndex, ReferendumInfo, ReferendumInfoFinished, ReferendumInfoTo239, ReferendumStatus, Tally, Voting, VotingDelegating, VotingDirect, VotingDirectVote } from '@polkadot/types/interfaces/democracy'; import type { ApprovalFlag, DefunctVoter, Renouncing, SetIndex, Vote, VoteIndex, VoteThreshold, VoterInfo } from '@polkadot/types/interfaces/elections'; import type { CreatedBlock, ImportedAux } from '@polkadot/types/interfaces/engine'; -import type { EthAccount, EthBlock, EthBloom, EthCallRequest, EthFilter, EthFilterAddress, EthFilterChanges, EthFilterTopic, EthFilterTopicEntry, EthFilterTopicInner, EthHeader, EthLog, EthReceipt, EthRichBlock, EthRichHeader, EthStorageProof, EthSubKind, EthSubParams, EthSubResult, EthSyncInfo, EthSyncStatus, EthTransaction, EthTransactionAction, EthTransactionCondition, EthTransactionRequest, EthTransactionSignature, EthTransactionStatus, EthWork, EthereumAccountId, EthereumLookupSource, EthereumSignature } from '@polkadot/types/interfaces/eth'; +import type { BlockV0, BlockV1, BlockV2, EIP1559Transaction, EIP2930Transaction, EthAccessList, EthAccessListItem, EthAccount, EthAddress, EthBlock, EthBloom, EthCallRequest, EthFilter, EthFilterAddress, EthFilterChanges, EthFilterTopic, EthFilterTopicEntry, EthFilterTopicInner, EthHeader, EthLog, EthReceipt, EthRichBlock, EthRichHeader, EthStorageProof, EthSubKind, EthSubParams, EthSubResult, EthSyncInfo, EthSyncStatus, EthTransaction, EthTransactionAction, EthTransactionCondition, EthTransactionRequest, EthTransactionSignature, EthTransactionStatus, EthWork, EthereumAccountId, EthereumAddress, EthereumLookupSource, EthereumSignature, LegacyTransaction, TransactionV0, TransactionV1, TransactionV2 } from '@polkadot/types/interfaces/eth'; import type { EvmAccount, EvmLog, EvmVicinity, ExitError, ExitFatal, ExitReason, ExitRevert, ExitSucceed } from '@polkadot/types/interfaces/evm'; -import type { AnySignature, EcdsaSignature, Ed25519Signature, Extrinsic, ExtrinsicEra, ExtrinsicPayload, ExtrinsicPayloadUnknown, ExtrinsicPayloadV4, ExtrinsicSignature, ExtrinsicSignatureV4, ExtrinsicUnknown, ExtrinsicV4, ImmortalEra, MortalEra, MultiSignature, Signature, SignerPayload, Sr25519Signature } from '@polkadot/types/interfaces/extrinsics'; +import type { AnySignature, EcdsaSignature, Ed25519Signature, Era, Extrinsic, ExtrinsicEra, ExtrinsicPayload, ExtrinsicPayloadUnknown, ExtrinsicPayloadV4, ExtrinsicSignature, ExtrinsicSignatureV4, ExtrinsicUnknown, ExtrinsicV4, ImmortalEra, MortalEra, MultiSignature, Signature, SignerPayload, Sr25519Signature } from '@polkadot/types/interfaces/extrinsics'; import type { AssetOptions, Owner, PermissionLatest, PermissionVersions, PermissionsV1 } from '@polkadot/types/interfaces/genericAsset'; import type { ActiveGilt, ActiveGiltsTotal, ActiveIndex, GiltBid } from '@polkadot/types/interfaces/gilt'; import type { AuthorityIndex, AuthorityList, AuthoritySet, AuthoritySetChange, AuthoritySetChanges, AuthorityWeight, DelayKind, DelayKindBest, EncodedFinalityProofs, ForkTreePendingChange, ForkTreePendingChangeNode, GrandpaCommit, GrandpaEquivocation, GrandpaEquivocationProof, GrandpaEquivocationValue, GrandpaJustification, GrandpaPrecommit, GrandpaPrevote, GrandpaSignedPrecommit, JustificationNotification, KeyOwnerProof, NextAuthority, PendingChange, PendingPause, PendingResume, Precommits, Prevotes, ReportedRoundStates, RoundState, SetId, StoredPendingChange, StoredState } from '@polkadot/types/interfaces/grandpa'; -import type { IdentityFields, IdentityInfo, IdentityInfoAdditional, IdentityJudgement, RegistrarIndex, RegistrarInfo, Registration, RegistrationJudgement } from '@polkadot/types/interfaces/identity'; +import type { IdentityFields, IdentityInfo, IdentityInfoAdditional, IdentityInfoTo198, IdentityJudgement, RegistrarIndex, RegistrarInfo, Registration, RegistrationJudgement, RegistrationTo198 } from '@polkadot/types/interfaces/identity'; import type { AuthIndex, AuthoritySignature, Heartbeat, HeartbeatTo244, OpaqueMultiaddr, OpaqueNetworkState, OpaquePeerId } from '@polkadot/types/interfaces/imOnline'; import type { CallIndex, LotteryConfig } from '@polkadot/types/interfaces/lottery'; -import type { DoubleMapTypeLatest, DoubleMapTypeV10, DoubleMapTypeV11, DoubleMapTypeV12, DoubleMapTypeV13, DoubleMapTypeV9, ErrorMetadataLatest, ErrorMetadataV10, ErrorMetadataV11, ErrorMetadataV12, ErrorMetadataV13, ErrorMetadataV9, EventMetadataLatest, EventMetadataV10, EventMetadataV11, EventMetadataV12, EventMetadataV13, EventMetadataV9, ExtrinsicMetadataLatest, ExtrinsicMetadataV11, ExtrinsicMetadataV12, ExtrinsicMetadataV13, FunctionArgumentMetadataLatest, FunctionArgumentMetadataV10, FunctionArgumentMetadataV11, FunctionArgumentMetadataV12, FunctionArgumentMetadataV13, FunctionArgumentMetadataV9, FunctionMetadataLatest, FunctionMetadataV10, FunctionMetadataV11, FunctionMetadataV12, FunctionMetadataV13, FunctionMetadataV9, MapTypeLatest, MapTypeV10, MapTypeV11, MapTypeV12, MapTypeV13, MapTypeV9, MetadataAll, MetadataLatest, MetadataV10, MetadataV11, MetadataV12, MetadataV13, MetadataV9, ModuleConstantMetadataLatest, ModuleConstantMetadataV10, ModuleConstantMetadataV11, ModuleConstantMetadataV12, ModuleConstantMetadataV13, ModuleConstantMetadataV9, ModuleMetadataLatest, ModuleMetadataV10, ModuleMetadataV11, ModuleMetadataV12, ModuleMetadataV13, ModuleMetadataV9, NMapTypeLatest, NMapTypeV13, StorageEntryMetadataLatest, StorageEntryMetadataV10, StorageEntryMetadataV11, StorageEntryMetadataV12, StorageEntryMetadataV13, StorageEntryMetadataV9, StorageEntryModifierLatest, StorageEntryModifierV10, StorageEntryModifierV11, StorageEntryModifierV12, StorageEntryModifierV13, StorageEntryModifierV9, StorageEntryTypeLatest, StorageEntryTypeV10, StorageEntryTypeV11, StorageEntryTypeV12, StorageEntryTypeV13, StorageEntryTypeV9, StorageHasher, StorageHasherV10, StorageHasherV11, StorageHasherV12, StorageHasherV13, StorageHasherV9, StorageMetadataLatest, StorageMetadataV10, StorageMetadataV11, StorageMetadataV12, StorageMetadataV13, StorageMetadataV9 } from '@polkadot/types/interfaces/metadata'; +import type { ErrorMetadataLatest, ErrorMetadataV10, ErrorMetadataV11, ErrorMetadataV12, ErrorMetadataV13, ErrorMetadataV14, ErrorMetadataV9, EventMetadataLatest, EventMetadataV10, EventMetadataV11, EventMetadataV12, EventMetadataV13, EventMetadataV14, EventMetadataV9, ExtrinsicMetadataLatest, ExtrinsicMetadataV11, ExtrinsicMetadataV12, ExtrinsicMetadataV13, ExtrinsicMetadataV14, FunctionArgumentMetadataLatest, FunctionArgumentMetadataV10, FunctionArgumentMetadataV11, FunctionArgumentMetadataV12, FunctionArgumentMetadataV13, FunctionArgumentMetadataV14, FunctionArgumentMetadataV9, FunctionMetadataLatest, FunctionMetadataV10, FunctionMetadataV11, FunctionMetadataV12, FunctionMetadataV13, FunctionMetadataV14, FunctionMetadataV9, MetadataAll, MetadataLatest, MetadataV10, MetadataV11, MetadataV12, MetadataV13, MetadataV14, MetadataV9, ModuleConstantMetadataV10, ModuleConstantMetadataV11, ModuleConstantMetadataV12, ModuleConstantMetadataV13, ModuleConstantMetadataV9, ModuleMetadataV10, ModuleMetadataV11, ModuleMetadataV12, ModuleMetadataV13, ModuleMetadataV9, PalletCallMetadataLatest, PalletCallMetadataV14, PalletConstantMetadataLatest, PalletConstantMetadataV14, PalletErrorMetadataLatest, PalletErrorMetadataV14, PalletEventMetadataLatest, PalletEventMetadataV14, PalletMetadataLatest, PalletMetadataV14, PalletStorageMetadataLatest, PalletStorageMetadataV14, PortableType, PortableTypeV14, SignedExtensionMetadataLatest, SignedExtensionMetadataV14, StorageEntryMetadataLatest, StorageEntryMetadataV10, StorageEntryMetadataV11, StorageEntryMetadataV12, StorageEntryMetadataV13, StorageEntryMetadataV14, StorageEntryMetadataV9, StorageEntryModifierLatest, StorageEntryModifierV10, StorageEntryModifierV11, StorageEntryModifierV12, StorageEntryModifierV13, StorageEntryModifierV14, StorageEntryModifierV9, StorageEntryTypeLatest, StorageEntryTypeV10, StorageEntryTypeV11, StorageEntryTypeV12, StorageEntryTypeV13, StorageEntryTypeV14, StorageEntryTypeV9, StorageHasher, StorageHasherV10, StorageHasherV11, StorageHasherV12, StorageHasherV13, StorageHasherV14, StorageHasherV9, StorageMetadataV10, StorageMetadataV11, StorageMetadataV12, StorageMetadataV13, StorageMetadataV9 } from '@polkadot/types/interfaces/metadata'; import type { MmrLeafProof } from '@polkadot/types/interfaces/mmr'; import type { StorageKind } from '@polkadot/types/interfaces/offchain'; import type { DeferredOffenceOf, Kind, OffenceDetails, Offender, OpaqueTimeSlot, ReportIdOf, Reporter } from '@polkadot/types/interfaces/offences'; -import type { AbridgedCandidateReceipt, AbridgedHostConfiguration, AbridgedHrmpChannel, AssignmentId, AssignmentKind, AttestedCandidate, AuctionIndex, AuthorityDiscoveryId, AvailabilityBitfield, AvailabilityBitfieldRecord, BackedCandidate, Bidder, BufferedSessionChange, CandidateCommitments, CandidateDescriptor, CandidateHash, CandidateInfo, CandidatePendingAvailability, CandidateReceipt, CollatorId, CollatorSignature, CommittedCandidateReceipt, CoreAssignment, CoreIndex, CoreOccupied, DisputeStatement, DisputeStatementSet, DoubleVoteReport, DownwardMessage, ExplicitDisputeStatement, GlobalValidationData, GlobalValidationSchedule, GroupIndex, HeadData, HostConfiguration, HrmpChannel, HrmpChannelId, HrmpOpenChannelRequest, InboundDownwardMessage, InboundHrmpMessage, InboundHrmpMessages, IncomingParachain, IncomingParachainDeploy, IncomingParachainFixed, InvalidDisputeStatementKind, LeasePeriod, LeasePeriodOf, LocalValidationData, MessageIngestionType, MessageQueueChain, MessagingStateSnapshot, MessagingStateSnapshotEgressEntry, MultiDisputeStatementSet, NewBidder, OutboundHrmpMessage, ParaGenesisArgs, ParaId, ParaInfo, ParaLifecycle, ParaPastCodeMeta, ParaScheduling, ParaValidatorIndex, ParachainDispatchOrigin, ParachainInherentData, ParachainProposal, ParachainsInherentData, ParathreadClaim, ParathreadClaimQueue, ParathreadEntry, PersistedValidationData, QueuedParathread, RegisteredParachainInfo, RelayBlockNumber, RelayChainBlockNumber, RelayChainHash, RelayHash, Remark, Retriable, Scheduling, ServiceQuality, SessionInfo, SessionInfoValidatorGroup, SignedAvailabilityBitfield, SignedAvailabilityBitfields, SigningContext, SlotRange, Statement, SubId, SystemInherentData, TransientValidationData, UpwardMessage, ValidDisputeStatementKind, ValidationCode, ValidationCodeHash, ValidationData, ValidationDataType, ValidationFunctionParams, ValidatorSignature, ValidityAttestation, VecInboundHrmpMessage, WinnersData, WinnersDataTuple, WinningData, WinningDataEntry } from '@polkadot/types/interfaces/parachains'; +import type { AbridgedCandidateReceipt, AbridgedHostConfiguration, AbridgedHrmpChannel, AssignmentId, AssignmentKind, AttestedCandidate, AuctionIndex, AuthorityDiscoveryId, AvailabilityBitfield, AvailabilityBitfieldRecord, BackedCandidate, Bidder, BufferedSessionChange, CandidateCommitments, CandidateDescriptor, CandidateHash, CandidateInfo, CandidatePendingAvailability, CandidateReceipt, CollatorId, CollatorSignature, CommittedCandidateReceipt, CoreAssignment, CoreIndex, CoreOccupied, DisputeLocation, DisputeResult, DisputeState, DisputeStatement, DisputeStatementSet, DoubleVoteReport, DownwardMessage, ExplicitDisputeStatement, GlobalValidationData, GlobalValidationSchedule, GroupIndex, HeadData, HostConfiguration, HrmpChannel, HrmpChannelId, HrmpOpenChannelRequest, InboundDownwardMessage, InboundHrmpMessage, InboundHrmpMessages, IncomingParachain, IncomingParachainDeploy, IncomingParachainFixed, InvalidDisputeStatementKind, LeasePeriod, LeasePeriodOf, LocalValidationData, MessageIngestionType, MessageQueueChain, MessagingStateSnapshot, MessagingStateSnapshotEgressEntry, MultiDisputeStatementSet, NewBidder, OutboundHrmpMessage, ParaGenesisArgs, ParaId, ParaInfo, ParaLifecycle, ParaPastCodeMeta, ParaScheduling, ParaValidatorIndex, ParachainDispatchOrigin, ParachainInherentData, ParachainProposal, ParachainsInherentData, ParathreadClaim, ParathreadClaimQueue, ParathreadEntry, PersistedValidationData, QueuedParathread, RegisteredParachainInfo, RelayBlockNumber, RelayChainBlockNumber, RelayChainHash, RelayHash, Remark, ReplacementTimes, Retriable, Scheduling, ServiceQuality, SessionInfo, SessionInfoValidatorGroup, SignedAvailabilityBitfield, SignedAvailabilityBitfields, SigningContext, SlotRange, SlotRange10, Statement, SubId, SystemInherentData, TransientValidationData, UpgradeGoAhead, UpgradeRestriction, UpwardMessage, ValidDisputeStatementKind, ValidationCode, ValidationCodeHash, ValidationData, ValidationDataType, ValidationFunctionParams, ValidatorSignature, ValidityAttestation, VecInboundHrmpMessage, WinnersData, WinnersData10, WinnersDataTuple, WinnersDataTuple10, WinningData, WinningData10, WinningDataEntry } from '@polkadot/types/interfaces/parachains'; import type { FeeDetails, InclusionFee, RuntimeDispatchInfo } from '@polkadot/types/interfaces/payment'; import type { Approvals } from '@polkadot/types/interfaces/poll'; import type { ProxyAnnouncement, ProxyDefinition, ProxyType } from '@polkadot/types/interfaces/proxy'; import type { AccountStatus, AccountValidity } from '@polkadot/types/interfaces/purchase'; import type { ActiveRecovery, RecoveryConfig } from '@polkadot/types/interfaces/recovery'; import type { RpcMethods } from '@polkadot/types/interfaces/rpc'; -import type { AccountId, AccountIdOf, AccountIndex, Address, AssetId, Balance, BalanceOf, Block, BlockNumber, BlockNumberFor, BlockNumberOf, Call, CallHash, CallHashOf, ChangesTrieConfiguration, ChangesTrieSignal, CodecHash, Consensus, ConsensusEngineId, Digest, DigestItem, EncodedJustification, ExtrinsicsWeight, Fixed128, Fixed64, FixedI128, FixedI64, FixedU128, FixedU64, H1024, H128, H160, H2048, H256, H32, H512, H64, Hash, Header, HeaderPartial, I32F32, Index, IndicesLookupSource, Justification, Justifications, KeyTypeId, KeyValue, LockIdentifier, LookupSource, LookupTarget, ModuleId, Moment, MultiAddress, MultiSigner, OpaqueCall, Origin, OriginCaller, PalletId, PalletVersion, PalletsOrigin, Pays, PerU16, Perbill, Percent, Permill, Perquintill, Phantom, PhantomData, PreRuntime, Releases, RuntimeDbWeight, Seal, SealV0, SignedBlock, SignedBlockWithJustification, SignedBlockWithJustifications, Slot, StorageData, StorageProof, TransactionInfo, TransactionPriority, TransactionStorageProof, U32F32, ValidatorId, ValidatorIdOf, Weight, WeightMultiplier } from '@polkadot/types/interfaces/runtime'; -import type { SiField, SiLookupTypeId, SiPath, SiType, SiTypeDef, SiTypeDefArray, SiTypeDefComposite, SiTypeDefPrimitive, SiTypeDefSequence, SiTypeDefTuple, SiTypeDefVariant, SiVariant } from '@polkadot/types/interfaces/scaleInfo'; +import type { AccountId, AccountId20, AccountId32, AccountIdOf, AccountIndex, Address, AssetId, Balance, BalanceOf, Block, BlockNumber, BlockNumberFor, BlockNumberOf, Call, CallHash, CallHashOf, ChangesTrieConfiguration, ChangesTrieSignal, CodecHash, Consensus, ConsensusEngineId, CrateVersion, Digest, DigestItem, EncodedJustification, ExtrinsicsWeight, Fixed128, Fixed64, FixedI128, FixedI64, FixedU128, FixedU64, H1024, H128, H160, H2048, H256, H32, H512, H64, Hash, Header, HeaderPartial, I32F32, Index, IndicesLookupSource, Justification, Justifications, KeyTypeId, KeyValue, LockIdentifier, LookupSource, LookupTarget, ModuleId, Moment, MultiAddress, MultiSigner, OpaqueCall, Origin, OriginCaller, PalletId, PalletVersion, PalletsOrigin, Pays, PerU16, Perbill, Percent, Permill, Perquintill, Phantom, PhantomData, PreRuntime, Releases, RuntimeDbWeight, Seal, SealV0, SignedBlock, SignedBlockWithJustification, SignedBlockWithJustifications, Slot, StorageData, StorageProof, TransactionInfo, TransactionPriority, TransactionStorageProof, U32F32, ValidatorId, ValidatorIdOf, Weight, WeightMultiplier } from '@polkadot/types/interfaces/runtime'; +import type { Si0Field, Si0LookupTypeId, Si0Path, Si0Type, Si0TypeDef, Si0TypeDefArray, Si0TypeDefBitSequence, Si0TypeDefCompact, Si0TypeDefComposite, Si0TypeDefPhantom, Si0TypeDefPrimitive, Si0TypeDefSequence, Si0TypeDefTuple, Si0TypeDefVariant, Si0TypeParameter, Si0Variant, Si1Field, Si1LookupTypeId, Si1Path, Si1Type, Si1TypeDef, Si1TypeDefArray, Si1TypeDefBitSequence, Si1TypeDefCompact, Si1TypeDefComposite, Si1TypeDefPrimitive, Si1TypeDefSequence, Si1TypeDefTuple, Si1TypeDefVariant, Si1TypeParameter, Si1Variant, SiField, SiLookupTypeId, SiPath, SiType, SiTypeDef, SiTypeDefArray, SiTypeDefBitSequence, SiTypeDefCompact, SiTypeDefComposite, SiTypeDefPrimitive, SiTypeDefSequence, SiTypeDefTuple, SiTypeDefVariant, SiTypeParameter, SiVariant } from '@polkadot/types/interfaces/scaleInfo'; import type { Period, Priority, SchedulePeriod, SchedulePriority, Scheduled, ScheduledTo254, TaskAddress } from '@polkadot/types/interfaces/scheduler'; import type { BeefyKey, FullIdentification, IdentificationTuple, Keys, MembershipProof, SessionIndex, SessionKeys1, SessionKeys10, SessionKeys10B, SessionKeys2, SessionKeys3, SessionKeys4, SessionKeys5, SessionKeys6, SessionKeys6B, SessionKeys7, SessionKeys7B, SessionKeys8, SessionKeys8B, SessionKeys9, SessionKeys9B, ValidatorCount } from '@polkadot/types/interfaces/session'; import type { Bid, BidKind, SocietyJudgement, SocietyVote, StrikeCount, VouchingStatus } from '@polkadot/types/interfaces/society'; -import type { ActiveEraInfo, CompactAssignments, CompactAssignmentsTo257, CompactAssignmentsTo265, CompactAssignmentsWith16, CompactAssignmentsWith24, CompactScore, CompactScoreCompact, ElectionCompute, ElectionPhase, ElectionResult, ElectionScore, ElectionSize, ElectionStatus, EraIndex, EraPoints, EraRewardPoints, EraRewards, Exposure, ExtendedBalance, Forcing, IndividualExposure, KeyType, MomentOf, Nominations, NominatorIndex, NominatorIndexCompact, OffchainAccuracy, OffchainAccuracyCompact, PhragmenScore, Points, RawSolution, RawSolutionTo265, RawSolutionWith16, RawSolutionWith24, ReadySolution, RewardDestination, RewardPoint, RoundSnapshot, SeatHolder, SignedSubmission, SignedSubmissionOf, SlashJournalEntry, SlashingSpans, SlashingSpansTo204, SolutionOrSnapshotSize, SolutionSupport, SolutionSupports, SpanIndex, SpanRecord, StakingLedger, StakingLedgerTo223, StakingLedgerTo240, SubmissionIndicesOf, Supports, UnappliedSlash, UnappliedSlashOther, UnlockChunk, ValidatorIndex, ValidatorIndexCompact, ValidatorPrefs, ValidatorPrefsTo145, ValidatorPrefsTo196, ValidatorPrefsWithBlocked, ValidatorPrefsWithCommission, VoteWeight, Voter } from '@polkadot/types/interfaces/staking'; -import type { ApiId, BlockTrace, BlockTraceEvent, BlockTraceEventData, BlockTraceSpan, KeyValueOption, ReadProof, RuntimeVersion, RuntimeVersionApi, RuntimeVersionPartial, StorageChangeSet, TraceBlockResponse, TraceError } from '@polkadot/types/interfaces/state'; +import type { ActiveEraInfo, CompactAssignments, CompactAssignmentsTo257, CompactAssignmentsTo265, CompactAssignmentsWith16, CompactAssignmentsWith24, CompactScore, CompactScoreCompact, ElectionCompute, ElectionPhase, ElectionResult, ElectionScore, ElectionSize, ElectionStatus, EraIndex, EraPoints, EraRewardPoints, EraRewards, Exposure, ExtendedBalance, Forcing, IndividualExposure, KeyType, MomentOf, Nominations, NominatorIndex, NominatorIndexCompact, OffchainAccuracy, OffchainAccuracyCompact, PhragmenScore, Points, RawSolution, RawSolutionTo265, RawSolutionWith16, RawSolutionWith24, ReadySolution, RewardDestination, RewardPoint, RoundSnapshot, SeatHolder, SignedSubmission, SignedSubmissionOf, SignedSubmissionTo276, SlashJournalEntry, SlashingSpans, SlashingSpansTo204, SolutionOrSnapshotSize, SolutionSupport, SolutionSupports, SpanIndex, SpanRecord, StakingLedger, StakingLedgerTo223, StakingLedgerTo240, SubmissionIndicesOf, Supports, UnappliedSlash, UnappliedSlashOther, UnlockChunk, ValidatorIndex, ValidatorIndexCompact, ValidatorPrefs, ValidatorPrefsTo145, ValidatorPrefsTo196, ValidatorPrefsWithBlocked, ValidatorPrefsWithCommission, VoteWeight, Voter } from '@polkadot/types/interfaces/staking'; +import type { ApiId, BlockTrace, BlockTraceEvent, BlockTraceEventData, BlockTraceSpan, KeyValueOption, ReadProof, RuntimeVersion, RuntimeVersionApi, RuntimeVersionPartial, SpecVersion, StorageChangeSet, TraceBlockResponse, TraceError } from '@polkadot/types/interfaces/state'; import type { WeightToFeeCoefficient } from '@polkadot/types/interfaces/support'; import type { AccountInfo, AccountInfoWithDualRefCount, AccountInfoWithProviders, AccountInfoWithRefCount, AccountInfoWithRefCountU8, AccountInfoWithTripleRefCount, ApplyExtrinsicResult, ArithmeticError, BlockLength, BlockWeights, ChainProperties, ChainType, ConsumedWeight, DigestOf, DispatchClass, DispatchError, DispatchErrorModule, DispatchErrorTo198, DispatchInfo, DispatchInfoTo190, DispatchInfoTo244, DispatchOutcome, DispatchResult, DispatchResultOf, DispatchResultTo198, Event, EventId, EventIndex, EventRecord, Health, InvalidTransaction, Key, LastRuntimeUpgradeInfo, NetworkState, NetworkStatePeerset, NetworkStatePeersetInfo, NodeRole, NotConnectedPeer, Peer, PeerEndpoint, PeerEndpointAddr, PeerInfo, PeerPing, PerDispatchClassU32, PerDispatchClassWeight, PerDispatchClassWeightsPerClass, Phase, RawOrigin, RefCount, RefCountTo259, SyncState, SystemOrigin, TokenError, TransactionValidityError, UnknownTransaction, WeightPerClass } from '@polkadot/types/interfaces/system'; import type { Bounty, BountyIndex, BountyStatus, BountyStatusActive, BountyStatusCuratorProposed, BountyStatusPendingPayout, OpenTip, OpenTipFinderTo225, OpenTipTip, OpenTipTo225, TreasuryProposal } from '@polkadot/types/interfaces/treasury'; @@ -57,2285 +58,26 @@ import type { Multiplier } from '@polkadot/types/interfaces/txpayment'; import type { ClassDetails, ClassId, ClassMetadata, DepositBalance, DepositBalanceOf, DestroyWitness, InstanceDetails, InstanceId, InstanceMetadata } from '@polkadot/types/interfaces/uniques'; import type { Multisig, Timepoint } from '@polkadot/types/interfaces/utility'; import type { VestingInfo } from '@polkadot/types/interfaces/vesting'; -import type { AccountId32Junction, AccountIndex64Junction, AccountKey20Junction, AssetInstance, BodyId, BodyPart, BodyPartAtLeastProportion, BodyPartFraction, BodyPartMoreThanProportion, DoubleEncodedCall, InboundStatus, Junction, MultiAsset, MultiAssetAbstractFungible, MultiAssetAbstractNonFungible, MultiAssetConcreteFungible, MultiAssetConcreteNonFungible, MultiLocation, NetworkId, OutboundStatus, Outcome, PluralityJunction, QueueConfigData, VersionedMultiAsset, VersionedMultiLocation, VersionedXcm, Xcm, XcmAssetEffects, XcmError, XcmHrmpChannelAccepted, XcmHrmpChannelClosing, XcmHrmpNewChannelOpenRequest, XcmOrder, XcmOrderBuyExecution, XcmOrderDepositAsset, XcmOrderDepositReserveAsset, XcmOrderExchangeAsset, XcmOrderInitiateReserveWithdraw, XcmOrderInitiateTeleport, XcmOrderQueryHolding, XcmOrigin, XcmOriginKind, XcmQueryResponse, XcmRelayedFrom, XcmReserveAssetDeposit, XcmResponse, XcmTeleportAsset, XcmTransact, XcmTransferAsset, XcmTransferReserveAsset, XcmWithdrawAsset, XcmpMessageFormat } from '@polkadot/types/interfaces/xcm'; +import type { AssetInstance, AssetInstanceV0, AssetInstanceV1, AssetInstanceV2, BodyId, BodyPart, DoubleEncodedCall, Fungibility, FungibilityV0, FungibilityV1, FungibilityV2, InboundStatus, InstructionV2, InteriorMultiLocation, Junction, JunctionV0, JunctionV1, JunctionV2, Junctions, JunctionsV1, JunctionsV2, MultiAsset, MultiAssetFilter, MultiAssetFilterV1, MultiAssetFilterV2, MultiAssetV0, MultiAssetV1, MultiAssetV2, MultiAssets, MultiAssetsV1, MultiAssetsV2, MultiLocation, MultiLocationV0, MultiLocationV1, MultiLocationV2, NetworkId, OriginKindV0, OriginKindV1, OriginKindV2, OutboundStatus, Outcome, QueryId, QueryStatus, QueueConfigData, Response, ResponseV0, ResponseV1, ResponseV2, ResponseV2Error, ResponseV2Result, VersionMigrationStage, VersionedMultiAsset, VersionedMultiAssets, VersionedMultiLocation, VersionedResponse, VersionedXcm, WeightLimitV2, WildFungibility, WildFungibilityV0, WildFungibilityV1, WildFungibilityV2, WildMultiAsset, WildMultiAssetV1, WildMultiAssetV2, Xcm, XcmAssetId, XcmError, XcmErrorV0, XcmErrorV1, XcmErrorV2, XcmOrder, XcmOrderV0, XcmOrderV1, XcmOrderV2, XcmOrigin, XcmOriginKind, XcmV0, XcmV1, XcmV2, XcmVersion, XcmpMessageFormat } from '@polkadot/types/interfaces/xcm'; import type { AGId, AffirmationStatus, AgentGroup, AssetCompliance, AssetComplianceResult, AssetDidResult, AssetIdentifier, AssetName, AssetOwnershipRelation, AssetPermissions, AssetType, Authorization, AuthorizationData, AuthorizationNonce, AuthorizationType, BallotMeta, BallotTimeRange, BallotTitle, BallotVote, Beneficiary, BridgeTx, BridgeTxDetail, BridgeTxStatus, CACheckpoint, CADetails, CAId, CAKind, CalendarPeriod, CalendarUnit, CanTransferResult, CappedFee, CddId, CddStatus, CheckpointId, CheckpointSchedule, ChoiceTitle, Claim, Claim1stKey, Claim2ndKey, ClaimType, ClassicTickerImport, ClassicTickerRegistration, Committee, ComplianceRequirement, ComplianceRequirementResult, Condition, ConditionResult, ConditionType, CorporateAction, Counter, CountryCode, CustomAssetTypeId, DepositInfo, DidRecord, DidRecords, DidRecordsSuccess, DidStatus, DispatchableName, DispatchableNames, Distribution, Document, DocumentHash, DocumentId, DocumentName, DocumentType, DocumentUri, ErrorAt, EventCounts, EventDid, ExtVersion, ExtensionAttributes, ExtrinsicPermissions, FundingRoundName, Fundraiser, FundraiserId, FundraiserName, FundraiserStatus, FundraiserTier, GranularCanTransferResult, HandledTxStatus, IdentityClaim, IdentityId, IdentityRole, InactiveMember, Instruction, InstructionId, InstructionStatus, InvestorUid, InvestorZKProofData, ItnRewardStatus, KeyIdentityData, Leg, LegId, LegStatus, LegacyPalletPermissions, LegacyPermissions, LocalCAId, MaybeBlock, Memo, MetaDescription, MetaUrl, MetaVersion, Motion, MotionInfoLink, MotionTitle, MovePortfolioItem, OffChainSignature, PalletName, PalletPermissions, Percentage, PermissionedIdentityPrefs, Permissions, Pip, PipDescription, PipId, PipsMetadata, PolymeshVotes, PortfolioId, PortfolioKind, PortfolioName, PortfolioNumber, PortfolioPermissions, PortfolioValidityResult, PosRatio, PreAuthorizedKeyInfo, PriceTier, ProposalData, ProposalDetails, ProposalState, ProposalStatus, Proposer, ProtocolOp, Receipt, ReceiptDetails, ReceiptMetadata, RecordDate, RecordDateSpec, RestrictionResult, RistrettoPoint, Scalar, ScheduleId, ScheduleSpec, Scope, ScopeClaimProof, ScopeId, SecondaryKey, SecondaryKeyWithAuth, SecurityToken, SettlementType, Signatory, SkippedCount, SlashingSwitch, SmartExtension, SmartExtensionName, SmartExtensionType, SnapshotId, SnapshotMetadata, SnapshotResult, SnapshottedPip, StoredSchedule, Subsidy, TargetIdAuthorization, TargetIdentities, TargetIdentity, TargetTreatment, Tax, TemplateDetails, TemplateMetadata, Ticker, TickerRegistration, TickerRegistrationConfig, TransferManager, TransferManagerResult, TrustedFor, TrustedIssuer, UniqueCall, Url, Venue, VenueDetails, VenueId, VenueType, Version, VoteByPip, VoteCount, VoteCountProposalFound, VotingResult, ZkProofData } from 'polymesh-typegen/interfaces/default'; declare module '@polkadot/types/types/registry' { export interface InterfaceTypes { - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Compact': Compact; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option
': Option
; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option
': Option
; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Option': Option; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec
': Vec
; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec
': Vec
; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; - 'Vec': Vec; AbridgedCandidateReceipt: AbridgedCandidateReceipt; AbridgedHostConfiguration: AbridgedHostConfiguration; AbridgedHrmpChannel: AbridgedHrmpChannel; AccountData: AccountData; AccountId: AccountId; - AccountId32Junction: AccountId32Junction; + AccountId20: AccountId20; + AccountId32: AccountId32; AccountIdOf: AccountIdOf; AccountIndex: AccountIndex; - AccountIndex64Junction: AccountIndex64Junction; AccountInfo: AccountInfo; AccountInfoWithDualRefCount: AccountInfoWithDualRefCount; AccountInfoWithProviders: AccountInfoWithProviders; AccountInfoWithRefCount: AccountInfoWithRefCount; AccountInfoWithRefCountU8: AccountInfoWithRefCountU8; AccountInfoWithTripleRefCount: AccountInfoWithTripleRefCount; - AccountKey20Junction: AccountKey20Junction; AccountStatus: AccountStatus; AccountValidity: AccountValidity; AccountVote: AccountVote; @@ -2369,6 +111,9 @@ declare module '@polkadot/types/types/registry' { AssetId: AssetId; AssetIdentifier: AssetIdentifier; AssetInstance: AssetInstance; + AssetInstanceV0: AssetInstanceV0; + AssetInstanceV1: AssetInstanceV1; + AssetInstanceV2: AssetInstanceV2; AssetMetadata: AssetMetadata; AssetName: AssetName; AssetOptions: AssetOptions; @@ -2432,12 +177,12 @@ declare module '@polkadot/types/types/registry' { BlockTraceEvent: BlockTraceEvent; BlockTraceEventData: BlockTraceEventData; BlockTraceSpan: BlockTraceSpan; + BlockV0: BlockV0; + BlockV1: BlockV1; + BlockV2: BlockV2; BlockWeights: BlockWeights; BodyId: BodyId; BodyPart: BodyPart; - BodyPartAtLeastProportion: BodyPartAtLeastProportion; - BodyPartFraction: BodyPartFraction; - BodyPartMoreThanProportion: BodyPartMoreThanProportion; bool: bool; Bool: Bool; Bounty: Bounty; @@ -2449,6 +194,7 @@ declare module '@polkadot/types/types/registry' { BridgedBlockHash: BridgedBlockHash; BridgedBlockNumber: BridgedBlockNumber; BridgedHeader: BridgedHeader; + BridgeMessageId: BridgeMessageId; BridgeTx: BridgeTx; BridgeTxDetail: BridgeTxDetail; BridgeTxStatus: BridgeTxStatus; @@ -2464,6 +210,7 @@ declare module '@polkadot/types/types/registry' { CallHash: CallHash; CallHashOf: CallHashOf; CallIndex: CallIndex; + CallOrigin: CallOrigin; CandidateCommitments: CandidateCommitments; CandidateDescriptor: CandidateDescriptor; CandidateHash: CandidateHash; @@ -2474,6 +221,7 @@ declare module '@polkadot/types/types/registry' { CappedFee: CappedFee; CddId: CddId; CddStatus: CddStatus; + ChainId: ChainId; ChainProperties: ChainProperties; ChainType: ChainType; ChangesTrieConfiguration: ChangesTrieConfiguration; @@ -2492,6 +240,9 @@ declare module '@polkadot/types/types/registry' { ClassMetadata: ClassMetadata; CodecHash: CodecHash; CodeHash: CodeHash; + CodeUploadRequest: CodeUploadRequest; + CodeUploadResult: CodeUploadResult; + CodeUploadResultValue: CodeUploadResultValue; CollatorId: CollatorId; CollatorSignature: CollatorSignature; CollectiveOrigin: CollectiveOrigin; @@ -2513,14 +264,27 @@ declare module '@polkadot/types/types/registry' { Consensus: Consensus; ConsensusEngineId: ConsensusEngineId; ConsumedWeight: ConsumedWeight; + ContractCallFlags: ContractCallFlags; ContractCallRequest: ContractCallRequest; - ContractConstructorSpec: ContractConstructorSpec; - ContractContractSpec: ContractContractSpec; + ContractConstructorSpecLatest: ContractConstructorSpecLatest; + ContractConstructorSpecV0: ContractConstructorSpecV0; + ContractConstructorSpecV1: ContractConstructorSpecV1; + ContractConstructorSpecV2: ContractConstructorSpecV2; + ContractConstructorSpecV3: ContractConstructorSpecV3; + ContractContractSpecV0: ContractContractSpecV0; + ContractContractSpecV1: ContractContractSpecV1; + ContractContractSpecV2: ContractContractSpecV2; + ContractContractSpecV3: ContractContractSpecV3; ContractCryptoHasher: ContractCryptoHasher; ContractDiscriminant: ContractDiscriminant; ContractDisplayName: ContractDisplayName; - ContractEventParamSpec: ContractEventParamSpec; - ContractEventSpec: ContractEventSpec; + ContractEventParamSpecLatest: ContractEventParamSpecLatest; + ContractEventParamSpecV0: ContractEventParamSpecV0; + ContractEventParamSpecV2: ContractEventParamSpecV2; + ContractEventSpecLatest: ContractEventSpecLatest; + ContractEventSpecV0: ContractEventSpecV0; + ContractEventSpecV1: ContractEventSpecV1; + ContractEventSpecV2: ContractEventSpecV2; ContractExecResult: ContractExecResult; ContractExecResultErr: ContractExecResultErr; ContractExecResultErrModule: ContractExecResultErrModule; @@ -2533,6 +297,7 @@ declare module '@polkadot/types/types/registry' { ContractExecResultTo267: ContractExecResultTo267; ContractInfo: ContractInfo; ContractInstantiateResult: ContractInstantiateResult; + ContractInstantiateResultTo267: ContractInstantiateResultTo267; ContractLayoutArray: ContractLayoutArray; ContractLayoutCell: ContractLayoutCell; ContractLayoutEnum: ContractLayoutEnum; @@ -2541,11 +306,25 @@ declare module '@polkadot/types/types/registry' { ContractLayoutKey: ContractLayoutKey; ContractLayoutStruct: ContractLayoutStruct; ContractLayoutStructField: ContractLayoutStructField; - ContractMessageParamSpec: ContractMessageParamSpec; - ContractMessageSpec: ContractMessageSpec; + ContractMessageParamSpecLatest: ContractMessageParamSpecLatest; + ContractMessageParamSpecV0: ContractMessageParamSpecV0; + ContractMessageParamSpecV2: ContractMessageParamSpecV2; + ContractMessageSpecLatest: ContractMessageSpecLatest; + ContractMessageSpecV0: ContractMessageSpecV0; + ContractMessageSpecV1: ContractMessageSpecV1; + ContractMessageSpecV2: ContractMessageSpecV2; + ContractMetadata: ContractMetadata; + ContractMetadataLatest: ContractMetadataLatest; + ContractMetadataV0: ContractMetadataV0; + ContractMetadataV1: ContractMetadataV1; + ContractMetadataV2: ContractMetadataV2; + ContractMetadataV3: ContractMetadataV3; ContractProject: ContractProject; ContractProjectContract: ContractProjectContract; + ContractProjectInfo: ContractProjectInfo; ContractProjectSource: ContractProjectSource; + ContractProjectV0: ContractProjectV0; + ContractReturnFlags: ContractReturnFlags; ContractSelector: ContractSelector; ContractStorageKey: ContractStorageKey; ContractStorageLayout: ContractStorageLayout; @@ -2557,6 +336,7 @@ declare module '@polkadot/types/types/registry' { CorporateAction: CorporateAction; Counter: Counter; CountryCode: CountryCode; + CrateVersion: CrateVersion; CreatedBlock: CreatedBlock; CustomAssetTypeId: CustomAssetTypeId; Data: Data; @@ -2566,6 +346,7 @@ declare module '@polkadot/types/types/registry' { DelayKindBest: DelayKindBest; Delegations: Delegations; DeletedContract: DeletedContract; + DeliveredMessages: DeliveredMessages; DepositBalance: DepositBalance; DepositBalanceOf: DepositBalanceOf; DepositInfo: DepositInfo; @@ -2583,6 +364,7 @@ declare module '@polkadot/types/types/registry' { DispatchError: DispatchError; DispatchErrorModule: DispatchErrorModule; DispatchErrorTo198: DispatchErrorTo198; + DispatchFeePayment: DispatchFeePayment; DispatchInfo: DispatchInfo; DispatchInfoTo190: DispatchInfoTo190; DispatchInfoTo244: DispatchInfoTo244; @@ -2590,6 +372,9 @@ declare module '@polkadot/types/types/registry' { DispatchResult: DispatchResult; DispatchResultOf: DispatchResultOf; DispatchResultTo198: DispatchResultTo198; + DisputeLocation: DisputeLocation; + DisputeResult: DisputeResult; + DisputeState: DisputeState; DisputeStatement: DisputeStatement; DisputeStatementSet: DisputeStatementSet; Distribution: Distribution; @@ -2600,16 +385,12 @@ declare module '@polkadot/types/types/registry' { DocumentType: DocumentType; DocumentUri: DocumentUri; DoubleEncodedCall: DoubleEncodedCall; - DoubleMapTypeLatest: DoubleMapTypeLatest; - DoubleMapTypeV10: DoubleMapTypeV10; - DoubleMapTypeV11: DoubleMapTypeV11; - DoubleMapTypeV12: DoubleMapTypeV12; - DoubleMapTypeV13: DoubleMapTypeV13; - DoubleMapTypeV9: DoubleMapTypeV9; DoubleVoteReport: DoubleVoteReport; DownwardMessage: DownwardMessage; EcdsaSignature: EcdsaSignature; Ed25519Signature: Ed25519Signature; + EIP1559Transaction: EIP1559Transaction; + EIP2930Transaction: EIP2930Transaction; ElectionCompute: ElectionCompute; ElectionPhase: ElectionPhase; ElectionResult: ElectionResult; @@ -2619,6 +400,7 @@ declare module '@polkadot/types/types/registry' { EncodedFinalityProofs: EncodedFinalityProofs; EncodedJustification: EncodedJustification; EpochAuthorship: EpochAuthorship; + Era: Era; EraIndex: EraIndex; EraPoints: EraPoints; EraRewardPoints: EraRewardPoints; @@ -2629,8 +411,12 @@ declare module '@polkadot/types/types/registry' { ErrorMetadataV11: ErrorMetadataV11; ErrorMetadataV12: ErrorMetadataV12; ErrorMetadataV13: ErrorMetadataV13; + ErrorMetadataV14: ErrorMetadataV14; ErrorMetadataV9: ErrorMetadataV9; + EthAccessList: EthAccessList; + EthAccessListItem: EthAccessListItem; EthAccount: EthAccount; + EthAddress: EthAddress; EthBlock: EthBlock; EthBloom: EthBloom; EthCallRequest: EthCallRequest; @@ -2672,6 +458,7 @@ declare module '@polkadot/types/types/registry' { EventMetadataV11: EventMetadataV11; EventMetadataV12: EventMetadataV12; EventMetadataV13: EventMetadataV13; + EventMetadataV14: EventMetadataV14; EventMetadataV9: EventMetadataV9; EventRecord: EventRecord; EvmAccount: EvmAccount; @@ -2693,6 +480,7 @@ declare module '@polkadot/types/types/registry' { ExtrinsicMetadataV11: ExtrinsicMetadataV11; ExtrinsicMetadataV12: ExtrinsicMetadataV12; ExtrinsicMetadataV13: ExtrinsicMetadataV13; + ExtrinsicMetadataV14: ExtrinsicMetadataV14; ExtrinsicOrHash: ExtrinsicOrHash; ExtrinsicPayload: ExtrinsicPayload; ExtrinsicPayloadUnknown: ExtrinsicPayloadUnknown; @@ -2721,12 +509,14 @@ declare module '@polkadot/types/types/registry' { FunctionArgumentMetadataV11: FunctionArgumentMetadataV11; FunctionArgumentMetadataV12: FunctionArgumentMetadataV12; FunctionArgumentMetadataV13: FunctionArgumentMetadataV13; + FunctionArgumentMetadataV14: FunctionArgumentMetadataV14; FunctionArgumentMetadataV9: FunctionArgumentMetadataV9; FunctionMetadataLatest: FunctionMetadataLatest; FunctionMetadataV10: FunctionMetadataV10; FunctionMetadataV11: FunctionMetadataV11; FunctionMetadataV12: FunctionMetadataV12; FunctionMetadataV13: FunctionMetadataV13; + FunctionMetadataV14: FunctionMetadataV14; FunctionMetadataV9: FunctionMetadataV9; FundIndex: FundIndex; FundInfo: FundInfo; @@ -2736,6 +526,10 @@ declare module '@polkadot/types/types/registry' { FundraiserName: FundraiserName; FundraiserStatus: FundraiserStatus; FundraiserTier: FundraiserTier; + Fungibility: Fungibility; + FungibilityV0: FungibilityV0; + FungibilityV1: FungibilityV1; + FungibilityV2: FungibilityV2; Gas: Gas; GiltBid: GiltBid; GlobalValidationData: GlobalValidationData; @@ -2791,6 +585,7 @@ declare module '@polkadot/types/types/registry' { IdentityId: IdentityId; IdentityInfo: IdentityInfo; IdentityInfoAdditional: IdentityInfoAdditional; + IdentityInfoTo198: IdentityInfoTo198; IdentityJudgement: IdentityJudgement; IdentityRole: IdentityRole; ImmortalEra: ImmortalEra; @@ -2799,6 +594,8 @@ declare module '@polkadot/types/types/registry' { InboundDownwardMessage: InboundDownwardMessage; InboundHrmpMessage: InboundHrmpMessage; InboundHrmpMessages: InboundHrmpMessages; + InboundLaneData: InboundLaneData; + InboundRelayer: InboundRelayer; InboundStatus: InboundStatus; IncludedBlocks: IncludedBlocks; InclusionFee: InclusionFee; @@ -2814,10 +611,13 @@ declare module '@polkadot/types/types/registry' { InstanceMetadata: InstanceMetadata; InstantiateRequest: InstantiateRequest; InstantiateReturnValue: InstantiateReturnValue; + InstantiateReturnValueTo267: InstantiateReturnValueTo267; Instruction: Instruction; InstructionId: InstructionId; InstructionStatus: InstructionStatus; + InstructionV2: InstructionV2; InstructionWeights: InstructionWeights; + InteriorMultiLocation: InteriorMultiLocation; InvalidDisputeStatementKind: InvalidDisputeStatementKind; InvalidTransaction: InvalidTransaction; InvestorUid: InvestorUid; @@ -2825,6 +625,12 @@ declare module '@polkadot/types/types/registry' { ItnRewardStatus: ItnRewardStatus; Json: Json; Junction: Junction; + Junctions: Junctions; + JunctionsV1: JunctionsV1; + JunctionsV2: JunctionsV2; + JunctionV0: JunctionV0; + JunctionV1: JunctionV1; + JunctionV2: JunctionV2; Justification: Justification; JustificationNotification: JustificationNotification; Justifications: Justifications; @@ -2837,6 +643,7 @@ declare module '@polkadot/types/types/registry' { KeyValue: KeyValue; KeyValueOption: KeyValueOption; Kind: Kind; + LaneId: LaneId; LastContribution: LastContribution; LastRuntimeUpgradeInfo: LastRuntimeUpgradeInfo; LeasePeriod: LeasePeriod; @@ -2844,6 +651,7 @@ declare module '@polkadot/types/types/registry' { Leg: Leg; LegacyPalletPermissions: LegacyPalletPermissions; LegacyPermissions: LegacyPermissions; + LegacyTransaction: LegacyTransaction; LegId: LegId; LegStatus: LegStatus; Limits: Limits; @@ -2854,21 +662,20 @@ declare module '@polkadot/types/types/registry' { LookupSource: LookupSource; LookupTarget: LookupTarget; LotteryConfig: LotteryConfig; - MapTypeLatest: MapTypeLatest; - MapTypeV10: MapTypeV10; - MapTypeV11: MapTypeV11; - MapTypeV12: MapTypeV12; - MapTypeV13: MapTypeV13; - MapTypeV9: MapTypeV9; MaybeBlock: MaybeBlock; MaybeRandomness: MaybeRandomness; MaybeVrf: MaybeVrf; MemberCount: MemberCount; MembershipProof: MembershipProof; Memo: Memo; + MessageData: MessageData; MessageId: MessageId; MessageIngestionType: MessageIngestionType; + MessageKey: MessageKey; + MessageNonce: MessageNonce; MessageQueueChain: MessageQueueChain; + MessagesDeliveryProofOf: MessagesDeliveryProofOf; + MessagesProofOf: MessagesProofOf; MessagingStateSnapshot: MessagingStateSnapshot; MessagingStateSnapshotEgressEntry: MessagingStateSnapshotEgressEntry; MetadataAll: MetadataAll; @@ -2877,20 +684,19 @@ declare module '@polkadot/types/types/registry' { MetadataV11: MetadataV11; MetadataV12: MetadataV12; MetadataV13: MetadataV13; + MetadataV14: MetadataV14; MetadataV9: MetadataV9; MetaDescription: MetaDescription; MetaUrl: MetaUrl; MetaVersion: MetaVersion; MmrLeafProof: MmrLeafProof; MmrRootHash: MmrRootHash; - ModuleConstantMetadataLatest: ModuleConstantMetadataLatest; ModuleConstantMetadataV10: ModuleConstantMetadataV10; ModuleConstantMetadataV11: ModuleConstantMetadataV11; ModuleConstantMetadataV12: ModuleConstantMetadataV12; ModuleConstantMetadataV13: ModuleConstantMetadataV13; ModuleConstantMetadataV9: ModuleConstantMetadataV9; ModuleId: ModuleId; - ModuleMetadataLatest: ModuleMetadataLatest; ModuleMetadataV10: ModuleMetadataV10; ModuleMetadataV11: ModuleMetadataV11; ModuleMetadataV12: ModuleMetadataV12; @@ -2906,12 +712,20 @@ declare module '@polkadot/types/types/registry' { MovePortfolioItem: MovePortfolioItem; MultiAddress: MultiAddress; MultiAsset: MultiAsset; - MultiAssetAbstractFungible: MultiAssetAbstractFungible; - MultiAssetAbstractNonFungible: MultiAssetAbstractNonFungible; - MultiAssetConcreteFungible: MultiAssetConcreteFungible; - MultiAssetConcreteNonFungible: MultiAssetConcreteNonFungible; + MultiAssetFilter: MultiAssetFilter; + MultiAssetFilterV1: MultiAssetFilterV1; + MultiAssetFilterV2: MultiAssetFilterV2; + MultiAssets: MultiAssets; + MultiAssetsV1: MultiAssetsV1; + MultiAssetsV2: MultiAssetsV2; + MultiAssetV0: MultiAssetV0; + MultiAssetV1: MultiAssetV1; + MultiAssetV2: MultiAssetV2; MultiDisputeStatementSet: MultiDisputeStatementSet; MultiLocation: MultiLocation; + MultiLocationV0: MultiLocationV0; + MultiLocationV1: MultiLocationV1; + MultiLocationV2: MultiLocationV2; Multiplier: Multiplier; Multisig: Multisig; MultiSignature: MultiSignature; @@ -2924,8 +738,6 @@ declare module '@polkadot/types/types/registry' { NextAuthority: NextAuthority; NextConfigDescriptor: NextConfigDescriptor; NextConfigDescriptorV1: NextConfigDescriptorV1; - NMapTypeLatest: NMapTypeLatest; - NMapTypeV13: NMapTypeV13; NodeRole: NodeRole; Nominations: Nominations; NominatorIndex: NominatorIndex; @@ -2946,19 +758,38 @@ declare module '@polkadot/types/types/registry' { OpenTipFinderTo225: OpenTipFinderTo225; OpenTipTip: OpenTipTip; OpenTipTo225: OpenTipTo225; + OperatingMode: OperatingMode; Origin: Origin; OriginCaller: OriginCaller; + OriginKindV0: OriginKindV0; + OriginKindV1: OriginKindV1; + OriginKindV2: OriginKindV2; OutboundHrmpMessage: OutboundHrmpMessage; + OutboundLaneData: OutboundLaneData; + OutboundMessageFee: OutboundMessageFee; + OutboundPayload: OutboundPayload; OutboundStatus: OutboundStatus; Outcome: Outcome; OverweightIndex: OverweightIndex; Owner: Owner; PageCounter: PageCounter; PageIndexData: PageIndexData; + PalletCallMetadataLatest: PalletCallMetadataLatest; + PalletCallMetadataV14: PalletCallMetadataV14; + PalletConstantMetadataLatest: PalletConstantMetadataLatest; + PalletConstantMetadataV14: PalletConstantMetadataV14; + PalletErrorMetadataLatest: PalletErrorMetadataLatest; + PalletErrorMetadataV14: PalletErrorMetadataV14; + PalletEventMetadataLatest: PalletEventMetadataLatest; + PalletEventMetadataV14: PalletEventMetadataV14; PalletId: PalletId; + PalletMetadataLatest: PalletMetadataLatest; + PalletMetadataV14: PalletMetadataV14; PalletName: PalletName; PalletPermissions: PalletPermissions; PalletsOrigin: PalletsOrigin; + PalletStorageMetadataLatest: PalletStorageMetadataLatest; + PalletStorageMetadataV14: PalletStorageMetadataV14; PalletVersion: PalletVersion; ParachainDispatchOrigin: ParachainDispatchOrigin; ParachainInherentData: ParachainInherentData; @@ -2968,6 +799,7 @@ declare module '@polkadot/types/types/registry' { ParaId: ParaId; ParaInfo: ParaInfo; ParaLifecycle: ParaLifecycle; + Parameter: Parameter; ParaPastCodeMeta: ParaPastCodeMeta; ParaScheduling: ParaScheduling; ParathreadClaim: ParathreadClaim; @@ -3007,9 +839,10 @@ declare module '@polkadot/types/types/registry' { PipDescription: PipDescription; PipId: PipId; PipsMetadata: PipsMetadata; - PluralityJunction: PluralityJunction; Points: Points; PolymeshVotes: PolymeshVotes; + PortableType: PortableType; + PortableTypeV14: PortableTypeV14; PortfolioId: PortfolioId; PortfolioKind: PortfolioKind; PortfolioName: PortfolioName; @@ -3041,6 +874,8 @@ declare module '@polkadot/types/types/registry' { ProxyDefinition: ProxyDefinition; ProxyState: ProxyState; ProxyType: ProxyType; + QueryId: QueryId; + QueryStatus: QueryStatus; QueueConfigData: QueueConfigData; QueuedParathread: QueuedParathread; Randomness: Randomness; @@ -3081,19 +916,28 @@ declare module '@polkadot/types/types/registry' { RegistrarInfo: RegistrarInfo; Registration: Registration; RegistrationJudgement: RegistrationJudgement; + RegistrationTo198: RegistrationTo198; RelayBlockNumber: RelayBlockNumber; RelayChainBlockNumber: RelayChainBlockNumber; RelayChainHash: RelayChainHash; + RelayerId: RelayerId; RelayHash: RelayHash; Releases: Releases; Remark: Remark; Renouncing: Renouncing; RentProjection: RentProjection; + ReplacementTimes: ReplacementTimes; ReportedRoundStates: ReportedRoundStates; Reporter: Reporter; ReportIdOf: ReportIdOf; ReserveData: ReserveData; ReserveIdentifier: ReserveIdentifier; + Response: Response; + ResponseV0: ResponseV0; + ResponseV1: ResponseV1; + ResponseV2: ResponseV2; + ResponseV2Error: ResponseV2Error; + ResponseV2Result: ResponseV2Result; RestrictionResult: RestrictionResult; Retriable: Retriable; RewardDestination: RewardDestination; @@ -3151,6 +995,37 @@ declare module '@polkadot/types/types/registry' { SetId: SetId; SetIndex: SetIndex; SettlementType: SettlementType; + Si0Field: Si0Field; + Si0LookupTypeId: Si0LookupTypeId; + Si0Path: Si0Path; + Si0Type: Si0Type; + Si0TypeDef: Si0TypeDef; + Si0TypeDefArray: Si0TypeDefArray; + Si0TypeDefBitSequence: Si0TypeDefBitSequence; + Si0TypeDefCompact: Si0TypeDefCompact; + Si0TypeDefComposite: Si0TypeDefComposite; + Si0TypeDefPhantom: Si0TypeDefPhantom; + Si0TypeDefPrimitive: Si0TypeDefPrimitive; + Si0TypeDefSequence: Si0TypeDefSequence; + Si0TypeDefTuple: Si0TypeDefTuple; + Si0TypeDefVariant: Si0TypeDefVariant; + Si0TypeParameter: Si0TypeParameter; + Si0Variant: Si0Variant; + Si1Field: Si1Field; + Si1LookupTypeId: Si1LookupTypeId; + Si1Path: Si1Path; + Si1Type: Si1Type; + Si1TypeDef: Si1TypeDef; + Si1TypeDefArray: Si1TypeDefArray; + Si1TypeDefBitSequence: Si1TypeDefBitSequence; + Si1TypeDefCompact: Si1TypeDefCompact; + Si1TypeDefComposite: Si1TypeDefComposite; + Si1TypeDefPrimitive: Si1TypeDefPrimitive; + Si1TypeDefSequence: Si1TypeDefSequence; + Si1TypeDefTuple: Si1TypeDefTuple; + Si1TypeDefVariant: Si1TypeDefVariant; + Si1TypeParameter: Si1TypeParameter; + Si1Variant: Si1Variant; SiField: SiField; Signatory: Signatory; Signature: Signature; @@ -3159,8 +1034,11 @@ declare module '@polkadot/types/types/registry' { SignedBlock: SignedBlock; SignedBlockWithJustification: SignedBlockWithJustification; SignedBlockWithJustifications: SignedBlockWithJustifications; + SignedExtensionMetadataLatest: SignedExtensionMetadataLatest; + SignedExtensionMetadataV14: SignedExtensionMetadataV14; SignedSubmission: SignedSubmission; SignedSubmissionOf: SignedSubmissionOf; + SignedSubmissionTo276: SignedSubmissionTo276; SignerPayload: SignerPayload; SigningContext: SigningContext; SiLookupTypeId: SiLookupTypeId; @@ -3168,11 +1046,14 @@ declare module '@polkadot/types/types/registry' { SiType: SiType; SiTypeDef: SiTypeDef; SiTypeDefArray: SiTypeDefArray; + SiTypeDefBitSequence: SiTypeDefBitSequence; + SiTypeDefCompact: SiTypeDefCompact; SiTypeDefComposite: SiTypeDefComposite; SiTypeDefPrimitive: SiTypeDefPrimitive; SiTypeDefSequence: SiTypeDefSequence; SiTypeDefTuple: SiTypeDefTuple; SiTypeDefVariant: SiTypeDefVariant; + SiTypeParameter: SiTypeParameter; SiVariant: SiVariant; SkippedCount: SkippedCount; SlashingSpans: SlashingSpans; @@ -3182,6 +1063,7 @@ declare module '@polkadot/types/types/registry' { Slot: Slot; SlotNumber: SlotNumber; SlotRange: SlotRange; + SlotRange10: SlotRange10; SmartExtension: SmartExtension; SmartExtensionName: SmartExtensionName; SmartExtensionType: SmartExtensionType; @@ -3196,6 +1078,7 @@ declare module '@polkadot/types/types/registry' { SolutionSupports: SolutionSupports; SpanIndex: SpanIndex; SpanRecord: SpanRecord; + SpecVersion: SpecVersion; Sr25519Signature: Sr25519Signature; StakingLedger: StakingLedger; StakingLedgerTo223: StakingLedgerTo223; @@ -3204,33 +1087,37 @@ declare module '@polkadot/types/types/registry' { StatementKind: StatementKind; StorageChangeSet: StorageChangeSet; StorageData: StorageData; + StorageDeposit: StorageDeposit; StorageEntryMetadataLatest: StorageEntryMetadataLatest; StorageEntryMetadataV10: StorageEntryMetadataV10; StorageEntryMetadataV11: StorageEntryMetadataV11; StorageEntryMetadataV12: StorageEntryMetadataV12; StorageEntryMetadataV13: StorageEntryMetadataV13; + StorageEntryMetadataV14: StorageEntryMetadataV14; StorageEntryMetadataV9: StorageEntryMetadataV9; StorageEntryModifierLatest: StorageEntryModifierLatest; StorageEntryModifierV10: StorageEntryModifierV10; StorageEntryModifierV11: StorageEntryModifierV11; StorageEntryModifierV12: StorageEntryModifierV12; StorageEntryModifierV13: StorageEntryModifierV13; + StorageEntryModifierV14: StorageEntryModifierV14; StorageEntryModifierV9: StorageEntryModifierV9; StorageEntryTypeLatest: StorageEntryTypeLatest; StorageEntryTypeV10: StorageEntryTypeV10; StorageEntryTypeV11: StorageEntryTypeV11; StorageEntryTypeV12: StorageEntryTypeV12; StorageEntryTypeV13: StorageEntryTypeV13; + StorageEntryTypeV14: StorageEntryTypeV14; StorageEntryTypeV9: StorageEntryTypeV9; StorageHasher: StorageHasher; StorageHasherV10: StorageHasherV10; StorageHasherV11: StorageHasherV11; StorageHasherV12: StorageHasherV12; StorageHasherV13: StorageHasherV13; + StorageHasherV14: StorageHasherV14; StorageHasherV9: StorageHasherV9; StorageKey: StorageKey; StorageKind: StorageKind; - StorageMetadataLatest: StorageMetadataLatest; StorageMetadataV10: StorageMetadataV10; StorageMetadataV11: StorageMetadataV11; StorageMetadataV12: StorageMetadataV12; @@ -3271,6 +1158,9 @@ declare module '@polkadot/types/types/registry' { TransactionInfo: TransactionInfo; TransactionPriority: TransactionPriority; TransactionStorageProof: TransactionStorageProof; + TransactionV0: TransactionV0; + TransactionV1: TransactionV1; + TransactionV2: TransactionV2; TransactionValidityError: TransactionValidityError; TransferManager: TransferManager; TransferManagerResult: TransferManagerResult; @@ -3300,6 +1190,10 @@ declare module '@polkadot/types/types/registry' { UniqueCall: UniqueCall; UnknownTransaction: UnknownTransaction; UnlockChunk: UnlockChunk; + UnrewardedRelayer: UnrewardedRelayer; + UnrewardedRelayersState: UnrewardedRelayersState; + UpgradeGoAhead: UpgradeGoAhead; + UpgradeRestriction: UpgradeRestriction; UpwardMessage: UpwardMessage; Url: Url; usize: usize; @@ -3330,8 +1224,11 @@ declare module '@polkadot/types/types/registry' { VenueType: VenueType; Version: Version; VersionedMultiAsset: VersionedMultiAsset; + VersionedMultiAssets: VersionedMultiAssets; VersionedMultiLocation: VersionedMultiLocation; + VersionedResponse: VersionedResponse; VersionedXcm: VersionedXcm; + VersionMigrationStage: VersionMigrationStage; VestingInfo: VestingInfo; VestingSchedule: VestingSchedule; Vote: Vote; @@ -3355,40 +1252,42 @@ declare module '@polkadot/types/types/registry' { VrfOutput: VrfOutput; VrfProof: VrfProof; Weight: Weight; + WeightLimitV2: WeightLimitV2; WeightMultiplier: WeightMultiplier; WeightPerClass: WeightPerClass; WeightToFeeCoefficient: WeightToFeeCoefficient; + WildFungibility: WildFungibility; + WildFungibilityV0: WildFungibilityV0; + WildFungibilityV1: WildFungibilityV1; + WildFungibilityV2: WildFungibilityV2; + WildMultiAsset: WildMultiAsset; + WildMultiAssetV1: WildMultiAssetV1; + WildMultiAssetV2: WildMultiAssetV2; WinnersData: WinnersData; + WinnersData10: WinnersData10; WinnersDataTuple: WinnersDataTuple; + WinnersDataTuple10: WinnersDataTuple10; WinningData: WinningData; + WinningData10: WinningData10; WinningDataEntry: WinningDataEntry; WithdrawReasons: WithdrawReasons; Xcm: Xcm; - XcmAssetEffects: XcmAssetEffects; + XcmAssetId: XcmAssetId; XcmError: XcmError; - XcmHrmpChannelAccepted: XcmHrmpChannelAccepted; - XcmHrmpChannelClosing: XcmHrmpChannelClosing; - XcmHrmpNewChannelOpenRequest: XcmHrmpNewChannelOpenRequest; + XcmErrorV0: XcmErrorV0; + XcmErrorV1: XcmErrorV1; + XcmErrorV2: XcmErrorV2; XcmOrder: XcmOrder; - XcmOrderBuyExecution: XcmOrderBuyExecution; - XcmOrderDepositAsset: XcmOrderDepositAsset; - XcmOrderDepositReserveAsset: XcmOrderDepositReserveAsset; - XcmOrderExchangeAsset: XcmOrderExchangeAsset; - XcmOrderInitiateReserveWithdraw: XcmOrderInitiateReserveWithdraw; - XcmOrderInitiateTeleport: XcmOrderInitiateTeleport; - XcmOrderQueryHolding: XcmOrderQueryHolding; + XcmOrderV0: XcmOrderV0; + XcmOrderV1: XcmOrderV1; + XcmOrderV2: XcmOrderV2; XcmOrigin: XcmOrigin; XcmOriginKind: XcmOriginKind; XcmpMessageFormat: XcmpMessageFormat; - XcmQueryResponse: XcmQueryResponse; - XcmRelayedFrom: XcmRelayedFrom; - XcmReserveAssetDeposit: XcmReserveAssetDeposit; - XcmResponse: XcmResponse; - XcmTeleportAsset: XcmTeleportAsset; - XcmTransact: XcmTransact; - XcmTransferAsset: XcmTransferAsset; - XcmTransferReserveAsset: XcmTransferReserveAsset; - XcmWithdrawAsset: XcmWithdrawAsset; + XcmV0: XcmV0; + XcmV1: XcmV1; + XcmV2: XcmV2; + XcmVersion: XcmVersion; ZkProofData: ZkProofData; - } -} + } // InterfaceTypes +} // declare module diff --git a/scripts/cli/src/interfaces/default/types.ts b/scripts/cli/src/interfaces/default/types.ts index 8838057370..54d8a94f26 100644 --- a/scripts/cli/src/interfaces/default/types.ts +++ b/scripts/cli/src/interfaces/default/types.ts @@ -1,8 +1,8 @@ // Auto-generated via `yarn polkadot-types-from-defs`, do not edit /* eslint-disable */ -import type { Bytes, Enum, Option, Struct, Text, U8aFixed, Vec, bool, u16, u32, u64, u8 } from '@polkadot/types'; -import type { ITuple } from '@polkadot/types/types'; +import type { Bytes, Enum, Option, Struct, Text, U8aFixed, Vec, bool, u16, u32, u64, u8 } from '@polkadot/types-codec'; +import type { ITuple } from '@polkadot/types-codec/types'; import type { Signature } from '@polkadot/types/interfaces/extrinsics'; import type { AccountId, Balance, BlockNumber, Call, H256, H512, Hash, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime'; import type { AccountInfoWithDualRefCount, DispatchError } from '@polkadot/types/interfaces/system'; @@ -18,6 +18,7 @@ export interface AffirmationStatus extends Enum { readonly isUnknown: boolean; readonly isPending: boolean; readonly isAffirmed: boolean; + readonly type: 'Unknown' | 'Pending' | 'Affirmed'; } /** @name AgentGroup */ @@ -26,8 +27,9 @@ export interface AgentGroup extends Enum { readonly isCustom: boolean; readonly asCustom: AGId; readonly isExceptMeta: boolean; - readonly isPolymeshV1Caa: boolean; - readonly isPolymeshV1Pia: boolean; + readonly isPolymeshV1CAA: boolean; + readonly isPolymeshV1PIA: boolean; + readonly type: 'Full' | 'Custom' | 'ExceptMeta' | 'PolymeshV1CAA' | 'PolymeshV1PIA'; } /** @name AGId */ @@ -52,6 +54,7 @@ export interface AssetDidResult extends Enum { readonly asOk: IdentityId; readonly isErr: boolean; readonly asErr: Bytes; + readonly type: 'Ok' | 'Err'; } /** @name AssetIdentifier */ @@ -64,6 +67,7 @@ export interface AssetIdentifier extends Enum { readonly asIsin: U8aFixed; readonly isLei: boolean; readonly asLei: U8aFixed; + readonly type: 'Cusip' | 'Cins' | 'Isin' | 'Lei'; } /** @name AssetName */ @@ -74,6 +78,7 @@ export interface AssetOwnershipRelation extends Enum { readonly isNotOwned: boolean; readonly isTickerOwned: boolean; readonly isAssetOwned: boolean; + readonly type: 'NotOwned' | 'TickerOwned' | 'AssetOwned'; } /** @name AssetPermissions */ @@ -83,6 +88,7 @@ export interface AssetPermissions extends Enum { readonly asThese: Vec; readonly isExcept: boolean; readonly asExcept: Vec; + readonly type: 'Whole' | 'These' | 'Except'; } /** @name AssetType */ @@ -99,6 +105,7 @@ export interface AssetType extends Enum { readonly isCustom: boolean; readonly asCustom: CustomAssetTypeId; readonly isStableCoin: boolean; + readonly type: 'EquityCommon' | 'EquityPreferred' | 'Commodity' | 'FixedIncome' | 'Reit' | 'Fund' | 'RevenueShareAgreement' | 'StructuredProduct' | 'Derivative' | 'Custom' | 'StableCoin'; } /** @name Authorization */ @@ -130,6 +137,7 @@ export interface AuthorizationData extends Enum { readonly asAddRelayerPayingKey: ITuple<[AccountId, AccountId, Balance]>; readonly isRotatePrimaryKeyToSecondary: boolean; readonly asRotatePrimaryKeyToSecondary: Permissions; + readonly type: 'AttestPrimaryKeyRotation' | 'RotatePrimaryKey' | 'TransferTicker' | 'AddMultiSigSigner' | 'TransferAssetOwnership' | 'JoinIdentity' | 'PortfolioCustody' | 'BecomeAgent' | 'AddRelayerPayingKey' | 'RotatePrimaryKeyToSecondary'; } /** @name AuthorizationNonce */ @@ -147,6 +155,7 @@ export interface AuthorizationType extends Enum { readonly isBecomeAgent: boolean; readonly isAddRelayerPayingKey: boolean; readonly isRotatePrimaryKeyToSecondary: boolean; + readonly type: 'AttestPrimaryKeyRotation' | 'RotatePrimaryKey' | 'TransferTicker' | 'AddMultiSigSigner' | 'TransferAssetOwnership' | 'JoinIdentity' | 'PortfolioCustody' | 'BecomeAgent' | 'AddRelayerPayingKey' | 'RotatePrimaryKeyToSecondary'; } /** @name BallotMeta */ @@ -200,6 +209,7 @@ export interface BridgeTxStatus extends Enum { readonly isFrozen: boolean; readonly isTimelocked: boolean; readonly isHandled: boolean; + readonly type: 'Absent' | 'Pending' | 'Frozen' | 'Timelocked' | 'Handled'; } /** @name CACheckpoint */ @@ -208,6 +218,7 @@ export interface CACheckpoint extends Enum { readonly asScheduled: ITuple<[ScheduleId, u64]>; readonly isExisting: boolean; readonly asExisting: CheckpointId; + readonly type: 'Scheduled' | 'Existing'; } /** @name CADetails */ @@ -226,6 +237,7 @@ export interface CAKind extends Enum { readonly isIssuerNotice: boolean; readonly isReorganization: boolean; readonly isOther: boolean; + readonly type: 'PredictableBenefit' | 'UnpredictableBenefit' | 'IssuerNotice' | 'Reorganization' | 'Other'; } /** @name CalendarPeriod */ @@ -243,6 +255,7 @@ export interface CalendarUnit extends Enum { readonly isWeek: boolean; readonly isMonth: boolean; readonly isYear: boolean; + readonly type: 'Second' | 'Minute' | 'Hour' | 'Day' | 'Week' | 'Month' | 'Year'; } /** @name CanTransferResult */ @@ -251,6 +264,7 @@ export interface CanTransferResult extends Enum { readonly asOk: u8; readonly isErr: boolean; readonly asErr: Bytes; + readonly type: 'Ok' | 'Err'; } /** @name CappedFee */ @@ -265,6 +279,7 @@ export interface CddStatus extends Enum { readonly asOk: IdentityId; readonly isErr: boolean; readonly asErr: Bytes; + readonly type: 'Ok' | 'Err'; } /** @name CheckpointId */ @@ -304,6 +319,7 @@ export interface Claim extends Enum { readonly isNoData: boolean; readonly isInvestorUniquenessV2: boolean; readonly asInvestorUniquenessV2: CddId; + readonly type: 'Accredited' | 'Affiliate' | 'BuyLockup' | 'SellLockup' | 'CustomerDueDiligence' | 'KnowYourCustomer' | 'Jurisdiction' | 'Exempted' | 'Blocked' | 'InvestorUniqueness' | 'NoData' | 'InvestorUniquenessV2'; } /** @name Claim1stKey */ @@ -332,6 +348,7 @@ export interface ClaimType extends Enum { readonly isInvestorUniqueness: boolean; readonly isNoData: boolean; readonly isInvestorUniquenessV2: boolean; + readonly type: 'Accredited' | 'Affiliate' | 'BuyLockup' | 'SellLockup' | 'CustomerDueDiligence' | 'KnowYourCustomer' | 'Jurisdiction' | 'Exempted' | 'Blocked' | 'InvestorUniqueness' | 'NoData' | 'InvestorUniquenessV2'; } /** @name ClassicTickerImport */ @@ -352,6 +369,7 @@ export interface ClassicTickerRegistration extends Struct { export interface Committee extends Enum { readonly isTechnical: boolean; readonly isUpgrade: boolean; + readonly type: 'Technical' | 'Upgrade'; } /** @name ComplianceRequirement */ @@ -393,6 +411,7 @@ export interface ConditionType extends Enum { readonly asIsNoneOf: Vec; readonly isIsIdentity: boolean; readonly asIsIdentity: TargetIdentity; + readonly type: 'IsPresent' | 'IsAbsent' | 'IsAnyOf' | 'IsNoneOf' | 'IsIdentity'; } /** @name CorporateAction */ @@ -660,6 +679,7 @@ export interface CountryCode extends Enum { readonly isBq: boolean; readonly isCw: boolean; readonly isSx: boolean; + readonly type: 'Af' | 'Ax' | 'Al' | 'Dz' | 'As' | 'Ad' | 'Ao' | 'Ai' | 'Aq' | 'Ag' | 'Ar' | 'Am' | 'Aw' | 'Au' | 'At' | 'Az' | 'Bs' | 'Bh' | 'Bd' | 'Bb' | 'By' | 'Be' | 'Bz' | 'Bj' | 'Bm' | 'Bt' | 'Bo' | 'Ba' | 'Bw' | 'Bv' | 'Br' | 'Vg' | 'Io' | 'Bn' | 'Bg' | 'Bf' | 'Bi' | 'Kh' | 'Cm' | 'Ca' | 'Cv' | 'Ky' | 'Cf' | 'Td' | 'Cl' | 'Cn' | 'Hk' | 'Mo' | 'Cx' | 'Cc' | 'Co' | 'Km' | 'Cg' | 'Cd' | 'Ck' | 'Cr' | 'Ci' | 'Hr' | 'Cu' | 'Cy' | 'Cz' | 'Dk' | 'Dj' | 'Dm' | 'Do' | 'Ec' | 'Eg' | 'Sv' | 'Gq' | 'Er' | 'Ee' | 'Et' | 'Fk' | 'Fo' | 'Fj' | 'Fi' | 'Fr' | 'Gf' | 'Pf' | 'Tf' | 'Ga' | 'Gm' | 'Ge' | 'De' | 'Gh' | 'Gi' | 'Gr' | 'Gl' | 'Gd' | 'Gp' | 'Gu' | 'Gt' | 'Gg' | 'Gn' | 'Gw' | 'Gy' | 'Ht' | 'Hm' | 'Va' | 'Hn' | 'Hu' | 'Is' | 'In' | 'Id' | 'Ir' | 'Iq' | 'Ie' | 'Im' | 'Il' | 'It' | 'Jm' | 'Jp' | 'Je' | 'Jo' | 'Kz' | 'Ke' | 'Ki' | 'Kp' | 'Kr' | 'Kw' | 'Kg' | 'La' | 'Lv' | 'Lb' | 'Ls' | 'Lr' | 'Ly' | 'Li' | 'Lt' | 'Lu' | 'Mk' | 'Mg' | 'Mw' | 'My' | 'Mv' | 'Ml' | 'Mt' | 'Mh' | 'Mq' | 'Mr' | 'Mu' | 'Yt' | 'Mx' | 'Fm' | 'Md' | 'Mc' | 'Mn' | 'Me' | 'Ms' | 'Ma' | 'Mz' | 'Mm' | 'Na' | 'Nr' | 'Np' | 'Nl' | 'An' | 'Nc' | 'Nz' | 'Ni' | 'Ne' | 'Ng' | 'Nu' | 'Nf' | 'Mp' | 'No' | 'Om' | 'Pk' | 'Pw' | 'Ps' | 'Pa' | 'Pg' | 'Py' | 'Pe' | 'Ph' | 'Pn' | 'Pl' | 'Pt' | 'Pr' | 'Qa' | 'Re' | 'Ro' | 'Ru' | 'Rw' | 'Bl' | 'Sh' | 'Kn' | 'Lc' | 'Mf' | 'Pm' | 'Vc' | 'Ws' | 'Sm' | 'St' | 'Sa' | 'Sn' | 'Rs' | 'Sc' | 'Sl' | 'Sg' | 'Sk' | 'Si' | 'Sb' | 'So' | 'Za' | 'Gs' | 'Ss' | 'Es' | 'Lk' | 'Sd' | 'Sr' | 'Sj' | 'Sz' | 'Se' | 'Ch' | 'Sy' | 'Tw' | 'Tj' | 'Tz' | 'Th' | 'Tl' | 'Tg' | 'Tk' | 'To' | 'Tt' | 'Tn' | 'Tr' | 'Tm' | 'Tc' | 'Tv' | 'Ug' | 'Ua' | 'Ae' | 'Gb' | 'Us' | 'Um' | 'Uy' | 'Uz' | 'Vu' | 'Ve' | 'Vn' | 'Vi' | 'Wf' | 'Eh' | 'Ye' | 'Zm' | 'Zw' | 'Bq' | 'Cw' | 'Sx'; } /** @name CustomAssetTypeId */ @@ -683,6 +703,7 @@ export interface DidRecords extends Enum { readonly asSuccess: DidRecordsSuccess; readonly isIdNotFound: boolean; readonly asIdNotFound: Bytes; + readonly type: 'Success' | 'IdNotFound'; } /** @name DidRecordsSuccess */ @@ -696,6 +717,7 @@ export interface DidStatus extends Enum { readonly isUnknown: boolean; readonly isExists: boolean; readonly isCddVerified: boolean; + readonly type: 'Unknown' | 'Exists' | 'CddVerified'; } /** @name DispatchableName */ @@ -708,6 +730,7 @@ export interface DispatchableNames extends Enum { readonly asThese: Vec; readonly isExcept: boolean; readonly asExcept: Vec; + readonly type: 'Whole' | 'These' | 'Except'; } /** @name Distribution */ @@ -750,6 +773,7 @@ export interface DocumentHash extends Enum { readonly asH160: U8aFixed; readonly isH128: boolean; readonly asH128: U8aFixed; + readonly type: 'None' | 'H512' | 'H384' | 'H320' | 'H256' | 'H224' | 'H192' | 'H160' | 'H128'; } /** @name DocumentId */ @@ -792,6 +816,7 @@ export interface ExtrinsicPermissions extends Enum { readonly asThese: Vec; readonly isExcept: boolean; readonly asExcept: Vec; + readonly type: 'Whole' | 'These' | 'Except'; } /** @name ExtVersion */ @@ -827,6 +852,7 @@ export interface FundraiserStatus extends Enum { readonly isFrozen: boolean; readonly isClosed: boolean; readonly isClosedEarly: boolean; + readonly type: 'Live' | 'Frozen' | 'Closed' | 'ClosedEarly'; } /** @name FundraiserTier */ @@ -858,6 +884,7 @@ export interface HandledTxStatus extends Enum { readonly isSuccess: boolean; readonly isError: boolean; readonly asError: Text; + readonly type: 'Success' | 'Error'; } /** @name IdentityClaim */ @@ -884,6 +911,7 @@ export interface IdentityRole extends Enum { readonly isCddamlClaimIssuer: boolean; readonly isAccreditedInvestorClaimIssuer: boolean; readonly isVerifiedIdentityClaimIssuer: boolean; + readonly type: 'Issuer' | 'SimpleTokenIssuer' | 'Validator' | 'ClaimIssuer' | 'Investor' | 'NodeRunner' | 'Pm' | 'CddamlClaimIssuer' | 'AccreditedInvestorClaimIssuer' | 'VerifiedIdentityClaimIssuer'; } /** @name InactiveMember */ @@ -912,6 +940,7 @@ export interface InstructionStatus extends Enum { readonly isUnknown: boolean; readonly isPending: boolean; readonly isFailed: boolean; + readonly type: 'Unknown' | 'Pending' | 'Failed'; } /** @name InvestorUid */ @@ -925,6 +954,7 @@ export interface ItnRewardStatus extends Enum { readonly isUnclaimed: boolean; readonly asUnclaimed: Balance; readonly isClaimed: boolean; + readonly type: 'Unclaimed' | 'Claimed'; } /** @name KeyIdentityData */ @@ -964,6 +994,7 @@ export interface LegStatus extends Enum { readonly isExecutionPending: boolean; readonly isExecutionToBeSkipped: boolean; readonly asExecutionToBeSkipped: ITuple<[AccountId, u64]>; + readonly type: 'PendingTokenLock' | 'ExecutionPending' | 'ExecutionToBeSkipped'; } /** @name LocalCAId */ @@ -977,6 +1008,7 @@ export interface MaybeBlock extends Enum { readonly isSome: boolean; readonly asSome: BlockNumber; readonly isNone: boolean; + readonly type: 'Some' | 'None'; } /** @name Memo */ @@ -1022,6 +1054,7 @@ export interface OffChainSignature extends Enum { readonly asSr25519: H512; readonly isEcdsa: boolean; readonly asEcdsa: H512; + readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa'; } /** @name PalletName */ @@ -1092,6 +1125,7 @@ export interface PortfolioKind extends Enum { readonly isDefault: boolean; readonly isUser: boolean; readonly asUser: PortfolioNumber; + readonly type: 'Default' | 'User'; } /** @name PortfolioName */ @@ -1107,6 +1141,7 @@ export interface PortfolioPermissions extends Enum { readonly asThese: Vec; readonly isExcept: boolean; readonly asExcept: Vec; + readonly type: 'Whole' | 'These' | 'Except'; } /** @name PortfolioValidityResult */ @@ -1139,6 +1174,7 @@ export interface ProposalData extends Enum { readonly asHash: Hash; readonly isProposal: boolean; readonly asProposal: Bytes; + readonly type: 'Hash' | 'Proposal'; } /** @name ProposalDetails */ @@ -1158,6 +1194,7 @@ export interface ProposalState extends Enum { readonly isFailed: boolean; readonly isExecuted: boolean; readonly isExpired: boolean; + readonly type: 'Pending' | 'Rejected' | 'Scheduled' | 'Failed' | 'Executed' | 'Expired'; } /** @name ProposalStatus */ @@ -1167,6 +1204,7 @@ export interface ProposalStatus extends Enum { readonly isExecutionSuccessful: boolean; readonly isExecutionFailed: boolean; readonly isRejected: boolean; + readonly type: 'Invalid' | 'ActiveOrExpired' | 'ExecutionSuccessful' | 'ExecutionFailed' | 'Rejected'; } /** @name Proposer */ @@ -1175,6 +1213,7 @@ export interface Proposer extends Enum { readonly asCommunity: AccountId; readonly isCommittee: boolean; readonly asCommittee: Committee; + readonly type: 'Community' | 'Committee'; } /** @name ProtocolOp */ @@ -1192,6 +1231,7 @@ export interface ProtocolOp extends Enum { readonly isContractsPutCode: boolean; readonly isCorporateBallotAttachBallot: boolean; readonly isCapitalDistributionDistribute: boolean; + readonly type: 'AssetRegisterTicker' | 'AssetIssue' | 'AssetAddDocuments' | 'AssetCreateAsset' | 'CheckpointCreateSchedule' | 'ComplianceManagerAddComplianceRequirement' | 'IdentityCddRegisterDid' | 'IdentityAddClaim' | 'IdentityAddSecondaryKeysWithAuthorization' | 'PipsPropose' | 'ContractsPutCode' | 'CorporateBallotAttachBallot' | 'CapitalDistributionDistribute'; } /** @name Receipt */ @@ -1229,6 +1269,7 @@ export interface RecordDateSpec extends Enum { readonly asExistingSchedule: ScheduleId; readonly isExisting: boolean; readonly asExisting: CheckpointId; + readonly type: 'Scheduled' | 'ExistingSchedule' | 'Existing'; } /** @name RestrictionResult */ @@ -1236,6 +1277,7 @@ export interface RestrictionResult extends Enum { readonly isValid: boolean; readonly isInvalid: boolean; readonly isForceValid: boolean; + readonly type: 'Valid' | 'Invalid' | 'ForceValid'; } /** @name RistrettoPoint */ @@ -1262,6 +1304,7 @@ export interface Scope extends Enum { readonly asTicker: Ticker; readonly isCustom: boolean; readonly asCustom: Bytes; + readonly type: 'Identity' | 'Ticker' | 'Custom'; } /** @name ScopeClaimProof */ @@ -1299,6 +1342,7 @@ export interface SettlementType extends Enum { readonly isSettleOnAffirmation: boolean; readonly isSettleOnBlock: boolean; readonly asSettleOnBlock: BlockNumber; + readonly type: 'SettleOnAffirmation' | 'SettleOnBlock'; } /** @name Signatory */ @@ -1307,6 +1351,7 @@ export interface Signatory extends Enum { readonly asIdentity: IdentityId; readonly isAccount: boolean; readonly asAccount: AccountId; + readonly type: 'Identity' | 'Account'; } /** @name SkippedCount */ @@ -1317,6 +1362,7 @@ export interface SlashingSwitch extends Enum { readonly isValidator: boolean; readonly isValidatorAndNominator: boolean; readonly isNone: boolean; + readonly type: 'Validator' | 'ValidatorAndNominator' | 'None'; } /** @name SmartExtension */ @@ -1337,6 +1383,7 @@ export interface SmartExtensionType extends Enum { readonly isSmartWallet: boolean; readonly isCustom: boolean; readonly asCustom: Bytes; + readonly type: 'TransferManager' | 'Offerings' | 'SmartWallet' | 'Custom'; } /** @name SnapshotId */ @@ -1354,6 +1401,7 @@ export interface SnapshotResult extends Enum { readonly isApprove: boolean; readonly isReject: boolean; readonly isSkip: boolean; + readonly type: 'Approve' | 'Reject' | 'Skip'; } /** @name SnapshottedPip */ @@ -1394,12 +1442,14 @@ export interface TargetIdentity extends Enum { readonly isExternalAgent: boolean; readonly isSpecific: boolean; readonly asSpecific: IdentityId; + readonly type: 'ExternalAgent' | 'Specific'; } /** @name TargetTreatment */ export interface TargetTreatment extends Enum { readonly isInclude: boolean; readonly isExclude: boolean; + readonly type: 'Include' | 'Exclude'; } /** @name Tax */ @@ -1442,6 +1492,7 @@ export interface TransferManager extends Enum { readonly asCountTransferManager: Counter; readonly isPercentageTransferManager: boolean; readonly asPercentageTransferManager: Percentage; + readonly type: 'CountTransferManager' | 'PercentageTransferManager'; } /** @name TransferManagerResult */ @@ -1455,6 +1506,7 @@ export interface TrustedFor extends Enum { readonly isAny: boolean; readonly isSpecific: boolean; readonly asSpecific: Vec; + readonly type: 'Any' | 'Specific'; } /** @name TrustedIssuer */ @@ -1490,6 +1542,7 @@ export interface VenueType extends Enum { readonly isDistribution: boolean; readonly isSto: boolean; readonly isExchange: boolean; + readonly type: 'Other' | 'Distribution' | 'Sto' | 'Exchange'; } /** @name Version */ @@ -1509,6 +1562,7 @@ export interface VoteCount extends Enum { readonly isProposalFound: boolean; readonly asProposalFound: VoteCountProposalFound; readonly isProposalNotFound: boolean; + readonly type: 'ProposalFound' | 'ProposalNotFound'; } /** @name VoteCountProposalFound */ diff --git a/scripts/cli/src/interfaces/lookup.ts b/scripts/cli/src/interfaces/lookup.ts new file mode 100644 index 0000000000..3b7568cc83 --- /dev/null +++ b/scripts/cli/src/interfaces/lookup.ts @@ -0,0 +1,3836 @@ +// Auto-generated via `yarn polkadot-types-from-defs`, do not edit +/* eslint-disable */ + +/* eslint-disable sort-keys */ + +export default { + /** + * Lookup3: frame_system::AccountInfo + **/ + FrameSystemAccountInfo: { + nonce: 'u32', + consumers: 'u32', + providers: 'u32', + sufficients: 'u32', + data: 'PolymeshCommonUtilitiesBalancesAccountData' + }, + /** + * Lookup5: polymesh_common_utilities::traits::balances::AccountData + **/ + PolymeshCommonUtilitiesBalancesAccountData: { + free: 'u128', + reserved: 'u128', + miscFrozen: 'u128', + feeFrozen: 'u128' + }, + /** + * Lookup7: frame_support::weights::PerDispatchClass + **/ + FrameSupportWeightsPerDispatchClassU64: { + normal: 'u64', + operational: 'u64', + mandatory: 'u64' + }, + /** + * Lookup11: sp_runtime::generic::digest::Digest + **/ + SpRuntimeDigest: { + logs: 'Vec' + }, + /** + * Lookup13: sp_runtime::generic::digest::DigestItem + **/ + SpRuntimeDigestDigestItem: { + _enum: { + Other: 'Bytes', + __Unused1: 'Null', + ChangesTrieRoot: 'H256', + __Unused3: 'Null', + Consensus: '([u8;4],Bytes)', + Seal: '([u8;4],Bytes)', + PreRuntime: '([u8;4],Bytes)', + ChangesTrieSignal: 'SpRuntimeDigestChangesTrieSignal', + RuntimeEnvironmentUpdated: 'Null' + } + }, + /** + * Lookup15: sp_runtime::generic::digest::ChangesTrieSignal + **/ + SpRuntimeDigestChangesTrieSignal: { + _enum: { + NewConfiguration: 'Option' + } + }, + /** + * Lookup17: sp_core::changes_trie::ChangesTrieConfiguration + **/ + SpCoreChangesTrieChangesTrieConfiguration: { + digestInterval: 'u32', + digestLevels: 'u32' + }, + /** + * Lookup19: frame_system::EventRecord + **/ + FrameSystemEventRecord: { + phase: 'FrameSystemPhase', + event: 'Event', + topics: 'Vec' + }, + /** + * Lookup21: frame_system::pallet::Event + **/ + FrameSystemEvent: { + _enum: { + ExtrinsicSuccess: 'FrameSupportWeightsDispatchInfo', + ExtrinsicFailed: '(SpRuntimeDispatchError,FrameSupportWeightsDispatchInfo)', + CodeUpdated: 'Null', + NewAccount: 'AccountId32', + KilledAccount: 'AccountId32', + Remarked: '(AccountId32,H256)' + } + }, + /** + * Lookup22: frame_support::weights::DispatchInfo + **/ + FrameSupportWeightsDispatchInfo: { + weight: 'u64', + class: 'FrameSupportWeightsDispatchClass', + paysFee: 'FrameSupportWeightsPays' + }, + /** + * Lookup23: frame_support::weights::DispatchClass + **/ + FrameSupportWeightsDispatchClass: { + _enum: ['Normal', 'Operational', 'Mandatory'] + }, + /** + * Lookup24: frame_support::weights::Pays + **/ + FrameSupportWeightsPays: { + _enum: ['Yes', 'No'] + }, + /** + * Lookup25: sp_runtime::DispatchError + **/ + SpRuntimeDispatchError: { + _enum: { + Other: 'Null', + CannotLookup: 'Null', + BadOrigin: 'Null', + Module: { + index: 'u8', + error: 'u8', + }, + ConsumerRemaining: 'Null', + NoProviders: 'Null', + Token: 'SpRuntimeTokenError', + Arithmetic: 'SpRuntimeArithmeticError' + } + }, + /** + * Lookup26: sp_runtime::TokenError + **/ + SpRuntimeTokenError: { + _enum: ['NoFunds', 'WouldDie', 'BelowMinimum', 'CannotCreate', 'UnknownAsset', 'Frozen', 'Unsupported'] + }, + /** + * Lookup27: sp_runtime::ArithmeticError + **/ + SpRuntimeArithmeticError: { + _enum: ['Underflow', 'Overflow', 'DivisionByZero'] + }, + /** + * Lookup28: pallet_indices::pallet::Event + **/ + PalletIndicesEvent: { + _enum: { + IndexAssigned: '(AccountId32,u32)', + IndexFreed: 'u32', + IndexFrozen: '(u32,AccountId32)' + } + }, + /** + * Lookup29: polymesh_common_utilities::traits::balances::RawEvent + **/ + PolymeshCommonUtilitiesBalancesRawEvent: { + _enum: { + Endowed: '(Option,AccountId32,u128)', + Transfer: '(Option,AccountId32,Option,AccountId32,u128,Option)', + BalanceSet: '(PolymeshPrimitivesIdentityId,AccountId32,u128,u128)', + AccountBalanceBurned: '(PolymeshPrimitivesIdentityId,AccountId32,u128)', + Reserved: '(AccountId32,u128)', + Unreserved: '(AccountId32,u128)', + ReserveRepatriated: '(AccountId32,AccountId32,u128,FrameSupportTokensMiscBalanceStatus)' + } + }, + /** + * Lookup31: polymesh_primitives::identity_id::IdentityId + **/ + PolymeshPrimitivesIdentityId: '[u8;32]', + /** + * Lookup33: polymesh_common_utilities::traits::balances::Memo + **/ + PolymeshCommonUtilitiesBalancesMemo: '[u8;32]', + /** + * Lookup34: frame_support::traits::tokens::misc::BalanceStatus + **/ + FrameSupportTokensMiscBalanceStatus: { + _enum: ['Free', 'Reserved'] + }, + /** + * Lookup35: polymesh_common_utilities::traits::identity::RawEvent + **/ + PolymeshCommonUtilitiesIdentityRawEvent: { + _enum: { + DidCreated: '(PolymeshPrimitivesIdentityId,AccountId32,Vec)', + SecondaryKeysAdded: '(PolymeshPrimitivesIdentityId,Vec)', + SecondaryKeysRemoved: '(PolymeshPrimitivesIdentityId,Vec)', + SignerLeft: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesSecondaryKeySignatory)', + SecondaryKeyPermissionsUpdated: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesSecondaryKeyApiSecondaryKey,PolymeshPrimitivesSecondaryKeyPermissions,PolymeshPrimitivesSecondaryKeyPermissions)', + PrimaryKeyUpdated: '(PolymeshPrimitivesIdentityId,AccountId32,AccountId32)', + ClaimAdded: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityClaim)', + ClaimRevoked: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityClaim)', + AssetDidRegistered: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker)', + AuthorizationAdded: '(PolymeshPrimitivesIdentityId,Option,Option,u64,PolymeshPrimitivesAuthorizationAuthorizationData,Option)', + AuthorizationRevoked: '(Option,Option,u64)', + AuthorizationRejected: '(Option,Option,u64)', + AuthorizationConsumed: '(Option,Option,u64)', + OffChainAuthorizationRevoked: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesSecondaryKeySignatory)', + CddRequirementForPrimaryKeyUpdated: 'bool', + CddClaimsInvalidated: '(PolymeshPrimitivesIdentityId,u64)', + SecondaryKeysFrozen: 'PolymeshPrimitivesIdentityId', + SecondaryKeysUnfrozen: 'PolymeshPrimitivesIdentityId', + MockInvestorUIDCreated: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesCddIdInvestorUid)' + } + }, + /** + * Lookup37: polymesh_primitives::secondary_key::api::SecondaryKey + **/ + PolymeshPrimitivesSecondaryKeyApiSecondaryKey: { + signer: 'PolymeshPrimitivesSecondaryKeySignatory', + permissions: 'PolymeshPrimitivesSecondaryKeyPermissions' + }, + /** + * Lookup38: polymesh_primitives::secondary_key::Signatory + **/ + PolymeshPrimitivesSecondaryKeySignatory: { + _enum: { + Identity: 'PolymeshPrimitivesIdentityId', + Account: 'AccountId32' + } + }, + /** + * Lookup39: polymesh_primitives::secondary_key::Permissions + **/ + PolymeshPrimitivesSecondaryKeyPermissions: { + asset: 'PolymeshPrimitivesSubsetSubsetRestrictionTicker', + extrinsic: 'PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions', + portfolio: 'PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId' + }, + /** + * Lookup40: polymesh_primitives::subset::SubsetRestriction + **/ + PolymeshPrimitivesSubsetSubsetRestrictionTicker: { + _enum: { + Whole: 'Null', + These: 'BTreeSetTicker', + Except: 'BTreeSetTicker' + } + }, + /** + * Lookup41: polymesh_primitives::ticker::Ticker + **/ + PolymeshPrimitivesTicker: '[u8;12]', + /** + * Lookup43: BTreeSet + **/ + BTreeSetTicker: 'Vec', + /** + * Lookup45: polymesh_primitives::subset::SubsetRestriction + **/ + PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions: { + _enum: { + Whole: 'Null', + These: 'BTreeSetPalletPermissions', + Except: 'BTreeSetPalletPermissions' + } + }, + /** + * Lookup46: polymesh_primitives::secondary_key::PalletPermissions + **/ + PolymeshPrimitivesSecondaryKeyPalletPermissions: { + palletName: 'Bytes', + dispatchableNames: 'PolymeshPrimitivesSubsetSubsetRestrictionDispatchableName' + }, + /** + * Lookup48: polymesh_primitives::subset::SubsetRestriction + **/ + PolymeshPrimitivesSubsetSubsetRestrictionDispatchableName: { + _enum: { + Whole: 'Null', + These: 'BTreeSetDispatchableName', + Except: 'BTreeSetDispatchableName' + } + }, + /** + * Lookup50: BTreeSet + **/ + BTreeSetDispatchableName: 'Vec', + /** + * Lookup52: BTreeSet + **/ + BTreeSetPalletPermissions: 'Vec', + /** + * Lookup54: polymesh_primitives::subset::SubsetRestriction + **/ + PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId: { + _enum: { + Whole: 'Null', + These: 'BTreeSetPortfolioId', + Except: 'BTreeSetPortfolioId' + } + }, + /** + * Lookup55: polymesh_primitives::identity_id::PortfolioId + **/ + PolymeshPrimitivesIdentityIdPortfolioId: { + did: 'PolymeshPrimitivesIdentityId', + kind: 'PolymeshPrimitivesIdentityIdPortfolioKind' + }, + /** + * Lookup56: polymesh_primitives::identity_id::PortfolioKind + **/ + PolymeshPrimitivesIdentityIdPortfolioKind: { + _enum: { + Default: 'Null', + User: 'u64' + } + }, + /** + * Lookup58: BTreeSet + **/ + BTreeSetPortfolioId: 'Vec', + /** + * Lookup61: polymesh_primitives::identity_claim::IdentityClaim + **/ + PolymeshPrimitivesIdentityClaim: { + claimIssuer: 'PolymeshPrimitivesIdentityId', + issuanceDate: 'u64', + lastUpdateDate: 'u64', + expiry: 'Option', + claim: 'PolymeshPrimitivesIdentityClaimClaim' + }, + /** + * Lookup63: polymesh_primitives::identity_claim::Claim + **/ + PolymeshPrimitivesIdentityClaimClaim: { + _enum: { + Accredited: 'PolymeshPrimitivesIdentityClaimScope', + Affiliate: 'PolymeshPrimitivesIdentityClaimScope', + BuyLockup: 'PolymeshPrimitivesIdentityClaimScope', + SellLockup: 'PolymeshPrimitivesIdentityClaimScope', + CustomerDueDiligence: 'PolymeshPrimitivesCddId', + KnowYourCustomer: 'PolymeshPrimitivesIdentityClaimScope', + Jurisdiction: '(PolymeshPrimitivesJurisdictionCountryCode,PolymeshPrimitivesIdentityClaimScope)', + Exempted: 'PolymeshPrimitivesIdentityClaimScope', + Blocked: 'PolymeshPrimitivesIdentityClaimScope', + InvestorUniqueness: '(PolymeshPrimitivesIdentityClaimScope,PolymeshPrimitivesIdentityId,PolymeshPrimitivesCddId)', + NoData: 'Null', + InvestorUniquenessV2: 'PolymeshPrimitivesCddId' + } + }, + /** + * Lookup64: polymesh_primitives::identity_claim::Scope + **/ + PolymeshPrimitivesIdentityClaimScope: { + _enum: { + Identity: 'PolymeshPrimitivesIdentityId', + Ticker: 'PolymeshPrimitivesTicker', + Custom: 'Bytes' + } + }, + /** + * Lookup65: polymesh_primitives::cdd_id::CddId + **/ + PolymeshPrimitivesCddId: '[u8;32]', + /** + * Lookup66: polymesh_primitives::jurisdiction::CountryCode + **/ + PolymeshPrimitivesJurisdictionCountryCode: { + _enum: ['AF', 'AX', 'AL', 'DZ', 'AS', 'AD', 'AO', 'AI', 'AQ', 'AG', 'AR', 'AM', 'AW', 'AU', 'AT', 'AZ', 'BS', 'BH', 'BD', 'BB', 'BY', 'BE', 'BZ', 'BJ', 'BM', 'BT', 'BO', 'BA', 'BW', 'BV', 'BR', 'VG', 'IO', 'BN', 'BG', 'BF', 'BI', 'KH', 'CM', 'CA', 'CV', 'KY', 'CF', 'TD', 'CL', 'CN', 'HK', 'MO', 'CX', 'CC', 'CO', 'KM', 'CG', 'CD', 'CK', 'CR', 'CI', 'HR', 'CU', 'CY', 'CZ', 'DK', 'DJ', 'DM', 'DO', 'EC', 'EG', 'SV', 'GQ', 'ER', 'EE', 'ET', 'FK', 'FO', 'FJ', 'FI', 'FR', 'GF', 'PF', 'TF', 'GA', 'GM', 'GE', 'DE', 'GH', 'GI', 'GR', 'GL', 'GD', 'GP', 'GU', 'GT', 'GG', 'GN', 'GW', 'GY', 'HT', 'HM', 'VA', 'HN', 'HU', 'IS', 'IN', 'ID', 'IR', 'IQ', 'IE', 'IM', 'IL', 'IT', 'JM', 'JP', 'JE', 'JO', 'KZ', 'KE', 'KI', 'KP', 'KR', 'KW', 'KG', 'LA', 'LV', 'LB', 'LS', 'LR', 'LY', 'LI', 'LT', 'LU', 'MK', 'MG', 'MW', 'MY', 'MV', 'ML', 'MT', 'MH', 'MQ', 'MR', 'MU', 'YT', 'MX', 'FM', 'MD', 'MC', 'MN', 'ME', 'MS', 'MA', 'MZ', 'MM', 'NA', 'NR', 'NP', 'NL', 'AN', 'NC', 'NZ', 'NI', 'NE', 'NG', 'NU', 'NF', 'MP', 'NO', 'OM', 'PK', 'PW', 'PS', 'PA', 'PG', 'PY', 'PE', 'PH', 'PN', 'PL', 'PT', 'PR', 'QA', 'RE', 'RO', 'RU', 'RW', 'BL', 'SH', 'KN', 'LC', 'MF', 'PM', 'VC', 'WS', 'SM', 'ST', 'SA', 'SN', 'RS', 'SC', 'SL', 'SG', 'SK', 'SI', 'SB', 'SO', 'ZA', 'GS', 'SS', 'ES', 'LK', 'SD', 'SR', 'SJ', 'SZ', 'SE', 'CH', 'SY', 'TW', 'TJ', 'TZ', 'TH', 'TL', 'TG', 'TK', 'TO', 'TT', 'TN', 'TR', 'TM', 'TC', 'TV', 'UG', 'UA', 'AE', 'GB', 'US', 'UM', 'UY', 'UZ', 'VU', 'VE', 'VN', 'VI', 'WF', 'EH', 'YE', 'ZM', 'ZW', 'BQ', 'CW', 'SX'] + }, + /** + * Lookup68: polymesh_primitives::authorization::AuthorizationData + **/ + PolymeshPrimitivesAuthorizationAuthorizationData: { + _enum: { + AttestPrimaryKeyRotation: 'PolymeshPrimitivesIdentityId', + RotatePrimaryKey: 'Null', + TransferTicker: 'PolymeshPrimitivesTicker', + AddMultiSigSigner: 'AccountId32', + TransferAssetOwnership: 'PolymeshPrimitivesTicker', + JoinIdentity: 'PolymeshPrimitivesSecondaryKeyPermissions', + PortfolioCustody: 'PolymeshPrimitivesIdentityIdPortfolioId', + BecomeAgent: '(PolymeshPrimitivesTicker,PolymeshPrimitivesAgentAgentGroup)', + AddRelayerPayingKey: '(AccountId32,AccountId32,u128)', + RotatePrimaryKeyToSecondary: 'PolymeshPrimitivesSecondaryKeyPermissions' + } + }, + /** + * Lookup69: polymesh_primitives::agent::AgentGroup + **/ + PolymeshPrimitivesAgentAgentGroup: { + _enum: { + Full: 'Null', + Custom: 'u32', + ExceptMeta: 'Null', + PolymeshV1CAA: 'Null', + PolymeshV1PIA: 'Null' + } + }, + /** + * Lookup72: polymesh_primitives::cdd_id::InvestorUid + **/ + PolymeshPrimitivesCddIdInvestorUid: '[u8;16]', + /** + * Lookup74: polymesh_common_utilities::traits::group::RawEvent + **/ + PolymeshCommonUtilitiesGroupRawEventInstance2: { + _enum: { + MemberAdded: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId)', + MemberRemoved: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId)', + MemberRevoked: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId)', + MembersSwapped: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId)', + MembersReset: '(PolymeshPrimitivesIdentityId,Vec)', + ActiveLimitChanged: '(PolymeshPrimitivesIdentityId,u32,u32)', + Dummy: 'Null' + } + }, + /** + * Lookup75: pallet_group::Instance2 + **/ + PalletGroupInstance2: 'Null', + /** + * Lookup77: pallet_committee::RawEvent + **/ + PalletCommitteeRawEventInstance1: { + _enum: { + Proposed: '(PolymeshPrimitivesIdentityId,u32,H256)', + Voted: '(PolymeshPrimitivesIdentityId,u32,H256,bool,u32,u32,u32)', + VoteRetracted: '(PolymeshPrimitivesIdentityId,u32,H256,bool)', + FinalVotes: '(PolymeshPrimitivesIdentityId,u32,H256,Vec,Vec)', + Approved: '(PolymeshPrimitivesIdentityId,H256,u32,u32,u32)', + Rejected: '(PolymeshPrimitivesIdentityId,H256,u32,u32,u32)', + Executed: '(PolymeshPrimitivesIdentityId,H256,Result)', + ReleaseCoordinatorUpdated: '(PolymeshPrimitivesIdentityId,Option)', + ExpiresAfterUpdated: '(PolymeshPrimitivesIdentityId,PolymeshCommonUtilitiesMaybeBlock)', + VoteThresholdUpdated: '(PolymeshPrimitivesIdentityId,u32,u32)' + } + }, + /** + * Lookup78: pallet_committee::Instance1 + **/ + PalletCommitteeInstance1: 'Null', + /** + * Lookup81: polymesh_common_utilities::MaybeBlock + **/ + PolymeshCommonUtilitiesMaybeBlock: { + _enum: { + Some: 'u32', + None: 'Null' + } + }, + /** + * Lookup82: polymesh_common_utilities::traits::group::RawEvent + **/ + PolymeshCommonUtilitiesGroupRawEventInstance1: { + _enum: { + MemberAdded: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId)', + MemberRemoved: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId)', + MemberRevoked: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId)', + MembersSwapped: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId)', + MembersReset: '(PolymeshPrimitivesIdentityId,Vec)', + ActiveLimitChanged: '(PolymeshPrimitivesIdentityId,u32,u32)', + Dummy: 'Null' + } + }, + /** + * Lookup83: pallet_group::Instance1 + **/ + PalletGroupInstance1: 'Null', + /** + * Lookup84: pallet_committee::RawEvent + **/ + PalletCommitteeRawEventInstance3: { + _enum: { + Proposed: '(PolymeshPrimitivesIdentityId,u32,H256)', + Voted: '(PolymeshPrimitivesIdentityId,u32,H256,bool,u32,u32,u32)', + VoteRetracted: '(PolymeshPrimitivesIdentityId,u32,H256,bool)', + FinalVotes: '(PolymeshPrimitivesIdentityId,u32,H256,Vec,Vec)', + Approved: '(PolymeshPrimitivesIdentityId,H256,u32,u32,u32)', + Rejected: '(PolymeshPrimitivesIdentityId,H256,u32,u32,u32)', + Executed: '(PolymeshPrimitivesIdentityId,H256,Result)', + ReleaseCoordinatorUpdated: '(PolymeshPrimitivesIdentityId,Option)', + ExpiresAfterUpdated: '(PolymeshPrimitivesIdentityId,PolymeshCommonUtilitiesMaybeBlock)', + VoteThresholdUpdated: '(PolymeshPrimitivesIdentityId,u32,u32)' + } + }, + /** + * Lookup85: pallet_committee::Instance3 + **/ + PalletCommitteeInstance3: 'Null', + /** + * Lookup86: polymesh_common_utilities::traits::group::RawEvent + **/ + PolymeshCommonUtilitiesGroupRawEventInstance3: { + _enum: { + MemberAdded: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId)', + MemberRemoved: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId)', + MemberRevoked: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId)', + MembersSwapped: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId)', + MembersReset: '(PolymeshPrimitivesIdentityId,Vec)', + ActiveLimitChanged: '(PolymeshPrimitivesIdentityId,u32,u32)', + Dummy: 'Null' + } + }, + /** + * Lookup87: pallet_group::Instance3 + **/ + PalletGroupInstance3: 'Null', + /** + * Lookup88: pallet_committee::RawEvent + **/ + PalletCommitteeRawEventInstance4: { + _enum: { + Proposed: '(PolymeshPrimitivesIdentityId,u32,H256)', + Voted: '(PolymeshPrimitivesIdentityId,u32,H256,bool,u32,u32,u32)', + VoteRetracted: '(PolymeshPrimitivesIdentityId,u32,H256,bool)', + FinalVotes: '(PolymeshPrimitivesIdentityId,u32,H256,Vec,Vec)', + Approved: '(PolymeshPrimitivesIdentityId,H256,u32,u32,u32)', + Rejected: '(PolymeshPrimitivesIdentityId,H256,u32,u32,u32)', + Executed: '(PolymeshPrimitivesIdentityId,H256,Result)', + ReleaseCoordinatorUpdated: '(PolymeshPrimitivesIdentityId,Option)', + ExpiresAfterUpdated: '(PolymeshPrimitivesIdentityId,PolymeshCommonUtilitiesMaybeBlock)', + VoteThresholdUpdated: '(PolymeshPrimitivesIdentityId,u32,u32)' + } + }, + /** + * Lookup89: pallet_committee::Instance4 + **/ + PalletCommitteeInstance4: 'Null', + /** + * Lookup90: polymesh_common_utilities::traits::group::RawEvent + **/ + PolymeshCommonUtilitiesGroupRawEventInstance4: { + _enum: { + MemberAdded: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId)', + MemberRemoved: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId)', + MemberRevoked: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId)', + MembersSwapped: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId)', + MembersReset: '(PolymeshPrimitivesIdentityId,Vec)', + ActiveLimitChanged: '(PolymeshPrimitivesIdentityId,u32,u32)', + Dummy: 'Null' + } + }, + /** + * Lookup91: pallet_group::Instance4 + **/ + PalletGroupInstance4: 'Null', + /** + * Lookup92: pallet_multisig::RawEvent + **/ + PalletMultisigRawEvent: { + _enum: { + MultiSigCreated: '(PolymeshPrimitivesIdentityId,AccountId32,AccountId32,Vec,u64)', + ProposalAdded: '(PolymeshPrimitivesIdentityId,AccountId32,u64)', + ProposalExecuted: '(PolymeshPrimitivesIdentityId,AccountId32,u64,bool)', + MultiSigSignerAdded: '(PolymeshPrimitivesIdentityId,AccountId32,PolymeshPrimitivesSecondaryKeySignatory)', + MultiSigSignerAuthorized: '(PolymeshPrimitivesIdentityId,AccountId32,PolymeshPrimitivesSecondaryKeySignatory)', + MultiSigSignerRemoved: '(PolymeshPrimitivesIdentityId,AccountId32,PolymeshPrimitivesSecondaryKeySignatory)', + MultiSigSignaturesRequiredChanged: '(PolymeshPrimitivesIdentityId,AccountId32,u64)', + ProposalApproved: '(PolymeshPrimitivesIdentityId,AccountId32,PolymeshPrimitivesSecondaryKeySignatory,u64)', + ProposalRejectionVote: '(PolymeshPrimitivesIdentityId,AccountId32,PolymeshPrimitivesSecondaryKeySignatory,u64)', + ProposalRejected: '(PolymeshPrimitivesIdentityId,AccountId32,u64)', + ProposalExecutionFailed: 'SpRuntimeDispatchError', + SchedulingFailed: 'SpRuntimeDispatchError' + } + }, + /** + * Lookup93: pallet_bridge::RawEvent + **/ + PalletBridgeRawEvent: { + _enum: { + ControllerChanged: '(PolymeshPrimitivesIdentityId,AccountId32)', + AdminChanged: '(PolymeshPrimitivesIdentityId,AccountId32)', + TimelockChanged: '(PolymeshPrimitivesIdentityId,u32)', + Bridged: '(PolymeshPrimitivesIdentityId,PalletBridgeBridgeTx)', + Frozen: 'PolymeshPrimitivesIdentityId', + Unfrozen: 'PolymeshPrimitivesIdentityId', + FrozenTx: '(PolymeshPrimitivesIdentityId,PalletBridgeBridgeTx)', + UnfrozenTx: '(PolymeshPrimitivesIdentityId,PalletBridgeBridgeTx)', + ExemptedUpdated: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId,bool)', + BridgeLimitUpdated: '(PolymeshPrimitivesIdentityId,u128,u32)', + TxsHandled: 'Vec<(AccountId32,u32,PalletBridgeHandledTxStatus)>', + BridgeTxScheduled: '(PolymeshPrimitivesIdentityId,PalletBridgeBridgeTx,u32)', + BridgeTxScheduleFailed: '(PolymeshPrimitivesIdentityId,PalletBridgeBridgeTx,Bytes)', + FreezeAdminAdded: '(PolymeshPrimitivesIdentityId,AccountId32)', + FreezeAdminRemoved: '(PolymeshPrimitivesIdentityId,AccountId32)', + TxRemoved: '(PolymeshPrimitivesIdentityId,PalletBridgeBridgeTx)' + } + }, + /** + * Lookup94: pallet_bridge::BridgeTx + **/ + PalletBridgeBridgeTx: { + nonce: 'u32', + recipient: 'AccountId32', + amount: 'u128', + txHash: 'H256' + }, + /** + * Lookup97: pallet_bridge::HandledTxStatus + **/ + PalletBridgeHandledTxStatus: { + _enum: { + Success: 'Null', + Error: 'Bytes' + } + }, + /** + * Lookup98: pallet_staking::RawEvent + **/ + PalletStakingRawEvent: { + _enum: { + EraPayout: '(u32,u128,u128)', + Reward: '(PolymeshPrimitivesIdentityId,AccountId32,u128)', + Slash: '(AccountId32,u128)', + OldSlashingReportDiscarded: 'u32', + StakingElection: 'PalletStakingElectionCompute', + SolutionStored: 'PalletStakingElectionCompute', + Bonded: '(PolymeshPrimitivesIdentityId,AccountId32,u128)', + Unbonded: '(PolymeshPrimitivesIdentityId,AccountId32,u128)', + Nominated: '(PolymeshPrimitivesIdentityId,AccountId32,Vec)', + Withdrawn: '(AccountId32,u128)', + PermissionedIdentityAdded: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId)', + PermissionedIdentityRemoved: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId)', + InvalidatedNominators: '(PolymeshPrimitivesIdentityId,AccountId32,Vec)', + CommissionCapUpdated: '(PolymeshPrimitivesIdentityId,Perbill,Perbill)', + MinimumBondThresholdUpdated: '(Option,u128)', + RewardPaymentSchedulingInterrupted: '(AccountId32,u32,SpRuntimeDispatchError)', + SlashingAllowedForChanged: 'PalletStakingSlashingSwitch' + } + }, + /** + * Lookup99: pallet_staking::ElectionCompute + **/ + PalletStakingElectionCompute: { + _enum: ['OnChain', 'Signed', 'Unsigned'] + }, + /** + * Lookup102: pallet_staking::SlashingSwitch + **/ + PalletStakingSlashingSwitch: { + _enum: ['Validator', 'ValidatorAndNominator', 'None'] + }, + /** + * Lookup103: pallet_offences::pallet::Event + **/ + PalletOffencesEvent: { + _enum: { + Offence: '([u8;16],Bytes)' + } + }, + /** + * Lookup104: pallet_session::pallet::Event + **/ + PalletSessionEvent: { + _enum: { + NewSession: 'u32' + } + }, + /** + * Lookup105: pallet_grandpa::pallet::Event + **/ + PalletGrandpaEvent: { + _enum: { + NewAuthorities: 'Vec<(SpFinalityGrandpaAppPublic,u64)>', + Paused: 'Null', + Resumed: 'Null' + } + }, + /** + * Lookup108: sp_finality_grandpa::app::Public + **/ + SpFinalityGrandpaAppPublic: 'SpCoreEd25519Public', + /** + * Lookup109: sp_core::ed25519::Public + **/ + SpCoreEd25519Public: '[u8;32]', + /** + * Lookup110: pallet_im_online::pallet::Event + **/ + PalletImOnlineEvent: { + _enum: { + HeartbeatReceived: 'PalletImOnlineSr25519AppSr25519Public', + AllGood: 'Null', + SomeOffline: 'Vec<(AccountId32,PalletStakingExposure)>' + } + }, + /** + * Lookup111: pallet_im_online::sr25519::app_sr25519::Public + **/ + PalletImOnlineSr25519AppSr25519Public: 'SpCoreSr25519Public', + /** + * Lookup112: sp_core::sr25519::Public + **/ + SpCoreSr25519Public: '[u8;32]', + /** + * Lookup115: pallet_staking::Exposure + **/ + PalletStakingExposure: { + total: 'Compact', + own: 'Compact', + others: 'Vec' + }, + /** + * Lookup118: pallet_staking::IndividualExposure + **/ + PalletStakingIndividualExposure: { + who: 'AccountId32', + value: 'Compact' + }, + /** + * Lookup119: pallet_sudo::RawEvent + **/ + PalletSudoRawEvent: { + _enum: { + Sudid: 'Result', + KeyChanged: 'AccountId32', + SudoAsDone: 'Result' + } + }, + /** + * Lookup120: polymesh_common_utilities::traits::asset::RawEvent + **/ + PolymeshCommonUtilitiesAssetRawEvent: { + _enum: { + Transfer: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,PolymeshPrimitivesIdentityIdPortfolioId,PolymeshPrimitivesIdentityIdPortfolioId,u128)', + Issued: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,PolymeshPrimitivesIdentityId,u128,Bytes,u128)', + Redeemed: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,PolymeshPrimitivesIdentityId,u128)', + AssetCreated: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,bool,PolymeshPrimitivesAssetAssetType,PolymeshPrimitivesIdentityId,bool)', + IdentifiersUpdated: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,Vec)', + DivisibilityChanged: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,bool)', + TransferWithData: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId,u128,Bytes)', + IsIssuable: '(PolymeshPrimitivesTicker,bool)', + TickerRegistered: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,Option)', + TickerTransferred: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,PolymeshPrimitivesIdentityId)', + AssetOwnershipTransferred: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,PolymeshPrimitivesIdentityId)', + AssetFrozen: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker)', + AssetUnfrozen: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker)', + AssetRenamed: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,Bytes)', + FundingRoundSet: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,Bytes)', + DocumentAdded: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,u32,PolymeshPrimitivesDocument)', + DocumentRemoved: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,u32)', + ExtensionRemoved: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,AccountId32)', + ClassicTickerClaimed: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,PolymeshPrimitivesEthereumEthereumAddress)', + ControllerTransfer: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,PolymeshPrimitivesIdentityIdPortfolioId,u128)', + CustomAssetTypeExists: '(PolymeshPrimitivesIdentityId,u32,Bytes)', + CustomAssetTypeRegistered: '(PolymeshPrimitivesIdentityId,u32,Bytes)' + } + }, + /** + * Lookup122: polymesh_primitives::asset::AssetType + **/ + PolymeshPrimitivesAssetAssetType: { + _enum: { + EquityCommon: 'Null', + EquityPreferred: 'Null', + Commodity: 'Null', + FixedIncome: 'Null', + REIT: 'Null', + Fund: 'Null', + RevenueShareAgreement: 'Null', + StructuredProduct: 'Null', + Derivative: 'Null', + Custom: 'u32', + StableCoin: 'Null' + } + }, + /** + * Lookup125: polymesh_primitives::asset_identifier::AssetIdentifier + **/ + PolymeshPrimitivesAssetIdentifier: { + _enum: { + CUSIP: '[u8;9]', + CINS: '[u8;9]', + ISIN: '[u8;12]', + LEI: '[u8;20]' + } + }, + /** + * Lookup130: polymesh_primitives::document::Document + **/ + PolymeshPrimitivesDocument: { + uri: 'Bytes', + contentHash: 'PolymeshPrimitivesDocumentHash', + name: 'Bytes', + docType: 'Option', + filingDate: 'Option' + }, + /** + * Lookup132: polymesh_primitives::document_hash::DocumentHash + **/ + PolymeshPrimitivesDocumentHash: { + _enum: { + None: 'Null', + H512: '[u8;64]', + H384: '[u8;48]', + H320: '[u8;40]', + H256: '[u8;32]', + H224: '[u8;28]', + H192: '[u8;24]', + H160: '[u8;20]', + H128: '[u8;16]' + } + }, + /** + * Lookup141: polymesh_primitives::ethereum::EthereumAddress + **/ + PolymeshPrimitivesEthereumEthereumAddress: '[u8;20]', + /** + * Lookup142: pallet_corporate_actions::distribution::Event + **/ + PalletCorporateActionsDistributionEvent: { + _enum: { + Created: '(PolymeshPrimitivesEventOnly,PalletCorporateActionsCaId,PalletCorporateActionsDistribution)', + BenefitClaimed: '(PolymeshPrimitivesEventOnly,PolymeshPrimitivesEventOnly,PalletCorporateActionsCaId,PalletCorporateActionsDistribution,u128,Permill)', + Reclaimed: '(PolymeshPrimitivesEventOnly,PalletCorporateActionsCaId,u128)', + Removed: '(PolymeshPrimitivesEventOnly,PalletCorporateActionsCaId)' + } + }, + /** + * Lookup143: polymesh_primitives::event_only::EventOnly + **/ + PolymeshPrimitivesEventOnly: 'PolymeshPrimitivesIdentityId', + /** + * Lookup144: pallet_corporate_actions::CAId + **/ + PalletCorporateActionsCaId: { + ticker: 'PolymeshPrimitivesTicker', + localId: 'u32' + }, + /** + * Lookup146: pallet_corporate_actions::distribution::Distribution + **/ + PalletCorporateActionsDistribution: { + from: 'PolymeshPrimitivesIdentityIdPortfolioId', + currency: 'PolymeshPrimitivesTicker', + perShare: 'u128', + amount: 'u128', + remaining: 'u128', + reclaimed: 'bool', + paymentAt: 'u64', + expiresAt: 'Option' + }, + /** + * Lookup148: polymesh_common_utilities::traits::checkpoint::Event + **/ + PolymeshCommonUtilitiesCheckpointEvent: { + _enum: { + CheckpointCreated: '(Option,PolymeshPrimitivesTicker,u64,u128,u64)', + MaximumSchedulesComplexityChanged: '(PolymeshPrimitivesIdentityId,u64)', + ScheduleCreated: '(PolymeshPrimitivesEventOnly,PolymeshPrimitivesTicker,PolymeshCommonUtilitiesCheckpointStoredSchedule)', + ScheduleRemoved: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,PolymeshCommonUtilitiesCheckpointStoredSchedule)' + } + }, + /** + * Lookup151: polymesh_common_utilities::traits::checkpoint::StoredSchedule + **/ + PolymeshCommonUtilitiesCheckpointStoredSchedule: { + schedule: 'PolymeshPrimitivesCalendarCheckpointSchedule', + id: 'u64', + at: 'u64', + remaining: 'u32' + }, + /** + * Lookup152: polymesh_primitives::calendar::CheckpointSchedule + **/ + PolymeshPrimitivesCalendarCheckpointSchedule: { + start: 'u64', + period: 'PolymeshPrimitivesCalendarCalendarPeriod' + }, + /** + * Lookup153: polymesh_primitives::calendar::CalendarPeriod + **/ + PolymeshPrimitivesCalendarCalendarPeriod: { + unit: 'PolymeshPrimitivesCalendarCalendarUnit', + amount: 'u64' + }, + /** + * Lookup154: polymesh_primitives::calendar::CalendarUnit + **/ + PolymeshPrimitivesCalendarCalendarUnit: { + _enum: ['Second', 'Minute', 'Hour', 'Day', 'Week', 'Month', 'Year'] + }, + /** + * Lookup156: pallet_compliance_manager::Event + **/ + PalletComplianceManagerEvent: { + _enum: { + ComplianceRequirementCreated: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,PolymeshPrimitivesComplianceManagerComplianceRequirement)', + ComplianceRequirementRemoved: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,u32)', + AssetComplianceReplaced: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,Vec)', + AssetComplianceReset: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker)', + AssetComplianceResumed: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker)', + AssetCompliancePaused: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker)', + ComplianceRequirementChanged: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,PolymeshPrimitivesComplianceManagerComplianceRequirement)', + TrustedDefaultClaimIssuerAdded: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,PolymeshPrimitivesConditionTrustedIssuer)', + TrustedDefaultClaimIssuerRemoved: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,PolymeshPrimitivesIdentityId)' + } + }, + /** + * Lookup157: polymesh_primitives::compliance_manager::ComplianceRequirement + **/ + PolymeshPrimitivesComplianceManagerComplianceRequirement: { + senderConditions: 'Vec', + receiverConditions: 'Vec', + id: 'u32' + }, + /** + * Lookup159: polymesh_primitives::condition::Condition + **/ + PolymeshPrimitivesCondition: { + conditionType: 'PolymeshPrimitivesConditionConditionType', + issuers: 'Vec' + }, + /** + * Lookup160: polymesh_primitives::condition::ConditionType + **/ + PolymeshPrimitivesConditionConditionType: { + _enum: { + IsPresent: 'PolymeshPrimitivesIdentityClaimClaim', + IsAbsent: 'PolymeshPrimitivesIdentityClaimClaim', + IsAnyOf: 'Vec', + IsNoneOf: 'Vec', + IsIdentity: 'PolymeshPrimitivesConditionTargetIdentity' + } + }, + /** + * Lookup162: polymesh_primitives::condition::TargetIdentity + **/ + PolymeshPrimitivesConditionTargetIdentity: { + _enum: { + ExternalAgent: 'Null', + Specific: 'PolymeshPrimitivesIdentityId' + } + }, + /** + * Lookup164: polymesh_primitives::condition::TrustedIssuer + **/ + PolymeshPrimitivesConditionTrustedIssuer: { + issuer: 'PolymeshPrimitivesIdentityId', + trustedFor: 'PolymeshPrimitivesConditionTrustedFor' + }, + /** + * Lookup165: polymesh_primitives::condition::TrustedFor + **/ + PolymeshPrimitivesConditionTrustedFor: { + _enum: { + Any: 'Null', + Specific: 'Vec' + } + }, + /** + * Lookup167: polymesh_primitives::identity_claim::ClaimType + **/ + PolymeshPrimitivesIdentityClaimClaimType: { + _enum: ['Accredited', 'Affiliate', 'BuyLockup', 'SellLockup', 'CustomerDueDiligence', 'KnowYourCustomer', 'Jurisdiction', 'Exempted', 'Blocked', 'InvestorUniqueness', 'NoType', 'InvestorUniquenessV2'] + }, + /** + * Lookup169: pallet_corporate_actions::Event + **/ + PalletCorporateActionsEvent: { + _enum: { + MaxDetailsLengthChanged: '(PolymeshPrimitivesIdentityId,u32)', + DefaultTargetIdentitiesChanged: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,PalletCorporateActionsTargetIdentities)', + DefaultWithholdingTaxChanged: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,Permill)', + DidWithholdingTaxChanged: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,PolymeshPrimitivesIdentityId,Option)', + CAATransferred: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,PolymeshPrimitivesIdentityId)', + CAInitiated: '(PolymeshPrimitivesEventOnly,PalletCorporateActionsCaId,PalletCorporateActionsCorporateAction,Bytes)', + CALinkedToDoc: '(PolymeshPrimitivesIdentityId,PalletCorporateActionsCaId,Vec)', + CARemoved: '(PolymeshPrimitivesEventOnly,PalletCorporateActionsCaId)', + RecordDateChanged: '(PolymeshPrimitivesEventOnly,PalletCorporateActionsCaId,PalletCorporateActionsCorporateAction)' + } + }, + /** + * Lookup170: pallet_corporate_actions::TargetIdentities + **/ + PalletCorporateActionsTargetIdentities: { + identities: 'Vec', + treatment: 'PalletCorporateActionsTargetTreatment' + }, + /** + * Lookup171: pallet_corporate_actions::TargetTreatment + **/ + PalletCorporateActionsTargetTreatment: { + _enum: ['Include', 'Exclude'] + }, + /** + * Lookup173: pallet_corporate_actions::CorporateAction + **/ + PalletCorporateActionsCorporateAction: { + kind: 'PalletCorporateActionsCaKind', + declDate: 'u64', + recordDate: 'Option', + targets: 'PalletCorporateActionsTargetIdentities', + defaultWithholdingTax: 'Permill', + withholdingTax: 'Vec<(PolymeshPrimitivesIdentityId,Permill)>' + }, + /** + * Lookup174: pallet_corporate_actions::CAKind + **/ + PalletCorporateActionsCaKind: { + _enum: ['PredictableBenefit', 'UnpredictableBenefit', 'IssuerNotice', 'Reorganization', 'Other'] + }, + /** + * Lookup176: pallet_corporate_actions::RecordDate + **/ + PalletCorporateActionsRecordDate: { + date: 'u64', + checkpoint: 'PalletCorporateActionsCaCheckpoint' + }, + /** + * Lookup177: pallet_corporate_actions::CACheckpoint + **/ + PalletCorporateActionsCaCheckpoint: { + _enum: { + Scheduled: '(u64,u64)', + Existing: 'u64' + } + }, + /** + * Lookup182: pallet_corporate_actions::ballot::Event + **/ + PalletCorporateActionsBallotEvent: { + _enum: { + Created: '(PolymeshPrimitivesIdentityId,PalletCorporateActionsCaId,PalletCorporateActionsBallotBallotTimeRange,PalletCorporateActionsBallotBallotMeta,bool)', + VoteCast: '(PolymeshPrimitivesIdentityId,PalletCorporateActionsCaId,Vec)', + RangeChanged: '(PolymeshPrimitivesIdentityId,PalletCorporateActionsCaId,PalletCorporateActionsBallotBallotTimeRange)', + MetaChanged: '(PolymeshPrimitivesIdentityId,PalletCorporateActionsCaId,PalletCorporateActionsBallotBallotMeta)', + RCVChanged: '(PolymeshPrimitivesIdentityId,PalletCorporateActionsCaId,bool)', + Removed: '(PolymeshPrimitivesEventOnly,PalletCorporateActionsCaId)' + } + }, + /** + * Lookup183: pallet_corporate_actions::ballot::BallotTimeRange + **/ + PalletCorporateActionsBallotBallotTimeRange: { + start: 'u64', + end: 'u64' + }, + /** + * Lookup184: pallet_corporate_actions::ballot::BallotMeta + **/ + PalletCorporateActionsBallotBallotMeta: { + title: 'Bytes', + motions: 'Vec' + }, + /** + * Lookup187: pallet_corporate_actions::ballot::Motion + **/ + PalletCorporateActionsBallotMotion: { + title: 'Bytes', + infoLink: 'Bytes', + choices: 'Vec' + }, + /** + * Lookup193: pallet_corporate_actions::ballot::BallotVote + **/ + PalletCorporateActionsBallotBallotVote: { + power: 'u128', + fallback: 'Option' + }, + /** + * Lookup196: pallet_pips::RawEvent + **/ + PalletPipsRawEvent: { + _enum: { + HistoricalPipsPruned: '(PolymeshPrimitivesIdentityId,bool,bool)', + ProposalCreated: '(PolymeshPrimitivesIdentityId,PalletPipsProposer,u32,u128,Option,Option,PolymeshCommonUtilitiesMaybeBlock,PalletPipsProposalData)', + ProposalStateUpdated: '(PolymeshPrimitivesIdentityId,u32,PalletPipsProposalState)', + Voted: '(PolymeshPrimitivesIdentityId,AccountId32,u32,bool,u128)', + PipClosed: '(PolymeshPrimitivesIdentityId,u32,bool)', + ExecutionScheduled: '(PolymeshPrimitivesIdentityId,u32,u32)', + DefaultEnactmentPeriodChanged: '(PolymeshPrimitivesIdentityId,u32,u32)', + MinimumProposalDepositChanged: '(PolymeshPrimitivesIdentityId,u128,u128)', + PendingPipExpiryChanged: '(PolymeshPrimitivesIdentityId,PolymeshCommonUtilitiesMaybeBlock,PolymeshCommonUtilitiesMaybeBlock)', + MaxPipSkipCountChanged: '(PolymeshPrimitivesIdentityId,u8,u8)', + ActivePipLimitChanged: '(PolymeshPrimitivesIdentityId,u32,u32)', + ProposalRefund: '(PolymeshPrimitivesIdentityId,u32,u128)', + SnapshotCleared: '(PolymeshPrimitivesIdentityId,u32)', + SnapshotTaken: '(PolymeshPrimitivesIdentityId,u32,Vec)', + PipSkipped: '(PolymeshPrimitivesIdentityId,u32,u8)', + SnapshotResultsEnacted: '(PolymeshPrimitivesIdentityId,Option,Vec<(u32,u8)>,Vec,Vec)', + ExecutionSchedulingFailed: '(PolymeshPrimitivesIdentityId,u32,u32)', + ExpiryScheduled: '(PolymeshPrimitivesIdentityId,u32,u32)', + ExpirySchedulingFailed: '(PolymeshPrimitivesIdentityId,u32,u32)', + ExecutionCancellingFailed: 'u32' + } + }, + /** + * Lookup197: pallet_pips::Proposer + **/ + PalletPipsProposer: { + _enum: { + Community: 'AccountId32', + Committee: 'PalletPipsCommittee' + } + }, + /** + * Lookup198: pallet_pips::Committee + **/ + PalletPipsCommittee: { + _enum: ['Technical', 'Upgrade'] + }, + /** + * Lookup204: pallet_pips::ProposalData + **/ + PalletPipsProposalData: { + _enum: { + Hash: 'H256', + Proposal: 'Bytes' + } + }, + /** + * Lookup205: pallet_pips::ProposalState + **/ + PalletPipsProposalState: { + _enum: ['Pending', 'Rejected', 'Scheduled', 'Failed', 'Executed', 'Expired'] + }, + /** + * Lookup208: pallet_pips::SnapshottedPip + **/ + PalletPipsSnapshottedPip: { + id: 'u32', + weight: '(bool,u128)' + }, + /** + * Lookup214: polymesh_common_utilities::traits::portfolio::Event + **/ + PolymeshCommonUtilitiesPortfolioEvent: { + _enum: { + PortfolioCreated: '(PolymeshPrimitivesIdentityId,u64,Bytes)', + PortfolioDeleted: '(PolymeshPrimitivesIdentityId,u64)', + MovedBetweenPortfolios: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityIdPortfolioId,PolymeshPrimitivesIdentityIdPortfolioId,PolymeshPrimitivesTicker,u128,Option)', + PortfolioRenamed: '(PolymeshPrimitivesIdentityId,u64,Bytes)', + UserPortfolios: '(PolymeshPrimitivesIdentityId,Vec<(u64,Bytes)>)', + PortfolioCustodianChanged: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityIdPortfolioId,PolymeshPrimitivesIdentityId)' + } + }, + /** + * Lookup218: pallet_protocol_fee::RawEvent + **/ + PalletProtocolFeeRawEvent: { + _enum: { + FeeSet: '(PolymeshPrimitivesIdentityId,u128)', + CoefficientSet: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesPosRatio)', + FeeCharged: '(AccountId32,u128)' + } + }, + /** + * Lookup219: polymesh_primitives::PosRatio + **/ + PolymeshPrimitivesPosRatio: '(u32,u32)', + /** + * Lookup220: pallet_scheduler::pallet::Event + **/ + PalletSchedulerEvent: { + _enum: { + Scheduled: '(u32,u32)', + Canceled: '(u32,u32)', + Dispatched: '((u32,u32),Option,Result)' + } + }, + /** + * Lookup223: pallet_settlement::RawEvent + **/ + PalletSettlementRawEvent: { + _enum: { + VenueCreated: '(PolymeshPrimitivesIdentityId,u64,Bytes,PalletSettlementVenueType)', + VenueDetailsUpdated: '(PolymeshPrimitivesIdentityId,u64,Bytes)', + VenueTypeUpdated: '(PolymeshPrimitivesIdentityId,u64,PalletSettlementVenueType)', + InstructionCreated: '(PolymeshPrimitivesIdentityId,u64,u64,PalletSettlementSettlementType,Option,Option,Vec)', + InstructionAffirmed: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityIdPortfolioId,u64)', + AffirmationWithdrawn: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityIdPortfolioId,u64)', + InstructionRejected: '(PolymeshPrimitivesIdentityId,u64)', + ReceiptClaimed: '(PolymeshPrimitivesIdentityId,u64,u64,u64,AccountId32,Bytes)', + ReceiptValidityChanged: '(PolymeshPrimitivesIdentityId,AccountId32,u64,bool)', + ReceiptUnclaimed: '(PolymeshPrimitivesIdentityId,u64,u64,u64,AccountId32)', + VenueFiltering: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,bool)', + VenuesAllowed: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,Vec)', + VenuesBlocked: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,Vec)', + LegFailedExecution: '(PolymeshPrimitivesIdentityId,u64,u64)', + InstructionFailed: '(PolymeshPrimitivesIdentityId,u64)', + InstructionExecuted: '(PolymeshPrimitivesIdentityId,u64)', + VenueUnauthorized: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,u64)', + SchedulingFailed: 'SpRuntimeDispatchError', + InstructionRescheduled: '(PolymeshPrimitivesIdentityId,u64)' + } + }, + /** + * Lookup226: pallet_settlement::VenueType + **/ + PalletSettlementVenueType: { + _enum: ['Other', 'Distribution', 'Sto', 'Exchange'] + }, + /** + * Lookup228: pallet_settlement::SettlementType + **/ + PalletSettlementSettlementType: { + _enum: { + SettleOnAffirmation: 'Null', + SettleOnBlock: 'u32' + } + }, + /** + * Lookup230: pallet_settlement::Leg + **/ + PalletSettlementLeg: { + from: 'PolymeshPrimitivesIdentityIdPortfolioId', + to: 'PolymeshPrimitivesIdentityIdPortfolioId', + asset: 'PolymeshPrimitivesTicker', + amount: 'u128' + }, + /** + * Lookup234: polymesh_common_utilities::traits::statistics::Event + **/ + PolymeshCommonUtilitiesStatisticsEvent: { + _enum: { + TransferManagerAdded: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,PolymeshPrimitivesStatisticsTransferManager)', + TransferManagerRemoved: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,PolymeshPrimitivesStatisticsTransferManager)', + ExemptionsAdded: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,PolymeshPrimitivesStatisticsTransferManager,Vec)', + ExemptionsRemoved: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,PolymeshPrimitivesStatisticsTransferManager,Vec)' + } + }, + /** + * Lookup235: polymesh_primitives::statistics::TransferManager + **/ + PolymeshPrimitivesStatisticsTransferManager: { + _enum: { + CountTransferManager: 'u64', + PercentageTransferManager: 'Permill' + } + }, + /** + * Lookup237: pallet_sto::RawEvent + **/ + PalletStoRawEvent: { + _enum: { + FundraiserCreated: '(PolymeshPrimitivesIdentityId,u64,Bytes,PalletStoFundraiser)', + Invested: '(PolymeshPrimitivesIdentityId,u64,PolymeshPrimitivesTicker,PolymeshPrimitivesTicker,u128,u128)', + FundraiserFrozen: '(PolymeshPrimitivesIdentityId,u64)', + FundraiserUnfrozen: '(PolymeshPrimitivesIdentityId,u64)', + FundraiserWindowModified: '(PolymeshPrimitivesEventOnly,u64,u64,Option,u64,Option)', + FundraiserClosed: '(PolymeshPrimitivesIdentityId,u64)' + } + }, + /** + * Lookup240: pallet_sto::Fundraiser + **/ + PalletStoFundraiser: { + creator: 'PolymeshPrimitivesIdentityId', + offeringPortfolio: 'PolymeshPrimitivesIdentityIdPortfolioId', + offeringAsset: 'PolymeshPrimitivesTicker', + raisingPortfolio: 'PolymeshPrimitivesIdentityIdPortfolioId', + raisingAsset: 'PolymeshPrimitivesTicker', + tiers: 'Vec', + venueId: 'u64', + start: 'u64', + end: 'Option', + status: 'PalletStoFundraiserStatus', + minimumInvestment: 'u128' + }, + /** + * Lookup242: pallet_sto::FundraiserTier + **/ + PalletStoFundraiserTier: { + total: 'u128', + price: 'u128', + remaining: 'u128' + }, + /** + * Lookup243: pallet_sto::FundraiserStatus + **/ + PalletStoFundraiserStatus: { + _enum: ['Live', 'Frozen', 'Closed', 'ClosedEarly'] + }, + /** + * Lookup244: pallet_treasury::RawEvent + **/ + PalletTreasuryRawEvent: { + _enum: { + TreasuryDisbursement: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId,u128)', + TreasuryReimbursement: '(PolymeshPrimitivesIdentityId,u128)' + } + }, + /** + * Lookup245: pallet_utility::Event + **/ + PalletUtilityEvent: { + _enum: { + BatchInterrupted: '(Vec,(u32,SpRuntimeDispatchError))', + BatchOptimisticFailed: '(Vec,Vec<(u32,SpRuntimeDispatchError)>)', + BatchCompleted: 'Vec' + } + }, + /** + * Lookup249: polymesh_common_utilities::traits::base::Event + **/ + PolymeshCommonUtilitiesBaseEvent: { + _enum: { + UnexpectedError: 'Option' + } + }, + /** + * Lookup251: polymesh_common_utilities::traits::external_agents::Event + **/ + PolymeshCommonUtilitiesExternalAgentsEvent: { + _enum: { + GroupCreated: '(PolymeshPrimitivesEventOnly,PolymeshPrimitivesTicker,u32,PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions)', + GroupPermissionsUpdated: '(PolymeshPrimitivesEventOnly,PolymeshPrimitivesTicker,u32,PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions)', + AgentAdded: '(PolymeshPrimitivesEventOnly,PolymeshPrimitivesTicker,PolymeshPrimitivesAgentAgentGroup)', + AgentRemoved: '(PolymeshPrimitivesEventOnly,PolymeshPrimitivesTicker,PolymeshPrimitivesIdentityId)', + GroupChanged: '(PolymeshPrimitivesEventOnly,PolymeshPrimitivesTicker,PolymeshPrimitivesIdentityId,PolymeshPrimitivesAgentAgentGroup)' + } + }, + /** + * Lookup252: polymesh_common_utilities::traits::relayer::RawEvent + **/ + PolymeshCommonUtilitiesRelayerRawEvent: { + _enum: { + AuthorizedPayingKey: '(PolymeshPrimitivesEventOnly,AccountId32,AccountId32,u128,u64)', + AcceptedPayingKey: '(PolymeshPrimitivesEventOnly,AccountId32,AccountId32)', + RemovedPayingKey: '(PolymeshPrimitivesEventOnly,AccountId32,AccountId32)', + UpdatedPolyxLimit: '(PolymeshPrimitivesEventOnly,AccountId32,AccountId32,u128,u128)' + } + }, + /** + * Lookup253: pallet_rewards::RawEvent + **/ + PalletRewardsRawEvent: { + _enum: { + ItnRewardClaimed: '(AccountId32,u128)' + } + }, + /** + * Lookup254: pallet_test_utils::RawEvent + **/ + PalletTestUtilsRawEvent: { + _enum: { + MockInvestorUIDCreated: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesCddIdInvestorUid)', + DidStatus: '(PolymeshPrimitivesIdentityId,AccountId32)', + CddStatus: '(Option,AccountId32,bool)' + } + }, + /** + * Lookup255: frame_system::Phase + **/ + FrameSystemPhase: { + _enum: { + ApplyExtrinsic: 'u32', + Finalization: 'Null', + Initialization: 'Null' + } + }, + /** + * Lookup258: frame_system::LastRuntimeUpgradeInfo + **/ + FrameSystemLastRuntimeUpgradeInfo: { + specVersion: 'Compact', + specName: 'Text' + }, + /** + * Lookup261: frame_system::pallet::Call + **/ + FrameSystemCall: { + _enum: { + fill_block: { + ratio: 'Perbill', + }, + remark: { + remark: 'Bytes', + }, + set_heap_pages: { + pages: 'u64', + }, + set_code: { + code: 'Bytes', + }, + set_code_without_checks: { + code: 'Bytes', + }, + set_changes_trie_config: { + changesTrieConfig: 'Option', + }, + set_storage: { + items: 'Vec<(Bytes,Bytes)>', + }, + kill_storage: { + _alias: { + keys_: 'keys', + }, + keys_: 'Vec', + }, + kill_prefix: { + prefix: 'Bytes', + subkeys: 'u32', + }, + remark_with_event: { + remark: 'Bytes' + } + } + }, + /** + * Lookup265: frame_system::limits::BlockWeights + **/ + FrameSystemLimitsBlockWeights: { + baseBlock: 'u64', + maxBlock: 'u64', + perClass: 'FrameSupportWeightsPerDispatchClassWeightsPerClass' + }, + /** + * Lookup266: frame_support::weights::PerDispatchClass + **/ + FrameSupportWeightsPerDispatchClassWeightsPerClass: { + normal: 'FrameSystemLimitsWeightsPerClass', + operational: 'FrameSystemLimitsWeightsPerClass', + mandatory: 'FrameSystemLimitsWeightsPerClass' + }, + /** + * Lookup267: frame_system::limits::WeightsPerClass + **/ + FrameSystemLimitsWeightsPerClass: { + baseExtrinsic: 'u64', + maxExtrinsic: 'Option', + maxTotal: 'Option', + reserved: 'Option' + }, + /** + * Lookup268: frame_system::limits::BlockLength + **/ + FrameSystemLimitsBlockLength: { + max: 'FrameSupportWeightsPerDispatchClassU32' + }, + /** + * Lookup269: frame_support::weights::PerDispatchClass + **/ + FrameSupportWeightsPerDispatchClassU32: { + normal: 'u32', + operational: 'u32', + mandatory: 'u32' + }, + /** + * Lookup270: frame_support::weights::RuntimeDbWeight + **/ + FrameSupportWeightsRuntimeDbWeight: { + read: 'u64', + write: 'u64' + }, + /** + * Lookup271: sp_version::RuntimeVersion + **/ + SpVersionRuntimeVersion: { + specName: 'Text', + implName: 'Text', + authoringVersion: 'u32', + specVersion: 'u32', + implVersion: 'u32', + apis: 'Vec<([u8;8],u32)>', + transactionVersion: 'u32' + }, + /** + * Lookup276: frame_system::pallet::Error + **/ + FrameSystemError: { + _enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount'] + }, + /** + * Lookup279: sp_consensus_babe::app::Public + **/ + SpConsensusBabeAppPublic: 'SpCoreSr25519Public', + /** + * Lookup282: sp_consensus_babe::digests::NextConfigDescriptor + **/ + SpConsensusBabeDigestsNextConfigDescriptor: { + _enum: { + __Unused0: 'Null', + V1: { + c: '(u64,u64)', + allowedSlots: 'SpConsensusBabeAllowedSlots' + } + } + }, + /** + * Lookup284: sp_consensus_babe::AllowedSlots + **/ + SpConsensusBabeAllowedSlots: { + _enum: ['PrimarySlots', 'PrimaryAndSecondaryPlainSlots', 'PrimaryAndSecondaryVRFSlots'] + }, + /** + * Lookup288: sp_consensus_babe::BabeEpochConfiguration + **/ + SpConsensusBabeBabeEpochConfiguration: { + c: '(u64,u64)', + allowedSlots: 'SpConsensusBabeAllowedSlots' + }, + /** + * Lookup289: pallet_babe::pallet::Call + **/ + PalletBabeCall: { + _enum: { + report_equivocation: { + equivocationProof: 'SpConsensusSlotsEquivocationProof', + keyOwnerProof: 'SpSessionMembershipProof', + }, + report_equivocation_unsigned: { + equivocationProof: 'SpConsensusSlotsEquivocationProof', + keyOwnerProof: 'SpSessionMembershipProof', + }, + plan_config_change: { + config: 'SpConsensusBabeDigestsNextConfigDescriptor' + } + } + }, + /** + * Lookup290: sp_consensus_slots::EquivocationProof, sp_consensus_babe::app::Public> + **/ + SpConsensusSlotsEquivocationProof: { + offender: 'SpConsensusBabeAppPublic', + slot: 'u64', + firstHeader: 'SpRuntimeHeader', + secondHeader: 'SpRuntimeHeader' + }, + /** + * Lookup291: sp_runtime::generic::header::Header + **/ + SpRuntimeHeader: { + parentHash: 'H256', + number: 'Compact', + stateRoot: 'H256', + extrinsicsRoot: 'H256', + digest: 'SpRuntimeDigest' + }, + /** + * Lookup292: sp_runtime::traits::BlakeTwo256 + **/ + SpRuntimeBlakeTwo256: 'Null', + /** + * Lookup293: sp_session::MembershipProof + **/ + SpSessionMembershipProof: { + session: 'u32', + trieNodes: 'Vec', + validatorCount: 'u32' + }, + /** + * Lookup294: pallet_babe::pallet::Error + **/ + PalletBabeError: { + _enum: ['InvalidEquivocationProof', 'InvalidKeyOwnershipProof', 'DuplicateOffenceReport'] + }, + /** + * Lookup295: pallet_timestamp::pallet::Call + **/ + PalletTimestampCall: { + _enum: { + set: { + now: 'Compact' + } + } + }, + /** + * Lookup298: pallet_indices::pallet::Call + **/ + PalletIndicesCall: { + _enum: { + claim: { + index: 'u32', + }, + transfer: { + _alias: { + new_: 'new', + }, + new_: 'AccountId32', + index: 'u32', + }, + free: { + index: 'u32', + }, + force_transfer: { + _alias: { + new_: 'new', + }, + new_: 'AccountId32', + index: 'u32', + freeze: 'bool', + }, + freeze: { + index: 'u32' + } + } + }, + /** + * Lookup299: pallet_indices::pallet::Error + **/ + PalletIndicesError: { + _enum: ['NotAssigned', 'NotOwner', 'InUse', 'NotTransfer', 'Permanent'] + }, + /** + * Lookup301: pallet_authorship::UncleEntryItem + **/ + PalletAuthorshipUncleEntryItem: { + _enum: { + InclusionHeight: 'u32', + Uncle: '(H256,Option)' + } + }, + /** + * Lookup302: pallet_authorship::pallet::Call + **/ + PalletAuthorshipCall: { + _enum: { + set_uncles: { + newUncles: 'Vec' + } + } + }, + /** + * Lookup304: pallet_authorship::pallet::Error + **/ + PalletAuthorshipError: { + _enum: ['InvalidUncleParent', 'UnclesAlreadySet', 'TooManyUncles', 'GenesisUncle', 'TooHighUncle', 'UncleAlreadyIncluded', 'OldUncle'] + }, + /** + * Lookup306: pallet_balances::BalanceLock + **/ + PalletBalancesBalanceLock: { + id: '[u8;8]', + amount: 'u128', + reasons: 'PolymeshCommonUtilitiesBalancesReasons' + }, + /** + * Lookup307: polymesh_common_utilities::traits::balances::Reasons + **/ + PolymeshCommonUtilitiesBalancesReasons: { + _enum: ['Fee', 'Misc', 'All'] + }, + /** + * Lookup308: pallet_balances::Call + **/ + PalletBalancesCall: { + _enum: { + transfer: { + dest: 'MultiAddress', + value: 'Compact', + }, + transfer_with_memo: { + dest: 'MultiAddress', + value: 'Compact', + memo: 'Option', + }, + deposit_block_reward_reserve_balance: { + value: 'Compact', + }, + set_balance: { + who: 'MultiAddress', + newFree: 'Compact', + newReserved: 'Compact', + }, + force_transfer: { + source: 'MultiAddress', + dest: 'MultiAddress', + value: 'Compact', + }, + burn_account_balance: { + amount: 'u128' + } + } + }, + /** + * Lookup310: pallet_balances::Error + **/ + PalletBalancesError: { + _enum: ['LiquidityRestrictions', 'Overflow', 'InsufficientBalance', 'ExistentialDeposit', 'ReceiverCddMissing'] + }, + /** + * Lookup312: pallet_transaction_payment::Releases + **/ + PalletTransactionPaymentReleases: { + _enum: ['V1Ancient', 'V2'] + }, + /** + * Lookup314: frame_support::weights::WeightToFeeCoefficient + **/ + FrameSupportWeightsWeightToFeeCoefficient: { + coeffInteger: 'u128', + coeffFrac: 'Perbill', + negative: 'bool', + degree: 'u8' + }, + /** + * Lookup315: polymesh_primitives::identity::Identity + **/ + PolymeshPrimitivesIdentity: { + primaryKey: 'AccountId32', + secondaryKeys: 'Vec' + }, + /** + * Lookup317: polymesh_primitives::secondary_key::SecondaryKey + **/ + PolymeshPrimitivesSecondaryKey: { + signer: 'PolymeshPrimitivesSecondaryKeySignatory', + permissions: 'PolymeshPrimitivesSecondaryKeyPermissions' + }, + /** + * Lookup319: pallet_identity::types::Claim1stKey + **/ + PalletIdentityClaim1stKey: { + target: 'PolymeshPrimitivesIdentityId', + claimType: 'PolymeshPrimitivesIdentityClaimClaimType' + }, + /** + * Lookup320: pallet_identity::types::Claim2ndKey + **/ + PalletIdentityClaim2ndKey: { + issuer: 'PolymeshPrimitivesIdentityId', + scope: 'Option' + }, + /** + * Lookup323: polymesh_primitives::authorization::Authorization + **/ + PolymeshPrimitivesAuthorization: { + authorizationData: 'PolymeshPrimitivesAuthorizationAuthorizationData', + authorizedBy: 'PolymeshPrimitivesIdentityId', + expiry: 'Option', + authId: 'u64' + }, + /** + * Lookup326: pallet_identity::Call + **/ + PalletIdentityCall: { + _enum: { + cdd_register_did: { + targetAccount: 'AccountId32', + secondaryKeys: 'Vec', + }, + invalidate_cdd_claims: { + cdd: 'PolymeshPrimitivesIdentityId', + disableFrom: 'u64', + expiry: 'Option', + }, + remove_secondary_keys: { + signersToRemove: 'Vec', + }, + accept_primary_key: { + rotationAuthId: 'u64', + optionalCddAuthId: 'Option', + }, + change_cdd_requirement_for_mk_rotation: { + authRequired: 'bool', + }, + join_identity_as_key: { + authId: 'u64', + }, + leave_identity_as_key: 'Null', + add_claim: { + target: 'PolymeshPrimitivesIdentityId', + claim: 'PolymeshPrimitivesIdentityClaimClaim', + expiry: 'Option', + }, + revoke_claim: { + target: 'PolymeshPrimitivesIdentityId', + claim: 'PolymeshPrimitivesIdentityClaimClaim', + }, + set_permission_to_signer: { + signer: 'PolymeshPrimitivesSecondaryKeySignatory', + perms: 'PolymeshPrimitivesSecondaryKeyPermissions', + }, + legacy_set_permission_to_signer: { + signer: 'PolymeshPrimitivesSecondaryKeySignatory', + permissions: 'PolymeshPrimitivesSecondaryKeyApiLegacyPermissions', + }, + freeze_secondary_keys: 'Null', + unfreeze_secondary_keys: 'Null', + add_authorization: { + target: 'PolymeshPrimitivesSecondaryKeySignatory', + data: 'PolymeshPrimitivesAuthorizationAuthorizationData', + expiry: 'Option', + }, + remove_authorization: { + target: 'PolymeshPrimitivesSecondaryKeySignatory', + authId: 'u64', + authIssuerPays: 'bool', + }, + add_secondary_keys_with_authorization: { + additionalKeys: 'Vec', + expiresAt: 'u64', + }, + add_investor_uniqueness_claim: { + target: 'PolymeshPrimitivesIdentityId', + claim: 'PolymeshPrimitivesIdentityClaimClaim', + proof: 'PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData', + expiry: 'Option', + }, + gc_add_cdd_claim: { + target: 'PolymeshPrimitivesIdentityId', + }, + gc_revoke_cdd_claim: { + target: 'PolymeshPrimitivesIdentityId', + }, + add_investor_uniqueness_claim_v2: { + target: 'PolymeshPrimitivesIdentityId', + scope: 'PolymeshPrimitivesIdentityClaimScope', + claim: 'PolymeshPrimitivesIdentityClaimClaim', + proof: 'ConfidentialIdentityClaimProofsScopeClaimProof', + expiry: 'Option', + }, + revoke_claim_by_index: { + target: 'PolymeshPrimitivesIdentityId', + claimType: 'PolymeshPrimitivesIdentityClaimClaimType', + scope: 'Option', + }, + rotate_primary_key_to_secondary: { + authId: 'u64', + optionalCddAuthId: 'Option' + } + } + }, + /** + * Lookup327: polymesh_primitives::secondary_key::api::LegacyPermissions + **/ + PolymeshPrimitivesSecondaryKeyApiLegacyPermissions: { + asset: 'PolymeshPrimitivesSubsetSubsetRestrictionTicker', + extrinsic: 'PolymeshPrimitivesSecondaryKeyApiLegacyExtrinsicPermissions', + portfolio: 'PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId' + }, + /** + * Lookup328: polymesh_primitives::secondary_key::api::LegacyExtrinsicPermissions + **/ + PolymeshPrimitivesSecondaryKeyApiLegacyExtrinsicPermissions: 'Option>', + /** + * Lookup331: polymesh_primitives::secondary_key::api::LegacyPalletPermissions + **/ + PolymeshPrimitivesSecondaryKeyApiLegacyPalletPermissions: { + palletName: 'Bytes', + total: 'bool', + dispatchableNames: 'Vec' + }, + /** + * Lookup333: polymesh_common_utilities::traits::identity::SecondaryKeyWithAuth + **/ + PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth: { + secondaryKey: 'PolymeshPrimitivesSecondaryKeyApiSecondaryKey', + authSignature: 'H512' + }, + /** + * Lookup335: polymesh_primitives::investor_zkproof_data::v1::InvestorZKProofData + **/ + PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData: 'SchnorrkelSignSignature', + /** + * Lookup336: schnorrkel::sign::Signature + **/ + SchnorrkelSignSignature: { + r: 'Curve25519DalekRistrettoCompressedRistretto', + s: 'Curve25519DalekScalar' + }, + /** + * Lookup337: curve25519_dalek::ristretto::CompressedRistretto + **/ + Curve25519DalekRistrettoCompressedRistretto: '[u8;32]', + /** + * Lookup338: curve25519_dalek::scalar::Scalar + **/ + Curve25519DalekScalar: { + bytes: '[u8;32]' + }, + /** + * Lookup339: confidential_identity::claim_proofs::ScopeClaimProof + **/ + ConfidentialIdentityClaimProofsScopeClaimProof: { + proofScopeIdWellformed: 'ConfidentialIdentitySignSignature', + proofScopeIdCddIdMatch: 'ConfidentialIdentityClaimProofsZkProofData', + scopeId: 'Curve25519DalekRistrettoRistrettoPoint' + }, + /** + * Lookup340: confidential_identity::sign::Signature + **/ + ConfidentialIdentitySignSignature: { + r: 'Curve25519DalekRistrettoCompressedRistretto', + s: 'Curve25519DalekScalar' + }, + /** + * Lookup341: confidential_identity::claim_proofs::ZkProofData + **/ + ConfidentialIdentityClaimProofsZkProofData: { + challengeResponses: '[Lookup338;2]', + subtractExpressionsRes: 'Curve25519DalekRistrettoRistrettoPoint', + blindedScopeDidHash: 'Curve25519DalekRistrettoRistrettoPoint' + }, + /** + * Lookup343: curve25519_dalek::ristretto::RistrettoPoint + **/ + Curve25519DalekRistrettoRistrettoPoint: 'Curve25519DalekEdwardsEdwardsPoint', + /** + * Lookup344: curve25519_dalek::edwards::EdwardsPoint + **/ + Curve25519DalekEdwardsEdwardsPoint: { + x: 'Curve25519DalekBackendSerialU64FieldFieldElement51', + y: 'Curve25519DalekBackendSerialU64FieldFieldElement51', + z: 'Curve25519DalekBackendSerialU64FieldFieldElement51', + t: 'Curve25519DalekBackendSerialU64FieldFieldElement51' + }, + /** + * Lookup345: curve25519_dalek::backend::serial::u64::field::FieldElement51 + **/ + Curve25519DalekBackendSerialU64FieldFieldElement51: '[u64;5]', + /** + * Lookup347: pallet_identity::Error + **/ + PalletIdentityError: { + _enum: ['AlreadyLinked', 'MissingCurrentIdentity', 'Unauthorized', 'InvalidAccountKey', 'UnAuthorizedCddProvider', 'InvalidAuthorizationFromOwner', 'InvalidAuthorizationFromCddProvider', 'NotCddProviderAttestation', 'AuthorizationsNotForSameDids', 'DidMustAlreadyExist', 'CurrentIdentityCannotBeForwarded', 'AuthorizationExpired', 'TargetHasNoCdd', 'AuthorizationHasBeenRevoked', 'InvalidAuthorizationSignature', 'KeyNotAllowed', 'NotPrimaryKey', 'DidDoesNotExist', 'DidAlreadyExists', 'SecondaryKeysContainPrimaryKey', 'FailedToChargeFee', 'NotASigner', 'CannotDecodeSignerAccountId', 'MultiSigHasBalance', 'ConfidentialScopeClaimNotAllowed', 'InvalidScopeClaim', 'ClaimVariantNotAllowed', 'TargetHasNonZeroBalanceAtScopeId', 'CDDIdNotUniqueForIdentity', 'InvalidCDDId', 'ClaimAndProofVersionsDoNotMatch', 'AccountKeyIsBeingUsed', 'CustomScopeTooLong'] + }, + /** + * Lookup349: polymesh_common_utilities::traits::group::InactiveMember + **/ + PolymeshCommonUtilitiesGroupInactiveMember: { + id: 'PolymeshPrimitivesIdentityId', + deactivatedAt: 'u64', + expiry: 'Option' + }, + /** + * Lookup350: pallet_group::Call + **/ + PalletGroupCall: { + _enum: { + set_active_members_limit: { + limit: 'u32', + }, + disable_member: { + who: 'PolymeshPrimitivesIdentityId', + expiry: 'Option', + at: 'Option', + }, + add_member: { + who: 'PolymeshPrimitivesIdentityId', + }, + remove_member: { + who: 'PolymeshPrimitivesIdentityId', + }, + swap_member: { + remove: 'PolymeshPrimitivesIdentityId', + add: 'PolymeshPrimitivesIdentityId', + }, + reset_members: { + members: 'Vec', + }, + abdicate_membership: 'Null' + } + }, + /** + * Lookup351: pallet_group::Error + **/ + PalletGroupError: { + _enum: ['OnlyPrimaryKeyAllowed', 'DuplicateMember', 'NoSuchMember', 'LastMemberCannotQuit', 'MissingCurrentIdentity', 'ActiveMembersLimitExceeded', 'ActiveMembersLimitOverflow'] + }, + /** + * Lookup353: pallet_committee::Call + **/ + PalletCommitteeCall: { + _enum: { + set_vote_threshold: { + n: 'u32', + d: 'u32', + }, + set_release_coordinator: { + id: 'PolymeshPrimitivesIdentityId', + }, + set_expires_after: { + expiry: 'PolymeshCommonUtilitiesMaybeBlock', + }, + vote_or_propose: { + approve: 'bool', + call: 'Call', + }, + vote: { + proposal: 'H256', + index: 'u32', + approve: 'bool' + } + } + }, + /** + * Lookup359: pallet_multisig::Call + **/ + PalletMultisigCall: { + _enum: { + create_multisig: { + signers: 'Vec', + sigsRequired: 'u64', + }, + create_or_approve_proposal_as_identity: { + multisig: 'AccountId32', + proposal: 'Call', + expiry: 'Option', + autoClose: 'bool', + }, + create_or_approve_proposal_as_key: { + multisig: 'AccountId32', + proposal: 'Call', + expiry: 'Option', + autoClose: 'bool', + }, + create_proposal_as_identity: { + multisig: 'AccountId32', + proposal: 'Call', + expiry: 'Option', + autoClose: 'bool', + }, + create_proposal_as_key: { + multisig: 'AccountId32', + proposal: 'Call', + expiry: 'Option', + autoClose: 'bool', + }, + approve_as_identity: { + multisig: 'AccountId32', + proposalId: 'u64', + }, + approve_as_key: { + multisig: 'AccountId32', + proposalId: 'u64', + }, + reject_as_identity: { + multisig: 'AccountId32', + proposalId: 'u64', + }, + reject_as_key: { + multisig: 'AccountId32', + proposalId: 'u64', + }, + accept_multisig_signer_as_identity: { + authId: 'u64', + }, + accept_multisig_signer_as_key: { + authId: 'u64', + }, + add_multisig_signer: { + signer: 'PolymeshPrimitivesSecondaryKeySignatory', + }, + remove_multisig_signer: { + signer: 'PolymeshPrimitivesSecondaryKeySignatory', + }, + add_multisig_signers_via_creator: { + multisig: 'AccountId32', + signers: 'Vec', + }, + remove_multisig_signers_via_creator: { + multisig: 'AccountId32', + signers: 'Vec', + }, + change_sigs_required: { + sigsRequired: 'u64', + }, + make_multisig_signer: { + multisig: 'AccountId32', + }, + make_multisig_primary: { + multisig: 'AccountId32', + optionalCddAuthId: 'Option', + }, + execute_scheduled_proposal: { + multisig: 'AccountId32', + proposalId: 'u64', + multisigDid: 'PolymeshPrimitivesIdentityId', + proposalWeight: 'u64' + } + } + }, + /** + * Lookup360: pallet_bridge::Call + **/ + PalletBridgeCall: { + _enum: { + change_controller: { + controller: 'AccountId32', + }, + change_admin: { + admin: 'AccountId32', + }, + change_timelock: { + timelock: 'u32', + }, + freeze: 'Null', + unfreeze: 'Null', + change_bridge_limit: { + amount: 'u128', + duration: 'u32', + }, + change_bridge_exempted: { + exempted: 'Vec<(PolymeshPrimitivesIdentityId,bool)>', + }, + force_handle_bridge_tx: { + bridgeTx: 'PalletBridgeBridgeTx', + }, + batch_propose_bridge_tx: { + bridgeTxs: 'Vec', + }, + propose_bridge_tx: { + bridgeTx: 'PalletBridgeBridgeTx', + }, + handle_bridge_tx: { + bridgeTx: 'PalletBridgeBridgeTx', + }, + freeze_txs: { + bridgeTxs: 'Vec', + }, + unfreeze_txs: { + bridgeTxs: 'Vec', + }, + handle_scheduled_bridge_tx: { + bridgeTx: 'PalletBridgeBridgeTx', + }, + add_freeze_admin: { + freezeAdmin: 'AccountId32', + }, + remove_freeze_admin: { + freezeAdmin: 'AccountId32', + }, + remove_txs: { + bridgeTxs: 'Vec' + } + } + }, + /** + * Lookup364: pallet_staking::Call + **/ + PalletStakingCall: { + _enum: { + bond: { + controller: 'MultiAddress', + value: 'Compact', + payee: 'PalletStakingRewardDestination', + }, + bond_extra: { + maxAdditional: 'Compact', + }, + unbond: { + value: 'Compact', + }, + withdraw_unbonded: { + numSlashingSpans: 'u32', + }, + validate: { + prefs: 'PalletStakingValidatorPrefs', + }, + nominate: { + targets: 'Vec', + }, + chill: 'Null', + set_payee: { + payee: 'PalletStakingRewardDestination', + }, + set_controller: { + controller: 'MultiAddress', + }, + set_validator_count: { + _alias: { + new_: 'new', + }, + new_: 'Compact', + }, + increase_validator_count: { + additional: 'Compact', + }, + scale_validator_count: { + factor: 'Percent', + }, + add_permissioned_validator: { + identity: 'PolymeshPrimitivesIdentityId', + intendedCount: 'Option', + }, + remove_permissioned_validator: { + identity: 'PolymeshPrimitivesIdentityId', + }, + validate_cdd_expiry_nominators: { + targets: 'Vec', + }, + set_commission_cap: { + newCap: 'Perbill', + }, + set_min_bond_threshold: { + newValue: 'u128', + }, + force_no_eras: 'Null', + force_new_era: 'Null', + set_invulnerables: { + invulnerables: 'Vec', + }, + force_unstake: { + stash: 'AccountId32', + numSlashingSpans: 'u32', + }, + force_new_era_always: 'Null', + cancel_deferred_slash: { + era: 'u32', + slashIndices: 'Vec', + }, + payout_stakers: { + validatorStash: 'AccountId32', + era: 'u32', + }, + rebond: { + value: 'Compact', + }, + set_history_depth: { + newHistoryDepth: 'Compact', + eraItemsDeleted: 'Compact', + }, + reap_stash: { + stash: 'AccountId32', + numSlashingSpans: 'u32', + }, + submit_election_solution: { + _alias: { + size_: 'size', + }, + winners: 'Vec', + compact: 'PalletStakingCompactAssignments', + score: '[u128;3]', + era: 'u32', + size_: 'PalletStakingElectionSize', + }, + submit_election_solution_unsigned: { + _alias: { + size_: 'size', + }, + winners: 'Vec', + compact: 'PalletStakingCompactAssignments', + score: '[u128;3]', + era: 'u32', + size_: 'PalletStakingElectionSize', + }, + payout_stakers_by_system: { + validatorStash: 'AccountId32', + era: 'u32', + }, + change_slashing_allowed_for: { + slashingSwitch: 'PalletStakingSlashingSwitch', + }, + update_permissioned_validator_intended_count: { + identity: 'PolymeshPrimitivesIdentityId', + newIntendedCount: 'u32' + } + } + }, + /** + * Lookup365: pallet_staking::RewardDestination + **/ + PalletStakingRewardDestination: { + _enum: { + Staked: 'Null', + Stash: 'Null', + Controller: 'Null', + Account: 'AccountId32' + } + }, + /** + * Lookup366: pallet_staking::ValidatorPrefs + **/ + PalletStakingValidatorPrefs: { + commission: 'Compact', + blocked: 'bool' + }, + /** + * Lookup372: pallet_staking::CompactAssignments + **/ + PalletStakingCompactAssignments: { + votes1: 'Vec<(Compact,Compact)>', + votes2: 'Vec<(Compact,(Compact,Compact),Compact)>', + votes3: 'Vec<(Compact,[(Compact,Compact);2],Compact)>', + votes4: 'Vec<(Compact,[(Compact,Compact);3],Compact)>', + votes5: 'Vec<(Compact,[(Compact,Compact);4],Compact)>', + votes6: 'Vec<(Compact,[(Compact,Compact);5],Compact)>', + votes7: 'Vec<(Compact,[(Compact,Compact);6],Compact)>', + votes8: 'Vec<(Compact,[(Compact,Compact);7],Compact)>', + votes9: 'Vec<(Compact,[(Compact,Compact);8],Compact)>', + votes10: 'Vec<(Compact,[(Compact,Compact);9],Compact)>', + votes11: 'Vec<(Compact,[(Compact,Compact);10],Compact)>', + votes12: 'Vec<(Compact,[(Compact,Compact);11],Compact)>', + votes13: 'Vec<(Compact,[(Compact,Compact);12],Compact)>', + votes14: 'Vec<(Compact,[(Compact,Compact);13],Compact)>', + votes15: 'Vec<(Compact,[(Compact,Compact);14],Compact)>', + votes16: 'Vec<(Compact,[(Compact,Compact);15],Compact)>' + }, + /** + * Lookup424: pallet_staking::ElectionSize + **/ + PalletStakingElectionSize: { + validators: 'Compact', + nominators: 'Compact' + }, + /** + * Lookup425: pallet_session::pallet::Call + **/ + PalletSessionCall: { + _enum: { + set_keys: { + _alias: { + keys_: 'keys', + }, + keys_: 'PolymeshRuntimeDevelopRuntimeSessionKeys', + proof: 'Bytes', + }, + purge_keys: 'Null' + } + }, + /** + * Lookup426: polymesh_runtime_develop::runtime::SessionKeys + **/ + PolymeshRuntimeDevelopRuntimeSessionKeys: { + grandpa: 'SpFinalityGrandpaAppPublic', + babe: 'SpConsensusBabeAppPublic', + imOnline: 'PalletImOnlineSr25519AppSr25519Public', + authorityDiscovery: 'SpAuthorityDiscoveryAppPublic' + }, + /** + * Lookup427: sp_authority_discovery::app::Public + **/ + SpAuthorityDiscoveryAppPublic: 'SpCoreSr25519Public', + /** + * Lookup428: pallet_grandpa::pallet::Call + **/ + PalletGrandpaCall: { + _enum: { + report_equivocation: { + equivocationProof: 'SpFinalityGrandpaEquivocationProof', + keyOwnerProof: 'SpSessionMembershipProof', + }, + report_equivocation_unsigned: { + equivocationProof: 'SpFinalityGrandpaEquivocationProof', + keyOwnerProof: 'SpSessionMembershipProof', + }, + note_stalled: { + delay: 'u32', + bestFinalizedBlockNumber: 'u32' + } + } + }, + /** + * Lookup429: sp_finality_grandpa::EquivocationProof + **/ + SpFinalityGrandpaEquivocationProof: { + setId: 'u64', + equivocation: 'SpFinalityGrandpaEquivocation' + }, + /** + * Lookup430: sp_finality_grandpa::Equivocation + **/ + SpFinalityGrandpaEquivocation: { + _enum: { + Prevote: 'FinalityGrandpaEquivocationPrevote', + Precommit: 'FinalityGrandpaEquivocationPrecommit' + } + }, + /** + * Lookup431: finality_grandpa::Equivocation, sp_finality_grandpa::app::Signature> + **/ + FinalityGrandpaEquivocationPrevote: { + roundNumber: 'u64', + identity: 'SpFinalityGrandpaAppPublic', + first: '(FinalityGrandpaPrevote,SpFinalityGrandpaAppSignature)', + second: '(FinalityGrandpaPrevote,SpFinalityGrandpaAppSignature)' + }, + /** + * Lookup432: finality_grandpa::Prevote + **/ + FinalityGrandpaPrevote: { + targetHash: 'H256', + targetNumber: 'u32' + }, + /** + * Lookup433: sp_finality_grandpa::app::Signature + **/ + SpFinalityGrandpaAppSignature: 'SpCoreEd25519Signature', + /** + * Lookup434: sp_core::ed25519::Signature + **/ + SpCoreEd25519Signature: '[u8;64]', + /** + * Lookup436: finality_grandpa::Equivocation, sp_finality_grandpa::app::Signature> + **/ + FinalityGrandpaEquivocationPrecommit: { + roundNumber: 'u64', + identity: 'SpFinalityGrandpaAppPublic', + first: '(FinalityGrandpaPrecommit,SpFinalityGrandpaAppSignature)', + second: '(FinalityGrandpaPrecommit,SpFinalityGrandpaAppSignature)' + }, + /** + * Lookup437: finality_grandpa::Precommit + **/ + FinalityGrandpaPrecommit: { + targetHash: 'H256', + targetNumber: 'u32' + }, + /** + * Lookup439: pallet_im_online::pallet::Call + **/ + PalletImOnlineCall: { + _enum: { + heartbeat: { + heartbeat: 'PalletImOnlineHeartbeat', + signature: 'PalletImOnlineSr25519AppSr25519Signature' + } + } + }, + /** + * Lookup440: pallet_im_online::Heartbeat + **/ + PalletImOnlineHeartbeat: { + blockNumber: 'u32', + networkState: 'SpCoreOffchainOpaqueNetworkState', + sessionIndex: 'u32', + authorityIndex: 'u32', + validatorsLen: 'u32' + }, + /** + * Lookup441: sp_core::offchain::OpaqueNetworkState + **/ + SpCoreOffchainOpaqueNetworkState: { + peerId: 'Bytes', + externalAddresses: 'Vec' + }, + /** + * Lookup445: pallet_im_online::sr25519::app_sr25519::Signature + **/ + PalletImOnlineSr25519AppSr25519Signature: 'SpCoreSr25519Signature', + /** + * Lookup446: sp_core::sr25519::Signature + **/ + SpCoreSr25519Signature: '[u8;64]', + /** + * Lookup447: pallet_sudo::Call + **/ + PalletSudoCall: { + _enum: { + sudo: { + call: 'Call', + }, + sudo_unchecked_weight: { + call: 'Call', + weight: 'u64', + }, + set_key: { + _alias: { + new_: 'new', + }, + new_: 'MultiAddress', + }, + sudo_as: { + who: 'MultiAddress', + call: 'Call' + } + } + }, + /** + * Lookup448: pallet_asset::Call + **/ + PalletAssetCall: { + _enum: { + register_ticker: { + ticker: 'PolymeshPrimitivesTicker', + }, + accept_ticker_transfer: { + authId: 'u64', + }, + accept_asset_ownership_transfer: { + authId: 'u64', + }, + create_asset: { + name: 'Bytes', + ticker: 'PolymeshPrimitivesTicker', + divisible: 'bool', + assetType: 'PolymeshPrimitivesAssetAssetType', + identifiers: 'Vec', + fundingRound: 'Option', + disableIu: 'bool', + }, + freeze: { + ticker: 'PolymeshPrimitivesTicker', + }, + unfreeze: { + ticker: 'PolymeshPrimitivesTicker', + }, + rename_asset: { + ticker: 'PolymeshPrimitivesTicker', + name: 'Bytes', + }, + issue: { + ticker: 'PolymeshPrimitivesTicker', + amount: 'u128', + }, + redeem: { + ticker: 'PolymeshPrimitivesTicker', + value: 'u128', + }, + make_divisible: { + ticker: 'PolymeshPrimitivesTicker', + }, + add_documents: { + docs: 'Vec', + ticker: 'PolymeshPrimitivesTicker', + }, + remove_documents: { + ids: 'Vec', + ticker: 'PolymeshPrimitivesTicker', + }, + set_funding_round: { + ticker: 'PolymeshPrimitivesTicker', + name: 'Bytes', + }, + update_identifiers: { + ticker: 'PolymeshPrimitivesTicker', + identifiers: 'Vec', + }, + claim_classic_ticker: { + ticker: 'PolymeshPrimitivesTicker', + ethereumSignature: 'PolymeshPrimitivesEthereumEcdsaSignature', + }, + reserve_classic_ticker: { + classicTickerImport: 'PalletAssetClassicTickerImport', + contractDid: 'PolymeshPrimitivesIdentityId', + config: 'PalletAssetTickerRegistrationConfig', + }, + controller_transfer: { + ticker: 'PolymeshPrimitivesTicker', + value: 'u128', + fromPortfolio: 'PolymeshPrimitivesIdentityIdPortfolioId', + }, + register_custom_asset_type: { + ty: 'Bytes' + } + } + }, + /** + * Lookup451: polymesh_primitives::ethereum::EcdsaSignature + **/ + PolymeshPrimitivesEthereumEcdsaSignature: '[u8;65]', + /** + * Lookup453: pallet_asset::ClassicTickerImport + **/ + PalletAssetClassicTickerImport: { + ethOwner: 'PolymeshPrimitivesEthereumEthereumAddress', + ticker: 'PolymeshPrimitivesTicker', + isContract: 'bool', + isCreated: 'bool' + }, + /** + * Lookup454: pallet_asset::TickerRegistrationConfig + **/ + PalletAssetTickerRegistrationConfig: { + maxTickerLength: 'u8', + registrationLength: 'Option' + }, + /** + * Lookup455: pallet_corporate_actions::distribution::Call + **/ + PalletCorporateActionsDistributionCall: { + _enum: { + distribute: { + caId: 'PalletCorporateActionsCaId', + portfolio: 'Option', + currency: 'PolymeshPrimitivesTicker', + perShare: 'u128', + amount: 'u128', + paymentAt: 'u64', + expiresAt: 'Option', + }, + claim: { + caId: 'PalletCorporateActionsCaId', + }, + push_benefit: { + caId: 'PalletCorporateActionsCaId', + holder: 'PolymeshPrimitivesIdentityId', + }, + reclaim: { + caId: 'PalletCorporateActionsCaId', + }, + remove_distribution: { + caId: 'PalletCorporateActionsCaId' + } + } + }, + /** + * Lookup457: pallet_asset::checkpoint::Call + **/ + PalletAssetCheckpointCall: { + _enum: { + create_checkpoint: { + ticker: 'PolymeshPrimitivesTicker', + }, + set_schedules_max_complexity: { + maxComplexity: 'u64', + }, + create_schedule: { + ticker: 'PolymeshPrimitivesTicker', + schedule: 'PalletAssetCheckpointScheduleSpec', + }, + remove_schedule: { + ticker: 'PolymeshPrimitivesTicker', + id: 'u64' + } + } + }, + /** + * Lookup458: pallet_asset::checkpoint::ScheduleSpec + **/ + PalletAssetCheckpointScheduleSpec: { + start: 'Option', + period: 'PolymeshPrimitivesCalendarCalendarPeriod', + remaining: 'u32' + }, + /** + * Lookup459: pallet_compliance_manager::Call + **/ + PalletComplianceManagerCall: { + _enum: { + add_compliance_requirement: { + ticker: 'PolymeshPrimitivesTicker', + senderConditions: 'Vec', + receiverConditions: 'Vec', + }, + remove_compliance_requirement: { + ticker: 'PolymeshPrimitivesTicker', + id: 'u32', + }, + replace_asset_compliance: { + ticker: 'PolymeshPrimitivesTicker', + assetCompliance: 'Vec', + }, + reset_asset_compliance: { + ticker: 'PolymeshPrimitivesTicker', + }, + pause_asset_compliance: { + ticker: 'PolymeshPrimitivesTicker', + }, + resume_asset_compliance: { + ticker: 'PolymeshPrimitivesTicker', + }, + add_default_trusted_claim_issuer: { + ticker: 'PolymeshPrimitivesTicker', + issuer: 'PolymeshPrimitivesConditionTrustedIssuer', + }, + remove_default_trusted_claim_issuer: { + ticker: 'PolymeshPrimitivesTicker', + issuer: 'PolymeshPrimitivesIdentityId', + }, + change_compliance_requirement: { + ticker: 'PolymeshPrimitivesTicker', + newReq: 'PolymeshPrimitivesComplianceManagerComplianceRequirement' + } + } + }, + /** + * Lookup460: pallet_corporate_actions::Call + **/ + PalletCorporateActionsCall: { + _enum: { + set_max_details_length: { + length: 'u32', + }, + set_default_targets: { + ticker: 'PolymeshPrimitivesTicker', + targets: 'PalletCorporateActionsTargetIdentities', + }, + set_default_withholding_tax: { + ticker: 'PolymeshPrimitivesTicker', + tax: 'Permill', + }, + set_did_withholding_tax: { + ticker: 'PolymeshPrimitivesTicker', + taxedDid: 'PolymeshPrimitivesIdentityId', + tax: 'Option', + }, + initiate_corporate_action: { + ticker: 'PolymeshPrimitivesTicker', + kind: 'PalletCorporateActionsCaKind', + declDate: 'u64', + recordDate: 'Option', + details: 'Bytes', + targets: 'Option', + defaultWithholdingTax: 'Option', + withholdingTax: 'Option>', + }, + link_ca_doc: { + id: 'PalletCorporateActionsCaId', + docs: 'Vec', + }, + remove_ca: { + caId: 'PalletCorporateActionsCaId', + }, + change_record_date: { + caId: 'PalletCorporateActionsCaId', + recordDate: 'Option' + } + } + }, + /** + * Lookup462: pallet_corporate_actions::RecordDateSpec + **/ + PalletCorporateActionsRecordDateSpec: { + _enum: { + Scheduled: 'u64', + ExistingSchedule: 'u64', + Existing: 'u64' + } + }, + /** + * Lookup465: pallet_corporate_actions::ballot::Call + **/ + PalletCorporateActionsBallotCall: { + _enum: { + attach_ballot: { + caId: 'PalletCorporateActionsCaId', + range: 'PalletCorporateActionsBallotBallotTimeRange', + meta: 'PalletCorporateActionsBallotBallotMeta', + rcv: 'bool', + }, + vote: { + caId: 'PalletCorporateActionsCaId', + votes: 'Vec', + }, + change_end: { + caId: 'PalletCorporateActionsCaId', + end: 'u64', + }, + change_meta: { + caId: 'PalletCorporateActionsCaId', + meta: 'PalletCorporateActionsBallotBallotMeta', + }, + change_rcv: { + caId: 'PalletCorporateActionsCaId', + rcv: 'bool', + }, + remove_ballot: { + caId: 'PalletCorporateActionsCaId' + } + } + }, + /** + * Lookup466: pallet_pips::Call + **/ + PalletPipsCall: { + _enum: { + set_prune_historical_pips: { + prune: 'bool', + }, + set_min_proposal_deposit: { + deposit: 'u128', + }, + set_default_enactment_period: { + duration: 'u32', + }, + set_pending_pip_expiry: { + expiry: 'PolymeshCommonUtilitiesMaybeBlock', + }, + set_max_pip_skip_count: { + max: 'u8', + }, + set_active_pip_limit: { + limit: 'u32', + }, + propose: { + proposal: 'Call', + deposit: 'u128', + url: 'Option', + description: 'Option', + }, + vote: { + id: 'u32', + ayeOrNay: 'bool', + deposit: 'u128', + }, + approve_committee_proposal: { + id: 'u32', + }, + reject_proposal: { + id: 'u32', + }, + prune_proposal: { + id: 'u32', + }, + reschedule_execution: { + id: 'u32', + until: 'Option', + }, + clear_snapshot: 'Null', + snapshot: 'Null', + enact_snapshot_results: { + results: 'Vec<(u32,PalletPipsSnapshotResult)>', + }, + execute_scheduled_pip: { + id: 'u32', + }, + expire_scheduled_pip: { + did: 'PolymeshPrimitivesIdentityId', + id: 'u32' + } + } + }, + /** + * Lookup469: pallet_pips::SnapshotResult + **/ + PalletPipsSnapshotResult: { + _enum: ['Approve', 'Reject', 'Skip'] + }, + /** + * Lookup470: pallet_portfolio::Call + **/ + PalletPortfolioCall: { + _enum: { + create_portfolio: { + name: 'Bytes', + }, + delete_portfolio: { + num: 'u64', + }, + move_portfolio_funds: { + from: 'PolymeshPrimitivesIdentityIdPortfolioId', + to: 'PolymeshPrimitivesIdentityIdPortfolioId', + items: 'Vec', + }, + rename_portfolio: { + num: 'u64', + toName: 'Bytes', + }, + quit_portfolio_custody: { + pid: 'PolymeshPrimitivesIdentityIdPortfolioId', + }, + accept_portfolio_custody: { + authId: 'u64' + } + } + }, + /** + * Lookup472: pallet_portfolio::MovePortfolioItem + **/ + PalletPortfolioMovePortfolioItem: { + ticker: 'PolymeshPrimitivesTicker', + amount: 'u128', + memo: 'Option' + }, + /** + * Lookup473: pallet_protocol_fee::Call + **/ + PalletProtocolFeeCall: { + _enum: { + change_coefficient: { + coefficient: 'PolymeshPrimitivesPosRatio', + }, + change_base_fee: { + op: 'PolymeshCommonUtilitiesProtocolFeeProtocolOp', + baseFee: 'u128' + } + } + }, + /** + * Lookup474: polymesh_common_utilities::protocol_fee::ProtocolOp + **/ + PolymeshCommonUtilitiesProtocolFeeProtocolOp: { + _enum: ['AssetRegisterTicker', 'AssetIssue', 'AssetAddDocuments', 'AssetCreateAsset', 'CheckpointCreateSchedule', 'ComplianceManagerAddComplianceRequirement', 'IdentityCddRegisterDid', 'IdentityAddClaim', 'IdentityAddSecondaryKeysWithAuthorization', 'PipsPropose', 'ContractsPutCode', 'CorporateBallotAttachBallot', 'CapitalDistributionDistribute'] + }, + /** + * Lookup475: pallet_scheduler::pallet::Call + **/ + PalletSchedulerCall: { + _enum: { + schedule: { + when: 'u32', + maybePeriodic: 'Option<(u32,u32)>', + priority: 'u8', + call: 'Call', + }, + cancel: { + when: 'u32', + index: 'u32', + }, + schedule_named: { + id: 'Bytes', + when: 'u32', + maybePeriodic: 'Option<(u32,u32)>', + priority: 'u8', + call: 'Call', + }, + cancel_named: { + id: 'Bytes', + }, + schedule_after: { + after: 'u32', + maybePeriodic: 'Option<(u32,u32)>', + priority: 'u8', + call: 'Call', + }, + schedule_named_after: { + id: 'Bytes', + after: 'u32', + maybePeriodic: 'Option<(u32,u32)>', + priority: 'u8', + call: 'Call' + } + } + }, + /** + * Lookup477: pallet_settlement::Call + **/ + PalletSettlementCall: { + _enum: { + create_venue: { + details: 'Bytes', + signers: 'Vec', + typ: 'PalletSettlementVenueType', + }, + update_venue_details: { + id: 'u64', + details: 'Bytes', + }, + update_venue_type: { + id: 'u64', + typ: 'PalletSettlementVenueType', + }, + add_instruction: { + venueId: 'u64', + settlementType: 'PalletSettlementSettlementType', + tradeDate: 'Option', + valueDate: 'Option', + legs: 'Vec', + }, + add_and_affirm_instruction: { + venueId: 'u64', + settlementType: 'PalletSettlementSettlementType', + tradeDate: 'Option', + valueDate: 'Option', + legs: 'Vec', + portfolios: 'Vec', + }, + affirm_instruction: { + id: 'u64', + portfolios: 'Vec', + maxLegsCount: 'u32', + }, + withdraw_affirmation: { + id: 'u64', + portfolios: 'Vec', + maxLegsCount: 'u32', + }, + reject_instruction: { + id: 'u64', + portfolio: 'PolymeshPrimitivesIdentityIdPortfolioId', + numOfLegs: 'u32', + }, + affirm_with_receipts: { + id: 'u64', + receiptDetails: 'Vec', + portfolios: 'Vec', + maxLegsCount: 'u32', + }, + claim_receipt: { + id: 'u64', + receiptDetails: 'PalletSettlementReceiptDetails', + }, + unclaim_receipt: { + instructionId: 'u64', + legId: 'u64', + }, + set_venue_filtering: { + ticker: 'PolymeshPrimitivesTicker', + enabled: 'bool', + }, + allow_venues: { + ticker: 'PolymeshPrimitivesTicker', + venues: 'Vec', + }, + disallow_venues: { + ticker: 'PolymeshPrimitivesTicker', + venues: 'Vec', + }, + change_receipt_validity: { + receiptUid: 'u64', + validity: 'bool', + }, + execute_scheduled_instruction: { + id: 'u64', + legsCount: 'u32', + }, + reschedule_instruction: { + id: 'u64' + } + } + }, + /** + * Lookup479: pallet_settlement::ReceiptDetails + **/ + PalletSettlementReceiptDetails: { + receiptUid: 'u64', + legId: 'u64', + signer: 'AccountId32', + signature: 'SpRuntimeMultiSignature', + metadata: 'Bytes' + }, + /** + * Lookup480: sp_runtime::MultiSignature + **/ + SpRuntimeMultiSignature: { + _enum: { + Ed25519: 'SpCoreEd25519Signature', + Sr25519: 'SpCoreSr25519Signature', + Ecdsa: 'SpCoreEcdsaSignature' + } + }, + /** + * Lookup481: sp_core::ecdsa::Signature + **/ + SpCoreEcdsaSignature: '[u8;65]', + /** + * Lookup482: pallet_statistics::Call + **/ + PalletStatisticsCall: { + _enum: { + add_transfer_manager: { + ticker: 'PolymeshPrimitivesTicker', + newTransferManager: 'PolymeshPrimitivesStatisticsTransferManager', + }, + remove_transfer_manager: { + ticker: 'PolymeshPrimitivesTicker', + transferManager: 'PolymeshPrimitivesStatisticsTransferManager', + }, + add_exempted_entities: { + ticker: 'PolymeshPrimitivesTicker', + transferManager: 'PolymeshPrimitivesStatisticsTransferManager', + exemptedEntities: 'Vec', + }, + remove_exempted_entities: { + ticker: 'PolymeshPrimitivesTicker', + transferManager: 'PolymeshPrimitivesStatisticsTransferManager', + entities: 'Vec' + } + } + }, + /** + * Lookup483: pallet_sto::Call + **/ + PalletStoCall: { + _enum: { + create_fundraiser: { + offeringPortfolio: 'PolymeshPrimitivesIdentityIdPortfolioId', + offeringAsset: 'PolymeshPrimitivesTicker', + raisingPortfolio: 'PolymeshPrimitivesIdentityIdPortfolioId', + raisingAsset: 'PolymeshPrimitivesTicker', + tiers: 'Vec', + venueId: 'u64', + start: 'Option', + end: 'Option', + minimumInvestment: 'u128', + fundraiserName: 'Bytes', + }, + invest: { + investmentPortfolio: 'PolymeshPrimitivesIdentityIdPortfolioId', + fundingPortfolio: 'PolymeshPrimitivesIdentityIdPortfolioId', + offeringAsset: 'PolymeshPrimitivesTicker', + id: 'u64', + purchaseAmount: 'u128', + maxPrice: 'Option', + receipt: 'Option', + }, + freeze_fundraiser: { + offeringAsset: 'PolymeshPrimitivesTicker', + id: 'u64', + }, + unfreeze_fundraiser: { + offeringAsset: 'PolymeshPrimitivesTicker', + id: 'u64', + }, + modify_fundraiser_window: { + offeringAsset: 'PolymeshPrimitivesTicker', + id: 'u64', + start: 'u64', + end: 'Option', + }, + stop: { + offeringAsset: 'PolymeshPrimitivesTicker', + id: 'u64' + } + } + }, + /** + * Lookup485: pallet_sto::PriceTier + **/ + PalletStoPriceTier: { + total: 'u128', + price: 'u128' + }, + /** + * Lookup488: pallet_treasury::Call + **/ + PalletTreasuryCall: { + _enum: { + disbursement: { + beneficiaries: 'Vec', + }, + reimbursement: { + amount: 'u128' + } + } + }, + /** + * Lookup490: polymesh_primitives::Beneficiary + **/ + PolymeshPrimitivesBeneficiary: { + id: 'PolymeshPrimitivesIdentityId', + amount: 'u128' + }, + /** + * Lookup491: pallet_utility::Call + **/ + PalletUtilityCall: { + _enum: { + batch: { + calls: 'Vec', + }, + batch_atomic: { + calls: 'Vec', + }, + batch_optimistic: { + calls: 'Vec', + }, + relay_tx: { + target: 'AccountId32', + signature: 'SpRuntimeMultiSignature', + call: 'PalletUtilityUniqueCall' + } + } + }, + /** + * Lookup493: pallet_utility::UniqueCall + **/ + PalletUtilityUniqueCall: { + nonce: 'u64', + call: 'Call' + }, + /** + * Lookup494: pallet_base::Call + **/ + PalletBaseCall: 'Null', + /** + * Lookup495: pallet_external_agents::Call + **/ + PalletExternalAgentsCall: { + _enum: { + create_group: { + ticker: 'PolymeshPrimitivesTicker', + perms: 'PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions', + }, + set_group_permissions: { + ticker: 'PolymeshPrimitivesTicker', + id: 'u32', + perms: 'PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions', + }, + remove_agent: { + ticker: 'PolymeshPrimitivesTicker', + agent: 'PolymeshPrimitivesIdentityId', + }, + abdicate: { + ticker: 'PolymeshPrimitivesTicker', + }, + change_group: { + ticker: 'PolymeshPrimitivesTicker', + agent: 'PolymeshPrimitivesIdentityId', + group: 'PolymeshPrimitivesAgentAgentGroup', + }, + accept_become_agent: { + authId: 'u64' + } + } + }, + /** + * Lookup496: pallet_relayer::Call + **/ + PalletRelayerCall: { + _enum: { + set_paying_key: { + userKey: 'AccountId32', + polyxLimit: 'u128', + }, + accept_paying_key: { + authId: 'u64', + }, + remove_paying_key: { + userKey: 'AccountId32', + payingKey: 'AccountId32', + }, + update_polyx_limit: { + userKey: 'AccountId32', + polyxLimit: 'u128', + }, + increase_polyx_limit: { + userKey: 'AccountId32', + amount: 'u128', + }, + decrease_polyx_limit: { + userKey: 'AccountId32', + amount: 'u128' + } + } + }, + /** + * Lookup497: pallet_rewards::Call + **/ + PalletRewardsCall: { + _enum: { + claim_itn_reward: { + rewardAddress: 'AccountId32', + itnAddress: 'AccountId32', + signature: 'SpRuntimeMultiSignature', + }, + set_itn_reward_status: { + itnAddress: 'AccountId32', + status: 'PalletRewardsItnRewardStatus' + } + } + }, + /** + * Lookup498: pallet_rewards::ItnRewardStatus + **/ + PalletRewardsItnRewardStatus: { + _enum: { + Unclaimed: 'u128', + Claimed: 'Null' + } + }, + /** + * Lookup499: pallet_test_utils::Call + **/ + PalletTestUtilsCall: { + _enum: { + register_did: { + uid: 'PolymeshPrimitivesCddIdInvestorUid', + secondaryKeys: 'Vec', + }, + mock_cdd_register_did: { + targetAccount: 'AccountId32', + }, + get_my_did: 'Null', + get_cdd_of: { + of: 'AccountId32' + } + } + }, + /** + * Lookup500: pallet_committee::PolymeshVotes + **/ + PalletCommitteePolymeshVotes: { + index: 'u32', + ayes: 'Vec', + nays: 'Vec', + expiry: 'PolymeshCommonUtilitiesMaybeBlock' + }, + /** + * Lookup502: pallet_committee::Error + **/ + PalletCommitteeError: { + _enum: ['DuplicateVote', 'NotAMember', 'NoSuchProposal', 'ProposalExpired', 'DuplicateProposal', 'MismatchedVotingIndex', 'InvalidProportion', 'FirstVoteReject', 'ProposalsLimitReached'] + }, + /** + * Lookup512: pallet_multisig::ProposalDetails + **/ + PalletMultisigProposalDetails: { + approvals: 'u64', + rejections: 'u64', + status: 'PalletMultisigProposalStatus', + expiry: 'Option', + autoClose: 'bool' + }, + /** + * Lookup513: pallet_multisig::ProposalStatus + **/ + PalletMultisigProposalStatus: { + _enum: ['Invalid', 'ActiveOrExpired', 'ExecutionSuccessful', 'ExecutionFailed', 'Rejected'] + }, + /** + * Lookup514: pallet_multisig::Error + **/ + PalletMultisigError: { + _enum: ['CddMissing', 'ProposalMissing', 'DecodingError', 'NoSigners', 'RequiredSignaturesOutOfBounds', 'NotASigner', 'NoSuchMultisig', 'NotEnoughSigners', 'NonceOverflow', 'AlreadyVoted', 'AlreadyASigner', 'FailedToChargeFee', 'IdentityNotCreator', 'ChangeNotAllowed', 'SignerAlreadyLinked', 'MissingCurrentIdentity', 'NotPrimaryKey', 'ProposalAlreadyRejected', 'ProposalExpired', 'ProposalAlreadyExecuted', 'MultisigMissingIdentity', 'FailedToSchedule', 'TooManySigners'] + }, + /** + * Lookup516: pallet_bridge::BridgeTxDetail + **/ + PalletBridgeBridgeTxDetail: { + amount: 'u128', + status: 'PalletBridgeBridgeTxStatus', + executionBlock: 'u32', + txHash: 'H256' + }, + /** + * Lookup517: pallet_bridge::BridgeTxStatus + **/ + PalletBridgeBridgeTxStatus: { + _enum: { + Absent: 'Null', + Pending: 'u8', + Frozen: 'Null', + Timelocked: 'Null', + Handled: 'Null' + } + }, + /** + * Lookup520: pallet_bridge::Error + **/ + PalletBridgeError: { + _enum: ['ControllerNotSet', 'BadCaller', 'BadAdmin', 'NoValidCdd', 'ProposalAlreadyHandled', 'Unauthorized', 'Frozen', 'NotFrozen', 'FrozenTx', 'BridgeLimitReached', 'Overflow', 'DivisionByZero', 'TimelockedTx'] + }, + /** + * Lookup521: pallet_staking::StakingLedger + **/ + PalletStakingStakingLedger: { + stash: 'AccountId32', + total: 'Compact', + active: 'Compact', + unlocking: 'Vec', + claimedRewards: 'Vec' + }, + /** + * Lookup523: pallet_staking::UnlockChunk + **/ + PalletStakingUnlockChunk: { + value: 'Compact', + era: 'Compact' + }, + /** + * Lookup524: pallet_staking::Nominations + **/ + PalletStakingNominations: { + targets: 'Vec', + submittedIn: 'u32', + suppressed: 'bool' + }, + /** + * Lookup525: pallet_staking::ActiveEraInfo + **/ + PalletStakingActiveEraInfo: { + index: 'u32', + start: 'Option' + }, + /** + * Lookup527: pallet_staking::EraRewardPoints + **/ + PalletStakingEraRewardPoints: { + total: 'u32', + individual: 'BTreeMap' + }, + /** + * Lookup530: pallet_staking::Forcing + **/ + PalletStakingForcing: { + _enum: ['NotForcing', 'ForceNew', 'ForceNone', 'ForceAlways'] + }, + /** + * Lookup532: pallet_staking::UnappliedSlash + **/ + PalletStakingUnappliedSlash: { + validator: 'AccountId32', + own: 'u128', + others: 'Vec<(AccountId32,u128)>', + reporters: 'Vec', + payout: 'u128' + }, + /** + * Lookup536: pallet_staking::slashing::SlashingSpans + **/ + PalletStakingSlashingSlashingSpans: { + spanIndex: 'u32', + lastStart: 'u32', + lastNonzeroSlash: 'u32', + prior: 'Vec' + }, + /** + * Lookup537: pallet_staking::slashing::SpanRecord + **/ + PalletStakingSlashingSpanRecord: { + slashed: 'u128', + paidOut: 'u128' + }, + /** + * Lookup538: pallet_staking::ElectionResult + **/ + PalletStakingElectionResult: { + electedStashes: 'Vec', + exposures: 'Vec<(AccountId32,PalletStakingExposure)>', + compute: 'PalletStakingElectionCompute' + }, + /** + * Lookup539: pallet_staking::ElectionStatus + **/ + PalletStakingElectionStatus: { + _enum: { + Closed: 'Null', + Open: 'u32' + } + }, + /** + * Lookup540: pallet_staking::PermissionedIdentityPrefs + **/ + PalletStakingPermissionedIdentityPrefs: { + intendedCount: 'u32', + runningCount: 'u32' + }, + /** + * Lookup541: pallet_staking::Releases + **/ + PalletStakingReleases: { + _enum: ['V1_0_0Ancient', 'V2_0_0', 'V3_0_0', 'V4_0_0', 'V5_0_0', 'V6_0_0', 'V6_0_1', 'V7_0_0'] + }, + /** + * Lookup542: pallet_staking::Error + **/ + PalletStakingError: { + _enum: ['NotController', 'NotStash', 'AlreadyBonded', 'AlreadyPaired', 'EmptyTargets', 'InvalidSlashIndex', 'InsufficientValue', 'NoMoreChunks', 'NoUnlockChunk', 'FundedTarget', 'InvalidEraToReward', 'NotSortedAndUnique', 'AlreadyClaimed', 'OffchainElectionEarlySubmission', 'OffchainElectionWeakSubmission', 'SnapshotUnavailable', 'OffchainElectionBogusWinnerCount', 'OffchainElectionBogusWinner', 'OffchainElectionBogusCompact', 'OffchainElectionBogusNominator', 'OffchainElectionBogusNomination', 'OffchainElectionSlashedNomination', 'OffchainElectionBogusSelfVote', 'OffchainElectionBogusEdge', 'OffchainElectionBogusScore', 'OffchainElectionBogusElectionSize', 'CallNotAllowed', 'IncorrectSlashingSpans', 'AlreadyExists', 'NotExists', 'NoChange', 'InvalidValidatorIdentity', 'InvalidValidatorCommission', 'StashIdentityDoesNotExist', 'StashIdentityNotPermissioned', 'StashIdentityNotCDDed', 'HitIntendedValidatorCount', 'IntendedCountIsExceedingConsensusLimit', 'BondTooSmall', 'BadState', 'TooManyTargets', 'BadTarget'] + }, + /** + * Lookup543: sp_staking::offence::OffenceDetails + **/ + SpStakingOffenceOffenceDetails: { + offender: '(AccountId32,PalletStakingExposure)', + reporters: 'Vec' + }, + /** + * Lookup548: sp_core::crypto::KeyTypeId + **/ + SpCoreCryptoKeyTypeId: '[u8;4]', + /** + * Lookup549: pallet_session::pallet::Error + **/ + PalletSessionError: { + _enum: ['InvalidProof', 'NoAssociatedValidatorId', 'DuplicatedKey', 'NoKeys', 'NoAccount'] + }, + /** + * Lookup550: pallet_grandpa::StoredState + **/ + PalletGrandpaStoredState: { + _enum: { + Live: 'Null', + PendingPause: { + scheduledAt: 'u32', + delay: 'u32', + }, + Paused: 'Null', + PendingResume: { + scheduledAt: 'u32', + delay: 'u32' + } + } + }, + /** + * Lookup551: pallet_grandpa::StoredPendingChange + **/ + PalletGrandpaStoredPendingChange: { + scheduledAt: 'u32', + delay: 'u32', + nextAuthorities: 'Vec<(SpFinalityGrandpaAppPublic,u64)>', + forced: 'Option' + }, + /** + * Lookup553: pallet_grandpa::pallet::Error + **/ + PalletGrandpaError: { + _enum: ['PauseFailed', 'ResumeFailed', 'ChangePending', 'TooSoon', 'InvalidKeyOwnershipProof', 'InvalidEquivocationProof', 'DuplicateOffenceReport'] + }, + /** + * Lookup557: pallet_im_online::BoundedOpaqueNetworkState + **/ + PalletImOnlineBoundedOpaqueNetworkState: { + peerId: 'Bytes', + externalAddresses: 'Vec' + }, + /** + * Lookup561: pallet_im_online::pallet::Error + **/ + PalletImOnlineError: { + _enum: ['InvalidKey', 'DuplicatedHeartbeat'] + }, + /** + * Lookup562: pallet_sudo::Error + **/ + PalletSudoError: { + _enum: ['RequireSudo'] + }, + /** + * Lookup563: pallet_asset::TickerRegistration + **/ + PalletAssetTickerRegistration: { + owner: 'PolymeshPrimitivesIdentityId', + expiry: 'Option' + }, + /** + * Lookup564: pallet_asset::SecurityToken + **/ + PalletAssetSecurityToken: { + totalSupply: 'u128', + ownerDid: 'PolymeshPrimitivesIdentityId', + divisible: 'bool', + assetType: 'PolymeshPrimitivesAssetAssetType' + }, + /** + * Lookup568: pallet_asset::AssetOwnershipRelation + **/ + PalletAssetAssetOwnershipRelation: { + _enum: ['NotOwned', 'TickerOwned', 'AssetOwned'] + }, + /** + * Lookup570: pallet_asset::ClassicTickerRegistration + **/ + PalletAssetClassicTickerRegistration: { + ethOwner: 'PolymeshPrimitivesEthereumEthereumAddress', + isCreated: 'bool' + }, + /** + * Lookup573: pallet_asset::Error + **/ + PalletAssetError: { + _enum: ['Unauthorized', 'AlreadyArchived', 'AlreadyUnArchived', 'ExtensionAlreadyPresent', 'AssetAlreadyCreated', 'TickerTooLong', 'TickerNotAscii', 'TickerAlreadyRegistered', 'TotalSupplyAboveLimit', 'NoSuchAsset', 'AlreadyFrozen', 'NotAnOwner', 'BalanceOverflow', 'TotalSupplyOverflow', 'InvalidGranularity', 'NotFrozen', 'InvalidTransfer', 'InsufficientBalance', 'AssetAlreadyDivisible', 'MaximumTMExtensionLimitReached', 'IncompatibleExtensionVersion', 'InvalidEthereumSignature', 'NoSuchClassicTicker', 'TickerRegistrationExpired', 'SenderSameAsReceiver', 'NoSuchDoc', 'MaxLengthOfAssetNameExceeded', 'FundingRoundNameMaxLengthExceeded', 'InvalidAssetIdentifier', 'InvestorUniquenessClaimNotAllowed', 'InvalidCustomAssetTypeId'] + }, + /** + * Lookup576: pallet_corporate_actions::distribution::Error + **/ + PalletCorporateActionsDistributionError: { + _enum: ['CANotBenefit', 'AlreadyExists', 'ExpiryBeforePayment', 'DistributingAsset', 'HolderAlreadyPaid', 'NoSuchDistribution', 'CannotClaimBeforeStart', 'CannotClaimAfterExpiry', 'BalancePerShareProductOverflowed', 'NotDistributionCreator', 'AlreadyReclaimed', 'NotExpired', 'DistributionStarted', 'InsufficientRemainingAmount'] + }, + /** + * Lookup583: pallet_asset::checkpoint::Error + **/ + PalletAssetCheckpointError: { + _enum: ['NoSuchSchedule', 'ScheduleNotRemovable', 'FailedToComputeNextCheckpoint', 'ScheduleDurationTooShort', 'SchedulesTooComplex'] + }, + /** + * Lookup584: polymesh_primitives::compliance_manager::AssetCompliance + **/ + PolymeshPrimitivesComplianceManagerAssetCompliance: { + paused: 'bool', + requirements: 'Vec' + }, + /** + * Lookup586: pallet_compliance_manager::Error + **/ + PalletComplianceManagerError: { + _enum: ['Unauthorized', 'DidNotExist', 'InvalidComplianceRequirementId', 'IncorrectOperationOnTrustedIssuer', 'DuplicateComplianceRequirements', 'ComplianceRequirementTooComplex'] + }, + /** + * Lookup589: pallet_corporate_actions::Error + **/ + PalletCorporateActionsError: { + _enum: ['AuthNotCAATransfer', 'DetailsTooLong', 'DuplicateDidTax', 'TooManyDidTaxes', 'TooManyTargetIds', 'NoSuchCheckpointId', 'NoSuchCA', 'NoRecordDate', 'RecordDateAfterStart', 'DeclDateAfterRecordDate', 'DeclDateInFuture', 'NotTargetedByCA'] + }, + /** + * Lookup591: pallet_corporate_actions::ballot::Error + **/ + PalletCorporateActionsBallotError: { + _enum: ['CANotNotice', 'AlreadyExists', 'NoSuchBallot', 'StartAfterEnd', 'NowAfterEnd', 'NumberOfChoicesOverflow', 'VotingAlreadyStarted', 'VotingNotStarted', 'VotingAlreadyEnded', 'WrongVoteCount', 'InsufficientVotes', 'NoSuchRCVFallback', 'RCVSelfCycle', 'RCVNotAllowed'] + }, + /** + * Lookup592: pallet_permissions::Error + **/ + PalletPermissionsError: { + _enum: ['UnauthorizedCaller'] + }, + /** + * Lookup593: pallet_pips::PipsMetadata + **/ + PalletPipsPipsMetadata: { + id: 'u32', + url: 'Option', + description: 'Option', + createdAt: 'u32', + transactionVersion: 'u32', + expiry: 'PolymeshCommonUtilitiesMaybeBlock' + }, + /** + * Lookup595: pallet_pips::DepositInfo + **/ + PalletPipsDepositInfo: { + owner: 'AccountId32', + amount: 'u128' + }, + /** + * Lookup596: pallet_pips::Pip + **/ + PalletPipsPip: { + id: 'u32', + proposal: 'Call', + state: 'PalletPipsProposalState', + proposer: 'PalletPipsProposer' + }, + /** + * Lookup597: pallet_pips::VotingResult + **/ + PalletPipsVotingResult: { + ayesCount: 'u32', + ayesStake: 'u128', + naysCount: 'u32', + naysStake: 'u128' + }, + /** + * Lookup598: pallet_pips::Vote + **/ + PalletPipsVote: '(bool,u128)', + /** + * Lookup599: pallet_pips::SnapshotMetadata + **/ + PalletPipsSnapshotMetadata: { + createdAt: 'u32', + madeBy: 'AccountId32', + id: 'u32' + }, + /** + * Lookup601: pallet_pips::Error + **/ + PalletPipsError: { + _enum: ['RescheduleNotByReleaseCoordinator', 'NotFromCommunity', 'NotByCommittee', 'TooManyActivePips', 'IncorrectDeposit', 'InsufficientDeposit', 'NoSuchProposal', 'NotACommitteeMember', 'InvalidFutureBlockNumber', 'NumberOfVotesExceeded', 'StakeAmountOfVotesExceeded', 'MissingCurrentIdentity', 'IncorrectProposalState', 'CannotSkipPip', 'SnapshotResultTooLarge', 'SnapshotIdMismatch', 'ScheduledProposalDoesntExist', 'ProposalNotInScheduledState'] + }, + /** + * Lookup607: pallet_portfolio::Error + **/ + PalletPortfolioError: { + _enum: ['PortfolioDoesNotExist', 'InsufficientPortfolioBalance', 'DestinationIsSamePortfolio', 'PortfolioNameAlreadyInUse', 'SecondaryKeyNotAuthorizedForPortfolio', 'UnauthorizedCustodian', 'InsufficientTokensLocked', 'PortfolioNotEmpty', 'DifferentIdentityPortfolios'] + }, + /** + * Lookup608: pallet_protocol_fee::Error + **/ + PalletProtocolFeeError: { + _enum: ['InsufficientAccountBalance', 'UnHandledImbalances', 'InsufficientSubsidyBalance'] + }, + /** + * Lookup611: pallet_scheduler::ScheduledV2 + **/ + PalletSchedulerScheduledV2: { + maybeId: 'Option', + priority: 'u8', + call: 'Call', + maybePeriodic: 'Option<(u32,u32)>', + origin: 'PolymeshRuntimeDevelopRuntimeOriginCaller' + }, + /** + * Lookup612: polymesh_runtime_develop::runtime::OriginCaller + **/ + PolymeshRuntimeDevelopRuntimeOriginCaller: { + _enum: { + system: 'FrameSystemRawOrigin', + __Unused1: 'Null', + __Unused2: 'Null', + __Unused3: 'Null', + Void: 'SpCoreVoid', + __Unused5: 'Null', + __Unused6: 'Null', + __Unused7: 'Null', + __Unused8: 'Null', + PolymeshCommittee: 'PalletCommitteeRawOriginInstance1', + __Unused10: 'Null', + TechnicalCommittee: 'PalletCommitteeRawOriginInstance3', + __Unused12: 'Null', + UpgradeCommittee: 'PalletCommitteeRawOriginInstance4' + } + }, + /** + * Lookup613: frame_system::RawOrigin + **/ + FrameSystemRawOrigin: { + _enum: { + Root: 'Null', + Signed: 'AccountId32', + None: 'Null' + } + }, + /** + * Lookup614: pallet_committee::RawOrigin + **/ + PalletCommitteeRawOriginInstance1: { + _enum: ['Endorsed'] + }, + /** + * Lookup615: pallet_committee::RawOrigin + **/ + PalletCommitteeRawOriginInstance3: { + _enum: ['Endorsed'] + }, + /** + * Lookup616: pallet_committee::RawOrigin + **/ + PalletCommitteeRawOriginInstance4: { + _enum: ['Endorsed'] + }, + /** + * Lookup617: sp_core::Void + **/ + SpCoreVoid: 'Null', + /** + * Lookup618: pallet_scheduler::Releases + **/ + PalletSchedulerReleases: { + _enum: ['V1', 'V2'] + }, + /** + * Lookup619: pallet_scheduler::pallet::Error + **/ + PalletSchedulerError: { + _enum: ['FailedToSchedule', 'NotFound', 'TargetBlockNumberInPast', 'RescheduleNoChange'] + }, + /** + * Lookup620: pallet_settlement::Venue + **/ + PalletSettlementVenue: { + creator: 'PolymeshPrimitivesIdentityId', + venueType: 'PalletSettlementVenueType' + }, + /** + * Lookup623: pallet_settlement::Instruction + **/ + PalletSettlementInstruction: { + instructionId: 'u64', + venueId: 'u64', + status: 'PalletSettlementInstructionStatus', + settlementType: 'PalletSettlementSettlementType', + createdAt: 'Option', + tradeDate: 'Option', + valueDate: 'Option' + }, + /** + * Lookup624: pallet_settlement::InstructionStatus + **/ + PalletSettlementInstructionStatus: { + _enum: ['Unknown', 'Pending', 'Failed'] + }, + /** + * Lookup626: pallet_settlement::LegStatus + **/ + PalletSettlementLegStatus: { + _enum: { + PendingTokenLock: 'Null', + ExecutionPending: 'Null', + ExecutionToBeSkipped: '(AccountId32,u64)' + } + }, + /** + * Lookup628: pallet_settlement::AffirmationStatus + **/ + PalletSettlementAffirmationStatus: { + _enum: ['Unknown', 'Pending', 'Affirmed'] + }, + /** + * Lookup632: pallet_settlement::Error + **/ + PalletSettlementError: { + _enum: ['InvalidVenue', 'Unauthorized', 'NoPendingAffirm', 'InstructionNotAffirmed', 'InstructionNotPending', 'InstructionNotFailed', 'LegNotPending', 'UnauthorizedSigner', 'ReceiptAlreadyClaimed', 'ReceiptNotClaimed', 'UnauthorizedVenue', 'FailedToLockTokens', 'InstructionFailed', 'InstructionDatesInvalid', 'InstructionSettleBlockPassed', 'InvalidSignature', 'SameSenderReceiver', 'PortfolioMismatch', 'SettleOnPastBlock', 'NoPortfolioProvided', 'UnexpectedAffirmationStatus', 'FailedToSchedule', 'LegCountTooSmall', 'UnknownInstruction', 'InstructionHasTooManyLegs'] + }, + /** + * Lookup636: pallet_statistics::Error + **/ + PalletStatisticsError: { + _enum: ['DuplicateTransferManager', 'TransferManagerMissing', 'InvalidTransfer', 'TransferManagersLimitReached'] + }, + /** + * Lookup638: pallet_sto::Error + **/ + PalletStoError: { + _enum: ['Unauthorized', 'Overflow', 'InsufficientTokensRemaining', 'FundraiserNotFound', 'FundraiserNotLive', 'FundraiserClosed', 'FundraiserExpired', 'InvalidVenue', 'InvalidPriceTiers', 'InvalidOfferingWindow', 'MaxPriceExceeded', 'InvestmentAmountTooLow'] + }, + /** + * Lookup639: pallet_treasury::Error + **/ + PalletTreasuryError: { + _enum: ['InsufficientBalance'] + }, + /** + * Lookup640: pallet_utility::Error + **/ + PalletUtilityError: { + _enum: ['InvalidSignature', 'TargetCddMissing', 'InvalidNonce'] + }, + /** + * Lookup641: pallet_base::Error + **/ + PalletBaseError: { + _enum: ['TooLong', 'CounterOverflow'] + }, + /** + * Lookup643: pallet_external_agents::Error + **/ + PalletExternalAgentsError: { + _enum: ['NoSuchAG', 'UnauthorizedAgent', 'AlreadyAnAgent', 'NotAnAgent', 'RemovingLastFullAgent', 'SecondaryKeyNotAuthorizedForAsset'] + }, + /** + * Lookup644: pallet_relayer::Subsidy + **/ + PalletRelayerSubsidy: { + payingKey: 'AccountId32', + remaining: 'u128' + }, + /** + * Lookup645: pallet_relayer::Error + **/ + PalletRelayerError: { + _enum: ['UserKeyCddMissing', 'PayingKeyCddMissing', 'NoPayingKey', 'NotPayingKey', 'NotAuthorizedForPayingKey', 'NotAuthorizedForUserKey', 'Overflow'] + }, + /** + * Lookup646: pallet_rewards::Error + **/ + PalletRewardsError: { + _enum: ['UnknownItnAddress', 'ItnRewardAlreadyClaimed', 'InvalidSignature', 'UnableToCovertBalance'] + }, + /** + * Lookup647: pallet_test_utils::Error + **/ + PalletTestUtilsError: 'Null', + /** + * Lookup650: frame_system::extensions::check_spec_version::CheckSpecVersion + **/ + FrameSystemExtensionsCheckSpecVersion: 'Null', + /** + * Lookup651: frame_system::extensions::check_tx_version::CheckTxVersion + **/ + FrameSystemExtensionsCheckTxVersion: 'Null', + /** + * Lookup652: frame_system::extensions::check_genesis::CheckGenesis + **/ + FrameSystemExtensionsCheckGenesis: 'Null', + /** + * Lookup655: frame_system::extensions::check_nonce::CheckNonce + **/ + FrameSystemExtensionsCheckNonce: 'Compact', + /** + * Lookup656: polymesh_extensions::check_weight::CheckWeight + **/ + PolymeshExtensionsCheckWeight: 'FrameSystemExtensionsCheckWeight', + /** + * Lookup657: frame_system::extensions::check_weight::CheckWeight + **/ + FrameSystemExtensionsCheckWeight: 'Null', + /** + * Lookup658: pallet_transaction_payment::ChargeTransactionPayment + **/ + PalletTransactionPaymentChargeTransactionPayment: 'Compact', + /** + * Lookup659: pallet_permissions::StoreCallMetadata + **/ + PalletPermissionsStoreCallMetadata: 'Null', + /** + * Lookup660: polymesh_runtime_develop::runtime::Runtime + **/ + PolymeshRuntimeDevelopRuntime: 'Null' +}; diff --git a/scripts/cli/src/interfaces/types-lookup.ts b/scripts/cli/src/interfaces/types-lookup.ts new file mode 100644 index 0000000000..184bdc90c5 --- /dev/null +++ b/scripts/cli/src/interfaces/types-lookup.ts @@ -0,0 +1,4695 @@ +// Auto-generated via `yarn polkadot-types-from-defs`, do not edit +/* eslint-disable */ + +declare module '@polkadot/types/lookup' { + import type { BTreeMap, Bytes, Compact, Enum, Null, Option, Result, Struct, Text, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec'; + import type { ITuple } from '@polkadot/types-codec/types'; + import type { AccountId32, Call, H256, H512, MultiAddress, PerU16, Perbill, Percent, Permill } from '@polkadot/types/interfaces/runtime'; + import type { Event } from '@polkadot/types/interfaces/system'; + + /** @name FrameSystemAccountInfo (3) */ + export interface FrameSystemAccountInfo extends Struct { + readonly nonce: u32; + readonly consumers: u32; + readonly providers: u32; + readonly sufficients: u32; + readonly data: PolymeshCommonUtilitiesBalancesAccountData; + } + + /** @name PolymeshCommonUtilitiesBalancesAccountData (5) */ + export interface PolymeshCommonUtilitiesBalancesAccountData extends Struct { + readonly free: u128; + readonly reserved: u128; + readonly miscFrozen: u128; + readonly feeFrozen: u128; + } + + /** @name FrameSupportWeightsPerDispatchClassU64 (7) */ + export interface FrameSupportWeightsPerDispatchClassU64 extends Struct { + readonly normal: u64; + readonly operational: u64; + readonly mandatory: u64; + } + + /** @name SpRuntimeDigest (11) */ + export interface SpRuntimeDigest extends Struct { + readonly logs: Vec; + } + + /** @name SpRuntimeDigestDigestItem (13) */ + export interface SpRuntimeDigestDigestItem extends Enum { + readonly isOther: boolean; + readonly asOther: Bytes; + readonly isChangesTrieRoot: boolean; + readonly asChangesTrieRoot: H256; + readonly isConsensus: boolean; + readonly asConsensus: ITuple<[U8aFixed, Bytes]>; + readonly isSeal: boolean; + readonly asSeal: ITuple<[U8aFixed, Bytes]>; + readonly isPreRuntime: boolean; + readonly asPreRuntime: ITuple<[U8aFixed, Bytes]>; + readonly isChangesTrieSignal: boolean; + readonly asChangesTrieSignal: SpRuntimeDigestChangesTrieSignal; + readonly isRuntimeEnvironmentUpdated: boolean; + readonly type: 'Other' | 'ChangesTrieRoot' | 'Consensus' | 'Seal' | 'PreRuntime' | 'ChangesTrieSignal' | 'RuntimeEnvironmentUpdated'; + } + + /** @name SpRuntimeDigestChangesTrieSignal (15) */ + export interface SpRuntimeDigestChangesTrieSignal extends Enum { + readonly isNewConfiguration: boolean; + readonly asNewConfiguration: Option; + readonly type: 'NewConfiguration'; + } + + /** @name SpCoreChangesTrieChangesTrieConfiguration (17) */ + export interface SpCoreChangesTrieChangesTrieConfiguration extends Struct { + readonly digestInterval: u32; + readonly digestLevels: u32; + } + + /** @name FrameSystemEventRecord (19) */ + export interface FrameSystemEventRecord extends Struct { + readonly phase: FrameSystemPhase; + readonly event: Event; + readonly topics: Vec; + } + + /** @name FrameSystemEvent (21) */ + export interface FrameSystemEvent extends Enum { + readonly isExtrinsicSuccess: boolean; + readonly asExtrinsicSuccess: FrameSupportWeightsDispatchInfo; + readonly isExtrinsicFailed: boolean; + readonly asExtrinsicFailed: ITuple<[SpRuntimeDispatchError, FrameSupportWeightsDispatchInfo]>; + readonly isCodeUpdated: boolean; + readonly isNewAccount: boolean; + readonly asNewAccount: AccountId32; + readonly isKilledAccount: boolean; + readonly asKilledAccount: AccountId32; + readonly isRemarked: boolean; + readonly asRemarked: ITuple<[AccountId32, H256]>; + readonly type: 'ExtrinsicSuccess' | 'ExtrinsicFailed' | 'CodeUpdated' | 'NewAccount' | 'KilledAccount' | 'Remarked'; + } + + /** @name FrameSupportWeightsDispatchInfo (22) */ + export interface FrameSupportWeightsDispatchInfo extends Struct { + readonly weight: u64; + readonly class: FrameSupportWeightsDispatchClass; + readonly paysFee: FrameSupportWeightsPays; + } + + /** @name FrameSupportWeightsDispatchClass (23) */ + export interface FrameSupportWeightsDispatchClass extends Enum { + readonly isNormal: boolean; + readonly isOperational: boolean; + readonly isMandatory: boolean; + readonly type: 'Normal' | 'Operational' | 'Mandatory'; + } + + /** @name FrameSupportWeightsPays (24) */ + export interface FrameSupportWeightsPays extends Enum { + readonly isYes: boolean; + readonly isNo: boolean; + readonly type: 'Yes' | 'No'; + } + + /** @name SpRuntimeDispatchError (25) */ + export interface SpRuntimeDispatchError extends Enum { + readonly isOther: boolean; + readonly isCannotLookup: boolean; + readonly isBadOrigin: boolean; + readonly isModule: boolean; + readonly asModule: { + readonly index: u8; + readonly error: u8; + } & Struct; + readonly isConsumerRemaining: boolean; + readonly isNoProviders: boolean; + readonly isToken: boolean; + readonly asToken: SpRuntimeTokenError; + readonly isArithmetic: boolean; + readonly asArithmetic: SpRuntimeArithmeticError; + readonly type: 'Other' | 'CannotLookup' | 'BadOrigin' | 'Module' | 'ConsumerRemaining' | 'NoProviders' | 'Token' | 'Arithmetic'; + } + + /** @name SpRuntimeTokenError (26) */ + export interface SpRuntimeTokenError extends Enum { + readonly isNoFunds: boolean; + readonly isWouldDie: boolean; + readonly isBelowMinimum: boolean; + readonly isCannotCreate: boolean; + readonly isUnknownAsset: boolean; + readonly isFrozen: boolean; + readonly isUnsupported: boolean; + readonly type: 'NoFunds' | 'WouldDie' | 'BelowMinimum' | 'CannotCreate' | 'UnknownAsset' | 'Frozen' | 'Unsupported'; + } + + /** @name SpRuntimeArithmeticError (27) */ + export interface SpRuntimeArithmeticError extends Enum { + readonly isUnderflow: boolean; + readonly isOverflow: boolean; + readonly isDivisionByZero: boolean; + readonly type: 'Underflow' | 'Overflow' | 'DivisionByZero'; + } + + /** @name PalletIndicesEvent (28) */ + export interface PalletIndicesEvent extends Enum { + readonly isIndexAssigned: boolean; + readonly asIndexAssigned: ITuple<[AccountId32, u32]>; + readonly isIndexFreed: boolean; + readonly asIndexFreed: u32; + readonly isIndexFrozen: boolean; + readonly asIndexFrozen: ITuple<[u32, AccountId32]>; + readonly type: 'IndexAssigned' | 'IndexFreed' | 'IndexFrozen'; + } + + /** @name PolymeshCommonUtilitiesBalancesRawEvent (29) */ + export interface PolymeshCommonUtilitiesBalancesRawEvent extends Enum { + readonly isEndowed: boolean; + readonly asEndowed: ITuple<[Option, AccountId32, u128]>; + readonly isTransfer: boolean; + readonly asTransfer: ITuple<[Option, AccountId32, Option, AccountId32, u128, Option]>; + readonly isBalanceSet: boolean; + readonly asBalanceSet: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, u128, u128]>; + readonly isAccountBalanceBurned: boolean; + readonly asAccountBalanceBurned: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, u128]>; + readonly isReserved: boolean; + readonly asReserved: ITuple<[AccountId32, u128]>; + readonly isUnreserved: boolean; + readonly asUnreserved: ITuple<[AccountId32, u128]>; + readonly isReserveRepatriated: boolean; + readonly asReserveRepatriated: ITuple<[AccountId32, AccountId32, u128, FrameSupportTokensMiscBalanceStatus]>; + readonly type: 'Endowed' | 'Transfer' | 'BalanceSet' | 'AccountBalanceBurned' | 'Reserved' | 'Unreserved' | 'ReserveRepatriated'; + } + + /** @name PolymeshPrimitivesIdentityId (31) */ + export interface PolymeshPrimitivesIdentityId extends U8aFixed {} + + /** @name PolymeshCommonUtilitiesBalancesMemo (33) */ + export interface PolymeshCommonUtilitiesBalancesMemo extends U8aFixed {} + + /** @name FrameSupportTokensMiscBalanceStatus (34) */ + export interface FrameSupportTokensMiscBalanceStatus extends Enum { + readonly isFree: boolean; + readonly isReserved: boolean; + readonly type: 'Free' | 'Reserved'; + } + + /** @name PolymeshCommonUtilitiesIdentityRawEvent (35) */ + export interface PolymeshCommonUtilitiesIdentityRawEvent extends Enum { + readonly isDidCreated: boolean; + readonly asDidCreated: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, Vec]>; + readonly isSecondaryKeysAdded: boolean; + readonly asSecondaryKeysAdded: ITuple<[PolymeshPrimitivesIdentityId, Vec]>; + readonly isSecondaryKeysRemoved: boolean; + readonly asSecondaryKeysRemoved: ITuple<[PolymeshPrimitivesIdentityId, Vec]>; + readonly isSignerLeft: boolean; + readonly asSignerLeft: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesSecondaryKeySignatory]>; + readonly isSecondaryKeyPermissionsUpdated: boolean; + readonly asSecondaryKeyPermissionsUpdated: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesSecondaryKeyApiSecondaryKey, PolymeshPrimitivesSecondaryKeyPermissions, PolymeshPrimitivesSecondaryKeyPermissions]>; + readonly isPrimaryKeyUpdated: boolean; + readonly asPrimaryKeyUpdated: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, AccountId32]>; + readonly isClaimAdded: boolean; + readonly asClaimAdded: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityClaim]>; + readonly isClaimRevoked: boolean; + readonly asClaimRevoked: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityClaim]>; + readonly isAssetDidRegistered: boolean; + readonly asAssetDidRegistered: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker]>; + readonly isAuthorizationAdded: boolean; + readonly asAuthorizationAdded: ITuple<[PolymeshPrimitivesIdentityId, Option, Option, u64, PolymeshPrimitivesAuthorizationAuthorizationData, Option]>; + readonly isAuthorizationRevoked: boolean; + readonly asAuthorizationRevoked: ITuple<[Option, Option, u64]>; + readonly isAuthorizationRejected: boolean; + readonly asAuthorizationRejected: ITuple<[Option, Option, u64]>; + readonly isAuthorizationConsumed: boolean; + readonly asAuthorizationConsumed: ITuple<[Option, Option, u64]>; + readonly isOffChainAuthorizationRevoked: boolean; + readonly asOffChainAuthorizationRevoked: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesSecondaryKeySignatory]>; + readonly isCddRequirementForPrimaryKeyUpdated: boolean; + readonly asCddRequirementForPrimaryKeyUpdated: bool; + readonly isCddClaimsInvalidated: boolean; + readonly asCddClaimsInvalidated: ITuple<[PolymeshPrimitivesIdentityId, u64]>; + readonly isSecondaryKeysFrozen: boolean; + readonly asSecondaryKeysFrozen: PolymeshPrimitivesIdentityId; + readonly isSecondaryKeysUnfrozen: boolean; + readonly asSecondaryKeysUnfrozen: PolymeshPrimitivesIdentityId; + readonly isMockInvestorUIDCreated: boolean; + readonly asMockInvestorUIDCreated: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesCddIdInvestorUid]>; + readonly type: 'DidCreated' | 'SecondaryKeysAdded' | 'SecondaryKeysRemoved' | 'SignerLeft' | 'SecondaryKeyPermissionsUpdated' | 'PrimaryKeyUpdated' | 'ClaimAdded' | 'ClaimRevoked' | 'AssetDidRegistered' | 'AuthorizationAdded' | 'AuthorizationRevoked' | 'AuthorizationRejected' | 'AuthorizationConsumed' | 'OffChainAuthorizationRevoked' | 'CddRequirementForPrimaryKeyUpdated' | 'CddClaimsInvalidated' | 'SecondaryKeysFrozen' | 'SecondaryKeysUnfrozen' | 'MockInvestorUIDCreated'; + } + + /** @name PolymeshPrimitivesSecondaryKeyApiSecondaryKey (37) */ + export interface PolymeshPrimitivesSecondaryKeyApiSecondaryKey extends Struct { + readonly signer: PolymeshPrimitivesSecondaryKeySignatory; + readonly permissions: PolymeshPrimitivesSecondaryKeyPermissions; + } + + /** @name PolymeshPrimitivesSecondaryKeySignatory (38) */ + export interface PolymeshPrimitivesSecondaryKeySignatory extends Enum { + readonly isIdentity: boolean; + readonly asIdentity: PolymeshPrimitivesIdentityId; + readonly isAccount: boolean; + readonly asAccount: AccountId32; + readonly type: 'Identity' | 'Account'; + } + + /** @name PolymeshPrimitivesSecondaryKeyPermissions (39) */ + export interface PolymeshPrimitivesSecondaryKeyPermissions extends Struct { + readonly asset: PolymeshPrimitivesSubsetSubsetRestrictionTicker; + readonly extrinsic: PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions; + readonly portfolio: PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId; + } + + /** @name PolymeshPrimitivesSubsetSubsetRestrictionTicker (40) */ + export interface PolymeshPrimitivesSubsetSubsetRestrictionTicker extends Enum { + readonly isWhole: boolean; + readonly isThese: boolean; + readonly asThese: BTreeSetTicker; + readonly isExcept: boolean; + readonly asExcept: BTreeSetTicker; + readonly type: 'Whole' | 'These' | 'Except'; + } + + /** @name PolymeshPrimitivesTicker (41) */ + export interface PolymeshPrimitivesTicker extends U8aFixed {} + + /** @name BTreeSetTicker (43) */ + export interface BTreeSetTicker extends Vec {} + + /** @name PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions (45) */ + export interface PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions extends Enum { + readonly isWhole: boolean; + readonly isThese: boolean; + readonly asThese: BTreeSetPalletPermissions; + readonly isExcept: boolean; + readonly asExcept: BTreeSetPalletPermissions; + readonly type: 'Whole' | 'These' | 'Except'; + } + + /** @name PolymeshPrimitivesSecondaryKeyPalletPermissions (46) */ + export interface PolymeshPrimitivesSecondaryKeyPalletPermissions extends Struct { + readonly palletName: Bytes; + readonly dispatchableNames: PolymeshPrimitivesSubsetSubsetRestrictionDispatchableName; + } + + /** @name PolymeshPrimitivesSubsetSubsetRestrictionDispatchableName (48) */ + export interface PolymeshPrimitivesSubsetSubsetRestrictionDispatchableName extends Enum { + readonly isWhole: boolean; + readonly isThese: boolean; + readonly asThese: BTreeSetDispatchableName; + readonly isExcept: boolean; + readonly asExcept: BTreeSetDispatchableName; + readonly type: 'Whole' | 'These' | 'Except'; + } + + /** @name BTreeSetDispatchableName (50) */ + export interface BTreeSetDispatchableName extends Vec {} + + /** @name BTreeSetPalletPermissions (52) */ + export interface BTreeSetPalletPermissions extends Vec {} + + /** @name PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId (54) */ + export interface PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId extends Enum { + readonly isWhole: boolean; + readonly isThese: boolean; + readonly asThese: BTreeSetPortfolioId; + readonly isExcept: boolean; + readonly asExcept: BTreeSetPortfolioId; + readonly type: 'Whole' | 'These' | 'Except'; + } + + /** @name PolymeshPrimitivesIdentityIdPortfolioId (55) */ + export interface PolymeshPrimitivesIdentityIdPortfolioId extends Struct { + readonly did: PolymeshPrimitivesIdentityId; + readonly kind: PolymeshPrimitivesIdentityIdPortfolioKind; + } + + /** @name PolymeshPrimitivesIdentityIdPortfolioKind (56) */ + export interface PolymeshPrimitivesIdentityIdPortfolioKind extends Enum { + readonly isDefault: boolean; + readonly isUser: boolean; + readonly asUser: u64; + readonly type: 'Default' | 'User'; + } + + /** @name BTreeSetPortfolioId (58) */ + export interface BTreeSetPortfolioId extends Vec {} + + /** @name PolymeshPrimitivesIdentityClaim (61) */ + export interface PolymeshPrimitivesIdentityClaim extends Struct { + readonly claimIssuer: PolymeshPrimitivesIdentityId; + readonly issuanceDate: u64; + readonly lastUpdateDate: u64; + readonly expiry: Option; + readonly claim: PolymeshPrimitivesIdentityClaimClaim; + } + + /** @name PolymeshPrimitivesIdentityClaimClaim (63) */ + export interface PolymeshPrimitivesIdentityClaimClaim extends Enum { + readonly isAccredited: boolean; + readonly asAccredited: PolymeshPrimitivesIdentityClaimScope; + readonly isAffiliate: boolean; + readonly asAffiliate: PolymeshPrimitivesIdentityClaimScope; + readonly isBuyLockup: boolean; + readonly asBuyLockup: PolymeshPrimitivesIdentityClaimScope; + readonly isSellLockup: boolean; + readonly asSellLockup: PolymeshPrimitivesIdentityClaimScope; + readonly isCustomerDueDiligence: boolean; + readonly asCustomerDueDiligence: PolymeshPrimitivesCddId; + readonly isKnowYourCustomer: boolean; + readonly asKnowYourCustomer: PolymeshPrimitivesIdentityClaimScope; + readonly isJurisdiction: boolean; + readonly asJurisdiction: ITuple<[PolymeshPrimitivesJurisdictionCountryCode, PolymeshPrimitivesIdentityClaimScope]>; + readonly isExempted: boolean; + readonly asExempted: PolymeshPrimitivesIdentityClaimScope; + readonly isBlocked: boolean; + readonly asBlocked: PolymeshPrimitivesIdentityClaimScope; + readonly isInvestorUniqueness: boolean; + readonly asInvestorUniqueness: ITuple<[PolymeshPrimitivesIdentityClaimScope, PolymeshPrimitivesIdentityId, PolymeshPrimitivesCddId]>; + readonly isNoData: boolean; + readonly isInvestorUniquenessV2: boolean; + readonly asInvestorUniquenessV2: PolymeshPrimitivesCddId; + readonly type: 'Accredited' | 'Affiliate' | 'BuyLockup' | 'SellLockup' | 'CustomerDueDiligence' | 'KnowYourCustomer' | 'Jurisdiction' | 'Exempted' | 'Blocked' | 'InvestorUniqueness' | 'NoData' | 'InvestorUniquenessV2'; + } + + /** @name PolymeshPrimitivesIdentityClaimScope (64) */ + export interface PolymeshPrimitivesIdentityClaimScope extends Enum { + readonly isIdentity: boolean; + readonly asIdentity: PolymeshPrimitivesIdentityId; + readonly isTicker: boolean; + readonly asTicker: PolymeshPrimitivesTicker; + readonly isCustom: boolean; + readonly asCustom: Bytes; + readonly type: 'Identity' | 'Ticker' | 'Custom'; + } + + /** @name PolymeshPrimitivesCddId (65) */ + export interface PolymeshPrimitivesCddId extends U8aFixed {} + + /** @name PolymeshPrimitivesJurisdictionCountryCode (66) */ + export interface PolymeshPrimitivesJurisdictionCountryCode extends Enum { + readonly isAf: boolean; + readonly isAx: boolean; + readonly isAl: boolean; + readonly isDz: boolean; + readonly isAs: boolean; + readonly isAd: boolean; + readonly isAo: boolean; + readonly isAi: boolean; + readonly isAq: boolean; + readonly isAg: boolean; + readonly isAr: boolean; + readonly isAm: boolean; + readonly isAw: boolean; + readonly isAu: boolean; + readonly isAt: boolean; + readonly isAz: boolean; + readonly isBs: boolean; + readonly isBh: boolean; + readonly isBd: boolean; + readonly isBb: boolean; + readonly isBy: boolean; + readonly isBe: boolean; + readonly isBz: boolean; + readonly isBj: boolean; + readonly isBm: boolean; + readonly isBt: boolean; + readonly isBo: boolean; + readonly isBa: boolean; + readonly isBw: boolean; + readonly isBv: boolean; + readonly isBr: boolean; + readonly isVg: boolean; + readonly isIo: boolean; + readonly isBn: boolean; + readonly isBg: boolean; + readonly isBf: boolean; + readonly isBi: boolean; + readonly isKh: boolean; + readonly isCm: boolean; + readonly isCa: boolean; + readonly isCv: boolean; + readonly isKy: boolean; + readonly isCf: boolean; + readonly isTd: boolean; + readonly isCl: boolean; + readonly isCn: boolean; + readonly isHk: boolean; + readonly isMo: boolean; + readonly isCx: boolean; + readonly isCc: boolean; + readonly isCo: boolean; + readonly isKm: boolean; + readonly isCg: boolean; + readonly isCd: boolean; + readonly isCk: boolean; + readonly isCr: boolean; + readonly isCi: boolean; + readonly isHr: boolean; + readonly isCu: boolean; + readonly isCy: boolean; + readonly isCz: boolean; + readonly isDk: boolean; + readonly isDj: boolean; + readonly isDm: boolean; + readonly isDo: boolean; + readonly isEc: boolean; + readonly isEg: boolean; + readonly isSv: boolean; + readonly isGq: boolean; + readonly isEr: boolean; + readonly isEe: boolean; + readonly isEt: boolean; + readonly isFk: boolean; + readonly isFo: boolean; + readonly isFj: boolean; + readonly isFi: boolean; + readonly isFr: boolean; + readonly isGf: boolean; + readonly isPf: boolean; + readonly isTf: boolean; + readonly isGa: boolean; + readonly isGm: boolean; + readonly isGe: boolean; + readonly isDe: boolean; + readonly isGh: boolean; + readonly isGi: boolean; + readonly isGr: boolean; + readonly isGl: boolean; + readonly isGd: boolean; + readonly isGp: boolean; + readonly isGu: boolean; + readonly isGt: boolean; + readonly isGg: boolean; + readonly isGn: boolean; + readonly isGw: boolean; + readonly isGy: boolean; + readonly isHt: boolean; + readonly isHm: boolean; + readonly isVa: boolean; + readonly isHn: boolean; + readonly isHu: boolean; + readonly isIs: boolean; + readonly isIn: boolean; + readonly isId: boolean; + readonly isIr: boolean; + readonly isIq: boolean; + readonly isIe: boolean; + readonly isIm: boolean; + readonly isIl: boolean; + readonly isIt: boolean; + readonly isJm: boolean; + readonly isJp: boolean; + readonly isJe: boolean; + readonly isJo: boolean; + readonly isKz: boolean; + readonly isKe: boolean; + readonly isKi: boolean; + readonly isKp: boolean; + readonly isKr: boolean; + readonly isKw: boolean; + readonly isKg: boolean; + readonly isLa: boolean; + readonly isLv: boolean; + readonly isLb: boolean; + readonly isLs: boolean; + readonly isLr: boolean; + readonly isLy: boolean; + readonly isLi: boolean; + readonly isLt: boolean; + readonly isLu: boolean; + readonly isMk: boolean; + readonly isMg: boolean; + readonly isMw: boolean; + readonly isMy: boolean; + readonly isMv: boolean; + readonly isMl: boolean; + readonly isMt: boolean; + readonly isMh: boolean; + readonly isMq: boolean; + readonly isMr: boolean; + readonly isMu: boolean; + readonly isYt: boolean; + readonly isMx: boolean; + readonly isFm: boolean; + readonly isMd: boolean; + readonly isMc: boolean; + readonly isMn: boolean; + readonly isMe: boolean; + readonly isMs: boolean; + readonly isMa: boolean; + readonly isMz: boolean; + readonly isMm: boolean; + readonly isNa: boolean; + readonly isNr: boolean; + readonly isNp: boolean; + readonly isNl: boolean; + readonly isAn: boolean; + readonly isNc: boolean; + readonly isNz: boolean; + readonly isNi: boolean; + readonly isNe: boolean; + readonly isNg: boolean; + readonly isNu: boolean; + readonly isNf: boolean; + readonly isMp: boolean; + readonly isNo: boolean; + readonly isOm: boolean; + readonly isPk: boolean; + readonly isPw: boolean; + readonly isPs: boolean; + readonly isPa: boolean; + readonly isPg: boolean; + readonly isPy: boolean; + readonly isPe: boolean; + readonly isPh: boolean; + readonly isPn: boolean; + readonly isPl: boolean; + readonly isPt: boolean; + readonly isPr: boolean; + readonly isQa: boolean; + readonly isRe: boolean; + readonly isRo: boolean; + readonly isRu: boolean; + readonly isRw: boolean; + readonly isBl: boolean; + readonly isSh: boolean; + readonly isKn: boolean; + readonly isLc: boolean; + readonly isMf: boolean; + readonly isPm: boolean; + readonly isVc: boolean; + readonly isWs: boolean; + readonly isSm: boolean; + readonly isSt: boolean; + readonly isSa: boolean; + readonly isSn: boolean; + readonly isRs: boolean; + readonly isSc: boolean; + readonly isSl: boolean; + readonly isSg: boolean; + readonly isSk: boolean; + readonly isSi: boolean; + readonly isSb: boolean; + readonly isSo: boolean; + readonly isZa: boolean; + readonly isGs: boolean; + readonly isSs: boolean; + readonly isEs: boolean; + readonly isLk: boolean; + readonly isSd: boolean; + readonly isSr: boolean; + readonly isSj: boolean; + readonly isSz: boolean; + readonly isSe: boolean; + readonly isCh: boolean; + readonly isSy: boolean; + readonly isTw: boolean; + readonly isTj: boolean; + readonly isTz: boolean; + readonly isTh: boolean; + readonly isTl: boolean; + readonly isTg: boolean; + readonly isTk: boolean; + readonly isTo: boolean; + readonly isTt: boolean; + readonly isTn: boolean; + readonly isTr: boolean; + readonly isTm: boolean; + readonly isTc: boolean; + readonly isTv: boolean; + readonly isUg: boolean; + readonly isUa: boolean; + readonly isAe: boolean; + readonly isGb: boolean; + readonly isUs: boolean; + readonly isUm: boolean; + readonly isUy: boolean; + readonly isUz: boolean; + readonly isVu: boolean; + readonly isVe: boolean; + readonly isVn: boolean; + readonly isVi: boolean; + readonly isWf: boolean; + readonly isEh: boolean; + readonly isYe: boolean; + readonly isZm: boolean; + readonly isZw: boolean; + readonly isBq: boolean; + readonly isCw: boolean; + readonly isSx: boolean; + readonly type: 'Af' | 'Ax' | 'Al' | 'Dz' | 'As' | 'Ad' | 'Ao' | 'Ai' | 'Aq' | 'Ag' | 'Ar' | 'Am' | 'Aw' | 'Au' | 'At' | 'Az' | 'Bs' | 'Bh' | 'Bd' | 'Bb' | 'By' | 'Be' | 'Bz' | 'Bj' | 'Bm' | 'Bt' | 'Bo' | 'Ba' | 'Bw' | 'Bv' | 'Br' | 'Vg' | 'Io' | 'Bn' | 'Bg' | 'Bf' | 'Bi' | 'Kh' | 'Cm' | 'Ca' | 'Cv' | 'Ky' | 'Cf' | 'Td' | 'Cl' | 'Cn' | 'Hk' | 'Mo' | 'Cx' | 'Cc' | 'Co' | 'Km' | 'Cg' | 'Cd' | 'Ck' | 'Cr' | 'Ci' | 'Hr' | 'Cu' | 'Cy' | 'Cz' | 'Dk' | 'Dj' | 'Dm' | 'Do' | 'Ec' | 'Eg' | 'Sv' | 'Gq' | 'Er' | 'Ee' | 'Et' | 'Fk' | 'Fo' | 'Fj' | 'Fi' | 'Fr' | 'Gf' | 'Pf' | 'Tf' | 'Ga' | 'Gm' | 'Ge' | 'De' | 'Gh' | 'Gi' | 'Gr' | 'Gl' | 'Gd' | 'Gp' | 'Gu' | 'Gt' | 'Gg' | 'Gn' | 'Gw' | 'Gy' | 'Ht' | 'Hm' | 'Va' | 'Hn' | 'Hu' | 'Is' | 'In' | 'Id' | 'Ir' | 'Iq' | 'Ie' | 'Im' | 'Il' | 'It' | 'Jm' | 'Jp' | 'Je' | 'Jo' | 'Kz' | 'Ke' | 'Ki' | 'Kp' | 'Kr' | 'Kw' | 'Kg' | 'La' | 'Lv' | 'Lb' | 'Ls' | 'Lr' | 'Ly' | 'Li' | 'Lt' | 'Lu' | 'Mk' | 'Mg' | 'Mw' | 'My' | 'Mv' | 'Ml' | 'Mt' | 'Mh' | 'Mq' | 'Mr' | 'Mu' | 'Yt' | 'Mx' | 'Fm' | 'Md' | 'Mc' | 'Mn' | 'Me' | 'Ms' | 'Ma' | 'Mz' | 'Mm' | 'Na' | 'Nr' | 'Np' | 'Nl' | 'An' | 'Nc' | 'Nz' | 'Ni' | 'Ne' | 'Ng' | 'Nu' | 'Nf' | 'Mp' | 'No' | 'Om' | 'Pk' | 'Pw' | 'Ps' | 'Pa' | 'Pg' | 'Py' | 'Pe' | 'Ph' | 'Pn' | 'Pl' | 'Pt' | 'Pr' | 'Qa' | 'Re' | 'Ro' | 'Ru' | 'Rw' | 'Bl' | 'Sh' | 'Kn' | 'Lc' | 'Mf' | 'Pm' | 'Vc' | 'Ws' | 'Sm' | 'St' | 'Sa' | 'Sn' | 'Rs' | 'Sc' | 'Sl' | 'Sg' | 'Sk' | 'Si' | 'Sb' | 'So' | 'Za' | 'Gs' | 'Ss' | 'Es' | 'Lk' | 'Sd' | 'Sr' | 'Sj' | 'Sz' | 'Se' | 'Ch' | 'Sy' | 'Tw' | 'Tj' | 'Tz' | 'Th' | 'Tl' | 'Tg' | 'Tk' | 'To' | 'Tt' | 'Tn' | 'Tr' | 'Tm' | 'Tc' | 'Tv' | 'Ug' | 'Ua' | 'Ae' | 'Gb' | 'Us' | 'Um' | 'Uy' | 'Uz' | 'Vu' | 'Ve' | 'Vn' | 'Vi' | 'Wf' | 'Eh' | 'Ye' | 'Zm' | 'Zw' | 'Bq' | 'Cw' | 'Sx'; + } + + /** @name PolymeshPrimitivesAuthorizationAuthorizationData (68) */ + export interface PolymeshPrimitivesAuthorizationAuthorizationData extends Enum { + readonly isAttestPrimaryKeyRotation: boolean; + readonly asAttestPrimaryKeyRotation: PolymeshPrimitivesIdentityId; + readonly isRotatePrimaryKey: boolean; + readonly isTransferTicker: boolean; + readonly asTransferTicker: PolymeshPrimitivesTicker; + readonly isAddMultiSigSigner: boolean; + readonly asAddMultiSigSigner: AccountId32; + readonly isTransferAssetOwnership: boolean; + readonly asTransferAssetOwnership: PolymeshPrimitivesTicker; + readonly isJoinIdentity: boolean; + readonly asJoinIdentity: PolymeshPrimitivesSecondaryKeyPermissions; + readonly isPortfolioCustody: boolean; + readonly asPortfolioCustody: PolymeshPrimitivesIdentityIdPortfolioId; + readonly isBecomeAgent: boolean; + readonly asBecomeAgent: ITuple<[PolymeshPrimitivesTicker, PolymeshPrimitivesAgentAgentGroup]>; + readonly isAddRelayerPayingKey: boolean; + readonly asAddRelayerPayingKey: ITuple<[AccountId32, AccountId32, u128]>; + readonly isRotatePrimaryKeyToSecondary: boolean; + readonly asRotatePrimaryKeyToSecondary: PolymeshPrimitivesSecondaryKeyPermissions; + readonly type: 'AttestPrimaryKeyRotation' | 'RotatePrimaryKey' | 'TransferTicker' | 'AddMultiSigSigner' | 'TransferAssetOwnership' | 'JoinIdentity' | 'PortfolioCustody' | 'BecomeAgent' | 'AddRelayerPayingKey' | 'RotatePrimaryKeyToSecondary'; + } + + /** @name PolymeshPrimitivesAgentAgentGroup (69) */ + export interface PolymeshPrimitivesAgentAgentGroup extends Enum { + readonly isFull: boolean; + readonly isCustom: boolean; + readonly asCustom: u32; + readonly isExceptMeta: boolean; + readonly isPolymeshV1CAA: boolean; + readonly isPolymeshV1PIA: boolean; + readonly type: 'Full' | 'Custom' | 'ExceptMeta' | 'PolymeshV1CAA' | 'PolymeshV1PIA'; + } + + /** @name PolymeshPrimitivesCddIdInvestorUid (72) */ + export interface PolymeshPrimitivesCddIdInvestorUid extends U8aFixed {} + + /** @name PolymeshCommonUtilitiesGroupRawEventInstance2 (74) */ + export interface PolymeshCommonUtilitiesGroupRawEventInstance2 extends Enum { + readonly isMemberAdded: boolean; + readonly asMemberAdded: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; + readonly isMemberRemoved: boolean; + readonly asMemberRemoved: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; + readonly isMemberRevoked: boolean; + readonly asMemberRevoked: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; + readonly isMembersSwapped: boolean; + readonly asMembersSwapped: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; + readonly isMembersReset: boolean; + readonly asMembersReset: ITuple<[PolymeshPrimitivesIdentityId, Vec]>; + readonly isActiveLimitChanged: boolean; + readonly asActiveLimitChanged: ITuple<[PolymeshPrimitivesIdentityId, u32, u32]>; + readonly isDummy: boolean; + readonly type: 'MemberAdded' | 'MemberRemoved' | 'MemberRevoked' | 'MembersSwapped' | 'MembersReset' | 'ActiveLimitChanged' | 'Dummy'; + } + + /** @name PalletGroupInstance2 (75) */ + export type PalletGroupInstance2 = Null; + + /** @name PalletCommitteeRawEventInstance1 (77) */ + export interface PalletCommitteeRawEventInstance1 extends Enum { + readonly isProposed: boolean; + readonly asProposed: ITuple<[PolymeshPrimitivesIdentityId, u32, H256]>; + readonly isVoted: boolean; + readonly asVoted: ITuple<[PolymeshPrimitivesIdentityId, u32, H256, bool, u32, u32, u32]>; + readonly isVoteRetracted: boolean; + readonly asVoteRetracted: ITuple<[PolymeshPrimitivesIdentityId, u32, H256, bool]>; + readonly isFinalVotes: boolean; + readonly asFinalVotes: ITuple<[PolymeshPrimitivesIdentityId, u32, H256, Vec, Vec]>; + readonly isApproved: boolean; + readonly asApproved: ITuple<[PolymeshPrimitivesIdentityId, H256, u32, u32, u32]>; + readonly isRejected: boolean; + readonly asRejected: ITuple<[PolymeshPrimitivesIdentityId, H256, u32, u32, u32]>; + readonly isExecuted: boolean; + readonly asExecuted: ITuple<[PolymeshPrimitivesIdentityId, H256, Result]>; + readonly isReleaseCoordinatorUpdated: boolean; + readonly asReleaseCoordinatorUpdated: ITuple<[PolymeshPrimitivesIdentityId, Option]>; + readonly isExpiresAfterUpdated: boolean; + readonly asExpiresAfterUpdated: ITuple<[PolymeshPrimitivesIdentityId, PolymeshCommonUtilitiesMaybeBlock]>; + readonly isVoteThresholdUpdated: boolean; + readonly asVoteThresholdUpdated: ITuple<[PolymeshPrimitivesIdentityId, u32, u32]>; + readonly type: 'Proposed' | 'Voted' | 'VoteRetracted' | 'FinalVotes' | 'Approved' | 'Rejected' | 'Executed' | 'ReleaseCoordinatorUpdated' | 'ExpiresAfterUpdated' | 'VoteThresholdUpdated'; + } + + /** @name PalletCommitteeInstance1 (78) */ + export type PalletCommitteeInstance1 = Null; + + /** @name PolymeshCommonUtilitiesMaybeBlock (81) */ + export interface PolymeshCommonUtilitiesMaybeBlock extends Enum { + readonly isSome: boolean; + readonly asSome: u32; + readonly isNone: boolean; + readonly type: 'Some' | 'None'; + } + + /** @name PolymeshCommonUtilitiesGroupRawEventInstance1 (82) */ + export interface PolymeshCommonUtilitiesGroupRawEventInstance1 extends Enum { + readonly isMemberAdded: boolean; + readonly asMemberAdded: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; + readonly isMemberRemoved: boolean; + readonly asMemberRemoved: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; + readonly isMemberRevoked: boolean; + readonly asMemberRevoked: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; + readonly isMembersSwapped: boolean; + readonly asMembersSwapped: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; + readonly isMembersReset: boolean; + readonly asMembersReset: ITuple<[PolymeshPrimitivesIdentityId, Vec]>; + readonly isActiveLimitChanged: boolean; + readonly asActiveLimitChanged: ITuple<[PolymeshPrimitivesIdentityId, u32, u32]>; + readonly isDummy: boolean; + readonly type: 'MemberAdded' | 'MemberRemoved' | 'MemberRevoked' | 'MembersSwapped' | 'MembersReset' | 'ActiveLimitChanged' | 'Dummy'; + } + + /** @name PalletGroupInstance1 (83) */ + export type PalletGroupInstance1 = Null; + + /** @name PalletCommitteeRawEventInstance3 (84) */ + export interface PalletCommitteeRawEventInstance3 extends Enum { + readonly isProposed: boolean; + readonly asProposed: ITuple<[PolymeshPrimitivesIdentityId, u32, H256]>; + readonly isVoted: boolean; + readonly asVoted: ITuple<[PolymeshPrimitivesIdentityId, u32, H256, bool, u32, u32, u32]>; + readonly isVoteRetracted: boolean; + readonly asVoteRetracted: ITuple<[PolymeshPrimitivesIdentityId, u32, H256, bool]>; + readonly isFinalVotes: boolean; + readonly asFinalVotes: ITuple<[PolymeshPrimitivesIdentityId, u32, H256, Vec, Vec]>; + readonly isApproved: boolean; + readonly asApproved: ITuple<[PolymeshPrimitivesIdentityId, H256, u32, u32, u32]>; + readonly isRejected: boolean; + readonly asRejected: ITuple<[PolymeshPrimitivesIdentityId, H256, u32, u32, u32]>; + readonly isExecuted: boolean; + readonly asExecuted: ITuple<[PolymeshPrimitivesIdentityId, H256, Result]>; + readonly isReleaseCoordinatorUpdated: boolean; + readonly asReleaseCoordinatorUpdated: ITuple<[PolymeshPrimitivesIdentityId, Option]>; + readonly isExpiresAfterUpdated: boolean; + readonly asExpiresAfterUpdated: ITuple<[PolymeshPrimitivesIdentityId, PolymeshCommonUtilitiesMaybeBlock]>; + readonly isVoteThresholdUpdated: boolean; + readonly asVoteThresholdUpdated: ITuple<[PolymeshPrimitivesIdentityId, u32, u32]>; + readonly type: 'Proposed' | 'Voted' | 'VoteRetracted' | 'FinalVotes' | 'Approved' | 'Rejected' | 'Executed' | 'ReleaseCoordinatorUpdated' | 'ExpiresAfterUpdated' | 'VoteThresholdUpdated'; + } + + /** @name PalletCommitteeInstance3 (85) */ + export type PalletCommitteeInstance3 = Null; + + /** @name PolymeshCommonUtilitiesGroupRawEventInstance3 (86) */ + export interface PolymeshCommonUtilitiesGroupRawEventInstance3 extends Enum { + readonly isMemberAdded: boolean; + readonly asMemberAdded: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; + readonly isMemberRemoved: boolean; + readonly asMemberRemoved: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; + readonly isMemberRevoked: boolean; + readonly asMemberRevoked: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; + readonly isMembersSwapped: boolean; + readonly asMembersSwapped: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; + readonly isMembersReset: boolean; + readonly asMembersReset: ITuple<[PolymeshPrimitivesIdentityId, Vec]>; + readonly isActiveLimitChanged: boolean; + readonly asActiveLimitChanged: ITuple<[PolymeshPrimitivesIdentityId, u32, u32]>; + readonly isDummy: boolean; + readonly type: 'MemberAdded' | 'MemberRemoved' | 'MemberRevoked' | 'MembersSwapped' | 'MembersReset' | 'ActiveLimitChanged' | 'Dummy'; + } + + /** @name PalletGroupInstance3 (87) */ + export type PalletGroupInstance3 = Null; + + /** @name PalletCommitteeRawEventInstance4 (88) */ + export interface PalletCommitteeRawEventInstance4 extends Enum { + readonly isProposed: boolean; + readonly asProposed: ITuple<[PolymeshPrimitivesIdentityId, u32, H256]>; + readonly isVoted: boolean; + readonly asVoted: ITuple<[PolymeshPrimitivesIdentityId, u32, H256, bool, u32, u32, u32]>; + readonly isVoteRetracted: boolean; + readonly asVoteRetracted: ITuple<[PolymeshPrimitivesIdentityId, u32, H256, bool]>; + readonly isFinalVotes: boolean; + readonly asFinalVotes: ITuple<[PolymeshPrimitivesIdentityId, u32, H256, Vec, Vec]>; + readonly isApproved: boolean; + readonly asApproved: ITuple<[PolymeshPrimitivesIdentityId, H256, u32, u32, u32]>; + readonly isRejected: boolean; + readonly asRejected: ITuple<[PolymeshPrimitivesIdentityId, H256, u32, u32, u32]>; + readonly isExecuted: boolean; + readonly asExecuted: ITuple<[PolymeshPrimitivesIdentityId, H256, Result]>; + readonly isReleaseCoordinatorUpdated: boolean; + readonly asReleaseCoordinatorUpdated: ITuple<[PolymeshPrimitivesIdentityId, Option]>; + readonly isExpiresAfterUpdated: boolean; + readonly asExpiresAfterUpdated: ITuple<[PolymeshPrimitivesIdentityId, PolymeshCommonUtilitiesMaybeBlock]>; + readonly isVoteThresholdUpdated: boolean; + readonly asVoteThresholdUpdated: ITuple<[PolymeshPrimitivesIdentityId, u32, u32]>; + readonly type: 'Proposed' | 'Voted' | 'VoteRetracted' | 'FinalVotes' | 'Approved' | 'Rejected' | 'Executed' | 'ReleaseCoordinatorUpdated' | 'ExpiresAfterUpdated' | 'VoteThresholdUpdated'; + } + + /** @name PalletCommitteeInstance4 (89) */ + export type PalletCommitteeInstance4 = Null; + + /** @name PolymeshCommonUtilitiesGroupRawEventInstance4 (90) */ + export interface PolymeshCommonUtilitiesGroupRawEventInstance4 extends Enum { + readonly isMemberAdded: boolean; + readonly asMemberAdded: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; + readonly isMemberRemoved: boolean; + readonly asMemberRemoved: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; + readonly isMemberRevoked: boolean; + readonly asMemberRevoked: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; + readonly isMembersSwapped: boolean; + readonly asMembersSwapped: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; + readonly isMembersReset: boolean; + readonly asMembersReset: ITuple<[PolymeshPrimitivesIdentityId, Vec]>; + readonly isActiveLimitChanged: boolean; + readonly asActiveLimitChanged: ITuple<[PolymeshPrimitivesIdentityId, u32, u32]>; + readonly isDummy: boolean; + readonly type: 'MemberAdded' | 'MemberRemoved' | 'MemberRevoked' | 'MembersSwapped' | 'MembersReset' | 'ActiveLimitChanged' | 'Dummy'; + } + + /** @name PalletGroupInstance4 (91) */ + export type PalletGroupInstance4 = Null; + + /** @name PalletMultisigRawEvent (92) */ + export interface PalletMultisigRawEvent extends Enum { + readonly isMultiSigCreated: boolean; + readonly asMultiSigCreated: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, AccountId32, Vec, u64]>; + readonly isProposalAdded: boolean; + readonly asProposalAdded: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, u64]>; + readonly isProposalExecuted: boolean; + readonly asProposalExecuted: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, u64, bool]>; + readonly isMultiSigSignerAdded: boolean; + readonly asMultiSigSignerAdded: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, PolymeshPrimitivesSecondaryKeySignatory]>; + readonly isMultiSigSignerAuthorized: boolean; + readonly asMultiSigSignerAuthorized: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, PolymeshPrimitivesSecondaryKeySignatory]>; + readonly isMultiSigSignerRemoved: boolean; + readonly asMultiSigSignerRemoved: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, PolymeshPrimitivesSecondaryKeySignatory]>; + readonly isMultiSigSignaturesRequiredChanged: boolean; + readonly asMultiSigSignaturesRequiredChanged: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, u64]>; + readonly isProposalApproved: boolean; + readonly asProposalApproved: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, PolymeshPrimitivesSecondaryKeySignatory, u64]>; + readonly isProposalRejectionVote: boolean; + readonly asProposalRejectionVote: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, PolymeshPrimitivesSecondaryKeySignatory, u64]>; + readonly isProposalRejected: boolean; + readonly asProposalRejected: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, u64]>; + readonly isProposalExecutionFailed: boolean; + readonly asProposalExecutionFailed: SpRuntimeDispatchError; + readonly isSchedulingFailed: boolean; + readonly asSchedulingFailed: SpRuntimeDispatchError; + readonly type: 'MultiSigCreated' | 'ProposalAdded' | 'ProposalExecuted' | 'MultiSigSignerAdded' | 'MultiSigSignerAuthorized' | 'MultiSigSignerRemoved' | 'MultiSigSignaturesRequiredChanged' | 'ProposalApproved' | 'ProposalRejectionVote' | 'ProposalRejected' | 'ProposalExecutionFailed' | 'SchedulingFailed'; + } + + /** @name PalletBridgeRawEvent (93) */ + export interface PalletBridgeRawEvent extends Enum { + readonly isControllerChanged: boolean; + readonly asControllerChanged: ITuple<[PolymeshPrimitivesIdentityId, AccountId32]>; + readonly isAdminChanged: boolean; + readonly asAdminChanged: ITuple<[PolymeshPrimitivesIdentityId, AccountId32]>; + readonly isTimelockChanged: boolean; + readonly asTimelockChanged: ITuple<[PolymeshPrimitivesIdentityId, u32]>; + readonly isBridged: boolean; + readonly asBridged: ITuple<[PolymeshPrimitivesIdentityId, PalletBridgeBridgeTx]>; + readonly isFrozen: boolean; + readonly asFrozen: PolymeshPrimitivesIdentityId; + readonly isUnfrozen: boolean; + readonly asUnfrozen: PolymeshPrimitivesIdentityId; + readonly isFrozenTx: boolean; + readonly asFrozenTx: ITuple<[PolymeshPrimitivesIdentityId, PalletBridgeBridgeTx]>; + readonly isUnfrozenTx: boolean; + readonly asUnfrozenTx: ITuple<[PolymeshPrimitivesIdentityId, PalletBridgeBridgeTx]>; + readonly isExemptedUpdated: boolean; + readonly asExemptedUpdated: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId, bool]>; + readonly isBridgeLimitUpdated: boolean; + readonly asBridgeLimitUpdated: ITuple<[PolymeshPrimitivesIdentityId, u128, u32]>; + readonly isTxsHandled: boolean; + readonly asTxsHandled: Vec>; + readonly isBridgeTxScheduled: boolean; + readonly asBridgeTxScheduled: ITuple<[PolymeshPrimitivesIdentityId, PalletBridgeBridgeTx, u32]>; + readonly isBridgeTxScheduleFailed: boolean; + readonly asBridgeTxScheduleFailed: ITuple<[PolymeshPrimitivesIdentityId, PalletBridgeBridgeTx, Bytes]>; + readonly isFreezeAdminAdded: boolean; + readonly asFreezeAdminAdded: ITuple<[PolymeshPrimitivesIdentityId, AccountId32]>; + readonly isFreezeAdminRemoved: boolean; + readonly asFreezeAdminRemoved: ITuple<[PolymeshPrimitivesIdentityId, AccountId32]>; + readonly isTxRemoved: boolean; + readonly asTxRemoved: ITuple<[PolymeshPrimitivesIdentityId, PalletBridgeBridgeTx]>; + readonly type: 'ControllerChanged' | 'AdminChanged' | 'TimelockChanged' | 'Bridged' | 'Frozen' | 'Unfrozen' | 'FrozenTx' | 'UnfrozenTx' | 'ExemptedUpdated' | 'BridgeLimitUpdated' | 'TxsHandled' | 'BridgeTxScheduled' | 'BridgeTxScheduleFailed' | 'FreezeAdminAdded' | 'FreezeAdminRemoved' | 'TxRemoved'; + } + + /** @name PalletBridgeBridgeTx (94) */ + export interface PalletBridgeBridgeTx extends Struct { + readonly nonce: u32; + readonly recipient: AccountId32; + readonly amount: u128; + readonly txHash: H256; + } + + /** @name PalletBridgeHandledTxStatus (97) */ + export interface PalletBridgeHandledTxStatus extends Enum { + readonly isSuccess: boolean; + readonly isError: boolean; + readonly asError: Bytes; + readonly type: 'Success' | 'Error'; + } + + /** @name PalletStakingRawEvent (98) */ + export interface PalletStakingRawEvent extends Enum { + readonly isEraPayout: boolean; + readonly asEraPayout: ITuple<[u32, u128, u128]>; + readonly isReward: boolean; + readonly asReward: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, u128]>; + readonly isSlash: boolean; + readonly asSlash: ITuple<[AccountId32, u128]>; + readonly isOldSlashingReportDiscarded: boolean; + readonly asOldSlashingReportDiscarded: u32; + readonly isStakingElection: boolean; + readonly asStakingElection: PalletStakingElectionCompute; + readonly isSolutionStored: boolean; + readonly asSolutionStored: PalletStakingElectionCompute; + readonly isBonded: boolean; + readonly asBonded: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, u128]>; + readonly isUnbonded: boolean; + readonly asUnbonded: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, u128]>; + readonly isNominated: boolean; + readonly asNominated: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, Vec]>; + readonly isWithdrawn: boolean; + readonly asWithdrawn: ITuple<[AccountId32, u128]>; + readonly isPermissionedIdentityAdded: boolean; + readonly asPermissionedIdentityAdded: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; + readonly isPermissionedIdentityRemoved: boolean; + readonly asPermissionedIdentityRemoved: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; + readonly isInvalidatedNominators: boolean; + readonly asInvalidatedNominators: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, Vec]>; + readonly isCommissionCapUpdated: boolean; + readonly asCommissionCapUpdated: ITuple<[PolymeshPrimitivesIdentityId, Perbill, Perbill]>; + readonly isMinimumBondThresholdUpdated: boolean; + readonly asMinimumBondThresholdUpdated: ITuple<[Option, u128]>; + readonly isRewardPaymentSchedulingInterrupted: boolean; + readonly asRewardPaymentSchedulingInterrupted: ITuple<[AccountId32, u32, SpRuntimeDispatchError]>; + readonly isSlashingAllowedForChanged: boolean; + readonly asSlashingAllowedForChanged: PalletStakingSlashingSwitch; + readonly type: 'EraPayout' | 'Reward' | 'Slash' | 'OldSlashingReportDiscarded' | 'StakingElection' | 'SolutionStored' | 'Bonded' | 'Unbonded' | 'Nominated' | 'Withdrawn' | 'PermissionedIdentityAdded' | 'PermissionedIdentityRemoved' | 'InvalidatedNominators' | 'CommissionCapUpdated' | 'MinimumBondThresholdUpdated' | 'RewardPaymentSchedulingInterrupted' | 'SlashingAllowedForChanged'; + } + + /** @name PalletStakingElectionCompute (99) */ + export interface PalletStakingElectionCompute extends Enum { + readonly isOnChain: boolean; + readonly isSigned: boolean; + readonly isUnsigned: boolean; + readonly type: 'OnChain' | 'Signed' | 'Unsigned'; + } + + /** @name PalletStakingSlashingSwitch (102) */ + export interface PalletStakingSlashingSwitch extends Enum { + readonly isValidator: boolean; + readonly isValidatorAndNominator: boolean; + readonly isNone: boolean; + readonly type: 'Validator' | 'ValidatorAndNominator' | 'None'; + } + + /** @name PalletOffencesEvent (103) */ + export interface PalletOffencesEvent extends Enum { + readonly isOffence: boolean; + readonly asOffence: ITuple<[U8aFixed, Bytes]>; + readonly type: 'Offence'; + } + + /** @name PalletSessionEvent (104) */ + export interface PalletSessionEvent extends Enum { + readonly isNewSession: boolean; + readonly asNewSession: u32; + readonly type: 'NewSession'; + } + + /** @name PalletGrandpaEvent (105) */ + export interface PalletGrandpaEvent extends Enum { + readonly isNewAuthorities: boolean; + readonly asNewAuthorities: Vec>; + readonly isPaused: boolean; + readonly isResumed: boolean; + readonly type: 'NewAuthorities' | 'Paused' | 'Resumed'; + } + + /** @name SpFinalityGrandpaAppPublic (108) */ + export interface SpFinalityGrandpaAppPublic extends SpCoreEd25519Public {} + + /** @name SpCoreEd25519Public (109) */ + export interface SpCoreEd25519Public extends U8aFixed {} + + /** @name PalletImOnlineEvent (110) */ + export interface PalletImOnlineEvent extends Enum { + readonly isHeartbeatReceived: boolean; + readonly asHeartbeatReceived: PalletImOnlineSr25519AppSr25519Public; + readonly isAllGood: boolean; + readonly isSomeOffline: boolean; + readonly asSomeOffline: Vec>; + readonly type: 'HeartbeatReceived' | 'AllGood' | 'SomeOffline'; + } + + /** @name PalletImOnlineSr25519AppSr25519Public (111) */ + export interface PalletImOnlineSr25519AppSr25519Public extends SpCoreSr25519Public {} + + /** @name SpCoreSr25519Public (112) */ + export interface SpCoreSr25519Public extends U8aFixed {} + + /** @name PalletStakingExposure (115) */ + export interface PalletStakingExposure extends Struct { + readonly total: Compact; + readonly own: Compact; + readonly others: Vec; + } + + /** @name PalletStakingIndividualExposure (118) */ + export interface PalletStakingIndividualExposure extends Struct { + readonly who: AccountId32; + readonly value: Compact; + } + + /** @name PalletSudoRawEvent (119) */ + export interface PalletSudoRawEvent extends Enum { + readonly isSudid: boolean; + readonly asSudid: Result; + readonly isKeyChanged: boolean; + readonly asKeyChanged: AccountId32; + readonly isSudoAsDone: boolean; + readonly asSudoAsDone: Result; + readonly type: 'Sudid' | 'KeyChanged' | 'SudoAsDone'; + } + + /** @name PolymeshCommonUtilitiesAssetRawEvent (120) */ + export interface PolymeshCommonUtilitiesAssetRawEvent extends Enum { + readonly isTransfer: boolean; + readonly asTransfer: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesIdentityIdPortfolioId, u128]>; + readonly isIssued: boolean; + readonly asIssued: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityId, u128, Bytes, u128]>; + readonly isRedeemed: boolean; + readonly asRedeemed: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityId, u128]>; + readonly isAssetCreated: boolean; + readonly asAssetCreated: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, bool, PolymeshPrimitivesAssetAssetType, PolymeshPrimitivesIdentityId, bool]>; + readonly isIdentifiersUpdated: boolean; + readonly asIdentifiersUpdated: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, Vec]>; + readonly isDivisibilityChanged: boolean; + readonly asDivisibilityChanged: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, bool]>; + readonly isTransferWithData: boolean; + readonly asTransferWithData: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId, u128, Bytes]>; + readonly isIsIssuable: boolean; + readonly asIsIssuable: ITuple<[PolymeshPrimitivesTicker, bool]>; + readonly isTickerRegistered: boolean; + readonly asTickerRegistered: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, Option]>; + readonly isTickerTransferred: boolean; + readonly asTickerTransferred: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityId]>; + readonly isAssetOwnershipTransferred: boolean; + readonly asAssetOwnershipTransferred: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityId]>; + readonly isAssetFrozen: boolean; + readonly asAssetFrozen: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker]>; + readonly isAssetUnfrozen: boolean; + readonly asAssetUnfrozen: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker]>; + readonly isAssetRenamed: boolean; + readonly asAssetRenamed: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, Bytes]>; + readonly isFundingRoundSet: boolean; + readonly asFundingRoundSet: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, Bytes]>; + readonly isDocumentAdded: boolean; + readonly asDocumentAdded: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, u32, PolymeshPrimitivesDocument]>; + readonly isDocumentRemoved: boolean; + readonly asDocumentRemoved: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, u32]>; + readonly isExtensionRemoved: boolean; + readonly asExtensionRemoved: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, AccountId32]>; + readonly isClassicTickerClaimed: boolean; + readonly asClassicTickerClaimed: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesEthereumEthereumAddress]>; + readonly isControllerTransfer: boolean; + readonly asControllerTransfer: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityIdPortfolioId, u128]>; + readonly isCustomAssetTypeExists: boolean; + readonly asCustomAssetTypeExists: ITuple<[PolymeshPrimitivesIdentityId, u32, Bytes]>; + readonly isCustomAssetTypeRegistered: boolean; + readonly asCustomAssetTypeRegistered: ITuple<[PolymeshPrimitivesIdentityId, u32, Bytes]>; + readonly type: 'Transfer' | 'Issued' | 'Redeemed' | 'AssetCreated' | 'IdentifiersUpdated' | 'DivisibilityChanged' | 'TransferWithData' | 'IsIssuable' | 'TickerRegistered' | 'TickerTransferred' | 'AssetOwnershipTransferred' | 'AssetFrozen' | 'AssetUnfrozen' | 'AssetRenamed' | 'FundingRoundSet' | 'DocumentAdded' | 'DocumentRemoved' | 'ExtensionRemoved' | 'ClassicTickerClaimed' | 'ControllerTransfer' | 'CustomAssetTypeExists' | 'CustomAssetTypeRegistered'; + } + + /** @name PolymeshPrimitivesAssetAssetType (122) */ + export interface PolymeshPrimitivesAssetAssetType extends Enum { + readonly isEquityCommon: boolean; + readonly isEquityPreferred: boolean; + readonly isCommodity: boolean; + readonly isFixedIncome: boolean; + readonly isReit: boolean; + readonly isFund: boolean; + readonly isRevenueShareAgreement: boolean; + readonly isStructuredProduct: boolean; + readonly isDerivative: boolean; + readonly isCustom: boolean; + readonly asCustom: u32; + readonly isStableCoin: boolean; + readonly type: 'EquityCommon' | 'EquityPreferred' | 'Commodity' | 'FixedIncome' | 'Reit' | 'Fund' | 'RevenueShareAgreement' | 'StructuredProduct' | 'Derivative' | 'Custom' | 'StableCoin'; + } + + /** @name PolymeshPrimitivesAssetIdentifier (125) */ + export interface PolymeshPrimitivesAssetIdentifier extends Enum { + readonly isCusip: boolean; + readonly asCusip: U8aFixed; + readonly isCins: boolean; + readonly asCins: U8aFixed; + readonly isIsin: boolean; + readonly asIsin: U8aFixed; + readonly isLei: boolean; + readonly asLei: U8aFixed; + readonly type: 'Cusip' | 'Cins' | 'Isin' | 'Lei'; + } + + /** @name PolymeshPrimitivesDocument (130) */ + export interface PolymeshPrimitivesDocument extends Struct { + readonly uri: Bytes; + readonly contentHash: PolymeshPrimitivesDocumentHash; + readonly name: Bytes; + readonly docType: Option; + readonly filingDate: Option; + } + + /** @name PolymeshPrimitivesDocumentHash (132) */ + export interface PolymeshPrimitivesDocumentHash extends Enum { + readonly isNone: boolean; + readonly isH512: boolean; + readonly asH512: U8aFixed; + readonly isH384: boolean; + readonly asH384: U8aFixed; + readonly isH320: boolean; + readonly asH320: U8aFixed; + readonly isH256: boolean; + readonly asH256: U8aFixed; + readonly isH224: boolean; + readonly asH224: U8aFixed; + readonly isH192: boolean; + readonly asH192: U8aFixed; + readonly isH160: boolean; + readonly asH160: U8aFixed; + readonly isH128: boolean; + readonly asH128: U8aFixed; + readonly type: 'None' | 'H512' | 'H384' | 'H320' | 'H256' | 'H224' | 'H192' | 'H160' | 'H128'; + } + + /** @name PolymeshPrimitivesEthereumEthereumAddress (141) */ + export interface PolymeshPrimitivesEthereumEthereumAddress extends U8aFixed {} + + /** @name PalletCorporateActionsDistributionEvent (142) */ + export interface PalletCorporateActionsDistributionEvent extends Enum { + readonly isCreated: boolean; + readonly asCreated: ITuple<[PolymeshPrimitivesEventOnly, PalletCorporateActionsCaId, PalletCorporateActionsDistribution]>; + readonly isBenefitClaimed: boolean; + readonly asBenefitClaimed: ITuple<[PolymeshPrimitivesEventOnly, PolymeshPrimitivesEventOnly, PalletCorporateActionsCaId, PalletCorporateActionsDistribution, u128, Permill]>; + readonly isReclaimed: boolean; + readonly asReclaimed: ITuple<[PolymeshPrimitivesEventOnly, PalletCorporateActionsCaId, u128]>; + readonly isRemoved: boolean; + readonly asRemoved: ITuple<[PolymeshPrimitivesEventOnly, PalletCorporateActionsCaId]>; + readonly type: 'Created' | 'BenefitClaimed' | 'Reclaimed' | 'Removed'; + } + + /** @name PolymeshPrimitivesEventOnly (143) */ + export interface PolymeshPrimitivesEventOnly extends PolymeshPrimitivesIdentityId {} + + /** @name PalletCorporateActionsCaId (144) */ + export interface PalletCorporateActionsCaId extends Struct { + readonly ticker: PolymeshPrimitivesTicker; + readonly localId: u32; + } + + /** @name PalletCorporateActionsDistribution (146) */ + export interface PalletCorporateActionsDistribution extends Struct { + readonly from: PolymeshPrimitivesIdentityIdPortfolioId; + readonly currency: PolymeshPrimitivesTicker; + readonly perShare: u128; + readonly amount: u128; + readonly remaining: u128; + readonly reclaimed: bool; + readonly paymentAt: u64; + readonly expiresAt: Option; + } + + /** @name PolymeshCommonUtilitiesCheckpointEvent (148) */ + export interface PolymeshCommonUtilitiesCheckpointEvent extends Enum { + readonly isCheckpointCreated: boolean; + readonly asCheckpointCreated: ITuple<[Option, PolymeshPrimitivesTicker, u64, u128, u64]>; + readonly isMaximumSchedulesComplexityChanged: boolean; + readonly asMaximumSchedulesComplexityChanged: ITuple<[PolymeshPrimitivesIdentityId, u64]>; + readonly isScheduleCreated: boolean; + readonly asScheduleCreated: ITuple<[PolymeshPrimitivesEventOnly, PolymeshPrimitivesTicker, PolymeshCommonUtilitiesCheckpointStoredSchedule]>; + readonly isScheduleRemoved: boolean; + readonly asScheduleRemoved: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshCommonUtilitiesCheckpointStoredSchedule]>; + readonly type: 'CheckpointCreated' | 'MaximumSchedulesComplexityChanged' | 'ScheduleCreated' | 'ScheduleRemoved'; + } + + /** @name PolymeshCommonUtilitiesCheckpointStoredSchedule (151) */ + export interface PolymeshCommonUtilitiesCheckpointStoredSchedule extends Struct { + readonly schedule: PolymeshPrimitivesCalendarCheckpointSchedule; + readonly id: u64; + readonly at: u64; + readonly remaining: u32; + } + + /** @name PolymeshPrimitivesCalendarCheckpointSchedule (152) */ + export interface PolymeshPrimitivesCalendarCheckpointSchedule extends Struct { + readonly start: u64; + readonly period: PolymeshPrimitivesCalendarCalendarPeriod; + } + + /** @name PolymeshPrimitivesCalendarCalendarPeriod (153) */ + export interface PolymeshPrimitivesCalendarCalendarPeriod extends Struct { + readonly unit: PolymeshPrimitivesCalendarCalendarUnit; + readonly amount: u64; + } + + /** @name PolymeshPrimitivesCalendarCalendarUnit (154) */ + export interface PolymeshPrimitivesCalendarCalendarUnit extends Enum { + readonly isSecond: boolean; + readonly isMinute: boolean; + readonly isHour: boolean; + readonly isDay: boolean; + readonly isWeek: boolean; + readonly isMonth: boolean; + readonly isYear: boolean; + readonly type: 'Second' | 'Minute' | 'Hour' | 'Day' | 'Week' | 'Month' | 'Year'; + } + + /** @name PalletComplianceManagerEvent (156) */ + export interface PalletComplianceManagerEvent extends Enum { + readonly isComplianceRequirementCreated: boolean; + readonly asComplianceRequirementCreated: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesComplianceManagerComplianceRequirement]>; + readonly isComplianceRequirementRemoved: boolean; + readonly asComplianceRequirementRemoved: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, u32]>; + readonly isAssetComplianceReplaced: boolean; + readonly asAssetComplianceReplaced: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, Vec]>; + readonly isAssetComplianceReset: boolean; + readonly asAssetComplianceReset: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker]>; + readonly isAssetComplianceResumed: boolean; + readonly asAssetComplianceResumed: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker]>; + readonly isAssetCompliancePaused: boolean; + readonly asAssetCompliancePaused: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker]>; + readonly isComplianceRequirementChanged: boolean; + readonly asComplianceRequirementChanged: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesComplianceManagerComplianceRequirement]>; + readonly isTrustedDefaultClaimIssuerAdded: boolean; + readonly asTrustedDefaultClaimIssuerAdded: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesConditionTrustedIssuer]>; + readonly isTrustedDefaultClaimIssuerRemoved: boolean; + readonly asTrustedDefaultClaimIssuerRemoved: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityId]>; + readonly type: 'ComplianceRequirementCreated' | 'ComplianceRequirementRemoved' | 'AssetComplianceReplaced' | 'AssetComplianceReset' | 'AssetComplianceResumed' | 'AssetCompliancePaused' | 'ComplianceRequirementChanged' | 'TrustedDefaultClaimIssuerAdded' | 'TrustedDefaultClaimIssuerRemoved'; + } + + /** @name PolymeshPrimitivesComplianceManagerComplianceRequirement (157) */ + export interface PolymeshPrimitivesComplianceManagerComplianceRequirement extends Struct { + readonly senderConditions: Vec; + readonly receiverConditions: Vec; + readonly id: u32; + } + + /** @name PolymeshPrimitivesCondition (159) */ + export interface PolymeshPrimitivesCondition extends Struct { + readonly conditionType: PolymeshPrimitivesConditionConditionType; + readonly issuers: Vec; + } + + /** @name PolymeshPrimitivesConditionConditionType (160) */ + export interface PolymeshPrimitivesConditionConditionType extends Enum { + readonly isIsPresent: boolean; + readonly asIsPresent: PolymeshPrimitivesIdentityClaimClaim; + readonly isIsAbsent: boolean; + readonly asIsAbsent: PolymeshPrimitivesIdentityClaimClaim; + readonly isIsAnyOf: boolean; + readonly asIsAnyOf: Vec; + readonly isIsNoneOf: boolean; + readonly asIsNoneOf: Vec; + readonly isIsIdentity: boolean; + readonly asIsIdentity: PolymeshPrimitivesConditionTargetIdentity; + readonly type: 'IsPresent' | 'IsAbsent' | 'IsAnyOf' | 'IsNoneOf' | 'IsIdentity'; + } + + /** @name PolymeshPrimitivesConditionTargetIdentity (162) */ + export interface PolymeshPrimitivesConditionTargetIdentity extends Enum { + readonly isExternalAgent: boolean; + readonly isSpecific: boolean; + readonly asSpecific: PolymeshPrimitivesIdentityId; + readonly type: 'ExternalAgent' | 'Specific'; + } + + /** @name PolymeshPrimitivesConditionTrustedIssuer (164) */ + export interface PolymeshPrimitivesConditionTrustedIssuer extends Struct { + readonly issuer: PolymeshPrimitivesIdentityId; + readonly trustedFor: PolymeshPrimitivesConditionTrustedFor; + } + + /** @name PolymeshPrimitivesConditionTrustedFor (165) */ + export interface PolymeshPrimitivesConditionTrustedFor extends Enum { + readonly isAny: boolean; + readonly isSpecific: boolean; + readonly asSpecific: Vec; + readonly type: 'Any' | 'Specific'; + } + + /** @name PolymeshPrimitivesIdentityClaimClaimType (167) */ + export interface PolymeshPrimitivesIdentityClaimClaimType extends Enum { + readonly isAccredited: boolean; + readonly isAffiliate: boolean; + readonly isBuyLockup: boolean; + readonly isSellLockup: boolean; + readonly isCustomerDueDiligence: boolean; + readonly isKnowYourCustomer: boolean; + readonly isJurisdiction: boolean; + readonly isExempted: boolean; + readonly isBlocked: boolean; + readonly isInvestorUniqueness: boolean; + readonly isNoType: boolean; + readonly isInvestorUniquenessV2: boolean; + readonly type: 'Accredited' | 'Affiliate' | 'BuyLockup' | 'SellLockup' | 'CustomerDueDiligence' | 'KnowYourCustomer' | 'Jurisdiction' | 'Exempted' | 'Blocked' | 'InvestorUniqueness' | 'NoType' | 'InvestorUniquenessV2'; + } + + /** @name PalletCorporateActionsEvent (169) */ + export interface PalletCorporateActionsEvent extends Enum { + readonly isMaxDetailsLengthChanged: boolean; + readonly asMaxDetailsLengthChanged: ITuple<[PolymeshPrimitivesIdentityId, u32]>; + readonly isDefaultTargetIdentitiesChanged: boolean; + readonly asDefaultTargetIdentitiesChanged: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PalletCorporateActionsTargetIdentities]>; + readonly isDefaultWithholdingTaxChanged: boolean; + readonly asDefaultWithholdingTaxChanged: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, Permill]>; + readonly isDidWithholdingTaxChanged: boolean; + readonly asDidWithholdingTaxChanged: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityId, Option]>; + readonly isCaaTransferred: boolean; + readonly asCaaTransferred: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityId]>; + readonly isCaInitiated: boolean; + readonly asCaInitiated: ITuple<[PolymeshPrimitivesEventOnly, PalletCorporateActionsCaId, PalletCorporateActionsCorporateAction, Bytes]>; + readonly isCaLinkedToDoc: boolean; + readonly asCaLinkedToDoc: ITuple<[PolymeshPrimitivesIdentityId, PalletCorporateActionsCaId, Vec]>; + readonly isCaRemoved: boolean; + readonly asCaRemoved: ITuple<[PolymeshPrimitivesEventOnly, PalletCorporateActionsCaId]>; + readonly isRecordDateChanged: boolean; + readonly asRecordDateChanged: ITuple<[PolymeshPrimitivesEventOnly, PalletCorporateActionsCaId, PalletCorporateActionsCorporateAction]>; + readonly type: 'MaxDetailsLengthChanged' | 'DefaultTargetIdentitiesChanged' | 'DefaultWithholdingTaxChanged' | 'DidWithholdingTaxChanged' | 'CaaTransferred' | 'CaInitiated' | 'CaLinkedToDoc' | 'CaRemoved' | 'RecordDateChanged'; + } + + /** @name PalletCorporateActionsTargetIdentities (170) */ + export interface PalletCorporateActionsTargetIdentities extends Struct { + readonly identities: Vec; + readonly treatment: PalletCorporateActionsTargetTreatment; + } + + /** @name PalletCorporateActionsTargetTreatment (171) */ + export interface PalletCorporateActionsTargetTreatment extends Enum { + readonly isInclude: boolean; + readonly isExclude: boolean; + readonly type: 'Include' | 'Exclude'; + } + + /** @name PalletCorporateActionsCorporateAction (173) */ + export interface PalletCorporateActionsCorporateAction extends Struct { + readonly kind: PalletCorporateActionsCaKind; + readonly declDate: u64; + readonly recordDate: Option; + readonly targets: PalletCorporateActionsTargetIdentities; + readonly defaultWithholdingTax: Permill; + readonly withholdingTax: Vec>; + } + + /** @name PalletCorporateActionsCaKind (174) */ + export interface PalletCorporateActionsCaKind extends Enum { + readonly isPredictableBenefit: boolean; + readonly isUnpredictableBenefit: boolean; + readonly isIssuerNotice: boolean; + readonly isReorganization: boolean; + readonly isOther: boolean; + readonly type: 'PredictableBenefit' | 'UnpredictableBenefit' | 'IssuerNotice' | 'Reorganization' | 'Other'; + } + + /** @name PalletCorporateActionsRecordDate (176) */ + export interface PalletCorporateActionsRecordDate extends Struct { + readonly date: u64; + readonly checkpoint: PalletCorporateActionsCaCheckpoint; + } + + /** @name PalletCorporateActionsCaCheckpoint (177) */ + export interface PalletCorporateActionsCaCheckpoint extends Enum { + readonly isScheduled: boolean; + readonly asScheduled: ITuple<[u64, u64]>; + readonly isExisting: boolean; + readonly asExisting: u64; + readonly type: 'Scheduled' | 'Existing'; + } + + /** @name PalletCorporateActionsBallotEvent (182) */ + export interface PalletCorporateActionsBallotEvent extends Enum { + readonly isCreated: boolean; + readonly asCreated: ITuple<[PolymeshPrimitivesIdentityId, PalletCorporateActionsCaId, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotMeta, bool]>; + readonly isVoteCast: boolean; + readonly asVoteCast: ITuple<[PolymeshPrimitivesIdentityId, PalletCorporateActionsCaId, Vec]>; + readonly isRangeChanged: boolean; + readonly asRangeChanged: ITuple<[PolymeshPrimitivesIdentityId, PalletCorporateActionsCaId, PalletCorporateActionsBallotBallotTimeRange]>; + readonly isMetaChanged: boolean; + readonly asMetaChanged: ITuple<[PolymeshPrimitivesIdentityId, PalletCorporateActionsCaId, PalletCorporateActionsBallotBallotMeta]>; + readonly isRcvChanged: boolean; + readonly asRcvChanged: ITuple<[PolymeshPrimitivesIdentityId, PalletCorporateActionsCaId, bool]>; + readonly isRemoved: boolean; + readonly asRemoved: ITuple<[PolymeshPrimitivesEventOnly, PalletCorporateActionsCaId]>; + readonly type: 'Created' | 'VoteCast' | 'RangeChanged' | 'MetaChanged' | 'RcvChanged' | 'Removed'; + } + + /** @name PalletCorporateActionsBallotBallotTimeRange (183) */ + export interface PalletCorporateActionsBallotBallotTimeRange extends Struct { + readonly start: u64; + readonly end: u64; + } + + /** @name PalletCorporateActionsBallotBallotMeta (184) */ + export interface PalletCorporateActionsBallotBallotMeta extends Struct { + readonly title: Bytes; + readonly motions: Vec; + } + + /** @name PalletCorporateActionsBallotMotion (187) */ + export interface PalletCorporateActionsBallotMotion extends Struct { + readonly title: Bytes; + readonly infoLink: Bytes; + readonly choices: Vec; + } + + /** @name PalletCorporateActionsBallotBallotVote (193) */ + export interface PalletCorporateActionsBallotBallotVote extends Struct { + readonly power: u128; + readonly fallback: Option; + } + + /** @name PalletPipsRawEvent (196) */ + export interface PalletPipsRawEvent extends Enum { + readonly isHistoricalPipsPruned: boolean; + readonly asHistoricalPipsPruned: ITuple<[PolymeshPrimitivesIdentityId, bool, bool]>; + readonly isProposalCreated: boolean; + readonly asProposalCreated: ITuple<[PolymeshPrimitivesIdentityId, PalletPipsProposer, u32, u128, Option, Option, PolymeshCommonUtilitiesMaybeBlock, PalletPipsProposalData]>; + readonly isProposalStateUpdated: boolean; + readonly asProposalStateUpdated: ITuple<[PolymeshPrimitivesIdentityId, u32, PalletPipsProposalState]>; + readonly isVoted: boolean; + readonly asVoted: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, u32, bool, u128]>; + readonly isPipClosed: boolean; + readonly asPipClosed: ITuple<[PolymeshPrimitivesIdentityId, u32, bool]>; + readonly isExecutionScheduled: boolean; + readonly asExecutionScheduled: ITuple<[PolymeshPrimitivesIdentityId, u32, u32]>; + readonly isDefaultEnactmentPeriodChanged: boolean; + readonly asDefaultEnactmentPeriodChanged: ITuple<[PolymeshPrimitivesIdentityId, u32, u32]>; + readonly isMinimumProposalDepositChanged: boolean; + readonly asMinimumProposalDepositChanged: ITuple<[PolymeshPrimitivesIdentityId, u128, u128]>; + readonly isPendingPipExpiryChanged: boolean; + readonly asPendingPipExpiryChanged: ITuple<[PolymeshPrimitivesIdentityId, PolymeshCommonUtilitiesMaybeBlock, PolymeshCommonUtilitiesMaybeBlock]>; + readonly isMaxPipSkipCountChanged: boolean; + readonly asMaxPipSkipCountChanged: ITuple<[PolymeshPrimitivesIdentityId, u8, u8]>; + readonly isActivePipLimitChanged: boolean; + readonly asActivePipLimitChanged: ITuple<[PolymeshPrimitivesIdentityId, u32, u32]>; + readonly isProposalRefund: boolean; + readonly asProposalRefund: ITuple<[PolymeshPrimitivesIdentityId, u32, u128]>; + readonly isSnapshotCleared: boolean; + readonly asSnapshotCleared: ITuple<[PolymeshPrimitivesIdentityId, u32]>; + readonly isSnapshotTaken: boolean; + readonly asSnapshotTaken: ITuple<[PolymeshPrimitivesIdentityId, u32, Vec]>; + readonly isPipSkipped: boolean; + readonly asPipSkipped: ITuple<[PolymeshPrimitivesIdentityId, u32, u8]>; + readonly isSnapshotResultsEnacted: boolean; + readonly asSnapshotResultsEnacted: ITuple<[PolymeshPrimitivesIdentityId, Option, Vec>, Vec, Vec]>; + readonly isExecutionSchedulingFailed: boolean; + readonly asExecutionSchedulingFailed: ITuple<[PolymeshPrimitivesIdentityId, u32, u32]>; + readonly isExpiryScheduled: boolean; + readonly asExpiryScheduled: ITuple<[PolymeshPrimitivesIdentityId, u32, u32]>; + readonly isExpirySchedulingFailed: boolean; + readonly asExpirySchedulingFailed: ITuple<[PolymeshPrimitivesIdentityId, u32, u32]>; + readonly isExecutionCancellingFailed: boolean; + readonly asExecutionCancellingFailed: u32; + readonly type: 'HistoricalPipsPruned' | 'ProposalCreated' | 'ProposalStateUpdated' | 'Voted' | 'PipClosed' | 'ExecutionScheduled' | 'DefaultEnactmentPeriodChanged' | 'MinimumProposalDepositChanged' | 'PendingPipExpiryChanged' | 'MaxPipSkipCountChanged' | 'ActivePipLimitChanged' | 'ProposalRefund' | 'SnapshotCleared' | 'SnapshotTaken' | 'PipSkipped' | 'SnapshotResultsEnacted' | 'ExecutionSchedulingFailed' | 'ExpiryScheduled' | 'ExpirySchedulingFailed' | 'ExecutionCancellingFailed'; + } + + /** @name PalletPipsProposer (197) */ + export interface PalletPipsProposer extends Enum { + readonly isCommunity: boolean; + readonly asCommunity: AccountId32; + readonly isCommittee: boolean; + readonly asCommittee: PalletPipsCommittee; + readonly type: 'Community' | 'Committee'; + } + + /** @name PalletPipsCommittee (198) */ + export interface PalletPipsCommittee extends Enum { + readonly isTechnical: boolean; + readonly isUpgrade: boolean; + readonly type: 'Technical' | 'Upgrade'; + } + + /** @name PalletPipsProposalData (204) */ + export interface PalletPipsProposalData extends Enum { + readonly isHash: boolean; + readonly asHash: H256; + readonly isProposal: boolean; + readonly asProposal: Bytes; + readonly type: 'Hash' | 'Proposal'; + } + + /** @name PalletPipsProposalState (205) */ + export interface PalletPipsProposalState extends Enum { + readonly isPending: boolean; + readonly isRejected: boolean; + readonly isScheduled: boolean; + readonly isFailed: boolean; + readonly isExecuted: boolean; + readonly isExpired: boolean; + readonly type: 'Pending' | 'Rejected' | 'Scheduled' | 'Failed' | 'Executed' | 'Expired'; + } + + /** @name PalletPipsSnapshottedPip (208) */ + export interface PalletPipsSnapshottedPip extends Struct { + readonly id: u32; + readonly weight: ITuple<[bool, u128]>; + } + + /** @name PolymeshCommonUtilitiesPortfolioEvent (214) */ + export interface PolymeshCommonUtilitiesPortfolioEvent extends Enum { + readonly isPortfolioCreated: boolean; + readonly asPortfolioCreated: ITuple<[PolymeshPrimitivesIdentityId, u64, Bytes]>; + readonly isPortfolioDeleted: boolean; + readonly asPortfolioDeleted: ITuple<[PolymeshPrimitivesIdentityId, u64]>; + readonly isMovedBetweenPortfolios: boolean; + readonly asMovedBetweenPortfolios: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesTicker, u128, Option]>; + readonly isPortfolioRenamed: boolean; + readonly asPortfolioRenamed: ITuple<[PolymeshPrimitivesIdentityId, u64, Bytes]>; + readonly isUserPortfolios: boolean; + readonly asUserPortfolios: ITuple<[PolymeshPrimitivesIdentityId, Vec>]>; + readonly isPortfolioCustodianChanged: boolean; + readonly asPortfolioCustodianChanged: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesIdentityId]>; + readonly type: 'PortfolioCreated' | 'PortfolioDeleted' | 'MovedBetweenPortfolios' | 'PortfolioRenamed' | 'UserPortfolios' | 'PortfolioCustodianChanged'; + } + + /** @name PalletProtocolFeeRawEvent (218) */ + export interface PalletProtocolFeeRawEvent extends Enum { + readonly isFeeSet: boolean; + readonly asFeeSet: ITuple<[PolymeshPrimitivesIdentityId, u128]>; + readonly isCoefficientSet: boolean; + readonly asCoefficientSet: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesPosRatio]>; + readonly isFeeCharged: boolean; + readonly asFeeCharged: ITuple<[AccountId32, u128]>; + readonly type: 'FeeSet' | 'CoefficientSet' | 'FeeCharged'; + } + + /** @name PolymeshPrimitivesPosRatio (219) */ + export interface PolymeshPrimitivesPosRatio extends ITuple<[u32, u32]> {} + + /** @name PalletSchedulerEvent (220) */ + export interface PalletSchedulerEvent extends Enum { + readonly isScheduled: boolean; + readonly asScheduled: ITuple<[u32, u32]>; + readonly isCanceled: boolean; + readonly asCanceled: ITuple<[u32, u32]>; + readonly isDispatched: boolean; + readonly asDispatched: ITuple<[ITuple<[u32, u32]>, Option, Result]>; + readonly type: 'Scheduled' | 'Canceled' | 'Dispatched'; + } + + /** @name PalletSettlementRawEvent (223) */ + export interface PalletSettlementRawEvent extends Enum { + readonly isVenueCreated: boolean; + readonly asVenueCreated: ITuple<[PolymeshPrimitivesIdentityId, u64, Bytes, PalletSettlementVenueType]>; + readonly isVenueDetailsUpdated: boolean; + readonly asVenueDetailsUpdated: ITuple<[PolymeshPrimitivesIdentityId, u64, Bytes]>; + readonly isVenueTypeUpdated: boolean; + readonly asVenueTypeUpdated: ITuple<[PolymeshPrimitivesIdentityId, u64, PalletSettlementVenueType]>; + readonly isInstructionCreated: boolean; + readonly asInstructionCreated: ITuple<[PolymeshPrimitivesIdentityId, u64, u64, PalletSettlementSettlementType, Option, Option, Vec]>; + readonly isInstructionAffirmed: boolean; + readonly asInstructionAffirmed: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, u64]>; + readonly isAffirmationWithdrawn: boolean; + readonly asAffirmationWithdrawn: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, u64]>; + readonly isInstructionRejected: boolean; + readonly asInstructionRejected: ITuple<[PolymeshPrimitivesIdentityId, u64]>; + readonly isReceiptClaimed: boolean; + readonly asReceiptClaimed: ITuple<[PolymeshPrimitivesIdentityId, u64, u64, u64, AccountId32, Bytes]>; + readonly isReceiptValidityChanged: boolean; + readonly asReceiptValidityChanged: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, u64, bool]>; + readonly isReceiptUnclaimed: boolean; + readonly asReceiptUnclaimed: ITuple<[PolymeshPrimitivesIdentityId, u64, u64, u64, AccountId32]>; + readonly isVenueFiltering: boolean; + readonly asVenueFiltering: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, bool]>; + readonly isVenuesAllowed: boolean; + readonly asVenuesAllowed: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, Vec]>; + readonly isVenuesBlocked: boolean; + readonly asVenuesBlocked: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, Vec]>; + readonly isLegFailedExecution: boolean; + readonly asLegFailedExecution: ITuple<[PolymeshPrimitivesIdentityId, u64, u64]>; + readonly isInstructionFailed: boolean; + readonly asInstructionFailed: ITuple<[PolymeshPrimitivesIdentityId, u64]>; + readonly isInstructionExecuted: boolean; + readonly asInstructionExecuted: ITuple<[PolymeshPrimitivesIdentityId, u64]>; + readonly isVenueUnauthorized: boolean; + readonly asVenueUnauthorized: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, u64]>; + readonly isSchedulingFailed: boolean; + readonly asSchedulingFailed: SpRuntimeDispatchError; + readonly isInstructionRescheduled: boolean; + readonly asInstructionRescheduled: ITuple<[PolymeshPrimitivesIdentityId, u64]>; + readonly type: 'VenueCreated' | 'VenueDetailsUpdated' | 'VenueTypeUpdated' | 'InstructionCreated' | 'InstructionAffirmed' | 'AffirmationWithdrawn' | 'InstructionRejected' | 'ReceiptClaimed' | 'ReceiptValidityChanged' | 'ReceiptUnclaimed' | 'VenueFiltering' | 'VenuesAllowed' | 'VenuesBlocked' | 'LegFailedExecution' | 'InstructionFailed' | 'InstructionExecuted' | 'VenueUnauthorized' | 'SchedulingFailed' | 'InstructionRescheduled'; + } + + /** @name PalletSettlementVenueType (226) */ + export interface PalletSettlementVenueType extends Enum { + readonly isOther: boolean; + readonly isDistribution: boolean; + readonly isSto: boolean; + readonly isExchange: boolean; + readonly type: 'Other' | 'Distribution' | 'Sto' | 'Exchange'; + } + + /** @name PalletSettlementSettlementType (228) */ + export interface PalletSettlementSettlementType extends Enum { + readonly isSettleOnAffirmation: boolean; + readonly isSettleOnBlock: boolean; + readonly asSettleOnBlock: u32; + readonly type: 'SettleOnAffirmation' | 'SettleOnBlock'; + } + + /** @name PalletSettlementLeg (230) */ + export interface PalletSettlementLeg extends Struct { + readonly from: PolymeshPrimitivesIdentityIdPortfolioId; + readonly to: PolymeshPrimitivesIdentityIdPortfolioId; + readonly asset: PolymeshPrimitivesTicker; + readonly amount: u128; + } + + /** @name PolymeshCommonUtilitiesStatisticsEvent (234) */ + export interface PolymeshCommonUtilitiesStatisticsEvent extends Enum { + readonly isTransferManagerAdded: boolean; + readonly asTransferManagerAdded: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesStatisticsTransferManager]>; + readonly isTransferManagerRemoved: boolean; + readonly asTransferManagerRemoved: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesStatisticsTransferManager]>; + readonly isExemptionsAdded: boolean; + readonly asExemptionsAdded: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesStatisticsTransferManager, Vec]>; + readonly isExemptionsRemoved: boolean; + readonly asExemptionsRemoved: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesStatisticsTransferManager, Vec]>; + readonly type: 'TransferManagerAdded' | 'TransferManagerRemoved' | 'ExemptionsAdded' | 'ExemptionsRemoved'; + } + + /** @name PolymeshPrimitivesStatisticsTransferManager (235) */ + export interface PolymeshPrimitivesStatisticsTransferManager extends Enum { + readonly isCountTransferManager: boolean; + readonly asCountTransferManager: u64; + readonly isPercentageTransferManager: boolean; + readonly asPercentageTransferManager: Permill; + readonly type: 'CountTransferManager' | 'PercentageTransferManager'; + } + + /** @name PalletStoRawEvent (237) */ + export interface PalletStoRawEvent extends Enum { + readonly isFundraiserCreated: boolean; + readonly asFundraiserCreated: ITuple<[PolymeshPrimitivesIdentityId, u64, Bytes, PalletStoFundraiser]>; + readonly isInvested: boolean; + readonly asInvested: ITuple<[PolymeshPrimitivesIdentityId, u64, PolymeshPrimitivesTicker, PolymeshPrimitivesTicker, u128, u128]>; + readonly isFundraiserFrozen: boolean; + readonly asFundraiserFrozen: ITuple<[PolymeshPrimitivesIdentityId, u64]>; + readonly isFundraiserUnfrozen: boolean; + readonly asFundraiserUnfrozen: ITuple<[PolymeshPrimitivesIdentityId, u64]>; + readonly isFundraiserWindowModified: boolean; + readonly asFundraiserWindowModified: ITuple<[PolymeshPrimitivesEventOnly, u64, u64, Option, u64, Option]>; + readonly isFundraiserClosed: boolean; + readonly asFundraiserClosed: ITuple<[PolymeshPrimitivesIdentityId, u64]>; + readonly type: 'FundraiserCreated' | 'Invested' | 'FundraiserFrozen' | 'FundraiserUnfrozen' | 'FundraiserWindowModified' | 'FundraiserClosed'; + } + + /** @name PalletStoFundraiser (240) */ + export interface PalletStoFundraiser extends Struct { + readonly creator: PolymeshPrimitivesIdentityId; + readonly offeringPortfolio: PolymeshPrimitivesIdentityIdPortfolioId; + readonly offeringAsset: PolymeshPrimitivesTicker; + readonly raisingPortfolio: PolymeshPrimitivesIdentityIdPortfolioId; + readonly raisingAsset: PolymeshPrimitivesTicker; + readonly tiers: Vec; + readonly venueId: u64; + readonly start: u64; + readonly end: Option; + readonly status: PalletStoFundraiserStatus; + readonly minimumInvestment: u128; + } + + /** @name PalletStoFundraiserTier (242) */ + export interface PalletStoFundraiserTier extends Struct { + readonly total: u128; + readonly price: u128; + readonly remaining: u128; + } + + /** @name PalletStoFundraiserStatus (243) */ + export interface PalletStoFundraiserStatus extends Enum { + readonly isLive: boolean; + readonly isFrozen: boolean; + readonly isClosed: boolean; + readonly isClosedEarly: boolean; + readonly type: 'Live' | 'Frozen' | 'Closed' | 'ClosedEarly'; + } + + /** @name PalletTreasuryRawEvent (244) */ + export interface PalletTreasuryRawEvent extends Enum { + readonly isTreasuryDisbursement: boolean; + readonly asTreasuryDisbursement: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId, u128]>; + readonly isTreasuryReimbursement: boolean; + readonly asTreasuryReimbursement: ITuple<[PolymeshPrimitivesIdentityId, u128]>; + readonly type: 'TreasuryDisbursement' | 'TreasuryReimbursement'; + } + + /** @name PalletUtilityEvent (245) */ + export interface PalletUtilityEvent extends Enum { + readonly isBatchInterrupted: boolean; + readonly asBatchInterrupted: ITuple<[Vec, ITuple<[u32, SpRuntimeDispatchError]>]>; + readonly isBatchOptimisticFailed: boolean; + readonly asBatchOptimisticFailed: ITuple<[Vec, Vec>]>; + readonly isBatchCompleted: boolean; + readonly asBatchCompleted: Vec; + readonly type: 'BatchInterrupted' | 'BatchOptimisticFailed' | 'BatchCompleted'; + } + + /** @name PolymeshCommonUtilitiesBaseEvent (249) */ + export interface PolymeshCommonUtilitiesBaseEvent extends Enum { + readonly isUnexpectedError: boolean; + readonly asUnexpectedError: Option; + readonly type: 'UnexpectedError'; + } + + /** @name PolymeshCommonUtilitiesExternalAgentsEvent (251) */ + export interface PolymeshCommonUtilitiesExternalAgentsEvent extends Enum { + readonly isGroupCreated: boolean; + readonly asGroupCreated: ITuple<[PolymeshPrimitivesEventOnly, PolymeshPrimitivesTicker, u32, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions]>; + readonly isGroupPermissionsUpdated: boolean; + readonly asGroupPermissionsUpdated: ITuple<[PolymeshPrimitivesEventOnly, PolymeshPrimitivesTicker, u32, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions]>; + readonly isAgentAdded: boolean; + readonly asAgentAdded: ITuple<[PolymeshPrimitivesEventOnly, PolymeshPrimitivesTicker, PolymeshPrimitivesAgentAgentGroup]>; + readonly isAgentRemoved: boolean; + readonly asAgentRemoved: ITuple<[PolymeshPrimitivesEventOnly, PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityId]>; + readonly isGroupChanged: boolean; + readonly asGroupChanged: ITuple<[PolymeshPrimitivesEventOnly, PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityId, PolymeshPrimitivesAgentAgentGroup]>; + readonly type: 'GroupCreated' | 'GroupPermissionsUpdated' | 'AgentAdded' | 'AgentRemoved' | 'GroupChanged'; + } + + /** @name PolymeshCommonUtilitiesRelayerRawEvent (252) */ + export interface PolymeshCommonUtilitiesRelayerRawEvent extends Enum { + readonly isAuthorizedPayingKey: boolean; + readonly asAuthorizedPayingKey: ITuple<[PolymeshPrimitivesEventOnly, AccountId32, AccountId32, u128, u64]>; + readonly isAcceptedPayingKey: boolean; + readonly asAcceptedPayingKey: ITuple<[PolymeshPrimitivesEventOnly, AccountId32, AccountId32]>; + readonly isRemovedPayingKey: boolean; + readonly asRemovedPayingKey: ITuple<[PolymeshPrimitivesEventOnly, AccountId32, AccountId32]>; + readonly isUpdatedPolyxLimit: boolean; + readonly asUpdatedPolyxLimit: ITuple<[PolymeshPrimitivesEventOnly, AccountId32, AccountId32, u128, u128]>; + readonly type: 'AuthorizedPayingKey' | 'AcceptedPayingKey' | 'RemovedPayingKey' | 'UpdatedPolyxLimit'; + } + + /** @name PalletRewardsRawEvent (253) */ + export interface PalletRewardsRawEvent extends Enum { + readonly isItnRewardClaimed: boolean; + readonly asItnRewardClaimed: ITuple<[AccountId32, u128]>; + readonly type: 'ItnRewardClaimed'; + } + + /** @name PalletTestUtilsRawEvent (254) */ + export interface PalletTestUtilsRawEvent extends Enum { + readonly isMockInvestorUIDCreated: boolean; + readonly asMockInvestorUIDCreated: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesCddIdInvestorUid]>; + readonly isDidStatus: boolean; + readonly asDidStatus: ITuple<[PolymeshPrimitivesIdentityId, AccountId32]>; + readonly isCddStatus: boolean; + readonly asCddStatus: ITuple<[Option, AccountId32, bool]>; + readonly type: 'MockInvestorUIDCreated' | 'DidStatus' | 'CddStatus'; + } + + /** @name FrameSystemPhase (255) */ + export interface FrameSystemPhase extends Enum { + readonly isApplyExtrinsic: boolean; + readonly asApplyExtrinsic: u32; + readonly isFinalization: boolean; + readonly isInitialization: boolean; + readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization'; + } + + /** @name FrameSystemLastRuntimeUpgradeInfo (258) */ + export interface FrameSystemLastRuntimeUpgradeInfo extends Struct { + readonly specVersion: Compact; + readonly specName: Text; + } + + /** @name FrameSystemCall (261) */ + export interface FrameSystemCall extends Enum { + readonly isFillBlock: boolean; + readonly asFillBlock: { + readonly ratio: Perbill; + } & Struct; + readonly isRemark: boolean; + readonly asRemark: { + readonly remark: Bytes; + } & Struct; + readonly isSetHeapPages: boolean; + readonly asSetHeapPages: { + readonly pages: u64; + } & Struct; + readonly isSetCode: boolean; + readonly asSetCode: { + readonly code: Bytes; + } & Struct; + readonly isSetCodeWithoutChecks: boolean; + readonly asSetCodeWithoutChecks: { + readonly code: Bytes; + } & Struct; + readonly isSetChangesTrieConfig: boolean; + readonly asSetChangesTrieConfig: { + readonly changesTrieConfig: Option; + } & Struct; + readonly isSetStorage: boolean; + readonly asSetStorage: { + readonly items: Vec>; + } & Struct; + readonly isKillStorage: boolean; + readonly asKillStorage: { + readonly keys_: Vec; + } & Struct; + readonly isKillPrefix: boolean; + readonly asKillPrefix: { + readonly prefix: Bytes; + readonly subkeys: u32; + } & Struct; + readonly isRemarkWithEvent: boolean; + readonly asRemarkWithEvent: { + readonly remark: Bytes; + } & Struct; + readonly type: 'FillBlock' | 'Remark' | 'SetHeapPages' | 'SetCode' | 'SetCodeWithoutChecks' | 'SetChangesTrieConfig' | 'SetStorage' | 'KillStorage' | 'KillPrefix' | 'RemarkWithEvent'; + } + + /** @name FrameSystemLimitsBlockWeights (265) */ + export interface FrameSystemLimitsBlockWeights extends Struct { + readonly baseBlock: u64; + readonly maxBlock: u64; + readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass; + } + + /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (266) */ + export interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct { + readonly normal: FrameSystemLimitsWeightsPerClass; + readonly operational: FrameSystemLimitsWeightsPerClass; + readonly mandatory: FrameSystemLimitsWeightsPerClass; + } + + /** @name FrameSystemLimitsWeightsPerClass (267) */ + export interface FrameSystemLimitsWeightsPerClass extends Struct { + readonly baseExtrinsic: u64; + readonly maxExtrinsic: Option; + readonly maxTotal: Option; + readonly reserved: Option; + } + + /** @name FrameSystemLimitsBlockLength (268) */ + export interface FrameSystemLimitsBlockLength extends Struct { + readonly max: FrameSupportWeightsPerDispatchClassU32; + } + + /** @name FrameSupportWeightsPerDispatchClassU32 (269) */ + export interface FrameSupportWeightsPerDispatchClassU32 extends Struct { + readonly normal: u32; + readonly operational: u32; + readonly mandatory: u32; + } + + /** @name FrameSupportWeightsRuntimeDbWeight (270) */ + export interface FrameSupportWeightsRuntimeDbWeight extends Struct { + readonly read: u64; + readonly write: u64; + } + + /** @name SpVersionRuntimeVersion (271) */ + export interface SpVersionRuntimeVersion extends Struct { + readonly specName: Text; + readonly implName: Text; + readonly authoringVersion: u32; + readonly specVersion: u32; + readonly implVersion: u32; + readonly apis: Vec>; + readonly transactionVersion: u32; + } + + /** @name FrameSystemError (276) */ + export interface FrameSystemError extends Enum { + readonly isInvalidSpecName: boolean; + readonly isSpecVersionNeedsToIncrease: boolean; + readonly isFailedToExtractRuntimeVersion: boolean; + readonly isNonDefaultComposite: boolean; + readonly isNonZeroRefCount: boolean; + readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount'; + } + + /** @name SpConsensusBabeAppPublic (279) */ + export interface SpConsensusBabeAppPublic extends SpCoreSr25519Public {} + + /** @name SpConsensusBabeDigestsNextConfigDescriptor (282) */ + export interface SpConsensusBabeDigestsNextConfigDescriptor extends Enum { + readonly isV1: boolean; + readonly asV1: { + readonly c: ITuple<[u64, u64]>; + readonly allowedSlots: SpConsensusBabeAllowedSlots; + } & Struct; + readonly type: 'V1'; + } + + /** @name SpConsensusBabeAllowedSlots (284) */ + export interface SpConsensusBabeAllowedSlots extends Enum { + readonly isPrimarySlots: boolean; + readonly isPrimaryAndSecondaryPlainSlots: boolean; + readonly isPrimaryAndSecondaryVRFSlots: boolean; + readonly type: 'PrimarySlots' | 'PrimaryAndSecondaryPlainSlots' | 'PrimaryAndSecondaryVRFSlots'; + } + + /** @name SpConsensusBabeBabeEpochConfiguration (288) */ + export interface SpConsensusBabeBabeEpochConfiguration extends Struct { + readonly c: ITuple<[u64, u64]>; + readonly allowedSlots: SpConsensusBabeAllowedSlots; + } + + /** @name PalletBabeCall (289) */ + export interface PalletBabeCall extends Enum { + readonly isReportEquivocation: boolean; + readonly asReportEquivocation: { + readonly equivocationProof: SpConsensusSlotsEquivocationProof; + readonly keyOwnerProof: SpSessionMembershipProof; + } & Struct; + readonly isReportEquivocationUnsigned: boolean; + readonly asReportEquivocationUnsigned: { + readonly equivocationProof: SpConsensusSlotsEquivocationProof; + readonly keyOwnerProof: SpSessionMembershipProof; + } & Struct; + readonly isPlanConfigChange: boolean; + readonly asPlanConfigChange: { + readonly config: SpConsensusBabeDigestsNextConfigDescriptor; + } & Struct; + readonly type: 'ReportEquivocation' | 'ReportEquivocationUnsigned' | 'PlanConfigChange'; + } + + /** @name SpConsensusSlotsEquivocationProof (290) */ + export interface SpConsensusSlotsEquivocationProof extends Struct { + readonly offender: SpConsensusBabeAppPublic; + readonly slot: u64; + readonly firstHeader: SpRuntimeHeader; + readonly secondHeader: SpRuntimeHeader; + } + + /** @name SpRuntimeHeader (291) */ + export interface SpRuntimeHeader extends Struct { + readonly parentHash: H256; + readonly number: Compact; + readonly stateRoot: H256; + readonly extrinsicsRoot: H256; + readonly digest: SpRuntimeDigest; + } + + /** @name SpRuntimeBlakeTwo256 (292) */ + export type SpRuntimeBlakeTwo256 = Null; + + /** @name SpSessionMembershipProof (293) */ + export interface SpSessionMembershipProof extends Struct { + readonly session: u32; + readonly trieNodes: Vec; + readonly validatorCount: u32; + } + + /** @name PalletBabeError (294) */ + export interface PalletBabeError extends Enum { + readonly isInvalidEquivocationProof: boolean; + readonly isInvalidKeyOwnershipProof: boolean; + readonly isDuplicateOffenceReport: boolean; + readonly type: 'InvalidEquivocationProof' | 'InvalidKeyOwnershipProof' | 'DuplicateOffenceReport'; + } + + /** @name PalletTimestampCall (295) */ + export interface PalletTimestampCall extends Enum { + readonly isSet: boolean; + readonly asSet: { + readonly now: Compact; + } & Struct; + readonly type: 'Set'; + } + + /** @name PalletIndicesCall (298) */ + export interface PalletIndicesCall extends Enum { + readonly isClaim: boolean; + readonly asClaim: { + readonly index: u32; + } & Struct; + readonly isTransfer: boolean; + readonly asTransfer: { + readonly new_: AccountId32; + readonly index: u32; + } & Struct; + readonly isFree: boolean; + readonly asFree: { + readonly index: u32; + } & Struct; + readonly isForceTransfer: boolean; + readonly asForceTransfer: { + readonly new_: AccountId32; + readonly index: u32; + readonly freeze: bool; + } & Struct; + readonly isFreeze: boolean; + readonly asFreeze: { + readonly index: u32; + } & Struct; + readonly type: 'Claim' | 'Transfer' | 'Free' | 'ForceTransfer' | 'Freeze'; + } + + /** @name PalletIndicesError (299) */ + export interface PalletIndicesError extends Enum { + readonly isNotAssigned: boolean; + readonly isNotOwner: boolean; + readonly isInUse: boolean; + readonly isNotTransfer: boolean; + readonly isPermanent: boolean; + readonly type: 'NotAssigned' | 'NotOwner' | 'InUse' | 'NotTransfer' | 'Permanent'; + } + + /** @name PalletAuthorshipUncleEntryItem (301) */ + export interface PalletAuthorshipUncleEntryItem extends Enum { + readonly isInclusionHeight: boolean; + readonly asInclusionHeight: u32; + readonly isUncle: boolean; + readonly asUncle: ITuple<[H256, Option]>; + readonly type: 'InclusionHeight' | 'Uncle'; + } + + /** @name PalletAuthorshipCall (302) */ + export interface PalletAuthorshipCall extends Enum { + readonly isSetUncles: boolean; + readonly asSetUncles: { + readonly newUncles: Vec; + } & Struct; + readonly type: 'SetUncles'; + } + + /** @name PalletAuthorshipError (304) */ + export interface PalletAuthorshipError extends Enum { + readonly isInvalidUncleParent: boolean; + readonly isUnclesAlreadySet: boolean; + readonly isTooManyUncles: boolean; + readonly isGenesisUncle: boolean; + readonly isTooHighUncle: boolean; + readonly isUncleAlreadyIncluded: boolean; + readonly isOldUncle: boolean; + readonly type: 'InvalidUncleParent' | 'UnclesAlreadySet' | 'TooManyUncles' | 'GenesisUncle' | 'TooHighUncle' | 'UncleAlreadyIncluded' | 'OldUncle'; + } + + /** @name PalletBalancesBalanceLock (306) */ + export interface PalletBalancesBalanceLock extends Struct { + readonly id: U8aFixed; + readonly amount: u128; + readonly reasons: PolymeshCommonUtilitiesBalancesReasons; + } + + /** @name PolymeshCommonUtilitiesBalancesReasons (307) */ + export interface PolymeshCommonUtilitiesBalancesReasons extends Enum { + readonly isFee: boolean; + readonly isMisc: boolean; + readonly isAll: boolean; + readonly type: 'Fee' | 'Misc' | 'All'; + } + + /** @name PalletBalancesCall (308) */ + export interface PalletBalancesCall extends Enum { + readonly isTransfer: boolean; + readonly asTransfer: { + readonly dest: MultiAddress; + readonly value: Compact; + } & Struct; + readonly isTransferWithMemo: boolean; + readonly asTransferWithMemo: { + readonly dest: MultiAddress; + readonly value: Compact; + readonly memo: Option; + } & Struct; + readonly isDepositBlockRewardReserveBalance: boolean; + readonly asDepositBlockRewardReserveBalance: { + readonly value: Compact; + } & Struct; + readonly isSetBalance: boolean; + readonly asSetBalance: { + readonly who: MultiAddress; + readonly newFree: Compact; + readonly newReserved: Compact; + } & Struct; + readonly isForceTransfer: boolean; + readonly asForceTransfer: { + readonly source: MultiAddress; + readonly dest: MultiAddress; + readonly value: Compact; + } & Struct; + readonly isBurnAccountBalance: boolean; + readonly asBurnAccountBalance: { + readonly amount: u128; + } & Struct; + readonly type: 'Transfer' | 'TransferWithMemo' | 'DepositBlockRewardReserveBalance' | 'SetBalance' | 'ForceTransfer' | 'BurnAccountBalance'; + } + + /** @name PalletBalancesError (310) */ + export interface PalletBalancesError extends Enum { + readonly isLiquidityRestrictions: boolean; + readonly isOverflow: boolean; + readonly isInsufficientBalance: boolean; + readonly isExistentialDeposit: boolean; + readonly isReceiverCddMissing: boolean; + readonly type: 'LiquidityRestrictions' | 'Overflow' | 'InsufficientBalance' | 'ExistentialDeposit' | 'ReceiverCddMissing'; + } + + /** @name PalletTransactionPaymentReleases (312) */ + export interface PalletTransactionPaymentReleases extends Enum { + readonly isV1Ancient: boolean; + readonly isV2: boolean; + readonly type: 'V1Ancient' | 'V2'; + } + + /** @name FrameSupportWeightsWeightToFeeCoefficient (314) */ + export interface FrameSupportWeightsWeightToFeeCoefficient extends Struct { + readonly coeffInteger: u128; + readonly coeffFrac: Perbill; + readonly negative: bool; + readonly degree: u8; + } + + /** @name PolymeshPrimitivesIdentity (315) */ + export interface PolymeshPrimitivesIdentity extends Struct { + readonly primaryKey: AccountId32; + readonly secondaryKeys: Vec; + } + + /** @name PolymeshPrimitivesSecondaryKey (317) */ + export interface PolymeshPrimitivesSecondaryKey extends Struct { + readonly signer: PolymeshPrimitivesSecondaryKeySignatory; + readonly permissions: PolymeshPrimitivesSecondaryKeyPermissions; + } + + /** @name PalletIdentityClaim1stKey (319) */ + export interface PalletIdentityClaim1stKey extends Struct { + readonly target: PolymeshPrimitivesIdentityId; + readonly claimType: PolymeshPrimitivesIdentityClaimClaimType; + } + + /** @name PalletIdentityClaim2ndKey (320) */ + export interface PalletIdentityClaim2ndKey extends Struct { + readonly issuer: PolymeshPrimitivesIdentityId; + readonly scope: Option; + } + + /** @name PolymeshPrimitivesAuthorization (323) */ + export interface PolymeshPrimitivesAuthorization extends Struct { + readonly authorizationData: PolymeshPrimitivesAuthorizationAuthorizationData; + readonly authorizedBy: PolymeshPrimitivesIdentityId; + readonly expiry: Option; + readonly authId: u64; + } + + /** @name PalletIdentityCall (326) */ + export interface PalletIdentityCall extends Enum { + readonly isCddRegisterDid: boolean; + readonly asCddRegisterDid: { + readonly targetAccount: AccountId32; + readonly secondaryKeys: Vec; + } & Struct; + readonly isInvalidateCddClaims: boolean; + readonly asInvalidateCddClaims: { + readonly cdd: PolymeshPrimitivesIdentityId; + readonly disableFrom: u64; + readonly expiry: Option; + } & Struct; + readonly isRemoveSecondaryKeys: boolean; + readonly asRemoveSecondaryKeys: { + readonly signersToRemove: Vec; + } & Struct; + readonly isAcceptPrimaryKey: boolean; + readonly asAcceptPrimaryKey: { + readonly rotationAuthId: u64; + readonly optionalCddAuthId: Option; + } & Struct; + readonly isChangeCddRequirementForMkRotation: boolean; + readonly asChangeCddRequirementForMkRotation: { + readonly authRequired: bool; + } & Struct; + readonly isJoinIdentityAsKey: boolean; + readonly asJoinIdentityAsKey: { + readonly authId: u64; + } & Struct; + readonly isLeaveIdentityAsKey: boolean; + readonly isAddClaim: boolean; + readonly asAddClaim: { + readonly target: PolymeshPrimitivesIdentityId; + readonly claim: PolymeshPrimitivesIdentityClaimClaim; + readonly expiry: Option; + } & Struct; + readonly isRevokeClaim: boolean; + readonly asRevokeClaim: { + readonly target: PolymeshPrimitivesIdentityId; + readonly claim: PolymeshPrimitivesIdentityClaimClaim; + } & Struct; + readonly isSetPermissionToSigner: boolean; + readonly asSetPermissionToSigner: { + readonly signer: PolymeshPrimitivesSecondaryKeySignatory; + readonly perms: PolymeshPrimitivesSecondaryKeyPermissions; + } & Struct; + readonly isLegacySetPermissionToSigner: boolean; + readonly asLegacySetPermissionToSigner: { + readonly signer: PolymeshPrimitivesSecondaryKeySignatory; + readonly permissions: PolymeshPrimitivesSecondaryKeyApiLegacyPermissions; + } & Struct; + readonly isFreezeSecondaryKeys: boolean; + readonly isUnfreezeSecondaryKeys: boolean; + readonly isAddAuthorization: boolean; + readonly asAddAuthorization: { + readonly target: PolymeshPrimitivesSecondaryKeySignatory; + readonly data: PolymeshPrimitivesAuthorizationAuthorizationData; + readonly expiry: Option; + } & Struct; + readonly isRemoveAuthorization: boolean; + readonly asRemoveAuthorization: { + readonly target: PolymeshPrimitivesSecondaryKeySignatory; + readonly authId: u64; + readonly authIssuerPays: bool; + } & Struct; + readonly isAddSecondaryKeysWithAuthorization: boolean; + readonly asAddSecondaryKeysWithAuthorization: { + readonly additionalKeys: Vec; + readonly expiresAt: u64; + } & Struct; + readonly isAddInvestorUniquenessClaim: boolean; + readonly asAddInvestorUniquenessClaim: { + readonly target: PolymeshPrimitivesIdentityId; + readonly claim: PolymeshPrimitivesIdentityClaimClaim; + readonly proof: PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData; + readonly expiry: Option; + } & Struct; + readonly isGcAddCddClaim: boolean; + readonly asGcAddCddClaim: { + readonly target: PolymeshPrimitivesIdentityId; + } & Struct; + readonly isGcRevokeCddClaim: boolean; + readonly asGcRevokeCddClaim: { + readonly target: PolymeshPrimitivesIdentityId; + } & Struct; + readonly isAddInvestorUniquenessClaimV2: boolean; + readonly asAddInvestorUniquenessClaimV2: { + readonly target: PolymeshPrimitivesIdentityId; + readonly scope: PolymeshPrimitivesIdentityClaimScope; + readonly claim: PolymeshPrimitivesIdentityClaimClaim; + readonly proof: ConfidentialIdentityClaimProofsScopeClaimProof; + readonly expiry: Option; + } & Struct; + readonly isRevokeClaimByIndex: boolean; + readonly asRevokeClaimByIndex: { + readonly target: PolymeshPrimitivesIdentityId; + readonly claimType: PolymeshPrimitivesIdentityClaimClaimType; + readonly scope: Option; + } & Struct; + readonly isRotatePrimaryKeyToSecondary: boolean; + readonly asRotatePrimaryKeyToSecondary: { + readonly authId: u64; + readonly optionalCddAuthId: Option; + } & Struct; + readonly type: 'CddRegisterDid' | 'InvalidateCddClaims' | 'RemoveSecondaryKeys' | 'AcceptPrimaryKey' | 'ChangeCddRequirementForMkRotation' | 'JoinIdentityAsKey' | 'LeaveIdentityAsKey' | 'AddClaim' | 'RevokeClaim' | 'SetPermissionToSigner' | 'LegacySetPermissionToSigner' | 'FreezeSecondaryKeys' | 'UnfreezeSecondaryKeys' | 'AddAuthorization' | 'RemoveAuthorization' | 'AddSecondaryKeysWithAuthorization' | 'AddInvestorUniquenessClaim' | 'GcAddCddClaim' | 'GcRevokeCddClaim' | 'AddInvestorUniquenessClaimV2' | 'RevokeClaimByIndex' | 'RotatePrimaryKeyToSecondary'; + } + + /** @name PolymeshPrimitivesSecondaryKeyApiLegacyPermissions (327) */ + export interface PolymeshPrimitivesSecondaryKeyApiLegacyPermissions extends Struct { + readonly asset: PolymeshPrimitivesSubsetSubsetRestrictionTicker; + readonly extrinsic: PolymeshPrimitivesSecondaryKeyApiLegacyExtrinsicPermissions; + readonly portfolio: PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId; + } + + /** @name PolymeshPrimitivesSecondaryKeyApiLegacyExtrinsicPermissions (328) */ + export interface PolymeshPrimitivesSecondaryKeyApiLegacyExtrinsicPermissions extends Option> {} + + /** @name PolymeshPrimitivesSecondaryKeyApiLegacyPalletPermissions (331) */ + export interface PolymeshPrimitivesSecondaryKeyApiLegacyPalletPermissions extends Struct { + readonly palletName: Bytes; + readonly total: bool; + readonly dispatchableNames: Vec; + } + + /** @name PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth (333) */ + export interface PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth extends Struct { + readonly secondaryKey: PolymeshPrimitivesSecondaryKeyApiSecondaryKey; + readonly authSignature: H512; + } + + /** @name PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData (335) */ + export interface PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData extends SchnorrkelSignSignature {} + + /** @name SchnorrkelSignSignature (336) */ + export interface SchnorrkelSignSignature extends Struct { + readonly r: Curve25519DalekRistrettoCompressedRistretto; + readonly s: Curve25519DalekScalar; + } + + /** @name Curve25519DalekRistrettoCompressedRistretto (337) */ + export interface Curve25519DalekRistrettoCompressedRistretto extends U8aFixed {} + + /** @name Curve25519DalekScalar (338) */ + export interface Curve25519DalekScalar extends Struct { + readonly bytes: U8aFixed; + } + + /** @name ConfidentialIdentityClaimProofsScopeClaimProof (339) */ + export interface ConfidentialIdentityClaimProofsScopeClaimProof extends Struct { + readonly proofScopeIdWellformed: ConfidentialIdentitySignSignature; + readonly proofScopeIdCddIdMatch: ConfidentialIdentityClaimProofsZkProofData; + readonly scopeId: Curve25519DalekRistrettoRistrettoPoint; + } + + /** @name ConfidentialIdentitySignSignature (340) */ + export interface ConfidentialIdentitySignSignature extends Struct { + readonly r: Curve25519DalekRistrettoCompressedRistretto; + readonly s: Curve25519DalekScalar; + } + + /** @name ConfidentialIdentityClaimProofsZkProofData (341) */ + export interface ConfidentialIdentityClaimProofsZkProofData extends Struct { + readonly challengeResponses: Vec; + readonly subtractExpressionsRes: Curve25519DalekRistrettoRistrettoPoint; + readonly blindedScopeDidHash: Curve25519DalekRistrettoRistrettoPoint; + } + + /** @name Curve25519DalekRistrettoRistrettoPoint (343) */ + export interface Curve25519DalekRistrettoRistrettoPoint extends Curve25519DalekEdwardsEdwardsPoint {} + + /** @name Curve25519DalekEdwardsEdwardsPoint (344) */ + export interface Curve25519DalekEdwardsEdwardsPoint extends Struct { + readonly x: Curve25519DalekBackendSerialU64FieldFieldElement51; + readonly y: Curve25519DalekBackendSerialU64FieldFieldElement51; + readonly z: Curve25519DalekBackendSerialU64FieldFieldElement51; + readonly t: Curve25519DalekBackendSerialU64FieldFieldElement51; + } + + /** @name Curve25519DalekBackendSerialU64FieldFieldElement51 (345) */ + export interface Curve25519DalekBackendSerialU64FieldFieldElement51 extends Vec {} + + /** @name PalletIdentityError (347) */ + export interface PalletIdentityError extends Enum { + readonly isAlreadyLinked: boolean; + readonly isMissingCurrentIdentity: boolean; + readonly isUnauthorized: boolean; + readonly isInvalidAccountKey: boolean; + readonly isUnAuthorizedCddProvider: boolean; + readonly isInvalidAuthorizationFromOwner: boolean; + readonly isInvalidAuthorizationFromCddProvider: boolean; + readonly isNotCddProviderAttestation: boolean; + readonly isAuthorizationsNotForSameDids: boolean; + readonly isDidMustAlreadyExist: boolean; + readonly isCurrentIdentityCannotBeForwarded: boolean; + readonly isAuthorizationExpired: boolean; + readonly isTargetHasNoCdd: boolean; + readonly isAuthorizationHasBeenRevoked: boolean; + readonly isInvalidAuthorizationSignature: boolean; + readonly isKeyNotAllowed: boolean; + readonly isNotPrimaryKey: boolean; + readonly isDidDoesNotExist: boolean; + readonly isDidAlreadyExists: boolean; + readonly isSecondaryKeysContainPrimaryKey: boolean; + readonly isFailedToChargeFee: boolean; + readonly isNotASigner: boolean; + readonly isCannotDecodeSignerAccountId: boolean; + readonly isMultiSigHasBalance: boolean; + readonly isConfidentialScopeClaimNotAllowed: boolean; + readonly isInvalidScopeClaim: boolean; + readonly isClaimVariantNotAllowed: boolean; + readonly isTargetHasNonZeroBalanceAtScopeId: boolean; + readonly isCddIdNotUniqueForIdentity: boolean; + readonly isInvalidCDDId: boolean; + readonly isClaimAndProofVersionsDoNotMatch: boolean; + readonly isAccountKeyIsBeingUsed: boolean; + readonly isCustomScopeTooLong: boolean; + readonly type: 'AlreadyLinked' | 'MissingCurrentIdentity' | 'Unauthorized' | 'InvalidAccountKey' | 'UnAuthorizedCddProvider' | 'InvalidAuthorizationFromOwner' | 'InvalidAuthorizationFromCddProvider' | 'NotCddProviderAttestation' | 'AuthorizationsNotForSameDids' | 'DidMustAlreadyExist' | 'CurrentIdentityCannotBeForwarded' | 'AuthorizationExpired' | 'TargetHasNoCdd' | 'AuthorizationHasBeenRevoked' | 'InvalidAuthorizationSignature' | 'KeyNotAllowed' | 'NotPrimaryKey' | 'DidDoesNotExist' | 'DidAlreadyExists' | 'SecondaryKeysContainPrimaryKey' | 'FailedToChargeFee' | 'NotASigner' | 'CannotDecodeSignerAccountId' | 'MultiSigHasBalance' | 'ConfidentialScopeClaimNotAllowed' | 'InvalidScopeClaim' | 'ClaimVariantNotAllowed' | 'TargetHasNonZeroBalanceAtScopeId' | 'CddIdNotUniqueForIdentity' | 'InvalidCDDId' | 'ClaimAndProofVersionsDoNotMatch' | 'AccountKeyIsBeingUsed' | 'CustomScopeTooLong'; + } + + /** @name PolymeshCommonUtilitiesGroupInactiveMember (349) */ + export interface PolymeshCommonUtilitiesGroupInactiveMember extends Struct { + readonly id: PolymeshPrimitivesIdentityId; + readonly deactivatedAt: u64; + readonly expiry: Option; + } + + /** @name PalletGroupCall (350) */ + export interface PalletGroupCall extends Enum { + readonly isSetActiveMembersLimit: boolean; + readonly asSetActiveMembersLimit: { + readonly limit: u32; + } & Struct; + readonly isDisableMember: boolean; + readonly asDisableMember: { + readonly who: PolymeshPrimitivesIdentityId; + readonly expiry: Option; + readonly at: Option; + } & Struct; + readonly isAddMember: boolean; + readonly asAddMember: { + readonly who: PolymeshPrimitivesIdentityId; + } & Struct; + readonly isRemoveMember: boolean; + readonly asRemoveMember: { + readonly who: PolymeshPrimitivesIdentityId; + } & Struct; + readonly isSwapMember: boolean; + readonly asSwapMember: { + readonly remove: PolymeshPrimitivesIdentityId; + readonly add: PolymeshPrimitivesIdentityId; + } & Struct; + readonly isResetMembers: boolean; + readonly asResetMembers: { + readonly members: Vec; + } & Struct; + readonly isAbdicateMembership: boolean; + readonly type: 'SetActiveMembersLimit' | 'DisableMember' | 'AddMember' | 'RemoveMember' | 'SwapMember' | 'ResetMembers' | 'AbdicateMembership'; + } + + /** @name PalletGroupError (351) */ + export interface PalletGroupError extends Enum { + readonly isOnlyPrimaryKeyAllowed: boolean; + readonly isDuplicateMember: boolean; + readonly isNoSuchMember: boolean; + readonly isLastMemberCannotQuit: boolean; + readonly isMissingCurrentIdentity: boolean; + readonly isActiveMembersLimitExceeded: boolean; + readonly isActiveMembersLimitOverflow: boolean; + readonly type: 'OnlyPrimaryKeyAllowed' | 'DuplicateMember' | 'NoSuchMember' | 'LastMemberCannotQuit' | 'MissingCurrentIdentity' | 'ActiveMembersLimitExceeded' | 'ActiveMembersLimitOverflow'; + } + + /** @name PalletCommitteeCall (353) */ + export interface PalletCommitteeCall extends Enum { + readonly isSetVoteThreshold: boolean; + readonly asSetVoteThreshold: { + readonly n: u32; + readonly d: u32; + } & Struct; + readonly isSetReleaseCoordinator: boolean; + readonly asSetReleaseCoordinator: { + readonly id: PolymeshPrimitivesIdentityId; + } & Struct; + readonly isSetExpiresAfter: boolean; + readonly asSetExpiresAfter: { + readonly expiry: PolymeshCommonUtilitiesMaybeBlock; + } & Struct; + readonly isVoteOrPropose: boolean; + readonly asVoteOrPropose: { + readonly approve: bool; + readonly call: Call; + } & Struct; + readonly isVote: boolean; + readonly asVote: { + readonly proposal: H256; + readonly index: u32; + readonly approve: bool; + } & Struct; + readonly type: 'SetVoteThreshold' | 'SetReleaseCoordinator' | 'SetExpiresAfter' | 'VoteOrPropose' | 'Vote'; + } + + /** @name PalletMultisigCall (359) */ + export interface PalletMultisigCall extends Enum { + readonly isCreateMultisig: boolean; + readonly asCreateMultisig: { + readonly signers: Vec; + readonly sigsRequired: u64; + } & Struct; + readonly isCreateOrApproveProposalAsIdentity: boolean; + readonly asCreateOrApproveProposalAsIdentity: { + readonly multisig: AccountId32; + readonly proposal: Call; + readonly expiry: Option; + readonly autoClose: bool; + } & Struct; + readonly isCreateOrApproveProposalAsKey: boolean; + readonly asCreateOrApproveProposalAsKey: { + readonly multisig: AccountId32; + readonly proposal: Call; + readonly expiry: Option; + readonly autoClose: bool; + } & Struct; + readonly isCreateProposalAsIdentity: boolean; + readonly asCreateProposalAsIdentity: { + readonly multisig: AccountId32; + readonly proposal: Call; + readonly expiry: Option; + readonly autoClose: bool; + } & Struct; + readonly isCreateProposalAsKey: boolean; + readonly asCreateProposalAsKey: { + readonly multisig: AccountId32; + readonly proposal: Call; + readonly expiry: Option; + readonly autoClose: bool; + } & Struct; + readonly isApproveAsIdentity: boolean; + readonly asApproveAsIdentity: { + readonly multisig: AccountId32; + readonly proposalId: u64; + } & Struct; + readonly isApproveAsKey: boolean; + readonly asApproveAsKey: { + readonly multisig: AccountId32; + readonly proposalId: u64; + } & Struct; + readonly isRejectAsIdentity: boolean; + readonly asRejectAsIdentity: { + readonly multisig: AccountId32; + readonly proposalId: u64; + } & Struct; + readonly isRejectAsKey: boolean; + readonly asRejectAsKey: { + readonly multisig: AccountId32; + readonly proposalId: u64; + } & Struct; + readonly isAcceptMultisigSignerAsIdentity: boolean; + readonly asAcceptMultisigSignerAsIdentity: { + readonly authId: u64; + } & Struct; + readonly isAcceptMultisigSignerAsKey: boolean; + readonly asAcceptMultisigSignerAsKey: { + readonly authId: u64; + } & Struct; + readonly isAddMultisigSigner: boolean; + readonly asAddMultisigSigner: { + readonly signer: PolymeshPrimitivesSecondaryKeySignatory; + } & Struct; + readonly isRemoveMultisigSigner: boolean; + readonly asRemoveMultisigSigner: { + readonly signer: PolymeshPrimitivesSecondaryKeySignatory; + } & Struct; + readonly isAddMultisigSignersViaCreator: boolean; + readonly asAddMultisigSignersViaCreator: { + readonly multisig: AccountId32; + readonly signers: Vec; + } & Struct; + readonly isRemoveMultisigSignersViaCreator: boolean; + readonly asRemoveMultisigSignersViaCreator: { + readonly multisig: AccountId32; + readonly signers: Vec; + } & Struct; + readonly isChangeSigsRequired: boolean; + readonly asChangeSigsRequired: { + readonly sigsRequired: u64; + } & Struct; + readonly isMakeMultisigSigner: boolean; + readonly asMakeMultisigSigner: { + readonly multisig: AccountId32; + } & Struct; + readonly isMakeMultisigPrimary: boolean; + readonly asMakeMultisigPrimary: { + readonly multisig: AccountId32; + readonly optionalCddAuthId: Option; + } & Struct; + readonly isExecuteScheduledProposal: boolean; + readonly asExecuteScheduledProposal: { + readonly multisig: AccountId32; + readonly proposalId: u64; + readonly multisigDid: PolymeshPrimitivesIdentityId; + readonly proposalWeight: u64; + } & Struct; + readonly type: 'CreateMultisig' | 'CreateOrApproveProposalAsIdentity' | 'CreateOrApproveProposalAsKey' | 'CreateProposalAsIdentity' | 'CreateProposalAsKey' | 'ApproveAsIdentity' | 'ApproveAsKey' | 'RejectAsIdentity' | 'RejectAsKey' | 'AcceptMultisigSignerAsIdentity' | 'AcceptMultisigSignerAsKey' | 'AddMultisigSigner' | 'RemoveMultisigSigner' | 'AddMultisigSignersViaCreator' | 'RemoveMultisigSignersViaCreator' | 'ChangeSigsRequired' | 'MakeMultisigSigner' | 'MakeMultisigPrimary' | 'ExecuteScheduledProposal'; + } + + /** @name PalletBridgeCall (360) */ + export interface PalletBridgeCall extends Enum { + readonly isChangeController: boolean; + readonly asChangeController: { + readonly controller: AccountId32; + } & Struct; + readonly isChangeAdmin: boolean; + readonly asChangeAdmin: { + readonly admin: AccountId32; + } & Struct; + readonly isChangeTimelock: boolean; + readonly asChangeTimelock: { + readonly timelock: u32; + } & Struct; + readonly isFreeze: boolean; + readonly isUnfreeze: boolean; + readonly isChangeBridgeLimit: boolean; + readonly asChangeBridgeLimit: { + readonly amount: u128; + readonly duration: u32; + } & Struct; + readonly isChangeBridgeExempted: boolean; + readonly asChangeBridgeExempted: { + readonly exempted: Vec>; + } & Struct; + readonly isForceHandleBridgeTx: boolean; + readonly asForceHandleBridgeTx: { + readonly bridgeTx: PalletBridgeBridgeTx; + } & Struct; + readonly isBatchProposeBridgeTx: boolean; + readonly asBatchProposeBridgeTx: { + readonly bridgeTxs: Vec; + } & Struct; + readonly isProposeBridgeTx: boolean; + readonly asProposeBridgeTx: { + readonly bridgeTx: PalletBridgeBridgeTx; + } & Struct; + readonly isHandleBridgeTx: boolean; + readonly asHandleBridgeTx: { + readonly bridgeTx: PalletBridgeBridgeTx; + } & Struct; + readonly isFreezeTxs: boolean; + readonly asFreezeTxs: { + readonly bridgeTxs: Vec; + } & Struct; + readonly isUnfreezeTxs: boolean; + readonly asUnfreezeTxs: { + readonly bridgeTxs: Vec; + } & Struct; + readonly isHandleScheduledBridgeTx: boolean; + readonly asHandleScheduledBridgeTx: { + readonly bridgeTx: PalletBridgeBridgeTx; + } & Struct; + readonly isAddFreezeAdmin: boolean; + readonly asAddFreezeAdmin: { + readonly freezeAdmin: AccountId32; + } & Struct; + readonly isRemoveFreezeAdmin: boolean; + readonly asRemoveFreezeAdmin: { + readonly freezeAdmin: AccountId32; + } & Struct; + readonly isRemoveTxs: boolean; + readonly asRemoveTxs: { + readonly bridgeTxs: Vec; + } & Struct; + readonly type: 'ChangeController' | 'ChangeAdmin' | 'ChangeTimelock' | 'Freeze' | 'Unfreeze' | 'ChangeBridgeLimit' | 'ChangeBridgeExempted' | 'ForceHandleBridgeTx' | 'BatchProposeBridgeTx' | 'ProposeBridgeTx' | 'HandleBridgeTx' | 'FreezeTxs' | 'UnfreezeTxs' | 'HandleScheduledBridgeTx' | 'AddFreezeAdmin' | 'RemoveFreezeAdmin' | 'RemoveTxs'; + } + + /** @name PalletStakingCall (364) */ + export interface PalletStakingCall extends Enum { + readonly isBond: boolean; + readonly asBond: { + readonly controller: MultiAddress; + readonly value: Compact; + readonly payee: PalletStakingRewardDestination; + } & Struct; + readonly isBondExtra: boolean; + readonly asBondExtra: { + readonly maxAdditional: Compact; + } & Struct; + readonly isUnbond: boolean; + readonly asUnbond: { + readonly value: Compact; + } & Struct; + readonly isWithdrawUnbonded: boolean; + readonly asWithdrawUnbonded: { + readonly numSlashingSpans: u32; + } & Struct; + readonly isValidate: boolean; + readonly asValidate: { + readonly prefs: PalletStakingValidatorPrefs; + } & Struct; + readonly isNominate: boolean; + readonly asNominate: { + readonly targets: Vec; + } & Struct; + readonly isChill: boolean; + readonly isSetPayee: boolean; + readonly asSetPayee: { + readonly payee: PalletStakingRewardDestination; + } & Struct; + readonly isSetController: boolean; + readonly asSetController: { + readonly controller: MultiAddress; + } & Struct; + readonly isSetValidatorCount: boolean; + readonly asSetValidatorCount: { + readonly new_: Compact; + } & Struct; + readonly isIncreaseValidatorCount: boolean; + readonly asIncreaseValidatorCount: { + readonly additional: Compact; + } & Struct; + readonly isScaleValidatorCount: boolean; + readonly asScaleValidatorCount: { + readonly factor: Percent; + } & Struct; + readonly isAddPermissionedValidator: boolean; + readonly asAddPermissionedValidator: { + readonly identity: PolymeshPrimitivesIdentityId; + readonly intendedCount: Option; + } & Struct; + readonly isRemovePermissionedValidator: boolean; + readonly asRemovePermissionedValidator: { + readonly identity: PolymeshPrimitivesIdentityId; + } & Struct; + readonly isValidateCddExpiryNominators: boolean; + readonly asValidateCddExpiryNominators: { + readonly targets: Vec; + } & Struct; + readonly isSetCommissionCap: boolean; + readonly asSetCommissionCap: { + readonly newCap: Perbill; + } & Struct; + readonly isSetMinBondThreshold: boolean; + readonly asSetMinBondThreshold: { + readonly newValue: u128; + } & Struct; + readonly isForceNoEras: boolean; + readonly isForceNewEra: boolean; + readonly isSetInvulnerables: boolean; + readonly asSetInvulnerables: { + readonly invulnerables: Vec; + } & Struct; + readonly isForceUnstake: boolean; + readonly asForceUnstake: { + readonly stash: AccountId32; + readonly numSlashingSpans: u32; + } & Struct; + readonly isForceNewEraAlways: boolean; + readonly isCancelDeferredSlash: boolean; + readonly asCancelDeferredSlash: { + readonly era: u32; + readonly slashIndices: Vec; + } & Struct; + readonly isPayoutStakers: boolean; + readonly asPayoutStakers: { + readonly validatorStash: AccountId32; + readonly era: u32; + } & Struct; + readonly isRebond: boolean; + readonly asRebond: { + readonly value: Compact; + } & Struct; + readonly isSetHistoryDepth: boolean; + readonly asSetHistoryDepth: { + readonly newHistoryDepth: Compact; + readonly eraItemsDeleted: Compact; + } & Struct; + readonly isReapStash: boolean; + readonly asReapStash: { + readonly stash: AccountId32; + readonly numSlashingSpans: u32; + } & Struct; + readonly isSubmitElectionSolution: boolean; + readonly asSubmitElectionSolution: { + readonly winners: Vec; + readonly compact: PalletStakingCompactAssignments; + readonly score: Vec; + readonly era: u32; + readonly size_: PalletStakingElectionSize; + } & Struct; + readonly isSubmitElectionSolutionUnsigned: boolean; + readonly asSubmitElectionSolutionUnsigned: { + readonly winners: Vec; + readonly compact: PalletStakingCompactAssignments; + readonly score: Vec; + readonly era: u32; + readonly size_: PalletStakingElectionSize; + } & Struct; + readonly isPayoutStakersBySystem: boolean; + readonly asPayoutStakersBySystem: { + readonly validatorStash: AccountId32; + readonly era: u32; + } & Struct; + readonly isChangeSlashingAllowedFor: boolean; + readonly asChangeSlashingAllowedFor: { + readonly slashingSwitch: PalletStakingSlashingSwitch; + } & Struct; + readonly isUpdatePermissionedValidatorIntendedCount: boolean; + readonly asUpdatePermissionedValidatorIntendedCount: { + readonly identity: PolymeshPrimitivesIdentityId; + readonly newIntendedCount: u32; + } & Struct; + readonly type: 'Bond' | 'BondExtra' | 'Unbond' | 'WithdrawUnbonded' | 'Validate' | 'Nominate' | 'Chill' | 'SetPayee' | 'SetController' | 'SetValidatorCount' | 'IncreaseValidatorCount' | 'ScaleValidatorCount' | 'AddPermissionedValidator' | 'RemovePermissionedValidator' | 'ValidateCddExpiryNominators' | 'SetCommissionCap' | 'SetMinBondThreshold' | 'ForceNoEras' | 'ForceNewEra' | 'SetInvulnerables' | 'ForceUnstake' | 'ForceNewEraAlways' | 'CancelDeferredSlash' | 'PayoutStakers' | 'Rebond' | 'SetHistoryDepth' | 'ReapStash' | 'SubmitElectionSolution' | 'SubmitElectionSolutionUnsigned' | 'PayoutStakersBySystem' | 'ChangeSlashingAllowedFor' | 'UpdatePermissionedValidatorIntendedCount'; + } + + /** @name PalletStakingRewardDestination (365) */ + export interface PalletStakingRewardDestination extends Enum { + readonly isStaked: boolean; + readonly isStash: boolean; + readonly isController: boolean; + readonly isAccount: boolean; + readonly asAccount: AccountId32; + readonly type: 'Staked' | 'Stash' | 'Controller' | 'Account'; + } + + /** @name PalletStakingValidatorPrefs (366) */ + export interface PalletStakingValidatorPrefs extends Struct { + readonly commission: Compact; + readonly blocked: bool; + } + + /** @name PalletStakingCompactAssignments (372) */ + export interface PalletStakingCompactAssignments extends Struct { + readonly votes1: Vec, Compact]>>; + readonly votes2: Vec, ITuple<[Compact, Compact]>, Compact]>>; + readonly votes3: Vec, Vec, Compact]>>, Compact]>>; + readonly votes4: Vec, Vec, Compact]>>, Compact]>>; + readonly votes5: Vec, Vec, Compact]>>, Compact]>>; + readonly votes6: Vec, Vec, Compact]>>, Compact]>>; + readonly votes7: Vec, Vec, Compact]>>, Compact]>>; + readonly votes8: Vec, Vec, Compact]>>, Compact]>>; + readonly votes9: Vec, Vec, Compact]>>, Compact]>>; + readonly votes10: Vec, Vec, Compact]>>, Compact]>>; + readonly votes11: Vec, Vec, Compact]>>, Compact]>>; + readonly votes12: Vec, Vec, Compact]>>, Compact]>>; + readonly votes13: Vec, Vec, Compact]>>, Compact]>>; + readonly votes14: Vec, Vec, Compact]>>, Compact]>>; + readonly votes15: Vec, Vec, Compact]>>, Compact]>>; + readonly votes16: Vec, Vec, Compact]>>, Compact]>>; + } + + /** @name PalletStakingElectionSize (424) */ + export interface PalletStakingElectionSize extends Struct { + readonly validators: Compact; + readonly nominators: Compact; + } + + /** @name PalletSessionCall (425) */ + export interface PalletSessionCall extends Enum { + readonly isSetKeys: boolean; + readonly asSetKeys: { + readonly keys_: PolymeshRuntimeDevelopRuntimeSessionKeys; + readonly proof: Bytes; + } & Struct; + readonly isPurgeKeys: boolean; + readonly type: 'SetKeys' | 'PurgeKeys'; + } + + /** @name PolymeshRuntimeDevelopRuntimeSessionKeys (426) */ + export interface PolymeshRuntimeDevelopRuntimeSessionKeys extends Struct { + readonly grandpa: SpFinalityGrandpaAppPublic; + readonly babe: SpConsensusBabeAppPublic; + readonly imOnline: PalletImOnlineSr25519AppSr25519Public; + readonly authorityDiscovery: SpAuthorityDiscoveryAppPublic; + } + + /** @name SpAuthorityDiscoveryAppPublic (427) */ + export interface SpAuthorityDiscoveryAppPublic extends SpCoreSr25519Public {} + + /** @name PalletGrandpaCall (428) */ + export interface PalletGrandpaCall extends Enum { + readonly isReportEquivocation: boolean; + readonly asReportEquivocation: { + readonly equivocationProof: SpFinalityGrandpaEquivocationProof; + readonly keyOwnerProof: SpSessionMembershipProof; + } & Struct; + readonly isReportEquivocationUnsigned: boolean; + readonly asReportEquivocationUnsigned: { + readonly equivocationProof: SpFinalityGrandpaEquivocationProof; + readonly keyOwnerProof: SpSessionMembershipProof; + } & Struct; + readonly isNoteStalled: boolean; + readonly asNoteStalled: { + readonly delay: u32; + readonly bestFinalizedBlockNumber: u32; + } & Struct; + readonly type: 'ReportEquivocation' | 'ReportEquivocationUnsigned' | 'NoteStalled'; + } + + /** @name SpFinalityGrandpaEquivocationProof (429) */ + export interface SpFinalityGrandpaEquivocationProof extends Struct { + readonly setId: u64; + readonly equivocation: SpFinalityGrandpaEquivocation; + } + + /** @name SpFinalityGrandpaEquivocation (430) */ + export interface SpFinalityGrandpaEquivocation extends Enum { + readonly isPrevote: boolean; + readonly asPrevote: FinalityGrandpaEquivocationPrevote; + readonly isPrecommit: boolean; + readonly asPrecommit: FinalityGrandpaEquivocationPrecommit; + readonly type: 'Prevote' | 'Precommit'; + } + + /** @name FinalityGrandpaEquivocationPrevote (431) */ + export interface FinalityGrandpaEquivocationPrevote extends Struct { + readonly roundNumber: u64; + readonly identity: SpFinalityGrandpaAppPublic; + readonly first: ITuple<[FinalityGrandpaPrevote, SpFinalityGrandpaAppSignature]>; + readonly second: ITuple<[FinalityGrandpaPrevote, SpFinalityGrandpaAppSignature]>; + } + + /** @name FinalityGrandpaPrevote (432) */ + export interface FinalityGrandpaPrevote extends Struct { + readonly targetHash: H256; + readonly targetNumber: u32; + } + + /** @name SpFinalityGrandpaAppSignature (433) */ + export interface SpFinalityGrandpaAppSignature extends SpCoreEd25519Signature {} + + /** @name SpCoreEd25519Signature (434) */ + export interface SpCoreEd25519Signature extends U8aFixed {} + + /** @name FinalityGrandpaEquivocationPrecommit (436) */ + export interface FinalityGrandpaEquivocationPrecommit extends Struct { + readonly roundNumber: u64; + readonly identity: SpFinalityGrandpaAppPublic; + readonly first: ITuple<[FinalityGrandpaPrecommit, SpFinalityGrandpaAppSignature]>; + readonly second: ITuple<[FinalityGrandpaPrecommit, SpFinalityGrandpaAppSignature]>; + } + + /** @name FinalityGrandpaPrecommit (437) */ + export interface FinalityGrandpaPrecommit extends Struct { + readonly targetHash: H256; + readonly targetNumber: u32; + } + + /** @name PalletImOnlineCall (439) */ + export interface PalletImOnlineCall extends Enum { + readonly isHeartbeat: boolean; + readonly asHeartbeat: { + readonly heartbeat: PalletImOnlineHeartbeat; + readonly signature: PalletImOnlineSr25519AppSr25519Signature; + } & Struct; + readonly type: 'Heartbeat'; + } + + /** @name PalletImOnlineHeartbeat (440) */ + export interface PalletImOnlineHeartbeat extends Struct { + readonly blockNumber: u32; + readonly networkState: SpCoreOffchainOpaqueNetworkState; + readonly sessionIndex: u32; + readonly authorityIndex: u32; + readonly validatorsLen: u32; + } + + /** @name SpCoreOffchainOpaqueNetworkState (441) */ + export interface SpCoreOffchainOpaqueNetworkState extends Struct { + readonly peerId: Bytes; + readonly externalAddresses: Vec; + } + + /** @name PalletImOnlineSr25519AppSr25519Signature (445) */ + export interface PalletImOnlineSr25519AppSr25519Signature extends SpCoreSr25519Signature {} + + /** @name SpCoreSr25519Signature (446) */ + export interface SpCoreSr25519Signature extends U8aFixed {} + + /** @name PalletSudoCall (447) */ + export interface PalletSudoCall extends Enum { + readonly isSudo: boolean; + readonly asSudo: { + readonly call: Call; + } & Struct; + readonly isSudoUncheckedWeight: boolean; + readonly asSudoUncheckedWeight: { + readonly call: Call; + readonly weight: u64; + } & Struct; + readonly isSetKey: boolean; + readonly asSetKey: { + readonly new_: MultiAddress; + } & Struct; + readonly isSudoAs: boolean; + readonly asSudoAs: { + readonly who: MultiAddress; + readonly call: Call; + } & Struct; + readonly type: 'Sudo' | 'SudoUncheckedWeight' | 'SetKey' | 'SudoAs'; + } + + /** @name PalletAssetCall (448) */ + export interface PalletAssetCall extends Enum { + readonly isRegisterTicker: boolean; + readonly asRegisterTicker: { + readonly ticker: PolymeshPrimitivesTicker; + } & Struct; + readonly isAcceptTickerTransfer: boolean; + readonly asAcceptTickerTransfer: { + readonly authId: u64; + } & Struct; + readonly isAcceptAssetOwnershipTransfer: boolean; + readonly asAcceptAssetOwnershipTransfer: { + readonly authId: u64; + } & Struct; + readonly isCreateAsset: boolean; + readonly asCreateAsset: { + readonly name: Bytes; + readonly ticker: PolymeshPrimitivesTicker; + readonly divisible: bool; + readonly assetType: PolymeshPrimitivesAssetAssetType; + readonly identifiers: Vec; + readonly fundingRound: Option; + readonly disableIu: bool; + } & Struct; + readonly isFreeze: boolean; + readonly asFreeze: { + readonly ticker: PolymeshPrimitivesTicker; + } & Struct; + readonly isUnfreeze: boolean; + readonly asUnfreeze: { + readonly ticker: PolymeshPrimitivesTicker; + } & Struct; + readonly isRenameAsset: boolean; + readonly asRenameAsset: { + readonly ticker: PolymeshPrimitivesTicker; + readonly name: Bytes; + } & Struct; + readonly isIssue: boolean; + readonly asIssue: { + readonly ticker: PolymeshPrimitivesTicker; + readonly amount: u128; + } & Struct; + readonly isRedeem: boolean; + readonly asRedeem: { + readonly ticker: PolymeshPrimitivesTicker; + readonly value: u128; + } & Struct; + readonly isMakeDivisible: boolean; + readonly asMakeDivisible: { + readonly ticker: PolymeshPrimitivesTicker; + } & Struct; + readonly isAddDocuments: boolean; + readonly asAddDocuments: { + readonly docs: Vec; + readonly ticker: PolymeshPrimitivesTicker; + } & Struct; + readonly isRemoveDocuments: boolean; + readonly asRemoveDocuments: { + readonly ids: Vec; + readonly ticker: PolymeshPrimitivesTicker; + } & Struct; + readonly isSetFundingRound: boolean; + readonly asSetFundingRound: { + readonly ticker: PolymeshPrimitivesTicker; + readonly name: Bytes; + } & Struct; + readonly isUpdateIdentifiers: boolean; + readonly asUpdateIdentifiers: { + readonly ticker: PolymeshPrimitivesTicker; + readonly identifiers: Vec; + } & Struct; + readonly isClaimClassicTicker: boolean; + readonly asClaimClassicTicker: { + readonly ticker: PolymeshPrimitivesTicker; + readonly ethereumSignature: PolymeshPrimitivesEthereumEcdsaSignature; + } & Struct; + readonly isReserveClassicTicker: boolean; + readonly asReserveClassicTicker: { + readonly classicTickerImport: PalletAssetClassicTickerImport; + readonly contractDid: PolymeshPrimitivesIdentityId; + readonly config: PalletAssetTickerRegistrationConfig; + } & Struct; + readonly isControllerTransfer: boolean; + readonly asControllerTransfer: { + readonly ticker: PolymeshPrimitivesTicker; + readonly value: u128; + readonly fromPortfolio: PolymeshPrimitivesIdentityIdPortfolioId; + } & Struct; + readonly isRegisterCustomAssetType: boolean; + readonly asRegisterCustomAssetType: { + readonly ty: Bytes; + } & Struct; + readonly type: 'RegisterTicker' | 'AcceptTickerTransfer' | 'AcceptAssetOwnershipTransfer' | 'CreateAsset' | 'Freeze' | 'Unfreeze' | 'RenameAsset' | 'Issue' | 'Redeem' | 'MakeDivisible' | 'AddDocuments' | 'RemoveDocuments' | 'SetFundingRound' | 'UpdateIdentifiers' | 'ClaimClassicTicker' | 'ReserveClassicTicker' | 'ControllerTransfer' | 'RegisterCustomAssetType'; + } + + /** @name PolymeshPrimitivesEthereumEcdsaSignature (451) */ + export interface PolymeshPrimitivesEthereumEcdsaSignature extends U8aFixed {} + + /** @name PalletAssetClassicTickerImport (453) */ + export interface PalletAssetClassicTickerImport extends Struct { + readonly ethOwner: PolymeshPrimitivesEthereumEthereumAddress; + readonly ticker: PolymeshPrimitivesTicker; + readonly isContract: bool; + readonly isCreated: bool; + } + + /** @name PalletAssetTickerRegistrationConfig (454) */ + export interface PalletAssetTickerRegistrationConfig extends Struct { + readonly maxTickerLength: u8; + readonly registrationLength: Option; + } + + /** @name PalletCorporateActionsDistributionCall (455) */ + export interface PalletCorporateActionsDistributionCall extends Enum { + readonly isDistribute: boolean; + readonly asDistribute: { + readonly caId: PalletCorporateActionsCaId; + readonly portfolio: Option; + readonly currency: PolymeshPrimitivesTicker; + readonly perShare: u128; + readonly amount: u128; + readonly paymentAt: u64; + readonly expiresAt: Option; + } & Struct; + readonly isClaim: boolean; + readonly asClaim: { + readonly caId: PalletCorporateActionsCaId; + } & Struct; + readonly isPushBenefit: boolean; + readonly asPushBenefit: { + readonly caId: PalletCorporateActionsCaId; + readonly holder: PolymeshPrimitivesIdentityId; + } & Struct; + readonly isReclaim: boolean; + readonly asReclaim: { + readonly caId: PalletCorporateActionsCaId; + } & Struct; + readonly isRemoveDistribution: boolean; + readonly asRemoveDistribution: { + readonly caId: PalletCorporateActionsCaId; + } & Struct; + readonly type: 'Distribute' | 'Claim' | 'PushBenefit' | 'Reclaim' | 'RemoveDistribution'; + } + + /** @name PalletAssetCheckpointCall (457) */ + export interface PalletAssetCheckpointCall extends Enum { + readonly isCreateCheckpoint: boolean; + readonly asCreateCheckpoint: { + readonly ticker: PolymeshPrimitivesTicker; + } & Struct; + readonly isSetSchedulesMaxComplexity: boolean; + readonly asSetSchedulesMaxComplexity: { + readonly maxComplexity: u64; + } & Struct; + readonly isCreateSchedule: boolean; + readonly asCreateSchedule: { + readonly ticker: PolymeshPrimitivesTicker; + readonly schedule: PalletAssetCheckpointScheduleSpec; + } & Struct; + readonly isRemoveSchedule: boolean; + readonly asRemoveSchedule: { + readonly ticker: PolymeshPrimitivesTicker; + readonly id: u64; + } & Struct; + readonly type: 'CreateCheckpoint' | 'SetSchedulesMaxComplexity' | 'CreateSchedule' | 'RemoveSchedule'; + } + + /** @name PalletAssetCheckpointScheduleSpec (458) */ + export interface PalletAssetCheckpointScheduleSpec extends Struct { + readonly start: Option; + readonly period: PolymeshPrimitivesCalendarCalendarPeriod; + readonly remaining: u32; + } + + /** @name PalletComplianceManagerCall (459) */ + export interface PalletComplianceManagerCall extends Enum { + readonly isAddComplianceRequirement: boolean; + readonly asAddComplianceRequirement: { + readonly ticker: PolymeshPrimitivesTicker; + readonly senderConditions: Vec; + readonly receiverConditions: Vec; + } & Struct; + readonly isRemoveComplianceRequirement: boolean; + readonly asRemoveComplianceRequirement: { + readonly ticker: PolymeshPrimitivesTicker; + readonly id: u32; + } & Struct; + readonly isReplaceAssetCompliance: boolean; + readonly asReplaceAssetCompliance: { + readonly ticker: PolymeshPrimitivesTicker; + readonly assetCompliance: Vec; + } & Struct; + readonly isResetAssetCompliance: boolean; + readonly asResetAssetCompliance: { + readonly ticker: PolymeshPrimitivesTicker; + } & Struct; + readonly isPauseAssetCompliance: boolean; + readonly asPauseAssetCompliance: { + readonly ticker: PolymeshPrimitivesTicker; + } & Struct; + readonly isResumeAssetCompliance: boolean; + readonly asResumeAssetCompliance: { + readonly ticker: PolymeshPrimitivesTicker; + } & Struct; + readonly isAddDefaultTrustedClaimIssuer: boolean; + readonly asAddDefaultTrustedClaimIssuer: { + readonly ticker: PolymeshPrimitivesTicker; + readonly issuer: PolymeshPrimitivesConditionTrustedIssuer; + } & Struct; + readonly isRemoveDefaultTrustedClaimIssuer: boolean; + readonly asRemoveDefaultTrustedClaimIssuer: { + readonly ticker: PolymeshPrimitivesTicker; + readonly issuer: PolymeshPrimitivesIdentityId; + } & Struct; + readonly isChangeComplianceRequirement: boolean; + readonly asChangeComplianceRequirement: { + readonly ticker: PolymeshPrimitivesTicker; + readonly newReq: PolymeshPrimitivesComplianceManagerComplianceRequirement; + } & Struct; + readonly type: 'AddComplianceRequirement' | 'RemoveComplianceRequirement' | 'ReplaceAssetCompliance' | 'ResetAssetCompliance' | 'PauseAssetCompliance' | 'ResumeAssetCompliance' | 'AddDefaultTrustedClaimIssuer' | 'RemoveDefaultTrustedClaimIssuer' | 'ChangeComplianceRequirement'; + } + + /** @name PalletCorporateActionsCall (460) */ + export interface PalletCorporateActionsCall extends Enum { + readonly isSetMaxDetailsLength: boolean; + readonly asSetMaxDetailsLength: { + readonly length: u32; + } & Struct; + readonly isSetDefaultTargets: boolean; + readonly asSetDefaultTargets: { + readonly ticker: PolymeshPrimitivesTicker; + readonly targets: PalletCorporateActionsTargetIdentities; + } & Struct; + readonly isSetDefaultWithholdingTax: boolean; + readonly asSetDefaultWithholdingTax: { + readonly ticker: PolymeshPrimitivesTicker; + readonly tax: Permill; + } & Struct; + readonly isSetDidWithholdingTax: boolean; + readonly asSetDidWithholdingTax: { + readonly ticker: PolymeshPrimitivesTicker; + readonly taxedDid: PolymeshPrimitivesIdentityId; + readonly tax: Option; + } & Struct; + readonly isInitiateCorporateAction: boolean; + readonly asInitiateCorporateAction: { + readonly ticker: PolymeshPrimitivesTicker; + readonly kind: PalletCorporateActionsCaKind; + readonly declDate: u64; + readonly recordDate: Option; + readonly details: Bytes; + readonly targets: Option; + readonly defaultWithholdingTax: Option; + readonly withholdingTax: Option>>; + } & Struct; + readonly isLinkCaDoc: boolean; + readonly asLinkCaDoc: { + readonly id: PalletCorporateActionsCaId; + readonly docs: Vec; + } & Struct; + readonly isRemoveCa: boolean; + readonly asRemoveCa: { + readonly caId: PalletCorporateActionsCaId; + } & Struct; + readonly isChangeRecordDate: boolean; + readonly asChangeRecordDate: { + readonly caId: PalletCorporateActionsCaId; + readonly recordDate: Option; + } & Struct; + readonly type: 'SetMaxDetailsLength' | 'SetDefaultTargets' | 'SetDefaultWithholdingTax' | 'SetDidWithholdingTax' | 'InitiateCorporateAction' | 'LinkCaDoc' | 'RemoveCa' | 'ChangeRecordDate'; + } + + /** @name PalletCorporateActionsRecordDateSpec (462) */ + export interface PalletCorporateActionsRecordDateSpec extends Enum { + readonly isScheduled: boolean; + readonly asScheduled: u64; + readonly isExistingSchedule: boolean; + readonly asExistingSchedule: u64; + readonly isExisting: boolean; + readonly asExisting: u64; + readonly type: 'Scheduled' | 'ExistingSchedule' | 'Existing'; + } + + /** @name PalletCorporateActionsBallotCall (465) */ + export interface PalletCorporateActionsBallotCall extends Enum { + readonly isAttachBallot: boolean; + readonly asAttachBallot: { + readonly caId: PalletCorporateActionsCaId; + readonly range: PalletCorporateActionsBallotBallotTimeRange; + readonly meta: PalletCorporateActionsBallotBallotMeta; + readonly rcv: bool; + } & Struct; + readonly isVote: boolean; + readonly asVote: { + readonly caId: PalletCorporateActionsCaId; + readonly votes: Vec; + } & Struct; + readonly isChangeEnd: boolean; + readonly asChangeEnd: { + readonly caId: PalletCorporateActionsCaId; + readonly end: u64; + } & Struct; + readonly isChangeMeta: boolean; + readonly asChangeMeta: { + readonly caId: PalletCorporateActionsCaId; + readonly meta: PalletCorporateActionsBallotBallotMeta; + } & Struct; + readonly isChangeRcv: boolean; + readonly asChangeRcv: { + readonly caId: PalletCorporateActionsCaId; + readonly rcv: bool; + } & Struct; + readonly isRemoveBallot: boolean; + readonly asRemoveBallot: { + readonly caId: PalletCorporateActionsCaId; + } & Struct; + readonly type: 'AttachBallot' | 'Vote' | 'ChangeEnd' | 'ChangeMeta' | 'ChangeRcv' | 'RemoveBallot'; + } + + /** @name PalletPipsCall (466) */ + export interface PalletPipsCall extends Enum { + readonly isSetPruneHistoricalPips: boolean; + readonly asSetPruneHistoricalPips: { + readonly prune: bool; + } & Struct; + readonly isSetMinProposalDeposit: boolean; + readonly asSetMinProposalDeposit: { + readonly deposit: u128; + } & Struct; + readonly isSetDefaultEnactmentPeriod: boolean; + readonly asSetDefaultEnactmentPeriod: { + readonly duration: u32; + } & Struct; + readonly isSetPendingPipExpiry: boolean; + readonly asSetPendingPipExpiry: { + readonly expiry: PolymeshCommonUtilitiesMaybeBlock; + } & Struct; + readonly isSetMaxPipSkipCount: boolean; + readonly asSetMaxPipSkipCount: { + readonly max: u8; + } & Struct; + readonly isSetActivePipLimit: boolean; + readonly asSetActivePipLimit: { + readonly limit: u32; + } & Struct; + readonly isPropose: boolean; + readonly asPropose: { + readonly proposal: Call; + readonly deposit: u128; + readonly url: Option; + readonly description: Option; + } & Struct; + readonly isVote: boolean; + readonly asVote: { + readonly id: u32; + readonly ayeOrNay: bool; + readonly deposit: u128; + } & Struct; + readonly isApproveCommitteeProposal: boolean; + readonly asApproveCommitteeProposal: { + readonly id: u32; + } & Struct; + readonly isRejectProposal: boolean; + readonly asRejectProposal: { + readonly id: u32; + } & Struct; + readonly isPruneProposal: boolean; + readonly asPruneProposal: { + readonly id: u32; + } & Struct; + readonly isRescheduleExecution: boolean; + readonly asRescheduleExecution: { + readonly id: u32; + readonly until: Option; + } & Struct; + readonly isClearSnapshot: boolean; + readonly isSnapshot: boolean; + readonly isEnactSnapshotResults: boolean; + readonly asEnactSnapshotResults: { + readonly results: Vec>; + } & Struct; + readonly isExecuteScheduledPip: boolean; + readonly asExecuteScheduledPip: { + readonly id: u32; + } & Struct; + readonly isExpireScheduledPip: boolean; + readonly asExpireScheduledPip: { + readonly did: PolymeshPrimitivesIdentityId; + readonly id: u32; + } & Struct; + readonly type: 'SetPruneHistoricalPips' | 'SetMinProposalDeposit' | 'SetDefaultEnactmentPeriod' | 'SetPendingPipExpiry' | 'SetMaxPipSkipCount' | 'SetActivePipLimit' | 'Propose' | 'Vote' | 'ApproveCommitteeProposal' | 'RejectProposal' | 'PruneProposal' | 'RescheduleExecution' | 'ClearSnapshot' | 'Snapshot' | 'EnactSnapshotResults' | 'ExecuteScheduledPip' | 'ExpireScheduledPip'; + } + + /** @name PalletPipsSnapshotResult (469) */ + export interface PalletPipsSnapshotResult extends Enum { + readonly isApprove: boolean; + readonly isReject: boolean; + readonly isSkip: boolean; + readonly type: 'Approve' | 'Reject' | 'Skip'; + } + + /** @name PalletPortfolioCall (470) */ + export interface PalletPortfolioCall extends Enum { + readonly isCreatePortfolio: boolean; + readonly asCreatePortfolio: { + readonly name: Bytes; + } & Struct; + readonly isDeletePortfolio: boolean; + readonly asDeletePortfolio: { + readonly num: u64; + } & Struct; + readonly isMovePortfolioFunds: boolean; + readonly asMovePortfolioFunds: { + readonly from: PolymeshPrimitivesIdentityIdPortfolioId; + readonly to: PolymeshPrimitivesIdentityIdPortfolioId; + readonly items: Vec; + } & Struct; + readonly isRenamePortfolio: boolean; + readonly asRenamePortfolio: { + readonly num: u64; + readonly toName: Bytes; + } & Struct; + readonly isQuitPortfolioCustody: boolean; + readonly asQuitPortfolioCustody: { + readonly pid: PolymeshPrimitivesIdentityIdPortfolioId; + } & Struct; + readonly isAcceptPortfolioCustody: boolean; + readonly asAcceptPortfolioCustody: { + readonly authId: u64; + } & Struct; + readonly type: 'CreatePortfolio' | 'DeletePortfolio' | 'MovePortfolioFunds' | 'RenamePortfolio' | 'QuitPortfolioCustody' | 'AcceptPortfolioCustody'; + } + + /** @name PalletPortfolioMovePortfolioItem (472) */ + export interface PalletPortfolioMovePortfolioItem extends Struct { + readonly ticker: PolymeshPrimitivesTicker; + readonly amount: u128; + readonly memo: Option; + } + + /** @name PalletProtocolFeeCall (473) */ + export interface PalletProtocolFeeCall extends Enum { + readonly isChangeCoefficient: boolean; + readonly asChangeCoefficient: { + readonly coefficient: PolymeshPrimitivesPosRatio; + } & Struct; + readonly isChangeBaseFee: boolean; + readonly asChangeBaseFee: { + readonly op: PolymeshCommonUtilitiesProtocolFeeProtocolOp; + readonly baseFee: u128; + } & Struct; + readonly type: 'ChangeCoefficient' | 'ChangeBaseFee'; + } + + /** @name PolymeshCommonUtilitiesProtocolFeeProtocolOp (474) */ + export interface PolymeshCommonUtilitiesProtocolFeeProtocolOp extends Enum { + readonly isAssetRegisterTicker: boolean; + readonly isAssetIssue: boolean; + readonly isAssetAddDocuments: boolean; + readonly isAssetCreateAsset: boolean; + readonly isCheckpointCreateSchedule: boolean; + readonly isComplianceManagerAddComplianceRequirement: boolean; + readonly isIdentityCddRegisterDid: boolean; + readonly isIdentityAddClaim: boolean; + readonly isIdentityAddSecondaryKeysWithAuthorization: boolean; + readonly isPipsPropose: boolean; + readonly isContractsPutCode: boolean; + readonly isCorporateBallotAttachBallot: boolean; + readonly isCapitalDistributionDistribute: boolean; + readonly type: 'AssetRegisterTicker' | 'AssetIssue' | 'AssetAddDocuments' | 'AssetCreateAsset' | 'CheckpointCreateSchedule' | 'ComplianceManagerAddComplianceRequirement' | 'IdentityCddRegisterDid' | 'IdentityAddClaim' | 'IdentityAddSecondaryKeysWithAuthorization' | 'PipsPropose' | 'ContractsPutCode' | 'CorporateBallotAttachBallot' | 'CapitalDistributionDistribute'; + } + + /** @name PalletSchedulerCall (475) */ + export interface PalletSchedulerCall extends Enum { + readonly isSchedule: boolean; + readonly asSchedule: { + readonly when: u32; + readonly maybePeriodic: Option>; + readonly priority: u8; + readonly call: Call; + } & Struct; + readonly isCancel: boolean; + readonly asCancel: { + readonly when: u32; + readonly index: u32; + } & Struct; + readonly isScheduleNamed: boolean; + readonly asScheduleNamed: { + readonly id: Bytes; + readonly when: u32; + readonly maybePeriodic: Option>; + readonly priority: u8; + readonly call: Call; + } & Struct; + readonly isCancelNamed: boolean; + readonly asCancelNamed: { + readonly id: Bytes; + } & Struct; + readonly isScheduleAfter: boolean; + readonly asScheduleAfter: { + readonly after: u32; + readonly maybePeriodic: Option>; + readonly priority: u8; + readonly call: Call; + } & Struct; + readonly isScheduleNamedAfter: boolean; + readonly asScheduleNamedAfter: { + readonly id: Bytes; + readonly after: u32; + readonly maybePeriodic: Option>; + readonly priority: u8; + readonly call: Call; + } & Struct; + readonly type: 'Schedule' | 'Cancel' | 'ScheduleNamed' | 'CancelNamed' | 'ScheduleAfter' | 'ScheduleNamedAfter'; + } + + /** @name PalletSettlementCall (477) */ + export interface PalletSettlementCall extends Enum { + readonly isCreateVenue: boolean; + readonly asCreateVenue: { + readonly details: Bytes; + readonly signers: Vec; + readonly typ: PalletSettlementVenueType; + } & Struct; + readonly isUpdateVenueDetails: boolean; + readonly asUpdateVenueDetails: { + readonly id: u64; + readonly details: Bytes; + } & Struct; + readonly isUpdateVenueType: boolean; + readonly asUpdateVenueType: { + readonly id: u64; + readonly typ: PalletSettlementVenueType; + } & Struct; + readonly isAddInstruction: boolean; + readonly asAddInstruction: { + readonly venueId: u64; + readonly settlementType: PalletSettlementSettlementType; + readonly tradeDate: Option; + readonly valueDate: Option; + readonly legs: Vec; + } & Struct; + readonly isAddAndAffirmInstruction: boolean; + readonly asAddAndAffirmInstruction: { + readonly venueId: u64; + readonly settlementType: PalletSettlementSettlementType; + readonly tradeDate: Option; + readonly valueDate: Option; + readonly legs: Vec; + readonly portfolios: Vec; + } & Struct; + readonly isAffirmInstruction: boolean; + readonly asAffirmInstruction: { + readonly id: u64; + readonly portfolios: Vec; + readonly maxLegsCount: u32; + } & Struct; + readonly isWithdrawAffirmation: boolean; + readonly asWithdrawAffirmation: { + readonly id: u64; + readonly portfolios: Vec; + readonly maxLegsCount: u32; + } & Struct; + readonly isRejectInstruction: boolean; + readonly asRejectInstruction: { + readonly id: u64; + readonly portfolio: PolymeshPrimitivesIdentityIdPortfolioId; + readonly numOfLegs: u32; + } & Struct; + readonly isAffirmWithReceipts: boolean; + readonly asAffirmWithReceipts: { + readonly id: u64; + readonly receiptDetails: Vec; + readonly portfolios: Vec; + readonly maxLegsCount: u32; + } & Struct; + readonly isClaimReceipt: boolean; + readonly asClaimReceipt: { + readonly id: u64; + readonly receiptDetails: PalletSettlementReceiptDetails; + } & Struct; + readonly isUnclaimReceipt: boolean; + readonly asUnclaimReceipt: { + readonly instructionId: u64; + readonly legId: u64; + } & Struct; + readonly isSetVenueFiltering: boolean; + readonly asSetVenueFiltering: { + readonly ticker: PolymeshPrimitivesTicker; + readonly enabled: bool; + } & Struct; + readonly isAllowVenues: boolean; + readonly asAllowVenues: { + readonly ticker: PolymeshPrimitivesTicker; + readonly venues: Vec; + } & Struct; + readonly isDisallowVenues: boolean; + readonly asDisallowVenues: { + readonly ticker: PolymeshPrimitivesTicker; + readonly venues: Vec; + } & Struct; + readonly isChangeReceiptValidity: boolean; + readonly asChangeReceiptValidity: { + readonly receiptUid: u64; + readonly validity: bool; + } & Struct; + readonly isExecuteScheduledInstruction: boolean; + readonly asExecuteScheduledInstruction: { + readonly id: u64; + readonly legsCount: u32; + } & Struct; + readonly isRescheduleInstruction: boolean; + readonly asRescheduleInstruction: { + readonly id: u64; + } & Struct; + readonly type: 'CreateVenue' | 'UpdateVenueDetails' | 'UpdateVenueType' | 'AddInstruction' | 'AddAndAffirmInstruction' | 'AffirmInstruction' | 'WithdrawAffirmation' | 'RejectInstruction' | 'AffirmWithReceipts' | 'ClaimReceipt' | 'UnclaimReceipt' | 'SetVenueFiltering' | 'AllowVenues' | 'DisallowVenues' | 'ChangeReceiptValidity' | 'ExecuteScheduledInstruction' | 'RescheduleInstruction'; + } + + /** @name PalletSettlementReceiptDetails (479) */ + export interface PalletSettlementReceiptDetails extends Struct { + readonly receiptUid: u64; + readonly legId: u64; + readonly signer: AccountId32; + readonly signature: SpRuntimeMultiSignature; + readonly metadata: Bytes; + } + + /** @name SpRuntimeMultiSignature (480) */ + export interface SpRuntimeMultiSignature extends Enum { + readonly isEd25519: boolean; + readonly asEd25519: SpCoreEd25519Signature; + readonly isSr25519: boolean; + readonly asSr25519: SpCoreSr25519Signature; + readonly isEcdsa: boolean; + readonly asEcdsa: SpCoreEcdsaSignature; + readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa'; + } + + /** @name SpCoreEcdsaSignature (481) */ + export interface SpCoreEcdsaSignature extends U8aFixed {} + + /** @name PalletStatisticsCall (482) */ + export interface PalletStatisticsCall extends Enum { + readonly isAddTransferManager: boolean; + readonly asAddTransferManager: { + readonly ticker: PolymeshPrimitivesTicker; + readonly newTransferManager: PolymeshPrimitivesStatisticsTransferManager; + } & Struct; + readonly isRemoveTransferManager: boolean; + readonly asRemoveTransferManager: { + readonly ticker: PolymeshPrimitivesTicker; + readonly transferManager: PolymeshPrimitivesStatisticsTransferManager; + } & Struct; + readonly isAddExemptedEntities: boolean; + readonly asAddExemptedEntities: { + readonly ticker: PolymeshPrimitivesTicker; + readonly transferManager: PolymeshPrimitivesStatisticsTransferManager; + readonly exemptedEntities: Vec; + } & Struct; + readonly isRemoveExemptedEntities: boolean; + readonly asRemoveExemptedEntities: { + readonly ticker: PolymeshPrimitivesTicker; + readonly transferManager: PolymeshPrimitivesStatisticsTransferManager; + readonly entities: Vec; + } & Struct; + readonly type: 'AddTransferManager' | 'RemoveTransferManager' | 'AddExemptedEntities' | 'RemoveExemptedEntities'; + } + + /** @name PalletStoCall (483) */ + export interface PalletStoCall extends Enum { + readonly isCreateFundraiser: boolean; + readonly asCreateFundraiser: { + readonly offeringPortfolio: PolymeshPrimitivesIdentityIdPortfolioId; + readonly offeringAsset: PolymeshPrimitivesTicker; + readonly raisingPortfolio: PolymeshPrimitivesIdentityIdPortfolioId; + readonly raisingAsset: PolymeshPrimitivesTicker; + readonly tiers: Vec; + readonly venueId: u64; + readonly start: Option; + readonly end: Option; + readonly minimumInvestment: u128; + readonly fundraiserName: Bytes; + } & Struct; + readonly isInvest: boolean; + readonly asInvest: { + readonly investmentPortfolio: PolymeshPrimitivesIdentityIdPortfolioId; + readonly fundingPortfolio: PolymeshPrimitivesIdentityIdPortfolioId; + readonly offeringAsset: PolymeshPrimitivesTicker; + readonly id: u64; + readonly purchaseAmount: u128; + readonly maxPrice: Option; + readonly receipt: Option; + } & Struct; + readonly isFreezeFundraiser: boolean; + readonly asFreezeFundraiser: { + readonly offeringAsset: PolymeshPrimitivesTicker; + readonly id: u64; + } & Struct; + readonly isUnfreezeFundraiser: boolean; + readonly asUnfreezeFundraiser: { + readonly offeringAsset: PolymeshPrimitivesTicker; + readonly id: u64; + } & Struct; + readonly isModifyFundraiserWindow: boolean; + readonly asModifyFundraiserWindow: { + readonly offeringAsset: PolymeshPrimitivesTicker; + readonly id: u64; + readonly start: u64; + readonly end: Option; + } & Struct; + readonly isStop: boolean; + readonly asStop: { + readonly offeringAsset: PolymeshPrimitivesTicker; + readonly id: u64; + } & Struct; + readonly type: 'CreateFundraiser' | 'Invest' | 'FreezeFundraiser' | 'UnfreezeFundraiser' | 'ModifyFundraiserWindow' | 'Stop'; + } + + /** @name PalletStoPriceTier (485) */ + export interface PalletStoPriceTier extends Struct { + readonly total: u128; + readonly price: u128; + } + + /** @name PalletTreasuryCall (488) */ + export interface PalletTreasuryCall extends Enum { + readonly isDisbursement: boolean; + readonly asDisbursement: { + readonly beneficiaries: Vec; + } & Struct; + readonly isReimbursement: boolean; + readonly asReimbursement: { + readonly amount: u128; + } & Struct; + readonly type: 'Disbursement' | 'Reimbursement'; + } + + /** @name PolymeshPrimitivesBeneficiary (490) */ + export interface PolymeshPrimitivesBeneficiary extends Struct { + readonly id: PolymeshPrimitivesIdentityId; + readonly amount: u128; + } + + /** @name PalletUtilityCall (491) */ + export interface PalletUtilityCall extends Enum { + readonly isBatch: boolean; + readonly asBatch: { + readonly calls: Vec; + } & Struct; + readonly isBatchAtomic: boolean; + readonly asBatchAtomic: { + readonly calls: Vec; + } & Struct; + readonly isBatchOptimistic: boolean; + readonly asBatchOptimistic: { + readonly calls: Vec; + } & Struct; + readonly isRelayTx: boolean; + readonly asRelayTx: { + readonly target: AccountId32; + readonly signature: SpRuntimeMultiSignature; + readonly call: PalletUtilityUniqueCall; + } & Struct; + readonly type: 'Batch' | 'BatchAtomic' | 'BatchOptimistic' | 'RelayTx'; + } + + /** @name PalletUtilityUniqueCall (493) */ + export interface PalletUtilityUniqueCall extends Struct { + readonly nonce: u64; + readonly call: Call; + } + + /** @name PalletBaseCall (494) */ + export type PalletBaseCall = Null; + + /** @name PalletExternalAgentsCall (495) */ + export interface PalletExternalAgentsCall extends Enum { + readonly isCreateGroup: boolean; + readonly asCreateGroup: { + readonly ticker: PolymeshPrimitivesTicker; + readonly perms: PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions; + } & Struct; + readonly isSetGroupPermissions: boolean; + readonly asSetGroupPermissions: { + readonly ticker: PolymeshPrimitivesTicker; + readonly id: u32; + readonly perms: PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions; + } & Struct; + readonly isRemoveAgent: boolean; + readonly asRemoveAgent: { + readonly ticker: PolymeshPrimitivesTicker; + readonly agent: PolymeshPrimitivesIdentityId; + } & Struct; + readonly isAbdicate: boolean; + readonly asAbdicate: { + readonly ticker: PolymeshPrimitivesTicker; + } & Struct; + readonly isChangeGroup: boolean; + readonly asChangeGroup: { + readonly ticker: PolymeshPrimitivesTicker; + readonly agent: PolymeshPrimitivesIdentityId; + readonly group: PolymeshPrimitivesAgentAgentGroup; + } & Struct; + readonly isAcceptBecomeAgent: boolean; + readonly asAcceptBecomeAgent: { + readonly authId: u64; + } & Struct; + readonly type: 'CreateGroup' | 'SetGroupPermissions' | 'RemoveAgent' | 'Abdicate' | 'ChangeGroup' | 'AcceptBecomeAgent'; + } + + /** @name PalletRelayerCall (496) */ + export interface PalletRelayerCall extends Enum { + readonly isSetPayingKey: boolean; + readonly asSetPayingKey: { + readonly userKey: AccountId32; + readonly polyxLimit: u128; + } & Struct; + readonly isAcceptPayingKey: boolean; + readonly asAcceptPayingKey: { + readonly authId: u64; + } & Struct; + readonly isRemovePayingKey: boolean; + readonly asRemovePayingKey: { + readonly userKey: AccountId32; + readonly payingKey: AccountId32; + } & Struct; + readonly isUpdatePolyxLimit: boolean; + readonly asUpdatePolyxLimit: { + readonly userKey: AccountId32; + readonly polyxLimit: u128; + } & Struct; + readonly isIncreasePolyxLimit: boolean; + readonly asIncreasePolyxLimit: { + readonly userKey: AccountId32; + readonly amount: u128; + } & Struct; + readonly isDecreasePolyxLimit: boolean; + readonly asDecreasePolyxLimit: { + readonly userKey: AccountId32; + readonly amount: u128; + } & Struct; + readonly type: 'SetPayingKey' | 'AcceptPayingKey' | 'RemovePayingKey' | 'UpdatePolyxLimit' | 'IncreasePolyxLimit' | 'DecreasePolyxLimit'; + } + + /** @name PalletRewardsCall (497) */ + export interface PalletRewardsCall extends Enum { + readonly isClaimItnReward: boolean; + readonly asClaimItnReward: { + readonly rewardAddress: AccountId32; + readonly itnAddress: AccountId32; + readonly signature: SpRuntimeMultiSignature; + } & Struct; + readonly isSetItnRewardStatus: boolean; + readonly asSetItnRewardStatus: { + readonly itnAddress: AccountId32; + readonly status: PalletRewardsItnRewardStatus; + } & Struct; + readonly type: 'ClaimItnReward' | 'SetItnRewardStatus'; + } + + /** @name PalletRewardsItnRewardStatus (498) */ + export interface PalletRewardsItnRewardStatus extends Enum { + readonly isUnclaimed: boolean; + readonly asUnclaimed: u128; + readonly isClaimed: boolean; + readonly type: 'Unclaimed' | 'Claimed'; + } + + /** @name PalletTestUtilsCall (499) */ + export interface PalletTestUtilsCall extends Enum { + readonly isRegisterDid: boolean; + readonly asRegisterDid: { + readonly uid: PolymeshPrimitivesCddIdInvestorUid; + readonly secondaryKeys: Vec; + } & Struct; + readonly isMockCddRegisterDid: boolean; + readonly asMockCddRegisterDid: { + readonly targetAccount: AccountId32; + } & Struct; + readonly isGetMyDid: boolean; + readonly isGetCddOf: boolean; + readonly asGetCddOf: { + readonly of: AccountId32; + } & Struct; + readonly type: 'RegisterDid' | 'MockCddRegisterDid' | 'GetMyDid' | 'GetCddOf'; + } + + /** @name PalletCommitteePolymeshVotes (500) */ + export interface PalletCommitteePolymeshVotes extends Struct { + readonly index: u32; + readonly ayes: Vec; + readonly nays: Vec; + readonly expiry: PolymeshCommonUtilitiesMaybeBlock; + } + + /** @name PalletCommitteeError (502) */ + export interface PalletCommitteeError extends Enum { + readonly isDuplicateVote: boolean; + readonly isNotAMember: boolean; + readonly isNoSuchProposal: boolean; + readonly isProposalExpired: boolean; + readonly isDuplicateProposal: boolean; + readonly isMismatchedVotingIndex: boolean; + readonly isInvalidProportion: boolean; + readonly isFirstVoteReject: boolean; + readonly isProposalsLimitReached: boolean; + readonly type: 'DuplicateVote' | 'NotAMember' | 'NoSuchProposal' | 'ProposalExpired' | 'DuplicateProposal' | 'MismatchedVotingIndex' | 'InvalidProportion' | 'FirstVoteReject' | 'ProposalsLimitReached'; + } + + /** @name PalletMultisigProposalDetails (512) */ + export interface PalletMultisigProposalDetails extends Struct { + readonly approvals: u64; + readonly rejections: u64; + readonly status: PalletMultisigProposalStatus; + readonly expiry: Option; + readonly autoClose: bool; + } + + /** @name PalletMultisigProposalStatus (513) */ + export interface PalletMultisigProposalStatus extends Enum { + readonly isInvalid: boolean; + readonly isActiveOrExpired: boolean; + readonly isExecutionSuccessful: boolean; + readonly isExecutionFailed: boolean; + readonly isRejected: boolean; + readonly type: 'Invalid' | 'ActiveOrExpired' | 'ExecutionSuccessful' | 'ExecutionFailed' | 'Rejected'; + } + + /** @name PalletMultisigError (514) */ + export interface PalletMultisigError extends Enum { + readonly isCddMissing: boolean; + readonly isProposalMissing: boolean; + readonly isDecodingError: boolean; + readonly isNoSigners: boolean; + readonly isRequiredSignaturesOutOfBounds: boolean; + readonly isNotASigner: boolean; + readonly isNoSuchMultisig: boolean; + readonly isNotEnoughSigners: boolean; + readonly isNonceOverflow: boolean; + readonly isAlreadyVoted: boolean; + readonly isAlreadyASigner: boolean; + readonly isFailedToChargeFee: boolean; + readonly isIdentityNotCreator: boolean; + readonly isChangeNotAllowed: boolean; + readonly isSignerAlreadyLinked: boolean; + readonly isMissingCurrentIdentity: boolean; + readonly isNotPrimaryKey: boolean; + readonly isProposalAlreadyRejected: boolean; + readonly isProposalExpired: boolean; + readonly isProposalAlreadyExecuted: boolean; + readonly isMultisigMissingIdentity: boolean; + readonly isFailedToSchedule: boolean; + readonly isTooManySigners: boolean; + readonly type: 'CddMissing' | 'ProposalMissing' | 'DecodingError' | 'NoSigners' | 'RequiredSignaturesOutOfBounds' | 'NotASigner' | 'NoSuchMultisig' | 'NotEnoughSigners' | 'NonceOverflow' | 'AlreadyVoted' | 'AlreadyASigner' | 'FailedToChargeFee' | 'IdentityNotCreator' | 'ChangeNotAllowed' | 'SignerAlreadyLinked' | 'MissingCurrentIdentity' | 'NotPrimaryKey' | 'ProposalAlreadyRejected' | 'ProposalExpired' | 'ProposalAlreadyExecuted' | 'MultisigMissingIdentity' | 'FailedToSchedule' | 'TooManySigners'; + } + + /** @name PalletBridgeBridgeTxDetail (516) */ + export interface PalletBridgeBridgeTxDetail extends Struct { + readonly amount: u128; + readonly status: PalletBridgeBridgeTxStatus; + readonly executionBlock: u32; + readonly txHash: H256; + } + + /** @name PalletBridgeBridgeTxStatus (517) */ + export interface PalletBridgeBridgeTxStatus extends Enum { + readonly isAbsent: boolean; + readonly isPending: boolean; + readonly asPending: u8; + readonly isFrozen: boolean; + readonly isTimelocked: boolean; + readonly isHandled: boolean; + readonly type: 'Absent' | 'Pending' | 'Frozen' | 'Timelocked' | 'Handled'; + } + + /** @name PalletBridgeError (520) */ + export interface PalletBridgeError extends Enum { + readonly isControllerNotSet: boolean; + readonly isBadCaller: boolean; + readonly isBadAdmin: boolean; + readonly isNoValidCdd: boolean; + readonly isProposalAlreadyHandled: boolean; + readonly isUnauthorized: boolean; + readonly isFrozen: boolean; + readonly isNotFrozen: boolean; + readonly isFrozenTx: boolean; + readonly isBridgeLimitReached: boolean; + readonly isOverflow: boolean; + readonly isDivisionByZero: boolean; + readonly isTimelockedTx: boolean; + readonly type: 'ControllerNotSet' | 'BadCaller' | 'BadAdmin' | 'NoValidCdd' | 'ProposalAlreadyHandled' | 'Unauthorized' | 'Frozen' | 'NotFrozen' | 'FrozenTx' | 'BridgeLimitReached' | 'Overflow' | 'DivisionByZero' | 'TimelockedTx'; + } + + /** @name PalletStakingStakingLedger (521) */ + export interface PalletStakingStakingLedger extends Struct { + readonly stash: AccountId32; + readonly total: Compact; + readonly active: Compact; + readonly unlocking: Vec; + readonly claimedRewards: Vec; + } + + /** @name PalletStakingUnlockChunk (523) */ + export interface PalletStakingUnlockChunk extends Struct { + readonly value: Compact; + readonly era: Compact; + } + + /** @name PalletStakingNominations (524) */ + export interface PalletStakingNominations extends Struct { + readonly targets: Vec; + readonly submittedIn: u32; + readonly suppressed: bool; + } + + /** @name PalletStakingActiveEraInfo (525) */ + export interface PalletStakingActiveEraInfo extends Struct { + readonly index: u32; + readonly start: Option; + } + + /** @name PalletStakingEraRewardPoints (527) */ + export interface PalletStakingEraRewardPoints extends Struct { + readonly total: u32; + readonly individual: BTreeMap; + } + + /** @name PalletStakingForcing (530) */ + export interface PalletStakingForcing extends Enum { + readonly isNotForcing: boolean; + readonly isForceNew: boolean; + readonly isForceNone: boolean; + readonly isForceAlways: boolean; + readonly type: 'NotForcing' | 'ForceNew' | 'ForceNone' | 'ForceAlways'; + } + + /** @name PalletStakingUnappliedSlash (532) */ + export interface PalletStakingUnappliedSlash extends Struct { + readonly validator: AccountId32; + readonly own: u128; + readonly others: Vec>; + readonly reporters: Vec; + readonly payout: u128; + } + + /** @name PalletStakingSlashingSlashingSpans (536) */ + export interface PalletStakingSlashingSlashingSpans extends Struct { + readonly spanIndex: u32; + readonly lastStart: u32; + readonly lastNonzeroSlash: u32; + readonly prior: Vec; + } + + /** @name PalletStakingSlashingSpanRecord (537) */ + export interface PalletStakingSlashingSpanRecord extends Struct { + readonly slashed: u128; + readonly paidOut: u128; + } + + /** @name PalletStakingElectionResult (538) */ + export interface PalletStakingElectionResult extends Struct { + readonly electedStashes: Vec; + readonly exposures: Vec>; + readonly compute: PalletStakingElectionCompute; + } + + /** @name PalletStakingElectionStatus (539) */ + export interface PalletStakingElectionStatus extends Enum { + readonly isClosed: boolean; + readonly isOpen: boolean; + readonly asOpen: u32; + readonly type: 'Closed' | 'Open'; + } + + /** @name PalletStakingPermissionedIdentityPrefs (540) */ + export interface PalletStakingPermissionedIdentityPrefs extends Struct { + readonly intendedCount: u32; + readonly runningCount: u32; + } + + /** @name PalletStakingReleases (541) */ + export interface PalletStakingReleases extends Enum { + readonly isV100Ancient: boolean; + readonly isV200: boolean; + readonly isV300: boolean; + readonly isV400: boolean; + readonly isV500: boolean; + readonly isV600: boolean; + readonly isV601: boolean; + readonly isV700: boolean; + readonly type: 'V100Ancient' | 'V200' | 'V300' | 'V400' | 'V500' | 'V600' | 'V601' | 'V700'; + } + + /** @name PalletStakingError (542) */ + export interface PalletStakingError extends Enum { + readonly isNotController: boolean; + readonly isNotStash: boolean; + readonly isAlreadyBonded: boolean; + readonly isAlreadyPaired: boolean; + readonly isEmptyTargets: boolean; + readonly isInvalidSlashIndex: boolean; + readonly isInsufficientValue: boolean; + readonly isNoMoreChunks: boolean; + readonly isNoUnlockChunk: boolean; + readonly isFundedTarget: boolean; + readonly isInvalidEraToReward: boolean; + readonly isNotSortedAndUnique: boolean; + readonly isAlreadyClaimed: boolean; + readonly isOffchainElectionEarlySubmission: boolean; + readonly isOffchainElectionWeakSubmission: boolean; + readonly isSnapshotUnavailable: boolean; + readonly isOffchainElectionBogusWinnerCount: boolean; + readonly isOffchainElectionBogusWinner: boolean; + readonly isOffchainElectionBogusCompact: boolean; + readonly isOffchainElectionBogusNominator: boolean; + readonly isOffchainElectionBogusNomination: boolean; + readonly isOffchainElectionSlashedNomination: boolean; + readonly isOffchainElectionBogusSelfVote: boolean; + readonly isOffchainElectionBogusEdge: boolean; + readonly isOffchainElectionBogusScore: boolean; + readonly isOffchainElectionBogusElectionSize: boolean; + readonly isCallNotAllowed: boolean; + readonly isIncorrectSlashingSpans: boolean; + readonly isAlreadyExists: boolean; + readonly isNotExists: boolean; + readonly isNoChange: boolean; + readonly isInvalidValidatorIdentity: boolean; + readonly isInvalidValidatorCommission: boolean; + readonly isStashIdentityDoesNotExist: boolean; + readonly isStashIdentityNotPermissioned: boolean; + readonly isStashIdentityNotCDDed: boolean; + readonly isHitIntendedValidatorCount: boolean; + readonly isIntendedCountIsExceedingConsensusLimit: boolean; + readonly isBondTooSmall: boolean; + readonly isBadState: boolean; + readonly isTooManyTargets: boolean; + readonly isBadTarget: boolean; + readonly type: 'NotController' | 'NotStash' | 'AlreadyBonded' | 'AlreadyPaired' | 'EmptyTargets' | 'InvalidSlashIndex' | 'InsufficientValue' | 'NoMoreChunks' | 'NoUnlockChunk' | 'FundedTarget' | 'InvalidEraToReward' | 'NotSortedAndUnique' | 'AlreadyClaimed' | 'OffchainElectionEarlySubmission' | 'OffchainElectionWeakSubmission' | 'SnapshotUnavailable' | 'OffchainElectionBogusWinnerCount' | 'OffchainElectionBogusWinner' | 'OffchainElectionBogusCompact' | 'OffchainElectionBogusNominator' | 'OffchainElectionBogusNomination' | 'OffchainElectionSlashedNomination' | 'OffchainElectionBogusSelfVote' | 'OffchainElectionBogusEdge' | 'OffchainElectionBogusScore' | 'OffchainElectionBogusElectionSize' | 'CallNotAllowed' | 'IncorrectSlashingSpans' | 'AlreadyExists' | 'NotExists' | 'NoChange' | 'InvalidValidatorIdentity' | 'InvalidValidatorCommission' | 'StashIdentityDoesNotExist' | 'StashIdentityNotPermissioned' | 'StashIdentityNotCDDed' | 'HitIntendedValidatorCount' | 'IntendedCountIsExceedingConsensusLimit' | 'BondTooSmall' | 'BadState' | 'TooManyTargets' | 'BadTarget'; + } + + /** @name SpStakingOffenceOffenceDetails (543) */ + export interface SpStakingOffenceOffenceDetails extends Struct { + readonly offender: ITuple<[AccountId32, PalletStakingExposure]>; + readonly reporters: Vec; + } + + /** @name SpCoreCryptoKeyTypeId (548) */ + export interface SpCoreCryptoKeyTypeId extends U8aFixed {} + + /** @name PalletSessionError (549) */ + export interface PalletSessionError extends Enum { + readonly isInvalidProof: boolean; + readonly isNoAssociatedValidatorId: boolean; + readonly isDuplicatedKey: boolean; + readonly isNoKeys: boolean; + readonly isNoAccount: boolean; + readonly type: 'InvalidProof' | 'NoAssociatedValidatorId' | 'DuplicatedKey' | 'NoKeys' | 'NoAccount'; + } + + /** @name PalletGrandpaStoredState (550) */ + export interface PalletGrandpaStoredState extends Enum { + readonly isLive: boolean; + readonly isPendingPause: boolean; + readonly asPendingPause: { + readonly scheduledAt: u32; + readonly delay: u32; + } & Struct; + readonly isPaused: boolean; + readonly isPendingResume: boolean; + readonly asPendingResume: { + readonly scheduledAt: u32; + readonly delay: u32; + } & Struct; + readonly type: 'Live' | 'PendingPause' | 'Paused' | 'PendingResume'; + } + + /** @name PalletGrandpaStoredPendingChange (551) */ + export interface PalletGrandpaStoredPendingChange extends Struct { + readonly scheduledAt: u32; + readonly delay: u32; + readonly nextAuthorities: Vec>; + readonly forced: Option; + } + + /** @name PalletGrandpaError (553) */ + export interface PalletGrandpaError extends Enum { + readonly isPauseFailed: boolean; + readonly isResumeFailed: boolean; + readonly isChangePending: boolean; + readonly isTooSoon: boolean; + readonly isInvalidKeyOwnershipProof: boolean; + readonly isInvalidEquivocationProof: boolean; + readonly isDuplicateOffenceReport: boolean; + readonly type: 'PauseFailed' | 'ResumeFailed' | 'ChangePending' | 'TooSoon' | 'InvalidKeyOwnershipProof' | 'InvalidEquivocationProof' | 'DuplicateOffenceReport'; + } + + /** @name PalletImOnlineBoundedOpaqueNetworkState (557) */ + export interface PalletImOnlineBoundedOpaqueNetworkState extends Struct { + readonly peerId: Bytes; + readonly externalAddresses: Vec; + } + + /** @name PalletImOnlineError (561) */ + export interface PalletImOnlineError extends Enum { + readonly isInvalidKey: boolean; + readonly isDuplicatedHeartbeat: boolean; + readonly type: 'InvalidKey' | 'DuplicatedHeartbeat'; + } + + /** @name PalletSudoError (562) */ + export interface PalletSudoError extends Enum { + readonly isRequireSudo: boolean; + readonly type: 'RequireSudo'; + } + + /** @name PalletAssetTickerRegistration (563) */ + export interface PalletAssetTickerRegistration extends Struct { + readonly owner: PolymeshPrimitivesIdentityId; + readonly expiry: Option; + } + + /** @name PalletAssetSecurityToken (564) */ + export interface PalletAssetSecurityToken extends Struct { + readonly totalSupply: u128; + readonly ownerDid: PolymeshPrimitivesIdentityId; + readonly divisible: bool; + readonly assetType: PolymeshPrimitivesAssetAssetType; + } + + /** @name PalletAssetAssetOwnershipRelation (568) */ + export interface PalletAssetAssetOwnershipRelation extends Enum { + readonly isNotOwned: boolean; + readonly isTickerOwned: boolean; + readonly isAssetOwned: boolean; + readonly type: 'NotOwned' | 'TickerOwned' | 'AssetOwned'; + } + + /** @name PalletAssetClassicTickerRegistration (570) */ + export interface PalletAssetClassicTickerRegistration extends Struct { + readonly ethOwner: PolymeshPrimitivesEthereumEthereumAddress; + readonly isCreated: bool; + } + + /** @name PalletAssetError (573) */ + export interface PalletAssetError extends Enum { + readonly isUnauthorized: boolean; + readonly isAlreadyArchived: boolean; + readonly isAlreadyUnArchived: boolean; + readonly isExtensionAlreadyPresent: boolean; + readonly isAssetAlreadyCreated: boolean; + readonly isTickerTooLong: boolean; + readonly isTickerNotAscii: boolean; + readonly isTickerAlreadyRegistered: boolean; + readonly isTotalSupplyAboveLimit: boolean; + readonly isNoSuchAsset: boolean; + readonly isAlreadyFrozen: boolean; + readonly isNotAnOwner: boolean; + readonly isBalanceOverflow: boolean; + readonly isTotalSupplyOverflow: boolean; + readonly isInvalidGranularity: boolean; + readonly isNotFrozen: boolean; + readonly isInvalidTransfer: boolean; + readonly isInsufficientBalance: boolean; + readonly isAssetAlreadyDivisible: boolean; + readonly isMaximumTMExtensionLimitReached: boolean; + readonly isIncompatibleExtensionVersion: boolean; + readonly isInvalidEthereumSignature: boolean; + readonly isNoSuchClassicTicker: boolean; + readonly isTickerRegistrationExpired: boolean; + readonly isSenderSameAsReceiver: boolean; + readonly isNoSuchDoc: boolean; + readonly isMaxLengthOfAssetNameExceeded: boolean; + readonly isFundingRoundNameMaxLengthExceeded: boolean; + readonly isInvalidAssetIdentifier: boolean; + readonly isInvestorUniquenessClaimNotAllowed: boolean; + readonly isInvalidCustomAssetTypeId: boolean; + readonly type: 'Unauthorized' | 'AlreadyArchived' | 'AlreadyUnArchived' | 'ExtensionAlreadyPresent' | 'AssetAlreadyCreated' | 'TickerTooLong' | 'TickerNotAscii' | 'TickerAlreadyRegistered' | 'TotalSupplyAboveLimit' | 'NoSuchAsset' | 'AlreadyFrozen' | 'NotAnOwner' | 'BalanceOverflow' | 'TotalSupplyOverflow' | 'InvalidGranularity' | 'NotFrozen' | 'InvalidTransfer' | 'InsufficientBalance' | 'AssetAlreadyDivisible' | 'MaximumTMExtensionLimitReached' | 'IncompatibleExtensionVersion' | 'InvalidEthereumSignature' | 'NoSuchClassicTicker' | 'TickerRegistrationExpired' | 'SenderSameAsReceiver' | 'NoSuchDoc' | 'MaxLengthOfAssetNameExceeded' | 'FundingRoundNameMaxLengthExceeded' | 'InvalidAssetIdentifier' | 'InvestorUniquenessClaimNotAllowed' | 'InvalidCustomAssetTypeId'; + } + + /** @name PalletCorporateActionsDistributionError (576) */ + export interface PalletCorporateActionsDistributionError extends Enum { + readonly isCaNotBenefit: boolean; + readonly isAlreadyExists: boolean; + readonly isExpiryBeforePayment: boolean; + readonly isDistributingAsset: boolean; + readonly isHolderAlreadyPaid: boolean; + readonly isNoSuchDistribution: boolean; + readonly isCannotClaimBeforeStart: boolean; + readonly isCannotClaimAfterExpiry: boolean; + readonly isBalancePerShareProductOverflowed: boolean; + readonly isNotDistributionCreator: boolean; + readonly isAlreadyReclaimed: boolean; + readonly isNotExpired: boolean; + readonly isDistributionStarted: boolean; + readonly isInsufficientRemainingAmount: boolean; + readonly type: 'CaNotBenefit' | 'AlreadyExists' | 'ExpiryBeforePayment' | 'DistributingAsset' | 'HolderAlreadyPaid' | 'NoSuchDistribution' | 'CannotClaimBeforeStart' | 'CannotClaimAfterExpiry' | 'BalancePerShareProductOverflowed' | 'NotDistributionCreator' | 'AlreadyReclaimed' | 'NotExpired' | 'DistributionStarted' | 'InsufficientRemainingAmount'; + } + + /** @name PalletAssetCheckpointError (583) */ + export interface PalletAssetCheckpointError extends Enum { + readonly isNoSuchSchedule: boolean; + readonly isScheduleNotRemovable: boolean; + readonly isFailedToComputeNextCheckpoint: boolean; + readonly isScheduleDurationTooShort: boolean; + readonly isSchedulesTooComplex: boolean; + readonly type: 'NoSuchSchedule' | 'ScheduleNotRemovable' | 'FailedToComputeNextCheckpoint' | 'ScheduleDurationTooShort' | 'SchedulesTooComplex'; + } + + /** @name PolymeshPrimitivesComplianceManagerAssetCompliance (584) */ + export interface PolymeshPrimitivesComplianceManagerAssetCompliance extends Struct { + readonly paused: bool; + readonly requirements: Vec; + } + + /** @name PalletComplianceManagerError (586) */ + export interface PalletComplianceManagerError extends Enum { + readonly isUnauthorized: boolean; + readonly isDidNotExist: boolean; + readonly isInvalidComplianceRequirementId: boolean; + readonly isIncorrectOperationOnTrustedIssuer: boolean; + readonly isDuplicateComplianceRequirements: boolean; + readonly isComplianceRequirementTooComplex: boolean; + readonly type: 'Unauthorized' | 'DidNotExist' | 'InvalidComplianceRequirementId' | 'IncorrectOperationOnTrustedIssuer' | 'DuplicateComplianceRequirements' | 'ComplianceRequirementTooComplex'; + } + + /** @name PalletCorporateActionsError (589) */ + export interface PalletCorporateActionsError extends Enum { + readonly isAuthNotCAATransfer: boolean; + readonly isDetailsTooLong: boolean; + readonly isDuplicateDidTax: boolean; + readonly isTooManyDidTaxes: boolean; + readonly isTooManyTargetIds: boolean; + readonly isNoSuchCheckpointId: boolean; + readonly isNoSuchCA: boolean; + readonly isNoRecordDate: boolean; + readonly isRecordDateAfterStart: boolean; + readonly isDeclDateAfterRecordDate: boolean; + readonly isDeclDateInFuture: boolean; + readonly isNotTargetedByCA: boolean; + readonly type: 'AuthNotCAATransfer' | 'DetailsTooLong' | 'DuplicateDidTax' | 'TooManyDidTaxes' | 'TooManyTargetIds' | 'NoSuchCheckpointId' | 'NoSuchCA' | 'NoRecordDate' | 'RecordDateAfterStart' | 'DeclDateAfterRecordDate' | 'DeclDateInFuture' | 'NotTargetedByCA'; + } + + /** @name PalletCorporateActionsBallotError (591) */ + export interface PalletCorporateActionsBallotError extends Enum { + readonly isCaNotNotice: boolean; + readonly isAlreadyExists: boolean; + readonly isNoSuchBallot: boolean; + readonly isStartAfterEnd: boolean; + readonly isNowAfterEnd: boolean; + readonly isNumberOfChoicesOverflow: boolean; + readonly isVotingAlreadyStarted: boolean; + readonly isVotingNotStarted: boolean; + readonly isVotingAlreadyEnded: boolean; + readonly isWrongVoteCount: boolean; + readonly isInsufficientVotes: boolean; + readonly isNoSuchRCVFallback: boolean; + readonly isRcvSelfCycle: boolean; + readonly isRcvNotAllowed: boolean; + readonly type: 'CaNotNotice' | 'AlreadyExists' | 'NoSuchBallot' | 'StartAfterEnd' | 'NowAfterEnd' | 'NumberOfChoicesOverflow' | 'VotingAlreadyStarted' | 'VotingNotStarted' | 'VotingAlreadyEnded' | 'WrongVoteCount' | 'InsufficientVotes' | 'NoSuchRCVFallback' | 'RcvSelfCycle' | 'RcvNotAllowed'; + } + + /** @name PalletPermissionsError (592) */ + export interface PalletPermissionsError extends Enum { + readonly isUnauthorizedCaller: boolean; + readonly type: 'UnauthorizedCaller'; + } + + /** @name PalletPipsPipsMetadata (593) */ + export interface PalletPipsPipsMetadata extends Struct { + readonly id: u32; + readonly url: Option; + readonly description: Option; + readonly createdAt: u32; + readonly transactionVersion: u32; + readonly expiry: PolymeshCommonUtilitiesMaybeBlock; + } + + /** @name PalletPipsDepositInfo (595) */ + export interface PalletPipsDepositInfo extends Struct { + readonly owner: AccountId32; + readonly amount: u128; + } + + /** @name PalletPipsPip (596) */ + export interface PalletPipsPip extends Struct { + readonly id: u32; + readonly proposal: Call; + readonly state: PalletPipsProposalState; + readonly proposer: PalletPipsProposer; + } + + /** @name PalletPipsVotingResult (597) */ + export interface PalletPipsVotingResult extends Struct { + readonly ayesCount: u32; + readonly ayesStake: u128; + readonly naysCount: u32; + readonly naysStake: u128; + } + + /** @name PalletPipsVote (598) */ + export interface PalletPipsVote extends ITuple<[bool, u128]> {} + + /** @name PalletPipsSnapshotMetadata (599) */ + export interface PalletPipsSnapshotMetadata extends Struct { + readonly createdAt: u32; + readonly madeBy: AccountId32; + readonly id: u32; + } + + /** @name PalletPipsError (601) */ + export interface PalletPipsError extends Enum { + readonly isRescheduleNotByReleaseCoordinator: boolean; + readonly isNotFromCommunity: boolean; + readonly isNotByCommittee: boolean; + readonly isTooManyActivePips: boolean; + readonly isIncorrectDeposit: boolean; + readonly isInsufficientDeposit: boolean; + readonly isNoSuchProposal: boolean; + readonly isNotACommitteeMember: boolean; + readonly isInvalidFutureBlockNumber: boolean; + readonly isNumberOfVotesExceeded: boolean; + readonly isStakeAmountOfVotesExceeded: boolean; + readonly isMissingCurrentIdentity: boolean; + readonly isIncorrectProposalState: boolean; + readonly isCannotSkipPip: boolean; + readonly isSnapshotResultTooLarge: boolean; + readonly isSnapshotIdMismatch: boolean; + readonly isScheduledProposalDoesntExist: boolean; + readonly isProposalNotInScheduledState: boolean; + readonly type: 'RescheduleNotByReleaseCoordinator' | 'NotFromCommunity' | 'NotByCommittee' | 'TooManyActivePips' | 'IncorrectDeposit' | 'InsufficientDeposit' | 'NoSuchProposal' | 'NotACommitteeMember' | 'InvalidFutureBlockNumber' | 'NumberOfVotesExceeded' | 'StakeAmountOfVotesExceeded' | 'MissingCurrentIdentity' | 'IncorrectProposalState' | 'CannotSkipPip' | 'SnapshotResultTooLarge' | 'SnapshotIdMismatch' | 'ScheduledProposalDoesntExist' | 'ProposalNotInScheduledState'; + } + + /** @name PalletPortfolioError (607) */ + export interface PalletPortfolioError extends Enum { + readonly isPortfolioDoesNotExist: boolean; + readonly isInsufficientPortfolioBalance: boolean; + readonly isDestinationIsSamePortfolio: boolean; + readonly isPortfolioNameAlreadyInUse: boolean; + readonly isSecondaryKeyNotAuthorizedForPortfolio: boolean; + readonly isUnauthorizedCustodian: boolean; + readonly isInsufficientTokensLocked: boolean; + readonly isPortfolioNotEmpty: boolean; + readonly isDifferentIdentityPortfolios: boolean; + readonly type: 'PortfolioDoesNotExist' | 'InsufficientPortfolioBalance' | 'DestinationIsSamePortfolio' | 'PortfolioNameAlreadyInUse' | 'SecondaryKeyNotAuthorizedForPortfolio' | 'UnauthorizedCustodian' | 'InsufficientTokensLocked' | 'PortfolioNotEmpty' | 'DifferentIdentityPortfolios'; + } + + /** @name PalletProtocolFeeError (608) */ + export interface PalletProtocolFeeError extends Enum { + readonly isInsufficientAccountBalance: boolean; + readonly isUnHandledImbalances: boolean; + readonly isInsufficientSubsidyBalance: boolean; + readonly type: 'InsufficientAccountBalance' | 'UnHandledImbalances' | 'InsufficientSubsidyBalance'; + } + + /** @name PalletSchedulerScheduledV2 (611) */ + export interface PalletSchedulerScheduledV2 extends Struct { + readonly maybeId: Option; + readonly priority: u8; + readonly call: Call; + readonly maybePeriodic: Option>; + readonly origin: PolymeshRuntimeDevelopRuntimeOriginCaller; + } + + /** @name PolymeshRuntimeDevelopRuntimeOriginCaller (612) */ + export interface PolymeshRuntimeDevelopRuntimeOriginCaller extends Enum { + readonly isSystem: boolean; + readonly asSystem: FrameSystemRawOrigin; + readonly isVoid: boolean; + readonly isPolymeshCommittee: boolean; + readonly asPolymeshCommittee: PalletCommitteeRawOriginInstance1; + readonly isTechnicalCommittee: boolean; + readonly asTechnicalCommittee: PalletCommitteeRawOriginInstance3; + readonly isUpgradeCommittee: boolean; + readonly asUpgradeCommittee: PalletCommitteeRawOriginInstance4; + readonly type: 'System' | 'Void' | 'PolymeshCommittee' | 'TechnicalCommittee' | 'UpgradeCommittee'; + } + + /** @name FrameSystemRawOrigin (613) */ + export interface FrameSystemRawOrigin extends Enum { + readonly isRoot: boolean; + readonly isSigned: boolean; + readonly asSigned: AccountId32; + readonly isNone: boolean; + readonly type: 'Root' | 'Signed' | 'None'; + } + + /** @name PalletCommitteeRawOriginInstance1 (614) */ + export interface PalletCommitteeRawOriginInstance1 extends Enum { + readonly isEndorsed: boolean; + readonly type: 'Endorsed'; + } + + /** @name PalletCommitteeRawOriginInstance3 (615) */ + export interface PalletCommitteeRawOriginInstance3 extends Enum { + readonly isEndorsed: boolean; + readonly type: 'Endorsed'; + } + + /** @name PalletCommitteeRawOriginInstance4 (616) */ + export interface PalletCommitteeRawOriginInstance4 extends Enum { + readonly isEndorsed: boolean; + readonly type: 'Endorsed'; + } + + /** @name SpCoreVoid (617) */ + export type SpCoreVoid = Null; + + /** @name PalletSchedulerReleases (618) */ + export interface PalletSchedulerReleases extends Enum { + readonly isV1: boolean; + readonly isV2: boolean; + readonly type: 'V1' | 'V2'; + } + + /** @name PalletSchedulerError (619) */ + export interface PalletSchedulerError extends Enum { + readonly isFailedToSchedule: boolean; + readonly isNotFound: boolean; + readonly isTargetBlockNumberInPast: boolean; + readonly isRescheduleNoChange: boolean; + readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange'; + } + + /** @name PalletSettlementVenue (620) */ + export interface PalletSettlementVenue extends Struct { + readonly creator: PolymeshPrimitivesIdentityId; + readonly venueType: PalletSettlementVenueType; + } + + /** @name PalletSettlementInstruction (623) */ + export interface PalletSettlementInstruction extends Struct { + readonly instructionId: u64; + readonly venueId: u64; + readonly status: PalletSettlementInstructionStatus; + readonly settlementType: PalletSettlementSettlementType; + readonly createdAt: Option; + readonly tradeDate: Option; + readonly valueDate: Option; + } + + /** @name PalletSettlementInstructionStatus (624) */ + export interface PalletSettlementInstructionStatus extends Enum { + readonly isUnknown: boolean; + readonly isPending: boolean; + readonly isFailed: boolean; + readonly type: 'Unknown' | 'Pending' | 'Failed'; + } + + /** @name PalletSettlementLegStatus (626) */ + export interface PalletSettlementLegStatus extends Enum { + readonly isPendingTokenLock: boolean; + readonly isExecutionPending: boolean; + readonly isExecutionToBeSkipped: boolean; + readonly asExecutionToBeSkipped: ITuple<[AccountId32, u64]>; + readonly type: 'PendingTokenLock' | 'ExecutionPending' | 'ExecutionToBeSkipped'; + } + + /** @name PalletSettlementAffirmationStatus (628) */ + export interface PalletSettlementAffirmationStatus extends Enum { + readonly isUnknown: boolean; + readonly isPending: boolean; + readonly isAffirmed: boolean; + readonly type: 'Unknown' | 'Pending' | 'Affirmed'; + } + + /** @name PalletSettlementError (632) */ + export interface PalletSettlementError extends Enum { + readonly isInvalidVenue: boolean; + readonly isUnauthorized: boolean; + readonly isNoPendingAffirm: boolean; + readonly isInstructionNotAffirmed: boolean; + readonly isInstructionNotPending: boolean; + readonly isInstructionNotFailed: boolean; + readonly isLegNotPending: boolean; + readonly isUnauthorizedSigner: boolean; + readonly isReceiptAlreadyClaimed: boolean; + readonly isReceiptNotClaimed: boolean; + readonly isUnauthorizedVenue: boolean; + readonly isFailedToLockTokens: boolean; + readonly isInstructionFailed: boolean; + readonly isInstructionDatesInvalid: boolean; + readonly isInstructionSettleBlockPassed: boolean; + readonly isInvalidSignature: boolean; + readonly isSameSenderReceiver: boolean; + readonly isPortfolioMismatch: boolean; + readonly isSettleOnPastBlock: boolean; + readonly isNoPortfolioProvided: boolean; + readonly isUnexpectedAffirmationStatus: boolean; + readonly isFailedToSchedule: boolean; + readonly isLegCountTooSmall: boolean; + readonly isUnknownInstruction: boolean; + readonly isInstructionHasTooManyLegs: boolean; + readonly type: 'InvalidVenue' | 'Unauthorized' | 'NoPendingAffirm' | 'InstructionNotAffirmed' | 'InstructionNotPending' | 'InstructionNotFailed' | 'LegNotPending' | 'UnauthorizedSigner' | 'ReceiptAlreadyClaimed' | 'ReceiptNotClaimed' | 'UnauthorizedVenue' | 'FailedToLockTokens' | 'InstructionFailed' | 'InstructionDatesInvalid' | 'InstructionSettleBlockPassed' | 'InvalidSignature' | 'SameSenderReceiver' | 'PortfolioMismatch' | 'SettleOnPastBlock' | 'NoPortfolioProvided' | 'UnexpectedAffirmationStatus' | 'FailedToSchedule' | 'LegCountTooSmall' | 'UnknownInstruction' | 'InstructionHasTooManyLegs'; + } + + /** @name PalletStatisticsError (636) */ + export interface PalletStatisticsError extends Enum { + readonly isDuplicateTransferManager: boolean; + readonly isTransferManagerMissing: boolean; + readonly isInvalidTransfer: boolean; + readonly isTransferManagersLimitReached: boolean; + readonly type: 'DuplicateTransferManager' | 'TransferManagerMissing' | 'InvalidTransfer' | 'TransferManagersLimitReached'; + } + + /** @name PalletStoError (638) */ + export interface PalletStoError extends Enum { + readonly isUnauthorized: boolean; + readonly isOverflow: boolean; + readonly isInsufficientTokensRemaining: boolean; + readonly isFundraiserNotFound: boolean; + readonly isFundraiserNotLive: boolean; + readonly isFundraiserClosed: boolean; + readonly isFundraiserExpired: boolean; + readonly isInvalidVenue: boolean; + readonly isInvalidPriceTiers: boolean; + readonly isInvalidOfferingWindow: boolean; + readonly isMaxPriceExceeded: boolean; + readonly isInvestmentAmountTooLow: boolean; + readonly type: 'Unauthorized' | 'Overflow' | 'InsufficientTokensRemaining' | 'FundraiserNotFound' | 'FundraiserNotLive' | 'FundraiserClosed' | 'FundraiserExpired' | 'InvalidVenue' | 'InvalidPriceTiers' | 'InvalidOfferingWindow' | 'MaxPriceExceeded' | 'InvestmentAmountTooLow'; + } + + /** @name PalletTreasuryError (639) */ + export interface PalletTreasuryError extends Enum { + readonly isInsufficientBalance: boolean; + readonly type: 'InsufficientBalance'; + } + + /** @name PalletUtilityError (640) */ + export interface PalletUtilityError extends Enum { + readonly isInvalidSignature: boolean; + readonly isTargetCddMissing: boolean; + readonly isInvalidNonce: boolean; + readonly type: 'InvalidSignature' | 'TargetCddMissing' | 'InvalidNonce'; + } + + /** @name PalletBaseError (641) */ + export interface PalletBaseError extends Enum { + readonly isTooLong: boolean; + readonly isCounterOverflow: boolean; + readonly type: 'TooLong' | 'CounterOverflow'; + } + + /** @name PalletExternalAgentsError (643) */ + export interface PalletExternalAgentsError extends Enum { + readonly isNoSuchAG: boolean; + readonly isUnauthorizedAgent: boolean; + readonly isAlreadyAnAgent: boolean; + readonly isNotAnAgent: boolean; + readonly isRemovingLastFullAgent: boolean; + readonly isSecondaryKeyNotAuthorizedForAsset: boolean; + readonly type: 'NoSuchAG' | 'UnauthorizedAgent' | 'AlreadyAnAgent' | 'NotAnAgent' | 'RemovingLastFullAgent' | 'SecondaryKeyNotAuthorizedForAsset'; + } + + /** @name PalletRelayerSubsidy (644) */ + export interface PalletRelayerSubsidy extends Struct { + readonly payingKey: AccountId32; + readonly remaining: u128; + } + + /** @name PalletRelayerError (645) */ + export interface PalletRelayerError extends Enum { + readonly isUserKeyCddMissing: boolean; + readonly isPayingKeyCddMissing: boolean; + readonly isNoPayingKey: boolean; + readonly isNotPayingKey: boolean; + readonly isNotAuthorizedForPayingKey: boolean; + readonly isNotAuthorizedForUserKey: boolean; + readonly isOverflow: boolean; + readonly type: 'UserKeyCddMissing' | 'PayingKeyCddMissing' | 'NoPayingKey' | 'NotPayingKey' | 'NotAuthorizedForPayingKey' | 'NotAuthorizedForUserKey' | 'Overflow'; + } + + /** @name PalletRewardsError (646) */ + export interface PalletRewardsError extends Enum { + readonly isUnknownItnAddress: boolean; + readonly isItnRewardAlreadyClaimed: boolean; + readonly isInvalidSignature: boolean; + readonly isUnableToCovertBalance: boolean; + readonly type: 'UnknownItnAddress' | 'ItnRewardAlreadyClaimed' | 'InvalidSignature' | 'UnableToCovertBalance'; + } + + /** @name PalletTestUtilsError (647) */ + export type PalletTestUtilsError = Null; + + /** @name FrameSystemExtensionsCheckSpecVersion (650) */ + export type FrameSystemExtensionsCheckSpecVersion = Null; + + /** @name FrameSystemExtensionsCheckTxVersion (651) */ + export type FrameSystemExtensionsCheckTxVersion = Null; + + /** @name FrameSystemExtensionsCheckGenesis (652) */ + export type FrameSystemExtensionsCheckGenesis = Null; + + /** @name FrameSystemExtensionsCheckNonce (655) */ + export interface FrameSystemExtensionsCheckNonce extends Compact {} + + /** @name PolymeshExtensionsCheckWeight (656) */ + export interface PolymeshExtensionsCheckWeight extends FrameSystemExtensionsCheckWeight {} + + /** @name FrameSystemExtensionsCheckWeight (657) */ + export type FrameSystemExtensionsCheckWeight = Null; + + /** @name PalletTransactionPaymentChargeTransactionPayment (658) */ + export interface PalletTransactionPaymentChargeTransactionPayment extends Compact {} + + /** @name PalletPermissionsStoreCallMetadata (659) */ + export type PalletPermissionsStoreCallMetadata = Null; + + /** @name PolymeshRuntimeDevelopRuntime (660) */ + export type PolymeshRuntimeDevelopRuntime = Null; + +} // declare module diff --git a/scripts/cli/src/tests/15_portfolio.ts b/scripts/cli/src/tests/15_portfolio.ts index 37e12ad43f..95f5f247cc 100644 --- a/scripts/cli/src/tests/15_portfolio.ts +++ b/scripts/cli/src/tests/15_portfolio.ts @@ -7,13 +7,18 @@ import { sendTx, ApiSingleton, } from "../util/init"; -import { createIdentities, addClaimsToDids } from "../helpers/identity_helper"; +import { createIdentities } from "../helpers/identity_helper"; import { issueTokenToDid } from "../helpers/asset_helper"; import { distributePolyBatch } from "../helpers/poly_helper"; import PrettyError from "pretty-error"; import { addComplianceRequirement } from "../helpers/compliance_manager_helper"; import { createTable } from "../util/sqlite3"; -import { forceNewEra, unbond, nominate, checkEraElectionClosed } from "../helpers/staking_helper"; +import { + forceNewEra, + unbond, + nominate, + checkEraElectionClosed, +} from "../helpers/staking_helper"; async function main(): Promise { createTable(); @@ -55,7 +60,7 @@ async function main(): Promise { await api.query.identity.authorizations.entries({ Account: dave2.publicKey, }) - )[0][1].unwrap().auth_id; + )[0][1].unwrap().authId; await sendTx(dave2, api.tx.identity.joinIdentityAsKey(authorization)); console.log("Portfolio: TrustedDefaultClaimIssuerAdded"); @@ -66,7 +71,7 @@ async function main(): Promise { dave, api.tx.complianceManager.addDefaultTrustedClaimIssuer(ticker, { issuer: bobDid, - trusted_for: { Any: null }, + trustedFor: { Any: null }, }) ); @@ -97,16 +102,19 @@ async function main(): Promise { ) ); - console.log(`Election Status: ${await api.query.staking.eraElectionStatus()}`); + console.log( + `Election Status: ${await api.query.staking.eraElectionStatus()}` + ); await checkEraElectionClosed(); - console.log(`Election Status: ${await api.query.staking.eraElectionStatus()}`); + console.log( + `Election Status: ${await api.query.staking.eraElectionStatus()}` + ); // AddAPortfolioManager is not possible because of old permission format console.log("Portfolio: StopStakingAPortion"); await unbond(dave, 100); console.log("Portfolio: StartStakingANewOperator"); await nominate(dave, alice.publicKey); - } main() diff --git a/scripts/cli/src/util/init.ts b/scripts/cli/src/util/init.ts index f7c73e4676..b711c0f98c 100644 --- a/scripts/cli/src/util/init.ts +++ b/scripts/cli/src/util/init.ts @@ -1,3 +1,4 @@ +import "@polkadot/api/augment"; import { ApiPromise, WsProvider, Keyring } from "@polkadot/api"; import { cryptoWaitReady, @@ -287,12 +288,11 @@ export function sendTransaction( if (dispatchError.isModule) { // known error const mod = dispatchError.asModule; - const { section, name, documentation } = - mod.registry.findMetaError( - new Uint8Array([mod.index.toNumber(), mod.error.toNumber()]) - ); + const { section, name, docs } = mod.registry.findMetaError( + new Uint8Array([mod.index.toNumber(), mod.error.toNumber()]) + ); - message = `${section}.${name}: ${documentation.join(" ")}`; + message = `${section}.${name}: ${docs.join(" ")}`; } else if (dispatchError.isBadOrigin) { message = "Bad origin"; } else if (dispatchError.isCannotLookup) { diff --git a/scripts/cli/tsconfig.json b/scripts/cli/tsconfig.json index 1980b64508..1bc6e37fcf 100644 --- a/scripts/cli/tsconfig.json +++ b/scripts/cli/tsconfig.json @@ -2,9 +2,10 @@ "compilerOptions": { "baseUrl": "", "paths": { - "polymesh-typegen/*": ["src/*"], + "polymesh-typegen/*": ["src/interfaces/*"], "@polkadot/api/augment": ["src/interfaces/augment-api.ts"], - "@polkadot/types/augment": ["src/interfaces/augment-types.ts"] + "@polkadot/types/augment": ["src/interfaces/augment-types.ts"], + "@polkadot/types/lookup": ["src/interfaces/types-lookup.ts"] }, "lib": ["ES2020"], "module": "commonjs", diff --git a/scripts/cli/util/init.js b/scripts/cli/util/init.mjs similarity index 97% rename from scripts/cli/util/init.js rename to scripts/cli/util/init.mjs index 1b98ca66a8..d63e30cbb4 100644 --- a/scripts/cli/util/init.js +++ b/scripts/cli/util/init.mjs @@ -1,20 +1,24 @@ -const { ApiPromise, WsProvider, Keyring } = require("@polkadot/api"); -const { +import { ApiPromise, WsProvider, Keyring } from '@polkadot/api'; +import { cryptoWaitReady, blake2AsHex, mnemonicGenerate, -} = require("@polkadot/util-crypto"); -const { +} from "@polkadot/util-crypto"; +import { stringToU8a, u8aConcat, u8aFixLength, u8aToHex, -} = require("@polkadot/util"); -const BN = require("bn.js"); -const assert = require("assert"); -const fs = require("fs"); -const path = require("path"); -const cryptoRandomString = require('crypto-random-string'); +} from "@polkadot/util"; +import BN from "bn.js"; +import assert from "assert"; +import fs from "fs"; +import path from "path"; +import cryptoRandomString from 'crypto-random-string'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); let nonces = new Map(); diff --git a/scripts/cli/util/schema_check.js b/scripts/cli/util/schema_check.mjs similarity index 52% rename from scripts/cli/util/schema_check.js rename to scripts/cli/util/schema_check.mjs index fbb2971bf7..1284bb9e23 100644 --- a/scripts/cli/util/schema_check.js +++ b/scripts/cli/util/schema_check.mjs @@ -1,8 +1,4 @@ -// Set options as a parameter, environment variable, or rc file. -require = require("esm")(module /*, options*/); -module.exports = require("./init.js"); - -let { reqImports } = require("./init.js"); +import { reqImports } from "./init.mjs"; async function main() { try { diff --git a/scripts/cli/util/schema_test.sh b/scripts/cli/util/schema_test.sh index b698d02ba2..463a228112 100755 --- a/scripts/cli/util/schema_test.sh +++ b/scripts/cli/util/schema_test.sh @@ -2,7 +2,7 @@ set -e -( set -x; node ./util/schema_check.js args...; ) 2>&1 | tee output.log +( set -x; node ./util/schema_check.mjs args...; ) 2>&1 | tee output.log errLen=$(cat output.log | grep 'Unknown\ types\ found\|ErrorOccurred' | wc -l) diff --git a/src/chain_spec.rs b/src/chain_spec.rs index ba40391751..96ac5741e8 100644 --- a/src/chain_spec.rs +++ b/src/chain_spec.rs @@ -5,7 +5,7 @@ use pallet_bridge::BridgeTx; use pallet_im_online::sr25519::AuthorityId as ImOnlineId; use pallet_staking::StakerStatus; use polymesh_common_utilities::{ - constants::{currency::POLY, REWARDS_MODULE_ID, TREASURY_MODULE_ID}, + constants::{currency::POLY, REWARDS_PALLET_ID, TREASURY_PALLET_ID}, protocol_fee::ProtocolOp, MaybeBlock, SystematicIssuers, }; @@ -13,7 +13,7 @@ use polymesh_primitives::{ identity_id::GenesisIdentityRecord, AccountId, Balance, HexAccountId, IdentityId, Moment, PosRatio, SecondaryKey, Signatory, Signature, Ticker, }; -use sc_chain_spec::ChainType; +use sc_chain_spec::{ChainSpecExtension, ChainType}; use sc_service::Properties; use sc_telemetry::TelemetryEndpoints; use serde_json::json; @@ -46,6 +46,33 @@ const DEV_TREASURY: u128 = 50_000_000 * POLY; const INITIAL_BOND: u128 = 500 * POLY; +// 1 in 4 blocks (on average, not counting collisions) will be primary babe blocks. +const PRIMARY_PROBABILITY: (u64, u64) = (1, 4); +const BABE_GENESIS_EPOCH_CONFIG: sp_consensus_babe::BabeEpochConfiguration = + sp_consensus_babe::BabeEpochConfiguration { + c: PRIMARY_PROBABILITY, + allowed_slots: sp_consensus_babe::AllowedSlots::PrimaryAndSecondaryPlainSlots, + }; +const BABE_GENESIS: pallet_babe::GenesisConfig = pallet_babe::GenesisConfig { + authorities: vec![], + epoch_config: Some(BABE_GENESIS_EPOCH_CONFIG), +}; + +/// Node `ChainSpec` extensions. +/// +/// Additional parameters for some Substrate core modules, +/// customizable from the chain spec. +#[derive(Default, Clone, Serialize, Deserialize, ChainSpecExtension)] +#[serde(rename_all = "camelCase")] +pub struct Extensions { + /// The light sync state. + /// + /// This value will be set by the `sync-state rpc` implementation. + pub light_sync_state: sc_sync_state_rpc::LightSyncStateExtension, +} + +pub type GenericChainSpec = sc_service::GenericChainSpec; + /// Generate a crypto pair from seed. pub fn get_from_seed(seed: &str) -> ::Public { TPublic::Pair::from_string(&format!("//{}", seed), None) @@ -355,14 +382,14 @@ fn genesis_processed_data( complete_txs.push(BridgeTx { nonce: treasury_bridge_lock.nonce, - recipient: TREASURY_MODULE_ID.into_account(), + recipient: TREASURY_PALLET_ID.into_account(), amount: treasury_bridge_lock.amount, tx_hash: treasury_bridge_lock.tx_hash, }); complete_txs.push(BridgeTx { nonce: rewards_bridge_lock.nonce, - recipient: REWARDS_MODULE_ID.into_account(), + recipient: REWARDS_PALLET_ID.into_account(), amount: rewards_bridge_lock.amount, tx_hash: rewards_bridge_lock.tx_hash, }); @@ -443,14 +470,14 @@ fn dev_genesis_processed_data( complete_txs.push(BridgeTx { nonce: treasury_bridge_lock.nonce, - recipient: TREASURY_MODULE_ID.into_account(), + recipient: TREASURY_PALLET_ID.into_account(), amount: BOOTSTRAP_TREASURY, tx_hash: treasury_bridge_lock.tx_hash, }); complete_txs.push(BridgeTx { nonce: rewards_bridge_lock.nonce, - recipient: REWARDS_MODULE_ID.into_account(), + recipient: REWARDS_PALLET_ID.into_account(), amount: itn_rewards().into_iter().map(|(_, b)| b + (1 * POLY)).sum(), tx_hash: rewards_bridge_lock.tx_hash, }); @@ -596,7 +623,7 @@ pub mod general { use super::*; use polymesh_runtime_develop::{self as rt, constants::time}; - pub type ChainSpec = sc_service::GenericChainSpec; + pub type ChainSpec = GenericChainSpec; session_keys!(); @@ -618,15 +645,15 @@ pub mod general { ); rt::runtime::GenesisConfig { - frame_system: Some(frame(rt::WASM_BINARY)), - pallet_asset: Some(asset!()), - pallet_checkpoint: Some(checkpoint!()), - pallet_identity: Some(pallet_identity::GenesisConfig { + system: frame(rt::WASM_BINARY), + asset: asset!(), + checkpoint: checkpoint!(), + identity: pallet_identity::GenesisConfig { identities: vec![identity], ..Default::default() - }), - pallet_balances: Some(Default::default()), - pallet_bridge: Some(pallet_bridge::GenesisConfig { + }, + balances: Default::default(), + bridge: pallet_bridge::GenesisConfig { admin: initial_authorities[0].1.clone(), creator: initial_authorities[0].1.clone(), signatures_required: 1, @@ -634,20 +661,20 @@ pub mod general { timelock: 10, bridge_limit: (100_000_000 * POLY, 1000), complete_txs, - }), - pallet_indices: Some(pallet_indices::GenesisConfig { indices: vec![] }), - pallet_sudo: Some(pallet_sudo::GenesisConfig { key: root_key }), - pallet_session: Some(session!(initial_authorities, session_keys)), - pallet_staking: Some(staking!( + }, + indices: pallet_indices::GenesisConfig { indices: vec![] }, + sudo: pallet_sudo::GenesisConfig { key: root_key }, + session: session!(initial_authorities, session_keys), + staking: staking!( initial_authorities, stakers, - PerThing::from_rational_approximation(1u64, 4u64) - )), - pallet_pips: Some(pips!(time::MINUTES, MaybeBlock::None, 25)), - pallet_im_online: Some(Default::default()), - pallet_authority_discovery: Some(Default::default()), - pallet_babe: Some(Default::default()), - pallet_grandpa: Some(Default::default()), + PerThing::from_rational(1u64, 4u64) + ), + pips: pips!(time::MINUTES, MaybeBlock::None, 25), + im_online: Default::default(), + authority_discovery: Default::default(), + babe: BABE_GENESIS, + grandpa: Default::default(), /* pallet_contracts: Some(pallet_contracts::GenesisConfig { current_schedule: pallet_contracts::Schedule { @@ -657,23 +684,23 @@ pub mod general { }), */ // Governance Council: - pallet_group_Instance1: Some(group_membership!(1)), - pallet_committee_Instance1: Some(committee!(1)), + committee_membership: group_membership!(1), + polymesh_committee: committee!(1), // CDD providers - pallet_group_Instance2: Some(group_membership!(1)), + cdd_service_providers: group_membership!(1), // Technical Committee: - pallet_group_Instance3: Some(group_membership!(1)), - pallet_committee_Instance3: Some(committee!(1)), + technical_committee_membership: group_membership!(1), + technical_committee: committee!(1), // Upgrade Committee: - pallet_group_Instance4: Some(group_membership!(1)), - pallet_committee_Instance4: Some(committee!(1)), - pallet_protocol_fee: Some(protocol_fee!()), - pallet_settlement: Some(Default::default()), - pallet_multisig: Some(pallet_multisig::GenesisConfig { + upgrade_committee_membership: group_membership!(1), + upgrade_committee: committee!(1), + protocol_fee: protocol_fee!(), + settlement: Default::default(), + multi_sig: pallet_multisig::GenesisConfig { transaction_version: 1, - }), - pallet_corporate_actions: Some(corporate_actions!()), - pallet_rewards: Some(rewards!()), + }, + corporate_action: corporate_actions!(), + rewards: rewards!(), } } @@ -705,7 +732,17 @@ pub mod general { genesis: impl 'static + Sync + Send + Fn() -> rt::runtime::GenesisConfig, ) -> ChainSpec { let props = Some(polymath_props(42)); - ChainSpec::from_genesis(name, id, ctype, genesis, vec![], None, None, props, None) + ChainSpec::from_genesis( + name, + id, + ctype, + genesis, + vec![], + None, + None, + props, + <_>::default(), + ) } pub fn develop_config() -> ChainSpec { @@ -751,7 +788,7 @@ pub mod testnet { use super::*; use polymesh_runtime_testnet::{self as rt, constants::time}; - pub type ChainSpec = sc_service::GenericChainSpec; + pub type ChainSpec = GenericChainSpec; session_keys!(); @@ -772,15 +809,15 @@ pub mod testnet { ); rt::runtime::GenesisConfig { - frame_system: Some(frame(rt::WASM_BINARY)), - pallet_asset: Some(asset!()), - pallet_checkpoint: Some(checkpoint!()), - pallet_identity: Some(pallet_identity::GenesisConfig { + system: frame(rt::WASM_BINARY), + asset: asset!(), + checkpoint: checkpoint!(), + identity: pallet_identity::GenesisConfig { identities, ..Default::default() - }), - pallet_balances: Some(Default::default()), - pallet_bridge: Some(pallet_bridge::GenesisConfig { + }, + balances: Default::default(), + bridge: pallet_bridge::GenesisConfig { admin: root_key.clone(), creator: root_key.clone(), signatures_required: 3, @@ -788,20 +825,20 @@ pub mod testnet { timelock: time::MINUTES * 15, bridge_limit: (30_000 * POLY, 1 * time::DAYS), complete_txs, - }), - pallet_indices: Some(pallet_indices::GenesisConfig { indices: vec![] }), - pallet_sudo: Some(pallet_sudo::GenesisConfig { key: root_key }), - pallet_session: Some(session!(initial_authorities, session_keys)), - pallet_staking: Some(staking!( + }, + indices: pallet_indices::GenesisConfig { indices: vec![] }, + sudo: pallet_sudo::GenesisConfig { key: root_key }, + session: session!(initial_authorities, session_keys), + staking: staking!( initial_authorities, stakers, - PerThing::from_rational_approximation(1u64, 10u64) - )), - pallet_pips: Some(pips!(time::DAYS * 30, MaybeBlock::None, 1000)), - pallet_im_online: Some(Default::default()), - pallet_authority_discovery: Some(Default::default()), - pallet_babe: Some(Default::default()), - pallet_grandpa: Some(Default::default()), + PerThing::from_rational(1u64, 10u64) + ), + pips: pips!(time::DAYS * 30, MaybeBlock::None, 1000), + im_online: Default::default(), + authority_discovery: Default::default(), + babe: BABE_GENESIS, + grandpa: Default::default(), /* pallet_contracts: Some(pallet_contracts::GenesisConfig { current_schedule: pallet_contracts::Schedule { @@ -811,23 +848,23 @@ pub mod testnet { }), */ // Governing council - pallet_group_Instance1: Some(group_membership!(1, 2, 3)), // 3 GC members - pallet_committee_Instance1: Some(committee!(1, (2, 3))), // RC = 1, 2/3 votes required + committee_membership: group_membership!(1, 2, 3), // 3 GC members + polymesh_committee: committee!(1, (2, 3)), // RC = 1, 2/3 votes required // CDD providers - pallet_group_Instance2: Some(group_membership!(1)), + cdd_service_providers: group_membership!(1), // Technical Committee: - pallet_group_Instance3: Some(group_membership!(3, 4, 5)), // One GC member + genesis operator + Bridge Multisig - pallet_committee_Instance3: Some(committee!(3)), // RC = 3, 1/2 votes required + technical_committee_membership: group_membership!(3, 4, 5), // One GC member + genesis operator + Bridge Multisig + technical_committee: committee!(3), // RC = 3, 1/2 votes required // Upgrade Committee: - pallet_group_Instance4: Some(group_membership!(1)), // One GC member - pallet_committee_Instance4: Some(committee!(1)), // RC = 1, 1/2 votes required - pallet_protocol_fee: Some(protocol_fee!()), - pallet_settlement: Some(Default::default()), - pallet_multisig: Some(pallet_multisig::GenesisConfig { + upgrade_committee_membership: group_membership!(1), // One GC member + upgrade_committee: committee!(1), // RC = 1, 1/2 votes required + protocol_fee: protocol_fee!(), + settlement: Default::default(), + multi_sig: pallet_multisig::GenesisConfig { transaction_version: 1, - }), - pallet_corporate_actions: Some(corporate_actions!()), - pallet_rewards: Some(rewards!()), + }, + corporate_action: corporate_actions!(), + rewards: rewards!(), } } @@ -944,7 +981,7 @@ pub mod mainnet { use super::*; use polymesh_runtime_mainnet::{self as rt, constants::time}; - pub type ChainSpec = sc_service::GenericChainSpec; + pub type ChainSpec = GenericChainSpec; session_keys!(); @@ -965,15 +1002,15 @@ pub mod mainnet { ); rt::runtime::GenesisConfig { - frame_system: Some(frame(rt::WASM_BINARY)), - pallet_asset: Some(asset!()), - pallet_checkpoint: Some(checkpoint!()), - pallet_identity: Some(pallet_identity::GenesisConfig { + system: frame(rt::WASM_BINARY), + asset: asset!(), + checkpoint: checkpoint!(), + identity: pallet_identity::GenesisConfig { identities, ..Default::default() - }), - pallet_balances: Some(Default::default()), - pallet_bridge: Some(pallet_bridge::GenesisConfig { + }, + balances: Default::default(), + bridge: pallet_bridge::GenesisConfig { admin: root_key.clone(), creator: root_key.clone(), signatures_required: 4, @@ -981,24 +1018,20 @@ pub mod mainnet { timelock: time::HOURS * 24, bridge_limit: (1_000_000_000 * POLY, 365 * time::DAYS), complete_txs, - }), - pallet_indices: Some(pallet_indices::GenesisConfig { indices: vec![] }), - pallet_sudo: Some(pallet_sudo::GenesisConfig { key: root_key }), - pallet_session: Some(session!(initial_authorities, session_keys)), - pallet_staking: Some(staking!( + }, + indices: pallet_indices::GenesisConfig { indices: vec![] }, + sudo: pallet_sudo::GenesisConfig { key: root_key }, + session: session!(initial_authorities, session_keys), + staking: staking!( initial_authorities, stakers, - PerThing::from_rational_approximation(1u64, 10u64) - )), - pallet_pips: Some(pips!( - time::DAYS * 30, - MaybeBlock::Some(time::DAYS * 90), - 1000 - )), - pallet_im_online: Some(Default::default()), - pallet_authority_discovery: Some(Default::default()), - pallet_babe: Some(Default::default()), - pallet_grandpa: Some(Default::default()), + PerThing::from_rational(1u64, 10u64) + ), + pips: pips!(time::DAYS * 30, MaybeBlock::Some(time::DAYS * 90), 1000), + im_online: Default::default(), + authority_discovery: Default::default(), + babe: BABE_GENESIS, + grandpa: Default::default(), /* pallet_contracts: Some(pallet_contracts::GenesisConfig { current_schedule: pallet_contracts::Schedule { @@ -1008,23 +1041,23 @@ pub mod mainnet { }), */ // Governing council - pallet_group_Instance1: Some(group_membership!(1, 2, 3)), // 3 GC members - pallet_committee_Instance1: Some(committee!(1, (2, 3))), // RC = 1, 2/3 votes required + committee_membership: group_membership!(1, 2, 3), // 3 GC members + polymesh_committee: committee!(1, (2, 3)), // RC = 1, 2/3 votes required // CDD providers - pallet_group_Instance2: Some(group_membership!(1)), // GC_1 is also a CDD provider + cdd_service_providers: group_membership!(1), // GC_1 is also a CDD provider // Technical Committee: - pallet_group_Instance3: Some(group_membership!(1)), // One GC member - pallet_committee_Instance3: Some(committee!(1)), // 1/2 votes required + technical_committee_membership: group_membership!(1), // One GC member + technical_committee: committee!(1), // 1/2 votes required // Upgrade Committee: - pallet_group_Instance4: Some(group_membership!(1)), // One GC member - pallet_committee_Instance4: Some(committee!(1)), // 1/2 votes required - pallet_protocol_fee: Some(protocol_fee!()), - pallet_settlement: Some(Default::default()), - pallet_multisig: Some(pallet_multisig::GenesisConfig { + upgrade_committee_membership: group_membership!(1), // One GC member + upgrade_committee: committee!(1), // 1/2 votes required + protocol_fee: protocol_fee!(), + settlement: Default::default(), + multi_sig: pallet_multisig::GenesisConfig { transaction_version: 1, - }), - pallet_corporate_actions: Some(corporate_actions!()), - pallet_rewards: Some(rewards!()), + }, + corporate_action: corporate_actions!(), + rewards: rewards!(), } } @@ -1145,7 +1178,7 @@ pub mod ci { use super::*; use polymesh_runtime_ci::{self as rt, constants::time}; - pub type ChainSpec = sc_service::GenericChainSpec; + pub type ChainSpec = GenericChainSpec; session_keys!(); @@ -1166,15 +1199,15 @@ pub mod ci { ); rt::runtime::GenesisConfig { - frame_system: Some(frame(rt::WASM_BINARY)), - pallet_asset: Some(asset!()), - pallet_checkpoint: Some(checkpoint!()), - pallet_identity: Some(pallet_identity::GenesisConfig { + system: frame(rt::WASM_BINARY), + asset: asset!(), + checkpoint: checkpoint!(), + identity: pallet_identity::GenesisConfig { identities, ..Default::default() - }), - pallet_balances: Some(Default::default()), - pallet_bridge: Some(pallet_bridge::GenesisConfig { + }, + balances: Default::default(), + bridge: pallet_bridge::GenesisConfig { admin: seeded_acc_id("polymath_1"), creator: seeded_acc_id("polymath_1"), signatures_required: 3, @@ -1182,16 +1215,16 @@ pub mod ci { timelock: time::MINUTES * 15, bridge_limit: (30_000_000_000, time::DAYS), complete_txs, - }), - pallet_indices: Some(pallet_indices::GenesisConfig { indices: vec![] }), - pallet_sudo: Some(pallet_sudo::GenesisConfig { key: root_key }), - pallet_session: Some(session!(initial_authorities, session_keys)), - pallet_staking: Some(staking!(initial_authorities, stakers, PerThing::zero())), - pallet_pips: Some(pips!(time::DAYS * 7, MaybeBlock::None, 1000)), - pallet_im_online: Some(Default::default()), - pallet_authority_discovery: Some(Default::default()), - pallet_babe: Some(Default::default()), - pallet_grandpa: Some(Default::default()), + }, + indices: pallet_indices::GenesisConfig { indices: vec![] }, + sudo: pallet_sudo::GenesisConfig { key: root_key }, + session: session!(initial_authorities, session_keys), + staking: staking!(initial_authorities, stakers, PerThing::zero()), + pips: pips!(time::DAYS * 7, MaybeBlock::None, 1000), + im_online: Default::default(), + authority_discovery: Default::default(), + babe: BABE_GENESIS, + grandpa: Default::default(), /* pallet_contracts: Some(pallet_contracts::GenesisConfig { current_schedule: pallet_contracts::Schedule { @@ -1201,23 +1234,23 @@ pub mod ci { }), */ // Governing council - pallet_group_Instance1: Some(group_membership!(1, 2, 3, 5)), - pallet_committee_Instance1: Some(committee!(1, (2, 4))), + committee_membership: group_membership!(1, 2, 3, 5), + polymesh_committee: committee!(1, (2, 4)), // CDD providers - pallet_group_Instance2: Some(group_membership!(1, 2, 3, 5)), + cdd_service_providers: group_membership!(1, 2, 3, 5), // Technical Committee: - pallet_group_Instance3: Some(group_membership!(3, 5)), - pallet_committee_Instance3: Some(committee!(5)), + technical_committee_membership: group_membership!(3, 5), + technical_committee: committee!(5), // Upgrade Committee: - pallet_group_Instance4: Some(group_membership!(1, 5)), - pallet_committee_Instance4: Some(committee!(5)), - pallet_protocol_fee: Some(protocol_fee!()), - pallet_settlement: Some(Default::default()), - pallet_multisig: Some(pallet_multisig::GenesisConfig { + upgrade_committee_membership: group_membership!(1, 5), + upgrade_committee: committee!(5), + protocol_fee: protocol_fee!(), + settlement: Default::default(), + multi_sig: pallet_multisig::GenesisConfig { transaction_version: 1, - }), - pallet_corporate_actions: Some(corporate_actions!()), - pallet_rewards: Some(rewards!()), + }, + corporate_action: corporate_actions!(), + rewards: rewards!(), } } diff --git a/src/command.rs b/src/command.rs index c7effb3ea8..141be14c80 100644 --- a/src/command.rs +++ b/src/command.rs @@ -22,7 +22,7 @@ use crate::service::{ GeneralExecutor, IsNetwork, MainnetExecutor, Network, NewChainOps, TestnetExecutor, }; use sc_cli::{ChainSpec, Result, RuntimeVersion, SubstrateCli}; -use sc_service::{config::Role, Configuration, TaskManager}; +use sc_service::{Configuration, TaskManager}; use core::future::Future; use log::info; @@ -109,15 +109,11 @@ pub fn run() -> Result<()> { ); runner.run_node_until_exit(|config| async move { - match (network, &config.role) { - (Network::Testnet, Role::Light) => service::testnet_new_light(config), - (Network::Testnet, _) => service::testnet_new_full(config), - (Network::Other, Role::Light) => service::general_new_light(config), - (Network::Other, _) => service::general_new_full(config), - (Network::CI, Role::Light) => service::ci_new_light(config), - (Network::CI, _) => service::ci_new_full(config), - (Network::Mainnet, Role::Light) => service::mainnet_new_light(config), - (Network::Mainnet, _) => service::mainnet_new_full(config), + match network { + Network::Testnet => service::testnet_new_full(config), + Network::Other => service::general_new_full(config), + Network::CI => service::ci_new_full(config), + Network::Mainnet => service::mainnet_new_full(config), } .map_err(sc_cli::Error::Service) }) diff --git a/src/service.rs b/src/service.rs index 6887392bce..7775511aeb 100644 --- a/src/service.rs +++ b/src/service.rs @@ -19,20 +19,20 @@ use prometheus_endpoint::Registry; use sc_client_api::ExecutorProvider; pub use sc_client_api::{backend::Backend, RemoteBackend}; pub use sc_consensus::LongestChain; -use sc_executor::native_executor_instance; -pub use sc_executor::{NativeExecutionDispatch, NativeExecutor}; +use sc_consensus_slots::SlotProportion; +use sc_executor::NativeElseWasmExecutor; +pub use sc_executor::{NativeExecutionDispatch, RuntimeVersionOf}; use sc_network::{Event, NetworkService}; +use sc_service::TaskManager; pub use sc_service::{ - config::{DatabaseConfig, PrometheusConfig, Role}, + config::{PrometheusConfig, Role}, error::Error as ServiceError, ChainSpec, Configuration, Error, PruningMode, RuntimeGenesis, TFullBackend, TFullCallExecutor, - TFullClient, TLightBackend, TLightCallExecutor, TLightClient, TransactionPoolOptions, + TFullClient, TransactionPoolOptions, }; -use sc_service::{RpcHandlers, TaskManager}; -use sc_telemetry::TelemetryConnectionNotifier; +use sc_telemetry::{Telemetry, TelemetryWorker}; pub use sp_api::{ConstructRuntimeApi, Core as CoreApi, ProvideRuntimeApi, StateBackend}; pub use sp_consensus::SelectChain; -use sp_inherents::InherentDataProviders; pub use sp_runtime::traits::BlakeTwo256; use sp_runtime::traits::Block as BlockT; use std::sync::Arc; @@ -64,41 +64,41 @@ impl IsNetwork for dyn ChainSpec { } } -// Our native executor instance. -native_executor_instance!( - pub TestnetExecutor, - polymesh_runtime_testnet::api::dispatch, - polymesh_runtime_testnet::native_version, - (frame_benchmarking::benchmarking::HostFunctions, native_rng::HostFunctions) -); +macro_rules! native_executor_instance { + ($exec:ident, $module:ident, $ehf:ty) => { + pub struct $exec; + impl NativeExecutionDispatch for $exec { + type ExtendHostFunctions = $ehf; -// Our native executor instance. -native_executor_instance!( - pub GeneralExecutor, - polymesh_runtime_develop::api::dispatch, - polymesh_runtime_develop::native_version, - (frame_benchmarking::benchmarking::HostFunctions, native_rng::HostFunctions, native_schnorrkel::HostFunctions) -); + fn dispatch(method: &str, data: &[u8]) -> Option> { + $module::api::dispatch(method, data) + } -native_executor_instance!( - pub CIExecutor, - polymesh_runtime_ci::api::dispatch, - polymesh_runtime_ci::native_version, - (frame_benchmarking::benchmarking::HostFunctions, native_rng::HostFunctions) + fn native_version() -> sc_executor::NativeVersion { + $module::native_version() + } + } + }; +} + +type EHF = ( + frame_benchmarking::benchmarking::HostFunctions, + native_rng::HostFunctions, ); native_executor_instance!( - pub MainnetExecutor, - polymesh_runtime_mainnet::api::dispatch, - polymesh_runtime_mainnet::native_version, - (frame_benchmarking::benchmarking::HostFunctions, native_rng::HostFunctions) + GeneralExecutor, + polymesh_runtime_develop, + (EHF, native_schnorrkel::HostFunctions) ); +native_executor_instance!(TestnetExecutor, polymesh_runtime_testnet, EHF); +native_executor_instance!(CIExecutor, polymesh_runtime_ci, EHF); +native_executor_instance!(MainnetExecutor, polymesh_runtime_mainnet, EHF); /// A set of APIs that polkadot-like runtimes must implement. pub trait RuntimeApiCollection: sp_transaction_pool::runtime_api::TaggedTransactionQueue + sp_api::ApiExt - + sp_api::ApiErrorExt + sp_consensus_babe::BabeApi + grandpa::GrandpaApi + sp_block_builder::BlockBuilder @@ -132,7 +132,6 @@ impl RuntimeApiCollection for Api where Api: sp_transaction_pool::runtime_api::TaggedTransactionQueue + sp_api::ApiExt - + sp_api::ApiErrorExt + sp_consensus_babe::BabeApi + grandpa::GrandpaApi + sp_block_builder::BlockBuilder @@ -178,12 +177,12 @@ type BabeLink = sc_consensus_babe::BabeLink; type IoHandler = jsonrpc_core::IoHandler; type FullLinkHalf = grandpa::LinkHalf, FullSelectChain>; -type FullClient = sc_service::TFullClient; +type FullClient = sc_service::TFullClient>; type FullBackend = sc_service::TFullBackend; type FullSelectChain = sc_consensus::LongestChain; type FullGrandpaBlockImport = grandpa::GrandpaBlockImport, FullSelectChain>; -type FullBabeImportQueue = sp_consensus::DefaultImportQueue>; +type FullBabeImportQueue = sc_consensus::DefaultImportQueue>; type FullStateBackend = sc_client_api::StateBackendFor; type FullPool = sc_transaction_pool::FullPool>; type FullServiceComponents = sc_service::PartialComponents< @@ -196,6 +195,7 @@ type FullServiceComponents = sc_service::PartialComponents< F, (FullBabeBlockImport, FullLinkHalf, BabeLink), grandpa::SharedVoterState, + Option, ), >; type FullBabeBlockImport = @@ -207,7 +207,7 @@ pub fn new_partial( FullServiceComponents< R, D, - impl Fn(sc_rpc::DenyUnsafe, sc_rpc::SubscriptionTaskExecutor) -> IoHandler, + impl Fn(sc_rpc::DenyUnsafe, sc_rpc::SubscriptionTaskExecutor) -> Result, >, Error, > @@ -219,17 +219,43 @@ where { set_prometheus_registry(config)?; + let telemetry = config + .telemetry_endpoints + .clone() + .filter(|x| !x.is_empty()) + .map(|endpoints| -> Result<_, sc_telemetry::Error> { + let worker = TelemetryWorker::new(16)?; + let telemetry = worker.handle().new_telemetry(endpoints); + Ok((worker, telemetry)) + }) + .transpose()?; + + let executor = NativeElseWasmExecutor::::new( + config.wasm_method, + config.default_heap_pages, + config.max_runtime_instances, + ); + let (client, backend, keystore_container, task_manager) = - sc_service::new_full_parts::(&config)?; + sc_service::new_full_parts::>( + config, + telemetry.as_ref().map(|(_, telemetry)| telemetry.handle()), + executor, + )?; let client = Arc::new(client); + let telemetry = telemetry.map(|(worker, telemetry)| { + task_manager.spawn_handle().spawn("telemetry", worker.run()); + telemetry + }); + let select_chain = sc_consensus::LongestChain::new(backend.clone()); let transaction_pool = sc_transaction_pool::BasicPool::new_full( config.transaction_pool.clone(), config.role.is_authority().into(), config.prometheus_registry(), - task_manager.spawn_handle(), + task_manager.spawn_essential_handle(), client.clone(), ); @@ -237,6 +263,7 @@ where client.clone(), &(client.clone() as Arc<_>), select_chain.clone(), + telemetry.as_ref().map(|x| x.handle()), )?; let justification_import = grandpa_block_import.clone(); @@ -246,18 +273,31 @@ where client.clone(), )?; - let inherent_data_providers = sp_inherents::InherentDataProviders::new(); - + let slot_duration = babe_link.config().slot_duration(); let import_queue = sc_consensus_babe::import_queue( babe_link.clone(), block_import.clone(), Some(Box::new(justification_import)), client.clone(), select_chain.clone(), - inherent_data_providers.clone(), - &task_manager.spawn_handle(), + move |_, ()| async move { + let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); + + let slot = + sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_duration( + *timestamp, + slot_duration, + ); + + let uncles = + sp_authorship::InherentDataProvider::<::Header>::check_inherents(); + + Ok((timestamp, slot, uncles)) + }, + &task_manager.spawn_essential_handle(), config.prometheus_registry(), sp_consensus::CanAuthorWithNativeVersion::new(client.executor().clone()), + telemetry.as_ref().map(|x| x.handle()), )?; let import_setup = (block_import, grandpa_link, babe_link); @@ -308,7 +348,7 @@ where }, }; - node_rpc::create_full(deps) + node_rpc::create_full(deps).map_err(Into::into) }; (rpc_extensions_builder, rpc_setup) @@ -322,8 +362,7 @@ where select_chain, import_queue, transaction_pool, - inherent_data_providers, - other: (rpc_extensions_builder, import_setup, rpc_setup), + other: (rpc_extensions_builder, import_setup, rpc_setup, telemetry), }) } @@ -335,10 +374,8 @@ where E: RuntimeExtrinsic, { pub task_manager: TaskManager, - pub inherent_data_providers: InherentDataProviders, pub client: Arc>, pub network: Arc::Hash>>, - pub network_status_sinks: sc_service::NetworkStatusSinks, pub transaction_pool: Arc>, marker: PhantomData, } @@ -363,16 +400,21 @@ where keystore_container, select_chain, transaction_pool, - inherent_data_providers, - other: (rpc_extensions_builder, import_setup, rpc_setup), + other: (rpc_extensions_builder, import_setup, rpc_setup, mut telemetry), } = new_partial(&mut config)?; let shared_voter_state = rpc_setup; + let auth_disc_publish_non_global_ips = config.network.allow_non_globals_in_dht; config .network .extra_sets .push(grandpa::grandpa_peers_set_config()); + let warp_sync = Arc::new(grandpa::warp_proof::NetworkProvider::new( + backend.clone(), + import_setup.1.shared_authority_set().clone(), + Vec::default(), + )); #[cfg(feature = "cli")] config.network.request_response_protocols.push( @@ -383,7 +425,7 @@ where ), ); - let (network, network_status_sinks, system_rpc_tx, network_starter) = + let (network, system_rpc_tx, network_starter) = sc_service::build_network(sc_service::BuildNetworkParams { config: &config, client: client.clone(), @@ -392,12 +434,12 @@ where import_queue, on_demand: None, block_announce_validator_builder: None, + warp_sync: Some(warp_sync), })?; if config.offchain_worker.enabled { sc_service::build_offchain_workers( &config, - backend.clone(), task_manager.spawn_handle(), client.clone(), network.clone(), @@ -412,21 +454,20 @@ where let enable_grandpa = !config.disable_grandpa; let prometheus_registry = config.prometheus_registry().cloned(); - let (_rpc_handlers, telemetry_connection_notifier) = - sc_service::spawn_tasks(sc_service::SpawnTasksParams { - config, - backend: backend.clone(), - client: client.clone(), - keystore: keystore_container.sync_keystore(), - network: network.clone(), - rpc_extensions_builder: Box::new(rpc_extensions_builder), - transaction_pool: transaction_pool.clone(), - task_manager: &mut task_manager, - on_demand: None, - remote_blockchain: None, - network_status_sinks: network_status_sinks.clone(), - system_rpc_tx, - })?; + let _rpc_handlers = sc_service::spawn_tasks(sc_service::SpawnTasksParams { + config, + backend: backend.clone(), + client: client.clone(), + keystore: keystore_container.sync_keystore(), + network: network.clone(), + rpc_extensions_builder: Box::new(rpc_extensions_builder), + transaction_pool: transaction_pool.clone(), + task_manager: &mut task_manager, + on_demand: None, + remote_blockchain: None, + system_rpc_tx, + telemetry: telemetry.as_mut(), + })?; let (block_import, grandpa_link, babe_link) = import_setup; @@ -438,11 +479,14 @@ where client.clone(), transaction_pool.clone(), prometheus_registry.as_ref(), + telemetry.as_ref().map(|x| x.handle()), ); let can_author_with = sp_consensus::CanAuthorWithNativeVersion::new(client.executor().clone()); + let client_clone = client.clone(); + let slot_duration = babe_link.config().slot_duration(); let babe_config = sc_consensus_babe::BabeParams { keystore: keystore_container.sync_keystore(), client: client.clone(), @@ -450,11 +494,39 @@ where env: proposer, block_import, sync_oracle: network.clone(), - inherent_data_providers: inherent_data_providers.clone(), + justification_sync_link: network.clone(), + create_inherent_data_providers: move |parent, ()| { + let client_clone = client_clone.clone(); + async move { + let uncles = sc_consensus_uncles::create_uncles_inherent_data_provider( + &*client_clone, + parent, + )?; + + let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); + + let slot = + sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_duration( + *timestamp, + slot_duration, + ); + + let storage_proof = + sp_transaction_storage_proof::registration::new_data_provider( + &*client_clone, + &parent, + )?; + + Ok((timestamp, slot, uncles, storage_proof)) + } + }, force_authoring, backoff_authoring_blocks, babe_link, can_author_with, + block_proposal_slot_portion: SlotProportion::new(0.5), + max_block_proposal_slot_portion: None, + telemetry: telemetry.as_ref().map(|x| x.handle()), }; let babe = sc_consensus_babe::start_babe(babe_config)?; @@ -476,13 +548,18 @@ where _ => None, } }); - let (authority_discovery_worker, _service) = sc_authority_discovery::new_worker_and_service( - client.clone(), - network.clone(), - Box::pin(dht_event_stream), - authority_discovery_role, - prometheus_registry.clone(), - ); + let (authority_discovery_worker, _service) = + sc_authority_discovery::new_worker_and_service_with_config( + sc_authority_discovery::WorkerConfig { + publish_non_global_ips: auth_disc_publish_non_global_ips, + ..Default::default() + }, + client.clone(), + network.clone(), + Box::pin(dht_event_stream), + authority_discovery_role, + prometheus_registry.clone(), + ); task_manager.spawn_handle().spawn( "authority-discovery-worker", @@ -505,7 +582,8 @@ where name: Some(name), observer_enabled: false, keystore, - is_authority: role.is_authority(), + local_role: role, + telemetry: telemetry.as_ref().map(|x| x.handle()), }; if enable_grandpa { @@ -519,7 +597,7 @@ where config, link: grandpa_link, network: network.clone(), - telemetry_on_connect: telemetry_connection_notifier.map(|x| x.on_connect_stream()), + telemetry: telemetry.as_ref().map(|x| x.handle()), voting_rule: grandpa::VotingRulesBuilder::default().build(), prometheus_registry, shared_voter_state, @@ -535,10 +613,8 @@ where network_starter.start_network(); Ok(NewFullBase { task_manager, - inherent_data_providers, client, network, - network_status_sinks, transaction_pool, marker: PhantomData, }) @@ -619,158 +695,3 @@ pub fn mainnet_chain_ops( ) -> Result, ServiceError> { chain_ops::<_, _, polymesh_runtime_mainnet::UncheckedExtrinsic>(config) } - -type LightStorage = sc_client_db::light::LightStorage; -type LightBackend = sc_light::backend::Backend; -type LightClient = sc_service::TLightClient; -type LightStateBackend = sc_client_api::StateBackendFor; -type LightPool = - sc_transaction_pool::LightPool, sc_network::config::OnDemand>; - -pub fn new_light_base( - mut config: Configuration, -) -> Result< - ( - TaskManager, - RpcHandlers, - Option, - Arc>, - Arc::Hash>>, - Arc>, - ), - ServiceError, -> -where - R::RuntimeApi: RuntimeApiCollection, - D: NativeExecutionDispatch + 'static, - E: RuntimeExtrinsic, - R: Send - + Sync - + 'static - + sp_api::ConstructRuntimeApi< - Block, - sc_service::TLightClientWithBackend, - >, -{ - let (client, backend, keystore_container, mut task_manager, on_demand) = - sc_service::new_light_parts::(&config)?; - - config - .network - .extra_sets - .push(grandpa::grandpa_peers_set_config()); - - let select_chain = sc_consensus::LongestChain::new(backend.clone()); - - let transaction_pool = Arc::new(sc_transaction_pool::BasicPool::new_light( - config.transaction_pool.clone(), - config.prometheus_registry(), - task_manager.spawn_handle(), - client.clone(), - on_demand.clone(), - )); - - let (grandpa_block_import, _) = grandpa::block_import( - client.clone(), - &(client.clone() as Arc<_>), - select_chain.clone(), - )?; - let justification_import = grandpa_block_import.clone(); - - let (babe_block_import, babe_link) = sc_consensus_babe::block_import( - sc_consensus_babe::Config::get_or_compute(&*client)?, - grandpa_block_import, - client.clone(), - )?; - - let inherent_data_providers = sp_inherents::InherentDataProviders::new(); - - let import_queue = sc_consensus_babe::import_queue( - babe_link, - babe_block_import, - Some(Box::new(justification_import)), - client.clone(), - select_chain.clone(), - inherent_data_providers.clone(), - &task_manager.spawn_handle(), - config.prometheus_registry(), - sp_consensus::NeverCanAuthor, - )?; - - let (network, network_status_sinks, system_rpc_tx, network_starter) = - sc_service::build_network(sc_service::BuildNetworkParams { - config: &config, - client: client.clone(), - transaction_pool: transaction_pool.clone(), - spawn_handle: task_manager.spawn_handle(), - import_queue, - on_demand: Some(on_demand.clone()), - block_announce_validator_builder: None, - })?; - network_starter.start_network(); - - if config.offchain_worker.enabled { - sc_service::build_offchain_workers( - &config, - backend.clone(), - task_manager.spawn_handle(), - client.clone(), - network.clone(), - ); - } - - let light_deps = node_rpc::LightDeps { - remote_blockchain: backend.remote_blockchain(), - fetcher: on_demand.clone(), - client: client.clone(), - pool: transaction_pool.clone(), - }; - - let rpc_extensions = node_rpc::create_light(light_deps); - - let (rpc_handlers, telemetry_connection_notifier) = - sc_service::spawn_tasks(sc_service::SpawnTasksParams { - on_demand: Some(on_demand), - remote_blockchain: Some(backend.remote_blockchain()), - rpc_extensions_builder: Box::new(sc_service::NoopRpcExtensionBuilder(rpc_extensions)), - client: client.clone(), - transaction_pool: transaction_pool.clone(), - keystore: keystore_container.sync_keystore(), - config, - backend, - network_status_sinks, - system_rpc_tx, - network: network.clone(), - task_manager: &mut task_manager, - })?; - - Ok(( - task_manager, - rpc_handlers, - telemetry_connection_notifier, - client, - network, - transaction_pool, - )) -} - -/// Create a new Polymesh services for light clients. -pub fn testnet_new_light(config: Configuration) -> TaskResult { - new_light_base::(config) - .map(|(task_manager, _, _, _, _, _)| task_manager) -} - -pub fn ci_new_light(config: Configuration) -> TaskResult { - new_light_base::(config) - .map(|(task_manager, _, _, _, _, _)| task_manager) -} - -pub fn general_new_light(config: Configuration) -> TaskResult { - new_light_base::(config) - .map(|(task_manager, ..)| task_manager) -} - -pub fn mainnet_new_light(config: Configuration) -> TaskResult { - new_light_base::(config) - .map(|(task_manager, ..)| task_manager) -} From 95541b2732d730326f3cdbbd3c7d88474db23da3 Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Mon, 14 Feb 2022 20:14:39 +0800 Subject: [PATCH 20/53] MESH-1787 relayer fixes (#1209) * Ensure `accept_paying_key` is called by `user_key` Improve description of errors. * Add missing weight. * Bump versions. --- Cargo.lock | 2 +- Cargo.toml | 2 +- pallets/bridge/src/lib.rs | 6 +++++- pallets/relayer/src/lib.rs | 11 +++++++---- pallets/runtime/ci/src/runtime.rs | 2 +- pallets/runtime/develop/src/runtime.rs | 2 +- pallets/runtime/mainnet/src/runtime.rs | 2 +- pallets/runtime/testnet/src/runtime.rs | 2 +- 8 files changed, 18 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 75c21233d8..c066217d55 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5686,7 +5686,7 @@ dependencies = [ [[package]] name = "polymesh" -version = "4.1.0" +version = "4.1.1" dependencies = [ "chrono", "ed25519-dalek", diff --git a/Cargo.toml b/Cargo.toml index 211c30c14c..e853e79bb3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polymesh" -version = "4.1.0" +version = "4.1.1" authors = ["Polymath"] build = "build.rs" edition = "2018" diff --git a/pallets/bridge/src/lib.rs b/pallets/bridge/src/lib.rs index 4b11ce35ed..9a70235559 100644 --- a/pallets/bridge/src/lib.rs +++ b/pallets/bridge/src/lib.rs @@ -415,7 +415,11 @@ decl_module! { /// /// ## Errors /// - `BadAdmin` if `origin` is not `Self::admin()` account. - #[weight = (500_000_000, DispatchClass::Operational, Pays::Yes)] + #[weight =( + 500_000_000 + 7_000_000 * u64::try_from(exempted.len()).unwrap_or_default(), + DispatchClass::Operational, + Pays::Yes + )] pub fn change_bridge_exempted(origin, exempted: Vec<(IdentityId, bool)>) -> DispatchResult { Self::base_change_bridge_exempted(origin, exempted) } diff --git a/pallets/relayer/src/lib.rs b/pallets/relayer/src/lib.rs index 49dd248bf5..4361877740 100644 --- a/pallets/relayer/src/lib.rs +++ b/pallets/relayer/src/lib.rs @@ -127,7 +127,7 @@ decl_module! { /// - `AuthorizationError::Expired` if `auth_id` the authorization has expired. /// - `AuthorizationError::BadType` if `auth_id` was not a `AddRelayerPayingKey` authorization. /// - `NotAuthorizedForUserKey` if `origin` is not authorized to accept the authorization for the `user_key`. - /// - `NotAuthorizedForPayingKey` if the authorization was created by a signer that isn't authorized by the `paying_key`. + /// - `NotAuthorizedForPayingKey` if the authorization was created an identity different from the `paying_key`'s identity. /// - `UserKeyCddMissing` if the `user_key` is not attached to a CDD'd identity. /// - `PayingKeyCddMissing` if the `paying_key` is not attached to a CDD'd identity. /// - `UnauthorizedCaller` if `origin` is not authorized to call this extrinsic. @@ -238,15 +238,18 @@ impl Module { } fn base_accept_paying_key(origin: T::Origin, auth_id: u64) -> DispatchResult { - let user_key = ensure_signed(origin)?; + let caller_key = ensure_signed(origin)?; let user_did = - >::get_identity(&user_key).ok_or(Error::::UserKeyCddMissing)?; - let signer = Signatory::Account(user_key); + >::get_identity(&caller_key).ok_or(Error::::UserKeyCddMissing)?; + let signer = Signatory::Account(caller_key.clone()); >::accept_auth_with(&signer, auth_id, |data, auth_by| -> DispatchResult { let (user_key, paying_key, polyx_limit) = extract_auth!(data, AddRelayerPayingKey(user_key, paying_key, polyx_limit)); + // Allow: `origin == user_key`. + ensure!(user_key == caller_key, Error::::NotAuthorizedForUserKey); + Self::auth_accept_paying_key( user_did, auth_by, diff --git a/pallets/runtime/ci/src/runtime.rs b/pallets/runtime/ci/src/runtime.rs index 0d6e6f74e7..b7d7dd43ed 100644 --- a/pallets/runtime/ci/src/runtime.rs +++ b/pallets/runtime/ci/src/runtime.rs @@ -61,7 +61,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to 0. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 3002, + spec_version: 3010, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 2, diff --git a/pallets/runtime/develop/src/runtime.rs b/pallets/runtime/develop/src/runtime.rs index de3afb2084..04d4b45ef0 100644 --- a/pallets/runtime/develop/src/runtime.rs +++ b/pallets/runtime/develop/src/runtime.rs @@ -59,7 +59,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to 0. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 3002, + spec_version: 3010, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 2, diff --git a/pallets/runtime/mainnet/src/runtime.rs b/pallets/runtime/mainnet/src/runtime.rs index 355f3c0774..c3c8de80bf 100644 --- a/pallets/runtime/mainnet/src/runtime.rs +++ b/pallets/runtime/mainnet/src/runtime.rs @@ -57,7 +57,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to 0. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 3002, + spec_version: 3010, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 2, diff --git a/pallets/runtime/testnet/src/runtime.rs b/pallets/runtime/testnet/src/runtime.rs index 5724ec19ed..76fbc6e9f0 100644 --- a/pallets/runtime/testnet/src/runtime.rs +++ b/pallets/runtime/testnet/src/runtime.rs @@ -61,7 +61,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to 0. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 3002, + spec_version: 3010, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 2, From f7a07814e678a856902275252be325acb72d8811 Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Mon, 21 Feb 2022 15:18:53 +0100 Subject: [PATCH 21/53] Refactor fee_details duplication (#1213) * refactor fee_details * fix imports --- Cargo.lock | 3 + pallets/runtime/ci/src/fee_details.rs | 178 ---------------- pallets/runtime/ci/src/lib.rs | 4 +- pallets/runtime/ci/src/runtime.rs | 15 +- pallets/runtime/common/Cargo.toml | 3 + pallets/runtime/common/src/fee_details.rs | 223 ++++++++++++++++++++- pallets/runtime/common/src/runtime.rs | 16 ++ pallets/runtime/develop/src/fee_details.rs | 178 ---------------- pallets/runtime/develop/src/lib.rs | 4 +- pallets/runtime/develop/src/runtime.rs | 15 +- pallets/runtime/mainnet/src/fee_details.rs | 173 ---------------- pallets/runtime/mainnet/src/lib.rs | 4 +- pallets/runtime/mainnet/src/runtime.rs | 7 +- pallets/runtime/testnet/src/fee_details.rs | 178 ---------------- pallets/runtime/testnet/src/lib.rs | 4 +- pallets/runtime/testnet/src/runtime.rs | 15 +- pallets/runtime/tests/src/fee_details.rs | 2 +- pallets/runtime/tests/src/identity_test.rs | 2 +- pallets/runtime/tests/src/relayer_test.rs | 2 +- 19 files changed, 294 insertions(+), 732 deletions(-) delete mode 100644 pallets/runtime/ci/src/fee_details.rs delete mode 100644 pallets/runtime/develop/src/fee_details.rs delete mode 100644 pallets/runtime/mainnet/src/fee_details.rs delete mode 100644 pallets/runtime/testnet/src/fee_details.rs diff --git a/Cargo.lock b/Cargo.lock index c066217d55..a6bf8539ef 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5989,12 +5989,15 @@ dependencies = [ "pallet-asset", "pallet-authorship", "pallet-balances 0.1.0", + "pallet-bridge", "pallet-committee", "pallet-compliance-manager", "pallet-group-rpc-runtime-api", "pallet-identity", "pallet-multisig", "pallet-portfolio", + "pallet-relayer", + "pallet-test-utils", "pallet-timestamp", "parity-scale-codec 2.3.1", "polymesh-common-utilities", diff --git a/pallets/runtime/ci/src/fee_details.rs b/pallets/runtime/ci/src/fee_details.rs deleted file mode 100644 index 9deaccf8ab..0000000000 --- a/pallets/runtime/ci/src/fee_details.rs +++ /dev/null @@ -1,178 +0,0 @@ -// This file is part of the Polymesh distribution (https://github.com/PolymathNetwork/Polymesh). -// Copyright (c) 2020 Polymath - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, version 3. - -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -use crate::{runtime, Runtime}; -use codec::{Decode, Encode}; -use frame_support::{StorageDoubleMap, StorageMap}; -use polymesh_common_utilities::{traits::transaction_payment::CddAndFeeDetails, Context}; -use polymesh_primitives::{AccountId, AuthorizationData, Hash, IdentityId, Signatory}; -use polymesh_runtime_common::fee_details::{ - CallType, ValidPayerResult, CDD_REQUIRED, INVALID_AUTH, MISSING_ID, -}; -use sp_core::crypto::UncheckedFrom; - -type Identity = pallet_identity::Module; -type Bridge = pallet_bridge::Module; -type Call = runtime::Call; - -#[derive(Default, Encode, Decode, Clone, Eq, PartialEq)] -pub struct CddHandler; - -impl CddAndFeeDetails for CddHandler -where - AccountId: UncheckedFrom + AsRef<[u8]>, -{ - /// Check if there's an eligible payer with valid CDD. - /// Return the payer if found or else an error. - /// Can also return Ok(none) to represent the case where - /// CDD is valid but no payer should pay fee for this tx - /// This also sets the identity in the context to the identity that was checked for CDD - /// However, this does not set the payer context since that is meant to remain constant - /// throughout the transaction. This function can also be used to simply check CDD and update identity context. - fn get_valid_payer(call: &Call, caller: &AccountId) -> ValidPayerResult { - let handle_multisig = |multisig, caller: &AccountId| { - let sig = Signatory::Account(caller.clone()); - if >::contains_key(multisig, sig) { - check_cdd(&>::get( - multisig, - )) - } else { - MISSING_ID - } - }; - - // The CDD check and fee payer varies depending on the transaction. - // This match covers all possible scenarios. - match call { - // Register did call. - // all did registration should go through CDD - Call::TestUtils(pallet_test_utils::Call::register_did { .. }) => { - Ok(Some(caller.clone())) - } - // Call made by a new Account key to accept invitation to become a secondary key - // of an existing multisig that has a valid CDD. The auth should be valid. - Call::MultiSig(pallet_multisig::Call::accept_multisig_signer_as_key { auth_id }) => { - is_auth_valid(caller, auth_id, CallType::AcceptMultiSigSigner) - } - // Call made by a new Account key to accept invitation to become a secondary key - // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::join_identity_as_key { auth_id, .. }) => { - is_auth_valid(caller, auth_id, CallType::AcceptIdentitySecondary) - } - // Call made by a new Account key to accept invitation to become the primary key - // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::accept_primary_key { - rotation_auth_id, .. - }) => is_auth_valid(caller, rotation_auth_id, CallType::AcceptIdentityPrimary), - // Call made by a new Account key to accept invitation to become the primary key - // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::rotate_primary_key_to_secondary { - auth_id, - .. - }) => is_auth_valid(caller, auth_id, CallType::RotatePrimaryToSecondary), - // Call made by a new Account key to remove invitation for certain authorizations - // in an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::remove_authorization { - auth_id, - _auth_issuer_pays: true, - .. - }) => is_auth_valid(caller, auth_id, CallType::RemoveAuthorization), - // Call made by a user key to accept subsidy from a paying key. The auth should be valid. - Call::Relayer(pallet_relayer::Call::accept_paying_key { auth_id }) => { - is_auth_valid(caller, auth_id, CallType::AcceptRelayerPayingKey) - } - // Call made by an Account key to propose, reject or approve a multisig transaction. - // The multisig must have valid CDD and the caller must be a signer of the multisig. - Call::MultiSig( - pallet_multisig::Call::create_or_approve_proposal_as_key { multisig, .. } - | pallet_multisig::Call::create_proposal_as_key { multisig, .. } - | pallet_multisig::Call::approve_as_key { multisig, .. } - | pallet_multisig::Call::reject_as_key { multisig, .. }, - ) => handle_multisig(multisig, caller), - // Call made by an Account key to propose or approve a multisig transaction via the bridge helper - // The multisig must have valid CDD and the caller must be a signer of the multisig. - Call::Bridge( - pallet_bridge::Call::propose_bridge_tx { .. } - | pallet_bridge::Call::batch_propose_bridge_tx { .. }, - ) => handle_multisig(&Bridge::controller_key(), caller), - // All other calls. - // - // The external account must directly be linked to an identity with valid CDD. - _ => match Identity::get_identity(caller) { - Some(did) if Identity::has_valid_cdd(did) => { - Context::set_current_identity::(Some(did)); - Ok(Some(caller.clone())) - } - Some(_) => CDD_REQUIRED, - // Return if there's no DID. - None => MISSING_ID, - }, - } - } - - /// Clears context. Should be called in post_dispatch - fn clear_context() { - Context::set_current_identity::(None); - Context::set_current_payer::(None); - } - - /// Sets payer in context. Should be called by the signed extension that first charges fee. - fn set_payer_context(payer: Option) { - Context::set_current_payer::(payer); - } - - /// Fetches fee payer for further payments (forwarded calls) - fn get_payer_from_context() -> Option { - Context::current_payer::() - } - - fn set_current_identity(did: &IdentityId) { - Context::set_current_identity::(Some(*did)); - } -} - -/// Returns signatory to charge fee if auth is valid. -fn is_auth_valid(acc: &AccountId, auth_id: &u64, call_type: CallType) -> ValidPayerResult { - // Fetch the auth if it exists and has not expired. - match Identity::get_non_expired_auth(&Signatory::Account(acc.clone()), auth_id) - .map(|auth| (auth.authorized_by, (auth.authorization_data, call_type))) - { - // Different auths have different authorization data requirements. - // Hence we match call type to ensure proper authorization data is present. - // We only need to check that there's a payer with a valid CDD. - // Business logic for authorisations can be checked post-Signed Extension. - Some(( - by, - (AuthorizationData::AddMultiSigSigner(_), CallType::AcceptMultiSigSigner) - | (AuthorizationData::JoinIdentity(_), CallType::AcceptIdentitySecondary) - | (AuthorizationData::RotatePrimaryKey, CallType::AcceptIdentityPrimary) - | (AuthorizationData::RotatePrimaryKeyToSecondary(_), CallType::RotatePrimaryToSecondary) - | (AuthorizationData::AddRelayerPayingKey(..), CallType::AcceptRelayerPayingKey) - | (_, CallType::RemoveAuthorization), - )) => check_cdd(&by), - // None of the above apply, so error. - _ => INVALID_AUTH, - } -} - -/// Returns signatory to charge fee if cdd is valid. -fn check_cdd(did: &IdentityId) -> ValidPayerResult { - if Identity::has_valid_cdd(*did) { - Context::set_current_identity::(Some(*did)); - Ok(Some(Identity::did_records(&did).primary_key)) - } else { - CDD_REQUIRED - } -} diff --git a/pallets/runtime/ci/src/lib.rs b/pallets/runtime/ci/src/lib.rs index 6bd4b72330..f069b153b4 100644 --- a/pallets/runtime/ci/src/lib.rs +++ b/pallets/runtime/ci/src/lib.rs @@ -2,10 +2,8 @@ // `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. #![recursion_limit = "256"] -pub mod fee_details; -pub mod runtime; -pub use fee_details::CddHandler; pub mod constants; +pub mod runtime; #[cfg(feature = "std")] pub use pallet_staking::StakerStatus; diff --git a/pallets/runtime/ci/src/runtime.rs b/pallets/runtime/ci/src/runtime.rs index b7d7dd43ed..63cc60b5b5 100644 --- a/pallets/runtime/ci/src/runtime.rs +++ b/pallets/runtime/ci/src/runtime.rs @@ -1,11 +1,12 @@ #![allow(clippy::not_unsafe_ptr_arg_deref)] -use crate::{constants::time::*, fee_details::CddHandler}; +use crate::constants::time::*; use codec::Encode; #[cfg(feature = "migration-dry-run")] use frame_support::traits::OnRuntimeUpgrade; +use core::convert::TryFrom; use frame_support::{ construct_runtime, parameter_types, traits::{tokens::imbalance::SplitTwoWays, KeyOwnerProofSystem}, @@ -196,6 +197,18 @@ parameter_types! { polymesh_runtime_common::misc_pallet_impls!(); +type CddHandler = polymesh_runtime_common::fee_details::DevCddHandler; + +impl<'a> TryFrom<&'a Call> for &'a pallet_test_utils::Call { + type Error = (); + fn try_from(call: &'a Call) -> Result<&'a pallet_test_utils::Call, ()> { + match call { + Call::TestUtils(x) => Ok(x), + _ => Err(()), + } + } +} + impl polymesh_common_utilities::traits::identity::Config for Runtime { type Event = Event; type Proposal = Call; diff --git a/pallets/runtime/common/Cargo.toml b/pallets/runtime/common/Cargo.toml index b141f595f7..39eb995cfb 100644 --- a/pallets/runtime/common/Cargo.toml +++ b/pallets/runtime/common/Cargo.toml @@ -10,12 +10,15 @@ polymesh-primitives = { path = "../../../primitives", default-features = false } pallet-asset = { path = "../../asset", default-features = false } pallet-balances = { path = "../../balances", default-features = false } +pallet-bridge = { path = "../../bridge", default-features = false } pallet-committee = { path = "../../committee", default-features = false } pallet-compliance-manager = { path = "../../compliance-manager", default-features = false } #pallet-contracts = { version = "4.0.0-dev", default-features = false } pallet-identity = { path = "../../identity", default-features = false } pallet-multisig = { path = "../../multisig", default-features = false} pallet-portfolio = { path = "../../portfolio", default-features = false } +pallet-relayer = { path = "../../relayer", default-features = false } +pallet-test-utils = { path = "../../test-utils", default-features = false } # RPC pallet-group-rpc-runtime-api = { path = "../../group/rpc/runtime-api", default-features = false} diff --git a/pallets/runtime/common/src/fee_details.rs b/pallets/runtime/common/src/fee_details.rs index c1c0757f01..ccf3cf031e 100644 --- a/pallets/runtime/common/src/fee_details.rs +++ b/pallets/runtime/common/src/fee_details.rs @@ -1,9 +1,220 @@ use codec::{Decode, Encode}; -use polymesh_primitives::{AccountId, TransactionError}; +use core::convert::{TryFrom, TryInto}; +use core::marker::PhantomData; +use frame_support::{StorageDoubleMap, StorageMap}; +use pallet_identity::Module; +use polymesh_common_utilities::traits::identity::Config; +use polymesh_common_utilities::{traits::transaction_payment::CddAndFeeDetails, Context}; +use polymesh_primitives::{AccountId, AuthorizationData, IdentityId, Signatory, TransactionError}; use sp_runtime::transaction_validity::InvalidTransaction; +/// A `CddHandler` that considers `TestUtils`. +pub type DevCddHandler = CddHandler>; + +/// Hook for `CddHandler`'s `get_valid_payer`. +pub trait GetValidPayerHook { + /// Gets called by `CddHandler::get_valid_payer` as a pre-processing step. + fn get_valid_payer(call: &C, caller: &AccountId) -> Option; +} + +/// Provides a hook to deal with `TestUtils::register_did`. +pub struct WithTestUtils(PhantomData); + +impl GetValidPayerHook for WithTestUtils +where + for<'a> &'a pallet_test_utils::Call: TryFrom<&'a C>, + A: pallet_test_utils::Config, +{ + fn get_valid_payer(call: &C, caller: &AccountId) -> Option { + match <&pallet_test_utils::Call>::try_from(call) { + // Register did call. + // all did registration should go through CDD + Ok(pallet_test_utils::Call::register_did { .. }) => Some(Ok(Some(caller.clone()))), + _ => None, + } + } +} + +/// Provides a hook that does nothing. +pub struct Noop; + +impl GetValidPayerHook for Noop { + fn get_valid_payer(_: &C, _: &AccountId) -> Option { + None + } +} + +/// The set of `Call`s from pallets that `CddHandler` recognizes specially. +pub enum Call<'a, R> +where + R: Config + pallet_multisig::Config + pallet_relayer::Config + pallet_bridge::Config, +{ + MultiSig(&'a pallet_multisig::Call), + Identity(&'a pallet_identity::Call), + Relayer(&'a pallet_relayer::Call), + Bridge(&'a pallet_bridge::Call), +} + +/// The implementation of `CddAndFeeDetails` for the chain. +#[derive(Default, Encode, Decode, Clone, Eq, PartialEq)] +pub struct CddHandler(PhantomData<(A, H)>); + +impl CddAndFeeDetails for CddHandler +where + H: GetValidPayerHook, + for<'a> Call<'a, A>: TryFrom<&'a C>, + A: Config + + pallet_multisig::Config + + pallet_relayer::Config + + pallet_bridge::Config, +{ + /// Check if there's an eligible payer with valid CDD. + /// Return the payer if found or else an error. + /// Can also return Ok(none) to represent the case where + /// CDD is valid but no payer should pay fee for this tx + /// This also sets the identity in the context to the identity that was checked for CDD + /// However, this does not set the payer context since that is meant to remain constant + /// throughout the transaction. This function can also be used to simply check CDD and update identity context. + fn get_valid_payer(call: &C, caller: &AccountId) -> ValidPayerResult { + match H::get_valid_payer(call, caller) { + Some(r) => return r, + None => {} + } + + // Returns signatory to charge fee if cdd is valid. + let check_cdd = |did: &IdentityId| { + if Module::::has_valid_cdd(*did) { + Context::set_current_identity::>(Some(*did)); + Ok(Some(Module::::did_records(&did).primary_key)) + } else { + CDD_REQUIRED + } + }; + + let handle_multisig = |multisig: &AccountId, caller: &AccountId| { + let sig = Signatory::Account(caller.clone()); + if >::contains_key(multisig, sig) { + check_cdd(&>::get(multisig)) + } else { + MISSING_ID + } + }; + + // Returns signatory to charge fee if auth is valid. + let is_auth_valid = |acc: &AccountId, auth_id: &u64, call_type: CallType| { + // Fetch the auth if it exists and has not expired. + match Module::::get_non_expired_auth(&Signatory::Account(acc.clone()), auth_id) + .map(|auth| (auth.authorized_by, (auth.authorization_data, call_type))) + { + // Different auths have different authorization data requirements. + // Hence we match call type to ensure proper authorization data is present. + // We only need to check that there's a payer with a valid CDD. + // Business logic for authorisations can be checked post-Signed Extension. + Some(( + by, + (AuthorizationData::AddMultiSigSigner(_), CallType::AcceptMultiSigSigner) + | (AuthorizationData::JoinIdentity(_), CallType::AcceptIdentitySecondary) + | (AuthorizationData::RotatePrimaryKey, CallType::AcceptIdentityPrimary) + | ( + AuthorizationData::RotatePrimaryKeyToSecondary(_), + CallType::RotatePrimaryToSecondary, + ) + | (AuthorizationData::AddRelayerPayingKey(..), CallType::AcceptRelayerPayingKey) + | (_, CallType::RemoveAuthorization), + )) => check_cdd(&by), + // None of the above apply, so error. + _ => INVALID_AUTH, + } + }; + + // The CDD check and fee payer varies depending on the transaction. + // This match covers all possible scenarios. + match call.try_into() { + // Call made by a new Account key to accept invitation to become a secondary key + // of an existing multisig that has a valid CDD. The auth should be valid. + Ok(Call::MultiSig(pallet_multisig::Call::accept_multisig_signer_as_key { + auth_id, + })) => is_auth_valid(caller, auth_id, CallType::AcceptMultiSigSigner), + // Call made by a new Account key to accept invitation to become a secondary key + // of an existing identity that has a valid CDD. The auth should be valid. + Ok(Call::Identity(pallet_identity::Call::join_identity_as_key { auth_id })) => { + is_auth_valid(caller, auth_id, CallType::AcceptIdentitySecondary) + } + // Call made by a new Account key to accept invitation to become the primary key + // of an existing identity that has a valid CDD. The auth should be valid. + Ok(Call::Identity(pallet_identity::Call::accept_primary_key { + rotation_auth_id, + .. + })) => is_auth_valid(caller, rotation_auth_id, CallType::AcceptIdentityPrimary), + // Call made by a new Account key to accept invitation to become the primary key + // of an existing identity that has a valid CDD. The auth should be valid. + Ok(Call::Identity(pallet_identity::Call::rotate_primary_key_to_secondary { + auth_id, + .. + })) => is_auth_valid(caller, auth_id, CallType::RotatePrimaryToSecondary), + // Call made by a new Account key to remove invitation for certain authorizations + // in an existing identity that has a valid CDD. The auth should be valid. + Ok(Call::Identity(pallet_identity::Call::remove_authorization { + auth_id, + _auth_issuer_pays: true, + .. + })) => is_auth_valid(caller, auth_id, CallType::RemoveAuthorization), + // Call made by a user key to accept subsidy from a paying key. The auth should be valid. + Ok(Call::Relayer(pallet_relayer::Call::accept_paying_key { auth_id })) => { + is_auth_valid(caller, auth_id, CallType::AcceptRelayerPayingKey) + } + // Call made by an Account key to propose, reject or approve a multisig transaction. + // The multisig must have valid CDD and the caller must be a signer of the multisig. + Ok(Call::MultiSig( + pallet_multisig::Call::create_or_approve_proposal_as_key { multisig, .. } + | pallet_multisig::Call::create_proposal_as_key { multisig, .. } + | pallet_multisig::Call::approve_as_key { multisig, .. } + | pallet_multisig::Call::reject_as_key { multisig, .. }, + )) => handle_multisig(multisig, caller), + // Call made by an Account key to propose or approve a multisig transaction via the bridge helper + // The multisig must have valid CDD and the caller must be a signer of the multisig. + Ok(Call::Bridge( + pallet_bridge::Call::propose_bridge_tx { .. } + | pallet_bridge::Call::batch_propose_bridge_tx { .. }, + )) => handle_multisig(&pallet_bridge::Module::::controller_key(), caller), + // All other calls. + // + // The external account must directly be linked to an identity with valid CDD. + _ => match pallet_identity::Module::::get_identity(caller) { + Some(did) if pallet_identity::Module::::has_valid_cdd(did) => { + Self::set_current_identity(&did); + Ok(Some(caller.clone())) + } + Some(_) => CDD_REQUIRED, + // Return if there's no DID. + None => MISSING_ID, + }, + } + } + + /// Clears context. Should be called in post_dispatch + fn clear_context() { + Context::set_current_identity::>(None); + Self::set_payer_context(None); + } + + /// Sets payer in context. Should be called by the signed extension that first charges fee. + fn set_payer_context(payer: Option) { + Context::set_current_payer::>(payer); + } + + /// Fetches fee payer for further payments (forwarded calls) + fn get_payer_from_context() -> Option { + Context::current_payer::>() + } + + fn set_current_identity(did: &IdentityId) { + Context::set_current_identity::>(Some(*did)); + } +} + #[derive(Encode, Decode)] -pub enum CallType { +enum CallType { AcceptMultiSigSigner, AcceptRelayerPayingKey, AcceptIdentitySecondary, @@ -14,16 +225,16 @@ pub enum CallType { RemoveAuthorization, } -pub type ValidPayerResult = Result, InvalidTransaction>; +type ValidPayerResult = Result, InvalidTransaction>; -pub const CDD_REQUIRED: ValidPayerResult = Err(InvalidTransaction::Custom( +const CDD_REQUIRED: ValidPayerResult = Err(InvalidTransaction::Custom( TransactionError::CddRequired as u8, )); -pub const MISSING_ID: ValidPayerResult = Err(InvalidTransaction::Custom( +const MISSING_ID: ValidPayerResult = Err(InvalidTransaction::Custom( TransactionError::MissingIdentity as u8, )); -pub const INVALID_AUTH: ValidPayerResult = Err(InvalidTransaction::Custom( +const INVALID_AUTH: ValidPayerResult = Err(InvalidTransaction::Custom( TransactionError::InvalidAuthorization as u8, )); diff --git a/pallets/runtime/common/src/runtime.rs b/pallets/runtime/common/src/runtime.rs index 0106798ce7..09fb2f69ed 100644 --- a/pallets/runtime/common/src/runtime.rs +++ b/pallets/runtime/common/src/runtime.rs @@ -117,6 +117,22 @@ macro_rules! misc_pallet_impls { type WeightInfo = polymesh_weights::pallet_indices::WeightInfo; } + impl<'a> core::convert::TryFrom<&'a Call> + for polymesh_runtime_common::fee_details::Call<'a, Runtime> + { + type Error = (); + fn try_from(call: &'a Call) -> Result { + use polymesh_runtime_common::fee_details::Call::*; + Ok(match call { + Call::Identity(x) => Identity(x), + Call::Bridge(x) => Bridge(x), + Call::MultiSig(x) => MultiSig(x), + Call::Relayer(x) => Relayer(x), + _ => return Err(()), + }) + } + } + impl pallet_transaction_payment::Config for Runtime { type Currency = Balances; type OnChargeTransaction = diff --git a/pallets/runtime/develop/src/fee_details.rs b/pallets/runtime/develop/src/fee_details.rs deleted file mode 100644 index 9f26ba1a39..0000000000 --- a/pallets/runtime/develop/src/fee_details.rs +++ /dev/null @@ -1,178 +0,0 @@ -// This file is part of the Polymesh distribution (https://github.com/PolymathNetwork/Polymesh). -// Copyright (c) 2020 Polymath - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, version 3. - -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -use crate::{runtime, Runtime}; -use codec::{Decode, Encode}; -use frame_support::{StorageDoubleMap, StorageMap}; -use polymesh_common_utilities::{traits::transaction_payment::CddAndFeeDetails, Context}; -use polymesh_primitives::{AccountId, AuthorizationData, Hash, IdentityId, Signatory}; -use polymesh_runtime_common::fee_details::{ - CallType, ValidPayerResult, CDD_REQUIRED, INVALID_AUTH, MISSING_ID, -}; -use sp_core::crypto::UncheckedFrom; - -type Identity = pallet_identity::Module; -type Bridge = pallet_bridge::Module; -type Call = runtime::Call; - -#[derive(Default, Encode, Decode, Clone, Eq, PartialEq)] -pub struct CddHandler; - -impl CddAndFeeDetails for CddHandler -where - AccountId: UncheckedFrom + AsRef<[u8]>, -{ - /// Check if there's an eligible payer with valid CDD. - /// Return the payer if found or else an error. - /// Can also return Ok(none) to represent the case where - /// CDD is valid but no payer should pay fee for this tx - /// This also sets the identity in the context to the identity that was checked for CDD - /// However, this does not set the payer context since that is meant to remain constant - /// throughout the transaction. This function can also be used to simply check CDD and update identity context. - fn get_valid_payer(call: &Call, caller: &AccountId) -> ValidPayerResult { - let handle_multisig = |multisig, caller: &AccountId| { - let sig = Signatory::Account(caller.clone()); - if >::contains_key(multisig, sig) { - check_cdd(&>::get( - multisig, - )) - } else { - MISSING_ID - } - }; - - // The CDD check and fee payer varies depending on the transaction. - // This match covers all possible scenarios. - match call { - // Register did call. - // all did registration should go through CDD - Call::TestUtils(pallet_test_utils::Call::register_did { .. }) => { - Ok(Some(caller.clone())) - } - // Call made by a new Account key to accept invitation to become a secondary key - // of an existing multisig that has a valid CDD. The auth should be valid. - Call::MultiSig(pallet_multisig::Call::accept_multisig_signer_as_key { auth_id }) => { - is_auth_valid(caller, auth_id, CallType::AcceptMultiSigSigner) - } - // Call made by a new Account key to accept invitation to become a secondary key - // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::join_identity_as_key { auth_id }) => { - is_auth_valid(caller, auth_id, CallType::AcceptIdentitySecondary) - } - // Call made by a new Account key to accept invitation to become the primary key - // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::accept_primary_key { - rotation_auth_id, .. - }) => is_auth_valid(caller, rotation_auth_id, CallType::AcceptIdentityPrimary), - // Call made by a new Account key to accept invitation to become the primary key - // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::rotate_primary_key_to_secondary { - auth_id, - .. - }) => is_auth_valid(caller, auth_id, CallType::RotatePrimaryToSecondary), - // Call made by a new Account key to remove invitation for certain authorizations - // in an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::remove_authorization { - auth_id, - _auth_issuer_pays: true, - .. - }) => is_auth_valid(caller, auth_id, CallType::RemoveAuthorization), - // Call made by a user key to accept subsidy from a paying key. The auth should be valid. - Call::Relayer(pallet_relayer::Call::accept_paying_key { auth_id }) => { - is_auth_valid(caller, auth_id, CallType::AcceptRelayerPayingKey) - } - // Call made by an Account key to propose, reject or approve a multisig transaction. - // The multisig must have valid CDD and the caller must be a signer of the multisig. - Call::MultiSig( - pallet_multisig::Call::create_or_approve_proposal_as_key { multisig, .. } - | pallet_multisig::Call::create_proposal_as_key { multisig, .. } - | pallet_multisig::Call::approve_as_key { multisig, .. } - | pallet_multisig::Call::reject_as_key { multisig, .. }, - ) => handle_multisig(multisig, caller), - // Call made by an Account key to propose or approve a multisig transaction via the bridge helper - // The multisig must have valid CDD and the caller must be a signer of the multisig. - Call::Bridge( - pallet_bridge::Call::propose_bridge_tx { .. } - | pallet_bridge::Call::batch_propose_bridge_tx { .. }, - ) => handle_multisig(&Bridge::controller_key(), caller), - // All other calls. - // - // The external account must directly be linked to an identity with valid CDD. - _ => match Identity::get_identity(caller) { - Some(did) if Identity::has_valid_cdd(did) => { - Context::set_current_identity::(Some(did)); - Ok(Some(caller.clone())) - } - Some(_) => CDD_REQUIRED, - // Return if there's no DID. - None => MISSING_ID, - }, - } - } - - /// Clears context. Should be called in post_dispatch - fn clear_context() { - Context::set_current_identity::(None); - Context::set_current_payer::(None); - } - - /// Sets payer in context. Should be called by the signed extension that first charges fee. - fn set_payer_context(payer: Option) { - Context::set_current_payer::(payer); - } - - /// Fetches fee payer for further payments (forwarded calls) - fn get_payer_from_context() -> Option { - Context::current_payer::() - } - - fn set_current_identity(did: &IdentityId) { - Context::set_current_identity::(Some(*did)); - } -} - -/// Returns signatory to charge fee if auth is valid. -fn is_auth_valid(acc: &AccountId, auth_id: &u64, call_type: CallType) -> ValidPayerResult { - // Fetch the auth if it exists and has not expired. - match Identity::get_non_expired_auth(&Signatory::Account(acc.clone()), auth_id) - .map(|auth| (auth.authorized_by, (auth.authorization_data, call_type))) - { - // Different auths have different authorization data requirements. - // Hence we match call type to ensure proper authorization data is present. - // We only need to check that there's a payer with a valid CDD. - // Business logic for authorisations can be checked post-Signed Extension. - Some(( - by, - (AuthorizationData::AddMultiSigSigner(_), CallType::AcceptMultiSigSigner) - | (AuthorizationData::JoinIdentity(_), CallType::AcceptIdentitySecondary) - | (AuthorizationData::RotatePrimaryKey, CallType::AcceptIdentityPrimary) - | (AuthorizationData::RotatePrimaryKeyToSecondary(_), CallType::RotatePrimaryToSecondary) - | (AuthorizationData::AddRelayerPayingKey(..), CallType::AcceptRelayerPayingKey) - | (_, CallType::RemoveAuthorization), - )) => check_cdd(&by), - // None of the above apply, so error. - _ => INVALID_AUTH, - } -} - -/// Returns signatory to charge fee if cdd is valid. -fn check_cdd(did: &IdentityId) -> ValidPayerResult { - if Identity::has_valid_cdd(*did) { - Context::set_current_identity::(Some(*did)); - Ok(Some(Identity::did_records(&did).primary_key)) - } else { - CDD_REQUIRED - } -} diff --git a/pallets/runtime/develop/src/lib.rs b/pallets/runtime/develop/src/lib.rs index 30499efb6e..693f26b38b 100644 --- a/pallets/runtime/develop/src/lib.rs +++ b/pallets/runtime/develop/src/lib.rs @@ -2,10 +2,8 @@ // `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. #![recursion_limit = "256"] -pub mod fee_details; -pub mod runtime; -pub use fee_details::CddHandler; pub mod constants; +pub mod runtime; #[cfg(feature = "runtime-benchmarks")] pub mod benchmarks; diff --git a/pallets/runtime/develop/src/runtime.rs b/pallets/runtime/develop/src/runtime.rs index 04d4b45ef0..2623ed16fb 100644 --- a/pallets/runtime/develop/src/runtime.rs +++ b/pallets/runtime/develop/src/runtime.rs @@ -1,6 +1,6 @@ #![allow(clippy::not_unsafe_ptr_arg_deref)] -use crate::{constants::time::*, fee_details::CddHandler}; +use crate::constants::time::*; use codec::Encode; use frame_support::{ construct_runtime, @@ -11,6 +11,7 @@ use frame_support::{ }; use pallet_asset::checkpoint as pallet_checkpoint; //use pallet_contracts::weights::WeightInfo; +use core::convert::TryFrom; use pallet_corporate_actions::ballot as pallet_corporate_ballot; use pallet_corporate_actions::distribution as pallet_capital_distribution; use pallet_session::historical as pallet_session_historical; @@ -192,6 +193,18 @@ parameter_types! { polymesh_runtime_common::misc_pallet_impls!(); +pub type CddHandler = polymesh_runtime_common::fee_details::DevCddHandler; + +impl<'a> TryFrom<&'a Call> for &'a pallet_test_utils::Call { + type Error = (); + fn try_from(call: &'a Call) -> Result<&'a pallet_test_utils::Call, ()> { + match call { + Call::TestUtils(x) => Ok(x), + _ => Err(()), + } + } +} + impl polymesh_common_utilities::traits::identity::Config for Runtime { type Event = Event; type Proposal = Call; diff --git a/pallets/runtime/mainnet/src/fee_details.rs b/pallets/runtime/mainnet/src/fee_details.rs deleted file mode 100644 index 4e9e343c5e..0000000000 --- a/pallets/runtime/mainnet/src/fee_details.rs +++ /dev/null @@ -1,173 +0,0 @@ -// This file is part of the Polymesh distribution (https://github.com/PolymathNetwork/Polymesh). -// Copyright (c) 2020 Polymath - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, version 3. - -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -use crate::{runtime, Runtime}; -use codec::{Decode, Encode}; -use frame_support::{StorageDoubleMap, StorageMap}; -use polymesh_common_utilities::{traits::transaction_payment::CddAndFeeDetails, Context}; -use polymesh_primitives::{AccountId, AuthorizationData, Hash, IdentityId, Signatory}; -use polymesh_runtime_common::fee_details::{ - CallType, ValidPayerResult, CDD_REQUIRED, INVALID_AUTH, MISSING_ID, -}; -use sp_core::crypto::UncheckedFrom; - -type Identity = pallet_identity::Module; -type Bridge = pallet_bridge::Module; -type Call = runtime::Call; - -#[derive(Default, Encode, Decode, Clone, Eq, PartialEq)] -pub struct CddHandler; - -impl CddAndFeeDetails for CddHandler -where - AccountId: UncheckedFrom + AsRef<[u8]>, -{ - /// Check if there's an eligible payer with valid CDD. - /// Return the payer if found or else an error. - /// Can also return Ok(none) to represent the case where - /// CDD is valid but no payer should pay fee for this tx - /// This also sets the identity in the context to the identity that was checked for CDD - /// However, this does not set the payer context since that is meant to remain constant - /// throughout the transaction. This function can also be used to simply check CDD and update identity context. - fn get_valid_payer(call: &Call, caller: &AccountId) -> ValidPayerResult { - let handle_multisig = |multisig, caller: &AccountId| { - let sig = Signatory::Account(caller.clone()); - if >::contains_key(multisig, sig) { - check_cdd(&>::get( - multisig, - )) - } else { - MISSING_ID - } - }; - - // The CDD check and fee payer varies depending on the transaction. - // This match covers all possible scenarios. - match call { - // Call made by a new Account key to accept invitation to become a secondary key - // of an existing multisig that has a valid CDD. The auth should be valid. - Call::MultiSig(pallet_multisig::Call::accept_multisig_signer_as_key { auth_id }) => { - is_auth_valid(caller, auth_id, CallType::AcceptMultiSigSigner) - } - // Call made by a new Account key to accept invitation to become a secondary key - // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::join_identity_as_key { auth_id, .. }) => { - is_auth_valid(caller, auth_id, CallType::AcceptIdentitySecondary) - } - // Call made by a new Account key to accept invitation to become the primary key - // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::accept_primary_key { - rotation_auth_id, .. - }) => is_auth_valid(caller, rotation_auth_id, CallType::AcceptIdentityPrimary), - // Call made by a new Account key to accept invitation to become the primary key - // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::rotate_primary_key_to_secondary { - auth_id, - .. - }) => is_auth_valid(caller, auth_id, CallType::RotatePrimaryToSecondary), - // Call made by a new Account key to remove invitation for certain authorizations - // in an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::remove_authorization { - auth_id, - _auth_issuer_pays: true, - .. - }) => is_auth_valid(caller, auth_id, CallType::RemoveAuthorization), - // Call made by a user key to accept subsidy from a paying key. The auth should be valid. - Call::Relayer(pallet_relayer::Call::accept_paying_key { auth_id }) => { - is_auth_valid(caller, auth_id, CallType::AcceptRelayerPayingKey) - } - // Call made by an Account key to propose, reject or approve a multisig transaction. - // The multisig must have valid CDD and the caller must be a signer of the multisig. - Call::MultiSig( - pallet_multisig::Call::create_or_approve_proposal_as_key { multisig, .. } - | pallet_multisig::Call::create_proposal_as_key { multisig, .. } - | pallet_multisig::Call::approve_as_key { multisig, .. } - | pallet_multisig::Call::reject_as_key { multisig, .. }, - ) => handle_multisig(multisig, caller), - // Call made by an Account key to propose or approve a multisig transaction via the bridge helper - // The multisig must have valid CDD and the caller must be a signer of the multisig. - Call::Bridge( - pallet_bridge::Call::propose_bridge_tx { .. } - | pallet_bridge::Call::batch_propose_bridge_tx { .. }, - ) => handle_multisig(&Bridge::controller_key(), caller), - // All other calls. - // - // The external account must directly be linked to an identity with valid CDD. - _ => match Identity::get_identity(caller) { - Some(did) if Identity::has_valid_cdd(did) => { - Context::set_current_identity::(Some(did)); - Ok(Some(caller.clone())) - } - Some(_) => CDD_REQUIRED, - // Return if there's no DID. - None => MISSING_ID, - }, - } - } - - /// Clears context. Should be called in post_dispatch - fn clear_context() { - Context::set_current_identity::(None); - Context::set_current_payer::(None); - } - - /// Sets payer in context. Should be called by the signed extension that first charges fee. - fn set_payer_context(payer: Option) { - Context::set_current_payer::(payer); - } - - /// Fetches fee payer for further payments (forwarded calls) - fn get_payer_from_context() -> Option { - Context::current_payer::() - } - - fn set_current_identity(did: &IdentityId) { - Context::set_current_identity::(Some(*did)); - } -} - -/// Returns signatory to charge fee if auth is valid. -fn is_auth_valid(acc: &AccountId, auth_id: &u64, call_type: CallType) -> ValidPayerResult { - // Fetch the auth if it exists and has not expired. - match Identity::get_non_expired_auth(&Signatory::Account(acc.clone()), auth_id) - .map(|auth| (auth.authorized_by, (auth.authorization_data, call_type))) - { - // Different auths have different authorization data requirements. - // Hence we match call type to ensure proper authorization data is present. - // We only need to check that there's a payer with a valid CDD. - // Business logic for authorisations can be checked post-Signed Extension. - Some(( - by, - (AuthorizationData::AddMultiSigSigner(_), CallType::AcceptMultiSigSigner) - | (AuthorizationData::JoinIdentity(_), CallType::AcceptIdentitySecondary) - | (AuthorizationData::RotatePrimaryKey, CallType::AcceptIdentityPrimary) - | (AuthorizationData::RotatePrimaryKeyToSecondary(_), CallType::RotatePrimaryToSecondary) - | (AuthorizationData::AddRelayerPayingKey(..), CallType::AcceptRelayerPayingKey) - | (_, CallType::RemoveAuthorization), - )) => check_cdd(&by), - // None of the above apply, so error. - _ => INVALID_AUTH, - } -} - -/// Returns signatory to charge fee if cdd is valid. -fn check_cdd(did: &IdentityId) -> ValidPayerResult { - if Identity::has_valid_cdd(*did) { - Context::set_current_identity::(Some(*did)); - Ok(Some(Identity::did_records(&did).primary_key)) - } else { - CDD_REQUIRED - } -} diff --git a/pallets/runtime/mainnet/src/lib.rs b/pallets/runtime/mainnet/src/lib.rs index 03fb6baef1..4633c8acb0 100644 --- a/pallets/runtime/mainnet/src/lib.rs +++ b/pallets/runtime/mainnet/src/lib.rs @@ -2,10 +2,8 @@ // `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. #![recursion_limit = "256"] -pub mod fee_details; -pub mod runtime; -pub use fee_details::CddHandler; pub mod constants; +pub mod runtime; #[cfg(feature = "std")] pub use pallet_staking::StakerStatus; diff --git a/pallets/runtime/mainnet/src/runtime.rs b/pallets/runtime/mainnet/src/runtime.rs index c3c8de80bf..166907730f 100644 --- a/pallets/runtime/mainnet/src/runtime.rs +++ b/pallets/runtime/mainnet/src/runtime.rs @@ -1,6 +1,6 @@ #![allow(clippy::not_unsafe_ptr_arg_deref)] -use crate::{constants::time::*, fee_details::CddHandler}; +use crate::constants::time::*; use codec::Encode; use frame_support::{ construct_runtime, parameter_types, @@ -193,6 +193,11 @@ parameter_types! { polymesh_runtime_common::misc_pallet_impls!(); +type CddHandler = polymesh_runtime_common::fee_details::CddHandler< + Runtime, + polymesh_runtime_common::fee_details::Noop, +>; + impl polymesh_common_utilities::traits::identity::Config for Runtime { type Event = Event; type Proposal = Call; diff --git a/pallets/runtime/testnet/src/fee_details.rs b/pallets/runtime/testnet/src/fee_details.rs deleted file mode 100644 index 9deaccf8ab..0000000000 --- a/pallets/runtime/testnet/src/fee_details.rs +++ /dev/null @@ -1,178 +0,0 @@ -// This file is part of the Polymesh distribution (https://github.com/PolymathNetwork/Polymesh). -// Copyright (c) 2020 Polymath - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, version 3. - -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -use crate::{runtime, Runtime}; -use codec::{Decode, Encode}; -use frame_support::{StorageDoubleMap, StorageMap}; -use polymesh_common_utilities::{traits::transaction_payment::CddAndFeeDetails, Context}; -use polymesh_primitives::{AccountId, AuthorizationData, Hash, IdentityId, Signatory}; -use polymesh_runtime_common::fee_details::{ - CallType, ValidPayerResult, CDD_REQUIRED, INVALID_AUTH, MISSING_ID, -}; -use sp_core::crypto::UncheckedFrom; - -type Identity = pallet_identity::Module; -type Bridge = pallet_bridge::Module; -type Call = runtime::Call; - -#[derive(Default, Encode, Decode, Clone, Eq, PartialEq)] -pub struct CddHandler; - -impl CddAndFeeDetails for CddHandler -where - AccountId: UncheckedFrom + AsRef<[u8]>, -{ - /// Check if there's an eligible payer with valid CDD. - /// Return the payer if found or else an error. - /// Can also return Ok(none) to represent the case where - /// CDD is valid but no payer should pay fee for this tx - /// This also sets the identity in the context to the identity that was checked for CDD - /// However, this does not set the payer context since that is meant to remain constant - /// throughout the transaction. This function can also be used to simply check CDD and update identity context. - fn get_valid_payer(call: &Call, caller: &AccountId) -> ValidPayerResult { - let handle_multisig = |multisig, caller: &AccountId| { - let sig = Signatory::Account(caller.clone()); - if >::contains_key(multisig, sig) { - check_cdd(&>::get( - multisig, - )) - } else { - MISSING_ID - } - }; - - // The CDD check and fee payer varies depending on the transaction. - // This match covers all possible scenarios. - match call { - // Register did call. - // all did registration should go through CDD - Call::TestUtils(pallet_test_utils::Call::register_did { .. }) => { - Ok(Some(caller.clone())) - } - // Call made by a new Account key to accept invitation to become a secondary key - // of an existing multisig that has a valid CDD. The auth should be valid. - Call::MultiSig(pallet_multisig::Call::accept_multisig_signer_as_key { auth_id }) => { - is_auth_valid(caller, auth_id, CallType::AcceptMultiSigSigner) - } - // Call made by a new Account key to accept invitation to become a secondary key - // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::join_identity_as_key { auth_id, .. }) => { - is_auth_valid(caller, auth_id, CallType::AcceptIdentitySecondary) - } - // Call made by a new Account key to accept invitation to become the primary key - // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::accept_primary_key { - rotation_auth_id, .. - }) => is_auth_valid(caller, rotation_auth_id, CallType::AcceptIdentityPrimary), - // Call made by a new Account key to accept invitation to become the primary key - // of an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::rotate_primary_key_to_secondary { - auth_id, - .. - }) => is_auth_valid(caller, auth_id, CallType::RotatePrimaryToSecondary), - // Call made by a new Account key to remove invitation for certain authorizations - // in an existing identity that has a valid CDD. The auth should be valid. - Call::Identity(pallet_identity::Call::remove_authorization { - auth_id, - _auth_issuer_pays: true, - .. - }) => is_auth_valid(caller, auth_id, CallType::RemoveAuthorization), - // Call made by a user key to accept subsidy from a paying key. The auth should be valid. - Call::Relayer(pallet_relayer::Call::accept_paying_key { auth_id }) => { - is_auth_valid(caller, auth_id, CallType::AcceptRelayerPayingKey) - } - // Call made by an Account key to propose, reject or approve a multisig transaction. - // The multisig must have valid CDD and the caller must be a signer of the multisig. - Call::MultiSig( - pallet_multisig::Call::create_or_approve_proposal_as_key { multisig, .. } - | pallet_multisig::Call::create_proposal_as_key { multisig, .. } - | pallet_multisig::Call::approve_as_key { multisig, .. } - | pallet_multisig::Call::reject_as_key { multisig, .. }, - ) => handle_multisig(multisig, caller), - // Call made by an Account key to propose or approve a multisig transaction via the bridge helper - // The multisig must have valid CDD and the caller must be a signer of the multisig. - Call::Bridge( - pallet_bridge::Call::propose_bridge_tx { .. } - | pallet_bridge::Call::batch_propose_bridge_tx { .. }, - ) => handle_multisig(&Bridge::controller_key(), caller), - // All other calls. - // - // The external account must directly be linked to an identity with valid CDD. - _ => match Identity::get_identity(caller) { - Some(did) if Identity::has_valid_cdd(did) => { - Context::set_current_identity::(Some(did)); - Ok(Some(caller.clone())) - } - Some(_) => CDD_REQUIRED, - // Return if there's no DID. - None => MISSING_ID, - }, - } - } - - /// Clears context. Should be called in post_dispatch - fn clear_context() { - Context::set_current_identity::(None); - Context::set_current_payer::(None); - } - - /// Sets payer in context. Should be called by the signed extension that first charges fee. - fn set_payer_context(payer: Option) { - Context::set_current_payer::(payer); - } - - /// Fetches fee payer for further payments (forwarded calls) - fn get_payer_from_context() -> Option { - Context::current_payer::() - } - - fn set_current_identity(did: &IdentityId) { - Context::set_current_identity::(Some(*did)); - } -} - -/// Returns signatory to charge fee if auth is valid. -fn is_auth_valid(acc: &AccountId, auth_id: &u64, call_type: CallType) -> ValidPayerResult { - // Fetch the auth if it exists and has not expired. - match Identity::get_non_expired_auth(&Signatory::Account(acc.clone()), auth_id) - .map(|auth| (auth.authorized_by, (auth.authorization_data, call_type))) - { - // Different auths have different authorization data requirements. - // Hence we match call type to ensure proper authorization data is present. - // We only need to check that there's a payer with a valid CDD. - // Business logic for authorisations can be checked post-Signed Extension. - Some(( - by, - (AuthorizationData::AddMultiSigSigner(_), CallType::AcceptMultiSigSigner) - | (AuthorizationData::JoinIdentity(_), CallType::AcceptIdentitySecondary) - | (AuthorizationData::RotatePrimaryKey, CallType::AcceptIdentityPrimary) - | (AuthorizationData::RotatePrimaryKeyToSecondary(_), CallType::RotatePrimaryToSecondary) - | (AuthorizationData::AddRelayerPayingKey(..), CallType::AcceptRelayerPayingKey) - | (_, CallType::RemoveAuthorization), - )) => check_cdd(&by), - // None of the above apply, so error. - _ => INVALID_AUTH, - } -} - -/// Returns signatory to charge fee if cdd is valid. -fn check_cdd(did: &IdentityId) -> ValidPayerResult { - if Identity::has_valid_cdd(*did) { - Context::set_current_identity::(Some(*did)); - Ok(Some(Identity::did_records(&did).primary_key)) - } else { - CDD_REQUIRED - } -} diff --git a/pallets/runtime/testnet/src/lib.rs b/pallets/runtime/testnet/src/lib.rs index 6bd4b72330..f069b153b4 100644 --- a/pallets/runtime/testnet/src/lib.rs +++ b/pallets/runtime/testnet/src/lib.rs @@ -2,10 +2,8 @@ // `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. #![recursion_limit = "256"] -pub mod fee_details; -pub mod runtime; -pub use fee_details::CddHandler; pub mod constants; +pub mod runtime; #[cfg(feature = "std")] pub use pallet_staking::StakerStatus; diff --git a/pallets/runtime/testnet/src/runtime.rs b/pallets/runtime/testnet/src/runtime.rs index 76fbc6e9f0..310ad5b4f0 100644 --- a/pallets/runtime/testnet/src/runtime.rs +++ b/pallets/runtime/testnet/src/runtime.rs @@ -1,11 +1,12 @@ #![allow(clippy::not_unsafe_ptr_arg_deref)] -use crate::{constants::time::*, fee_details::CddHandler}; +use crate::constants::time::*; use codec::Encode; #[cfg(feature = "migration-dry-run")] use frame_support::traits::OnRuntimeUpgrade; +use core::convert::TryFrom; use frame_support::{ construct_runtime, parameter_types, traits::{tokens::imbalance::SplitTwoWays, KeyOwnerProofSystem}, @@ -196,6 +197,18 @@ parameter_types! { polymesh_runtime_common::misc_pallet_impls!(); +type CddHandler = polymesh_runtime_common::fee_details::DevCddHandler; + +impl<'a> TryFrom<&'a Call> for &'a pallet_test_utils::Call { + type Error = (); + fn try_from(call: &'a Call) -> Result<&'a pallet_test_utils::Call, ()> { + match call { + Call::TestUtils(x) => Ok(x), + _ => Err(()), + } + } +} + impl polymesh_common_utilities::traits::identity::Config for Runtime { type Event = Event; type Proposal = Call; diff --git a/pallets/runtime/tests/src/fee_details.rs b/pallets/runtime/tests/src/fee_details.rs index be78ce8e92..4a02a2a7d2 100644 --- a/pallets/runtime/tests/src/fee_details.rs +++ b/pallets/runtime/tests/src/fee_details.rs @@ -10,7 +10,7 @@ use pallet_test_utils as test_utils; use polymesh_common_utilities::traits::transaction_payment::CddAndFeeDetails; use polymesh_common_utilities::Context; use polymesh_primitives::{InvestorUid, Signatory, TransactionError}; -use polymesh_runtime_develop::{fee_details::CddHandler, runtime::Call}; +use polymesh_runtime_develop::runtime::{Call, CddHandler}; use sp_runtime::transaction_validity::InvalidTransaction; use test_client::AccountKeyring; diff --git a/pallets/runtime/tests/src/identity_test.rs b/pallets/runtime/tests/src/identity_test.rs index 99373c3336..976bc0aed9 100644 --- a/pallets/runtime/tests/src/identity_test.rs +++ b/pallets/runtime/tests/src/identity_test.rs @@ -36,7 +36,7 @@ use polymesh_primitives::{ InvestorUid, PalletName, PalletPermissions, Permissions, PortfolioId, PortfolioNumber, Scope, SecondaryKey, Signatory, SubsetRestriction, Ticker, TransactionError, }; -use polymesh_runtime_develop::{fee_details::CddHandler, runtime::Call}; +use polymesh_runtime_develop::runtime::{Call, CddHandler}; use sp_core::H512; use sp_runtime::transaction_validity::InvalidTransaction; use std::convert::{From, TryFrom}; diff --git a/pallets/runtime/tests/src/relayer_test.rs b/pallets/runtime/tests/src/relayer_test.rs index 07dcf5572a..5517c5e29e 100644 --- a/pallets/runtime/tests/src/relayer_test.rs +++ b/pallets/runtime/tests/src/relayer_test.rs @@ -13,7 +13,7 @@ use polymesh_common_utilities::{ traits::transaction_payment::CddAndFeeDetails, }; use polymesh_primitives::{AccountId, Balance, Signatory, Ticker, TransactionError}; -use polymesh_runtime_develop::{fee_details::CddHandler, runtime::Call as DevCall}; +use polymesh_runtime_develop::runtime::{Call as DevCall, CddHandler}; use sp_runtime::{ traits::{Dispatchable, SignedExtension}, transaction_validity::{InvalidTransaction, TransactionValidityError}, From 5058577cfdc90e57ffaa27259774aa9c4cf01409 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Feb 2022 07:34:20 -0500 Subject: [PATCH 22/53] Bump simple-get from 2.8.1 to 2.8.2 in /scripts/event-listener (#1206) Bumps [simple-get](https://github.com/feross/simple-get) from 2.8.1 to 2.8.2. - [Release notes](https://github.com/feross/simple-get/releases) - [Commits](https://github.com/feross/simple-get/compare/v2.8.1...v2.8.2) --- updated-dependencies: - dependency-name: simple-get dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- scripts/event-listener/yarn.lock | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/scripts/event-listener/yarn.lock b/scripts/event-listener/yarn.lock index f4435d2dcf..8497a39998 100644 --- a/scripts/event-listener/yarn.lock +++ b/scripts/event-listener/yarn.lock @@ -449,6 +449,7 @@ decode-uri-component@^0.2.0: decompress-response@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= dependencies: mimic-response "^1.0.0" @@ -773,6 +774,7 @@ mimic-fn@^1.0.0: mimic-response@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== min-document@^2.19.0: version "2.19.0" @@ -833,6 +835,7 @@ object-keys@^1.0.12: once@^1.3.1: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" @@ -944,12 +947,14 @@ signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" simple-concat@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== simple-get@^2.7.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d" + version "2.8.2" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.2.tgz#5708fb0919d440657326cd5fe7d2599d07705019" + integrity sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw== dependencies: decompress-response "^3.3.0" once "^1.3.1" @@ -1080,6 +1085,7 @@ whatwg-fetch@>=0.10.0: wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= xhr-request-promise@^0.1.2: version "0.1.2" From 4de20759b888df84dcaad29fce2ba4a9dfa732cb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Feb 2022 08:15:25 -0500 Subject: [PATCH 23/53] Bump follow-redirects from 1.14.2 to 1.14.9 in /scripts/cli (#1215) Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.2 to 1.14.9. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.2...v1.14.9) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- scripts/cli/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/scripts/cli/package-lock.json b/scripts/cli/package-lock.json index 66705e1a6e..74f32eeca9 100644 --- a/scripts/cli/package-lock.json +++ b/scripts/cli/package-lock.json @@ -4433,9 +4433,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.2.tgz", - "integrity": "sha512-yLR6WaE2lbF0x4K2qE2p9PEXKLDjUjnR/xmjS3wHAYxtlsI9MLLBJUZirAHKzUZDGLxje7w/cXR49WOUo4rbsA==", + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", "funding": [ { "type": "individual", @@ -13450,9 +13450,9 @@ } }, "follow-redirects": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.2.tgz", - "integrity": "sha512-yLR6WaE2lbF0x4K2qE2p9PEXKLDjUjnR/xmjS3wHAYxtlsI9MLLBJUZirAHKzUZDGLxje7w/cXR49WOUo4rbsA==" + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==" }, "forever-agent": { "version": "0.6.1", From f286aae69568d57bc364097a99d2d13ad0dc280e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Feb 2022 09:24:01 -0500 Subject: [PATCH 24/53] Bump vm2 from 3.9.5 to 3.9.8 in /scripts/cli (#1216) Bumps [vm2](https://github.com/patriksimek/vm2) from 3.9.5 to 3.9.8. - [Release notes](https://github.com/patriksimek/vm2/releases) - [Changelog](https://github.com/patriksimek/vm2/blob/master/CHANGELOG.md) - [Commits](https://github.com/patriksimek/vm2/compare/3.9.5...3.9.8) --- updated-dependencies: - dependency-name: vm2 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- scripts/cli/package-lock.json | 49 +++++++++++++++++++++++++---------- 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/scripts/cli/package-lock.json b/scripts/cli/package-lock.json index 74f32eeca9..cfa0c1f686 100644 --- a/scripts/cli/package-lock.json +++ b/scripts/cli/package-lock.json @@ -2474,10 +2474,9 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "node_modules/acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", - "dev": true, + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", "bin": { "acorn": "bin/acorn" }, @@ -9657,9 +9656,13 @@ } }, "node_modules/vm2": { - "version": "3.9.5", - "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.5.tgz", - "integrity": "sha512-LuCAHZN75H9tdrAiLFf030oW7nJV5xwNMuk1ymOZwopmuK3d2H4L1Kv4+GFHgarKiLfXXLFU+7LDABHnwOkWng==", + "version": "3.9.8", + "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.8.tgz", + "integrity": "sha512-/1PYg/BwdKzMPo8maOZ0heT7DLI0DAFTm7YQaz/Lim9oIaFZsJs3EdtalvXuBfZwczNwsYhju75NW4d6E+4q+w==", + "dependencies": { + "acorn": "^8.7.0", + "acorn-walk": "^8.2.0" + }, "bin": { "vm2": "bin/vm2" }, @@ -9667,6 +9670,14 @@ "node": ">=6.0" } }, + "node_modules/vm2/node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/vscode-textmate": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", @@ -11907,10 +11918,9 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", - "dev": true + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==" }, "acorn-globals": { "version": "6.0.0", @@ -17433,9 +17443,20 @@ } }, "vm2": { - "version": "3.9.5", - "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.5.tgz", - "integrity": "sha512-LuCAHZN75H9tdrAiLFf030oW7nJV5xwNMuk1ymOZwopmuK3d2H4L1Kv4+GFHgarKiLfXXLFU+7LDABHnwOkWng==" + "version": "3.9.8", + "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.8.tgz", + "integrity": "sha512-/1PYg/BwdKzMPo8maOZ0heT7DLI0DAFTm7YQaz/Lim9oIaFZsJs3EdtalvXuBfZwczNwsYhju75NW4d6E+4q+w==", + "requires": { + "acorn": "^8.7.0", + "acorn-walk": "^8.2.0" + }, + "dependencies": { + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" + } + } }, "vscode-textmate": { "version": "5.2.0", From c260bb0c3b2cf25052098f6076aca7d9cb3b30ef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 24 Feb 2022 15:31:50 +0100 Subject: [PATCH 25/53] Bump shelljs from 0.8.4 to 0.8.5 in /scripts/cli (#1207) Bumps [shelljs](https://github.com/shelljs/shelljs) from 0.8.4 to 0.8.5. - [Release notes](https://github.com/shelljs/shelljs/releases) - [Changelog](https://github.com/shelljs/shelljs/blob/master/CHANGELOG.md) - [Commits](https://github.com/shelljs/shelljs/compare/v0.8.4...v0.8.5) --- updated-dependencies: - dependency-name: shelljs dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- scripts/cli/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/scripts/cli/package-lock.json b/scripts/cli/package-lock.json index cfa0c1f686..68a86f0748 100644 --- a/scripts/cli/package-lock.json +++ b/scripts/cli/package-lock.json @@ -8651,9 +8651,9 @@ } }, "node_modules/shelljs": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", - "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, "dependencies": { "glob": "^7.0.0", @@ -16701,9 +16701,9 @@ "dev": true }, "shelljs": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", - "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, "requires": { "glob": "^7.0.0", From 66b0ccd4fe32b219569f1554f3881347b7b3e503 Mon Sep 17 00:00:00 2001 From: Joel Moore <47923231+JMoore96@users.noreply.github.com> Date: Thu, 24 Feb 2022 11:22:07 -0400 Subject: [PATCH 26/53] MESH-1770/ Error `ConfidentialScopeClaimNotAllowed` is used for two different failure cases (#1214) * minor change to error message * updated documentation * minor change in identity_test Co-authored-by: Robert Gabriel Jakabosky --- pallets/identity/src/claims.rs | 4 ++-- pallets/identity/src/lib.rs | 1 + pallets/runtime/tests/src/identity_test.rs | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pallets/identity/src/claims.rs b/pallets/identity/src/claims.rs index ab429d37e2..c71f8eb2e8 100644 --- a/pallets/identity/src/claims.rs +++ b/pallets/identity/src/claims.rs @@ -322,8 +322,8 @@ impl Module { /// # Errors /// - 'ConfidentialScopeClaimNotAllowed` if : /// - Sender is not the issuer. That claim can be only added by your-self. - /// - You are not the owner of that CDD_ID. /// - If claim is not valid. + /// - 'InvalidCDDId' if you are not the owner of that CDD_ID. /// crate fn base_add_investor_uniqueness_claim( origin: T::Origin, @@ -348,7 +348,7 @@ impl Module { // Verify the owner of that CDD_ID. ensure!( Self::base_fetch_cdd(target, T::Moment::zero(), Some(*cdd_id)).is_some(), - Error::::ConfidentialScopeClaimNotAllowed + Error::::InvalidCDDId ); // Verify the confidential claim. diff --git a/pallets/identity/src/lib.rs b/pallets/identity/src/lib.rs index a7c764054a..453ba8d248 100644 --- a/pallets/identity/src/lib.rs +++ b/pallets/identity/src/lib.rs @@ -474,6 +474,7 @@ decl_module! { /// * `ClaimVariantNotAllowed` When origin trying to pass claim variant other than `InvestorUniqueness`. /// * `ConfidentialScopeClaimNotAllowed` When issuer is different from target or CDD_ID is invalid for given user. /// * `InvalidScopeClaim When proof is invalid. + /// * `InvalidCDDId` when you are not the owner of that CDD_ID. #[weight = ::WeightInfo::add_investor_uniqueness_claim()] pub fn add_investor_uniqueness_claim(origin, target: IdentityId, claim: Claim, proof: InvestorZKProofData, expiry: Option) -> DispatchResult { Self::base_add_investor_uniqueness_claim(origin, target, claim, None, proof.into(), expiry) diff --git a/pallets/runtime/tests/src/identity_test.rs b/pallets/runtime/tests/src/identity_test.rs index 976bc0aed9..5d43728b38 100644 --- a/pallets/runtime/tests/src/identity_test.rs +++ b/pallets/runtime/tests/src/identity_test.rs @@ -2027,7 +2027,7 @@ fn add_investor_uniqueness_claim_v2_data( // Missing CDD id. ( (user_no_cdd_id, scope.clone(), claim.clone(), proof), - Err(Error::ConfidentialScopeClaimNotAllowed.into()), + Err(Error::InvalidCDDId.into()), ), // Invalid ZKProof ( From 704cee7e280b4c6eeb37b43ee31425dc50953e37 Mon Sep 17 00:00:00 2001 From: CJP10 Date: Mon, 28 Feb 2022 05:16:29 -0500 Subject: [PATCH 27/53] New unit testing framework (#1198) * WIP * WIP * WIP * WIP * Update pallets/runtime/tests/exec_macro/src/lib.rs Co-authored-by: Mazdak Farrokhzad * Update pallets/runtime/tests/src/storage.rs Co-authored-by: Mazdak Farrokhzad * WIP * WIP * WIP Co-authored-by: Mazdak Farrokhzad --- Cargo.lock | 10 ++ Cargo.toml | 1 + pallets/runtime/tests/Cargo.toml | 3 +- pallets/runtime/tests/exec_macro/Cargo.toml | 13 +++ pallets/runtime/tests/exec_macro/src/lib.rs | 74 +++++++++++++ pallets/runtime/tests/src/sto_test.rs | 116 +++++++++++--------- pallets/runtime/tests/src/storage.rs | 99 ++++++++++++++++- 7 files changed, 260 insertions(+), 56 deletions(-) create mode 100644 pallets/runtime/tests/exec_macro/Cargo.toml create mode 100644 pallets/runtime/tests/exec_macro/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index a6bf8539ef..0de000c394 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5808,6 +5808,15 @@ dependencies = [ "substrate-test-runtime-client", ] +[[package]] +name = "polymesh-exec-macro" +version = "1.0.0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "polymesh-extensions" version = "0.1.0" @@ -6316,6 +6325,7 @@ dependencies = [ "parity-scale-codec 2.3.1", "parking_lot", "polymesh-common-utilities", + "polymesh-exec-macro", "polymesh-extensions", "polymesh-primitives", "polymesh-runtime-common", diff --git a/Cargo.toml b/Cargo.toml index e853e79bb3..fc6346600d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -141,6 +141,7 @@ members = [ "pallets/runtime/mainnet", "pallets/runtime/testnet", "pallets/runtime/tests", + "pallets/runtime/tests/exec_macro", "pallets/settlement", "pallets/staking", "pallets/staking/rpc", diff --git a/pallets/runtime/tests/Cargo.toml b/pallets/runtime/tests/Cargo.toml index 8f0bfcd29a..d50b441853 100644 --- a/pallets/runtime/tests/Cargo.toml +++ b/pallets/runtime/tests/Cargo.toml @@ -44,6 +44,7 @@ polymesh-primitives = { path = "../../../primitives", default-features = false } polymesh-runtime-common = { path = "../common", default-features = false } polymesh-runtime-develop = { path = "../develop" } polymesh-weights = { path = "../../weights", default-features = false } +polymesh-exec-macro = { path = "exec_macro" } # General serde = { version = "1.0.104", default-features = false } @@ -89,7 +90,7 @@ sp-consensus-babe = { version = "0.10.0-dev", default-features = false } sp-core = { version = "4.0.0-dev", default-features = false } sp-inherents = { version = "4.0.0-dev", default-features = false } sp-io = { version = "4.0.0-dev", default-features = false } -sp-npos-elections = { version = "4.0.0-dev", default-features = false} +sp-npos-elections = { version = "4.0.0-dev", default-features = false } sp-offchain = { version = "4.0.0-dev", default-features = false } sp-runtime = { version = "4.0.0-dev", default-features = false } sp-session = { version = "4.0.0-dev", default-features = false } diff --git a/pallets/runtime/tests/exec_macro/Cargo.toml b/pallets/runtime/tests/exec_macro/Cargo.toml new file mode 100644 index 0000000000..f97394852c --- /dev/null +++ b/pallets/runtime/tests/exec_macro/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "polymesh-exec-macro" +version = "1.0.0" +authors = ["Polymath"] +edition = "2018" + +[lib] +proc-macro = true + +[dependencies] +syn = { version = "1.0", features = ["full", "extra-traits"] } +quote = "1.0" +proc-macro2 = "1.0" diff --git a/pallets/runtime/tests/exec_macro/src/lib.rs b/pallets/runtime/tests/exec_macro/src/lib.rs new file mode 100644 index 0000000000..c06c40ce02 --- /dev/null +++ b/pallets/runtime/tests/exec_macro/src/lib.rs @@ -0,0 +1,74 @@ +use proc_macro::TokenStream; +use proc_macro2::Span; +use quote::quote; +use std::iter::FromIterator; +use syn::{ + parenthesized, + parse::{Parse, ParseStream, Result}, + parse_macro_input, + punctuated::Punctuated, + Expr, Ident, Token, +}; + +#[derive(Debug)] +struct Exec { + pallet: Ident, + extrinsic: Ident, + origin: Expr, + params: Punctuated, +} + +impl Parse for Exec { + fn parse(input: ParseStream) -> Result { + let pallet: Ident = input.parse()?; + input.parse::()?; + let extrinsic: Ident = input.parse()?; + + let paren_content; + parenthesized!(paren_content in input); + let mut params = paren_content + .parse_terminated::(Expr::parse)? + .into_iter(); + let origin = params.next().unwrap(); + let params = Punctuated::from_iter(params); + + Ok(Exec { + pallet, + extrinsic, + origin, + params, + }) + } +} + +/// Convert a direct module call to an extrinsic execution. +/// Syntax: `::(,*)` +#[proc_macro] +pub fn exec(item: TokenStream) -> TokenStream { + let Exec { + pallet, + extrinsic, + origin, + params, + } = parse_macro_input!(item as Exec); + + let call_variant = Ident::new( + &format!("new_call_variant_{}", extrinsic.to_string()), + Span::call_site(), + ); + + let token_stream = quote! { + if *crate::storage::INTEGRATION_TEST { + crate::storage::exec( + #origin, + >::Call::#call_variant( + #params + ) + ) + } else { + #pallet::#extrinsic(#origin, #params) + } + }; + + TokenStream::from(token_stream) +} diff --git a/pallets/runtime/tests/src/sto_test.rs b/pallets/runtime/tests/src/sto_test.rs index 5e28aad8ec..c1819ea1b9 100644 --- a/pallets/runtime/tests/src/sto_test.rs +++ b/pallets/runtime/tests/src/sto_test.rs @@ -1,5 +1,6 @@ use super::{ asset_test::{allow_all_transfers, max_len_bytes}, + exec_noop, exec_ok, storage::{make_account_with_portfolio, TestStorage, User}, ExtBuilder, }; @@ -20,7 +21,7 @@ use test_client::AccountKeyring; type Origin = ::Origin; type Asset = asset::Module; -type STO = pallet_sto::Module; +type Sto = pallet_sto::Module; type Error = pallet_sto::Error; type EAError = pallet_external_agents::Error; type PortfolioError = pallet_portfolio::Error; @@ -150,7 +151,7 @@ fn raise_happy_path() { // Register a venue let venue_counter = Settlement::venue_counter(); let instruction_id = Settlement::instruction_counter(); - assert_ok!(Settlement::create_venue( + exec_ok!(Settlement::create_venue( alice.origin(), VenueDetails::default(), vec![AccountKeyring::Alice.to_account_id()], @@ -164,9 +165,9 @@ fn raise_happy_path() { let bob_init_raise = Asset::balance_of(&raise_ticker, bob.did); // Alice starts a fundraiser - let fundraiser_id = STO::fundraiser_count(offering_ticker); + let fundraiser_id = Sto::fundraiser_count(offering_ticker); let fundraiser_name: FundraiserName = max_len_bytes(0); - assert_ok!(STO::create_fundraiser( + exec_ok!(Sto::create_fundraiser( alice.origin(), alice_portfolio, offering_ticker, @@ -174,18 +175,18 @@ fn raise_happy_path() { raise_ticker, vec![PriceTier { total: 1_000_000u128, - price: 1_000_000u128 + price: 1_000_000u128, }], venue_counter, None, None, 2, - fundraiser_name.clone() + fundraiser_name.clone(), )); let check_fundraiser = |remaining| { assert_eq!( - STO::fundraisers(offering_ticker, fundraiser_id), + Sto::fundraisers(offering_ticker, fundraiser_id), Some(Fundraiser { creator: alice.did, offering_portfolio: alice_portfolio, @@ -222,38 +223,45 @@ fn raise_happy_path() { ); assert_eq!(Asset::balance_of(&raise_ticker, bob.did), bob_init_raise); assert_eq!( - STO::fundraiser_name(offering_ticker, fundraiser_id), + Sto::fundraiser_name(offering_ticker, fundraiser_id), fundraiser_name ); - let sto_invest = |purchase_amount, max_price| { - STO::invest( - bob.origin(), - bob_portfolio, - bob_portfolio, - offering_ticker, - fundraiser_id, - purchase_amount, - max_price, - None, - ) + let sto_invest = |purchase_amount, max_price, err: Error| { + exec_noop!( + Sto::invest( + bob.origin(), + bob_portfolio, + bob_portfolio, + offering_ticker, + fundraiser_id, + purchase_amount, + max_price, + None, + ), + err + ); }; // Investment fails if the minimum investment amount is not met - assert_noop!( - sto_invest(1, Some(1_000_000u128)), - Error::InvestmentAmountTooLow - ); + sto_invest(1, Some(1_000_000u128), Error::InvestmentAmountTooLow); // Investment fails if the order is not filled - assert_noop!( - sto_invest(1_000_001u128, Some(1_000_000u128)), - Error::InsufficientTokensRemaining + sto_invest( + 1_000_001u128, + Some(1_000_000u128), + Error::InsufficientTokensRemaining, ); // Investment fails if the maximum price is breached - assert_noop!( - sto_invest(amount.into(), Some(999_999u128)), - Error::MaxPriceExceeded - ); + sto_invest(amount.into(), Some(999_999u128), Error::MaxPriceExceeded); // Bob invests in Alice's fundraiser - assert_ok!(sto_invest(amount.into(), Some(1_000_000u128))); + exec_ok!(Sto::invest( + bob.origin(), + bob_portfolio, + bob_portfolio, + offering_ticker, + fundraiser_id, + amount.into(), + Some(1_000_000u128), + None, + )); check_fundraiser(1_000_000u128 - amount); assert_eq!( Some(Settlement::instruction_counter()), @@ -295,7 +303,7 @@ fn raise_unhappy_path() { provide_scope_claim_to_multiple_parties(&[alice.did, bob.did], raise_ticker, eve); let fundraise = |tiers, venue, name| { - STO::create_fundraiser( + Sto::create_fundraiser( alice.origin(), alice_portfolio, offering_ticker, @@ -401,7 +409,7 @@ fn raise_unhappy_path() { // Invalid time window assert_noop!( - STO::create_fundraiser( + Sto::create_fundraiser( alice.origin(), alice_portfolio, offering_ticker, @@ -448,9 +456,9 @@ fn zero_price_sto() { let bob_init_balance = Asset::balance_of(&ticker, bob.did); // Alice starts a fundraiser - let fundraiser_id = STO::fundraiser_count(ticker); + let fundraiser_id = Sto::fundraiser_count(ticker); let fundraiser_name = FundraiserName::from(vec![1]); - assert_ok!(STO::create_fundraiser( + assert_ok!(Sto::create_fundraiser( alice.origin(), alice_portfolio, ticker, @@ -471,7 +479,7 @@ fn zero_price_sto() { assert_eq!(Asset::balance_of(&ticker, bob.did), bob_init_balance); // Bob invests in Alice's zero price sto - assert_ok!(STO::invest( + assert_ok!(Sto::invest( bob.origin(), bob_portfolio, bob_portfolio, @@ -510,7 +518,7 @@ fn invalid_fundraiser() { )); let create_fundraiser_fn = |tiers| { - STO::create_fundraiser( + Sto::create_fundraiser( alice.origin(), alice_portfolio, offering_ticker, @@ -571,8 +579,8 @@ fn basic_fundraiser() -> (FundraiserId, RaiseContext) { vec![AccountKeyring::Alice.to_account_id()], VenueType::Sto )); - let fundraiser_id = STO::fundraiser_count(context.offering_ticker); - assert_ok!(STO::create_fundraiser( + let fundraiser_id = Sto::fundraiser_count(context.offering_ticker); + assert_ok!(Sto::create_fundraiser( context.alice.origin(), context.alice_portfolio, context.offering_ticker, @@ -600,7 +608,7 @@ fn fundraiser_expired() { }, ) = basic_fundraiser(); - assert_ok!(STO::modify_fundraiser_window( + assert_ok!(Sto::modify_fundraiser_window( alice.origin(), offering_ticker, fundraiser_id, @@ -611,7 +619,7 @@ fn fundraiser_expired() { Timestamp::set_timestamp(Timestamp::get() + 2); assert_noop!( - STO::modify_fundraiser_window( + Sto::modify_fundraiser_window( alice.origin(), offering_ticker, fundraiser_id, @@ -622,7 +630,7 @@ fn fundraiser_expired() { ); assert_noop!( - STO::invest( + Sto::invest( bob.origin(), bob_portfolio, bob_portfolio, @@ -649,7 +657,7 @@ fn modifying_fundraiser_window() { // Wrong ticker assert_noop!( - STO::modify_fundraiser_window( + Sto::modify_fundraiser_window( alice.origin(), raise_ticker.unwrap(), fundraiser_id, @@ -661,7 +669,7 @@ fn modifying_fundraiser_window() { // Bad fundraiser id assert_noop!( - STO::modify_fundraiser_window( + Sto::modify_fundraiser_window( alice.origin(), offering_ticker, FundraiserId(u64::MAX), @@ -672,7 +680,7 @@ fn modifying_fundraiser_window() { ); let bad_modify_fundraiser_window = |start, end| { - STO::modify_fundraiser_window(alice.origin(), offering_ticker, fundraiser_id, start, end) + Sto::modify_fundraiser_window(alice.origin(), offering_ticker, fundraiser_id, start, end) }; assert_ok!(bad_modify_fundraiser_window(0, None)); @@ -704,23 +712,23 @@ fn freeze_unfreeze_fundraiser() { // Wrong ticker assert_noop!( - STO::freeze_fundraiser(alice.origin(), raise_ticker.unwrap(), fundraiser_id,), + Sto::freeze_fundraiser(alice.origin(), raise_ticker.unwrap(), fundraiser_id,), Error::FundraiserNotFound ); // Bad fundraiser id assert_noop!( - STO::freeze_fundraiser(alice.origin(), offering_ticker, FundraiserId(u64::MAX)), + Sto::freeze_fundraiser(alice.origin(), offering_ticker, FundraiserId(u64::MAX)), Error::FundraiserNotFound ); - assert_ok!(STO::freeze_fundraiser( + assert_ok!(Sto::freeze_fundraiser( alice.origin(), offering_ticker, fundraiser_id, )); - assert_ok!(STO::unfreeze_fundraiser( + assert_ok!(Sto::unfreeze_fundraiser( alice.origin(), offering_ticker, fundraiser_id, @@ -741,26 +749,26 @@ fn stop_fundraiser() { // Wrong ticker assert_noop!( - STO::stop(alice.origin(), raise_ticker.unwrap(), fundraiser_id,), + Sto::stop(alice.origin(), raise_ticker.unwrap(), fundraiser_id,), Error::FundraiserNotFound ); // Bad fundraiser id assert_noop!( - STO::stop(alice.origin(), offering_ticker, FundraiserId(u64::MAX)), + Sto::stop(alice.origin(), offering_ticker, FundraiserId(u64::MAX)), Error::FundraiserNotFound ); // Unauthorized assert_noop!( - STO::stop(bob.origin(), offering_ticker, fundraiser_id), + Sto::stop(bob.origin(), offering_ticker, fundraiser_id), EAError::UnauthorizedAgent ); - assert_ok!(STO::stop(alice.origin(), offering_ticker, fundraiser_id,)); + assert_ok!(Sto::stop(alice.origin(), offering_ticker, fundraiser_id,)); assert_noop!( - STO::stop(alice.origin(), offering_ticker, fundraiser_id,), + Sto::stop(alice.origin(), offering_ticker, fundraiser_id,), Error::FundraiserClosed ); } diff --git a/pallets/runtime/tests/src/storage.rs b/pallets/runtime/tests/src/storage.rs index 29da1fc030..786c3d6e00 100644 --- a/pallets/runtime/tests/src/storage.rs +++ b/pallets/runtime/tests/src/storage.rs @@ -14,7 +14,8 @@ use frame_support::{ }, StorageDoubleMap, }; -use frame_system::EnsureRoot; +use frame_system::{EnsureRoot, RawOrigin}; +use lazy_static::lazy_static; use pallet_asset::checkpoint as pallet_checkpoint; use pallet_balances as balances; use pallet_committee as committee; @@ -52,6 +53,7 @@ use sp_core::{ sr25519::Pair, H256, }; +use sp_runtime::generic::Era; use sp_runtime::{ create_runtime_str, curve::PiecewiseLinear, @@ -73,8 +75,41 @@ use std::cell::RefCell; use std::convert::From; use test_client::AccountKeyring; +lazy_static! { + pub static ref INTEGRATION_TEST: bool = std::env::var("INTEGRATION_TEST") + .map(|var| var.parse().unwrap_or(false)) + .unwrap_or(false); +} + +#[macro_export] +macro_rules! exec_ok { + ( $x:expr $(,)? ) => { + frame_support::assert_ok!(polymesh_exec_macro::exec!($x)) + }; + ( $x:expr, $y:expr $(,)? ) => { + frame_support::assert_ok!(polymesh_exec_macro::exec!($x), $y) + }; +} + +#[macro_export] +macro_rules! exec_noop { + ( + $x:expr, + $y:expr $(,)? + ) => { + // Use `assert_err` when running with `INTEGRATION_TEST`. + // `assert_noop` returns false positives when using full extrinsic execution. + if *crate::storage::INTEGRATION_TEST { + frame_support::assert_err!(polymesh_exec_macro::exec!($x), $y); + } else { + frame_support::assert_noop!(polymesh_exec_macro::exec!($x), $y); + } + }; +} + // 1 in 4 blocks (on average, not counting collisions) will be primary babe blocks. pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4); +const GENESIS_HASH: [u8; 32] = [69u8; 32]; pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("test-storage"), impl_name: create_runtime_str!("test-storage"), @@ -949,3 +984,65 @@ macro_rules! assert_event_doesnt_exist { })); }; } + +pub fn exec>(origin: Origin, call: C) -> DispatchResult { + let origin: Result, Origin> = origin.into(); + let signed = match origin.unwrap() { + RawOrigin::Signed(acc) => { + let info = frame_system::Account::::get(&acc); + Some((acc, signed_extra(info.nonce))) + } + _ => None, + }; + Executive::apply_extrinsic(sign(CheckedExtrinsic { + signed, + function: call.into(), + })) + .unwrap() +} + +/// Sign given `CheckedExtrinsic` returning an `UncheckedExtrinsic` +/// usable for execution. +fn sign(xt: CheckedExtrinsic) -> UncheckedExtrinsic { + let CheckedExtrinsic { + signed, function, .. + } = xt; + UncheckedExtrinsic { + signature: signed.map(|(signed, extra)| { + let payload = ( + &function, + extra.clone(), + VERSION.spec_version, + VERSION.transaction_version, + GENESIS_HASH, + GENESIS_HASH, + ); + let key = AccountKeyring::from_account_id(&signed).unwrap(); + let signature = payload + .using_encoded(|b| { + if b.len() > 256 { + key.sign(&sp_io::hashing::blake2_256(b)) + } else { + key.sign(b) + } + }) + .into(); + (Address::Id(signed), signature, extra) + }), + function, + } +} + +/// Returns transaction extra. +fn signed_extra(nonce: Index) -> SignedExtra { + ( + frame_system::CheckSpecVersion::new(), + frame_system::CheckTxVersion::new(), + frame_system::CheckGenesis::new(), + frame_system::CheckEra::from(Era::mortal(256, 0)), + frame_system::CheckNonce::from(nonce), + polymesh_extensions::CheckWeight::new(), + pallet_transaction_payment::ChargeTransactionPayment::from(0), + pallet_permissions::StoreCallMetadata::new(), + ) +} From efe77ab383a51405ecd432761636e4bdfa9370ae Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Fri, 4 Mar 2022 19:55:53 +0800 Subject: [PATCH 28/53] Bump polkadot versions to fix schema issue. (#1219) --- polymesh_schema.json | 3 +- scripts/cli/package-lock.json | 1453 +++++++++++++-------------------- scripts/cli/package.json | 4 +- 3 files changed, 556 insertions(+), 904 deletions(-) diff --git a/polymesh_schema.json b/polymesh_schema.json index 10437a49df..8c9d92bace 100644 --- a/polymesh_schema.json +++ b/polymesh_schema.json @@ -431,8 +431,7 @@ "Custom": "Vec" } }, - "InvestorZKProofData": "Lookup336", - "Lookup336": { + "InvestorZKProofData": { "r": "CompressedRistretto", "s": "Scalar" }, diff --git a/scripts/cli/package-lock.json b/scripts/cli/package-lock.json index 68a86f0748..99383dc6ae 100644 --- a/scripts/cli/package-lock.json +++ b/scripts/cli/package-lock.json @@ -10,7 +10,7 @@ "license": "UNLICENSED", "dependencies": { "@babel/plugin-proposal-class-properties": "^7.16.7", - "@polkadot/api": "7.6.1", + "@polkadot/api": "7.7.1", "@polkadot/util": "^8.3.3", "@polkadot/util-crypto": "^8.3.3", "@types/sqlite3": "^3.1.7", @@ -38,7 +38,7 @@ }, "devDependencies": { "@babel/plugin-transform-modules-commonjs": "7.14.5", - "@polkadot/typegen": "7.6.1", + "@polkadot/typegen": "7.7.1", "@types/chai": "4.2.15", "@types/clear": "0.1.1", "@types/figlet": "1.2.1", @@ -55,6 +55,17 @@ "typescript": "^4.3.5" } }, + "node_modules/@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@babel/code-frame": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", @@ -67,33 +78,33 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", + "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz", - "integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==", - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.0", - "@babel/helper-module-transforms": "^7.15.0", - "@babel/helpers": "^7.14.8", - "@babel/parser": "^7.15.0", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.15.0", - "@babel/types": "^7.15.0", + "version": "7.17.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.5.tgz", + "integrity": "sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==", + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.17.2", + "@babel/parser": "^7.17.3", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" @@ -132,20 +143,12 @@ "semver": "bin/semver.js" } }, - "node_modules/@babel/core/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@babel/generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", - "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", + "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", "dependencies": { - "@babel/types": "^7.16.8", + "@babel/types": "^7.17.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, @@ -173,13 +176,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", + "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", "dependencies": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", + "@babel/compat-data": "^7.16.4", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", "semver": "^6.3.0" }, "engines": { @@ -275,29 +278,29 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", - "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz", + "integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==", "dependencies": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6" + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -338,11 +341,11 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", + "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -368,21 +371,21 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.15.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.3.tgz", - "integrity": "sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g==", + "version": "7.17.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", + "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", "dependencies": { - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.15.0", - "@babel/types": "^7.15.0" + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.0", + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -458,9 +461,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.16.12", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz", - "integrity": "sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", + "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", "bin": { "parser": "bin/babel-parser.js" }, @@ -664,15 +667,15 @@ } }, "node_modules/@babel/register": { - "version": "7.16.9", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.16.9.tgz", - "integrity": "sha512-jJ72wcghdRIlENfvALcyODhNoGE5j75cYHdC+aQMh6cU/P86tiiXTp9XYZct1UxUMo/4+BgQRyNZEGx0KWGS+g==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.17.0.tgz", + "integrity": "sha512-UNZsMAZ7uKoGHo1HlEXfteEOYssf64n/PNLHGqOKq/bgYcu/4LrQWAHJwSCb3BRZK8Hi5gkJdRcwrGTO2wtRCg==", "dev": true, "dependencies": { "clone-deep": "^4.0.1", "find-cache-dir": "^2.0.0", "make-dir": "^2.1.0", - "pirates": "^4.0.0", + "pirates": "^4.0.5", "source-map-support": "^0.5.16" }, "engines": { @@ -683,9 +686,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", - "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", + "version": "7.17.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.2.tgz", + "integrity": "sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw==", "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -707,18 +710,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", - "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", "dependencies": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.8", + "@babel/generator": "^7.17.3", "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-function-name": "^7.16.7", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.16.10", - "@babel/types": "^7.16.8", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -748,9 +751,9 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/@babel/types": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", - "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "dependencies": { "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" @@ -1133,6 +1136,28 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@noble/hashes": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-0.5.7.tgz", @@ -1446,23 +1471,23 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/@polkadot/api": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-7.6.1.tgz", - "integrity": "sha512-0VvWn8TIKX3o922ZjomsJEkysica1ScnjNYBG3+801gWG3WbCI+IdzdqazTkIMZL8r8HipmA4cjfS3Tdk+R9eg==", - "dependencies": { - "@babel/runtime": "^7.16.7", - "@polkadot/api-augment": "7.6.1", - "@polkadot/api-base": "7.6.1", - "@polkadot/api-derive": "7.6.1", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-7.7.1.tgz", + "integrity": "sha512-wWwtVgRz1Lc7HY0evRnzKZNaRBIo818V16fZ+S73zfIMxvDmO2zbfui9scIlpi4WwL2K3YQbznOwBlWeHH92LA==", + "dependencies": { + "@babel/runtime": "^7.17.0", + "@polkadot/api-augment": "7.7.1", + "@polkadot/api-base": "7.7.1", + "@polkadot/api-derive": "7.7.1", "@polkadot/keyring": "^8.3.3", - "@polkadot/rpc-augment": "7.6.1", - "@polkadot/rpc-core": "7.6.1", - "@polkadot/rpc-provider": "7.6.1", - "@polkadot/types": "7.6.1", - "@polkadot/types-augment": "7.6.1", - "@polkadot/types-codec": "7.6.1", - "@polkadot/types-create": "7.6.1", - "@polkadot/types-known": "7.6.1", + "@polkadot/rpc-augment": "7.7.1", + "@polkadot/rpc-core": "7.7.1", + "@polkadot/rpc-provider": "7.7.1", + "@polkadot/types": "7.7.1", + "@polkadot/types-augment": "7.7.1", + "@polkadot/types-codec": "7.7.1", + "@polkadot/types-create": "7.7.1", + "@polkadot/types-known": "7.7.1", "@polkadot/util": "^8.3.3", "@polkadot/util-crypto": "^8.3.3", "eventemitter3": "^4.0.7", @@ -1473,16 +1498,16 @@ } }, "node_modules/@polkadot/api-augment": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-7.6.1.tgz", - "integrity": "sha512-elkAVDzkcW909phGQNOM2M2ksfnjNeY67EnwIB0xBdFlfM7mVPdxqnAWHrBwbIsD3TdWzxtrNzWzyi7hvILt+A==", - "dependencies": { - "@babel/runtime": "^7.16.7", - "@polkadot/api-base": "7.6.1", - "@polkadot/rpc-augment": "7.6.1", - "@polkadot/types": "7.6.1", - "@polkadot/types-augment": "7.6.1", - "@polkadot/types-codec": "7.6.1", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-7.7.1.tgz", + "integrity": "sha512-M8c38haMh39K2pg3wRE4azpEr3hkaKV8dTlXG6whDmpDsPGTLa/wE9rCUzduRXTLpUZYBUCH529+bJ5LVwmSNQ==", + "dependencies": { + "@babel/runtime": "^7.17.0", + "@polkadot/api-base": "7.7.1", + "@polkadot/rpc-augment": "7.7.1", + "@polkadot/types": "7.7.1", + "@polkadot/types-augment": "7.7.1", + "@polkadot/types-codec": "7.7.1", "@polkadot/util": "^8.3.3" }, "engines": { @@ -1490,13 +1515,13 @@ } }, "node_modules/@polkadot/api-base": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-base/-/api-base-7.6.1.tgz", - "integrity": "sha512-HbbbQSzTc5W0QtV/5JMOHbINlrHeZ5w5Cdo2jmIkSZT8w8MxhnupzdvkjIX9B9F4/dFa0RdaP/J1FnLNFlUU1w==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-base/-/api-base-7.7.1.tgz", + "integrity": "sha512-gzgETQrgjMOqcQj7dwsiqVxmlUQEMH89ome0qargrJWiwbFUeceOlvt47E/WGG6/1oWUl3SMZcNRLYANME93ag==", "dependencies": { - "@babel/runtime": "^7.16.7", - "@polkadot/rpc-core": "7.6.1", - "@polkadot/types": "7.6.1", + "@babel/runtime": "^7.17.0", + "@polkadot/rpc-core": "7.7.1", + "@polkadot/types": "7.7.1", "@polkadot/util": "^8.3.3", "rxjs": "^7.5.2" }, @@ -1505,17 +1530,17 @@ } }, "node_modules/@polkadot/api-derive": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-7.6.1.tgz", - "integrity": "sha512-cRoc1LTTwvEH9QtHIp7vWYn34dczuqg4xQSbZn/IqEzvmcpU7wJC3gLfEOCrqTIFDofPVyBOd7Vv3gjuey/82g==", - "dependencies": { - "@babel/runtime": "^7.16.7", - "@polkadot/api": "7.6.1", - "@polkadot/api-augment": "7.6.1", - "@polkadot/api-base": "7.6.1", - "@polkadot/rpc-core": "7.6.1", - "@polkadot/types": "7.6.1", - "@polkadot/types-codec": "7.6.1", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-7.7.1.tgz", + "integrity": "sha512-1dBj+vtVk+XAcvwC6BE+eUdVnbcBteWDXzBxrIuzT8NlkAReIq+74+bOEZH7GDcGMorTR5s+Z3FZD1ElmUiUNQ==", + "dependencies": { + "@babel/runtime": "^7.17.0", + "@polkadot/api": "7.7.1", + "@polkadot/api-augment": "7.7.1", + "@polkadot/api-base": "7.7.1", + "@polkadot/rpc-core": "7.7.1", + "@polkadot/types": "7.7.1", + "@polkadot/types-codec": "7.7.1", "@polkadot/util": "^8.3.3", "@polkadot/util-crypto": "^8.3.3", "rxjs": "^7.5.2" @@ -1554,14 +1579,14 @@ } }, "node_modules/@polkadot/rpc-augment": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-7.6.1.tgz", - "integrity": "sha512-lNeTS8Ma/0sAk3pvGxliQOkE016WZKXyS5uQWtcF2CRn2rn265Fb4I29n3KjTL8CRYtafvH6IRS0DSkKgbnL3w==", - "dependencies": { - "@babel/runtime": "^7.16.7", - "@polkadot/rpc-core": "7.6.1", - "@polkadot/types": "7.6.1", - "@polkadot/types-codec": "7.6.1", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-7.7.1.tgz", + "integrity": "sha512-Hwa6qjxHSuzjyYxa2gOpIoN0PWhWDLEOxpHFZxwNoCkmGtcIpNwWOtK1chZWEl9Zd1Yq+JLIEoimNN+2ok/3cA==", + "dependencies": { + "@babel/runtime": "^7.17.0", + "@polkadot/rpc-core": "7.7.1", + "@polkadot/types": "7.7.1", + "@polkadot/types-codec": "7.7.1", "@polkadot/util": "^8.3.3" }, "engines": { @@ -1569,14 +1594,14 @@ } }, "node_modules/@polkadot/rpc-core": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-7.6.1.tgz", - "integrity": "sha512-xq/GzUeBu1GsP4ngEYQeDrVnsullDBy/22yUY/ahNjkgAjXeOndrBFis+4lBiiksVQMgYZEzaHv89E0aCOBvAA==", - "dependencies": { - "@babel/runtime": "^7.16.7", - "@polkadot/rpc-augment": "7.6.1", - "@polkadot/rpc-provider": "7.6.1", - "@polkadot/types": "7.6.1", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-7.7.1.tgz", + "integrity": "sha512-vJuuTbmGKEcjJY3JIjMirLESVjnHBGajtTaLtlcwBcp8Jgj/fBi+FoL3gcpZS4BR87/qVe35aoNO2hDhU9DUJA==", + "dependencies": { + "@babel/runtime": "^7.17.0", + "@polkadot/rpc-augment": "7.7.1", + "@polkadot/rpc-provider": "7.7.1", + "@polkadot/types": "7.7.1", "@polkadot/util": "^8.3.3", "rxjs": "^7.5.2" }, @@ -1585,14 +1610,14 @@ } }, "node_modules/@polkadot/rpc-provider": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-7.6.1.tgz", - "integrity": "sha512-jevBGp/n16ra+Y+JV8nnNRTtKPU1Oo3nBiyMhUla6crWLjMnLAYvcyteRq27aBmU3Olh4n/0xDVNCvTxfEghxQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-7.7.1.tgz", + "integrity": "sha512-PPAMjQgV4pA/l+L+mk93dvmzwMA2tZSzVf0DjsldD0vi5Oydo0Sw8I4YEsueTnHme0PadIZXUzWEonG81klAlw==", "dependencies": { - "@babel/runtime": "^7.16.7", + "@babel/runtime": "^7.17.0", "@polkadot/keyring": "^8.3.3", - "@polkadot/types": "7.6.1", - "@polkadot/types-support": "7.6.1", + "@polkadot/types": "7.7.1", + "@polkadot/types-support": "7.7.1", "@polkadot/util": "^8.3.3", "@polkadot/util-crypto": "^8.3.3", "@polkadot/x-fetch": "^8.3.3", @@ -1600,41 +1625,41 @@ "@polkadot/x-ws": "^8.3.3", "eventemitter3": "^4.0.7", "mock-socket": "^9.1.2", - "nock": "^13.2.2" + "nock": "^13.2.4" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/rpc-provider/node_modules/@polkadot/x-global": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", - "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.4.1.tgz", + "integrity": "sha512-MQs89LKQrJwiXjV7dY2kDOPNaiWrwaQ/Fzg93ycB2xMCclRV1jRFRhnhTPJ8Ao79lhCCoazd7pXIyFgfifxdqg==", "dependencies": { - "@babel/runtime": "^7.16.7" + "@babel/runtime": "^7.17.2" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/typegen": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/typegen/-/typegen-7.6.1.tgz", - "integrity": "sha512-RCtpQWTmPMTHFbK5AXTy7Ncgx2aj4FhxnYFZxmpm2bZpXsf66mTKDu2vQiKN2vwPtjG8WnxuyB1fqnyGtebHPg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.16.12", - "@babel/register": "^7.16.9", - "@babel/runtime": "^7.16.7", - "@polkadot/api": "7.6.1", - "@polkadot/api-augment": "7.6.1", - "@polkadot/rpc-augment": "7.6.1", - "@polkadot/rpc-provider": "7.6.1", - "@polkadot/types": "7.6.1", - "@polkadot/types-augment": "7.6.1", - "@polkadot/types-codec": "7.6.1", - "@polkadot/types-create": "7.6.1", - "@polkadot/types-support": "7.6.1", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/typegen/-/typegen-7.7.1.tgz", + "integrity": "sha512-uzyau1I6vrMiejTIXLSvmJ5ZTLstUKlfmevHxFO1Pf6x56vRed1zr8u5Y5TmjF5FQkIdh0d6KpZoWqEcHa4AJQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.17.0", + "@babel/register": "^7.17.0", + "@babel/runtime": "^7.17.0", + "@polkadot/api": "7.7.1", + "@polkadot/api-augment": "7.7.1", + "@polkadot/rpc-augment": "7.7.1", + "@polkadot/rpc-provider": "7.7.1", + "@polkadot/types": "7.7.1", + "@polkadot/types-augment": "7.7.1", + "@polkadot/types-codec": "7.7.1", + "@polkadot/types-create": "7.7.1", + "@polkadot/types-support": "7.7.1", "@polkadot/util": "^8.3.3", "@polkadot/x-ws": "^8.3.3", "handlebars": "^4.7.7", @@ -1652,231 +1677,16 @@ "node": ">=14.0.0" } }, - "node_modules/@polkadot/typegen/node_modules/@babel/compat-data": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz", - "integrity": "sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@polkadot/typegen/node_modules/@babel/core": { - "version": "7.16.12", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", - "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helpers": "^7.16.7", - "@babel/parser": "^7.16.12", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.10", - "@babel/types": "^7.16.8", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@polkadot/typegen/node_modules/@babel/helper-compilation-targets": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@polkadot/typegen/node_modules/@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@polkadot/typegen/node_modules/@babel/helper-module-transforms": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", - "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@polkadot/typegen/node_modules/@babel/helper-simple-access": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@polkadot/typegen/node_modules/@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@polkadot/typegen/node_modules/@babel/helpers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz", - "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@polkadot/typegen/node_modules/browserslist": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/@polkadot/typegen/node_modules/caniuse-lite": { - "version": "1.0.30001303", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001303.tgz", - "integrity": "sha512-/Mqc1oESndUNszJP0kx0UaQU9kEv9nNtJ7Kn8AdA0mNnH8eR1cj0kG+NbNuC1Wq/b21eA8prhKRA3bbkjONegQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/@polkadot/typegen/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@polkadot/typegen/node_modules/electron-to-chromium": { - "version": "1.4.56", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.56.tgz", - "integrity": "sha512-0k/S0FQqRRpJbX7YUjwCcLZ8D42RqGKtaiq90adXBOYgTIWwLA/g3toO8k9yEpqU8iC4QyaWYYWSTBIna8WV4g==", - "dev": true - }, - "node_modules/@polkadot/typegen/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@polkadot/typegen/node_modules/node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", - "dev": true - }, - "node_modules/@polkadot/typegen/node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/@polkadot/typegen/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@polkadot/typegen/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@polkadot/types": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-7.6.1.tgz", - "integrity": "sha512-4GotmyT6h5n2qpgqPKqzVzgZKuPS9fNMeQBBbhxZxjyFmSTYtIqQeyqFw1bgIGcsZBH81WK7yE1U221l8gmj1Q==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-7.7.1.tgz", + "integrity": "sha512-koJfoKvSiwpZKkHZrOpelb+JxCf+0iGzVOt0hj0plOK5oOOSJd0Elpy1dc8QQEJUC3V/pNdAGTsV6dvqi8rnAg==", "dependencies": { - "@babel/runtime": "^7.16.7", + "@babel/runtime": "^7.17.0", "@polkadot/keyring": "^8.3.3", - "@polkadot/types-augment": "7.6.1", - "@polkadot/types-codec": "7.6.1", - "@polkadot/types-create": "7.6.1", + "@polkadot/types-augment": "7.7.1", + "@polkadot/types-codec": "7.7.1", + "@polkadot/types-create": "7.7.1", "@polkadot/util": "^8.3.3", "@polkadot/util-crypto": "^8.3.3", "rxjs": "^7.5.2" @@ -1886,13 +1696,13 @@ } }, "node_modules/@polkadot/types-augment": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-7.6.1.tgz", - "integrity": "sha512-OLTVgMlSiZy37eXhUa6zYRHBUK7eJ2opovAKYpk+S8biA4nrq7LUXis2MnCP9C1TvsQozPlZ5q0M89WRVw96TA==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-7.7.1.tgz", + "integrity": "sha512-NsPJgD85UUIOao2rtY9jCzt2+MdZsn2qhBSphnqQqS3yOQKoonaHojCsRKt39raQ0UNST+At5zL1+HdcKP53EQ==", "dependencies": { - "@babel/runtime": "^7.16.7", - "@polkadot/types": "7.6.1", - "@polkadot/types-codec": "7.6.1", + "@babel/runtime": "^7.17.0", + "@polkadot/types": "7.7.1", + "@polkadot/types-codec": "7.7.1", "@polkadot/util": "^8.3.3" }, "engines": { @@ -1900,11 +1710,11 @@ } }, "node_modules/@polkadot/types-codec": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-7.6.1.tgz", - "integrity": "sha512-Zm4oQJK4BeB3reElKCVfJm1tzVK2O+hfS9QlKJAHy+kYwPB20o0UYv1d0K1WOZedSmVIaoW/diOaxMePV1S55Q==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-7.7.1.tgz", + "integrity": "sha512-NqxQGpfagc+51TGBo8lrmEJox3cZwx6lSeoPnGUqQBcOhqjaJ8EPEAaFHc0TTc22/sLs1qYqBc+cz+9UXKAEOg==", "dependencies": { - "@babel/runtime": "^7.16.7", + "@babel/runtime": "^7.17.0", "@polkadot/util": "^8.3.3" }, "engines": { @@ -1912,12 +1722,12 @@ } }, "node_modules/@polkadot/types-create": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-7.6.1.tgz", - "integrity": "sha512-vGUT5O3/bYpP/NOa/5TV8aCDoDE8DbeRSiykzQ8ceOrnmB4VrlJ+L4zklyiuRdAFXPYmi+7S9Dzr/IrNrf72wg==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-7.7.1.tgz", + "integrity": "sha512-T7iyu0u1Ji3ErA3YcY+WuI83TMcnvhTYJXs+OmGksWa64MQAiWs2pkYNmS4ieArUW3vsel5nv9noBzyl2MAocQ==", "dependencies": { - "@babel/runtime": "^7.16.7", - "@polkadot/types-codec": "7.6.1", + "@babel/runtime": "^7.17.0", + "@polkadot/types-codec": "7.7.1", "@polkadot/util": "^8.3.3" }, "engines": { @@ -1925,15 +1735,15 @@ } }, "node_modules/@polkadot/types-known": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-7.6.1.tgz", - "integrity": "sha512-qViRhHpnDNxS4lZhF7suUvevpvH3x9wEiAchQJg8jWHoS25EuLEV+jrqqZS+2kA01bdEDJYWMAowp68g1palCg==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-7.7.1.tgz", + "integrity": "sha512-NtRPOwHwKCJhzYGBWq/8n9pPalWY3AAx9jNE3TXAfxOCwVelZaXhC9TZ8iXkzZUixG1pJ+5KInXbjDeGfGpi/g==", "dependencies": { - "@babel/runtime": "^7.16.7", + "@babel/runtime": "^7.17.0", "@polkadot/networks": "^8.3.3", - "@polkadot/types": "7.6.1", - "@polkadot/types-codec": "7.6.1", - "@polkadot/types-create": "7.6.1", + "@polkadot/types": "7.7.1", + "@polkadot/types-codec": "7.7.1", + "@polkadot/types-create": "7.7.1", "@polkadot/util": "^8.3.3" }, "engines": { @@ -1941,11 +1751,11 @@ } }, "node_modules/@polkadot/types-support": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-7.6.1.tgz", - "integrity": "sha512-ssLpYW1bo535sQ2V0FqBag4egGZTObeP+dKlyEMP+MzF/xYLxf+jjJ0czyyjpyR0XR539KfSsdixa49wzgSnAg==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-7.7.1.tgz", + "integrity": "sha512-JQmplnNGML43sE+dArlnzEbDMvpo0TkOMvpM8VflThjabG1MhCFuZdiOSm0WQ/iz4wm+3KihOKGzR6TPpGMKOA==", "dependencies": { - "@babel/runtime": "^7.16.7", + "@babel/runtime": "^7.17.0", "@polkadot/util": "^8.3.3" }, "engines": { @@ -2091,12 +1901,12 @@ } }, "node_modules/@polkadot/x-fetch": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-8.3.3.tgz", - "integrity": "sha512-+ScnWnt0i1IF+fM9IC+OnjkTi5NonK+ji8q861hwkNCtK2ziibibcD3mGavCA6wZvij4wUTovWEsTc5Su0+KTA==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-8.4.1.tgz", + "integrity": "sha512-DPkgXZYt1B4xCzEw/3hxRc4/lR+NEr/b/GYijSPM8UsVoEKqHWTx2qCXrxvmKh1WD9reQ+oUACPVjRcBz5bs+g==", "dependencies": { - "@babel/runtime": "^7.16.7", - "@polkadot/x-global": "8.3.3", + "@babel/runtime": "^7.17.2", + "@polkadot/x-global": "8.4.1", "@types/node-fetch": "^2.5.12", "node-fetch": "^2.6.7" }, @@ -2105,11 +1915,11 @@ } }, "node_modules/@polkadot/x-fetch/node_modules/@polkadot/x-global": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", - "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.4.1.tgz", + "integrity": "sha512-MQs89LKQrJwiXjV7dY2kDOPNaiWrwaQ/Fzg93ycB2xMCclRV1jRFRhnhTPJ8Ao79lhCCoazd7pXIyFgfifxdqg==", "dependencies": { - "@babel/runtime": "^7.16.7" + "@babel/runtime": "^7.17.2" }, "engines": { "node": ">=14.0.0" @@ -2187,13 +1997,13 @@ } }, "node_modules/@polkadot/x-ws": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-8.3.3.tgz", - "integrity": "sha512-Dd0kscZSb7MULVqo5isPZyqvErvgE7lYIwZ4IA0rNdgUWi3mrJWeeWrzVMxC6nbg6q1ahIEGxxZLMVzeI3u/Ew==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-8.4.1.tgz", + "integrity": "sha512-u9rsJdVrBkSARy8BhJPho1yMMBSiI/Z/W8ZQRr1I28/QOwl02VYktFpFWWrhkBHsL9JlZ0wfnyKBPXrw8Wp2Vw==", "dependencies": { - "@babel/runtime": "^7.16.7", - "@polkadot/x-global": "8.3.3", - "@types/websocket": "^1.0.4", + "@babel/runtime": "^7.17.2", + "@polkadot/x-global": "8.4.1", + "@types/websocket": "^1.0.5", "websocket": "^1.0.34" }, "engines": { @@ -2201,11 +2011,11 @@ } }, "node_modules/@polkadot/x-ws/node_modules/@polkadot/x-global": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", - "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.4.1.tgz", + "integrity": "sha512-MQs89LKQrJwiXjV7dY2kDOPNaiWrwaQ/Fzg93ycB2xMCclRV1jRFRhnhTPJ8Ao79lhCCoazd7pXIyFgfifxdqg==", "dependencies": { - "@babel/runtime": "^7.16.7" + "@babel/runtime": "^7.17.2" }, "engines": { "node": ">=14.0.0" @@ -2402,9 +2212,9 @@ "integrity": "sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw==" }, "node_modules/@types/node-fetch": { - "version": "2.5.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", - "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==", "dependencies": { "@types/node": "*", "form-data": "^3.0.0" @@ -3049,15 +2859,15 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz", - "integrity": "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==", + "version": "4.19.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.3.tgz", + "integrity": "sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==", "dependencies": { - "caniuse-lite": "^1.0.30001264", - "electron-to-chromium": "^1.3.857", + "caniuse-lite": "^1.0.30001312", + "electron-to-chromium": "^1.4.71", "escalade": "^3.1.1", - "node-releases": "^1.1.77", - "picocolors": "^0.2.1" + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" }, "bin": { "browserslist": "cli.js" @@ -3190,9 +3000,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001265", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz", - "integrity": "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==", + "version": "1.0.30001312", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz", + "integrity": "sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==", "funding": { "type": "opencollective", "url": "https://opencollective.com/browserslist" @@ -3994,9 +3804,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.861", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.861.tgz", - "integrity": "sha512-GZyflmpMnZRdZ1e2yAyvuFwz1MPSVQelwHX4TJZyXypB8NcxdPvPNwy5lOTxnlkrK13EiQzyTPugRSnj6cBgKg==" + "version": "1.4.75", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.75.tgz", + "integrity": "sha512-LxgUNeu3BVU7sXaKjUDD9xivocQLxFtq6wgERrutdY/yIOps3ODOZExK1jg8DTEg4U8TUCb5MLGeWFOYuxjF3Q==" }, "node_modules/emitter-listener": { "version": "1.1.2", @@ -4260,9 +4070,9 @@ } }, "node_modules/ext/node_modules/type": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", - "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", + "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==" }, "node_modules/extend": { "version": "3.0.2", @@ -6858,9 +6668,9 @@ "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" }, "node_modules/nock": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.2.tgz", - "integrity": "sha512-PcBHuvl9i6zfaJ50A7LS55oU+nFLv8htXIhffJO+FxyfibdZ4jEvd9kTuvkrJireBFIGMZ+oUIRpMK5gU9h//g==", + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.4.tgz", + "integrity": "sha512-8GPznwxcPNCH/h8B+XZcKjYPXnUV5clOKCjAqyjsiqA++MpNx9E9+t8YPp0MbThO+KauRo7aZJ1WuIZmOrT2Ug==", "dependencies": { "debug": "^4.1.0", "json-stringify-safe": "^5.0.1", @@ -7034,15 +6844,6 @@ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", "dev": true }, - "node_modules/node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/node-pre-gyp": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", @@ -7124,9 +6925,9 @@ } }, "node_modules/node-releases": { - "version": "1.1.77", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", - "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==" }, "node_modules/nodejs-fs-utils": { "version": "1.2.5", @@ -7635,9 +7436,9 @@ "optional": true }, "node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "node_modules/picomatch": { "version": "2.3.0", @@ -7671,13 +7472,10 @@ } }, "node_modules/pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", "dev": true, - "dependencies": { - "node-modules-regexp": "^1.0.0" - }, "engines": { "node": ">= 6" } @@ -10008,6 +9806,14 @@ } }, "dependencies": { + "@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "requires": { + "@jridgewell/trace-mapping": "^0.3.0" + } + }, "@babel/code-frame": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", @@ -10017,30 +9823,30 @@ } }, "@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==" + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", + "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==" }, "@babel/core": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz", - "integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==", - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.0", - "@babel/helper-module-transforms": "^7.15.0", - "@babel/helpers": "^7.14.8", - "@babel/parser": "^7.15.0", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.15.0", - "@babel/types": "^7.15.0", + "version": "7.17.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.5.tgz", + "integrity": "sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==", + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.17.2", + "@babel/parser": "^7.17.3", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" + "semver": "^6.3.0" }, "dependencies": { "debug": { @@ -10060,20 +9866,15 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, "@babel/generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", - "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", + "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", "requires": { - "@babel/types": "^7.16.8", + "@babel/types": "^7.17.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, @@ -10094,13 +9895,13 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", + "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", + "@babel/compat-data": "^7.16.4", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", "semver": "^6.3.0" }, "dependencies": { @@ -10168,26 +9969,26 @@ } }, "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.7" } }, "@babel/helper-module-transforms": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", - "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz", + "integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==", "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6" + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" } }, "@babel/helper-optimise-call-expression": { @@ -10216,11 +10017,11 @@ } }, "@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", + "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.7" } }, "@babel/helper-split-export-declaration": { @@ -10237,18 +10038,18 @@ "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" }, "@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==" + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==" }, "@babel/helpers": { - "version": "7.15.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.3.tgz", - "integrity": "sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g==", + "version": "7.17.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", + "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", "requires": { - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.15.0", - "@babel/types": "^7.15.0" + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.0", + "@babel/types": "^7.17.0" } }, "@babel/highlight": { @@ -10308,9 +10109,9 @@ } }, "@babel/parser": { - "version": "7.16.12", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz", - "integrity": "sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==" + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", + "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==" }, "@babel/plugin-proposal-class-properties": { "version": "7.16.7", @@ -10451,22 +10252,22 @@ } }, "@babel/register": { - "version": "7.16.9", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.16.9.tgz", - "integrity": "sha512-jJ72wcghdRIlENfvALcyODhNoGE5j75cYHdC+aQMh6cU/P86tiiXTp9XYZct1UxUMo/4+BgQRyNZEGx0KWGS+g==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.17.0.tgz", + "integrity": "sha512-UNZsMAZ7uKoGHo1HlEXfteEOYssf64n/PNLHGqOKq/bgYcu/4LrQWAHJwSCb3BRZK8Hi5gkJdRcwrGTO2wtRCg==", "dev": true, "requires": { "clone-deep": "^4.0.1", "find-cache-dir": "^2.0.0", "make-dir": "^2.1.0", - "pirates": "^4.0.0", + "pirates": "^4.0.5", "source-map-support": "^0.5.16" } }, "@babel/runtime": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", - "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", + "version": "7.17.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.2.tgz", + "integrity": "sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw==", "requires": { "regenerator-runtime": "^0.13.4" } @@ -10482,18 +10283,18 @@ } }, "@babel/traverse": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", - "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", "requires": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.8", + "@babel/generator": "^7.17.3", "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-function-name": "^7.16.7", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.16.10", - "@babel/types": "^7.16.8", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -10514,9 +10315,9 @@ } }, "@babel/types": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", - "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "requires": { "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" @@ -10819,6 +10620,25 @@ "chalk": "^4.0.0" } }, + "@jridgewell/resolve-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==" + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "@noble/hashes": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-0.5.7.tgz", @@ -11070,23 +10890,23 @@ } }, "@polkadot/api": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-7.6.1.tgz", - "integrity": "sha512-0VvWn8TIKX3o922ZjomsJEkysica1ScnjNYBG3+801gWG3WbCI+IdzdqazTkIMZL8r8HipmA4cjfS3Tdk+R9eg==", - "requires": { - "@babel/runtime": "^7.16.7", - "@polkadot/api-augment": "7.6.1", - "@polkadot/api-base": "7.6.1", - "@polkadot/api-derive": "7.6.1", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-7.7.1.tgz", + "integrity": "sha512-wWwtVgRz1Lc7HY0evRnzKZNaRBIo818V16fZ+S73zfIMxvDmO2zbfui9scIlpi4WwL2K3YQbznOwBlWeHH92LA==", + "requires": { + "@babel/runtime": "^7.17.0", + "@polkadot/api-augment": "7.7.1", + "@polkadot/api-base": "7.7.1", + "@polkadot/api-derive": "7.7.1", "@polkadot/keyring": "^8.3.3", - "@polkadot/rpc-augment": "7.6.1", - "@polkadot/rpc-core": "7.6.1", - "@polkadot/rpc-provider": "7.6.1", - "@polkadot/types": "7.6.1", - "@polkadot/types-augment": "7.6.1", - "@polkadot/types-codec": "7.6.1", - "@polkadot/types-create": "7.6.1", - "@polkadot/types-known": "7.6.1", + "@polkadot/rpc-augment": "7.7.1", + "@polkadot/rpc-core": "7.7.1", + "@polkadot/rpc-provider": "7.7.1", + "@polkadot/types": "7.7.1", + "@polkadot/types-augment": "7.7.1", + "@polkadot/types-codec": "7.7.1", + "@polkadot/types-create": "7.7.1", + "@polkadot/types-known": "7.7.1", "@polkadot/util": "^8.3.3", "@polkadot/util-crypto": "^8.3.3", "eventemitter3": "^4.0.7", @@ -11094,43 +10914,43 @@ } }, "@polkadot/api-augment": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-7.6.1.tgz", - "integrity": "sha512-elkAVDzkcW909phGQNOM2M2ksfnjNeY67EnwIB0xBdFlfM7mVPdxqnAWHrBwbIsD3TdWzxtrNzWzyi7hvILt+A==", - "requires": { - "@babel/runtime": "^7.16.7", - "@polkadot/api-base": "7.6.1", - "@polkadot/rpc-augment": "7.6.1", - "@polkadot/types": "7.6.1", - "@polkadot/types-augment": "7.6.1", - "@polkadot/types-codec": "7.6.1", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-7.7.1.tgz", + "integrity": "sha512-M8c38haMh39K2pg3wRE4azpEr3hkaKV8dTlXG6whDmpDsPGTLa/wE9rCUzduRXTLpUZYBUCH529+bJ5LVwmSNQ==", + "requires": { + "@babel/runtime": "^7.17.0", + "@polkadot/api-base": "7.7.1", + "@polkadot/rpc-augment": "7.7.1", + "@polkadot/types": "7.7.1", + "@polkadot/types-augment": "7.7.1", + "@polkadot/types-codec": "7.7.1", "@polkadot/util": "^8.3.3" } }, "@polkadot/api-base": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-base/-/api-base-7.6.1.tgz", - "integrity": "sha512-HbbbQSzTc5W0QtV/5JMOHbINlrHeZ5w5Cdo2jmIkSZT8w8MxhnupzdvkjIX9B9F4/dFa0RdaP/J1FnLNFlUU1w==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-base/-/api-base-7.7.1.tgz", + "integrity": "sha512-gzgETQrgjMOqcQj7dwsiqVxmlUQEMH89ome0qargrJWiwbFUeceOlvt47E/WGG6/1oWUl3SMZcNRLYANME93ag==", "requires": { - "@babel/runtime": "^7.16.7", - "@polkadot/rpc-core": "7.6.1", - "@polkadot/types": "7.6.1", + "@babel/runtime": "^7.17.0", + "@polkadot/rpc-core": "7.7.1", + "@polkadot/types": "7.7.1", "@polkadot/util": "^8.3.3", "rxjs": "^7.5.2" } }, "@polkadot/api-derive": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-7.6.1.tgz", - "integrity": "sha512-cRoc1LTTwvEH9QtHIp7vWYn34dczuqg4xQSbZn/IqEzvmcpU7wJC3gLfEOCrqTIFDofPVyBOd7Vv3gjuey/82g==", - "requires": { - "@babel/runtime": "^7.16.7", - "@polkadot/api": "7.6.1", - "@polkadot/api-augment": "7.6.1", - "@polkadot/api-base": "7.6.1", - "@polkadot/rpc-core": "7.6.1", - "@polkadot/types": "7.6.1", - "@polkadot/types-codec": "7.6.1", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-7.7.1.tgz", + "integrity": "sha512-1dBj+vtVk+XAcvwC6BE+eUdVnbcBteWDXzBxrIuzT8NlkAReIq+74+bOEZH7GDcGMorTR5s+Z3FZD1ElmUiUNQ==", + "requires": { + "@babel/runtime": "^7.17.0", + "@polkadot/api": "7.7.1", + "@polkadot/api-augment": "7.7.1", + "@polkadot/api-base": "7.7.1", + "@polkadot/rpc-core": "7.7.1", + "@polkadot/types": "7.7.1", + "@polkadot/types-codec": "7.7.1", "@polkadot/util": "^8.3.3", "@polkadot/util-crypto": "^8.3.3", "rxjs": "^7.5.2" @@ -11156,39 +10976,39 @@ } }, "@polkadot/rpc-augment": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-7.6.1.tgz", - "integrity": "sha512-lNeTS8Ma/0sAk3pvGxliQOkE016WZKXyS5uQWtcF2CRn2rn265Fb4I29n3KjTL8CRYtafvH6IRS0DSkKgbnL3w==", - "requires": { - "@babel/runtime": "^7.16.7", - "@polkadot/rpc-core": "7.6.1", - "@polkadot/types": "7.6.1", - "@polkadot/types-codec": "7.6.1", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-7.7.1.tgz", + "integrity": "sha512-Hwa6qjxHSuzjyYxa2gOpIoN0PWhWDLEOxpHFZxwNoCkmGtcIpNwWOtK1chZWEl9Zd1Yq+JLIEoimNN+2ok/3cA==", + "requires": { + "@babel/runtime": "^7.17.0", + "@polkadot/rpc-core": "7.7.1", + "@polkadot/types": "7.7.1", + "@polkadot/types-codec": "7.7.1", "@polkadot/util": "^8.3.3" } }, "@polkadot/rpc-core": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-7.6.1.tgz", - "integrity": "sha512-xq/GzUeBu1GsP4ngEYQeDrVnsullDBy/22yUY/ahNjkgAjXeOndrBFis+4lBiiksVQMgYZEzaHv89E0aCOBvAA==", - "requires": { - "@babel/runtime": "^7.16.7", - "@polkadot/rpc-augment": "7.6.1", - "@polkadot/rpc-provider": "7.6.1", - "@polkadot/types": "7.6.1", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-7.7.1.tgz", + "integrity": "sha512-vJuuTbmGKEcjJY3JIjMirLESVjnHBGajtTaLtlcwBcp8Jgj/fBi+FoL3gcpZS4BR87/qVe35aoNO2hDhU9DUJA==", + "requires": { + "@babel/runtime": "^7.17.0", + "@polkadot/rpc-augment": "7.7.1", + "@polkadot/rpc-provider": "7.7.1", + "@polkadot/types": "7.7.1", "@polkadot/util": "^8.3.3", "rxjs": "^7.5.2" } }, "@polkadot/rpc-provider": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-7.6.1.tgz", - "integrity": "sha512-jevBGp/n16ra+Y+JV8nnNRTtKPU1Oo3nBiyMhUla6crWLjMnLAYvcyteRq27aBmU3Olh4n/0xDVNCvTxfEghxQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-7.7.1.tgz", + "integrity": "sha512-PPAMjQgV4pA/l+L+mk93dvmzwMA2tZSzVf0DjsldD0vi5Oydo0Sw8I4YEsueTnHme0PadIZXUzWEonG81klAlw==", "requires": { - "@babel/runtime": "^7.16.7", + "@babel/runtime": "^7.17.0", "@polkadot/keyring": "^8.3.3", - "@polkadot/types": "7.6.1", - "@polkadot/types-support": "7.6.1", + "@polkadot/types": "7.7.1", + "@polkadot/types-support": "7.7.1", "@polkadot/util": "^8.3.3", "@polkadot/util-crypto": "^8.3.3", "@polkadot/x-fetch": "^8.3.3", @@ -11196,266 +11016,108 @@ "@polkadot/x-ws": "^8.3.3", "eventemitter3": "^4.0.7", "mock-socket": "^9.1.2", - "nock": "^13.2.2" + "nock": "^13.2.4" }, "dependencies": { "@polkadot/x-global": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", - "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.4.1.tgz", + "integrity": "sha512-MQs89LKQrJwiXjV7dY2kDOPNaiWrwaQ/Fzg93ycB2xMCclRV1jRFRhnhTPJ8Ao79lhCCoazd7pXIyFgfifxdqg==", "requires": { - "@babel/runtime": "^7.16.7" + "@babel/runtime": "^7.17.2" } } } }, "@polkadot/typegen": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/typegen/-/typegen-7.6.1.tgz", - "integrity": "sha512-RCtpQWTmPMTHFbK5AXTy7Ncgx2aj4FhxnYFZxmpm2bZpXsf66mTKDu2vQiKN2vwPtjG8WnxuyB1fqnyGtebHPg==", - "dev": true, - "requires": { - "@babel/core": "^7.16.12", - "@babel/register": "^7.16.9", - "@babel/runtime": "^7.16.7", - "@polkadot/api": "7.6.1", - "@polkadot/api-augment": "7.6.1", - "@polkadot/rpc-augment": "7.6.1", - "@polkadot/rpc-provider": "7.6.1", - "@polkadot/types": "7.6.1", - "@polkadot/types-augment": "7.6.1", - "@polkadot/types-codec": "7.6.1", - "@polkadot/types-create": "7.6.1", - "@polkadot/types-support": "7.6.1", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/typegen/-/typegen-7.7.1.tgz", + "integrity": "sha512-uzyau1I6vrMiejTIXLSvmJ5ZTLstUKlfmevHxFO1Pf6x56vRed1zr8u5Y5TmjF5FQkIdh0d6KpZoWqEcHa4AJQ==", + "dev": true, + "requires": { + "@babel/core": "^7.17.0", + "@babel/register": "^7.17.0", + "@babel/runtime": "^7.17.0", + "@polkadot/api": "7.7.1", + "@polkadot/api-augment": "7.7.1", + "@polkadot/rpc-augment": "7.7.1", + "@polkadot/rpc-provider": "7.7.1", + "@polkadot/types": "7.7.1", + "@polkadot/types-augment": "7.7.1", + "@polkadot/types-codec": "7.7.1", + "@polkadot/types-create": "7.7.1", + "@polkadot/types-support": "7.7.1", "@polkadot/util": "^8.3.3", "@polkadot/x-ws": "^8.3.3", "handlebars": "^4.7.7", "websocket": "^1.0.34", "yargs": "^17.3.1" - }, - "dependencies": { - "@babel/compat-data": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz", - "integrity": "sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==", - "dev": true - }, - "@babel/core": { - "version": "7.16.12", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", - "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helpers": "^7.16.7", - "@babel/parser": "^7.16.12", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.10", - "@babel/types": "^7.16.8", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", - "semver": "^6.3.0" - } - }, - "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-module-transforms": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", - "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-simple-access": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", - "dev": true - }, - "@babel/helpers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz", - "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==", - "dev": true, - "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "browserslist": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001303", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001303.tgz", - "integrity": "sha512-/Mqc1oESndUNszJP0kx0UaQU9kEv9nNtJ7Kn8AdA0mNnH8eR1cj0kG+NbNuC1Wq/b21eA8prhKRA3bbkjONegQ==", - "dev": true - }, - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "electron-to-chromium": { - "version": "1.4.56", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.56.tgz", - "integrity": "sha512-0k/S0FQqRRpJbX7YUjwCcLZ8D42RqGKtaiq90adXBOYgTIWwLA/g3toO8k9yEpqU8iC4QyaWYYWSTBIna8WV4g==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } } }, "@polkadot/types": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-7.6.1.tgz", - "integrity": "sha512-4GotmyT6h5n2qpgqPKqzVzgZKuPS9fNMeQBBbhxZxjyFmSTYtIqQeyqFw1bgIGcsZBH81WK7yE1U221l8gmj1Q==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-7.7.1.tgz", + "integrity": "sha512-koJfoKvSiwpZKkHZrOpelb+JxCf+0iGzVOt0hj0plOK5oOOSJd0Elpy1dc8QQEJUC3V/pNdAGTsV6dvqi8rnAg==", "requires": { - "@babel/runtime": "^7.16.7", + "@babel/runtime": "^7.17.0", "@polkadot/keyring": "^8.3.3", - "@polkadot/types-augment": "7.6.1", - "@polkadot/types-codec": "7.6.1", - "@polkadot/types-create": "7.6.1", + "@polkadot/types-augment": "7.7.1", + "@polkadot/types-codec": "7.7.1", + "@polkadot/types-create": "7.7.1", "@polkadot/util": "^8.3.3", "@polkadot/util-crypto": "^8.3.3", "rxjs": "^7.5.2" } }, "@polkadot/types-augment": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-7.6.1.tgz", - "integrity": "sha512-OLTVgMlSiZy37eXhUa6zYRHBUK7eJ2opovAKYpk+S8biA4nrq7LUXis2MnCP9C1TvsQozPlZ5q0M89WRVw96TA==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-7.7.1.tgz", + "integrity": "sha512-NsPJgD85UUIOao2rtY9jCzt2+MdZsn2qhBSphnqQqS3yOQKoonaHojCsRKt39raQ0UNST+At5zL1+HdcKP53EQ==", "requires": { - "@babel/runtime": "^7.16.7", - "@polkadot/types": "7.6.1", - "@polkadot/types-codec": "7.6.1", + "@babel/runtime": "^7.17.0", + "@polkadot/types": "7.7.1", + "@polkadot/types-codec": "7.7.1", "@polkadot/util": "^8.3.3" } }, "@polkadot/types-codec": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-7.6.1.tgz", - "integrity": "sha512-Zm4oQJK4BeB3reElKCVfJm1tzVK2O+hfS9QlKJAHy+kYwPB20o0UYv1d0K1WOZedSmVIaoW/diOaxMePV1S55Q==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-7.7.1.tgz", + "integrity": "sha512-NqxQGpfagc+51TGBo8lrmEJox3cZwx6lSeoPnGUqQBcOhqjaJ8EPEAaFHc0TTc22/sLs1qYqBc+cz+9UXKAEOg==", "requires": { - "@babel/runtime": "^7.16.7", + "@babel/runtime": "^7.17.0", "@polkadot/util": "^8.3.3" } }, "@polkadot/types-create": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-7.6.1.tgz", - "integrity": "sha512-vGUT5O3/bYpP/NOa/5TV8aCDoDE8DbeRSiykzQ8ceOrnmB4VrlJ+L4zklyiuRdAFXPYmi+7S9Dzr/IrNrf72wg==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-7.7.1.tgz", + "integrity": "sha512-T7iyu0u1Ji3ErA3YcY+WuI83TMcnvhTYJXs+OmGksWa64MQAiWs2pkYNmS4ieArUW3vsel5nv9noBzyl2MAocQ==", "requires": { - "@babel/runtime": "^7.16.7", - "@polkadot/types-codec": "7.6.1", + "@babel/runtime": "^7.17.0", + "@polkadot/types-codec": "7.7.1", "@polkadot/util": "^8.3.3" } }, "@polkadot/types-known": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-7.6.1.tgz", - "integrity": "sha512-qViRhHpnDNxS4lZhF7suUvevpvH3x9wEiAchQJg8jWHoS25EuLEV+jrqqZS+2kA01bdEDJYWMAowp68g1palCg==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-7.7.1.tgz", + "integrity": "sha512-NtRPOwHwKCJhzYGBWq/8n9pPalWY3AAx9jNE3TXAfxOCwVelZaXhC9TZ8iXkzZUixG1pJ+5KInXbjDeGfGpi/g==", "requires": { - "@babel/runtime": "^7.16.7", + "@babel/runtime": "^7.17.0", "@polkadot/networks": "^8.3.3", - "@polkadot/types": "7.6.1", - "@polkadot/types-codec": "7.6.1", - "@polkadot/types-create": "7.6.1", + "@polkadot/types": "7.7.1", + "@polkadot/types-codec": "7.7.1", + "@polkadot/types-create": "7.7.1", "@polkadot/util": "^8.3.3" } }, "@polkadot/types-support": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-7.6.1.tgz", - "integrity": "sha512-ssLpYW1bo535sQ2V0FqBag4egGZTObeP+dKlyEMP+MzF/xYLxf+jjJ0czyyjpyR0XR539KfSsdixa49wzgSnAg==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-7.7.1.tgz", + "integrity": "sha512-JQmplnNGML43sE+dArlnzEbDMvpo0TkOMvpM8VflThjabG1MhCFuZdiOSm0WQ/iz4wm+3KihOKGzR6TPpGMKOA==", "requires": { - "@babel/runtime": "^7.16.7", + "@babel/runtime": "^7.17.0", "@polkadot/util": "^8.3.3" } }, @@ -11567,22 +11229,22 @@ } }, "@polkadot/x-fetch": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-8.3.3.tgz", - "integrity": "sha512-+ScnWnt0i1IF+fM9IC+OnjkTi5NonK+ji8q861hwkNCtK2ziibibcD3mGavCA6wZvij4wUTovWEsTc5Su0+KTA==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-8.4.1.tgz", + "integrity": "sha512-DPkgXZYt1B4xCzEw/3hxRc4/lR+NEr/b/GYijSPM8UsVoEKqHWTx2qCXrxvmKh1WD9reQ+oUACPVjRcBz5bs+g==", "requires": { - "@babel/runtime": "^7.16.7", - "@polkadot/x-global": "8.3.3", + "@babel/runtime": "^7.17.2", + "@polkadot/x-global": "8.4.1", "@types/node-fetch": "^2.5.12", "node-fetch": "^2.6.7" }, "dependencies": { "@polkadot/x-global": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", - "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.4.1.tgz", + "integrity": "sha512-MQs89LKQrJwiXjV7dY2kDOPNaiWrwaQ/Fzg93ycB2xMCclRV1jRFRhnhTPJ8Ao79lhCCoazd7pXIyFgfifxdqg==", "requires": { - "@babel/runtime": "^7.16.7" + "@babel/runtime": "^7.17.2" } } } @@ -11645,22 +11307,22 @@ } }, "@polkadot/x-ws": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-8.3.3.tgz", - "integrity": "sha512-Dd0kscZSb7MULVqo5isPZyqvErvgE7lYIwZ4IA0rNdgUWi3mrJWeeWrzVMxC6nbg6q1ahIEGxxZLMVzeI3u/Ew==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-8.4.1.tgz", + "integrity": "sha512-u9rsJdVrBkSARy8BhJPho1yMMBSiI/Z/W8ZQRr1I28/QOwl02VYktFpFWWrhkBHsL9JlZ0wfnyKBPXrw8Wp2Vw==", "requires": { - "@babel/runtime": "^7.16.7", - "@polkadot/x-global": "8.3.3", - "@types/websocket": "^1.0.4", + "@babel/runtime": "^7.17.2", + "@polkadot/x-global": "8.4.1", + "@types/websocket": "^1.0.5", "websocket": "^1.0.34" }, "dependencies": { "@polkadot/x-global": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", - "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.4.1.tgz", + "integrity": "sha512-MQs89LKQrJwiXjV7dY2kDOPNaiWrwaQ/Fzg93ycB2xMCclRV1jRFRhnhTPJ8Ao79lhCCoazd7pXIyFgfifxdqg==", "requires": { - "@babel/runtime": "^7.16.7" + "@babel/runtime": "^7.17.2" } } } @@ -11846,9 +11508,9 @@ "integrity": "sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw==" }, "@types/node-fetch": { - "version": "2.5.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", - "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==", "requires": { "@types/node": "*", "form-data": "^3.0.0" @@ -12381,15 +12043,15 @@ "dev": true }, "browserslist": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz", - "integrity": "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==", + "version": "4.19.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.3.tgz", + "integrity": "sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==", "requires": { - "caniuse-lite": "^1.0.30001264", - "electron-to-chromium": "^1.3.857", + "caniuse-lite": "^1.0.30001312", + "electron-to-chromium": "^1.4.71", "escalade": "^3.1.1", - "node-releases": "^1.1.77", - "picocolors": "^0.2.1" + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" } }, "bs-logger": { @@ -12483,9 +12145,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001265", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz", - "integrity": "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==" + "version": "1.0.30001312", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz", + "integrity": "sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==" }, "caseless": { "version": "0.12.0", @@ -13119,9 +12781,9 @@ } }, "electron-to-chromium": { - "version": "1.3.861", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.861.tgz", - "integrity": "sha512-GZyflmpMnZRdZ1e2yAyvuFwz1MPSVQelwHX4TJZyXypB8NcxdPvPNwy5lOTxnlkrK13EiQzyTPugRSnj6cBgKg==" + "version": "1.4.75", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.75.tgz", + "integrity": "sha512-LxgUNeu3BVU7sXaKjUDD9xivocQLxFtq6wgERrutdY/yIOps3ODOZExK1jg8DTEg4U8TUCb5MLGeWFOYuxjF3Q==" }, "emitter-listener": { "version": "1.1.2", @@ -13319,9 +12981,9 @@ }, "dependencies": { "type": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", - "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", + "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==" } } }, @@ -15346,9 +15008,9 @@ "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" }, "nock": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.2.tgz", - "integrity": "sha512-PcBHuvl9i6zfaJ50A7LS55oU+nFLv8htXIhffJO+FxyfibdZ4jEvd9kTuvkrJireBFIGMZ+oUIRpMK5gU9h//g==", + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.4.tgz", + "integrity": "sha512-8GPznwxcPNCH/h8B+XZcKjYPXnUV5clOKCjAqyjsiqA++MpNx9E9+t8YPp0MbThO+KauRo7aZJ1WuIZmOrT2Ug==", "requires": { "debug": "^4.1.0", "json-stringify-safe": "^5.0.1", @@ -15480,12 +15142,6 @@ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", "dev": true }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true - }, "node-pre-gyp": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", @@ -15550,9 +15206,9 @@ } }, "node-releases": { - "version": "1.1.77", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", - "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==" }, "nodejs-fs-utils": { "version": "1.2.5", @@ -15948,9 +15604,9 @@ "optional": true }, "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "picomatch": { "version": "2.3.0", @@ -15972,13 +15628,10 @@ "dev": true }, "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", - "dev": true, - "requires": { - "node-modules-regexp": "^1.0.0" - } + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true }, "pkg-dir": { "version": "3.0.0", diff --git a/scripts/cli/package.json b/scripts/cli/package.json index 9c6a29bed5..e7c722e1cc 100644 --- a/scripts/cli/package.json +++ b/scripts/cli/package.json @@ -52,7 +52,7 @@ "license": "UNLICENSED", "dependencies": { "@babel/plugin-proposal-class-properties": "^7.16.7", - "@polkadot/api": "7.6.1", + "@polkadot/api": "7.7.1", "@polkadot/util": "^8.3.3", "@polkadot/util-crypto": "^8.3.3", "@types/sqlite3": "^3.1.7", @@ -77,7 +77,7 @@ }, "devDependencies": { "@babel/plugin-transform-modules-commonjs": "7.14.5", - "@polkadot/typegen": "7.6.1", + "@polkadot/typegen": "7.7.1", "@types/chai": "4.2.15", "@types/clear": "0.1.1", "@types/figlet": "1.2.1", From 36a275a2244dd2bd1344c79ae7866798a17b64f3 Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Thu, 10 Mar 2022 22:34:48 +0800 Subject: [PATCH 29/53] New spec version format and bump major version. (#1223) --- Cargo.lock | 2 +- Cargo.toml | 2 +- pallets/runtime/ci/src/runtime.rs | 7 ++----- pallets/runtime/develop/src/runtime.rs | 7 ++----- pallets/runtime/mainnet/src/runtime.rs | 7 ++----- pallets/runtime/testnet/src/runtime.rs | 7 ++----- 6 files changed, 10 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0de000c394..c8ee6205ec 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5686,7 +5686,7 @@ dependencies = [ [[package]] name = "polymesh" -version = "4.1.1" +version = "5.0.0" dependencies = [ "chrono", "ed25519-dalek", diff --git a/Cargo.toml b/Cargo.toml index fc6346600d..6173ade362 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polymesh" -version = "4.1.1" +version = "5.0.0" authors = ["Polymath"] build = "build.rs" edition = "2018" diff --git a/pallets/runtime/ci/src/runtime.rs b/pallets/runtime/ci/src/runtime.rs index 63cc60b5b5..18b54fc260 100644 --- a/pallets/runtime/ci/src/runtime.rs +++ b/pallets/runtime/ci/src/runtime.rs @@ -58,11 +58,8 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("polymesh_ci"), impl_name: create_runtime_str!("polymesh_ci"), authoring_version: 1, - // Per convention: if the runtime behavior changes, increment spec_version - // and set impl_version to 0. If only runtime - // implementation changes and behavior does not, then leave spec_version as - // is and increment impl_version. - spec_version: 3010, + // `spec_version: aaa_bbb_ccc` should match node version v`aaa.bbb.ccc` + spec_version: 5_000_000, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 2, diff --git a/pallets/runtime/develop/src/runtime.rs b/pallets/runtime/develop/src/runtime.rs index 2623ed16fb..53121a7675 100644 --- a/pallets/runtime/develop/src/runtime.rs +++ b/pallets/runtime/develop/src/runtime.rs @@ -56,11 +56,8 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("polymesh_dev"), impl_name: create_runtime_str!("polymesh_dev"), authoring_version: 1, - // Per convention: if the runtime behavior changes, increment spec_version - // and set impl_version to 0. If only runtime - // implementation changes and behavior does not, then leave spec_version as - // is and increment impl_version. - spec_version: 3010, + // `spec_version: aaa_bbb_ccc` should match node version v`aaa.bbb.ccc` + spec_version: 5_000_000, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 2, diff --git a/pallets/runtime/mainnet/src/runtime.rs b/pallets/runtime/mainnet/src/runtime.rs index 166907730f..75bd60ba02 100644 --- a/pallets/runtime/mainnet/src/runtime.rs +++ b/pallets/runtime/mainnet/src/runtime.rs @@ -53,11 +53,8 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("polymesh_mainnet"), impl_name: create_runtime_str!("polymesh_mainnet"), authoring_version: 1, - // Per convention: if the runtime behavior changes, increment spec_version - // and set impl_version to 0. If only runtime - // implementation changes and behavior does not, then leave spec_version as - // is and increment impl_version. - spec_version: 3010, + // `spec_version: aaa_bbb_ccc` should match node version v`aaa.bbb.ccc` + spec_version: 5_000_000, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 2, diff --git a/pallets/runtime/testnet/src/runtime.rs b/pallets/runtime/testnet/src/runtime.rs index 310ad5b4f0..c96f7316fa 100644 --- a/pallets/runtime/testnet/src/runtime.rs +++ b/pallets/runtime/testnet/src/runtime.rs @@ -58,11 +58,8 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("polymesh_testnet"), impl_name: create_runtime_str!("polymesh_testnet"), authoring_version: 1, - // Per convention: if the runtime behavior changes, increment spec_version - // and set impl_version to 0. If only runtime - // implementation changes and behavior does not, then leave spec_version as - // is and increment impl_version. - spec_version: 3010, + // `spec_version: aaa_bbb_ccc` should match node version v`aaa.bbb.ccc` + spec_version: 5_000_000, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 2, From 38f49caed00c8036a53f0e2345ae447c21b01c8d Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Tue, 15 Mar 2022 22:37:19 +0800 Subject: [PATCH 30/53] Fix issue with MultiSig Proposal to id map. (#1225) --- pallets/multisig/src/lib.rs | 12 ++++++++---- pallets/runtime/tests/src/multisig.rs | 17 ++++++++--------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/pallets/multisig/src/lib.rs b/pallets/multisig/src/lib.rs index 14668e67a4..e0536ebe2e 100644 --- a/pallets/multisig/src/lib.rs +++ b/pallets/multisig/src/lib.rs @@ -339,7 +339,7 @@ decl_module! { auto_close: bool ) { let signer = Self::ensure_perms_signed_did(origin)?; - Self::create_proposal(multisig, signer, proposal, expiry, auto_close)?; + Self::create_proposal(multisig, signer, proposal, expiry, auto_close, false)?; } /// Creates a multisig proposal @@ -359,7 +359,7 @@ decl_module! { auto_close: bool ) { let signer = Self::ensure_signed_acc(origin)?; - Self::create_proposal(multisig, signer, proposal, expiry, auto_close)?; + Self::create_proposal(multisig, signer, proposal, expiry, auto_close, false)?; } /// Approves a multisig proposal using the caller's identity. @@ -803,6 +803,7 @@ impl Module { proposal: Box, expiry: Option, auto_close: bool, + proposal_to_id: bool, ) -> CreateProposalResult { Self::ensure_ms_signer(&multisig, &sender_signer)?; let caller_did = match sender_signer { @@ -812,7 +813,10 @@ impl Module { }; let proposal_id = Self::ms_tx_done(multisig.clone()); >::insert((multisig.clone(), proposal_id), proposal.clone()); - >::insert(multisig.clone(), *proposal, proposal_id); + if proposal_to_id { + // Only use the `Proposal` -> id map for `create_or_approve_proposal` calls. + >::insert(multisig.clone(), *proposal, proposal_id); + } >::insert( (multisig.clone(), proposal_id), ProposalDetails::new(expiry, auto_close), @@ -842,7 +846,7 @@ impl Module { Self::unsafe_approve(multisig, sender_signer, proposal_id)?; } else { // The proposal is new. - Self::create_proposal(multisig, sender_signer, proposal, expiry, auto_close)?; + Self::create_proposal(multisig, sender_signer, proposal, expiry, auto_close, true)?; } Ok(()) } diff --git a/pallets/runtime/tests/src/multisig.rs b/pallets/runtime/tests/src/multisig.rs index db36efd622..8e78624b9b 100644 --- a/pallets/runtime/tests/src/multisig.rs +++ b/pallets/runtime/tests/src/multisig.rs @@ -756,12 +756,12 @@ fn check_for_approval_closure() { assert_ok!(MultiSig::create_proposal_as_identity( alice.clone(), musig_address.clone(), - call.clone(), + call, None, false )); next_block(); - let proposal_id = MultiSig::proposal_ids(musig_address.clone(), call).unwrap(); + let proposal_id = MultiSig::ms_tx_done(musig_address.clone()) - 1; let bob_auth_id = get_last_auth_id(&bob_signer.clone()); let multi_purpose_nonce = Identity::multi_purpose_nonce(); @@ -831,20 +831,19 @@ fn reject_proposals() { assert_ok!(MultiSig::create_proposal_as_identity( alice.clone(), musig_address.clone(), - call1.clone(), + call1, None, false )); + let proposal_id1 = MultiSig::ms_tx_done(musig_address.clone()) - 1; assert_ok!(MultiSig::create_proposal_as_identity( alice.clone(), musig_address.clone(), - call2.clone(), + call2, None, true )); - - let proposal_id1 = MultiSig::proposal_ids(musig_address.clone(), call1).unwrap(); - let proposal_id2 = MultiSig::proposal_ids(musig_address.clone(), call2).unwrap(); + let proposal_id2 = MultiSig::ms_tx_done(musig_address.clone()) - 1; // Proposal with auto close disabled can be voted on even after rejection. set_curr_did(Some(bob_did)); @@ -945,12 +944,12 @@ fn expired_proposals() { assert_ok!(MultiSig::create_proposal_as_identity( alice.clone(), musig_address.clone(), - call.clone(), + call, Some(100u64), false )); - let proposal_id = MultiSig::proposal_ids(musig_address.clone(), call).unwrap(); + let proposal_id = MultiSig::ms_tx_done(musig_address.clone()) - 1; let mut proposal_details = MultiSig::proposal_detail(&(musig_address.clone(), proposal_id)); assert_eq!(proposal_details.approvals, 1); assert_eq!( From 3061fa6abbad15b31b096eae4de3ada681160a46 Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Fri, 25 Mar 2022 22:57:40 +0800 Subject: [PATCH 31/53] MESH-1793 multisig primary/secondary key with balance. (#1224) * Remove dead code. MultiSig signers are never linked directly to an identity. * Remove unused `MultiSig::get_key_signers()` * Rename `make_multisig_signer` to `make_multisig_secondary` * Fix MultiSig balance check. * Add test for primary key MultiSig with balance. * Change MultiSig balance restriction to 1 POLYX. * docs cleanup. --- pallets/common/src/traits/identity.rs | 4 + pallets/common/src/traits/multisig.rs | 8 - pallets/identity/src/keys.rs | 40 +-- pallets/multisig/src/benchmarking.rs | 2 +- pallets/multisig/src/lib.rs | 22 +- pallets/runtime/ci/src/runtime.rs | 1 + pallets/runtime/common/src/lib.rs | 2 + pallets/runtime/develop/src/runtime.rs | 1 + pallets/runtime/mainnet/src/runtime.rs | 1 + pallets/runtime/testnet/src/runtime.rs | 1 + pallets/runtime/tests/src/identity_test.rs | 66 ++--- pallets/runtime/tests/src/multisig.rs | 307 +++++++++++---------- pallets/runtime/tests/src/staking/mock.rs | 4 +- pallets/runtime/tests/src/storage.rs | 1 + pallets/weights/src/pallet_multisig.rs | 2 +- scripts/cli/src/interfaces/lookup.ts | 2 +- 16 files changed, 232 insertions(+), 232 deletions(-) diff --git a/pallets/common/src/traits/identity.rs b/pallets/common/src/traits/identity.rs index a29a38457d..1c7583cf9e 100644 --- a/pallets/common/src/traits/identity.rs +++ b/pallets/common/src/traits/identity.rs @@ -187,6 +187,10 @@ pub trait Config: CommonConfig + pallet_timestamp::Config + crate::traits::base: /// POLYX given to primary keys of all new Identities type InitialPOLYX: Get<>::Balance>; + + /// Only allow MultiSig primary/secondary keys to be removed from an identity + /// if its POLYX balance is below this limit. + type MultiSigBalanceLimit: Get<>::Balance>; } decl_event!( diff --git a/pallets/common/src/traits/multisig.rs b/pallets/common/src/traits/multisig.rs index e09cb3533d..a360b7f6c8 100644 --- a/pallets/common/src/traits/multisig.rs +++ b/pallets/common/src/traits/multisig.rs @@ -18,16 +18,8 @@ //! The interface allows to process addition of a multisig signer from modules other than the //! multisig module itself. -use sp_std::vec::Vec; - /// This trait is used to add a signer to a multisig and enable unlinking multisig from an identity pub trait MultiSigSubTrait { - /// Fetches signers of a multisig - /// - /// # Arguments - /// * `multisig` - multisig AccountId - fn get_key_signers(multisig: &AccountId) -> Vec; - /// Checks if the account is a multisig /// /// # Arguments diff --git a/pallets/identity/src/keys.rs b/pallets/identity/src/keys.rs index 9c021a25e1..a096084b4e 100644 --- a/pallets/identity/src/keys.rs +++ b/pallets/identity/src/keys.rs @@ -40,7 +40,7 @@ use polymesh_primitives::{ }; use sp_core::sr25519::Signature; use sp_io::hashing::blake2_256; -use sp_runtime::traits::{AccountIdConversion as _, IdentifyAccount, Verify, Zero as _}; +use sp_runtime::traits::{AccountIdConversion as _, IdentifyAccount, Verify}; use sp_runtime::{AnySignature, DispatchError}; use sp_std::{vec, vec::Vec}; @@ -154,6 +154,13 @@ impl Module { >::get(key) == 0, Error::::AccountKeyIsBeingUsed ); + // Do not allow unlinking MultiSig keys with balance >= 1 POLYX. + if T::MultiSig::is_multisig(key) { + ensure!( + T::Balances::total_balance(key) < T::MultiSigBalanceLimit::get().into(), + Error::::MultiSigHasBalance + ); + } Ok(()) } @@ -365,27 +372,14 @@ impl Module { signers .iter() .flat_map(|signer| { - use either::Either::{Left, Right}; - // Unlink each of the given secondary keys from `did`. if let Signatory::Account(key) = &signer { - // Unlink multisig signers. - if T::MultiSig::is_multisig(key) { - if !T::Balances::total_balance(key).is_zero() { - return Left(iter::empty()); - } - // Unlink multisig signers from the identity. - Self::unlink_multisig_signers_from_did( - T::MultiSig::get_key_signers(key), - did, - ); - } // Unlink the secondary account key. Self::unlink_account_key_from_did(key, did); } // All `auth_id`s for `signer` authorized by `did`. - Right(Self::auths_of(signer, did)) + Self::auths_of(signer, did) }) // Remove authorizations. .for_each(|(signer, auth_id)| Self::unsafe_remove_auth(signer, auth_id, &did, true)); @@ -555,15 +549,7 @@ impl Module { // Ensure that it is safe to unlink the account key from the did. Self::ensure_key_unlinkable_from_did(&key)?; - // Unlink multisig signers. - if T::MultiSig::is_multisig(&key) { - ensure!( - T::Balances::total_balance(&key).is_zero(), - Error::::MultiSigHasBalance - ); - // Unlink multisig signers from the identity. - Self::unlink_multisig_signers_from_did(T::MultiSig::get_key_signers(&key), did); - } + // Unlink key from the identity. Self::unlink_account_key_from_did(&key, did); // Update secondary keys at Identity. @@ -574,12 +560,6 @@ impl Module { Ok(()) } - fn unlink_multisig_signers_from_did(signers: Vec, did: IdentityId) { - for signer in signers { - Self::unlink_account_key_from_did(&signer, did) - } - } - /// Freezes/unfreezes the target `did` identity. /// /// # Errors diff --git a/pallets/multisig/src/benchmarking.rs b/pallets/multisig/src/benchmarking.rs index 27e5ced03c..b0b47a1e28 100644 --- a/pallets/multisig/src/benchmarking.rs +++ b/pallets/multisig/src/benchmarking.rs @@ -342,7 +342,7 @@ benchmarks! { assert!(>::get(&multisig) == 1); } - make_multisig_signer { + make_multisig_secondary { let (alice, multisig, _, _, _) = generate_multisig_for_alice::(1, 1).unwrap(); let ephemeral_multisig = multisig.clone(); let ms_signer = Signatory::Account(multisig); diff --git a/pallets/multisig/src/lib.rs b/pallets/multisig/src/lib.rs index e0536ebe2e..e1713dc25b 100644 --- a/pallets/multisig/src/lib.rs +++ b/pallets/multisig/src/lib.rs @@ -59,7 +59,7 @@ //! - `remove_multisig_signers_via_creator` - Removes a signer from the multisig when called by the //! creator of the multisig. //! - `change_sigs_required` - Changes the number of signatures required to execute a transaction. -//! - `make_multisig_signer` - Adds a multisig as a signer of the current DID if the current DID is +//! - `make_multisig_secondary` - Adds a multisig as a secondary key of the current DID if the current DID is //! the creator of the multisig. //! - `make_multisig_primary` - Adds a multisig as the primary key of the current DID if the current DID //! is the creator of the multisig. @@ -202,7 +202,7 @@ pub trait WeightInfo { fn add_multisig_signers_via_creator(signers: u32) -> Weight; fn remove_multisig_signers_via_creator(signers: u32) -> Weight; fn change_sigs_required() -> Weight; - fn make_multisig_signer() -> Weight; + fn make_multisig_secondary() -> Weight; fn make_multisig_primary() -> Weight; fn execute_scheduled_proposal() -> Weight; } @@ -528,13 +528,13 @@ decl_module! { Self::unsafe_change_sigs_required(sender, sigs_required); } - /// Adds a multisig as a signer of current did if the current did is the creator of the + /// Adds a multisig as a secondary key of current did if the current did is the creator of the /// multisig. /// /// # Arguments /// * `multisig` - multi sig address - #[weight = ::WeightInfo::make_multisig_signer()] - pub fn make_multisig_signer(origin, multisig: T::AccountId) { + #[weight = ::WeightInfo::make_multisig_secondary()] + pub fn make_multisig_secondary(origin, multisig: T::AccountId) { let did = >::ensure_perms(origin)?; Self::ensure_ms(&multisig)?; Self::verify_sender_is_creator(did, &multisig)?; @@ -1125,18 +1125,6 @@ impl Module { } impl MultiSigSubTrait for Module { - fn get_key_signers(multisig: &T::AccountId) -> Vec { - >::iter_prefix_values(multisig) - .filter_map(|signer| { - if let Signatory::Account(key) = signer { - Some(key) - } else { - None - } - }) - .collect() - } - fn is_multisig(account: &T::AccountId) -> bool { >::contains_key(account) } diff --git a/pallets/runtime/ci/src/runtime.rs b/pallets/runtime/ci/src/runtime.rs index 18b54fc260..237ca45145 100644 --- a/pallets/runtime/ci/src/runtime.rs +++ b/pallets/runtime/ci/src/runtime.rs @@ -223,6 +223,7 @@ impl polymesh_common_utilities::traits::identity::Config for Runtime { type IdentityFn = pallet_identity::Module; type SchedulerOrigin = OriginCaller; type InitialPOLYX = InitialPOLYX; + type MultiSigBalanceLimit = polymesh_runtime_common::MultiSigBalanceLimit; } impl pallet_committee::Config for Runtime { diff --git a/pallets/runtime/common/src/lib.rs b/pallets/runtime/common/src/lib.rs index 507ff19a4c..8bb242fe32 100644 --- a/pallets/runtime/common/src/lib.rs +++ b/pallets/runtime/common/src/lib.rs @@ -87,6 +87,8 @@ parameter_types! { pub const TransactionByteFee: Balance = 10 * MILLICENTS; /// We want the noop transaction to cost 0.03 POLYX pub const PolyXBaseFee: Balance = 3 * CENTS; + /// MultiSig balance limit: 1 POLYX + pub const MultiSigBalanceLimit: Balance = POLY; /// The maximum weight of the pips extrinsic `enact_snapshot_results` which equals to /// `MaximumBlockWeight * AvailableBlockRatio`. pub const PipsEnactSnapshotMaximumWeight: Weight = MAXIMUM_BLOCK_WEIGHT * 75 / 100; diff --git a/pallets/runtime/develop/src/runtime.rs b/pallets/runtime/develop/src/runtime.rs index 53121a7675..30c9d76aaa 100644 --- a/pallets/runtime/develop/src/runtime.rs +++ b/pallets/runtime/develop/src/runtime.rs @@ -219,6 +219,7 @@ impl polymesh_common_utilities::traits::identity::Config for Runtime { type IdentityFn = pallet_identity::Module; type SchedulerOrigin = OriginCaller; type InitialPOLYX = InitialPOLYX; + type MultiSigBalanceLimit = polymesh_runtime_common::MultiSigBalanceLimit; } impl pallet_committee::Config for Runtime { diff --git a/pallets/runtime/mainnet/src/runtime.rs b/pallets/runtime/mainnet/src/runtime.rs index 75bd60ba02..63db9b9ef5 100644 --- a/pallets/runtime/mainnet/src/runtime.rs +++ b/pallets/runtime/mainnet/src/runtime.rs @@ -212,6 +212,7 @@ impl polymesh_common_utilities::traits::identity::Config for Runtime { type IdentityFn = pallet_identity::Module; type SchedulerOrigin = OriginCaller; type InitialPOLYX = InitialPOLYX; + type MultiSigBalanceLimit = polymesh_runtime_common::MultiSigBalanceLimit; } impl pallet_committee::Config for Runtime { diff --git a/pallets/runtime/testnet/src/runtime.rs b/pallets/runtime/testnet/src/runtime.rs index c96f7316fa..69ee28b968 100644 --- a/pallets/runtime/testnet/src/runtime.rs +++ b/pallets/runtime/testnet/src/runtime.rs @@ -223,6 +223,7 @@ impl polymesh_common_utilities::traits::identity::Config for Runtime { type IdentityFn = pallet_identity::Module; type SchedulerOrigin = OriginCaller; type InitialPOLYX = InitialPOLYX; + type MultiSigBalanceLimit = polymesh_runtime_common::MultiSigBalanceLimit; } impl pallet_committee::Config for Runtime { diff --git a/pallets/runtime/tests/src/identity_test.rs b/pallets/runtime/tests/src/identity_test.rs index 5d43728b38..495e4c1482 100644 --- a/pallets/runtime/tests/src/identity_test.rs +++ b/pallets/runtime/tests/src/identity_test.rs @@ -22,6 +22,7 @@ use pallet_identity::types::DidRecords as RpcDidRecords; use pallet_identity::{self as identity, DidRecords}; use polymesh_common_utilities::{ asset::AssetSubTrait, + constants::currency::POLY, protocol_fee::ProtocolOp, traits::{ group::GroupTrait, @@ -717,7 +718,7 @@ fn do_remove_secondary_keys_test_with_externalities() { let charlie = User::new(AccountKeyring::Charlie); let dave_key = AccountKeyring::Dave.to_account_id(); - let musig_address = MultiSig::get_next_multisig_address(alice.acc()); + let ms_address = MultiSig::get_next_multisig_address(alice.acc()); assert_ok!(MultiSig::create_multisig( alice.origin(), @@ -735,18 +736,18 @@ fn do_remove_secondary_keys_test_with_externalities() { add_secondary_key(alice.did, bob.acc()); - add_secondary_key(alice.did, musig_address.clone()); + add_secondary_key(alice.did, ms_address.clone()); // Fund the multisig assert_ok!(Balances::transfer( alice.origin(), - musig_address.clone().into(), - 1 + ms_address.clone().into(), + 2 * POLY )); // Check DidRecord. assert_eq!(Identity::get_identity(&dave_key), None); - assert_eq!(Identity::get_identity(&musig_address), Some(alice.did)); + assert_eq!(Identity::get_identity(&ms_address), Some(alice.did)); assert_eq!(Identity::get_identity(&bob_key), Some(alice.did)); // Try removing bob using charlie @@ -758,7 +759,7 @@ fn do_remove_secondary_keys_test_with_externalities() { // Check DidRecord. assert_eq!(Identity::get_identity(&dave_key), None); - assert_eq!(Identity::get_identity(&musig_address), Some(alice.did)); + assert_eq!(Identity::get_identity(&ms_address), Some(alice.did)); assert_eq!(Identity::get_identity(&bob_key), Some(alice.did)); // Try remove bob using alice @@ -770,47 +771,50 @@ fn do_remove_secondary_keys_test_with_externalities() { // Check DidRecord. assert_eq!(Identity::get_identity(&dave_key), None); - assert_eq!(Identity::get_identity(&musig_address), Some(alice.did)); + assert_eq!(Identity::get_identity(&ms_address), Some(alice.did)); assert_eq!(Identity::get_identity(&bob_key), None); // Try removing multisig while it has funds - assert_ok!(Identity::remove_secondary_keys( - alice.origin(), - vec![Signatory::Account(musig_address.clone())] - )); + assert_noop!( + Identity::remove_secondary_keys( + alice.origin(), + vec![Signatory::Account(ms_address.clone())] + ), + Error::MultiSigHasBalance + ); // Check DidRecord. assert_eq!(Identity::get_identity(&dave_key), None); - assert_eq!(Identity::get_identity(&musig_address), Some(alice.did)); + assert_eq!(Identity::get_identity(&ms_address), Some(alice.did)); assert_eq!(Identity::get_identity(&bob_key), None); // Check multisig's signer assert_eq!( - MultiSig::ms_signers(musig_address.clone(), Signatory::Account(dave_key.clone())), + MultiSig::ms_signers(ms_address.clone(), Signatory::Account(dave_key.clone())), true ); // Transfer funds back to Alice assert_ok!(Balances::transfer( - Origin::signed(musig_address.clone()), + Origin::signed(ms_address.clone()), alice.acc().into(), - 1 + 2 * POLY )); // Empty multisig's funds and remove as signer assert_ok!(Identity::remove_secondary_keys( alice.origin(), - vec![Signatory::Account(musig_address.clone())] + vec![Signatory::Account(ms_address.clone())] )); // Check DidRecord. assert_eq!(Identity::get_identity(&dave_key), None); - assert_eq!(Identity::get_identity(&musig_address), None); + assert_eq!(Identity::get_identity(&ms_address), None); assert_eq!(Identity::get_identity(&bob.acc()), None); // Check multisig's signer assert_eq!( - MultiSig::ms_signers(musig_address.clone(), Signatory::Account(dave_key)), + MultiSig::ms_signers(ms_address.clone(), Signatory::Account(dave_key)), true ); } @@ -830,7 +834,7 @@ fn leave_identity_test_with_externalities() { let bob_sk = SecondaryKey::new(bob.signatory_acc(), Permissions::empty()); let dave_key = AccountKeyring::Dave.to_account_id(); - let musig_address = MultiSig::get_next_multisig_address(alice.acc()); + let ms_address = MultiSig::get_next_multisig_address(alice.acc()); assert_ok!(MultiSig::create_multisig( alice.origin(), @@ -862,50 +866,50 @@ fn leave_identity_test_with_externalities() { assert_eq!(Identity::did_records(alice.did).secondary_keys.len(), 0); assert_eq!(Identity::get_identity(&bob.acc()), None); assert_eq!(Identity::get_identity(&dave_key), None); - assert_eq!(Identity::get_identity(&musig_address), None); + assert_eq!(Identity::get_identity(&ms_address), None); - add_secondary_key_with_perms(alice.did, musig_address.clone(), Permissions::empty()); + add_secondary_key_with_perms(alice.did, ms_address.clone(), Permissions::empty()); // send funds to multisig assert_ok!(Balances::transfer( alice.origin(), - musig_address.clone().into(), - 1 + ms_address.clone().into(), + 2 * POLY )); // multisig tries leaving identity while it has funds assert_noop!( - Identity::leave_identity_as_key(Origin::signed(musig_address.clone())), + Identity::leave_identity_as_key(Origin::signed(ms_address.clone())), Error::MultiSigHasBalance ); // Check DidRecord. assert_eq!(Identity::get_identity(&dave_key), None); - assert_eq!(Identity::get_identity(&musig_address), Some(alice.did)); + assert_eq!(Identity::get_identity(&ms_address), Some(alice.did)); // Check multisig's signer assert_eq!( - MultiSig::ms_signers(musig_address.clone(), Signatory::Account(dave_key.clone())), + MultiSig::ms_signers(ms_address.clone(), Signatory::Account(dave_key.clone())), true ); // send funds back to alice from multisig assert_ok!(Balances::transfer( - Origin::signed(musig_address.clone()), + Origin::signed(ms_address.clone()), alice.acc().into(), - 1 + 2 * POLY )); // Empty multisig's funds and remove as signer assert_ok!(Identity::leave_identity_as_key(Origin::signed( - musig_address.clone() + ms_address.clone() ))); // Check DidRecord. assert_eq!(Identity::get_identity(&dave_key), None); - assert_eq!(Identity::get_identity(&musig_address), None); + assert_eq!(Identity::get_identity(&ms_address), None); // Check multisig's signer assert_eq!( - MultiSig::ms_signers(musig_address.clone(), Signatory::Account(dave_key)), + MultiSig::ms_signers(ms_address.clone(), Signatory::Account(dave_key)), true ); } diff --git a/pallets/runtime/tests/src/multisig.rs b/pallets/runtime/tests/src/multisig.rs index 8e78624b9b..fd81f4992c 100644 --- a/pallets/runtime/tests/src/multisig.rs +++ b/pallets/runtime/tests/src/multisig.rs @@ -5,7 +5,8 @@ use super::{ }; use frame_support::{assert_noop, assert_ok}; use pallet_multisig as multisig; -use polymesh_primitives::{AccountId, Permissions, SecondaryKey, Signatory}; +use polymesh_common_utilities::constants::currency::POLY; +use polymesh_primitives::{AccountId, AuthorizationData, Permissions, SecondaryKey, Signatory}; use test_client::AccountKeyring; type Balances = pallet_balances::Module; @@ -24,13 +25,13 @@ fn create_multisig() { let alice = User::new(AccountKeyring::Alice); let bob = User::new(AccountKeyring::Bob); - let musig_address = MultiSig::get_next_multisig_address(alice.acc()); + let ms_address = MultiSig::get_next_multisig_address(alice.acc()); let signers = || vec![Signatory::from(alice.did), Signatory::from(bob.did)]; let create = |signers, nsigs| MultiSig::create_multisig(alice.origin(), signers, nsigs); assert_ok!(create(signers(), 1)); - assert_eq!(MultiSig::ms_signs_required(musig_address), 1); + assert_eq!(MultiSig::ms_signs_required(ms_address), 1); assert_noop!(create(vec![], 10), Error::NoSigners); assert_noop!(create(signers(), 0), Error::RequiredSignaturesOutOfBounds); @@ -46,8 +47,7 @@ fn join_multisig() { let bob = Origin::signed(AccountKeyring::Bob.to_account_id()); let bob_signer = Signatory::Account(AccountKeyring::Bob.to_account_id()); - let musig_address = - MultiSig::get_next_multisig_address(AccountKeyring::Alice.to_account_id()); + let ms_address = MultiSig::get_next_multisig_address(AccountKeyring::Alice.to_account_id()); assert_ok!(MultiSig::create_multisig( alice.clone(), @@ -56,12 +56,12 @@ fn join_multisig() { )); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), Signatory::from(alice_did)), + MultiSig::ms_signers(ms_address.clone(), Signatory::from(alice_did)), false ); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), bob_signer.clone()), + MultiSig::ms_signers(ms_address.clone(), bob_signer.clone()), false ); @@ -80,11 +80,11 @@ fn join_multisig() { )); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), Signatory::from(alice_did)), + MultiSig::ms_signers(ms_address.clone(), Signatory::from(alice_did)), true ); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), bob_signer.clone()), + MultiSig::ms_signers(ms_address.clone(), bob_signer.clone()), true ); @@ -112,8 +112,7 @@ fn change_multisig_sigs_required() { let bob = Origin::signed(AccountKeyring::Bob.to_account_id()); let bob_signer = Signatory::Account(AccountKeyring::Bob.to_account_id()); - let musig_address = - MultiSig::get_next_multisig_address(AccountKeyring::Alice.to_account_id()); + let ms_address = MultiSig::get_next_multisig_address(AccountKeyring::Alice.to_account_id()); assert_ok!(MultiSig::create_multisig( alice.clone(), @@ -137,14 +136,11 @@ fn change_multisig_sigs_required() { )); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), Signatory::from(alice_did)), + MultiSig::ms_signers(ms_address.clone(), Signatory::from(alice_did)), true ); - assert_eq!( - MultiSig::ms_signers(musig_address.clone(), bob_signer), - true - ); + assert_eq!(MultiSig::ms_signers(ms_address.clone(), bob_signer), true); let call = Box::new(Call::MultiSig(multisig::Call::change_sigs_required { sigs_required: 1, @@ -153,15 +149,15 @@ fn change_multisig_sigs_required() { set_curr_did(Some(alice_did)); assert_ok!(MultiSig::create_proposal_as_key( bob.clone(), - musig_address.clone(), + ms_address.clone(), call, None, false )); - assert_eq!(MultiSig::ms_signs_required(musig_address.clone()), 2); + assert_eq!(MultiSig::ms_signs_required(ms_address.clone()), 2); - let proposal = (musig_address.clone(), 0); + let proposal = (ms_address.clone(), 0); let proposal_details = MultiSig::proposal_detail(&proposal); assert_eq!( proposal_details.status, @@ -171,11 +167,11 @@ fn change_multisig_sigs_required() { set_curr_did(Some(alice_did)); assert_ok!(MultiSig::approve_as_identity( alice.clone(), - musig_address.clone(), + ms_address.clone(), 0 )); next_block(); - assert_eq!(MultiSig::ms_signs_required(musig_address), 1); + assert_eq!(MultiSig::ms_signs_required(ms_address), 1); }); } @@ -186,8 +182,7 @@ fn create_or_approve_change_multisig_sigs_required() { let alice = Origin::signed(AccountKeyring::Alice.to_account_id()); let bob = Origin::signed(AccountKeyring::Bob.to_account_id()); let bob_signer = Signatory::Account(AccountKeyring::Bob.to_account_id()); - let musig_address = - MultiSig::get_next_multisig_address(AccountKeyring::Alice.to_account_id()); + let ms_address = MultiSig::get_next_multisig_address(AccountKeyring::Alice.to_account_id()); assert_ok!(MultiSig::create_multisig( alice.clone(), vec![Signatory::from(alice_did), bob_signer.clone()], @@ -206,34 +201,31 @@ fn create_or_approve_change_multisig_sigs_required() { bob_auth_id )); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), Signatory::from(alice_did)), - true - ); - assert_eq!( - MultiSig::ms_signers(musig_address.clone(), bob_signer), + MultiSig::ms_signers(ms_address.clone(), Signatory::from(alice_did)), true ); + assert_eq!(MultiSig::ms_signers(ms_address.clone(), bob_signer), true); let call = Box::new(Call::MultiSig(multisig::Call::change_sigs_required { sigs_required: 1, })); assert_ok!(MultiSig::create_or_approve_proposal_as_key( bob.clone(), - musig_address.clone(), + ms_address.clone(), call.clone(), None, false )); next_block(); - assert_eq!(MultiSig::ms_signs_required(musig_address.clone()), 2); + assert_eq!(MultiSig::ms_signs_required(ms_address.clone()), 2); assert_ok!(MultiSig::create_or_approve_proposal_as_identity( alice.clone(), - musig_address.clone(), + ms_address.clone(), call, None, false )); next_block(); - assert_eq!(MultiSig::ms_signs_required(musig_address), 1); + assert_eq!(MultiSig::ms_signs_required(ms_address), 1); }); } @@ -246,8 +238,7 @@ fn remove_multisig_signer() { let bob = Origin::signed(AccountKeyring::Bob.to_account_id()); let bob_signer = Signatory::Account(AccountKeyring::Bob.to_account_id()); - let musig_address = - MultiSig::get_next_multisig_address(AccountKeyring::Alice.to_account_id()); + let ms_address = MultiSig::get_next_multisig_address(AccountKeyring::Alice.to_account_id()); assert_ok!(MultiSig::create_multisig( alice.clone(), @@ -255,7 +246,7 @@ fn remove_multisig_signer() { 1, )); - assert_eq!(MultiSig::number_of_signers(musig_address.clone()), 0); + assert_eq!(MultiSig::number_of_signers(ms_address.clone()), 0); let alice_auth_id = get_last_auth_id(&alice_signer); @@ -265,7 +256,7 @@ fn remove_multisig_signer() { alice_auth_id )); - assert_eq!(MultiSig::number_of_signers(musig_address.clone()), 1); + assert_eq!(MultiSig::number_of_signers(ms_address.clone()), 1); let bob_auth_id = get_last_auth_id(&bob_signer); @@ -274,15 +265,15 @@ fn remove_multisig_signer() { bob_auth_id )); - assert_eq!(MultiSig::number_of_signers(musig_address.clone()), 2); + assert_eq!(MultiSig::number_of_signers(ms_address.clone()), 2); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), alice_signer.clone()), + MultiSig::ms_signers(ms_address.clone(), alice_signer.clone()), true ); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), bob_signer.clone()), + MultiSig::ms_signers(ms_address.clone(), bob_signer.clone()), true ); @@ -292,7 +283,7 @@ fn remove_multisig_signer() { None ); // No identity as multisig has not been set as a secondary / primary key - assert_eq!(Identity::get_identity(&musig_address), None); + assert_eq!(Identity::get_identity(&ms_address), None); let call = Box::new(Call::MultiSig(multisig::Call::remove_multisig_signer { signer: bob_signer.clone(), @@ -300,7 +291,7 @@ fn remove_multisig_signer() { assert_ok!(MultiSig::create_proposal_as_identity( alice.clone(), - musig_address.clone(), + ms_address.clone(), call, None, false @@ -308,17 +299,14 @@ fn remove_multisig_signer() { next_block(); - assert_eq!(MultiSig::number_of_signers(musig_address.clone()), 1); + assert_eq!(MultiSig::number_of_signers(ms_address.clone()), 1); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), alice_signer.clone()), + MultiSig::ms_signers(ms_address.clone(), alice_signer.clone()), true ); - assert_eq!( - MultiSig::ms_signers(musig_address.clone(), bob_signer), - false - ); + assert_eq!(MultiSig::ms_signers(ms_address.clone(), bob_signer), false); assert_eq!( Identity::get_identity(&AccountKeyring::Bob.to_account_id()), @@ -333,7 +321,7 @@ fn remove_multisig_signer() { assert_ok!(MultiSig::create_proposal_as_identity( alice.clone(), - musig_address.clone(), + ms_address.clone(), remove_alice, None, false @@ -342,10 +330,7 @@ fn remove_multisig_signer() { next_block(); // Alice not removed since that would've broken the multi sig. - assert_eq!( - MultiSig::ms_signers(musig_address.clone(), alice_signer), - true - ); + assert_eq!(MultiSig::ms_signers(ms_address.clone(), alice_signer), true); }); } @@ -359,8 +344,7 @@ fn add_multisig_signer() { let charlie = Origin::signed(AccountKeyring::Charlie.to_account_id()); let charlie_signer = Signatory::Account(AccountKeyring::Charlie.to_account_id()); - let musig_address = - MultiSig::get_next_multisig_address(AccountKeyring::Alice.to_account_id()); + let ms_address = MultiSig::get_next_multisig_address(AccountKeyring::Alice.to_account_id()); assert_ok!(MultiSig::create_multisig( alice.clone(), @@ -377,11 +361,11 @@ fn add_multisig_signer() { )); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), Signatory::from(alice_did)), + MultiSig::ms_signers(ms_address.clone(), Signatory::from(alice_did)), true ); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), bob_signer.clone()), + MultiSig::ms_signers(ms_address.clone(), bob_signer.clone()), false ); @@ -391,7 +375,7 @@ fn add_multisig_signer() { assert_ok!(MultiSig::create_proposal_as_identity( alice.clone(), - musig_address.clone(), + ms_address.clone(), call, None, false @@ -405,7 +389,7 @@ fn add_multisig_signer() { assert_ok!(MultiSig::create_proposal_as_identity( alice.clone(), - musig_address.clone(), + ms_address.clone(), call2, None, false @@ -414,12 +398,12 @@ fn add_multisig_signer() { next_block(); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), Signatory::from(alice_did)), + MultiSig::ms_signers(ms_address.clone(), Signatory::from(alice_did)), true ); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), bob_signer.clone()), + MultiSig::ms_signers(ms_address.clone(), bob_signer.clone()), false ); @@ -430,7 +414,7 @@ fn add_multisig_signer() { assert_ok!(MultiSig::make_multisig_primary( alice.clone(), - musig_address.clone(), + ms_address.clone(), None )); @@ -440,7 +424,7 @@ fn add_multisig_signer() { )); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), charlie_signer), + MultiSig::ms_signers(ms_address.clone(), charlie_signer), true ); assert!(Identity::change_cdd_requirement_for_mk_rotation(root.clone(), true).is_ok()); @@ -458,10 +442,7 @@ fn add_multisig_signer() { bob_auth_id )); - assert_eq!( - MultiSig::ms_signers(musig_address.clone(), bob_signer), - true - ); + assert_eq!(MultiSig::ms_signers(ms_address.clone(), bob_signer), true); }); } @@ -473,8 +454,7 @@ fn make_multisig_primary() { let bob = Origin::signed(AccountKeyring::Bob.to_account_id()); let _bob_did = register_keyring_account(AccountKeyring::Bob).unwrap(); - let musig_address = - MultiSig::get_next_multisig_address(AccountKeyring::Alice.to_account_id()); + let ms_address = MultiSig::get_next_multisig_address(AccountKeyring::Alice.to_account_id()); assert_ok!(MultiSig::create_multisig( alice.clone(), @@ -488,22 +468,79 @@ fn make_multisig_primary() { ); assert_noop!( - MultiSig::make_multisig_primary(bob.clone(), musig_address.clone(), None), + MultiSig::make_multisig_primary(bob.clone(), ms_address.clone(), None), Error::IdentityNotCreator ); assert_ok!(MultiSig::make_multisig_primary( alice.clone(), - musig_address.clone(), + ms_address.clone(), + None + )); + + assert_eq!(Identity::did_records(alice_did).primary_key, ms_address); + }); +} + +#[test] +fn rotate_multisig_primary_key_with_balance() { + ExtBuilder::default().monied(true).build().execute_with(|| { + let alice = User::new(AccountKeyring::Alice); + let bob = User::new(AccountKeyring::Bob); + let dave_key = AccountKeyring::Dave.to_account_id(); + let charlie_key = AccountKeyring::Charlie.to_account_id(); + + let ms_address = MultiSig::get_next_multisig_address(alice.acc()); + + assert_ok!(MultiSig::create_multisig( + alice.origin(), + vec![Signatory::Account(dave_key)], + 1, + )); + + // Alice's primary key hasn't changed. + assert_eq!(Identity::did_records(alice.did).primary_key, alice.acc()); + + // Bob can't make the MultiSig account his primary key. + assert_noop!( + MultiSig::make_multisig_primary(bob.origin(), ms_address.clone(), None), + Error::IdentityNotCreator + ); + + // Make the MultiSig account Alice's primary key. + assert_ok!(MultiSig::make_multisig_primary( + alice.origin(), + ms_address.clone(), None )); - assert_eq!(Identity::did_records(alice_did).primary_key, musig_address); + // Alice's primary key is now the MultiSig. + assert_eq!(Identity::did_records(alice.did).primary_key, ms_address); + + // Fund the MultiSig. + assert_ok!(Balances::transfer( + bob.origin(), + ms_address.clone().into(), + 2 * POLY + )); + + // Add RotatePrimaryKey authorization for charlie_key to become the primary_key for Alice. + let auth_id = Identity::add_auth( + alice.did, + Signatory::Account(charlie_key.clone()), + AuthorizationData::RotatePrimaryKey, + None, + ); + // Fails because the current MultiSig primary_key has a balance. + assert_noop!( + Identity::accept_primary_key(Origin::signed(charlie_key.clone()), auth_id, None), + IdError::MultiSigHasBalance + ); }); } #[test] -fn make_multisig_signer() { +fn make_multisig_secondary_key() { ExtBuilder::default().monied(true).build().execute_with(|| { let alice = User::new(AccountKeyring::Alice); let bob = User::new(AccountKeyring::Bob); @@ -516,17 +553,18 @@ fn make_multisig_signer() { 1, )); // The desired secondary key record. - let musig_secondary = + let multisig_secondary = SecondaryKey::new(Signatory::Account(multisig.clone()), Permissions::empty()); let has_ms_sk = || { Identity::did_records(alice.did) .secondary_keys - .contains(&musig_secondary) + .contains(&multisig_secondary) }; assert!(!has_ms_sk()); - let mk_ms_signer = |u: User| MultiSig::make_multisig_signer(u.origin(), multisig.clone()); + let mk_ms_signer = + |u: User| MultiSig::make_multisig_secondary(u.origin(), multisig.clone()); assert_noop!(mk_ms_signer(bob), Error::IdentityNotCreator); assert_ok!(mk_ms_signer(alice)); @@ -545,8 +583,7 @@ fn remove_multisig_signers_via_creator() { let bob = Origin::signed(AccountKeyring::Bob.to_account_id()); let bob_signer = Signatory::Account(AccountKeyring::Bob.to_account_id()); - let musig_address = - MultiSig::get_next_multisig_address(AccountKeyring::Alice.to_account_id()); + let ms_address = MultiSig::get_next_multisig_address(AccountKeyring::Alice.to_account_id()); assert_ok!(MultiSig::create_multisig( alice.clone(), @@ -554,7 +591,7 @@ fn remove_multisig_signers_via_creator() { 1, )); - assert_eq!(MultiSig::number_of_signers(musig_address.clone()), 0); + assert_eq!(MultiSig::number_of_signers(ms_address.clone()), 0); let alice_auth_id = get_last_auth_id(&alice_signer.clone()); @@ -563,7 +600,7 @@ fn remove_multisig_signers_via_creator() { alice_auth_id )); - assert_eq!(MultiSig::number_of_signers(musig_address.clone()), 1); + assert_eq!(MultiSig::number_of_signers(ms_address.clone()), 1); let bob_auth_id = get_last_auth_id(&bob_signer.clone()); @@ -572,22 +609,22 @@ fn remove_multisig_signers_via_creator() { bob_auth_id )); - assert_eq!(MultiSig::number_of_signers(musig_address.clone()), 2); + assert_eq!(MultiSig::number_of_signers(ms_address.clone()), 2); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), alice_signer.clone()), + MultiSig::ms_signers(ms_address.clone(), alice_signer.clone()), true ); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), bob_signer.clone()), + MultiSig::ms_signers(ms_address.clone(), bob_signer.clone()), true ); assert_noop!( MultiSig::remove_multisig_signers_via_creator( bob.clone(), - musig_address.clone(), + ms_address.clone(), vec![bob_signer.clone()] ), Error::IdentityNotCreator @@ -595,36 +632,33 @@ fn remove_multisig_signers_via_creator() { assert_ok!(MultiSig::remove_multisig_signers_via_creator( alice.clone(), - musig_address.clone(), + ms_address.clone(), vec![bob_signer.clone()] )); - assert_eq!(MultiSig::number_of_signers(musig_address.clone()), 1); + assert_eq!(MultiSig::number_of_signers(ms_address.clone()), 1); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), alice_signer.clone()), + MultiSig::ms_signers(ms_address.clone(), alice_signer.clone()), true ); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), bob_signer.clone()), + MultiSig::ms_signers(ms_address.clone(), bob_signer.clone()), false ); assert_noop!( MultiSig::remove_multisig_signers_via_creator( alice.clone(), - musig_address.clone(), + ms_address.clone(), vec![alice_signer.clone()] ), Error::NotEnoughSigners ); // Alice not removed since that would've broken the multi sig. - assert_eq!( - MultiSig::ms_signers(musig_address.clone(), alice_signer), - true - ); + assert_eq!(MultiSig::ms_signers(ms_address.clone(), alice_signer), true); }); } @@ -636,8 +670,7 @@ fn add_multisig_signers_via_creator() { let bob = Origin::signed(AccountKeyring::Bob.to_account_id()); let bob_signer = Signatory::Account(AccountKeyring::Bob.to_account_id()); - let musig_address = - MultiSig::get_next_multisig_address(AccountKeyring::Alice.to_account_id()); + let ms_address = MultiSig::get_next_multisig_address(AccountKeyring::Alice.to_account_id()); assert_ok!(MultiSig::create_multisig( alice.clone(), @@ -653,18 +686,18 @@ fn add_multisig_signers_via_creator() { )); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), Signatory::from(alice_did)), + MultiSig::ms_signers(ms_address.clone(), Signatory::from(alice_did)), true ); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), bob_signer.clone()), + MultiSig::ms_signers(ms_address.clone(), bob_signer.clone()), false ); assert_noop!( MultiSig::add_multisig_signers_via_creator( bob.clone(), - musig_address.clone(), + ms_address.clone(), vec![bob_signer.clone()] ), Error::IdentityNotCreator @@ -672,17 +705,17 @@ fn add_multisig_signers_via_creator() { assert_ok!(MultiSig::add_multisig_signers_via_creator( alice.clone(), - musig_address.clone(), + ms_address.clone(), vec![bob_signer.clone()] )); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), Signatory::from(alice_did)), + MultiSig::ms_signers(ms_address.clone(), Signatory::from(alice_did)), true ); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), bob_signer.clone()), + MultiSig::ms_signers(ms_address.clone(), bob_signer.clone()), false ); @@ -693,10 +726,7 @@ fn add_multisig_signers_via_creator() { bob_auth_id )); - assert_eq!( - MultiSig::ms_signers(musig_address.clone(), bob_signer), - true - ); + assert_eq!(MultiSig::ms_signers(ms_address.clone(), bob_signer), true); }); } @@ -709,8 +739,7 @@ fn check_for_approval_closure() { let eve = Origin::signed(AccountKeyring::Eve.to_account_id()); let bob_signer = Signatory::Account(AccountKeyring::Bob.to_account_id()); - let musig_address = - MultiSig::get_next_multisig_address(AccountKeyring::Alice.to_account_id()); + let ms_address = MultiSig::get_next_multisig_address(AccountKeyring::Alice.to_account_id()); assert_ok!(MultiSig::create_multisig( alice.clone(), @@ -727,7 +756,7 @@ fn check_for_approval_closure() { )); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), Signatory::from(alice_did)), + MultiSig::ms_signers(ms_address.clone(), Signatory::from(alice_did)), true ); @@ -740,12 +769,12 @@ fn check_for_approval_closure() { )); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), Signatory::from(eve_did)), + MultiSig::ms_signers(ms_address.clone(), Signatory::from(eve_did)), true ); assert_eq!( - MultiSig::ms_signers(musig_address.clone(), bob_signer.clone()), + MultiSig::ms_signers(ms_address.clone(), bob_signer.clone()), false ); @@ -755,20 +784,20 @@ fn check_for_approval_closure() { set_curr_did(Some(alice_did)); assert_ok!(MultiSig::create_proposal_as_identity( alice.clone(), - musig_address.clone(), + ms_address.clone(), call, None, false )); next_block(); - let proposal_id = MultiSig::ms_tx_done(musig_address.clone()) - 1; + let proposal_id = MultiSig::ms_tx_done(ms_address.clone()) - 1; let bob_auth_id = get_last_auth_id(&bob_signer.clone()); let multi_purpose_nonce = Identity::multi_purpose_nonce(); set_curr_did(Some(eve_did)); assert_noop!( - MultiSig::approve_as_identity(eve.clone(), musig_address.clone(), proposal_id), + MultiSig::approve_as_identity(eve.clone(), ms_address.clone(), proposal_id), Error::ProposalAlreadyExecuted ); @@ -782,7 +811,7 @@ fn check_for_approval_closure() { after_extra_approval_multi_purpose_nonce ); assert_eq!( - MultiSig::proposal_detail(&(musig_address.clone(), proposal_id)).approvals, + MultiSig::proposal_detail(&(ms_address.clone(), proposal_id)).approvals, 1 ); }); @@ -806,8 +835,7 @@ fn reject_proposals() { let eve_key = AccountKeyring::Eve.to_account_id(); let eve = Origin::signed(AccountKeyring::Eve.to_account_id()); - let musig_address = - MultiSig::get_next_multisig_address(AccountKeyring::Alice.to_account_id()); + let ms_address = MultiSig::get_next_multisig_address(AccountKeyring::Alice.to_account_id()); setup_multisig( alice.clone(), @@ -830,46 +858,46 @@ fn reject_proposals() { set_curr_did(Some(alice_did)); assert_ok!(MultiSig::create_proposal_as_identity( alice.clone(), - musig_address.clone(), + ms_address.clone(), call1, None, false )); - let proposal_id1 = MultiSig::ms_tx_done(musig_address.clone()) - 1; + let proposal_id1 = MultiSig::ms_tx_done(ms_address.clone()) - 1; assert_ok!(MultiSig::create_proposal_as_identity( alice.clone(), - musig_address.clone(), + ms_address.clone(), call2, None, true )); - let proposal_id2 = MultiSig::ms_tx_done(musig_address.clone()) - 1; + let proposal_id2 = MultiSig::ms_tx_done(ms_address.clone()) - 1; // Proposal with auto close disabled can be voted on even after rejection. set_curr_did(Some(bob_did)); assert_ok!(MultiSig::reject_as_identity( bob.clone(), - musig_address.clone(), + ms_address.clone(), proposal_id1 )); set_curr_did(Some(charlie_did)); assert_ok!(MultiSig::reject_as_identity( charlie.clone(), - musig_address.clone(), + ms_address.clone(), proposal_id1 )); assert_ok!(MultiSig::reject_as_key( eve.clone(), - musig_address.clone(), + ms_address.clone(), proposal_id1 )); set_curr_did(Some(dave_did)); assert_ok!(MultiSig::approve_as_identity( dave.clone(), - musig_address.clone(), + ms_address.clone(), proposal_id1 )); - let proposal_details1 = MultiSig::proposal_detail(&(musig_address.clone(), proposal_id1)); + let proposal_details1 = MultiSig::proposal_detail(&(ms_address.clone(), proposal_id1)); assert_eq!(proposal_details1.approvals, 2); assert_eq!(proposal_details1.rejections, 3); assert_eq!( @@ -882,27 +910,27 @@ fn reject_proposals() { set_curr_did(Some(bob_did)); assert_ok!(MultiSig::reject_as_identity( bob.clone(), - musig_address.clone(), + ms_address.clone(), proposal_id2 )); set_curr_did(Some(charlie_did)); assert_ok!(MultiSig::reject_as_identity( charlie.clone(), - musig_address.clone(), + ms_address.clone(), proposal_id2 )); assert_ok!(MultiSig::reject_as_key( eve.clone(), - musig_address.clone(), + ms_address.clone(), proposal_id2 )); set_curr_did(Some(dave_did)); assert_noop!( - MultiSig::approve_as_identity(dave.clone(), musig_address.clone(), proposal_id2), + MultiSig::approve_as_identity(dave.clone(), ms_address.clone(), proposal_id2), Error::ProposalAlreadyRejected ); - let proposal_details2 = MultiSig::proposal_detail(&(musig_address.clone(), proposal_id2)); + let proposal_details2 = MultiSig::proposal_detail(&(ms_address.clone(), proposal_id2)); next_block(); assert_eq!(proposal_details2.approvals, 1); assert_eq!(proposal_details2.rejections, 3); @@ -922,8 +950,7 @@ fn expired_proposals() { let charlie_did = register_keyring_account(AccountKeyring::Charlie).unwrap(); let charlie = Origin::signed(AccountKeyring::Charlie.to_account_id()); - let musig_address = - MultiSig::get_next_multisig_address(AccountKeyring::Alice.to_account_id()); + let ms_address = MultiSig::get_next_multisig_address(AccountKeyring::Alice.to_account_id()); setup_multisig( alice.clone(), @@ -943,14 +970,14 @@ fn expired_proposals() { set_curr_did(Some(alice_did)); assert_ok!(MultiSig::create_proposal_as_identity( alice.clone(), - musig_address.clone(), + ms_address.clone(), call, Some(100u64), false )); - let proposal_id = MultiSig::ms_tx_done(musig_address.clone()) - 1; - let mut proposal_details = MultiSig::proposal_detail(&(musig_address.clone(), proposal_id)); + let proposal_id = MultiSig::ms_tx_done(ms_address.clone()) - 1; + let mut proposal_details = MultiSig::proposal_detail(&(ms_address.clone(), proposal_id)); assert_eq!(proposal_details.approvals, 1); assert_eq!( proposal_details.status, @@ -960,11 +987,11 @@ fn expired_proposals() { set_curr_did(Some(bob_did)); assert_ok!(MultiSig::approve_as_identity( bob.clone(), - musig_address.clone(), + ms_address.clone(), proposal_id )); - proposal_details = MultiSig::proposal_detail(&(musig_address.clone(), proposal_id)); + proposal_details = MultiSig::proposal_detail(&(ms_address.clone(), proposal_id)); assert_eq!(proposal_details.approvals, 2); assert_eq!( proposal_details.status, @@ -975,11 +1002,11 @@ fn expired_proposals() { Timestamp::set_timestamp(expires_at); set_curr_did(Some(charlie_did)); assert_noop!( - MultiSig::approve_as_identity(charlie.clone(), musig_address.clone(), proposal_id), + MultiSig::approve_as_identity(charlie.clone(), ms_address.clone(), proposal_id), Error::ProposalExpired ); - proposal_details = MultiSig::proposal_detail(&(musig_address.clone(), proposal_id)); + proposal_details = MultiSig::proposal_detail(&(ms_address.clone(), proposal_id)); assert_eq!(proposal_details.approvals, 2); assert_eq!( proposal_details.status, @@ -990,11 +1017,11 @@ fn expired_proposals() { Timestamp::set_timestamp(expires_at - 1); assert_ok!(MultiSig::approve_as_identity( charlie.clone(), - musig_address.clone(), + ms_address.clone(), proposal_id )); - proposal_details = MultiSig::proposal_detail(&(musig_address.clone(), proposal_id)); + proposal_details = MultiSig::proposal_detail(&(ms_address.clone(), proposal_id)); assert_eq!(proposal_details.approvals, 3); assert_eq!( proposal_details.status, diff --git a/pallets/runtime/tests/src/staking/mock.rs b/pallets/runtime/tests/src/staking/mock.rs index 9812550d14..0755d18b48 100644 --- a/pallets/runtime/tests/src/staking/mock.rs +++ b/pallets/runtime/tests/src/staking/mock.rs @@ -344,6 +344,7 @@ impl polymesh_common_utilities::traits::identity::Config for Test { type IdentityFn = identity::Module; type SchedulerOrigin = OriginCaller; type InitialPOLYX = InitialPOLYX; + type MultiSigBalanceLimit = polymesh_runtime_common::MultiSigBalanceLimit; } parameter_types! { @@ -467,9 +468,6 @@ impl AssetSubTrait for Test { } impl MultiSigSubTrait for Test { - fn get_key_signers(_multisig: &AccountId) -> Vec { - unimplemented!() - } fn is_multisig(_account: &AccountId) -> bool { unimplemented!() } diff --git a/pallets/runtime/tests/src/storage.rs b/pallets/runtime/tests/src/storage.rs index 786c3d6e00..b4cd81dce6 100644 --- a/pallets/runtime/tests/src/storage.rs +++ b/pallets/runtime/tests/src/storage.rs @@ -569,6 +569,7 @@ impl polymesh_common_utilities::traits::identity::Config for TestStorage { type IdentityFn = identity::Module; type SchedulerOrigin = OriginCaller; type InitialPOLYX = InitialPOLYX; + type MultiSigBalanceLimit = polymesh_runtime_common::MultiSigBalanceLimit; } pub struct TestSessionHandler; diff --git a/pallets/weights/src/pallet_multisig.rs b/pallets/weights/src/pallet_multisig.rs index 18ad79b3a7..383f2dfb94 100644 --- a/pallets/weights/src/pallet_multisig.rs +++ b/pallets/weights/src/pallet_multisig.rs @@ -142,7 +142,7 @@ impl pallet_multisig::WeightInfo for WeightInfo { .saturating_add(DbWeight::get().reads(4 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } - fn make_multisig_signer() -> Weight { + fn make_multisig_secondary() -> Weight { (76_564_000 as Weight) .saturating_add(DbWeight::get().reads(5 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) diff --git a/scripts/cli/src/interfaces/lookup.ts b/scripts/cli/src/interfaces/lookup.ts index 3b7568cc83..be72db1a86 100644 --- a/scripts/cli/src/interfaces/lookup.ts +++ b/scripts/cli/src/interfaces/lookup.ts @@ -2040,7 +2040,7 @@ export default { change_sigs_required: { sigsRequired: 'u64', }, - make_multisig_signer: { + make_multisig_secondary: { multisig: 'AccountId32', }, make_multisig_primary: { From a91fe204da80d6cb4018c5beef4a4710c0f65f8d Mon Sep 17 00:00:00 2001 From: Joel Moore <47923231+JMoore96@users.noreply.github.com> Date: Fri, 25 Mar 2022 11:53:41 -0400 Subject: [PATCH 32/53] MESH-1792/ improving signer already linked errors (#1226) * modified errors * update comment Co-authored-by: Mazdak Farrokhzad Co-authored-by: Mazdak Farrokhzad Co-authored-by: Robert Gabriel Jakabosky --- pallets/multisig/src/lib.rs | 10 ++++++---- pallets/runtime/tests/src/multisig.rs | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/pallets/multisig/src/lib.rs b/pallets/multisig/src/lib.rs index e1713dc25b..e17cf74234 100644 --- a/pallets/multisig/src/lib.rs +++ b/pallets/multisig/src/lib.rs @@ -653,7 +653,9 @@ decl_error! { /// Changing multisig parameters not allowed since multisig is a primary key. ChangeNotAllowed, /// Signer is an account key that is already associated with a multisig. - SignerAlreadyLinked, + SignerAlreadyLinkedToMultisig, + /// Signer is an account key that is already associated with an identity. + SignerAlreadyLinkedToIdentity, /// Current DID is missing MissingCurrentIdentity, /// The function can only be called by the primary key of the did @@ -1046,16 +1048,16 @@ impl Module { // Don't allow a signer key that is already a secondary key on another multisig ensure!( !>::contains_key(key), - Error::::SignerAlreadyLinked + Error::::SignerAlreadyLinkedToMultisig ); // Don't allow a signer key that is already a secondary key on another identity ensure!( !>::contains_key(key), - Error::::SignerAlreadyLinked + Error::::SignerAlreadyLinkedToIdentity ); // Don't allow a multisig to add itself as a signer to itself // NB - you can add a multisig as a signer to a different multisig - ensure!(key != &multisig, Error::::SignerAlreadyLinked); + ensure!(key != &multisig, Error::::SignerAlreadyLinkedToMultisig); } let ms_identity = >::get(&multisig); diff --git a/pallets/runtime/tests/src/multisig.rs b/pallets/runtime/tests/src/multisig.rs index fd81f4992c..3be383714c 100644 --- a/pallets/runtime/tests/src/multisig.rs +++ b/pallets/runtime/tests/src/multisig.rs @@ -99,7 +99,7 @@ fn join_multisig() { set_curr_did(Some(alice_did)); assert_noop!( MultiSig::accept_multisig_signer_as_key(bob.clone(), bob_auth_id2), - Error::SignerAlreadyLinked + Error::SignerAlreadyLinkedToMultisig ); }); } From d41d232b644e50cf0dde2171c17d8f6813d0a574 Mon Sep 17 00:00:00 2001 From: Joel Moore <47923231+JMoore96@users.noreply.github.com> Date: Mon, 28 Mar 2022 03:25:05 -0400 Subject: [PATCH 33/53] MESH-1767 - Add secondary key and permissions length checks to `cdd_register_did` (#1221) * modified base_cdd_register_did function * minor change * minor change * minor change and formatting * minor changes and comments Co-authored-by: Adam Dossa Co-authored-by: Robert Gabriel Jakabosky --- pallets/identity/src/claims.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/pallets/identity/src/claims.rs b/pallets/identity/src/claims.rs index c71f8eb2e8..408a343cef 100644 --- a/pallets/identity/src/claims.rs +++ b/pallets/identity/src/claims.rs @@ -13,7 +13,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -use crate::{Claim1stKey, Claim2ndKey, Claims, DidRecords, Error, Module}; +use crate::{Claim1stKey, Claim2ndKey, Claims, DidRecord, DidRecords, Error, Module}; use core::convert::From; use frame_support::{ dispatch::{DispatchError, DispatchResult}, @@ -481,6 +481,23 @@ impl Module { // Sender has to be part of CDDProviders Self::ensure_authorized_cdd_provider(cdd_did)?; + let record = DidRecord { + ..Default::default() + }; + + // Calculates the cost complexity of the SK's permissions. + let cost = + secondary_keys + .iter() + .try_fold(0, |cost, auth| -> Result { + // Check limit for this SK's permissions. + Self::ensure_perms_length_limited(&auth.permissions)?; + Ok(cost.saturating_add(auth.permissions.complexity())) + })?; + + // Check secondary key limits. + Self::ensure_secondary_keys_limited(&record, secondary_keys.len(), cost)?; + // Register Identity let target_did = Self::_register_did( target_account, From 8637668d29740b016fb67c5d017c9203c51015db Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 30 Mar 2022 09:07:51 +0100 Subject: [PATCH 34/53] Bump minimist from 1.2.5 to 1.2.6 in /scripts/cli (#1228) Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6. - [Release notes](https://github.com/substack/minimist/releases) - [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6) --- updated-dependencies: - dependency-name: minimist dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- scripts/cli/package-lock.json | 14 +++++++------- scripts/cli/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/scripts/cli/package-lock.json b/scripts/cli/package-lock.json index 99383dc6ae..6c6f4e1752 100644 --- a/scripts/cli/package-lock.json +++ b/scripts/cli/package-lock.json @@ -26,7 +26,7 @@ "figlet": "1.5.0", "fp-ts": "2.9.5", "inquirer": "7.3.3", - "minimist": "1.2.5", + "minimist": "1.2.6", "nodejs-fs-utils": "1.2.5", "path": "0.12.7", "pm2": "^5.1.1", @@ -6534,9 +6534,9 @@ } }, "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "node_modules/minipass": { "version": "2.9.0", @@ -14896,9 +14896,9 @@ } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "minipass": { "version": "2.9.0", diff --git a/scripts/cli/package.json b/scripts/cli/package.json index e7c722e1cc..ed6127330c 100644 --- a/scripts/cli/package.json +++ b/scripts/cli/package.json @@ -68,7 +68,7 @@ "figlet": "1.5.0", "fp-ts": "2.9.5", "inquirer": "7.3.3", - "minimist": "1.2.5", + "minimist": "1.2.6", "nodejs-fs-utils": "1.2.5", "path": "0.12.7", "pm2": "^5.1.1", From 34a1eb5378290330d9c1ee1a4c64e15e4d2d4fdc Mon Sep 17 00:00:00 2001 From: CJP10 Date: Wed, 30 Mar 2022 05:25:54 -0400 Subject: [PATCH 35/53] MESH-1790/Create 4 new extrinsics to wrap up pipelined batches (#1222) * WIP * fix create_group_and_add_auth * fix initiate_corporate_action_and_distribute * Update pallets/corporate-actions/src/lib.rs Co-authored-by: Robert Gabriel Jakabosky * Update pallets/corporate-actions/src/lib.rs Co-authored-by: Robert Gabriel Jakabosky * resolve comments * resolve comments * fix compile errors * format * add create_and_change_custom_group * format * move exttrinsics * use with_transaction Co-authored-by: Robert Gabriel Jakabosky Co-authored-by: Adam Dossa --- pallets/asset/src/lib.rs | 103 +++++-- pallets/common/src/traits/external_agents.rs | 2 + .../corporate-actions/src/distribution/mod.rs | 131 +++++---- pallets/corporate-actions/src/lib.rs | 252 +++++++++++++----- pallets/external-agents/src/benchmarking.rs | 11 + pallets/external-agents/src/lib.rs | 69 ++++- pallets/weights/src/pallet_external_agents.rs | 14 + 7 files changed, 440 insertions(+), 142 deletions(-) diff --git a/pallets/asset/src/lib.rs b/pallets/asset/src/lib.rs index 567ebbdb04..e4918686fc 100644 --- a/pallets/asset/src/lib.rs +++ b/pallets/asset/src/lib.rs @@ -112,7 +112,7 @@ use polymesh_primitives::{ extract_auth, statistics::TransferManagerResult, storage_migrate_on, storage_migration_ver, AssetIdentifier, Balance, Document, DocumentId, - IdentityId, PortfolioId, ScopeId, Ticker, + IdentityId, PortfolioId, ScopeId, SecondaryKey, Ticker, }; use scale_info::TypeInfo; use sp_runtime::traits::Zero; @@ -778,7 +778,44 @@ decl_module! { /// * `ty` contains the string representation of the asset type. #[weight = ::WeightInfo::register_custom_asset_type(ty.len() as u32)] pub fn register_custom_asset_type(origin, ty: Vec) -> DispatchResult { - Self::base_register_custom_asset_type(origin, ty) + Self::base_register_custom_asset_type(origin, ty).map(drop) + } + + /// Utility extrinsic to batch `create_asset` and `register_custom_asset_type`. + #[weight = ::WeightInfo::create_asset( + name.len() as u32, + identifiers.len() as u32, + funding_round.as_ref().map_or(0, |name| name.len()) as u32 + ) + ::WeightInfo::register_custom_asset_type(custom_asset_type.len() as u32)] + pub fn create_asset_with_custom_type( + origin, + name: AssetName, + ticker: Ticker, + divisible: bool, + custom_asset_type: Vec, + identifiers: Vec, + funding_round: Option, + disable_iu: bool, + ) -> DispatchResult { + let PermissionedCallOriginData { + primary_did, + secondary_key, + .. + } = Identity::::ensure_origin_call_permissions(origin)?; + with_transaction(|| { + let asset_type_id = Self::unsafe_register_custom_asset_type(primary_did, custom_asset_type)?; + Self::unsafe_create_asset( + primary_did, + secondary_key, + name, + ticker, + divisible, + AssetType::Custom(asset_type_id), + identifiers, + funding_round, + disable_iu, + ).map(drop) + }) } } } @@ -1622,6 +1659,35 @@ impl Module { identifiers: Vec, funding_round: Option, disable_iu: bool, + ) -> Result { + let PermissionedCallOriginData { + primary_did, + secondary_key, + .. + } = Identity::::ensure_origin_call_permissions(origin)?; + Self::unsafe_create_asset( + primary_did, + secondary_key, + name, + ticker, + divisible, + asset_type, + identifiers, + funding_round, + disable_iu, + ) + } + + fn unsafe_create_asset( + did: IdentityId, + secondary_key: Option>, + name: AssetName, + ticker: Ticker, + divisible: bool, + asset_type: AssetType, + identifiers: Vec, + funding_round: Option, + disable_iu: bool, ) -> Result { Self::ensure_asset_name_bounded(&name)?; if let Some(fr) = &funding_round { @@ -1630,12 +1696,6 @@ impl Module { Self::ensure_asset_idents_valid(&identifiers)?; Self::ensure_asset_type_valid(asset_type)?; - let PermissionedCallOriginData { - primary_did: did, - secondary_key, - .. - } = Identity::::ensure_origin_call_permissions(origin)?; - Self::ensure_create_asset_parameters(&ticker)?; // Ensure its registered by DID or at least expired, thus available. @@ -2248,21 +2308,32 @@ impl Module { ) } - fn base_register_custom_asset_type(origin: T::Origin, ty: Vec) -> DispatchResult { - ensure_string_limited::(&ty)?; - + fn base_register_custom_asset_type( + origin: T::Origin, + ty: Vec, + ) -> Result { let did = Identity::::ensure_perms(origin)?; + Self::unsafe_register_custom_asset_type(did, ty) + } - match CustomTypesInverse::try_get(&ty) { - Ok(id) => Self::deposit_event(Event::::CustomAssetTypeExists(did, id, ty)), + fn unsafe_register_custom_asset_type( + did: IdentityId, + ty: Vec, + ) -> Result { + ensure_string_limited::(&ty)?; + + Ok(match CustomTypesInverse::try_get(&ty) { + Ok(id) => { + Self::deposit_event(Event::::CustomAssetTypeExists(did, id, ty)); + id + } Err(()) => { let id = CustomTypeIdSequence::try_mutate(try_next_pre::)?; CustomTypesInverse::insert(&ty, id); CustomTypes::insert(id, ty.clone()); Self::deposit_event(Event::::CustomAssetTypeRegistered(did, id, ty)); + id } - } - - Ok(()) + }) } } diff --git a/pallets/common/src/traits/external_agents.rs b/pallets/common/src/traits/external_agents.rs index c424928125..1294bea73d 100644 --- a/pallets/common/src/traits/external_agents.rs +++ b/pallets/common/src/traits/external_agents.rs @@ -4,6 +4,8 @@ use polymesh_primitives::{EventDid, ExtrinsicPermissions, IdentityId, Ticker}; pub trait WeightInfo { fn create_group(p: u32) -> Weight; + fn create_group_and_add_auth(p: u32) -> Weight; + fn create_and_change_custom_group(p: u32) -> Weight; fn set_group_permissions(p: u32) -> Weight; fn remove_agent() -> Weight; fn abdicate() -> Weight; diff --git a/pallets/corporate-actions/src/distribution/mod.rs b/pallets/corporate-actions/src/distribution/mod.rs index 9296f4fbc2..512d53170f 100644 --- a/pallets/corporate-actions/src/distribution/mod.rs +++ b/pallets/corporate-actions/src/distribution/mod.rs @@ -84,7 +84,7 @@ use polymesh_common_utilities::{ }; use polymesh_primitives::{ storage_migration_ver, Balance, EventDid, IdentityId, Moment, PortfolioId, PortfolioNumber, - Ticker, + SecondaryKey, Ticker, }; use scale_info::TypeInfo; #[cfg(feature = "std")] @@ -217,62 +217,24 @@ decl_module! { amount: Balance, payment_at: Moment, expires_at: Option, - ) { - // Ensure CA's asset is distinct from the distributed currency. - ensure!(ca_id.ticker != currency, Error::::DistributingAsset); - - // Ensure that any expiry date doesn't come before the payment date. - ensure!(!expired(expires_at, payment_at), Error::::ExpiryBeforePayment); - - // Ensure CA doesn't have a distribution yet. - ensure!(!Distributions::contains_key(ca_id), Error::::AlreadyExists); - - // Ensure origin is a permissioned agent and that they have custody over `from`. - // Also ensure secondary key has perms for `from` + portfolio is valid. + ) -> DispatchResult { let PermissionedCallOriginData { primary_did: agent, secondary_key, .. } = >::ensure_agent_asset_perms(origin, ca_id.ticker)?; - let from = PortfolioId { did: agent, kind: portfolio.into() }; - >::ensure_portfolio_custody_and_permission(from, agent, secondary_key.as_ref())?; - >::ensure_portfolio_validity(&from)?; - - // Ensure that `ca_id` exists, that its a benefit. - let agent = agent.for_event(); - let ca = >::ensure_ca_exists(ca_id)?; - ensure!(ca.kind.is_benefit(), Error::::CANotBenefit); - - // Ensure CA has a record `date <= payment_at`. - // If we cannot, deriving a checkpoint, - // used to determine each holder's allotment of the total `amount`, - // is not possible. - >::ensure_record_date_before_start(&ca, payment_at)?; - - // Ensure `from` has at least `amount` to later lock (1). - >::ensure_sufficient_balance(&from, ¤cy, amount)?; - - // Charge the protocol fee. Last check; we are in commit phase after this. - T::ProtocolFee::charge_fee(ProtocolOp::CapitalDistributionDistribute)?; - - // (1) Lock `amount` in `from`. - >::unchecked_lock_tokens(&from, ¤cy, amount); - // Commit to storage. - let distribution = Distribution { - from, + Self::unsafe_distribute( + agent, + secondary_key, + ca_id, + portfolio, currency, per_share, amount, - remaining: amount, - reclaimed: false, payment_at, expires_at, - }; - Distributions::insert(ca_id, distribution); - - // Emit event. - Self::deposit_event(Event::Created(agent, ca_id, distribution)); + ) } /// Claim a benefit of the capital distribution attached to `ca_id`. @@ -572,4 +534,81 @@ impl Module { ); Ok(dist) } + + pub fn unsafe_distribute( + agent: IdentityId, + secondary_key: Option>, + ca_id: CAId, + portfolio: Option, + currency: Ticker, + per_share: Balance, + amount: Balance, + payment_at: Moment, + expires_at: Option, + ) -> DispatchResult { + // Ensure CA's asset is distinct from the distributed currency. + ensure!(ca_id.ticker != currency, Error::::DistributingAsset); + + // Ensure that any expiry date doesn't come before the payment date. + ensure!( + !expired(expires_at, payment_at), + Error::::ExpiryBeforePayment + ); + + // Ensure CA doesn't have a distribution yet. + ensure!( + !Distributions::contains_key(ca_id), + Error::::AlreadyExists + ); + + // Ensure secondary key has perms for `from` + portfolio is valid. + let from = PortfolioId { + did: agent, + kind: portfolio.into(), + }; + >::ensure_portfolio_custody_and_permission( + from, + agent, + secondary_key.as_ref(), + )?; + >::ensure_portfolio_validity(&from)?; + + // Ensure that `ca_id` exists, that its a benefit. + let agent = agent.for_event(); + let ca = >::ensure_ca_exists(ca_id)?; + ensure!(ca.kind.is_benefit(), Error::::CANotBenefit); + + // Ensure CA has a record `date <= payment_at`. + // If we cannot, deriving a checkpoint, + // used to determine each holder's allotment of the total `amount`, + // is not possible. + >::ensure_record_date_before_start(&ca, payment_at)?; + + // Ensure `from` has at least `amount` to later lock (1). + >::ensure_sufficient_balance(&from, ¤cy, amount)?; + + // Charge the protocol fee. Last check; we are in commit phase after this. + T::ProtocolFee::charge_fee(ProtocolOp::CapitalDistributionDistribute)?; + + // (1) Lock `amount` in `from`. + >::unchecked_lock_tokens(&from, ¤cy, amount); + + // Commit to storage. + let distribution = Distribution { + from, + currency, + per_share, + amount, + remaining: amount, + reclaimed: false, + payment_at, + expires_at, + }; + Distributions::insert(ca_id, distribution); + + // Emit event. + Self::deposit_event(Event::Created(agent, ca_id, distribution)); + + Ok(()) + } } diff --git a/pallets/corporate-actions/src/lib.rs b/pallets/corporate-actions/src/lib.rs index 69205f9dba..6b05ebc966 100644 --- a/pallets/corporate-actions/src/lib.rs +++ b/pallets/corporate-actions/src/lib.rs @@ -95,7 +95,7 @@ pub mod ballot; pub mod distribution; use codec::{Decode, Encode}; -use core::convert::TryInto; +use distribution::WeightInfo as DistWeightInfoTrait; use frame_support::{ decl_error, decl_event, decl_module, decl_storage, dispatch::{DispatchError, DispatchResult}, @@ -106,13 +106,14 @@ use frame_support::{ use frame_system::ensure_root; use pallet_asset::checkpoint::{self, SchedulePoints, ScheduleRefCount}; use pallet_base::try_next_post; +use pallet_identity::PermissionedCallOriginData; use polymesh_common_utilities::{ balances::Config as BalancesConfig, identity::Config as IdentityConfig, traits::asset, traits::checkpoint::ScheduleId, with_transaction, GC_DID, }; use polymesh_primitives::{ calendar::CheckpointId, impl_checked_inc, storage_migration_ver, Balance, DocumentId, EventDid, - IdentityId, Moment, Ticker, + IdentityId, Moment, PortfolioNumber, Ticker, }; use polymesh_primitives_derive::VecU8StrongTyped; use scale_info::TypeInfo; @@ -303,6 +304,19 @@ pub struct CAId { pub local_id: LocalCAId, } +#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] +#[derive(Clone, PartialEq, Eq, Encode, Decode, TypeInfo, Debug)] +pub struct InitiateCorporateActionArgs { + ticker: Ticker, + kind: CAKind, + decl_date: Moment, + record_date: Option, + details: CADetails, + targets: Option, + default_withholding_tax: Option, + withholding_tax: Option>, +} + /// Weight abstraction for the corporate actions module. pub trait WeightInfo { fn set_max_details_length() -> Weight; @@ -543,15 +557,7 @@ decl_module! { /// /// # Permissions /// * Asset - #[weight = ::WeightInfo::initiate_corporate_action_use_defaults( - T::MaxDidWhts::get(), - T::MaxTargetIds::get(), - ) - .max(::WeightInfo::initiate_corporate_action_provided( - withholding_tax.as_ref().map_or(0, |whts| whts.len() as u32), - targets.as_ref().map_or(0, |t| t.identities.len() as u32), - )) - ] + #[weight = initiate_corporate_action_weight::(targets, withholding_tax)] pub fn initiate_corporate_action( origin, ticker: Ticker, @@ -562,77 +568,21 @@ decl_module! { targets: Option, default_withholding_tax: Option, withholding_tax: Option>, - ) { - // Ensure that `details` is short enough. - details - .len() - .try_into() - .ok() - .filter(|&len: &u32| len <= Self::max_details_length()) - .ok_or(Error::::DetailsTooLong)?; - + ) -> DispatchResult { // Ensure that a permissioned agent is calling. let agent = >::ensure_perms(origin, ticker)?.for_event(); - // Ensure that the next local CA ID doesn't overflow. - let mut next_id = CAIdSequence::get(ticker); - let local_id = try_next_post::(&mut next_id)?; - let id = CAId { ticker, local_id }; - - // Ensure there are no duplicates in withholding tax overrides - // and that we're within the limit. - let mut withholding_tax = withholding_tax; - if let Some(wt) = &mut withholding_tax { - let before = wt.len(); - Self::ensure_did_whts_limited(before)?; - wt.sort_unstable_by_key(|&(did, _)| did); - wt.dedup_by_key(|&mut (did, _)| did); - ensure!(before == wt.len(), Error::::DuplicateDidTax); - } - - // Ensure target ids are limited in number if provided. - if let Some(ref targets) = targets { - Self::ensure_target_ids_limited(targets)?; - } - - // Declaration date must be <= now. - ensure!(decl_date <= >::now_unix(), Error::::DeclDateInFuture); - - // If provided, either use the existing CP ID or schedule one to be made. - let record_date = record_date - .map(|date| with_transaction(|| -> Result<_, DispatchError> { - let rd = Self::handle_record_date(agent, ticker, date)?; - ensure!(decl_date <= rd.date, Error::::DeclDateAfterRecordDate); - Ok(rd) - })) - .transpose()?; - - // Commit the next local CA ID. - CAIdSequence::insert(ticker, next_id); - - // Use asset level defaults if data not provided here. - let targets = targets - .map(|t| t.dedup()) - .unwrap_or_else(|| Self::default_target_identities(ticker)); - let default_withholding_tax = default_withholding_tax - .unwrap_or_else(|| Self::default_withholding_tax(ticker)); - let withholding_tax = withholding_tax - .unwrap_or_else(|| Self::did_withholding_tax(ticker)); - - // Commit CA to storage. - let ca = CorporateAction { + Self::unsafe_initiate_corporate_action( + agent, + ticker, kind, decl_date, record_date, + details, targets, default_withholding_tax, withholding_tax, - }; - CorporateActions::insert(ticker, id.local_id, ca.clone()); - Details::insert(id, details.clone()); - - // Emit event. - Self::deposit_event(Event::CAInitiated(agent, id, ca, details)); + ).map(drop) } /// Link the given CA `id` to the given `docs`. @@ -767,6 +717,63 @@ decl_module! { CorporateActions::insert(ca_id.ticker, ca_id.local_id, ca.clone()); Self::deposit_event(Event::RecordDateChanged(agent, ca_id, ca)); } + + /// Utility extrinsic to batch `initiate_corporate_action` and `distribute` + #[weight = initiate_corporate_action_weight::(&ca_args.targets, &ca_args.withholding_tax) + .saturating_add(::DistWeightInfo::distribute())] + pub fn initiate_corporate_action_and_distribute( + origin, + ca_args: InitiateCorporateActionArgs, + portfolio: Option, + currency: Ticker, + per_share: Balance, + amount: Balance, + payment_at: Moment, + expires_at: Option, + ) -> DispatchResult { + let InitiateCorporateActionArgs { + ticker, + kind, + decl_date, + record_date, + details, + targets, + default_withholding_tax, + withholding_tax + } = ca_args; + + let PermissionedCallOriginData { + primary_did: agent, + secondary_key, + .. + } = >::ensure_agent_asset_perms(origin, ticker)?; + + with_transaction(|| { + let ca_id = Self::unsafe_initiate_corporate_action( + agent.for_event(), + ticker, + kind, + decl_date, + record_date, + details, + targets, + default_withholding_tax, + withholding_tax + )?; + + >::unsafe_distribute( + agent, + secondary_key, + ca_id, + portfolio, + currency, + per_share, + amount, + payment_at, + expires_at, + ) + }) + } } } @@ -834,6 +841,89 @@ decl_error! { } impl Module { + fn unsafe_initiate_corporate_action( + agent: EventDid, + ticker: Ticker, + kind: CAKind, + decl_date: Moment, + record_date: Option, + details: CADetails, + targets: Option, + default_withholding_tax: Option, + withholding_tax: Option>, + ) -> Result { + // Ensure that `details` is short enough. + ensure!( + details.len() <= Self::max_details_length() as usize, + Error::::DetailsTooLong + ); + + // Ensure that the next local CA ID doesn't overflow. + let mut next_id = CAIdSequence::get(ticker); + let local_id = try_next_post::(&mut next_id)?; + let id = CAId { ticker, local_id }; + + // Ensure there are no duplicates in withholding tax overrides + // and that we're within the limit. + let mut withholding_tax = withholding_tax; + if let Some(wt) = &mut withholding_tax { + let before = wt.len(); + Self::ensure_did_whts_limited(before)?; + wt.sort_unstable_by_key(|&(did, _)| did); + wt.dedup_by_key(|&mut (did, _)| did); + ensure!(before == wt.len(), Error::::DuplicateDidTax); + } + + // Ensure target ids are limited in number if provided. + if let Some(ref targets) = targets { + Self::ensure_target_ids_limited(targets)?; + } + + // Declaration date must be <= now. + ensure!( + decl_date <= >::now_unix(), + Error::::DeclDateInFuture + ); + + // If provided, either use the existing CP ID or schedule one to be made. + let record_date = record_date + .map(|date| { + with_transaction(|| -> Result<_, DispatchError> { + let rd = Self::handle_record_date(agent, ticker, date)?; + ensure!(decl_date <= rd.date, Error::::DeclDateAfterRecordDate); + Ok(rd) + }) + }) + .transpose()?; + + // Commit the next local CA ID. + CAIdSequence::insert(ticker, next_id); + + // Use asset level defaults if data not provided here. + let targets = targets + .map(|t| t.dedup()) + .unwrap_or_else(|| Self::default_target_identities(ticker)); + let default_withholding_tax = + default_withholding_tax.unwrap_or_else(|| Self::default_withholding_tax(ticker)); + let withholding_tax = withholding_tax.unwrap_or_else(|| Self::did_withholding_tax(ticker)); + + // Commit CA to storage. + let ca = CorporateAction { + kind, + decl_date, + record_date, + targets, + default_withholding_tax, + withholding_tax, + }; + CorporateActions::insert(ticker, id.local_id, ca.clone()); + Details::insert(id, details.clone()); + + // Emit event. + Self::deposit_event(Event::CAInitiated(agent, id, ca, details)); + Ok(id) + } + /// Ensure number of identities in `TargetIdentities` are limited. fn ensure_target_ids_limited(targets: &TargetIdentities) -> DispatchResult { ensure!( @@ -958,3 +1048,19 @@ impl Module { CorporateActions::get(id.ticker, id.local_id).ok_or_else(|| Error::::NoSuchCA.into()) } } + +fn initiate_corporate_action_weight( + targets: &Option, + withholding_tax: &Option>, +) -> Weight { + ::WeightInfo::initiate_corporate_action_use_defaults( + T::MaxDidWhts::get(), + T::MaxTargetIds::get(), + ) + .max( + ::WeightInfo::initiate_corporate_action_provided( + withholding_tax.as_ref().map_or(0, |whts| whts.len() as u32), + targets.as_ref().map_or(0, |t| t.identities.len() as u32), + ), + ) +} diff --git a/pallets/external-agents/src/benchmarking.rs b/pallets/external-agents/src/benchmarking.rs index b38cf72995..c7124956e7 100644 --- a/pallets/external-agents/src/benchmarking.rs +++ b/pallets/external-agents/src/benchmarking.rs @@ -125,4 +125,15 @@ benchmarks! { verify { assert!(GroupOfAgent::get(ticker, other.did()).is_some()); } + + create_group_and_add_auth { + let p in 0..MAX_PALLETS; + + let perms = perms(p); + let (owner, ticker) = setup::(); + assert_eq!(AGId(0), AGIdSequence::get(ticker)); + }: _(owner.origin, ticker, perms, Signatory::Identity(owner.did())) + verify { + assert_eq!(AGId(1), AGIdSequence::get(ticker)); + } } diff --git a/pallets/external-agents/src/lib.rs b/pallets/external-agents/src/lib.rs index c2a6c738e4..d55e07e991 100644 --- a/pallets/external-agents/src/lib.rs +++ b/pallets/external-agents/src/lib.rs @@ -61,9 +61,11 @@ use frame_support::{ use pallet_base::{try_next_post, try_next_pre}; use pallet_identity::PermissionedCallOriginData; pub use polymesh_common_utilities::traits::external_agents::{Config, Event, WeightInfo}; +use polymesh_common_utilities::with_transaction; use polymesh_primitives::agent::{AGId, AgentGroup}; use polymesh_primitives::{ - extract_auth, ExtrinsicPermissions, IdentityId, PalletPermissions, SubsetRestriction, Ticker, + extract_auth, AuthorizationData, EventDid, ExtrinsicPermissions, IdentityId, PalletPermissions, + Signatory, SubsetRestriction, Ticker, }; use sp_std::prelude::*; @@ -134,7 +136,7 @@ decl_module! { /// * Agent #[weight = ::WeightInfo::create_group(perms.complexity() as u32)] pub fn create_group(origin, ticker: Ticker, perms: ExtrinsicPermissions) -> DispatchResult { - Self::base_create_group(origin, ticker, perms) + Self::base_create_group(origin, ticker, perms).map(drop) } /// Updates the permissions of the custom AG identified by `id`, for the given `ticker`. @@ -236,6 +238,26 @@ decl_module! { pub fn accept_become_agent(origin, auth_id: u64) -> DispatchResult { Self::base_accept_become_agent(origin, auth_id) } + + /// Utility extrinsic to batch `create_group` and `add_auth`. + /// + /// # Permissions + /// * Asset + /// * Agent + #[weight = ::WeightInfo::create_group_and_add_auth(perms.complexity() as u32)] + pub fn create_group_and_add_auth(origin, ticker: Ticker, perms: ExtrinsicPermissions, target: Signatory) -> DispatchResult { + Self::base_create_group_and_add_auth(origin, ticker, perms, target) + } + + /// Utility extrinsic to batch `create_group` and `change_group` for custom groups only. + /// + /// # Permissions + /// * Asset + /// * Agent + #[weight = ::WeightInfo::create_and_change_custom_group(perms.complexity() as u32)] + pub fn create_and_change_custom_group(origin, ticker: Ticker, perms: ExtrinsicPermissions, agent: IdentityId) -> DispatchResult { + with_transaction(|| Self::base_create_and_change_custom_group(origin, ticker, perms, agent)) + } } } @@ -279,16 +301,30 @@ impl Module { origin: T::Origin, ticker: Ticker, perms: ExtrinsicPermissions, - ) -> DispatchResult { - let did = Self::ensure_perms(origin, ticker)?.for_event(); + ) -> Result<(IdentityId, AGId), DispatchError> { + let did = Self::ensure_perms(origin, ticker)?; >::ensure_extrinsic_perms_length_limited(&perms)?; - // Fetch the AG id & advance the sequence. let id = AGIdSequence::try_mutate(ticker, try_next_pre::)?; - // Commit & emit. GroupPermissions::insert(ticker, id, perms.clone()); - Self::deposit_event(Event::GroupCreated(did, ticker, id, perms)); + Self::deposit_event(Event::GroupCreated(did.for_event(), ticker, id, perms)); + Ok((did, id)) + } + + fn base_create_group_and_add_auth( + origin: T::Origin, + ticker: Ticker, + perms: ExtrinsicPermissions, + target: Signatory, + ) -> DispatchResult { + let (did, ag_id) = Self::base_create_group(origin, ticker, perms)?; + >::add_auth( + did, + target, + AuthorizationData::BecomeAgent(ticker, AgentGroup::Custom(ag_id)), + None, + ); Ok(()) } @@ -322,6 +358,16 @@ impl Module { Ok(()) } + fn base_create_and_change_custom_group( + origin: T::Origin, + ticker: Ticker, + perms: ExtrinsicPermissions, + agent: IdentityId, + ) -> DispatchResult { + let (did, ag_id) = Self::base_create_group(origin, ticker, perms)?; + Self::unsafe_change_group(did.for_event(), ticker, agent, AgentGroup::Custom(ag_id)) + } + fn base_change_group( origin: T::Origin, ticker: Ticker, @@ -329,6 +375,15 @@ impl Module { group: AgentGroup, ) -> DispatchResult { let did = Self::ensure_perms(origin, ticker)?.for_event(); + Self::unsafe_change_group(did, ticker, agent, group) + } + + fn unsafe_change_group( + did: EventDid, + ticker: Ticker, + agent: IdentityId, + group: AgentGroup, + ) -> DispatchResult { Self::ensure_agent_group_valid(ticker, group)?; Self::try_mutate_agents_group(ticker, agent, Some(group))?; Self::deposit_event(Event::GroupChanged(did, ticker, agent, group)); diff --git a/pallets/weights/src/pallet_external_agents.rs b/pallets/weights/src/pallet_external_agents.rs index e74cef34c3..897330ef45 100644 --- a/pallets/weights/src/pallet_external_agents.rs +++ b/pallets/weights/src/pallet_external_agents.rs @@ -59,6 +59,20 @@ impl pallet_external_agents::WeightInfo for WeightInfo { .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(2 as Weight)) } + fn create_group_and_add_auth(p: u32) -> Weight { + (65_478_000 as Weight) + // Standard Error: 35_000 + .saturating_add((391_000 as Weight).saturating_mul(p as Weight)) + .saturating_add(DbWeight::get().reads(6 as Weight)) + .saturating_add(DbWeight::get().writes(2 as Weight)) + } + fn create_and_change_custom_group(p: u32) -> Weight { + (65_478_000 as Weight) + // Standard Error: 35_000 + .saturating_add((391_000 as Weight).saturating_mul(p as Weight)) + .saturating_add(DbWeight::get().reads(6 as Weight)) + .saturating_add(DbWeight::get().writes(2 as Weight)) + } fn set_group_permissions(p: u32) -> Weight { (63_756_000 as Weight) // Standard Error: 58_000 From 8dd7c5a1efe0c761fa059e5b1b333d807afd5849 Mon Sep 17 00:00:00 2001 From: Joel Moore <47923231+JMoore96@users.noreply.github.com> Date: Wed, 30 Mar 2022 06:34:31 -0400 Subject: [PATCH 36/53] Mesh 1696/finish converting TS tests to Jest (#1196) * created 8_asset_minting Jest Test * created 9_bridge_transfer Jest Test * created 10_governance_management Jest Test * created 11_A_settlement & 11_B_settlement Jest Tests * created 12_external_agents Jest Test and modified createVenue function * removed old TS Tests * minor change * created 13_corporate_actions Jest Test * created 14_investment Jest Test * remove old TS Tests * updated libraries * modified jest.config, package.json, init.ts, and jest tests * created 15_portfolio, 16_relayer, and 17_itn_rewards * removed old TS tests * updated types and package.json libraries with minor changes to scripts * minor change * minor formatting * updated readme * updated types * updated types * minor changes * minor scripts change in package.json * Trigger new concourse run. Remove unused sqlite. * minor change * updated types and package.json * minor change * minor change * minor changes * minor changes Co-authored-by: Robert G. Jakabosky Co-authored-by: Adam Dossa --- scripts/cli/README.md | 12 +- scripts/cli/package-lock.json | 8694 ++++++----------- scripts/cli/package.json | 69 +- scripts/cli/polymesh-meta.json | 2 +- .../cli/src/__tests__/0_create_identities.ts | 9 +- .../src/__tests__/10_governance_management.ts | 77 + scripts/cli/src/__tests__/11_A_settlement.ts | 76 + scripts/cli/src/__tests__/11_B_settlement.ts | 133 + .../cli/src/__tests__/12_external_agents.ts | 146 + .../cli/src/__tests__/13_corporate_actions.ts | 140 + scripts/cli/src/__tests__/14_investment.ts | 97 + scripts/cli/src/__tests__/15_portfolio.ts | 124 + scripts/cli/src/__tests__/16_relayer.ts | 51 + scripts/cli/src/__tests__/17_itn_rewards.ts | 34 + scripts/cli/src/__tests__/1_poly_transfer.ts | 5 - scripts/cli/src/__tests__/2_key_management.ts | 5 - scripts/cli/src/__tests__/3_auth_join_did.ts | 5 - .../src/__tests__/4_permission_management.ts | 9 +- .../cli/src/__tests__/5_claim_management.ts | 5 - scripts/cli/src/__tests__/6_create_assets.ts | 5 - .../__tests__/7_create_claim_compliance.ts | 5 - scripts/cli/src/__tests__/8_asset_minting.ts | 49 + .../cli/src/__tests__/9_bridge_transfer.ts | 23 + scripts/cli/src/helpers/asset_helper.ts | 2 +- .../src/helpers/compliance_manager_helper.ts | 11 +- .../src/helpers/corporate_actions_helper.ts | 6 +- .../cli/src/helpers/external_agent_helper.ts | 11 +- scripts/cli/src/helpers/identity_helper.ts | 23 +- scripts/cli/src/helpers/permission_helper.ts | 4 - scripts/cli/src/helpers/pips_helper.ts | 11 + scripts/cli/src/helpers/portfolio_helper.ts | 2 +- scripts/cli/src/helpers/rewards_helper.ts | 2 +- scripts/cli/src/helpers/settlement_helper.ts | 8 +- scripts/cli/src/helpers/staking_helper.ts | 2 +- scripts/cli/src/helpers/statistics_helper.ts | 9 + scripts/cli/src/helpers/sto_helper.ts | 106 + scripts/cli/src/interfaces/augment-api-rpc.ts | 8 +- scripts/cli/src/interfaces/augment-api-tx.ts | 3 +- scripts/cli/src/interfaces/augment-types.ts | 7 +- scripts/cli/src/interfaces/default/types.ts | 24 +- scripts/cli/src/interfaces/definitions.ts | 2 +- .../cli/src/tests/10_governance_management.ts | 71 - scripts/cli/src/tests/11_A_settlement.ts | 64 - scripts/cli/src/tests/11_B_settlement.ts | 133 - scripts/cli/src/tests/12_external_agents.ts | 123 - scripts/cli/src/tests/13_corporate_actions.ts | 113 - scripts/cli/src/tests/14_investment.ts | 120 - scripts/cli/src/tests/15_portfolio.ts | 129 - scripts/cli/src/tests/16_relayer.ts | 34 - scripts/cli/src/tests/17_itn_rewards.ts | 42 - scripts/cli/src/tests/8_asset_minting.ts | 37 - scripts/cli/src/tests/9_bridge_transfer.ts | 28 - scripts/cli/src/types.ts | 8 +- scripts/cli/src/util/init.ts | 47 +- scripts/cli/src/util/sqlite3.ts | 38 - 55 files changed, 4365 insertions(+), 6638 deletions(-) create mode 100644 scripts/cli/src/__tests__/10_governance_management.ts create mode 100644 scripts/cli/src/__tests__/11_A_settlement.ts create mode 100644 scripts/cli/src/__tests__/11_B_settlement.ts create mode 100644 scripts/cli/src/__tests__/12_external_agents.ts create mode 100644 scripts/cli/src/__tests__/13_corporate_actions.ts create mode 100644 scripts/cli/src/__tests__/14_investment.ts create mode 100644 scripts/cli/src/__tests__/15_portfolio.ts create mode 100644 scripts/cli/src/__tests__/16_relayer.ts create mode 100644 scripts/cli/src/__tests__/17_itn_rewards.ts create mode 100644 scripts/cli/src/__tests__/8_asset_minting.ts create mode 100644 scripts/cli/src/__tests__/9_bridge_transfer.ts create mode 100644 scripts/cli/src/helpers/statistics_helper.ts create mode 100644 scripts/cli/src/helpers/sto_helper.ts delete mode 100644 scripts/cli/src/tests/10_governance_management.ts delete mode 100644 scripts/cli/src/tests/11_A_settlement.ts delete mode 100644 scripts/cli/src/tests/11_B_settlement.ts delete mode 100644 scripts/cli/src/tests/12_external_agents.ts delete mode 100644 scripts/cli/src/tests/13_corporate_actions.ts delete mode 100644 scripts/cli/src/tests/14_investment.ts delete mode 100644 scripts/cli/src/tests/15_portfolio.ts delete mode 100644 scripts/cli/src/tests/16_relayer.ts delete mode 100644 scripts/cli/src/tests/17_itn_rewards.ts delete mode 100644 scripts/cli/src/tests/8_asset_minting.ts delete mode 100644 scripts/cli/src/tests/9_bridge_transfer.ts delete mode 100644 scripts/cli/src/util/sqlite3.ts diff --git a/scripts/cli/README.md b/scripts/cli/README.md index a34f2fa98b..76de35441c 100644 --- a/scripts/cli/README.md +++ b/scripts/cli/README.md @@ -22,13 +22,14 @@ $ ./run.sh $ ./node_modules/.bin/pm2 log pmesh-primary-node $ ./node_modules/.bin/pm2 log pmesh-peer-node-1 $ ./node_modules/.bin/pm2 log pmesh-peer-node-2 +# Stop the node +$ ./stop.sh ``` To run the scripts and execute transactions: -1. Build latest types `npm run build:types` -2. Compile Typescript files `npm run build` -3. Run integration tests `npm run test` +1. Compile Typescript files `npm run build` +2. Run integration tests `npm test` To stop the node use `./stop.sh`: @@ -50,6 +51,11 @@ The test scripts include those named below, and most make up `npm test`: - 11_A_settlement - 11_B_settlement - 12_external_agents + - 13_corporate_actions + - 14_investment + - 15_portfolio + - 16_relayer + - 17_itn_rewards To run a single script: ```shell diff --git a/scripts/cli/package-lock.json b/scripts/cli/package-lock.json index 6c6f4e1752..38e212444a 100644 --- a/scripts/cli/package-lock.json +++ b/scripts/cli/package-lock.json @@ -10,35 +10,33 @@ "license": "UNLICENSED", "dependencies": { "@babel/plugin-proposal-class-properties": "^7.16.7", - "@polkadot/api": "7.7.1", + "@polkadot/api": "7.11.1", "@polkadot/util": "^8.3.3", "@polkadot/util-crypto": "^8.3.3", - "@types/sqlite3": "^3.1.7", "chai": "4.2.0", "chalk": "4.1.0", "clear": "0.1.0", - "cli-progress": "3.9.0", - "command-line-args": "5.1.1", - "commander": "7.0.0", - "crypto-random-string": "3.3.0", + "cli-progress": "3.10.0", + "command-line-args": "5.2.0", + "commander": "8.3.0", + "crypto-random-string": "4.0.0", "esm": "3.2.25", "export-to-csv": "^0.2.1", - "figlet": "1.5.0", - "fp-ts": "2.9.5", - "inquirer": "7.3.3", + "figlet": "1.5.2", + "fp-ts": "2.11.7", + "inquirer": "8.2.0", "minimist": "1.2.6", - "nodejs-fs-utils": "1.2.5", + "nodejs-fs-utils": "1.2.6", "path": "0.12.7", - "pm2": "^5.1.1", - "readline-sync": "1.4.10", - "sqlite3": "^5.0.2" + "pm2": "^5.1.2", + "readline-sync": "1.4.10" }, "bin": { "polymesh-cli": "dist/polymesh_cli.js" }, "devDependencies": { "@babel/plugin-transform-modules-commonjs": "7.14.5", - "@polkadot/typegen": "7.7.1", + "@polkadot/typegen": "7.11.1", "@types/chai": "4.2.15", "@types/clear": "0.1.1", "@types/figlet": "1.2.1", @@ -51,7 +49,6 @@ "ts-jest": "^27.0.5", "ts-node": "9.1.1", "type-coverage": "2.16.3", - "typedoc": "0.20.28", "typescript": "^4.3.5" } }, @@ -114,35 +111,6 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/core/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/generator": { "version": "7.17.3", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", @@ -156,14 +124,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/generator/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@babel/helper-annotate-as-pure": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", @@ -192,18 +152,10 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz", - "integrity": "sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==", + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz", + "integrity": "sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.16.7", "@babel/helper-environment-visitor": "^7.16.7", @@ -634,12 +586,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", - "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", + "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -729,27 +681,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/traverse/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/@babel/types": { "version": "7.17.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", @@ -784,52 +715,6 @@ "node": ">=8" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", @@ -840,16 +725,16 @@ } }, "node_modules/@jest/console": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.2.4.tgz", - "integrity": "sha512-94znCKynPZpDpYHQ6esRJSc11AmONrVkBOBZiD7S+bSubHhrUfbS95EY5HIOxhm4PQO7cnvZkL3oJcY0oMA+Wg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", "dev": true, "dependencies": { - "@jest/types": "^27.2.4", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.2.4", - "jest-util": "^27.2.4", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", "slash": "^3.0.0" }, "engines": { @@ -857,35 +742,35 @@ } }, "node_modules/@jest/core": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.2.4.tgz", - "integrity": "sha512-UNQLyy+rXoojNm2MGlapgzWhZD1CT1zcHZQYeiD0xE7MtJfC19Q6J5D/Lm2l7i4V97T30usKDoEtjI8vKwWcLg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", "dev": true, "dependencies": { - "@jest/console": "^27.2.4", - "@jest/reporters": "^27.2.4", - "@jest/test-result": "^27.2.4", - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.2.4", - "jest-config": "^27.2.4", - "jest-haste-map": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.2.4", - "jest-resolve-dependencies": "^27.2.4", - "jest-runner": "^27.2.4", - "jest-runtime": "^27.2.4", - "jest-snapshot": "^27.2.4", - "jest-util": "^27.2.4", - "jest-validate": "^27.2.4", - "jest-watcher": "^27.2.4", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", "micromatch": "^4.0.4", "rimraf": "^3.0.0", "slash": "^3.0.0", @@ -903,51 +788,36 @@ } } }, - "node_modules/@jest/core/node_modules/ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", - "dev": true - }, - "node_modules/@jest/core/node_modules/is-ci": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", - "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", - "dev": true, - "dependencies": { - "ci-info": "^3.1.1" - }, - "bin": { - "is-ci": "bin.js" - } - }, "node_modules/@jest/core/node_modules/jest-config": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.2.4.tgz", - "integrity": "sha512-tWy0UxhdzqiKyp4l5Vq4HxLyD+gH5td+GCF3c22/DJ0bYAOsMo+qi2XtbJI6oYMH5JOJQs9nLW/r34nvFCehjA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.2.4", - "@jest/types": "^27.2.4", - "babel-jest": "^27.2.4", + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "jest-circus": "^27.2.4", - "jest-environment-jsdom": "^27.2.4", - "jest-environment-node": "^27.2.4", - "jest-get-type": "^27.0.6", - "jest-jasmine2": "^27.2.4", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.2.4", - "jest-runner": "^27.2.4", - "jest-util": "^27.2.4", - "jest-validate": "^27.2.4", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "micromatch": "^4.0.4", - "pretty-format": "^27.2.4" + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -961,77 +831,90 @@ } } }, + "node_modules/@jest/core/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@jest/environment": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.2.4.tgz", - "integrity": "sha512-wkuui5yr3SSQW0XD0Qm3TATUbL/WE3LDEM3ulC+RCQhMf2yxhci8x7svGkZ4ivJ6Pc94oOzpZ6cdHBAMSYd1ew==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", "dev": true, "dependencies": { - "@jest/fake-timers": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^27.2.4" + "jest-mock": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.2.4.tgz", - "integrity": "sha512-cs/TzvwWUM7kAA6Qm/890SK6JJ2pD5RfDNM3SSEom6BmdyV6OiWP1qf/pqo6ts6xwpcM36oN0wSEzcZWc6/B6w==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", "dev": true, "dependencies": { - "@jest/types": "^27.2.4", + "@jest/types": "^27.5.1", "@sinonjs/fake-timers": "^8.0.1", "@types/node": "*", - "jest-message-util": "^27.2.4", - "jest-mock": "^27.2.4", - "jest-util": "^27.2.4" + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/globals": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.2.4.tgz", - "integrity": "sha512-DRsRs5dh0i+fA9mGHylTU19+8fhzNJoEzrgsu+zgJoZth3x8/0juCQ8nVVdW1er4Cqifb/ET7/hACYVPD0dBEA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", "dev": true, "dependencies": { - "@jest/environment": "^27.2.4", - "@jest/types": "^27.2.4", - "expect": "^27.2.4" + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/reporters": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.2.4.tgz", - "integrity": "sha512-LHeSdDnDZkDnJ8kvnjcqV8P1Yv/32yL4d4XfR5gBiy3xGO0onwll1QEbvtW96fIwhx2nejug0GTaEdNDoyr3fQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.2.4", - "@jest/test-result": "^27.2.4", - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", "glob": "^7.1.2", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.2.4", - "jest-resolve": "^27.2.4", - "jest-util": "^27.2.4", - "jest-worker": "^27.2.4", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "slash": "^3.0.0", "source-map": "^0.6.0", "string-length": "^4.0.1", @@ -1050,28 +933,46 @@ } } }, + "node_modules/@jest/reporters/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@jest/source-map": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", - "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", "dev": true, "dependencies": { "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "source-map": "^0.6.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/@jest/source-map/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@jest/test-result": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.2.4.tgz", - "integrity": "sha512-eU+PRo0+lIS01b0dTmMdVZ0TtcRSxEaYquZTRFMQz6CvsehGhx9bRzi9Zdw6VROviJyv7rstU+qAMX5pNBmnfQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", "dev": true, "dependencies": { - "@jest/console": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, @@ -1080,38 +981,38 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.2.4.tgz", - "integrity": "sha512-fpk5eknU3/DXE2QCCG1wv/a468+cfPo3Asu6d6yUtM9LOPh709ubZqrhuUOYfM8hXMrIpIdrv1CdCrWWabX0rQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", "dev": true, "dependencies": { - "@jest/test-result": "^27.2.4", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.4", - "jest-runtime": "^27.2.4" + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/transform": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.2.4.tgz", - "integrity": "sha512-n5FlX2TH0oQGwyVDKPxdJ5nI2sO7TJBFe3u3KaAtt7TOiV4yL+Y+rSFDl+Ic5MpbiA/eqXmLAQxjnBmWgS2rEA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", "dev": true, "dependencies": { "@babel/core": "^7.1.0", - "@jest/types": "^27.2.4", - "babel-plugin-istanbul": "^6.0.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.4", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.2.4", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", "micromatch": "^4.0.4", - "pirates": "^4.0.1", + "pirates": "^4.0.4", "slash": "^3.0.0", "source-map": "^0.6.1", "write-file-atomic": "^3.0.0" @@ -1120,10 +1021,19 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/@jest/transform/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@jest/types": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", - "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", @@ -1159,14 +1069,20 @@ } }, "node_modules/@noble/hashes": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-0.5.7.tgz", - "integrity": "sha512-R9PPYv7TqoYi+enikzZvwRQesGTxR0+jwqzZJGL0uNcf2NFL+lt/uvCCewtXXmr6jWBxiMuNjBfJwKv9UJaCng==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.0.0.tgz", + "integrity": "sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg==" }, "node_modules/@noble/secp256k1": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.3.4.tgz", - "integrity": "sha512-ZVRouDO5mbdCiDg4zCd3ZZABduRtpy4tCnB33Gh9upHe9tRzpiqbRSN1VTjrj/2g8u2c6MBi0YLNnNQpBYOiWg==" + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.5.2.tgz", + "integrity": "sha512-5mzA40W2q55VCRuC9XzmkiEnODdY0c5a7qsK2QcOfI5/MuVQyBaWGQyE6YOEF7kDwp+tDVWGsCDVJUME+wsWWw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", @@ -1293,27 +1209,6 @@ "node": ">=8" } }, - "node_modules/@pm2/agent/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@pm2/agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/@pm2/agent/node_modules/semver": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.2.3.tgz", @@ -1325,6 +1220,26 @@ "node": ">=10" } }, + "node_modules/@pm2/agent/node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/@pm2/io": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@pm2/io/-/io-5.0.0.tgz", @@ -1353,44 +1268,10 @@ "lodash": "^4.17.14" } }, - "node_modules/@pm2/io/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/@pm2/io/node_modules/eventemitter2": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.4.tgz", - "integrity": "sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw==" - }, - "node_modules/@pm2/io/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/@pm2/io/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@pm2/io/node_modules/tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "version": "6.4.5", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz", + "integrity": "sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==" }, "node_modules/@pm2/js-api": { "version": "0.6.7", @@ -1415,31 +1296,10 @@ "lodash": "^4.17.14" } }, - "node_modules/@pm2/js-api/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/@pm2/js-api/node_modules/eventemitter2": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.4.tgz", - "integrity": "sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw==" - }, - "node_modules/@pm2/js-api/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "6.4.5", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz", + "integrity": "sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==" }, "node_modules/@pm2/pm2-version-check": { "version": "1.0.4", @@ -1449,180 +1309,160 @@ "debug": "^4.3.1" } }, - "node_modules/@pm2/pm2-version-check/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "node_modules/@polkadot/api": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-7.11.1.tgz", + "integrity": "sha512-VTrhVuSJrWhIww1ofYPd7EhJd1UwKntfdPNRuy/abfb6GPzYCglKV6Sze3CsbI2KawC5oo1K7Ffrdf/lJy81kg==", "dependencies": { - "ms": "2.1.2" + "@babel/runtime": "^7.17.2", + "@polkadot/api-augment": "7.11.1", + "@polkadot/api-base": "7.11.1", + "@polkadot/api-derive": "7.11.1", + "@polkadot/keyring": "^8.4.1", + "@polkadot/rpc-augment": "7.11.1", + "@polkadot/rpc-core": "7.11.1", + "@polkadot/rpc-provider": "7.11.1", + "@polkadot/types": "7.11.1", + "@polkadot/types-augment": "7.11.1", + "@polkadot/types-codec": "7.11.1", + "@polkadot/types-create": "7.11.1", + "@polkadot/types-known": "7.11.1", + "@polkadot/util": "^8.4.1", + "@polkadot/util-crypto": "^8.4.1", + "eventemitter3": "^4.0.7", + "rxjs": "^7.5.4" }, "engines": { - "node": ">=6.0" + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/api-augment": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-7.11.1.tgz", + "integrity": "sha512-CqtmRZsr7va45r/wnsH+NZMqPyUQv46fmiHxt5gq6NC4p0ziDEVVDDHLlABx5RhQzCvdiBAccZ/X8DyMCFFGEA==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "@polkadot/api-base": "7.11.1", + "@polkadot/rpc-augment": "7.11.1", + "@polkadot/types": "7.11.1", + "@polkadot/types-augment": "7.11.1", + "@polkadot/types-codec": "7.11.1", + "@polkadot/util": "^8.4.1" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@pm2/pm2-version-check/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/@polkadot/api": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-7.7.1.tgz", - "integrity": "sha512-wWwtVgRz1Lc7HY0evRnzKZNaRBIo818V16fZ+S73zfIMxvDmO2zbfui9scIlpi4WwL2K3YQbznOwBlWeHH92LA==", - "dependencies": { - "@babel/runtime": "^7.17.0", - "@polkadot/api-augment": "7.7.1", - "@polkadot/api-base": "7.7.1", - "@polkadot/api-derive": "7.7.1", - "@polkadot/keyring": "^8.3.3", - "@polkadot/rpc-augment": "7.7.1", - "@polkadot/rpc-core": "7.7.1", - "@polkadot/rpc-provider": "7.7.1", - "@polkadot/types": "7.7.1", - "@polkadot/types-augment": "7.7.1", - "@polkadot/types-codec": "7.7.1", - "@polkadot/types-create": "7.7.1", - "@polkadot/types-known": "7.7.1", - "@polkadot/util": "^8.3.3", - "@polkadot/util-crypto": "^8.3.3", - "eventemitter3": "^4.0.7", - "rxjs": "^7.5.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@polkadot/api-augment": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-7.7.1.tgz", - "integrity": "sha512-M8c38haMh39K2pg3wRE4azpEr3hkaKV8dTlXG6whDmpDsPGTLa/wE9rCUzduRXTLpUZYBUCH529+bJ5LVwmSNQ==", - "dependencies": { - "@babel/runtime": "^7.17.0", - "@polkadot/api-base": "7.7.1", - "@polkadot/rpc-augment": "7.7.1", - "@polkadot/types": "7.7.1", - "@polkadot/types-augment": "7.7.1", - "@polkadot/types-codec": "7.7.1", - "@polkadot/util": "^8.3.3" - }, - "engines": { - "node": ">=14.0.0" + "engines": { + "node": ">=14.0.0" } }, "node_modules/@polkadot/api-base": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-base/-/api-base-7.7.1.tgz", - "integrity": "sha512-gzgETQrgjMOqcQj7dwsiqVxmlUQEMH89ome0qargrJWiwbFUeceOlvt47E/WGG6/1oWUl3SMZcNRLYANME93ag==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-base/-/api-base-7.11.1.tgz", + "integrity": "sha512-MATI9tm0x3rRlipLMevWzJ4cGvMyrUGyOfwjMg3Z67U7atZgZ93LzowjzDcvSgFVM14d1tBOVWBKkCKnk7C6Zg==", "dependencies": { - "@babel/runtime": "^7.17.0", - "@polkadot/rpc-core": "7.7.1", - "@polkadot/types": "7.7.1", - "@polkadot/util": "^8.3.3", - "rxjs": "^7.5.2" + "@babel/runtime": "^7.17.2", + "@polkadot/rpc-core": "7.11.1", + "@polkadot/types": "7.11.1", + "@polkadot/util": "^8.4.1", + "rxjs": "^7.5.4" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/api-derive": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-7.7.1.tgz", - "integrity": "sha512-1dBj+vtVk+XAcvwC6BE+eUdVnbcBteWDXzBxrIuzT8NlkAReIq+74+bOEZH7GDcGMorTR5s+Z3FZD1ElmUiUNQ==", - "dependencies": { - "@babel/runtime": "^7.17.0", - "@polkadot/api": "7.7.1", - "@polkadot/api-augment": "7.7.1", - "@polkadot/api-base": "7.7.1", - "@polkadot/rpc-core": "7.7.1", - "@polkadot/types": "7.7.1", - "@polkadot/types-codec": "7.7.1", - "@polkadot/util": "^8.3.3", - "@polkadot/util-crypto": "^8.3.3", - "rxjs": "^7.5.2" + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-7.11.1.tgz", + "integrity": "sha512-py7pqs5mLaKPNDvRZ7BcUC7obsbLIuzJT/kZFiGzJXmaObSzU2lJkGD7fV34QlpmGP+Bqb4KtlhtY+Tnq33C0w==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "@polkadot/api": "7.11.1", + "@polkadot/api-augment": "7.11.1", + "@polkadot/api-base": "7.11.1", + "@polkadot/rpc-core": "7.11.1", + "@polkadot/types": "7.11.1", + "@polkadot/types-codec": "7.11.1", + "@polkadot/util": "^8.4.1", + "@polkadot/util-crypto": "^8.4.1", + "rxjs": "^7.5.4" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/keyring": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-8.3.3.tgz", - "integrity": "sha512-TgoIpaTqn7voT7lDu5W6p0Z+216OImpqtHuaiFy125ekCQurrf9BVIdwp56y5qoFLDAZ5i9gnWHMIgOQ6AJj/Q==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-8.4.1.tgz", + "integrity": "sha512-0qfS7qikUxhe6LEdCOcMRdCxEa26inJ5aSUWaf5dXy+dgy9VJiov6uXAbXdAd1UHpDvr9hvw94FX+hXsJ7Vsyw==", "dependencies": { - "@babel/runtime": "^7.16.7", - "@polkadot/util": "8.3.3", - "@polkadot/util-crypto": "8.3.3" + "@babel/runtime": "^7.17.2", + "@polkadot/util": "8.4.1", + "@polkadot/util-crypto": "8.4.1" }, "engines": { "node": ">=14.0.0" }, "peerDependencies": { - "@polkadot/util": "8.3.3", - "@polkadot/util-crypto": "8.3.3" + "@polkadot/util": "8.4.1", + "@polkadot/util-crypto": "8.4.1" } }, "node_modules/@polkadot/networks": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-8.3.3.tgz", - "integrity": "sha512-yj0DMqmzRZbvgaoZztV3/RPgYJjBhT17Dhu+FX/LUJzVbAF/RfjkzNsJT4Ta4kLDxQMYZq1avUac0ia2j9NcNw==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-8.4.1.tgz", + "integrity": "sha512-YFY3fPLbc1Uz9zsX4TOzjY/FF09nABMgrMkvqddrVbSgo71NvoBv3Gqw3mKV/7bX1Gzk1ODfvTzamdpsKEWSnA==", "dependencies": { - "@babel/runtime": "^7.16.7", - "@polkadot/util": "8.3.3" + "@babel/runtime": "^7.17.2", + "@polkadot/util": "8.4.1", + "@substrate/ss58-registry": "^1.14.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/rpc-augment": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-7.7.1.tgz", - "integrity": "sha512-Hwa6qjxHSuzjyYxa2gOpIoN0PWhWDLEOxpHFZxwNoCkmGtcIpNwWOtK1chZWEl9Zd1Yq+JLIEoimNN+2ok/3cA==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-7.11.1.tgz", + "integrity": "sha512-cP/g6dM5Rmdeno+sOi/PBvAEycRoi/UI1MOKb0lVhlFJayw/uyGOhHtPKOnLh2fyDJ/q66HO3pu6aem3ORFwhQ==", "dependencies": { - "@babel/runtime": "^7.17.0", - "@polkadot/rpc-core": "7.7.1", - "@polkadot/types": "7.7.1", - "@polkadot/types-codec": "7.7.1", - "@polkadot/util": "^8.3.3" + "@babel/runtime": "^7.17.2", + "@polkadot/rpc-core": "7.11.1", + "@polkadot/types": "7.11.1", + "@polkadot/types-codec": "7.11.1", + "@polkadot/util": "^8.4.1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/rpc-core": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-7.7.1.tgz", - "integrity": "sha512-vJuuTbmGKEcjJY3JIjMirLESVjnHBGajtTaLtlcwBcp8Jgj/fBi+FoL3gcpZS4BR87/qVe35aoNO2hDhU9DUJA==", - "dependencies": { - "@babel/runtime": "^7.17.0", - "@polkadot/rpc-augment": "7.7.1", - "@polkadot/rpc-provider": "7.7.1", - "@polkadot/types": "7.7.1", - "@polkadot/util": "^8.3.3", - "rxjs": "^7.5.2" + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-7.11.1.tgz", + "integrity": "sha512-Bp71BwOSPT4/xmYWn9e9/ikGKYYmltbceVwa0MJiuKI0Xd5YntjtJVov17Fqlt+eddkLGt74750paykvHDJWWQ==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "@polkadot/rpc-augment": "7.11.1", + "@polkadot/rpc-provider": "7.11.1", + "@polkadot/types": "7.11.1", + "@polkadot/util": "^8.4.1", + "rxjs": "^7.5.4" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/rpc-provider": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-7.7.1.tgz", - "integrity": "sha512-PPAMjQgV4pA/l+L+mk93dvmzwMA2tZSzVf0DjsldD0vi5Oydo0Sw8I4YEsueTnHme0PadIZXUzWEonG81klAlw==", - "dependencies": { - "@babel/runtime": "^7.17.0", - "@polkadot/keyring": "^8.3.3", - "@polkadot/types": "7.7.1", - "@polkadot/types-support": "7.7.1", - "@polkadot/util": "^8.3.3", - "@polkadot/util-crypto": "^8.3.3", - "@polkadot/x-fetch": "^8.3.3", - "@polkadot/x-global": "^8.3.3", - "@polkadot/x-ws": "^8.3.3", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-7.11.1.tgz", + "integrity": "sha512-07Mg+r9swMjNISDK8ntDI5gFZU8rtHeoB27/qQwZzcWugogva8rNhaInBikZPKlF7yxM6l2VMaQnOziKUNsnRw==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "@polkadot/keyring": "^8.4.1", + "@polkadot/types": "7.11.1", + "@polkadot/types-support": "7.11.1", + "@polkadot/util": "^8.4.1", + "@polkadot/util-crypto": "^8.4.1", + "@polkadot/x-fetch": "^8.4.1", + "@polkadot/x-global": "^8.4.1", + "@polkadot/x-ws": "^8.4.1", "eventemitter3": "^4.0.7", "mock-socket": "^9.1.2", "nock": "^13.2.4" @@ -1631,37 +1471,26 @@ "node": ">=14.0.0" } }, - "node_modules/@polkadot/rpc-provider/node_modules/@polkadot/x-global": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.4.1.tgz", - "integrity": "sha512-MQs89LKQrJwiXjV7dY2kDOPNaiWrwaQ/Fzg93ycB2xMCclRV1jRFRhnhTPJ8Ao79lhCCoazd7pXIyFgfifxdqg==", - "dependencies": { - "@babel/runtime": "^7.17.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@polkadot/typegen": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/typegen/-/typegen-7.7.1.tgz", - "integrity": "sha512-uzyau1I6vrMiejTIXLSvmJ5ZTLstUKlfmevHxFO1Pf6x56vRed1zr8u5Y5TmjF5FQkIdh0d6KpZoWqEcHa4AJQ==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/typegen/-/typegen-7.11.1.tgz", + "integrity": "sha512-pdxBOEU6VoMd2xjexQPfHSb0PC1DU/zXs/Zq+Z4tT+PPWkr9TtfbcZWpGmg6xFyWChcmurvwCI/VTnurBUFC0A==", "dev": true, "dependencies": { - "@babel/core": "^7.17.0", + "@babel/core": "^7.17.5", "@babel/register": "^7.17.0", - "@babel/runtime": "^7.17.0", - "@polkadot/api": "7.7.1", - "@polkadot/api-augment": "7.7.1", - "@polkadot/rpc-augment": "7.7.1", - "@polkadot/rpc-provider": "7.7.1", - "@polkadot/types": "7.7.1", - "@polkadot/types-augment": "7.7.1", - "@polkadot/types-codec": "7.7.1", - "@polkadot/types-create": "7.7.1", - "@polkadot/types-support": "7.7.1", - "@polkadot/util": "^8.3.3", - "@polkadot/x-ws": "^8.3.3", + "@babel/runtime": "^7.17.2", + "@polkadot/api": "7.11.1", + "@polkadot/api-augment": "7.11.1", + "@polkadot/rpc-augment": "7.11.1", + "@polkadot/rpc-provider": "7.11.1", + "@polkadot/types": "7.11.1", + "@polkadot/types-augment": "7.11.1", + "@polkadot/types-codec": "7.11.1", + "@polkadot/types-create": "7.11.1", + "@polkadot/types-support": "7.11.1", + "@polkadot/util": "^8.4.1", + "@polkadot/x-ws": "^8.4.1", "handlebars": "^4.7.7", "websocket": "^1.0.34", "yargs": "^17.3.1" @@ -1678,102 +1507,102 @@ } }, "node_modules/@polkadot/types": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-7.7.1.tgz", - "integrity": "sha512-koJfoKvSiwpZKkHZrOpelb+JxCf+0iGzVOt0hj0plOK5oOOSJd0Elpy1dc8QQEJUC3V/pNdAGTsV6dvqi8rnAg==", - "dependencies": { - "@babel/runtime": "^7.17.0", - "@polkadot/keyring": "^8.3.3", - "@polkadot/types-augment": "7.7.1", - "@polkadot/types-codec": "7.7.1", - "@polkadot/types-create": "7.7.1", - "@polkadot/util": "^8.3.3", - "@polkadot/util-crypto": "^8.3.3", - "rxjs": "^7.5.2" + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-7.11.1.tgz", + "integrity": "sha512-jxVrxIbsSfH9xK1Q3vaCfJmbkm0OlvoXz0GxdP5RJ7dQnxlNYWQUXanFkKebbRL8gSEs1wSRVccil/TSH65Nvg==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "@polkadot/keyring": "^8.4.1", + "@polkadot/types-augment": "7.11.1", + "@polkadot/types-codec": "7.11.1", + "@polkadot/types-create": "7.11.1", + "@polkadot/util": "^8.4.1", + "@polkadot/util-crypto": "^8.4.1", + "rxjs": "^7.5.4" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/types-augment": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-7.7.1.tgz", - "integrity": "sha512-NsPJgD85UUIOao2rtY9jCzt2+MdZsn2qhBSphnqQqS3yOQKoonaHojCsRKt39raQ0UNST+At5zL1+HdcKP53EQ==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-7.11.1.tgz", + "integrity": "sha512-jCnZ/eMkLaqSKl5q4JwBxslhAaJSSNHt04reZRs1i2jlC2UVgiFN1Rr5GJmHYAwDPoFcge/rAm6bckfhXUIdOw==", "dependencies": { - "@babel/runtime": "^7.17.0", - "@polkadot/types": "7.7.1", - "@polkadot/types-codec": "7.7.1", - "@polkadot/util": "^8.3.3" + "@babel/runtime": "^7.17.2", + "@polkadot/types": "7.11.1", + "@polkadot/types-codec": "7.11.1", + "@polkadot/util": "^8.4.1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/types-codec": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-7.7.1.tgz", - "integrity": "sha512-NqxQGpfagc+51TGBo8lrmEJox3cZwx6lSeoPnGUqQBcOhqjaJ8EPEAaFHc0TTc22/sLs1qYqBc+cz+9UXKAEOg==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-7.11.1.tgz", + "integrity": "sha512-rDM/FYcnou2Chy+urd7U41lcjM6jWUEUydyP9NuTOSAamCGtH0eKw52GURKTsKTT5r8wJdPMKv/yNxs1i+l5Lw==", "dependencies": { - "@babel/runtime": "^7.17.0", - "@polkadot/util": "^8.3.3" + "@babel/runtime": "^7.17.2", + "@polkadot/util": "^8.4.1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/types-create": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-7.7.1.tgz", - "integrity": "sha512-T7iyu0u1Ji3ErA3YcY+WuI83TMcnvhTYJXs+OmGksWa64MQAiWs2pkYNmS4ieArUW3vsel5nv9noBzyl2MAocQ==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-7.11.1.tgz", + "integrity": "sha512-nVYaJC/IDsM4WM9WGjAI7qQ9scPSlBqqzwqLdvXCJeq3trOTt68x39DD0zp0hzJ/7MeXjPToDDWjpAF0B9mWSQ==", "dependencies": { - "@babel/runtime": "^7.17.0", - "@polkadot/types-codec": "7.7.1", - "@polkadot/util": "^8.3.3" + "@babel/runtime": "^7.17.2", + "@polkadot/types-codec": "7.11.1", + "@polkadot/util": "^8.4.1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/types-known": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-7.7.1.tgz", - "integrity": "sha512-NtRPOwHwKCJhzYGBWq/8n9pPalWY3AAx9jNE3TXAfxOCwVelZaXhC9TZ8iXkzZUixG1pJ+5KInXbjDeGfGpi/g==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-7.11.1.tgz", + "integrity": "sha512-BBqQxG7I+wUjeLby1u5p9aSoZ5Vy0oCwmm/aKN64JH9vBEz1OOA0pRdcCooGCG/884Wb5pRpacWTepQMQkOTLw==", "dependencies": { - "@babel/runtime": "^7.17.0", - "@polkadot/networks": "^8.3.3", - "@polkadot/types": "7.7.1", - "@polkadot/types-codec": "7.7.1", - "@polkadot/types-create": "7.7.1", - "@polkadot/util": "^8.3.3" + "@babel/runtime": "^7.17.2", + "@polkadot/networks": "^8.4.1", + "@polkadot/types": "7.11.1", + "@polkadot/types-codec": "7.11.1", + "@polkadot/types-create": "7.11.1", + "@polkadot/util": "^8.4.1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/types-support": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-7.7.1.tgz", - "integrity": "sha512-JQmplnNGML43sE+dArlnzEbDMvpo0TkOMvpM8VflThjabG1MhCFuZdiOSm0WQ/iz4wm+3KihOKGzR6TPpGMKOA==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-7.11.1.tgz", + "integrity": "sha512-pJmDUHK7DOO6mjpntxq9Lq0tjvqwc15FrrrNbuENgRiOueRqcAlzv+V80wdzoIBUwINgKphtpzu+rdQIYsVVQg==", "dependencies": { - "@babel/runtime": "^7.17.0", - "@polkadot/util": "^8.3.3" + "@babel/runtime": "^7.17.2", + "@polkadot/util": "^8.4.1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/util": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-8.3.3.tgz", - "integrity": "sha512-8u1NShSHrCFeFvxWL8WAyRN8y1/iPvijqYCDeeHziBxCNBrL3VKDc9GNF11skeay/EKQiCHBSBeAYyyQOpLebA==", - "dependencies": { - "@babel/runtime": "^7.16.7", - "@polkadot/x-bigint": "8.3.3", - "@polkadot/x-global": "8.3.3", - "@polkadot/x-textdecoder": "8.3.3", - "@polkadot/x-textencoder": "8.3.3", - "@types/bn.js": "^4.11.6", - "bn.js": "^4.12.0", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-8.4.1.tgz", + "integrity": "sha512-8+wqHgFbFWI5TfrvtcL888w0nWvFpbTTYIcbpEw+zYGp3n1YZTAMMP26bXWAaQX5AttxynJRij7JP3ySxYY1fg==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "@polkadot/x-bigint": "8.4.1", + "@polkadot/x-global": "8.4.1", + "@polkadot/x-textdecoder": "8.4.1", + "@polkadot/x-textencoder": "8.4.1", + "@types/bn.js": "^5.1.0", + "bn.js": "^5.2.0", "ip-regex": "^4.3.0" }, "engines": { @@ -1781,61 +1610,27 @@ } }, "node_modules/@polkadot/util-crypto": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-8.3.3.tgz", - "integrity": "sha512-kXaT2VTEbJq1wNiV0Dz5qJuVWy7pK+x1QLcyWC+6OFERYO+BCp1Y2bTOcLUeF/gyyR/ZaRMMdTyu0ZbHrwH0xg==", - "dependencies": { - "@babel/runtime": "^7.16.7", - "@noble/hashes": "0.5.7", - "@noble/secp256k1": "1.3.4", - "@polkadot/networks": "8.3.3", - "@polkadot/util": "8.3.3", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-8.4.1.tgz", + "integrity": "sha512-mWjp83aIWw+EhKN9RkUDmubXibo25q5yHJl4BGm2gT71yTZcABB7q1SGfpDqLH9AB3eXJiutqhC4L3SH7YZ+6Q==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "@noble/hashes": "1.0.0", + "@noble/secp256k1": "1.5.2", + "@polkadot/networks": "8.4.1", + "@polkadot/util": "8.4.1", "@polkadot/wasm-crypto": "^4.5.1", - "@polkadot/x-bigint": "8.3.3", - "@polkadot/x-randomvalues": "8.3.3", + "@polkadot/x-bigint": "8.4.1", + "@polkadot/x-randomvalues": "8.4.1", + "@scure/base": "1.0.0", "ed2curve": "^0.3.0", - "micro-base": "^0.10.2", "tweetnacl": "^1.0.3" }, "engines": { "node": ">=14.0.0" }, "peerDependencies": { - "@polkadot/util": "8.3.3" - } - }, - "node_modules/@polkadot/util-crypto/node_modules/@polkadot/x-global": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", - "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", - "dependencies": { - "@babel/runtime": "^7.16.7" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@polkadot/util-crypto/node_modules/@polkadot/x-randomvalues": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-8.3.3.tgz", - "integrity": "sha512-yxM6GWQholf+vY4dHxKVwtJwDzNUz4UJlL/iN3PA0cuhQ37gxmtJugnNAllcFd8LDNXEN47Ky6Ifw1OHHmZaVw==", - "dependencies": { - "@babel/runtime": "^7.16.7", - "@polkadot/x-global": "8.3.3" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@polkadot/util/node_modules/@polkadot/x-global": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", - "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", - "dependencies": { - "@babel/runtime": "^7.16.7" - }, - "engines": { - "node": ">=14.0.0" + "@polkadot/util": "8.4.1" } }, "node_modules/@polkadot/wasm-crypto": { @@ -1878,23 +1673,12 @@ } }, "node_modules/@polkadot/x-bigint": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-8.3.3.tgz", - "integrity": "sha512-2CT25f0zN/uhch3KpM38jtQfFJ1zJCNT41exg49ztsOvm4f6l+6hW91NLhNAZ313B/c6Z4Lm3DalsjAOdBZ8Nw==", - "dependencies": { - "@babel/runtime": "^7.16.7", - "@polkadot/x-global": "8.3.3" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@polkadot/x-bigint/node_modules/@polkadot/x-global": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", - "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-8.4.1.tgz", + "integrity": "sha512-QVP0UMoM0nBD998s3ESeaoSiVMEnHK3x0CCqocKO4l7ADNw8lfWdDG7Bb0+ymNaFYGz2KgEWxkN0VhNEnXzo0w==", "dependencies": { - "@babel/runtime": "^7.16.7" + "@babel/runtime": "^7.17.2", + "@polkadot/x-global": "8.4.1" }, "engines": { "node": ">=14.0.0" @@ -1914,7 +1698,7 @@ "node": ">=14.0.0" } }, - "node_modules/@polkadot/x-fetch/node_modules/@polkadot/x-global": { + "node_modules/@polkadot/x-global": { "version": "8.4.1", "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.4.1.tgz", "integrity": "sha512-MQs89LKQrJwiXjV7dY2kDOPNaiWrwaQ/Fzg93ycB2xMCclRV1jRFRhnhTPJ8Ao79lhCCoazd7pXIyFgfifxdqg==", @@ -1925,72 +1709,37 @@ "node": ">=14.0.0" } }, - "node_modules/@polkadot/x-global": { - "version": "8.3.4-1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.4-1.tgz", - "integrity": "sha512-6KlG5PAG7OKc+fPteDV+MXpuzHzpBKCWS6Fc+M08Mehwr+wccwAMV3q8tinCGn4qQV6iPwNOJd0cxRvPO4v9YQ==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.16.7" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@polkadot/x-randomvalues": { - "version": "8.3.4-1", - "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-8.3.4-1.tgz", - "integrity": "sha512-gWKOUMGzmca2ncxLiPxR2lMTopRhTjd/Ww3U+QWfzgXiNqZ8ZIb6tB9AZfVTH0WGKQFSSYJTTqwVg5VOoB96cQ==", - "peer": true, + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-8.4.1.tgz", + "integrity": "sha512-1dRIFIib4RzyVo0k5oMLuxqSuZEV6UVvvN+jJw9G/9P1ggZtHjM1KwoFcyHgvpk2RWTB9eJZFemwSvQTpdmSJw==", "dependencies": { - "@babel/runtime": "^7.16.7", - "@polkadot/x-global": "8.3.4-1" + "@babel/runtime": "^7.17.2", + "@polkadot/x-global": "8.4.1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/x-textdecoder": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-8.3.3.tgz", - "integrity": "sha512-oEvFJv/F+fQ336ciRuJJgJFtfyOX6a2Nyr/5GCkiSQjkEIdnBUuO49yXpHNmQsNI0WndLWIEitiVVa9KuDslYw==", - "dependencies": { - "@babel/runtime": "^7.16.7", - "@polkadot/x-global": "8.3.3" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@polkadot/x-textdecoder/node_modules/@polkadot/x-global": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", - "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-8.4.1.tgz", + "integrity": "sha512-qbSXyR2KvE1bO6QGsxWU3Yrx5e70rX2lwv0MHG++MyyNaDoBM3hjx14lF911bYRWXR6MW4eZ+0Nakn0oM5uSKw==", "dependencies": { - "@babel/runtime": "^7.16.7" + "@babel/runtime": "^7.17.2", + "@polkadot/x-global": "8.4.1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/x-textencoder": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-8.3.3.tgz", - "integrity": "sha512-acVsJjmlQ7aluUq8JARY2wJAbf+6dvZNoUrvgzdX/jl5MqvqeIXmX3LX71MyidLt27Z537VDgNzWw8V/524AVQ==", - "dependencies": { - "@babel/runtime": "^7.16.7", - "@polkadot/x-global": "8.3.3" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@polkadot/x-textencoder/node_modules/@polkadot/x-global": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", - "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-8.4.1.tgz", + "integrity": "sha512-1UYuckNOk6NUk70Y/SGbK8oyGbqPlrny1x2OWoK/BT3/tyL2xKVV5TlXDOiFrX1PChbskXye5M8blCTYikFiJg==", "dependencies": { - "@babel/runtime": "^7.16.7" + "@babel/runtime": "^7.17.2", + "@polkadot/x-global": "8.4.1" }, "engines": { "node": ">=14.0.0" @@ -2010,16 +1759,16 @@ "node": ">=14.0.0" } }, - "node_modules/@polkadot/x-ws/node_modules/@polkadot/x-global": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.4.1.tgz", - "integrity": "sha512-MQs89LKQrJwiXjV7dY2kDOPNaiWrwaQ/Fzg93ycB2xMCclRV1jRFRhnhTPJ8Ao79lhCCoazd7pXIyFgfifxdqg==", - "dependencies": { - "@babel/runtime": "^7.17.2" - }, - "engines": { - "node": ">=14.0.0" - } + "node_modules/@scure/base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.0.0.tgz", + "integrity": "sha512-gIVaYhUsy+9s58m/ETjSJVKHhKTBMmcRb9cEV5/5dwvfDlfORjKrFsDeDHWRrm6RjcPvCLZFwGJjAjLj1gg4HA==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] }, "node_modules/@sindresorhus/is": { "version": "0.14.0", @@ -2040,14 +1789,19 @@ } }, "node_modules/@sinonjs/fake-timers": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", - "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", "dev": true, "dependencies": { "@sinonjs/commons": "^1.7.0" } }, + "node_modules/@substrate/ss58-registry": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@substrate/ss58-registry/-/ss58-registry-1.15.0.tgz", + "integrity": "sha512-UU5uN8HEp0NM22od6kHWLltX0McQPgPX6O3gj7fSf1mMExsCS5fzW88gv1WaVaT8Q+umvGgnIAF7+Tvp8fqTFw==" + }, "node_modules/@szmarczak/http-timer": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", @@ -2069,9 +1823,9 @@ } }, "node_modules/@types/babel__core": { - "version": "7.1.16", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", - "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==", + "version": "7.1.18", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.18.tgz", + "integrity": "sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==", "dev": true, "dependencies": { "@babel/parser": "^7.1.0", @@ -2082,9 +1836,9 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", - "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" @@ -2110,9 +1864,9 @@ } }, "node_modules/@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", + "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", "dependencies": { "@types/node": "*" } @@ -2166,16 +1920,10 @@ "npm": ">=2.0.0" } }, - "node_modules/@types/inquirer/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", "dev": true }, "node_modules/@types/istanbul-lib-report": { @@ -2197,12 +1945,12 @@ } }, "node_modules/@types/jest": { - "version": "27.0.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.2.tgz", - "integrity": "sha512-4dRxkS/AFX0c5XW6IPMNOydLn2tEhNhJV7DnYK+0bjoJZ+QTmfucBlihX7aoEsh/ocYtkLC73UbnBXBXIxsULA==", + "version": "27.4.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.1.tgz", + "integrity": "sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==", "dev": true, "dependencies": { - "jest-diff": "^27.0.0", + "jest-matcher-utils": "^27.0.0", "pretty-format": "^27.0.0" } }, @@ -2221,19 +1969,11 @@ } }, "node_modules/@types/prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz", + "integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==", "dev": true }, - "node_modules/@types/sqlite3": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@types/sqlite3/-/sqlite3-3.1.7.tgz", - "integrity": "sha512-8FHV/8Uzd7IwdHm5mvmF2Aif4aC/gjrt4axWD9SmfaxITnOjtOhCbOSTuqv/VbH1uq0QrwlaTj9aTz3gmR6u4w==", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", @@ -2267,9 +2007,9 @@ } }, "node_modules/@types/yargs-parser": { - "version": "20.2.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", "dev": true }, "node_modules/abab": { @@ -2281,7 +2021,8 @@ "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true }, "node_modules/acorn": { "version": "8.7.0", @@ -2336,43 +2077,6 @@ "node": ">= 6.0.0" } }, - "node_modules/agent-base/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/agent-base/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "optional": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/amp": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz", @@ -2462,52 +2166,6 @@ "node": ">= 8" } }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "node_modules/are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "node_modules/are-we-there-yet/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/are-we-there-yet/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/are-we-there-yet/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/are-we-there-yet/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -2530,24 +2188,6 @@ "node": ">=6" } }, - "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "optional": true, - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "optional": true, - "engines": { - "node": ">=0.8" - } - }, "node_modules/assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -2567,10 +2207,15 @@ "node": ">=4" } }, + "node_modules/ast-types/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, "node_modules/async": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz", - "integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==" + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" }, "node_modules/async-listener": { "version": "0.6.10", @@ -2597,30 +2242,6 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "optional": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "optional": true - }, "node_modules/axios": { "version": "0.21.4", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", @@ -2630,18 +2251,18 @@ } }, "node_modules/babel-jest": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.2.4.tgz", - "integrity": "sha512-f24OmxyWymk5jfgLdlCMu4fTs4ldxFBIdn5sJdhvGC1m08rSkJ5hYbWkNmfBSvE/DjhCVNSHXepxsI6THGfGsg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", "dev": true, "dependencies": { - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^27.2.0", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "slash": "^3.0.0" }, "engines": { @@ -2661,15 +2282,15 @@ } }, "node_modules/babel-plugin-istanbul": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", - "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-instrument": "^5.0.4", "test-exclude": "^6.0.0" }, "engines": { @@ -2677,9 +2298,9 @@ } }, "node_modules/babel-plugin-jest-hoist": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz", - "integrity": "sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", "dev": true, "dependencies": { "@babel/template": "^7.3.3", @@ -2715,12 +2336,12 @@ } }, "node_modules/babel-preset-jest": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz", - "integrity": "sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^27.2.0", + "babel-plugin-jest-hoist": "^27.5.1", "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { @@ -2735,20 +2356,24 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "optional": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/bcrypt-pbkdf/node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/binary-extensions": { "version": "2.2.0", @@ -2758,6 +2383,16 @@ "node": ">=8" } }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, "node_modules/blessed": { "version": "0.1.81", "resolved": "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz", @@ -2769,22 +2404,10 @@ "node": ">= 0.8.0" } }, - "node_modules/block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "optional": true, - "dependencies": { - "inherits": "~2.0.0" - }, - "engines": { - "node": "0.4 || >=0.5.8" - } - }, "node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" }, "node_modules/bodec": { "version": "0.1.0", @@ -2832,13 +2455,22 @@ "node": ">=8" } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node_modules/boxen/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/braces": { @@ -2859,12 +2491,12 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.19.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.3.tgz", - "integrity": "sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.0.tgz", + "integrity": "sha512-bnpOoa+DownbciXj0jVGENf8VYQnE2LNWomhYuCsMmmx9Jd9lwq0WXODuwpSsp8AVdKM2/HorrzxAfbKvWTByQ==", "dependencies": { - "caniuse-lite": "^1.0.30001312", - "electron-to-chromium": "^1.4.71", + "caniuse-lite": "^1.0.30001313", + "electron-to-chromium": "^1.4.76", "escalade": "^3.1.1", "node-releases": "^2.0.2", "picocolors": "^1.0.0" @@ -2901,6 +2533,29 @@ "node-int64": "^0.4.0" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -2919,9 +2574,9 @@ } }, "node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "engines": { "node": ">= 0.8" } @@ -3000,20 +2655,14 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001312", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz", - "integrity": "sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==", + "version": "1.0.30001314", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001314.tgz", + "integrity": "sha512-0zaSO+TnCHtHJIbpLroX7nsD+vYuOVjl3uzFbJO1wMVbuveJA0RK2WcQA9ZUIOiO0/ArMiMgHJLxfEZhQiC0kw==", "funding": { "type": "opencollective", "url": "https://opencollective.com/browserslist" } }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "optional": true - }, "node_modules/chai": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", @@ -3073,9 +2722,15 @@ } }, "node_modules/chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -3092,15 +2747,10 @@ "fsevents": "~2.3.2" } }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", "dev": true }, "node_modules/cjs-module-lexer": { @@ -3141,17 +2791,27 @@ } }, "node_modules/cli-progress": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.9.0.tgz", - "integrity": "sha512-g7rLWfhAo/7pF+a/STFH/xPyosaL1zgADhI0OM83hl3c7S43iGvJWEAV2QuDOnQ8i6EMBj/u4+NTd0d5L+4JfA==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.10.0.tgz", + "integrity": "sha512-kLORQrhYCAtUPLZxqsAt2YJGOvRdt34+O6jl5cQGb7iF3dM55FQZlTR+rQyIK9JUcO9bBMwZsTlND+3dmFU2Cw==", "dependencies": { - "colors": "^1.1.2", "string-width": "^4.2.0" }, "engines": { "node": ">=4" } }, + "node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cli-tableau": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/cli-tableau/-/cli-tableau-2.0.1.tgz", @@ -3194,6 +2854,14 @@ "wrap-ansi": "^7.0.0" } }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "engines": { + "node": ">=0.8" + } + }, "node_modules/clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -3227,14 +2895,6 @@ "node": ">= 0.12.0" } }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/collect-v8-coverage": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", @@ -3257,14 +2917,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "engines": { - "node": ">=0.1.90" - } - }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -3277,11 +2929,11 @@ } }, "node_modules/command-line-args": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.1.1.tgz", - "integrity": "sha512-hL/eG8lrll1Qy1ezvkant+trihbGnaKaeEjj6Scyr3DN+RC7iQ5Rz84IeLERfAWDGo0HBSNAakczwgCilDXnWg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.0.tgz", + "integrity": "sha512-4zqtU1hYsSJzcJBOcNZIbW5Fbk9BkjCp1pZVhQKoRaWL5J7N4XphDLwo8aWwdQpTugxwu+jf9u2ZhkXiqp5Z6A==", "dependencies": { - "array-back": "^3.0.1", + "array-back": "^3.1.0", "find-replace": "^3.0.0", "lodash.camelcase": "^4.3.0", "typical": "^4.0.0" @@ -3291,11 +2943,11 @@ } }, "node_modules/commander": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.0.0.tgz", - "integrity": "sha512-ovx/7NkTrnPuIV8sqk/GjUIIM1+iUQeqA3ye2VNpq9sVoiZsooObWlQy+OPWGI17GDaEoybuAGJm6U8yC077BA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "engines": { - "node": ">= 10" + "node": ">= 12" } }, "node_modules/commondir": { @@ -3341,20 +2993,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/configstore/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, "node_modules/continuation-local-storage": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", @@ -3372,11 +3010,6 @@ "safe-buffer": "~5.1.1" } }, - "node_modules/convert-source-map/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -3388,13 +3021,10 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "node_modules/cron": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/cron/-/cron-1.8.2.tgz", - "integrity": "sha512-Gk2c4y6xKEO8FSAUTklqtfSr7oTq0CiPQeLBG5Fl0qoXpZyMcj1SG59YL+hqq04bu6/IuEA7lMkYDAplQNKkyg==", - "dependencies": { - "moment-timezone": "^0.5.x" - } + "node_modules/croner": { + "version": "4.1.97", + "resolved": "https://registry.npmjs.org/croner/-/croner-4.1.97.tgz", + "integrity": "sha512-/f6gpQuxDaqXu+1kwQYSckUglPaOrHdbIlBAu0YuW8/Cdb45XwXYNUBXg3r/9Mo6n540Kn/smKcZWko5x99KrQ==" }, "node_modules/cross-spawn": { "version": "7.0.3", @@ -3411,36 +3041,39 @@ } }, "node_modules/crypto-random-string": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-3.3.0.tgz", - "integrity": "sha512-teWAwfMb1d6brahYyKqcBEb5Yp8PJPvPOdOonXDnvaKOTmKDFNVE8E3Y2XQuzjNV/3XMwHbrX9fHWvrhRKt4Gg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", "dependencies": { - "type-fest": "^0.8.1" + "type-fest": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", "dev": true, "dependencies": { "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" }, "funding": { "url": "https://github.com/sponsors/fb55" } }, "node_modules/css-what": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", - "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", "dev": true, "engines": { "node": ">= 6" @@ -3487,18 +3120,6 @@ "type": "^1.0.1" } }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "optional": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/data-uri-to-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", @@ -3527,11 +3148,19 @@ "integrity": "sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw==" }, "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dependencies": { - "ms": "2.0.0" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/decimal.js": { @@ -3573,6 +3202,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, "engines": { "node": ">=4.0.0" } @@ -3591,6 +3221,14 @@ "node": ">=0.10.0" } }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dependencies": { + "clone": "^1.0.2" + } + }, "node_modules/defer-to-connect": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", @@ -3610,19 +3248,57 @@ } }, "node_modules/degenerator": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.1.tgz", - "integrity": "sha512-LFsIFEeLPlKvAKXu7j3ssIG6RT0TbI7/GhsqrI0DnHASEQjXQ0LUSYcjJteGgRGmZbl1TnMSxpNQIAiJ7Du5TQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.2.tgz", + "integrity": "sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==", "dependencies": { "ast-types": "^0.13.2", "escodegen": "^1.8.1", "esprima": "^4.0.0", - "vm2": "^3.9.3" + "vm2": "^3.9.8" }, "engines": { "node": ">= 6" } }, + "node_modules/degenerator/node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/degenerator/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/degenerator/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -3631,28 +3307,12 @@ "node": ">=0.4.0" } }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "bin": { - "detect-libc": "bin/detect-libc.js" - }, + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "engines": { - "node": ">=0.10" + "node": ">= 0.8" } }, "node_modules/detect-newline": { @@ -3674,9 +3334,9 @@ } }, "node_modules/diff-sequences": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", "dev": true, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -3739,9 +3399,9 @@ } }, "node_modules/domhandler": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", - "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", + "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", "dev": true, "dependencies": { "domelementtype": "^2.2.0" @@ -3754,9 +3414,9 @@ } }, "node_modules/domutils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", - "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, "dependencies": { "dom-serializer": "^1.0.1", @@ -3785,16 +3445,6 @@ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "optional": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "node_modules/ed2curve": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/ed2curve/-/ed2curve-0.3.0.tgz", @@ -3804,9 +3454,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.75", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.75.tgz", - "integrity": "sha512-LxgUNeu3BVU7sXaKjUDD9xivocQLxFtq6wgERrutdY/yIOps3ODOZExK1jg8DTEg4U8TUCb5MLGeWFOYuxjF3Q==" + "version": "1.4.79", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.79.tgz", + "integrity": "sha512-nWfAxof87mGHkbORCwVRPst4FlSVdprOKS6dBMrcwn3sjwf8iHXEhsu1+FU5Psd7Ps3KKeBufAdfsPK5BmbSUg==" }, "node_modules/emitter-listener": { "version": "1.1.2", @@ -3862,14 +3512,27 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, "node_modules/es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "version": "0.10.57", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.57.tgz", + "integrity": "sha512-L7cCNoPwTkAp7IBHxrKLsh7NKiVFkcdxlP9vbVw9QUvb7gF0Mz9bEBN0WY9xqdTjGF907EMT/iG013vnbqwu1Q==", + "hasInstallScript": true, "dependencies": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/es6-iterator": { @@ -3917,12 +3580,13 @@ } }, "node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, "dependencies": { "esprima": "^4.0.1", - "estraverse": "^4.2.0", + "estraverse": "^5.2.0", "esutils": "^2.0.2", "optionator": "^0.8.1" }, @@ -3931,12 +3595,22 @@ "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": ">=4.0" + "node": ">=6.0" }, "optionalDependencies": { "source-map": "~0.6.1" } }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/esm": { "version": "3.2.25", "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", @@ -3958,9 +3632,10 @@ } }, "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, "engines": { "node": ">=4.0" } @@ -4006,18 +3681,6 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/execa/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -4028,34 +3691,20 @@ } }, "node_modules/expect": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.2.4.tgz", - "integrity": "sha512-gOtuonQ8TCnbNNCSw2fhVzRf8EFYDII4nB5NmG4IEV0rbUnW1I5zXvoTntU4iicB/Uh0oZr20NGlOLdJiwsOZA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", "dev": true, "dependencies": { - "@jest/types": "^27.2.4", - "ansi-styles": "^5.0.0", - "jest-get-type": "^27.0.6", - "jest-matcher-utils": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-regex-util": "^27.0.6" + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/expect/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/export-to-csv": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/export-to-csv/-/export-to-csv-0.2.1.tgz", @@ -4074,12 +3723,6 @@ "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==" }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "optional": true - }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -4093,25 +3736,10 @@ "node": ">=4" } }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "engines": [ - "node >=0.6.0" - ], - "optional": true - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "optional": true - }, "node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -4121,7 +3749,7 @@ "micromatch": "^4.0.4" }, "engines": { - "node": ">=8" + "node": ">=8.6.0" } }, "node_modules/fast-json-patch": { @@ -4133,7 +3761,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "devOptional": true + "dev": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", @@ -4141,9 +3769,9 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, "node_modules/fastq": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz", - "integrity": "sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -4164,9 +3792,9 @@ "integrity": "sha1-EOhdo4v+p/xZk0HClu4ddyZu5kA=" }, "node_modules/figlet": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.0.tgz", - "integrity": "sha512-ZQJM4aifMpz6H19AW1VqvZ7l4pOE9p7i/3LyxgO2kp+PO/VcDYNqIHEMtkccqIhTXMKci4kjueJr/iCQEaT/Ww==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.2.tgz", + "integrity": "sha512-WOn21V8AhyE1QqVfPIVxe3tupJacq1xGkPTB4iagT6o+P2cAgEOOwIxMftr4+ZCTI6d551ij9j61DFr0nsP2uQ==", "engines": { "node": ">= 0.4.0" } @@ -4230,15 +3858,16 @@ } }, "node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "locate-path": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/follow-redirects": { @@ -4260,15 +3889,6 @@ } } }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "optional": true, - "engines": { - "node": "*" - } - }, "node_modules/form-data": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", @@ -4283,9 +3903,9 @@ } }, "node_modules/fp-ts": { - "version": "2.9.5", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.9.5.tgz", - "integrity": "sha512-MiHrA5teO6t8zKArE3DdMPT/Db6v2GUt5yfWnhBTrrsVfeCJUUnV6sgFvjGNBKDmEMqVwRFkEePL7wPwqrLKKA==" + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.11.7.tgz", + "integrity": "sha512-UUpeygu50mV/J96Nk92fzHDznYXJxsO20wrUZGJppja1f8P+fhCaclcqcfubEyrH7XXPsmYn98CJF0BVAEn3ZQ==" }, "node_modules/fs-extra": { "version": "8.1.0", @@ -4300,14 +3920,6 @@ "node": ">=6 <7 || >=8" } }, - "node_modules/fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "dependencies": { - "minipass": "^2.6.0" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -4326,45 +3938,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "optional": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/fstream/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "optional": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/fstream/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "optional": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/ftp": { "version": "0.3.10", "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", @@ -4398,64 +3971,6 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "node_modules/gauge/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gauge/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gauge/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gauge/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -4505,15 +4020,15 @@ } }, "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/get-uri": { @@ -4532,36 +4047,6 @@ "node": ">= 6" } }, - "node_modules/get-uri/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/get-uri/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "optional": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, "node_modules/git-node-fs": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/git-node-fs/-/git-node-fs-1.0.0.tgz", @@ -4573,9 +4058,9 @@ "integrity": "sha1-WZrBkrcYdYJeE6RF86bgURjC90U=" }, "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -4617,12 +4102,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/global-dirs/node_modules/ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", - "dev": true - }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -4653,10 +4132,22 @@ "node": ">=8.6" } }, + "node_modules/got/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" }, "node_modules/handlebars": { "version": "4.7.7", @@ -4679,27 +4170,13 @@ "uglify-js": "^3.1.4" } }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "optional": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "optional": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, "node_modules/has": { @@ -4722,9 +4199,9 @@ } }, "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, "engines": { "node": ">= 0.4" @@ -4733,11 +4210,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, "node_modules/has-yarn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", @@ -4791,18 +4263,18 @@ "dev": true }, "node_modules/http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dependencies": { - "depd": "~1.1.2", + "depd": "2.0.0", "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/http-proxy-agent": { @@ -4818,42 +4290,6 @@ "node": ">= 6" } }, - "node_modules/http-proxy-agent/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/http-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "optional": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, "node_modules/https-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", @@ -4866,27 +4302,6 @@ "node": ">= 6" } }, - "node_modules/https-proxy-agent/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/https-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -4907,20 +4322,31 @@ "node": ">=0.10.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/ignore-by-default": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", "dev": true }, - "node_modules/ignore-walk": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", - "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", - "dependencies": { - "minimatch": "^3.0.4" - } - }, "node_modules/import-lazy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", @@ -4931,9 +4357,9 @@ } }, "node_modules/import-local": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", - "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "dependencies": { "pkg-dir": "^4.2.0", @@ -4944,73 +4370,30 @@ }, "engines": { "node": ">=8" - } - }, - "node_modules/import-local/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-local/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/import-local/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "find-up": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/import-local/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" + "node": ">=0.8.19" } }, "node_modules/inflight": { @@ -5028,25 +4411,26 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==" }, "node_modules/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz", + "integrity": "sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==", "dependencies": { "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", + "chalk": "^4.1.1", "cli-cursor": "^3.1.0", "cli-width": "^3.0.0", "external-editor": "^3.0.3", "figures": "^3.0.0", - "lodash": "^4.17.19", + "lodash": "^4.17.21", "mute-stream": "0.0.8", + "ora": "^5.4.1", "run-async": "^2.4.0", - "rxjs": "^6.6.0", + "rxjs": "^7.2.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6" @@ -5055,29 +4439,19 @@ "node": ">=8.0.0" } }, - "node_modules/inquirer/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "tslib": "^1.9.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/inquirer/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "engines": { - "node": ">= 0.10" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/ip": { @@ -5093,6 +4467,12 @@ "node": ">=8" } }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -5116,10 +4496,16 @@ "is-ci": "bin.js" } }, + "node_modules/is-ci/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, "node_modules/is-core-module": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz", - "integrity": "sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", "dependencies": { "has": "^1.0.3" }, @@ -5153,9 +4539,9 @@ } }, "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dependencies": { "is-extglob": "^2.1.1" }, @@ -5179,6 +4565,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "engines": { + "node": ">=8" + } + }, "node_modules/is-npm": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", @@ -5249,6 +4643,17 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-yarn-global": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", @@ -5264,7 +4669,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "devOptional": true + "dev": true }, "node_modules/isobject": { "version": "3.0.1", @@ -5275,45 +4680,31 @@ "node": ">=0.10.0" } }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "optional": true - }, "node_modules/istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", + "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", "dev": true, "dependencies": { - "@babel/core": "^7.7.5", + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-coverage": "^3.2.0", "semver": "^6.3.0" }, "engines": { "node": ">=8" } }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/istanbul-lib-report": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", @@ -5343,19 +4734,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/istanbul-lib-report/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "dependencies": { "debug": "^4.1.1", @@ -5363,36 +4745,22 @@ "source-map": "^0.6.1" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/istanbul-lib-source-maps/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "dependencies": { - "ms": "2.1.2" - }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=0.10.0" } }, - "node_modules/istanbul-lib-source-maps/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/istanbul-reports": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.3.tgz", - "integrity": "sha512-0i77ZFLsb9U3DHi22WzmIngVzfoyxxbQcZRqlF3KoKmCJGq9nhFHoGi8FqBztN2rE8w6hURnZghetn0xpkVb6A==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", + "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -5403,14 +4771,14 @@ } }, "node_modules/jest": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.2.4.tgz", - "integrity": "sha512-h4uqb1EQLfPulWyUFFWv9e9Nn8sCqsJ/j3wk/KCY0p4s4s0ICCfP3iMf6hRf5hEhsDyvyrCgKiZXma63gMz16A==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", "dev": true, "dependencies": { - "@jest/core": "^27.2.4", + "@jest/core": "^27.5.1", "import-local": "^3.0.2", - "jest-cli": "^27.2.4" + "jest-cli": "^27.5.1" }, "bin": { "jest": "bin/jest.js" @@ -5428,12 +4796,12 @@ } }, "node_modules/jest-changed-files": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.2.4.tgz", - "integrity": "sha512-eeO1C1u4ex7pdTroYXezr+rbr957myyVoKGjcY4R1TJi3A+9v+4fu1Iv9J4eLq1bgFyT3O3iRWU9lZsEE7J72Q==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", "dev": true, "dependencies": { - "@jest/types": "^27.2.4", + "@jest/types": "^27.5.1", "execa": "^5.0.0", "throat": "^6.0.1" }, @@ -5442,27 +4810,27 @@ } }, "node_modules/jest-circus": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.2.4.tgz", - "integrity": "sha512-TtheheTElrGjlsY9VxkzUU1qwIx05ItIusMVKnvNkMt4o/PeegLRcjq3Db2Jz0GGdBalJdbzLZBgeulZAJxJWA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", "dev": true, "dependencies": { - "@jest/environment": "^27.2.4", - "@jest/test-result": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.2.4", + "expect": "^27.5.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.2.4", - "jest-matcher-utils": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-runtime": "^27.2.4", - "jest-snapshot": "^27.2.4", - "jest-util": "^27.2.4", - "pretty-format": "^27.2.4", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", "slash": "^3.0.0", "stack-utils": "^2.0.3", "throat": "^6.0.1" @@ -5472,21 +4840,21 @@ } }, "node_modules/jest-cli": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.2.4.tgz", - "integrity": "sha512-4kpQQkg74HYLaXo3nzwtg4PYxSLgL7puz1LXHj5Tu85KmlIpxQFjRkXlx4V47CYFFIDoyl3rHA/cXOxUWyMpNg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", "dev": true, "dependencies": { - "@jest/core": "^27.2.4", - "@jest/test-result": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^27.2.4", - "jest-util": "^27.2.4", - "jest-validate": "^27.2.4", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "prompts": "^2.0.1", "yargs": "^16.2.0" }, @@ -5505,51 +4873,36 @@ } } }, - "node_modules/jest-cli/node_modules/ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", - "dev": true - }, - "node_modules/jest-cli/node_modules/is-ci": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", - "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", - "dev": true, - "dependencies": { - "ci-info": "^3.1.1" - }, - "bin": { - "is-ci": "bin.js" - } - }, "node_modules/jest-cli/node_modules/jest-config": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.2.4.tgz", - "integrity": "sha512-tWy0UxhdzqiKyp4l5Vq4HxLyD+gH5td+GCF3c22/DJ0bYAOsMo+qi2XtbJI6oYMH5JOJQs9nLW/r34nvFCehjA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.2.4", - "@jest/types": "^27.2.4", - "babel-jest": "^27.2.4", + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "jest-circus": "^27.2.4", - "jest-environment-jsdom": "^27.2.4", - "jest-environment-node": "^27.2.4", - "jest-get-type": "^27.0.6", - "jest-jasmine2": "^27.2.4", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.2.4", - "jest-runner": "^27.2.4", - "jest-util": "^27.2.4", - "jest-validate": "^27.2.4", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "micromatch": "^4.0.4", - "pretty-format": "^27.2.4" + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -5563,6 +4916,18 @@ } } }, + "node_modules/jest-cli/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/jest-cli/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -5582,24 +4947,24 @@ } }, "node_modules/jest-diff": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.2.4.tgz", - "integrity": "sha512-bLAVlDSCR3gqUPGv+4nzVpEXGsHh98HjUL7Vb2hVyyuBDoQmja8eJb0imUABsuxBeUVmf47taJSAd9nDrwWKEg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "diff-sequences": "^27.0.6", - "jest-get-type": "^27.0.6", - "pretty-format": "^27.2.4" + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-docblock": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", - "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", "dev": true, "dependencies": { "detect-newline": "^3.0.0" @@ -5609,33 +4974,33 @@ } }, "node_modules/jest-each": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.2.4.tgz", - "integrity": "sha512-w9XVc+0EDBUTJS4xBNJ7N2JCcWItFd006lFjz77OarAQcQ10eFDBMrfDv2GBJMKlXe9aq0HrIIF51AXcZrRJyg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", "dev": true, "dependencies": { - "@jest/types": "^27.2.4", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", - "jest-get-type": "^27.0.6", - "jest-util": "^27.2.4", - "pretty-format": "^27.2.4" + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-environment-jsdom": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.2.4.tgz", - "integrity": "sha512-X70pTXFSypD7AIzKT1mLnDi5hP9w9mdTRcOGOmoDoBrNyNEg4rYm6d4LQWFLc9ps1VnMuDOkFSG0wjSNYGjkng==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", "dev": true, "dependencies": { - "@jest/environment": "^27.2.4", - "@jest/fake-timers": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^27.2.4", - "jest-util": "^27.2.4", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", "jsdom": "^16.6.0" }, "engines": { @@ -5643,47 +5008,47 @@ } }, "node_modules/jest-environment-node": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.2.4.tgz", - "integrity": "sha512-ZbVbFSnbzTvhLOIkqh5lcLuGCCFvtG4xTXIRPK99rV2KzQT3kNg16KZwfTnLNlIiWCE8do960eToeDfcqmpSAw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", "dev": true, "dependencies": { - "@jest/environment": "^27.2.4", - "@jest/fake-timers": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^27.2.4", - "jest-util": "^27.2.4" + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-get-type": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", "dev": true, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-haste-map": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.2.4.tgz", - "integrity": "sha512-bkJ4bT00T2K+1NZXbRcyKnbJ42I6QBvoDNMTAQQDBhaGNnZreiQKUNqax0e6hLTx7E75pKDeltVu3V1HAdu+YA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, "dependencies": { - "@jest/types": "^27.2.4", + "@jest/types": "^27.5.1", "@types/graceful-fs": "^4.1.2", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.2.4", - "jest-worker": "^27.2.4", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "micromatch": "^4.0.4", "walker": "^1.0.7" }, @@ -5695,28 +5060,27 @@ } }, "node_modules/jest-jasmine2": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.2.4.tgz", - "integrity": "sha512-fcffjO/xLWLVnW2ct3No4EksxM5RyPwHDYu9QU+90cC+/eSMLkFAxS55vkqsxexOO5zSsZ3foVpMQcg/amSeIQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", "dev": true, "dependencies": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.2.4", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^27.2.4", + "expect": "^27.5.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.2.4", - "jest-matcher-utils": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-runtime": "^27.2.4", - "jest-snapshot": "^27.2.4", - "jest-util": "^27.2.4", - "pretty-format": "^27.2.4", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", "throat": "^6.0.1" }, "engines": { @@ -5724,46 +5088,46 @@ } }, "node_modules/jest-leak-detector": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.2.4.tgz", - "integrity": "sha512-SrcHWbe0EHg/bw2uBjVoHacTo5xosl068x2Q0aWsjr2yYuW2XwqrSkZV4lurUop0jhv1709ymG4or+8E4sH27Q==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", "dev": true, "dependencies": { - "jest-get-type": "^27.0.6", - "pretty-format": "^27.2.4" + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.2.4.tgz", - "integrity": "sha512-nQeLfFAIPPkyhkDfifAPfP/U5wm1x0fLtAzqXZSSKckXDNuk2aaOfQiDYv1Mgf5GY6yOsxfUnvNm3dDjXM+BXw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^27.2.4", - "jest-get-type": "^27.0.6", - "pretty-format": "^27.2.4" + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-message-util": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.4.tgz", - "integrity": "sha512-wbKT/BNGnBVB9nzi+IoaLkXt6fbSvqUxx+IYY66YFh96J3goY33BAaNG3uPqaw/Sh/FR9YpXGVDfd5DJdbh4nA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.2.4", + "@jest/types": "^27.5.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^27.2.4", + "pretty-format": "^27.5.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -5772,12 +5136,12 @@ } }, "node_modules/jest-mock": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.2.4.tgz", - "integrity": "sha512-iVRU905rutaAoUcrt5Tm1JoHHWi24YabqEGXjPJI4tAyA6wZ7mzDi3GrZ+M7ebgWBqUkZE93GAx1STk7yCMIQA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", "dev": true, "dependencies": { - "@jest/types": "^27.2.4", + "@jest/types": "^27.5.1", "@types/node": "*" }, "engines": { @@ -5802,29 +5166,29 @@ } }, "node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-resolve": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.2.4.tgz", - "integrity": "sha512-IsAO/3+3BZnKjI2I4f3835TBK/90dxR7Otgufn3mnrDFTByOSXclDi3G2XJsawGV4/18IMLARJ+V7Wm7t+J89Q==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", "dev": true, "dependencies": { - "@jest/types": "^27.2.4", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", - "escalade": "^3.1.1", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.4", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.2.4", - "jest-validate": "^27.2.4", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", "slash": "^3.0.0" }, "engines": { @@ -5832,45 +5196,44 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.2.4.tgz", - "integrity": "sha512-i5s7Uh9B3Q6uwxLpMhNKlgBf6pcemvWaORxsW1zNF/YCY3jd5EftvnGBI+fxVwJ1CBxkVfxqCvm1lpZkbaoGmg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", "dev": true, "dependencies": { - "@jest/types": "^27.2.4", - "jest-regex-util": "^27.0.6", - "jest-snapshot": "^27.2.4" + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-runner": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.2.4.tgz", - "integrity": "sha512-hIo5PPuNUyVDidZS8EetntuuJbQ+4IHWxmHgYZz9FIDbG2wcZjrP6b52uMDjAEQiHAn8yn8ynNe+TL8UuGFYKg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", "dev": true, "dependencies": { - "@jest/console": "^27.2.4", - "@jest/environment": "^27.2.4", - "@jest/test-result": "^27.2.4", - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-docblock": "^27.0.6", - "jest-environment-jsdom": "^27.2.4", - "jest-environment-node": "^27.2.4", - "jest-haste-map": "^27.2.4", - "jest-leak-detector": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-resolve": "^27.2.4", - "jest-runtime": "^27.2.4", - "jest-util": "^27.2.4", - "jest-worker": "^27.2.4", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "source-map-support": "^0.5.6", "throat": "^6.0.1" }, @@ -5879,165 +5242,155 @@ } }, "node_modules/jest-runtime": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.2.4.tgz", - "integrity": "sha512-ICKzzYdjIi70P17MZsLLIgIQFCQmIjMFf+xYww3aUySiUA/QBPUTdUqo5B2eg4HOn9/KkUsV0z6GVgaqAPBJvg==", - "dev": true, - "dependencies": { - "@jest/console": "^27.2.4", - "@jest/environment": "^27.2.4", - "@jest/fake-timers": "^27.2.4", - "@jest/globals": "^27.2.4", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.2.4", - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/yargs": "^16.0.0", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "execa": "^5.0.0", - "exit": "^0.1.2", "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-mock": "^27.2.4", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.2.4", - "jest-snapshot": "^27.2.4", - "jest-util": "^27.2.4", - "jest-validate": "^27.2.4", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^16.2.0" + "strip-bom": "^4.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-runtime/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", "dev": true, "dependencies": { "@types/node": "*", - "graceful-fs": "^4.2.4" + "graceful-fs": "^4.2.9" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-snapshot": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.2.4.tgz", - "integrity": "sha512-5DFxK31rYS8X8C6WXsFx8XxrxW3PGa6+9IrUcZdTLg1aEyXDGIeiBh4jbwvh655bg/9vTETbEj/njfZicHTZZw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", "dev": true, "dependencies": { "@babel/core": "^7.7.2", "@babel/generator": "^7.7.2", - "@babel/parser": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.2.4", - "graceful-fs": "^4.2.4", - "jest-diff": "^27.2.4", - "jest-get-type": "^27.0.6", - "jest-haste-map": "^27.2.4", - "jest-matcher-utils": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-resolve": "^27.2.4", - "jest-util": "^27.2.4", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", "natural-compare": "^1.4.0", - "pretty-format": "^27.2.4", + "pretty-format": "^27.5.1", "semver": "^7.3.2" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-util": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.4.tgz", - "integrity": "sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==", + "node_modules/jest-snapshot/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "@jest/types": "^27.2.4", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" + "yallist": "^4.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" } }, - "node_modules/jest-util/node_modules/ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/jest-util/node_modules/is-ci": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", - "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, "dependencies": { - "ci-info": "^3.1.1" + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, - "bin": { - "is-ci": "bin.js" + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-validate": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.4.tgz", - "integrity": "sha512-VMtbxbkd7LHnIH7PChdDtrluCFRJ4b1YV2YJzNwwsASMWftq/HgqiqjvptBOWyWOtevgO3f14wPxkPcLlVBRog==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", "dev": true, "dependencies": { - "@jest/types": "^27.2.4", + "@jest/types": "^27.5.1", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.0.6", + "jest-get-type": "^27.5.1", "leven": "^3.1.0", - "pretty-format": "^27.2.4" + "pretty-format": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "engines": { "node": ">=10" @@ -6047,17 +5400,17 @@ } }, "node_modules/jest-watcher": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.2.4.tgz", - "integrity": "sha512-LXC/0+dKxhK7cfF7reflRYlzDIaQE+fL4ynhKhzg8IMILNMuI4xcjXXfUJady7OR4/TZeMg7X8eHx8uan9vqaQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", "dev": true, "dependencies": { - "@jest/test-result": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.2.4", + "jest-util": "^27.5.1", "string-length": "^4.0.1" }, "engines": { @@ -6065,9 +5418,9 @@ } }, "node_modules/jest-worker": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.4.tgz", - "integrity": "sha512-Zq9A2Pw59KkVjBBKD1i3iE2e22oSjXhUKKuAK1HGX8flGwkm6NMozyEYzKd41hXc64dbd/0eWFeEEuxqXyhM+g==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "dependencies": { "@types/node": "*", @@ -6122,12 +5475,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true - }, "node_modules/jsdom": { "version": "16.7.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", @@ -6174,37 +5521,6 @@ } } }, - "node_modules/jsdom/node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/jsdom/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -6222,17 +5538,11 @@ "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", "dev": true }, - "node_modules/json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "optional": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "optional": true + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, "node_modules/json-stringify-safe": { "version": "5.0.1", @@ -6261,21 +5571,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "engines": [ - "node >=0.6.0" - ], - "optional": true, - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, "node_modules/keyv": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", @@ -6344,17 +5639,22 @@ "node": ">= 0.8.0" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, "node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/lodash": { @@ -6367,7 +5667,13 @@ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" }, - "node_modules/lodash.set": { + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "node_modules/lodash.set": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" @@ -6380,6 +5686,21 @@ "node": ">=0.8.6" } }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", @@ -6397,12 +5718,6 @@ "yallist": "^3.0.2" } }, - "node_modules/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true - }, "node_modules/make-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", @@ -6432,24 +5747,12 @@ "dev": true }, "node_modules/makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, "dependencies": { - "tmpl": "1.0.x" - } - }, - "node_modules/marked": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/marked/-/marked-2.1.3.tgz", - "integrity": "sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA==", - "dev": true, - "bin": { - "marked": "bin/marked" - }, - "engines": { - "node": ">= 10" + "tmpl": "1.0.5" } }, "node_modules/merge-stream": { @@ -6467,12 +5770,6 @@ "node": ">= 8" } }, - "node_modules/micro-base": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/micro-base/-/micro-base-0.10.2.tgz", - "integrity": "sha512-lqqJrT7lfJtDmmiQ4zRLZuIJBk96t0RAc5pCrrWpL9zDeH5i/SUL85mku9HqzTI/OCZ8EQ3aicbMW+eK5Nyu5w==", - "deprecated": "Switch to @scure/base for audited version of the lib & updates" - }, "node_modules/micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", @@ -6487,19 +5784,19 @@ } }, "node_modules/mime-db": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", - "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==", + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.32", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", - "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", "dependencies": { - "mime-db": "1.49.0" + "mime-db": "1.51.0" }, "engines": { "node": ">= 0.6" @@ -6523,9 +5820,9 @@ } }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -6538,23 +5835,6 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, - "node_modules/minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dependencies": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "node_modules/minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "dependencies": { - "minipass": "^2.9.0" - } - }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -6584,29 +5864,10 @@ "resolved": "https://registry.npmjs.org/module-require/-/module-require-1.4.5.tgz", "integrity": "sha1-Yz3wgzRDya2FlvTELlI3NINVr4g=" }, - "node_modules/moment": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", - "engines": { - "node": "*" - } - }, - "node_modules/moment-timezone": { - "version": "0.5.33", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.33.tgz", - "integrity": "sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w==", - "dependencies": { - "moment": ">= 2.9.0" - }, - "engines": { - "node": "*" - } - }, "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/mute-stream": { "version": "0.0.8", @@ -6643,11 +5904,6 @@ "ms": "^2.1.1" } }, - "node_modules/needle/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -6663,9 +5919,9 @@ } }, "node_modules/next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" }, "node_modules/nock": { "version": "13.2.4", @@ -6681,32 +5937,6 @@ "node": ">= 10.13" } }, - "node_modules/nock/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/nock/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" - }, "node_modules/node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -6745,32 +5975,6 @@ "webidl-conversions": "^3.0.0" } }, - "node_modules/node-gyp": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", - "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", - "optional": true, - "dependencies": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/node-gyp-build": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", @@ -6781,158 +5985,21 @@ "node-gyp-build-test": "build-test.js" } }, - "node_modules/node-gyp/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "optional": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/node-gyp/node_modules/nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "optional": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/node-gyp/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "optional": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/node-gyp/node_modules/semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "optional": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/node-gyp/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "optional": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", "dev": true }, - "node_modules/node-pre-gyp": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", - "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==", - "deprecated": "Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future", - "dependencies": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/node-pre-gyp/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/node-pre-gyp/node_modules/nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", - "dependencies": { - "abbrev": "1", - "osenv": "^0.1.4" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/node-pre-gyp/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/node-pre-gyp/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/node-pre-gyp/node_modules/tar": { - "version": "4.4.19", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", - "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", - "dependencies": { - "chownr": "^1.1.4", - "fs-minipass": "^1.2.7", - "minipass": "^2.9.0", - "minizlib": "^1.3.3", - "mkdirp": "^0.5.5", - "safe-buffer": "^5.2.1", - "yallist": "^3.1.1" - }, - "engines": { - "node": ">=4.5" - } - }, "node_modules/node-releases": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==" }, "node_modules/nodejs-fs-utils": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/nodejs-fs-utils/-/nodejs-fs-utils-1.2.5.tgz", - "integrity": "sha512-QuIFfHWaQJhjmUnGSCq+knKrYL2Q8HJUNAzRk8qoHK+g0oKzq57MdB4tODIknclKII0oAO0kO1lDt8yLyLhsAQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/nodejs-fs-utils/-/nodejs-fs-utils-1.2.6.tgz", + "integrity": "sha512-uDIfV3Qvjrtis2jOhHYzvUTAReqtnBXCVm0efjAYDgrCgZZBDxMQcZE7SsDAui4zzQ7GpqYUFUwoOpOoQD4vpA==", "dependencies": { "module-require": "*" } @@ -6984,12 +6051,6 @@ "node": ">=4" } }, - "node_modules/nodemon/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "node_modules/nodemon/node_modules/semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -7043,29 +6104,6 @@ "node": ">=8" } }, - "node_modules/npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" - }, - "node_modules/npm-packlist": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", - "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", - "dependencies": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -7078,17 +6116,6 @@ "node": ">=8" } }, - "node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, "node_modules/nssocket": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz", @@ -7118,37 +6145,12 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/nwsapi": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", "dev": true }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "optional": true, - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -7198,15 +6200,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/onigasm": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/onigasm/-/onigasm-2.2.5.tgz", - "integrity": "sha512-F+th54mPc0l1lp1ZcFMyL/jTs2Tlq4SqIHKIXGZOR/VkHkF9A7Fr5rRr5+ZG/lWeRsyrClLYRq7s/yFQ/XhWCA==", - "dev": true, - "dependencies": { - "lru-cache": "^5.1.1" - } - }, "node_modules/optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -7223,12 +6216,26 @@ "node": ">= 0.8.0" } }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/os-tmpdir": { @@ -7239,15 +6246,6 @@ "node": ">=0.10.0" } }, - "node_modules/osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, "node_modules/p-cancelable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", @@ -7273,15 +6271,15 @@ } }, "node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/p-try": { @@ -7312,27 +6310,6 @@ "node": ">= 8" } }, - "node_modules/pac-proxy-agent/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/pac-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/pac-resolver": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.0.tgz", @@ -7361,20 +6338,29 @@ "node": ">=8" } }, - "node_modules/package-json/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", @@ -7391,12 +6377,12 @@ } }, "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/path-is-absolute": { @@ -7429,21 +6415,15 @@ "node": "*" } }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "optional": true - }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "engines": { "node": ">=8.6" }, @@ -7452,16 +6432,35 @@ } }, "node_modules/pidusage": { - "version": "2.0.21", - "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-2.0.21.tgz", - "integrity": "sha512-cv3xAQos+pugVX+BfXpHsbyz/dLzX+lr44zNMsYiGxUw+kV5sgQCIcLd1z+0vq+KyC7dJ+/ts2PsfgWfSC3WXA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-3.0.0.tgz", + "integrity": "sha512-8VJLToXhj+RYZGNVw8oxc7dS54iCQXUJ+MDFHezQ/fwF5B8W4OWodAMboc1wb08S/4LiHwAmkT4ohf/d3YPPsw==", "dependencies": { "safe-buffer": "^5.2.1" }, "engines": { - "node": ">=8" + "node": ">=10" } }, + "node_modules/pidusage/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -7492,10 +6491,56 @@ "node": ">=6" } }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/pm2": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/pm2/-/pm2-5.1.1.tgz", - "integrity": "sha512-2Agpn2IVXOKu8kP+qaxKOvMLNtbZ6lY4bzKcEW2d2tw7O0lpNO7QvDayY4af+8U1+WCn90UjPK4q2wPFVHt/sA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/pm2/-/pm2-5.2.0.tgz", + "integrity": "sha512-PO5hMVhQ85cTszFM++6v07Me9hPJMkFbHjkFigtMMk+La8ty2wCi2dlBTeZYJDhPUSjK8Ccltpq2buNRcyMOTw==", "dependencies": { "@pm2/agent": "~2.0.0", "@pm2/io": "~5.0.0", @@ -7507,7 +6552,7 @@ "chokidar": "^3.5.1", "cli-tableau": "^2.0.0", "commander": "2.15.1", - "cron": "1.8.2", + "croner": "~4.1.92", "dayjs": "~1.8.25", "debug": "^4.3.1", "enquirer": "2.3.6", @@ -7515,7 +6560,7 @@ "fclone": "1.0.11", "mkdirp": "1.0.4", "needle": "2.4.0", - "pidusage": "2.0.21", + "pidusage": "~3.0", "pm2-axon": "~4.0.1", "pm2-axon-rpc": "~0.7.1", "pm2-deploy": "~1.0.2", @@ -7565,43 +6610,6 @@ "node": ">=5" } }, - "node_modules/pm2-axon-rpc/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/pm2-axon-rpc/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/pm2-axon/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/pm2-axon/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -7613,11 +6621,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pm2-axon/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/pm2-deploy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pm2-deploy/-/pm2-deploy-1.0.2.tgz", @@ -7651,27 +6654,36 @@ "tx2": "~1.0.4" } }, - "node_modules/pm2-sysmonit/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "node_modules/pm2-sysmonit/node_modules/pidusage": { + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-2.0.21.tgz", + "integrity": "sha512-cv3xAQos+pugVX+BfXpHsbyz/dLzX+lr44zNMsYiGxUw+kV5sgQCIcLd1z+0vq+KyC7dJ+/ts2PsfgWfSC3WXA==", "optional": true, "dependencies": { - "ms": "2.1.2" + "safe-buffer": "^5.2.1" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=8" } }, - "node_modules/pm2-sysmonit/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "node_modules/pm2-sysmonit/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "optional": true }, "node_modules/pm2/node_modules/chalk": { @@ -7683,40 +6695,66 @@ "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=8" + } + }, + "node_modules/pm2/node_modules/commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" + }, + "node_modules/pm2/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pm2/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pm2/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/pm2/node_modules/commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" - }, - "node_modules/pm2/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "node_modules/pm2/node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/pm2/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/pm2/node_modules/sprintf-js": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" }, + "node_modules/pm2/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -7745,12 +6783,11 @@ } }, "node_modules/pretty-format": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.4.tgz", - "integrity": "sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, "dependencies": { - "@jest/types": "^27.2.4", "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" @@ -7779,20 +6816,6 @@ "node": ">= 0.6.0" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/promptly": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/promptly/-/promptly-2.2.0.tgz", @@ -7802,9 +6825,9 @@ } }, "node_modules/prompts": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", - "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, "dependencies": { "kleur": "^3.0.3", @@ -7840,27 +6863,6 @@ "node": ">= 8" } }, - "node_modules/proxy-agent/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -7870,7 +6872,7 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "devOptional": true + "dev": true }, "node_modules/pstree.remy": { "version": "1.1.8", @@ -7892,7 +6894,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "devOptional": true, + "dev": true, "engines": { "node": ">=6" } @@ -7909,15 +6911,6 @@ "node": ">=8" } }, - "node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "optional": true, - "engines": { - "node": ">=0.6" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -7939,12 +6932,12 @@ ] }, "node_modules/raw-body": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", - "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.3", + "bytes": "3.1.2", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, @@ -7956,6 +6949,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -7983,6 +6977,19 @@ "node": ">=0.8" } }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -8002,18 +7009,6 @@ "node": ">= 0.8.0" } }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/regenerator-runtime": { "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", @@ -8077,65 +7072,6 @@ "node": ">=0.10.0" } }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "optional": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request/node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "optional": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/request/node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "optional": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -8155,34 +7091,17 @@ "resolve": "^1.12.0" } }, - "node_modules/require-in-the-middle/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/require-in-the-middle/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8209,6 +7128,15 @@ "node": ">=8" } }, + "node_modules/resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", @@ -8306,31 +7234,22 @@ ] }, "node_modules/rxjs": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.2.tgz", - "integrity": "sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", "dependencies": { "tslib": "^2.1.0" } }, + "node_modules/rxjs/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/safer-buffer": { "version": "2.1.2", @@ -8355,17 +7274,11 @@ } }, "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "bin": { "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" } }, "node_modules/semver-diff": { @@ -8380,40 +7293,10 @@ "node": ">=8" } }, - "node_modules/semver-diff/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "node_modules/shallow-clone": { "version": "3.0.1", @@ -8448,43 +7331,15 @@ "node": ">=8" } }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dev": true, - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/shiki": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.9.6.tgz", - "integrity": "sha512-h2y5Uq9QEWsEmi97n+BOdPOVxkOUdVunl+jVIzU9EqJ6/QbIX+U6F7TsrWZQ2xqwPgvvQaC9r7/zeegi1b48dQ==", - "dev": true, - "dependencies": { - "json5": "^2.2.0", - "onigasm": "^2.2.5", - "vscode-textmate": "5.2.0" - } - }, "node_modules/shimmer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" }, "node_modules/signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/sisteransi": { "version": "1.0.5", @@ -8511,12 +7366,12 @@ } }, "node_modules/socks": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", - "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", "dependencies": { "ip": "^1.1.5", - "smart-buffer": "^4.1.0" + "smart-buffer": "^4.2.0" }, "engines": { "node": ">= 10.13.0", @@ -8536,100 +7391,37 @@ "node": ">= 6" } }, - "node_modules/socks-proxy-agent/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/socks-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, "dependencies": { "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "node_modules/sqlite3": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.2.tgz", - "integrity": "sha512-1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA==", - "hasInstallScript": true, - "dependencies": { - "node-addon-api": "^3.0.0", - "node-pre-gyp": "^0.11.0" - }, - "optionalDependencies": { - "node-gyp": "3.x" - }, - "peerDependencies": { - "node-gyp": "3.x" - }, - "peerDependenciesMeta": { - "node-gyp": { - "optional": true - } - } - }, - "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "optional": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/sshpk/node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "node_modules/stack-utils": { "version": "2.0.5", @@ -8653,13 +7445,40 @@ } }, "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" } }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -8674,24 +7493,24 @@ } }, "node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" } }, "node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" @@ -8719,6 +7538,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -8747,6 +7567,17 @@ "node": ">=8" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -8754,9 +7585,9 @@ "dev": true }, "node_modules/systeminformation": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.8.0.tgz", - "integrity": "sha512-l4drbK2PtNynGKblaShY9hDLW/gg1zxUq2+Yk4gTyd6a2JUvFyTGP8PhHV9iOh+MzS25PQa8W1t0kvcIvr9n7Q==", + "version": "5.11.6", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.11.6.tgz", + "integrity": "sha512-7KBXgdnIDxABQ93w+GrPSrK/pup73+fM09VGka4A/+FhgzdlRY0JNGGDFmV8BHnFuzP9zwlI3n64yDbp7emasQ==", "optional": true, "os": [ "darwin", @@ -8765,31 +7596,20 @@ "freebsd", "openbsd", "netbsd", - "sunos" + "sunos", + "android" ], "bin": { "systeminformation": "lib/cli.js" }, "engines": { - "node": ">=4.0.0" + "node": ">=8.0.0" }, "funding": { "type": "Buy me a coffee", "url": "https://www.buymeacoffee.com/systeminfo" } }, - "node_modules/tar": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", - "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", - "deprecated": "This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.", - "optional": true, - "dependencies": { - "block-stream": "*", - "fstream": "^1.0.12", - "inherits": "2" - } - }, "node_modules/term-size": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", @@ -8889,9 +7709,9 @@ } }, "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "engines": { "node": ">=0.6" } @@ -8935,16 +7755,16 @@ } }, "node_modules/ts-jest": { - "version": "27.0.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.5.tgz", - "integrity": "sha512-lIJApzfTaSSbtlksfFNHkWOzLJuuSm4faFAfo5kvzOiRAuoN4/eKxVJ2zEAho8aecE04qX6K1pAzfH5QHL1/8w==", + "version": "27.1.3", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz", + "integrity": "sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==", "dev": true, "dependencies": { "bs-logger": "0.x", "fast-json-stable-stringify": "2.x", "jest-util": "^27.0.0", "json5": "2.x", - "lodash": "4.x", + "lodash.memoize": "4.x", "make-error": "1.x", "semver": "7.x", "yargs-parser": "20.x" @@ -8959,6 +7779,7 @@ "@babel/core": ">=7.0.0-beta.0 <8", "@types/jest": "^27.0.0", "babel-jest": ">=27.0.0 <28", + "esbuild": "~0.14.0", "jest": "^27.0.0", "typescript": ">=3.8 <5.0" }, @@ -8971,9 +7792,45 @@ }, "babel-jest": { "optional": true + }, + "esbuild": { + "optional": true } } }, + "node_modules/ts-jest/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-jest/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-jest/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/ts-node": { "version": "9.1.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", @@ -9001,9 +7858,9 @@ } }, "node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -9020,24 +7877,6 @@ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "optional": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, "node_modules/tv4": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", @@ -9052,9 +7891,9 @@ "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" }, "node_modules/tx2": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tx2/-/tx2-1.0.4.tgz", - "integrity": "sha512-rU+y30nUY3PyIi+znvv74HzxlpULKwMPAyRK+YiCjvGkk3rY3fic3D6Z+avLpun3V5A6HFwPQ9JrBTMNEV/dxg==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tx2/-/tx2-1.0.5.tgz", + "integrity": "sha512-sJ24w0y03Md/bxzK4FU8J8JveYYUbSs2FViLJ2D/8bytSiyPRbuE3DyL/9UKYXTZlV3yXq0L8GLlhobTnekCVg==", "optional": true, "dependencies": { "json-stringify-safe": "^5.0.1" @@ -9090,9 +7929,9 @@ } }, "node_modules/type-coverage-core": { - "version": "2.17.5", - "resolved": "https://registry.npmjs.org/type-coverage-core/-/type-coverage-core-2.17.5.tgz", - "integrity": "sha512-FfkH2kIgQkkgC47V2WHJZWBbjYjMw2ZpQRdRGTcMBAnkijmRCp9I1LpOuI+Gv4MDtniRLnkAo8htGGt2iExFgA==", + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/type-coverage-core/-/type-coverage-core-2.21.0.tgz", + "integrity": "sha512-VNC7Ig0KAzpYjWvxQ1SaMufEqSm4GPSsdVaCWA5fRHSjSvkXbPVK+C6H0lIq2t8brkrvnXk7iDs9g4sjux6JQw==", "dev": true, "dependencies": { "fast-glob": "3", @@ -9114,11 +7953,14 @@ } }, "node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/typedarray-to-buffer": { @@ -9129,83 +7971,10 @@ "is-typedarray": "^1.0.0" } }, - "node_modules/typedoc": { - "version": "0.20.28", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.20.28.tgz", - "integrity": "sha512-8j0T8u9FuyDkoe+M/3cyoaGJSVgXCY9KwVoo7TLUnmQuzXwqH+wkScY530ZEdK6G39UZ2LFTYPIrL5eykWjx6A==", - "dev": true, - "dependencies": { - "colors": "^1.4.0", - "fs-extra": "^9.1.0", - "handlebars": "^4.7.7", - "lodash": "^4.17.21", - "lunr": "^2.3.9", - "marked": "^2.0.0", - "minimatch": "^3.0.0", - "progress": "^2.0.3", - "shelljs": "^0.8.4", - "shiki": "^0.9.2", - "typedoc-default-themes": "^0.12.7" - }, - "bin": { - "typedoc": "bin/typedoc" - }, - "engines": { - "node": ">= 10.8.0" - }, - "peerDependencies": { - "typescript": "3.9.x || 4.0.x || 4.1.x" - } - }, - "node_modules/typedoc-default-themes": { - "version": "0.12.10", - "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.12.10.tgz", - "integrity": "sha512-fIS001cAYHkyQPidWXmHuhs8usjP5XVJjWB8oZGqkTowZaz3v7g3KDZeeqE82FBrmkAnIBOY3jgy7lnPnqATbA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/typedoc/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/typedoc/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/typedoc/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/typescript": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", - "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", + "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -9224,9 +7993,9 @@ } }, "node_modules/uglify-js": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.1.tgz", - "integrity": "sha512-JhS3hmcVaXlp/xSo3PKY5R0JqKs5M3IV+exdLHW99qKvKivPO4Z8qbej6mte17SOPqAOVMjt/XGgWacnFSzM3g==", + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.2.tgz", + "integrity": "sha512-peeoTk3hSwYdoc9nrdiEJk+gx1ALCtTjdYuKSXMTDqq7n1W7dHPqWDdSi+BPL0ni2YMeHD7hKUSdbj3TZauY2A==", "dev": true, "optional": true, "bin": { @@ -9237,13 +8006,10 @@ } }, "node_modules/undefsafe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", - "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", - "dev": true, - "dependencies": { - "debug": "^2.2.0" - } + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true }, "node_modules/unique-string": { "version": "2.0.0", @@ -9322,15 +8088,6 @@ "node": ">=8" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "optional": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, "node_modules/url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", @@ -9344,9 +8101,9 @@ } }, "node_modules/utf-8-validate": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.8.tgz", - "integrity": "sha512-k4dW/Qja1BYDl2qD4tOMB9PFVha/UJtxTc1cXYOe3WwA/2m0Yn4qB7wLMpJyLJ/7DR0XnTut3HsCSzDT4ZvKgA==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", + "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", "hasInstallScript": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -9389,9 +8146,9 @@ } }, "node_modules/v8-to-istanbul": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz", - "integrity": "sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.1", @@ -9411,26 +8168,6 @@ "node": ">= 8" } }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "engines": [ - "node >=0.6.0" - ], - "optional": true, - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/verror/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "optional": true - }, "node_modules/vizion": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/vizion/-/vizion-2.2.1.tgz", @@ -9454,9 +8191,9 @@ } }, "node_modules/vm2": { - "version": "3.9.8", - "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.8.tgz", - "integrity": "sha512-/1PYg/BwdKzMPo8maOZ0heT7DLI0DAFTm7YQaz/Lim9oIaFZsJs3EdtalvXuBfZwczNwsYhju75NW4d6E+4q+w==", + "version": "3.9.9", + "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.9.tgz", + "integrity": "sha512-xwTm7NLh/uOjARRBs8/95H0e8fT3Ukw5D/JJWhxMbhKzNh1Nu981jQKvkep9iKYNxzlVrdzD0mlBGkDKZWprlw==", "dependencies": { "acorn": "^8.7.0", "acorn-walk": "^8.2.0" @@ -9476,12 +8213,6 @@ "node": ">=0.4.0" } }, - "node_modules/vscode-textmate": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", - "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==", - "dev": true - }, "node_modules/w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -9504,12 +8235,20 @@ } }, "node_modules/walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, "dependencies": { - "makeerror": "1.0.x" + "makeerror": "1.0.12" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dependencies": { + "defaults": "^1.0.3" } }, "node_modules/webidl-conversions": { @@ -9537,6 +8276,19 @@ "node": ">=4.0.0" } }, + "node_modules/websocket/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/websocket/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, "node_modules/whatwg-encoding": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", @@ -9581,14 +8333,6 @@ "node": ">= 8" } }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, "node_modules/widest-line": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", @@ -9650,9 +8394,9 @@ } }, "node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", "engines": { "node": ">=8.3.0" }, @@ -9760,36 +8504,10 @@ "node": ">=10" } }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", "dev": true, "engines": { "node": ">=12" @@ -9847,26 +8565,6 @@ "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", "semver": "^6.3.0" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } } }, "@babel/generator": { @@ -9877,13 +8575,6 @@ "@babel/types": "^7.17.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - } } }, "@babel/helper-annotate-as-pure": { @@ -9900,22 +8591,15 @@ "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", "requires": { "@babel/compat-data": "^7.16.4", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz", - "integrity": "sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==", + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz", + "integrity": "sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==", "requires": { "@babel/helper-annotate-as-pure": "^7.16.7", "@babel/helper-environment-visitor": "^7.16.7", @@ -10231,12 +8915,12 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", - "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", + "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-modules-commonjs": { @@ -10297,21 +8981,6 @@ "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, "@babel/types": { @@ -10340,42 +9009,6 @@ "get-package-type": "^0.1.0", "js-yaml": "^3.13.1", "resolve-from": "^5.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - } } }, "@istanbuljs/schema": { @@ -10385,232 +9018,251 @@ "dev": true }, "@jest/console": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.2.4.tgz", - "integrity": "sha512-94znCKynPZpDpYHQ6esRJSc11AmONrVkBOBZiD7S+bSubHhrUfbS95EY5HIOxhm4PQO7cnvZkL3oJcY0oMA+Wg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", "dev": true, "requires": { - "@jest/types": "^27.2.4", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.2.4", - "jest-util": "^27.2.4", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", "slash": "^3.0.0" } }, "@jest/core": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.2.4.tgz", - "integrity": "sha512-UNQLyy+rXoojNm2MGlapgzWhZD1CT1zcHZQYeiD0xE7MtJfC19Q6J5D/Lm2l7i4V97T30usKDoEtjI8vKwWcLg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", "dev": true, "requires": { - "@jest/console": "^27.2.4", - "@jest/reporters": "^27.2.4", - "@jest/test-result": "^27.2.4", - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.2.4", - "jest-config": "^27.2.4", - "jest-haste-map": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.2.4", - "jest-resolve-dependencies": "^27.2.4", - "jest-runner": "^27.2.4", - "jest-runtime": "^27.2.4", - "jest-snapshot": "^27.2.4", - "jest-util": "^27.2.4", - "jest-validate": "^27.2.4", - "jest-watcher": "^27.2.4", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", "micromatch": "^4.0.4", "rimraf": "^3.0.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, "dependencies": { - "ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", - "dev": true - }, - "is-ci": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", - "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", - "dev": true, - "requires": { - "ci-info": "^3.1.1" - } - }, "jest-config": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.2.4.tgz", - "integrity": "sha512-tWy0UxhdzqiKyp4l5Vq4HxLyD+gH5td+GCF3c22/DJ0bYAOsMo+qi2XtbJI6oYMH5JOJQs9nLW/r34nvFCehjA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.2.4", - "@jest/types": "^27.2.4", - "babel-jest": "^27.2.4", + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "jest-circus": "^27.2.4", - "jest-environment-jsdom": "^27.2.4", - "jest-environment-node": "^27.2.4", - "jest-get-type": "^27.0.6", - "jest-jasmine2": "^27.2.4", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.2.4", - "jest-runner": "^27.2.4", - "jest-util": "^27.2.4", - "jest-validate": "^27.2.4", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "micromatch": "^4.0.4", - "pretty-format": "^27.2.4" + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true } } }, "@jest/environment": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.2.4.tgz", - "integrity": "sha512-wkuui5yr3SSQW0XD0Qm3TATUbL/WE3LDEM3ulC+RCQhMf2yxhci8x7svGkZ4ivJ6Pc94oOzpZ6cdHBAMSYd1ew==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", "dev": true, "requires": { - "@jest/fake-timers": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^27.2.4" + "jest-mock": "^27.5.1" } }, "@jest/fake-timers": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.2.4.tgz", - "integrity": "sha512-cs/TzvwWUM7kAA6Qm/890SK6JJ2pD5RfDNM3SSEom6BmdyV6OiWP1qf/pqo6ts6xwpcM36oN0wSEzcZWc6/B6w==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", "dev": true, "requires": { - "@jest/types": "^27.2.4", + "@jest/types": "^27.5.1", "@sinonjs/fake-timers": "^8.0.1", "@types/node": "*", - "jest-message-util": "^27.2.4", - "jest-mock": "^27.2.4", - "jest-util": "^27.2.4" + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" } }, "@jest/globals": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.2.4.tgz", - "integrity": "sha512-DRsRs5dh0i+fA9mGHylTU19+8fhzNJoEzrgsu+zgJoZth3x8/0juCQ8nVVdW1er4Cqifb/ET7/hACYVPD0dBEA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", "dev": true, "requires": { - "@jest/environment": "^27.2.4", - "@jest/types": "^27.2.4", - "expect": "^27.2.4" + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" } }, "@jest/reporters": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.2.4.tgz", - "integrity": "sha512-LHeSdDnDZkDnJ8kvnjcqV8P1Yv/32yL4d4XfR5gBiy3xGO0onwll1QEbvtW96fIwhx2nejug0GTaEdNDoyr3fQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.2.4", - "@jest/test-result": "^27.2.4", - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", "glob": "^7.1.2", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.2.4", - "jest-resolve": "^27.2.4", - "jest-util": "^27.2.4", - "jest-worker": "^27.2.4", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "slash": "^3.0.0", "source-map": "^0.6.0", "string-length": "^4.0.1", "terminal-link": "^2.0.0", "v8-to-istanbul": "^8.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "@jest/source-map": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", - "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", "dev": true, "requires": { "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "@jest/test-result": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.2.4.tgz", - "integrity": "sha512-eU+PRo0+lIS01b0dTmMdVZ0TtcRSxEaYquZTRFMQz6CvsehGhx9bRzi9Zdw6VROviJyv7rstU+qAMX5pNBmnfQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", "dev": true, "requires": { - "@jest/console": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.2.4.tgz", - "integrity": "sha512-fpk5eknU3/DXE2QCCG1wv/a468+cfPo3Asu6d6yUtM9LOPh709ubZqrhuUOYfM8hXMrIpIdrv1CdCrWWabX0rQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", "dev": true, "requires": { - "@jest/test-result": "^27.2.4", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.4", - "jest-runtime": "^27.2.4" + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" } }, "@jest/transform": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.2.4.tgz", - "integrity": "sha512-n5FlX2TH0oQGwyVDKPxdJ5nI2sO7TJBFe3u3KaAtt7TOiV4yL+Y+rSFDl+Ic5MpbiA/eqXmLAQxjnBmWgS2rEA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/types": "^27.2.4", - "babel-plugin-istanbul": "^6.0.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.4", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.2.4", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", "micromatch": "^4.0.4", - "pirates": "^4.0.1", + "pirates": "^4.0.4", "slash": "^3.0.0", "source-map": "^0.6.1", "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "@jest/types": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", - "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", @@ -10640,14 +9292,14 @@ } }, "@noble/hashes": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-0.5.7.tgz", - "integrity": "sha512-R9PPYv7TqoYi+enikzZvwRQesGTxR0+jwqzZJGL0uNcf2NFL+lt/uvCCewtXXmr6jWBxiMuNjBfJwKv9UJaCng==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.0.0.tgz", + "integrity": "sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg==" }, "@noble/secp256k1": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.3.4.tgz", - "integrity": "sha512-ZVRouDO5mbdCiDg4zCd3ZZABduRtpy4tCnB33Gh9upHe9tRzpiqbRSN1VTjrj/2g8u2c6MBi0YLNnNQpBYOiWg==" + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.5.2.tgz", + "integrity": "sha512-5mzA40W2q55VCRuC9XzmkiEnODdY0c5a7qsK2QcOfI5/MuVQyBaWGQyE6YOEF7kDwp+tDVWGsCDVJUME+wsWWw==" }, "@nodelib/fs.scandir": { "version": "2.1.5", @@ -10751,23 +9403,16 @@ "supports-color": "^7.1.0" } }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "semver": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.2.3.tgz", "integrity": "sha512-utbW9Z7ZxVvwiIWkdOMLOR9G/NFXh2aRucghkVrEMJWuC++r3lCkBC3LwqBinyHzGMAJxY5tn6VakZGHObq5ig==" + }, + "ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "requires": {} } } }, @@ -10796,33 +9441,10 @@ "lodash": "^4.17.14" } }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, "eventemitter2": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.4.tgz", - "integrity": "sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "version": "6.4.5", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz", + "integrity": "sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==" } } }, @@ -10846,23 +9468,10 @@ "lodash": "^4.17.14" } }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, "eventemitter2": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.4.tgz", - "integrity": "sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "6.4.5", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz", + "integrity": "sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==" } } }, @@ -10872,315 +9481,262 @@ "integrity": "sha512-SXsM27SGH3yTWKc2fKR4SYNxsmnvuBQ9dd6QHtEWmiZ/VqaOYPAIlS8+vMcn27YLtAEBGvNRSh3TPNvtjZgfqA==", "requires": { "debug": "^4.3.1" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, "@polkadot/api": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-7.7.1.tgz", - "integrity": "sha512-wWwtVgRz1Lc7HY0evRnzKZNaRBIo818V16fZ+S73zfIMxvDmO2zbfui9scIlpi4WwL2K3YQbznOwBlWeHH92LA==", - "requires": { - "@babel/runtime": "^7.17.0", - "@polkadot/api-augment": "7.7.1", - "@polkadot/api-base": "7.7.1", - "@polkadot/api-derive": "7.7.1", - "@polkadot/keyring": "^8.3.3", - "@polkadot/rpc-augment": "7.7.1", - "@polkadot/rpc-core": "7.7.1", - "@polkadot/rpc-provider": "7.7.1", - "@polkadot/types": "7.7.1", - "@polkadot/types-augment": "7.7.1", - "@polkadot/types-codec": "7.7.1", - "@polkadot/types-create": "7.7.1", - "@polkadot/types-known": "7.7.1", - "@polkadot/util": "^8.3.3", - "@polkadot/util-crypto": "^8.3.3", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-7.11.1.tgz", + "integrity": "sha512-VTrhVuSJrWhIww1ofYPd7EhJd1UwKntfdPNRuy/abfb6GPzYCglKV6Sze3CsbI2KawC5oo1K7Ffrdf/lJy81kg==", + "requires": { + "@babel/runtime": "^7.17.2", + "@polkadot/api-augment": "7.11.1", + "@polkadot/api-base": "7.11.1", + "@polkadot/api-derive": "7.11.1", + "@polkadot/keyring": "^8.4.1", + "@polkadot/rpc-augment": "7.11.1", + "@polkadot/rpc-core": "7.11.1", + "@polkadot/rpc-provider": "7.11.1", + "@polkadot/types": "7.11.1", + "@polkadot/types-augment": "7.11.1", + "@polkadot/types-codec": "7.11.1", + "@polkadot/types-create": "7.11.1", + "@polkadot/types-known": "7.11.1", + "@polkadot/util": "^8.4.1", + "@polkadot/util-crypto": "^8.4.1", "eventemitter3": "^4.0.7", - "rxjs": "^7.5.2" + "rxjs": "^7.5.4" } }, "@polkadot/api-augment": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-7.7.1.tgz", - "integrity": "sha512-M8c38haMh39K2pg3wRE4azpEr3hkaKV8dTlXG6whDmpDsPGTLa/wE9rCUzduRXTLpUZYBUCH529+bJ5LVwmSNQ==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-7.11.1.tgz", + "integrity": "sha512-CqtmRZsr7va45r/wnsH+NZMqPyUQv46fmiHxt5gq6NC4p0ziDEVVDDHLlABx5RhQzCvdiBAccZ/X8DyMCFFGEA==", "requires": { - "@babel/runtime": "^7.17.0", - "@polkadot/api-base": "7.7.1", - "@polkadot/rpc-augment": "7.7.1", - "@polkadot/types": "7.7.1", - "@polkadot/types-augment": "7.7.1", - "@polkadot/types-codec": "7.7.1", - "@polkadot/util": "^8.3.3" + "@babel/runtime": "^7.17.2", + "@polkadot/api-base": "7.11.1", + "@polkadot/rpc-augment": "7.11.1", + "@polkadot/types": "7.11.1", + "@polkadot/types-augment": "7.11.1", + "@polkadot/types-codec": "7.11.1", + "@polkadot/util": "^8.4.1" } }, "@polkadot/api-base": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-base/-/api-base-7.7.1.tgz", - "integrity": "sha512-gzgETQrgjMOqcQj7dwsiqVxmlUQEMH89ome0qargrJWiwbFUeceOlvt47E/WGG6/1oWUl3SMZcNRLYANME93ag==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-base/-/api-base-7.11.1.tgz", + "integrity": "sha512-MATI9tm0x3rRlipLMevWzJ4cGvMyrUGyOfwjMg3Z67U7atZgZ93LzowjzDcvSgFVM14d1tBOVWBKkCKnk7C6Zg==", "requires": { - "@babel/runtime": "^7.17.0", - "@polkadot/rpc-core": "7.7.1", - "@polkadot/types": "7.7.1", - "@polkadot/util": "^8.3.3", - "rxjs": "^7.5.2" + "@babel/runtime": "^7.17.2", + "@polkadot/rpc-core": "7.11.1", + "@polkadot/types": "7.11.1", + "@polkadot/util": "^8.4.1", + "rxjs": "^7.5.4" } }, "@polkadot/api-derive": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-7.7.1.tgz", - "integrity": "sha512-1dBj+vtVk+XAcvwC6BE+eUdVnbcBteWDXzBxrIuzT8NlkAReIq+74+bOEZH7GDcGMorTR5s+Z3FZD1ElmUiUNQ==", - "requires": { - "@babel/runtime": "^7.17.0", - "@polkadot/api": "7.7.1", - "@polkadot/api-augment": "7.7.1", - "@polkadot/api-base": "7.7.1", - "@polkadot/rpc-core": "7.7.1", - "@polkadot/types": "7.7.1", - "@polkadot/types-codec": "7.7.1", - "@polkadot/util": "^8.3.3", - "@polkadot/util-crypto": "^8.3.3", - "rxjs": "^7.5.2" + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-7.11.1.tgz", + "integrity": "sha512-py7pqs5mLaKPNDvRZ7BcUC7obsbLIuzJT/kZFiGzJXmaObSzU2lJkGD7fV34QlpmGP+Bqb4KtlhtY+Tnq33C0w==", + "requires": { + "@babel/runtime": "^7.17.2", + "@polkadot/api": "7.11.1", + "@polkadot/api-augment": "7.11.1", + "@polkadot/api-base": "7.11.1", + "@polkadot/rpc-core": "7.11.1", + "@polkadot/types": "7.11.1", + "@polkadot/types-codec": "7.11.1", + "@polkadot/util": "^8.4.1", + "@polkadot/util-crypto": "^8.4.1", + "rxjs": "^7.5.4" } }, "@polkadot/keyring": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-8.3.3.tgz", - "integrity": "sha512-TgoIpaTqn7voT7lDu5W6p0Z+216OImpqtHuaiFy125ekCQurrf9BVIdwp56y5qoFLDAZ5i9gnWHMIgOQ6AJj/Q==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-8.4.1.tgz", + "integrity": "sha512-0qfS7qikUxhe6LEdCOcMRdCxEa26inJ5aSUWaf5dXy+dgy9VJiov6uXAbXdAd1UHpDvr9hvw94FX+hXsJ7Vsyw==", "requires": { - "@babel/runtime": "^7.16.7", - "@polkadot/util": "8.3.3", - "@polkadot/util-crypto": "8.3.3" + "@babel/runtime": "^7.17.2", + "@polkadot/util": "8.4.1", + "@polkadot/util-crypto": "8.4.1" } }, "@polkadot/networks": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-8.3.3.tgz", - "integrity": "sha512-yj0DMqmzRZbvgaoZztV3/RPgYJjBhT17Dhu+FX/LUJzVbAF/RfjkzNsJT4Ta4kLDxQMYZq1avUac0ia2j9NcNw==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-8.4.1.tgz", + "integrity": "sha512-YFY3fPLbc1Uz9zsX4TOzjY/FF09nABMgrMkvqddrVbSgo71NvoBv3Gqw3mKV/7bX1Gzk1ODfvTzamdpsKEWSnA==", "requires": { - "@babel/runtime": "^7.16.7", - "@polkadot/util": "8.3.3" + "@babel/runtime": "^7.17.2", + "@polkadot/util": "8.4.1", + "@substrate/ss58-registry": "^1.14.0" } }, "@polkadot/rpc-augment": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-7.7.1.tgz", - "integrity": "sha512-Hwa6qjxHSuzjyYxa2gOpIoN0PWhWDLEOxpHFZxwNoCkmGtcIpNwWOtK1chZWEl9Zd1Yq+JLIEoimNN+2ok/3cA==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-7.11.1.tgz", + "integrity": "sha512-cP/g6dM5Rmdeno+sOi/PBvAEycRoi/UI1MOKb0lVhlFJayw/uyGOhHtPKOnLh2fyDJ/q66HO3pu6aem3ORFwhQ==", "requires": { - "@babel/runtime": "^7.17.0", - "@polkadot/rpc-core": "7.7.1", - "@polkadot/types": "7.7.1", - "@polkadot/types-codec": "7.7.1", - "@polkadot/util": "^8.3.3" + "@babel/runtime": "^7.17.2", + "@polkadot/rpc-core": "7.11.1", + "@polkadot/types": "7.11.1", + "@polkadot/types-codec": "7.11.1", + "@polkadot/util": "^8.4.1" } }, "@polkadot/rpc-core": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-7.7.1.tgz", - "integrity": "sha512-vJuuTbmGKEcjJY3JIjMirLESVjnHBGajtTaLtlcwBcp8Jgj/fBi+FoL3gcpZS4BR87/qVe35aoNO2hDhU9DUJA==", - "requires": { - "@babel/runtime": "^7.17.0", - "@polkadot/rpc-augment": "7.7.1", - "@polkadot/rpc-provider": "7.7.1", - "@polkadot/types": "7.7.1", - "@polkadot/util": "^8.3.3", - "rxjs": "^7.5.2" + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-7.11.1.tgz", + "integrity": "sha512-Bp71BwOSPT4/xmYWn9e9/ikGKYYmltbceVwa0MJiuKI0Xd5YntjtJVov17Fqlt+eddkLGt74750paykvHDJWWQ==", + "requires": { + "@babel/runtime": "^7.17.2", + "@polkadot/rpc-augment": "7.11.1", + "@polkadot/rpc-provider": "7.11.1", + "@polkadot/types": "7.11.1", + "@polkadot/util": "^8.4.1", + "rxjs": "^7.5.4" } }, "@polkadot/rpc-provider": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-7.7.1.tgz", - "integrity": "sha512-PPAMjQgV4pA/l+L+mk93dvmzwMA2tZSzVf0DjsldD0vi5Oydo0Sw8I4YEsueTnHme0PadIZXUzWEonG81klAlw==", - "requires": { - "@babel/runtime": "^7.17.0", - "@polkadot/keyring": "^8.3.3", - "@polkadot/types": "7.7.1", - "@polkadot/types-support": "7.7.1", - "@polkadot/util": "^8.3.3", - "@polkadot/util-crypto": "^8.3.3", - "@polkadot/x-fetch": "^8.3.3", - "@polkadot/x-global": "^8.3.3", - "@polkadot/x-ws": "^8.3.3", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-7.11.1.tgz", + "integrity": "sha512-07Mg+r9swMjNISDK8ntDI5gFZU8rtHeoB27/qQwZzcWugogva8rNhaInBikZPKlF7yxM6l2VMaQnOziKUNsnRw==", + "requires": { + "@babel/runtime": "^7.17.2", + "@polkadot/keyring": "^8.4.1", + "@polkadot/types": "7.11.1", + "@polkadot/types-support": "7.11.1", + "@polkadot/util": "^8.4.1", + "@polkadot/util-crypto": "^8.4.1", + "@polkadot/x-fetch": "^8.4.1", + "@polkadot/x-global": "^8.4.1", + "@polkadot/x-ws": "^8.4.1", "eventemitter3": "^4.0.7", "mock-socket": "^9.1.2", "nock": "^13.2.4" - }, - "dependencies": { - "@polkadot/x-global": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.4.1.tgz", - "integrity": "sha512-MQs89LKQrJwiXjV7dY2kDOPNaiWrwaQ/Fzg93ycB2xMCclRV1jRFRhnhTPJ8Ao79lhCCoazd7pXIyFgfifxdqg==", - "requires": { - "@babel/runtime": "^7.17.2" - } - } } }, "@polkadot/typegen": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/typegen/-/typegen-7.7.1.tgz", - "integrity": "sha512-uzyau1I6vrMiejTIXLSvmJ5ZTLstUKlfmevHxFO1Pf6x56vRed1zr8u5Y5TmjF5FQkIdh0d6KpZoWqEcHa4AJQ==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/typegen/-/typegen-7.11.1.tgz", + "integrity": "sha512-pdxBOEU6VoMd2xjexQPfHSb0PC1DU/zXs/Zq+Z4tT+PPWkr9TtfbcZWpGmg6xFyWChcmurvwCI/VTnurBUFC0A==", "dev": true, "requires": { - "@babel/core": "^7.17.0", + "@babel/core": "^7.17.5", "@babel/register": "^7.17.0", - "@babel/runtime": "^7.17.0", - "@polkadot/api": "7.7.1", - "@polkadot/api-augment": "7.7.1", - "@polkadot/rpc-augment": "7.7.1", - "@polkadot/rpc-provider": "7.7.1", - "@polkadot/types": "7.7.1", - "@polkadot/types-augment": "7.7.1", - "@polkadot/types-codec": "7.7.1", - "@polkadot/types-create": "7.7.1", - "@polkadot/types-support": "7.7.1", - "@polkadot/util": "^8.3.3", - "@polkadot/x-ws": "^8.3.3", + "@babel/runtime": "^7.17.2", + "@polkadot/api": "7.11.1", + "@polkadot/api-augment": "7.11.1", + "@polkadot/rpc-augment": "7.11.1", + "@polkadot/rpc-provider": "7.11.1", + "@polkadot/types": "7.11.1", + "@polkadot/types-augment": "7.11.1", + "@polkadot/types-codec": "7.11.1", + "@polkadot/types-create": "7.11.1", + "@polkadot/types-support": "7.11.1", + "@polkadot/util": "^8.4.1", + "@polkadot/x-ws": "^8.4.1", "handlebars": "^4.7.7", "websocket": "^1.0.34", "yargs": "^17.3.1" } }, "@polkadot/types": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-7.7.1.tgz", - "integrity": "sha512-koJfoKvSiwpZKkHZrOpelb+JxCf+0iGzVOt0hj0plOK5oOOSJd0Elpy1dc8QQEJUC3V/pNdAGTsV6dvqi8rnAg==", - "requires": { - "@babel/runtime": "^7.17.0", - "@polkadot/keyring": "^8.3.3", - "@polkadot/types-augment": "7.7.1", - "@polkadot/types-codec": "7.7.1", - "@polkadot/types-create": "7.7.1", - "@polkadot/util": "^8.3.3", - "@polkadot/util-crypto": "^8.3.3", - "rxjs": "^7.5.2" + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-7.11.1.tgz", + "integrity": "sha512-jxVrxIbsSfH9xK1Q3vaCfJmbkm0OlvoXz0GxdP5RJ7dQnxlNYWQUXanFkKebbRL8gSEs1wSRVccil/TSH65Nvg==", + "requires": { + "@babel/runtime": "^7.17.2", + "@polkadot/keyring": "^8.4.1", + "@polkadot/types-augment": "7.11.1", + "@polkadot/types-codec": "7.11.1", + "@polkadot/types-create": "7.11.1", + "@polkadot/util": "^8.4.1", + "@polkadot/util-crypto": "^8.4.1", + "rxjs": "^7.5.4" } }, "@polkadot/types-augment": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-7.7.1.tgz", - "integrity": "sha512-NsPJgD85UUIOao2rtY9jCzt2+MdZsn2qhBSphnqQqS3yOQKoonaHojCsRKt39raQ0UNST+At5zL1+HdcKP53EQ==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-7.11.1.tgz", + "integrity": "sha512-jCnZ/eMkLaqSKl5q4JwBxslhAaJSSNHt04reZRs1i2jlC2UVgiFN1Rr5GJmHYAwDPoFcge/rAm6bckfhXUIdOw==", "requires": { - "@babel/runtime": "^7.17.0", - "@polkadot/types": "7.7.1", - "@polkadot/types-codec": "7.7.1", - "@polkadot/util": "^8.3.3" + "@babel/runtime": "^7.17.2", + "@polkadot/types": "7.11.1", + "@polkadot/types-codec": "7.11.1", + "@polkadot/util": "^8.4.1" } }, "@polkadot/types-codec": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-7.7.1.tgz", - "integrity": "sha512-NqxQGpfagc+51TGBo8lrmEJox3cZwx6lSeoPnGUqQBcOhqjaJ8EPEAaFHc0TTc22/sLs1qYqBc+cz+9UXKAEOg==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-7.11.1.tgz", + "integrity": "sha512-rDM/FYcnou2Chy+urd7U41lcjM6jWUEUydyP9NuTOSAamCGtH0eKw52GURKTsKTT5r8wJdPMKv/yNxs1i+l5Lw==", "requires": { - "@babel/runtime": "^7.17.0", - "@polkadot/util": "^8.3.3" + "@babel/runtime": "^7.17.2", + "@polkadot/util": "^8.4.1" } }, "@polkadot/types-create": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-7.7.1.tgz", - "integrity": "sha512-T7iyu0u1Ji3ErA3YcY+WuI83TMcnvhTYJXs+OmGksWa64MQAiWs2pkYNmS4ieArUW3vsel5nv9noBzyl2MAocQ==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-7.11.1.tgz", + "integrity": "sha512-nVYaJC/IDsM4WM9WGjAI7qQ9scPSlBqqzwqLdvXCJeq3trOTt68x39DD0zp0hzJ/7MeXjPToDDWjpAF0B9mWSQ==", "requires": { - "@babel/runtime": "^7.17.0", - "@polkadot/types-codec": "7.7.1", - "@polkadot/util": "^8.3.3" + "@babel/runtime": "^7.17.2", + "@polkadot/types-codec": "7.11.1", + "@polkadot/util": "^8.4.1" } }, "@polkadot/types-known": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-7.7.1.tgz", - "integrity": "sha512-NtRPOwHwKCJhzYGBWq/8n9pPalWY3AAx9jNE3TXAfxOCwVelZaXhC9TZ8iXkzZUixG1pJ+5KInXbjDeGfGpi/g==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-7.11.1.tgz", + "integrity": "sha512-BBqQxG7I+wUjeLby1u5p9aSoZ5Vy0oCwmm/aKN64JH9vBEz1OOA0pRdcCooGCG/884Wb5pRpacWTepQMQkOTLw==", "requires": { - "@babel/runtime": "^7.17.0", - "@polkadot/networks": "^8.3.3", - "@polkadot/types": "7.7.1", - "@polkadot/types-codec": "7.7.1", - "@polkadot/types-create": "7.7.1", - "@polkadot/util": "^8.3.3" + "@babel/runtime": "^7.17.2", + "@polkadot/networks": "^8.4.1", + "@polkadot/types": "7.11.1", + "@polkadot/types-codec": "7.11.1", + "@polkadot/types-create": "7.11.1", + "@polkadot/util": "^8.4.1" } }, "@polkadot/types-support": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-7.7.1.tgz", - "integrity": "sha512-JQmplnNGML43sE+dArlnzEbDMvpo0TkOMvpM8VflThjabG1MhCFuZdiOSm0WQ/iz4wm+3KihOKGzR6TPpGMKOA==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-7.11.1.tgz", + "integrity": "sha512-pJmDUHK7DOO6mjpntxq9Lq0tjvqwc15FrrrNbuENgRiOueRqcAlzv+V80wdzoIBUwINgKphtpzu+rdQIYsVVQg==", "requires": { - "@babel/runtime": "^7.17.0", - "@polkadot/util": "^8.3.3" + "@babel/runtime": "^7.17.2", + "@polkadot/util": "^8.4.1" } }, "@polkadot/util": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-8.3.3.tgz", - "integrity": "sha512-8u1NShSHrCFeFvxWL8WAyRN8y1/iPvijqYCDeeHziBxCNBrL3VKDc9GNF11skeay/EKQiCHBSBeAYyyQOpLebA==", - "requires": { - "@babel/runtime": "^7.16.7", - "@polkadot/x-bigint": "8.3.3", - "@polkadot/x-global": "8.3.3", - "@polkadot/x-textdecoder": "8.3.3", - "@polkadot/x-textencoder": "8.3.3", - "@types/bn.js": "^4.11.6", - "bn.js": "^4.12.0", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-8.4.1.tgz", + "integrity": "sha512-8+wqHgFbFWI5TfrvtcL888w0nWvFpbTTYIcbpEw+zYGp3n1YZTAMMP26bXWAaQX5AttxynJRij7JP3ySxYY1fg==", + "requires": { + "@babel/runtime": "^7.17.2", + "@polkadot/x-bigint": "8.4.1", + "@polkadot/x-global": "8.4.1", + "@polkadot/x-textdecoder": "8.4.1", + "@polkadot/x-textencoder": "8.4.1", + "@types/bn.js": "^5.1.0", + "bn.js": "^5.2.0", "ip-regex": "^4.3.0" - }, - "dependencies": { - "@polkadot/x-global": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", - "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", - "requires": { - "@babel/runtime": "^7.16.7" - } - } } }, "@polkadot/util-crypto": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-8.3.3.tgz", - "integrity": "sha512-kXaT2VTEbJq1wNiV0Dz5qJuVWy7pK+x1QLcyWC+6OFERYO+BCp1Y2bTOcLUeF/gyyR/ZaRMMdTyu0ZbHrwH0xg==", - "requires": { - "@babel/runtime": "^7.16.7", - "@noble/hashes": "0.5.7", - "@noble/secp256k1": "1.3.4", - "@polkadot/networks": "8.3.3", - "@polkadot/util": "8.3.3", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-8.4.1.tgz", + "integrity": "sha512-mWjp83aIWw+EhKN9RkUDmubXibo25q5yHJl4BGm2gT71yTZcABB7q1SGfpDqLH9AB3eXJiutqhC4L3SH7YZ+6Q==", + "requires": { + "@babel/runtime": "^7.17.2", + "@noble/hashes": "1.0.0", + "@noble/secp256k1": "1.5.2", + "@polkadot/networks": "8.4.1", + "@polkadot/util": "8.4.1", "@polkadot/wasm-crypto": "^4.5.1", - "@polkadot/x-bigint": "8.3.3", - "@polkadot/x-randomvalues": "8.3.3", + "@polkadot/x-bigint": "8.4.1", + "@polkadot/x-randomvalues": "8.4.1", + "@scure/base": "1.0.0", "ed2curve": "^0.3.0", - "micro-base": "^0.10.2", "tweetnacl": "^1.0.3" - }, - "dependencies": { - "@polkadot/x-global": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", - "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", - "requires": { - "@babel/runtime": "^7.16.7" - } - }, - "@polkadot/x-randomvalues": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-8.3.3.tgz", - "integrity": "sha512-yxM6GWQholf+vY4dHxKVwtJwDzNUz4UJlL/iN3PA0cuhQ37gxmtJugnNAllcFd8LDNXEN47Ky6Ifw1OHHmZaVw==", - "requires": { - "@babel/runtime": "^7.16.7", - "@polkadot/x-global": "8.3.3" - } - } } }, "@polkadot/wasm-crypto": { @@ -11210,22 +9766,12 @@ } }, "@polkadot/x-bigint": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-8.3.3.tgz", - "integrity": "sha512-2CT25f0zN/uhch3KpM38jtQfFJ1zJCNT41exg49ztsOvm4f6l+6hW91NLhNAZ313B/c6Z4Lm3DalsjAOdBZ8Nw==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-8.4.1.tgz", + "integrity": "sha512-QVP0UMoM0nBD998s3ESeaoSiVMEnHK3x0CCqocKO4l7ADNw8lfWdDG7Bb0+ymNaFYGz2KgEWxkN0VhNEnXzo0w==", "requires": { - "@babel/runtime": "^7.16.7", - "@polkadot/x-global": "8.3.3" - }, - "dependencies": { - "@polkadot/x-global": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", - "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", - "requires": { - "@babel/runtime": "^7.16.7" - } - } + "@babel/runtime": "^7.17.2", + "@polkadot/x-global": "8.4.1" } }, "@polkadot/x-fetch": { @@ -11237,73 +9783,41 @@ "@polkadot/x-global": "8.4.1", "@types/node-fetch": "^2.5.12", "node-fetch": "^2.6.7" - }, - "dependencies": { - "@polkadot/x-global": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.4.1.tgz", - "integrity": "sha512-MQs89LKQrJwiXjV7dY2kDOPNaiWrwaQ/Fzg93ycB2xMCclRV1jRFRhnhTPJ8Ao79lhCCoazd7pXIyFgfifxdqg==", - "requires": { - "@babel/runtime": "^7.17.2" - } - } } }, "@polkadot/x-global": { - "version": "8.3.4-1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.4-1.tgz", - "integrity": "sha512-6KlG5PAG7OKc+fPteDV+MXpuzHzpBKCWS6Fc+M08Mehwr+wccwAMV3q8tinCGn4qQV6iPwNOJd0cxRvPO4v9YQ==", - "peer": true, + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.4.1.tgz", + "integrity": "sha512-MQs89LKQrJwiXjV7dY2kDOPNaiWrwaQ/Fzg93ycB2xMCclRV1jRFRhnhTPJ8Ao79lhCCoazd7pXIyFgfifxdqg==", "requires": { - "@babel/runtime": "^7.16.7" + "@babel/runtime": "^7.17.2" } }, "@polkadot/x-randomvalues": { - "version": "8.3.4-1", - "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-8.3.4-1.tgz", - "integrity": "sha512-gWKOUMGzmca2ncxLiPxR2lMTopRhTjd/Ww3U+QWfzgXiNqZ8ZIb6tB9AZfVTH0WGKQFSSYJTTqwVg5VOoB96cQ==", - "peer": true, + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-8.4.1.tgz", + "integrity": "sha512-1dRIFIib4RzyVo0k5oMLuxqSuZEV6UVvvN+jJw9G/9P1ggZtHjM1KwoFcyHgvpk2RWTB9eJZFemwSvQTpdmSJw==", "requires": { - "@babel/runtime": "^7.16.7", - "@polkadot/x-global": "8.3.4-1" + "@babel/runtime": "^7.17.2", + "@polkadot/x-global": "8.4.1" } }, "@polkadot/x-textdecoder": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-8.3.3.tgz", - "integrity": "sha512-oEvFJv/F+fQ336ciRuJJgJFtfyOX6a2Nyr/5GCkiSQjkEIdnBUuO49yXpHNmQsNI0WndLWIEitiVVa9KuDslYw==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-8.4.1.tgz", + "integrity": "sha512-qbSXyR2KvE1bO6QGsxWU3Yrx5e70rX2lwv0MHG++MyyNaDoBM3hjx14lF911bYRWXR6MW4eZ+0Nakn0oM5uSKw==", "requires": { - "@babel/runtime": "^7.16.7", - "@polkadot/x-global": "8.3.3" - }, - "dependencies": { - "@polkadot/x-global": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", - "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", - "requires": { - "@babel/runtime": "^7.16.7" - } - } + "@babel/runtime": "^7.17.2", + "@polkadot/x-global": "8.4.1" } }, "@polkadot/x-textencoder": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-8.3.3.tgz", - "integrity": "sha512-acVsJjmlQ7aluUq8JARY2wJAbf+6dvZNoUrvgzdX/jl5MqvqeIXmX3LX71MyidLt27Z537VDgNzWw8V/524AVQ==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-8.4.1.tgz", + "integrity": "sha512-1UYuckNOk6NUk70Y/SGbK8oyGbqPlrny1x2OWoK/BT3/tyL2xKVV5TlXDOiFrX1PChbskXye5M8blCTYikFiJg==", "requires": { - "@babel/runtime": "^7.16.7", - "@polkadot/x-global": "8.3.3" - }, - "dependencies": { - "@polkadot/x-global": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.3.3.tgz", - "integrity": "sha512-7DWjcNhTDIpYNiQmLq56o6xYOONr0i6WXdoPUxYrToxZWeWyj/FWaYMfttedLydABPcy87lmvIy8ECp7qCcnyw==", - "requires": { - "@babel/runtime": "^7.16.7" - } - } + "@babel/runtime": "^7.17.2", + "@polkadot/x-global": "8.4.1" } }, "@polkadot/x-ws": { @@ -11315,18 +9829,13 @@ "@polkadot/x-global": "8.4.1", "@types/websocket": "^1.0.5", "websocket": "^1.0.34" - }, - "dependencies": { - "@polkadot/x-global": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.4.1.tgz", - "integrity": "sha512-MQs89LKQrJwiXjV7dY2kDOPNaiWrwaQ/Fzg93ycB2xMCclRV1jRFRhnhTPJ8Ao79lhCCoazd7pXIyFgfifxdqg==", - "requires": { - "@babel/runtime": "^7.17.2" - } - } } }, + "@scure/base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.0.0.tgz", + "integrity": "sha512-gIVaYhUsy+9s58m/ETjSJVKHhKTBMmcRb9cEV5/5dwvfDlfORjKrFsDeDHWRrm6RjcPvCLZFwGJjAjLj1gg4HA==" + }, "@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -11343,14 +9852,19 @@ } }, "@sinonjs/fake-timers": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", - "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", "dev": true, "requires": { "@sinonjs/commons": "^1.7.0" } }, + "@substrate/ss58-registry": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@substrate/ss58-registry/-/ss58-registry-1.15.0.tgz", + "integrity": "sha512-UU5uN8HEp0NM22od6kHWLltX0McQPgPX6O3gj7fSf1mMExsCS5fzW88gv1WaVaT8Q+umvGgnIAF7+Tvp8fqTFw==" + }, "@szmarczak/http-timer": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", @@ -11366,9 +9880,9 @@ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" }, "@types/babel__core": { - "version": "7.1.16", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", - "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==", + "version": "7.1.18", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.18.tgz", + "integrity": "sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -11379,9 +9893,9 @@ } }, "@types/babel__generator": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", - "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", "dev": true, "requires": { "@babel/types": "^7.0.0" @@ -11407,9 +9921,9 @@ } }, "@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", + "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", "requires": { "@types/node": "*" } @@ -11459,19 +9973,13 @@ "requires": { "tslib": "^1.9.0" } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true } } }, "@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", "dev": true }, "@types/istanbul-lib-report": { @@ -11493,12 +10001,12 @@ } }, "@types/jest": { - "version": "27.0.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.2.tgz", - "integrity": "sha512-4dRxkS/AFX0c5XW6IPMNOydLn2tEhNhJV7DnYK+0bjoJZ+QTmfucBlihX7aoEsh/ocYtkLC73UbnBXBXIxsULA==", + "version": "27.4.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.1.tgz", + "integrity": "sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==", "dev": true, "requires": { - "jest-diff": "^27.0.0", + "jest-matcher-utils": "^27.0.0", "pretty-format": "^27.0.0" } }, @@ -11517,19 +10025,11 @@ } }, "@types/prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz", + "integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==", "dev": true }, - "@types/sqlite3": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@types/sqlite3/-/sqlite3-3.1.7.tgz", - "integrity": "sha512-8FHV/8Uzd7IwdHm5mvmF2Aif4aC/gjrt4axWD9SmfaxITnOjtOhCbOSTuqv/VbH1uq0QrwlaTj9aTz3gmR6u4w==", - "requires": { - "@types/node": "*" - } - }, "@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", @@ -11563,9 +10063,9 @@ } }, "@types/yargs-parser": { - "version": "20.2.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", "dev": true }, "abab": { @@ -11577,7 +10077,8 @@ "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true }, "acorn": { "version": "8.7.0", @@ -11614,33 +10115,6 @@ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "requires": { "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "optional": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" } }, "amp": { @@ -11707,54 +10181,6 @@ "picomatch": "^2.0.4" } }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -11771,23 +10197,8 @@ }, "array-back": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==" - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "optional": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "optional": true + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==" }, "assertion-error": { "version": "1.1.0", @@ -11800,12 +10211,19 @@ "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", "requires": { "tslib": "^2.0.1" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } } }, "async": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz", - "integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==" + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" }, "async-listener": { "version": "0.6.10", @@ -11828,24 +10246,6 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "optional": true - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "optional": true - }, "axios": { "version": "0.21.4", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", @@ -11855,18 +10255,18 @@ } }, "babel-jest": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.2.4.tgz", - "integrity": "sha512-f24OmxyWymk5jfgLdlCMu4fTs4ldxFBIdn5sJdhvGC1m08rSkJ5hYbWkNmfBSvE/DjhCVNSHXepxsI6THGfGsg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", "dev": true, "requires": { - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^27.2.0", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "slash": "^3.0.0" } }, @@ -11880,22 +10280,22 @@ } }, "babel-plugin-istanbul": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", - "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-instrument": "^5.0.4", "test-exclude": "^6.0.0" } }, "babel-plugin-jest-hoist": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz", - "integrity": "sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", "dev": true, "requires": { "@babel/template": "^7.3.3", @@ -11925,12 +10325,12 @@ } }, "babel-preset-jest": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz", - "integrity": "sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "^27.2.0", + "babel-plugin-jest-hoist": "^27.5.1", "babel-preset-current-node-syntax": "^1.0.0" } }, @@ -11939,46 +10339,35 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "optional": true, - "requires": { - "tweetnacl": "^0.14.3" - }, - "dependencies": { - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true - } - } + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, "blessed": { "version": "0.1.81", "resolved": "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz", "integrity": "sha1-+WLWh+wsNpVwrnGvhDJW5tDKESk=" }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "optional": true, - "requires": { - "inherits": "~2.0.0" - } - }, "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" }, "bodec": { "version": "0.1.0", @@ -12016,6 +10405,12 @@ "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true } } }, @@ -12043,12 +10438,12 @@ "dev": true }, "browserslist": { - "version": "4.19.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.3.tgz", - "integrity": "sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.0.tgz", + "integrity": "sha512-bnpOoa+DownbciXj0jVGENf8VYQnE2LNWomhYuCsMmmx9Jd9lwq0WXODuwpSsp8AVdKM2/HorrzxAfbKvWTByQ==", "requires": { - "caniuse-lite": "^1.0.30001312", - "electron-to-chromium": "^1.4.71", + "caniuse-lite": "^1.0.30001313", + "electron-to-chromium": "^1.4.76", "escalade": "^3.1.1", "node-releases": "^2.0.2", "picocolors": "^1.0.0" @@ -12072,6 +10467,15 @@ "node-int64": "^0.4.0" } }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -12086,9 +10490,9 @@ } }, "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" }, "cacheable-request": { "version": "6.1.0", @@ -12145,15 +10549,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001312", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz", - "integrity": "sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "optional": true + "version": "1.0.30001314", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001314.tgz", + "integrity": "sha512-0zaSO+TnCHtHJIbpLroX7nsD+vYuOVjl3uzFbJO1wMVbuveJA0RK2WcQA9ZUIOiO0/ArMiMgHJLxfEZhQiC0kw==" }, "chai": { "version": "4.2.0", @@ -12199,9 +10597,9 @@ "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=" }, "chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "requires": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -12213,15 +10611,10 @@ "readdirp": "~3.6.0" } }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", "dev": true }, "cjs-module-lexer": { @@ -12250,14 +10643,18 @@ } }, "cli-progress": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.9.0.tgz", - "integrity": "sha512-g7rLWfhAo/7pF+a/STFH/xPyosaL1zgADhI0OM83hl3c7S43iGvJWEAV2QuDOnQ8i6EMBj/u4+NTd0d5L+4JfA==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.10.0.tgz", + "integrity": "sha512-kLORQrhYCAtUPLZxqsAt2YJGOvRdt34+O6jl5cQGb7iF3dM55FQZlTR+rQyIK9JUcO9bBMwZsTlND+3dmFU2Cw==", "requires": { - "colors": "^1.1.2", "string-width": "^4.2.0" } }, + "cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==" + }, "cli-tableau": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/cli-tableau/-/cli-tableau-2.0.1.tgz", @@ -12293,6 +10690,11 @@ "wrap-ansi": "^7.0.0" } }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, "clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -12319,11 +10721,6 @@ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, "collect-v8-coverage": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", @@ -12343,11 +10740,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" - }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -12357,20 +10749,20 @@ } }, "command-line-args": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.1.1.tgz", - "integrity": "sha512-hL/eG8lrll1Qy1ezvkant+trihbGnaKaeEjj6Scyr3DN+RC7iQ5Rz84IeLERfAWDGo0HBSNAakczwgCilDXnWg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.0.tgz", + "integrity": "sha512-4zqtU1hYsSJzcJBOcNZIbW5Fbk9BkjCp1pZVhQKoRaWL5J7N4XphDLwo8aWwdQpTugxwu+jf9u2ZhkXiqp5Z6A==", "requires": { - "array-back": "^3.0.1", + "array-back": "^3.1.0", "find-replace": "^3.0.0", "lodash.camelcase": "^4.3.0", "typical": "^4.0.0" } }, "commander": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.0.0.tgz", - "integrity": "sha512-ovx/7NkTrnPuIV8sqk/GjUIIM1+iUQeqA3ye2VNpq9sVoiZsooObWlQy+OPWGI17GDaEoybuAGJm6U8yC077BA==" + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" }, "commondir": { "version": "1.0.1", @@ -12405,20 +10797,9 @@ "requires": { "semver": "^6.0.0" } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true } } }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, "continuation-local-storage": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", @@ -12434,13 +10815,6 @@ "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "requires": { "safe-buffer": "~5.1.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } } }, "core-util-is": { @@ -12454,13 +10828,10 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "cron": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/cron/-/cron-1.8.2.tgz", - "integrity": "sha512-Gk2c4y6xKEO8FSAUTklqtfSr7oTq0CiPQeLBG5Fl0qoXpZyMcj1SG59YL+hqq04bu6/IuEA7lMkYDAplQNKkyg==", - "requires": { - "moment-timezone": "^0.5.x" - } + "croner": { + "version": "4.1.97", + "resolved": "https://registry.npmjs.org/croner/-/croner-4.1.97.tgz", + "integrity": "sha512-/f6gpQuxDaqXu+1kwQYSckUglPaOrHdbIlBAu0YuW8/Cdb45XwXYNUBXg3r/9Mo6n540Kn/smKcZWko5x99KrQ==" }, "cross-spawn": { "version": "7.0.3", @@ -12474,30 +10845,30 @@ } }, "crypto-random-string": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-3.3.0.tgz", - "integrity": "sha512-teWAwfMb1d6brahYyKqcBEb5Yp8PJPvPOdOonXDnvaKOTmKDFNVE8E3Y2XQuzjNV/3XMwHbrX9fHWvrhRKt4Gg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", "requires": { - "type-fest": "^0.8.1" + "type-fest": "^1.0.1" } }, "css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", "dev": true, "requires": { "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" } }, "css-what": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", - "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", "dev": true }, "cssom": { @@ -12537,15 +10908,6 @@ "type": "^1.0.1" } }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "optional": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, "data-uri-to-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", @@ -12568,11 +10930,11 @@ "integrity": "sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw==" }, "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "requires": { - "ms": "2.0.0" + "ms": "2.1.2" } }, "decimal.js": { @@ -12607,7 +10969,8 @@ "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true }, "deep-is": { "version": "0.1.4", @@ -12620,6 +10983,14 @@ "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", "dev": true }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "requires": { + "clone": "^1.0.2" + } + }, "defer-to-connect": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", @@ -12636,14 +11007,39 @@ } }, "degenerator": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.1.tgz", - "integrity": "sha512-LFsIFEeLPlKvAKXu7j3ssIG6RT0TbI7/GhsqrI0DnHASEQjXQ0LUSYcjJteGgRGmZbl1TnMSxpNQIAiJ7Du5TQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.2.tgz", + "integrity": "sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==", "requires": { "ast-types": "^0.13.2", "escodegen": "^1.8.1", "esprima": "^4.0.0", - "vm2": "^3.9.3" + "vm2": "^3.9.8" + }, + "dependencies": { + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + } } }, "delayed-stream": { @@ -12651,20 +11047,10 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" }, "detect-newline": { "version": "3.1.0", @@ -12679,9 +11065,9 @@ "dev": true }, "diff-sequences": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", "dev": true }, "dom-converter": { @@ -12728,18 +11114,18 @@ } }, "domhandler": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", - "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", + "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", "dev": true, "requires": { "domelementtype": "^2.2.0" } }, "domutils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", - "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, "requires": { "dom-serializer": "^1.0.1", @@ -12762,16 +11148,6 @@ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "optional": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "ed2curve": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/ed2curve/-/ed2curve-0.3.0.tgz", @@ -12781,9 +11157,9 @@ } }, "electron-to-chromium": { - "version": "1.4.75", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.75.tgz", - "integrity": "sha512-LxgUNeu3BVU7sXaKjUDD9xivocQLxFtq6wgERrutdY/yIOps3ODOZExK1jg8DTEg4U8TUCb5MLGeWFOYuxjF3Q==" + "version": "1.4.79", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.79.tgz", + "integrity": "sha512-nWfAxof87mGHkbORCwVRPst4FlSVdprOKS6dBMrcwn3sjwf8iHXEhsu1+FU5Psd7Ps3KKeBufAdfsPK5BmbSUg==" }, "emitter-listener": { "version": "1.1.2", @@ -12827,14 +11203,23 @@ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "version": "0.10.57", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.57.tgz", + "integrity": "sha512-L7cCNoPwTkAp7IBHxrKLsh7NKiVFkcdxlP9vbVw9QUvb7gF0Mz9bEBN0WY9xqdTjGF907EMT/iG013vnbqwu1Q==", "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" } }, "es6-iterator": { @@ -12873,15 +11258,25 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, "requires": { "esprima": "^4.0.1", - "estraverse": "^4.2.0", + "estraverse": "^5.2.0", "esutils": "^2.0.2", "optionator": "^0.8.1", "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } } }, "esm": { @@ -12895,9 +11290,10 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true }, "esutils": { "version": "2.0.3", @@ -12929,14 +11325,6 @@ "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" - }, - "dependencies": { - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - } } }, "exit": { @@ -12946,25 +11334,15 @@ "dev": true }, "expect": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.2.4.tgz", - "integrity": "sha512-gOtuonQ8TCnbNNCSw2fhVzRf8EFYDII4nB5NmG4IEV0rbUnW1I5zXvoTntU4iicB/Uh0oZr20NGlOLdJiwsOZA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", "dev": true, "requires": { - "@jest/types": "^27.2.4", - "ansi-styles": "^5.0.0", - "jest-get-type": "^27.0.6", - "jest-matcher-utils": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-regex-util": "^27.0.6" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" } }, "export-to-csv": { @@ -12987,12 +11365,6 @@ } } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "optional": true - }, "external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -13003,22 +11375,10 @@ "tmp": "^0.0.33" } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "optional": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "optional": true - }, "fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -13037,7 +11397,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "devOptional": true + "dev": true }, "fast-levenshtein": { "version": "2.0.6", @@ -13045,9 +11405,9 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, "fastq": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz", - "integrity": "sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -13068,9 +11428,9 @@ "integrity": "sha1-EOhdo4v+p/xZk0HClu4ddyZu5kA=" }, "figlet": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.0.tgz", - "integrity": "sha512-ZQJM4aifMpz6H19AW1VqvZ7l4pOE9p7i/3LyxgO2kp+PO/VcDYNqIHEMtkccqIhTXMKci4kjueJr/iCQEaT/Ww==" + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.2.tgz", + "integrity": "sha512-WOn21V8AhyE1QqVfPIVxe3tupJacq1xGkPTB4iagT6o+P2cAgEOOwIxMftr4+ZCTI6d551ij9j61DFr0nsP2uQ==" }, "figures": { "version": "3.2.0", @@ -13113,12 +11473,13 @@ } }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, "follow-redirects": { @@ -13126,12 +11487,6 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==" }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "optional": true - }, "form-data": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", @@ -13143,9 +11498,9 @@ } }, "fp-ts": { - "version": "2.9.5", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.9.5.tgz", - "integrity": "sha512-MiHrA5teO6t8zKArE3DdMPT/Db6v2GUt5yfWnhBTrrsVfeCJUUnV6sgFvjGNBKDmEMqVwRFkEePL7wPwqrLKKA==" + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.11.7.tgz", + "integrity": "sha512-UUpeygu50mV/J96Nk92fzHDznYXJxsO20wrUZGJppja1f8P+fhCaclcqcfubEyrH7XXPsmYn98CJF0BVAEn3ZQ==" }, "fs-extra": { "version": "8.1.0", @@ -13157,14 +11512,6 @@ "universalify": "^0.1.0" } }, - "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "requires": { - "minipass": "^2.6.0" - } - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -13176,38 +11523,6 @@ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "optional": true }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "optional": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "optional": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "optional": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, "ftp": { "version": "0.3.10", "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", @@ -13240,54 +11555,6 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -13322,13 +11589,10 @@ "dev": true }, "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true }, "get-uri": { "version": "3.0.2", @@ -13341,30 +11605,6 @@ "file-uri-to-path": "2", "fs-extra": "^8.1.0", "ftp": "^0.3.10" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "optional": true, - "requires": { - "assert-plus": "^1.0.0" } }, "git-node-fs": { @@ -13378,9 +11618,9 @@ "integrity": "sha1-WZrBkrcYdYJeE6RF86bgURjC90U=" }, "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -13405,14 +11645,6 @@ "dev": true, "requires": { "ini": "1.3.7" - }, - "dependencies": { - "ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", - "dev": true - } } }, "globals": { @@ -13437,12 +11669,23 @@ "p-cancelable": "^1.0.0", "to-readable-stream": "^1.0.0", "url-parse-lax": "^3.0.0" + }, + "dependencies": { + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + } } }, "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" }, "handlebars": { "version": "4.7.7", @@ -13455,22 +11698,14 @@ "source-map": "^0.6.1", "uglify-js": "^3.1.4", "wordwrap": "^1.0.0" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "optional": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "optional": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "has": { @@ -13487,16 +11722,11 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, "has-yarn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", @@ -13537,15 +11767,15 @@ "dev": true }, "http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "requires": { - "depd": "~1.1.2", + "depd": "2.0.0", "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" } }, "http-proxy-agent": { @@ -13556,32 +11786,6 @@ "@tootallnate/once": "1", "agent-base": "6", "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "optional": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" } }, "https-proxy-agent": { @@ -13591,21 +11795,6 @@ "requires": { "agent-base": "6", "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, "human-signals": { @@ -13622,20 +11811,17 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, "ignore-by-default": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", "dev": true }, - "ignore-walk": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", - "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", - "requires": { - "minimatch": "^3.0.4" - } - }, "import-lazy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", @@ -13643,49 +11829,15 @@ "dev": true }, "import-local": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", - "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "requires": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" }, "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -13718,51 +11870,42 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==" }, "inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz", + "integrity": "sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==", "requires": { "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", + "chalk": "^4.1.1", "cli-cursor": "^3.1.0", "cli-width": "^3.0.0", "external-editor": "^3.0.3", "figures": "^3.0.0", - "lodash": "^4.17.19", + "lodash": "^4.17.21", "mute-stream": "0.0.8", + "ora": "^5.4.1", "run-async": "^2.4.0", - "rxjs": "^6.6.0", + "rxjs": "^7.2.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6" }, "dependencies": { - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "requires": { - "tslib": "^1.9.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" } } }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true - }, "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", @@ -13773,6 +11916,12 @@ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==" }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -13788,12 +11937,20 @@ "dev": true, "requires": { "ci-info": "^2.0.0" + }, + "dependencies": { + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + } } }, "is-core-module": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz", - "integrity": "sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", "requires": { "has": "^1.0.3" } @@ -13815,9 +11972,9 @@ "dev": true }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "requires": { "is-extglob": "^2.1.1" } @@ -13832,6 +11989,11 @@ "is-path-inside": "^3.0.1" } }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" + }, "is-npm": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", @@ -13881,6 +12043,11 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" + }, "is-yarn-global": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", @@ -13896,7 +12063,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "devOptional": true + "dev": true }, "isobject": { "version": "3.0.1", @@ -13904,36 +12071,23 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "optional": true - }, "istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true }, "istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", + "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", "dev": true, "requires": { - "@babel/core": "^7.7.5", + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-coverage": "^3.2.0", "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } } }, "istanbul-lib-report": { @@ -13955,19 +12109,13 @@ "requires": { "semver": "^6.0.0" } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true } } }, "istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "requires": { "debug": "^4.1.1", @@ -13975,27 +12123,18 @@ "source-map": "^0.6.1" }, "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, "istanbul-reports": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.3.tgz", - "integrity": "sha512-0i77ZFLsb9U3DHi22WzmIngVzfoyxxbQcZRqlF3KoKmCJGq9nhFHoGi8FqBztN2rE8w6hURnZghetn0xpkVb6A==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", + "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -14003,118 +12142,112 @@ } }, "jest": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.2.4.tgz", - "integrity": "sha512-h4uqb1EQLfPulWyUFFWv9e9Nn8sCqsJ/j3wk/KCY0p4s4s0ICCfP3iMf6hRf5hEhsDyvyrCgKiZXma63gMz16A==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", "dev": true, "requires": { - "@jest/core": "^27.2.4", + "@jest/core": "^27.5.1", "import-local": "^3.0.2", - "jest-cli": "^27.2.4" + "jest-cli": "^27.5.1" } }, "jest-changed-files": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.2.4.tgz", - "integrity": "sha512-eeO1C1u4ex7pdTroYXezr+rbr957myyVoKGjcY4R1TJi3A+9v+4fu1Iv9J4eLq1bgFyT3O3iRWU9lZsEE7J72Q==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", "dev": true, "requires": { - "@jest/types": "^27.2.4", + "@jest/types": "^27.5.1", "execa": "^5.0.0", "throat": "^6.0.1" } }, "jest-circus": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.2.4.tgz", - "integrity": "sha512-TtheheTElrGjlsY9VxkzUU1qwIx05ItIusMVKnvNkMt4o/PeegLRcjq3Db2Jz0GGdBalJdbzLZBgeulZAJxJWA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", "dev": true, "requires": { - "@jest/environment": "^27.2.4", - "@jest/test-result": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.2.4", + "expect": "^27.5.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.2.4", - "jest-matcher-utils": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-runtime": "^27.2.4", - "jest-snapshot": "^27.2.4", - "jest-util": "^27.2.4", - "pretty-format": "^27.2.4", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", "slash": "^3.0.0", "stack-utils": "^2.0.3", "throat": "^6.0.1" } }, "jest-cli": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.2.4.tgz", - "integrity": "sha512-4kpQQkg74HYLaXo3nzwtg4PYxSLgL7puz1LXHj5Tu85KmlIpxQFjRkXlx4V47CYFFIDoyl3rHA/cXOxUWyMpNg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", "dev": true, "requires": { - "@jest/core": "^27.2.4", - "@jest/test-result": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^27.2.4", - "jest-util": "^27.2.4", - "jest-validate": "^27.2.4", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "prompts": "^2.0.1", "yargs": "^16.2.0" }, "dependencies": { - "ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", - "dev": true - }, - "is-ci": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", - "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", - "dev": true, - "requires": { - "ci-info": "^3.1.1" - } - }, "jest-config": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.2.4.tgz", - "integrity": "sha512-tWy0UxhdzqiKyp4l5Vq4HxLyD+gH5td+GCF3c22/DJ0bYAOsMo+qi2XtbJI6oYMH5JOJQs9nLW/r34nvFCehjA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.2.4", - "@jest/types": "^27.2.4", - "babel-jest": "^27.2.4", + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "jest-circus": "^27.2.4", - "jest-environment-jsdom": "^27.2.4", - "jest-environment-node": "^27.2.4", - "jest-get-type": "^27.0.6", - "jest-jasmine2": "^27.2.4", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.2.4", - "jest-runner": "^27.2.4", - "jest-util": "^27.2.4", - "jest-validate": "^27.2.4", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "micromatch": "^4.0.4", - "pretty-format": "^27.2.4" + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" } }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, "yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -14133,167 +12266,166 @@ } }, "jest-diff": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.2.4.tgz", - "integrity": "sha512-bLAVlDSCR3gqUPGv+4nzVpEXGsHh98HjUL7Vb2hVyyuBDoQmja8eJb0imUABsuxBeUVmf47taJSAd9nDrwWKEg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", "dev": true, "requires": { "chalk": "^4.0.0", - "diff-sequences": "^27.0.6", - "jest-get-type": "^27.0.6", - "pretty-format": "^27.2.4" + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" } }, "jest-docblock": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", - "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", "dev": true, "requires": { "detect-newline": "^3.0.0" } }, "jest-each": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.2.4.tgz", - "integrity": "sha512-w9XVc+0EDBUTJS4xBNJ7N2JCcWItFd006lFjz77OarAQcQ10eFDBMrfDv2GBJMKlXe9aq0HrIIF51AXcZrRJyg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", "dev": true, "requires": { - "@jest/types": "^27.2.4", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", - "jest-get-type": "^27.0.6", - "jest-util": "^27.2.4", - "pretty-format": "^27.2.4" + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" } }, "jest-environment-jsdom": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.2.4.tgz", - "integrity": "sha512-X70pTXFSypD7AIzKT1mLnDi5hP9w9mdTRcOGOmoDoBrNyNEg4rYm6d4LQWFLc9ps1VnMuDOkFSG0wjSNYGjkng==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", "dev": true, "requires": { - "@jest/environment": "^27.2.4", - "@jest/fake-timers": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^27.2.4", - "jest-util": "^27.2.4", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", "jsdom": "^16.6.0" } }, "jest-environment-node": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.2.4.tgz", - "integrity": "sha512-ZbVbFSnbzTvhLOIkqh5lcLuGCCFvtG4xTXIRPK99rV2KzQT3kNg16KZwfTnLNlIiWCE8do960eToeDfcqmpSAw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", "dev": true, "requires": { - "@jest/environment": "^27.2.4", - "@jest/fake-timers": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^27.2.4", - "jest-util": "^27.2.4" + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" } }, "jest-get-type": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", "dev": true }, "jest-haste-map": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.2.4.tgz", - "integrity": "sha512-bkJ4bT00T2K+1NZXbRcyKnbJ42I6QBvoDNMTAQQDBhaGNnZreiQKUNqax0e6hLTx7E75pKDeltVu3V1HAdu+YA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, "requires": { - "@jest/types": "^27.2.4", + "@jest/types": "^27.5.1", "@types/graceful-fs": "^4.1.2", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "fsevents": "^2.3.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.2.4", - "jest-worker": "^27.2.4", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "micromatch": "^4.0.4", "walker": "^1.0.7" } }, "jest-jasmine2": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.2.4.tgz", - "integrity": "sha512-fcffjO/xLWLVnW2ct3No4EksxM5RyPwHDYu9QU+90cC+/eSMLkFAxS55vkqsxexOO5zSsZ3foVpMQcg/amSeIQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", "dev": true, "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.2.4", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^27.2.4", + "expect": "^27.5.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.2.4", - "jest-matcher-utils": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-runtime": "^27.2.4", - "jest-snapshot": "^27.2.4", - "jest-util": "^27.2.4", - "pretty-format": "^27.2.4", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", "throat": "^6.0.1" } }, "jest-leak-detector": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.2.4.tgz", - "integrity": "sha512-SrcHWbe0EHg/bw2uBjVoHacTo5xosl068x2Q0aWsjr2yYuW2XwqrSkZV4lurUop0jhv1709ymG4or+8E4sH27Q==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", "dev": true, "requires": { - "jest-get-type": "^27.0.6", - "pretty-format": "^27.2.4" + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" } }, "jest-matcher-utils": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.2.4.tgz", - "integrity": "sha512-nQeLfFAIPPkyhkDfifAPfP/U5wm1x0fLtAzqXZSSKckXDNuk2aaOfQiDYv1Mgf5GY6yOsxfUnvNm3dDjXM+BXw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^27.2.4", - "jest-get-type": "^27.0.6", - "pretty-format": "^27.2.4" + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" } }, "jest-message-util": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.4.tgz", - "integrity": "sha512-wbKT/BNGnBVB9nzi+IoaLkXt6fbSvqUxx+IYY66YFh96J3goY33BAaNG3uPqaw/Sh/FR9YpXGVDfd5DJdbh4nA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.2.4", + "@jest/types": "^27.5.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^27.2.4", + "pretty-format": "^27.5.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" } }, "jest-mock": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.2.4.tgz", - "integrity": "sha512-iVRU905rutaAoUcrt5Tm1JoHHWi24YabqEGXjPJI4tAyA6wZ7mzDi3GrZ+M7ebgWBqUkZE93GAx1STk7yCMIQA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", "dev": true, "requires": { - "@jest/types": "^27.2.4", + "@jest/types": "^27.5.1", "@types/node": "*" } }, @@ -14305,236 +12437,220 @@ "requires": {} }, "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true }, "jest-resolve": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.2.4.tgz", - "integrity": "sha512-IsAO/3+3BZnKjI2I4f3835TBK/90dxR7Otgufn3mnrDFTByOSXclDi3G2XJsawGV4/18IMLARJ+V7Wm7t+J89Q==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", "dev": true, "requires": { - "@jest/types": "^27.2.4", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", - "escalade": "^3.1.1", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.4", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.2.4", - "jest-validate": "^27.2.4", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", "slash": "^3.0.0" } }, "jest-resolve-dependencies": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.2.4.tgz", - "integrity": "sha512-i5s7Uh9B3Q6uwxLpMhNKlgBf6pcemvWaORxsW1zNF/YCY3jd5EftvnGBI+fxVwJ1CBxkVfxqCvm1lpZkbaoGmg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", "dev": true, "requires": { - "@jest/types": "^27.2.4", - "jest-regex-util": "^27.0.6", - "jest-snapshot": "^27.2.4" + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" } }, "jest-runner": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.2.4.tgz", - "integrity": "sha512-hIo5PPuNUyVDidZS8EetntuuJbQ+4IHWxmHgYZz9FIDbG2wcZjrP6b52uMDjAEQiHAn8yn8ynNe+TL8UuGFYKg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", "dev": true, "requires": { - "@jest/console": "^27.2.4", - "@jest/environment": "^27.2.4", - "@jest/test-result": "^27.2.4", - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-docblock": "^27.0.6", - "jest-environment-jsdom": "^27.2.4", - "jest-environment-node": "^27.2.4", - "jest-haste-map": "^27.2.4", - "jest-leak-detector": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-resolve": "^27.2.4", - "jest-runtime": "^27.2.4", - "jest-util": "^27.2.4", - "jest-worker": "^27.2.4", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "source-map-support": "^0.5.6", "throat": "^6.0.1" } }, "jest-runtime": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.2.4.tgz", - "integrity": "sha512-ICKzzYdjIi70P17MZsLLIgIQFCQmIjMFf+xYww3aUySiUA/QBPUTdUqo5B2eg4HOn9/KkUsV0z6GVgaqAPBJvg==", - "dev": true, - "requires": { - "@jest/console": "^27.2.4", - "@jest/environment": "^27.2.4", - "@jest/fake-timers": "^27.2.4", - "@jest/globals": "^27.2.4", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.2.4", - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/yargs": "^16.0.0", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "execa": "^5.0.0", - "exit": "^0.1.2", "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-mock": "^27.2.4", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.2.4", - "jest-snapshot": "^27.2.4", - "jest-util": "^27.2.4", - "jest-validate": "^27.2.4", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^16.2.0" - }, - "dependencies": { - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - } + "strip-bom": "^4.0.0" } }, "jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", "dev": true, "requires": { "@types/node": "*", - "graceful-fs": "^4.2.4" + "graceful-fs": "^4.2.9" } }, "jest-snapshot": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.2.4.tgz", - "integrity": "sha512-5DFxK31rYS8X8C6WXsFx8XxrxW3PGa6+9IrUcZdTLg1aEyXDGIeiBh4jbwvh655bg/9vTETbEj/njfZicHTZZw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", "dev": true, "requires": { "@babel/core": "^7.7.2", "@babel/generator": "^7.7.2", - "@babel/parser": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.2.4", - "graceful-fs": "^4.2.4", - "jest-diff": "^27.2.4", - "jest-get-type": "^27.0.6", - "jest-haste-map": "^27.2.4", - "jest-matcher-utils": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-resolve": "^27.2.4", - "jest-util": "^27.2.4", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", "natural-compare": "^1.4.0", - "pretty-format": "^27.2.4", + "pretty-format": "^27.5.1", "semver": "^7.3.2" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } } }, "jest-util": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.4.tgz", - "integrity": "sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, "requires": { - "@jest/types": "^27.2.4", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" - }, - "dependencies": { - "ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", - "dev": true - }, - "is-ci": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", - "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", - "dev": true, - "requires": { - "ci-info": "^3.1.1" - } - } } }, "jest-validate": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.4.tgz", - "integrity": "sha512-VMtbxbkd7LHnIH7PChdDtrluCFRJ4b1YV2YJzNwwsASMWftq/HgqiqjvptBOWyWOtevgO3f14wPxkPcLlVBRog==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", "dev": true, "requires": { - "@jest/types": "^27.2.4", + "@jest/types": "^27.5.1", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.0.6", + "jest-get-type": "^27.5.1", "leven": "^3.1.0", - "pretty-format": "^27.2.4" + "pretty-format": "^27.5.1" }, "dependencies": { "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true } } }, "jest-watcher": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.2.4.tgz", - "integrity": "sha512-LXC/0+dKxhK7cfF7reflRYlzDIaQE+fL4ynhKhzg8IMILNMuI4xcjXXfUJady7OR4/TZeMg7X8eHx8uan9vqaQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", "dev": true, "requires": { - "@jest/test-result": "^27.2.4", - "@jest/types": "^27.2.4", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.2.4", + "jest-util": "^27.5.1", "string-length": "^4.0.1" } }, "jest-worker": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.4.tgz", - "integrity": "sha512-Zq9A2Pw59KkVjBBKD1i3iE2e22oSjXhUKKuAK1HGX8flGwkm6NMozyEYzKd41hXc64dbd/0eWFeEEuxqXyhM+g==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "requires": { "@types/node": "*", @@ -14579,12 +12695,6 @@ "esprima": "^4.0.0" } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true - }, "jsdom": { "version": "16.7.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", @@ -14618,27 +12728,6 @@ "whatwg-url": "^8.5.0", "ws": "^7.4.6", "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } } }, "jsesc": { @@ -14652,17 +12741,11 @@ "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", "dev": true }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "optional": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "optional": true + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", @@ -14685,18 +12768,6 @@ "graceful-fs": "^4.1.6" } }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, "keyv": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", @@ -14747,14 +12818,19 @@ "type-check": "~0.3.2" } }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "lodash": { @@ -14767,6 +12843,12 @@ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, "lodash.set": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", @@ -14777,6 +12859,15 @@ "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==" }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, "lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", @@ -14791,12 +12882,6 @@ "yallist": "^3.0.2" } }, - "lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true - }, "make-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", @@ -14822,20 +12907,14 @@ "dev": true }, "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, "requires": { - "tmpl": "1.0.x" + "tmpl": "1.0.5" } }, - "marked": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/marked/-/marked-2.1.3.tgz", - "integrity": "sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA==", - "dev": true - }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -14848,11 +12927,6 @@ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, - "micro-base": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/micro-base/-/micro-base-0.10.2.tgz", - "integrity": "sha512-lqqJrT7lfJtDmmiQ4zRLZuIJBk96t0RAc5pCrrWpL9zDeH5i/SUL85mku9HqzTI/OCZ8EQ3aicbMW+eK5Nyu5w==" - }, "micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", @@ -14864,16 +12938,16 @@ } }, "mime-db": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", - "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==" + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" }, "mime-types": { - "version": "2.1.32", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", - "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", "requires": { - "mime-db": "1.49.0" + "mime-db": "1.51.0" } }, "mimic-fn": { @@ -14888,9 +12962,9 @@ "dev": true }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "requires": { "brace-expansion": "^1.1.7" } @@ -14900,23 +12974,6 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "requires": { - "minipass": "^2.9.0" - } - }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -14937,23 +12994,10 @@ "resolved": "https://registry.npmjs.org/module-require/-/module-require-1.4.5.tgz", "integrity": "sha1-Yz3wgzRDya2FlvTELlI3NINVr4g=" }, - "moment": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" - }, - "moment-timezone": { - "version": "0.5.33", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.33.tgz", - "integrity": "sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w==", - "requires": { - "moment": ">= 2.9.0" - } - }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "mute-stream": { "version": "0.0.8", @@ -14983,11 +13027,6 @@ "requires": { "ms": "^2.1.1" } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" } } }, @@ -15003,9 +13042,9 @@ "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==" }, "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" }, "nock": { "version": "13.2.4", @@ -15016,28 +13055,8 @@ "json-stringify-safe": "^5.0.1", "lodash.set": "^4.3.2", "propagate": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, - "node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" - }, "node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -15067,70 +13086,6 @@ } } }, - "node-gyp": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", - "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", - "optional": true, - "requires": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "optional": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "optional": true, - "requires": { - "abbrev": "1" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "optional": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "optional": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, "node-gyp-build": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", @@ -15142,78 +13097,15 @@ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", "dev": true }, - "node-pre-gyp": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", - "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==", - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - }, - "nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "tar": { - "version": "4.4.19", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", - "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", - "requires": { - "chownr": "^1.1.4", - "fs-minipass": "^1.2.7", - "minipass": "^2.9.0", - "minizlib": "^1.3.3", - "mkdirp": "^0.5.5", - "safe-buffer": "^5.2.1", - "yallist": "^3.1.1" - } - } - } - }, "node-releases": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==" }, "nodejs-fs-utils": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/nodejs-fs-utils/-/nodejs-fs-utils-1.2.5.tgz", - "integrity": "sha512-QuIFfHWaQJhjmUnGSCq+knKrYL2Q8HJUNAzRk8qoHK+g0oKzq57MdB4tODIknclKII0oAO0kO1lDt8yLyLhsAQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/nodejs-fs-utils/-/nodejs-fs-utils-1.2.6.tgz", + "integrity": "sha512-uDIfV3Qvjrtis2jOhHYzvUTAReqtnBXCVm0efjAYDgrCgZZBDxMQcZE7SsDAui4zzQ7GpqYUFUwoOpOoQD4vpA==", "requires": { "module-require": "*" } @@ -15251,12 +13143,6 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -15294,29 +13180,6 @@ "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", "dev": true }, - "npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" - }, - "npm-packlist": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", - "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, "npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -15326,17 +13189,6 @@ "path-key": "^3.0.0" } }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, "nssocket": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz", @@ -15362,28 +13214,12 @@ "boolbase": "^1.0.0" } }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, "nwsapi": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", "dev": true }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -15418,15 +13254,6 @@ "mimic-fn": "^2.1.0" } }, - "onigasm": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/onigasm/-/onigasm-2.2.5.tgz", - "integrity": "sha512-F+th54mPc0l1lp1ZcFMyL/jTs2Tlq4SqIHKIXGZOR/VkHkF9A7Fr5rRr5+ZG/lWeRsyrClLYRq7s/yFQ/XhWCA==", - "dev": true, - "requires": { - "lru-cache": "^5.1.1" - } - }, "optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -15440,25 +13267,27 @@ "word-wrap": "~1.2.3" } }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, "p-cancelable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", @@ -15475,12 +13304,12 @@ } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" } }, "p-try": { @@ -15503,21 +13332,6 @@ "pac-resolver": "^5.0.0", "raw-body": "^2.2.0", "socks-proxy-agent": "5" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, "pac-resolver": { @@ -15540,14 +13354,6 @@ "registry-auth-token": "^4.0.0", "registry-url": "^5.0.0", "semver": "^6.2.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } } }, "pako": { @@ -15555,6 +13361,18 @@ "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, "parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", @@ -15571,9 +13389,9 @@ } }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, "path-is-absolute": { @@ -15597,28 +13415,29 @@ "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==" }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "optional": true - }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, "pidusage": { - "version": "2.0.21", - "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-2.0.21.tgz", - "integrity": "sha512-cv3xAQos+pugVX+BfXpHsbyz/dLzX+lr44zNMsYiGxUw+kV5sgQCIcLd1z+0vq+KyC7dJ+/ts2PsfgWfSC3WXA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-3.0.0.tgz", + "integrity": "sha512-8VJLToXhj+RYZGNVw8oxc7dS54iCQXUJ+MDFHezQ/fwF5B8W4OWodAMboc1wb08S/4LiHwAmkT4ohf/d3YPPsw==", "requires": { "safe-buffer": "^5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } } }, "pify": { @@ -15640,12 +13459,48 @@ "dev": true, "requires": { "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } } }, "pm2": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/pm2/-/pm2-5.1.1.tgz", - "integrity": "sha512-2Agpn2IVXOKu8kP+qaxKOvMLNtbZ6lY4bzKcEW2d2tw7O0lpNO7QvDayY4af+8U1+WCn90UjPK4q2wPFVHt/sA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/pm2/-/pm2-5.2.0.tgz", + "integrity": "sha512-PO5hMVhQ85cTszFM++6v07Me9hPJMkFbHjkFigtMMk+La8ty2wCi2dlBTeZYJDhPUSjK8Ccltpq2buNRcyMOTw==", "requires": { "@pm2/agent": "~2.0.0", "@pm2/io": "~5.0.0", @@ -15657,7 +13512,7 @@ "chokidar": "^3.5.1", "cli-tableau": "^2.0.0", "commander": "2.15.1", - "cron": "1.8.2", + "croner": "~4.1.92", "dayjs": "~1.8.25", "debug": "^4.3.1", "enquirer": "2.3.6", @@ -15665,7 +13520,7 @@ "fclone": "1.0.11", "mkdirp": "1.0.4", "needle": "2.4.0", - "pidusage": "2.0.21", + "pidusage": "~3.0", "pm2-axon": "~4.0.1", "pm2-axon-rpc": "~0.7.1", "pm2-deploy": "~1.0.2", @@ -15693,23 +13548,45 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "requires": { - "ms": "2.1.2" + "yallist": "^4.0.0" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } }, "sprintf-js": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } }, @@ -15724,23 +13601,10 @@ "escape-string-regexp": "^4.0.0" }, "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -15750,21 +13614,6 @@ "integrity": "sha512-FbLvW60w+vEyvMjP/xom2UPhUN/2bVpdtLfKJeYM3gwzYhoTEEChCOICfFzxkxuoEleOlnpjie+n1nue91bDQw==", "requires": { "debug": "^4.3.1" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, "pm2-deploy": { @@ -15797,19 +13646,19 @@ "tx2": "~1.0.4" }, "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "pidusage": { + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-2.0.21.tgz", + "integrity": "sha512-cv3xAQos+pugVX+BfXpHsbyz/dLzX+lr44zNMsYiGxUw+kV5sgQCIcLd1z+0vq+KyC7dJ+/ts2PsfgWfSC3WXA==", "optional": true, "requires": { - "ms": "2.1.2" + "safe-buffer": "^5.2.1" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "optional": true } } @@ -15836,12 +13685,11 @@ } }, "pretty-format": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.4.tgz", - "integrity": "sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, "requires": { - "@jest/types": "^27.2.4", "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" @@ -15860,17 +13708,6 @@ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, "promptly": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/promptly/-/promptly-2.2.0.tgz", @@ -15880,9 +13717,9 @@ } }, "prompts": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", - "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, "requires": { "kleur": "^3.0.3", @@ -15907,21 +13744,6 @@ "pac-proxy-agent": "^5.0.0", "proxy-from-env": "^1.0.0", "socks-proxy-agent": "^5.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, "proxy-from-env": { @@ -15933,7 +13755,7 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "devOptional": true + "dev": true }, "pstree.remy": { "version": "1.1.8", @@ -15955,7 +13777,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "devOptional": true + "dev": true }, "pupa": { "version": "2.1.1", @@ -15966,12 +13788,6 @@ "escape-goat": "^2.0.0" } }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "optional": true - }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -15979,12 +13795,12 @@ "dev": true }, "raw-body": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", - "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.3", + "bytes": "3.1.2", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" } @@ -15993,6 +13809,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -16011,7 +13828,17 @@ "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", "requires": { - "mute-stream": "~0.0.4" + "mute-stream": "~0.0.4" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, "readdirp": { @@ -16027,15 +13854,6 @@ "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==" }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, "regenerator-runtime": { "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", @@ -16089,57 +13907,6 @@ } } }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "optional": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "optional": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "optional": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - } - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -16154,30 +13921,16 @@ "debug": "^4.1.1", "module-details-from-path": "^1.0.3", "resolve": "^1.12.0" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "resolve-cwd": { @@ -16195,6 +13948,12 @@ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, + "resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true + }, "responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", @@ -16248,17 +14007,24 @@ "integrity": "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==" }, "rxjs": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.2.tgz", - "integrity": "sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", "requires": { "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } } }, "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safer-buffer": { "version": "2.1.2", @@ -16280,27 +14046,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, "semver-diff": { "version": "3.1.1", @@ -16309,25 +14057,12 @@ "dev": true, "requires": { "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } } }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "shallow-clone": { "version": "3.0.1", @@ -16353,37 +14088,15 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "shiki": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.9.6.tgz", - "integrity": "sha512-h2y5Uq9QEWsEmi97n+BOdPOVxkOUdVunl+jVIzU9EqJ6/QbIX+U6F7TsrWZQ2xqwPgvvQaC9r7/zeegi1b48dQ==", - "dev": true, - "requires": { - "json5": "^2.2.0", - "onigasm": "^2.2.5", - "vscode-textmate": "5.2.0" - } - }, "shimmer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" }, "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "sisteransi": { "version": "1.0.5", @@ -16403,12 +14116,12 @@ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" }, "socks": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", - "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", "requires": { "ip": "^1.1.5", - "smart-buffer": "^4.1.0" + "smart-buffer": "^4.2.0" } }, "socks-proxy-agent": { @@ -16419,35 +14132,29 @@ "agent-base": "^6.0.2", "debug": "4", "socks": "^2.3.3" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "sprintf-js": { @@ -16455,41 +14162,6 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, - "sqlite3": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.2.tgz", - "integrity": "sha512-1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA==", - "requires": { - "node-addon-api": "^3.0.0", - "node-gyp": "3.x", - "node-pre-gyp": "^0.11.0" - } - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "optional": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "dependencies": { - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true - } - } - }, "stack-utils": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", @@ -16508,9 +14180,24 @@ } }, "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } }, "string-length": { "version": "4.0.2", @@ -16523,21 +14210,21 @@ } }, "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "strip-bom": { @@ -16555,7 +14242,8 @@ "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "supports-color": { "version": "7.2.0", @@ -16575,6 +14263,11 @@ "supports-color": "^7.0.0" } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -16582,22 +14275,11 @@ "dev": true }, "systeminformation": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.8.0.tgz", - "integrity": "sha512-l4drbK2PtNynGKblaShY9hDLW/gg1zxUq2+Yk4gTyd6a2JUvFyTGP8PhHV9iOh+MzS25PQa8W1t0kvcIvr9n7Q==", + "version": "5.11.6", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.11.6.tgz", + "integrity": "sha512-7KBXgdnIDxABQ93w+GrPSrK/pup73+fM09VGka4A/+FhgzdlRY0JNGGDFmV8BHnFuzP9zwlI3n64yDbp7emasQ==", "optional": true }, - "tar": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", - "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", - "optional": true, - "requires": { - "block-stream": "*", - "fstream": "^1.0.12", - "inherits": "2" - } - }, "term-size": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", @@ -16670,9 +14352,9 @@ } }, "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, "touch": { "version": "3.1.0", @@ -16704,19 +14386,45 @@ } }, "ts-jest": { - "version": "27.0.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.5.tgz", - "integrity": "sha512-lIJApzfTaSSbtlksfFNHkWOzLJuuSm4faFAfo5kvzOiRAuoN4/eKxVJ2zEAho8aecE04qX6K1pAzfH5QHL1/8w==", + "version": "27.1.3", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz", + "integrity": "sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==", "dev": true, "requires": { "bs-logger": "0.x", "fast-json-stable-stringify": "2.x", "jest-util": "^27.0.0", "json5": "2.x", - "lodash": "4.x", + "lodash.memoize": "4.x", "make-error": "1.x", "semver": "7.x", "yargs-parser": "20.x" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } } }, "ts-node": { @@ -16734,9 +14442,9 @@ } }, "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" }, "tsutils": { "version": "3.21.0", @@ -16745,23 +14453,6 @@ "dev": true, "requires": { "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "optional": true, - "requires": { - "safe-buffer": "^5.0.1" } }, "tv4": { @@ -16775,9 +14466,9 @@ "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" }, "tx2": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tx2/-/tx2-1.0.4.tgz", - "integrity": "sha512-rU+y30nUY3PyIi+znvv74HzxlpULKwMPAyRK+YiCjvGkk3rY3fic3D6Z+avLpun3V5A6HFwPQ9JrBTMNEV/dxg==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tx2/-/tx2-1.0.5.tgz", + "integrity": "sha512-sJ24w0y03Md/bxzK4FU8J8JveYYUbSs2FViLJ2D/8bytSiyPRbuE3DyL/9UKYXTZlV3yXq0L8GLlhobTnekCVg==", "optional": true, "requires": { "json-stringify-safe": "^5.0.1" @@ -16807,9 +14498,9 @@ } }, "type-coverage-core": { - "version": "2.17.5", - "resolved": "https://registry.npmjs.org/type-coverage-core/-/type-coverage-core-2.17.5.tgz", - "integrity": "sha512-FfkH2kIgQkkgC47V2WHJZWBbjYjMw2ZpQRdRGTcMBAnkijmRCp9I1LpOuI+Gv4MDtniRLnkAo8htGGt2iExFgA==", + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/type-coverage-core/-/type-coverage-core-2.21.0.tgz", + "integrity": "sha512-VNC7Ig0KAzpYjWvxQ1SaMufEqSm4GPSsdVaCWA5fRHSjSvkXbPVK+C6H0lIq2t8brkrvnXk7iDs9g4sjux6JQw==", "dev": true, "requires": { "fast-glob": "3", @@ -16825,9 +14516,9 @@ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" }, "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==" }, "typedarray-to-buffer": { "version": "3.1.5", @@ -16837,65 +14528,10 @@ "is-typedarray": "^1.0.0" } }, - "typedoc": { - "version": "0.20.28", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.20.28.tgz", - "integrity": "sha512-8j0T8u9FuyDkoe+M/3cyoaGJSVgXCY9KwVoo7TLUnmQuzXwqH+wkScY530ZEdK6G39UZ2LFTYPIrL5eykWjx6A==", - "dev": true, - "requires": { - "colors": "^1.4.0", - "fs-extra": "^9.1.0", - "handlebars": "^4.7.7", - "lodash": "^4.17.21", - "lunr": "^2.3.9", - "marked": "^2.0.0", - "minimatch": "^3.0.0", - "progress": "^2.0.3", - "shelljs": "^0.8.4", - "shiki": "^0.9.2", - "typedoc-default-themes": "^0.12.7" - }, - "dependencies": { - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, - "typedoc-default-themes": { - "version": "0.12.10", - "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.12.10.tgz", - "integrity": "sha512-fIS001cAYHkyQPidWXmHuhs8usjP5XVJjWB8oZGqkTowZaz3v7g3KDZeeqE82FBrmkAnIBOY3jgy7lnPnqATbA==", - "dev": true - }, "typescript": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", - "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", + "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", "dev": true }, "typical": { @@ -16904,20 +14540,17 @@ "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==" }, "uglify-js": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.1.tgz", - "integrity": "sha512-JhS3hmcVaXlp/xSo3PKY5R0JqKs5M3IV+exdLHW99qKvKivPO4Z8qbej6mte17SOPqAOVMjt/XGgWacnFSzM3g==", + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.2.tgz", + "integrity": "sha512-peeoTk3hSwYdoc9nrdiEJk+gx1ALCtTjdYuKSXMTDqq7n1W7dHPqWDdSi+BPL0ni2YMeHD7hKUSdbj3TZauY2A==", "dev": true, "optional": true }, "undefsafe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", - "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", - "dev": true, - "requires": { - "debug": "^2.2.0" - } + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true }, "unique-string": { "version": "2.0.0", @@ -16979,15 +14612,6 @@ } } }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "optional": true, - "requires": { - "punycode": "^2.1.0" - } - }, "url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", @@ -16998,9 +14622,9 @@ } }, "utf-8-validate": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.8.tgz", - "integrity": "sha512-k4dW/Qja1BYDl2qD4tOMB9PFVha/UJtxTc1cXYOe3WwA/2m0Yn4qB7wLMpJyLJ/7DR0XnTut3HsCSzDT4ZvKgA==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", + "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", "requires": { "node-gyp-build": "^4.3.0" } @@ -17037,9 +14661,9 @@ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, "v8-to-istanbul": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz", - "integrity": "sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.1", @@ -17055,25 +14679,6 @@ } } }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "optional": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "optional": true - } - } - }, "vizion": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/vizion/-/vizion-2.2.1.tgz", @@ -17096,9 +14701,9 @@ } }, "vm2": { - "version": "3.9.8", - "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.8.tgz", - "integrity": "sha512-/1PYg/BwdKzMPo8maOZ0heT7DLI0DAFTm7YQaz/Lim9oIaFZsJs3EdtalvXuBfZwczNwsYhju75NW4d6E+4q+w==", + "version": "3.9.9", + "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.9.tgz", + "integrity": "sha512-xwTm7NLh/uOjARRBs8/95H0e8fT3Ukw5D/JJWhxMbhKzNh1Nu981jQKvkep9iKYNxzlVrdzD0mlBGkDKZWprlw==", "requires": { "acorn": "^8.7.0", "acorn-walk": "^8.2.0" @@ -17111,12 +14716,6 @@ } } }, - "vscode-textmate": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", - "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==", - "dev": true - }, "w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -17136,12 +14735,20 @@ } }, "walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, "requires": { - "makeerror": "1.0.x" + "makeerror": "1.0.12" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "requires": { + "defaults": "^1.0.3" } }, "webidl-conversions": { @@ -17161,6 +14768,21 @@ "typedarray-to-buffer": "^3.1.5", "utf-8-validate": "^5.0.2", "yaeti": "^0.0.6" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } } }, "whatwg-encoding": { @@ -17198,14 +14820,6 @@ "isexe": "^2.0.0" } }, - "wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, "widest-line": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", @@ -17255,9 +14869,9 @@ } }, "ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", "requires": {} }, "xdg-basedir": { @@ -17323,30 +14937,10 @@ "yargs-parser": "^21.0.0" }, "dependencies": { - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, "yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", "dev": true } } diff --git a/scripts/cli/package.json b/scripts/cli/package.json index ed6127330c..fe95dd83d5 100644 --- a/scripts/cli/package.json +++ b/scripts/cli/package.json @@ -20,64 +20,62 @@ "clean:all": "rm -rf ./node_modules package-lock.json ./dist ./docs", "tscov": "type-coverage --at-least 95", "tscov:d": "type-coverage --detail", - "refresh": "npm run clean:all && npm run install", + "refresh": "npm run clean:all && npm install", "publish-package": "npm run build && npm run publish", "docs": "typedoc src/tests src/helpers src/util --out dist/docs ", - "0_create_identities": "node ./dist/tests/0_create_identities.js", - "1_poly_transfer": "node ./dist/tests/1_poly_transfer.js", - "2_key_management": "node ./dist/tests/2_key_management.js", - "3_auth_join_did": "node ./dist/tests/3_auth_join_did.js", - "4_permission_management": "node ./dist/tests/4_permission_management.js", - "5_claim_management": "node ./dist/tests/5_claim_management.js", - "6_create_assets": "node ./dist/tests/6_create_assets.js", - "7_create_claim_compliance": "node ./dist/tests/7_create_claim_compliance.js", - "8_asset_minting": "node ./dist/tests/8_asset_minting.js", - "9_bridge_transfer": "node ./dist/tests/9_bridge_transfer.js", - "10_governance_management": "node ./dist/tests/10_governance_management.js", - "11_A_settlement": "node ./dist/tests/11_A_settlement.js", - "11_B_settlement": "node ./dist/tests/11_B_settlement.js", - "12_external_agents": "node ./dist/tests/12_external_agents.js", - "13_corporate_actions": "node ./dist/tests/13_corporate_actions.js", - "14_investment": "node ./dist/tests/14_investment.js", - "15_portfolio": "node ./dist/tests/15_portfolio.js", - "16_relayer": "node ./dist/tests/16_relayer.js", - "17_itn_rewards": "node ./dist/tests/17_itn_rewards.js", + "0_create_identities": "jest --runInBand 0_create_identities", + "1_poly_transfer": "jest --runInBand 1_poly_transfer", + "2_key_management": "jest --runInBand 2_key_management", + "3_auth_join_did": "jest --runInBand 3_auth_join_did", + "4_permission_management": "jest --runInBand 4_permission_management", + "5_claim_management": "jest --runInBand 5_claim_management", + "6_create_assets": "jest --runInBand 6_create_assets", + "7_create_claim_compliance": "jest --runInBand 7_create_claim_compliance", + "8_asset_minting": "jest --runInBand 8_asset_minting", + "9_bridge_transfer": "jest --runInBand 9_bridge_transfer", + "10_governance_management": "jest --runInBand 10_governance_management", + "11_A_settlement": "jest --runInBand 11_A_settlement", + "11_B_settlement": "jest --runInBand 11_B_settlement", + "12_external_agents": "jest --runInBand 12_external_agents", + "13_corporate_actions": "jest --runInBand 13_corporate_actions", + "14_investment": "jest --runInBand 14_investment", + "15_portfolio": "jest --runInBand 15_portfolio", + "16_relayer": "jest --runInBand 16_relayer", + "17_itn_rewards": "jest --runInBand 17_itn_rewards", "schema_test": "./util/schema_test.sh", "offchain_worker_test": "node ./dist/util/offchain_worker_test.js", "polyx_balances": "node ./util/userBalancePOLYX.js", - "test": "npm run clear_cache && jest --runInBand --silent && ./util/schema_test.sh", + "test": "jest --runInBand --silent && ./util/schema_test.sh", "clear_cache": "jest --clearCache" }, "author": "Polymath Network", "license": "UNLICENSED", "dependencies": { "@babel/plugin-proposal-class-properties": "^7.16.7", - "@polkadot/api": "7.7.1", + "@polkadot/api": "7.11.1", "@polkadot/util": "^8.3.3", "@polkadot/util-crypto": "^8.3.3", - "@types/sqlite3": "^3.1.7", "chai": "4.2.0", "chalk": "4.1.0", "clear": "0.1.0", - "cli-progress": "3.9.0", - "command-line-args": "5.1.1", - "commander": "7.0.0", - "crypto-random-string": "3.3.0", + "cli-progress": "3.10.0", + "command-line-args": "5.2.0", + "commander": "8.3.0", + "crypto-random-string": "4.0.0", "esm": "3.2.25", "export-to-csv": "^0.2.1", - "figlet": "1.5.0", - "fp-ts": "2.9.5", - "inquirer": "7.3.3", + "figlet": "1.5.2", + "fp-ts": "2.11.7", + "inquirer": "8.2.0", "minimist": "1.2.6", - "nodejs-fs-utils": "1.2.5", + "nodejs-fs-utils": "1.2.6", "path": "0.12.7", - "pm2": "^5.1.1", - "readline-sync": "1.4.10", - "sqlite3": "^5.0.2" + "pm2": "^5.1.2", + "readline-sync": "1.4.10" }, "devDependencies": { "@babel/plugin-transform-modules-commonjs": "7.14.5", - "@polkadot/typegen": "7.7.1", + "@polkadot/typegen": "7.11.1", "@types/chai": "4.2.15", "@types/clear": "0.1.1", "@types/figlet": "1.2.1", @@ -90,7 +88,6 @@ "ts-jest": "^27.0.5", "ts-node": "9.1.1", "type-coverage": "2.16.3", - "typedoc": "0.20.28", "typescript": "^4.3.5" } } diff --git a/scripts/cli/polymesh-meta.json b/scripts/cli/polymesh-meta.json index c12e065843..82c7d48868 100644 --- a/scripts/cli/polymesh-meta.json +++ b/scripts/cli/polymesh-meta.json @@ -1 +1 @@ -{"jsonrpc":"2.0","result":"0x6d6574610e550a000c1c73705f636f72651863727970746f2c4163636f756e7449643332000004000401205b75383b2033325d0000040000032000000008000800000503000c08306672616d655f73797374656d2c4163636f756e74496e666f0814496e64657801102c4163636f756e74446174610114001401146e6f6e6365100114496e646578000124636f6e73756d657273100120526566436f756e7400012470726f766964657273100120526566436f756e7400012c73756666696369656e7473100120526566436f756e740001106461746114012c4163636f756e74446174610000100000050500141064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e6365732c4163636f756e744461746100001001106672656518011c42616c616e6365000120726573657276656418011c42616c616e636500012c6d6973635f66726f7a656e18011c42616c616e63650001286665655f66726f7a656e18011c42616c616e636500001800000507001c0c346672616d655f737570706f72741c77656967687473405065724469737061746368436c6173730404540120000c01186e6f726d616c2001045400012c6f7065726174696f6e616c200104540001246d616e6461746f727920010454000020000005060024083c7072696d69746976655f74797065731048323536000004000401205b75383b2033325d00002800000208002c102873705f72756e74696d651c67656e6572696318646967657374184469676573740410486173680124000401106c6f67733001545665633c4469676573744974656d3c486173683e3e000030000002340034102873705f72756e74696d651c67656e6572696318646967657374284469676573744974656d0410486173680124011c3c4368616e67657354726965526f6f740400240110486173680002002850726552756e74696d650800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e00060024436f6e73656e7375730800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e000400105365616c0800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e000500444368616e676573547269655369676e616c04003c01444368616e676573547269655369676e616c000700144f74686572040028011c5665633c75383e0000006452756e74696d65456e7669726f6e6d656e745570646174656400080000380000030400000008003c102873705f72756e74696d651c67656e6572696318646967657374444368616e676573547269655369676e616c000104404e6577436f6e66696775726174696f6e04004001804f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e000000004004184f7074696f6e04045401440108104e6f6e6500000010536f6d650400440000010000440c1c73705f636f7265306368616e6765735f74726965604368616e67657354726965436f6e66696775726174696f6e000008013c6469676573745f696e74657276616c10010c7533320001346469676573745f6c6576656c7310010c7533320000480000024c004c08306672616d655f73797374656d2c4576656e745265636f7264080445015004540124000c01147068617365fd03011450686173650001146576656e7450010445000118746f70696373010401185665633c543e0000500c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d65144576656e7400019c1853797374656d04005401706672616d655f73797374656d3a3a4576656e743c52756e74696d653e0000001c496e6469636573040070017870616c6c65745f696e64696365733a3a4576656e743c52756e74696d653e0003002042616c616e636573040074017c70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d653e000500204964656e7469747904008c017c70616c6c65745f6964656e746974793a3a4576656e743c52756e74696d653e0007004c4364645365727669636550726f7669646572730400290101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365323e00080044506f6c796d657368436f6d6d69747465650400350101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365313e0009004c436f6d6d69747465654d656d626572736869700400490101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365313e000a0048546563686e6963616c436f6d6d69747465650400510101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365333e000b0070546563686e6963616c436f6d6d69747465654d656d626572736869700400590101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365333e000c004055706772616465436f6d6d69747465650400610101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365343e000d006855706772616465436f6d6d69747465654d656d626572736869700400690101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365343e000e00204d756c746953696704007101017c70616c6c65745f6d756c74697369673a3a4576656e743c52756e74696d653e000f001842726964676504007501017470616c6c65745f6272696467653a3a4576656e743c52756e74696d653e0010001c5374616b696e6704008901017870616c6c65745f7374616b696e673a3a4576656e743c52756e74696d653e001100204f6666656e63657304009d01015870616c6c65745f6f6666656e6365733a3a4576656e740012001c53657373696f6e0400a101015470616c6c65745f73657373696f6e3a3a4576656e740013001c4772616e6470610400a501015470616c6c65745f6772616e6470613a3a4576656e7400150020496d4f6e6c696e650400b901018070616c6c65745f696d5f6f6e6c696e653a3a4576656e743c52756e74696d653e001700105375646f0400dd01016c70616c6c65745f7375646f3a3a4576656e743c52756e74696d653e0019001441737365740400e101017070616c6c65745f61737365743a3a4576656e743c52756e74696d653e001a004c4361706974616c446973747269627574696f6e04003902018870616c6c65745f6361706974616c5f646973747269627574696f6e3a3a4576656e74001b0028436865636b706f696e7404005102016070616c6c65745f636865636b706f696e743a3a4576656e74001c0044436f6d706c69616e63654d616e6167657204007102018070616c6c65745f636f6d706c69616e63655f6d616e616765723a3a4576656e74001d003c436f72706f72617465416374696f6e0400a502017c70616c6c65745f636f72706f726174655f616374696f6e733a3a4576656e74001e003c436f72706f7261746542616c6c6f740400d902017870616c6c65745f636f72706f726174655f62616c6c6f743a3a4576656e74001f00105069707304001103016c70616c6c65745f706970733a3a4576656e743c52756e74696d653e00210024506f7274666f6c696f04005903015c70616c6c65745f706f7274666f6c696f3a3a4576656e740022002c50726f746f636f6c46656504006903018c70616c6c65745f70726f746f636f6c5f6665653a3a4576656e743c52756e74696d653e002300245363686564756c657204007103018070616c6c65745f7363686564756c65723a3a4576656e743c52756e74696d653e00240028536574746c656d656e7404007d03018470616c6c65745f736574746c656d656e743a3a4576656e743c52756e74696d653e00250028537461746973746963730400a903016070616c6c65745f737461746973746963733a3a4576656e740026000c53746f0400b503016870616c6c65745f73746f3a3a4576656e743c52756e74696d653e0027002054726561737572790400d103017c70616c6c65745f74726561737572793a3a4576656e743c52756e74696d653e0028001c5574696c6974790400d503015470616c6c65745f7574696c6974793a3a4576656e7400290010426173650400e503014870616c6c65745f626173653a3a4576656e74002a003845787465726e616c4167656e74730400ed03017470616c6c65745f65787465726e616c5f6167656e74733a3a4576656e74002b001c52656c617965720400f103017870616c6c65745f72656c617965723a3a4576656e743c52756e74696d653e002c001c526577617264730400f503017870616c6c65745f726577617264733a3a4576656e743c52756e74696d653e002d0024546573745574696c730400f903018470616c6c65745f746573745f7574696c733a3a4576656e743c52756e74696d653e00320000540c306672616d655f73797374656d1870616c6c6574144576656e740404540001184045787472696e7369635375636365737304005801304469737061746368496e666f000004b4416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e205c5b696e666f5c5d3c45787472696e7369634661696c6564080064013444697370617463684572726f7200005801304469737061746368496e666f00010490416e2065787472696e736963206661696c65642e205c5b6572726f722c20696e666f5c5d2c436f64655570646174656400020450603a636f6465602077617320757064617465642e284e65774163636f756e740400000130543a3a4163636f756e7449640003047841206e6577205c5b6163636f756e745c5d2077617320637265617465642e344b696c6c65644163636f756e740400000130543a3a4163636f756e74496400040468416e205c5b6163636f756e745c5d20776173207265617065642e2052656d61726b65640800000130543a3a4163636f756e744964000024011c543a3a48617368000504d04f6e206f6e2d636861696e2072656d61726b2068617070656e65642e205c5b6f726967696e2c2072656d61726b5f686173685c5d04704576656e7420666f72207468652053797374656d2070616c6c65742e580c346672616d655f737570706f72741c77656967687473304469737061746368496e666f00000c0118776569676874200118576569676874000114636c6173735c01344469737061746368436c617373000120706179735f6665656001105061797300005c0c346672616d655f737570706f72741c77656967687473344469737061746368436c61737300010c184e6f726d616c0000002c4f7065726174696f6e616c000100244d616e6461746f727900020000600c346672616d655f737570706f72741c7765696768747310506179730001080c596573000000084e6f0001000064082873705f72756e74696d653444697370617463684572726f72000120144f746865720000003043616e6e6f744c6f6f6b7570000100244261644f726967696e000200184d6f64756c65080114696e64657808010875380001146572726f72080108753800030044436f6e73756d657252656d61696e696e670004002c4e6f50726f76696465727300050014546f6b656e0400680128546f6b656e4572726f720006002841726974686d6574696304006c013c41726974686d657469634572726f720007000068082873705f72756e74696d6528546f6b656e4572726f7200011c1c4e6f46756e647300000020576f756c644469650001003042656c6f774d696e696d756d0002003043616e6e6f7443726561746500030030556e6b6e6f776e41737365740004001846726f7a656e0005002c556e737570706f72746564000600006c082873705f72756e74696d653c41726974686d657469634572726f7200010c24556e646572666c6f77000000204f766572666c6f77000100384469766973696f6e42795a65726f00020000700c3870616c6c65745f696e64696365731870616c6c6574144576656e7404045400010c34496e64657841737369676e65640800000130543a3a4163636f756e744964000010013c543a3a4163636f756e74496e646578000004b041206163636f756e7420696e646578207761732061737369676e65642e205c5b696e6465782c2077686f5c5d28496e6465784672656564040010013c543a3a4163636f756e74496e646578000104e441206163636f756e7420696e64657820686173206265656e2066726565642075702028756e61737369676e6564292e205c5b696e6465785c5d2c496e64657846726f7a656e080010013c543a3a4163636f756e74496e6465780000000130543a3a4163636f756e744964000204250141206163636f756e7420696e64657820686173206265656e2066726f7a656e20746f206974732063757272656e74206163636f756e742049442e205c5b696e6465782c2077686f5c5d0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909741064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e636573205261774576656e7404244163636f756e7449640100011c1c456e646f7765640c007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000018011c42616c616e63650000043101416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e205c5b6469642c206163636f756e742c20667265655f62616c616e63655d205472616e7366657218007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e74496400007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000018011c42616c616e636500008001304f7074696f6e3c4d656d6f3e000104f45472616e7366657220737563636565646564202866726f6d5f6469642c2066726f6d2c20746f5f6469642c20746f2c2076616c75652c206d656d6f292e2842616c616e636553657410007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000018011c42616c616e6365000204d4412062616c616e6365207761732073657420627920726f6f7420286469642c2077686f2c20667265652c207265736572766564292e504163636f756e7442616c616e63654275726e65640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e63650003083d01546865206163636f756e7420616e642074686520616d6f756e74206f6620756e6c6f636b65642062616c616e6365206f662074686174206163636f756e74207468617420776173206275726e65642e8c2863616c6c65722049642c2063616c6c6572206163636f756e742c20616d6f756e742920526573657276656408000001244163636f756e744964000018011c42616c616e63650004041901536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e205c5b77686f2c2076616c75655d28556e726573657276656408000001244163636f756e744964000018011c42616c616e63650005042101536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e205c5b77686f2c2076616c75655d4852657365727665526570617472696174656410000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000088011853746174757300060c4d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652ea05c5b66726f6d2c20746f2c2062616c616e63652c2064657374696e6174696f6e5f7374617475735d085c4576656e747320666f722074686973206d6f64756c652e007804184f7074696f6e040454017c0108104e6f6e6500000010536f6d6504007c00000100007c0c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f6964284964656e746974794964000004000401385b75383b20555549445f4c454e5d00008004184f7074696f6e04045401840108104e6f6e6500000010536f6d650400840000010000841064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e636573104d656d6f000004000401205b75383b2033325d00008814346672616d655f737570706f72741874726169747318746f6b656e73106d6973633442616c616e63655374617475730001081046726565000000205265736572766564000100008c1064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479205261774576656e7408244163636f756e7449640100184d6f6d656e740120014c28446964437265617465640c007c01284964656e74697479496400000001244163636f756e74496400009001705665633c5365636f6e646172794b65793c4163636f756e7449643e3e000004ac4449442c207072696d617279206b6579206163636f756e742049442c207365636f6e64617279206b657973485365636f6e646172794b657973416464656408007c01284964656e74697479496400009001705665633c5365636f6e646172794b65793c4163636f756e7449643e3e000104344449442c206e6577206b657973505365636f6e646172794b65797352656d6f76656408007c01284964656e7469747949640000f001645665633c5369676e61746f72793c4163636f756e7449643e3e000204784449442c20746865206b657973207468617420676f742072656d6f766564285369676e65724c65667408007c01284964656e74697479496400009801505369676e61746f72793c4163636f756e7449643e000304ac41207369676e6572206c656674207468656972206964656e746974792e20286469642c207369676e657229785365636f6e646172794b65795065726d697373696f6e735570646174656410007c01284964656e746974794964000094015c5365636f6e646172794b65793c4163636f756e7449643e00009c012c5065726d697373696f6e7300009c012c5065726d697373696f6e7300040405014449442c2075706461746564207365636f6e64617279206b65792c2070726576696f7573207065726d697373696f6e732c206e6577207065726d697373696f6e73445072696d6172794b6579557064617465640c007c01284964656e74697479496400000001244163636f756e74496400000001244163636f756e7449640005049c4449442c206f6c64207072696d617279206b6579206163636f756e742049442c206e657720494428436c61696d416464656408007c01284964656e7469747949640000f401344964656e74697479436c61696d0006042c4449442c20636c61696d7330436c61696d5265766f6b656408007c01284964656e7469747949640000f401344964656e74697479436c61696d000704704449442c20436c61696d547970652c20436c61696d204973737565724841737365744469645265676973746572656408007c01284964656e7469747949640000a401185469636b65720008042441737365742044494448417574686f72697a6174696f6e416464656418007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e00000d0101444f7074696f6e3c4163636f756e7449643e000020010c753634000011010170417574686f72697a6174696f6e446174613c4163636f756e7449643e0000f801384f7074696f6e3c4d6f6d656e743e000908604e657720617574686f72697a6174696f6e2061646465642e310128617574686f72697365645f62792c207461726765745f6469642c207461726765745f6b65792c20617574685f69642c20617574686f72697a6174696f6e5f646174612c206578706972792950417574686f72697a6174696f6e5265766f6b65640c007801484f7074696f6e3c4964656e7469747949643e00000d0101444f7074696f6e3c4163636f756e7449643e000020010c753634000a08a0417574686f72697a6174696f6e207265766f6b65642062792074686520617574686f72697a65722eb828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e52656a65637465640c007801484f7074696f6e3c4964656e7469747949643e00000d0101444f7074696f6e3c4163636f756e7449643e000020010c753634000b08d8417574686f72697a6174696f6e2072656a65637465642062792074686520757365722077686f2077617320617574686f72697a65642eb828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e436f6e73756d65640c007801484f7074696f6e3c4964656e7469747949643e00000d0101444f7074696f6e3c4163636f756e7449643e000020010c753634000c085c417574686f72697a6174696f6e20636f6e73756d65642eb828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f696429704f6666436861696e417574686f72697a6174696f6e5265766f6b656408007c01284964656e74697479496400009801505369676e61746f72793c4163636f756e7449643e000d08a44f66662d636861696e20417574686f72697a6174696f6e20686173206265656e207265766f6b65642e7028546172676574204964656e746974792c205369676e61746f72792988436464526571756972656d656e74466f725072696d6172794b65795570646174656404001d010110626f6f6c000e040d0143444420726571756972656d656e7420666f72207570646174696e67207072696d617279206b6579206368616e6765642e20286e65775f726571756972656d656e742950436464436c61696d73496e76616c69646174656408007c01284964656e74697479496400002001184d6f6d656e74000f08410143444420636c61696d732067656e65726174656420627920604964656e74697479496460202861204344442050726f7669646572292068617665206265656e20696e76616c6964617465642066726f6d24604d6f6d656e74602e4c5365636f6e646172794b65797346726f7a656e04007c01284964656e746974794964001004c4416c6c205365636f6e64617279206b657973206f6620746865206964656e74697479204944206172652066726f7a656e2e545365636f6e646172794b657973556e66726f7a656e04007c01284964656e746974794964001104cc416c6c205365636f6e64617279206b657973206f6620746865206964656e746974792049442061726520756e66726f7a656e2e584d6f636b496e766573746f725549444372656174656408007c01284964656e74697479496400002101012c496e766573746f725569640012046c4d6f636b656420496e766573746f7255696420637265617465642e085c4576656e747320666f722074686973206d6f64756c652e0090000002940094104c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65790c617069305365636f6e646172794b657904244163636f756e7449640100000801187369676e65729801505369676e61746f72793c4163636f756e7449643e00012c7065726d697373696f6e739c012c5065726d697373696f6e730000980c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579245369676e61746f727904244163636f756e74496401000108204964656e7469747904007c01284964656e7469747949640000001c4163636f756e7404000001244163636f756e744964000100009c0c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65792c5065726d697373696f6e7300000c01146173736574a0014041737365745065726d697373696f6e7300012465787472696e736963b4015045787472696e7369635065726d697373696f6e73000124706f7274666f6c696fd80150506f7274666f6c696f5065726d697373696f6e730000a00c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101a4010c1457686f6c650000001454686573650400ac012c42547265655365743c413e000100184578636570740400ac012c42547265655365743c413e00020000a40c4c706f6c796d6573685f7072696d697469766573187469636b6572185469636b657200000400a801405b75383b205449434b45525f4c454e5d0000a80000030c0000000800ac0420425472656553657404045401a4000400b0000000b0000002a400b40c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101b8010c1457686f6c650000001454686573650400d0012c42547265655365743c413e000100184578636570740400d0012c42547265655365743c413e00020000b80c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65794450616c6c65745065726d697373696f6e73000008012c70616c6c65745f6e616d65bc012850616c6c65744e616d65000148646973706174636861626c655f6e616d6573c00144446973706174636861626c654e616d65730000bc084c706f6c796d6573685f7072696d6974697665732850616c6c65744e616d650000040028011c5665633c75383e0000c00c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101c4010c1457686f6c650000001454686573650400c8012c42547265655365743c413e000100184578636570740400c8012c42547265655365743c413e00020000c4084c706f6c796d6573685f7072696d69746976657340446973706174636861626c654e616d650000040028011c5665633c75383e0000c80420425472656553657404045401c4000400cc000000cc000002c400d00420425472656553657404045401b8000400d4000000d4000002b800d80c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101dc010c1457686f6c650000001454686573650400e8012c42547265655365743c413e000100184578636570740400e8012c42547265655365743c413e00020000dc0c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f69642c506f7274666f6c696f4964000008010c6469647c01284964656e7469747949640001106b696e64e00134506f7274666f6c696f4b696e640000e00c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f696434506f7274666f6c696f4b696e640001081c44656661756c7400000010557365720400e4013c506f7274666f6c696f4e756d62657200010000e40c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f69643c506f7274666f6c696f4e756d6265720000040020010c7536340000e80420425472656553657404045401dc000400ec000000ec000002dc00f00000029800f40c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d344964656e74697479436c61696d0000140130636c61696d5f6973737565727c01284964656e74697479496400013469737375616e63655f646174652001184d6f6d656e740001406c6173745f7570646174655f646174652001184d6f6d656e74000118657870697279f801384f7074696f6e3c4d6f6d656e743e000114636c61696dfc0114436c61696d0000f804184f7074696f6e04045401200108104e6f6e6500000010536f6d650400200000010000fc0c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d14436c61696d000130284163637265646974656404000101011453636f706500000024416666696c6961746504000101011453636f7065000100244275794c6f636b757004000101011453636f70650002002853656c6c4c6f636b757004000101011453636f706500030050437573746f6d657244756544696c6967656e63650400050101144364644964000400404b6e6f77596f7572437573746f6d657204000101011453636f7065000500304a7572697364696374696f6e08000901012c436f756e747279436f646500000101011453636f7065000600204578656d7074656404000101011453636f70650007001c426c6f636b656404000101011453636f706500080048496e766573746f72556e697175656e6573730c000101011453636f706500007c011c53636f706549640000050101144364644964000900184e6f44617461000a0050496e766573746f72556e697175656e65737356320400050101144364644964000b000001010c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d1453636f706500010c204964656e7469747904007c01284964656e746974794964000000185469636b65720400a401185469636b657200010018437573746f6d040028011c5665633c75383e0002000005010c4c706f6c796d6573685f7072696d697469766573186364645f6964144364644964000004000401205b75383b2033325d000009010c4c706f6c796d6573685f7072696d697469766573306a7572697364696374696f6e2c436f756e747279436f64650001e90308414600000008415800010008414c00020008445a00030008415300040008414400050008414f000600084149000700084151000800084147000900084152000a0008414d000b00084157000c00084155000d00084154000e0008415a000f0008425300100008424800110008424400120008424200130008425900140008424500150008425a00160008424a00170008424d00180008425400190008424f001a00084241001b00084257001c00084256001d00084252001e00085647001f0008494f00200008424e002100084247002200084246002300084249002400084b4800250008434d002600084341002700084356002800084b59002900084346002a00085444002b0008434c002c0008434e002d0008484b002e00084d4f002f0008435800300008434300310008434f003200084b4d00330008434700340008434400350008434b003600084352003700084349003800084852003900084355003a00084359003b0008435a003c0008444b003d0008444a003e0008444d003f0008444f00400008454300410008454700420008535600430008475100440008455200450008454500460008455400470008464b00480008464f00490008464a004a00084649004b00084652004c00084746004d00085046004e00085446004f0008474100500008474d00510008474500520008444500530008474800540008474900550008475200560008474c005700084744005800084750005900084755005a00084754005b00084747005c0008474e005d00084757005e00084759005f0008485400600008484d00610008564100620008484e00630008485500640008495300650008494e006600084944006700084952006800084951006900084945006a0008494d006b0008494c006c00084954006d00084a4d006e00084a50006f00084a45007000084a4f007100084b5a007200084b45007300084b49007400084b50007500084b52007600084b57007700084b47007800084c41007900084c56007a00084c42007b00084c53007c00084c52007d00084c59007e00084c49007f00084c54008000084c55008100084d4b008200084d47008300084d57008400084d59008500084d56008600084d4c008700084d54008800084d48008900084d51008a00084d52008b00084d55008c00085954008d00084d58008e0008464d008f00084d44009000084d43009100084d4e009200084d45009300084d53009400084d41009500084d5a009600084d4d009700084e41009800084e52009900084e50009a00084e4c009b0008414e009c00084e43009d00084e5a009e00084e49009f00084e4500a000084e4700a100084e5500a200084e4600a300084d5000a400084e4f00a500084f4d00a60008504b00a70008505700a80008505300a90008504100aa0008504700ab0008505900ac0008504500ad0008504800ae0008504e00af0008504c00b00008505400b10008505200b20008514100b30008524500b40008524f00b50008525500b60008525700b70008424c00b80008534800b900084b4e00ba00084c4300bb00084d4600bc0008504d00bd0008564300be0008575300bf0008534d00c00008535400c10008534100c20008534e00c30008525300c40008534300c50008534c00c60008534700c70008534b00c80008534900c90008534200ca0008534f00cb00085a4100cc0008475300cd0008535300ce0008455300cf00084c4b00d00008534400d10008535200d20008534a00d30008535a00d40008534500d50008434800d60008535900d70008545700d80008544a00d90008545a00da0008544800db0008544c00dc0008544700dd0008544b00de0008544f00df0008545400e00008544e00e10008545200e20008544d00e30008544300e40008545600e50008554700e60008554100e70008414500e80008474200e90008555300ea0008554d00eb0008555900ec0008555a00ed0008565500ee0008564500ef0008564e00f00008564900f10008574600f20008454800f30008594500f400085a4d00f500085a5700f60008425100f70008435700f80008535800f900000d0104184f7074696f6e04045401000108104e6f6e6500000010536f6d65040000000001000011010c4c706f6c796d6573685f7072696d69746976657334617574686f72697a6174696f6e44417574686f72697a6174696f6e4461746104244163636f756e74496401000128604174746573745072696d6172794b6579526f746174696f6e04007c01284964656e74697479496400000040526f746174655072696d6172794b6579000100385472616e736665725469636b65720400a401185469636b6572000200444164644d756c74695369675369676e657204000001244163636f756e744964000300585472616e7366657241737365744f776e6572736869700400a401185469636b6572000400304a6f696e4964656e7469747904009c012c5065726d697373696f6e7300050040506f7274666f6c696f437573746f64790400dc012c506f7274666f6c696f49640006002c4265636f6d654167656e740800a401185469636b65720000150101284167656e7447726f75700007004c41646452656c61796572506179696e674b65790c000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e63650008006c526f746174655072696d6172794b6579546f5365636f6e6461727904009c012c5065726d697373696f6e730009000015010c4c706f6c796d6573685f7072696d697469766573146167656e74284167656e7447726f75700001141046756c6c00000018437573746f6d04001901011041474964000100284578636570744d65746100020034506f6c796d657368563143414100030034506f6c796d65736856315049410004000019010c4c706f6c796d6573685f7072696d697469766573146167656e7410414749640000040010010c75333200001d01000005000021010c4c706f6c796d6573685f7072696d697469766573186364645f69642c496e766573746f7255696400000400250101205b75383b2031365d0000250100000310000000080029011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449012d01011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400003101013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e002d01083070616c6c65745f67726f757024496e7374616e6365320000000031010000027c003501084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d6265720110044901390101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800003101013c5665633c4964656e7469747949643e00003101013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e74697479496400002401104861736800003d0101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e003901084070616c6c65745f636f6d6d697474656524496e7374616e636531000000003d010418526573756c74080454014101044501640108084f6b04004101000000000c45727204006400000100004101000004000045010864706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573284d61796265426c6f636b042c426c6f636b4e756d6265720110010810536f6d65040010012c426c6f636b4e756d626572000000104e6f6e650001000049011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449014d01011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400003101013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e004d01083070616c6c65745f67726f757024496e7374616e636531000000005101084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d6265720110044901550101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800003101013c5665633c4964656e7469747949643e00003101013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e74697479496400002401104861736800003d0101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e005501084070616c6c65745f636f6d6d697474656524496e7374616e6365330000000059011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449015d01011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400003101013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e005d01083070616c6c65745f67726f757024496e7374616e636533000000006101084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d6265720110044901650101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800003101013c5665633c4964656e7469747949643e00003101013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e74697479496400002401104861736800003d0101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e006501084070616c6c65745f636f6d6d697474656524496e7374616e6365340000000069011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449016d01011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400003101013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e006d01083070616c6c65745f67726f757024496e7374616e636534000000007101083c70616c6c65745f6d756c7469736967205261774576656e7404244163636f756e744964010001303c4d756c74695369674372656174656414007c01284964656e74697479496400000001244163636f756e74496400000001244163636f756e7449640000f001645665633c5369676e61746f72793c4163636f756e7449643e3e000020010c753634000008ac4576656e7420656d6974746564206166746572206372656174696f6e206f662061206d756c74697369672e6501417267756d656e74733a2063616c6c6572204449442c206d756c746973696720616464726573732c207369676e657273202870656e64696e6720617070726f76616c292c207369676e6174757265732072657175697265642e3450726f706f73616c41646465640c007c01284964656e74697479496400000001244163636f756e744964000020010c753634000108984576656e7420656d697474656420616674657220616464696e6720612070726f706f73616c2eb4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e4050726f706f73616c457865637574656410007c01284964656e74697479496400000001244163636f756e744964000020010c75363400001d010110626f6f6c000208a84576656e7420656d6974746564207768656e20612070726f706f73616c2069732065786563757465642ed4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442c20726573756c742e4c4d756c74695369675369676e657241646465640c007c01284964656e74697479496400000001244163636f756e74496400009801505369676e61746f72793c4163636f756e7449643e000308a04576656e7420656d6974746564207768656e2061207369676e61746f72792069732061646465642eb8417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206164646564207369676e65722e604d756c74695369675369676e6572417574686f72697a65640c007c01284964656e74697479496400000001244163636f756e74496400009801505369676e61746f72793c4163636f756e7449643e00040809014576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f727920697320617574686f72697a656420746f2062652061646465642ecc417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722e544d756c74695369675369676e657252656d6f7665640c007c01284964656e74697479496400000001244163636f756e74496400009801505369676e61746f72793c4163636f756e7449643e000508cc4576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f72792069732072656d6f7665642ec0417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2072656d6f766564207369676e65722e844d756c74695369675369676e61747572657352657175697265644368616e6765640c007c01284964656e74697479496400000001244163636f756e744964000020010c75363400060801014576656e7420656d6974746564207768656e20746865206e756d626572206f66207265717569726564207369676e617475726573206973206368616e6765642ee4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206e6577207265717569726564207369676e6174757265732e4050726f706f73616c417070726f76656410007c01284964656e74697479496400000001244163636f756e74496400009801505369676e61746f72793c4163636f756e7449643e000020010c753634000708b44576656e7420656d6974746564207768656e207468652070726f706f73616c2067657420617070726f7665642e0101417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e5450726f706f73616c52656a656374696f6e566f746510007c01284964656e74697479496400000001244163636f756e74496400009801505369676e61746f72793c4163636f756e7449643e000020010c7536340008080d014576656e7420656d6974746564207768656e206120766f7465206973206361737420696e206661766f72206f662072656a656374696e6720612070726f706f73616c2e0101417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e4050726f706f73616c52656a65637465640c007c01284964656e74697479496400000001244163636f756e744964000020010c753634000908a84576656e7420656d6974746564207768656e20612070726f706f73616c2069732072656a65637465642eb4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e5c50726f706f73616c457865637574696f6e4661696c6564040064013444697370617463684572726f72000a04e44576656e7420656d6974746564207768656e207468657265277320616e206572726f7220696e2070726f706f73616c20657865637574696f6e405363686564756c696e674661696c6564040064013444697370617463684572726f72000b04745363686564756c696e67206f662070726f706f73616c206661696c732e085c4576656e747320666f722074686973206d6f64756c652e007501083470616c6c65745f627269646765205261774576656e7408244163636f756e74496401002c426c6f636b4e756d6265720110014044436f6e74726f6c6c65724368616e67656408007c01284964656e74697479496400000001244163636f756e74496400000490436f6e6669726d6174696f6e206f662061207369676e657220736574206368616e67652e3041646d696e4368616e67656408007c01284964656e74697479496400000001244163636f756e74496400010474436f6e6669726d6174696f6e206f662041646d696e206368616e67652e3c54696d656c6f636b4368616e67656408007c01284964656e746974794964000010012c426c6f636b4e756d626572000204a0436f6e6669726d6174696f6e206f662064656661756c742074696d656c6f636b206368616e67652e1c4272696467656408007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e0003041d01436f6e6669726d6174696f6e206f6620504f4c59582075706772616465206f6e20506f6c796d6573682066726f6d20504f4c5920746f6b656e73206f6e20457468657265756d2e1846726f7a656e04007c01284964656e746974794964000404904e6f74696669636174696f6e206f6620667265657a696e6720746865206272696467652e20556e66726f7a656e04007c01284964656e746974794964000504984e6f74696669636174696f6e206f6620756e667265657a696e6720746865206272696467652e2046726f7a656e547808007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e0006049c4e6f74696669636174696f6e206f6620667265657a696e672061207472616e73616374696f6e2e28556e66726f7a656e547808007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e000704a44e6f74696669636174696f6e206f6620756e667265657a696e672061207472616e73616374696f6e2e3c4578656d70746564557064617465640c007c01284964656e74697479496400007c01284964656e74697479496400001d010110626f6f6c000804c44578656d7074696f6e20737461747573206f6620616e206964656e7469747920686173206265656e20757064617465642e484272696467654c696d6974557064617465640c007c01284964656e746974794964000018011c42616c616e6365000010012c426c6f636b4e756d62657200090478427269646765206c696d697420686173206265656e20757064617465642e2854787348616e646c656404007d0101985665633c284163636f756e7449642c207533322c2048616e646c65645478537461747573293e000a086101416e206576656e7420656d6974746564206166746572206120766563746f72206f66207472616e73616374696f6e732069732068616e646c65642e2054686520706172616d65746572206973206120766563746f72206f6651017475706c6573206f6620726563697069656e74206163636f756e742c20697473206e6f6e63652c20616e642074686520737461747573206f66207468652070726f636573736564207472616e73616374696f6e2e4442726964676554785363686564756c65640c007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e000010012c426c6f636b4e756d626572000b0450427269646765205478205363686564756c65642e5842726964676554785363686564756c654661696c65640c007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e000028011c5665633c75383e000c04744661696c656420746f207363686564756c65204272696467652054782e40467265657a6541646d696e416464656408007c01284964656e74697479496400000001244163636f756e744964000d048841206e657720667265657a652061646d696e20686173206265656e2061646465642e48467265657a6541646d696e52656d6f76656408007c01284964656e74697479496400000001244163636f756e744964000e04804120667265657a652061646d696e20686173206265656e2072656d6f7665642e24547852656d6f76656408007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e000f049c4e6f74696669636174696f6e206f662072656d6f76696e672061207472616e73616374696f6e2e085c4576656e747320666f722074686973206d6f64756c652e007901083470616c6c65745f627269646765204272696467655478041c4163636f756e740100001001146e6f6e636510010c753332000124726563697069656e7400011c4163636f756e74000118616d6f756e7418011c42616c616e636500011c74785f686173682401104832353600007d0100000281010081010000040c00108501008501083470616c6c65745f6272696467653c48616e646c656454785374617475730001081c53756363657373000000144572726f72040028011c5665633c75383e000100008901083870616c6c65745f7374616b696e67205261774576656e74081c42616c616e63650118244163636f756e74496401000144244572615061796f75740c00100120457261496e646578000018011c42616c616e6365000018011c42616c616e636500000c550154686520657261207061796f757420686173206265656e207365743b207468652066697273742062616c616e6365206973207468652076616c696461746f722d7061796f75743b20746865207365636f6e64206973c07468652072656d61696e6465722066726f6d20746865206d6178696d756d20616d6f756e74206f66207265776172642ea85c5b6572615f696e6465782c2076616c696461746f725f7061796f75742c2072656d61696e6465725c5d185265776172640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e63650001043901546865207374616b657220686173206265656e207265776172646564206279207468697320616d6f756e742e205c5b73746173685f6964656e746974792c2073746173682c20616d6f756e745c5d14536c61736808000001244163636f756e744964000018011c42616c616e636500020821014f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e545c5b76616c696461746f722c20616d6f756e745c5d684f6c64536c617368696e675265706f7274446973636172646564040010013053657373696f6e496e6465780003081901416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c648c6e6f742062652070726f6365737365642e205c5b73657373696f6e5f696e6465785c5d3c5374616b696e67456c656374696f6e04008d01013c456c656374696f6e436f6d70757465000404f041206e657720736574206f66207374616b6572732077617320656c656374656420776974682074686520676976656e205c5b636f6d707574655c5d2e38536f6c7574696f6e53746f72656404008d01013c456c656374696f6e436f6d70757465000504150141206e657720736f6c7574696f6e20666f7220746865207570636f6d696e6720656c656374696f6e20686173206265656e2073746f7265642e205c5b636f6d707574655c5d18426f6e6465640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000610e4416e206163636f756e742068617320626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d004d014e4f54453a2054686973206576656e74206973206f6e6c7920656d6974746564207768656e2066756e64732061726520626f6e64656420766961206120646973706174636861626c652e204e6f7461626c792c210169742077696c6c206e6f7420626520656d697474656420666f72207374616b696e672072657761726473207768656e20746865792061726520616464656420746f207374616b652e20556e626f6e6465640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000704ec416e206163636f756e742068617320756e626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d244e6f6d696e617465640c007c01284964656e74697479496400000001244163636f756e7449640000910101385665633c4163636f756e7449643e0008048855736572206861732075706461746564207468656972206e6f6d696e6174696f6e732457697468647261776e08000001244163636f756e744964000018011c42616c616e63650009085901416e206163636f756e74206861732063616c6c6564206077697468647261775f756e626f6e6465646020616e642072656d6f76656420756e626f6e64696e67206368756e6b7320776f727468206042616c616e636560ac66726f6d2074686520756e6c6f636b696e672071756575652e205c5b73746173682c20616d6f756e745c5d645065726d697373696f6e65644964656e74697479416464656408007c01284964656e74697479496400007c01284964656e746974794964000a08ec416e20444944206861732069737375656420612063616e6469646163792e2053656520746865207472616e73616374696f6e20666f722077686f2e8c4743206964656e74697479202c2056616c696461746f722773206964656e746974792e6c5065726d697373696f6e65644964656e7469747952656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000b08e854686520676976656e206d656d626572207761732072656d6f7665642e2053656520746865207472616e73616374696f6e20666f722077686f2e8c4743206964656e74697479202c2056616c696461746f722773206964656e746974792e54496e76616c6964617465644e6f6d696e61746f72730c007c01284964656e74697479496400000001244163636f756e7449640000910101385665633c4163636f756e7449643e000c081d0152656d6f766520746865206e6f6d696e61746f72732066726f6d207468652076616c6964206e6f6d696e61746f7273207768656e2074686572652043444420657870697265642e9443616c6c65722c205374617368206163636f756e744964206f66206e6f6d696e61746f727350436f6d6d697373696f6e436170557064617465640c007c01284964656e74697479496400009501011c50657262696c6c00009501011c50657262696c6c000d08805768656e20636f6d6d697373696f6e206361702067657420757064617465642e58286f6c642076616c75652c206e65772076616c7565296c4d696e696d756d426f6e645468726573686f6c645570646174656408007801484f7074696f6e3c4964656e7469747949643e000018011c42616c616e6365000e04ac4d696e20626f6e64207468726573686f6c6420776173207570646174656420286e65772076616c7565292e885265776172645061796d656e745363686564756c696e67496e7465727275707465640c000001244163636f756e7449640000100120457261496e646578000064013444697370617463684572726f72000f04cc5768656e207363686564756c696e67206f6620726577617264207061796d656e74732067657420696e7465727275707465642e64536c617368696e67416c6c6f776564466f724368616e676564040099010138536c617368696e675377697463680010049055706461746520666f722077686f6d2062616c616e63652067657420736c61736865642e085c4576656e747320666f722074686973206d6f64756c652e008d01083870616c6c65745f7374616b696e673c456c656374696f6e436f6d7075746500010c1c4f6e436861696e000000185369676e656400010020556e7369676e6564000200009101000002000095010c3473705f61726974686d65746963287065725f7468696e67731c50657262696c6c0000040010010c75333200009901083870616c6c65745f7374616b696e6738536c617368696e6753776974636800010c2456616c696461746f720000005456616c696461746f72416e644e6f6d696e61746f72000100104e6f6e65000200009d010c3c70616c6c65745f6f6666656e6365731870616c6c6574144576656e740001041c4f6666656e63650800250101104b696e6400002801384f706171756554696d65536c6f7400000c5101546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e643501286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e4c5c5b6b696e642c2074696d65736c6f745c5d2e04304576656e747320747970652ea1010c3870616c6c65745f73657373696f6e1870616c6c6574144576656e74000104284e657753657373696f6e040010013053657373696f6e496e64657800000849014e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e7420697320746865205c5b73657373696f6e5f696e6465785c5d2c206e6f74207468659c626c6f636b206e756d626572206173207468652074797065206d6967687420737567676573742e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909a5010c3870616c6c65745f6772616e6470611870616c6c6574144576656e7400010c384e6577417574686f7269746965730400a9010134417574686f726974794c697374000004d44e657720617574686f726974792073657420686173206265656e206170706c6965642e205c5b617574686f726974795f7365745c5d185061757365640001049843757272656e7420617574686f726974792073657420686173206265656e207061757365642e1c526573756d65640002049c43757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909a901000002ad0100ad0100000408b1012000b1010c4c73705f66696e616c6974795f6772616e6470610c617070185075626c696300000400b501013c656432353531393a3a5075626c69630000b5010c1c73705f636f72651c65643235353139185075626c6963000004000401205b75383b2033325d0000b9010c4070616c6c65745f696d5f6f6e6c696e651870616c6c6574144576656e7404045400010c4448656172746265617452656365697665640400bd010138543a3a417574686f726974794964000004010141206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f72697479496460205c5b617574686f726974795f69645c5d1c416c6c476f6f64000104d041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2c536f6d654f66666c696e650400c501016c5665633c4964656e74696669636174696f6e5475706c653c543e3e000204390141742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e652076616c696461746f722077617320666f756e6420746f206265205c5b6f66666c696e655c5d2e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909bd01104070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139185075626c696300000400c101013c737232353531393a3a5075626c69630000c1010c1c73705f636f72651c73723235353139185075626c6963000004000401205b75383b2033325d0000c501000002c90100c9010000040800cd0100cd01083870616c6c65745f7374616b696e67204578706f7375726508244163636f756e74496401001c42616c616e63650118000c0114746f74616cd101011c42616c616e636500010c6f776ed101011c42616c616e63650001186f7468657273d50101ac5665633c496e646976696475616c4578706f737572653c4163636f756e7449642c2042616c616e63653e3e0000d1010000061800d501000002d90100d901083870616c6c65745f7374616b696e6748496e646976696475616c4578706f7375726508244163636f756e74496401001c42616c616e636501180008010c77686f0001244163636f756e74496400011476616c7565d101011c42616c616e63650000dd01082c70616c6c65745f7375646f205261774576656e7404244163636f756e7449640100010c14537564696404003d0101384469737061746368526573756c740000048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d284b65794368616e67656404000001244163636f756e744964000104fc546865205c5b7375646f65725c5d206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e285375646f4173446f6e6504003d0101384469737061746368526573756c740002048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d085c4576656e747320666f722074686973206d6f64756c652e00e1011064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473146173736574205261774576656e7408184d6f6d656e740120244163636f756e74496401000158205472616e7366657214007c01284964656e7469747949640000a401185469636b65720000dc012c506f7274666f6c696f49640000dc012c506f7274666f6c696f4964000018011c42616c616e6365000008744576656e7420666f72207472616e73666572206f6620746f6b656e732edc63616c6c6572204449442c207469636b65722c2066726f6d20706f7274666f6c696f2c20746f20706f7274666f6c696f2c2076616c75651849737375656418007c01284964656e7469747949640000a401185469636b657200007c01284964656e746974794964000018011c42616c616e63650000e501014046756e64696e67526f756e644e616d65000018011c42616c616e636500010870456d6974207768656e20746f6b656e7320676574206973737565642e750163616c6c6572204449442c207469636b65722c2062656e6566696369617279204449442c2076616c75652c2066756e64696e6720726f756e642c20746f74616c2069737375656420696e20746869732066756e64696e6720726f756e642052656465656d656410007c01284964656e7469747949640000a401185469636b657200007c01284964656e746974794964000018011c42616c616e636500020878456d6974207768656e20746f6b656e73206765742072656465656d65642e9063616c6c6572204449442c207469636b65722c202066726f6d204449442c2076616c75653041737365744372656174656418007c01284964656e7469747949640000a401185469636b657200001d010110626f6f6c0000e901012441737365745479706500007c01284964656e74697479496400001d010110626f6f6c000308804576656e7420666f72206372656174696f6e206f66207468652061737365742e950163616c6c6572204449442f206f776e6572204449442c207469636b65722c2064697669736962696c6974792c20617373657420747970652c2062656e6566696369617279204449442c2064697361626c6520696e766573746f7220756e697175656e657373484964656e74696669657273557064617465640c007c01284964656e7469747949640000a401185469636b65720000f10101505665633c41737365744964656e7469666965723e000408d44576656e7420656d6974746564207768656e20616e7920746f6b656e206964656e746966696572732061726520757064617465642e0d0163616c6c6572204449442c207469636b65722c206120766563746f72206f6620286964656e74696669657220747970652c206964656e7469666965722076616c7565294c44697669736962696c6974794368616e6765640c007c01284964656e7469747949640000a401185469636b657200001d010110626f6f6c000508844576656e7420666f72206368616e676520696e2064697669736962696c6974792e8063616c6c6572204449442c207469636b65722c2064697669736962696c697479405472616e73666572576974684461746118007c01284964656e7469747949640000a401185469636b657200007c01284964656e74697479496400007c01284964656e746974794964000018011c42616c616e6365000028011c5665633c75383e0006083501416e206164646974696f6e616c206576656e7420746f205472616e736665723b20656d6974746564207768656e20607472616e736665725f776974685f64617461602069732063616c6c65642ec863616c6c657220444944202c207469636b65722c2066726f6d204449442c20746f204449442c2076616c75652c20646174612849734973737561626c650800a401185469636b657200001d010110626f6f6c0007085069735f6973737561626c652829206f75747075749c7469636b65722c2072657475726e2076616c7565202874727565206966206973737561626c6529405469636b6572526567697374657265640c007c01284964656e7469747949640000a401185469636b65720000f801384f7074696f6e3c4d6f6d656e743e0008087c456d6974207768656e207469636b657220697320726567697374657265642eec63616c6c657220444944202f207469636b6572206f776e6572206469642c207469636b65722c207469636b6572206f776e65722c20657870697279445469636b65725472616e736665727265640c007c01284964656e7469747949640000a401185469636b657200007c01284964656e74697479496400090880456d6974207768656e207469636b6572206973207472616e736665727265642ed063616c6c657220444944202f207469636b6572207472616e7366657272656420746f204449442c207469636b65722c2066726f6d6441737365744f776e6572736869705472616e736665727265640c007c01284964656e7469747949640000a401185469636b657200007c01284964656e746974794964000a08a4456d6974207768656e20746f6b656e206f776e657273686970206973207472616e736665727265642ef463616c6c657220444944202f20746f6b656e206f776e657273686970207472616e7366657272656420746f204449442c207469636b65722c2066726f6d2c417373657446726f7a656e08007c01284964656e7469747949640000a401185469636b6572000b08a4416e206576656e7420656d6974746564207768656e20616e2061737365742069732066726f7a656e2e78506172616d657465723a2063616c6c6572204449442c207469636b65722e344173736574556e66726f7a656e08007c01284964656e7469747949640000a401185469636b6572000c08ac416e206576656e7420656d6974746564207768656e20616e20617373657420697320756e66726f7a656e2e78506172616d657465723a2063616c6c6572204449442c207469636b65722e30417373657452656e616d65640c007c01284964656e7469747949640000a401185469636b657200000102012441737365744e616d65000d08a4416e206576656e7420656d6974746564207768656e206120746f6b656e2069732072656e616d65642ebc506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720746f6b656e206e616d652e3c46756e64696e67526f756e645365740c007c01284964656e7469747949640000a401185469636b65720000e501014046756e64696e67526f756e644e616d65000e081101416e206576656e74206361727279696e6720746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e64206f662061207469636b65722ecc506172616d65746572733a2063616c6c6572204449442c207469636b65722c2066756e64696e6720726f756e64206e616d652e34446f63756d656e74416464656410007c01284964656e7469747949640000a401185469636b6572000005020128446f63756d656e744964000009020120446f63756d656e74000f048c41206e657720646f63756d656e7420617474616368656420746f20616e2061737365743c446f63756d656e7452656d6f7665640c007c01284964656e7469747949640000a401185469636b6572000005020128446f63756d656e744964001004804120646f63756d656e742072656d6f7665642066726f6d20616e20617373657440457874656e73696f6e52656d6f7665640c007c01284964656e7469747949640000a401185469636b657200000001244163636f756e744964001108604120657874656e73696f6e20676f742072656d6f7665642e7463616c6c6572204449442c207469636b65722c204163636f756e74496450436c61737369635469636b6572436c61696d65640c007c01284964656e7469747949640000a401185469636b657200003502013c457468657265756d4164647265737300120435014120506f6c796d61746820436c617373696320746f6b656e2077617320636c61696d656420616e64207472616e7366657272656420746f2061206e6f6e2d73797374656d61746963204449442e48436f6e74726f6c6c65725472616e7366657210007c01284964656e7469747949640000a401185469636b65720000dc012c506f7274666f6c696f4964000018011c42616c616e6365001308b44576656e7420666f72207768656e206120666f72636564207472616e736665722074616b657320706c6163652e150163616c6c6572204449442f20636f6e74726f6c6c6572204449442c207469636b65722c20506f7274666f6c696f206f6620746f6b656e20686f6c6465722c2076616c75652e54437573746f6d4173736574547970654578697374730c007c01284964656e7469747949640000ed010144437573746f6d4173736574547970654964000028011c5665633c75383e001408b04120637573746f6d206173736574207479706520616c726561647920657869737473206f6e2d636861696e2e310163616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e64437573746f6d417373657454797065526567697374657265640c007c01284964656e7469747949640000ed010144437573746f6d4173736574547970654964000028011c5665633c75383e001508b04120637573746f6d2061737365742074797065207761732072656769737465726564206f6e2d636861696e2e310163616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e085c4576656e747320666f722074686973206d6f64756c652e00e5010c4c706f6c796d6573685f7072696d6974697665731461737365744046756e64696e67526f756e644e616d650000040028011c5665633c75383e0000e9010c4c706f6c796d6573685f7072696d6974697665731461737365742441737365745479706500012c30457175697479436f6d6d6f6e0000003c45717569747950726566657272656400010024436f6d6d6f646974790002002c4669786564496e636f6d6500030010524549540004001046756e6400050054526576656e7565536861726541677265656d656e74000600445374727563747572656450726f64756374000700284465726976617469766500080018437573746f6d0400ed010144437573746f6d417373657454797065496400090028537461626c65436f696e000a0000ed010c4c706f6c796d6573685f7072696d69746976657314617373657444437573746f6d41737365745479706549640000040010010c7533320000f101000002f50100f5010c4c706f6c796d6573685f7072696d6974697665734061737365745f6964656e7469666965723c41737365744964656e7469666965720001101443555349500400f901011c5b75383b20395d0000001043494e530400f901011c5b75383b20395d000100104953494e0400a801205b75383b2031325d0002000c4c45490400fd0101205b75383b2032305d00030000f901000003090000000800fd0100000314000000080001020c4c706f6c796d6573685f7072696d6974697665731461737365742441737365744e616d650000040028011c5665633c75383e000005020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7428446f63756d656e7449640000040010010c753332000009020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7420446f63756d656e74000014010c7572690d02012c446f63756d656e74557269000130636f6e74656e745f6861736811020130446f63756d656e74486173680001106e616d6529020130446f63756d656e744e616d65000120646f635f747970652d0201504f7074696f6e3c446f63756d656e74547970653e00012c66696c696e675f64617465f801384f7074696f6e3c4d6f6d656e743e00000d020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e742c446f63756d656e745572690000040028011c5665633c75383e000011020c4c706f6c796d6573685f7072696d69746976657334646f63756d656e745f6861736830446f63756d656e7448617368000124104e6f6e6500000010483531320400150201205b75383b2036345d00010010483338340400190201205b75383b2034385d000200104833323004001d0201205b75383b2034305d000300104832353604000401205b75383b2033325d00040010483232340400210201205b75383b2032385d00050010483139320400250201205b75383b2032345d00060010483136300400fd0101205b75383b2032305d00070010483132380400250101205b75383b2031365d00080000150200000340000000080019020000033000000008001d0200000328000000080021020000031c0000000800250200000318000000080029020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7430446f63756d656e744e616d650000040028011c5665633c75383e00002d0204184f7074696f6e0404540131020108104e6f6e6500000010536f6d6504003102000001000031020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7430446f63756d656e74547970650000040028011c5665633c75383e000035020c4c706f6c796d6573685f7072696d69746976657320657468657265756d3c457468657265756d4164647265737300000400fd0101205b75383b2032305d000039020c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e144576656e740001101c437265617465640c003d0201204576656e7444696400004102011043414964000049020130446973747269627574696f6e000010b841206361706974616c20646973747269627574696f6e2c20776974682064657461696c7320696e636c756465642c31017761732063726561746564206279207468652044494420287065726d697373696f6e6564206167656e742920666f7220746865204341206964656e746966696564206279206043414964602e00a8284167656e74204449442c20434127732049442c20646973747269627574696f6e2064657461696c73293842656e65666974436c61696d656418003d0201204576656e7444696400003d0201204576656e7444696400004102011043414964000049020130446973747269627574696f6e000018011c42616c616e636500004d02010c54617800010c51014120746f6b656e20686f6c64657227732062656e65666974206f662061206361706974616c20646973747269627574696f6e20666f722074686520676976656e206043414964602077617320636c61696d65642e0091012843616c6c6572204449442c20486f6c6465722f436c61696d616e74204449442c20434127732049442c207570646174656420646973747269627574696f6e2064657461696c732c2044494427732062656e656669742c20444944277320746178202529245265636c61696d65640c003d0201204576656e7444696400004102011043414964000018011c42616c616e636500020c9853746174732066726f6d2060707573685f62656e65666974602077617320656d69747465642e001501284167656e74204449442c20434127732049442c206d61782072657175657374656420444944732c2070726f63657373656420444944732c206661696c65642044494473291c52656d6f76656408003d0201204576656e744469640000410201104341496400030c8c41206361706974616c20646973747269627574696f6e207761732072656d6f7665642e0050284167656e74204449442c204341277320494429085c4576656e747320666f722074686973206d6f64756c652e003d020c4c706f6c796d6573685f7072696d697469766573286576656e745f6f6e6c79244576656e744f6e6c79040454017c0004007c01045400004102086070616c6c65745f636f72706f726174655f616374696f6e73104341496400000801187469636b6572a401185469636b65720001206c6f63616c5f6964450201244c6f63616c4341496400004502086070616c6c65745f636f72706f726174655f616374696f6e73244c6f63616c434149640000040010010c753332000049020c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e30446973747269627574696f6e000020011066726f6ddc012c506f7274666f6c696f496400012063757272656e6379a401185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e636500012472656d61696e696e6718011c42616c616e63650001247265636c61696d65641d010110626f6f6c0001287061796d656e745f61742001184d6f6d656e74000128657870697265735f6174f801384f7074696f6e3c4d6f6d656e743e00004d020c3473705f61726974686d65746963287065725f7468696e67731c5065726d696c6c0000040010010c753332000051021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e74144576656e7400011044436865636b706f696e74437265617465641400550201404f7074696f6e3c4576656e744469643e0000a401185469636b6572000059020130436865636b706f696e744964000018011c42616c616e636500002001184d6f6d656e7400000c644120636865636b706f696e742077617320637265617465642e001d012863616c6c6572204449442c207469636b65722c20636865636b706f696e742049442c20746f74616c20737570706c792c20636865636b706f696e742074696d657374616d7029844d6178696d756d5363686564756c6573436f6d706c65786974794368616e67656408007c01284964656e746974794964000020010c75363400010c2901546865206d6178696d756d20636f6d706c657869747920666f7220616e20617262697472617279207469636b65722773207363686564756c652073657420776173206368616e6765642e0064284743204449442c20746865206e6577206d6178696d756d293c5363686564756c65437265617465640c003d0201204576656e744469640000a401185469636b657200005d02013853746f7265645363686564756c6500020c884120636865636b706f696e74207363686564756c652077617320637265617465642e00782863616c6c6572204449442c207469636b65722c207363686564756c65293c5363686564756c6552656d6f7665640c007c01284964656e7469747949640000a401185469636b657200005d02013853746f7265645363686564756c6500030c884120636865636b706f696e74207363686564756c65207761732072656d6f7665642e00782863616c6c6572204449442c207469636b65722c207363686564756c6529085c4576656e747320666f722074686973206d6f64756c652e00550204184f7074696f6e040454013d020108104e6f6e6500000010536f6d6504003d02000001000059020c4c706f6c796d6573685f7072696d6974697665732063616c656e64617230436865636b706f696e7449640000040020010c75363400005d021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e743853746f7265645363686564756c6500001001207363686564756c6561020148436865636b706f696e745363686564756c6500010869646d0201285363686564756c65496400010861742001184d6f6d656e7400012472656d61696e696e6710010c753332000061020c4c706f6c796d6573685f7072696d6974697665732063616c656e64617248436865636b706f696e745363686564756c65000008011473746172742001184d6f6d656e74000118706572696f646502013843616c656e646172506572696f64000065020c4c706f6c796d6573685f7072696d6974697665732063616c656e6461723843616c656e646172506572696f640000080110756e69746902013043616c656e646172556e6974000118616d6f756e7420010c753634000069020c4c706f6c796d6573685f7072696d6974697665732063616c656e6461723043616c656e646172556e697400011c185365636f6e64000000184d696e75746500010010486f75720002000c446179000300105765656b000400144d6f6e74680005001059656172000600006d021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e74285363686564756c6549640000040020010c75363400007102086470616c6c65745f636f6d706c69616e63655f6d616e61676572144576656e7400012470436f6d706c69616e6365526571756972656d656e74437265617465640c007c01284964656e7469747949640000a401185469636b6572000075020154436f6d706c69616e6365526571756972656d656e74000008cc456d6974746564207768656e206e657720636f6d706c69616e636520726571756972656d656e7420697320637265617465642eb02863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e70436f6d706c69616e6365526571756972656d656e7452656d6f7665640c007c01284964656e7469747949640000a401185469636b6572000010010c753332000108c4456d6974746564207768656e206120636f6d706c69616e636520726571756972656d656e742069732072656d6f7665642e942863616c6c6572204449442c205469636b65722c20726571756972656d656e745f6964292e5c4173736574436f6d706c69616e63655265706c616365640c007c01284964656e7469747949640000a401185469636b65720000a10201685665633c436f6d706c69616e6365526571756972656d656e743e000208b4456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206973207265706c616365642ed4506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720617373657420636f6d706c69616e63652e504173736574436f6d706c69616e6365526573657408007c01284964656e7469747949640000a401185469636b6572000308d8456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206f662061207469636b65722069732072657365742e542863616c6c6572204449442c205469636b6572292e584173736574436f6d706c69616e6365526573756d656408007c01284964656e7469747949640000a401185469636b65720004080101456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b6572206765747320726573756d652e542863616c6c6572204449442c205469636b6572292e544173736574436f6d706c69616e636550617573656408007c01284964656e7469747949640000a401185469636b65720005080101456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b65722067657473207061757365642e542863616c6c6572204449442c205469636b6572292e70436f6d706c69616e6365526571756972656d656e744368616e6765640c007c01284964656e7469747949640000a401185469636b6572000075020154436f6d706c69616e6365526571756972656d656e74000608e0456d6974746564207768656e20636f6d706c69616e636520726571756972656d656e7420676574206d6f6469666965642f6368616e67652eb02863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e785472757374656444656661756c74436c61696d49737375657241646465640c007c01284964656e7469747949640000a401185469636b6572000091020134547275737465644973737565720007081501456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b657220676574732061646465642ea82863616c6c6572204449442c205469636b65722c2041646465642054727573746564497373756572292e805472757374656444656661756c74436c61696d49737375657252656d6f7665640c007c01284964656e7469747949640000a401185469636b657200007c01284964656e7469747949640008081901456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b6572206765742072656d6f7665642eb02863616c6c6572204449442c205469636b65722c2052656d6f7665642054727573746564497373756572292e085c4576656e747320666f722074686973206d6f64756c652e0075020c4c706f6c796d6573685f7072696d69746976657348636f6d706c69616e63655f6d616e6167657254436f6d706c69616e6365526571756972656d656e7400000c014473656e6465725f636f6e646974696f6e73790201385665633c436f6e646974696f6e3e00014c72656365697665725f636f6e646974696f6e73790201385665633c436f6e646974696f6e3e000108696410010c753332000079020000027d02007d020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e24436f6e646974696f6e0000080138636f6e646974696f6e5f7479706581020134436f6e646974696f6e5479706500011c697373756572738d0201485665633c547275737465644973737565723e000081020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e34436f6e646974696f6e5479706500011424497350726573656e740400fc0114436c61696d000000204973416273656e740400fc0114436c61696d0001001c4973416e794f660400850201285665633c436c61696d3e0002002049734e6f6e654f660400850201285665633c436c61696d3e0003002849734964656e746974790400890201385461726765744964656e74697479000400008502000002fc0089020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e385461726765744964656e746974790001083445787465726e616c4167656e7400000020537065636966696304007c01284964656e746974794964000100008d0200000291020091020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e345472757374656449737375657200000801186973737565727c01284964656e74697479496400012c747275737465645f666f729502012854727573746564466f72000095020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e2854727573746564466f720001080c416e790000002053706563696669630400990201385665633c436c61696d547970653e0001000099020000029d02009d020c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d24436c61696d54797065000130284163637265646974656400000024416666696c69617465000100244275794c6f636b75700002002853656c6c4c6f636b757000030050437573746f6d657244756544696c6967656e6365000400404b6e6f77596f7572437573746f6d6572000500304a7572697364696374696f6e000600204578656d707465640007001c426c6f636b656400080048496e766573746f72556e697175656e657373000900184e6f54797065000a0050496e766573746f72556e697175656e6573735632000b0000a102000002750200a502086070616c6c65745f636f72706f726174655f616374696f6e73144576656e740001245c4d617844657461696c734c656e6774684368616e67656408007c01284964656e746974794964000010010c753332000008d4546865206d6178696d756d206c656e677468206f66206064657461696c736020696e20627974657320776173206368616e6765642e50284743204449442c206e6577206c656e677468297844656661756c745461726765744964656e7469746965734368616e6765640c007c01284964656e7469747949640000a401185469636b65720000a90201405461726765744964656e746974696573000108ec54686520736574206f662064656661756c7420605461726765744964656e7469746965736020666f722061207469636b6572206368616e6765642ea4284167656e74204449442c205469636b65722c204e6577205461726765744964656e746974696573297044656661756c7457697468686f6c64696e675461784368616e6765640c007c01284964656e7469747949640000a401185469636b657200004d02010c546178000208c45468652064656661756c742077697468686f6c64696e672074617820666f722061207469636b6572206368616e6765642e74284167656e74204449442c205469636b65722c204e657720546178292e6044696457697468686f6c64696e675461784368616e67656410007c01284964656e7469747949640000a401185469636b657200007c01284964656e7469747949640000b102012c4f7074696f6e3c5461783e000308ec5468652077697468686f6c64696e672074617820737065636966696320746f20612044494420666f722061207469636b6572206368616e6765642ea0284167656e74204449442c205469636b65722c205461786564204449442c204e657720546178292e384341415472616e736665727265640c007c01284964656e7469747949640000a401185469636b657200007c01284964656e7469747949640004086c41206e65772044494420776173206d61646520746865204341412e8c284e657720434141204449442c205469636b65722c204e65772043414120444944292e2c4341496e6974696174656410003d0201204576656e74446964000041020110434149640000b502013c436f72706f72617465416374696f6e0000d1020124434144657461696c730005084c412043412077617320696e697469617465642ea8284167656e74204449442c2043412069642c207468652043412c207468652043412064657461696c73293443414c696e6b6564546f446f630c007c01284964656e746974794964000041020110434149640000d502013c5665633c446f63756d656e7449643e000608844120434120776173206c696e6b656420746f206120736574206f6620646f63732eac284167656e74204449442c2043412049642c204c697374206f6620646f63206964656e746966696572732924434152656d6f76656408003d0201204576656e74446964000041020110434149640007084441204341207761732072656d6f7665642e48284167656e74204449442c20434120496429445265636f7264446174654368616e6765640c003d0201204576656e74446964000041020110434149640000b502013c436f72706f72617465416374696f6e0008046c412043412773207265636f72642064617465206368616e6765642e085c4576656e747320666f722074686973206d6f64756c652e00a902086070616c6c65745f636f72706f726174655f616374696f6e73405461726765744964656e74697469657300000801286964656e7469746965733101013c5665633c4964656e7469747949643e00012474726561746d656e74ad02013c54617267657454726561746d656e740000ad02086070616c6c65745f636f72706f726174655f616374696f6e733c54617267657454726561746d656e740001081c496e636c7564650000001c4578636c75646500010000b10204184f7074696f6e040454014d020108104e6f6e6500000010536f6d6504004d020000010000b502086070616c6c65745f636f72706f726174655f616374696f6e733c436f72706f72617465416374696f6e00001801106b696e64b902011843414b696e640001246465636c5f646174652001184d6f6d656e7400012c7265636f72645f64617465bd0201484f7074696f6e3c5265636f7264446174653e00011c74617267657473a90201405461726765744964656e74697469657300015c64656661756c745f77697468686f6c64696e675f7461784d02010c54617800013c77697468686f6c64696e675f746178c90201585665633c284964656e7469747949642c20546178293e0000b902086070616c6c65745f636f72706f726174655f616374696f6e731843414b696e64000114485072656469637461626c6542656e6566697400000050556e7072656469637461626c6542656e65666974000100304973737565724e6f746963650002003852656f7267616e697a6174696f6e000300144f7468657200040000bd0204184f7074696f6e04045401c1020108104e6f6e6500000010536f6d650400c1020000010000c102086070616c6c65745f636f72706f726174655f616374696f6e73285265636f7264446174650000080110646174652001184d6f6d656e74000128636865636b706f696e74c50201304341436865636b706f696e740000c502086070616c6c65745f636f72706f726174655f616374696f6e73304341436865636b706f696e74000108245363686564756c656408006d0201285363686564756c654964000020010c753634000000204578697374696e67040059020130436865636b706f696e74496400010000c902000002cd0200cd02000004087c4d0200d102086070616c6c65745f636f72706f726174655f616374696f6e7324434144657461696c730000040028011c5665633c75383e0000d502000002050200d9020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74144576656e740001181c4372656174656414007c01284964656e746974794964000041020110434149640000dd02013c42616c6c6f7454696d6552616e67650000e102012842616c6c6f744d65746100001d010110626f6f6c00000c7c4120636f72706f726174652062616c6c6f742077617320637265617465642e001501284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e642c2042616c6c6f74206d657461646174612c2052435620656e61626c65643f2920566f7465436173740c007c01284964656e7469747949640000410201104341496400000103013c5665633c42616c6c6f74566f74653e00010c984120766f746520776173206361737420696e206120636f72706f726174652062616c6c6f742e006028766f746572204449442c20434149642c20566f746573293052616e67654368616e6765640c007c01284964656e746974794964000041020110434149640000dd02013c42616c6c6f7454696d6552616e676500020cd04120636f72706f726174652062616c6c6f74206368616e676564206974732073746172742f656e6420646174652072616e67652e0098284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e64292c4d6574614368616e6765640c007c01284964656e746974794964000041020110434149640000e102012842616c6c6f744d65746100030ca04120636f72706f726174652062616c6c6f74206368616e67656420697473206d657461646174612e0088284167656e74204449442c20434127732049442c204e6577206d6574616461746129285243564368616e6765640c007c01284964656e7469747949640000410201104341496400001d010110626f6f6c00040cac4120636f72706f726174652062616c6c6f74206368616e676564206974732052435620737570706f72742e0084284167656e74204449442c20434127732049442c204e657720737570706f7274291c52656d6f76656408003d0201204576656e744469640000410201104341496400050c7c4120636f72706f726174652062616c6c6f74207761732072656d6f7665642e0050284167656e74204449442c204341277320494429085c4576656e747320666f722074686973206d6f64756c652e00dd020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f743c42616c6c6f7454696d6552616e6765000008011473746172742001184d6f6d656e7400010c656e642001184d6f6d656e740000e1020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742842616c6c6f744d65746100000801147469746c65e502012c42616c6c6f745469746c6500011c6d6f74696f6e73e902012c5665633c4d6f74696f6e3e0000e5020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c42616c6c6f745469746c650000040028011c5665633c75383e0000e902000002ed0200ed020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74184d6f74696f6e00000c01147469746c65f102012c4d6f74696f6e5469746c65000124696e666f5f6c696e6bf50201384d6f74696f6e496e666f4c696e6b00011c63686f69636573f90201405665633c43686f6963655469746c653e0000f1020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c4d6f74696f6e5469746c650000040028011c5665633c75383e0000f5020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74384d6f74696f6e496e666f4c696e6b0000040028011c5665633c75383e0000f902000002fd0200fd020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c43686f6963655469746c650000040028011c5665633c75383e0000010300000205030005030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742842616c6c6f74566f74650000080114706f77657218011c42616c616e636500012066616c6c6261636b0903012c4f7074696f6e3c7531363e0000090304184f7074696f6e040454010d030108104e6f6e6500000010536f6d6504000d0300000100000d0300000504001103082c70616c6c65745f70697073205261774576656e7408244163636f756e74496401002c426c6f636b4e756d6265720110015050486973746f726963616c506970735072756e65640c007c01284964656e74697479496400001d010110626f6f6c00001d010110626f6f6c00000445015072756e696e6720486973746f726963616c205049507320697320656e61626c6564206f722064697361626c6564202863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293c50726f706f73616c4372656174656420007c01284964656e74697479496400001503014c50726f706f7365723c4163636f756e7449643e00001d0301145069704964000018011c42616c616e636500002103012c4f7074696f6e3c55726c3e0000290301584f7074696f6e3c5069704465736372697074696f6e3e00004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00003103013050726f706f73616c4461746100011498412050495020776173206d61646520776974682061206042616c616e636560207374616b652e00342320506172616d65746572733a00510143616c6c6572204449442c2050726f706f7365722c205049502049442c206465706f7369742c2055524c2c206465736372697074696f6e2c206578706972792074696d652c2070726f706f73616c20646174612e5050726f706f73616c5374617465557064617465640c007c01284964656e74697479496400001d030114506970496400003503013450726f706f73616c5374617465000204d854726967676572656420656163682074696d6520746865207374617465206f6620612070726f706f73616c20697320616d656e64656414566f74656414007c01284964656e74697479496400000001244163636f756e74496400001d030114506970496400001d010110626f6f6c000018011c42616c616e6365000304f8604163636f756e7449646020766f7465642060626f6f6c60206f6e207468652070726f706f73616c207265666572656e636564206279206050697049646024506970436c6f7365640c007c01284964656e74697479496400001d030114506970496400001d010110626f6f6c000404e850697020686173206265656e20636c6f7365642c20626f6f6c20696e6469636174657320776865746865722064617461206973207072756e656448457865637574696f6e5363686564756c65640c007c01284964656e74697479496400001d0301145069704964000010012c426c6f636b4e756d626572000504e0457865637574696f6e206f6620612050495020686173206265656e207363686564756c656420617420737065636966696320626c6f636b2e7444656661756c74456e6163746d656e74506572696f644368616e6765640c007c01284964656e746974794964000010012c426c6f636b4e756d626572000010012c426c6f636b4e756d626572000608d844656661756c7420656e6163746d656e7420706572696f642028696e20626c6f636b732920686173206265656e206368616e6765642e902863616c6c6572204449442c206f6c6420706572696f642c206e657720706572696f6429744d696e696d756d50726f706f73616c4465706f7369744368616e6765640c007c01284964656e746974794964000018011c42616c616e6365000018011c42616c616e63650007087c4d696e696d756d206465706f73697420616d6f756e74206d6f646966696564902863616c6c6572204449442c206f6c6420616d6f756e742c206e657720616d6f756e74295c50656e64696e675069704578706972794368616e6765640c007c01284964656e74697479496400004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e000808cc416d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020657870697265732e902863616c6c6572204449442c206f6c64206578706972792c206e65772065787069727929584d6178506970536b6970436f756e744368616e6765640c007c01284964656e7469747949640000080130536b6970706564436f756e740000080130536b6970706564436f756e74000908cc546865206d6178696d756d2074696d65732061205049502063616e20626520736b697070656420776173206368616e6765642e882863616c6c6572204449442c206f6c642076616c75652c206e65772076616c756529544163746976655069704c696d69744368616e6765640c007c01284964656e746974794964000010010c753332000010010c753332000a08b8546865206d6178696d756d206e756d626572206f6620616374697665205049507320776173206368616e6765642e882863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293850726f706f73616c526566756e640c007c01284964656e74697479496400001d0301145069704964000018011c42616c616e6365000b083c526566756e642070726f706f73616c482869642c20746f74616c20616d6f756e74293c536e617073686f74436c656172656408007c01284964656e746974794964000039030128536e617073686f744964000c046454686520736e617073686f742077617320636c65617265642e34536e617073686f7454616b656e0c007c01284964656e746974794964000039030128536e617073686f74496400003d03014c5665633c536e617073686f747465645069703e000d046441206e657720736e617073686f74207761732074616b656e2e28506970536b69707065640c007c01284964656e74697479496400001d03011450697049640000080130536b6970706564436f756e74000e08a0412050495020696e2074686520736e617073686f742071756575652077617320736b69707065642e802867635f6469642c207069705f69642c206e65775f736b69705f636f756e742958536e617073686f74526573756c7473456e616374656414007c01284964656e7469747949640000490301484f7074696f6e3c536e617073686f7449643e00004d0301685665633c2850697049642c20536b6970706564436f756e74293e0000550301285665633c50697049643e0000550301285665633c50697049643e000f083101526573756c74732028652e672e2c20617070726f7665642c2072656a65637465642c20616e6420736b6970706564292c207765726520656e616374656420666f7220736f6d6520504950732e51012867635f6469642c20736e617073686f745f69645f6f70742c20736b69707065645f706970735f776974685f6e65775f636f756e742c2072656a65637465645f706970732c20617070726f7665645f706970732964457865637574696f6e5363686564756c696e674661696c65640c007c01284964656e74697479496400001d0301145069704964000010012c426c6f636b4e756d6265720010040d015363686564756c696e67206f66207468652050495020666f7220657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e3c4578706972795363686564756c65640c007c01284964656e74697479496400001d0301145069704964000010012c426c6f636b4e756d626572001104985468652050495020686173206265656e207363686564756c656420666f72206578706972792e584578706972795363686564756c696e674661696c65640c007c01284964656e74697479496400001d0301145069704964000010012c426c6f636b4e756d62657200120401015363686564756c696e67206f66207468652050495020666f7220657870697279206661696c656420696e20746865207363686564756c65722070616c6c65742e64457865637574696f6e43616e63656c6c696e674661696c656404001d0301145069704964001304f043616e63656c6c696e67207468652050495020657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e085c4576656e747320666f722074686973206d6f64756c652e001503082c70616c6c65745f706970732050726f706f73657204244163636f756e7449640100010824436f6d6d756e69747904000001244163636f756e74496400000024436f6d6d6974746565040019030124436f6d6d6974746565000100001903082c70616c6c65745f7069707324436f6d6d697474656500010824546563686e6963616c0000001c55706772616465000100001d03082c70616c6c65745f706970731450697049640000040010010c7533320000210304184f7074696f6e0404540125030108104e6f6e6500000010536f6d650400250300000100002503082c70616c6c65745f706970730c55726c0000040028011c5665633c75383e0000290304184f7074696f6e040454012d030108104e6f6e6500000010536f6d6504002d0300000100002d03082c70616c6c65745f70697073385069704465736372697074696f6e0000040028011c5665633c75383e00003103082c70616c6c65745f706970733050726f706f73616c4461746100010810486173680400240110483235360000002050726f706f73616c040028011c5665633c75383e000100003503082c70616c6c65745f706970733450726f706f73616c53746174650001181c50656e64696e670000002052656a6563746564000100245363686564756c6564000200184661696c65640003002045786563757465640004001c45787069726564000500003903082c70616c6c65745f7069707328536e617073686f7449640000040010010c75333200003d030000024103004103082c70616c6c65745f7069707338536e617073686f74746564506970000008010869641d03011450697049640001187765696768744503013c28626f6f6c2c2042616c616e63652900004503000004081d011800490304184f7074696f6e0404540139030108104e6f6e6500000010536f6d650400390300000100004d030000025103005103000004081d03080055030000021d030059031064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747324706f7274666f6c696f144576656e7400011840506f7274666f6c696f437265617465640c007c01284964656e7469747949640000e4013c506f7274666f6c696f4e756d62657200005d030134506f7274666f6c696f4e616d65000018b054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c7920637265617465642e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572402a20706f7274666f6c696f206e616d6540506f7274666f6c696f44656c6574656408007c01284964656e7469747949640000e4013c506f7274666f6c696f4e756d626572000114b054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c792072656d6f7665642e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572584d6f7665644265747765656e506f7274666f6c696f7318007c01284964656e7469747949640000dc012c506f7274666f6c696f49640000dc012c506f7274666f6c696f49640000a401185469636b6572000018011c42616c616e636500008001304f7074696f6e3c4d656d6f3e000220f04120746f6b656e20616d6f756e7420686173206265656e206d6f7665642066726f6d206f6e6520706f7274666f6c696f20746f20616e6f746865722e00302320506172616d6574657273302a206f726967696e20444944482a20736f7572636520706f7274666f6c696f5c2a2064657374696e6174696f6e20706f7274666f6c696f382a206173736574207469636b6572782a2061737365742062616c616e6365207468617420776173206d6f76656440506f7274666f6c696f52656e616d65640c007c01284964656e7469747949640000e4013c506f7274666f6c696f4e756d62657200005d030134506f7274666f6c696f4e616d65000318fc54686520706f7274666f6c696f206964656e746966696564207769746820606e756d6020686173206265656e2072656e616d656420746f20606e616d65602e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572402a20706f7274666f6c696f206e616d653855736572506f7274666f6c696f7308007c01284964656e7469747949640000610301945665633c28506f7274666f6c696f4e756d6265722c20506f7274666f6c696f4e616d65293e000414d4416c6c206e6f6e2d64656661756c7420706f7274666f6c696f206e756d6265727320616e64206e616d6573206f662061204449442e00302320506172616d6574657273302a206f726967696e20444944742a20766563746f72206f66206e756d6265722d6e616d6520706169727364506f7274666f6c696f437573746f6469616e4368616e6765640c007c01284964656e7469747949640000dc012c506f7274666f6c696f496400007c01284964656e746974794964000518f4437573746f6479206f66206120706f7274666f6c696f20686173206265656e20676976656e20746f206120646966666572656e74206964656e7469747900302320506172616d6574657273302a206f726967696e20444944382a20706f7274666f6c696f206964642a20706f7274666f6c696f20637573746f6469616e20646964085c4576656e747320666f722074686973206d6f64756c652e005d030c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f696434506f7274666f6c696f4e616d650000040028011c5665633c75383e00006103000002650300650300000408e45d03006903084c70616c6c65745f70726f746f636f6c5f666565205261774576656e7404244163636f756e7449640100010c1846656553657408007c01284964656e746974794964000018011c42616c616e6365000004845468652070726f746f636f6c20666565206f6620616e206f7065726174696f6e2e38436f656666696369656e7453657408007c01284964656e74697479496400006d030120506f73526174696f000104505468652066656520636f656666696369656e742e284665654368617267656408000001244163636f756e744964000018011c42616c616e63650002043046656520636861726765642e085c4576656e747320666f722074686973206d6f64756c652e006d03084c706f6c796d6573685f7072696d69746976657320506f73526174696f0000080010010c753332000010010c753332000071030c4070616c6c65745f7363686564756c65721870616c6c6574144576656e7404045400010c245363686564756c65640800100138543a3a426c6f636b4e756d626572000010010c753332000004905363686564756c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d2043616e63656c65640800100138543a3a426c6f636b4e756d626572000010010c7533320001048c43616e63656c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d28446973706174636865640c007503016c5461736b416464726573733c543a3a426c6f636b4e756d6265723e00007903013c4f7074696f6e3c5665633c75383e3e00003d0101384469737061746368526573756c74000204a84469737061746368656420736f6d65207461736b2e205c5b7461736b2c2069642c20726573756c745c5d04304576656e747320747970652e750300000408101000790304184f7074696f6e04045401280108104e6f6e6500000010536f6d6504002800000100007d03084470616c6c65745f736574746c656d656e74205261774576656e740c184d6f6d656e7401202c426c6f636b4e756d6265720110244163636f756e7449640100014c3056656e75654372656174656410007c01284964656e74697479496400008103011c56656e7565496400008503013056656e756544657461696c7300008903012456656e756554797065000004ec41206e65772076656e756520686173206265656e206372656174656420286469642c2076656e75655f69642c2064657461696c732c2074797065294c56656e756544657461696c73557064617465640c007c01284964656e74697479496400008103011c56656e7565496400008503013056656e756544657461696c730001041501416e206578697374696e672076656e756527732064657461696c7320686173206265656e207570646174656420286469642c2076656e75655f69642c2064657461696c73294056656e756554797065557064617465640c007c01284964656e74697479496400008103011c56656e7565496400008903012456656e756554797065000204fc416e206578697374696e672076656e75652773207479706520686173206265656e207570646174656420286469642c2076656e75655f69642c20747970652948496e737472756374696f6e437265617465641c007c01284964656e74697479496400008103011c56656e7565496400008d030134496e737472756374696f6e496400009103016c536574746c656d656e74547970653c426c6f636b4e756d6265723e0000f801384f7074696f6e3c4d6f6d656e743e0000f801384f7074696f6e3c4d6f6d656e743e0000950301205665633c4c65673e0003088841206e657720696e737472756374696f6e20686173206265656e20637265617465643901286469642c2076656e75655f69642c20696e737472756374696f6e5f69642c20736574746c656d656e745f747970652c2074726164655f646174652c2076616c75655f646174652c206c656773294c496e737472756374696f6e41666669726d65640c007c01284964656e7469747949640000dc012c506f7274666f6c696f496400008d030134496e737472756374696f6e49640004040501416e20696e737472756374696f6e20686173206265656e2061666669726d656420286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964295041666669726d6174696f6e57697468647261776e0c007c01284964656e7469747949640000dc012c506f7274666f6c696f496400008d030134496e737472756374696f6e49640005040901416e2061666669726d6174696f6e20686173206265656e2077697468647261776e20286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964294c496e737472756374696f6e52656a656374656408007c01284964656e74697479496400008d030134496e737472756374696f6e4964000604d8416e20696e737472756374696f6e20686173206265656e2072656a656374656420286469642c20696e737472756374696f6e5f6964293852656365697074436c61696d656418007c01284964656e74697479496400008d030134496e737472756374696f6e496400009d0301144c65674964000020010c75363400000001244163636f756e7449640000a103013c526563656970744d657461646174610007047d0141207265636569707420686173206265656e20636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e65722c2072656365697074206d6574616461746129585265636569707456616c69646974794368616e67656410007c01284964656e74697479496400000001244163636f756e744964000020010c75363400001d010110626f6f6c0008040d0141207265636569707420686173206265656e20696e76616c69646174656420286469642c207369676e65722c20726563656970745f7569642c2076616c6964697479294052656365697074556e636c61696d656414007c01284964656e74697479496400008d030134496e737472756374696f6e496400009d0301144c65674964000020010c75363400000001244163636f756e7449640009043d0141207265636569707420686173206265656e20756e636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e6572293856656e756546696c746572696e670c007c01284964656e7469747949640000a401185469636b657200001d010110626f6f6c000a04690156656e75652066696c746572696e6720686173206265656e20656e61626c6564206f722064697361626c656420666f722061207469636b657220286469642c207469636b65722c2066696c746572696e675f656e61626c6564293456656e756573416c6c6f7765640c007c01284964656e7469747949640000a401185469636b65720000a50301305665633c56656e756549643e000b04dc56656e75657320616464656420746f20616c6c6f77206c69737420286469642c207469636b65722c207665633c76656e75655f69643e293456656e756573426c6f636b65640c007c01284964656e7469747949640000a401185469636b65720000a50301305665633c56656e756549643e000c04dc56656e75657320616464656420746f20626c6f636b206c69737420286469642c207469636b65722c207665633c76656e75655f69643e29484c65674661696c6564457865637574696f6e0c007c01284964656e74697479496400008d030134496e737472756374696f6e496400009d0301144c65674964000d04dc457865637574696f6e206f662061206c6567206661696c656420286469642c20696e737472756374696f6e5f69642c206c65675f69642944496e737472756374696f6e4661696c656408007c01284964656e74697479496400008d030134496e737472756374696f6e4964000e04c8496e737472756374696f6e206661696c656420657865637574696f6e20286469642c20696e737472756374696f6e5f6964294c496e737472756374696f6e457865637574656408007c01284964656e74697479496400008d030134496e737472756374696f6e4964000f04d8496e737472756374696f6e206578656375746564207375636365737366756c6c79286469642c20696e737472756374696f6e5f6964294456656e7565556e617574686f72697a65640c007c01284964656e7469747949640000a401185469636b657200008103011c56656e75654964001004010156656e7565206e6f742070617274206f662074686520746f6b656e277320616c6c6f77206c69737420286469642c205469636b65722c2076656e75655f696429405363686564756c696e674661696c6564040064013444697370617463684572726f72001104805363686564756c696e67206f6620696e737472756374696f6e206661696c732e58496e737472756374696f6e52657363686564756c656408007c01284964656e74697479496400008d030134496e737472756374696f6e49640012086c496e737472756374696f6e2069732072657363686564756c65642e702863616c6c6572204449442c20696e737472756374696f6e5f696429085c4576656e747320666f722074686973206d6f64756c652e008103084470616c6c65745f736574746c656d656e741c56656e756549640000040020010c75363400008503084470616c6c65745f736574746c656d656e743056656e756544657461696c730000040028011c5665633c75383e00008903084470616c6c65745f736574746c656d656e742456656e756554797065000110144f7468657200000030446973747269627574696f6e0001000c53746f0002002045786368616e6765000300008d03084470616c6c65745f736574746c656d656e7434496e737472756374696f6e49640000040020010c75363400009103084470616c6c65745f736574746c656d656e7438536574746c656d656e7454797065042c426c6f636b4e756d626572011001084c536574746c654f6e41666669726d6174696f6e00000034536574746c654f6e426c6f636b040010012c426c6f636b4e756d6265720001000095030000029903009903084470616c6c65745f736574746c656d656e740c4c6567000010011066726f6ddc012c506f7274666f6c696f4964000108746fdc012c506f7274666f6c696f49640001146173736574a401185469636b6572000118616d6f756e7418011c42616c616e636500009d03084470616c6c65745f736574746c656d656e74144c656749640000040020010c7536340000a103084470616c6c65745f736574746c656d656e743c526563656970744d657461646174610000040028011c5665633c75383e0000a503000002810300a9031064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732873746174697374696373144576656e74000110505472616e736665724d616e6167657241646465640c007c01284964656e7469747949640000a401185469636b65720000ad03013c5472616e736665724d616e616765720000048441206e6577207472616e73666572206d616e61676572207761732061646465642e585472616e736665724d616e6167657252656d6f7665640c007c01284964656e7469747949640000a401185469636b65720000ad03013c5472616e736665724d616e61676572000104a4416e206578697374696e67207472616e73666572206d616e61676572207761732072656d6f7665642e3c4578656d7074696f6e73416464656410007c01284964656e7469747949640000a401185469636b65720000ad03013c5472616e736665724d616e616765720000310101305665633c53636f706549643e000204b06053636f706549646073207765726520616464656420746f20746865206578656d7074696f6e206c6973742e444578656d7074696f6e7352656d6f76656410007c01284964656e7469747949640000a401185469636b65720000ad03013c5472616e736665724d616e616765720000310101305665633c53636f706549643e000304c06053636f70654964607320776572652072656d6f7665642066726f6d20746865206578656d7074696f6e206c6973742e085c4576656e747320666f722074686973206d6f64756c652e00ad030c4c706f6c796d6573685f7072696d69746976657328737461746973746963733c5472616e736665724d616e6167657200010850436f756e745472616e736665724d616e61676572040020011c436f756e7465720000006450657263656e746167655472616e736665724d616e616765720400b103012850657263656e7461676500010000b1030c4c706f6c796d6573685f7072696d69746976657328737461746973746963733c4861736861626c655065726d696c6c000004004d02015873705f61726974686d657469633a3a5065726d696c6c0000b503082870616c6c65745f73746f205261774576656e7404184d6f6d656e74012001184446756e647261697365724372656174656410007c01284964656e7469747949640000b903013046756e6472616973657249640000bd03013846756e647261697365724e616d650000c103014846756e647261697365723c4d6f6d656e743e0000088841206e65772066756e6472616973657220686173206265656e20637265617465642efc284167656e74204449442c2066756e647261697365722069642c2066756e64726169736572206e616d652c2066756e647261697365722064657461696c732920496e76657374656418007c01284964656e7469747949640000b903013046756e6472616973657249640000a401185469636b65720000a401185469636b6572000018011c42616c616e6365000018011c42616c616e63650001089c416e20696e766573746f7220696e76657374656420696e207468652066756e647261697365722e850128496e766573746f722c2066756e647261697365725f69642c206f66666572696e6720746f6b656e2c20726169736520746f6b656e2c206f66666572696e675f746f6b656e5f616d6f756e742c2072616973655f746f6b656e5f616d6f756e74294046756e6472616973657246726f7a656e08007c01284964656e7469747949640000b903013046756e64726169736572496400020874412066756e6472616973657220686173206265656e2066726f7a656e2e68284167656e74204449442c2066756e64726169736572206964294846756e64726169736572556e66726f7a656e08007c01284964656e7469747949640000b903013046756e6472616973657249640003087c412066756e6472616973657220686173206265656e20756e66726f7a656e2e68284167656e74204449442c2066756e64726169736572206964296046756e6472616973657257696e646f774d6f64696669656418003d0201204576656e744469640000b903013046756e64726169736572496400002001184d6f6d656e740000f801384f7074696f6e3c4d6f6d656e743e00002001184d6f6d656e740000f801384f7074696f6e3c4d6f6d656e743e00040898412066756e647261697365722077696e646f7720686173206265656e206d6f6469666965642e0901284167656e74204449442c2066756e647261697365722069642c206f6c645f73746172742c206f6c645f656e642c206e65775f73746172742c206e65775f656e64294046756e64726169736572436c6f73656408007c01284964656e7469747949640000b903013046756e64726169736572496400050878412066756e6472616973657220686173206265656e2073746f707065642e68284167656e74204449442c2066756e6472616973657220696429085c4576656e747320666f722074686973206d6f64756c652e00b903082870616c6c65745f73746f3046756e6472616973657249640000040020010c7536340000bd03082870616c6c65745f73746f3846756e647261697365724e616d650000040028011c5665633c75383e0000c103082870616c6c65745f73746f2846756e6472616973657204184d6f6d656e740120002c011c63726561746f727c01284964656e7469747949640001486f66666572696e675f706f7274666f6c696fdc012c506f7274666f6c696f49640001386f66666572696e675f6173736574a401185469636b657200014472616973696e675f706f7274666f6c696fdc012c506f7274666f6c696f496400013472616973696e675f6173736574a401185469636b65720001147469657273c503014c5665633c46756e64726169736572546965723e00012076656e75655f69648103011c56656e7565496400011473746172742001184d6f6d656e7400010c656e64f801384f7074696f6e3c4d6f6d656e743e000118737461747573cd03014046756e647261697365725374617475730001486d696e696d756d5f696e766573746d656e7418011c42616c616e63650000c503000002c90300c903082870616c6c65745f73746f3846756e647261697365725469657200000c0114746f74616c18011c42616c616e6365000114707269636518011c42616c616e636500012472656d61696e696e6718011c42616c616e63650000cd03082870616c6c65745f73746f4046756e64726169736572537461747573000110104c6976650000001846726f7a656e00010018436c6f7365640002002c436c6f7365644561726c7900030000d103083c70616c6c65745f7472656173757279205261774576656e74041c42616c616e63650118010850547265617375727944697362757273656d656e740c007c01284964656e74697479496400007c01284964656e746974794964000018011c42616c616e63650000088844697362757273656d656e7420746f206120746172676574204964656e746974792e6428746172676574206964656e746974792c20616d6f756e74295454726561737572795265696d62757273656d656e7408007c01284964656e746974794964000018011c42616c616e63650001045c5472656173757279207265696d62757273656d656e742e085c4576656e747320666f722074686973206d6f64756c652e00d503083870616c6c65745f7574696c697479144576656e7400010c404261746368496e7465727275707465640800d903012c4576656e74436f756e74730000dd03011c4572726f72417400000cac4261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792edc496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f72206561636820646973706174636820616e64f474686520696e646578206f6620746865206669727374206661696c696e672064697370617463682061732077656c6c20617320746865206572726f722e5442617463684f7074696d69737469634661696c65640800d903012c4576656e74436f756e74730000e10301305665633c4572726f7241743e00010cac4261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792ecc496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c20616e6429016120766563746f72206f6620616e79206661696c65642064697370617463686573207769746820746865697220696e646963657320616e64206173736f636961746564206572726f722e384261746368436f6d706c657465640400d903012c4576656e74436f756e7473000208c84261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722ed0496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682064697370617463682e0c5c4576656e747320666f722074686973206d6f64756c652e00304576656e747320747970652ed9030000021000dd0300000408106400e103000002dd0300e5031064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731062617365144576656e740001043c556e65787065637465644572726f720400e90301544f7074696f6e3c44697370617463684572726f723e000004e4416e20756e6578706563746564206572726f722068617070656e656420746861742073686f756c6420626520696e766573746967617465642e085c4576656e747320666f722074686973206d6f64756c652e00e90304184f7074696f6e04045401640108104e6f6e6500000010536f6d650400640000010000ed031064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974733c65787465726e616c5f6167656e7473144576656e740001143047726f75704372656174656410003d0201204576656e744469640000a401185469636b6572000019010110414749640000b4015045787472696e7369635065726d697373696f6e7300000c6c416e204167656e742047726f75702077617320637265617465642e00d02843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773207065726d697373696f6e73295c47726f75705065726d697373696f6e735570646174656410003d0201204576656e744469640000a401185469636b6572000019010110414749640000b4015045787472696e7369635065726d697373696f6e7300010ca4416e204167656e742047726f75702773207065726d697373696f6e732077617320757064617465642e00e02843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773206e6577207065726d697373696f6e7329284167656e7441646465640c003d0201204576656e744469640000a401185469636b65720000150101284167656e7447726f757000020c4c416e206167656e74207761732061646465642e00c42843616c6c65722f4167656e74204449442c204167656e742773207469636b65722c204167656e7427732067726f757029304167656e7452656d6f7665640c003d0201204576656e744469640000a401185469636b657200007c01284964656e74697479496400030c54416e206167656e74207761732072656d6f7665642e00a42843616c6c6572204449442c204167656e742773207469636b65722c204167656e74277320444944293047726f75704368616e67656410003d0201204576656e744469640000a401185469636b657200007c01284964656e7469747949640000150101284167656e7447726f757000040c74416e206167656e7427732067726f757020776173206368616e6765642e0015012843616c6c6572204449442c204167656e742773207469636b65722c204167656e742773204449442c20546865206e65772067726f7570206f6620746865206167656e7429085c4576656e747320666f722074686973206d6f64756c652e00f1031064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731c72656c61796572205261774576656e7404244163636f756e744964010001104c417574686f72697a6564506179696e674b657914003d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000020010c75363400000ccc417574686f72697a6174696f6e20676976656e20666f722060706179696e675f6b65796020746f2060757365725f6b6579602e0001012843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20496e697469616c20504f4c5958206c696d69742c204175746820494429444163636570746564506179696e674b65790c003d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e74496400010c50416363657074656420706179696e67206b65792e00882843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294052656d6f766564506179696e674b65790c003d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e74496400020c4c52656d6f76656420706179696e67206b65792e00882843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294455706461746564506f6c79784c696d697414003d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000018011c42616c616e636500030c505570646174656420706f6c7978206c696d69742e0011012843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20504f4c5958206c696d69742c206f6c642072656d61696e696e6720504f4c595829085c4576656e747320666f722074686973206d6f64756c652e00f503083870616c6c65745f72657761726473205261774576656e7404244163636f756e744964010001044049746e526577617264436c61696d656408000001244163636f756e744964000018011c42616c616e63650000045c49746e207265776172642077617320636c61696d65642e085c4576656e747320666f722074686973206d6f64756c652e00f903084470616c6c65745f746573745f7574696c73205261774576656e7404244163636f756e7449640100010c584d6f636b496e766573746f725549444372656174656408007c01284964656e74697479496400002101012c496e766573746f725569640000080d0141206e6577206d6f636b65642060496e766573746f725569646020686173206265656e206372656174656420666f722074686520676976656e204964656e746974792e7428546172676574204449442c204e657720496e766573746f72556964292444696453746174757308007c01284964656e74697479496400000001244163636f756e744964000108e4456d6974732074686520604964656e7469747949646020616e642074686520604163636f756e74496460206f66207468652063616c6c65722e702843616c6c6572204449442c2043616c6c6572206163636f756e7429244364645374617475730c007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e74496400001d010110626f6f6c00020c550153686f777320746865206044494460206173736f63696174656420746f2074686520604163636f756e744964602c20616e64206120666c616720696e646963617465732069662074686174204449442068617320614076616c69642043444420636c61696d2ed828546172676574204449442c20546172676574204163636f756e742c20612076616c69642043444420636c61696d2065786973747329085c4576656e747320666f722074686973206d6f64756c652e00fd0308306672616d655f73797374656d14506861736500010c384170706c7945787472696e736963040010010c7533320000003046696e616c697a6174696f6e00010038496e697469616c697a6174696f6e00020000010400000224000504000002750300090408306672616d655f73797374656d584c61737452756e74696d6555706772616465496e666f0000080130737065635f76657273696f6e0d04014c636f6465633a3a436f6d706163743c7533323e000124737065635f6e616d651104016473705f72756e74696d653a3a52756e74696d65537472696e6700000d0400000610001104000005020015040c306672616d655f73797374656d1870616c6c65741043616c6c0404540001282866696c6c5f626c6f636b040114726174696f9501011c50657262696c6c00000405014120646973706174636820746861742077696c6c2066696c6c2074686520626c6f636b2077656967687420757020746f2074686520676976656e20726174696f2e1872656d61726b04011872656d61726b28011c5665633c75383e000114684d616b6520736f6d65206f6e2d636861696e2072656d61726b2e002823203c7765696768743e202d20604f283129602c23203c2f7765696768743e387365745f686561705f7061676573040114706167657320010c753634000224f853657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e002823203c7765696768743e202d20604f28312960482d20312073746f726167652077726974652e602d2042617365205765696768743a20312e34303520c2b5735c2d203120777269746520746f20484541505f50414745533c2d203120646967657374206974656d2c23203c2f7765696768743e207365745f636f6465040110636f646528011c5665633c75383e0003306453657420746865206e65772072756e74696d6520636f64652e002823203c7765696768743e31012d20604f2843202b2053296020776865726520604360206c656e677468206f662060636f64656020616e642060536020636f6d706c6578697479206f66206063616e5f7365745f636f64656045012d20312063616c6c20746f206063616e5f7365745f636f6465603a20604f28532960202863616c6c73206073705f696f3a3a6d6973633a3a72756e74696d655f76657273696f6e60207768696368206973342020657870656e73697665292e842d20312073746f726167652077726974652028636f64656320604f28432960292e402d203120646967657374206974656d2e282d2031206576656e742e4d0154686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652c206275742067656e6572616c6c7920746869732069732076657279b8657870656e736976652e2057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e2c23203c2f7765696768743e5c7365745f636f64655f776974686f75745f636865636b73040110636f646528011c5665633c75383e000424190153657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e002823203c7765696768743e8c2d20604f2843296020776865726520604360206c656e677468206f662060636f646560842d20312073746f726167652077726974652028636f64656320604f28432960292e402d203120646967657374206974656d2e282d2031206576656e742e550154686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652e2057652077696c6c207472656174207468697320617320612066756c6c48626c6f636b2e2023203c2f7765696768743e5c7365745f6368616e6765735f747269655f636f6e66696704014c6368616e6765735f747269655f636f6e6669674001804f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e0005289c53657420746865206e6577206368616e676573207472696520636f6e66696775726174696f6e2e002823203c7765696768743e202d20604f28312960ac2d20312073746f72616765207772697465206f722064656c6574652028636f64656320604f28312960292ed42d20312063616c6c20746f20606465706f7369745f6c6f67603a20557365732060617070656e6460204150492c20736f204f283129602d2042617365205765696768743a20372e32313820c2b573302d204442205765696768743aa4202020202d205772697465733a204368616e67657320547269652c2053797374656d204469676573742c23203c2f7765696768743e2c7365745f73746f726167650401146974656d73190401345665633c4b657956616c75653e0006206853657420736f6d65206974656d73206f662073746f726167652e002823203c7765696768743e902d20604f2849296020776865726520604960206c656e677468206f6620606974656d7360782d206049602073746f72616765207772697465732028604f28312960292e702d2042617365205765696768743a20302e353638202a206920c2b573642d205772697465733a204e756d626572206f66206974656d732c23203c2f7765696768743e306b696c6c5f73746f726167650401106b657973210401205665633c4b65793e000720744b696c6c20736f6d65206974656d732066726f6d2073746f726167652e002823203c7765696768743ef82d20604f28494b296020776865726520604960206c656e677468206f6620606b6579736020616e6420604b60206c656e677468206f66206f6e65206b6579602d206049602073746f726167652064656c6574696f6e732e6c2d2042617365205765696768743a202e333738202a206920c2b573642d205772697465733a204e756d626572206f66206974656d732c23203c2f7765696768743e2c6b696c6c5f70726566697808011870726566697828010c4b657900011c7375626b65797310010c75333200082c11014b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e0039012a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e6465723d0174686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e002823203c7765696768743ed82d20604f285029602077686572652060506020616d6f756e74206f66206b657973207769746820707265666978206070726566697860602d206050602073746f726167652064656c6574696f6e732e702d2042617365205765696768743a20302e383334202a205020c2b5737c2d205772697465733a204e756d626572206f66207375626b657973202b20312c23203c2f7765696768743e4472656d61726b5f776974685f6576656e7404011872656d61726b28011c5665633c75383e000918a44d616b6520736f6d65206f6e2d636861696e2072656d61726b20616e6420656d6974206576656e742e002823203c7765696768743eb42d20604f28622960207768657265206220697320746865206c656e677468206f66207468652072656d61726b2e282d2031206576656e742e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e19040000021d04001d04000004082828002104000002280025040c306672616d655f73797374656d186c696d69747330426c6f636b5765696768747300000c0128626173655f626c6f636b2001185765696768740001246d61785f626c6f636b2001185765696768740001247065725f636c617373290401845065724469737061746368436c6173733c57656967687473506572436c6173733e000029040c346672616d655f737570706f72741c77656967687473405065724469737061746368436c617373040454012d04000c01186e6f726d616c2d0401045400012c6f7065726174696f6e616c2d040104540001246d616e6461746f72792d0401045400002d040c306672616d655f73797374656d186c696d6974733c57656967687473506572436c6173730000100138626173655f65787472696e7369632001185765696768740001346d61785f65787472696e736963f801384f7074696f6e3c5765696768743e0001246d61785f746f74616cf801384f7074696f6e3c5765696768743e0001207265736572766564f801384f7074696f6e3c5765696768743e000031040c306672616d655f73797374656d186c696d6974732c426c6f636b4c656e677468000004010c6d6178350401545065724469737061746368436c6173733c7533323e000035040c346672616d655f737570706f72741c77656967687473405065724469737061746368436c6173730404540110000c01186e6f726d616c1001045400012c6f7065726174696f6e616c100104540001246d616e6461746f727910010454000039040c346672616d655f737570706f72741c776569676874733c52756e74696d654462576569676874000008011072656164200118576569676874000114777269746520011857656967687400003d04082873705f76657273696f6e3852756e74696d6556657273696f6e00001c0124737065635f6e616d651104013452756e74696d65537472696e67000124696d706c5f6e616d651104013452756e74696d65537472696e67000144617574686f72696e675f76657273696f6e10010c753332000130737065635f76657273696f6e10010c753332000130696d706c5f76657273696f6e10010c753332000110617069734104011c4170697356656300014c7472616e73616374696f6e5f76657273696f6e10010c75333200004104040c436f77040454014504000400450400000045040000024904004904000004084d0410004d0400000308000000080051040c306672616d655f73797374656d1870616c6c6574144572726f720404540001143c496e76616c6964537065634e616d650000081101546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e685370656356657273696f6e4e65656473546f496e63726561736500010841015468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e00020cec4661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e0009014569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e4c4e6f6e44656661756c74436f6d706f73697465000304fc537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e3c4e6f6e5a65726f526566436f756e74000404350154686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e046c4572726f7220666f72207468652053797374656d2070616c6c6574550410346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e646564566563080454015904045300000400610401185665633c543e00005904000004085d0420005d040c4473705f636f6e73656e7375735f626162650c617070185075626c696300000400c101013c737232353531393a3a5075626c6963000061040000025904006504084873705f636f6e73656e7375735f736c6f747310536c6f740000040020010c753634000069040c4473705f636f6e73656e7375735f626162651c64696765737473504e657874436f6e66696744657363726970746f72000104085631080104636d040128287536342c2075363429000134616c6c6f7765645f736c6f747371040130416c6c6f776564536c6f7473000100006d04000004082020007104084473705f636f6e73656e7375735f6261626530416c6c6f776564536c6f747300010c305072696d617279536c6f7473000000745072696d617279416e645365636f6e64617279506c61696e536c6f74730001006c5072696d617279416e645365636f6e64617279565246536c6f747300020000750410346672616d655f737570706f72741c73746f726167652c626f756e6465645f76656328426f756e6465645665630804540104045300000400790401185665633c543e0000790400000204007d0404184f7074696f6e04045401040108104e6f6e6500000010536f6d6504000400000100008104084473705f636f6e73656e7375735f62616265584261626545706f6368436f6e66696775726174696f6e0000080104636d040128287536342c2075363429000134616c6c6f7765645f736c6f747371040130416c6c6f776564536c6f7473000085040c2c70616c6c65745f626162651870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f6689040184426f783c45717569766f636174696f6e50726f6f663c543a3a4865616465723e3e00013c6b65795f6f776e65725f70726f6f6695040140543a3a4b65794f776e657250726f6f6600001009015265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667905017468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f660d01616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c306265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f6689040184426f783c45717569766f636174696f6e50726f6f663c543a3a4865616465723e3e00013c6b65795f6f776e65725f70726f6f6695040140543a3a4b65794f776e657250726f6f6600012009015265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667905017468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f660d01616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c306265207265706f727465642e0d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e48706c616e5f636f6e6669675f6368616e6765040118636f6e666967690401504e657874436f6e66696744657363726970746f720002105d01506c616e20616e2065706f636820636f6e666967206368616e67652e205468652065706f636820636f6e666967206368616e6765206973207265636f7264656420616e642077696c6c20626520656e6163746564206f6e5101746865206e6578742063616c6c20746f2060656e6163745f65706f63685f6368616e6765602e2054686520636f6e6669672077696c6c20626520616374697661746564206f6e652065706f63682061667465722e59014d756c7469706c652063616c6c7320746f2074686973206d6574686f642077696c6c207265706c61636520616e79206578697374696e6720706c616e6e656420636f6e666967206368616e6765207468617420686164546e6f74206265656e20656e6163746564207965742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e8904084873705f636f6e73656e7375735f736c6f74734445717569766f636174696f6e50726f6f660818486561646572018d04084964015d04001001206f6666656e6465725d0401084964000110736c6f7465040110536c6f7400013066697273745f6865616465728d0401184865616465720001347365636f6e645f6865616465728d04011848656164657200008d04102873705f72756e74696d651c67656e65726963186865616465721848656164657208184e756d626572011010486173680191040014012c706172656e745f68617368240130486173683a3a4f75747075740001186e756d6265720d0401184e756d62657200012873746174655f726f6f74240130486173683a3a4f757470757400013c65787472696e736963735f726f6f74240130486173683a3a4f75747075740001186469676573742c01504469676573743c486173683a3a4f75747075743e000091040c2873705f72756e74696d65187472616974732c426c616b6554776f323536000000009504082873705f73657373696f6e3c4d656d6265727368697050726f6f6600000c011c73657373696f6e10013053657373696f6e496e646578000128747269655f6e6f646573210401305665633c5665633c75383e3e00013c76616c696461746f725f636f756e7410013856616c696461746f72436f756e74000099040c2c70616c6c65745f626162651870616c6c6574144572726f7204045400010c60496e76616c696445717569766f636174696f6e50726f6f660000043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c69644b65794f776e65727368697050726f6f66000104310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400020415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a0909099d040c4070616c6c65745f74696d657374616d701870616c6c65741043616c6c0404540001040c73657404010c6e6f77a1040124543a3a4d6f6d656e7400004054536574207468652063757272656e742074696d652e005501546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6ed470686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e0041015468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e742073706563696669656420627940604d696e696d756d506572696f64602e00d4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e002823203c7765696768743e31012d20604f2831296020284e6f7465207468617420696d706c656d656e746174696f6e73206f6620604f6e54696d657374616d7053657460206d75737420616c736f20626520604f283129602961012d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202862656361757365206f6620604469645570646174653a3a74616b656020696e402020606f6e5f66696e616c697a656029d42d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f736574602e204d75737420626520604f283129602e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ea1040000062000a5040000040c00181d0100a9040c3870616c6c65745f696e64696365731870616c6c65741043616c6c04045400011414636c61696d040114696e64657810013c543a3a4163636f756e74496e6465780000489841737369676e20616e2070726576696f75736c7920756e61737369676e656420696e6465782e00dc5061796d656e743a20604465706f736974602069732072657365727665642066726f6d207468652073656e646572206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e00f02d2060696e646578603a2074686520696e64657820746f20626520636c61696d65642e2054686973206d757374206e6f7420626520696e207573652e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e602d204f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e207472616e7366657208010c6e6577000130543a3a4163636f756e744964000114696e64657810013c543a3a4163636f756e74496e6465780001505d0141737369676e20616e20696e64657820616c7265616479206f776e6564206279207468652073656e64657220746f20616e6f74686572206163636f756e742e205468652062616c616e6365207265736572766174696f6eb86973206566666563746976656c79207472616e7366657272656420746f20746865206e6577206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0025012d2060696e646578603a2074686520696e64657820746f2062652072652d61737369676e65642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e5d012d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e642d204f6e65207472616e73666572206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743ae02020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e7429e42020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e74292c23203c2f7765696768743e1066726565040114696e64657810013c543a3a4163636f756e74496e646578000248944672656520757020616e20696e646578206f776e6564206279207468652073656e6465722e005d015061796d656e743a20416e792070726576696f7573206465706f73697420706c6163656420666f722074686520696e64657820697320756e726573657276656420696e207468652073656e646572206163636f756e742e005501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206f776e2074686520696e6465782e000d012d2060696e646578603a2074686520696e64657820746f2062652066726565642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e0084456d6974732060496e646578467265656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e602d204f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e38666f7263655f7472616e736665720c010c6e6577000130543a3a4163636f756e744964000114696e64657810013c543a3a4163636f756e74496e646578000118667265657a651d010110626f6f6c0003545501466f72636520616e20696e64657820746f20616e206163636f756e742e205468697320646f65736e277420726571756972652061206465706f7369742e2049662074686520696e64657820697320616c7265616479e868656c642c207468656e20616e79206465706f736974206973207265696d62757273656420746f206974732063757272656e74206f776e65722e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e00a42d2060696e646578603a2074686520696e64657820746f206265202872652d2961737369676e65642e5d012d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e41012d2060667265657a65603a2069662073657420746f206074727565602c2077696c6c20667265657a652074686520696e64657820736f2069742063616e6e6f74206265207472616e736665727265642e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e782d20557020746f206f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743af42020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e657229f82020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e6572292c23203c2f7765696768743e18667265657a65040114696e64657810013c543a3a4163636f756e74496e6465780004484101467265657a6520616e20696e64657820736f2069742077696c6c20616c7761797320706f696e7420746f207468652073656e646572206163636f756e742e205468697320636f6e73756d657320746865206465706f7369742e005901546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d757374206861766520616c6e6f6e2d66726f7a656e206163636f756e742060696e646578602e00ac2d2060696e646578603a2074686520696e64657820746f2062652066726f7a656e20696e20706c6163652e0088456d6974732060496e64657846726f7a656e60206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e702d20557020746f206f6e6520736c617368206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ead040c3870616c6c65745f696e64696365731870616c6c6574144572726f720404540001142c4e6f7441737369676e65640000048c54686520696e64657820776173206e6f7420616c72656164792061737369676e65642e204e6f744f776e6572000104a454686520696e6465782069732061737369676e656420746f20616e6f74686572206163636f756e742e14496e5573650002047054686520696e64657820776173206e6f7420617661696c61626c652e2c4e6f745472616e73666572000304c854686520736f7572636520616e642064657374696e6174696f6e206163636f756e747320617265206964656e746963616c2e245065726d616e656e74000404d054686520696e646578206973207065726d616e656e7420616e64206d6179206e6f742062652066726565642f6368616e6765642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909b104000002b50400b504084470616c6c65745f617574686f727368697038556e636c65456e7472794974656d0c2c426c6f636b4e756d62657201101048617368012418417574686f72010001083c496e636c7573696f6e486569676874040010012c426c6f636b4e756d62657200000014556e636c6508002401104861736800000d0101384f7074696f6e3c417574686f723e00010000b9040c4470616c6c65745f617574686f72736869701870616c6c65741043616c6c040454000104287365745f756e636c65730401286e65775f756e636c6573bd0401385665633c543a3a4865616465723e0000046050726f76696465206120736574206f6620756e636c65732e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ebd040000028d0400c1040c4470616c6c65745f617574686f72736869701870616c6c6574144572726f7204045400011c48496e76616c6964556e636c65506172656e740000048854686520756e636c6520706172656e74206e6f7420696e2074686520636861696e2e40556e636c6573416c726561647953657400010480556e636c657320616c72656164792073657420696e2074686520626c6f636b2e34546f6f4d616e79556e636c657300020440546f6f206d616e7920756e636c65732e3047656e65736973556e636c650003045454686520756e636c652069732067656e657369732e30546f6f48696768556e636c650004047c54686520756e636c6520697320746f6f206869676820696e20636861696e2e50556e636c65416c7265616479496e636c756465640005047854686520756e636c6520697320616c726561647920696e636c756465642e204f6c64556e636c65000604b454686520756e636c652069736e277420726563656e7420656e6f75676820746f20626520696e636c756465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909c504000002c90400c904083c70616c6c65745f62616c616e6365732c42616c616e63654c6f636b041c42616c616e63650118000c010869644d0401384c6f636b4964656e746966696572000118616d6f756e7418011c42616c616e636500011c726561736f6e73cd04011c526561736f6e730000cd041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e6365731c526561736f6e7300010c0c466565000000104d6973630001000c416c6c00020000d104083c70616c6c65745f62616c616e6365731043616c6c040454000118207472616e7366657208011064657374d504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565d101011c42616c616e6365000058d45472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e000501607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e1d0149742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e001501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e002823203c7765696768743e2d012d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72c82020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e65012d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e004852656c617465642066756e6374696f6e733a004d0120202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e290120202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c206361757365d0202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e842d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d41012d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429dc2d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e487472616e736665725f776974685f6d656d6f0c011064657374d504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565d101011c42616c616e63650001106d656d6f8001304f7074696f6e3c4d656d6f3e000120fc5472616e7366657220746865206e61746976652063757272656e63792077697468207468652068656c70206f66206964656e74696669657220737472696e67ec746869732066756e6374696f6e616c6974792063616e2068656c7020746f20646966666572656e746961746520746865207472616e73666572732e002823203c7765696768743e41012d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429dc2d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e906465706f7369745f626c6f636b5f7265776172645f726573657276655f62616c616e636504011476616c7565d101011c42616c616e6365000204dc4d6f766520736f6d6520504f4c59582066726f6d2062616c616e6365206f662073656c6620746f2062616c616e6365206f66204252522e2c7365745f62616c616e63650c010c77686fd504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263650001206e65775f66726565d101011c42616c616e63650001306e65775f7265736572766564d101011c42616c616e636500031890536574207468652062616c616e636573206f66206120676976656e206163636f756e742e001d01546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c0501616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e00b0546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e38666f7263655f7472616e736665720c0118736f75726365d504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011064657374d504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565d101011c42616c616e636500041c4d0145786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d6179206265287370656369666965642e002823203c7765696768743e3d012d2053616d65206173207472616e736665722c20627574206164646974696f6e616c207265616420616e6420777269746520626563617573652074686520736f75726365206163636f756e742069738c20206e6f7420617373756d656420746f20626520696e20746865206f7665726c61792e2c23203c2f7765696768743e506275726e5f6163636f756e745f62616c616e6365040118616d6f756e7418011c42616c616e636500050429014275726e732074686520676976656e20616d6f756e74206f6620746f6b656e732066726f6d207468652063616c6c6572277320667265652c20756e6c6f636b65642062616c616e63652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ed5040c2873705f72756e74696d65306d756c746961646472657373304d756c74694164647265737308244163636f756e7449640100304163636f756e74496e6465780110011408496404000001244163636f756e74496400000014496e64657804000d0401304163636f756e74496e6465780001000c526177040028011c5665633c75383e0002002441646472657373333204000401205b75383b2033325d000300244164647265737332300400fd0101205b75383b2032305d00040000d904083c70616c6c65745f62616c616e636573144572726f72040454000114544c69717569646974795265737472696374696f6e73000004c44163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c204f766572666c6f7700010470476f7420616e206f766572666c6f7720616674657220616464696e674c496e73756666696369656e7442616c616e63650002047442616c616e636520746f6f206c6f7720746f2073656e642076616c7565484578697374656e7469616c4465706f736974000304e856616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369744852656365697665724364644d697373696e6700040488526563656976657220646f6573206e6f74206861766520612076616c69642043444400dd040c3473705f61726974686d657469632c66697865645f706f696e742446697865645531323800000400180110753132380000e104086870616c6c65745f7472616e73616374696f6e5f7061796d656e742052656c6561736573000108245631416e6369656e7400000008563200010000e504000002e90400e9040c346672616d655f737570706f72741c7765696768747358576569676874546f466565436f656666696369656e74041c42616c616e6365011800100134636f6566665f696e746567657218011c42616c616e6365000128636f6566665f667261639501011c50657262696c6c0001206e656761746976651d010110626f6f6c00011864656772656508010875380000ed040c4c706f6c796d6573685f7072696d697469766573206964656e74697479204964656e7469747904244163636f756e74496401000008012c7072696d6172795f6b65790001244163636f756e7449640001387365636f6e646172795f6b657973f10401705665633c5365636f6e646172794b65793c4163636f756e7449643e3e0000f104000002f50400f5040c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579305365636f6e646172794b657904244163636f756e7449640100000801187369676e65729801505369676e61746f72793c4163636f756e7449643e00012c7065726d697373696f6e739c012c5065726d697373696f6e730000f90400000408fd04010500fd040c3c70616c6c65745f6964656e746974791474797065732c436c61696d3173744b657900000801187461726765747c01284964656e746974794964000128636c61696d5f747970659d020124436c61696d54797065000001050c3c70616c6c65745f6964656e746974791474797065732c436c61696d326e644b657900000801186973737565727c01284964656e74697479496400011473636f7065050501344f7074696f6e3c53636f70653e0000050504184f7074696f6e0404540101010108104e6f6e6500000010536f6d650400010100000100000905000004089820000d050c4c706f6c796d6573685f7072696d69746976657334617574686f72697a6174696f6e34417574686f72697a6174696f6e08244163636f756e7449640100184d6f6d656e74012000100148617574686f72697a6174696f6e5f6461746111010170417574686f72697a6174696f6e446174613c4163636f756e7449643e000134617574686f72697a65645f62797c01284964656e746974794964000118657870697279f801384f7074696f6e3c4d6f6d656e743e00011c617574685f696420010c75363400001105000004087c20001505083c70616c6c65745f6964656e746974791c56657273696f6e00000400080108753800001905083c70616c6c65745f6964656e746974791043616c6c040454000158406364645f72656769737465725f6469640801387461726765745f6163636f756e74000130543a3a4163636f756e7449640001387365636f6e646172795f6b657973f104017c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e00002cb8526567697374657220607461726765745f6163636f756e746020776974682061206e6577204964656e746974792e002423204661696c75726545012d20606f726967696e602068617320746f206265206120616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792ef42d2045787465726e616c207365636f6e64617279206b6579732063616e206265206c696e6b656420746f206a757374206f6e65206964656e746974792e00202320576569676874c060375f3030305f3030305f303030202b203630305f303030202a207365636f6e646172795f6b6579732e6c656e28296054696e76616c69646174655f6364645f636c61696d730c010c6364647c01284964656e74697479496400013064697361626c655f66726f6d200124543a3a4d6f6d656e74000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001102101496e76616c69646174657320616e7920636c61696d2067656e6572617465642062792060636464602066726f6d206064697361626c655f66726f6d602074696d657374616d70732e009c596f752063616e20616c736f20646566696e6520616e2065787069726174696f6e2074696d652c6d0177686963682077696c6c20696e76616c696461746520616c6c20636c61696d732067656e657261746564206279207468617420606364646020616e642072656d6f766520697420617320434444206d656d6265722067726f75702e5472656d6f76655f7365636f6e646172795f6b6579730401447369676e6572735f746f5f72656d6f7665f001705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e00021cd452656d6f76657320737065636966696564207365636f6e64617279206b657973206f662061204449442069662070726573656e742e002423204661696c757265a049742063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722e00202320576569676874c0603935305f3030305f303030202b2036305f303030202a207369676e6572735f746f5f72656d6f76652e6c656e282960486163636570745f7072696d6172795f6b6579080140726f746174696f6e5f617574685f696420010c7536340001506f7074696f6e616c5f6364645f617574685f6964f8012c4f7074696f6e3c7536343e000334650143616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e6501746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f766564250174686973206368616e676520286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e005d015468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f7264756e6c696e6b656420746f20616e79206964656e746974792e005d01446966666572732066726f6d20726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727920696e20746861742069742077696c6c20756e6c696e6b20746865206f6c64207072696d617279206b6579a4696e7374656164206f66206c656176696e672069742061732061207365636f6e64617279206b65792e002c2320417267756d656e74731d012a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e42a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f7669646572986368616e67655f6364645f726571756972656d656e745f666f725f6d6b5f726f746174696f6e040134617574685f72657175697265641d010110626f6f6c00041435015365742069662043444420617574686f72697a6174696f6e20697320726571756972656420666f72207570646174696e67207072696d617279206b6579206f6620616e206964656e746974792e7843616c6c61626c652076696120726f6f742028676f7665726e616e636529002c2320417267756d656e7473cc2a2060617574685f7265717569726564602043444420417574686f72697a6174696f6e207265717569726564206f72206e6f74506a6f696e5f6964656e746974795f61735f6b657904011c617574685f696420010c753634000504904a6f696e20616e206964656e746974792061732061207365636f6e64617279206b65792e546c656176655f6964656e746974795f61735f6b65790006048c4c6561766520746865207365636f6e64617279206b65792773206964656e746974792e246164645f636c61696d0c01187461726765747c01284964656e746974794964000114636c61696dfc0114436c61696d000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e00070cc4416464732061206e657720636c61696d207265636f7264206f7220656469747320616e206578697374696e67206f6e652e00a84f6e6c792063616c6c6564206279206469645f6973737565722773207365636f6e64617279206b65792e307265766f6b655f636c61696d0801187461726765747c01284964656e746974794964000114636c61696dfc0114436c61696d000804944d61726b73207468652073706563696669656420636c61696d206173207265766f6b65642e607365745f7065726d697373696f6e5f746f5f7369676e65720801187369676e657298015c5369676e61746f72793c543a3a4163636f756e7449643e0001147065726d739c012c5065726d697373696f6e7300090cc853657473207065726d697373696f6e7320666f7220616e20737065636966696320607461726765745f6b657960206b65792e0035014f6e6c7920746865207072696d617279206b6579206f6620616e206964656e746974792069732061626c6520746f20736574207365636f6e64617279206b6579207065726d697373696f6e732e7c6c65676163795f7365745f7065726d697373696f6e5f746f5f7369676e65720801187369676e657298015c5369676e61746f72793c543a3a4163636f756e7449643e00012c7065726d697373696f6e731d0501444c65676163795065726d697373696f6e73000a0c4501546869732066756e6374696f6e206973206120776f726b61726f756e6420666f722068747470733a2f2f6769746875622e636f6d2f706f6c6b61646f742d6a732f617070732f6973737565732f33363332d449742073657473207065726d697373696f6e7320666f7220616e20737065636966696320607461726765745f6b657960206b65792e35014f6e6c7920746865207072696d617279206b6579206f6620616e206964656e746974792069732061626c6520746f20736574207365636f6e64617279206b6579207065726d697373696f6e732e54667265657a655f7365636f6e646172795f6b657973000b10c449742064697361626c657320616c6c207365636f6e64617279206b657973206174206064696460206964656e746974792e002023204572726f7273005c756e667265657a655f7365636f6e646172795f6b657973000c04dc52652d656e61626c657320616c6c207365636f6e64617279206b657973206f66207468652063616c6c65722773206964656e746974792e446164645f617574686f72697a6174696f6e0c011874617267657498015c5369676e61746f72793c543a3a4163636f756e7449643e000110646174611101017c417574686f72697a6174696f6e446174613c543a3a4163636f756e7449643e000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e000d04584164647320616e20617574686f72697a6174696f6e2e5072656d6f76655f617574686f72697a6174696f6e0c011874617267657498015c5369676e61746f72793c543a3a4163636f756e7449643e00011c617574685f696420010c7536340001445f617574685f6973737565725f706179731d010110626f6f6c000e086452656d6f76657320616e20617574686f72697a6174696f6e2e75015f617574685f6973737565725f706179732064657465726d696e657320776865746865722074686520697373756572206f662074686520617574686f7269736174696f6e207061797320746865207472616e73616374696f6e20666565946164645f7365636f6e646172795f6b6579735f776974685f617574686f72697a6174696f6e08013c6164646974696f6e616c5f6b6579733105019c5665633c5365636f6e646172794b657957697468417574683c543a3a4163636f756e7449643e3e000128657870697265735f6174200124543a3a4d6f6d656e74000f30bc49742061646473207365636f6e64617279206b65797320746f20746172676574206964656e7469747920606964602e39014b65797320617265206469726563746c7920616464656420746f206964656e7469747920626563617573652065616368206f66207468656d2068617320616e20617574686f72697a6174696f6e2e0028417267756d656e74733ab0202020202d20606f726967696e60205072696d617279206b6579206f662060696460206964656e746974792eec202020202d2060696460204964656e74697479207768657265206e6577207365636f6e64617279206b6579732077696c6c2062652061646465642e6d01202020202d20606164646974696f6e616c5f6b65797360204e6577207365636f6e64617279206974656d732028616e6420746865697220617574686f72697a6174696f6e20646174612920746f2061646420746f2074617267657434202020206964656e746974792e001c4661696c757265b8202020202d2049742063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722ed0202020202d204b6579732073686f756c642062652061626c6520746f206c696e6b656420746f20616e79206964656e746974792e746164645f696e766573746f725f756e697175656e6573735f636c61696d1001187461726765747c01284964656e746974794964000114636c61696dfc0114436c61696d00011470726f6f663d05014c496e766573746f725a4b50726f6f6644617461000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e00104c09014164642060436c61696d3a3a496e766573746f72556e697175656e6573736020636c61696d20666f72206120676976656e20746172676574206964656e746974792e002823203c7765696768743e410120576569676874206f662074686520746869732065787472696e73696320697320646570656e64206f6e2074686520636f6d7075746174696f6e2074686174207573656420746f2076616c69646174652501207468652070726f6f66206f6620636c61696d2c2077686963682077696c6c206265206120636f6e7374616e7420696e646570656e64656e74206f66207573657220696e707574732e2c23203c2f7765696768743e002c2320417267756d656e7473b5012a206f726967696e202d2057686f2070726f76696465732074686520636c61696d20746f2074686520757365723f20496e207468697320636173652c20697427732074686520757365722773206163636f756e742069642061732074686520757365722070726f76696465732ee42a20746172676574202d20604964656e7469747949646020746f2077686963682074686520636c61696d20676574732061737369676e65642eb42a20636c61696d202d2060496e766573746f72556e697175656e6573736020636c61696d2064657461696c732eac2a2070726f6f66202d20546f2076616c6964617465207468652073656c66206174746573746174696f6e2e6c2a20657870697279202d20457870697279206f6620636c61696d2e002023204572726f72732d012a20604469644d757374416c7265616479457869737460205461726765742073686f756c6420616c7265616479206265656e20612070617274206f66207468652065636f73797374656d2e91012a2060436c61696d56617269616e744e6f74416c6c6f77656460205768656e206f726967696e20747279696e6720746f207061737320636c61696d2076617269616e74206f74686572207468616e2060496e766573746f72556e697175656e657373602eb9012a2060436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f77656460205768656e2069737375657220697320646966666572656e742066726f6d20746172676574206f72204344445f494420697320696e76616c696420666f7220676976656e20757365722eac2a2060496e76616c696453636f7065436c61696d205768656e2070726f6f6620697320696e76616c69642e4067635f6164645f6364645f636c61696d0401187461726765747c01284964656e7469747949640011044501417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c20616464732061206e65772063646420636c61696d207265636f72642e4c67635f7265766f6b655f6364645f636c61696d0401187461726765747c01284964656e7469747949640012046901417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c2072656d6f76657320616e206578697374696e672063646420636c61696d207265636f72642e806164645f696e766573746f725f756e697175656e6573735f636c61696d5f76321401187461726765747c01284964656e74697479496400011473636f70650101011453636f7065000114636c61696dfc0114436c61696d00011470726f6f664d05013c53636f7065436c61696d50726f6f66000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e001300547265766f6b655f636c61696d5f62795f696e6465780c01187461726765747c01284964656e746974794964000128636c61696d5f747970659d020124436c61696d5479706500011473636f7065050501344f7074696f6e3c53636f70653e001420f5015265766f6b6573206120737065636966696320636c61696d207573696e6720697473205b436c61696d20556e6971756520496e6465785d282f70616c6c65745f6964656e746974792f696e6465782e68746d6c23636c61696d2d756e697175652d696e6465782920636f6d706f7365642062792060746172676574602c6860636c61696d5f74797065602c20616e64206073636f7065602e000501506c65617365206e6f7465207468617420606f726967696e60206d7573742062652074686520697373756572206f66207468652074617267657420636c61696d2e002023204572726f72734d012d20605461726765744861734e6f6e5a65726f42616c616e6365417453636f7065496460207768656e20796f752074727920746f207265766f6b6520612060496e766573746f72556e697175656e6573732a602501636c61696d2c20616e64206074617267657460206964656e74697479207374696c6c206861766520616e792062616c616e6365206f6e2074686520676976656e206073636f7065602e7c726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727908011c617574685f696420010c7536340001506f7074696f6e616c5f6364645f617574685f6964f8012c4f7074696f6e3c7536343e001538650143616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e6501746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f766564290174686973206368616e67652c20286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e005d015468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f7264756e6c696e6b656420746f20616e79206964656e746974792e006101446966666572732066726f6d206163636570745f7072696d6172795f6b657920696e20746861742069742077696c6c206c6561766520746865206f6c64207072696d617279206b65792061732061207365636f6e6461727985016b6579207769746820746865207065726d697373696f6e732073706563696669656420696e2074686520636f72726573706f6e64696e6720526f746174655072696d6172794b6579546f5365636f6e6461727920617574686f72697a6174696f6ea4696e7374656164206f6620756e6c696e6b696e6720746865206f6c64207072696d617279206b65792e002c2320417267756d656e74731d012a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e42a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f76696465720c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e1d05104c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65790c617069444c65676163795065726d697373696f6e7300000c01146173736574a0014041737365745065726d697373696f6e7300012465787472696e736963210501684c656761637945787472696e7369635065726d697373696f6e73000124706f7274666f6c696fd80150506f7274666f6c696f5065726d697373696f6e7300002105104c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65790c617069684c656761637945787472696e7369635065726d697373696f6e7300000400250501904f7074696f6e3c5665633c4c656761637950616c6c65745065726d697373696f6e733e3e0000250504184f7074696f6e0404540129050108104e6f6e6500000010536f6d6504002905000001000029050000022d05002d05104c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65790c6170695c4c656761637950616c6c65745065726d697373696f6e7300000c012c70616c6c65745f6e616d65bc012850616c6c65744e616d65000114746f74616c1d010110626f6f6c000148646973706174636861626c655f6e616d6573cc01545665633c446973706174636861626c654e616d653e0000310500000235050035051064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479505365636f6e646172794b6579576974684175746804244163636f756e7449640100000801347365636f6e646172795f6b657994015c5365636f6e646172794b65793c4163636f756e7449643e000138617574685f7369676e6174757265390501104835313200003905083c7072696d69746976655f7479706573104835313200000400150201205b75383b2036345d00003d05104c706f6c796d6573685f7072696d69746976657354696e766573746f725f7a6b70726f6f665f646174610876314c496e766573746f725a4b50726f6f664461746100000400410501245369676e6174757265000041050c287363686e6f72726b656c107369676e245369676e61747572650000080104524505014c436f6d7072657373656452697374726574746f00010473490501185363616c6172000045050c40637572766532353531395f64616c656b2472697374726574746f4c436f6d7072657373656452697374726574746f000004000401205b75383b2033325d000049050c40637572766532353531395f64616c656b187363616c6172185363616c6172000004011462797465730401205b75383b2033325d00004d050c54636f6e666964656e7469616c5f6964656e7469747930636c61696d5f70726f6f66733c53636f7065436c61696d50726f6f6600000c016470726f6f665f73636f70655f69645f77656c6c666f726d6564510501245369676e617475726500016c70726f6f665f73636f70655f69645f6364645f69645f6d617463685505012c5a6b50726f6f664461746100012073636f70655f69645d05013852697374726574746f506f696e74000051050c54636f6e666964656e7469616c5f6964656e74697479107369676e245369676e61747572650000080104524505014c436f6d7072657373656452697374726574746f00010473490501185363616c6172000055050c54636f6e666964656e7469616c5f6964656e7469747930636c61696d5f70726f6f66732c5a6b50726f6f664461746100000c014c6368616c6c656e67655f726573706f6e736573590501945b5363616c61723b205a4b5f50524f4f465f444154415f4348475f524553504f4e5345535d00016073756274726163745f65787072657373696f6e735f7265735d05013852697374726574746f506f696e74000158626c696e6465645f73636f70655f6469645f686173685d05013852697374726574746f506f696e7400005905000003020000004905005d050c40637572766532353531395f64616c656b2472697374726574746f3852697374726574746f506f696e74000004006105013045647761726473506f696e74000061050c40637572766532353531395f64616c656b1c656477617264733045647761726473506f696e74000010010458650501304669656c64456c656d656e7400010459650501304669656c64456c656d656e740001045a650501304669656c64456c656d656e7400010454650501304669656c64456c656d656e74000065051840637572766532353531395f64616c656b1c6261636b656e641873657269616c0c753634146669656c64384669656c64456c656d656e74353100000400690501205b7536343b20355d000069050000030500000020006d05083c70616c6c65745f6964656e74697479144572726f7204045400018434416c72656164794c696e6b6564000004dc4f6e65207365636f6e64617279206f72207072696d617279206b65792063616e206f6e6c792062656c6f6e6720746f206f6e6520444944584d697373696e6743757272656e744964656e74697479000104ac4d697373696e672063757272656e74206964656e74697479206f6e20746865207472616e73616374696f6e30556e617574686f72697a6564000204bc5369676e61746f7279206973206e6f742070726520617574686f72697a656420627920746865206964656e7469747944496e76616c69644163636f756e744b6579000304a84163636f756e742049642063616e6e6f74206265206578747261637465642066726f6d207369676e65725c556e417574686f72697a656443646450726f76696465720004049c4f6e6c792043444420736572766963652070726f7669646572732061726520616c6c6f7765642e74496e76616c6964417574686f72697a6174696f6e46726f6d4f776e6572000504a0416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865206f776e65722e8c496e76616c6964417574686f72697a6174696f6e46726f6d43646450726f7669646572000604bc416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865204344442070726f76696465722e644e6f7443646450726f76696465724174746573746174696f6e000704b84174746573746174696f6e20776173206e6f7420627920612043444420736572766963652070726f76696465722e70417574686f72697a6174696f6e734e6f74466f7253616d6544696473000804a0417574686f72697a6174696f6e7320617265206e6f7420666f72207468652073616d65204449442e4c4469644d757374416c726561647945786973740009046c54686520444944206d75737420616c72656164792065786973742e8043757272656e744964656e7469747943616e6e6f744265466f72776172646564000a044d0143757272656e74206964656e746974792063616e6e6f7420626520666f727761726465642c206974206973206e6f742061207365636f6e64617279206b6579206f6620746172676574206964656e746974792e50417574686f72697a6174696f6e45787069726564000b049c546865206f6666636861696e20617574686f72697a6174696f6e2068617320657870697265642e385461726765744861734e6f436464000c0480546865207461726765742044494420686173206e6f2076616c6964204344442e6c417574686f72697a6174696f6e4861734265656e5265766f6b6564000d04a8417574686f72697a6174696f6e20686173206265656e206578706c696369746c79207265766f6b65642e74496e76616c6964417574686f72697a6174696f6e5369676e6174757265000e048c416e20696e76616c696420617574686f72697a6174696f6e207369676e61747572652e344b65794e6f74416c6c6f776564000f04d454686973206b6579206973206e6f7420616c6c6f77656420746f2065786563757465206120676976656e206f7065726174696f6e2e344e6f745072696d6172794b657900100461014f6e6c7920746865207072696d617279206b657920697320616c6c6f77656420746f207265766f6b6520616e204964656e74697479205369676e61746f7279206f66662d636861696e20617574686f72697a6174696f6e2e3c446964446f65734e6f7445786973740011045c5468652044494420646f6573206e6f742065786973742e40446964416c72656164794578697374730012045c5468652044494420616c7265616479206578697374732e785365636f6e646172794b657973436f6e7461696e5072696d6172794b6579001304ac546865207365636f6e64617279206b65797320636f6e7461696e20746865207072696d617279206b65792e444661696c6564546f436861726765466565001404a0436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e284e6f74415369676e6572001504d85369676e6572206973206e6f742061207365636f6e64617279206b6579206f66207468652070726f7669646564206964656e746974796c43616e6e6f744465636f64655369676e65724163636f756e744964001604150143616e6e6f7420636f6e7665727420612060543a3a4163636f756e7449646020746f2060416e795369676e61747572653a3a5369676e65723a3a4163636f756e744964602e484d756c746953696748617342616c616e636500170421014d756c74697369672063616e206e6f7420626520756e6c696e6b65642066726f6d20616e206964656e74697479207768696c65206974207374696c6c20686f6c647320504f4c595880436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f7765640018040501436f6e666964656e7469616c2053636f706520636c61696d732063616e20626520616464656420627920616e204964656e7469747920746f2069742d73656c662e44496e76616c696453636f7065436c61696d001904bc4164646974696f6e206f662061206e65772073636f706520636c61696d206765747320696e76616c6964617465642e58436c61696d56617269616e744e6f74416c6c6f776564001a04e454727920746f20616464206120636c61696d2076617269616e74207573696e6720756e2d64657369676e617465642065787472696e7369632e805461726765744861734e6f6e5a65726f42616c616e6365417453636f70654964001b04510154727920746f2064656c6574652074686520495520636c61696d206576656e207768656e20746865207573657220686173206e6f6e207a65726f2062616c616e636520617420676976656e2073636f706549642e6443444449644e6f74556e69717565466f724964656e74697479001c041d0143444449642073686f756c6420626520756e6971756520262073616d652077697468696e20616c6c2063646420636c61696d7320706f737365737365642062792061204449442e30496e76616c69644344444964001d0409014e6f6e2073797374656d61746963204344442070726f7669646572732063616e206e6f74206372656174652064656661756c74206364645f696420636c61696d732e7c436c61696d416e6450726f6f6656657273696f6e73446f4e6f744d61746368001e049c436c61696d20616e642050726f6f662076657273696f6e732061726520646966666572656e742e544163636f756e744b657949734265696e6755736564001f04d0546865206163636f756e74206b6579206973206265696e6720757365642c2069742063616e277420626520756e6c696e6b65642e48437573746f6d53636f7065546f6f4c6f6e670020086c4120637573746f6d2073636f706520697320746f6f206c6f6e672e9c49742063616e206174206d6f737420626520603332602063686172616374657273206c6f6e672e00710500000275050075051064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f757038496e6163746976654d656d62657204184d6f6d656e740120000c010869647c01284964656e74697479496400013864656163746976617465645f61742001184d6f6d656e74000118657870697279f801384f7074696f6e3c4d6f6d656e743e00007905083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001086174f801444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733101013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e7d05083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e0081050c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d651043616c6c0001a41853797374656d0400150401ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53797374656d2c2052756e74696d653e00000010426162650400850401a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426162652c2052756e74696d653e0001002454696d657374616d7004009d0401b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54696d657374616d702c2052756e74696d653e0002001c496e64696365730400a90401b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496e64696365732c2052756e74696d653e00030028417574686f72736869700400b90401bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c417574686f72736869702c2052756e74696d653e0004002042616c616e6365730400d10401b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c42616c616e6365732c2052756e74696d653e000500204964656e746974790400190501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4964656e746974792c2052756e74696d653e0007004c4364645365727669636550726f7669646572730400790501e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4364645365727669636550726f7669646572732c2052756e74696d653e00080044506f6c796d657368436f6d6d69747465650400850501d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f6c796d657368436f6d6d69747465652c2052756e74696d653e0009004c436f6d6d69747465654d656d626572736869700400890501e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6d6d69747465654d656d626572736869702c2052756e74696d653e000a0048546563686e6963616c436f6d6d697474656504008d0501dd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546563686e6963616c436f6d6d69747465652c2052756e74696d653e000b0070546563686e6963616c436f6d6d69747465654d656d626572736869700400910501050273656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546563686e6963616c436f6d6d69747465654d656d626572736869702c2052756e74696d653e000c004055706772616465436f6d6d69747465650400950501d50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c55706772616465436f6d6d69747465652c2052756e74696d653e000d006855706772616465436f6d6d69747465654d656d626572736869700400990501fd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c55706772616465436f6d6d69747465654d656d626572736869702c2052756e74696d653e000e00204d756c746953696704009d0501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d756c74695369672c2052756e74696d653e000f00184272696467650400a10501ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4272696467652c2052756e74696d653e0010001c5374616b696e670400b10501b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5374616b696e672c2052756e74696d653e0011001c53657373696f6e0400a50601b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53657373696f6e2c2052756e74696d653e0013001c4772616e6470610400b10601b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4772616e6470612c2052756e74696d653e00150020496d4f6e6c696e650400dd0601b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496d4f6e6c696e652c2052756e74696d653e001700105375646f0400fd0601a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5375646f2c2052756e74696d653e0019001441737365740400010701a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c41737365742c2052756e74696d653e001a004c4361706974616c446973747269627574696f6e04001d0701e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4361706974616c446973747269627574696f6e2c2052756e74696d653e001b0028436865636b706f696e740400250701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436865636b706f696e742c2052756e74696d653e001c0044436f6d706c69616e63654d616e6167657204002d0701d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6d706c69616e63654d616e616765722c2052756e74696d653e001d003c436f72706f72617465416374696f6e0400310701d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f72706f72617465416374696f6e2c2052756e74696d653e001e003c436f72706f7261746542616c6c6f740400450701d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f72706f7261746542616c6c6f742c2052756e74696d653e001f0010506970730400490701a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506970732c2052756e74696d653e00210024506f7274666f6c696f0400590701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f7274666f6c696f2c2052756e74696d653e0022002c50726f746f636f6c4665650400650701c10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50726f746f636f6c4665652c2052756e74696d653e002300245363686564756c657204006d0701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5363686564756c65722c2052756e74696d653e00240028536574746c656d656e740400750701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c536574746c656d656e742c2052756e74696d653e00250028537461746973746963730400890701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c537461746973746963732c2052756e74696d653e0026000c53746f04008d0701a10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53746f2c2052756e74696d653e0027002054726561737572790400a10701b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54726561737572792c2052756e74696d653e0028001c5574696c6974790400ad0701b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5574696c6974792c2052756e74696d653e00290010426173650400b90701a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426173652c2052756e74696d653e002a003845787465726e616c4167656e74730400bd0701cd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c45787465726e616c4167656e74732c2052756e74696d653e002b001c52656c617965720400c10701b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c52656c617965722c2052756e74696d653e002c001c526577617264730400c50701b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c526577617264732c2052756e74696d653e002d0024546573745574696c730400cd0701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546573745574696c732c2052756e74696d653e003200008505084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279450101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f76651d010110626f6f6c00011063616c6c81050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f76651d010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e8905083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001086174f801444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733101013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e8d05084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279450101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f76651d010110626f6f6c00011063616c6c81050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f76651d010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e9105083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001086174f801444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733101013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e9505084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279450101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f76651d010110626f6f6c00011063616c6c81050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f76651d010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e9905083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001086174f801444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733101013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e9d05083c70616c6c65745f6d756c74697369671043616c6c04045400014c3c6372656174655f6d756c746973696708011c7369676e657273f001705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000134736967735f726571756972656420010c75363400001448437265617465732061206d756c7469736967002c2320417267756d656e7473a5012a20607369676e65727360202d205369676e657273206f6620746865206d756c7469736967202854686579206e65656420746f2061636365707420617574686f72697a6174696f6e206265666f72652074686579206172652061637475616c6c79206164646564292e19012a2060736967735f726571756972656460202d204e756d626572206f66207369677320726571756972656420746f2070726f636573732061206d756c74692d7369672074782e986372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6964656e746974791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616c81050140426f783c543a3a50726f706f73616c3e000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f73651d010110626f6f6c0001203d01437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e846372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6b65791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616c81050140426f783c543a3a50726f706f73616c3e000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f73651d010110626f6f6c0002203d01437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e6c6372656174655f70726f706f73616c5f61735f6964656e746974791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616c81050140426f783c543a3a50726f706f73616c3e000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f73651d010110626f6f6c0003206c437265617465732061206d756c74697369672070726f706f73616c002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e586372656174655f70726f706f73616c5f61735f6b65791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616c81050140426f783c543a3a50726f706f73616c3e000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f73651d010110626f6f6c0004206c437265617465732061206d756c74697369672070726f706f73616c002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4c617070726f76655f61735f6964656e746974790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c753634000518e4417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea42a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e38617070726f76655f61735f6b65790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340006183101417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea42a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4872656a6563745f61735f6964656e746974790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c753634000718e052656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea02a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e3472656a6563745f61735f6b65790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340008182d0152656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea02a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e886163636570745f6d756c74697369675f7369676e65725f61735f6964656e7469747904011c617574685f696420010c7536340009100d01416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206964656e746974792e002c2320417267756d656e7473ac2a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e746163636570745f6d756c74697369675f7369676e65725f61735f6b657904011c617574685f696420010c753634000a102901416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206b657920284163636f756e744964292e002c2320417267756d656e7473ac2a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e4c6164645f6d756c74697369675f7369676e65720401187369676e657298015c5369676e61746f72793c543a3a4163636f756e7449643e000b102901416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e002c2320417267756d656e7473782a20607369676e657260202d205369676e61746f727920746f206164642e5872656d6f76655f6d756c74697369675f7369676e65720401187369676e657298015c5369676e61746f72793c543a3a4163636f756e7449643e000c103d0152656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e002c2320417267756d656e7473842a20607369676e657260202d205369676e61746f727920746f2072656d6f76652e806164645f6d756c74697369675f7369676e6572735f7669615f63726561746f720801206d756c7469736967000130543a3a4163636f756e74496400011c7369676e657273f001705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000d244501416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865246d756c74697369672e002c2320417267756d656e74739c2a20606d756c746973696760202d2041646472657373206f6620746865206d756c746920736967842a20607369676e65727360202d205369676e61746f7269657320746f206164642e00202320576569676874a4603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e2829608c72656d6f76655f6d756c74697369675f7369676e6572735f7669615f63726561746f720801206d756c7469736967000130543a3a4163636f756e74496400011c7369676e657273f001705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000e248c52656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672ef054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865206d756c74697369672e002c2320417267756d656e74739c2a20606d756c746973696760202d2041646472657373206f6620746865206d756c74697369672e902a20607369676e65727360202d205369676e61746f7269657320746f2072656d6f76652e00202320576569676874a4603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e282960506368616e67655f736967735f7265717569726564040134736967735f726571756972656420010c753634000f144d014368616e67657320746865206e756d626572206f66207369676e6174757265732072657175697265642062792061206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865406d756c746973696720697473656c662e002c2320417267756d656e7473d82a2060736967735f726571756972656460202d204e6577206e756d626572206f66207265717569726564207369676e6174757265732e506d616b655f6d756c74697369675f7369676e65720401206d756c7469736967000130543a3a4163636f756e7449640010144d01416464732061206d756c74697369672061732061207369676e6572206f662063757272656e7420646964206966207468652063757272656e7420646964206973207468652063726561746f72206f6620746865246d756c74697369672e002c2320417267756d656e7473802a20606d756c746973696760202d206d756c7469207369672061646472657373546d616b655f6d756c74697369675f7072696d6172790801206d756c7469736967000130543a3a4163636f756e7449640001506f7074696f6e616c5f6364645f617574685f6964f8012c4f7074696f6e3c7536343e0011145d01416464732061206d756c746973696720617320746865207072696d617279206b6579206f66207468652063757272656e7420646964206966207468652063757272656e7420444944206973207468652063726561746f72406f6620746865206d756c74697369672e002c2320417267756d656e7473842a20606d756c74695f73696760202d206d756c746920736967206164647265737368657865637574655f7363686564756c65645f70726f706f73616c1001206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340001306d756c74697369675f6469647c01284964656e7469747949640001405f70726f706f73616c5f7765696768742001185765696768740012047101526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20666f7220657865637574696e67207363686564756c6564206d756c74697369672070726f706f73616c2e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ea105083470616c6c65745f6272696467651043616c6c040454000144446368616e67655f636f6e74726f6c6c6572040128636f6e74726f6c6c6572000130543a3a4163636f756e744964000010a04368616e6765732074686520636f6e74726f6c6c6572206163636f756e742061732061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e306368616e67655f61646d696e04011461646d696e000130543a3a4163636f756e744964000110744368616e67657320746865206272696467652061646d696e206b65792e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e3c6368616e67655f74696d656c6f636b04012074696d656c6f636b100138543a3a426c6f636b4e756d626572000210704368616e676573207468652074696d656c6f636b20706572696f642e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e18667265657a650003145d01467265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c65206966206974206973206e6f7420616c72656164792066726f7a656e2e205768656e2074686549016272696467652069732066726f7a656e2c20617474656d70746564207472616e73616374696f6e732067657420706f7374706f6e656420696e7374656164206f662067657474696e672068616e646c65642e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e20756e667265657a650004101101556e667265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c652069662069742069732066726f7a656e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c6368616e67655f6272696467655f6c696d6974080118616d6f756e7418011c42616c616e63650001206475726174696f6e100138543a3a426c6f636b4e756d626572000514684368616e6765732074686520627269646765206c696d6974732e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ea42d20604469766973696f6e42795a65726f6020696620606475726174696f6e60206973207a65726f2e586368616e67655f6272696467655f6578656d707465640401206578656d70746564a505015c5665633c284964656e7469747949642c20626f6f6c293e0006109c4368616e6765732074686520627269646765206c696d6974206578656d70746564206c6973742e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e58666f7263655f68616e646c655f6272696467655f74780401246272696467655f74787901015842726964676554783c543a3a4163636f756e7449643e0007142501466f726365732068616e646c696e672061207472616e73616374696f6e20627920627970617373696e672074686520627269646765206c696d697420616e642074696d656c6f636b2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e21012d20604e6f56616c69644364646020696620606272696467655f74782e726563697069656e746020646f6573206e6f74206861766520612076616c69642043444420636c61696d2e5c62617463685f70726f706f73655f6272696467655f74780401286272696467655f747873ad05016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000824450150726f706f736573206120766563746f72206f6620627269646765207472616e73616374696f6e732e2054686520766563746f722069732070726f63657373656420756e74696c207468652066697273744d0170726f706f73616c2077686963682063617573657320616e206572726f722c20696e207768696368206361736520746865206572726f722069732072657475726e656420616e64207468652072657374206f667070726f706f73616c7320617265206e6f742070726f6365737365642e00242323204572726f7273c82d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e00202320576569676874b0603530305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829604470726f706f73655f6272696467655f74780401246272696467655f74787901015842726964676554783c543a3a4163636f756e7449643e000918490150726f706f736573206120627269646765207472616e73616374696f6e2c20776869636820616d6f756e747320746f206d616b696e672061206d756c74697369672070726f706f73616c20666f72207468655501627269646765207472616e73616374696f6e20696620746865207472616e73616374696f6e206973206e6577206f7220617070726f76696e6720616e206578697374696e672070726f706f73616c20696620746865987472616e73616374696f6e2068617320616c7265616479206265656e2070726f706f7365642e00242323204572726f7273c82d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e4068616e646c655f6272696467655f74780401246272696467655f74787901015842726964676554783c543a3a4163636f756e7449643e000a18c048616e646c657320616e20617070726f76656420627269646765207472616e73616374696f6e2070726f706f73616c2e00242323204572726f727319012d206042616443616c6c65726020696620606f726967696e60206973206e6f74206053656c663a3a636f6e74726f6c6c657260206f7220206053656c663a3a61646d696e602eec2d206054696d656c6f636b656454786020696620746865207472616e73616374696f6e20737461747573206973206054696d656c6f636b6564602e09012d206050726f706f73616c416c726561647948616e646c65646020696620746865207472616e73616374696f6e20737461747573206973206048616e646c6564602e28667265657a655f7478730401286272696467655f747873ad05016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000b2088467265657a657320676976656e20627269646765207472616e73616374696f6e732e8501496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e00202320576569676874b0603430305f3030305f303030202b20325f3030305f303030202a206272696467655f7478732e6c656e28296030756e667265657a655f7478730401286272696467655f747873ad05016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000c2090556e667265657a657320676976656e20627269646765207472616e73616374696f6e732e8501496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e00202320576569676874b0603430305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829606868616e646c655f7363686564756c65645f6272696467655f74780401246272696467655f74787901015842726964676554783c543a3a4163636f756e7449643e000d189901526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f2068616e646c652061207363686564756c65642074696d656c6f636b656420627269646765207472616e73616374696f6e2e002023204572726f7273982d20604261644f726967696e6020696620606f726967696e60206973206e6f7420726f6f742ef82d206050726f706f73616c416c726561647948616e646c656460206966207472616e73616374696f6e20737461747573206973206048616e646c6564602ebc2d206046726f7a656e547860206966207472616e73616374696f6e20737461747573206973206046726f7a656e602e406164645f667265657a655f61646d696e040130667265657a655f61646d696e000130543a3a4163636f756e744964000e104c416464206120667265657a652061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c72656d6f76655f667265657a655f61646d696e040130667265657a655f61646d696e000130543a3a4163636f756e744964000f105852656d6f7665206120667265657a652061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e2872656d6f76655f7478730401286272696467655f747873ad05016c5665633c42726964676554783c543a3a4163636f756e7449643e3e0010148452656d6f766520676976656e20627269646765207472616e73616374696f6e732e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ed02d20604e6f7446726f7a656e60206966206120747820696e20606272696467655f74787360206973206e6f742066726f7a656e2e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ea505000002a90500a905000004087c1d0100ad05000002790100b105083870616c6c65745f7374616b696e671043616c6c04045400018010626f6e640c0128636f6e74726f6c6c6572d504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565d101013042616c616e63654f663c543e0001147061796565b505017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e000058610154616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c80626520746865206163636f756e74207468617420636f6e74726f6c732069742e002d016076616c756560206d757374206265206d6f7265207468616e2074686520606d696e696d756d5f62616c616e636560207370656369666965642062792060543a3a43757272656e6379602e002101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e003c456d6974732060426f6e646564602e002823203c7765696768743ed02d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e1c2d204f2831292e642d20546872656520657874726120444220656e74726965732e004d014e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e65643d01756e6c6573732074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e482d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a2d012d20526561643a20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c2043757272656e74204572612c20486973746f72792044657074682c204c6f636b73dc2d2057726974653a20426f6e6465642c2050617965652c205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e28626f6e645f65787472610401386d61785f6164646974696f6e616cd101013042616c616e63654f663c543e000154610141646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e636520757030666f72207374616b696e672e004d01557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e6101556e6c696b65205b60626f6e64605d206f72205b60756e626f6e64605d20746869732066756e6374696f6e20646f6573206e6f7420696d706f736520616e79206c696d69746174696f6e206f6e2074686520616d6f756e7448746861742063616e2062652061646465642e005d01546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c657220616e64f469742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e003c456d6974732060426f6e646564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e1c2d204f2831292e3c2d204f6e6520444220656e7472792e302d2d2d2d2d2d2d2d2d2d2d2d284442205765696768743a11012d20526561643a2045726120456c656374696f6e205374617475732c20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c204c6f636b73a02d2057726974653a205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e18756e626f6e6404011476616c7565d101013042616c616e63654f663c543e00028051015363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e64fc706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e2101543a3a43757272656e63793a3a6d696e696d756d5f62616c616e636528292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e0045014f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c20796f752063616e2063616c6c206077697468647261775f756e626f6e6465646020746f2061637475616c6c79206d6f7665bc7468652066756e6473206f7574206f66206d616e6167656d656e7420726561647920666f72207472616e736665722e0039014e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d41585f554e4c4f434b494e475f4348554e4b536029390163616e20636f2d657869737473206174207468652073616d652074696d652e20496e207468617420636173652c205b6043616c6c3a3a77697468647261775f756e626f6e646564605d206e656564f8746f2062652063616c6c656420666972737420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e0044456d6974732060556e626f6e646564602e009453656520616c736f205b6043616c6c3a3a77697468647261775f756e626f6e646564605d2e002823203c7765696768743e3d012d20496e646570656e64656e74206f662074686520617267756d656e74732e204c696d697465642062757420706f74656e7469616c6c79206578706c6f697461626c6520636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732e61012d20456163682063616c6c20287265717569726573207468652072656d61696e646572206f662074686520626f6e6465642062616c616e636520746f2062652061626f766520606d696e696d756d5f62616c616e636560296d01202077696c6c2063617573652061206e657720656e74727920746f20626520696e73657274656420696e746f206120766563746f722028604c65646765722e756e6c6f636b696e676029206b65707420696e2073746f726167652e4d012020546865206f6e6c792077617920746f20636c65616e207468652061666f72656d656e74696f6e65642073746f72616765206974656d20697320616c736f20757365722d636f6e74726f6c6c6564207669615820206077697468647261775f756e626f6e646564602e3c2d204f6e6520444220656e7472792e282d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a21012d20526561643a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e744572612c204c6f636b732c205c5b4f726967696e204163636f756e745c5da82d2057726974653a204c6f636b732c204c65646765722c205c5b4f726967696e204163636f756e745c5d243c2f7765696768743e4477697468647261775f756e626f6e6465640401486e756d5f736c617368696e675f7370616e7310010c75333200037c290152656d6f766520616e7920756e6c6f636b6564206368756e6b732066726f6d207468652060756e6c6f636b696e67602071756575652066726f6d206f7572206d616e6167656d656e742e0031015468697320657373656e7469616c6c7920667265657320757020746861742062616c616e636520746f206265207573656420627920746865207374617368206163636f756e7420746f20646f4877686174657665722069742077616e74732e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e0048456d697473206057697468647261776e602e006853656520616c736f205b6043616c6c3a3a756e626f6e64605d2e002823203c7765696768743e51012d20436f756c6420626520646570656e64656e74206f6e2074686520606f726967696e6020617267756d656e7420616e6420686f77206d7563682060756e6c6f636b696e6760206368756e6b732065786973742e410120497420696d706c6965732060636f6e736f6c69646174655f756e6c6f636b656460207768696368206c6f6f7073206f76657220604c65646765722e756e6c6f636b696e67602c207768696368206973f020696e6469726563746c7920757365722d636f6e74726f6c6c65642e20536565205b60756e626f6e64605d20666f72206d6f72652064657461696c2e75012d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732c20796574207468652073697a65206f6620776869636820636f756c64206265206c61726765206261736564206f6e20606c6564676572602ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e3c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0501436f6d706c6578697479204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2072656d6f76651c5570646174653a21012d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c204c6f636b732c205b4f726967696e204163636f756e745da42d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c6564676572144b696c6c3a41012d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c20426f6e6465642c20536c617368696e67205370616e732c205b4f726967696e4420204163636f756e745d2c204c6f636b734d012d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c6420205b4f726967696e204163636f756e745d2c204c6f636b73702d2057726974657320456163683a205370616e536c617368202a205309014e4f54453a2057656967687420616e6e6f746174696f6e20697320746865206b696c6c207363656e6172696f2c20776520726566756e64206f74686572776973652e2c23203c2f7765696768743e2076616c69646174650401147072656673b905013856616c696461746f725072656673000444e44465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e2c2d2d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a8c2d20526561643a2045726120456c656374696f6e205374617475732c204c65646765727c2d2057726974653a204e6f6d696e61746f72732c2056616c696461746f72732c23203c2f7765696768743e206e6f6d696e61746504011c74617267657473c10501a05665633c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e00054c0d014465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e004d01456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e20546869732063616e206f6e6c792062652063616c6c6564207768656e885b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743e2d012d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f662060746172676574736020284e29fc77686963682069732063617070656420617420436f6d7061637441737369676e6d656e74733a3a4c494d495420284d41585f4e4f4d494e4154494f4e53292ed42d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e242d2d2d2d2d2d2d2d2d305765696768743a204f284e29807768657265204e20697320746865206e756d626572206f662074617267657473284442205765696768743ac42d2052656164733a2045726120456c656374696f6e205374617475732c204c65646765722c2043757272656e7420457261802d205772697465733a2056616c696461746f72732c204e6f6d696e61746f72732c23203c2f7765696768743e146368696c6c000644c44465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e502d20436f6e7461696e73206f6e6520726561642ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e202d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a842d20526561643a20457261456c656374696f6e5374617475732c204c65646765727c2d2057726974653a2056616c696461746f72732c204e6f6d696e61746f72732c23203c2f7765696768743e247365745f70617965650401147061796565b505017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e000740b42852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e242d2d2d2d2d2d2d2d2d382d205765696768743a204f283129302d204442205765696768743a48202020202d20526561643a204c656467657248202020202d2057726974653a2050617965652c23203c2f7765696768743e387365745f636f6e74726f6c6c6572040128636f6e74726f6c6c6572d504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263650008408c2852652d297365742074686520636f6e74726f6c6c6572206f6620612073746173682e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e282d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743af02d20526561643a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c6572f42d2057726974653a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c65722c23203c2f7765696768743e4c7365745f76616c696461746f725f636f756e7404010c6e65770d04010c75333200092090536574732074686520696465616c206e756d626572206f662076616c696461746f72732e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e305765696768743a204f2831295857726974653a2056616c696461746f7220436f756e742c23203c2f7765696768743e60696e6372656173655f76616c696461746f725f636f756e740401286164646974696f6e616c0d04010c753332000a1ca8496e6372656d656e74732074686520696465616c206e756d626572206f662076616c696461746f72732e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e8053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e2c23203c2f7765696768743e547363616c655f76616c696461746f725f636f756e74040118666163746f72c505011c50657263656e74000b1cd05363616c652075702074686520696465616c206e756d626572206f662076616c696461746f7273206279206120666163746f722e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e8053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e2c23203c2f7765696768743e686164645f7065726d697373696f6e65645f76616c696461746f720801206964656e746974797c01284964656e746974794964000138696e74656e6465645f636f756e74c905012c4f7074696f6e3c7533323e000c203d01476f7665726e616e636520636f6d6d6974746565206f6e20322f3320726473206d616a6f726974792063616e20696e74726f647563652061206e657720706f74656e7469616c206964656e746974799d01746f2074686520706f6f6c206f66207065726d697373696f6e656420656e7469746965732077686f2063616e2072756e2076616c696461746f72732e205374616b696e67206d6f64756c65207573657320605065726d697373696f6e65644964656e74697479605501746f20656e737572652076616c696461746f7273206861766520636f6d706c65746564204b594220636f6d706c69616e636520616e6420636f6e736964657273207468656d20666f722076616c69646174696f6e2e002c2320417267756d656e7473e82a206f726967696e205265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e882a206964656e746974792056616c696461746f722773204964656e7469747949642e05012a20696e74656e6465645f636f756e74204e6f2e206f662076616c696461746f727320676976656e206964656e7469747920696e74656e647320746f2072756e2e7472656d6f76655f7065726d697373696f6e65645f76616c696461746f720401206964656e746974797c01284964656e746974794964000d1ca90152656d6f766520616e206964656e746974792066726f6d2074686520706f6f6c206f66202877616e6e616265292076616c696461746f72206964656e7469746965732e204566666563747320617265206b6e6f776e20696e20746865206e6578742073657373696f6e2e19015374616b696e67206d6f64756c6520636865636b7320605065726d697373696f6e65644964656e746974796020746f20656e737572652076616c696461746f7273206861766560636f6d706c65746564204b594220636f6d706c69616e6365002c2320417267756d656e7473f02a206f726967696e205265717569726564206f726967696e20666f722072656d6f76696e67206120706f74656e7469616c2076616c696461746f722e882a206964656e746974792056616c696461746f722773204964656e7469747949642e7876616c69646174655f6364645f6578706972795f6e6f6d696e61746f727304011c74617267657473910101445665633c543a3a4163636f756e7449643e000e28a056616c696461746520746865206e6f6d696e61746f727320434444206578706972792074696d652e00f0496620616e206163636f756e742066726f6d206120676976656e20736574206f662061646472657373206973206e6f6d696e6174696e67207468656ed0636865636b2074686520434444206578706972792074696d65206f6620697420616e64206966206974206973206578706972656431017468656e20746865206163636f756e742073686f756c6420626520756e626f6e64656420616e642072656d6f7665642066726f6d20746865206e6f6d696e6174696e672070726f636573732e0024233c7765696768743e982d20446570656e6473206f6e20706173736564206c697374206f66204163636f756e7449642e29012d20446570656e6473206f6e20746865206e6f2e206f6620636c61696d206973737565727320616e206163636f756e7449642068617320666f722074686520434444206578706972792e28233c2f7765696768743e487365745f636f6d6d697373696f6e5f63617004011c6e65775f6361709501011c50657262696c6c000f1421014368616e67657320636f6d6d697373696f6e2072617465207768696368206170706c69657320746f20616c6c2076616c696461746f72732e204f6e6c7920476f7665726e616e6365a8636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e002c2320417267756d656e74738c2a20606e65775f6361706020746865206e657720636f6d6d697373696f6e206361702e587365745f6d696e5f626f6e645f7468726573686f6c640401246e65775f76616c756518013042616c616e63654f663c543e00101401014368616e676573206d696e20626f6e642076616c756520746f206265207573656420696e2076616c696461746528292e204f6e6c7920476f7665726e616e6365a8636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e002c2320417267756d656e7473742a20606e65775f76616c75656020746865206e6577206d696e696d756d34666f7263655f6e6f5f65726173001124ac466f72636520746865726520746f206265206e6f206e6577206572617320696e646566696e6974656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e3c2d204e6f20617267756d656e74732e382d205765696768743a204f283129442d2057726974653a20466f7263654572612c23203c2f7765696768743e34666f7263655f6e65775f6572610012284901466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f6620746865206e6578742073657373696f6e2e20416674657220746869732c2069742077696c6c2062659c726573657420746f206e6f726d616c20286e6f6e2d666f7263656429206265686176696f75722e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e3c2d204e6f20617267756d656e74732e382d205765696768743a204f283129402d20577269746520466f7263654572612c23203c2f7765696768743e447365745f696e76756c6e657261626c6573040134696e76756c6e657261626c6573910101445665633c543a3a4163636f756e7449643e001320c8536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e182d204f285629582d2057726974653a20496e76756c6e657261626c65732c23203c2f7765696768743e34666f7263655f756e7374616b650801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c7533320014280901466f72636520612063757272656e74207374616b657220746f206265636f6d6520636f6d706c6574656c7920756e7374616b65642c20696d6d6564696174656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743ee84f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2062652072656d6f766564b452656164733a20426f6e6465642c20536c617368696e67205370616e732c204163636f756e742c204c6f636b7381015772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c204163636f756e742c204c6f636b736857726974657320456163683a205370616e536c617368202a20532c23203c2f7765696768743e50666f7263655f6e65775f6572615f616c776179730015200101466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f662073657373696f6e7320696e646566696e6974656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e382d205765696768743a204f283129442d2057726974653a20466f7263654572612c23203c2f7765696768743e5463616e63656c5f64656665727265645f736c61736808010c657261100120457261496e646578000134736c6173685f696e6469636573d90301205665633c7533323e0016349443616e63656c20656e6163746d656e74206f66206120646566657272656420736c6173682e00b043616e2062652063616c6c6564206279207468652060543a3a536c61736843616e63656c4f726967696e602e000101506172616d65746572733a2065726120616e6420696e6469636573206f662074686520736c617368657320666f7220746861742065726120746f206b696c6c2e002823203c7765696768743e50436f6d706c65786974793a204f2855202b205329b477697468205520756e6170706c69656420736c6173686573207765696768746564207769746820553d31303030d0616e64205320697320746865206e756d626572206f6620736c61736820696e646963657320746f2062652063616e63656c65642e642d20526561643a20556e6170706c69656420536c6173686573682d2057726974653a20556e6170706c69656420536c61736865732c23203c2f7765696768743e387061796f75745f7374616b65727308013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e6465780017640d01506179206f757420616c6c20746865207374616b65727320626568696e6420612073696e676c652076616c696461746f7220666f7220612073696e676c65206572612e0049012d206076616c696461746f725f73746173686020697320746865207374617368206163636f756e74206f66207468652076616c696461746f722e205468656972206e6f6d696e61746f72732c20757020746f2501202060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602c2077696c6c20616c736f207265636569766520746865697220726577617264732e31012d206065726160206d617920626520616e7920657261206265747765656e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e005501546865206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2e20416e79206163636f756e742063616e2063616c6c20746869732066756e6374696f6e2c206576656e206966746974206973206e6f74206f6e65206f6620746865207374616b6572732e00fc546869732063616e206f6e6c792062652063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743efc2d2054696d6520636f6d706c65786974793a206174206d6f7374204f284d61784e6f6d696e61746f72526577617264656450657256616c696461746f72292ec02d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e2c2d2d2d2d2d2d2d2d2d2d2d19014e20697320746865204e756d626572206f66207061796f75747320666f72207468652076616c696461746f722028696e636c7564696e67207468652076616c696461746f72291c5765696768743a842d205265776172642044657374696e6174696f6e205374616b65643a204f284e29c02d205265776172642044657374696e6174696f6e20436f6e74726f6c6c657220284372656174696e67293a204f284e29284442205765696768743a25012d20526561643a20457261456c656374696f6e5374617475732c2043757272656e744572612c20486973746f727944657074682c204572617356616c696461746f725265776172642c29012020202020202020457261735374616b657273436c69707065642c2045726173526577617264506f696e74732c204572617356616c696461746f725072656673202838206974656d73290d012d205265616420456163683a20426f6e6465642c204c65646765722c2050617965652c204c6f636b732c2053797374656d204163636f756e74202835206974656d7329d42d20577269746520456163683a2053797374656d204163636f756e742c204c6f636b732c204c6564676572202833206974656d73292c23203c2f7765696768743e187265626f6e6404011476616c7565d101013042616c616e63654f663c543e001838dc5265626f6e64206120706f7274696f6e206f6620746865207374617368207363686564756c656420746f20626520756e6c6f636b65642e005101546865206469737061746368206f726967696e206d757374206265207369676e65642062792074686520636f6e74726f6c6c65722c20616e642069742063616e206265206f6e6c792063616c6c6564207768656e885b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ed02d2054696d6520636f6d706c65786974793a204f284c292c207768657265204c20697320756e6c6f636b696e67206368756e6b73902d20426f756e64656420627920604d41585f554e4c4f434b494e475f4348554e4b53602ef02d2053746f72616765206368616e6765733a2043616e277420696e6372656173652073746f726167652c206f6e6c792064656372656173652069742e3c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743afc202020202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c204c6f636b732c205b4f726967696e204163636f756e745db4202020202d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e447365745f686973746f72795f64657074680801446e65775f686973746f72795f64657074680d040120457261496e6465780001485f6572615f6974656d735f64656c657465640d04010c7533320019542d015365742060486973746f72794465707468602076616c75652e20546869732066756e6374696f6e2077696c6c2064656c65746520616e7920686973746f727920696e666f726d6174696f6e7c7768656e2060486973746f727944657074686020697320726564756365642e002c506172616d65746572733a0d012d20606e65775f686973746f72795f6465707468603a20546865206e657720686973746f727920646570746820796f7520776f756c64206c696b6520746f207365742e45012d20606572615f6974656d735f64656c65746564603a20546865206e756d626572206f66206974656d7320746861742077696c6c2062652064656c6574656420627920746869732064697370617463682e4101202020546869732073686f756c64207265706f727420616c6c207468652073746f72616765206974656d7320746861742077696c6c2062652064656c6574656420627920636c656172696e67206f6c64410120202065726120686973746f72792e204e656564656420746f207265706f727420616e2061636375726174652077656967687420666f72207468652064697370617463682e20547275737465642062799c20202060526f6f746020746f207265706f727420616e206163637572617465206e756d6265722e00504f726967696e206d75737420626520726f6f742e002823203c7765696768743edc2d20453a204e756d626572206f6620686973746f7279206465707468732072656d6f7665642c20692e652e203130202d3e2037203d2033382d205765696768743a204f284529302d204442205765696768743a9c202020202d2052656164733a2043757272656e74204572612c20486973746f72792044657074686c202020202d205772697465733a20486973746f72792044657074682d01202020202d20436c6561722050726566697820456163683a20457261205374616b6572732c204572615374616b657273436c69707065642c204572617356616c696461746f7250726566737d01202020202d2057726974657320456163683a204572617356616c696461746f725265776172642c2045726173526577617264506f696e74732c2045726173546f74616c5374616b652c2045726173537461727453657373696f6e496e6465782c23203c2f7765696768743e28726561705f73746173680801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c753332001a3c5d0152656d6f766520616c6c20646174612073747275637475726520636f6e6365726e696e672061207374616b65722f7374617368206f6e6365206974732062616c616e636520697320617420746865206d696e696d756d2e5d015468697320697320657373656e7469616c6c79206571756976616c656e7420746f206077697468647261775f756e626f6e64656460206578636570742069742063616e2062652063616c6c656420627920616e796f6e65f4616e6420746865207461726765742060737461736860206d7573742068617665206e6f2066756e6473206c656674206265796f6e64207468652045442e008c546869732063616e2062652063616c6c65642066726f6d20616e79206f726967696e2e00fc2d20607374617368603a20546865207374617368206163636f756e7420746f20726561702e204974732062616c616e6365206d757374206265207a65726f2e002823203c7765696768743e2101436f6d706c65786974793a204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e73206f6e20746865206163636f756e742e284442205765696768743ad42d2052656164733a205374617368204163636f756e742c20426f6e6465642c20536c617368696e67205370616e732c204c6f636b73a1012d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c205374617368204163636f756e742c204c6f636b73702d2057726974657320456163683a205370616e536c617368202a20532c23203c2f7765696768743e607375626d69745f656c656374696f6e5f736f6c7574696f6e14011c77696e6e657273cd05014c5665633c56616c696461746f72496e6465783e00011c636f6d70616374d1050148436f6d7061637441737369676e6d656e747300011473636f72659d060134456c656374696f6e53636f726500010c657261100120457261496e64657800011073697a65a1060130456c656374696f6e53697a65001bc4e05375626d697420616e20656c656374696f6e20726573756c7420746f2074686520636861696e2e2049662074686520736f6c7574696f6e3a0030312e2069732076616c69642e1101322e206861732061206265747465722073636f7265207468616e206120706f74656e7469616c6c79206578697374696e6720736f6c7574696f6e206f6e20636861696e2e00807468656e2c2069742077696c6c206265205f7075745f206f6e20636861696e2e00a84120736f6c7574696f6e20636f6e7369737473206f662074776f20706965636573206f6620646174613a00f0312e206077696e6e657273603a206120666c617420766563746f72206f6620616c6c207468652077696e6e657273206f662074686520726f756e642e4d01322e206061737369676e6d656e7473603a2074686520636f6d706163742076657273696f6e206f6620616e2061737369676e6d656e7420766563746f72207468617420656e636f6465732074686520656467652c202020776569676874732e001d01426f7468206f66207768696368206d617920626520636f6d7075746564207573696e67205f70687261676d656e5f2c206f7220616e79206f7468657220616c676f726974686d2e00a44164646974696f6e616c6c792c20746865207375626d6974746572206d7573742070726f766964653a00c42d20546865206073636f7265602074686174207468657920636c61696d20746865697220736f6c7574696f6e206861732e004901426f74682076616c696461746f727320616e64206e6f6d696e61746f72732077696c6c20626520726570726573656e74656420627920696e646963657320696e2074686520736f6c7574696f6e2e205468651901696e64696365732073686f756c6420726573706563742074686520636f72726573706f6e64696e6720747970657320285b6056616c696461746f72496e646578605d20616e642d015b604e6f6d696e61746f72496e646578605d292e204d6f72656f7665722c20746865792073686f756c642062652076616c6964207768656e207573656420746f20696e64657820696e746f4d015b60536e617073686f7456616c696461746f7273605d20616e64205b60536e617073686f744e6f6d696e61746f7273605d2e20416e7920696e76616c696420696e6465782077696c6c206361757365207468655d01736f6c7574696f6e20746f2062652072656a65637465642e2054686573652074776f2073746f72616765206974656d73206172652073657420647572696e672074686520656c656374696f6e2077696e646f7720616e64946d6179206265207573656420746f2064657465726d696e652074686520696e64696365732e005c4120736f6c7574696f6e2069732076616c69642069663a00e0302e204974206973207375626d6974746564207768656e205b60457261456c656374696f6e537461747573605d20697320604f70656e602ef4312e2049747320636c61696d65642073636f726520697320657175616c20746f207468652073636f726520636f6d7075746564206f6e2d636861696e2ea8322e2050726573656e74732074686520636f7272656374206e756d626572206f662077696e6e6572732e5101332e20416c6c20696e6465786573206d7573742062652076616c7565206163636f7264696e6720746f2074686520736e617073686f7420766563746f72732e20416c6c20656467652076616c756573206d7573745901202020616c736f20626520636f727265637420616e642073686f756c64206e6f74206f766572666c6f7720746865206772616e756c6172697479206f662074686520726174696f20747970652028692e652e203235363c2020206f722062696c6c696f6e292e0901342e20466f72206561636820656467652c20616c6c2074617267657473206172652061637475616c6c79206e6f6d696e617465642062792074686520766f7465722e68352e2048617320636f72726563742073656c662d766f7465732e00bc4120736f6c7574696f6e732073636f726520697320636f6e736973746564206f66203320706172616d65746572733a006101312e20606d696e207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d6178696d697a65642e6101322e206073756d207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d696e696d697a65642e3d01332e206073756d207b20737570706f72742e746f74616c5e32207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265982020206d696e696d697a65642028746f20656e73757265206c6573732076617269616e636529002823203c7765696768743e1501546865207472616e73616374696f6e20697320617373756d656420746f20626520746865206c6f6e6765737420706174682c20612062657474657220736f6c7574696f6e2ea020202d20496e697469616c20736f6c7574696f6e20697320616c6d6f7374207468652073616d652e410120202d20576f72736520736f6c7574696f6e20697320726574726163656420696e207072652d64697370617463682d636865636b73207768696368207365747320697473206f776e207765696768742e2c23203c2f7765696768743e847375626d69745f656c656374696f6e5f736f6c7574696f6e5f756e7369676e656414011c77696e6e657273cd05014c5665633c56616c696461746f72496e6465783e00011c636f6d70616374d1050148436f6d7061637441737369676e6d656e747300011473636f72659d060134456c656374696f6e53636f726500010c657261100120457261496e64657800011073697a65a1060130456c656374696f6e53697a65001c24bc556e7369676e65642076657273696f6e206f6620607375626d69745f656c656374696f6e5f736f6c7574696f6e602e0059014e6f746520746861742074686973206d757374207061737320746865205b6056616c6964617465556e7369676e6564605d20636865636b207768696368206f6e6c7920616c6c6f7773207472616e73616374696f6e735d0166726f6d20746865206c6f63616c206e6f646520746f20626520696e636c756465642e20496e206f7468657220776f7264732c206f6e6c792074686520626c6f636b20617574686f722063616e20696e636c7564652061647472616e73616374696f6e20696e2074686520626c6f636b2e002823203c7765696768743e84536565205b607375626d69745f656c656374696f6e5f736f6c7574696f6e605d2e2c23203c2f7765696768743e607061796f75745f7374616b6572735f62795f73797374656d08013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e646578001d04210153797374656d2076657273696f6e206f6620607061796f75745f7374616b6572732829602e204f6e6c792062652063616c6c65642062792074686520726f6f74206f726967696e2e6c6368616e67655f736c617368696e675f616c6c6f7765645f666f7204013c736c617368696e675f73776974636899010138536c617368696e67537769746368001e14690153776974636820736c617368696e6720737461747573206f6e20746865206261736973206f6620676976656e2060536c617368696e67537769746368602e2043616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473742a206f726967696e202d204163636f756e744964206f6620726f6f742e01012a20736c617368696e675f737769746368202d20537769746368207573656420746f2073657420746865207461726765747320666f7220736c617368696e672eb07570646174655f7065726d697373696f6e65645f76616c696461746f725f696e74656e6465645f636f756e740801206964656e746974797c01284964656e7469747949640001486e65775f696e74656e6465645f636f756e7410010c753332001f18d05570646174652074686520696e74656e6465642076616c696461746f7220636f756e7420666f72206120676976656e204449442e002c2320417267756d656e747331012a206f726967696e207768696368206d75737420626520746865207265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e842a206964656e7469747920746f2061646420617320612076616c696461746f722ec42a206e65775f696e74656e6465645f636f756e74204e65772076616c7565206f6620696e74656e64656420636f756e742e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652eb505083870616c6c65745f7374616b696e674452657761726444657374696e6174696f6e04244163636f756e74496401000110185374616b656400000014537461736800010028436f6e74726f6c6c65720002001c4163636f756e7404000001244163636f756e74496400030000b905083870616c6c65745f7374616b696e673856616c696461746f7250726566730000080128636f6d6d697373696f6ebd05011c50657262696c6c00011c626c6f636b65641d010110626f6f6c0000bd05000006950100c105000002d50400c5050c3473705f61726974686d65746963287065725f7468696e67731c50657263656e740000040008010875380000c90504184f7074696f6e04045401100108104e6f6e6500000010536f6d650400100000010000cd050000020d0300d105083870616c6c65745f7374616b696e6748436f6d7061637441737369676e6d656e74730000400118766f74657331d50500000118766f74657332e10500000118766f74657333f50500000118766f74657334010600000118766f746573350d0600000118766f74657336190600000118766f74657337250600000118766f74657338310600000118766f746573393d060000011c766f746573313049060000011c766f746573313155060000011c766f746573313261060000011c766f74657331336d060000011c766f746573313479060000011c766f746573313585060000011c766f74657331369106000000d505000002d90500d905000004080d04dd0500dd050000060d0300e105000002e50500e5050000040c0d04e905dd0500e90500000408dd05ed0500ed05000006f10500f1050c3473705f61726974686d65746963287065725f7468696e677318506572553136000004000d03010c7531360000f505000002f90500f9050000040c0d04fd05dd0500fd0500000302000000e90500010600000205060005060000040c0d040906dd0500090600000303000000e905000d0600000211060011060000040c0d041506dd0500150600000304000000e9050019060000021d06001d060000040c0d042106dd0500210600000305000000e90500250600000229060029060000040c0d042d06dd05002d0600000306000000e90500310600000235060035060000040c0d043906dd0500390600000307000000e905003d0600000241060041060000040c0d044506dd0500450600000308000000e9050049060000024d06004d060000040c0d045106dd0500510600000309000000e90500550600000259060059060000040c0d045d06dd05005d060000030a000000e90500610600000265060065060000040c0d046906dd050069060000030b000000e905006d0600000271060071060000040c0d047506dd050075060000030c000000e9050079060000027d06007d060000040c0d048106dd050081060000030d000000e90500850600000289060089060000040c0d048d06dd05008d060000030e000000e90500910600000295060095060000040c0d049906dd050099060000030f000000e905009d06000003030000001800a106083870616c6c65745f7374616b696e6730456c656374696f6e53697a65000008012876616c696461746f7273dd05013856616c696461746f72496e6465780001286e6f6d696e61746f72730d0401384e6f6d696e61746f72496e6465780000a5060c3870616c6c65745f73657373696f6e1870616c6c65741043616c6c040454000108207365745f6b6579730801106b657973a906011c543a3a4b65797300011470726f6f6628011c5665633c75383e000038e453657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b657973602e1d01416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722ec05468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e00d0546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e002823203c7765696768743e11012d20436f6d706c65786974793a20604f283129602e2041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468206f6698202060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642eec2d20446252656164733a20606f726967696e206163636f756e74602c2060543a3a56616c696461746f7249644f66602c20604e6578744b65797360a02d2044625772697465733a20606f726967696e206163636f756e74602c20604e6578744b65797360802d204462526561647320706572206b65792069643a20604b65794f776e657260842d20446257726974657320706572206b65792069643a20604b65794f776e6572602c23203c2f7765696768743e2870757267655f6b657973000140c852656d6f76657320616e792073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c65722e00c05468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e005501546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265205369676e656420616e6420746865206163636f756e74206d757374206265206569746865722062655d01636f6e7665727469626c6520746f20612076616c696461746f72204944207573696e672074686520636861696e2773207479706963616c2061646472657373696e672073797374656d20287468697320757375616c6c7951016d65616e73206265696e67206120636f6e74726f6c6c6572206163636f756e7429206f72206469726563746c7920636f6e7665727469626c6520696e746f20612076616c696461746f722049442028776869636894757375616c6c79206d65616e73206265696e672061207374617368206163636f756e74292e002823203c7765696768743e61012d20436f6d706c65786974793a20604f2831296020696e206e756d626572206f66206b65792074797065732e2041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468a420206f662060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642eec2d20446252656164733a2060543a3a56616c696461746f7249644f66602c20604e6578744b657973602c20606f726967696e206163636f756e7460a02d2044625772697465733a20604e6578744b657973602c20606f726967696e206163636f756e7460842d20446257726974657320706572206b65792069643a20604b65794f776e6572602c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ea9060c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d652c53657373696f6e4b657973000010011c6772616e647061b10101d03c4772616e647061206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000110626162655d0401c43c42616265206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000124696d5f6f6e6c696e65bd0101d43c496d4f6e6c696e65206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300014c617574686f726974795f646973636f76657279ad0601fc3c417574686f72697479446973636f76657279206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c69630000ad060c5873705f617574686f726974795f646973636f766572790c617070185075626c696300000400c101013c737232353531393a3a5075626c69630000b1060c3870616c6c65745f6772616e6470611870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66b50601bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f6695040140543a3a4b65794f776e657250726f6f6600001009015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66b50601bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f6695040140543a3a4b65794f776e657250726f6f6600012409015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e000d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e306e6f74655f7374616c6c656408011464656c6179100138543a3a426c6f636b4e756d62657200016c626573745f66696e616c697a65645f626c6f636b5f6e756d626572100138543a3a426c6f636b4e756d62657200021c19014e6f74652074686174207468652063757272656e7420617574686f7269747920736574206f6620746865204752414e4450412066696e616c697479206761646765742068617325017374616c6c65642e20546869732077696c6c2074726967676572206120666f7263656420617574686f7269747920736574206368616e67652061742074686520626567696e6e696e671d016f6620746865206e6578742073657373696f6e2c20746f20626520656e6163746564206064656c61796020626c6f636b7320616674657220746861742e205468652064656c6179110173686f756c64206265206869676820656e6f75676820746f20736166656c7920617373756d6520746861742074686520626c6f636b207369676e616c6c696e67207468652501666f72636564206368616e67652077696c6c206e6f742062652072652d6f726765642028652e672e203130303020626c6f636b73292e20546865204752414e44504120766f74657273250177696c6c20737461727420746865206e657720617574686f7269747920736574207573696e672074686520676976656e2066696e616c697a656420626c6f636b20617320626173652e584f6e6c792063616c6c61626c6520627920726f6f742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632eb506084c73705f66696e616c6974795f6772616e6470614445717569766f636174696f6e50726f6f660804480124044e0110000801187365745f6964200114536574496400013065717569766f636174696f6eb906014845717569766f636174696f6e3c482c204e3e0000b906084c73705f66696e616c6974795f6772616e6470613045717569766f636174696f6e0804480124044e011001081c507265766f74650400bd060139016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265766f74653c482c204e3e2c0a417574686f726974795369676e61747572653e00000024507265636f6d6d69740400d1060141016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265636f6d6d69743c482c204e3e2c0a417574686f726974795369676e61747572653e00010000bd06084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401b101045601c106045301c50600100130726f756e645f6e756d62657220010c7536340001206964656e74697479b101010849640001146669727374cd06011828562c2053290001187365636f6e64cd06011828562c2053290000c106084066696e616c6974795f6772616e6470611c507265766f74650804480124044e01100008012c7461726765745f68617368240104480001347461726765745f6e756d6265721001044e0000c5060c4c73705f66696e616c6974795f6772616e6470610c617070245369676e617475726500000400c9060148656432353531393a3a5369676e61747572650000c9060c1c73705f636f72651c65643235353139245369676e617475726500000400150201205b75383b2036345d0000cd0600000408c106c50600d106084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401b101045601d506045301c50600100130726f756e645f6e756d62657220010c7536340001206964656e74697479b101010849640001146669727374d906011828562c2053290001187365636f6e64d906011828562c2053290000d506084066696e616c6974795f6772616e64706124507265636f6d6d69740804480124044e01100008012c7461726765745f68617368240104480001347461726765745f6e756d6265721001044e0000d90600000408d506c50600dd060c4070616c6c65745f696d5f6f6e6c696e651870616c6c65741043616c6c04045400010424686561727462656174080124686561727462656174e10601644865617274626561743c543a3a426c6f636b4e756d6265723e0001247369676e6174757265f50601bc3c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e61747572650000242823203c7765696768743e61012d20436f6d706c65786974793a20604f284b202b20452960207768657265204b206973206c656e677468206f6620604b6579736020286865617274626561742e76616c696461746f72735f6c656e2920616e642045206973d820206c656e677468206f6620606865617274626561742e6e6574776f726b5f73746174652e65787465726e616c5f61646472657373608820202d20604f284b29603a206465636f64696e67206f66206c656e67746820604b60ac20202d20604f284529603a206465636f64696e672f656e636f64696e67206f66206c656e6774682060456039012d20446252656164733a2070616c6c65745f73657373696f6e206056616c696461746f7273602c2070616c6c65745f73657373696f6e206043757272656e74496e646578602c20604b657973602c5820206052656365697665644865617274626561747360802d2044625772697465733a2060526563656976656448656172746265617473602c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ee106084070616c6c65745f696d5f6f6e6c696e6524486561727462656174042c426c6f636b4e756d626572011000140130626c6f636b5f6e756d62657210012c426c6f636b4e756d6265720001346e6574776f726b5f7374617465e50601484f70617175654e6574776f726b537461746500013473657373696f6e5f696e64657810013053657373696f6e496e64657800013c617574686f726974795f696e64657810012441757468496e64657800013876616c696461746f72735f6c656e10010c7533320000e5060c1c73705f636f7265206f6666636861696e484f70617175654e6574776f726b5374617465000008011c706565725f6964e90601304f706171756550656572496400014865787465726e616c5f616464726573736573ed0601505665633c4f70617175654d756c7469616464723e0000e906081c73705f636f7265304f70617175655065657249640000040028011c5665633c75383e0000ed06000002f10600f1060c1c73705f636f7265206f6666636861696e3c4f70617175654d756c7469616464720000040028011c5665633c75383e0000f506104070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139245369676e617475726500000400f9060148737232353531393a3a5369676e61747572650000f9060c1c73705f636f72651c73723235353139245369676e617475726500000400150201205b75383b2036345d0000fd06082c70616c6c65745f7375646f1043616c6c040454000110107375646f04011063616c6c81050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000028350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e547375646f5f756e636865636b65645f77656967687408011063616c6c81050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00011c5f776569676874200118576569676874000128350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e2d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b05375646f207573657220746f20737065636966792074686520776569676874206f66207468652063616c6c2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292ecc2d2054686520776569676874206f6620746869732063616c6c20697320646566696e6564206279207468652063616c6c65722e2c23203c2f7765696768743e1c7365745f6b657904010c6e6577d504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365000224710141757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e402d204f6e65204442206368616e67652e2c23203c2f7765696768743e1c7375646f5f617308010c77686fd504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011063616c6c81050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00032c4d0141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d406120676976656e206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e0107083070616c6c65745f61737365741043616c6c0404540001483c72656769737465725f7469636b65720401187469636b6572a401185469636b657200002405015265676973746572732061206e6577207469636b6572206f7220657874656e64732076616c6964697479206f6620616e206578697374696e67207469636b65722e11014e423a205469636b65722076616c696469747920646f6573206e6f742067657420636172727920666f7277617264207768656e2072656e6577696e67207469636b65722e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e782a20607469636b657260207469636b657220746f2072656769737465722e003423205065726d697373696f6e731c2a204173736574586163636570745f7469636b65725f7472616e7366657204011c617574685f696420010c75363400013068416363657074732061207469636b6572207472616e736665722e002d01436f6e73756d65732074686520617574686f72697a6174696f6e2060617574685f6964602028736565206070616c6c65745f6964656e746974793a3a636f6e73756d655f6175746860292e25014e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292ef82a2060617574685f69646020417574686f72697a6174696f6e204944206f66207469636b6572207472616e7366657220617574686f72697a6174696f6e2e00242323204572726f727369012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f696460206973206e6f7420612076616c6964207469636b6574207472616e7366657220617574686f72697a6174696f6e2e007c6163636570745f61737365745f6f776e6572736869705f7472616e7366657204011c617574685f696420010c753634000218ec546869732066756e6374696f6e206973207573656420746f20616363657074206120746f6b656e206f776e657273686970207472616e736665722e25014e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e2d012a2060617574685f69646020417574686f72697a6174696f6e204944206f662074686520746f6b656e206f776e657273686970207472616e7366657220617574686f72697a6174696f6e2e306372656174655f61737365741c01106e616d650102012441737365744e616d650001187469636b6572a401185469636b6572000124646976697369626c651d010110626f6f6c00012861737365745f74797065e901012441737365745479706500012c6964656e74696669657273f10101505665633c41737365744964656e7469666965723e00013466756e64696e675f726f756e64050701604f7074696f6e3c46756e64696e67526f756e644e616d653e00012864697361626c655f69751d010110626f6f6c0003682d01496e697469616c697a65732061206e657720736563757269747920746f6b656e2c20776974682074686520696e6974696174696e67206163636f756e7420617320697473206f776e65722e150154686520746f74616c20737570706c792077696c6c20696e697469616c6c79206265207a65726f2e20546f206d696e7420746f6b656e732c2075736520606973737565602e002c2320417267756d656e7473c5012a20606f726967696e60202d20636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e842a20606e616d6560202d20746865206e616d65206f662074686520746f6b656e2eb02a20607469636b657260202d20746865207469636b65722073796d626f6c206f662074686520746f6b656e2e2d012a2060646976697369626c6560202d206120626f6f6c65616e20746f206964656e74696679207468652064697669736962696c69747920737461747573206f662074686520746f6b656e2e802a206061737365745f7479706560202d2074686520617373657420747970652ec02a20606964656e7469666965727360202d206120766563746f72206f66206173736574206964656e746966696572732eb82a206066756e64696e675f726f756e6460202d206e616d65206f66207468652066756e64696e6720726f756e642e4d012a206064697361626c655f697560202d2077686574686572206f72206e6f7420696e766573746f7220756e697175656e65737320656e666f7263656d656e742073686f756c642062652064697361626c65642ec82020546869732063616e6e6f74206265206368616e676564206166746572206372656174696e67207468652061737365742e00242323204572726f7273fc2d2060496e76616c696441737365744964656e7469666965726020696620616e79206f6620606964656e74696669657273602061726520696e76616c69642e51012d20604d61784c656e6774684f6641737365744e616d6545786365656465646020696620606e616d65602773206c656e67746820657863656564732060543a3a41737365744e616d654d61784c656e677468602e55012d206046756e64696e67526f756e644e616d654d61784c656e67746845786365656465646020696620746865206e616d65206f66207468652066756e64696e6720726f756e64206973206c6f6e67657220746861747c60543a3a46756e64696e67526f756e644e616d654d61784c656e677468602ed42d20604173736574416c726561647943726561746564602069662061737365742077617320616c726561647920637265617465642e5d012d20605469636b6572546f6f4c6f6e676020696620607469636b6572602773206c656e6774682069732067726561746572207468616e2060636f6e6669672e6d61785f7469636b65725f6c656e6774686020636861696e28706172616d657465722ea1022d20605469636b65724e6f7441736369696020696620607469636b657260206973206e6f742079657420726567697374657265642c20616e6420636f6e7461696e73206e6f6e2d6173636969207072696e7461626c652063686172616374657273202866726f6d20636f646520333220746f2031323629206f7220616e7920636861726163746572206166746572206669727374206f6363757272656e6365206f6620605c30602e00382323205065726d697373696f6e732c2a20506f7274666f6c696f18667265657a650401187469636b6572a401185469636b657200042cbc467265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e00242323204572726f7273c02d2060416c726561647946726f7a656e6020696620607469636b65726020697320616c72656164792066726f7a656e2e003423205065726d697373696f6e731c2a20417373657420756e667265657a650401187469636b6572a401185469636b657200052cc4556e667265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722eb02a20607469636b657260202d20746865207469636b6572206f66207468652066726f7a656e20746f6b656e2e00242323204572726f7273b02d20604e6f7446726f7a656e6020696620607469636b657260206973206e6f742066726f7a656e207965742e003423205065726d697373696f6e731c2a2041737365743072656e616d655f61737365740801187469636b6572a401185469636b65720001106e616d650102012441737365744e616d650006345852656e616d6573206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e942a20606e616d6560202d20746865206e6577206e616d65206f662074686520746f6b656e2e00242323204572726f727311012d20604d61784c656e6774684f6641737365744e616d65457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e6060543a3a41737365744e616d654d61784c656e677468602e003423205065726d697373696f6e731c2a2041737365741469737375650801187469636b6572a401185469636b6572000118616d6f756e7418011c42616c616e636500072ca449737375652c206f72206d696e742c206e657720746f6b656e7320746f207468652063616c6c65722cac7768696368206d75737420626520616e20617574686f72697a65642065787465726e616c206167656e742e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e602a20607469636b657260206f662074686520746f6b656e2e942a2060616d6f756e7460206f6620746f6b656e73207468617420676574206973737565642e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f1872656465656d0801187469636b6572a401185469636b657200011476616c756518011c42616c616e636500083ccd0152656465656d73206578697374696e6720746f6b656e73206279207265647563696e67207468652062616c616e6365206f66207468652063616c6c657227732064656661756c7420706f7274666f6c696f20616e642074686520746f74616c20737570706c79206f662074686520746f6b656e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e942a206076616c75656020416d6f756e74206f6620746f6b656e7320746f2072656465656d2e002023204572726f727361012d2060556e617574686f72697a6564602049662063616c6c656420627920736f6d656f6e6520776974686f75742074686520617070726f7072696174652065787465726e616c206167656e74207065726d697373696f6e7359012d2060496e76616c69644772616e756c6172697479602049662074686520616d6f756e74206973206e6f7420646976697369626c652062792031305e3620666f72206e6f6e2d646976697369626c6520746f6b656e738d012d2060496e73756666696369656e74506f7274666f6c696f42616c616e636560204966207468652063616c6c657227732064656661756c7420706f7274666f6c696f20646f65736e2774206861766520656e6f75676820667265652062616c616e6365003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f386d616b655f646976697369626c650401187469636b6572a401185469636b657200092c944d616b657320616e20696e646976697369626c6520746f6b656e20646976697369626c652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e00242323204572726f7273ec2d20604173736574416c7265616479446976697369626c656020696620607469636b65726020697320616c726561647920646976697369626c652e003423205065726d697373696f6e731c2a204173736574346164645f646f63756d656e7473080110646f6373090701345665633c446f63756d656e743e0001187469636b6572a401185469636b6572000a248041646420646f63756d656e747320666f72206120676976656e20746f6b656e2e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2eb82a2060646f63736020446f63756d656e747320746f20626520617474616368656420746f20607469636b6572602e003423205065726d697373696f6e731c2a2041737365744072656d6f76655f646f63756d656e747308010c696473d502013c5665633c446f63756d656e7449643e0001187469636b6572a401185469636b6572000b248c52656d6f766520646f63756d656e747320666f72206120676976656e20746f6b656e2e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2ec82a20606964736020446f63756d656e74732069647320746f2062652072656d6f7665642066726f6d20607469636b6572602e003423205065726d697373696f6e731c2a204173736574447365745f66756e64696e675f726f756e640801187469636b6572a401185469636b65720001106e616d65e501014046756e64696e67526f756e644e616d65000c34ac5365747320746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e002c2320417267756d656e747329012a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2ee42a20606e616d6560202d207468652064657369726564206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e00242323204572726f727325012d206046756e64696e67526f756e644e616d654d61784c656e677468457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e7c60543a3a46756e64696e67526f756e644e616d654d61784c656e677468602e003423205065726d697373696f6e731c2a204173736574487570646174655f6964656e746966696572730801187469636b6572a401185469636b657200012c6964656e74696669657273f10101505665633c41737365744964656e7469666965723e000d34785570646174657320746865206173736574206964656e746966696572732e002c2320417267756d656e747329012a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e59012a20606964656e7469666965727360202d20746865206173736574206964656e7469666965727320746f206265207570646174656420696e2074686520666f726d206f66206120766563746f72206f66207061697273cc2020206f6620604964656e746966696572547970656020616e64206041737365744964656e746966696572602076616c75652e00242323204572726f727331012d2060496e76616c696441737365744964656e7469666965726020696620606964656e746966696572736020636f6e7461696e7320616e7920696e76616c6964206964656e7469666965722e003423205065726d697373696f6e731c2a20417373657450636c61696d5f636c61737369635f7469636b65720801187469636b6572a401185469636b6572000148657468657265756d5f7369676e61747572650d07013845636473615369676e6174757265000e38fc436c61696d20612073797374656d61746963616c6c7920726573657276656420506f6c796d61746820436c61737369632028504d432920607469636b657260ac616e64207472616e7366657220697420746f2074686520606f726967696e602773206964656e746974792e003d01546f2076657269667920746861742074686520606f726967696e6020697320696e20636f6e74726f6c206f662074686520457468657265756d206163636f756e74206f6e2074686520626f6f6b732c1101616e2060657468657265756d5f7369676e61747572656020636f6e7461696e696e672074686520606f726967696e6027732044494420617320746865206d657373616765a86d7573742062652070726f7669646564206279207468617420457468657265756d206163636f756e742e002023204572726f727331012d20604e6f53756368436c61737369635469636b6572602069662074686973206973206e6f7420612073797374656d61746963616c6c7920726573657276656420504d43207469636b65722e51012d20605469636b6572416c7265616479526567697374657265646020696620746865207469636b65722077617320616c726561647920726567697374657265642c20652e672e2c20627920606f726967696e602e1d012d20605469636b6572526567697374726174696f6e457870697265646020696620746865207469636b6572277320726567697374726174696f6e2068617320657870697265642e702d20604261644f726967696e60206966206e6f74207369676e65642e19012d2060496e76616c6964457468657265756d5369676e617475726560206966207468652060657468657265756d5f7369676e617475726560206973206e6f742076616c69642e29012d20604e6f74416e4f776e6572602069662074686520657468657265756d206163636f756e74206973206e6f7420746865206f776e6572206f662074686520504d43207469636b65722e58726573657276655f636c61737369635f7469636b65720c0154636c61737369635f7469636b65725f696d706f72741507014c436c61737369635469636b6572496d706f7274000130636f6e74726163745f6469647c01284964656e746974794964000118636f6e6669671907018c5469636b6572526567697374726174696f6e436f6e6669673c543a3a4d6f6d656e743e000f34a052657365727665206120506f6c796d61746820436c61737369632028504d4329207469636b65722e0d014d7573742062652063616c6c656420627920726f6f742c20616e642061737369676e7320746865207469636b657220746f20612073797374656d61746963204449442e002c2320417267756d656e7473782a20606f726967696e60207768696368206d75737420626520726f6f742eec2a2060636c61737369635f7469636b65725f696d706f7274602073706563696669636174696f6e20666f722074686520504d43207469636b65722e5d012a2060636f6e74726163745f6469646020746f207265736572766520746865207469636b657220746f2069662060636c61737369635f7469636b65725f696d706f72742e69735f636f6e74726163746020686f6c64732ebc2a2060636f6e6669676020746f2075736520666f722065787069727920616e64207469636b6572206c656e6774682e002023204572726f727349012a20604173736574416c726561647943726561746564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b65726020776173206372656174656420617320616e2061737365742e61012a20605469636b6572546f6f4c6f6e6760206966207468652060636f6e6669676020636f6e736964657273207468652060636c61737369635f7469636b65725f696d706f72742e7469636b65726020746f6f206c6f6e672e55012a20605469636b6572416c726561647952656769737465726564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b6572602077617320616c726561647920726567697374657265642e4c636f6e74726f6c6c65725f7472616e736665720c01187469636b6572a401185469636b657200011476616c756518011c42616c616e636500013866726f6d5f706f7274666f6c696fdc012c506f7274666f6c696f496400101c4d01466f726365732061207472616e73666572206f6620746f6b656e2066726f6d206066726f6d5f706f7274666f6c696f6020746f207468652063616c6c657227732064656661756c7420706f7274666f6c696f2e002c2320417267756d656e747355012a20606f726967696e60204d75737420626520616e2065787465726e616c206167656e74207769746820617070726f707269617465207065726d697373696f6e7320666f72206120676976656e207469636b65722e982a20607469636b657260205469636b65722073796d626f6c206f66207468652061737365742ecc2a206076616c7565602020416d6f756e74206f6620746f6b656e73206e65656420746f20666f726365207472616e736665722efc2a206066726f6d5f706f7274666f6c696f602046726f6d2077686f6d20706f7274666f6c696f20746f6b656e732067657473207472616e736665727265642e6872656769737465725f637573746f6d5f61737365745f74797065040108747928011c5665633c75383e00112478526567697374657273206120637573746f6d20617373657420747970652e00d05468652070726f766964656420607479602077696c6c20626520626f756e6420746f20616e20494420696e2073746f726167652ebc5468652049442063616e207468656e206265207573656420696e20604173736574547970653a3a437573746f6d602e250153686f756c6420746865206074796020616c726561647920657869737420696e2073746f726167652c206e6f207365636f6e642049442069732061737369676e656420746f2069742e002c2320417267756d656e7473902a20606f726967696e602077686f2063616c6c6564207468652065787472696e7369632ef02a206074796020636f6e7461696e732074686520737472696e6720726570726573656e746174696f6e206f662074686520617373657420747970652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e050704184f7074696f6e04045401e5010108104e6f6e6500000010536f6d650400e501000001000009070000020902000d070c4c706f6c796d6573685f7072696d69746976657320657468657265756d3845636473615369676e617475726500000400110701205b75383b2036355d000011070000034100000008001507083070616c6c65745f61737365744c436c61737369635469636b6572496d706f727400001001246574685f6f776e65723502013c457468657265756d416464726573730001187469636b6572a401185469636b657200012c69735f636f6e74726163741d010110626f6f6c00012869735f637265617465641d010110626f6f6c00001907083070616c6c65745f6173736574605469636b6572526567697374726174696f6e436f6e6669670404550120000801446d61785f7469636b65725f6c656e677468080108753800014c726567697374726174696f6e5f6c656e677468f801244f7074696f6e3c553e00001d070c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e1043616c6c04045400011428646973747269627574651c011463615f69644102011043414964000124706f7274666f6c696f2107015c4f7074696f6e3c506f7274666f6c696f4e756d6265723e00012063757272656e6379a401185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e63650001287061796d656e745f61742001184d6f6d656e74000128657870697265735f6174f801384f7074696f6e3c4d6f6d656e743e0000a82501537461727420616e64206174746163682061206361706974616c20646973747269627574696f6e2c20746f20746865204341206964656e746966696564206279206063615f6964602c6501776974682060616d6f756e74602066756e647320696e206063757272656e6379602077697468647261776e2066726f6d2060706f7274666f6c696f602062656c6f6e67696e6720746f20606f726967696e602773204449442e00290154686520646973747269627574696f6e2077696c6c20636f6d6d656e636520617420607061796d656e745f61746020616e64206578706972652061742060657870697265735f6174602cc869662070726f76696465642c206f7220696620604e6f6e65602c207468656e2074686572652773206e6f206578706972792e0025015468652066756e64732077696c6c206265206c6f636b656420696e2060706f7274666f6c696f602066726f6d207768656e206064697374726962757465602069732063616c6c65642e35015768656e2074686572652773206e6f206578706972792c20736f6d652066756e6473206d6179206265206c6f636b656420696e646566696e6974656c7920696e2060706f7274666f6c696f602c150164756520746f20636c61696d616e7473206e6f74207769746864726177696e67206f72206e6f2062656e6566697473206265696e672070757368656420746f207468656d2e2901466f7220696e646976697369626c652063757272656e636965732c20756e6c6f636b656420616d6f756e74732c206f66206c657373207468616e206f6e652077686f6c6520756e69742ca877696c6c206e6f74206265207472616e7366657261626c652066726f6d2060706f7274666f6c696f602e4d01486f77657665722c20696620776520696d6167696e6520746861742075736572732060416c6963656020616e642060426f626020626f74682061726520656e7469746c656420746f20312e3520756e6974732c5101616e64206f6e6c7920726563656976652060316020756e69747320656163682c207468656e2060302e35202b20302e35203d20316020756e69747320617265206c65667420696e2060706f7274666f6c696f602c6c7768696368206973206e6f77207472616e736665727261626c652e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e01012d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e59012d2060706f7274666f6c696f60207370656369666965732074686520706f7274666f6c696f206e756d626572206f6620746865206167656e7420746f20646973747269627574652060616d6f756e74602066726f6d2ef42d206063757272656e63796020746f20776974686472617720616e6420646973747269627574652066726f6d207468652060706f7274666f6c696f602ef82d20607065725f73686172656020616d6f756e74206f66206063757272656e63796020746f20776974686472617720616e6420646973747269627574652e25012020205370656369666965642061732061207065722d6d696c6c696f6e2c20692e652e206031202f2031305e36607468206f66206f6e65206063757272656e63796020746f6b656e2ef02d2060616d6f756e7460206f66206063757272656e63796020746f20776974686472617720616e642064697374726962757465206174206d6f73742e19012d20607061796d656e745f61746020737065636966696573207768656e2062656e6566697473206d617920666972737420626520707573686564206f7220636c61696d65642e29012d2060657870697265735f617460207370656369666965732c2069662070726f76696465642c207768656e2072656d61696e696e672062656e65666974732061726520666f726665697490202020616e64206d6179206265207265636c61696d656420627920606f726967696e602e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed02d2060446973747269627574696e67417373657460206966206063615f69642e7469636b6572203d3d2063757272656e6379602efc2d20604578706972794265666f72655061796d656e74602069662060657870697265735f61742e756e777261702829203c3d207061796d656e745f6174602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ea82d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652ee82d20605265636f72644461746541667465725374617274602069662043412773207265636f72642064617465203e207061796d656e745f61742e31012d2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f662060706f7274666f6c696f602e55012d2060496e73756666696369656e74506f7274666f6c696f42616c616e6365602069662060706f7274666f6c696f6020686173206c657373207468616e2060616d6f756e7460206f66206063757272656e6379602e01012d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e45012d206043414e6f7442656e656669746020696620746865204341206973206e6f74206f66206b696e64205072656469637461626c6542656e656669742f556e7072656469637461626c6542656e65666974003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f14636c61696d04011463615f6964410201104341496400015c0101436c61696d20612062656e65666974206f6620746865206361706974616c20646973747269627574696f6e20617474616368656420746f206063615f6964602e00a8546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5901506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e001101416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e39014d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c98746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e0030232320417267756d656e747345012d20606f726967696e60207768696368206d757374206265206120686f6c646572206f662074686520617373657420616e6420656c696769626c6520666f722074686520646973747269627574696f6e2e01012d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e002023204572726f727325012d2060486f6c646572416c7265616479506169646020696620606f726967696e602773204449442068617320616c7265616479207265636569766564206974732062656e656669742e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec42d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee42d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef42d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e35012d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e35012d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e21012d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e30707573685f62656e6566697408011463615f69644102011043414964000118686f6c6465727c01284964656e746974794964000260f8507573682062656e65666974206f6620616e206f6e676f696e6720646973747269627574696f6e20746f2074686520676976656e2060686f6c646572602e00a8546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5901506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e001101416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e39014d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c98746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e39012d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e7320746f20707573682062656e656669747320666f722e7c2d2060686f6c6465726020746f20707573682062656e656669747320746f2e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec42d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee42d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412edc2d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f74207461726765742060686f6c646572602e35012d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e35012d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e21012d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e1c7265636c61696d04011463615f6964410201104341496400032c90417373756d696e67206120646973747269627574696f6e2068617320657870697265642ce4756e6c6f636b207468652072656d61696e696e6720616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e0030232320417267756d656e747345012d20606f726967696e60207768696368206d757374206265207468652063726561746f72206f6620746865206361706974616c20646973747269627574696f6e207469656420746f206063615f6964602e1d012d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e20746f207265636c61696d20666f722e002023204572726f727319012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602e2d012d2060416c72656164795265636c61696d65646020696620746869732066756e6374696f6e2068617320616c7265616479206265656e2063616c6c6564207375636365737366756c6c792e842d20604e6f74457870697265646020696620606e6f77203c20657870697279602e4c72656d6f76655f646973747269627574696f6e04011463615f6964410201104341496400042cbc52656d6f766573206120646973747269627574696f6e2074686174206861736e27742073746172746564207965742cdc756e6c6f636b696e67207468652066756c6c20616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e49012d206063615f696460206964656e7469666965732074686520434120776974682061206e6f742d7965742d73746172746564206361706974616c20646973747269627574696f6e20746f2072656d6f76652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ebc2d2060446973747269627574696f6e537461727465646020696620607061796d656e745f6174203c3d206e6f77602e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e210704184f7074696f6e04045401e40108104e6f6e6500000010536f6d650400e4000001000025070c3070616c6c65745f617373657428636865636b706f696e741043616c6c040454000110446372656174655f636865636b706f696e740401187469636b6572a401185469636b6572000024c04372656174657320612073696e676c6520636865636b706f696e74206174207468652063757272656e742074696d652e002c2320417267756d656e74732d012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602ea02d20607469636b65726020746f206372656174652074686520636865636b706f696e7420666f722e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e0d012d2060436f756e7465724f766572666c6f77602069662074686520746f74616c20636865636b706f696e7420636f756e74657220776f756c64206f766572666c6f772e707365745f7363686564756c65735f6d61785f636f6d706c65786974790401386d61785f636f6d706c657869747920010c75363400012459015365747320746865206d617820636f6d706c6578697479206f662061207363686564756c652073657420666f7220616e20617262697472617279207469636b657220746f20606d61785f636f6d706c6578697479602eb8546865206e6577206d6178696d756d206973206e6f7420656e666f7263656420726574726f6163746976656c792cb4616e64206f6e6c79206170706c696573206f6e6365206e6577207363686564756c657320617265206d6164652e00a84d7573742062652063616c6c6564206173206120504950202872657175697265732022726f6f7422292e002c2320417267756d656e7473782d20606f726967696e602069732074686520726f6f74206f726967696e2e09012d20606d61785f636f6d706c65786974796020616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365742e3c6372656174655f7363686564756c650801187469636b6572a401185469636b65720001207363686564756c65290701305363686564756c655370656300024ca4437265617465732061207363686564756c652067656e65726174696e6720636865636b706f696e7473d4696e20746865206675747572652061742065697468657220612066697865642074696d65206f7220617420696e74657276616c732e000901546865207363686564756c6520737461727473206f7574207769746820607374726f6e675f7265665f636f756e74287363686564756c655f696429203c2d2030602e002c2320417267756d656e747321012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e982d20607469636b65726020746f2063726561746520746865207363686564756c6520666f722eb02d20607363686564756c656020746861742077696c6c2067656e657261746520636865636b706f696e74732e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e0d012d20605363686564756c654475726174696f6e546f6f53686f72746020696620746865207363686564756c65206475726174696f6e20697320746f6f2073686f72742e21012d2060496e73756666696369656e744163636f756e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c64206e6f7420626520636861726765642e4d012d2060436f756e7465724f766572666c6f776020696620746865207363686564756c65204944206f7220746f74616c20636865636b706f696e7420636f756e7465727320776f756c64206f766572666c6f772e5d012d20604661696c6564546f436f6d707574654e657874436865636b706f696e746020696620746865206e65787420636865636b706f696e7420666f7220607363686564756c656020697320696e2074686520706173742e003423205065726d697373696f6e731c2a2041737365743c72656d6f76655f7363686564756c650801187469636b6572a401185469636b657200010869646d0201285363686564756c654964000338fc52656d6f7665732074686520636865636b706f696e74207363686564756c65206f6620616e206173736574206964656e74696669656420627920606964602e002c2320417267756d656e747321012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e9c2d20607469636b65726020746f2072656d6f766520746865207363686564756c652066726f6d2e09012d2060696460206f6620746865207363686564756c652c207768656e2069742077617320637265617465642062792060637265617465645f7363686564756c65602e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e41012d20604e6f436865636b706f696e745363686564756c6560206966206069646020646f6573206e6f74206964656e746966792061207363686564756c6520666f72207468697320607469636b6572602ef42d20605363686564756c654e6f7452656d6f7661626c656020696620606964602065786973747320627574206973206e6f742072656d6f7661626c652e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e29070c3070616c6c65745f617373657428636865636b706f696e74305363686564756c655370656300000c01147374617274f801384f7074696f6e3c4d6f6d656e743e000118706572696f646502013843616c656e646172506572696f6400012472656d61696e696e6710010c75333200002d07086470616c6c65745f636f6d706c69616e63655f6d616e616765721043616c6c040454000124686164645f636f6d706c69616e63655f726571756972656d656e740c01187469636b6572a401185469636b657200014473656e6465725f636f6e646974696f6e73790201385665633c436f6e646974696f6e3e00014c72656365697665725f636f6e646974696f6e73790201385665633c436f6e646974696f6e3e00002c050141646473206120636f6d706c69616e636520726571756972656d656e7420746f20616e206173736574277320636f6d706c69616e6365206279207469636b65722ef849662074686520636f6d706c69616e636520726571756972656d656e742069732061206475706c69636174652c20697420646f6573206e6f7468696e672e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574c42a2073656e6465725f636f6e646974696f6e73202d2053656e646572207472616e7366657220636f6e646974696f6e732ed42a2072656365697665725f636f6e646974696f6e73202d205265636569766572207472616e7366657220636f6e646974696f6e732e003423205065726d697373696f6e731c2a2041737365747472656d6f76655f636f6d706c69616e63655f726571756972656d656e740801187469636b6572a401185469636b6572000108696410010c753332000124f052656d6f766573206120636f6d706c69616e636520726571756972656d656e742066726f6d20616e206173736574277320636f6d706c69616e63652e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574f02a206964202d20436f6d706c69616e636520726571756972656d656e74206964207768696368206973206e65656420746f2062652072656d6f766564003423205065726d697373696f6e731c2a204173736574607265706c6163655f61737365745f636f6d706c69616e63650801187469636b6572a401185469636b657200014061737365745f636f6d706c69616e6365a10201685665633c436f6d706c69616e6365526571756972656d656e743e00023cfc5265706c6163657320616e206173736574277320636f6d706c69616e6365206279207469636b657220776974682061206e657720636f6d706c69616e63652e00fc436f6d706c69616e636520726571756972656d656e74732077696c6c20626520736f727465642028617363656e64696e6720627920696429206265666f72658c7265706c6163696e67207468652063757272656e7420726571756972656d656e74732e002c2320417267756d656e7473782a20607469636b657260202d20746865206173736574207469636b65722cbc2a206061737365745f636f6d706c69616e6365202d20746865206e657720617373657420636f6d706c69616e63652e002023204572726f7273f02a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722eb1012a20604475706c69636174654173736574436f6d706c69616e636560206966206061737365745f636f6d706c69616e63656020636f6e7461696e73206d756c7469706c6520656e74726965732077697468207468652073616d652060726571756972656d656e745f6964602e003423205065726d697373696f6e731c2a2041737365745872657365745f61737365745f636f6d706c69616e63650401187469636b6572a401185469636b65720003207452656d6f76657320616e206173736574277320636f6d706c69616e6365002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a2041737365745870617573655f61737365745f636f6d706c69616e63650401187469636b6572a401185469636b657200042011015061757365732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a2041737365745c726573756d655f61737365745f636f6d706c69616e63650401187469636b6572a401185469636b65720005201501526573756d65732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a204173736574806164645f64656661756c745f747275737465645f636c61696d5f6973737565720801187469636b6572a401185469636b65720001186973737565729102013454727573746564497373756572000624f84164647320616e6f746865722064656661756c74207472757374656420636c61696d2069737375657220617420746865207469636b6572206c6576656c2e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742ec82a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e003423205065726d697373696f6e731c2a2041737365748c72656d6f76655f64656661756c745f747275737465645f636c61696d5f6973737565720801187469636b6572a401185469636b65720001186973737565727c01284964656e746974794964000724750152656d6f7665732074686520676976656e2060697373756572602066726f6d2074686520736574206f662064656661756c74207472757374656420636c61696d206973737565727320617420746865207469636b6572206c6576656c2e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742ec82a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e003423205065726d697373696f6e731c2a204173736574746368616e67655f636f6d706c69616e63655f726571756972656d656e740801187469636b6572a401185469636b657200011c6e65775f72657175020154436f6d706c69616e6365526571756972656d656e74000824f04d6f6469667920616e206578697374696e6720636f6d706c69616e636520726571756972656d656e74206f66206120676976656e207469636b65722e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742e8c2a206e65775f726571202d20436f6d706c69616e636520726571756972656d656e742e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e3107086070616c6c65745f636f72706f726174655f616374696f6e731043616c6c040454000120587365745f6d61785f64657461696c735f6c656e6774680401186c656e67746810010c753332000008d053657420746865206d617820606c656e67746860206f66206064657461696c736020696e207465726d73206f662062797465732e744d6179206f6e6c792062652063616c6c6564207669612061205049502e4c7365745f64656661756c745f746172676574730801187469636b6572a401185469636b657200011c74617267657473a90201405461726765744964656e746974696573000134cc536574207468652064656661756c7420434120605461726765744964656e7469746965736020746f206074617267657473602e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ee42d20607469636b65726020666f72207768696368207468652064656661756c74206964656e74697469657320617265206368616e67696e672ecc2d20607461726765747360207468652064656661756c7420746172676574206964656e74697469657320666f7220612043412e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e31012d2060546f6f4d616e79546172676574496473602069662060746172676574732e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e003423205065726d697373696f6e731c2a2041737365746c7365745f64656661756c745f77697468686f6c64696e675f7461780801187469636b6572a401185469636b657200010c7461784d02010c5461780002303d01536574207468652064656661756c742077697468686f6c64696e672074617820666f7220616c6c204449447320616e64204341732072656c6576616e7420746f207468697320607469636b6572602e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ec82d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2e05012d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e003423205065726d697373696f6e731c2a2041737365745c7365745f6469645f77697468686f6c64696e675f7461780c01187469636b6572a401185469636b657200012474617865645f6469647c01284964656e74697479496400010c746178b102012c4f7074696f6e3c5461783e000340f4536574207468652077697468686f6c64696e6720746178206f6620607469636b65726020666f72206074617865645f6469646020746f2060746178602e810149662060536f6d652874617829602c2074686973206f7665727269646573207468652064656661756c742077697468686f6c64696e6720746178206f6620607469636b65726020746f20607461786020666f72206074617865645f646964602efc4f74686572776973652c20696620604e6f6e65602c207468652064656661756c742077697468686f6c64696e67207461782077696c6c20626520757365642e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ec82d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2ee42d206074617865645f6469646020746861742077696c6c2068617665206974732077697468686f6c64696e672074617820757064617465642e05012d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e81012d2060546f6f4d616e794469645461786573602069662060536f6d6528746178296020616e6420616464696e6720746865206f7665727269646520776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e003423205065726d697373696f6e731c2a20417373657464696e6974696174655f636f72706f726174655f616374696f6e2001187469636b6572a401185469636b65720001106b696e64b902011843414b696e640001246465636c5f646174652001184d6f6d656e7400012c7265636f72645f64617465350701584f7074696f6e3c5265636f726444617465537065633e00011c64657461696c73d1020124434144657461696c7300011c746172676574733d0701604f7074696f6e3c5461726765744964656e7469746965733e00015c64656661756c745f77697468686f6c64696e675f746178b102012c4f7074696f6e3c5461783e00013c77697468686f6c64696e675f746178410701784f7074696f6e3c5665633c284964656e7469747949642c20546178293e3e0004784901496e69746961746573206120434120666f7220607469636b657260206f6620606b696e64602077697468206064657461696c736020616e64206f746865722070726f766964656420617267756d656e74732e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732e8c2d20607469636b657260207468617420746865204341206973206d61646520666f722e7c2d20606b696e6460206f66204341206265696e6720696e697469617465642e982d20606465636c5f6461746560206f66204341206272696e6720696e697469616c697a65642ef02d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f6620746869732043412e610120202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e4d012d206064657461696c7360206f662074686520434120696e20667265652d7465787420666f726d2c20757020746f2061206365727461696e206e756d626572206f6620627974657320696e206c656e6774682ef42d206074617267657473602c20696620616e792c20776869636820746869732043412069732072656c6576616e742f697272656c6576616e7420746f2e49012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f7461726765747360292e5d012d206064656661756c745f77697468686f6c64696e675f746178602c20696620616e792c206973207468652064656661756c742077697468686f6c64696e672074617820746f2075736520666f7220746869732043412e69012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f77697468686f6c64696e675f74617860292e21012d206077697468686f6c64696e675f746178602c20696620616e792c2070726f7669646573207065722d4449442077697468686f6c64696e6720746178206f76657272696465732e59012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f6469645f77697468686f6c64696e675f74617860292e002023204572726f72731d012d206044657461696c73546f6f4c6f6e6760206966206064657461696c732e6c656e28296020676f6573206265796f6e6420606d61785f64657461696c735f6c656e677468602e25012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e69012d2060436f756e7465724f766572666c6f776020696e2074686520756e6c696b656c79206576656e74207468617420736f206d616e79204341732077657265206372656174656420666f72207468697320607469636b6572602cf820207468617420696e7465676572206f766572666c6f7720776f756c642068617665206f63637572656420696620696e737465616420616c6c6f7765642e75012d2060546f6f4d616e79446964546178657360206966206077697468686f6c64696e675f7461782e756e7772617028292e6c656e28296020776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e01012d20604475706c69636174654469645461786020696620612044494420697320696e636c75646564206d6f7265207468616e206f6e636520696e20607774602e55012d2060546f6f4d616e79546172676574496473602069662060746172676574732e756e7772617028292e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e01012d20604465636c44617465496e4675747572656020696620746865206465636c61726174696f6e2064617465206973206e6f7420696e2074686520706173742e51012d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e003423205065726d697373696f6e731c2a2041737365742c6c696e6b5f63615f646f6308010869644102011043414964000110646f6373d502013c5665633c446f63756d656e7449643e000548ac4c696e6b2074686520676976656e204341206069646020746f2074686520676976656e2060646f6373602ef4416e792070726576696f7573206c696e6b7320666f7220746865204341206172652072656d6f76656420696e206661766f72206f662060646f6373602e00550154686520776f726b666c6f77206865726520697320746f206164642074686520646f63756d656e747320616e6420696e6974696174696e672074686520434120696e20616e79206f7264657220646573697265642ec44f6e636520626f74682065786973742c20746865792063616e206e6f77206265206c696e6b656420746f6765746865722e0030232320417267756d656e747351012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206069642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732ea82d2060696460206f662074686520434120746f206173736f636961746520776974682060646f6373602eb02d2060646f63736020746f206173736f6369617465207769746820746865204341207769746820606964602e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e19012d20604e6f53756368446f636020696620616e79206f662060646f63736020646f6573206e6f74206964656e7469667920616e206578697374696e6720646f63756d656e742e003423205065726d697373696f6e731c2a2041737365742472656d6f76655f636104011463615f696441020110434149640006489452656d6f76657320746865204341206964656e746966696564206279206063615f6964602e00c44173736f63696174656420646174612c207375636820617320646f63756d656e74206c696e6b732c2062616c6c6f74732cac616e64206361706974616c20646973747269627574696f6e732061726520616c736f2072656d6f7665642e00d4416e79207363686564756c65206173736f636961746564207769746820746865207265636f726420646174652077696c6c20736565b0607374726f6e675f7265665f636f756e74287363686564756c655f696429602064656372656d656e7465642e0030232320417267756d656e74735d012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e782d206063615f696460206f662074686520434120746f2072656d6f76652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e003423205065726d697373696f6e731c2a204173736574486368616e67655f7265636f72645f6461746508011463615f6964410201104341496400012c7265636f72645f64617465350701584f7074696f6e3c5265636f726444617465537065633e00073ce04368616e67657320746865207265636f72642064617465206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e74735d012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e742d206063615f696460206f662074686520434120746f20616c7465722eec2d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f66207468652043412e610120202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e51012d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e350704184f7074696f6e0404540139070108104e6f6e6500000010536f6d650400390700000100003907086070616c6c65745f636f72706f726174655f616374696f6e73385265636f7264446174655370656300010c245363686564756c656404002001184d6f6d656e74000000404578697374696e675363686564756c6504006d0201285363686564756c654964000100204578697374696e67040059020130436865636b706f696e744964000200003d0704184f7074696f6e04045401a9020108104e6f6e6500000010536f6d650400a9020000010000410704184f7074696f6e04045401c9020108104e6f6e6500000010536f6d650400c902000001000045070c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f741043616c6c040454000118346174746163685f62616c6c6f7410011463615f6964410201104341496400011472616e6765dd02013c42616c6c6f7454696d6552616e67650001106d657461e102012842616c6c6f744d65746100010c7263761d010110626f6f6c000068e8417474616368206120636f72706f726174652062616c6c6f7420746f20746865204341206964656e746966696564206279206063615f6964602e00ac5468652062616c6c6f742077696c6c2061646d697420766f7465732077697468696e206072616e6765602eb05468652062616c6c6f742773206d657461646174612069732070726f766964656420627920606d657461602c0501776869636820696e636c75646573207468652062616c6c6f74207469746c652c20746865206d6f74696f6e732c2074686569722063686f696365732c206574632e7853656520746865206042616c6c6f744d6574616020666f72206d6f72652e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602ed02d206063615f696460206964656e7469666965732074686520434120746f20617474616368207468652062616c6c6f7420746f2ec02d206072616e67656020737065636966696573207768656e20766f74696e672073746172747320616e6420656e64732eec2d20606d6574616020737065636966696573207468652062616c6c6f742773206d657461646174612061732061666f72656d656e74696f6e65642ee42d2060726376602073706563696669657320776865746865722052435620697320656e61626c656420666f7220746869732062616c6c6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef02d206043414e6f744e6f746963656020696620746865204341206973206e6f74206f662074686520604973737565724e6f7469636560206b696e642ebc2d206053746172744166746572456e6460206966206072616e67652e7374617274203e2072616e67652e656e64602e29012d20604e6f774166746572456e646020696620606e6f77203e2072616e67652e656e646020776865726520606e6f7760206973207468652063757272656e742074696d657374616d702ea82d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652e59012d20605265636f7264446174654166746572537461727460206966206064617465203e2072616e67652e73746172746020776865726520606461746560206973207468652043412773207265636f726420646174652eb82d2060416c726561647945786973747360206966207468657265277320612062616c6c6f7420616c72656164792e31012d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e09012d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e01012d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e10766f746508011463615f69644102011043414964000114766f7465730103013c5665633c42616c6c6f74566f74653e0001441101436173742060766f7465736020696e207468652062616c6c6f7420617474616368656420746f20746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747309012d20606f726967696e60207768696368206d7573742062652061207065726d697373696f6e6564207369676e6572207461726765746564206279207468652043412eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e21012d2060766f7465736020737065636966696573207468652062616c616e63657320746f2061737369676e20746f20656163682063686f69636520696e207468652062616c6c6f742e55012020205468652066756c6c20766f74696e6720706f776572206f6620606f726967696e60277320444944206d6179206265207573656420666f722065616368206d6f74696f6e20696e207468652062616c6c6f742e002023204572726f7273dc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742efc2d2060566f74696e674e6f7453746172746564602069662074686520766f74696e6720706572696f64206861736e277420636f6d6d656e636564207965742ed82d2060566f74696e67416c7265616479456e646564602069662074686520766f74696e6720706572696f642068617320656e6465642e5d012d206057726f6e67566f7465436f756e746020696620746865206e756d626572206f662063686f6963657320696e207468652062616c6c6f7420646f6573206e6f74206d617463682060766f7465732e6c656e2829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef42d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e21012d2060496e73756666696369656e74566f746573602069662074686520766f74696e6720706f776572207573656420666f7220616e79206d6f74696f6e20696e2060766f74657360a42020206578636565647320606f726967696e60277320444944277320766f74696e6720706f7765722e286368616e67655f656e6408011463615f6964410201104341496400010c656e642001184d6f6d656e740002300501416d656e642074686520656e642064617465206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ec42d2060656e64602073706563696669657320746865206e657720656e642064617465206f66207468652062616c6c6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e8c2d206053746172744166746572456e646020696620607374617274203e20656e64602e2c6368616e67655f6d65746108011463615f696441020110434149640001106d657461e102012842616c6c6f744d6574610003346101416d656e6420746865206d6574616461746120287469746c652c206d6f74696f6e732c206574632e29206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e902d20606d657461602073706563696669657320746865206e6577206d657461646174612e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e31012d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e09012d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e286368616e67655f72637608011463615f6964410201104341496400010c7263761d010110626f6f6c00042c0501416d656e642052435620737570706f727420666f72207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ecc2d206072637660207370656369666965732069662052435620697320746f20626520737570706f72746564206f72206e6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e3472656d6f76655f62616c6c6f7404011463615f69644102011043414964000528c852656d6f7665207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e4907082c70616c6c65745f706970731043616c6c040454000144647365745f7072756e655f686973746f726963616c5f706970730401147072756e651d010110626f6f6c000014a44368616e6765207768657468657220636f6d706c65746564205049507320617265207072756e65642e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473f02a20607072756e656020737065636966696573207768657468657220636f6d706c6574656420504950732073686f756c64206265207072756e65642e607365745f6d696e5f70726f706f73616c5f6465706f73697404011c6465706f73697418011c42616c616e636500011421014368616e676520746865206d696e696d756d2070726f706f73616c206465706f73697420616d6f756e7420726571756972656420746f20737461727420612070726f706f73616c2e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473f02a20606465706f7369746020746865206e6577206d696e206465706f73697420726571756972656420746f20737461727420612070726f706f73616c707365745f64656661756c745f656e6163746d656e745f706572696f640401206475726174696f6e100138543a3a426c6f636b4e756d626572000214904368616e6765207468652064656661756c7420656e6163746d656e7420706572696f642e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e747369012a20606475726174696f6e6020746865206e65772064656661756c7420656e6163746d656e7420706572696f642069742074616b657320666f722061207363686564756c65642050495020746f2062652065786563757465642e587365745f70656e64696e675f7069705f657870697279040118657870697279450101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e00031805014368616e67652074686520616d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020697320657870697265642eb4496620606578706972796020697320604e6f6e6560207468656e2050495073206e65766572206578706972652e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e74731d012a2060657870697279602074686520626c6f636b2d74696d652069742074616b657320666f722061207374696c6c2d6050656e64696e67602050495020746f206578706972652e587365745f6d61785f7069705f736b69705f636f756e7404010c6d6178080130536b6970706564436f756e74000414d44368616e676520746865206d6178696d756d20736b697020636f756e742028606d61785f7069705f736b69705f636f756e7460292e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473ec2a20606d61786020736b697073206265666f72652061205049502063616e6e6f7420626520736b697070656420627920474320616e796d6f72652e507365745f6163746976655f7069705f6c696d69740401146c696d697410010c75333200051469014368616e676520746865206d6178696d756d206e756d626572206f66206163746976652050495073206265666f726520636f6d6d756e697479206d656d626572732063616e6e6f742070726f706f736520616e797468696e672e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473902a20606c696d697460206f6620636f6e63757272656e742061637469766520504950732e1c70726f706f736510012070726f706f73616c81050140426f783c543a3a50726f706f73616c3e00011c6465706f73697418011c42616c616e636500010c75726c2103012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e290301584f7074696f6e3c5069704465736372697074696f6e3e000624050141206e6574776f726b206d656d6265722063726561746573206120504950206279207375626d697474696e67206120646973706174636861626c6520776869636855016368616e67657320746865206e6574776f726b20696e20736f6d657761792e2041206d696e696d756d206465706f73697420697320726571756972656420746f206f70656e2061206e65772070726f706f73616c2e002c2320417267756d656e7473c82a206070726f706f73657260206973206569746865722061207369676e696e67206b6579206f7220636f6d6d69747465652e65012020205573656420746f20756e6465727374616e6420776865746865722074686973206973206120636f6d6d69747465652070726f706f73616c20616e6420766572696669656420616761696e737420606f726967696e602e802a206070726f706f73616c60206120646973706174636861626c652063616c6c45012a20606465706f73697460206d696e696d756d206465706f7369742076616c75652c2077686963682069732069676e6f726564206966206070726f706f73657260206973206120636f6d6d69747465652ecc2a206075726c602061206c696e6b20746f2061207765627369746520666f722070726f706f73616c2064697363757373696f6e10766f74650c010869641d03011450697049640001286179655f6f725f6e61791d010110626f6f6c00011c6465706f73697418011c42616c616e63650007481d01566f74652065697468657220696e206661766f722028606179655f6f725f6e617960203d3d207472756529206f7220616761696e7374206120504950207769746820606964602e4d015468652022636f6e76696e6374696f6e22206f7220737472656e677468206f662074686520766f746520697320676976656e20627920606465706f736974602c2077686963682069732072657365727665642e008c4e6f746520746861742060766f746560206973202a6e6f742a2061646469746976652ef8546861742069732c2060766f74652869642c20747275652c203530296020666f6c6c6f7765642062792060766f74652869642c20747275652c2034302960490177696c6c2066697273742072657365727665206035306020616e64207468656e20726566756e6420603530202d203130602c20656e64696e672075702077697468206034306020696e206465706f7369742e2501546f206164642061746f70206f66206578697374696e6720766f7465732c20796f75276c6c206e65656420606578697374696e675f6465706f736974202b206164646974696f6e602e002c2320417267756d656e74734c2a20606964602c2070726f706f73616c206964dc2a20606179655f6f725f6e6179602c206120626f6f6c20726570726573656e74696e6720666f72206f7220616761696e737420766f7465e82a20606465706f736974602c207468652022636f6e76696374696f6e2220776974682077686963682074686520766f7465206973206d6164652e002023204572726f7273e42a20604e6f5375636850726f706f73616c60206966206069646020646f65736e2774207265666572656e636520612076616c6964205049502ee42a20604e6f7446726f6d436f6d6d756e697479602069662070726f706f73616c20776173206d616465206279206120636f6d6d69747465652ec02a2060496e636f727265637450726f706f73616c537461746560206966205049502069736e27742070656e64696e672e2d012a2060496e73756666696369656e744465706f7369746020696620606f726967696e602063616e6e6f74207265736572766520606465706f736974202d206f6c645f6465706f736974602e68617070726f76655f636f6d6d69747465655f70726f706f73616c04010869641d030114506970496400081cd4417070726f766573207468652070656e64696e6720636f6d6d69747465652050495020676976656e2062792074686520606964602e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ee42a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c2069736e27742070656e64696e672ee02a20604e6f744279436f6d6d697474656560206966207468652070726f706f73616c2069736e2774206279206120636f6d6d69747465652e3c72656a6563745f70726f706f73616c04010869641d0301145069704964000920f852656a65637473207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e7920626f6e6465642066756e64732cb8617373756d696e67206974206861736e2774206265656e2063616e63656c6c6564206f722065786563757465642e05014e6f746520746861742070726f706f73616c73207363686564756c65642d666f722d657865637574696f6e2063616e20616c736f2062652072656a65637465642e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742e15012a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c207761732063616e63656c6c6564206f722065786563757465642e387072756e655f70726f706f73616c04010869641d0301145069704964000a2429015072756e65207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e792066756e6473206e6f7420616c726561647920726566756e6465642e6454686520504950206d6179206e6f7420626520616374697665000901546869732066756e6374696f6e20697320696e74656e64656420666f722073746f72616765206761726261676520636f6c6c656374696f6e20707572706f7365732e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ed42a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c206973206163746976652e5072657363686564756c655f657865637574696f6e08010869641d0301145069704964000114756e74696cc90501584f7074696f6e3c543a3a426c6f636b4e756d6265723e000b24e0557064617465732074686520657865637574696f6e207363686564756c65206f66207468652050495020676976656e20627920606964602e002c2320417267756d656e747331012a2060756e74696c6020646566696e6573207468652066757475726520626c6f636b2077686572652074686520656e6163746d656e7420706572696f642077696c6c2066696e69736865642e4501202020604e6f6e65602076616c7565206d65616e73207468617420656e6163746d656e7420706572696f6420697320676f696e6720746f2066696e69736820696e20746865206e65787420626c6f636b2e002023204572726f727339012a206052657363686564756c654e6f74427952656c65617365436f6f7264696e61746f726020756e6c657373207472696767657265642062792072656c6561736520636f6f7264696e61746f722e21012a2060496e636f727265637450726f706f73616c53746174656020756e6c657373207468652070726f706f73616c2077617320696e2061207363686564756c65642073746174652e38636c6561725f736e617073686f74000c10e8436c656172732074686520736e617073686f7420616e6420656d69747320746865206576656e742060536e617073686f74436c6561726564602e002023204572726f72733d012a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e20736e617073686f74000d140d0154616b65732061206e657720736e617073686f74206f66207468652063757272656e74206c697374206f66206163746976652026262070656e64696e6720504950732e2901546865205049507320617265207468656e20736f7274656420696e746f2061207072696f72697479207175657565206261736564206f6e2065616368205049502773207765696768742e002023204572726f72733d012a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e58656e6163745f736e617073686f745f726573756c747304011c726573756c74734d0701705665633c2850697049642c20536e617073686f74526573756c74293e000e44d0456e616374732060726573756c74736020666f7220746865205049507320696e2074686520736e617073686f742071756575652e290154686520736e617073686f742077696c6c20626520617661696c61626c6520666f72206675727468657220656e6163746d656e747320756e74696c20697420697320636c65617265642e0055015468652060726573756c7473602061726520656e636f6465642061206c697374206f6620602869642c20726573756c7429602077686572652060726573756c7460206973206170706c69656420746f20606964602e49014e6f746520746861742074686520736e617073686f74207072696f7269747920717565756520697320656e636f646564207769746820746865202a6c6f77657374207072696f726974792066697273742a2e5501736f2060726573756c7473203d205b2869642c20417070726f7665295d602077696c6c20617070726f76652060536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20315d602e002023204572726f72730d012a20604261644f726967696e60202d20756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2e21012a206043616e6e6f74536b697050697060202d206120676976656e205049502068617320616c7265616479206265656e20736b697070656420746f6f206d616e792074696d65732e0d012a2060536e617073686f74526573756c74546f6f4c6172676560202d206f6e206c656e28726573756c747329203e206c656e28736e617073686f745f7175657565292e702a2060536e617073686f7449644d69736d6174636860202d2069663a2420206060607465787498202020e2888320286920e2888820302e2e536e617073686f7451756575652e6c656e2829292efc2020202020726573756c74735b695d2e3020e289a020536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20695d2e6964142020606060f8202020546869732069732070726f746563747320616761696e737420636c656172696e67207175657565207768696c6520474320697320766f74696e672e54657865637574655f7363686564756c65645f70697004010869641d0301145069704964000f04d8496e7465726e616c20646973706174636861626c6520746861742068616e646c657320657865637574696f6e206f662061205049502e506578706972655f7363686564756c65645f70697008010c6469647c01284964656e74697479496400010869641d0301145069704964001004dc496e7465726e616c20646973706174636861626c6520746861742068616e646c65732065787069726174696f6e206f662061205049502e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e4d070000025107005107000004081d035507005507082c70616c6c65745f7069707338536e617073686f74526573756c7400010c1c417070726f76650000001852656a65637400010010536b6970000200005907084070616c6c65745f706f7274666f6c696f1043616c6c040454000118406372656174655f706f7274666f6c696f0401106e616d655d030134506f7274666f6c696f4e616d65000004a843726561746573206120706f7274666f6c696f20776974682074686520676976656e20606e616d65602e4064656c6574655f706f7274666f6c696f04010c6e756de4013c506f7274666f6c696f4e756d626572000120350144656c657465732061207573657220706f7274666f6c696f2e204120706f7274666f6c696f2063616e2062652064656c65746564206f6e6c7920696620697420686173206e6f2066756e64732e002023204572726f72731d012a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2ef02a2060506f7274666f6c696f4e6f74456d707479602069662074686520706f7274666f6c696f207374696c6c20686f6c647320616e79206173736574003423205065726d697373696f6e732c2a20506f7274666f6c696f506d6f76655f706f7274666f6c696f5f66756e64730c011066726f6ddc012c506f7274666f6c696f4964000108746fdc012c506f7274666f6c696f49640001146974656d735d0701585665633c4d6f7665506f7274666f6c696f4974656d3e00023c5d014d6f766573206120746f6b656e20616d6f756e742066726f6d206f6e6520706f7274666f6c696f206f6620616e206964656e7469747920746f20616e6f7468657220706f7274666f6c696f206f66207468652073616d65e06964656e746974792e204d7573742062652063616c6c65642062792074686520637573746f6469616e206f66207468652073656e6465722e110146756e64732066726f6d2064656c6574656420706f7274666f6c696f732063616e20616c736f206265207265636f7665726564207669612074686973206d6574686f642e00e0412073686f7274206d656d6f2063616e20626520616464656420746f20746f206561636820746f6b656e20616d6f756e74206d6f7665642e002023204572726f727369012a2060506f7274666f6c696f446f65734e6f74457869737460206966206f6e65206f7220626f7468206f662074686520706f7274666f6c696f73207265666572656e636520616e20696e76616c696420706f7274666f6c696f2e51012a206064657374696e6174696f6e5f69735f73616d655f706f7274666f6c696f6020696620626f74682073656e64657220616e6420726563656976657220706f7274666f6c696f20617265207468652073616d6591012a2060446966666572656e744964656e74697479506f7274666f6c696f7360206966207468652073656e64657220616e6420726563656976657220706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e74697469657349012a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f66207468652066726f6d20706f7274666f6c696f41012a2060496e73756666696369656e74506f7274666f6c696f42616c616e636560206966207468652073656e64657220646f6573206e6f74206861766520656e6f75676820667265652062616c616e6365003423205065726d697373696f6e732c2a20506f7274666f6c696f4072656e616d655f706f7274666f6c696f08010c6e756de4013c506f7274666f6c696f4e756d62657200011c746f5f6e616d655d030134506f7274666f6c696f4e616d6500031c8052656e616d65732061206e6f6e2d64656661756c7420706f7274666f6c696f2e002023204572726f72731d012a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2e003423205065726d697373696f6e732c2a20506f7274666f6c696f58717569745f706f7274666f6c696f5f637573746f647904010c706964dc012c506f7274666f6c696f4964000420bc5768656e2063616c6c65642062792074686520637573746f6469616e206f662060706f7274666f6c696f5f6964602c4901616c6c6f77732072657475726e696e672074686520637573746f6479206f662074686520706f7274666f6c696f20746f2074686520706f7274666f6c696f206f776e657220756e696c61746572616c6c792e002023204572726f72735d012a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f74207468652063757272656e7420637573746f6469616e206f662060706f7274666f6c696f5f6964602e003423205065726d697373696f6e732c2a20506f7274666f6c696f606163636570745f706f7274666f6c696f5f637573746f647904011c617574685f696420010c7536340005000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e5d070000026107006107084070616c6c65745f706f7274666f6c696f444d6f7665506f7274666f6c696f4974656d00000c01187469636b6572a401185469636b6572000118616d6f756e7418011c42616c616e63650001106d656d6f8001304f7074696f6e3c4d656d6f3e00006507084c70616c6c65745f70726f746f636f6c5f6665651043616c6c040454000108486368616e67655f636f656666696369656e7404012c636f656666696369656e746d030120506f73526174696f000010c04368616e676573207468652066656520636f656666696369656e7420666f722074686520726f6f74206f726967696e2e002023204572726f7273882a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e3c6368616e67655f626173655f6665650801086f706907012850726f746f636f6c4f70000120626173655f66656518011c42616c616e6365000110ac4368616e67657320746865206120626173652066656520666f722074686520726f6f74206f726967696e2e002023204572726f7273882a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e69070c64706f6c796d6573685f636f6d6d6f6e5f7574696c69746965733070726f746f636f6c5f6665652850726f746f636f6c4f700001344c417373657452656769737465725469636b65720000002841737365744973737565000100444173736574416464446f63756d656e7473000200404173736574437265617465417373657400030060436865636b706f696e744372656174655363686564756c65000400a4436f6d706c69616e63654d616e61676572416464436f6d706c69616e6365526571756972656d656e74000500584964656e746974794364645265676973746572446964000600404964656e74697479416464436c61696d000700a44964656e746974794164645365636f6e646172794b65797357697468417574686f72697a6174696f6e0008002c5069707350726f706f736500090040436f6e747261637473507574436f6465000a006c436f72706f7261746542616c6c6f7441747461636842616c6c6f74000b00744361706974616c446973747269627574696f6e44697374726962757465000c00006d070c4070616c6c65745f7363686564756c65721870616c6c65741043616c6c040454000118207363686564756c651001107768656e100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963710701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c81050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00002870416e6f6e796d6f75736c79207363686564756c652061207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c738c2d2042617365205765696768743a2032322e3239202b202e313236202a205320c2b573302d204442205765696768743a48202020202d20526561643a204167656e64614c202020202d2057726974653a204167656e646139012d2057696c6c20757365206261736520776569676874206f662032352077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e1863616e63656c0801107768656e100138543a3a426c6f636b4e756d626572000114696e64657810010c7533320001289443616e63656c20616e20616e6f6e796d6f75736c79207363686564756c6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73902d2042617365205765696768743a2032322e3135202b20322e383639202a205320c2b573302d204442205765696768743a48202020202d20526561643a204167656e64616c202020202d2057726974653a204167656e64612c204c6f6f6b75703d012d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e387363686564756c655f6e616d6564140108696428011c5665633c75383e0001107768656e100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963710701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c81050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000228585363686564756c652061206e616d6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73882d2042617365205765696768743a2032392e36202b202e313539202a205320c2b573302d204442205765696768743a68202020202d20526561643a204167656e64612c204c6f6f6b75706c202020202d2057726974653a204167656e64612c204c6f6f6b757049012d2057696c6c20757365206261736520776569676874206f662033352077686963682073686f756c6420626520676f6f6420666f72206d6f7265207468616e203330207363686564756c65642063616c6c732c23203c2f7765696768743e3063616e63656c5f6e616d6564040108696428011c5665633c75383e0003287843616e63656c2061206e616d6564207363686564756c6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73902d2042617365205765696768743a2032342e3931202b20322e393037202a205320c2b573302d204442205765696768743a68202020202d20526561643a204167656e64612c204c6f6f6b75706c202020202d2057726974653a204167656e64612c204c6f6f6b75703d012d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e387363686564756c655f61667465721001146166746572100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963710701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c81050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000414a8416e6f6e796d6f75736c79207363686564756c652061207461736b20616674657220612064656c61792e002823203c7765696768743e5453616d65206173205b607363686564756c65605d2e2c23203c2f7765696768743e507363686564756c655f6e616d65645f6166746572140108696428011c5665633c75383e0001146166746572100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963710701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c81050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000514905363686564756c652061206e616d6564207461736b20616674657220612064656c61792e002823203c7765696768743ec453616d65206173205b607363686564756c655f6e616d6564605d2853656c663a3a7363686564756c655f6e616d6564292e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e710704184f7074696f6e0404540175030108104e6f6e6500000010536f6d650400750300000100007507084470616c6c65745f736574746c656d656e741043616c6c040454000144306372656174655f76656e75650c011c64657461696c738503013056656e756544657461696c7300011c7369676e657273910101445665633c543a3a4163636f756e7449643e00010c7479708903012456656e756554797065000014585265676973746572732061206e65772076656e75652e00a42a206064657461696c7360202d2045787472612064657461696c732061626f757420612076656e75653d012a20607369676e65727360202d204172726179206f66207369676e65727320746861742061726520616c6c6f77656420746f207369676e20726563656970747320666f7220746869732076656e7565942a206074797060202d2054797065206f662076656e7565206265696e672063726561746564507570646174655f76656e75655f64657461696c7308010869648103011c56656e7565496400011c64657461696c738503013056656e756544657461696c730001105c4564697420612076656e756527732064657461696c732e00b42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742ec02a206064657461696c7360207370656369666965732074686520757064617465642076656e75652064657461696c732e447570646174655f76656e75655f7479706508010869648103011c56656e7565496400010c7479708903012456656e756554797065000210504564697420612076656e7565277320747970652e00b42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742eb42a206074797065602073706563696669657320746865206e65772074797065206f66207468652076656e75652e3c6164645f696e737472756374696f6e14012076656e75655f69648103011c56656e7565496400013c736574746c656d656e745f7479706591030178536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e00012874726164655f64617465f801444f7074696f6e3c543a3a4d6f6d656e743e00012876616c75655f64617465f801444f7074696f6e3c543a3a4d6f6d656e743e0001106c656773950301205665633c4c65673e0003305c416464732061206e657720696e737472756374696f6e2e002c2320417267756d656e7473ec2a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e09012a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c65645d01202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e51012a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b42a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e0020232057656967687498603935305f3030305f303030202b20315f3030305f303030202a206c6567732e6c656e282960686164645f616e645f61666669726d5f696e737472756374696f6e18012076656e75655f69648103011c56656e7565496400013c736574746c656d656e745f7479706591030178536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e00012874726164655f64617465f801444f7074696f6e3c543a3a4d6f6d656e743e00012876616c75655f64617465f801444f7074696f6e3c543a3a4d6f6d656e743e0001106c656773950301205665633c4c65673e000128706f7274666f6c696f73ec01405665633c506f7274666f6c696f49643e0004348c4164647320616e642061666669726d732061206e657720696e737472756374696f6e2e002c2320417267756d656e7473ec2a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e09012a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c65645d01202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e51012a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b42a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e6d012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2075736520696e20746869732061666669726d6174696f6e732e003423205065726d697373696f6e732c2a20506f7274666f6c696f4861666669726d5f696e737472756374696f6e0c010869648d030134496e737472756374696f6e4964000128706f7274666f6c696f73ec01405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000524bc50726f766964652061666669726d6174696f6e20746f20616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e7473882a2060696460202d20496e737472756374696f6e20696420746f2061666669726d2e69012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2061666669726d207468697320696e737472756374696f6e2ef82a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f206265202061666669726d65642e003423205065726d697373696f6e732c2a20506f7274666f6c696f5077697468647261775f61666669726d6174696f6e0c010869648d030134496e737472756374696f6e4964000128706f7274666f6c696f73ec01405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000624c0576974686472617720616e2061666669726d6174696f6e20666f72206120676976656e20696e737472756374696f6e2e002c2320417267756d656e7473ec2a2060696460202d20496e737472756374696f6e20696420666f7220746861742061666669726d6174696f6e206765742077697468647261776e2e5d012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2077697468647261772061666669726d6174696f6e2e01012a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f20626520756e2d61666669726d65642e003423205065726d697373696f6e732c2a20506f7274666f6c696f4872656a6563745f696e737472756374696f6e0c010869648d030134496e737472756374696f6e4964000124706f7274666f6c696fdc012c506f7274666f6c696f496400012c6e756d5f6f665f6c65677310010c7533320007248052656a6563747320616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e7473882a2060696460202d20496e737472756374696f6e20696420746f2072656a6563742ed02a2060706f7274666f6c696f60202d20506f7274666f6c696f20746f2072656a6563742074686520696e737472756374696f6e2ed02a20606e756d5f6f665f6c65677360202d204e756d626572206f66206c65677320696e2074686520696e737472756374696f6e2e003423205065726d697373696f6e732c2a20506f7274666f6c696f5061666669726d5f776974685f726563656970747310010869648d030134496e737472756374696f6e496400013c726563656970745f64657461696c73790701dc5665633c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e000128706f7274666f6c696f73ec01405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000830cc4163636570747320616e20696e737472756374696f6e20616e6420636c61696d732061207369676e656420726563656970742e002c2320417267756d656e74737c2a2060696460202d2054617267657420696e737472756374696f6e2069642ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d42a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e8c2a20607369676e657260202d205369676e6572206f662074686520726563656970742e842a20607369676e65645f6461746160202d205369676e656420726563656970742e79012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f20616363657074207468697320696e737472756374696f6e2077697468003423205065726d697373696f6e732c2a20506f7274666f6c696f34636c61696d5f7265636569707408010869648d030134496e737472756374696f6e496400013c726563656970745f64657461696c737d0701c85265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e00092c60436c61696d732061207369676e656420726563656970742e002c2320417267756d656e7473bc2a2060696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d42a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e8c2a20607369676e657260202d205369676e6572206f662074686520726563656970742e842a20607369676e65645f6461746160202d205369676e656420726563656970742e003423205065726d697373696f6e732c2a20506f7274666f6c696f3c756e636c61696d5f72656365697074080138696e737472756374696f6e5f69648d030134496e737472756374696f6e49640001186c65675f69649d0301144c65674964000a2098556e636c61696d7320612070726576696f75736c7920636c61696d656420726563656970742e002c2320417267756d656e7473ec2a2060696e737472756374696f6e5f696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074003423205065726d697373696f6e732c2a20506f7274666f6c696f4c7365745f76656e75655f66696c746572696e670801187469636b6572a401185469636b657200011c656e61626c65641d010110626f6f6c000b20c0456e61626c6573206f722064697361626c65642076656e75652066696c746572696e6720666f72206120746f6b656e2e002c2320417267756d656e7473b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e19012a2060656e61626c656460202d20426f6f6c65616e20746861742064656369646573206966207468652066696c746572696e672073686f756c6420626520656e61626c65642e003423205065726d697373696f6e731c2a20417373657430616c6c6f775f76656e7565730801187469636b6572a401185469636b657200011876656e756573a50301305665633c56656e756549643e000c1c0d01416c6c6f7773206164646974696f6e616c2076656e75657320746f2063726561746520696e737472756374696f6e7320696e766f6c76696e6720616e2061737365742e00b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e7d012a206076656e75657360202d204172726179206f662076656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e003423205065726d697373696f6e731c2a2041737365743c646973616c6c6f775f76656e7565730801187469636b6572a401185469636b657200011876656e756573a50301305665633c56656e756549643e000d1c69015265766f6b6573207065726d697373696f6e20676976656e20746f2076656e75657320666f72206372656174696e6720696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c61722061737365742e00b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2ea5012a206076656e75657360202d204172726179206f662076656e756573207468617420617265206e6f206c6f6e67657220616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e003423205065726d697373696f6e731c2a2041737365745c6368616e67655f726563656970745f76616c696469747908012c726563656970745f75696420010c75363400012076616c69646974791d010110626f6f6c000e14fc4d61726b732061207265636569707420697373756564206279207468652063616c6c657220617320636c61696d6564206f72206e6f7420636c61696d65642ec1015468697320616c6c6f77732074686520726563656970742069737375657220746f20696e76616c696461746520616e20616c7265616479206973737565642072656365697074206f7220726576616c696461746520616e20616c726561647920636c61696d656420726563656970742e00ac2a2060726563656970745f75696460202d20556e69717565204944206f662074686520726563656970742eac2a206076616c696469747960202d204e65772076616c6964697479206f662074686520726563656970742e74657865637574655f7363686564756c65645f696e737472756374696f6e08010869648d030134496e737472756374696f6e496400012c5f6c6567735f636f756e7410010c753332000f048101526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f20657865637574652061207363686564756c656420736574746c656d656e7420696e737472756374696f6e2e5872657363686564756c655f696e737472756374696f6e04010869648d030134496e737472756374696f6e49640010288452657363686564756c65732061206661696c656420696e737472756374696f6e2e002c2320417267756d656e7473b42a2060696460202d2054617267657420696e737472756374696f6e20696420746f2072657363686564756c652e003423205065726d697373696f6e732c2a20506f7274666f6c696f002023204572726f72733d012a2060496e737472756374696f6e4e6f744661696c656460202d20496e737472756374696f6e206e6f7420696e2061206661696c6564207374617465206f7220646f6573206e6f742065786973742e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e79070000027d07007d07084470616c6c65745f736574746c656d656e74385265636569707444657461696c7308244163636f756e7449640100444f6666436861696e5369676e61747572650181070014012c726563656970745f75696420010c7536340001186c65675f69649d0301144c656749640001187369676e65720001244163636f756e7449640001247369676e6174757265810701444f6666436861696e5369676e61747572650001206d65746164617461a103013c526563656970744d6574616461746100008107082873705f72756e74696d65384d756c74695369676e617475726500010c1c456432353531390400c9060148656432353531393a3a5369676e61747572650000001c537232353531390400f9060148737232353531393a3a5369676e617475726500010014456364736104008507014065636473613a3a5369676e61747572650002000085070c1c73705f636f7265146563647361245369676e617475726500000400110701205b75383b2036355d00008907084470616c6c65745f737461746973746963731043616c6c040454000110506164645f7472616e736665725f6d616e616765720801187469636b6572a401185469636b65720001506e65775f7472616e736665725f6d616e61676572ad03013c5472616e736665724d616e6167657200003870416464732061206e6577207472616e73666572206d616e616765722e002c2320417267756d656e7473c5012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e11012a20607469636b657260207469636b657220666f7220776869636820746865207472616e73666572206d616e616765727320617265206265696e6720757064617465642ed82a20606e65775f7472616e736665725f6d616e6167657260205472616e73666572206d616e61676572206265696e672061646465642e002023204572726f7273f02a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722e65012a20604475706c69636174655472616e736665724d616e616765726020696620606e65775f7472616e736665725f6d616e616765726020697320616c726561647920656e61626c656420666f7220746865207469636b65722e35012a20605472616e736665724d616e61676572734c696d697452656163686564602069662074686520607469636b65726020616c726561647920686173206d617820544d73206174746163686564003423205065726d697373696f6e731c2a2041737365745c72656d6f76655f7472616e736665725f6d616e616765720801187469636b6572a401185469636b65720001407472616e736665725f6d616e61676572ad03013c5472616e736665724d616e616765720001346c52656d6f7665732061207472616e73666572206d616e616765722e002c2320417267756d656e7473c5012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e11012a20607469636b657260207469636b657220666f7220776869636820746865207472616e73666572206d616e616765727320617265206265696e6720757064617465642ed02a20607472616e736665725f6d616e6167657260205472616e73666572206d616e61676572206265696e672072656d6f7665642e002023204572726f7273f02a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722ea9012a20605472616e736665724d616e616765724d697373696e6760206966206061737365745f636f6d706c69616e63656020636f6e7461696e73206d756c7469706c6520656e74726965732077697468207468652073616d652060726571756972656d656e745f6964602e003423205065726d697373696f6e731c2a204173736574546164645f6578656d707465645f656e7469746965730c01187469636b6572a401185469636b65720001407472616e736665725f6d616e61676572ad03013c5472616e736665724d616e616765720001446578656d707465645f656e746974696573310101305665633c53636f706549643e0002349c4578656d707420656e7469746965732066726f6d2061207472616e73666572206d616e61676572002c2320417267756d656e7473c5012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e05012a20607469636b657260207469636b657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e55012a20607472616e736665725f6d616e6167657260205472616e73666572206d616e6167657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e39012a20606578656d707465645f656e746974696573602053636f706549647320666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e002023204572726f7273f02a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722e003423205065726d697373696f6e731c2a2041737365746072656d6f76655f6578656d707465645f656e7469746965730c01187469636b6572a401185469636b65720001407472616e736665725f6d616e61676572ad03013c5472616e736665724d616e61676572000120656e746974696573310101305665633c53636f706549643e000334e472656d6f766520656e7469746965732066726f6d206578656d7074696f6e206c697374206f662061207472616e73666572206d616e61676572002c2320417267756d656e7473c5012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e05012a20607469636b657260207469636b657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e55012a20607472616e736665725f6d616e6167657260205472616e73666572206d616e6167657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e19012a206073636f70655f696473602053636f706549647320666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e002023204572726f7273f02a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e8d07082870616c6c65745f73746f1043616c6c040454000118446372656174655f66756e647261697365722801486f66666572696e675f706f7274666f6c696fdc012c506f7274666f6c696f49640001386f66666572696e675f6173736574a401185469636b657200014472616973696e675f706f7274666f6c696fdc012c506f7274666f6c696f496400013472616973696e675f6173736574a401185469636b65720001147469657273910701385665633c5072696365546965723e00012076656e75655f69648103011c56656e756549640001147374617274f801444f7074696f6e3c543a3a4d6f6d656e743e00010c656e64f801444f7074696f6e3c543a3a4d6f6d656e743e0001486d696e696d756d5f696e766573746d656e7418011c42616c616e636500013c66756e647261697365725f6e616d65bd03013846756e647261697365724e616d65000040604372656174652061206e65772066756e647261697365722e000d012a20606f66666572696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e672074686520606f66666572696e675f6173736574602ea42a20606f66666572696e675f617373657460202d204173736574206265696e67206f6666657265642e05012a206072616973696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e6720746865206072616973696e675f6173736574602e35012a206072616973696e675f617373657460202d204173736574206265696e672065786368616e67656420666f7220606f66666572696e675f617373657460206f6e20696e766573746d656e742ee82a2060746965727360202d20507269636520746965727320746f2063686172676520696e766573746f7273206f6e20696e766573746d656e742ea82a206076656e75655f696460202d2056656e756520746f2068616e646c6520736574746c656d656e742e4d012a2060737461727460202d2046756e647261697365722073746172742074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c20737461727420696d6d6564696174656c792e29012a2060656e6460202d2046756e6472616973657220656e642074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c206e65766572206578706972652ecd012a20606d696e696d756d5f696e766573746d656e7460202d204d696e696d756d20616d6f756e74206f66206072616973696e675f617373657460207468617420616e20696e766573746f72206e6565647320746f207370656e6420746f20696e7665737420696e20746869732072616973652ef02a206066756e647261697365725f6e616d6560202d2046756e64726169736572206e616d652c206f6e6c79207573656420696e20746865205549732e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f18696e766573741c0150696e766573746d656e745f706f7274666f6c696fdc012c506f7274666f6c696f496400014466756e64696e675f706f7274666f6c696fdc012c506f7274666f6c696f49640001386f66666572696e675f6173736574a401185469636b65720001086964b903013046756e64726169736572496400013c70757263686173655f616d6f756e7418011c42616c616e63650001246d61785f70726963659907013c4f7074696f6e3c42616c616e63653e00011c726563656970749d0701e84f7074696f6e3c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e0001305c496e7665737420696e20612066756e647261697365722e0041012a2060696e766573746d656e745f706f7274666f6c696f60202d20506f7274666f6c696f207468617420606f66666572696e675f6173736574602077696c6c206265206465706f736974656420696e2e01012a206066756e64696e675f706f7274666f6c696f60202d20506f7274666f6c696f20746861742077696c6c2066756e642074686520696e766573746d656e742ea02a20606f66666572696e675f617373657460202d20417373657420746f20696e7665737420696e2eac2a2060696460202d204944206f66207468652066756e6472616973657220746f20696e7665737420696e2ef42a206070757263686173655f616d6f756e7460202d20416d6f756e74206f6620606f66666572696e675f61737365746020746f2070757263686173652eb9012a20606d61785f707269636560202d204d6178696d756d20707269636520746f207061792070657220756e6974206f6620606f66666572696e675f6173736574602c20496620604e6f6e6560746865726520617265206e6f20636f6e73747261696e7473206f6e2070726963652e69012a20607265636569707460202d204f66662d636861696e207265636569707420746f2075736520696e7374656164206f66206f6e2d636861696e2062616c616e636520696e206066756e64696e675f706f7274666f6c696f602e003423205065726d697373696f6e732c2a20506f7274666f6c696f44667265657a655f66756e647261697365720801386f66666572696e675f6173736574a401185469636b65720001086964b903013046756e64726169736572496400021c50467265657a6520612066756e647261697365722e00942a20606f66666572696e675f617373657460202d20417373657420746f20667265657a652ea02a2060696460202d204944206f66207468652066756e6472616973657220746f20667265657a652e003423205065726d697373696f6e731c2a2041737365744c756e667265657a655f66756e647261697365720801386f66666572696e675f6173736574a401185469636b65720001086964b903013046756e64726169736572496400031c58556e667265657a6520612066756e647261697365722e009c2a20606f66666572696e675f617373657460202d20417373657420746f20756e667265657a652ea82a2060696460202d204944206f66207468652066756e6472616973657220746f20756e667265657a652e003423205065726d697373696f6e731c2a204173736574606d6f646966795f66756e647261697365725f77696e646f771001386f66666572696e675f6173736574a401185469636b65720001086964b903013046756e6472616973657249640001147374617274200124543a3a4d6f6d656e7400010c656e64f801444f7074696f6e3c543a3a4d6f6d656e743e000424b44d6f64696679207468652074696d652077696e646f7720612066756e647261697365722069732061637469766500942a20606f66666572696e675f617373657460202d20417373657420746f206d6f646966792ea02a2060696460202d204944206f66207468652066756e6472616973657220746f206d6f646966792ea02a2060737461727460202d204e6577207374617274206f66207468652066756e647261697365722eb82a2060656e6460202d204e657720656e64206f66207468652066756e6472616973657220746f206d6f646966792e003423205065726d697373696f6e731c2a2041737365741073746f700801386f66666572696e675f6173736574a401185469636b65720001086964b903013046756e64726169736572496400051c4853746f7020612066756e647261697365722e008c2a20606f66666572696e675f617373657460202d20417373657420746f2073746f702e982a2060696460202d204944206f66207468652066756e6472616973657220746f2073746f702e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e91070000029507009507082870616c6c65745f73746f245072696365546965720000080114746f74616c18011c42616c616e6365000114707269636518011c42616c616e63650000990704184f7074696f6e04045401180108104e6f6e6500000010536f6d6504001800000100009d0704184f7074696f6e040454017d070108104e6f6e6500000010536f6d6504007d070000010000a107083c70616c6c65745f74726561737572791043616c6c0404540001083064697362757273656d656e7404013462656e65666963696172696573a50701785665633c42656e65666963696172793c42616c616e63654f663c543e3e3e00001851014974207472616e73666572732062616c616e6365732066726f6d20747265617375727920746f2065616368206f662062656e6566696369617269657320616e642074686520737065636966696320616d6f756e7444666f722065616368206f66207468656d2e001c23204572726f72c42a20604261644f726967696e603a204f6e6c7920726f6f742063616e2065786563757465207472616e73616374696f6e2e5d012a2060496e73756666696369656e7442616c616e6365603a2049662074726561737572792062616c616e636573206973206e6f7420656e6f75676820746f20636f76657220616c6c2062656e656669636961726965732e347265696d62757273656d656e74040118616d6f756e7418013042616c616e63654f663c543e00010c1d014974207472616e7366657273207468652073706563696669632060616d6f756e74602066726f6d20606f726967696e60206163636f756e7420696e746f2074726561737572792e0049014f6e6c79206163636f756e747320776869636820617265206173736f63696174656420746f20616e206964656e746974792063616e206d616b65206120646f6e6174696f6e20746f2074726561737572792e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ea507000002a90700a907084c706f6c796d6573685f7072696d6974697665732c42656e6566696369617279041c42616c616e636501180008010869647c01284964656e746974794964000118616d6f756e7418011c42616c616e63650000ad07083870616c6c65745f7574696c6974791043616c6c04045400011014626174636804011463616c6c73b10701605665633c3c5420617320436f6e6669673e3a3a43616c6c3e000048c44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e00e8546869732077696c6c206578656375746520756e74696c20746865206669727374206f6e65206661696c7320616e64207468656e2073746f702e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e00202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e00bd01546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e31016576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e207468655501604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d6164654d01616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c65746564604c6576656e74206973206465706f73697465642e3062617463685f61746f6d696304011463616c6c73b10701605665633c3c5420617320436f6e6669673e3a3a43616c6c3e00014cc44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e001501546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c2073746f7070696e6720617420746865206669727374206661696c7572652cc0696e207768696368206361736520746865207374617465206368616e6765732061726520726f6c6c6564206261636b2e25014f6e206661696c7572652c20616e206576656e7420604261746368496e746572727570746564286661696c7572655f6964782c206572726f722960206973206465706f73697465642e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e00202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e001501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef4546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ee4496620616e792063616c6c206661696c65642c207468656e20604261746368496e74657272757074656460206973206465706f73697465642e1501496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e4062617463685f6f7074696d697374696304011463616c6c73b10701605665633c3c5420617320436f6e6669673e3a3a43616c6c3e000254c44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e000101546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c20697272657370656374697665206f66206661696c757265732e0901416e79206661696c757265732077696c6c20626520617661696c61626c6520696e2061206042617463684f7074696d69737469634661696c656460206576656e742e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e0000202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e001501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef4546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ef8496620616e792063616c6c206661696c65642c207468656e206042617463684f7074696d69737469634661696c656460206973206465706f73697465642cfc77697468206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c2061732077656c6c206173206120766563746f72286f66206572726f72732e1501496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e2072656c61795f74780c0118746172676574000130543a3a4163636f756e7449640001247369676e617475726581070150543a3a4f6666436861696e5369676e617475726500011063616c6cb507017c556e6971756543616c6c3c3c5420617320436f6e6669673e3a3a43616c6c3e000330a052656c617920612063616c6c20666f722061207461726765742066726f6d20616e206f726967696e00510152656c6179696e6720696e207468697320636f6e746578742072656665727320746f20746865206162696c697479206f66206f726967696e20746f206d616b6520612063616c6c206f6e20626568616c66206f661c7461726765742e00684665657320617265206368617267656420746f206f726967696e00302320506172616d6574657273842d2060746172676574603a204163636f756e7420746f2062652072656c61796564e82d20607369676e6174757265603a205369676e61747572652066726f6d2074617267657420617574686f72697a696e67207468652072656c6179c02d206063616c6c603a2043616c6c20746f2062652072656c61796564206f6e20626568616c66206f6620746172676574000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652eb107000002810500b507083870616c6c65745f7574696c69747928556e6971756543616c6c040443018105000801146e6f6e6365200148417574686f72697a6174696f6e4e6f6e636500011063616c6c81050118426f783c433e0000b907082c70616c6c65745f626173651043616c6c0404540001000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ebd07085870616c6c65745f65787465726e616c5f6167656e74731043616c6c040454000118306372656174655f67726f75700801187469636b6572a401185469636b65720001147065726d73b4015045787472696e7369635065726d697373696f6e73000048e443726561746573206120637573746f6d206167656e742067726f7570202841472920666f722074686520676976656e20607469636b6572602e00d45468652041472077696c6c206861766520746865207065726d697373696f6e7320617320676976656e20627920607065726d73602e290154686973206e6577204147206973207468656e2061737369676e656420606964203d204147496453657175656e63653a3a6765742829202b20316020617320697473206041474964602c3901776869636820796f752063616e2075736520617320604167656e7447726f75703a3a437573746f6d2869642960207768656e20616464696e67206167656e747320666f7220607469636b6572602e002c2320417267756d656e74739c2d20607469636b65726020746f206164642074686520637573746f6d2067726f757020666f722e902d20607065726d7360207468617420746865206e65772041472077696c6c20686176652e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e21012d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672e25012d2060436f756e7465724f766572666c6f776020696620604147496453657175656e63653a3a6765742829202b20316020776f756c642065786365656420607533323a3a4d4158602e003423205065726d697373696f6e731c2a2041737365741c2a204167656e74547365745f67726f75705f7065726d697373696f6e730c01187469636b6572a401185469636b6572000108696419010110414749640001147065726d73b4015045787472696e7369635065726d697373696f6e7300013c51015570646174657320746865207065726d697373696f6e73206f662074686520637573746f6d204147206964656e74696669656420627920606964602c20666f722074686520676976656e20607469636b6572602e002c2320417267756d656e7473902d20607469636b6572602074686520637573746f6d2041472062656c6f6e677320746f2ea42d206069646020666f722074686520637573746f6d2041472077697468696e20607469636b6572602e942d20607065726d736020746f207570646174652074686520637573746f6d20414720746f2e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e21012d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672ecc2d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472e003423205065726d697373696f6e731c2a2041737365741c2a204167656e743072656d6f76655f6167656e740801187469636b6572a401185469636b65720001146167656e747c01284964656e7469747949640002389c52656d6f76652074686520676976656e20606167656e74602066726f6d20607469636b6572602e002c2320417267756d656e7473a82d20607469636b6572602074686174206861732074686520606167656e746020746f2072656d6f76652e802d20606167656e7460206f6620607469636b65726020746f2072656d6f76652e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ed82d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602ee82d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e746020697320746865206c6173742066756c6c206f6e652e003423205065726d697373696f6e731c2a2041737365741c2a204167656e742061626469636174650401187469636b6572a401185469636b657200032c804162646963617465206167656e747368697020666f7220607469636b6572602e002c2320417267756d656e7473ac2d20607469636b657260206f66207768696368207468652063616c6c657220697320616e206167656e742e002023204572726f7273e42d20604e6f74416e4167656e7460206966207468652063616c6c6572206973206e6f7420616e206167656e74206f6620607469636b6572602efc2d206052656d6f76696e674c61737446756c6c4167656e7460206966207468652063616c6c657220697320746865206c6173742066756c6c206167656e742e003423205065726d697373696f6e731c2a204173736574306368616e67655f67726f75700c01187469636b6572a401185469636b65720001146167656e747c01284964656e74697479496400011467726f7570150101284167656e7447726f7570000440ec4368616e676520746865206167656e742067726f7570207468617420606167656e74602062656c6f6e677320746f20696e20607469636b6572602e002c2320417267756d656e7473802d20607469636b6572602074686174206861732074686520606167656e74602eb82d20606167656e7460206f6620607469636b65726020746f206368616e6765207468652067726f757020666f722ec82d206067726f757060207468617420606167656e74602077696c6c2062656c6f6e6720746f20696e20607469636b6572602e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ecc2d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472ed82d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602e2d012d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e7460207761732061206046756c6c60206f6e6520616e64206973206265696e672064656d6f7465642e003423205065726d697373696f6e731c2a2041737365741c2a204167656e744c6163636570745f6265636f6d655f6167656e7404011c617574685f696420010c753634000540010141636365707420616e20617574686f72697a6174696f6e20627920616e206167656e742022416c696365222077686f206973737565642060617574685f696460d8746f20616c736f206265636f6d6520616e206167656e74206f6620746865207469636b657220416c696365207370656369666965642e002c2320417267756d656e7473d02d2060617574685f696460206964656e74696679696e672074686520617574686f72697a6174696f6e20746f206163636570742e002023204572726f727345012d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e35012d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f69646020697320666f7220616e206175746820746861742068617320657870697265642e4d012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f7420666f72206120604265636f6d654167656e7460206175746820747970652e25012d2060556e617574686f72697a65644167656e74602069662022416c69636522206973206e6f74207065726d697373696f6e656420746f2070726f766964652074686520617574682e0d012d20604e6f53756368414760206966207468652067726f757020726566657272656420746f206120637573746f6d207468617420646f6573206e6f742065786973742e0d012d2060416c7265616479416e4167656e7460206966207468652063616c6c657220697320616c726561647920616e206167656e74206f6620746865207469636b65722e003423205065726d697373696f6e731c2a204167656e740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ec107083870616c6c65745f72656c617965721043616c6c040454000118387365745f706179696e675f6b6579080120757365725f6b6579000130543a3a4163636f756e74496400012c706f6c79785f6c696d697418011c42616c616e6365000020bd014372656174657320616e20617574686f72697a6174696f6e20746f20616c6c6f772060757365725f6b65796020746f20616363657074207468652063616c6c65722028606f726967696e203d3d20706179696e675f6b6579602920617320746865697220737562736964697365722e002c2320417267756d656e74739c2d2060757365725f6b657960207468652075736572206b657920746f207375627369646973652ee42d2060706f6c79785f6c696d6974602074686520696e697469616c20504f4c5958206c696d697420666f72207468697320737562736964792e002023204572726f727331012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e446163636570745f706179696e675f6b657904011c617574685f696420010c753634000138944163636570747320612060706179696e675f6b65796020617574686f72697a6174696f6e2e002c2320417267756d656e7473e82d2060617574685f6964602074686520617574686f72697a6174696f6e20696420746f2061636365707420612060706179696e675f6b6579602e002023204572726f727345012d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e2d012d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f6964602074686520617574686f72697a6174696f6e2068617320657870697265642e6d012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f742061206041646452656c61796572506179696e674b65796020617574686f72697a6174696f6e2ea5012d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f206163636570742074686520617574686f72697a6174696f6e20666f72207468652060757365725f6b6579602ed5012d20604e6f74417574686f72697a6564466f72506179696e674b6579602069662074686520617574686f72697a6174696f6e2077617320637265617465642062792061207369676e657220746861742069736e277420617574686f72697a6564206279207468652060706179696e675f6b6579602e31012d2060557365724b65794364644d697373696e6760206966207468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e41012d2060506179696e674b65794364644d697373696e6760206966207468652060706179696e675f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e4472656d6f76655f706179696e675f6b6579080120757365725f6b6579000130543a3a4163636f756e744964000128706179696e675f6b6579000130543a3a4163636f756e74496400022cac52656d6f766573207468652060706179696e675f6b6579602066726f6d20612060757365725f6b6579602e002c2320417267756d656e7473d42d2060757365725f6b657960207468652075736572206b657920746f2072656d6f76652074686520737562736964792066726f6d2e09012d2060706179696e675f6b6579602074686520706179696e67206b6579207468617420776173207375627369646973696e67207468652060757365725f6b6579602e002023204572726f72738d012d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2072656d6f766520746865207375627369647920666f72207468652060757365725f6b6579602ef82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e31012d20604e6f74506179696e674b657960206966207468652060706179696e675f6b65796020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e487570646174655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e74496400012c706f6c79785f6c696d697418011c42616c616e6365000328b4557064617465732074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e35012d2060706f6c79785f6c696d6974602074686520616d6f756e74206f6620504f4c595820617661696c61626c6520666f72207375627369646973696e67207468652060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e50696e6372656173655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e744964000118616d6f756e7418011c42616c616e636500042cb8496e6372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e0d012d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2061646420746f207468652073756273696479206f662060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e3d012d20604f7665726c6f776020696620746865207375627369647927732072656d61696e696e6720504f4c595820776f756c642068617665206f766572666c6f7765642060753132383a3a4d4158602e5064656372656173655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e744964000118616d6f756e7418011c42616c616e636500052cb844656372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e21012d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2072656d6f76652066726f6d207468652073756273696479206f662060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e09012d20604f7665726c6f776020696620746865207375627369647920686173206c657373207468656e2060616d6f756e746020504f4c59582072656d61696e696e672e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ec507083870616c6c65745f726577617264731043616c6c04045400010840636c61696d5f69746e5f7265776172640c01387265776172645f61646472657373000130543a3a4163636f756e74496400012c69746e5f61646472657373000130543a3a4163636f756e7449640001247369676e617475726581070150543a3a4f6666436861696e5369676e617475726500003450436c61696d20616e2049544e207265776172642e0030232320417267756d656e7473d82a206069746e5f61646472657373602073706563696679696e672074686520617761726465642061646472657373206f6e2049544e2ed42a20607369676e6174757265602061757468656e7469636174696e672074686520636c61696d20746f20746865207265776172642e7501202020546865207369676e61747572652073686f756c6420636f6e7461696e20607265776172645f616464726573736020666f6c6c6f7765642062792074686520737566666978206022636c61696d5f69746e5f72657761726422602cb8202020616e64206d7573742068617665206265656e207369676e6564206279206069746e5f61646472657373602e002023204572726f727345012a2060496e73756666696369656e7442616c616e636560202d2049746e20726577617264732068617320696e73756666696369656e742066756e647320746f20697373756520746865207265776172642e31012a2060496e76616c69645369676e617475726560202d20607369676e6174757265602068616420616e20696e76616c6964207369676e6572206f7220696e76616c6964206d6573736167652e69012a206049746e526577617264416c7265616479436c61696d656460202d205265776172642069737375656420746f20746865206069746e5f61646472657373602068617320616c7265616479206265656e20636c61696d65642e89012a2060556e6b6e6f776e49746e4164647265737360202d206069746e5f6164647265737360206973206e6f7420696e207468652072657761726473207461626c6520616e6420686173206e6f2072657761726420746f20626520636c61696d65642e547365745f69746e5f7265776172645f73746174757308012c69746e5f61646472657373000130543a3a4163636f756e744964000118737461747573c907013c49746e5265776172645374617475730001000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ec907083870616c6c65745f726577617264733c49746e52657761726453746174757300010824556e636c61696d6564040018011c42616c616e63650000001c436c61696d656400010000cd07084470616c6c65745f746573745f7574696c731043616c6c0404540001103072656769737465725f64696408010c7569642101012c496e766573746f725569640001387365636f6e646172795f6b657973f104017c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e0000284d0147656e6572617465732061206e657720604964656e7469747949446020666f72207468652063616c6c65722c20616e642069737375657320612073656c662d67656e6572617465642043444420636c61696d2e00f05468652063616c6c6572206163636f756e742077696c6c20626520746865207072696d617279206b6579206f662074686174206964656e746974792e5d01466f722065616368206163636f756e74206f6620607365636f6e646172795f6b657973602c2061206e657720604a6f696e4964656e746974796020617574686f72697a6174696f6e20697320637265617465642c20736f410165616368206f66207468656d2077696c6c206e65656420746f20616363657074206974206265666f7265206265636f6d652070617274206f662074686973206e657720604964656e746974794944602e002023204572726f7273d5012d2060416c72656164794c696e6b656460206966207468652063616c6c6572206163636f756e74206f7220696620616e79206f662074686520676976656e20607365636f6e646172795f6b657973602068617320616c7265616479206c696e6b656420746f20616e20604964656e746974794944604d012d20605365636f6e646172794b657973436f6e7461696e5072696d6172794b65796020696620607365636f6e646172795f6b6579736020636f6e7461696e73207468652063616c6c6572206163636f756e742ee82d2060446964416c726561647945786973747360206966206175746f2d67656e6572617465642044494420616c7265616479206578697374732e546d6f636b5f6364645f72656769737465725f6469640401387461726765745f6163636f756e74000130543a3a4163636f756e7449640001303d015265676973746572732061206e6577204964656e7469747920666f722074686520607461726765745f6163636f756e746020616e642069737375657320612043444420636c61696d20746f2069742e510154686520496e766573746f72205549442069732067656e6572617465642064657465726d696e6973746963616c6c79206279207468652068617368206f66207468652067656e6572617465642044494420616e64b07468656e2077652066697820697420746f20626520636f6d706c69616e74207769746820555549442076342e00142320536565dc2d205b52464320343132323a20555549445d2868747470733a2f2f746f6f6c732e696574662e6f72672f68746d6c2f7266633431323229002423204661696c75726549012d20606f726967696e602068617320746f20626520616e20616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792e286765745f6d795f64696400020498456d69747320616e206576656e7420776974682063616c6c65722773206964656e746974792e286765745f6364645f6f660401086f66000130543a3a4163636f756e744964000304d4456d69747320616e206576656e7420776974682063616c6c65722773206964656e7469747920616e6420434444207374617475732e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ed107084070616c6c65745f636f6d6d697474656534506f6c796d657368566f746573042c426c6f636b4e756d626572011000100114696e64657810013450726f706f73616c496e646578000110617965733101013c5665633c4964656e7469747949643e0001106e6179733101013c5665633c4964656e7469747949643e0001186578706972794501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0000d507084070616c6c65745f636f6d6d69747465651c56657273696f6e0000040008010875380000d907084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e00dd07083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00e107084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e00e507083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00e907084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e00ed07083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00f10700000408009800f50700000408002000f9070000040800810500fd070000040c009820000108083c70616c6c65745f6d756c74697369673c50726f706f73616c44657461696c73040454012000140124617070726f76616c7320010c75363400012872656a656374696f6e7320010c7536340001187374617475730508013850726f706f73616c537461747573000118657870697279f801244f7074696f6e3c543e0001286175746f5f636c6f73651d010110626f6f6c00000508083c70616c6c65745f6d756c74697369673850726f706f73616c5374617475730001141c496e76616c69640000003c4163746976654f72457870697265640001004c457865637574696f6e5375636365737366756c0002003c457865637574696f6e4661696c65640003002052656a6563746564000400000908083c70616c6c65745f6d756c7469736967144572726f7204045400015c284364644d697373696e67000004c4546865206d756c7469736967206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e3c50726f706f73616c4d697373696e67000104705468652070726f706f73616c20646f6573206e6f742065786973742e344465636f64696e674572726f72000204444d756c746973696720616464726573732e244e6f5369676e6572730003042c4e6f207369676e6572732e7452657175697265645369676e6174757265734f75744f66426f756e6473000404a0546f6f20666577206f7220746f6f206d616e79207265717569726564207369676e6174757265732e284e6f74415369676e6572000504344e6f742061207369676e65722e384e6f537563684d756c7469736967000604444e6f2073756368206d756c74697369672e404e6f74456e6f7567685369676e6572730007044c4e6f7420656e6f756768207369676e6572732e344e6f6e63654f766572666c6f770008044441206e6f6e6365206f766572666c6f772e30416c7265616479566f74656400090438416c726561647920766f7465642e38416c7265616479415369676e6572000a0444416c72656164792061207369676e65722e444661696c6564546f436861726765466565000b04a0436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e484964656e746974794e6f7443726561746f72000c04c04964656e746974792070726f7669646564206973206e6f7420746865206d756c746973696727732063726561746f722e404368616e67654e6f74416c6c6f776564000d0425014368616e67696e67206d756c746973696720706172616d6574657273206e6f7420616c6c6f7765642073696e6365206d756c74697369672069732061207072696d617279206b65792e4c5369676e6572416c72656164794c696e6b6564000e0411015369676e657220697320616e206163636f756e74206b6579207468617420697320616c7265616479206173736f63696174656420776974682061206d756c74697369672e584d697373696e6743757272656e744964656e74697479000f045843757272656e7420444944206973206d697373696e67344e6f745072696d6172794b6579001004f45468652066756e6374696f6e2063616e206f6e6c792062652063616c6c656420627920746865207072696d617279206b6579206f6620746865206469645c50726f706f73616c416c726561647952656a65637465640011047450726f706f73616c207761732072656a6563746564206561726c6965723c50726f706f73616c457870697265640012045050726f706f73616c2068617320657870697265645c50726f706f73616c416c726561647945786563757465640013047450726f706f73616c20776173206578656375746564206561726c6965725c4d756c74697369674d697373696e674964656e746974790014049c4d756c7469736967206973206e6f7420617474616368656420746f20616e206964656e74697479404661696c6564546f5363686564756c65001504785363686564756c696e67206f6620612070726f706f73616c206661696c7338546f6f4d616e795369676e6572730016046c4d6f7265207369676e657273207468616e2072657175697265642e045c4d756c7469736967206d6f64756c65206572726f72732e0d08000004080010001108083470616c6c65745f62726964676538427269646765547844657461696c042c426c6f636b4e756d626572011000100118616d6f756e7418011c42616c616e636500011873746174757315080138427269646765547853746174757300013c657865637574696f6e5f626c6f636b10012c426c6f636b4e756d62657200011c74785f686173682401104832353600001508083470616c6c65745f62726964676538427269646765547853746174757300011418416273656e740000001c50656e64696e67040008010875380001001846726f7a656e0002002854696d656c6f636b65640003001c48616e646c6564000400001908000004081810001d08083470616c6c65745f6272696467651c56657273696f6e00000400080108753800002108083470616c6c65745f627269646765144572726f7204045400013440436f6e74726f6c6c65724e6f74536574000004a45468652062726964676520636f6e74726f6c6c65722061646472657373206973206e6f74207365742e2442616443616c6c6572000104d8546865206f726967696e206973206e6f742074686520636f6e74726f6c6c6572206f72207468652061646d696e20616464726573732e2042616441646d696e00020490546865206f726967696e206973206e6f74207468652061646d696e20616464726573732e284e6f56616c69644364640003048c54686520726563697069656e742044494420686173206e6f2076616c6964204344442e5850726f706f73616c416c726561647948616e646c6564000404390154686520627269646765207472616e73616374696f6e2070726f706f73616c2068617320616c7265616479206265656e2068616e646c656420616e64207468652066756e6473206d696e7465642e30556e617574686f72697a656400050494556e617574686f72697a656420746f20706572666f726d20616e206f7065726174696f6e2e1846726f7a656e000604745468652062726964676520697320616c72656164792066726f7a656e2e244e6f7446726f7a656e0007046454686520627269646765206973206e6f742066726f7a656e2e2046726f7a656e547800080468546865207472616e73616374696f6e2069732066726f7a656e2e484272696467654c696d697452656163686564000904e4546865206964656e746974792773206d696e74656420746f74616c2068617320726561636865642074686520627269646765206c696d69742e204f766572666c6f77000a04ac546865206964656e746974792773206d696e74656420746f74616c20686173206f766572666c6f7765642e384469766973696f6e42795a65726f000b04cc54686520626c6f636b20696e74657276616c206475726174696f6e206973207a65726f2e2043616e6e6f74206469766964652e3054696d656c6f636b65645478000c0478546865207472616e73616374696f6e2069732074696d656c6f636b65642e002508083870616c6c65745f7374616b696e67345374616b696e674c656467657208244163636f756e74496401001c42616c616e636501180014011473746173680001244163636f756e744964000114746f74616cd101011c42616c616e6365000118616374697665d101011c42616c616e6365000124756e6c6f636b696e67290801645665633c556e6c6f636b4368756e6b3c42616c616e63653e3e00013c636c61696d65645f72657761726473d90301345665633c457261496e6465783e000029080000022d08002d08083870616c6c65745f7374616b696e672c556e6c6f636b4368756e6b041c42616c616e636501180008011476616c7565d101011c42616c616e636500010c6572610d040120457261496e64657800003108083870616c6c65745f7374616b696e672c4e6f6d696e6174696f6e7304244163636f756e7449640100000c011c74617267657473910101385665633c4163636f756e7449643e0001307375626d69747465645f696e100120457261496e646578000128737570707265737365641d010110626f6f6c00003508083870616c6c65745f7374616b696e6734416374697665457261496e666f0000080114696e646578100120457261496e6465780001147374617274f8012c4f7074696f6e3c7536343e00003908000004081000003d08083870616c6c65745f7374616b696e673c457261526577617264506f696e747304244163636f756e744964010000080114746f74616c10012c526577617264506f696e74000128696e646976696475616c4108018042547265654d61703c4163636f756e7449642c20526577617264506f696e743e00004108042042547265654d617008044b010004560110000400450800000045080000020d08004908083870616c6c65745f7374616b696e671c466f7263696e67000110284e6f74466f7263696e6700000020466f7263654e657700010024466f7263654e6f6e650002002c466f726365416c77617973000300004d080000025108005108083870616c6c65745f7374616b696e6738556e6170706c696564536c61736808244163636f756e74496401001c42616c616e636501180014012476616c696461746f720001244163636f756e74496400010c6f776e18011c42616c616e63650001186f7468657273550801645665633c284163636f756e7449642c2042616c616e6365293e0001247265706f7274657273910101385665633c4163636f756e7449643e0001187061796f757418011c42616c616e6365000055080000025908005908000004080018005d08000004089501180061080c3870616c6c65745f7374616b696e6720736c617368696e6734536c617368696e675370616e7300001001287370616e5f696e6465781001245370616e496e6465780001286c6173745f7374617274100120457261496e6465780001486c6173745f6e6f6e7a65726f5f736c617368100120457261496e6465780001147072696f72d90301345665633c457261496e6465783e000065080c3870616c6c65745f7374616b696e6720736c617368696e67285370616e5265636f7264041c42616c616e636501180008011c736c617368656418011c42616c616e6365000120706169645f6f757418011c42616c616e636500006908083870616c6c65745f7374616b696e6738456c656374696f6e526573756c7408244163636f756e74496401001c42616c616e63650118000c013c656c65637465645f73746173686573910101385665633c4163636f756e7449643e0001246578706f7375726573c50101b85665633c284163636f756e7449642c204578706f737572653c4163636f756e7449642c2042616c616e63653e293e00011c636f6d707574658d01013c456c656374696f6e436f6d7075746500006d08083870616c6c65745f7374616b696e6738456c656374696f6e537461747573042c426c6f636b4e756d6265720110010818436c6f736564000000104f70656e040010012c426c6f636b4e756d626572000100007108083870616c6c65745f7374616b696e67645065726d697373696f6e65644964656e7469747950726566730000080138696e74656e6465645f636f756e7410010c75333200013472756e6e696e675f636f756e7410010c75333200007508083870616c6c65745f7374616b696e672052656c65617365730001203456315f305f30416e6369656e740000001856325f305f300001001856335f305f300002001856345f305f300003001856355f305f300004001856365f305f300005001856365f305f310006001856375f305f30000700007908083870616c6c65745f7374616b696e67144572726f720404540001a8344e6f74436f6e74726f6c6c6572000004644e6f74206120636f6e74726f6c6c6572206163636f756e742e204e6f745374617368000104504e6f742061207374617368206163636f756e742e34416c7265616479426f6e64656400020460537461736820697320616c726561647920626f6e6465642e34416c726561647950616972656400030474436f6e74726f6c6c657220697320616c7265616479207061697265642e30456d7074795461726765747300040460546172676574732063616e6e6f7420626520656d7074792e44496e76616c6964536c617368496e64657800050484536c617368207265636f726420696e646578206f7574206f6620626f756e64732e44496e73756666696369656e7456616c7565000604c843616e206e6f7420626f6e6420776974682076616c7565206c657373207468616e206d696e696d756d2062616c616e63652e304e6f4d6f72654368756e6b730007049043616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b732e344e6f556e6c6f636b4368756e6b000804a043616e206e6f74207265626f6e6420776974686f757420756e6c6f636b696e67206368756e6b732e3046756e646564546172676574000904c8417474656d7074696e6720746f2074617267657420612073746173682074686174207374696c6c206861732066756e64732e48496e76616c6964457261546f526577617264000a0458496e76616c69642065726120746f207265776172642e484e6f74536f72746564416e64556e69717565000b04804974656d7320617265206e6f7420736f7274656420616e6420756e697175652e38416c7265616479436c61696d6564000c0409015265776172647320666f72207468697320657261206861766520616c7265616479206265656e20636c61696d656420666f7220746869732076616c696461746f722e7c4f6666636861696e456c656374696f6e4561726c795375626d697373696f6e000d04e0546865207375626d697474656420726573756c74206973207265636569766564206f7574206f6620746865206f70656e2077696e646f772e784f6666636861696e456c656374696f6e5765616b5375626d697373696f6e000e04fc546865207375626d697474656420726573756c74206973206e6f7420617320676f6f6420617320746865206f6e652073746f726564206f6e20636861696e2e4c536e617073686f74556e617661696c61626c65000f04cc54686520736e617073686f742064617461206f66207468652063757272656e742077696e646f77206973206d697373696e672e804f6666636861696e456c656374696f6e426f67757357696e6e6572436f756e74001004ac496e636f7272656374206e756d626572206f662077696e6e65727320776572652070726573656e7465642e6c4f6666636861696e456c656374696f6e426f67757357696e6e65720011085d014f6e65206f6620746865207375626d69747465642077696e6e657273206973206e6f7420616e206163746976652063616e646964617465206f6e20636861696e2028696e646578206973206f7574206f662072616e676534696e20736e617073686f74292e704f6666636861696e456c656374696f6e426f677573436f6d7061637400120859014572726f72207768696c65206275696c64696e67207468652061737369676e6d656e7420747970652066726f6d2074686520636f6d706163742e20546869732063616e2068617070656e20696620616e20696e646578a4697320696e76616c69642c206f72206966207468652077656967687473205f6f766572666c6f775f2e784f6666636861696e456c656374696f6e426f6775734e6f6d696e61746f7200130411014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f7273206973206e6f7420616e20616374697665206e6f6d696e61746f72206f6e20636861696e2e7c4f6666636861696e456c656374696f6e426f6775734e6f6d696e6174696f6e00140449014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e206564676520746f20776869636820746865792068617665206e6f7420766f746564206f6e20636861696e2e844f6666636861696e456c656374696f6e536c61736865644e6f6d696e6174696f6e0015085d014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e2065646765207768696368206973207375626d6974746564206265666f726520746865206c617374206e6f6e2d7a65726f50736c617368206f6620746865207461726765742e744f6666636861696e456c656374696f6e426f67757353656c66566f74650016042101412073656c6620766f7465206d757374206f6e6c79206265206f726967696e617465642066726f6d20612076616c696461746f7220746f204f4e4c59207468656d73656c7665732e644f6666636861696e456c656374696f6e426f677573456467650017044101546865207375626d697474656420726573756c742068617320756e6b6e6f776e206564676573207468617420617265206e6f7420616d6f6e67207468652070726573656e7465642077696e6e6572732e684f6666636861696e456c656374696f6e426f67757353636f7265001804150154686520636c61696d65642073636f726520646f6573206e6f74206d61746368207769746820746865206f6e6520636f6d70757465642066726f6d2074686520646174612e844f6666636861696e456c656374696f6e426f677573456c656374696f6e53697a650019047454686520656c656374696f6e2073697a6520697320696e76616c69642e3843616c6c4e6f74416c6c6f776564001a0445015468652063616c6c206973206e6f7420616c6c6f7765642061742074686520676976656e2074696d652064756520746f207265737472696374696f6e73206f6620656c656374696f6e20706572696f642e58496e636f7272656374536c617368696e675370616e73001b04b0496e636f7272656374206e756d626572206f6620736c617368696e67207370616e732070726f76696465642e34416c7265616479457869737473001c04985065726d697373696f6e65642076616c696461746f7220616c7265616479206578697374732e244e6f74457869737473001d04885065726d697373696f6e65642076616c696461746f72206e6f74206578697374732e204e6f4368616e6765001e04605570646174657320776974682073616d652076616c75652e60496e76616c696456616c696461746f724964656e74697479001f04b8476976656e20706f74656e7469616c2076616c696461746f72206964656e7469747920697320696e76616c69642e68496e76616c696456616c696461746f72436f6d6d697373696f6e0020049c56616c696461746f7220707265667320617265206e6f7420696e2076616c69642072616e67652e6453746173684964656e74697479446f65734e6f744578697374002104d456616c696461746f72206f72206e6f6d696e61746f72207374617368206964656e7469747920646f6573206e6f742065786973742e7053746173684964656e746974794e6f745065726d697373696f6e6564002204b856616c696461746f72207374617368206964656e7469747920776173206e6f74207065726d697373696f6e65642e5453746173684964656e746974794e6f744344446564002304784e6f6d696e61746f7220737461736820776173206e6f742043444465642e64486974496e74656e64656456616c696461746f72436f756e74002404bc52756e6e696e672076616c696461746f7220636f756e74206869742074686520696e74656e64656420636f756e742e98496e74656e646564436f756e744973457863656564696e67436f6e73656e7375734c696d697400250435015768656e2074686520696e74656e646564206e756d626572206f662076616c696461746f727320746f2072756e206973203e3d20322f33206f66206076616c696461746f725f636f756e74602e30426f6e64546f6f536d616c6c002604dc5768656e2074686520616d6f756e7420746f20626520626f6e646564206973206c657373207468616e20604d696e696d756d426f6e64602042616453746174650027043901496e7465726e616c20737461746520686173206265636f6d6520736f6d65686f7720636f7272757074656420616e6420746865206f7065726174696f6e2063616e6e6f7420636f6e74696e75652e38546f6f4d616e795461726765747300280494546f6f206d616e79206e6f6d696e6174696f6e207461726765747320737570706c6965642e244261645461726765740029043d0141206e6f6d696e6174696f6e207461726765742077617320737570706c69656420746861742077617320626c6f636b6564206f72206f7468657277697365206e6f7420612076616c696461746f722e04744572726f7220666f7220746865207374616b696e67206d6f64756c652e7d080c2873705f7374616b696e671c6f6666656e6365384f6666656e636544657461696c7308205265706f727465720100204f6666656e64657201c901000801206f6666656e646572c90101204f6666656e6465720001247265706f7274657273910101345665633c5265706f727465723e000081080000040825012800850800000289080089080000040800a906008d08000004089108280091080c1c73705f636f72651863727970746f244b65795479706549640000040038011c5b75383b20345d000095080c3870616c6c65745f73657373696f6e1870616c6c6574144572726f7204045400011430496e76616c696450726f6f6600000460496e76616c6964206f776e6572736869702070726f6f662e5c4e6f4173736f63696174656456616c696461746f7249640001049c4e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e344475706c6963617465644b65790002046452656769737465726564206475706c6963617465206b65792e184e6f4b657973000304a44e6f206b65797320617265206173736f63696174656420776974682074686973206163636f756e742e244e6f4163636f756e7400040419014b65792073657474696e67206163636f756e74206973206e6f74206c6976652c20736f206974277320696d706f737369626c6520746f206173736f6369617465206b6579732e04744572726f7220666f72207468652073657373696f6e2070616c6c65742e9908083870616c6c65745f6772616e6470612c53746f726564537461746504044e01100110104c6976650000003050656e64696e6750617573650801307363686564756c65645f61741001044e00011464656c61791001044e000100185061757365640002003450656e64696e67526573756d650801307363686564756c65645f61741001044e00011464656c61791001044e000300009d08083870616c6c65745f6772616e6470614c53746f72656450656e64696e674368616e676508044e0110144c696d697400001001307363686564756c65645f61741001044e00011464656c61791001044e0001406e6578745f617574686f726974696573a108016c426f756e646564417574686f726974794c6973743c4c696d69743e000118666f72636564c90501244f7074696f6e3c4e3e0000a10810346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401ad01045300000400a90101185665633c543e0000a5080c3870616c6c65745f6772616e6470611870616c6c6574144572726f7204045400011c2c50617573654661696c65640000080501417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665a42865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e30526573756d654661696c65640001081101417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e277420706175736564a028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e344368616e676550656e64696e67000204e8417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e1c546f6f536f6f6e000304bc43616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e60496e76616c69644b65794f776e65727368697050726f6f66000404310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f660005043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400060415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909a90810346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401bd01045300000400ad0801185665633c543e0000ad08000002bd0100b10810346672616d655f737570706f727418747261697473106d69736334577261707065724f706171756504045401b5080008000d04000000b5080104540000b508084070616c6c65745f696d5f6f6e6c696e6564426f756e6465644f70617175654e6574776f726b53746174650c4c506565724964456e636f64696e674c696d697400584d756c746941646472456e636f64696e674c696d697400384164647265737365734c696d6974000008011c706565725f6964b908019c5765616b426f756e6465645665633c75382c20506565724964456e636f64696e674c696d69743e00014865787465726e616c5f616464726573736573bd08012d015765616b426f756e6465645665633c5765616b426f756e6465645665633c75382c204d756c746941646472456e636f64696e674c696d69743e2c204164647265737365734c696d69740a3e0000b90810346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401080453000004002801185665633c543e0000bd0810346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401b908045300000400c10801185665633c543e0000c108000002b90800c5080c4070616c6c65745f696d5f6f6e6c696e651870616c6c6574144572726f7204045400010828496e76616c69644b6579000004604e6f6e206578697374656e74207075626c6963206b65792e4c4475706c696361746564486561727462656174000104544475706c696361746564206865617274626561742e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909c908082c70616c6c65745f7375646f144572726f720404540001042c526571756972655375646f0000047c53656e646572206d75737420626520746865205375646f206163636f756e7404644572726f7220666f7220746865205375646f206d6f64756c65cd08083070616c6c65745f6173736574485469636b6572526567697374726174696f6e0404550120000801146f776e65727c01284964656e746974794964000118657870697279f801244f7074696f6e3c553e0000d108083070616c6c65745f6173736574345365637572697479546f6b656e0000100130746f74616c5f737570706c7918011c42616c616e63650001246f776e65725f6469647c01284964656e746974794964000124646976697369626c651d010110626f6f6c00012861737365745f74797065e90101244173736574547970650000d50800000408a47c00d90800000408a4e50100dd08000004087ca400e108083070616c6c65745f61737365745841737365744f776e65727368697052656c6174696f6e00010c204e6f744f776e65640000002c5469636b65724f776e65640001002841737365744f776e656400020000e50800000408a4050200e908083070616c6c65745f617373657464436c61737369635469636b6572526567697374726174696f6e00000801246574685f6f776e65723502013c457468657265756d4164647265737300012869735f637265617465641d010110626f6f6c0000ed08000004087c7c00f108083070616c6c65745f61737365741c56657273696f6e0000040008010875380000f508083070616c6c65745f6173736574144572726f7204045400017c30556e617574686f72697a65640000046c5468652075736572206973206e6f7420617574686f72697a65642e3c416c72656164794172636869766564000104805768656e20657874656e73696f6e20616c72656164792061726368697665642e44416c7265616479556e41726368697665640002048c5768656e20657874656e73696f6e20616c726561647920756e2d61726368697665642e5c457874656e73696f6e416c726561647950726573656e74000304805768656e20657874656e73696f6e20697320616c72656164792061646465642e4c4173736574416c7265616479437265617465640004048c54686520746f6b656e2068617320616c7265616479206265656e20637265617465642e345469636b6572546f6f4c6f6e6700050490546865207469636b6572206c656e677468206973206f76657220746865206c696d69742e385469636b65724e6f7441736369690006049c546865207469636b657220686173206e6f6e2d61736369692d656e636f6465642070617274732e5c5469636b6572416c726561647952656769737465726564000704c4546865207469636b657220697320616c7265616479207265676973746572656420746f20736f6d656f6e6520656c73652e54546f74616c537570706c7941626f76654c696d69740008049054686520746f74616c20737570706c792069732061626f766520746865206c696d69742e2c4e6f537563684173736574000904384e6f207375636820746f6b656e2e34416c726561647946726f7a656e000a047054686520746f6b656e20697320616c72656164792066726f7a656e2e284e6f74416e4f776e6572000b04984e6f7420616e206f776e6572206f662074686520746f6b656e206f6e20457468657265756d2e3c42616c616e63654f766572666c6f77000c04a8416e206f766572666c6f77207768696c652063616c63756c6174696e67207468652062616c616e63652e4c546f74616c537570706c794f766572666c6f77000d04bc416e206f766572666c6f77207768696c652063616c63756c6174696e672074686520746f74616c20737570706c792e48496e76616c69644772616e756c6172697479000e045c416e20696e76616c6964206772616e756c61726974792e244e6f7446726f7a656e000f0464546865206173736574206d7573742062652066726f7a656e2e3c496e76616c69645472616e73666572001004845472616e736665722076616c69646174696f6e20636865636b206661696c65642e4c496e73756666696369656e7442616c616e6365001104945468652073656e6465722062616c616e6365206973206e6f742073756666696369656e742e544173736574416c7265616479446976697369626c650012047c54686520746f6b656e20697320616c726561647920646976697369626c652e784d6178696d756d544d457874656e73696f6e4c696d69745265616368656400130499014e756d626572206f66205472616e73666572204d616e6167657220657874656e73696f6e7320617474616368656420746f20616e20617373657420697320657175616c20746f204d61784e756d6265724f66544d457874656e73696f6e466f7241737365742e70496e636f6d70617469626c65457874656e73696f6e56657273696f6e001404dc476976656e20736d61727420657874656e73696f6e206973206e6f7420636f6d70617469626c652077697468207468652061737365742e60496e76616c6964457468657265756d5369676e617475726500150494416e20696e76616c696420457468657265756d206045636473615369676e6174757265602e4c4e6f53756368436c61737369635469636b65720016049854686520676976656e207469636b6572206973206e6f74206120636c6173736963206f6e652e645469636b6572526567697374726174696f6e457870697265640017048c526567697374726174696f6e206f66207469636b65722068617320657870697265642e5053656e64657253616d6541735265636569766572001804845472616e736665727320746f2073656c6620617265206e6f7420616c6c6f776564244e6f53756368446f630019048854686520676976656e20446f63756d656e7420646f6573206e6f742065786973742e704d61784c656e6774684f6641737365744e616d654578636565646564001a04bc4d6178696d756d206c656e677468206f66206173736574206e616d6520686173206265656e2065786365656465642e8446756e64696e67526f756e644e616d654d61784c656e6774684578636565646564001b04ec4d6178696d756d206c656e677468206f66207468652066756e64696e6720726f756e64206e616d6520686173206265656e2065786365656465642e58496e76616c696441737365744964656e746966696572001c048c536f6d65206041737365744964656e746966696572602077617320696e76616c69642e84496e766573746f72556e697175656e657373436c61696d4e6f74416c6c6f776564001d04e8496e766573746f7220556e697175656e65737320636c61696d7320617265206e6f7420616c6c6f77656420666f7220746869732061737365742e60496e76616c6964437573746f6d4173736574547970654964001e0470496e76616c69642060437573746f6d4173736574547970654964602e00f9080000040841027c00fd080c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e1c56657273696f6e000004000801087538000001090c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e144572726f720404540001383043414e6f7442656e65666974000004d441206361706974616c20646973747269627574696f6e20776173206d61646520666f722061206e6f6e2d62656e656669742043412e34416c7265616479457869737473000104a84120646973747269627574696f6e20616c72656164792065786973747320666f7220746869732043412e4c4578706972794265666f72655061796d656e7400020829014120646973747269627574696f6e732070726f766964656420657870697279206461746520776173207374726963746c79206265666f726520697473207061796d656e7420646174652e2101496e206f7468657220776f7264732c2065766572797468696e6720746f206469737472696275746520776f756c6420696d6d6564696174656c7920626520666f726665697465642e44446973747269627574696e674173736574000308f043757272656e63792074686174206973206469737472696275746564206973207468652073616d65206173207468652043412773207469636b65722e690143616c6c696e67206167656e7420697320617474656d7074696e67206120666f726d206f662073746f636b2073706c69742c207768696368206973206e6f742077686174207468652065787472696e73696320697320666f722e44486f6c646572416c726561647950616964000404d454686520746f6b656e20686f6c6465722068617320616c7265616479206265656e20706169642074686569722062656e656669742e484e6f53756368446973747269627574696f6e000504c441206361706974616c20646973747269627574696f6e20646f65736e277420657869737420666f7220746869732043412e5843616e6e6f74436c61696d4265666f726553746172740006046101446973747269627574696f6e20616c6c6f746d656e742063616e6e6f7420626520636c61696d6564206173207468652063757272656e742074696d65206973206265666f72652073746172742d6f662d7061796d656e742e5843616e6e6f74436c61696d41667465724578706972790007046901446973747269627574696f6e27732065787069727920686173207061737365642e204449442063616e6e6f7420636c61696d20616e796d6f726520616e642068617320666f72666569746564207468652062656e65666974732e8042616c616e6365506572536861726550726f647563744f766572666c6f77656400080429014d756c7469706c69636174696f6e206f66207468652062616c616e636520776974682074686520706572207368617265207061796f757420616d6f756e74206f766572666c6f7765642e584e6f74446973747269627574696f6e43726561746f72000904c0444944206973206e6f7420746865206f6e652077686f20637265617465642074686520646973747269627574696f6e2e40416c72656164795265636c61696d6564000a04d44449442077686f20637265617465642074686520646973747269627574696f6e20616c726561647920646964207265636c61696d2e284e6f7445787069726564000b04f0446973747269627574696f6e20686164206e6f742065787069726564207965742c206f722074686572652773206e6f2065787069727920646174652e4c446973747269627574696f6e53746172746564000c0401014120646973747269627574696f6e20686173206265656e206163746976617465642c20617320607061796d656e745f6174203c3d206e6f776020686f6c64732e6c496e73756666696369656e7452656d61696e696e67416d6f756e74000d042d014120646973747269627574696f6e2068617320696e73756666696369656e742072656d61696e696e6720616d6f756e74206f662063757272656e637920746f20646973747269627574652e00050900000408a459020009090000040805097c000d0900000259020011090000025d0200150900000408a46d020019090c3070616c6c65745f617373657428636865636b706f696e741c56657273696f6e00000400080108753800001d090c3070616c6c65745f617373657428636865636b706f696e74144572726f72040454000114384e6f537563685363686564756c65000004cc4120636865636b706f696e74207363686564756c6520646f6573206e6f7420657869737420666f72207468652061737365742e505363686564756c654e6f7452656d6f7661626c650001041d014120636865636b706f696e74207363686564756c65206973206e6f742072656d6f7661626c6520617320607265665f636f756e74287363686564756c655f696429203e2030602e744661696c6564546f436f6d707574654e657874436865636b706f696e74000208984661696c656420746f20636f6d7075746520746865206e65787420636865636b706f696e742ed0546865207363686564756c6520646f6573206e6f74206861766520616e79207570636f6d696e6720636865636b706f696e74732e605363686564756c654475726174696f6e546f6f53686f7274000304bc546865206475726174696f6e206f662061207363686564756c6520706572696f6420697320746f6f2073686f72742e4c5363686564756c6573546f6f436f6d706c6578000408d054686520736574206f66207363686564756c65732074616b656e20746f6765746865722061726520746f6f20636f6d706c65782ef8466f72206578616d706c652c20746865792061726520746f6f206d616e792c206f722074686579206f636375727320746f6f206672657175656e746c792e0021090c4c706f6c796d6573685f7072696d69746976657348636f6d706c69616e63655f6d616e616765723c4173736574436f6d706c69616e636500000801187061757365641d010110626f6f6c000130726571756972656d656e7473a10201685665633c436f6d706c69616e6365526571756972656d656e743e00002509086470616c6c65745f636f6d706c69616e63655f6d616e616765721c56657273696f6e00000400080108753800002909086470616c6c65745f636f6d706c69616e63655f6d616e61676572144572726f7204045400011830556e617574686f72697a65640000045c55736572206973206e6f7420617574686f72697a65642e2c4469644e6f74457869737400010434446964206e6f7420657869737478496e76616c6964436f6d706c69616e6365526571756972656d656e7449640002049c436f6d706c69616e636520726571756972656d656e7420696420646f65736e277420657869737484496e636f72726563744f7065726174696f6e4f6e547275737465644973737565720003049c4973737565722065786973742062757420747279696e6720746f2061646420697420616761696e7c4475706c6963617465436f6d706c69616e6365526571756972656d656e7473000404b0546865726520617265206475706c696361746520636f6d706c69616e636520726571756972656d656e74732e7c436f6d706c69616e6365526571756972656d656e74546f6f436f6d706c6578000504110154686520776f7273742063617365207363656e6172696f206f662074686520636f6d706c69616e636520726571756972656d656e7420697320746f6f20636f6d706c6578002d0900000408a44502003109086070616c6c65745f636f72706f726174655f616374696f6e731c56657273696f6e00000400080108753800003509086070616c6c65745f636f72706f726174655f616374696f6e73144572726f7204045400013048417574684e6f744341415472616e73666572000004050154686520617574686f72697a6174696f6e2074797065206973206e6f7420746f207472616e73666572207468652043414120746f20616e6f74686572204449442e3844657461696c73546f6f4c6f6e67000104d8546865206064657461696c7360206f66206120434120657863656564656420746865206d617820616c6c6f776564206c656e6774682e3c4475706c69636174654469645461780002082101412077697468686f6c64696e6720746178206f7665727269646520666f72206120676976656e204449442077617320737065636966696564206d6f7265207468616e206f6e63652e050154686520636861696e207265667573656420746f206d616b6520612063686f6963652c20616e642068656e63652074686572652077617320616e206572726f722e3c546f6f4d616e794469645461786573000304c8546f6f206d616e792077697468686f6c64696e6720746178206f76657272696465732077657265207370656369666965642e40546f6f4d616e79546172676574496473000404e4546f6f206d616e79206964656e74697469657320696e20605461726765744964656e746974696573602077657265207370656369666965642e484e6f53756368436865636b706f696e74496400050405014f6e204341206372656174696f6e2c206120636865636b706f696e74204944207761732070726f766964656420776869636820646f65736e27742065786973742e204e6f537563684341000604a44120434120776974682074686520676976656e2060434149646020646964206e6f742065786973742e304e6f5265636f7264446174650007048854686520434120646964206e6f7420686176652061207265636f726420646174652e505265636f7264446174654166746572537461727400080cdc412043412773207265636f7264206461746520776173207374726963746c792061667465722074686520227374617274222074696d652c8c7768657265202273746172742220697320636f6e7465787420646570656e64656e742e8101466f72206578616d706c652c20697420636f756c6420626520746865207374617274206f6620612062616c6c6f742c206f72207468652073746172742d6f662d7061796d656e7420696e206361706974616c20646973747269627574696f6e2e5c4465636c4461746541667465725265636f726444617465000904ec412043412773206465636c61726174696f6e206461746520776173207374726963746c7920616674657220697473207265636f726420646174652e404465636c44617465496e467574757265000a04b4412043412773206465636c61726174696f6e2064617465206f636375727320696e20746865206675747572652e3c4e6f74546172676574656442794341000b046c434120646f6573206e6f742074617267657420746865204449442e00390900000218003d090c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74144572726f720404540001382c43414e6f744e6f74696365000004e04120636f72706f726174652062616c6c6f7420776173206d61646520666f722061206e6f6e20604973737565724e6f74696365602043412e34416c7265616479457869737473000104b84120636f72706f726174652062616c6c6f7420616c72656164792065786973747320666f7220746869732043412e304e6f5375636842616c6c6f74000204b44120636f72706f726174652062616c6c6f7420646f65736e277420657869737420666f7220746869732043412e3453746172744166746572456e6400030411014120636f72706f726174652062616c6c6f7427732073746172742074696d6520776173207374726963746c79206166746572207468652062616c6c6f74277320656e642e2c4e6f774166746572456e640004040d014120636f72706f726174652062616c6c6f74277320656e642074696d6520776173207374726963746c79206265666f7265207468652063757272656e742074696d652e5c4e756d6265724f6643686f696365734f766572666c6f770005043901496620736f6d65206d6f74696f6e20696e206120636f72706f726174652062616c6c6f7420686173206d6f72652063686f69636573207468616e20776f756c642066697420696e2060753136602e50566f74696e67416c7265616479537461727465640006040101566f74696e67207374617274656420616c72656164792e20416d656e64696e6720612062616c6c6f74206973206e6f206c6f6e67657220706f737369626c652e40566f74696e674e6f745374617274656400070468566f74696e67206861736e27742073746172746564207965742e48566f74696e67416c7265616479456e64656400080454566f74696e6720656e64656420616c72656164792e3857726f6e67566f7465436f756e74000904150150726f7669646564206c697374206f662062616c616e63657320646f6573206e6f74206d617463682074686520746f74616c206e756d626572206f662063686f696365732e44496e73756666696369656e74566f746573000a043d01566f74696e6720706f7765722075736564206279206120444944206f6e2061206d6f74696f6e2065786365656473207468617420776869636820697320617661696c61626c6520746f207468656d2e444e6f5375636852435646616c6c6261636b000b04bc546865205243562066616c6c6261636b206f6620736f6d652063686f69636520646f6573206e6f742065786973742e3052435653656c664379636c65000c04b4546865205243562066616c6c6261636b20706f696e747320746f20746865206f726967696e2063686f6963652e345243564e6f74416c6c6f776564000d048c524356206973206e6f7420616c6c6f77656420666f7220746869732062616c6c6f742e004109084870616c6c65745f7065726d697373696f6e73144572726f7204045400010448556e617574686f72697a656443616c6c6572000004ec5468652063616c6c6572206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e004509082c70616c6c65745f7069707330506970734d65746164617461042c426c6f636b4e756d62657201100018010869641d030114506970496400010c75726c2103012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e290301584f7074696f6e3c5069704465736372697074696f6e3e000128637265617465645f617410012c426c6f636b4e756d62657200014c7472616e73616374696f6e5f76657273696f6e10010c7533320001186578706972794501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00004909000004081d0300004d09082c70616c6c65745f706970732c4465706f736974496e666f04244163636f756e7449640100000801146f776e65720001244163636f756e744964000118616d6f756e7418011c42616c616e636500005109082c70616c6c65745f706970730c506970082050726f706f73616c018105244163636f756e74496401000010010869641d030114506970496400012070726f706f73616c8105012050726f706f73616c00011473746174653503013450726f706f73616c537461746500012070726f706f7365721503014c50726f706f7365723c4163636f756e7449643e00005509082c70616c6c65745f7069707330566f74696e67526573756c740000100128617965735f636f756e7410010c753332000128617965735f7374616b6518011c42616c616e63650001286e6179735f636f756e7410010c7533320001286e6179735f7374616b6518011c42616c616e636500005909082c70616c6c65745f7069707310566f7465000008001d010110626f6f6c000018011c42616c616e636500005d09082c70616c6c65745f7069707340536e617073686f744d65746164617461082c426c6f636b4e756d6265720110244163636f756e7449640100000c0128637265617465645f617410012c426c6f636b4e756d62657200011c6d6164655f62790001244163636f756e744964000108696439030128536e617073686f74496400006109082c70616c6c65745f706970731c56657273696f6e00000400080108753800006509082c70616c6c65745f70697073144572726f720404540001488452657363686564756c654e6f74427952656c65617365436f6f7264696e61746f7200000431014f6e6c79207468652047432072656c6561736520636f6f7264696e61746f7220697320616c6c6f77656420746f2072657363686564756c652070726f706f73616c20657865637574696f6e2e404e6f7446726f6d436f6d6d756e697479000108ec54686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2ecc5468652070726f706f73616c206d7573742062652066726f6d2074686520636f6d6d756e6974792c206275742069736e27742e384e6f744279436f6d6d6974746565000208ec54686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2eb45468652070726f706f73616c206d75737420626520627920636f6d6d756e6974792c206275742069736e27742e44546f6f4d616e794163746976655069707300030829015468652063757272656e74206e756d626572206f6620616374697665202870656e64696e67207c207363686564756c65642920504950732065786365656420746865206d6178696d756d9c616e64207468652070726f706f73616c206973206e6f74206279206120636f6d6d69747465652e40496e636f72726563744465706f7369740004049c50726f706f7365722073706563696669657320616e20696e636f7272656374206465706f7369744c496e73756666696369656e744465706f736974000504b450726f706f7365722063616e2774206166666f726420746f206c6f636b206d696e696d756d206465706f736974384e6f5375636850726f706f73616c000604705468652070726f706f73616c20646f6573206e6f742065786973742e4c4e6f7441436f6d6d69747465654d656d626572000704844e6f742070617274206f6620676f7665726e616e636520636f6d6d69747465652e60496e76616c6964467574757265426c6f636b4e756d626572000804d85768656e206120626c6f636b206e756d626572206973206c657373207468616e2063757272656e7420626c6f636b206e756d6265722e544e756d6265724f66566f74657345786365656465640009047c5768656e206e756d626572206f6620766f746573206f766572666c6f77732e685374616b65416d6f756e744f66566f7465734578636565646564000a04985768656e207374616b6520616d6f756e74206f66206120766f7465206f766572666c6f77732e584d697373696e6743757272656e744964656e74697479000b044c4d697373696e672063757272656e742044494458496e636f727265637450726f706f73616c5374617465000c049050726f706f73616c206973206e6f7420696e2074686520636f72726563742073746174653443616e6e6f74536b6970506970000d04fc5768656e20656e616374696e6720736e617073686f7420726573756c74732c20616e20756e736b69707061626c65205049502077617320736b69707065642e58536e617073686f74526573756c74546f6f4c61726765000e041501547269656420746f20656e61637420726573756c747320666f722074686520736e617073686f74207175657565206f766572666c6f77696e6720697473206c656e6774682e48536e617073686f7449644d69736d61746368000f045d01547269656420746f20656e61637420726573756c7420666f7220504950207769746820696420646966666572656e742066726f6d20746861742061742074686520706f736974696f6e20696e207468652071756575652e705363686564756c656450726f706f73616c446f65736e744578697374001004fc457865637574696f6e206f662061207363686564756c65642070726f706f73616c206661696c65642062656361757365206974206973206d697373696e672e6c50726f706f73616c4e6f74496e5363686564756c65645374617465001104fc412070726f706f73616c2074686174206973206e6f7420696e2061207363686564756c65642073746174652063616e6e6f742062652065786563757465642e006909000004087ce4006d09000004087c5d0300710900000408dca4007509000004087cdc007909084070616c6c65745f706f7274666f6c696f1c56657273696f6e00000400080108753800007d09084070616c6c65745f706f7274666f6c696f144572726f7204045400012454506f7274666f6c696f446f65734e6f7445786973740000047054686520706f7274666f6c696f20646f65736e27742065786973742e70496e73756666696369656e74506f7274666f6c696f42616c616e63650001049c496e73756666696369656e742062616c616e636520666f722061207472616e73616374696f6e2e6844657374696e6174696f6e497353616d65506f7274666f6c696f000204e854686520736f7572636520616e642064657374696e6174696f6e20706f7274666f6c696f732073686f756c6420626520646966666572656e742e64506f7274666f6c696f4e616d65416c7265616479496e557365000304310154686520706f7274666f6c696f20636f756c646e27742062652072656e616d65642062656361757365207468652063686f73656e206e616d6520697320616c726561647920696e207573652e945365636f6e646172794b65794e6f74417574686f72697a6564466f72506f7274666f6c696f000404fc546865207365636f6e64617279206b6579206973206e6f7420617574686f72697a656420746f206163636573732074686520706f7274666f6c696f2873292e54556e617574686f72697a6564437573746f6469616e000504f454686520706f72666f6c696f277320637573746f6479206973207769746820736f6d656f6e65206f74686572207468616e207468652063616c6c65722e60496e73756666696369656e74546f6b656e734c6f636b6564000604bc43616e206e6f7420756e6c6f636b206d6f726520746f6b656e73207468616e207768617420617265206c6f636b656444506f7274666f6c696f4e6f74456d707479000704bc54686520706f7274666f6c696f207374696c6c2068617320736f6d652061737365742062616c616e6365206c6566746c446966666572656e744964656e74697479506f7274666f6c696f73000804b454686520706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e746974696573008109084c70616c6c65745f70726f746f636f6c5f666565144572726f7204045400010c68496e73756666696369656e744163636f756e7442616c616e6365000004b0496e73756666696369656e74206163636f756e742062616c616e636520746f2070617920746865206665652e4c556e48616e646c6564496d62616c616e636573000104884e6f742061626c6520746f2068616e646c65642074686520696d62616c616e63657368496e73756666696369656e745375627369647942616c616e6365000204b0496e73756666696369656e7420737562736964792062616c616e636520746f2070617920746865206665652e008509000002890900890904184f7074696f6e040454018d090108104e6f6e6500000010536f6d6504008d0900000100008d09084070616c6c65745f7363686564756c65722c5363686564756c65645632101043616c6c0181052c426c6f636b4e756d62657201103450616c6c6574734f726967696e019109244163636f756e7449640100001401206d617962655f69647903013c4f7074696f6e3c5665633c75383e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c8105011043616c6c0001386d617962655f706572696f646963710701944f7074696f6e3c7363686564756c653a3a506572696f643c426c6f636b4e756d6265723e3e0001186f726967696e9109013450616c6c6574734f726967696e000091090c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d65304f726967696e43616c6c65720001141873797374656d0400950901746672616d655f73797374656d3a3a4f726967696e3c52756e74696d653e00000044506f6c796d657368436f6d6d69747465650400990901f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365313e00090048546563686e6963616c436f6d6d697474656504009d0901f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365333e000b004055706772616465436f6d6d69747465650400a10901f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365343e000d0010566f69640400a50901110173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a566f696400040000950908306672616d655f73797374656d245261774f726967696e04244163636f756e7449640100010c10526f6f74000000185369676e656404000001244163636f756e744964000100104e6f6e65000200009909084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449013901010420456e646f72736564000000009d09084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449015501010420456e646f7273656400000000a109084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449016501010420456e646f7273656400000000a509081c73705f636f726510566f696400010000a909084070616c6c65745f7363686564756c65722052656c656173657300010808563100000008563200010000ad090c4070616c6c65745f7363686564756c65721870616c6c6574144572726f72040454000110404661696c6564546f5363686564756c65000004644661696c656420746f207363686564756c6520612063616c6c204e6f74466f756e640001047c43616e6e6f742066696e6420746865207363686564756c65642063616c6c2e5c546172676574426c6f636b4e756d626572496e50617374000204a4476976656e2074617267657420626c6f636b206e756d62657220697320696e2074686520706173742e4852657363686564756c654e6f4368616e6765000304f052657363686564756c65206661696c6564206265636175736520697420646f6573206e6f74206368616e6765207363686564756c65642074696d652e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909b109084470616c6c65745f736574746c656d656e741456656e7565000008011c63726561746f727c01284964656e74697479496400012876656e75655f747970658903012456656e7565547970650000b5090000040881038d0300b9090000040881030000bd09084470616c6c65745f736574746c656d656e742c496e737472756374696f6e08184d6f6d656e7401202c426c6f636b4e756d6265720110001c0138696e737472756374696f6e5f69648d030134496e737472756374696f6e496400012076656e75655f69648103011c56656e75654964000118737461747573c1090144496e737472756374696f6e53746174757300013c736574746c656d656e745f747970659103016c536574746c656d656e74547970653c426c6f636b4e756d6265723e000128637265617465645f6174f801384f7074696f6e3c4d6f6d656e743e00012874726164655f64617465f801384f7074696f6e3c4d6f6d656e743e00012876616c75655f64617465f801384f7074696f6e3c4d6f6d656e743e0000c109084470616c6c65745f736574746c656d656e7444496e737472756374696f6e53746174757300010c1c556e6b6e6f776e0000001c50656e64696e67000100184661696c656400020000c509000004088d039d0300c909084470616c6c65745f736574746c656d656e74244c656753746174757304244163636f756e7449640100010c4050656e64696e67546f6b656e4c6f636b00000040457865637574696f6e50656e64696e6700010050457865637574696f6e546f4265536b697070656408000001244163636f756e744964000020010c75363400020000cd09000004088d03dc00d109084470616c6c65745f736574746c656d656e744441666669726d6174696f6e53746174757300010c1c556e6b6e6f776e0000001c50656e64696e670001002041666669726d656400020000d50900000408dc8d0300d90900000408a4810300dd09084470616c6c65745f736574746c656d656e741c56657273696f6e0000040008010875380000e109084470616c6c65745f736574746c656d656e74144572726f7204045400016430496e76616c696456656e75650000045456656e756520646f6573206e6f742065786973742e30556e617574686f72697a6564000104a853656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e3c4e6f50656e64696e6741666669726d000204d04e6f2070656e64696e672061666669726d6174696f6e20666f72207468652070726f766964656420696e737472756374696f6e2e58496e737472756374696f6e4e6f7441666669726d656400030488496e737472756374696f6e20686173206e6f74206265656e2061666669726d65642e54496e737472756374696f6e4e6f7450656e64696e67000404b850726f766964656420696e737472756374696f6e206973206e6f742070656e64696e6720657865637574696f6e2e50496e737472756374696f6e4e6f744661696c6564000504b850726f766964656420696e737472756374696f6e206973206e6f74206661696c696e6720657865637574696f6e2e344c65674e6f7450656e64696e670006049850726f7669646564206c6567206973206e6f742070656e64696e6720657865637574696f6e2e48556e617574686f72697a65645369676e6572000704985369676e6572206973206e6f7420617574686f72697a6564206279207468652076656e75652e5452656365697074416c7265616479436c61696d6564000804545265636569707420616c726561647920757365642e44526563656970744e6f74436c61696d65640009045452656365697074206e6f742075736564207965742e44556e617574686f72697a656456656e7565000a04a456656e756520646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e484661696c6564546f4c6f636b546f6b656e73000b0421015768696c652061666669726d696e6720746865207472616e736665722c2073797374656d206661696c656420746f206c6f636b207468652061737365747320696e766f6c7665642e44496e737472756374696f6e4661696c6564000c0478496e737472756374696f6e206661696c656420746f20657865637574652e5c496e737472756374696f6e4461746573496e76616c6964000d0474496e737472756374696f6e2068617320696e76616c696420646174657370496e737472756374696f6e536574746c65426c6f636b506173736564000e04a8496e737472756374696f6e27732074617267657420736574746c6520626c6f636b20726561636865642e40496e76616c69645369676e6174757265000f04784f6666636861696e207369676e617475726520697320696e76616c69642e4853616d6553656e64657252656365697665720010048453656e64657220616e6420726563656976657220617265207468652073616d652e44506f7274666f6c696f4d69736d617463680011042501506f7274666f6c696f20696e207265636569707420646f6573206e6f74206d61746368207769746820706f7274666f6c696f732070726f76696465642062792074686520757365722e44536574746c654f6e50617374426c6f636b00120461015468652070726f766964656420736574746c656d656e7420626c6f636b206e756d62657220697320696e20746865207061737420616e642063616e6e6f74206265207573656420627920746865207363686564756c65722e4c4e6f506f7274666f6c696f50726f76696465640013043d01506f7274666f6c696f20626173656420616374696f6e732072657175697265206174206c65617374206f6e6520706f7274666f6c696f20746f2062652070726f766964656420617320696e7075742e6c556e657870656374656441666669726d6174696f6e53746174757300140445015468652063757272656e7420696e737472756374696f6e2061666669726d6174696f6e2073746174757320646f6573206e6f7420737570706f7274207468652072657175657374656420616374696f6e2e404661696c6564546f5363686564756c650015048c5363686564756c696e67206f6620616e20696e737472756374696f6e206661696c732e404c6567436f756e74546f6f536d616c6c001604a5014c65677320636f756e742073686f756c64206d61746368657320776974682074686520746f74616c206e756d626572206f66206c65677320696e20776869636820676976656e20706f7274666f6c696f20616374206173206066726f6d5f706f7274666f6c696f602e48556e6b6e6f776e496e737472756374696f6e00170474496e737472756374696f6e2073746174757320697320756e6b6e6f776e64496e737472756374696f6e486173546f6f4d616e794c656773001804c44d6178696d756d206c65677320746861742063616e20626520696e20612073696e676c6520696e737472756374696f6e2e04844572726f727320666f722074686520536574746c656d656e74206d6f64756c652ee509000002ad0300e90900000408ed097c00ed0900000408a4ad0300f109084470616c6c65745f73746174697374696373144572726f72040454000110604475706c69636174655472616e736665724d616e616765720000048c546865207472616e73666572206d616e6167657220616c726561647920657869737473585472616e736665724d616e616765724d697373696e670001047c5472616e73666572206d616e61676572206973206e6f7420656e61626c65643c496e76616c69645472616e73666572000204505472616e73666572206e6f7420616c6c6f776564705472616e736665724d616e61676572734c696d6974526561636865640003041101546865206c696d6974206f66207472616e73666572206d616e616765727320616c6c6f77656420666f7220616e20617373657420686173206265656e2072656163686564046453746174697374696373206d6f64756c65206572726f72732ef50900000408a4b90300f909082870616c6c65745f73746f144572726f7204045400013030556e617574686f72697a6564000004a853656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e204f766572666c6f770001048c416e2061726974686d65746963206f7065726174696f6e206f766572666c6f7765642e6c496e73756666696369656e74546f6b656e7352656d61696e696e67000204804e6f7420656e6f75676820746f6b656e73206c65667420666f722073616c652e4846756e647261697365724e6f74466f756e640003045446756e64726169736572206e6f7420666f756e642e4446756e647261697365724e6f744c6976650004049c46756e64726169736572206973206569746865722066726f7a656e206f722073746f707065642e4046756e64726169736572436c6f736564000504ac46756e6472616973657220686173206265656e20636c6f7365642f73746f7070656420616c72656164792e4446756e6472616973657245787069726564000604d0496e746572616374696e67207769746820612066756e6472616973657220706173742074686520656e6420604d6f6d656e74602e30496e76616c696456656e756500070468416e20696e76616c69642076656e75652070726f76696465642e44496e76616c6964507269636554696572730008042501416e20696e646976696475616c20707269636520746965722077617320696e76616c6964206f72206120736574206f662070726963652074696572732077617320696e76616c69642e54496e76616c69644f66666572696e6757696e646f770009045d0157696e646f77202873746172742074696d652c20656e642074696d65292068617320696e76616c696420706172616d65746572732c20652e672073746172742074696d6520697320616674657220656e642074696d652e404d617850726963654578636565646564000a04bc5072696365206f662074686520696e766573746d656e7420657863656564656420746865206d61782070726963652e58496e766573746d656e74416d6f756e74546f6f4c6f77000b04e8496e766573746d656e7420616d6f756e74206973206c6f776572207468616e206d696e696d756d20696e766573746d656e7420616d6f756e742e04844572726f727320666f722074686520536574746c656d656e74206d6f64756c652efd09083c70616c6c65745f7472656173757279144572726f720404540001044c496e73756666696369656e7442616c616e63650000047850726f706f73657227732062616c616e636520697320746f6f206c6f772e04784572726f7220666f7220746865207472656173757279206d6f64756c652e010a083870616c6c65745f7574696c697479144572726f7204045400010c40496e76616c69645369676e6174757265000004744f6666636861696e207369676e617475726520697320696e76616c6964405461726765744364644d697373696e670001048054617267657420646f6573206e6f74206861766520612076616c69642043444430496e76616c69644e6f6e636500020c6850726f7669646564206e6f6e63652077617320696e76616c696411014966207468652070726f7669646564206e6f6e6365203c2063757272656e74206e6f6e63652c207468652063616c6c2077617320616c72656164792065786563757465645d014966207468652070726f7669646564206e6f6e6365203e2063757272656e74206e6f6e63652c207468652063616c6c287329206265666f7265207468652063757272656e74206661696c656420746f206578656375746500050a082c70616c6c65745f62617365144572726f720404540001081c546f6f4c6f6e6700000880457863656564656420612067656e65726963206c656e677468206c696d69742e1d01546865206c696d697420636f756c6420626520666f7220616e7920736f7274206f66206c69737473206f66207468696e67732c20696e636c7564696e67206120737472696e672e3c436f756e7465724f766572666c6f77000118b85468652073657175656e636520636f756e74657220666f7220736f6d657468696e67206f766572666c6f7765642e001d015768656e20746869732068617070656e7320646570656e6473206f6e20652e672e2c20746865206361706163697479206f6620746865206964656e74696669657220747970652e3901466f72206578616d706c652c207765206d69676874206861766520607075622073747275637420506970496428753332293b602c207769746820607533323a3a4d4158602063617061636974792e5901496e2070726163746963652c207468657365206572726f72732077696c6c206e657665722068617070656e20627574206e6f20636f646520706174682073686f756c6420726573756c7420696e20612070616e69632cfc736f20746865736520636f726e6572206361736573206e65656420746f20626520636f7665726564207769746820616e206572726f722076617269616e742e00090a00000408a41901000d0a085870616c6c65745f65787465726e616c5f6167656e7473144572726f72040454000118204e6f537563684147000004ec416e20414720776974682074686520676976656e2060414749646020646964206e6f7420657869737420666f722074686520605469636b6572602e44556e617574686f72697a65644167656e74000104e8546865206167656e74206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e38416c7265616479416e4167656e74000204e85468652070726f766964656420606167656e746020697320616c726561647920616e206167656e7420666f722074686520605469636b6572602e284e6f74416e4167656e74000304d85468652070726f766964656420606167656e7460206973206e6f7420616e206167656e7420666f722074686520605469636b6572602e5452656d6f76696e674c61737446756c6c4167656e74000408e054686973206167656e7420697320746865206c6173742066756c6c206f6e652c20616e642069742773206265696e672072656d6f7665642c686d616b696e6720746865206173736574206f727068616e65642e845365636f6e646172794b65794e6f74417574686f72697a6564466f7241737365740005041d015468652063616c6c65722773207365636f6e64617279206b657920646f6573206e6f74206861766520746865207265717569726564206173736574207065726d697373696f6e2e00110a083870616c6c65745f72656c617965721c53756273696479040c416363010000080128706179696e675f6b657900010c41636300012472656d61696e696e6718011c42616c616e63650000150a083870616c6c65745f72656c61796572144572726f7204045400011c44557365724b65794364644d697373696e67000004cc5468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e4c506179696e674b65794364644d697373696e67000104cc5468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e2c4e6f506179696e674b6579000204ac5468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e304e6f74506179696e674b6579000304b05468652060757365725f6b65796020686173206120646966666572656e742060706179696e675f6b6579602e644e6f74417574686f72697a6564466f72506179696e674b6579000404b8546865207369676e6572206973206e6f7420617574686f72697a656420666f722060706179696e675f6b6579602e5c4e6f74417574686f72697a6564466f72557365724b6579000504b0546865207369676e6572206973206e6f7420617574686f72697a656420666f722060757365725f6b6579602e204f766572666c6f77000604b85468652072656d61696e696e6720504f4c595820666f722060757365725f6b657960206f766572666c6f7765642e00190a083870616c6c65745f72657761726473144572726f7204045400011044556e6b6e6f776e49746e41646472657373000004cc4164647265737320776173206e6f7420666f756e6420696e20746865206c697374206f662049746e206164647265737365732e5c49746e526577617264416c7265616479436c61696d65640001047c49746e207265776172642077617320616c726561647920636c61696d65642e40496e76616c69645369676e61747572650002047c50726f7669646564207369676e61747572652077617320696e76616c69642e54556e61626c65546f436f7665727442616c616e6365000304b042616c616e63652063616e206e6f7420626520636f6e76657274656420746f2061207072696d69746976652e001d0a084470616c6c65745f746573745f7574696c73144572726f7204045400010000210a102873705f72756e74696d651c67656e657269634c756e636865636b65645f65787472696e73696348556e636865636b656445787472696e736963101c4164647265737301d5041043616c6c018105245369676e617475726501810714457874726101250a00040028000000250a00000420290a2d0a310a350a3d0a410a490a4d0a00290a10306672616d655f73797374656d28657874656e73696f6e7348636865636b5f737065635f76657273696f6e40436865636b5370656356657273696f6e040454000000002d0a10306672616d655f73797374656d28657874656e73696f6e7340636865636b5f74785f76657273696f6e38436865636b547856657273696f6e04045400000000310a10306672616d655f73797374656d28657874656e73696f6e7334636865636b5f67656e6573697330436865636b47656e6573697304045400000000350a10306672616d655f73797374656d28657874656e73696f6e733c636865636b5f6d6f7274616c69747938436865636b4d6f7274616c69747904045400000400390a010c4572610000390a102873705f72756e74696d651c67656e657269630c6572610c4572610001010420496d6d6f7274616c0000001c4d6f7274616c31040008000001001c4d6f7274616c32040008000002001c4d6f7274616c33040008000003001c4d6f7274616c34040008000004001c4d6f7274616c35040008000005001c4d6f7274616c36040008000006001c4d6f7274616c37040008000007001c4d6f7274616c38040008000008001c4d6f7274616c3904000800000900204d6f7274616c313004000800000a00204d6f7274616c313104000800000b00204d6f7274616c313204000800000c00204d6f7274616c313304000800000d00204d6f7274616c313404000800000e00204d6f7274616c313504000800000f00204d6f7274616c313604000800001000204d6f7274616c313704000800001100204d6f7274616c313804000800001200204d6f7274616c313904000800001300204d6f7274616c323004000800001400204d6f7274616c323104000800001500204d6f7274616c323204000800001600204d6f7274616c323304000800001700204d6f7274616c323404000800001800204d6f7274616c323504000800001900204d6f7274616c323604000800001a00204d6f7274616c323704000800001b00204d6f7274616c323804000800001c00204d6f7274616c323904000800001d00204d6f7274616c333004000800001e00204d6f7274616c333104000800001f00204d6f7274616c333204000800002000204d6f7274616c333304000800002100204d6f7274616c333404000800002200204d6f7274616c333504000800002300204d6f7274616c333604000800002400204d6f7274616c333704000800002500204d6f7274616c333804000800002600204d6f7274616c333904000800002700204d6f7274616c343004000800002800204d6f7274616c343104000800002900204d6f7274616c343204000800002a00204d6f7274616c343304000800002b00204d6f7274616c343404000800002c00204d6f7274616c343504000800002d00204d6f7274616c343604000800002e00204d6f7274616c343704000800002f00204d6f7274616c343804000800003000204d6f7274616c343904000800003100204d6f7274616c353004000800003200204d6f7274616c353104000800003300204d6f7274616c353204000800003400204d6f7274616c353304000800003500204d6f7274616c353404000800003600204d6f7274616c353504000800003700204d6f7274616c353604000800003800204d6f7274616c353704000800003900204d6f7274616c353804000800003a00204d6f7274616c353904000800003b00204d6f7274616c363004000800003c00204d6f7274616c363104000800003d00204d6f7274616c363204000800003e00204d6f7274616c363304000800003f00204d6f7274616c363404000800004000204d6f7274616c363504000800004100204d6f7274616c363604000800004200204d6f7274616c363704000800004300204d6f7274616c363804000800004400204d6f7274616c363904000800004500204d6f7274616c373004000800004600204d6f7274616c373104000800004700204d6f7274616c373204000800004800204d6f7274616c373304000800004900204d6f7274616c373404000800004a00204d6f7274616c373504000800004b00204d6f7274616c373604000800004c00204d6f7274616c373704000800004d00204d6f7274616c373804000800004e00204d6f7274616c373904000800004f00204d6f7274616c383004000800005000204d6f7274616c383104000800005100204d6f7274616c383204000800005200204d6f7274616c383304000800005300204d6f7274616c383404000800005400204d6f7274616c383504000800005500204d6f7274616c383604000800005600204d6f7274616c383704000800005700204d6f7274616c383804000800005800204d6f7274616c383904000800005900204d6f7274616c393004000800005a00204d6f7274616c393104000800005b00204d6f7274616c393204000800005c00204d6f7274616c393304000800005d00204d6f7274616c393404000800005e00204d6f7274616c393504000800005f00204d6f7274616c393604000800006000204d6f7274616c393704000800006100204d6f7274616c393804000800006200204d6f7274616c393904000800006300244d6f7274616c31303004000800006400244d6f7274616c31303104000800006500244d6f7274616c31303204000800006600244d6f7274616c31303304000800006700244d6f7274616c31303404000800006800244d6f7274616c31303504000800006900244d6f7274616c31303604000800006a00244d6f7274616c31303704000800006b00244d6f7274616c31303804000800006c00244d6f7274616c31303904000800006d00244d6f7274616c31313004000800006e00244d6f7274616c31313104000800006f00244d6f7274616c31313204000800007000244d6f7274616c31313304000800007100244d6f7274616c31313404000800007200244d6f7274616c31313504000800007300244d6f7274616c31313604000800007400244d6f7274616c31313704000800007500244d6f7274616c31313804000800007600244d6f7274616c31313904000800007700244d6f7274616c31323004000800007800244d6f7274616c31323104000800007900244d6f7274616c31323204000800007a00244d6f7274616c31323304000800007b00244d6f7274616c31323404000800007c00244d6f7274616c31323504000800007d00244d6f7274616c31323604000800007e00244d6f7274616c31323704000800007f00244d6f7274616c31323804000800008000244d6f7274616c31323904000800008100244d6f7274616c31333004000800008200244d6f7274616c31333104000800008300244d6f7274616c31333204000800008400244d6f7274616c31333304000800008500244d6f7274616c31333404000800008600244d6f7274616c31333504000800008700244d6f7274616c31333604000800008800244d6f7274616c31333704000800008900244d6f7274616c31333804000800008a00244d6f7274616c31333904000800008b00244d6f7274616c31343004000800008c00244d6f7274616c31343104000800008d00244d6f7274616c31343204000800008e00244d6f7274616c31343304000800008f00244d6f7274616c31343404000800009000244d6f7274616c31343504000800009100244d6f7274616c31343604000800009200244d6f7274616c31343704000800009300244d6f7274616c31343804000800009400244d6f7274616c31343904000800009500244d6f7274616c31353004000800009600244d6f7274616c31353104000800009700244d6f7274616c31353204000800009800244d6f7274616c31353304000800009900244d6f7274616c31353404000800009a00244d6f7274616c31353504000800009b00244d6f7274616c31353604000800009c00244d6f7274616c31353704000800009d00244d6f7274616c31353804000800009e00244d6f7274616c31353904000800009f00244d6f7274616c3136300400080000a000244d6f7274616c3136310400080000a100244d6f7274616c3136320400080000a200244d6f7274616c3136330400080000a300244d6f7274616c3136340400080000a400244d6f7274616c3136350400080000a500244d6f7274616c3136360400080000a600244d6f7274616c3136370400080000a700244d6f7274616c3136380400080000a800244d6f7274616c3136390400080000a900244d6f7274616c3137300400080000aa00244d6f7274616c3137310400080000ab00244d6f7274616c3137320400080000ac00244d6f7274616c3137330400080000ad00244d6f7274616c3137340400080000ae00244d6f7274616c3137350400080000af00244d6f7274616c3137360400080000b000244d6f7274616c3137370400080000b100244d6f7274616c3137380400080000b200244d6f7274616c3137390400080000b300244d6f7274616c3138300400080000b400244d6f7274616c3138310400080000b500244d6f7274616c3138320400080000b600244d6f7274616c3138330400080000b700244d6f7274616c3138340400080000b800244d6f7274616c3138350400080000b900244d6f7274616c3138360400080000ba00244d6f7274616c3138370400080000bb00244d6f7274616c3138380400080000bc00244d6f7274616c3138390400080000bd00244d6f7274616c3139300400080000be00244d6f7274616c3139310400080000bf00244d6f7274616c3139320400080000c000244d6f7274616c3139330400080000c100244d6f7274616c3139340400080000c200244d6f7274616c3139350400080000c300244d6f7274616c3139360400080000c400244d6f7274616c3139370400080000c500244d6f7274616c3139380400080000c600244d6f7274616c3139390400080000c700244d6f7274616c3230300400080000c800244d6f7274616c3230310400080000c900244d6f7274616c3230320400080000ca00244d6f7274616c3230330400080000cb00244d6f7274616c3230340400080000cc00244d6f7274616c3230350400080000cd00244d6f7274616c3230360400080000ce00244d6f7274616c3230370400080000cf00244d6f7274616c3230380400080000d000244d6f7274616c3230390400080000d100244d6f7274616c3231300400080000d200244d6f7274616c3231310400080000d300244d6f7274616c3231320400080000d400244d6f7274616c3231330400080000d500244d6f7274616c3231340400080000d600244d6f7274616c3231350400080000d700244d6f7274616c3231360400080000d800244d6f7274616c3231370400080000d900244d6f7274616c3231380400080000da00244d6f7274616c3231390400080000db00244d6f7274616c3232300400080000dc00244d6f7274616c3232310400080000dd00244d6f7274616c3232320400080000de00244d6f7274616c3232330400080000df00244d6f7274616c3232340400080000e000244d6f7274616c3232350400080000e100244d6f7274616c3232360400080000e200244d6f7274616c3232370400080000e300244d6f7274616c3232380400080000e400244d6f7274616c3232390400080000e500244d6f7274616c3233300400080000e600244d6f7274616c3233310400080000e700244d6f7274616c3233320400080000e800244d6f7274616c3233330400080000e900244d6f7274616c3233340400080000ea00244d6f7274616c3233350400080000eb00244d6f7274616c3233360400080000ec00244d6f7274616c3233370400080000ed00244d6f7274616c3233380400080000ee00244d6f7274616c3233390400080000ef00244d6f7274616c3234300400080000f000244d6f7274616c3234310400080000f100244d6f7274616c3234320400080000f200244d6f7274616c3234330400080000f300244d6f7274616c3234340400080000f400244d6f7274616c3234350400080000f500244d6f7274616c3234360400080000f600244d6f7274616c3234370400080000f700244d6f7274616c3234380400080000f800244d6f7274616c3234390400080000f900244d6f7274616c3235300400080000fa00244d6f7274616c3235310400080000fb00244d6f7274616c3235320400080000fc00244d6f7274616c3235330400080000fd00244d6f7274616c3235340400080000fe00244d6f7274616c3235350400080000ff00003d0a10306672616d655f73797374656d28657874656e73696f6e732c636865636b5f6e6f6e636528436865636b4e6f6e6365040454000004000d040120543a3a496e6465780000410a0c4c706f6c796d6573685f657874656e73696f6e7330636865636b5f7765696768742c436865636b57656967687404045400000400450a011443573c543e0000450a10306672616d655f73797374656d28657874656e73696f6e7330636865636b5f7765696768742c436865636b57656967687404045400000000490a086870616c6c65745f7472616e73616374696f6e5f7061796d656e74604368617267655472616e73616374696f6e5061796d656e7404045400000400d101013042616c616e63654f663c543e00004d0a084870616c6c65745f7065726d697373696f6e734453746f726543616c6c4d6574616461746104045400000000510a0c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d651c52756e74696d6500000000bc1853797374656d011853797374656d401c4163636f756e7401010402000c4101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e8205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e3845787472696e736963436f756e74000010040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e2c426c6f636b57656967687401001c600000000000000000000000000000000000000000000000000488205468652063757272656e742077656967687420666f722074686520626c6f636b2e40416c6c45787472696e736963734c656e000010040004410120546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e24426c6f636b486173680101040510248000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101040510280400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d6265720100101000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801002480000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e1844696765737401002c040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e7473010048040010a0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e005901204e4f54453a20546869732073746f72616765206974656d206973206578706c696369746c7920756e626f756e6465642073696e6365206974206973206e6576657220696e74656e64656420746f2062652072656164642066726f6d2077697468696e207468652072756e74696d652e284576656e74436f756e74010010100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f70696373010104022405040400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e004d01205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e484c61737452756e74696d65557067726164650000090404000455012053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e545570677261646564546f553332526566436f756e7401001d010400044d012054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e605570677261646564546f547269706c65526566436f756e7401001d010400085d012054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e73207468726565207479706573206f662060526566436f756e74602e2046616c736548202864656661756c7429206966206e6f742e38457865637574696f6e50686173650000fd03040004882054686520657865637574696f6e207068617365206f662074686520626c6f636b2e01150401541830426c6f636b576569676874732504850100c817a80400000000204aa9d10100008036be26000000000180914b872e010000010098f73e5d0100000100000000000000008036be26000000000180199ef1a20100000100204aa9d1010000010088526a740000008036be260000000000000004d020426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e2c426c6f636b4c656e677468310430000078000000a0000000a00004a820546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e38426c6f636b48617368436f756e741010fa000000045501204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e20446257656967687439044080f0fa020000000000c2eb0b000000000409012054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e1c56657273696f6e3d040d0430706f6c796d6573685f64657630706f6c796d6573685f64657601000000ba0b00000000000048df6acb689907609b0300000037e397fc7c91f5e40100000040fe3ad401f8959a05000000d2bc9897eed08f1503000000f78b278be53f454c02000000ed99c5acb25eedf503000000cbca25e39f14238702000000687ad44ad37f03c201000000bc9d89904f5b923f0100000037c8bb1350a9a2a801000000ab3c0572291feb8b0100000018ef58a3b67ba77001000000329342994773047f01000000001a0b29f17d01f401000000f28e8080b6e2dfd001000000bb6ba9053c5c9d78010000009f242c2c886f3fce01000000595ac34c5ea1f5fe01000000020000000484204765742074686520636861696e27732063757272656e742076657273696f6e2e28535335385072656669780d03082a0014a8205468652064657369676e61746564205353383520707265666978206f66207468697320636861696e2e0039012054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e20697331012074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f662069742061737020616e206964656e746966696572206f662074686520636861696e2e015104001042616265011042616265402845706f6368496e64657801002020000000000000000004542043757272656e742065706f636820696e6465782e2c417574686f726974696573010055040400046c2043757272656e742065706f636820617574686f7269746965732e2c47656e65736973536c6f740100650420000000000000000008f82054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e205468697320697320309020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2c43757272656e74536c6f740100650420000000000000000004542043757272656e7420736c6f74206e756d6265722e2852616e646f6d6e65737301000480000000000000000000000000000000000000000000000000000000000000000028b8205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e002c20232053656375726974790005012054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061f8206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e7915012063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d6265727320746861742074686973150120286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e206265050120757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e0d01206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e6050656e64696e6745706f6368436f6e6669674368616e67650000690404000461012050656e64696e672065706f636820636f6e66696775726174696f6e206368616e676520746861742077696c6c206265206170706c696564207768656e20746865206e6578742065706f636820697320656e61637465642e384e65787452616e646f6d6e657373010004800000000000000000000000000000000000000000000000000000000000000000045c204e6578742065706f63682072616e646f6d6e6573732e3c4e657874417574686f7269746965730100550404000460204e6578742065706f636820617574686f7269746965732e305365676d656e74496e6465780100101000000000247c2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e00f4205765206d616b6520612074726164656f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e01012057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f942060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e00ec204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e090120576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572791c2065706f63682e44556e646572436f6e737472756374696f6e0101040510750404000415012054574f582d4e4f54453a20605365676d656e74496e6465786020697320616e20696e6372656173696e6720696e74656765722c20736f2074686973206973206f6b61792e2c496e697469616c697a656400007d0404000801012054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d65601d01206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e4c417574686f7256726652616e646f6d6e65737301007d0404001015012054686973206669656c642073686f756c6420616c7761797320626520706f70756c6174656420647572696e6720626c6f636b2070726f63657373696e6720756e6c6573731901207365636f6e6461727920706c61696e20736c6f74732061726520656e61626c65642028776869636820646f6e277420636f6e7461696e206120565246206f7574707574292e0051012049742069732073657420696e20606f6e5f696e697469616c697a65602c206265666f72652069742077696c6c20636f6e7461696e207468652076616c75652066726f6d20746865206c61737420626c6f636b2e2845706f6368537461727401007503200000000000000000145d012054686520626c6f636b206e756d62657273207768656e20746865206c61737420616e642063757272656e742065706f6368206861766520737461727465642c20726573706563746976656c7920604e2d316020616e641420604e602e4901204e4f54453a20576520747261636b207468697320697320696e206f7264657220746f20616e6e6f746174652074686520626c6f636b206e756d626572207768656e206120676976656e20706f6f6c206f66590120656e74726f7079207761732066697865642028692e652e20697420776173206b6e6f776e20746f20636861696e206f6273657276657273292e2053696e63652065706f6368732061726520646566696e656420696e590120736c6f74732c207768696368206d617920626520736b69707065642c2074686520626c6f636b206e756d62657273206d6179206e6f74206c696e6520757020776974682074686520736c6f74206e756d626572732e204c6174656e657373010010100000000014d820486f77206c617465207468652063757272656e7420626c6f636b20697320636f6d706172656420746f2069747320706172656e742e001501205468697320656e74727920697320706f70756c617465642061732070617274206f6620626c6f636b20657865637574696f6e20616e6420697320636c65616e65642075701101206f6e20626c6f636b2066696e616c697a6174696f6e2e205175657279696e6720746869732073746f7261676520656e747279206f757473696465206f6620626c6f636bb020657865637574696f6e20636f6e746578742073686f756c6420616c77617973207969656c64207a65726f2e2c45706f6368436f6e6669670000810404000861012054686520636f6e66696775726174696f6e20666f72207468652063757272656e742065706f63682e2053686f756c64206e6576657220626520604e6f6e656020617320697420697320696e697469616c697a656420696e242067656e657369732e3c4e65787445706f6368436f6e666967000081040400082d012054686520636f6e66696775726174696f6e20666f7220746865206e6578742065706f63682c20604e6f6e65602069662074686520636f6e6669672077696c6c206e6f74206368616e6765e82028796f752063616e2066616c6c6261636b20746f206045706f6368436f6e6669676020696e737465616420696e20746861742063617365292e018504000c3445706f63684475726174696f6e20202c010000000000000cec2054686520616d6f756e74206f662074696d652c20696e20736c6f74732c207468617420656163682065706f63682073686f756c64206c6173742e1901204e4f54453a2043757272656e746c79206974206973206e6f7420706f737369626c6520746f206368616e6765207468652065706f6368206475726174696f6e20616674657221012074686520636861696e2068617320737461727465642e20417474656d7074696e6720746f20646f20736f2077696c6c20627269636b20626c6f636b2070726f64756374696f6e2e444578706563746564426c6f636b54696d652020701700000000000014050120546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e67110120626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f75740501207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f740901206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473a0207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e384d6178417574686f7269746965731010a08601000488204d6178206e756d626572206f6620617574686f72697469657320616c6c6f776564019904012454696d657374616d70012454696d657374616d70080c4e6f7701002020000000000000000004902043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e2444696455706461746501001d01040004b420446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f019d040004344d696e696d756d506572696f642020b80b000000000000104d0120546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a5d0120706572696f6420746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c5d012067656e6572616c6c7920776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c206265a020646f75626c65207468697320706572696f64206f6e2064656661756c742073657474696e67732e00021c496e6469636573011c496e646963657304204163636f756e74730001040210a5040400048820546865206c6f6f6b75702066726f6d20696e64657820746f206163636f756e742e01a9040170041c4465706f736974184040420f0000000000000000000000000004ac20546865206465706f736974206e656564656420666f7220726573657276696e6720616e20696e6465782e01ad040328417574686f72736869700128417574686f72736869700c18556e636c65730100b1040400041c20556e636c657318417574686f720000000400046420417574686f72206f662063757272656e7420626c6f636b2e30446964536574556e636c657301001d01040004bc205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e01b904000440556e636c6547656e65726174696f6e731010000000000ccc20546865206e756d626572206f6620626c6f636b73206261636b2077652073686f756c642061636365707420756e636c65732ee42054686973206d65616e7320746861742077652077696c6c206465616c207769746820756e636c652d706172656e7473207468617420617265942060556e636c6547656e65726174696f6e73202b203160206265666f726520606e6f77602e01c104042042616c616e636573012042616c616e6365730834546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e144c6f636b730101040200c504040008b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e01d104017404484578697374656e7469616c4465706f73697418400000000000000000000000000000000004d420546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e01d90405485472616e73616374696f6e5061796d656e7401485472616e73616374696f6e5061796d656e7408444e6578744665654d756c7469706c6965720100dd0440000064a7b3b6e00d0000000000000000003853746f7261676556657273696f6e0100e104040000000008485472616e73616374696f6e42797465466565184064000000000000000000000000000000040d01205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e2c576569676874546f466565e5045c040000000000000000000000000000000049b400000001040d012054686520706f6c796e6f6d69616c2074686174206973206170706c69656420696e206f7264657220746f20646572697665206665652066726f6d207765696768742e0006204964656e7469747901204964656e7469747938284469645265636f726473010104067ced0484000000000000000000000000000000000000000000000000000000000000000000045420444944202d3e206964656e7469747920696e666f2c497344696446726f7a656e010104067c1d01040004e420444944202d3e20626f6f6c207468617420696e64696361746573206966207365636f6e64617279206b657973206172652066726f7a656e2e2843757272656e7444696400007c040004e02049742073746f726573207468652063757272656e74206964656e7469747920666f722063757272656e74207472616e73616374696f6e2e3043757272656e74506179657200000004000401012049742073746f726573207468652063757272656e74206761732066656520706179657220666f72207468652063757272656e74207472616e73616374696f6e18436c61696d730101080502f904f4c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a04f020285461726765742049442c20636c61696d20747970652920286973737565722c73636f706529202d3e204173736f63696174656420636c61696d73404b6579546f4964656e7469747949647301010405007c80000000000000000000000000000000000000000000000000000000000000000000444d756c7469507572706f73654e6f6e636501002020000000000000000004bc204e6f6e636520746f20656e7375726520756e6971756520616374696f6e732e207374617274732066726f6d20312e684f6666436861696e417574686f72697a6174696f6e4e6f6e6365010104067c2020000000000000000004c820417574686f72697a6174696f6e206e6f6e636520706572204964656e746974792e20496e697469616c6c7920697320302e38417574686f72697a6174696f6e73000108020509050d05040004b020416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792f6b6579206861734c417574686f72697a6174696f6e73476976656e010108060511059884000000000000000000000000000000000000000000000000000000000000000000044d0120416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792068617320676976656e2e2028417574686f72697a65722c20617574685f6964202d3e20617574686f72697a6564296c43646441757468466f724d61737465724b6579526f746174696f6e01001d010400086501204f62736f6c657465642073746f72616765207661726961626c652073757065726365646564206279206043646441757468466f725072696d6172794b6579526f746174696f6e602e204974206973206b65707420686572659820666f722074686520707572706f7365206f662073746f72616765206d6967726174696f6e2e7043646441757468466f725072696d6172794b6579526f746174696f6e01001d010400085d01204120636f6e66696720666c616720746861742c206966207365742c20696e7374727563747320616e20617574686f72697a6174696f6e2066726f6d2061204344442070726f766964657220696e206f7264657220746f9c206368616e676520746865207072696d617279206b6579206f6620616e206964656e746974792e3853746f7261676556657273696f6e01001505040004442053746f726167652076657273696f6e2e484163636f756e744b6579526566436f756e740101040200202000000000000000001cc420486f77206d616e7920227374726f6e6722207265666572656e63657320746f20746865206163636f756e74206b65792e00fc205374726f6e67207265666572656e6365732077696c6c20626c6f636b2061206b65792066726f6d206c656176696e672069742773206964656e746974792e00cc2050616c6c657473207573696e6720227374726f6e6722207265666572656e63657320746f206163636f756e74206b6579733aac202a2052656c617965723a20466f722060757365725f6b65796020616e642060706179696e675f6b65796000011905018c0430496e697469616c504f4c595818400000000000000000000000000000000000016d05074c4364645365727669636550726f7669646572730138496e7374616e63653247726f75700c344163746976654d656d6265727301003101040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d6265727301007105040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01790501290100017d050844506f6c796d657368436f6d6d69747465650148496e7374616e636531436f6d6d6974746565242450726f706f73616c7301000104040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f6600010406248105040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e670001040624d107040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100310104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401007503200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201004501040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e0100d507040004442053746f726167652076657273696f6e2e0185050135010001d907094c436f6d6d69747465654d656d626572736869700138496e7374616e63653147726f75700c344163746976654d656d6265727301003101040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d6265727301007105040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e0189050149010001dd070a48546563686e6963616c436f6d6d69747465650148496e7374616e636533436f6d6d6974746565242450726f706f73616c7301000104040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f6600010406248105040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e670001040624d107040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100310104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401007503200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201004501040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e0100d507040004442053746f726167652076657273696f6e2e018d050151010001e1070b70546563686e6963616c436f6d6d69747465654d656d626572736869700138496e7374616e63653347726f75700c344163746976654d656d6265727301003101040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d6265727301007105040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e0191050159010001e5070c4055706772616465436f6d6d69747465650148496e7374616e636534436f6d6d6974746565242450726f706f73616c7301000104040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f6600010406248105040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e670001040624d107040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100310104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401007503200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201004501040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e0100d507040004442053746f726167652076657273696f6e2e0195050161010001e9070d6855706772616465436f6d6d69747465654d656d626572736869700138496e7374616e63653447726f75700c344163746976654d656d6265727301003101040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d6265727301007105040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e0199050169010001ed070e204d756c746953696701204d756c746953696730344d756c74695369674e6f6e6365010020200000000000000000042101204e6f6e636520746f20656e7375726520756e69717565204d756c746953696720616464726573736573206172652067656e6572617465643b207374617274732066726f6d20312e3c4d756c74695369675369676e6572730101080605f107988400000000000000000000000000000000000000000000000000000000000000000004d4205369676e657273206f662061206d756c74697369672e20286d756c74697369672c207369676e657229203d3e207369676e65722e3c4e756d6265724f665369676e65727301010406002020000000000000000004cc204e756d626572206f6620617070726f7665642f6163636570746564207369676e657273206f662061206d756c74697369672e544d756c74695369675369676e73526571756972656401010406002020000000000000000004e020436f6e6669726d6174696f6e73207265717569726564206265666f72652070726f63657373696e672061206d756c74697369672074782e384d756c74695369675478446f6e65010104060020200000000000000000043501204e756d626572206f66207472616e73616374696f6e732070726f706f73656420696e2061206d756c74697369672e20557365642061732074782069643b207374617274732066726f6d20302e2450726f706f73616c7300010405f507810504000475012050726f706f73616c732070726573656e74656420666f7220766f74696e6720746f2061206d756c746973696720286d756c74697369672c2070726f706f73616c20696429203d3e204f7074696f6e3c543a3a50726f706f73616c3e2e2c50726f706f73616c4964730001080602f90720040004942041206d617070696e67206f662070726f706f73616c7320746f207468656972204944732e14566f74657301010405fd071d01040004250120496e646976696475616c206d756c7469736967207369676e657220766f7465732e20286d756c7469207369672c207369676e65722c2070726f706f73616c29203d3e20766f74652e344b6579546f4d756c746953696701010405000080000000000000000000000000000000000000000000000000000000000000000004c8204d6170732061206d756c7469736967207369676e6572206b657920746f2061206d756c746973696720616464726573732e484d756c7469536967546f4964656e7469747901010406007c80000000000000000000000000000000000000000000000000000000000000000004a4204d6170732061206d756c7469736967206163636f756e7420746f20697473206964656e746974792e3850726f706f73616c44657461696c01010405f50701084c00000000000000000000000000000000000000047c2044657461696c73206f662061206d756c74697369672070726f706f73616c485472616e73616374696f6e56657273696f6e010010100000000004f420546865206c617374207472616e73616374696f6e2076657273696f6e2c207573656420666f7220606f6e5f72756e74696d655f75706772616465602e019d05017101000109080f1842726964676501184272696467652828436f6e74726f6c6c65720100008000000000000000000000000000000000000000000000000000000000000000000c410120546865206d756c7469736967206163636f756e74206f66207468652062726964676520636f6e74726f6c6c65722e205468652067656e65736973207369676e65727320616363657074207468656972450120617574686f72697a6174696f6e7320616e64206172652061626c6520746f206765742074686569722070726f706f73616c732064656c6976657265642e20546865206272696467652063726561746f729c207472616e736665727320736f6d6520504f4c5920746f207468656972206964656e746974792e3c427269646765547844657461696c7301010802020d081108d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000859012044657461696c73206f6620627269646765207472616e73616374696f6e73206964656e7469666965642077697468207061697273206f662074686520726563697069656e74206163636f756e7420616e64207468656820627269646765207472616e73616374696f6e206e6f6e63652e1441646d696e010000800000000000000000000000000000000000000000000000000000000000000000043c205468652061646d696e206b65792e1846726f7a656e01001d01040004bc2057686574686572206f72206e6f742074686520627269646765206f7065726174696f6e2069732066726f7a656e2e30467265657a6541646d696e7301010402001d01040004090120467265657a65206272696467652061646d696e732e20205468657365206163636f756e74732063616e206f6e6c7920667265657a6520746865206272696467652e2054696d656c6f636b0100101000000000083d012054686520627269646765207472616e73616374696f6e2074696d656c6f636b20706572696f642c20696e20626c6f636b732c2073696e63652074686520616363657074616e6365206f66207468653101207472616e73616374696f6e2070726f706f73616c20647572696e67207768696368207468652061646d696e206b65792063616e20667265657a6520746865207472616e73616374696f6e2e2c4272696467654c696d69740100190850000000000000000000000000000000000000000008290120546865206d6178696d756d206e756d626572206f66206272696467656420504f4c595820706572206964656e746974792077697468696e20612073657420696e74657276616c206f66f820626c6f636b732e204669656c64733a20504f4c595820616d6f756e7420616e642074686520626c6f636b20696e74657276616c206475726174696f6e2e30506f6c797842726964676564010104067c190850000000000000000000000000000000000000000008510120416d6f756e74206f6620504f4c5958206272696467656420627920746865206964656e7469747920696e206c61737420626c6f636b20696e74657276616c2e204669656c64733a2074686520627269646765649420616d6f756e7420616e6420746865206c61737420696e74657276616c206e756d6265722e4c4272696467654c696d69744578656d70746564010104057c1d01040004c0204964656e746974696573206e6f7420636f6e73747261696e65642062792074686520627269646765206c696d69742e3853746f7261676556657273696f6e01001d08040004442053746f726167652076657273696f6e2e01a10501750100012108101c5374616b696e67011c5374616b696e679c30486973746f7279446570746801001010540000001c8c204e756d626572206f66206572617320746f206b65657020696e20686973746f72792e00390120496e666f726d6174696f6e206973206b65707420666f72206572617320696e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e006101204d757374206265206d6f7265207468616e20746865206e756d626572206f6620657261732064656c617965642062792073657373696f6e206f74686572776973652e20492e652e2061637469766520657261206d757374390120616c7761797320626520696e20686973746f72792e20492e652e20606163746976655f657261203e2063757272656e745f657261202d20686973746f72795f646570746860206d757374206265302067756172616e746565642e3856616c696461746f72436f756e74010010100000000004a82054686520696465616c206e756d626572206f66207374616b696e67207061727469636970616e74732e544d696e696d756d56616c696461746f72436f756e740100101000000000044101204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e34496e76756c6e657261626c65730100910104000c590120416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e636520746865792772654d01206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f7572ac20696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e18426f6e6465640001040500000400040101204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e184c6564676572000104020025080400044501204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e1450617965650101040500b505040004e42057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e2856616c696461746f72730101040500b90508000004450120546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e284e6f6d696e61746f727300010405003108040004650120546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f2074686520736574206f66207374617368206b657973206f6620616c6c2076616c696461746f727320746f206e6f6d696e6174652e2843757272656e744572610000100400105c205468652063757272656e742065726120696e6465782e006501205468697320697320746865206c617465737420706c616e6e6564206572612c20646570656e64696e67206f6e20686f77207468652053657373696f6e2070616c6c657420717565756573207468652076616c696461746f7280207365742c206974206d6967687420626520616374697665206f72206e6f742e2441637469766545726100003508040010d820546865206163746976652065726120696e666f726d6174696f6e2c20697420686f6c647320696e64657820616e642073746172742e0059012054686520616374697665206572612069732074686520657261206265696e672063757272656e746c792072657761726465642e2056616c696461746f7220736574206f66207468697320657261206d757374206265ac20657175616c20746f205b6053657373696f6e496e746572666163653a3a76616c696461746f7273605d2e5445726173537461727453657373696f6e496e6465780001040510100400103101205468652073657373696f6e20696e646578206174207768696368207468652065726120737461727420666f7220746865206c6173742060484953544f52595f44455054486020657261732e006101204e6f74653a205468697320747261636b7320746865207374617274696e672073657373696f6e2028692e652e2073657373696f6e20696e646578207768656e20657261207374617274206265696e672061637469766529f020666f7220746865206572617320696e20605b43757272656e74457261202d20484953544f52595f44455054482c2043757272656e744572615d602e2c457261735374616b65727301010805053908cd010c0000001878204578706f73757265206f662076616c696461746f72206174206572612e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e48457261735374616b657273436c697070656401010805053908cd010c0000002c9820436c6970706564204578706f73757265206f662076616c696461746f72206174206572612e00590120546869732069732073696d696c617220746f205b60457261735374616b657273605d20627574206e756d626572206f66206e6f6d696e61746f7273206578706f736564206973207265647563656420746f20746865dc2060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732e1d0120284e6f74653a20746865206669656c642060746f74616c6020616e6420606f776e60206f6620746865206578706f737572652072656d61696e7320756e6368616e676564292ef42054686973206973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e005d012054686973206973206b657965642066697374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e484572617356616c696461746f72507265667301010805053908b9050800001411012053696d696c617220746f2060457261735374616b657273602c207468697320686f6c64732074686520707265666572656e636573206f662076616c696461746f72732e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4c4572617356616c696461746f7252657761726400010405101804000c09012054686520746f74616c2076616c696461746f7220657261207061796f757420666f7220746865206c6173742060484953544f52595f44455054486020657261732e0021012045726173207468617420686176656e27742066696e697368656420796574206f7220686173206265656e2072656d6f76656420646f65736e27742068617665207265776172642e4045726173526577617264506f696e747301010405103d0814000000000008ac205265776172647320666f7220746865206c6173742060484953544f52595f44455054486020657261732e250120496620726577617264206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207265776172642069732072657475726e65642e3845726173546f74616c5374616b65010104051018400000000000000000000000000000000008ec2054686520746f74616c20616d6f756e74207374616b656420666f7220746865206c6173742060484953544f52595f44455054486020657261732e1d0120496620746f74616c206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207374616b652069732072657475726e65642e20466f7263654572610100490804000454204d6f6465206f662065726120666f7263696e672e4c536c6173685265776172644672616374696f6e0100950110000000000cf8205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e00e4205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e4c43616e63656c6564536c6173685061796f757401001840000000000000000000000000000000000815012054686520616d6f756e74206f662063757272656e637920676976656e20746f207265706f7274657273206f66206120736c617368206576656e7420776869636820776173ec2063616e63656c65642062792065787472616f7264696e6172792063697263756d7374616e6365732028652e672e20676f7665726e616e6365292e40556e6170706c696564536c617368657301010405104d08040004c420416c6c20756e6170706c69656420736c61736865732074686174206172652071756575656420666f72206c617465722e28426f6e646564457261730100050404001025012041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e00c8204d75737420636f6e7461696e7320696e666f726d6174696f6e20666f72206572617320666f72207468652072616e67653abc20605b6163746976655f657261202d20626f756e64696e675f6475726174696f6e3b206163746976655f6572615d604c56616c696461746f72536c617368496e457261000108050539085d08040008450120416c6c20736c617368696e67206576656e7473206f6e2076616c696461746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682070726f706f7274696f6e7020616e6420736c6173682076616c7565206f6620746865206572612e4c4e6f6d696e61746f72536c617368496e4572610001080505390818040004610120416c6c20736c617368696e67206576656e7473206f6e206e6f6d696e61746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682076616c7565206f6620746865206572612e34536c617368696e675370616e73000104050061080400048c20536c617368696e67207370616e7320666f72207374617368206163636f756e74732e245370616e536c617368010104050d086508800000000000000000000000000000000000000000000000000000000000000000083d01205265636f72647320696e666f726d6174696f6e2061626f757420746865206d6178696d756d20736c617368206f6620612073746173682077697468696e206120736c617368696e67207370616e2cb82061732077656c6c20617320686f77206d7563682072657761726420686173206265656e2070616964206f75742e584561726c69657374556e6170706c696564536c617368000010040004fc20546865206561726c696573742065726120666f72207768696368207765206861766520612070656e64696e672c20756e6170706c69656420736c6173682e48536e617073686f7456616c696461746f727300009101040008650120536e617073686f74206f662076616c696461746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e48536e617073686f744e6f6d696e61746f727300009101040008650120536e617073686f74206f66206e6f6d696e61746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e34517565756564456c65637465640000690804000c650120546865206e6578742076616c696461746f72207365742e2041742074686520656e64206f6620616e206572612c206966207468697320697320617661696c61626c652028706f74656e7469616c6c792066726f6d20746865610120726573756c74206f6620616e206f6666636861696e20776f726b6572292c20697420697320696d6d6564696174656c7920757365642e204f74686572776973652c20746865206f6e2d636861696e20656c656374696f6e342069732065786563757465642e2c51756575656453636f726500009d06040004b0205468652073636f7265206f66207468652063757272656e74205b60517565756564456c6563746564605d2e44457261456c656374696f6e53746174757301006d08040008490120466c616720746f20636f6e74726f6c2074686520657865637574696f6e206f6620746865206f6666636861696e20656c656374696f6e2e205768656e20604f70656e285f29602c207765206163636570746c20736f6c7574696f6e7320746f206265207375626d69747465642e54497343757272656e7453657373696f6e46696e616c01001d010400084d012054727565206966207468652063757272656e74202a2a706c616e6e65642a2a2073657373696f6e2069732066696e616c2e204e6f74652074686174207468697320646f6573206e6f742074616b65206572615820666f7263696e6720696e746f206163636f756e742e505065726d697373696f6e65644964656e74697479000104057c7108040004ec20456e74697469657320746861742061726520616c6c6f77656420746f2072756e206f70657261746f722f76616c696461746f72206e6f6465732e5856616c696461746f72436f6d6d697373696f6e4361700100950110000000000415012045766572792076616c696461746f722068617320636f6d6d697373696f6e20746861742073686f756c6420626520696e207468652072616e6765205b302c204361705d2e504d696e696d756d426f6e645468726573686f6c64010018400000000000000000000000000000000004d020546865206d696e696d756d20616d6f756e74207769746820776869636820612076616c696461746f722063616e20626f6e642e48536c617368696e67416c6c6f776564466f72010099010402003853746f7261676556657273696f6e01007508040610cc2054727565206966206e6574776f726b20686173206265656e20757067726164656420746f20746869732076657273696f6e2e7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e00a020546869732069732073657420746f2076362e302e3120666f72206e6577206e6574776f726b732e01b1050189012c3853657373696f6e735065724572611010030000000470204e756d626572206f662073657373696f6e7320706572206572612e3c426f6e64696e674475726174696f6e10100700000004e4204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e48536c61736844656665724475726174696f6e101004000000140101204e756d626572206f662065726173207468617420736c6173686573206172652064656665727265642062792c20616674657220636f6d7075746174696f6e2e00bc20546869732073686f756c64206265206c657373207468616e2074686520626f6e64696e67206475726174696f6e2e2d012053657420746f203020696620736c61736865732073686f756c64206265206170706c69656420696d6d6564696174656c792c20776974686f7574206f70706f7274756e69747920666f723820696e74657276656e74696f6e2e44456c656374696f6e4c6f6f6b616865616410104b0000001c710120546865206e756d626572206f6620626c6f636b73206265666f72652074686520656e64206f6620746865206572612066726f6d20776869636820656c656374696f6e207375626d697373696f6e732061726520616c6c6f7765642e006d012053657474696e67207468697320746f207a65726f2077696c6c2064697361626c6520746865206f6666636861696e20636f6d7075746520616e64206f6e6c79206f6e2d636861696e207365712d70687261676d656e2077696c6c2420626520757365642e007501205468697320697320626f756e646564206279206265696e672077697468696e20746865206c6173742073657373696f6e2e2048656e63652c2073657474696e6720697420746f20612076616c7565206d6f7265207468616e207468659c206c656e677468206f6620612073657373696f6e2077696c6c20626520706f696e746c6573732e344d6178497465726174696f6e7310100a0000000c2901204d6178696d756d206e756d626572206f662062616c616e63696e6720697465726174696f6e7320746f2072756e20696e20746865206f6666636861696e207375626d697373696f6e2e00ec2049662073657420746f20302c2062616c616e63655f736f6c7574696f6e2077696c6c206e6f7420626520657865637574656420617420616c6c2e504d696e536f6c7574696f6e53636f726542756d7095011020a1070004610120546865207468726573686f6c64206f6620696d70726f76656d656e7420746861742073686f756c642062652070726f766964656420666f722061206e657720736f6c7574696f6e20746f2062652061636365707465642e804d61784e6f6d696e61746f72526577617264656450657256616c696461746f7210100008000010f820546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320726577617264656420666f7220656163682076616c696461746f722e00690120466f7220656163682076616c696461746f72206f6e6c79207468652060244d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732063616e20636c61696d2101207468656972207265776172642e2054686973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e5c4d617856616c696461746f725065724964656e746974794d0210100905000cf4204d6178696d756d206e756d626572206f662076616c696461746f727320666f722065616368207065726d697373696f6e6564206964656e746974792e005901204d6178206e756d626572206f662076616c696461746f727320636f756e74203d20604d617856616c696461746f725065724964656e74697479202a2053656c663a3a76616c696461746f725f636f756e742829602e844d61785661726961626c65496e666c6174696f6e546f74616c49737375616e636518400080c6a47e8d03000000000000000000047101204d6178696d756d20616d6f756e74206f662060543a3a63757272656e63793a3a746f74616c5f69737375616e63652829602061667465722074686174206e6f6e2d696e666c6174656420726577617264732067657420706169642e444669786564596561726c79526577617264184000c0444a547f0000000000000000000004010120546f74616c2079656172207265776172647320746861742067657473207061696420647572696e6720666978656420726577617264207363686564756c652e2c4d696e696d756d426f6e64184040420f0000000000000000000000000004f0204d696e696d756d20616d6f756e74206f6620504f4c59582074686174206d75737420626520626f6e64656420666f722061206e657720626f6e642e01790811204f6666656e63657301204f6666656e6365730c1c5265706f72747300010405247d08040004490120546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e58436f6e63757272656e745265706f727473496e6465780101080505810801040400042901204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e485265706f72747342794b696e64496e64657801010405250128040018110120456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e00bc20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e004901204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f66690120646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e00019d010000121c53657373696f6e011c53657373696f6e1c2856616c696461746f7273010091010400047c205468652063757272656e7420736574206f662076616c696461746f72732e3043757272656e74496e646578010010100000000004782043757272656e7420696e646578206f66207468652073657373696f6e2e345175657565644368616e67656401001d01040008390120547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f7273a420686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e285175657565644b657973010085080400083d012054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b657973e02077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e4844697361626c656456616c696461746f72730100d9030400148020496e6469636573206f662064697361626c65642076616c696461746f72732e003d01205468652076656320697320616c77617973206b65707420736f7274656420736f20746861742077652063616e2066696e642077686574686572206120676976656e2076616c696461746f722069733d012064697361626c6564207573696e672062696e617279207365617263682e204974206765747320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e73642061206e657720736574206f66206964656e7469746965732e204e6578744b6579730001040500a9060400049c20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e204b65794f776e6572000104058d0800040004090120546865206f776e6572206f662061206b65792e20546865206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e01a50601a101000195081348417574686f72697479446973636f766572790000000000141c4772616e647061011c4772616e647061181453746174650100990804000490205374617465206f66207468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e676500009d08040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000010040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c6564000075030400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e3043757272656e745365744964010020200000000000000000085d0120546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c697469657329c420696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e30536574496453657373696f6e00010405201004001059012041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e00b82054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e01b10601a50104384d6178417574686f7269746965731010a0860100045c204d617820417574686f72697469657320696e2075736501a5081528486973746f726963616c00000000001620496d4f6e6c696e650120496d4f6e6c696e651038486561727462656174416674657201001010000000002c1d012054686520626c6f636b206e756d6265722061667465722077686963682069742773206f6b20746f2073656e64206865617274626561747320696e207468652063757272656e74242073657373696f6e2e0025012041742074686520626567696e6e696e67206f6620656163682073657373696f6e20776520736574207468697320746f20612076616c756520746861742073686f756c642066616c6c350120726f7567686c7920696e20746865206d6964646c65206f66207468652073657373696f6e206475726174696f6e2e20546865206964656120697320746f206669727374207761697420666f721901207468652076616c696461746f727320746f2070726f64756365206120626c6f636b20696e207468652063757272656e742073657373696f6e2c20736f207468617420746865a820686561727462656174206c61746572206f6e2077696c6c206e6f74206265206e65636573736172792e00390120546869732076616c75652077696c6c206f6e6c79206265207573656420617320612066616c6c6261636b206966207765206661696c20746f2067657420612070726f7065722073657373696f6e2d012070726f677265737320657374696d6174652066726f6d20604e65787453657373696f6e526f746174696f6e602c2061732074686f736520657374696d617465732073686f756c642062650101206d6f7265206163637572617465207468656e207468652076616c75652077652063616c63756c61746520666f7220604865617274626561744166746572602e104b6579730100a908040004d0205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e4852656365697665644865617274626561747300010805057503b1080400083d0120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206053657373696f6e496e6465786020616e64206041757468496e6465786020746fb02060577261707065724f70617175653c426f756e6465644f70617175654e6574776f726b53746174653e602e38417574686f726564426c6f636b730101080505390810100000000008150120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206056616c696461746f7249643c543e6020746f20746865c8206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e01dd0601b9010440556e7369676e65645072696f726974792020ffffffffffffffff10f0204120636f6e66696775726174696f6e20666f722062617365207072696f72697479206f6620756e7369676e6564207472616e73616374696f6e732e0015012054686973206973206578706f73656420736f20746861742069742063616e2062652074756e656420666f7220706172746963756c61722072756e74696d652c207768656eb4206d756c7469706c652070616c6c6574732073656e6420756e7369676e6564207472616e73616374696f6e732e01c508176052616e646f6d6e657373436f6c6c656374697665466c6970016052616e646f6d6e657373436f6c6c656374697665466c6970043852616e646f6d4d6174657269616c0100010404000c610120536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e2054686973610120697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f664420746865206f6c6465737420686173682e0000000018105375646f01105375646f040c4b657901000080000000000000000000000000000000000000000000000000000000000000000004842054686520604163636f756e74496460206f6620746865207375646f206b65792e01fd0601dd010001c9081914417373657401144173736574541c5469636b65727301010402a4cd08840000000000000000000000000000000000000000000000000000000000000000000874205469636b657220726567697374726174696f6e2064657461696c732e7c20287469636b657229202d3e205469636b6572526567697374726174696f6e305469636b6572436f6e666967010019070800000870205469636b657220726567697374726174696f6e20636f6e6669672e9420287469636b657229202d3e205469636b6572526567697374726174696f6e436f6e66696718546f6b656e7301010402a4d108c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008e02044657461696c73206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e050120287469636b657229202d3e205365637572697479546f6b656e2064657461696c73205b72657475726e73205365637572697479546f6b656e207374727563745d2841737365744e616d657301010402a40102040008ec204173736574206e616d65206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e6020287469636b657229202d3e206041737365744e616d65602442616c616e63654f660101080206d50818400000000000000000000000000000000008b42054686520746f74616c206173736574207469636b65722062616c616e636520706572206964656e746974792e6420287469636b65722c2044494429202d3e2042616c616e63652c4964656e7469666965727301010402a4f101040004b82041206d6170206f662061207469636b6572206e616d6520616e64206173736574206964656e746966696572732e50437573746f6d54797065496453657175656e63650100ed0110000000000cc420546865206e65787420604173736574547970653a3a437573746f6d6020494420696e207468652073657175656e63652e00d0204e756d6265727320696e207468652073657175656e63652073746172742066726f6d203120726174686572207468616e20302e2c437573746f6d547970657301010405ed0128040004f8204d61707320637573746f6d20617373657420747970652069647320746f20746865207265676973746572656420737472696e6720636f6e74656e74732e48437573746f6d5479706573496e76657273650101040228ed01100000000004610120496e7665727365206d6170206f662060437573746f6d5479706573602c2066726f6d207265676973746572656420737472696e6720636f6e74656e747320746f20637573746f6d2061737365742074797065206964732e3046756e64696e67526f756e6401010402a4e5010400089c20546865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e60207469636b6572202d3e2066756e64696e6720726f756e6450497373756564496e46756e64696e67526f756e6401010402d9081840000000000000000000000000000000000811012054686520746f74616c2062616c616e636573206f6620746f6b656e732069737375656420696e20616c6c207265636f726465642066756e64696e6720726f756e64732e8c20287469636b65722c2066756e64696e6720726f756e6429202d3e2062616c616e63651846726f7a656e01010402a41d01040008e82054686520736574206f662066726f7a656e2061737365747320696d706c656d656e7465642061732061206d656d62657273686970206d61702e3c207469636b6572202d3e20626f6f6c5c41737365744f776e65727368697052656c6174696f6e730101080602dd08e10804000888205469636b65727320616e6420746f6b656e206f776e656420627920612075736572842028757365722c207469636b657229202d3e2041737365744f776e657273686970384173736574446f63756d656e74730101080205e5080902140000000000087c20446f63756d656e747320617474616368656420746f20616e2041737365747420287469636b65722c20646f635f696429202d3e20646f63756d656e74604173736574446f63756d656e7473496453657175656e636501010402a4050210000000000880205065722d7469636b657220646f63756d656e7420494420636f756e7465722e4c20287469636b657229202d3e20646f635f696438436c61737369635469636b65727300010402a4e908040004f0205469636b657220726567697374726174696f6e2064657461696c73206f6e20506f6c796d61746820436c6173736963202f20457468657265756d2e4042616c616e63654f66417453636f70650101080606ed081840000000000000000000000000000000000ccc2042616c616e636573206765742073746f726564206f6e20746865206261736973206f6620746865206053636f70654964602e9d01205269676874206e6f77206974206973206f6e6c792068656c7066756c20666f722074686520554920707572706f7365732062757420696e206675747572652069742063616e206265207573656420746f20646f206d697261636c6573206f6e2d636861696e2e88202853636f706549642c204964656e74697479496429203d3e2042616c616e63652e4041676772656761746542616c616e63650101080206d5081840000000000000000000000000000000000825012053746f7265206167677265676174652062616c616e6365206f662074686f7365206964656e746974696573207468617420686173207468652073616d65206053636f70654964602e7820285469636b65722c2053636f7065496429203d3e2042616c616e63652e2453636f706549644f660101080206d5087c80000000000000000000000000000000000000000000000000000000000000000008dc20547261636b73207468652053636f70654964206f6620746865206964656e7469747920666f72206120676976656e207469636b65722e8420285469636b65722c204964656e74697479496429203d3e2053636f706549642e6444697361626c65496e766573746f72556e697175656e65737301010402a41d0104001031012044656369646573207768657468657220696e766573746f7220756e697175656e65737320726571756972656d656e7420697320656e666f7263656420666f7220746869732061737365742e8c206066616c736560206d65616e73207468617420697420697320656e666f726365642e0040205469636b6572203d3e20626f6f6c2e3853746f7261676556657273696f6e0100f108040004442053746f726167652076657273696f6e2e01010701e1010c784d61784e756d6265724f66544d457874656e73696f6e466f724173736574101005000000004841737365744e616d654d61784c656e677468101080000000006446756e64696e67526f756e644e616d654d61784c656e6774681010800000000001f5081a4c4361706974616c446973747269627574696f6e014c4361706974616c446973747269627574696f6e0c34446973747269627574696f6e73000104024102490204000c350120416c6c206361706974616c20646973747269627574696f6e732c207469656420746f207468656972207265737065637469766520636f72706f7261746520616374696f6e732028434173292e005c20284341496429203d3e20446973747269627574696f6e28486f6c6465725061696401010402f9081d0104000c8c2048617320616e20617373657420686f6c646572206265656e2070616964207965743f00a42028434149642c2044494429202d3e2057617320444944207061696420696e2074686520434149643f3853746f7261676556657273696f6e0100fd08040004442053746f726167652076657273696f6e2e011d07013902000101091b28436865636b706f696e740128436865636b706f696e742c2c546f74616c537570706c79010108020505091840000000000000000000000000000000000cb420546f74616c20737570706c79206f662074686520746f6b656e2061742074686520636865636b706f696e742e00ec20287469636b65722c20636865636b706f696e74496429202d3e20746f74616c20737570706c7920617420676976656e20636865636b706f696e741c42616c616e6365010108020509091840000000000000000000000000000000000c882042616c616e6365206f66206120444944206174206120636865636b706f696e742e00050120287469636b65722c206469642c20636865636b706f696e7420494429202d3e2042616c616e6365206f66206120444944206174206120636865636b706f696e7450436865636b706f696e74496453657175656e636501010402a45902200000000000000000108c20436865636b706f696e74732049442067656e657261746f722073657175656e63652ea8204944206f6620666972737420636865636b706f696e74206973203120696e7374656164206f6620302e007c20287469636b657229202d3e206e6f2e206f6620636865636b706f696e74733842616c616e6365557064617465730101080205d5080d09040008bc20436865636b706f696e747320776865726520612044494427732062616c616e63652077617320757064617465642ef020287469636b65722c2064696429202d3e205b636865636b706f696e7420494420776865726520757365722062616c616e6365206368616e6765645d2854696d657374616d70730101080205050920200000000000000000185c20436865636b706f696e742074696d657374616d70732e000901204576657279207363686564756c652d6f726967696e6174656420636865636b706f696e74206d6170732069747320494420746f20697473206475652074696d652e210120457665727920636865636b706f696e74206d616e75616c6c792063726561746564206d6170732069747320494420746f207468652074696d65206f66207265636f7264696e672e00d020287469636b657229202d3e2028636865636b706f696e7420494429202d3e20636865636b706f696e742074696d657374616d70585363686564756c65734d6178436f6d706c657869747901002020000000000000000008190120546865206d6178696d756d20636f6d706c657869747920616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365749c2028692e652e20605363686564756c6573602073746f72616765206974656d2062656c6f77292e485363686564756c65496453657175656e636501010402a46d022000000000000000000cb420436865636b706f696e74207363686564756c652049442073657175656e636520666f72207469636b6572732e006020287469636b657229202d3e207363686564756c65204944245363686564756c657301010402a4110904000c8820436865636b706f696e74207363686564756c657320666f72207469636b6572732e005c20287469636b657229202d3e205b7363686564756c655d405363686564756c65526566436f756e740101080205150910100000000020010120486f77206d616e7920227374726f6e6722207265666572656e6365732061726520746865726520746f206120676976656e20605363686564756c654964603f00fc205468652070726573656e6365206f66206120227374726f6e6722207265666572656e63652c20696e207468652073656e7365206f66206052633c543e602ce020656e7461696c73207468617420746865207265666572656e636564207363686564756c652063616e6e6f742062652072656d6f7665642ed820546875732c206173206c6f6e6720617320607374726f6e675f7265665f636f756e74287363686564756c655f696429203e2030602cac206072656d6f76655f7363686564756c65287363686564756c655f696429602077696c6c206572726f722e00a820287469636b65722c207363686564756c6520494429202d3e207374726f6e672072656620636f756e74385363686564756c65506f696e7473010108020515090d0904000cc420416c6c2074686520636865636b706f696e7473206120676976656e207363686564756c65206f726967696e617465642e00a420287469636b65722c207363686564756c6520494429202d3e205b636865636b706f696e742049445d3853746f7261676556657273696f6e01001909040004442053746f726167652076657273696f6e2e01250701510200011d091c44436f6d706c69616e63654d616e616765720144436f6d706c69616e63654d616e616765720c404173736574436f6d706c69616e63657301010402a4210908000004e820417373657420636f6d706c69616e636520666f722061207469636b657220285469636b6572202d3e204173736574436f6d706c69616e6365294854727573746564436c61696d49737375657201010402a48d02040004dc204c697374206f66207472757374656420636c61696d20697373756572205469636b6572202d3e20497373756572204964656e746974793853746f7261676556657273696f6e01002509040004442053746f726167652076657273696f6e2e012d0701710204584d6178436f6e646974696f6e436f6d706c6578697479101032000000000129091d3c436f72706f72617465416374696f6e013c436f72706f72617465416374696f6e24404d617844657461696c734c656e67746801001010000000001c5d012044657465726d696e657320746865206d6178696d756d206e756d626572206f6620627974657320746861742074686520667265652d666f726d206064657461696c7360206f6620612043412063616e2073746f72652e002901204e6f746520746861742074686973206973206e6f7420746865206e756d626572206f662060636861726073206f7220746865206e756d626572206f66205b6772617068656d65735d2e4101205768696c652074686973206d617920626520756e6e61747572616c20696e207465726d73206f662068756d616e20756e6465727374616e64696e67206f66206120746578742773206c656e6774682c6501206974206d6f726520636c6f73656c79207265666c656374732061637475616c2073746f7261676520636f73747320286027612760206973206368656170657220746f2073746f7265207468616e20616e20656d6f6a69292e00d0205b6772617068656d65735d3a2068747470733a2f2f656e2e77696b6970656469612e6f72672f77696b692f4772617068656d655c44656661756c745461726765744964656e74697469657301010402a4a90208000110f020546865206964656e7469746965732074617267657465642062792064656661756c7420666f722043417320666f722074686973207469636b65722c8c2065697468657220746f206265206578636c75646564206f7220696e636c756465642e007820287469636b6572203d3e20746172676574206964656e746974696573295444656661756c7457697468686f6c64696e6754617801010402a44d02100000000020ad01205468652064656661756c7420616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722074686973207469636b6572207768656e20646973747269627574696e67206469766964656e64732e00350120546f20756e6465727374616e642077697468686f6c64696e67207461782c20652e672e2c206c6574277320617373756d65207468617420796f7520686f6c642041434d45207368617265732ec42041434d45206e6f77206465636964657320746f2064697374726962757465203130302053454b20746f20416c6963652e590120416c696365206c6976657320696e2053776564656e2c20736f20536b617474657665726b6574202874686520537765646973682074617820617574686f72697479292077616e747320333025206f6620746861742e5d01205468656e2074686f736520313030202a2033302520617265207769746868656c642066726f6d20416c6963652c20616e642041434d452077696c6c2073656e64207468656d20746f20536b617474657665726b65742e006820287469636b6572203d3e202520746f2077697468686f6c64294444696457697468686f6c64696e6754617801010402a4c90204001049012054686520616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722061206365727461696e207469636b65722078204449442e6d0120496620616e20656e7472792065786973747320666f722061206365727461696e204449442c206974206f7665727269646573207468652064656661756c7420696e206044656661756c7457697468686f6c64696e67546178602e008820287469636b6572203d3e205b286469642c202520746f2077697468686f6c64295d304341496453657175656e636501010402a44502100000000008b420546865206e657874207065722d605469636b65726020434120494420696e207468652073657175656e63652e4d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652e40436f72706f72617465416374696f6e7300010802052d09b5020400146c20416c6c207265636f72646564204341732074687573206661722ea4204f6e6c792067656e6572696320696e666f726d6174696f6e2069732073746f72656420686572652e7d01205370656369666963206043414b696e6460732c20652e672e2c2062656e656669747320616e6420636f72706f726174652062616c6c6f74732c206d617920757365206164646974696f6e616c206f6e2d636861696e2073746f726167652e00b420287469636b6572203d3e206c6f63616c204944203d3e2074686520636f72706f7261746520616374696f6e29244341446f634c696e6b010104024102d502040014d0204173736f63696174696f6e732066726f6d2043417320746f2060446f63756d656e74607320766961207468656972204944732e5c202843414964203d3e205b446f63756d656e7449645d29000501205468652060436f72706f72617465416374696f6e7360206d61702073746f72657320605469636b6572203d3e204c6f63616c4964203d3e20546865204341602c250120736f2077652063616e20696e66657220605469636b6572203d3e2043414964602e205468657265666f72652c20776520646f6e2774206e656564206120646f75626c65206d61702e1c44657461696c73010104024102d102040008e8204173736f6369617465732064657461696c7320696e20667265652d666f726d207465787420776974682061204341206279206974732049442e50202843414964203d3e20434144657461696c73293853746f7261676556657273696f6e01003109040004442053746f726167652076657273696f6e2e01310701a50208304d61785461726765744964731010e803000000284d6178446964576874731010e8030000000135091e3c436f72706f7261746542616c6c6f74013c436f72706f7261746542616c6c6f7418144d65746173000104024102e10204000c80204d65746164617461206f66206120636f72706f726174652062616c6c6f742e005420284341496429203d3e2042616c6c6f744d6574612854696d6552616e676573000104024102dd02040010e42054696d652064657461696c73206f66206120636f72706f726174652062616c6c6f74206173736f636961746564207769746820612043412ed0205468652074696d657374616d70732064656e6f7465207768656e20766f74696e672073746172747320616e642073746f70732e006820284341496429203d3e2042616c6c6f7454696d6552616e6765404d6f74696f6e4e756d43686f69636573010104024102cd05040024c82053746f72657320686f77206d616e792063686f696365732074686572652061726520696e2065616368206d6f74696f6e2e00250120417420616c6c2074696d65732c2074686520696e76617269616e7420686f6c6473207468617420606d6f74696f6e5f63686f696365735b6964785d6020697320657175616c20746f310120606d657461732e756e7772617028292e6d6f74696f6e735b6964785d2e63686f696365732e6c656e2829602e20546861742069732c2074686973206973206a75737420612063616368652c1101207573656420746f2061766f6964206665746368696e6720616c6c20746865206d6f74696f6e732077697468207468656972206173736f6369617465642074657874732e0001012060753136602063686f696365732073686f756c64206265206d6f7265207468616e20656e6f75676820746f20666974207265616c207573652063617365732e00b020284341496429203d3e204e756d626572206f662063686f6963657320696e2065616368206d6f74696f6e2e0c5243560101040241021d01040010dc2049732072616e6b65642063686f69636520766f74696e6720285243562920656e61626c656420666f7220746869732062616c6c6f743f650120466f7220616e20756e6465727374616e64696e67206f6620686f77205243562069732068616e646c65642c20736565206e6f7465206f6e206042616c6c6f74566f7465602773206066616c6c6261636b60206669656c642e003c20284341496429203d3e20626f6f6c1c526573756c7473010104024102390904001cb02053746f7265732074686520746f74616c20766f74652074616c6c79206f6e20656163682063686f6963652e006820524356206973206e6f74206163636f756e74656420666f722cd02061732074686572652061726520746f6f206d616e792077616e747320746f20696e74657270726574207468652067726170682c9c20616e64206265636175736520697420776f756c64206e6f7420626520656666696369656e742e008420284341496429203d3e205b63757272656e7420766f746520776569676874735d14566f7465730101080206f9080103040018ac2053746f726573206561636820444944277320766f74657320696e206120676976656e2062616c6c6f742ef8205365652074686520646f63756d656e746174696f6e206f66206042616c6c6f74566f74656020666f72206e6f746573206f6e2073656d616e746963732e008420284341496429203d3e202844494429203d3e205b766f7465207765696768745d001d012055736572206d75737420656e746572203020766f746520776569676874206966207468657920646f6e27742077616e7420746f20766f746520666f7220612063686f6963652e01450701d90200013d091f2c5065726d697373696f6e7300000000014109201050697073011050697073544c5072756e65486973746f726963616c5069707301001d01040004fc2044657465726d696e6573207768657468657220686973746f726963616c20504950206461746120697320706572736973746564206f722072656d6f766564584d696e696d756d50726f706f73616c4465706f7369740100184000000000000000000000000000000000041d0120546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f7220636f6d6d756e69747920504950206372656174696f6e2e5844656661756c74456e6163746d656e74506572696f6401001010000000000439012044656661756c7420656e6163746d656e7420706572696f6420746861742077696c6c2062652075736520616674657220612070726f706f73616c2069732061636365707465642062792047432e4050656e64696e6750697045787069727901004501040108f420486f77206d616e7920626c6f636b732077696c6c2069742074616b652c2061667465722061206050656e64696e67602050495020657870697265732cf420617373756d696e6720697420686173206e6f74207472616e736974696f6e656420746f20616e6f74686572206050726f706f73616c5374617465603f3c4d6178506970536b6970436f756e740100080400048901204d6178696d756d2074696d65732061205049502063616e20626520736b6970706564206265666f72652074726967676572696e67206043616e6e6f74536b69705069706020696e2060656e6163745f736e617073686f745f726573756c7473602e384163746976655069704c696d6974010010100000000008c420546865206d6178696d756d20616c6c6f776564206e756d62657220666f722060416374697665506970436f756e74602e0101204f6e636520726561636865642c206e657720504950732063616e6e6f742062652070726f706f73656420627920636f6d6d756e697479206d656d626572732e34506970496453657175656e636501001d0310000000000409012050726f706f73616c7320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f662050495073206f66662d636861696e2e48536e617073686f74496453657175656e6365010039031000000000041d0120536e617073686f747320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f6620736e617073686f7473206f66662d636861696e2e38416374697665506970436f756e74010010100000000004c820546f74616c20636f756e74206f662063757272656e742070656e64696e67206f72207363686564756c656420504950732e4050726f706f73616c4d65746164617461000104051d0345090400049820546865206d65746164617461206f6620746865206163746976652070726f706f73616c732e204465706f73697473010108050549094d09c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008842054686f73652077686f2068617665206c6f636b65642061206465706f7369742e8c2070726f706f73616c202869642c2070726f706f73657229202d3e206465706f7369742450726f706f73616c73000104051d035109040008c42041637475616c2070726f706f73616c20666f72206120676976656e2069642c20696620697427732063757272656e742e602070726f706f73616c206964202d3e2070726f706f73616c3850726f706f73616c526573756c74010104051d035509a00000000000000000000000000000000000000000000000000000000000000000000000000000000008d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e682070726f706f73616c206964202d3e20766f746520636f756e743450726f706f73616c566f746573000108050549095909040008050120566f746573207065722050726f706f73616c20616e64206163636f756e742e205573656420746f2061766f696420646f75626c6520766f74652069737375652e7c202870726f706f73616c2069642c206163636f756e7429202d3e20566f746534506970546f5363686564756c65000104051d0310040004fc204d617073205049507320746f2074686520626c6f636b20617420776869636820746865792077696c6c2062652065786563757465642c20696620616e792e244c697665517565756501003d03040018cc2041206c697665207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029a0206f662070656e64696e67205049507320757020746f2074686520616374697665206c696d69742ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e00450120556e6c696b652060536e617073686f745175657565602c2074686973207175657565206973206c6976652c2067657474696e6720757064617465642077697468206561636820766f746520636173742e2d012054686520736e617073686f74206973207468657265666f726520657373656e7469616c6c79206120706f696e742d696e2d74696d6520636c6f6e65206f6620746869732071756575652e34536e617073686f74517565756501003d03040014590120546865207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029206f6620504950732061742074686520706f696e74206f6620736e617073686f7474696e672ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e000901204120717565756564205049502063616e20626520736b69707065642e20446f696e6720736f2062756d70732074686520607069705f736b69705f636f756e74602e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e30536e617073686f744d65746100005d09040004bc20546865206d65746164617461206f662074686520736e617073686f742c206966207468657265206973206f6e652e30506970536b6970436f756e74010104051d0308040008d020546865206e756d626572206f662074696d65732061206365727461696e2050495020686173206265656e20736b69707065642e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e34436f6d6d69747465655069707301005503040008d420416c6c206578697374696e672050495073207768657265207468652070726f706f736572206973206120636f6d6d69747465652e39012054686973206c6973742069732061206361636865206f6620616c6c2069647320696e206050726f706f73616c73602077697468206050726f706f7365723a3a436f6d6d6974746565285f29602e3853746f7261676556657273696f6e01006109040000014907011103000165092124506f7274666f6c696f0124506f7274666f6c696f244c4e657874506f7274666f6c696f4e756d626572010104067ce420010000000000000004cc20546865206e65787420706f7274666f6c696f2073657175656e6365206e756d626572206f6620616e206964656e746974792e28506f7274666f6c696f73010108060569095d0304000c41012054686520736574206f66206578697374696e6720706f7274666f6c696f732077697468207468656972206e616d65732e2049662061206365727461696e2070616972206f6620612044494420616e64590120706f7274666f6c696f206e756d626572206d61707320746f20604e6f6e6560207468656e2073756368206120706f7274666f6c696f20646f65736e27742065786973742e20436f6e76657273656c792c206966206135012070616972206d61707320746f2060536f6d65286e616d652960207468656e2073756368206120706f7274666f6c696f2065786973747320616e642069732063616c6c656420606e616d65602e304e616d65546f4e756d62657201010806026d09e420010000000000000008e420496e7665727365206d6170206f662060506f7274666f6c696f7360207573656420746f20656e737572652062696a6563746976697469792ca420616e6420756e697175656e657373206f66206e616d657320696e2060506f7274666f6c696f73602e4c506f7274666f6c696f4173736574436f756e7401010405dc2020000000000000000004fc20486f77206d616e79206173736574732077697468206e6f6e2d7a65726f2062616c616e6365207468697320706f7274666f6c696f20636f6e7461696e732e58506f7274666f6c696f417373657442616c616e636573010108050271091840000000000000000000000000000000000488205468652061737365742062616c616e636573206f6620706f7274666f6c696f732e54506f7274666f6c696f4c6f636b65644173736574730101080502710918400000000000000000000000000000000008a020416d6f756e74206f6620617373657473206c6f636b656420696e206120706f7274666f6c696f2e2d01205468657365206173736574732073686f7720757020696e20706f7274666f6c696f2062616c616e6365206275742063616e206e6f74206265207472616e7366657272656420617761792e48506f7274666f6c696f437573746f6469616e00010405dc7c04000481012054686520637573746f6469616e206f66206120706172746963756c617220706f7274666f6c696f2e204e6f6e6520696d706c696573207468617420746865206964656e74697479206f776e65722069732074686520637573746f6469616e2e4c506f7274666f6c696f73496e437573746f6479010108060575091d0104000c550120547261636b7320616c6c2074686520706f7274666f6c696f7320696e20637573746f6479206f66206120706172746963756c6172206964656e746974792e204f6e6c79207573656420627920746865205549732ea501205768656e206074727565602069732073746f726564206173207468652076616c756520666f72206120676976656e2060286469642c2070696429602c206974206d65616e73207468617420607069646020697320696e20637573746f6479206f662060646964602ea501206066616c7365602076616c75657320617265206e65766572206578706c696369746c792073746f72656420696e20746865206d61702c20616e642061726520696e737465616420696e6665727265642062792074686520616273656e6365206f662061206b65792e3853746f7261676556657273696f6e01007909040004442053746f726167652076657273696f6e2e01590701590300017d09222c50726f746f636f6c466565012c50726f746f636f6c4665650820426173654665657301010405690718400000000000000000000000000000000004150120546865206d617070696e67206f66206f7065726174696f6e206e616d657320746f2074686520626173652066656573206f662074686f7365206f7065726174696f6e732e2c436f656666696369656e7401006d03200100000001000000041501205468652066656520636f656666696369656e74206173206120706f73697469766520726174696f6e616c20286e756d657261746f722c2064656e6f6d696e61746f72292e0165070169030001810923245363686564756c657201245363686564756c65720c184167656e6461010104051085090400044d01204974656d7320746f2062652065786563757465642c20696e64657865642062792074686520626c6f636b206e756d626572207468617420746865792073686f756c64206265206578656375746564206f6e2e184c6f6f6b7570000104052875030400040101204c6f6f6b75702066726f6d206964656e7469747920746f2074686520626c6f636b206e756d62657220616e6420696e646578206f6620746865207461736b2e3853746f7261676556657273696f6e0100a90904000c7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e0098204e6577206e6574776f726b732073746172742077697468206c6173742076657273696f6e2e016d0701710308344d6178696d756d576569676874202000806e877401000008450120546865206d6178696d756d207765696768742074686174206d6179206265207363686564756c65642070657220626c6f636b20666f7220616e7920646973706174636861626c6573206f66206c657373a4207072696f72697479207468616e20607363686564756c653a3a484152445f444541444c494e45602e504d61785363686564756c6564506572426c6f636b101032000000081d0120546865206d6178696d756d206e756d626572206f66207363686564756c65642063616c6c7320696e2074686520717565756520666f7220612073696e676c6520626c6f636b2edc204e6f74207374726963746c7920656e666f726365642c20627574207573656420666f722077656967687420657374696d6174696f6e2e01ad092428536574746c656d656e740128536574746c656d656e74442456656e7565496e666f000104058103b1090400049820496e666f2061626f757420612076656e75652e2076656e75655f6964202d3e2076656e75651c44657461696c730101040581038503040008e420467265652d666f726d20746578742061626f757420612076656e75652e2076656e75655f6964202d3e206056656e756544657461696c736060204f6e6c79206e656564656420666f72207468652055492e4456656e7565496e737472756374696f6e730101080505b509410100107020496e737472756374696f6e7320756e64657220612076656e75652e60204f6e6c79206e656564656420666f72207468652055492e00842076656e75655f6964202d3e20696e737472756374696f6e5f6964202d3e2028293056656e75655369676e6572730101080505b9091d01040004e4205369676e65727320616c6c6f776564206279207468652076656e75652e202876656e75655f69642c207369676e657229202d3e20626f6f6c285573657256656e756573010104057ca5030400047101204172726179206f662076656e756573206372656174656420627920616e206964656e746974792e204f6e6c79206e656564656420666f72207468652055492e204964656e746974794964202d3e205665633c76656e75655f69643e48496e737472756374696f6e44657461696c73010104058d03bd09540000000000000000000000000000000000000000000411012044657461696c732061626f757420616e20696e737472756374696f6e2e20696e737472756374696f6e5f6964202d3e20696e737472756374696f6e5f64657461696c733c496e737472756374696f6e4c6567730101080505c509990379010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ec204c65677320756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656750496e737472756374696f6e4c65675374617475730101080505c509c909040004310120537461747573206f662061206c656720756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656753746174757364496e737472756374696f6e41666669726d7350656e64696e67010104058d0320200000000000000000048101204e756d626572206f662061666669726d6174696f6e732070656e64696e67206265666f726520696e737472756374696f6e2069732065786563757465642e20696e737472756374696f6e5f6964202d3e2061666669726d5f70656e64696e673c41666669726d7352656365697665640101080505cd09d109040004990120547261636b732061666669726d6174696f6e7320726563656976656420666f7220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c20636f756e7465725f706172747929202d3e2041666669726d6174696f6e537461747573405573657241666669726d6174696f6e730101080505d509d10904000855012048656c70732061207573657220747261636b2074686569722070656e64696e6720696e737472756374696f6e7320616e642061666669726d6174696f6e7320286f6e6c79206e656564656420666f72205549292ed42028636f756e7465725f70617274792c20696e737472756374696f6e5f696429202d3e2041666669726d6174696f6e537461747573305265636569707473557365640101080502f5071d01040004150120547261636b7320726564656d7074696f6e206f662072656365697074732e20287369676e65722c20726563656970745f75696429202d3e20726563656970745f757365643856656e756546696c746572696e6701010402a41d01040004fd0120547261636b73206966206120746f6b656e2068617320656e61626c65642066696c746572696e672076656e75657320746861742063616e2063726561746520696e737472756374696f6e7320696e766f6c76696e6720746865697220746f6b656e2e205469636b6572202d3e2066696c746572696e675f656e61626c65643856656e7565416c6c6f774c6973740101080205d9091d01040008c5012056656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c6172207469636b65722e204f6e6c7920757365642069662066696c746572696e6720697320656e61626c65642e7820287469636b65722c2076656e75655f696429202d3e20616c6c6f7765643056656e7565436f756e74657201008103200000000000000000041901204e756d626572206f662076656e75657320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d6265722948496e737472756374696f6e436f756e74657201008d03200000000000000000043101204e756d626572206f6620696e737472756374696f6e7320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d626572293853746f7261676556657273696f6e0100dd09040004442053746f726167652076657273696f6e2e017507017d030001e1092528537461746973746963730128537461746973746963730c584163746976655472616e736665724d616e616765727301010402a4e509040004c8205472616e73666572206d616e61676572732063757272656e746c7920656e61626c656420666f7220616e2041737365742e54496e766573746f72436f756e74506572417373657401010402a42020000000000000000004a4204e756d626572206f662063757272656e7420696e766573746f727320696e20616e2061737365742e384578656d7074456e7469746965730101080202e9091d0104000c490120456e746974696573206578656d70742066726f6d207472616e73666572206d616e61676572732e204578656d7074696f6e7320726571756972656d656e747320617265206261736564206f6e20544d532e4d0120544d73206d61792072657175697265206a757374207468652073656e6465722c206a757374207468652072656365697665722c20626f7468206f722065697468657220746f206265206578656d707465642e3d012043544d2072657175697265732073656e64657220746f206265206578656d70746564207768696c652050544d20726571756972657320726563656976657220746f206265206578656d707465642e01890701a903046c4d61785472616e736665724d616e616765727350657241737365741010030000000001f109260c53746f010c53746f0c2c46756e64726169736572730001080205f509c103040008b020416c6c2066756e64726169736572732074686174206172652063757272656e746c792072756e6e696e672e9820287469636b65722c2066756e647261697365725f696429202d3e2046756e647261697365723c46756e64726169736572436f756e7401010402a4b903200000000000000000049c20546f74616c2066756e6472616973657273206372656174656420666f72206120746f6b656e2e3c46756e647261697365724e616d65730101080205f509bd03040008b4204e616d6520666f72207468652046756e647261697365722e204f6e6c792075736564206f6666636861696e2eac20287469636b65722c2066756e647261697365725f696429202d3e2046756e64726169736572206e616d65018d0701b5030001f909272054726561737572790001a10701d1030001fd09281c5574696c697479011c5574696c69747904184e6f6e6365730101040500202000000000000000000001ad0701d5030001010a2910426173650001b90701e50304184d61784c656e1010000800000001050a2a3845787465726e616c4167656e7473013845787465726e616c4167656e747314304147496453657175656e636501010402a41901100000000010b420546865206e657874207065722d605469636b65726020414720494420696e207468652073657175656e63652e004d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652c90207768696368207374617274732066726f6d20312c20726174686572207468616e20302e1c4167656e744f660101080202dd08410100042901204d61707320616e206167656e742028604964656e746974794964602920746f20616c6c20616c6c20605469636b6572607320746865792062656c6f6e6720746f2c20696620616e792e3047726f75704f664167656e740001080205d50815010400043501204d617073206167656e74732028604964656e746974794964602920666f72206120605469636b65726020746f207768617420414720746865792062656c6f6e6720746f2c20696620616e792e344e756d46756c6c4167656e747301010402a410100000000004dc204d617073206120605469636b65726020746f20746865206e756d626572206f66206046756c6c60206167656e747320666f722069742e4047726f75705065726d697373696f6e730001080205090ab40400045d0120466f7220637573746f6d20414773206f66206120605469636b6572602c206d61707320746f2077686174207065726d697373696f6e7320616e206167656e7420696e207468617420414720776f756c6420686176652e01bd0701ed0300010d0a2b1c52656c61796572011c52656c6179657204245375627369646965730001040200110a040018ec20546865207375627369647920666f7220612060757365725f6b657960206966207468657920617265206265696e6720737562736964697365642c882061732061206d61702060757365725f6b657960203d3e206053756273696479602e0009012041206b65792063616e206f6e6c792068617665206f6e65207375627369647920617420612074696d652e2020546f206368616e67652073756273696469736572731d012061206b6579206e6565647320746f2063616c6c206072656d6f76655f706179696e675f6b65796020746f2072656d6f7665207468652063757272656e7420737562736964792ca4206265666f726520746865792063616e206163636570742061206e657720737562736964697365722e01c10701f1030001150a2c1c52657761726473011c52657761726473042849746e526577617264730001040200c9070400040101204d6170206f66202849746e204164647265737320604163636f756e7449646029202d3e2028526577617264206049746e52657761726453746174757360292e01c50701f5030001190a2d24546573745574696c730124546573745574696c730001cd0701f90300011d0a32210a042040436865636b5370656356657273696f6e290a1038436865636b547856657273696f6e2d0a1030436865636b47656e65736973310a2438436865636b4d6f7274616c697479350a2428436865636b4e6f6e63653d0a41012c436865636b576569676874410a4101604368617267655472616e73616374696f6e5061796d656e74490a41014453746f726543616c6c4d657461646174614d0a4101510a","id":"1"} +{"jsonrpc":"2.0","result":"0x6d6574610e550a000c1c73705f636f72651863727970746f2c4163636f756e7449643332000004000401205b75383b2033325d0000040000032000000008000800000503000c08306672616d655f73797374656d2c4163636f756e74496e666f0814496e64657801102c4163636f756e74446174610114001401146e6f6e6365100114496e646578000124636f6e73756d657273100120526566436f756e7400012470726f766964657273100120526566436f756e7400012c73756666696369656e7473100120526566436f756e740001106461746114012c4163636f756e74446174610000100000050500141064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e6365732c4163636f756e744461746100001001106672656518011c42616c616e6365000120726573657276656418011c42616c616e636500012c6d6973635f66726f7a656e18011c42616c616e63650001286665655f66726f7a656e18011c42616c616e636500001800000507001c0c346672616d655f737570706f72741c77656967687473405065724469737061746368436c6173730404540120000c01186e6f726d616c2001045400012c6f7065726174696f6e616c200104540001246d616e6461746f727920010454000020000005060024083c7072696d69746976655f74797065731048323536000004000401205b75383b2033325d00002800000208002c102873705f72756e74696d651c67656e6572696318646967657374184469676573740410486173680124000401106c6f67733001545665633c4469676573744974656d3c486173683e3e000030000002340034102873705f72756e74696d651c67656e6572696318646967657374284469676573744974656d0410486173680124011c3c4368616e67657354726965526f6f740400240110486173680002002850726552756e74696d650800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e00060024436f6e73656e7375730800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e000400105365616c0800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e000500444368616e676573547269655369676e616c04003c01444368616e676573547269655369676e616c000700144f74686572040028011c5665633c75383e0000006452756e74696d65456e7669726f6e6d656e745570646174656400080000380000030400000008003c102873705f72756e74696d651c67656e6572696318646967657374444368616e676573547269655369676e616c000104404e6577436f6e66696775726174696f6e04004001804f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e000000004004184f7074696f6e04045401440108104e6f6e6500000010536f6d650400440000010000440c1c73705f636f7265306368616e6765735f74726965604368616e67657354726965436f6e66696775726174696f6e000008013c6469676573745f696e74657276616c10010c7533320001346469676573745f6c6576656c7310010c7533320000480000024c004c08306672616d655f73797374656d2c4576656e745265636f7264080445015004540124000c01147068617365fd03011450686173650001146576656e7450010445000118746f70696373010401185665633c543e0000500c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d65144576656e7400019c1853797374656d04005401706672616d655f73797374656d3a3a4576656e743c52756e74696d653e0000001c496e6469636573040070017870616c6c65745f696e64696365733a3a4576656e743c52756e74696d653e0003002042616c616e636573040074017c70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d653e000500204964656e7469747904008c017c70616c6c65745f6964656e746974793a3a4576656e743c52756e74696d653e0007004c4364645365727669636550726f7669646572730400290101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365323e00080044506f6c796d657368436f6d6d69747465650400350101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365313e0009004c436f6d6d69747465654d656d626572736869700400490101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365313e000a0048546563686e6963616c436f6d6d69747465650400510101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365333e000b0070546563686e6963616c436f6d6d69747465654d656d626572736869700400590101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365333e000c004055706772616465436f6d6d69747465650400610101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365343e000d006855706772616465436f6d6d69747465654d656d626572736869700400690101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365343e000e00204d756c746953696704007101017c70616c6c65745f6d756c74697369673a3a4576656e743c52756e74696d653e000f001842726964676504007501017470616c6c65745f6272696467653a3a4576656e743c52756e74696d653e0010001c5374616b696e6704008901017870616c6c65745f7374616b696e673a3a4576656e743c52756e74696d653e001100204f6666656e63657304009d01015870616c6c65745f6f6666656e6365733a3a4576656e740012001c53657373696f6e0400a101015470616c6c65745f73657373696f6e3a3a4576656e740013001c4772616e6470610400a501015470616c6c65745f6772616e6470613a3a4576656e7400150020496d4f6e6c696e650400b901018070616c6c65745f696d5f6f6e6c696e653a3a4576656e743c52756e74696d653e001700105375646f0400dd01016c70616c6c65745f7375646f3a3a4576656e743c52756e74696d653e0019001441737365740400e101017070616c6c65745f61737365743a3a4576656e743c52756e74696d653e001a004c4361706974616c446973747269627574696f6e04003902018870616c6c65745f6361706974616c5f646973747269627574696f6e3a3a4576656e74001b0028436865636b706f696e7404005102016070616c6c65745f636865636b706f696e743a3a4576656e74001c0044436f6d706c69616e63654d616e6167657204007102018070616c6c65745f636f6d706c69616e63655f6d616e616765723a3a4576656e74001d003c436f72706f72617465416374696f6e0400a502017c70616c6c65745f636f72706f726174655f616374696f6e733a3a4576656e74001e003c436f72706f7261746542616c6c6f740400d902017870616c6c65745f636f72706f726174655f62616c6c6f743a3a4576656e74001f00105069707304001103016c70616c6c65745f706970733a3a4576656e743c52756e74696d653e00210024506f7274666f6c696f04005903015c70616c6c65745f706f7274666f6c696f3a3a4576656e740022002c50726f746f636f6c46656504006903018c70616c6c65745f70726f746f636f6c5f6665653a3a4576656e743c52756e74696d653e002300245363686564756c657204007103018070616c6c65745f7363686564756c65723a3a4576656e743c52756e74696d653e00240028536574746c656d656e7404007d03018470616c6c65745f736574746c656d656e743a3a4576656e743c52756e74696d653e00250028537461746973746963730400a903016070616c6c65745f737461746973746963733a3a4576656e740026000c53746f0400b503016870616c6c65745f73746f3a3a4576656e743c52756e74696d653e0027002054726561737572790400d103017c70616c6c65745f74726561737572793a3a4576656e743c52756e74696d653e0028001c5574696c6974790400d503015470616c6c65745f7574696c6974793a3a4576656e7400290010426173650400e503014870616c6c65745f626173653a3a4576656e74002a003845787465726e616c4167656e74730400ed03017470616c6c65745f65787465726e616c5f6167656e74733a3a4576656e74002b001c52656c617965720400f103017870616c6c65745f72656c617965723a3a4576656e743c52756e74696d653e002c001c526577617264730400f503017870616c6c65745f726577617264733a3a4576656e743c52756e74696d653e002d0024546573745574696c730400f903018470616c6c65745f746573745f7574696c733a3a4576656e743c52756e74696d653e00320000540c306672616d655f73797374656d1870616c6c6574144576656e740404540001184045787472696e7369635375636365737304005801304469737061746368496e666f000004b4416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e205c5b696e666f5c5d3c45787472696e7369634661696c6564080064013444697370617463684572726f7200005801304469737061746368496e666f00010490416e2065787472696e736963206661696c65642e205c5b6572726f722c20696e666f5c5d2c436f64655570646174656400020450603a636f6465602077617320757064617465642e284e65774163636f756e740400000130543a3a4163636f756e7449640003047841206e6577205c5b6163636f756e745c5d2077617320637265617465642e344b696c6c65644163636f756e740400000130543a3a4163636f756e74496400040468416e205c5b6163636f756e745c5d20776173207265617065642e2052656d61726b65640800000130543a3a4163636f756e744964000024011c543a3a48617368000504d04f6e206f6e2d636861696e2072656d61726b2068617070656e65642e205c5b6f726967696e2c2072656d61726b5f686173685c5d04704576656e7420666f72207468652053797374656d2070616c6c65742e580c346672616d655f737570706f72741c77656967687473304469737061746368496e666f00000c0118776569676874200118576569676874000114636c6173735c01344469737061746368436c617373000120706179735f6665656001105061797300005c0c346672616d655f737570706f72741c77656967687473344469737061746368436c61737300010c184e6f726d616c0000002c4f7065726174696f6e616c000100244d616e6461746f727900020000600c346672616d655f737570706f72741c7765696768747310506179730001080c596573000000084e6f0001000064082873705f72756e74696d653444697370617463684572726f72000120144f746865720000003043616e6e6f744c6f6f6b7570000100244261644f726967696e000200184d6f64756c65080114696e64657808010875380001146572726f72080108753800030044436f6e73756d657252656d61696e696e670004002c4e6f50726f76696465727300050014546f6b656e0400680128546f6b656e4572726f720006002841726974686d6574696304006c013c41726974686d657469634572726f720007000068082873705f72756e74696d6528546f6b656e4572726f7200011c1c4e6f46756e647300000020576f756c644469650001003042656c6f774d696e696d756d0002003043616e6e6f7443726561746500030030556e6b6e6f776e41737365740004001846726f7a656e0005002c556e737570706f72746564000600006c082873705f72756e74696d653c41726974686d657469634572726f7200010c24556e646572666c6f77000000204f766572666c6f77000100384469766973696f6e42795a65726f00020000700c3870616c6c65745f696e64696365731870616c6c6574144576656e7404045400010c34496e64657841737369676e65640800000130543a3a4163636f756e744964000010013c543a3a4163636f756e74496e646578000004b041206163636f756e7420696e646578207761732061737369676e65642e205c5b696e6465782c2077686f5c5d28496e6465784672656564040010013c543a3a4163636f756e74496e646578000104e441206163636f756e7420696e64657820686173206265656e2066726565642075702028756e61737369676e6564292e205c5b696e6465785c5d2c496e64657846726f7a656e080010013c543a3a4163636f756e74496e6465780000000130543a3a4163636f756e744964000204250141206163636f756e7420696e64657820686173206265656e2066726f7a656e20746f206974732063757272656e74206163636f756e742049442e205c5b696e6465782c2077686f5c5d0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909741064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e636573205261774576656e7404244163636f756e7449640100011c1c456e646f7765640c007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000018011c42616c616e63650000043101416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e205c5b6469642c206163636f756e742c20667265655f62616c616e63655d205472616e7366657218007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e74496400007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000018011c42616c616e636500008001304f7074696f6e3c4d656d6f3e000104f45472616e7366657220737563636565646564202866726f6d5f6469642c2066726f6d2c20746f5f6469642c20746f2c2076616c75652c206d656d6f292e2842616c616e636553657410007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000018011c42616c616e6365000204d4412062616c616e6365207761732073657420627920726f6f7420286469642c2077686f2c20667265652c207265736572766564292e504163636f756e7442616c616e63654275726e65640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e63650003083d01546865206163636f756e7420616e642074686520616d6f756e74206f6620756e6c6f636b65642062616c616e6365206f662074686174206163636f756e74207468617420776173206275726e65642e8c2863616c6c65722049642c2063616c6c6572206163636f756e742c20616d6f756e742920526573657276656408000001244163636f756e744964000018011c42616c616e63650004041901536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e205c5b77686f2c2076616c75655d28556e726573657276656408000001244163636f756e744964000018011c42616c616e63650005042101536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e205c5b77686f2c2076616c75655d4852657365727665526570617472696174656410000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000088011853746174757300060c4d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652ea05c5b66726f6d2c20746f2c2062616c616e63652c2064657374696e6174696f6e5f7374617475735d085c4576656e747320666f722074686973206d6f64756c652e007804184f7074696f6e040454017c0108104e6f6e6500000010536f6d6504007c00000100007c0c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f6964284964656e746974794964000004000401385b75383b20555549445f4c454e5d00008004184f7074696f6e04045401840108104e6f6e6500000010536f6d650400840000010000841064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e636573104d656d6f000004000401205b75383b2033325d00008814346672616d655f737570706f72741874726169747318746f6b656e73106d6973633442616c616e63655374617475730001081046726565000000205265736572766564000100008c1064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479205261774576656e7408244163636f756e7449640100184d6f6d656e740120014c28446964437265617465640c007c01284964656e74697479496400000001244163636f756e74496400009001705665633c5365636f6e646172794b65793c4163636f756e7449643e3e000004ac4449442c207072696d617279206b6579206163636f756e742049442c207365636f6e64617279206b657973485365636f6e646172794b657973416464656408007c01284964656e74697479496400009001705665633c5365636f6e646172794b65793c4163636f756e7449643e3e000104344449442c206e6577206b657973505365636f6e646172794b65797352656d6f76656408007c01284964656e7469747949640000f001645665633c5369676e61746f72793c4163636f756e7449643e3e000204784449442c20746865206b657973207468617420676f742072656d6f766564285369676e65724c65667408007c01284964656e74697479496400009801505369676e61746f72793c4163636f756e7449643e000304ac41207369676e6572206c656674207468656972206964656e746974792e20286469642c207369676e657229785365636f6e646172794b65795065726d697373696f6e735570646174656410007c01284964656e746974794964000094015c5365636f6e646172794b65793c4163636f756e7449643e00009c012c5065726d697373696f6e7300009c012c5065726d697373696f6e7300040405014449442c2075706461746564207365636f6e64617279206b65792c2070726576696f7573207065726d697373696f6e732c206e6577207065726d697373696f6e73445072696d6172794b6579557064617465640c007c01284964656e74697479496400000001244163636f756e74496400000001244163636f756e7449640005049c4449442c206f6c64207072696d617279206b6579206163636f756e742049442c206e657720494428436c61696d416464656408007c01284964656e7469747949640000f401344964656e74697479436c61696d0006042c4449442c20636c61696d7330436c61696d5265766f6b656408007c01284964656e7469747949640000f401344964656e74697479436c61696d000704704449442c20436c61696d547970652c20436c61696d204973737565724841737365744469645265676973746572656408007c01284964656e7469747949640000a401185469636b65720008042441737365742044494448417574686f72697a6174696f6e416464656418007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e00000d0101444f7074696f6e3c4163636f756e7449643e000020010c753634000011010170417574686f72697a6174696f6e446174613c4163636f756e7449643e0000f801384f7074696f6e3c4d6f6d656e743e000908604e657720617574686f72697a6174696f6e2061646465642e310128617574686f72697365645f62792c207461726765745f6469642c207461726765745f6b65792c20617574685f69642c20617574686f72697a6174696f6e5f646174612c206578706972792950417574686f72697a6174696f6e5265766f6b65640c007801484f7074696f6e3c4964656e7469747949643e00000d0101444f7074696f6e3c4163636f756e7449643e000020010c753634000a08a0417574686f72697a6174696f6e207265766f6b65642062792074686520617574686f72697a65722eb828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e52656a65637465640c007801484f7074696f6e3c4964656e7469747949643e00000d0101444f7074696f6e3c4163636f756e7449643e000020010c753634000b08d8417574686f72697a6174696f6e2072656a65637465642062792074686520757365722077686f2077617320617574686f72697a65642eb828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e436f6e73756d65640c007801484f7074696f6e3c4964656e7469747949643e00000d0101444f7074696f6e3c4163636f756e7449643e000020010c753634000c085c417574686f72697a6174696f6e20636f6e73756d65642eb828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f696429704f6666436861696e417574686f72697a6174696f6e5265766f6b656408007c01284964656e74697479496400009801505369676e61746f72793c4163636f756e7449643e000d08a44f66662d636861696e20417574686f72697a6174696f6e20686173206265656e207265766f6b65642e7028546172676574204964656e746974792c205369676e61746f72792988436464526571756972656d656e74466f725072696d6172794b65795570646174656404001d010110626f6f6c000e040d0143444420726571756972656d656e7420666f72207570646174696e67207072696d617279206b6579206368616e6765642e20286e65775f726571756972656d656e742950436464436c61696d73496e76616c69646174656408007c01284964656e74697479496400002001184d6f6d656e74000f08410143444420636c61696d732067656e65726174656420627920604964656e74697479496460202861204344442050726f7669646572292068617665206265656e20696e76616c6964617465642066726f6d24604d6f6d656e74602e4c5365636f6e646172794b65797346726f7a656e04007c01284964656e746974794964001004c4416c6c205365636f6e64617279206b657973206f6620746865206964656e74697479204944206172652066726f7a656e2e545365636f6e646172794b657973556e66726f7a656e04007c01284964656e746974794964001104cc416c6c205365636f6e64617279206b657973206f6620746865206964656e746974792049442061726520756e66726f7a656e2e584d6f636b496e766573746f725549444372656174656408007c01284964656e74697479496400002101012c496e766573746f725569640012046c4d6f636b656420496e766573746f7255696420637265617465642e085c4576656e747320666f722074686973206d6f64756c652e0090000002940094104c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65790c617069305365636f6e646172794b657904244163636f756e7449640100000801187369676e65729801505369676e61746f72793c4163636f756e7449643e00012c7065726d697373696f6e739c012c5065726d697373696f6e730000980c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579245369676e61746f727904244163636f756e74496401000108204964656e7469747904007c01284964656e7469747949640000001c4163636f756e7404000001244163636f756e744964000100009c0c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65792c5065726d697373696f6e7300000c01146173736574a0014041737365745065726d697373696f6e7300012465787472696e736963b4015045787472696e7369635065726d697373696f6e73000124706f7274666f6c696fd80150506f7274666f6c696f5065726d697373696f6e730000a00c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101a4010c1457686f6c650000001454686573650400ac012c42547265655365743c413e000100184578636570740400ac012c42547265655365743c413e00020000a40c4c706f6c796d6573685f7072696d697469766573187469636b6572185469636b657200000400a801405b75383b205449434b45525f4c454e5d0000a80000030c0000000800ac0420425472656553657404045401a4000400b0000000b0000002a400b40c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101b8010c1457686f6c650000001454686573650400d0012c42547265655365743c413e000100184578636570740400d0012c42547265655365743c413e00020000b80c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65794450616c6c65745065726d697373696f6e73000008012c70616c6c65745f6e616d65bc012850616c6c65744e616d65000148646973706174636861626c655f6e616d6573c00144446973706174636861626c654e616d65730000bc084c706f6c796d6573685f7072696d6974697665732850616c6c65744e616d650000040028011c5665633c75383e0000c00c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101c4010c1457686f6c650000001454686573650400c8012c42547265655365743c413e000100184578636570740400c8012c42547265655365743c413e00020000c4084c706f6c796d6573685f7072696d69746976657340446973706174636861626c654e616d650000040028011c5665633c75383e0000c80420425472656553657404045401c4000400cc000000cc000002c400d00420425472656553657404045401b8000400d4000000d4000002b800d80c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101dc010c1457686f6c650000001454686573650400e8012c42547265655365743c413e000100184578636570740400e8012c42547265655365743c413e00020000dc0c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f69642c506f7274666f6c696f4964000008010c6469647c01284964656e7469747949640001106b696e64e00134506f7274666f6c696f4b696e640000e00c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f696434506f7274666f6c696f4b696e640001081c44656661756c7400000010557365720400e4013c506f7274666f6c696f4e756d62657200010000e40c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f69643c506f7274666f6c696f4e756d6265720000040020010c7536340000e80420425472656553657404045401dc000400ec000000ec000002dc00f00000029800f40c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d344964656e74697479436c61696d0000140130636c61696d5f6973737565727c01284964656e74697479496400013469737375616e63655f646174652001184d6f6d656e740001406c6173745f7570646174655f646174652001184d6f6d656e74000118657870697279f801384f7074696f6e3c4d6f6d656e743e000114636c61696dfc0114436c61696d0000f804184f7074696f6e04045401200108104e6f6e6500000010536f6d650400200000010000fc0c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d14436c61696d000130284163637265646974656404000101011453636f706500000024416666696c6961746504000101011453636f7065000100244275794c6f636b757004000101011453636f70650002002853656c6c4c6f636b757004000101011453636f706500030050437573746f6d657244756544696c6967656e63650400050101144364644964000400404b6e6f77596f7572437573746f6d657204000101011453636f7065000500304a7572697364696374696f6e08000901012c436f756e747279436f646500000101011453636f7065000600204578656d7074656404000101011453636f70650007001c426c6f636b656404000101011453636f706500080048496e766573746f72556e697175656e6573730c000101011453636f706500007c011c53636f706549640000050101144364644964000900184e6f44617461000a0050496e766573746f72556e697175656e65737356320400050101144364644964000b000001010c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d1453636f706500010c204964656e7469747904007c01284964656e746974794964000000185469636b65720400a401185469636b657200010018437573746f6d040028011c5665633c75383e0002000005010c4c706f6c796d6573685f7072696d697469766573186364645f6964144364644964000004000401205b75383b2033325d000009010c4c706f6c796d6573685f7072696d697469766573306a7572697364696374696f6e2c436f756e747279436f64650001e90308414600000008415800010008414c00020008445a00030008415300040008414400050008414f000600084149000700084151000800084147000900084152000a0008414d000b00084157000c00084155000d00084154000e0008415a000f0008425300100008424800110008424400120008424200130008425900140008424500150008425a00160008424a00170008424d00180008425400190008424f001a00084241001b00084257001c00084256001d00084252001e00085647001f0008494f00200008424e002100084247002200084246002300084249002400084b4800250008434d002600084341002700084356002800084b59002900084346002a00085444002b0008434c002c0008434e002d0008484b002e00084d4f002f0008435800300008434300310008434f003200084b4d00330008434700340008434400350008434b003600084352003700084349003800084852003900084355003a00084359003b0008435a003c0008444b003d0008444a003e0008444d003f0008444f00400008454300410008454700420008535600430008475100440008455200450008454500460008455400470008464b00480008464f00490008464a004a00084649004b00084652004c00084746004d00085046004e00085446004f0008474100500008474d00510008474500520008444500530008474800540008474900550008475200560008474c005700084744005800084750005900084755005a00084754005b00084747005c0008474e005d00084757005e00084759005f0008485400600008484d00610008564100620008484e00630008485500640008495300650008494e006600084944006700084952006800084951006900084945006a0008494d006b0008494c006c00084954006d00084a4d006e00084a50006f00084a45007000084a4f007100084b5a007200084b45007300084b49007400084b50007500084b52007600084b57007700084b47007800084c41007900084c56007a00084c42007b00084c53007c00084c52007d00084c59007e00084c49007f00084c54008000084c55008100084d4b008200084d47008300084d57008400084d59008500084d56008600084d4c008700084d54008800084d48008900084d51008a00084d52008b00084d55008c00085954008d00084d58008e0008464d008f00084d44009000084d43009100084d4e009200084d45009300084d53009400084d41009500084d5a009600084d4d009700084e41009800084e52009900084e50009a00084e4c009b0008414e009c00084e43009d00084e5a009e00084e49009f00084e4500a000084e4700a100084e5500a200084e4600a300084d5000a400084e4f00a500084f4d00a60008504b00a70008505700a80008505300a90008504100aa0008504700ab0008505900ac0008504500ad0008504800ae0008504e00af0008504c00b00008505400b10008505200b20008514100b30008524500b40008524f00b50008525500b60008525700b70008424c00b80008534800b900084b4e00ba00084c4300bb00084d4600bc0008504d00bd0008564300be0008575300bf0008534d00c00008535400c10008534100c20008534e00c30008525300c40008534300c50008534c00c60008534700c70008534b00c80008534900c90008534200ca0008534f00cb00085a4100cc0008475300cd0008535300ce0008455300cf00084c4b00d00008534400d10008535200d20008534a00d30008535a00d40008534500d50008434800d60008535900d70008545700d80008544a00d90008545a00da0008544800db0008544c00dc0008544700dd0008544b00de0008544f00df0008545400e00008544e00e10008545200e20008544d00e30008544300e40008545600e50008554700e60008554100e70008414500e80008474200e90008555300ea0008554d00eb0008555900ec0008555a00ed0008565500ee0008564500ef0008564e00f00008564900f10008574600f20008454800f30008594500f400085a4d00f500085a5700f60008425100f70008435700f80008535800f900000d0104184f7074696f6e04045401000108104e6f6e6500000010536f6d65040000000001000011010c4c706f6c796d6573685f7072696d69746976657334617574686f72697a6174696f6e44417574686f72697a6174696f6e4461746104244163636f756e74496401000128604174746573745072696d6172794b6579526f746174696f6e04007c01284964656e74697479496400000040526f746174655072696d6172794b6579000100385472616e736665725469636b65720400a401185469636b6572000200444164644d756c74695369675369676e657204000001244163636f756e744964000300585472616e7366657241737365744f776e6572736869700400a401185469636b6572000400304a6f696e4964656e7469747904009c012c5065726d697373696f6e7300050040506f7274666f6c696f437573746f64790400dc012c506f7274666f6c696f49640006002c4265636f6d654167656e740800a401185469636b65720000150101284167656e7447726f75700007004c41646452656c61796572506179696e674b65790c000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e63650008006c526f746174655072696d6172794b6579546f5365636f6e6461727904009c012c5065726d697373696f6e730009000015010c4c706f6c796d6573685f7072696d697469766573146167656e74284167656e7447726f75700001141046756c6c00000018437573746f6d04001901011041474964000100284578636570744d65746100020034506f6c796d657368563143414100030034506f6c796d65736856315049410004000019010c4c706f6c796d6573685f7072696d697469766573146167656e7410414749640000040010010c75333200001d01000005000021010c4c706f6c796d6573685f7072696d697469766573186364645f69642c496e766573746f7255696400000400250101205b75383b2031365d0000250100000310000000080029011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449012d01011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400003101013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e002d01083070616c6c65745f67726f757024496e7374616e6365320000000031010000027c003501084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d6265720110044901390101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800003101013c5665633c4964656e7469747949643e00003101013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e74697479496400002401104861736800003d0101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e003901084070616c6c65745f636f6d6d697474656524496e7374616e636531000000003d010418526573756c74080454014101044501640108084f6b04004101000000000c45727204006400000100004101000004000045010864706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573284d61796265426c6f636b042c426c6f636b4e756d6265720110010810536f6d65040010012c426c6f636b4e756d626572000000104e6f6e650001000049011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449014d01011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400003101013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e004d01083070616c6c65745f67726f757024496e7374616e636531000000005101084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d6265720110044901550101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800003101013c5665633c4964656e7469747949643e00003101013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e74697479496400002401104861736800003d0101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e005501084070616c6c65745f636f6d6d697474656524496e7374616e6365330000000059011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449015d01011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400003101013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e005d01083070616c6c65745f67726f757024496e7374616e636533000000006101084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d6265720110044901650101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800003101013c5665633c4964656e7469747949643e00003101013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e74697479496400002401104861736800003d0101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e006501084070616c6c65745f636f6d6d697474656524496e7374616e6365340000000069011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449016d01011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400003101013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e006d01083070616c6c65745f67726f757024496e7374616e636534000000007101083c70616c6c65745f6d756c7469736967205261774576656e7404244163636f756e744964010001303c4d756c74695369674372656174656414007c01284964656e74697479496400000001244163636f756e74496400000001244163636f756e7449640000f001645665633c5369676e61746f72793c4163636f756e7449643e3e000020010c753634000008ac4576656e7420656d6974746564206166746572206372656174696f6e206f662061206d756c74697369672e6501417267756d656e74733a2063616c6c6572204449442c206d756c746973696720616464726573732c207369676e657273202870656e64696e6720617070726f76616c292c207369676e6174757265732072657175697265642e3450726f706f73616c41646465640c007c01284964656e74697479496400000001244163636f756e744964000020010c753634000108984576656e7420656d697474656420616674657220616464696e6720612070726f706f73616c2eb4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e4050726f706f73616c457865637574656410007c01284964656e74697479496400000001244163636f756e744964000020010c75363400001d010110626f6f6c000208a84576656e7420656d6974746564207768656e20612070726f706f73616c2069732065786563757465642ed4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442c20726573756c742e4c4d756c74695369675369676e657241646465640c007c01284964656e74697479496400000001244163636f756e74496400009801505369676e61746f72793c4163636f756e7449643e000308a04576656e7420656d6974746564207768656e2061207369676e61746f72792069732061646465642eb8417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206164646564207369676e65722e604d756c74695369675369676e6572417574686f72697a65640c007c01284964656e74697479496400000001244163636f756e74496400009801505369676e61746f72793c4163636f756e7449643e00040809014576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f727920697320617574686f72697a656420746f2062652061646465642ecc417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722e544d756c74695369675369676e657252656d6f7665640c007c01284964656e74697479496400000001244163636f756e74496400009801505369676e61746f72793c4163636f756e7449643e000508cc4576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f72792069732072656d6f7665642ec0417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2072656d6f766564207369676e65722e844d756c74695369675369676e61747572657352657175697265644368616e6765640c007c01284964656e74697479496400000001244163636f756e744964000020010c75363400060801014576656e7420656d6974746564207768656e20746865206e756d626572206f66207265717569726564207369676e617475726573206973206368616e6765642ee4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206e6577207265717569726564207369676e6174757265732e4050726f706f73616c417070726f76656410007c01284964656e74697479496400000001244163636f756e74496400009801505369676e61746f72793c4163636f756e7449643e000020010c753634000708b44576656e7420656d6974746564207768656e207468652070726f706f73616c2067657420617070726f7665642e0101417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e5450726f706f73616c52656a656374696f6e566f746510007c01284964656e74697479496400000001244163636f756e74496400009801505369676e61746f72793c4163636f756e7449643e000020010c7536340008080d014576656e7420656d6974746564207768656e206120766f7465206973206361737420696e206661766f72206f662072656a656374696e6720612070726f706f73616c2e0101417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e4050726f706f73616c52656a65637465640c007c01284964656e74697479496400000001244163636f756e744964000020010c753634000908a84576656e7420656d6974746564207768656e20612070726f706f73616c2069732072656a65637465642eb4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e5c50726f706f73616c457865637574696f6e4661696c6564040064013444697370617463684572726f72000a04e44576656e7420656d6974746564207768656e207468657265277320616e206572726f7220696e2070726f706f73616c20657865637574696f6e405363686564756c696e674661696c6564040064013444697370617463684572726f72000b04745363686564756c696e67206f662070726f706f73616c206661696c732e085c4576656e747320666f722074686973206d6f64756c652e007501083470616c6c65745f627269646765205261774576656e7408244163636f756e74496401002c426c6f636b4e756d6265720110014044436f6e74726f6c6c65724368616e67656408007c01284964656e74697479496400000001244163636f756e74496400000490436f6e6669726d6174696f6e206f662061207369676e657220736574206368616e67652e3041646d696e4368616e67656408007c01284964656e74697479496400000001244163636f756e74496400010474436f6e6669726d6174696f6e206f662041646d696e206368616e67652e3c54696d656c6f636b4368616e67656408007c01284964656e746974794964000010012c426c6f636b4e756d626572000204a0436f6e6669726d6174696f6e206f662064656661756c742074696d656c6f636b206368616e67652e1c4272696467656408007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e0003041d01436f6e6669726d6174696f6e206f6620504f4c59582075706772616465206f6e20506f6c796d6573682066726f6d20504f4c5920746f6b656e73206f6e20457468657265756d2e1846726f7a656e04007c01284964656e746974794964000404904e6f74696669636174696f6e206f6620667265657a696e6720746865206272696467652e20556e66726f7a656e04007c01284964656e746974794964000504984e6f74696669636174696f6e206f6620756e667265657a696e6720746865206272696467652e2046726f7a656e547808007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e0006049c4e6f74696669636174696f6e206f6620667265657a696e672061207472616e73616374696f6e2e28556e66726f7a656e547808007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e000704a44e6f74696669636174696f6e206f6620756e667265657a696e672061207472616e73616374696f6e2e3c4578656d70746564557064617465640c007c01284964656e74697479496400007c01284964656e74697479496400001d010110626f6f6c000804c44578656d7074696f6e20737461747573206f6620616e206964656e7469747920686173206265656e20757064617465642e484272696467654c696d6974557064617465640c007c01284964656e746974794964000018011c42616c616e6365000010012c426c6f636b4e756d62657200090478427269646765206c696d697420686173206265656e20757064617465642e2854787348616e646c656404007d0101985665633c284163636f756e7449642c207533322c2048616e646c65645478537461747573293e000a086101416e206576656e7420656d6974746564206166746572206120766563746f72206f66207472616e73616374696f6e732069732068616e646c65642e2054686520706172616d65746572206973206120766563746f72206f6651017475706c6573206f6620726563697069656e74206163636f756e742c20697473206e6f6e63652c20616e642074686520737461747573206f66207468652070726f636573736564207472616e73616374696f6e2e4442726964676554785363686564756c65640c007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e000010012c426c6f636b4e756d626572000b0450427269646765205478205363686564756c65642e5842726964676554785363686564756c654661696c65640c007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e000028011c5665633c75383e000c04744661696c656420746f207363686564756c65204272696467652054782e40467265657a6541646d696e416464656408007c01284964656e74697479496400000001244163636f756e744964000d048841206e657720667265657a652061646d696e20686173206265656e2061646465642e48467265657a6541646d696e52656d6f76656408007c01284964656e74697479496400000001244163636f756e744964000e04804120667265657a652061646d696e20686173206265656e2072656d6f7665642e24547852656d6f76656408007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e000f049c4e6f74696669636174696f6e206f662072656d6f76696e672061207472616e73616374696f6e2e085c4576656e747320666f722074686973206d6f64756c652e007901083470616c6c65745f627269646765204272696467655478041c4163636f756e740100001001146e6f6e636510010c753332000124726563697069656e7400011c4163636f756e74000118616d6f756e7418011c42616c616e636500011c74785f686173682401104832353600007d0100000281010081010000040c00108501008501083470616c6c65745f6272696467653c48616e646c656454785374617475730001081c53756363657373000000144572726f72040028011c5665633c75383e000100008901083870616c6c65745f7374616b696e67205261774576656e74081c42616c616e63650118244163636f756e74496401000144244572615061796f75740c00100120457261496e646578000018011c42616c616e6365000018011c42616c616e636500000c550154686520657261207061796f757420686173206265656e207365743b207468652066697273742062616c616e6365206973207468652076616c696461746f722d7061796f75743b20746865207365636f6e64206973c07468652072656d61696e6465722066726f6d20746865206d6178696d756d20616d6f756e74206f66207265776172642ea85c5b6572615f696e6465782c2076616c696461746f725f7061796f75742c2072656d61696e6465725c5d185265776172640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e63650001043901546865207374616b657220686173206265656e207265776172646564206279207468697320616d6f756e742e205c5b73746173685f6964656e746974792c2073746173682c20616d6f756e745c5d14536c61736808000001244163636f756e744964000018011c42616c616e636500020821014f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e545c5b76616c696461746f722c20616d6f756e745c5d684f6c64536c617368696e675265706f7274446973636172646564040010013053657373696f6e496e6465780003081901416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c648c6e6f742062652070726f6365737365642e205c5b73657373696f6e5f696e6465785c5d3c5374616b696e67456c656374696f6e04008d01013c456c656374696f6e436f6d70757465000404f041206e657720736574206f66207374616b6572732077617320656c656374656420776974682074686520676976656e205c5b636f6d707574655c5d2e38536f6c7574696f6e53746f72656404008d01013c456c656374696f6e436f6d70757465000504150141206e657720736f6c7574696f6e20666f7220746865207570636f6d696e6720656c656374696f6e20686173206265656e2073746f7265642e205c5b636f6d707574655c5d18426f6e6465640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000610e4416e206163636f756e742068617320626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d004d014e4f54453a2054686973206576656e74206973206f6e6c7920656d6974746564207768656e2066756e64732061726520626f6e64656420766961206120646973706174636861626c652e204e6f7461626c792c210169742077696c6c206e6f7420626520656d697474656420666f72207374616b696e672072657761726473207768656e20746865792061726520616464656420746f207374616b652e20556e626f6e6465640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000704ec416e206163636f756e742068617320756e626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d244e6f6d696e617465640c007c01284964656e74697479496400000001244163636f756e7449640000910101385665633c4163636f756e7449643e0008048855736572206861732075706461746564207468656972206e6f6d696e6174696f6e732457697468647261776e08000001244163636f756e744964000018011c42616c616e63650009085901416e206163636f756e74206861732063616c6c6564206077697468647261775f756e626f6e6465646020616e642072656d6f76656420756e626f6e64696e67206368756e6b7320776f727468206042616c616e636560ac66726f6d2074686520756e6c6f636b696e672071756575652e205c5b73746173682c20616d6f756e745c5d645065726d697373696f6e65644964656e74697479416464656408007c01284964656e74697479496400007c01284964656e746974794964000a08ec416e20444944206861732069737375656420612063616e6469646163792e2053656520746865207472616e73616374696f6e20666f722077686f2e8c4743206964656e74697479202c2056616c696461746f722773206964656e746974792e6c5065726d697373696f6e65644964656e7469747952656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000b08e854686520676976656e206d656d626572207761732072656d6f7665642e2053656520746865207472616e73616374696f6e20666f722077686f2e8c4743206964656e74697479202c2056616c696461746f722773206964656e746974792e54496e76616c6964617465644e6f6d696e61746f72730c007c01284964656e74697479496400000001244163636f756e7449640000910101385665633c4163636f756e7449643e000c081d0152656d6f766520746865206e6f6d696e61746f72732066726f6d207468652076616c6964206e6f6d696e61746f7273207768656e2074686572652043444420657870697265642e9443616c6c65722c205374617368206163636f756e744964206f66206e6f6d696e61746f727350436f6d6d697373696f6e436170557064617465640c007c01284964656e74697479496400009501011c50657262696c6c00009501011c50657262696c6c000d08805768656e20636f6d6d697373696f6e206361702067657420757064617465642e58286f6c642076616c75652c206e65772076616c7565296c4d696e696d756d426f6e645468726573686f6c645570646174656408007801484f7074696f6e3c4964656e7469747949643e000018011c42616c616e6365000e04ac4d696e20626f6e64207468726573686f6c6420776173207570646174656420286e65772076616c7565292e885265776172645061796d656e745363686564756c696e67496e7465727275707465640c000001244163636f756e7449640000100120457261496e646578000064013444697370617463684572726f72000f04cc5768656e207363686564756c696e67206f6620726577617264207061796d656e74732067657420696e7465727275707465642e64536c617368696e67416c6c6f776564466f724368616e676564040099010138536c617368696e675377697463680010049055706461746520666f722077686f6d2062616c616e63652067657420736c61736865642e085c4576656e747320666f722074686973206d6f64756c652e008d01083870616c6c65745f7374616b696e673c456c656374696f6e436f6d7075746500010c1c4f6e436861696e000000185369676e656400010020556e7369676e6564000200009101000002000095010c3473705f61726974686d65746963287065725f7468696e67731c50657262696c6c0000040010010c75333200009901083870616c6c65745f7374616b696e6738536c617368696e6753776974636800010c2456616c696461746f720000005456616c696461746f72416e644e6f6d696e61746f72000100104e6f6e65000200009d010c3c70616c6c65745f6f6666656e6365731870616c6c6574144576656e740001041c4f6666656e63650800250101104b696e6400002801384f706171756554696d65536c6f7400000c5101546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e643501286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e4c5c5b6b696e642c2074696d65736c6f745c5d2e04304576656e747320747970652ea1010c3870616c6c65745f73657373696f6e1870616c6c6574144576656e74000104284e657753657373696f6e040010013053657373696f6e496e64657800000849014e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e7420697320746865205c5b73657373696f6e5f696e6465785c5d2c206e6f74207468659c626c6f636b206e756d626572206173207468652074797065206d6967687420737567676573742e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909a5010c3870616c6c65745f6772616e6470611870616c6c6574144576656e7400010c384e6577417574686f7269746965730400a9010134417574686f726974794c697374000004d44e657720617574686f726974792073657420686173206265656e206170706c6965642e205c5b617574686f726974795f7365745c5d185061757365640001049843757272656e7420617574686f726974792073657420686173206265656e207061757365642e1c526573756d65640002049c43757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909a901000002ad0100ad0100000408b1012000b1010c4c73705f66696e616c6974795f6772616e6470610c617070185075626c696300000400b501013c656432353531393a3a5075626c69630000b5010c1c73705f636f72651c65643235353139185075626c6963000004000401205b75383b2033325d0000b9010c4070616c6c65745f696d5f6f6e6c696e651870616c6c6574144576656e7404045400010c4448656172746265617452656365697665640400bd010138543a3a417574686f726974794964000004010141206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f72697479496460205c5b617574686f726974795f69645c5d1c416c6c476f6f64000104d041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2c536f6d654f66666c696e650400c501016c5665633c4964656e74696669636174696f6e5475706c653c543e3e000204390141742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e652076616c696461746f722077617320666f756e6420746f206265205c5b6f66666c696e655c5d2e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909bd01104070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139185075626c696300000400c101013c737232353531393a3a5075626c69630000c1010c1c73705f636f72651c73723235353139185075626c6963000004000401205b75383b2033325d0000c501000002c90100c9010000040800cd0100cd01083870616c6c65745f7374616b696e67204578706f7375726508244163636f756e74496401001c42616c616e63650118000c0114746f74616cd101011c42616c616e636500010c6f776ed101011c42616c616e63650001186f7468657273d50101ac5665633c496e646976696475616c4578706f737572653c4163636f756e7449642c2042616c616e63653e3e0000d1010000061800d501000002d90100d901083870616c6c65745f7374616b696e6748496e646976696475616c4578706f7375726508244163636f756e74496401001c42616c616e636501180008010c77686f0001244163636f756e74496400011476616c7565d101011c42616c616e63650000dd01082c70616c6c65745f7375646f205261774576656e7404244163636f756e7449640100010c14537564696404003d0101384469737061746368526573756c740000048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d284b65794368616e67656404000001244163636f756e744964000104fc546865205c5b7375646f65725c5d206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e285375646f4173446f6e6504003d0101384469737061746368526573756c740002048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d085c4576656e747320666f722074686973206d6f64756c652e00e1011064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473146173736574205261774576656e7408184d6f6d656e740120244163636f756e74496401000158205472616e7366657214007c01284964656e7469747949640000a401185469636b65720000dc012c506f7274666f6c696f49640000dc012c506f7274666f6c696f4964000018011c42616c616e6365000008744576656e7420666f72207472616e73666572206f6620746f6b656e732edc63616c6c6572204449442c207469636b65722c2066726f6d20706f7274666f6c696f2c20746f20706f7274666f6c696f2c2076616c75651849737375656418007c01284964656e7469747949640000a401185469636b657200007c01284964656e746974794964000018011c42616c616e63650000e501014046756e64696e67526f756e644e616d65000018011c42616c616e636500010870456d6974207768656e20746f6b656e7320676574206973737565642e750163616c6c6572204449442c207469636b65722c2062656e6566696369617279204449442c2076616c75652c2066756e64696e6720726f756e642c20746f74616c2069737375656420696e20746869732066756e64696e6720726f756e642052656465656d656410007c01284964656e7469747949640000a401185469636b657200007c01284964656e746974794964000018011c42616c616e636500020878456d6974207768656e20746f6b656e73206765742072656465656d65642e9063616c6c6572204449442c207469636b65722c202066726f6d204449442c2076616c75653041737365744372656174656418007c01284964656e7469747949640000a401185469636b657200001d010110626f6f6c0000e901012441737365745479706500007c01284964656e74697479496400001d010110626f6f6c000308804576656e7420666f72206372656174696f6e206f66207468652061737365742e950163616c6c6572204449442f206f776e6572204449442c207469636b65722c2064697669736962696c6974792c20617373657420747970652c2062656e6566696369617279204449442c2064697361626c6520696e766573746f7220756e697175656e657373484964656e74696669657273557064617465640c007c01284964656e7469747949640000a401185469636b65720000f10101505665633c41737365744964656e7469666965723e000408d44576656e7420656d6974746564207768656e20616e7920746f6b656e206964656e746966696572732061726520757064617465642e0d0163616c6c6572204449442c207469636b65722c206120766563746f72206f6620286964656e74696669657220747970652c206964656e7469666965722076616c7565294c44697669736962696c6974794368616e6765640c007c01284964656e7469747949640000a401185469636b657200001d010110626f6f6c000508844576656e7420666f72206368616e676520696e2064697669736962696c6974792e8063616c6c6572204449442c207469636b65722c2064697669736962696c697479405472616e73666572576974684461746118007c01284964656e7469747949640000a401185469636b657200007c01284964656e74697479496400007c01284964656e746974794964000018011c42616c616e6365000028011c5665633c75383e0006083501416e206164646974696f6e616c206576656e7420746f205472616e736665723b20656d6974746564207768656e20607472616e736665725f776974685f64617461602069732063616c6c65642ec863616c6c657220444944202c207469636b65722c2066726f6d204449442c20746f204449442c2076616c75652c20646174612849734973737561626c650800a401185469636b657200001d010110626f6f6c0007085069735f6973737561626c652829206f75747075749c7469636b65722c2072657475726e2076616c7565202874727565206966206973737561626c6529405469636b6572526567697374657265640c007c01284964656e7469747949640000a401185469636b65720000f801384f7074696f6e3c4d6f6d656e743e0008087c456d6974207768656e207469636b657220697320726567697374657265642eec63616c6c657220444944202f207469636b6572206f776e6572206469642c207469636b65722c207469636b6572206f776e65722c20657870697279445469636b65725472616e736665727265640c007c01284964656e7469747949640000a401185469636b657200007c01284964656e74697479496400090880456d6974207768656e207469636b6572206973207472616e736665727265642ed063616c6c657220444944202f207469636b6572207472616e7366657272656420746f204449442c207469636b65722c2066726f6d6441737365744f776e6572736869705472616e736665727265640c007c01284964656e7469747949640000a401185469636b657200007c01284964656e746974794964000a08a4456d6974207768656e20746f6b656e206f776e657273686970206973207472616e736665727265642ef463616c6c657220444944202f20746f6b656e206f776e657273686970207472616e7366657272656420746f204449442c207469636b65722c2066726f6d2c417373657446726f7a656e08007c01284964656e7469747949640000a401185469636b6572000b08a4416e206576656e7420656d6974746564207768656e20616e2061737365742069732066726f7a656e2e78506172616d657465723a2063616c6c6572204449442c207469636b65722e344173736574556e66726f7a656e08007c01284964656e7469747949640000a401185469636b6572000c08ac416e206576656e7420656d6974746564207768656e20616e20617373657420697320756e66726f7a656e2e78506172616d657465723a2063616c6c6572204449442c207469636b65722e30417373657452656e616d65640c007c01284964656e7469747949640000a401185469636b657200000102012441737365744e616d65000d08a4416e206576656e7420656d6974746564207768656e206120746f6b656e2069732072656e616d65642ebc506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720746f6b656e206e616d652e3c46756e64696e67526f756e645365740c007c01284964656e7469747949640000a401185469636b65720000e501014046756e64696e67526f756e644e616d65000e081101416e206576656e74206361727279696e6720746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e64206f662061207469636b65722ecc506172616d65746572733a2063616c6c6572204449442c207469636b65722c2066756e64696e6720726f756e64206e616d652e34446f63756d656e74416464656410007c01284964656e7469747949640000a401185469636b6572000005020128446f63756d656e744964000009020120446f63756d656e74000f048c41206e657720646f63756d656e7420617474616368656420746f20616e2061737365743c446f63756d656e7452656d6f7665640c007c01284964656e7469747949640000a401185469636b6572000005020128446f63756d656e744964001004804120646f63756d656e742072656d6f7665642066726f6d20616e20617373657440457874656e73696f6e52656d6f7665640c007c01284964656e7469747949640000a401185469636b657200000001244163636f756e744964001108604120657874656e73696f6e20676f742072656d6f7665642e7463616c6c6572204449442c207469636b65722c204163636f756e74496450436c61737369635469636b6572436c61696d65640c007c01284964656e7469747949640000a401185469636b657200003502013c457468657265756d4164647265737300120435014120506f6c796d61746820436c617373696320746f6b656e2077617320636c61696d656420616e64207472616e7366657272656420746f2061206e6f6e2d73797374656d61746963204449442e48436f6e74726f6c6c65725472616e7366657210007c01284964656e7469747949640000a401185469636b65720000dc012c506f7274666f6c696f4964000018011c42616c616e6365001308b44576656e7420666f72207768656e206120666f72636564207472616e736665722074616b657320706c6163652e150163616c6c6572204449442f20636f6e74726f6c6c6572204449442c207469636b65722c20506f7274666f6c696f206f6620746f6b656e20686f6c6465722c2076616c75652e54437573746f6d4173736574547970654578697374730c007c01284964656e7469747949640000ed010144437573746f6d4173736574547970654964000028011c5665633c75383e001408b04120637573746f6d206173736574207479706520616c726561647920657869737473206f6e2d636861696e2e310163616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e64437573746f6d417373657454797065526567697374657265640c007c01284964656e7469747949640000ed010144437573746f6d4173736574547970654964000028011c5665633c75383e001508b04120637573746f6d2061737365742074797065207761732072656769737465726564206f6e2d636861696e2e310163616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e085c4576656e747320666f722074686973206d6f64756c652e00e5010c4c706f6c796d6573685f7072696d6974697665731461737365744046756e64696e67526f756e644e616d650000040028011c5665633c75383e0000e9010c4c706f6c796d6573685f7072696d6974697665731461737365742441737365745479706500012c30457175697479436f6d6d6f6e0000003c45717569747950726566657272656400010024436f6d6d6f646974790002002c4669786564496e636f6d6500030010524549540004001046756e6400050054526576656e7565536861726541677265656d656e74000600445374727563747572656450726f64756374000700284465726976617469766500080018437573746f6d0400ed010144437573746f6d417373657454797065496400090028537461626c65436f696e000a0000ed010c4c706f6c796d6573685f7072696d69746976657314617373657444437573746f6d41737365745479706549640000040010010c7533320000f101000002f50100f5010c4c706f6c796d6573685f7072696d6974697665734061737365745f6964656e7469666965723c41737365744964656e7469666965720001101443555349500400f901011c5b75383b20395d0000001043494e530400f901011c5b75383b20395d000100104953494e0400a801205b75383b2031325d0002000c4c45490400fd0101205b75383b2032305d00030000f901000003090000000800fd0100000314000000080001020c4c706f6c796d6573685f7072696d6974697665731461737365742441737365744e616d650000040028011c5665633c75383e000005020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7428446f63756d656e7449640000040010010c753332000009020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7420446f63756d656e74000014010c7572690d02012c446f63756d656e74557269000130636f6e74656e745f6861736811020130446f63756d656e74486173680001106e616d6529020130446f63756d656e744e616d65000120646f635f747970652d0201504f7074696f6e3c446f63756d656e74547970653e00012c66696c696e675f64617465f801384f7074696f6e3c4d6f6d656e743e00000d020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e742c446f63756d656e745572690000040028011c5665633c75383e000011020c4c706f6c796d6573685f7072696d69746976657334646f63756d656e745f6861736830446f63756d656e7448617368000124104e6f6e6500000010483531320400150201205b75383b2036345d00010010483338340400190201205b75383b2034385d000200104833323004001d0201205b75383b2034305d000300104832353604000401205b75383b2033325d00040010483232340400210201205b75383b2032385d00050010483139320400250201205b75383b2032345d00060010483136300400fd0101205b75383b2032305d00070010483132380400250101205b75383b2031365d00080000150200000340000000080019020000033000000008001d0200000328000000080021020000031c0000000800250200000318000000080029020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7430446f63756d656e744e616d650000040028011c5665633c75383e00002d0204184f7074696f6e0404540131020108104e6f6e6500000010536f6d6504003102000001000031020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7430446f63756d656e74547970650000040028011c5665633c75383e000035020c4c706f6c796d6573685f7072696d69746976657320657468657265756d3c457468657265756d4164647265737300000400fd0101205b75383b2032305d000039020c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e144576656e740001101c437265617465640c003d0201204576656e7444696400004102011043414964000049020130446973747269627574696f6e000010b841206361706974616c20646973747269627574696f6e2c20776974682064657461696c7320696e636c756465642c31017761732063726561746564206279207468652044494420287065726d697373696f6e6564206167656e742920666f7220746865204341206964656e746966696564206279206043414964602e00a8284167656e74204449442c20434127732049442c20646973747269627574696f6e2064657461696c73293842656e65666974436c61696d656418003d0201204576656e7444696400003d0201204576656e7444696400004102011043414964000049020130446973747269627574696f6e000018011c42616c616e636500004d02010c54617800010c51014120746f6b656e20686f6c64657227732062656e65666974206f662061206361706974616c20646973747269627574696f6e20666f722074686520676976656e206043414964602077617320636c61696d65642e0091012843616c6c6572204449442c20486f6c6465722f436c61696d616e74204449442c20434127732049442c207570646174656420646973747269627574696f6e2064657461696c732c2044494427732062656e656669742c20444944277320746178202529245265636c61696d65640c003d0201204576656e7444696400004102011043414964000018011c42616c616e636500020c9853746174732066726f6d2060707573685f62656e65666974602077617320656d69747465642e001501284167656e74204449442c20434127732049442c206d61782072657175657374656420444944732c2070726f63657373656420444944732c206661696c65642044494473291c52656d6f76656408003d0201204576656e744469640000410201104341496400030c8c41206361706974616c20646973747269627574696f6e207761732072656d6f7665642e0050284167656e74204449442c204341277320494429085c4576656e747320666f722074686973206d6f64756c652e003d020c4c706f6c796d6573685f7072696d697469766573286576656e745f6f6e6c79244576656e744f6e6c79040454017c0004007c01045400004102086070616c6c65745f636f72706f726174655f616374696f6e73104341496400000801187469636b6572a401185469636b65720001206c6f63616c5f6964450201244c6f63616c4341496400004502086070616c6c65745f636f72706f726174655f616374696f6e73244c6f63616c434149640000040010010c753332000049020c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e30446973747269627574696f6e000020011066726f6ddc012c506f7274666f6c696f496400012063757272656e6379a401185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e636500012472656d61696e696e6718011c42616c616e63650001247265636c61696d65641d010110626f6f6c0001287061796d656e745f61742001184d6f6d656e74000128657870697265735f6174f801384f7074696f6e3c4d6f6d656e743e00004d020c3473705f61726974686d65746963287065725f7468696e67731c5065726d696c6c0000040010010c753332000051021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e74144576656e7400011044436865636b706f696e74437265617465641400550201404f7074696f6e3c4576656e744469643e0000a401185469636b6572000059020130436865636b706f696e744964000018011c42616c616e636500002001184d6f6d656e7400000c644120636865636b706f696e742077617320637265617465642e001d012863616c6c6572204449442c207469636b65722c20636865636b706f696e742049442c20746f74616c20737570706c792c20636865636b706f696e742074696d657374616d7029844d6178696d756d5363686564756c6573436f6d706c65786974794368616e67656408007c01284964656e746974794964000020010c75363400010c2901546865206d6178696d756d20636f6d706c657869747920666f7220616e20617262697472617279207469636b65722773207363686564756c652073657420776173206368616e6765642e0064284743204449442c20746865206e6577206d6178696d756d293c5363686564756c65437265617465640c003d0201204576656e744469640000a401185469636b657200005d02013853746f7265645363686564756c6500020c884120636865636b706f696e74207363686564756c652077617320637265617465642e00782863616c6c6572204449442c207469636b65722c207363686564756c65293c5363686564756c6552656d6f7665640c007c01284964656e7469747949640000a401185469636b657200005d02013853746f7265645363686564756c6500030c884120636865636b706f696e74207363686564756c65207761732072656d6f7665642e00782863616c6c6572204449442c207469636b65722c207363686564756c6529085c4576656e747320666f722074686973206d6f64756c652e00550204184f7074696f6e040454013d020108104e6f6e6500000010536f6d6504003d02000001000059020c4c706f6c796d6573685f7072696d6974697665732063616c656e64617230436865636b706f696e7449640000040020010c75363400005d021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e743853746f7265645363686564756c6500001001207363686564756c6561020148436865636b706f696e745363686564756c6500010869646d0201285363686564756c65496400010861742001184d6f6d656e7400012472656d61696e696e6710010c753332000061020c4c706f6c796d6573685f7072696d6974697665732063616c656e64617248436865636b706f696e745363686564756c65000008011473746172742001184d6f6d656e74000118706572696f646502013843616c656e646172506572696f64000065020c4c706f6c796d6573685f7072696d6974697665732063616c656e6461723843616c656e646172506572696f640000080110756e69746902013043616c656e646172556e6974000118616d6f756e7420010c753634000069020c4c706f6c796d6573685f7072696d6974697665732063616c656e6461723043616c656e646172556e697400011c185365636f6e64000000184d696e75746500010010486f75720002000c446179000300105765656b000400144d6f6e74680005001059656172000600006d021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e74285363686564756c6549640000040020010c75363400007102086470616c6c65745f636f6d706c69616e63655f6d616e61676572144576656e7400012470436f6d706c69616e6365526571756972656d656e74437265617465640c007c01284964656e7469747949640000a401185469636b6572000075020154436f6d706c69616e6365526571756972656d656e74000008cc456d6974746564207768656e206e657720636f6d706c69616e636520726571756972656d656e7420697320637265617465642eb02863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e70436f6d706c69616e6365526571756972656d656e7452656d6f7665640c007c01284964656e7469747949640000a401185469636b6572000010010c753332000108c4456d6974746564207768656e206120636f6d706c69616e636520726571756972656d656e742069732072656d6f7665642e942863616c6c6572204449442c205469636b65722c20726571756972656d656e745f6964292e5c4173736574436f6d706c69616e63655265706c616365640c007c01284964656e7469747949640000a401185469636b65720000a10201685665633c436f6d706c69616e6365526571756972656d656e743e000208b4456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206973207265706c616365642ed4506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720617373657420636f6d706c69616e63652e504173736574436f6d706c69616e6365526573657408007c01284964656e7469747949640000a401185469636b6572000308d8456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206f662061207469636b65722069732072657365742e542863616c6c6572204449442c205469636b6572292e584173736574436f6d706c69616e6365526573756d656408007c01284964656e7469747949640000a401185469636b65720004080101456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b6572206765747320726573756d652e542863616c6c6572204449442c205469636b6572292e544173736574436f6d706c69616e636550617573656408007c01284964656e7469747949640000a401185469636b65720005080101456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b65722067657473207061757365642e542863616c6c6572204449442c205469636b6572292e70436f6d706c69616e6365526571756972656d656e744368616e6765640c007c01284964656e7469747949640000a401185469636b6572000075020154436f6d706c69616e6365526571756972656d656e74000608e0456d6974746564207768656e20636f6d706c69616e636520726571756972656d656e7420676574206d6f6469666965642f6368616e67652eb02863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e785472757374656444656661756c74436c61696d49737375657241646465640c007c01284964656e7469747949640000a401185469636b6572000091020134547275737465644973737565720007081501456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b657220676574732061646465642ea82863616c6c6572204449442c205469636b65722c2041646465642054727573746564497373756572292e805472757374656444656661756c74436c61696d49737375657252656d6f7665640c007c01284964656e7469747949640000a401185469636b657200007c01284964656e7469747949640008081901456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b6572206765742072656d6f7665642eb02863616c6c6572204449442c205469636b65722c2052656d6f7665642054727573746564497373756572292e085c4576656e747320666f722074686973206d6f64756c652e0075020c4c706f6c796d6573685f7072696d69746976657348636f6d706c69616e63655f6d616e6167657254436f6d706c69616e6365526571756972656d656e7400000c014473656e6465725f636f6e646974696f6e73790201385665633c436f6e646974696f6e3e00014c72656365697665725f636f6e646974696f6e73790201385665633c436f6e646974696f6e3e000108696410010c753332000079020000027d02007d020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e24436f6e646974696f6e0000080138636f6e646974696f6e5f7479706581020134436f6e646974696f6e5479706500011c697373756572738d0201485665633c547275737465644973737565723e000081020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e34436f6e646974696f6e5479706500011424497350726573656e740400fc0114436c61696d000000204973416273656e740400fc0114436c61696d0001001c4973416e794f660400850201285665633c436c61696d3e0002002049734e6f6e654f660400850201285665633c436c61696d3e0003002849734964656e746974790400890201385461726765744964656e74697479000400008502000002fc0089020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e385461726765744964656e746974790001083445787465726e616c4167656e7400000020537065636966696304007c01284964656e746974794964000100008d0200000291020091020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e345472757374656449737375657200000801186973737565727c01284964656e74697479496400012c747275737465645f666f729502012854727573746564466f72000095020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e2854727573746564466f720001080c416e790000002053706563696669630400990201385665633c436c61696d547970653e0001000099020000029d02009d020c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d24436c61696d54797065000130284163637265646974656400000024416666696c69617465000100244275794c6f636b75700002002853656c6c4c6f636b757000030050437573746f6d657244756544696c6967656e6365000400404b6e6f77596f7572437573746f6d6572000500304a7572697364696374696f6e000600204578656d707465640007001c426c6f636b656400080048496e766573746f72556e697175656e657373000900184e6f54797065000a0050496e766573746f72556e697175656e6573735632000b0000a102000002750200a502086070616c6c65745f636f72706f726174655f616374696f6e73144576656e740001245c4d617844657461696c734c656e6774684368616e67656408007c01284964656e746974794964000010010c753332000008d4546865206d6178696d756d206c656e677468206f66206064657461696c736020696e20627974657320776173206368616e6765642e50284743204449442c206e6577206c656e677468297844656661756c745461726765744964656e7469746965734368616e6765640c007c01284964656e7469747949640000a401185469636b65720000a90201405461726765744964656e746974696573000108ec54686520736574206f662064656661756c7420605461726765744964656e7469746965736020666f722061207469636b6572206368616e6765642ea4284167656e74204449442c205469636b65722c204e6577205461726765744964656e746974696573297044656661756c7457697468686f6c64696e675461784368616e6765640c007c01284964656e7469747949640000a401185469636b657200004d02010c546178000208c45468652064656661756c742077697468686f6c64696e672074617820666f722061207469636b6572206368616e6765642e74284167656e74204449442c205469636b65722c204e657720546178292e6044696457697468686f6c64696e675461784368616e67656410007c01284964656e7469747949640000a401185469636b657200007c01284964656e7469747949640000b102012c4f7074696f6e3c5461783e000308ec5468652077697468686f6c64696e672074617820737065636966696320746f20612044494420666f722061207469636b6572206368616e6765642ea0284167656e74204449442c205469636b65722c205461786564204449442c204e657720546178292e384341415472616e736665727265640c007c01284964656e7469747949640000a401185469636b657200007c01284964656e7469747949640004086c41206e65772044494420776173206d61646520746865204341412e8c284e657720434141204449442c205469636b65722c204e65772043414120444944292e2c4341496e6974696174656410003d0201204576656e74446964000041020110434149640000b502013c436f72706f72617465416374696f6e0000d1020124434144657461696c730005084c412043412077617320696e697469617465642ea8284167656e74204449442c2043412069642c207468652043412c207468652043412064657461696c73293443414c696e6b6564546f446f630c007c01284964656e746974794964000041020110434149640000d502013c5665633c446f63756d656e7449643e000608844120434120776173206c696e6b656420746f206120736574206f6620646f63732eac284167656e74204449442c2043412049642c204c697374206f6620646f63206964656e746966696572732924434152656d6f76656408003d0201204576656e74446964000041020110434149640007084441204341207761732072656d6f7665642e48284167656e74204449442c20434120496429445265636f7264446174654368616e6765640c003d0201204576656e74446964000041020110434149640000b502013c436f72706f72617465416374696f6e0008046c412043412773207265636f72642064617465206368616e6765642e085c4576656e747320666f722074686973206d6f64756c652e00a902086070616c6c65745f636f72706f726174655f616374696f6e73405461726765744964656e74697469657300000801286964656e7469746965733101013c5665633c4964656e7469747949643e00012474726561746d656e74ad02013c54617267657454726561746d656e740000ad02086070616c6c65745f636f72706f726174655f616374696f6e733c54617267657454726561746d656e740001081c496e636c7564650000001c4578636c75646500010000b10204184f7074696f6e040454014d020108104e6f6e6500000010536f6d6504004d020000010000b502086070616c6c65745f636f72706f726174655f616374696f6e733c436f72706f72617465416374696f6e00001801106b696e64b902011843414b696e640001246465636c5f646174652001184d6f6d656e7400012c7265636f72645f64617465bd0201484f7074696f6e3c5265636f7264446174653e00011c74617267657473a90201405461726765744964656e74697469657300015c64656661756c745f77697468686f6c64696e675f7461784d02010c54617800013c77697468686f6c64696e675f746178c90201585665633c284964656e7469747949642c20546178293e0000b902086070616c6c65745f636f72706f726174655f616374696f6e731843414b696e64000114485072656469637461626c6542656e6566697400000050556e7072656469637461626c6542656e65666974000100304973737565724e6f746963650002003852656f7267616e697a6174696f6e000300144f7468657200040000bd0204184f7074696f6e04045401c1020108104e6f6e6500000010536f6d650400c1020000010000c102086070616c6c65745f636f72706f726174655f616374696f6e73285265636f7264446174650000080110646174652001184d6f6d656e74000128636865636b706f696e74c50201304341436865636b706f696e740000c502086070616c6c65745f636f72706f726174655f616374696f6e73304341436865636b706f696e74000108245363686564756c656408006d0201285363686564756c654964000020010c753634000000204578697374696e67040059020130436865636b706f696e74496400010000c902000002cd0200cd02000004087c4d0200d102086070616c6c65745f636f72706f726174655f616374696f6e7324434144657461696c730000040028011c5665633c75383e0000d502000002050200d9020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74144576656e740001181c4372656174656414007c01284964656e746974794964000041020110434149640000dd02013c42616c6c6f7454696d6552616e67650000e102012842616c6c6f744d65746100001d010110626f6f6c00000c7c4120636f72706f726174652062616c6c6f742077617320637265617465642e001501284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e642c2042616c6c6f74206d657461646174612c2052435620656e61626c65643f2920566f7465436173740c007c01284964656e7469747949640000410201104341496400000103013c5665633c42616c6c6f74566f74653e00010c984120766f746520776173206361737420696e206120636f72706f726174652062616c6c6f742e006028766f746572204449442c20434149642c20566f746573293052616e67654368616e6765640c007c01284964656e746974794964000041020110434149640000dd02013c42616c6c6f7454696d6552616e676500020cd04120636f72706f726174652062616c6c6f74206368616e676564206974732073746172742f656e6420646174652072616e67652e0098284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e64292c4d6574614368616e6765640c007c01284964656e746974794964000041020110434149640000e102012842616c6c6f744d65746100030ca04120636f72706f726174652062616c6c6f74206368616e67656420697473206d657461646174612e0088284167656e74204449442c20434127732049442c204e6577206d6574616461746129285243564368616e6765640c007c01284964656e7469747949640000410201104341496400001d010110626f6f6c00040cac4120636f72706f726174652062616c6c6f74206368616e676564206974732052435620737570706f72742e0084284167656e74204449442c20434127732049442c204e657720737570706f7274291c52656d6f76656408003d0201204576656e744469640000410201104341496400050c7c4120636f72706f726174652062616c6c6f74207761732072656d6f7665642e0050284167656e74204449442c204341277320494429085c4576656e747320666f722074686973206d6f64756c652e00dd020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f743c42616c6c6f7454696d6552616e6765000008011473746172742001184d6f6d656e7400010c656e642001184d6f6d656e740000e1020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742842616c6c6f744d65746100000801147469746c65e502012c42616c6c6f745469746c6500011c6d6f74696f6e73e902012c5665633c4d6f74696f6e3e0000e5020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c42616c6c6f745469746c650000040028011c5665633c75383e0000e902000002ed0200ed020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74184d6f74696f6e00000c01147469746c65f102012c4d6f74696f6e5469746c65000124696e666f5f6c696e6bf50201384d6f74696f6e496e666f4c696e6b00011c63686f69636573f90201405665633c43686f6963655469746c653e0000f1020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c4d6f74696f6e5469746c650000040028011c5665633c75383e0000f5020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74384d6f74696f6e496e666f4c696e6b0000040028011c5665633c75383e0000f902000002fd0200fd020c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c43686f6963655469746c650000040028011c5665633c75383e0000010300000205030005030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742842616c6c6f74566f74650000080114706f77657218011c42616c616e636500012066616c6c6261636b0903012c4f7074696f6e3c7531363e0000090304184f7074696f6e040454010d030108104e6f6e6500000010536f6d6504000d0300000100000d0300000504001103082c70616c6c65745f70697073205261774576656e7408244163636f756e74496401002c426c6f636b4e756d6265720110015050486973746f726963616c506970735072756e65640c007c01284964656e74697479496400001d010110626f6f6c00001d010110626f6f6c00000445015072756e696e6720486973746f726963616c205049507320697320656e61626c6564206f722064697361626c6564202863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293c50726f706f73616c4372656174656420007c01284964656e74697479496400001503014c50726f706f7365723c4163636f756e7449643e00001d0301145069704964000018011c42616c616e636500002103012c4f7074696f6e3c55726c3e0000290301584f7074696f6e3c5069704465736372697074696f6e3e00004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00003103013050726f706f73616c4461746100011498412050495020776173206d61646520776974682061206042616c616e636560207374616b652e00342320506172616d65746572733a00510143616c6c6572204449442c2050726f706f7365722c205049502049442c206465706f7369742c2055524c2c206465736372697074696f6e2c206578706972792074696d652c2070726f706f73616c20646174612e5050726f706f73616c5374617465557064617465640c007c01284964656e74697479496400001d030114506970496400003503013450726f706f73616c5374617465000204d854726967676572656420656163682074696d6520746865207374617465206f6620612070726f706f73616c20697320616d656e64656414566f74656414007c01284964656e74697479496400000001244163636f756e74496400001d030114506970496400001d010110626f6f6c000018011c42616c616e6365000304f8604163636f756e7449646020766f7465642060626f6f6c60206f6e207468652070726f706f73616c207265666572656e636564206279206050697049646024506970436c6f7365640c007c01284964656e74697479496400001d030114506970496400001d010110626f6f6c000404e850697020686173206265656e20636c6f7365642c20626f6f6c20696e6469636174657320776865746865722064617461206973207072756e656448457865637574696f6e5363686564756c65640c007c01284964656e74697479496400001d0301145069704964000010012c426c6f636b4e756d626572000504e0457865637574696f6e206f6620612050495020686173206265656e207363686564756c656420617420737065636966696320626c6f636b2e7444656661756c74456e6163746d656e74506572696f644368616e6765640c007c01284964656e746974794964000010012c426c6f636b4e756d626572000010012c426c6f636b4e756d626572000608d844656661756c7420656e6163746d656e7420706572696f642028696e20626c6f636b732920686173206265656e206368616e6765642e902863616c6c6572204449442c206f6c6420706572696f642c206e657720706572696f6429744d696e696d756d50726f706f73616c4465706f7369744368616e6765640c007c01284964656e746974794964000018011c42616c616e6365000018011c42616c616e63650007087c4d696e696d756d206465706f73697420616d6f756e74206d6f646966696564902863616c6c6572204449442c206f6c6420616d6f756e742c206e657720616d6f756e74295c50656e64696e675069704578706972794368616e6765640c007c01284964656e74697479496400004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e000808cc416d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020657870697265732e902863616c6c6572204449442c206f6c64206578706972792c206e65772065787069727929584d6178506970536b6970436f756e744368616e6765640c007c01284964656e7469747949640000080130536b6970706564436f756e740000080130536b6970706564436f756e74000908cc546865206d6178696d756d2074696d65732061205049502063616e20626520736b697070656420776173206368616e6765642e882863616c6c6572204449442c206f6c642076616c75652c206e65772076616c756529544163746976655069704c696d69744368616e6765640c007c01284964656e746974794964000010010c753332000010010c753332000a08b8546865206d6178696d756d206e756d626572206f6620616374697665205049507320776173206368616e6765642e882863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293850726f706f73616c526566756e640c007c01284964656e74697479496400001d0301145069704964000018011c42616c616e6365000b083c526566756e642070726f706f73616c482869642c20746f74616c20616d6f756e74293c536e617073686f74436c656172656408007c01284964656e746974794964000039030128536e617073686f744964000c046454686520736e617073686f742077617320636c65617265642e34536e617073686f7454616b656e0c007c01284964656e746974794964000039030128536e617073686f74496400003d03014c5665633c536e617073686f747465645069703e000d046441206e657720736e617073686f74207761732074616b656e2e28506970536b69707065640c007c01284964656e74697479496400001d03011450697049640000080130536b6970706564436f756e74000e08a0412050495020696e2074686520736e617073686f742071756575652077617320736b69707065642e802867635f6469642c207069705f69642c206e65775f736b69705f636f756e742958536e617073686f74526573756c7473456e616374656414007c01284964656e7469747949640000490301484f7074696f6e3c536e617073686f7449643e00004d0301685665633c2850697049642c20536b6970706564436f756e74293e0000550301285665633c50697049643e0000550301285665633c50697049643e000f083101526573756c74732028652e672e2c20617070726f7665642c2072656a65637465642c20616e6420736b6970706564292c207765726520656e616374656420666f7220736f6d6520504950732e51012867635f6469642c20736e617073686f745f69645f6f70742c20736b69707065645f706970735f776974685f6e65775f636f756e742c2072656a65637465645f706970732c20617070726f7665645f706970732964457865637574696f6e5363686564756c696e674661696c65640c007c01284964656e74697479496400001d0301145069704964000010012c426c6f636b4e756d6265720010040d015363686564756c696e67206f66207468652050495020666f7220657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e3c4578706972795363686564756c65640c007c01284964656e74697479496400001d0301145069704964000010012c426c6f636b4e756d626572001104985468652050495020686173206265656e207363686564756c656420666f72206578706972792e584578706972795363686564756c696e674661696c65640c007c01284964656e74697479496400001d0301145069704964000010012c426c6f636b4e756d62657200120401015363686564756c696e67206f66207468652050495020666f7220657870697279206661696c656420696e20746865207363686564756c65722070616c6c65742e64457865637574696f6e43616e63656c6c696e674661696c656404001d0301145069704964001304f043616e63656c6c696e67207468652050495020657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e085c4576656e747320666f722074686973206d6f64756c652e001503082c70616c6c65745f706970732050726f706f73657204244163636f756e7449640100010824436f6d6d756e69747904000001244163636f756e74496400000024436f6d6d6974746565040019030124436f6d6d6974746565000100001903082c70616c6c65745f7069707324436f6d6d697474656500010824546563686e6963616c0000001c55706772616465000100001d03082c70616c6c65745f706970731450697049640000040010010c7533320000210304184f7074696f6e0404540125030108104e6f6e6500000010536f6d650400250300000100002503082c70616c6c65745f706970730c55726c0000040028011c5665633c75383e0000290304184f7074696f6e040454012d030108104e6f6e6500000010536f6d6504002d0300000100002d03082c70616c6c65745f70697073385069704465736372697074696f6e0000040028011c5665633c75383e00003103082c70616c6c65745f706970733050726f706f73616c4461746100010810486173680400240110483235360000002050726f706f73616c040028011c5665633c75383e000100003503082c70616c6c65745f706970733450726f706f73616c53746174650001181c50656e64696e670000002052656a6563746564000100245363686564756c6564000200184661696c65640003002045786563757465640004001c45787069726564000500003903082c70616c6c65745f7069707328536e617073686f7449640000040010010c75333200003d030000024103004103082c70616c6c65745f7069707338536e617073686f74746564506970000008010869641d03011450697049640001187765696768744503013c28626f6f6c2c2042616c616e63652900004503000004081d011800490304184f7074696f6e0404540139030108104e6f6e6500000010536f6d650400390300000100004d030000025103005103000004081d03080055030000021d030059031064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747324706f7274666f6c696f144576656e7400011840506f7274666f6c696f437265617465640c007c01284964656e7469747949640000e4013c506f7274666f6c696f4e756d62657200005d030134506f7274666f6c696f4e616d65000018b054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c7920637265617465642e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572402a20706f7274666f6c696f206e616d6540506f7274666f6c696f44656c6574656408007c01284964656e7469747949640000e4013c506f7274666f6c696f4e756d626572000114b054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c792072656d6f7665642e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572584d6f7665644265747765656e506f7274666f6c696f7318007c01284964656e7469747949640000dc012c506f7274666f6c696f49640000dc012c506f7274666f6c696f49640000a401185469636b6572000018011c42616c616e636500008001304f7074696f6e3c4d656d6f3e000220f04120746f6b656e20616d6f756e7420686173206265656e206d6f7665642066726f6d206f6e6520706f7274666f6c696f20746f20616e6f746865722e00302320506172616d6574657273302a206f726967696e20444944482a20736f7572636520706f7274666f6c696f5c2a2064657374696e6174696f6e20706f7274666f6c696f382a206173736574207469636b6572782a2061737365742062616c616e6365207468617420776173206d6f76656440506f7274666f6c696f52656e616d65640c007c01284964656e7469747949640000e4013c506f7274666f6c696f4e756d62657200005d030134506f7274666f6c696f4e616d65000318fc54686520706f7274666f6c696f206964656e746966696564207769746820606e756d6020686173206265656e2072656e616d656420746f20606e616d65602e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572402a20706f7274666f6c696f206e616d653855736572506f7274666f6c696f7308007c01284964656e7469747949640000610301945665633c28506f7274666f6c696f4e756d6265722c20506f7274666f6c696f4e616d65293e000414d4416c6c206e6f6e2d64656661756c7420706f7274666f6c696f206e756d6265727320616e64206e616d6573206f662061204449442e00302320506172616d6574657273302a206f726967696e20444944742a20766563746f72206f66206e756d6265722d6e616d6520706169727364506f7274666f6c696f437573746f6469616e4368616e6765640c007c01284964656e7469747949640000dc012c506f7274666f6c696f496400007c01284964656e746974794964000518f4437573746f6479206f66206120706f7274666f6c696f20686173206265656e20676976656e20746f206120646966666572656e74206964656e7469747900302320506172616d6574657273302a206f726967696e20444944382a20706f7274666f6c696f206964642a20706f7274666f6c696f20637573746f6469616e20646964085c4576656e747320666f722074686973206d6f64756c652e005d030c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f696434506f7274666f6c696f4e616d650000040028011c5665633c75383e00006103000002650300650300000408e45d03006903084c70616c6c65745f70726f746f636f6c5f666565205261774576656e7404244163636f756e7449640100010c1846656553657408007c01284964656e746974794964000018011c42616c616e6365000004845468652070726f746f636f6c20666565206f6620616e206f7065726174696f6e2e38436f656666696369656e7453657408007c01284964656e74697479496400006d030120506f73526174696f000104505468652066656520636f656666696369656e742e284665654368617267656408000001244163636f756e744964000018011c42616c616e63650002043046656520636861726765642e085c4576656e747320666f722074686973206d6f64756c652e006d03084c706f6c796d6573685f7072696d69746976657320506f73526174696f0000080010010c753332000010010c753332000071030c4070616c6c65745f7363686564756c65721870616c6c6574144576656e7404045400010c245363686564756c65640800100138543a3a426c6f636b4e756d626572000010010c753332000004905363686564756c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d2043616e63656c65640800100138543a3a426c6f636b4e756d626572000010010c7533320001048c43616e63656c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d28446973706174636865640c007503016c5461736b416464726573733c543a3a426c6f636b4e756d6265723e00007903013c4f7074696f6e3c5665633c75383e3e00003d0101384469737061746368526573756c74000204a84469737061746368656420736f6d65207461736b2e205c5b7461736b2c2069642c20726573756c745c5d04304576656e747320747970652e750300000408101000790304184f7074696f6e04045401280108104e6f6e6500000010536f6d6504002800000100007d03084470616c6c65745f736574746c656d656e74205261774576656e740c184d6f6d656e7401202c426c6f636b4e756d6265720110244163636f756e7449640100014c3056656e75654372656174656410007c01284964656e74697479496400008103011c56656e7565496400008503013056656e756544657461696c7300008903012456656e756554797065000004ec41206e65772076656e756520686173206265656e206372656174656420286469642c2076656e75655f69642c2064657461696c732c2074797065294c56656e756544657461696c73557064617465640c007c01284964656e74697479496400008103011c56656e7565496400008503013056656e756544657461696c730001041501416e206578697374696e672076656e756527732064657461696c7320686173206265656e207570646174656420286469642c2076656e75655f69642c2064657461696c73294056656e756554797065557064617465640c007c01284964656e74697479496400008103011c56656e7565496400008903012456656e756554797065000204fc416e206578697374696e672076656e75652773207479706520686173206265656e207570646174656420286469642c2076656e75655f69642c20747970652948496e737472756374696f6e437265617465641c007c01284964656e74697479496400008103011c56656e7565496400008d030134496e737472756374696f6e496400009103016c536574746c656d656e74547970653c426c6f636b4e756d6265723e0000f801384f7074696f6e3c4d6f6d656e743e0000f801384f7074696f6e3c4d6f6d656e743e0000950301205665633c4c65673e0003088841206e657720696e737472756374696f6e20686173206265656e20637265617465643901286469642c2076656e75655f69642c20696e737472756374696f6e5f69642c20736574746c656d656e745f747970652c2074726164655f646174652c2076616c75655f646174652c206c656773294c496e737472756374696f6e41666669726d65640c007c01284964656e7469747949640000dc012c506f7274666f6c696f496400008d030134496e737472756374696f6e49640004040501416e20696e737472756374696f6e20686173206265656e2061666669726d656420286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964295041666669726d6174696f6e57697468647261776e0c007c01284964656e7469747949640000dc012c506f7274666f6c696f496400008d030134496e737472756374696f6e49640005040901416e2061666669726d6174696f6e20686173206265656e2077697468647261776e20286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964294c496e737472756374696f6e52656a656374656408007c01284964656e74697479496400008d030134496e737472756374696f6e4964000604d8416e20696e737472756374696f6e20686173206265656e2072656a656374656420286469642c20696e737472756374696f6e5f6964293852656365697074436c61696d656418007c01284964656e74697479496400008d030134496e737472756374696f6e496400009d0301144c65674964000020010c75363400000001244163636f756e7449640000a103013c526563656970744d657461646174610007047d0141207265636569707420686173206265656e20636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e65722c2072656365697074206d6574616461746129585265636569707456616c69646974794368616e67656410007c01284964656e74697479496400000001244163636f756e744964000020010c75363400001d010110626f6f6c0008040d0141207265636569707420686173206265656e20696e76616c69646174656420286469642c207369676e65722c20726563656970745f7569642c2076616c6964697479294052656365697074556e636c61696d656414007c01284964656e74697479496400008d030134496e737472756374696f6e496400009d0301144c65674964000020010c75363400000001244163636f756e7449640009043d0141207265636569707420686173206265656e20756e636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e6572293856656e756546696c746572696e670c007c01284964656e7469747949640000a401185469636b657200001d010110626f6f6c000a04690156656e75652066696c746572696e6720686173206265656e20656e61626c6564206f722064697361626c656420666f722061207469636b657220286469642c207469636b65722c2066696c746572696e675f656e61626c6564293456656e756573416c6c6f7765640c007c01284964656e7469747949640000a401185469636b65720000a50301305665633c56656e756549643e000b04dc56656e75657320616464656420746f20616c6c6f77206c69737420286469642c207469636b65722c207665633c76656e75655f69643e293456656e756573426c6f636b65640c007c01284964656e7469747949640000a401185469636b65720000a50301305665633c56656e756549643e000c04dc56656e75657320616464656420746f20626c6f636b206c69737420286469642c207469636b65722c207665633c76656e75655f69643e29484c65674661696c6564457865637574696f6e0c007c01284964656e74697479496400008d030134496e737472756374696f6e496400009d0301144c65674964000d04dc457865637574696f6e206f662061206c6567206661696c656420286469642c20696e737472756374696f6e5f69642c206c65675f69642944496e737472756374696f6e4661696c656408007c01284964656e74697479496400008d030134496e737472756374696f6e4964000e04c8496e737472756374696f6e206661696c656420657865637574696f6e20286469642c20696e737472756374696f6e5f6964294c496e737472756374696f6e457865637574656408007c01284964656e74697479496400008d030134496e737472756374696f6e4964000f04d8496e737472756374696f6e206578656375746564207375636365737366756c6c79286469642c20696e737472756374696f6e5f6964294456656e7565556e617574686f72697a65640c007c01284964656e7469747949640000a401185469636b657200008103011c56656e75654964001004010156656e7565206e6f742070617274206f662074686520746f6b656e277320616c6c6f77206c69737420286469642c205469636b65722c2076656e75655f696429405363686564756c696e674661696c6564040064013444697370617463684572726f72001104805363686564756c696e67206f6620696e737472756374696f6e206661696c732e58496e737472756374696f6e52657363686564756c656408007c01284964656e74697479496400008d030134496e737472756374696f6e49640012086c496e737472756374696f6e2069732072657363686564756c65642e702863616c6c6572204449442c20696e737472756374696f6e5f696429085c4576656e747320666f722074686973206d6f64756c652e008103084470616c6c65745f736574746c656d656e741c56656e756549640000040020010c75363400008503084470616c6c65745f736574746c656d656e743056656e756544657461696c730000040028011c5665633c75383e00008903084470616c6c65745f736574746c656d656e742456656e756554797065000110144f7468657200000030446973747269627574696f6e0001000c53746f0002002045786368616e6765000300008d03084470616c6c65745f736574746c656d656e7434496e737472756374696f6e49640000040020010c75363400009103084470616c6c65745f736574746c656d656e7438536574746c656d656e7454797065042c426c6f636b4e756d626572011001084c536574746c654f6e41666669726d6174696f6e00000034536574746c654f6e426c6f636b040010012c426c6f636b4e756d6265720001000095030000029903009903084470616c6c65745f736574746c656d656e740c4c6567000010011066726f6ddc012c506f7274666f6c696f4964000108746fdc012c506f7274666f6c696f49640001146173736574a401185469636b6572000118616d6f756e7418011c42616c616e636500009d03084470616c6c65745f736574746c656d656e74144c656749640000040020010c7536340000a103084470616c6c65745f736574746c656d656e743c526563656970744d657461646174610000040028011c5665633c75383e0000a503000002810300a9031064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732873746174697374696373144576656e74000110505472616e736665724d616e6167657241646465640c007c01284964656e7469747949640000a401185469636b65720000ad03013c5472616e736665724d616e616765720000048441206e6577207472616e73666572206d616e61676572207761732061646465642e585472616e736665724d616e6167657252656d6f7665640c007c01284964656e7469747949640000a401185469636b65720000ad03013c5472616e736665724d616e61676572000104a4416e206578697374696e67207472616e73666572206d616e61676572207761732072656d6f7665642e3c4578656d7074696f6e73416464656410007c01284964656e7469747949640000a401185469636b65720000ad03013c5472616e736665724d616e616765720000310101305665633c53636f706549643e000204b06053636f706549646073207765726520616464656420746f20746865206578656d7074696f6e206c6973742e444578656d7074696f6e7352656d6f76656410007c01284964656e7469747949640000a401185469636b65720000ad03013c5472616e736665724d616e616765720000310101305665633c53636f706549643e000304c06053636f70654964607320776572652072656d6f7665642066726f6d20746865206578656d7074696f6e206c6973742e085c4576656e747320666f722074686973206d6f64756c652e00ad030c4c706f6c796d6573685f7072696d69746976657328737461746973746963733c5472616e736665724d616e6167657200010850436f756e745472616e736665724d616e61676572040020011c436f756e7465720000006450657263656e746167655472616e736665724d616e616765720400b103012850657263656e7461676500010000b1030c4c706f6c796d6573685f7072696d69746976657328737461746973746963733c4861736861626c655065726d696c6c000004004d02015873705f61726974686d657469633a3a5065726d696c6c0000b503082870616c6c65745f73746f205261774576656e7404184d6f6d656e74012001184446756e647261697365724372656174656410007c01284964656e7469747949640000b903013046756e6472616973657249640000bd03013846756e647261697365724e616d650000c103014846756e647261697365723c4d6f6d656e743e0000088841206e65772066756e6472616973657220686173206265656e20637265617465642efc284167656e74204449442c2066756e647261697365722069642c2066756e64726169736572206e616d652c2066756e647261697365722064657461696c732920496e76657374656418007c01284964656e7469747949640000b903013046756e6472616973657249640000a401185469636b65720000a401185469636b6572000018011c42616c616e6365000018011c42616c616e63650001089c416e20696e766573746f7220696e76657374656420696e207468652066756e647261697365722e850128496e766573746f722c2066756e647261697365725f69642c206f66666572696e6720746f6b656e2c20726169736520746f6b656e2c206f66666572696e675f746f6b656e5f616d6f756e742c2072616973655f746f6b656e5f616d6f756e74294046756e6472616973657246726f7a656e08007c01284964656e7469747949640000b903013046756e64726169736572496400020874412066756e6472616973657220686173206265656e2066726f7a656e2e68284167656e74204449442c2066756e64726169736572206964294846756e64726169736572556e66726f7a656e08007c01284964656e7469747949640000b903013046756e6472616973657249640003087c412066756e6472616973657220686173206265656e20756e66726f7a656e2e68284167656e74204449442c2066756e64726169736572206964296046756e6472616973657257696e646f774d6f64696669656418003d0201204576656e744469640000b903013046756e64726169736572496400002001184d6f6d656e740000f801384f7074696f6e3c4d6f6d656e743e00002001184d6f6d656e740000f801384f7074696f6e3c4d6f6d656e743e00040898412066756e647261697365722077696e646f7720686173206265656e206d6f6469666965642e0901284167656e74204449442c2066756e647261697365722069642c206f6c645f73746172742c206f6c645f656e642c206e65775f73746172742c206e65775f656e64294046756e64726169736572436c6f73656408007c01284964656e7469747949640000b903013046756e64726169736572496400050878412066756e6472616973657220686173206265656e2073746f707065642e68284167656e74204449442c2066756e6472616973657220696429085c4576656e747320666f722074686973206d6f64756c652e00b903082870616c6c65745f73746f3046756e6472616973657249640000040020010c7536340000bd03082870616c6c65745f73746f3846756e647261697365724e616d650000040028011c5665633c75383e0000c103082870616c6c65745f73746f2846756e6472616973657204184d6f6d656e740120002c011c63726561746f727c01284964656e7469747949640001486f66666572696e675f706f7274666f6c696fdc012c506f7274666f6c696f49640001386f66666572696e675f6173736574a401185469636b657200014472616973696e675f706f7274666f6c696fdc012c506f7274666f6c696f496400013472616973696e675f6173736574a401185469636b65720001147469657273c503014c5665633c46756e64726169736572546965723e00012076656e75655f69648103011c56656e7565496400011473746172742001184d6f6d656e7400010c656e64f801384f7074696f6e3c4d6f6d656e743e000118737461747573cd03014046756e647261697365725374617475730001486d696e696d756d5f696e766573746d656e7418011c42616c616e63650000c503000002c90300c903082870616c6c65745f73746f3846756e647261697365725469657200000c0114746f74616c18011c42616c616e6365000114707269636518011c42616c616e636500012472656d61696e696e6718011c42616c616e63650000cd03082870616c6c65745f73746f4046756e64726169736572537461747573000110104c6976650000001846726f7a656e00010018436c6f7365640002002c436c6f7365644561726c7900030000d103083c70616c6c65745f7472656173757279205261774576656e74041c42616c616e63650118010850547265617375727944697362757273656d656e740c007c01284964656e74697479496400007c01284964656e746974794964000018011c42616c616e63650000088844697362757273656d656e7420746f206120746172676574204964656e746974792e6428746172676574206964656e746974792c20616d6f756e74295454726561737572795265696d62757273656d656e7408007c01284964656e746974794964000018011c42616c616e63650001045c5472656173757279207265696d62757273656d656e742e085c4576656e747320666f722074686973206d6f64756c652e00d503083870616c6c65745f7574696c697479144576656e7400010c404261746368496e7465727275707465640800d903012c4576656e74436f756e74730000dd03011c4572726f72417400000cac4261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792edc496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f72206561636820646973706174636820616e64f474686520696e646578206f6620746865206669727374206661696c696e672064697370617463682061732077656c6c20617320746865206572726f722e5442617463684f7074696d69737469634661696c65640800d903012c4576656e74436f756e74730000e10301305665633c4572726f7241743e00010cac4261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792ecc496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c20616e6429016120766563746f72206f6620616e79206661696c65642064697370617463686573207769746820746865697220696e646963657320616e64206173736f636961746564206572726f722e384261746368436f6d706c657465640400d903012c4576656e74436f756e7473000208c84261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722ed0496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682064697370617463682e0c5c4576656e747320666f722074686973206d6f64756c652e00304576656e747320747970652ed9030000021000dd0300000408106400e103000002dd0300e5031064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731062617365144576656e740001043c556e65787065637465644572726f720400e90301544f7074696f6e3c44697370617463684572726f723e000004e4416e20756e6578706563746564206572726f722068617070656e656420746861742073686f756c6420626520696e766573746967617465642e085c4576656e747320666f722074686973206d6f64756c652e00e90304184f7074696f6e04045401640108104e6f6e6500000010536f6d650400640000010000ed031064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974733c65787465726e616c5f6167656e7473144576656e740001143047726f75704372656174656410003d0201204576656e744469640000a401185469636b6572000019010110414749640000b4015045787472696e7369635065726d697373696f6e7300000c6c416e204167656e742047726f75702077617320637265617465642e00d02843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773207065726d697373696f6e73295c47726f75705065726d697373696f6e735570646174656410003d0201204576656e744469640000a401185469636b6572000019010110414749640000b4015045787472696e7369635065726d697373696f6e7300010ca4416e204167656e742047726f75702773207065726d697373696f6e732077617320757064617465642e00e02843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773206e6577207065726d697373696f6e7329284167656e7441646465640c003d0201204576656e744469640000a401185469636b65720000150101284167656e7447726f757000020c4c416e206167656e74207761732061646465642e00c42843616c6c65722f4167656e74204449442c204167656e742773207469636b65722c204167656e7427732067726f757029304167656e7452656d6f7665640c003d0201204576656e744469640000a401185469636b657200007c01284964656e74697479496400030c54416e206167656e74207761732072656d6f7665642e00a42843616c6c6572204449442c204167656e742773207469636b65722c204167656e74277320444944293047726f75704368616e67656410003d0201204576656e744469640000a401185469636b657200007c01284964656e7469747949640000150101284167656e7447726f757000040c74416e206167656e7427732067726f757020776173206368616e6765642e0015012843616c6c6572204449442c204167656e742773207469636b65722c204167656e742773204449442c20546865206e65772067726f7570206f6620746865206167656e7429085c4576656e747320666f722074686973206d6f64756c652e00f1031064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731c72656c61796572205261774576656e7404244163636f756e744964010001104c417574686f72697a6564506179696e674b657914003d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000020010c75363400000ccc417574686f72697a6174696f6e20676976656e20666f722060706179696e675f6b65796020746f2060757365725f6b6579602e0001012843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20496e697469616c20504f4c5958206c696d69742c204175746820494429444163636570746564506179696e674b65790c003d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e74496400010c50416363657074656420706179696e67206b65792e00882843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294052656d6f766564506179696e674b65790c003d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e74496400020c4c52656d6f76656420706179696e67206b65792e00882843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294455706461746564506f6c79784c696d697414003d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000018011c42616c616e636500030c505570646174656420706f6c7978206c696d69742e0011012843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20504f4c5958206c696d69742c206f6c642072656d61696e696e6720504f4c595829085c4576656e747320666f722074686973206d6f64756c652e00f503083870616c6c65745f72657761726473205261774576656e7404244163636f756e744964010001044049746e526577617264436c61696d656408000001244163636f756e744964000018011c42616c616e63650000045c49746e207265776172642077617320636c61696d65642e085c4576656e747320666f722074686973206d6f64756c652e00f903084470616c6c65745f746573745f7574696c73205261774576656e7404244163636f756e7449640100010c584d6f636b496e766573746f725549444372656174656408007c01284964656e74697479496400002101012c496e766573746f725569640000080d0141206e6577206d6f636b65642060496e766573746f725569646020686173206265656e206372656174656420666f722074686520676976656e204964656e746974792e7428546172676574204449442c204e657720496e766573746f72556964292444696453746174757308007c01284964656e74697479496400000001244163636f756e744964000108e4456d6974732074686520604964656e7469747949646020616e642074686520604163636f756e74496460206f66207468652063616c6c65722e702843616c6c6572204449442c2043616c6c6572206163636f756e7429244364645374617475730c007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e74496400001d010110626f6f6c00020c550153686f777320746865206044494460206173736f63696174656420746f2074686520604163636f756e744964602c20616e64206120666c616720696e646963617465732069662074686174204449442068617320614076616c69642043444420636c61696d2ed828546172676574204449442c20546172676574204163636f756e742c20612076616c69642043444420636c61696d2065786973747329085c4576656e747320666f722074686973206d6f64756c652e00fd0308306672616d655f73797374656d14506861736500010c384170706c7945787472696e736963040010010c7533320000003046696e616c697a6174696f6e00010038496e697469616c697a6174696f6e00020000010400000224000504000002750300090408306672616d655f73797374656d584c61737452756e74696d6555706772616465496e666f0000080130737065635f76657273696f6e0d04014c636f6465633a3a436f6d706163743c7533323e000124737065635f6e616d651104016473705f72756e74696d653a3a52756e74696d65537472696e6700000d0400000610001104000005020015040c306672616d655f73797374656d1870616c6c65741043616c6c0404540001282866696c6c5f626c6f636b040114726174696f9501011c50657262696c6c00000405014120646973706174636820746861742077696c6c2066696c6c2074686520626c6f636b2077656967687420757020746f2074686520676976656e20726174696f2e1872656d61726b04011872656d61726b28011c5665633c75383e000114684d616b6520736f6d65206f6e2d636861696e2072656d61726b2e002823203c7765696768743e202d20604f283129602c23203c2f7765696768743e387365745f686561705f7061676573040114706167657320010c753634000224f853657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e002823203c7765696768743e202d20604f28312960482d20312073746f726167652077726974652e602d2042617365205765696768743a20312e34303520c2b5735c2d203120777269746520746f20484541505f50414745533c2d203120646967657374206974656d2c23203c2f7765696768743e207365745f636f6465040110636f646528011c5665633c75383e0003306453657420746865206e65772072756e74696d6520636f64652e002823203c7765696768743e31012d20604f2843202b2053296020776865726520604360206c656e677468206f662060636f64656020616e642060536020636f6d706c6578697479206f66206063616e5f7365745f636f64656045012d20312063616c6c20746f206063616e5f7365745f636f6465603a20604f28532960202863616c6c73206073705f696f3a3a6d6973633a3a72756e74696d655f76657273696f6e60207768696368206973342020657870656e73697665292e842d20312073746f726167652077726974652028636f64656320604f28432960292e402d203120646967657374206974656d2e282d2031206576656e742e4d0154686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652c206275742067656e6572616c6c7920746869732069732076657279b8657870656e736976652e2057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e2c23203c2f7765696768743e5c7365745f636f64655f776974686f75745f636865636b73040110636f646528011c5665633c75383e000424190153657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e002823203c7765696768743e8c2d20604f2843296020776865726520604360206c656e677468206f662060636f646560842d20312073746f726167652077726974652028636f64656320604f28432960292e402d203120646967657374206974656d2e282d2031206576656e742e550154686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652e2057652077696c6c207472656174207468697320617320612066756c6c48626c6f636b2e2023203c2f7765696768743e5c7365745f6368616e6765735f747269655f636f6e66696704014c6368616e6765735f747269655f636f6e6669674001804f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e0005289c53657420746865206e6577206368616e676573207472696520636f6e66696775726174696f6e2e002823203c7765696768743e202d20604f28312960ac2d20312073746f72616765207772697465206f722064656c6574652028636f64656320604f28312960292ed42d20312063616c6c20746f20606465706f7369745f6c6f67603a20557365732060617070656e6460204150492c20736f204f283129602d2042617365205765696768743a20372e32313820c2b573302d204442205765696768743aa4202020202d205772697465733a204368616e67657320547269652c2053797374656d204469676573742c23203c2f7765696768743e2c7365745f73746f726167650401146974656d73190401345665633c4b657956616c75653e0006206853657420736f6d65206974656d73206f662073746f726167652e002823203c7765696768743e902d20604f2849296020776865726520604960206c656e677468206f6620606974656d7360782d206049602073746f72616765207772697465732028604f28312960292e702d2042617365205765696768743a20302e353638202a206920c2b573642d205772697465733a204e756d626572206f66206974656d732c23203c2f7765696768743e306b696c6c5f73746f726167650401106b657973210401205665633c4b65793e000720744b696c6c20736f6d65206974656d732066726f6d2073746f726167652e002823203c7765696768743ef82d20604f28494b296020776865726520604960206c656e677468206f6620606b6579736020616e6420604b60206c656e677468206f66206f6e65206b6579602d206049602073746f726167652064656c6574696f6e732e6c2d2042617365205765696768743a202e333738202a206920c2b573642d205772697465733a204e756d626572206f66206974656d732c23203c2f7765696768743e2c6b696c6c5f70726566697808011870726566697828010c4b657900011c7375626b65797310010c75333200082c11014b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e0039012a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e6465723d0174686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e002823203c7765696768743ed82d20604f285029602077686572652060506020616d6f756e74206f66206b657973207769746820707265666978206070726566697860602d206050602073746f726167652064656c6574696f6e732e702d2042617365205765696768743a20302e383334202a205020c2b5737c2d205772697465733a204e756d626572206f66207375626b657973202b20312c23203c2f7765696768743e4472656d61726b5f776974685f6576656e7404011872656d61726b28011c5665633c75383e000918a44d616b6520736f6d65206f6e2d636861696e2072656d61726b20616e6420656d6974206576656e742e002823203c7765696768743eb42d20604f28622960207768657265206220697320746865206c656e677468206f66207468652072656d61726b2e282d2031206576656e742e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e19040000021d04001d04000004082828002104000002280025040c306672616d655f73797374656d186c696d69747330426c6f636b5765696768747300000c0128626173655f626c6f636b2001185765696768740001246d61785f626c6f636b2001185765696768740001247065725f636c617373290401845065724469737061746368436c6173733c57656967687473506572436c6173733e000029040c346672616d655f737570706f72741c77656967687473405065724469737061746368436c617373040454012d04000c01186e6f726d616c2d0401045400012c6f7065726174696f6e616c2d040104540001246d616e6461746f72792d0401045400002d040c306672616d655f73797374656d186c696d6974733c57656967687473506572436c6173730000100138626173655f65787472696e7369632001185765696768740001346d61785f65787472696e736963f801384f7074696f6e3c5765696768743e0001246d61785f746f74616cf801384f7074696f6e3c5765696768743e0001207265736572766564f801384f7074696f6e3c5765696768743e000031040c306672616d655f73797374656d186c696d6974732c426c6f636b4c656e677468000004010c6d6178350401545065724469737061746368436c6173733c7533323e000035040c346672616d655f737570706f72741c77656967687473405065724469737061746368436c6173730404540110000c01186e6f726d616c1001045400012c6f7065726174696f6e616c100104540001246d616e6461746f727910010454000039040c346672616d655f737570706f72741c776569676874733c52756e74696d654462576569676874000008011072656164200118576569676874000114777269746520011857656967687400003d04082873705f76657273696f6e3852756e74696d6556657273696f6e00001c0124737065635f6e616d651104013452756e74696d65537472696e67000124696d706c5f6e616d651104013452756e74696d65537472696e67000144617574686f72696e675f76657273696f6e10010c753332000130737065635f76657273696f6e10010c753332000130696d706c5f76657273696f6e10010c753332000110617069734104011c4170697356656300014c7472616e73616374696f6e5f76657273696f6e10010c75333200004104040c436f77040454014504000400450400000045040000024904004904000004084d0410004d0400000308000000080051040c306672616d655f73797374656d1870616c6c6574144572726f720404540001143c496e76616c6964537065634e616d650000081101546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e685370656356657273696f6e4e65656473546f496e63726561736500010841015468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e00020cec4661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e0009014569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e4c4e6f6e44656661756c74436f6d706f73697465000304fc537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e3c4e6f6e5a65726f526566436f756e74000404350154686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e046c4572726f7220666f72207468652053797374656d2070616c6c6574550410346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e646564566563080454015904045300000400610401185665633c543e00005904000004085d0420005d040c4473705f636f6e73656e7375735f626162650c617070185075626c696300000400c101013c737232353531393a3a5075626c6963000061040000025904006504084873705f636f6e73656e7375735f736c6f747310536c6f740000040020010c753634000069040c4473705f636f6e73656e7375735f626162651c64696765737473504e657874436f6e66696744657363726970746f72000104085631080104636d040128287536342c2075363429000134616c6c6f7765645f736c6f747371040130416c6c6f776564536c6f7473000100006d04000004082020007104084473705f636f6e73656e7375735f6261626530416c6c6f776564536c6f747300010c305072696d617279536c6f7473000000745072696d617279416e645365636f6e64617279506c61696e536c6f74730001006c5072696d617279416e645365636f6e64617279565246536c6f747300020000750410346672616d655f737570706f72741c73746f726167652c626f756e6465645f76656328426f756e6465645665630804540104045300000400790401185665633c543e0000790400000204007d0404184f7074696f6e04045401040108104e6f6e6500000010536f6d6504000400000100008104084473705f636f6e73656e7375735f62616265584261626545706f6368436f6e66696775726174696f6e0000080104636d040128287536342c2075363429000134616c6c6f7765645f736c6f747371040130416c6c6f776564536c6f7473000085040c2c70616c6c65745f626162651870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f6689040184426f783c45717569766f636174696f6e50726f6f663c543a3a4865616465723e3e00013c6b65795f6f776e65725f70726f6f6695040140543a3a4b65794f776e657250726f6f6600001009015265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667905017468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f660d01616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c306265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f6689040184426f783c45717569766f636174696f6e50726f6f663c543a3a4865616465723e3e00013c6b65795f6f776e65725f70726f6f6695040140543a3a4b65794f776e657250726f6f6600012009015265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667905017468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f660d01616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c306265207265706f727465642e0d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e48706c616e5f636f6e6669675f6368616e6765040118636f6e666967690401504e657874436f6e66696744657363726970746f720002105d01506c616e20616e2065706f636820636f6e666967206368616e67652e205468652065706f636820636f6e666967206368616e6765206973207265636f7264656420616e642077696c6c20626520656e6163746564206f6e5101746865206e6578742063616c6c20746f2060656e6163745f65706f63685f6368616e6765602e2054686520636f6e6669672077696c6c20626520616374697661746564206f6e652065706f63682061667465722e59014d756c7469706c652063616c6c7320746f2074686973206d6574686f642077696c6c207265706c61636520616e79206578697374696e6720706c616e6e656420636f6e666967206368616e6765207468617420686164546e6f74206265656e20656e6163746564207965742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e8904084873705f636f6e73656e7375735f736c6f74734445717569766f636174696f6e50726f6f660818486561646572018d04084964015d04001001206f6666656e6465725d0401084964000110736c6f7465040110536c6f7400013066697273745f6865616465728d0401184865616465720001347365636f6e645f6865616465728d04011848656164657200008d04102873705f72756e74696d651c67656e65726963186865616465721848656164657208184e756d626572011010486173680191040014012c706172656e745f68617368240130486173683a3a4f75747075740001186e756d6265720d0401184e756d62657200012873746174655f726f6f74240130486173683a3a4f757470757400013c65787472696e736963735f726f6f74240130486173683a3a4f75747075740001186469676573742c01504469676573743c486173683a3a4f75747075743e000091040c2873705f72756e74696d65187472616974732c426c616b6554776f323536000000009504082873705f73657373696f6e3c4d656d6265727368697050726f6f6600000c011c73657373696f6e10013053657373696f6e496e646578000128747269655f6e6f646573210401305665633c5665633c75383e3e00013c76616c696461746f725f636f756e7410013856616c696461746f72436f756e74000099040c2c70616c6c65745f626162651870616c6c6574144572726f7204045400010c60496e76616c696445717569766f636174696f6e50726f6f660000043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c69644b65794f776e65727368697050726f6f66000104310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400020415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a0909099d040c4070616c6c65745f74696d657374616d701870616c6c65741043616c6c0404540001040c73657404010c6e6f77a1040124543a3a4d6f6d656e7400004054536574207468652063757272656e742074696d652e005501546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6ed470686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e0041015468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e742073706563696669656420627940604d696e696d756d506572696f64602e00d4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e002823203c7765696768743e31012d20604f2831296020284e6f7465207468617420696d706c656d656e746174696f6e73206f6620604f6e54696d657374616d7053657460206d75737420616c736f20626520604f283129602961012d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202862656361757365206f6620604469645570646174653a3a74616b656020696e402020606f6e5f66696e616c697a656029d42d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f736574602e204d75737420626520604f283129602e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ea1040000062000a5040000040c00181d0100a9040c3870616c6c65745f696e64696365731870616c6c65741043616c6c04045400011414636c61696d040114696e64657810013c543a3a4163636f756e74496e6465780000489841737369676e20616e2070726576696f75736c7920756e61737369676e656420696e6465782e00dc5061796d656e743a20604465706f736974602069732072657365727665642066726f6d207468652073656e646572206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e00f02d2060696e646578603a2074686520696e64657820746f20626520636c61696d65642e2054686973206d757374206e6f7420626520696e207573652e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e602d204f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e207472616e7366657208010c6e6577000130543a3a4163636f756e744964000114696e64657810013c543a3a4163636f756e74496e6465780001505d0141737369676e20616e20696e64657820616c7265616479206f776e6564206279207468652073656e64657220746f20616e6f74686572206163636f756e742e205468652062616c616e6365207265736572766174696f6eb86973206566666563746976656c79207472616e7366657272656420746f20746865206e6577206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0025012d2060696e646578603a2074686520696e64657820746f2062652072652d61737369676e65642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e5d012d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e642d204f6e65207472616e73666572206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743ae02020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e7429e42020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e74292c23203c2f7765696768743e1066726565040114696e64657810013c543a3a4163636f756e74496e646578000248944672656520757020616e20696e646578206f776e6564206279207468652073656e6465722e005d015061796d656e743a20416e792070726576696f7573206465706f73697420706c6163656420666f722074686520696e64657820697320756e726573657276656420696e207468652073656e646572206163636f756e742e005501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206f776e2074686520696e6465782e000d012d2060696e646578603a2074686520696e64657820746f2062652066726565642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e0084456d6974732060496e646578467265656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e602d204f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e38666f7263655f7472616e736665720c010c6e6577000130543a3a4163636f756e744964000114696e64657810013c543a3a4163636f756e74496e646578000118667265657a651d010110626f6f6c0003545501466f72636520616e20696e64657820746f20616e206163636f756e742e205468697320646f65736e277420726571756972652061206465706f7369742e2049662074686520696e64657820697320616c7265616479e868656c642c207468656e20616e79206465706f736974206973207265696d62757273656420746f206974732063757272656e74206f776e65722e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e00a42d2060696e646578603a2074686520696e64657820746f206265202872652d2961737369676e65642e5d012d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e41012d2060667265657a65603a2069662073657420746f206074727565602c2077696c6c20667265657a652074686520696e64657820736f2069742063616e6e6f74206265207472616e736665727265642e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e782d20557020746f206f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743af42020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e657229f82020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e6572292c23203c2f7765696768743e18667265657a65040114696e64657810013c543a3a4163636f756e74496e6465780004484101467265657a6520616e20696e64657820736f2069742077696c6c20616c7761797320706f696e7420746f207468652073656e646572206163636f756e742e205468697320636f6e73756d657320746865206465706f7369742e005901546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d757374206861766520616c6e6f6e2d66726f7a656e206163636f756e742060696e646578602e00ac2d2060696e646578603a2074686520696e64657820746f2062652066726f7a656e20696e20706c6163652e0088456d6974732060496e64657846726f7a656e60206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e702d20557020746f206f6e6520736c617368206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ead040c3870616c6c65745f696e64696365731870616c6c6574144572726f720404540001142c4e6f7441737369676e65640000048c54686520696e64657820776173206e6f7420616c72656164792061737369676e65642e204e6f744f776e6572000104a454686520696e6465782069732061737369676e656420746f20616e6f74686572206163636f756e742e14496e5573650002047054686520696e64657820776173206e6f7420617661696c61626c652e2c4e6f745472616e73666572000304c854686520736f7572636520616e642064657374696e6174696f6e206163636f756e747320617265206964656e746963616c2e245065726d616e656e74000404d054686520696e646578206973207065726d616e656e7420616e64206d6179206e6f742062652066726565642f6368616e6765642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909b104000002b50400b504084470616c6c65745f617574686f727368697038556e636c65456e7472794974656d0c2c426c6f636b4e756d62657201101048617368012418417574686f72010001083c496e636c7573696f6e486569676874040010012c426c6f636b4e756d62657200000014556e636c6508002401104861736800000d0101384f7074696f6e3c417574686f723e00010000b9040c4470616c6c65745f617574686f72736869701870616c6c65741043616c6c040454000104287365745f756e636c65730401286e65775f756e636c6573bd0401385665633c543a3a4865616465723e0000046050726f76696465206120736574206f6620756e636c65732e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ebd040000028d0400c1040c4470616c6c65745f617574686f72736869701870616c6c6574144572726f7204045400011c48496e76616c6964556e636c65506172656e740000048854686520756e636c6520706172656e74206e6f7420696e2074686520636861696e2e40556e636c6573416c726561647953657400010480556e636c657320616c72656164792073657420696e2074686520626c6f636b2e34546f6f4d616e79556e636c657300020440546f6f206d616e7920756e636c65732e3047656e65736973556e636c650003045454686520756e636c652069732067656e657369732e30546f6f48696768556e636c650004047c54686520756e636c6520697320746f6f206869676820696e20636861696e2e50556e636c65416c7265616479496e636c756465640005047854686520756e636c6520697320616c726561647920696e636c756465642e204f6c64556e636c65000604b454686520756e636c652069736e277420726563656e7420656e6f75676820746f20626520696e636c756465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909c504000002c90400c904083c70616c6c65745f62616c616e6365732c42616c616e63654c6f636b041c42616c616e63650118000c010869644d0401384c6f636b4964656e746966696572000118616d6f756e7418011c42616c616e636500011c726561736f6e73cd04011c526561736f6e730000cd041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e6365731c526561736f6e7300010c0c466565000000104d6973630001000c416c6c00020000d104083c70616c6c65745f62616c616e6365731043616c6c040454000118207472616e7366657208011064657374d504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565d101011c42616c616e6365000058d45472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e000501607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e1d0149742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e001501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e002823203c7765696768743e2d012d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72c82020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e65012d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e004852656c617465642066756e6374696f6e733a004d0120202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e290120202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c206361757365d0202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e842d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d41012d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429dc2d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e487472616e736665725f776974685f6d656d6f0c011064657374d504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565d101011c42616c616e63650001106d656d6f8001304f7074696f6e3c4d656d6f3e000120fc5472616e7366657220746865206e61746976652063757272656e63792077697468207468652068656c70206f66206964656e74696669657220737472696e67ec746869732066756e6374696f6e616c6974792063616e2068656c7020746f20646966666572656e746961746520746865207472616e73666572732e002823203c7765696768743e41012d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429dc2d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e906465706f7369745f626c6f636b5f7265776172645f726573657276655f62616c616e636504011476616c7565d101011c42616c616e6365000204dc4d6f766520736f6d6520504f4c59582066726f6d2062616c616e6365206f662073656c6620746f2062616c616e6365206f66204252522e2c7365745f62616c616e63650c010c77686fd504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263650001206e65775f66726565d101011c42616c616e63650001306e65775f7265736572766564d101011c42616c616e636500031890536574207468652062616c616e636573206f66206120676976656e206163636f756e742e001d01546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c0501616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e00b0546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e38666f7263655f7472616e736665720c0118736f75726365d504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011064657374d504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565d101011c42616c616e636500041c4d0145786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d6179206265287370656369666965642e002823203c7765696768743e3d012d2053616d65206173207472616e736665722c20627574206164646974696f6e616c207265616420616e6420777269746520626563617573652074686520736f75726365206163636f756e742069738c20206e6f7420617373756d656420746f20626520696e20746865206f7665726c61792e2c23203c2f7765696768743e506275726e5f6163636f756e745f62616c616e6365040118616d6f756e7418011c42616c616e636500050429014275726e732074686520676976656e20616d6f756e74206f6620746f6b656e732066726f6d207468652063616c6c6572277320667265652c20756e6c6f636b65642062616c616e63652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ed5040c2873705f72756e74696d65306d756c746961646472657373304d756c74694164647265737308244163636f756e7449640100304163636f756e74496e6465780110011408496404000001244163636f756e74496400000014496e64657804000d0401304163636f756e74496e6465780001000c526177040028011c5665633c75383e0002002441646472657373333204000401205b75383b2033325d000300244164647265737332300400fd0101205b75383b2032305d00040000d904083c70616c6c65745f62616c616e636573144572726f72040454000114544c69717569646974795265737472696374696f6e73000004c44163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c204f766572666c6f7700010470476f7420616e206f766572666c6f7720616674657220616464696e674c496e73756666696369656e7442616c616e63650002047442616c616e636520746f6f206c6f7720746f2073656e642076616c7565484578697374656e7469616c4465706f736974000304e856616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369744852656365697665724364644d697373696e6700040488526563656976657220646f6573206e6f74206861766520612076616c69642043444400dd040c3473705f61726974686d657469632c66697865645f706f696e742446697865645531323800000400180110753132380000e104086870616c6c65745f7472616e73616374696f6e5f7061796d656e742052656c6561736573000108245631416e6369656e7400000008563200010000e504000002e90400e9040c346672616d655f737570706f72741c7765696768747358576569676874546f466565436f656666696369656e74041c42616c616e6365011800100134636f6566665f696e746567657218011c42616c616e6365000128636f6566665f667261639501011c50657262696c6c0001206e656761746976651d010110626f6f6c00011864656772656508010875380000ed040c4c706f6c796d6573685f7072696d697469766573206964656e74697479204964656e7469747904244163636f756e74496401000008012c7072696d6172795f6b65790001244163636f756e7449640001387365636f6e646172795f6b657973f10401705665633c5365636f6e646172794b65793c4163636f756e7449643e3e0000f104000002f50400f5040c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579305365636f6e646172794b657904244163636f756e7449640100000801187369676e65729801505369676e61746f72793c4163636f756e7449643e00012c7065726d697373696f6e739c012c5065726d697373696f6e730000f90400000408fd04010500fd040c3c70616c6c65745f6964656e746974791474797065732c436c61696d3173744b657900000801187461726765747c01284964656e746974794964000128636c61696d5f747970659d020124436c61696d54797065000001050c3c70616c6c65745f6964656e746974791474797065732c436c61696d326e644b657900000801186973737565727c01284964656e74697479496400011473636f7065050501344f7074696f6e3c53636f70653e0000050504184f7074696f6e0404540101010108104e6f6e6500000010536f6d650400010100000100000905000004089820000d050c4c706f6c796d6573685f7072696d69746976657334617574686f72697a6174696f6e34417574686f72697a6174696f6e08244163636f756e7449640100184d6f6d656e74012000100148617574686f72697a6174696f6e5f6461746111010170417574686f72697a6174696f6e446174613c4163636f756e7449643e000134617574686f72697a65645f62797c01284964656e746974794964000118657870697279f801384f7074696f6e3c4d6f6d656e743e00011c617574685f696420010c75363400001105000004087c20001505083c70616c6c65745f6964656e746974791c56657273696f6e00000400080108753800001905083c70616c6c65745f6964656e746974791043616c6c040454000158406364645f72656769737465725f6469640801387461726765745f6163636f756e74000130543a3a4163636f756e7449640001387365636f6e646172795f6b657973f104017c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e00002cb8526567697374657220607461726765745f6163636f756e746020776974682061206e6577204964656e746974792e002423204661696c75726545012d20606f726967696e602068617320746f206265206120616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792ef42d2045787465726e616c207365636f6e64617279206b6579732063616e206265206c696e6b656420746f206a757374206f6e65206964656e746974792e00202320576569676874c060375f3030305f3030305f303030202b203630305f303030202a207365636f6e646172795f6b6579732e6c656e28296054696e76616c69646174655f6364645f636c61696d730c010c6364647c01284964656e74697479496400013064697361626c655f66726f6d200124543a3a4d6f6d656e74000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001102101496e76616c69646174657320616e7920636c61696d2067656e6572617465642062792060636464602066726f6d206064697361626c655f66726f6d602074696d657374616d70732e009c596f752063616e20616c736f20646566696e6520616e2065787069726174696f6e2074696d652c6d0177686963682077696c6c20696e76616c696461746520616c6c20636c61696d732067656e657261746564206279207468617420606364646020616e642072656d6f766520697420617320434444206d656d6265722067726f75702e5472656d6f76655f7365636f6e646172795f6b6579730401447369676e6572735f746f5f72656d6f7665f001705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e00021cd452656d6f76657320737065636966696564207365636f6e64617279206b657973206f662061204449442069662070726573656e742e002423204661696c757265a049742063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722e00202320576569676874c0603935305f3030305f303030202b2036305f303030202a207369676e6572735f746f5f72656d6f76652e6c656e282960486163636570745f7072696d6172795f6b6579080140726f746174696f6e5f617574685f696420010c7536340001506f7074696f6e616c5f6364645f617574685f6964f8012c4f7074696f6e3c7536343e000334650143616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e6501746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f766564250174686973206368616e676520286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e005d015468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f7264756e6c696e6b656420746f20616e79206964656e746974792e005d01446966666572732066726f6d20726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727920696e20746861742069742077696c6c20756e6c696e6b20746865206f6c64207072696d617279206b6579a4696e7374656164206f66206c656176696e672069742061732061207365636f6e64617279206b65792e002c2320417267756d656e74731d012a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e42a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f7669646572986368616e67655f6364645f726571756972656d656e745f666f725f6d6b5f726f746174696f6e040134617574685f72657175697265641d010110626f6f6c00041435015365742069662043444420617574686f72697a6174696f6e20697320726571756972656420666f72207570646174696e67207072696d617279206b6579206f6620616e206964656e746974792e7843616c6c61626c652076696120726f6f742028676f7665726e616e636529002c2320417267756d656e7473cc2a2060617574685f7265717569726564602043444420417574686f72697a6174696f6e207265717569726564206f72206e6f74506a6f696e5f6964656e746974795f61735f6b657904011c617574685f696420010c753634000504904a6f696e20616e206964656e746974792061732061207365636f6e64617279206b65792e546c656176655f6964656e746974795f61735f6b65790006048c4c6561766520746865207365636f6e64617279206b65792773206964656e746974792e246164645f636c61696d0c01187461726765747c01284964656e746974794964000114636c61696dfc0114436c61696d000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e00070cc4416464732061206e657720636c61696d207265636f7264206f7220656469747320616e206578697374696e67206f6e652e00a84f6e6c792063616c6c6564206279206469645f6973737565722773207365636f6e64617279206b65792e307265766f6b655f636c61696d0801187461726765747c01284964656e746974794964000114636c61696dfc0114436c61696d000804944d61726b73207468652073706563696669656420636c61696d206173207265766f6b65642e607365745f7065726d697373696f6e5f746f5f7369676e65720801187369676e657298015c5369676e61746f72793c543a3a4163636f756e7449643e0001147065726d739c012c5065726d697373696f6e7300090cc853657473207065726d697373696f6e7320666f7220616e20737065636966696320607461726765745f6b657960206b65792e0035014f6e6c7920746865207072696d617279206b6579206f6620616e206964656e746974792069732061626c6520746f20736574207365636f6e64617279206b6579207065726d697373696f6e732e7c6c65676163795f7365745f7065726d697373696f6e5f746f5f7369676e65720801187369676e657298015c5369676e61746f72793c543a3a4163636f756e7449643e00012c7065726d697373696f6e731d0501444c65676163795065726d697373696f6e73000a0c4501546869732066756e6374696f6e206973206120776f726b61726f756e6420666f722068747470733a2f2f6769746875622e636f6d2f706f6c6b61646f742d6a732f617070732f6973737565732f33363332d449742073657473207065726d697373696f6e7320666f7220616e20737065636966696320607461726765745f6b657960206b65792e35014f6e6c7920746865207072696d617279206b6579206f6620616e206964656e746974792069732061626c6520746f20736574207365636f6e64617279206b6579207065726d697373696f6e732e54667265657a655f7365636f6e646172795f6b657973000b10c449742064697361626c657320616c6c207365636f6e64617279206b657973206174206064696460206964656e746974792e002023204572726f7273005c756e667265657a655f7365636f6e646172795f6b657973000c04dc52652d656e61626c657320616c6c207365636f6e64617279206b657973206f66207468652063616c6c65722773206964656e746974792e446164645f617574686f72697a6174696f6e0c011874617267657498015c5369676e61746f72793c543a3a4163636f756e7449643e000110646174611101017c417574686f72697a6174696f6e446174613c543a3a4163636f756e7449643e000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e000d04584164647320616e20617574686f72697a6174696f6e2e5072656d6f76655f617574686f72697a6174696f6e0c011874617267657498015c5369676e61746f72793c543a3a4163636f756e7449643e00011c617574685f696420010c7536340001445f617574685f6973737565725f706179731d010110626f6f6c000e086452656d6f76657320616e20617574686f72697a6174696f6e2e75015f617574685f6973737565725f706179732064657465726d696e657320776865746865722074686520697373756572206f662074686520617574686f7269736174696f6e207061797320746865207472616e73616374696f6e20666565946164645f7365636f6e646172795f6b6579735f776974685f617574686f72697a6174696f6e08013c6164646974696f6e616c5f6b6579733105019c5665633c5365636f6e646172794b657957697468417574683c543a3a4163636f756e7449643e3e000128657870697265735f6174200124543a3a4d6f6d656e74000f30bc49742061646473207365636f6e64617279206b65797320746f20746172676574206964656e7469747920606964602e39014b65797320617265206469726563746c7920616464656420746f206964656e7469747920626563617573652065616368206f66207468656d2068617320616e20617574686f72697a6174696f6e2e0028417267756d656e74733ab0202020202d20606f726967696e60205072696d617279206b6579206f662060696460206964656e746974792eec202020202d2060696460204964656e74697479207768657265206e6577207365636f6e64617279206b6579732077696c6c2062652061646465642e6d01202020202d20606164646974696f6e616c5f6b65797360204e6577207365636f6e64617279206974656d732028616e6420746865697220617574686f72697a6174696f6e20646174612920746f2061646420746f2074617267657434202020206964656e746974792e001c4661696c757265b8202020202d2049742063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722ed0202020202d204b6579732073686f756c642062652061626c6520746f206c696e6b656420746f20616e79206964656e746974792e746164645f696e766573746f725f756e697175656e6573735f636c61696d1001187461726765747c01284964656e746974794964000114636c61696dfc0114436c61696d00011470726f6f663d05014c496e766573746f725a4b50726f6f6644617461000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e00105009014164642060436c61696d3a3a496e766573746f72556e697175656e6573736020636c61696d20666f72206120676976656e20746172676574206964656e746974792e002823203c7765696768743e410120576569676874206f662074686520746869732065787472696e73696320697320646570656e64206f6e2074686520636f6d7075746174696f6e2074686174207573656420746f2076616c69646174652501207468652070726f6f66206f6620636c61696d2c2077686963682077696c6c206265206120636f6e7374616e7420696e646570656e64656e74206f66207573657220696e707574732e2c23203c2f7765696768743e002c2320417267756d656e7473b5012a206f726967696e202d2057686f2070726f76696465732074686520636c61696d20746f2074686520757365723f20496e207468697320636173652c20697427732074686520757365722773206163636f756e742069642061732074686520757365722070726f76696465732ee42a20746172676574202d20604964656e7469747949646020746f2077686963682074686520636c61696d20676574732061737369676e65642eb42a20636c61696d202d2060496e766573746f72556e697175656e6573736020636c61696d2064657461696c732eac2a2070726f6f66202d20546f2076616c6964617465207468652073656c66206174746573746174696f6e2e6c2a20657870697279202d20457870697279206f6620636c61696d2e002023204572726f72732d012a20604469644d757374416c7265616479457869737460205461726765742073686f756c6420616c7265616479206265656e20612070617274206f66207468652065636f73797374656d2e91012a2060436c61696d56617269616e744e6f74416c6c6f77656460205768656e206f726967696e20747279696e6720746f207061737320636c61696d2076617269616e74206f74686572207468616e2060496e766573746f72556e697175656e657373602eb9012a2060436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f77656460205768656e2069737375657220697320646966666572656e742066726f6d20746172676574206f72204344445f494420697320696e76616c696420666f7220676976656e20757365722eac2a2060496e76616c696453636f7065436c61696d205768656e2070726f6f6620697320696e76616c69642eec2a2060496e76616c6964434444496460207768656e20796f7520617265206e6f7420746865206f776e6572206f662074686174204344445f49442e4067635f6164645f6364645f636c61696d0401187461726765747c01284964656e7469747949640011044501417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c20616464732061206e65772063646420636c61696d207265636f72642e4c67635f7265766f6b655f6364645f636c61696d0401187461726765747c01284964656e7469747949640012046901417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c2072656d6f76657320616e206578697374696e672063646420636c61696d207265636f72642e806164645f696e766573746f725f756e697175656e6573735f636c61696d5f76321401187461726765747c01284964656e74697479496400011473636f70650101011453636f7065000114636c61696dfc0114436c61696d00011470726f6f664d05013c53636f7065436c61696d50726f6f66000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e001300547265766f6b655f636c61696d5f62795f696e6465780c01187461726765747c01284964656e746974794964000128636c61696d5f747970659d020124436c61696d5479706500011473636f7065050501344f7074696f6e3c53636f70653e001420f5015265766f6b6573206120737065636966696320636c61696d207573696e6720697473205b436c61696d20556e6971756520496e6465785d282f70616c6c65745f6964656e746974792f696e6465782e68746d6c23636c61696d2d756e697175652d696e6465782920636f6d706f7365642062792060746172676574602c6860636c61696d5f74797065602c20616e64206073636f7065602e000501506c65617365206e6f7465207468617420606f726967696e60206d7573742062652074686520697373756572206f66207468652074617267657420636c61696d2e002023204572726f72734d012d20605461726765744861734e6f6e5a65726f42616c616e6365417453636f7065496460207768656e20796f752074727920746f207265766f6b6520612060496e766573746f72556e697175656e6573732a602501636c61696d2c20616e64206074617267657460206964656e74697479207374696c6c206861766520616e792062616c616e6365206f6e2074686520676976656e206073636f7065602e7c726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727908011c617574685f696420010c7536340001506f7074696f6e616c5f6364645f617574685f6964f8012c4f7074696f6e3c7536343e001538650143616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e6501746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f766564290174686973206368616e67652c20286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e005d015468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f7264756e6c696e6b656420746f20616e79206964656e746974792e006101446966666572732066726f6d206163636570745f7072696d6172795f6b657920696e20746861742069742077696c6c206c6561766520746865206f6c64207072696d617279206b65792061732061207365636f6e6461727985016b6579207769746820746865207065726d697373696f6e732073706563696669656420696e2074686520636f72726573706f6e64696e6720526f746174655072696d6172794b6579546f5365636f6e6461727920617574686f72697a6174696f6ea4696e7374656164206f6620756e6c696e6b696e6720746865206f6c64207072696d617279206b65792e002c2320417267756d656e74731d012a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e42a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f76696465720c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e1d05104c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65790c617069444c65676163795065726d697373696f6e7300000c01146173736574a0014041737365745065726d697373696f6e7300012465787472696e736963210501684c656761637945787472696e7369635065726d697373696f6e73000124706f7274666f6c696fd80150506f7274666f6c696f5065726d697373696f6e7300002105104c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65790c617069684c656761637945787472696e7369635065726d697373696f6e7300000400250501904f7074696f6e3c5665633c4c656761637950616c6c65745065726d697373696f6e733e3e0000250504184f7074696f6e0404540129050108104e6f6e6500000010536f6d6504002905000001000029050000022d05002d05104c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65790c6170695c4c656761637950616c6c65745065726d697373696f6e7300000c012c70616c6c65745f6e616d65bc012850616c6c65744e616d65000114746f74616c1d010110626f6f6c000148646973706174636861626c655f6e616d6573cc01545665633c446973706174636861626c654e616d653e0000310500000235050035051064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479505365636f6e646172794b6579576974684175746804244163636f756e7449640100000801347365636f6e646172795f6b657994015c5365636f6e646172794b65793c4163636f756e7449643e000138617574685f7369676e6174757265390501104835313200003905083c7072696d69746976655f7479706573104835313200000400150201205b75383b2036345d00003d05104c706f6c796d6573685f7072696d69746976657354696e766573746f725f7a6b70726f6f665f646174610876314c496e766573746f725a4b50726f6f664461746100000400410501245369676e6174757265000041050c287363686e6f72726b656c107369676e245369676e61747572650000080104524505014c436f6d7072657373656452697374726574746f00010473490501185363616c6172000045050c40637572766532353531395f64616c656b2472697374726574746f4c436f6d7072657373656452697374726574746f000004000401205b75383b2033325d000049050c40637572766532353531395f64616c656b187363616c6172185363616c6172000004011462797465730401205b75383b2033325d00004d050c54636f6e666964656e7469616c5f6964656e7469747930636c61696d5f70726f6f66733c53636f7065436c61696d50726f6f6600000c016470726f6f665f73636f70655f69645f77656c6c666f726d6564510501245369676e617475726500016c70726f6f665f73636f70655f69645f6364645f69645f6d617463685505012c5a6b50726f6f664461746100012073636f70655f69645d05013852697374726574746f506f696e74000051050c54636f6e666964656e7469616c5f6964656e74697479107369676e245369676e61747572650000080104524505014c436f6d7072657373656452697374726574746f00010473490501185363616c6172000055050c54636f6e666964656e7469616c5f6964656e7469747930636c61696d5f70726f6f66732c5a6b50726f6f664461746100000c014c6368616c6c656e67655f726573706f6e736573590501945b5363616c61723b205a4b5f50524f4f465f444154415f4348475f524553504f4e5345535d00016073756274726163745f65787072657373696f6e735f7265735d05013852697374726574746f506f696e74000158626c696e6465645f73636f70655f6469645f686173685d05013852697374726574746f506f696e7400005905000003020000004905005d050c40637572766532353531395f64616c656b2472697374726574746f3852697374726574746f506f696e74000004006105013045647761726473506f696e74000061050c40637572766532353531395f64616c656b1c656477617264733045647761726473506f696e74000010010458650501304669656c64456c656d656e7400010459650501304669656c64456c656d656e740001045a650501304669656c64456c656d656e7400010454650501304669656c64456c656d656e74000065051840637572766532353531395f64616c656b1c6261636b656e641873657269616c0c753634146669656c64384669656c64456c656d656e74353100000400690501205b7536343b20355d000069050000030500000020006d05083c70616c6c65745f6964656e74697479144572726f7204045400018434416c72656164794c696e6b6564000004dc4f6e65207365636f6e64617279206f72207072696d617279206b65792063616e206f6e6c792062656c6f6e6720746f206f6e6520444944584d697373696e6743757272656e744964656e74697479000104ac4d697373696e672063757272656e74206964656e74697479206f6e20746865207472616e73616374696f6e30556e617574686f72697a6564000204bc5369676e61746f7279206973206e6f742070726520617574686f72697a656420627920746865206964656e7469747944496e76616c69644163636f756e744b6579000304a84163636f756e742049642063616e6e6f74206265206578747261637465642066726f6d207369676e65725c556e417574686f72697a656443646450726f76696465720004049c4f6e6c792043444420736572766963652070726f7669646572732061726520616c6c6f7765642e74496e76616c6964417574686f72697a6174696f6e46726f6d4f776e6572000504a0416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865206f776e65722e8c496e76616c6964417574686f72697a6174696f6e46726f6d43646450726f7669646572000604bc416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865204344442070726f76696465722e644e6f7443646450726f76696465724174746573746174696f6e000704b84174746573746174696f6e20776173206e6f7420627920612043444420736572766963652070726f76696465722e70417574686f72697a6174696f6e734e6f74466f7253616d6544696473000804a0417574686f72697a6174696f6e7320617265206e6f7420666f72207468652073616d65204449442e4c4469644d757374416c726561647945786973740009046c54686520444944206d75737420616c72656164792065786973742e8043757272656e744964656e7469747943616e6e6f744265466f72776172646564000a044d0143757272656e74206964656e746974792063616e6e6f7420626520666f727761726465642c206974206973206e6f742061207365636f6e64617279206b6579206f6620746172676574206964656e746974792e50417574686f72697a6174696f6e45787069726564000b049c546865206f6666636861696e20617574686f72697a6174696f6e2068617320657870697265642e385461726765744861734e6f436464000c0480546865207461726765742044494420686173206e6f2076616c6964204344442e6c417574686f72697a6174696f6e4861734265656e5265766f6b6564000d04a8417574686f72697a6174696f6e20686173206265656e206578706c696369746c79207265766f6b65642e74496e76616c6964417574686f72697a6174696f6e5369676e6174757265000e048c416e20696e76616c696420617574686f72697a6174696f6e207369676e61747572652e344b65794e6f74416c6c6f776564000f04d454686973206b6579206973206e6f7420616c6c6f77656420746f2065786563757465206120676976656e206f7065726174696f6e2e344e6f745072696d6172794b657900100461014f6e6c7920746865207072696d617279206b657920697320616c6c6f77656420746f207265766f6b6520616e204964656e74697479205369676e61746f7279206f66662d636861696e20617574686f72697a6174696f6e2e3c446964446f65734e6f7445786973740011045c5468652044494420646f6573206e6f742065786973742e40446964416c72656164794578697374730012045c5468652044494420616c7265616479206578697374732e785365636f6e646172794b657973436f6e7461696e5072696d6172794b6579001304ac546865207365636f6e64617279206b65797320636f6e7461696e20746865207072696d617279206b65792e444661696c6564546f436861726765466565001404a0436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e284e6f74415369676e6572001504d85369676e6572206973206e6f742061207365636f6e64617279206b6579206f66207468652070726f7669646564206964656e746974796c43616e6e6f744465636f64655369676e65724163636f756e744964001604150143616e6e6f7420636f6e7665727420612060543a3a4163636f756e7449646020746f2060416e795369676e61747572653a3a5369676e65723a3a4163636f756e744964602e484d756c746953696748617342616c616e636500170421014d756c74697369672063616e206e6f7420626520756e6c696e6b65642066726f6d20616e206964656e74697479207768696c65206974207374696c6c20686f6c647320504f4c595880436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f7765640018040501436f6e666964656e7469616c2053636f706520636c61696d732063616e20626520616464656420627920616e204964656e7469747920746f2069742d73656c662e44496e76616c696453636f7065436c61696d001904bc4164646974696f6e206f662061206e65772073636f706520636c61696d206765747320696e76616c6964617465642e58436c61696d56617269616e744e6f74416c6c6f776564001a04e454727920746f20616464206120636c61696d2076617269616e74207573696e6720756e2d64657369676e617465642065787472696e7369632e805461726765744861734e6f6e5a65726f42616c616e6365417453636f70654964001b04510154727920746f2064656c6574652074686520495520636c61696d206576656e207768656e20746865207573657220686173206e6f6e207a65726f2062616c616e636520617420676976656e2073636f706549642e6443444449644e6f74556e69717565466f724964656e74697479001c041d0143444449642073686f756c6420626520756e6971756520262073616d652077697468696e20616c6c2063646420636c61696d7320706f737365737365642062792061204449442e30496e76616c69644344444964001d0409014e6f6e2073797374656d61746963204344442070726f7669646572732063616e206e6f74206372656174652064656661756c74206364645f696420636c61696d732e7c436c61696d416e6450726f6f6656657273696f6e73446f4e6f744d61746368001e049c436c61696d20616e642050726f6f662076657273696f6e732061726520646966666572656e742e544163636f756e744b657949734265696e6755736564001f04d0546865206163636f756e74206b6579206973206265696e6720757365642c2069742063616e277420626520756e6c696e6b65642e48437573746f6d53636f7065546f6f4c6f6e670020086c4120637573746f6d2073636f706520697320746f6f206c6f6e672e9c49742063616e206174206d6f737420626520603332602063686172616374657273206c6f6e672e00710500000275050075051064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f757038496e6163746976654d656d62657204184d6f6d656e740120000c010869647c01284964656e74697479496400013864656163746976617465645f61742001184d6f6d656e74000118657870697279f801384f7074696f6e3c4d6f6d656e743e00007905083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001086174f801444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733101013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e7d05083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e0081050c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d651043616c6c0001a41853797374656d0400150401ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53797374656d2c2052756e74696d653e00000010426162650400850401a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426162652c2052756e74696d653e0001002454696d657374616d7004009d0401b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54696d657374616d702c2052756e74696d653e0002001c496e64696365730400a90401b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496e64696365732c2052756e74696d653e00030028417574686f72736869700400b90401bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c417574686f72736869702c2052756e74696d653e0004002042616c616e6365730400d10401b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c42616c616e6365732c2052756e74696d653e000500204964656e746974790400190501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4964656e746974792c2052756e74696d653e0007004c4364645365727669636550726f7669646572730400790501e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4364645365727669636550726f7669646572732c2052756e74696d653e00080044506f6c796d657368436f6d6d69747465650400850501d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f6c796d657368436f6d6d69747465652c2052756e74696d653e0009004c436f6d6d69747465654d656d626572736869700400890501e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6d6d69747465654d656d626572736869702c2052756e74696d653e000a0048546563686e6963616c436f6d6d697474656504008d0501dd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546563686e6963616c436f6d6d69747465652c2052756e74696d653e000b0070546563686e6963616c436f6d6d69747465654d656d626572736869700400910501050273656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546563686e6963616c436f6d6d69747465654d656d626572736869702c2052756e74696d653e000c004055706772616465436f6d6d69747465650400950501d50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c55706772616465436f6d6d69747465652c2052756e74696d653e000d006855706772616465436f6d6d69747465654d656d626572736869700400990501fd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c55706772616465436f6d6d69747465654d656d626572736869702c2052756e74696d653e000e00204d756c746953696704009d0501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d756c74695369672c2052756e74696d653e000f00184272696467650400a10501ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4272696467652c2052756e74696d653e0010001c5374616b696e670400b10501b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5374616b696e672c2052756e74696d653e0011001c53657373696f6e0400a50601b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53657373696f6e2c2052756e74696d653e0013001c4772616e6470610400b10601b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4772616e6470612c2052756e74696d653e00150020496d4f6e6c696e650400dd0601b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496d4f6e6c696e652c2052756e74696d653e001700105375646f0400fd0601a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5375646f2c2052756e74696d653e0019001441737365740400010701a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c41737365742c2052756e74696d653e001a004c4361706974616c446973747269627574696f6e04001d0701e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4361706974616c446973747269627574696f6e2c2052756e74696d653e001b0028436865636b706f696e740400250701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436865636b706f696e742c2052756e74696d653e001c0044436f6d706c69616e63654d616e6167657204002d0701d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6d706c69616e63654d616e616765722c2052756e74696d653e001d003c436f72706f72617465416374696f6e0400310701d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f72706f72617465416374696f6e2c2052756e74696d653e001e003c436f72706f7261746542616c6c6f740400450701d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f72706f7261746542616c6c6f742c2052756e74696d653e001f0010506970730400490701a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506970732c2052756e74696d653e00210024506f7274666f6c696f0400590701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f7274666f6c696f2c2052756e74696d653e0022002c50726f746f636f6c4665650400650701c10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50726f746f636f6c4665652c2052756e74696d653e002300245363686564756c657204006d0701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5363686564756c65722c2052756e74696d653e00240028536574746c656d656e740400750701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c536574746c656d656e742c2052756e74696d653e00250028537461746973746963730400890701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c537461746973746963732c2052756e74696d653e0026000c53746f04008d0701a10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53746f2c2052756e74696d653e0027002054726561737572790400a10701b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54726561737572792c2052756e74696d653e0028001c5574696c6974790400ad0701b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5574696c6974792c2052756e74696d653e00290010426173650400b90701a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426173652c2052756e74696d653e002a003845787465726e616c4167656e74730400bd0701cd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c45787465726e616c4167656e74732c2052756e74696d653e002b001c52656c617965720400c10701b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c52656c617965722c2052756e74696d653e002c001c526577617264730400c50701b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c526577617264732c2052756e74696d653e002d0024546573745574696c730400cd0701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546573745574696c732c2052756e74696d653e003200008505084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279450101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f76651d010110626f6f6c00011063616c6c81050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f76651d010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e8905083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001086174f801444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733101013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e8d05084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279450101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f76651d010110626f6f6c00011063616c6c81050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f76651d010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e9105083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001086174f801444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733101013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e9505084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279450101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f76651d010110626f6f6c00011063616c6c81050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f76651d010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e9905083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001086174f801444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733101013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e9d05083c70616c6c65745f6d756c74697369671043616c6c04045400014c3c6372656174655f6d756c746973696708011c7369676e657273f001705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000134736967735f726571756972656420010c75363400001448437265617465732061206d756c7469736967002c2320417267756d656e7473a5012a20607369676e65727360202d205369676e657273206f6620746865206d756c7469736967202854686579206e65656420746f2061636365707420617574686f72697a6174696f6e206265666f72652074686579206172652061637475616c6c79206164646564292e19012a2060736967735f726571756972656460202d204e756d626572206f66207369677320726571756972656420746f2070726f636573732061206d756c74692d7369672074782e986372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6964656e746974791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616c81050140426f783c543a3a50726f706f73616c3e000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f73651d010110626f6f6c0001203d01437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e846372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6b65791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616c81050140426f783c543a3a50726f706f73616c3e000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f73651d010110626f6f6c0002203d01437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e6c6372656174655f70726f706f73616c5f61735f6964656e746974791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616c81050140426f783c543a3a50726f706f73616c3e000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f73651d010110626f6f6c0003206c437265617465732061206d756c74697369672070726f706f73616c002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e586372656174655f70726f706f73616c5f61735f6b65791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616c81050140426f783c543a3a50726f706f73616c3e000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f73651d010110626f6f6c0004206c437265617465732061206d756c74697369672070726f706f73616c002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4c617070726f76655f61735f6964656e746974790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c753634000518e4417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea42a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e38617070726f76655f61735f6b65790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340006183101417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea42a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4872656a6563745f61735f6964656e746974790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c753634000718e052656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea02a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e3472656a6563745f61735f6b65790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340008182d0152656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea02a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e886163636570745f6d756c74697369675f7369676e65725f61735f6964656e7469747904011c617574685f696420010c7536340009100d01416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206964656e746974792e002c2320417267756d656e7473ac2a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e746163636570745f6d756c74697369675f7369676e65725f61735f6b657904011c617574685f696420010c753634000a102901416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206b657920284163636f756e744964292e002c2320417267756d656e7473ac2a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e4c6164645f6d756c74697369675f7369676e65720401187369676e657298015c5369676e61746f72793c543a3a4163636f756e7449643e000b102901416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e002c2320417267756d656e7473782a20607369676e657260202d205369676e61746f727920746f206164642e5872656d6f76655f6d756c74697369675f7369676e65720401187369676e657298015c5369676e61746f72793c543a3a4163636f756e7449643e000c103d0152656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e002c2320417267756d656e7473842a20607369676e657260202d205369676e61746f727920746f2072656d6f76652e806164645f6d756c74697369675f7369676e6572735f7669615f63726561746f720801206d756c7469736967000130543a3a4163636f756e74496400011c7369676e657273f001705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000d244501416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865246d756c74697369672e002c2320417267756d656e74739c2a20606d756c746973696760202d2041646472657373206f6620746865206d756c746920736967842a20607369676e65727360202d205369676e61746f7269657320746f206164642e00202320576569676874a4603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e2829608c72656d6f76655f6d756c74697369675f7369676e6572735f7669615f63726561746f720801206d756c7469736967000130543a3a4163636f756e74496400011c7369676e657273f001705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000e248c52656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672ef054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865206d756c74697369672e002c2320417267756d656e74739c2a20606d756c746973696760202d2041646472657373206f6620746865206d756c74697369672e902a20607369676e65727360202d205369676e61746f7269657320746f2072656d6f76652e00202320576569676874a4603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e282960506368616e67655f736967735f7265717569726564040134736967735f726571756972656420010c753634000f144d014368616e67657320746865206e756d626572206f66207369676e6174757265732072657175697265642062792061206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865406d756c746973696720697473656c662e002c2320417267756d656e7473d82a2060736967735f726571756972656460202d204e6577206e756d626572206f66207265717569726564207369676e6174757265732e506d616b655f6d756c74697369675f7369676e65720401206d756c7469736967000130543a3a4163636f756e7449640010144d01416464732061206d756c74697369672061732061207369676e6572206f662063757272656e7420646964206966207468652063757272656e7420646964206973207468652063726561746f72206f6620746865246d756c74697369672e002c2320417267756d656e7473802a20606d756c746973696760202d206d756c7469207369672061646472657373546d616b655f6d756c74697369675f7072696d6172790801206d756c7469736967000130543a3a4163636f756e7449640001506f7074696f6e616c5f6364645f617574685f6964f8012c4f7074696f6e3c7536343e0011145d01416464732061206d756c746973696720617320746865207072696d617279206b6579206f66207468652063757272656e7420646964206966207468652063757272656e7420444944206973207468652063726561746f72406f6620746865206d756c74697369672e002c2320417267756d656e7473842a20606d756c74695f73696760202d206d756c746920736967206164647265737368657865637574655f7363686564756c65645f70726f706f73616c1001206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340001306d756c74697369675f6469647c01284964656e7469747949640001405f70726f706f73616c5f7765696768742001185765696768740012047101526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20666f7220657865637574696e67207363686564756c6564206d756c74697369672070726f706f73616c2e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ea105083470616c6c65745f6272696467651043616c6c040454000144446368616e67655f636f6e74726f6c6c6572040128636f6e74726f6c6c6572000130543a3a4163636f756e744964000010a04368616e6765732074686520636f6e74726f6c6c6572206163636f756e742061732061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e306368616e67655f61646d696e04011461646d696e000130543a3a4163636f756e744964000110744368616e67657320746865206272696467652061646d696e206b65792e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e3c6368616e67655f74696d656c6f636b04012074696d656c6f636b100138543a3a426c6f636b4e756d626572000210704368616e676573207468652074696d656c6f636b20706572696f642e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e18667265657a650003145d01467265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c65206966206974206973206e6f7420616c72656164792066726f7a656e2e205768656e2074686549016272696467652069732066726f7a656e2c20617474656d70746564207472616e73616374696f6e732067657420706f7374706f6e656420696e7374656164206f662067657474696e672068616e646c65642e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e20756e667265657a650004101101556e667265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c652069662069742069732066726f7a656e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c6368616e67655f6272696467655f6c696d6974080118616d6f756e7418011c42616c616e63650001206475726174696f6e100138543a3a426c6f636b4e756d626572000514684368616e6765732074686520627269646765206c696d6974732e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ea42d20604469766973696f6e42795a65726f6020696620606475726174696f6e60206973207a65726f2e586368616e67655f6272696467655f6578656d707465640401206578656d70746564a505015c5665633c284964656e7469747949642c20626f6f6c293e0006109c4368616e6765732074686520627269646765206c696d6974206578656d70746564206c6973742e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e58666f7263655f68616e646c655f6272696467655f74780401246272696467655f74787901015842726964676554783c543a3a4163636f756e7449643e0007142501466f726365732068616e646c696e672061207472616e73616374696f6e20627920627970617373696e672074686520627269646765206c696d697420616e642074696d656c6f636b2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e21012d20604e6f56616c69644364646020696620606272696467655f74782e726563697069656e746020646f6573206e6f74206861766520612076616c69642043444420636c61696d2e5c62617463685f70726f706f73655f6272696467655f74780401286272696467655f747873ad05016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000824450150726f706f736573206120766563746f72206f6620627269646765207472616e73616374696f6e732e2054686520766563746f722069732070726f63657373656420756e74696c207468652066697273744d0170726f706f73616c2077686963682063617573657320616e206572726f722c20696e207768696368206361736520746865206572726f722069732072657475726e656420616e64207468652072657374206f667070726f706f73616c7320617265206e6f742070726f6365737365642e00242323204572726f7273c82d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e00202320576569676874b0603530305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829604470726f706f73655f6272696467655f74780401246272696467655f74787901015842726964676554783c543a3a4163636f756e7449643e000918490150726f706f736573206120627269646765207472616e73616374696f6e2c20776869636820616d6f756e747320746f206d616b696e672061206d756c74697369672070726f706f73616c20666f72207468655501627269646765207472616e73616374696f6e20696620746865207472616e73616374696f6e206973206e6577206f7220617070726f76696e6720616e206578697374696e672070726f706f73616c20696620746865987472616e73616374696f6e2068617320616c7265616479206265656e2070726f706f7365642e00242323204572726f7273c82d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e4068616e646c655f6272696467655f74780401246272696467655f74787901015842726964676554783c543a3a4163636f756e7449643e000a18c048616e646c657320616e20617070726f76656420627269646765207472616e73616374696f6e2070726f706f73616c2e00242323204572726f727319012d206042616443616c6c65726020696620606f726967696e60206973206e6f74206053656c663a3a636f6e74726f6c6c657260206f7220206053656c663a3a61646d696e602eec2d206054696d656c6f636b656454786020696620746865207472616e73616374696f6e20737461747573206973206054696d656c6f636b6564602e09012d206050726f706f73616c416c726561647948616e646c65646020696620746865207472616e73616374696f6e20737461747573206973206048616e646c6564602e28667265657a655f7478730401286272696467655f747873ad05016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000b2088467265657a657320676976656e20627269646765207472616e73616374696f6e732e8501496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e00202320576569676874b0603430305f3030305f303030202b20325f3030305f303030202a206272696467655f7478732e6c656e28296030756e667265657a655f7478730401286272696467655f747873ad05016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000c2090556e667265657a657320676976656e20627269646765207472616e73616374696f6e732e8501496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e00202320576569676874b0603430305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829606868616e646c655f7363686564756c65645f6272696467655f74780401246272696467655f74787901015842726964676554783c543a3a4163636f756e7449643e000d189901526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f2068616e646c652061207363686564756c65642074696d656c6f636b656420627269646765207472616e73616374696f6e2e002023204572726f7273982d20604261644f726967696e6020696620606f726967696e60206973206e6f7420726f6f742ef82d206050726f706f73616c416c726561647948616e646c656460206966207472616e73616374696f6e20737461747573206973206048616e646c6564602ebc2d206046726f7a656e547860206966207472616e73616374696f6e20737461747573206973206046726f7a656e602e406164645f667265657a655f61646d696e040130667265657a655f61646d696e000130543a3a4163636f756e744964000e104c416464206120667265657a652061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c72656d6f76655f667265657a655f61646d696e040130667265657a655f61646d696e000130543a3a4163636f756e744964000f105852656d6f7665206120667265657a652061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e2872656d6f76655f7478730401286272696467655f747873ad05016c5665633c42726964676554783c543a3a4163636f756e7449643e3e0010148452656d6f766520676976656e20627269646765207472616e73616374696f6e732e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ed02d20604e6f7446726f7a656e60206966206120747820696e20606272696467655f74787360206973206e6f742066726f7a656e2e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ea505000002a90500a905000004087c1d0100ad05000002790100b105083870616c6c65745f7374616b696e671043616c6c04045400018010626f6e640c0128636f6e74726f6c6c6572d504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565d101013042616c616e63654f663c543e0001147061796565b505017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e000058610154616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c80626520746865206163636f756e74207468617420636f6e74726f6c732069742e002d016076616c756560206d757374206265206d6f7265207468616e2074686520606d696e696d756d5f62616c616e636560207370656369666965642062792060543a3a43757272656e6379602e002101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e003c456d6974732060426f6e646564602e002823203c7765696768743ed02d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e1c2d204f2831292e642d20546872656520657874726120444220656e74726965732e004d014e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e65643d01756e6c6573732074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e482d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a2d012d20526561643a20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c2043757272656e74204572612c20486973746f72792044657074682c204c6f636b73dc2d2057726974653a20426f6e6465642c2050617965652c205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e28626f6e645f65787472610401386d61785f6164646974696f6e616cd101013042616c616e63654f663c543e000154610141646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e636520757030666f72207374616b696e672e004d01557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e6101556e6c696b65205b60626f6e64605d206f72205b60756e626f6e64605d20746869732066756e6374696f6e20646f6573206e6f7420696d706f736520616e79206c696d69746174696f6e206f6e2074686520616d6f756e7448746861742063616e2062652061646465642e005d01546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c657220616e64f469742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e003c456d6974732060426f6e646564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e1c2d204f2831292e3c2d204f6e6520444220656e7472792e302d2d2d2d2d2d2d2d2d2d2d2d284442205765696768743a11012d20526561643a2045726120456c656374696f6e205374617475732c20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c204c6f636b73a02d2057726974653a205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e18756e626f6e6404011476616c7565d101013042616c616e63654f663c543e00028051015363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e64fc706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e2101543a3a43757272656e63793a3a6d696e696d756d5f62616c616e636528292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e0045014f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c20796f752063616e2063616c6c206077697468647261775f756e626f6e6465646020746f2061637475616c6c79206d6f7665bc7468652066756e6473206f7574206f66206d616e6167656d656e7420726561647920666f72207472616e736665722e0039014e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d41585f554e4c4f434b494e475f4348554e4b536029390163616e20636f2d657869737473206174207468652073616d652074696d652e20496e207468617420636173652c205b6043616c6c3a3a77697468647261775f756e626f6e646564605d206e656564f8746f2062652063616c6c656420666972737420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e0044456d6974732060556e626f6e646564602e009453656520616c736f205b6043616c6c3a3a77697468647261775f756e626f6e646564605d2e002823203c7765696768743e3d012d20496e646570656e64656e74206f662074686520617267756d656e74732e204c696d697465642062757420706f74656e7469616c6c79206578706c6f697461626c6520636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732e61012d20456163682063616c6c20287265717569726573207468652072656d61696e646572206f662074686520626f6e6465642062616c616e636520746f2062652061626f766520606d696e696d756d5f62616c616e636560296d01202077696c6c2063617573652061206e657720656e74727920746f20626520696e73657274656420696e746f206120766563746f722028604c65646765722e756e6c6f636b696e676029206b65707420696e2073746f726167652e4d012020546865206f6e6c792077617920746f20636c65616e207468652061666f72656d656e74696f6e65642073746f72616765206974656d20697320616c736f20757365722d636f6e74726f6c6c6564207669615820206077697468647261775f756e626f6e646564602e3c2d204f6e6520444220656e7472792e282d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a21012d20526561643a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e744572612c204c6f636b732c205c5b4f726967696e204163636f756e745c5da82d2057726974653a204c6f636b732c204c65646765722c205c5b4f726967696e204163636f756e745c5d243c2f7765696768743e4477697468647261775f756e626f6e6465640401486e756d5f736c617368696e675f7370616e7310010c75333200037c290152656d6f766520616e7920756e6c6f636b6564206368756e6b732066726f6d207468652060756e6c6f636b696e67602071756575652066726f6d206f7572206d616e6167656d656e742e0031015468697320657373656e7469616c6c7920667265657320757020746861742062616c616e636520746f206265207573656420627920746865207374617368206163636f756e7420746f20646f4877686174657665722069742077616e74732e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e0048456d697473206057697468647261776e602e006853656520616c736f205b6043616c6c3a3a756e626f6e64605d2e002823203c7765696768743e51012d20436f756c6420626520646570656e64656e74206f6e2074686520606f726967696e6020617267756d656e7420616e6420686f77206d7563682060756e6c6f636b696e6760206368756e6b732065786973742e410120497420696d706c6965732060636f6e736f6c69646174655f756e6c6f636b656460207768696368206c6f6f7073206f76657220604c65646765722e756e6c6f636b696e67602c207768696368206973f020696e6469726563746c7920757365722d636f6e74726f6c6c65642e20536565205b60756e626f6e64605d20666f72206d6f72652064657461696c2e75012d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732c20796574207468652073697a65206f6620776869636820636f756c64206265206c61726765206261736564206f6e20606c6564676572602ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e3c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0501436f6d706c6578697479204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2072656d6f76651c5570646174653a21012d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c204c6f636b732c205b4f726967696e204163636f756e745da42d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c6564676572144b696c6c3a41012d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c20426f6e6465642c20536c617368696e67205370616e732c205b4f726967696e4420204163636f756e745d2c204c6f636b734d012d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c6420205b4f726967696e204163636f756e745d2c204c6f636b73702d2057726974657320456163683a205370616e536c617368202a205309014e4f54453a2057656967687420616e6e6f746174696f6e20697320746865206b696c6c207363656e6172696f2c20776520726566756e64206f74686572776973652e2c23203c2f7765696768743e2076616c69646174650401147072656673b905013856616c696461746f725072656673000444e44465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e2c2d2d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a8c2d20526561643a2045726120456c656374696f6e205374617475732c204c65646765727c2d2057726974653a204e6f6d696e61746f72732c2056616c696461746f72732c23203c2f7765696768743e206e6f6d696e61746504011c74617267657473c10501a05665633c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e00054c0d014465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e004d01456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e20546869732063616e206f6e6c792062652063616c6c6564207768656e885b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743e2d012d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f662060746172676574736020284e29fc77686963682069732063617070656420617420436f6d7061637441737369676e6d656e74733a3a4c494d495420284d41585f4e4f4d494e4154494f4e53292ed42d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e242d2d2d2d2d2d2d2d2d305765696768743a204f284e29807768657265204e20697320746865206e756d626572206f662074617267657473284442205765696768743ac42d2052656164733a2045726120456c656374696f6e205374617475732c204c65646765722c2043757272656e7420457261802d205772697465733a2056616c696461746f72732c204e6f6d696e61746f72732c23203c2f7765696768743e146368696c6c000644c44465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e502d20436f6e7461696e73206f6e6520726561642ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e202d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a842d20526561643a20457261456c656374696f6e5374617475732c204c65646765727c2d2057726974653a2056616c696461746f72732c204e6f6d696e61746f72732c23203c2f7765696768743e247365745f70617965650401147061796565b505017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e000740b42852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e242d2d2d2d2d2d2d2d2d382d205765696768743a204f283129302d204442205765696768743a48202020202d20526561643a204c656467657248202020202d2057726974653a2050617965652c23203c2f7765696768743e387365745f636f6e74726f6c6c6572040128636f6e74726f6c6c6572d504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263650008408c2852652d297365742074686520636f6e74726f6c6c6572206f6620612073746173682e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e282d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743af02d20526561643a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c6572f42d2057726974653a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c65722c23203c2f7765696768743e4c7365745f76616c696461746f725f636f756e7404010c6e65770d04010c75333200092090536574732074686520696465616c206e756d626572206f662076616c696461746f72732e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e305765696768743a204f2831295857726974653a2056616c696461746f7220436f756e742c23203c2f7765696768743e60696e6372656173655f76616c696461746f725f636f756e740401286164646974696f6e616c0d04010c753332000a1ca8496e6372656d656e74732074686520696465616c206e756d626572206f662076616c696461746f72732e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e8053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e2c23203c2f7765696768743e547363616c655f76616c696461746f725f636f756e74040118666163746f72c505011c50657263656e74000b1cd05363616c652075702074686520696465616c206e756d626572206f662076616c696461746f7273206279206120666163746f722e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e8053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e2c23203c2f7765696768743e686164645f7065726d697373696f6e65645f76616c696461746f720801206964656e746974797c01284964656e746974794964000138696e74656e6465645f636f756e74c905012c4f7074696f6e3c7533323e000c203d01476f7665726e616e636520636f6d6d6974746565206f6e20322f3320726473206d616a6f726974792063616e20696e74726f647563652061206e657720706f74656e7469616c206964656e746974799d01746f2074686520706f6f6c206f66207065726d697373696f6e656420656e7469746965732077686f2063616e2072756e2076616c696461746f72732e205374616b696e67206d6f64756c65207573657320605065726d697373696f6e65644964656e74697479605501746f20656e737572652076616c696461746f7273206861766520636f6d706c65746564204b594220636f6d706c69616e636520616e6420636f6e736964657273207468656d20666f722076616c69646174696f6e2e002c2320417267756d656e7473e82a206f726967696e205265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e882a206964656e746974792056616c696461746f722773204964656e7469747949642e05012a20696e74656e6465645f636f756e74204e6f2e206f662076616c696461746f727320676976656e206964656e7469747920696e74656e647320746f2072756e2e7472656d6f76655f7065726d697373696f6e65645f76616c696461746f720401206964656e746974797c01284964656e746974794964000d1ca90152656d6f766520616e206964656e746974792066726f6d2074686520706f6f6c206f66202877616e6e616265292076616c696461746f72206964656e7469746965732e204566666563747320617265206b6e6f776e20696e20746865206e6578742073657373696f6e2e19015374616b696e67206d6f64756c6520636865636b7320605065726d697373696f6e65644964656e746974796020746f20656e737572652076616c696461746f7273206861766560636f6d706c65746564204b594220636f6d706c69616e6365002c2320417267756d656e7473f02a206f726967696e205265717569726564206f726967696e20666f722072656d6f76696e67206120706f74656e7469616c2076616c696461746f722e882a206964656e746974792056616c696461746f722773204964656e7469747949642e7876616c69646174655f6364645f6578706972795f6e6f6d696e61746f727304011c74617267657473910101445665633c543a3a4163636f756e7449643e000e28a056616c696461746520746865206e6f6d696e61746f727320434444206578706972792074696d652e00f0496620616e206163636f756e742066726f6d206120676976656e20736574206f662061646472657373206973206e6f6d696e6174696e67207468656ed0636865636b2074686520434444206578706972792074696d65206f6620697420616e64206966206974206973206578706972656431017468656e20746865206163636f756e742073686f756c6420626520756e626f6e64656420616e642072656d6f7665642066726f6d20746865206e6f6d696e6174696e672070726f636573732e0024233c7765696768743e982d20446570656e6473206f6e20706173736564206c697374206f66204163636f756e7449642e29012d20446570656e6473206f6e20746865206e6f2e206f6620636c61696d206973737565727320616e206163636f756e7449642068617320666f722074686520434444206578706972792e28233c2f7765696768743e487365745f636f6d6d697373696f6e5f63617004011c6e65775f6361709501011c50657262696c6c000f1421014368616e67657320636f6d6d697373696f6e2072617465207768696368206170706c69657320746f20616c6c2076616c696461746f72732e204f6e6c7920476f7665726e616e6365a8636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e002c2320417267756d656e74738c2a20606e65775f6361706020746865206e657720636f6d6d697373696f6e206361702e587365745f6d696e5f626f6e645f7468726573686f6c640401246e65775f76616c756518013042616c616e63654f663c543e00101401014368616e676573206d696e20626f6e642076616c756520746f206265207573656420696e2076616c696461746528292e204f6e6c7920476f7665726e616e6365a8636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e002c2320417267756d656e7473742a20606e65775f76616c75656020746865206e6577206d696e696d756d34666f7263655f6e6f5f65726173001124ac466f72636520746865726520746f206265206e6f206e6577206572617320696e646566696e6974656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e3c2d204e6f20617267756d656e74732e382d205765696768743a204f283129442d2057726974653a20466f7263654572612c23203c2f7765696768743e34666f7263655f6e65775f6572610012284901466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f6620746865206e6578742073657373696f6e2e20416674657220746869732c2069742077696c6c2062659c726573657420746f206e6f726d616c20286e6f6e2d666f7263656429206265686176696f75722e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e3c2d204e6f20617267756d656e74732e382d205765696768743a204f283129402d20577269746520466f7263654572612c23203c2f7765696768743e447365745f696e76756c6e657261626c6573040134696e76756c6e657261626c6573910101445665633c543a3a4163636f756e7449643e001320c8536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e182d204f285629582d2057726974653a20496e76756c6e657261626c65732c23203c2f7765696768743e34666f7263655f756e7374616b650801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c7533320014280901466f72636520612063757272656e74207374616b657220746f206265636f6d6520636f6d706c6574656c7920756e7374616b65642c20696d6d6564696174656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743ee84f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2062652072656d6f766564b452656164733a20426f6e6465642c20536c617368696e67205370616e732c204163636f756e742c204c6f636b7381015772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c204163636f756e742c204c6f636b736857726974657320456163683a205370616e536c617368202a20532c23203c2f7765696768743e50666f7263655f6e65775f6572615f616c776179730015200101466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f662073657373696f6e7320696e646566696e6974656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e382d205765696768743a204f283129442d2057726974653a20466f7263654572612c23203c2f7765696768743e5463616e63656c5f64656665727265645f736c61736808010c657261100120457261496e646578000134736c6173685f696e6469636573d90301205665633c7533323e0016349443616e63656c20656e6163746d656e74206f66206120646566657272656420736c6173682e00b043616e2062652063616c6c6564206279207468652060543a3a536c61736843616e63656c4f726967696e602e000101506172616d65746572733a2065726120616e6420696e6469636573206f662074686520736c617368657320666f7220746861742065726120746f206b696c6c2e002823203c7765696768743e50436f6d706c65786974793a204f2855202b205329b477697468205520756e6170706c69656420736c6173686573207765696768746564207769746820553d31303030d0616e64205320697320746865206e756d626572206f6620736c61736820696e646963657320746f2062652063616e63656c65642e642d20526561643a20556e6170706c69656420536c6173686573682d2057726974653a20556e6170706c69656420536c61736865732c23203c2f7765696768743e387061796f75745f7374616b65727308013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e6465780017640d01506179206f757420616c6c20746865207374616b65727320626568696e6420612073696e676c652076616c696461746f7220666f7220612073696e676c65206572612e0049012d206076616c696461746f725f73746173686020697320746865207374617368206163636f756e74206f66207468652076616c696461746f722e205468656972206e6f6d696e61746f72732c20757020746f2501202060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602c2077696c6c20616c736f207265636569766520746865697220726577617264732e31012d206065726160206d617920626520616e7920657261206265747765656e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e005501546865206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2e20416e79206163636f756e742063616e2063616c6c20746869732066756e6374696f6e2c206576656e206966746974206973206e6f74206f6e65206f6620746865207374616b6572732e00fc546869732063616e206f6e6c792062652063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743efc2d2054696d6520636f6d706c65786974793a206174206d6f7374204f284d61784e6f6d696e61746f72526577617264656450657256616c696461746f72292ec02d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e2c2d2d2d2d2d2d2d2d2d2d2d19014e20697320746865204e756d626572206f66207061796f75747320666f72207468652076616c696461746f722028696e636c7564696e67207468652076616c696461746f72291c5765696768743a842d205265776172642044657374696e6174696f6e205374616b65643a204f284e29c02d205265776172642044657374696e6174696f6e20436f6e74726f6c6c657220284372656174696e67293a204f284e29284442205765696768743a25012d20526561643a20457261456c656374696f6e5374617475732c2043757272656e744572612c20486973746f727944657074682c204572617356616c696461746f725265776172642c29012020202020202020457261735374616b657273436c69707065642c2045726173526577617264506f696e74732c204572617356616c696461746f725072656673202838206974656d73290d012d205265616420456163683a20426f6e6465642c204c65646765722c2050617965652c204c6f636b732c2053797374656d204163636f756e74202835206974656d7329d42d20577269746520456163683a2053797374656d204163636f756e742c204c6f636b732c204c6564676572202833206974656d73292c23203c2f7765696768743e187265626f6e6404011476616c7565d101013042616c616e63654f663c543e001838dc5265626f6e64206120706f7274696f6e206f6620746865207374617368207363686564756c656420746f20626520756e6c6f636b65642e005101546865206469737061746368206f726967696e206d757374206265207369676e65642062792074686520636f6e74726f6c6c65722c20616e642069742063616e206265206f6e6c792063616c6c6564207768656e885b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ed02d2054696d6520636f6d706c65786974793a204f284c292c207768657265204c20697320756e6c6f636b696e67206368756e6b73902d20426f756e64656420627920604d41585f554e4c4f434b494e475f4348554e4b53602ef02d2053746f72616765206368616e6765733a2043616e277420696e6372656173652073746f726167652c206f6e6c792064656372656173652069742e3c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743afc202020202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c204c6f636b732c205b4f726967696e204163636f756e745db4202020202d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e447365745f686973746f72795f64657074680801446e65775f686973746f72795f64657074680d040120457261496e6465780001485f6572615f6974656d735f64656c657465640d04010c7533320019542d015365742060486973746f72794465707468602076616c75652e20546869732066756e6374696f6e2077696c6c2064656c65746520616e7920686973746f727920696e666f726d6174696f6e7c7768656e2060486973746f727944657074686020697320726564756365642e002c506172616d65746572733a0d012d20606e65775f686973746f72795f6465707468603a20546865206e657720686973746f727920646570746820796f7520776f756c64206c696b6520746f207365742e45012d20606572615f6974656d735f64656c65746564603a20546865206e756d626572206f66206974656d7320746861742077696c6c2062652064656c6574656420627920746869732064697370617463682e4101202020546869732073686f756c64207265706f727420616c6c207468652073746f72616765206974656d7320746861742077696c6c2062652064656c6574656420627920636c656172696e67206f6c64410120202065726120686973746f72792e204e656564656420746f207265706f727420616e2061636375726174652077656967687420666f72207468652064697370617463682e20547275737465642062799c20202060526f6f746020746f207265706f727420616e206163637572617465206e756d6265722e00504f726967696e206d75737420626520726f6f742e002823203c7765696768743edc2d20453a204e756d626572206f6620686973746f7279206465707468732072656d6f7665642c20692e652e203130202d3e2037203d2033382d205765696768743a204f284529302d204442205765696768743a9c202020202d2052656164733a2043757272656e74204572612c20486973746f72792044657074686c202020202d205772697465733a20486973746f72792044657074682d01202020202d20436c6561722050726566697820456163683a20457261205374616b6572732c204572615374616b657273436c69707065642c204572617356616c696461746f7250726566737d01202020202d2057726974657320456163683a204572617356616c696461746f725265776172642c2045726173526577617264506f696e74732c2045726173546f74616c5374616b652c2045726173537461727453657373696f6e496e6465782c23203c2f7765696768743e28726561705f73746173680801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c753332001a3c5d0152656d6f766520616c6c20646174612073747275637475726520636f6e6365726e696e672061207374616b65722f7374617368206f6e6365206974732062616c616e636520697320617420746865206d696e696d756d2e5d015468697320697320657373656e7469616c6c79206571756976616c656e7420746f206077697468647261775f756e626f6e64656460206578636570742069742063616e2062652063616c6c656420627920616e796f6e65f4616e6420746865207461726765742060737461736860206d7573742068617665206e6f2066756e6473206c656674206265796f6e64207468652045442e008c546869732063616e2062652063616c6c65642066726f6d20616e79206f726967696e2e00fc2d20607374617368603a20546865207374617368206163636f756e7420746f20726561702e204974732062616c616e6365206d757374206265207a65726f2e002823203c7765696768743e2101436f6d706c65786974793a204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e73206f6e20746865206163636f756e742e284442205765696768743ad42d2052656164733a205374617368204163636f756e742c20426f6e6465642c20536c617368696e67205370616e732c204c6f636b73a1012d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c205374617368204163636f756e742c204c6f636b73702d2057726974657320456163683a205370616e536c617368202a20532c23203c2f7765696768743e607375626d69745f656c656374696f6e5f736f6c7574696f6e14011c77696e6e657273cd05014c5665633c56616c696461746f72496e6465783e00011c636f6d70616374d1050148436f6d7061637441737369676e6d656e747300011473636f72659d060134456c656374696f6e53636f726500010c657261100120457261496e64657800011073697a65a1060130456c656374696f6e53697a65001bc4e05375626d697420616e20656c656374696f6e20726573756c7420746f2074686520636861696e2e2049662074686520736f6c7574696f6e3a0030312e2069732076616c69642e1101322e206861732061206265747465722073636f7265207468616e206120706f74656e7469616c6c79206578697374696e6720736f6c7574696f6e206f6e20636861696e2e00807468656e2c2069742077696c6c206265205f7075745f206f6e20636861696e2e00a84120736f6c7574696f6e20636f6e7369737473206f662074776f20706965636573206f6620646174613a00f0312e206077696e6e657273603a206120666c617420766563746f72206f6620616c6c207468652077696e6e657273206f662074686520726f756e642e4d01322e206061737369676e6d656e7473603a2074686520636f6d706163742076657273696f6e206f6620616e2061737369676e6d656e7420766563746f72207468617420656e636f6465732074686520656467652c202020776569676874732e001d01426f7468206f66207768696368206d617920626520636f6d7075746564207573696e67205f70687261676d656e5f2c206f7220616e79206f7468657220616c676f726974686d2e00a44164646974696f6e616c6c792c20746865207375626d6974746572206d7573742070726f766964653a00c42d20546865206073636f7265602074686174207468657920636c61696d20746865697220736f6c7574696f6e206861732e004901426f74682076616c696461746f727320616e64206e6f6d696e61746f72732077696c6c20626520726570726573656e74656420627920696e646963657320696e2074686520736f6c7574696f6e2e205468651901696e64696365732073686f756c6420726573706563742074686520636f72726573706f6e64696e6720747970657320285b6056616c696461746f72496e646578605d20616e642d015b604e6f6d696e61746f72496e646578605d292e204d6f72656f7665722c20746865792073686f756c642062652076616c6964207768656e207573656420746f20696e64657820696e746f4d015b60536e617073686f7456616c696461746f7273605d20616e64205b60536e617073686f744e6f6d696e61746f7273605d2e20416e7920696e76616c696420696e6465782077696c6c206361757365207468655d01736f6c7574696f6e20746f2062652072656a65637465642e2054686573652074776f2073746f72616765206974656d73206172652073657420647572696e672074686520656c656374696f6e2077696e646f7720616e64946d6179206265207573656420746f2064657465726d696e652074686520696e64696365732e005c4120736f6c7574696f6e2069732076616c69642069663a00e0302e204974206973207375626d6974746564207768656e205b60457261456c656374696f6e537461747573605d20697320604f70656e602ef4312e2049747320636c61696d65642073636f726520697320657175616c20746f207468652073636f726520636f6d7075746564206f6e2d636861696e2ea8322e2050726573656e74732074686520636f7272656374206e756d626572206f662077696e6e6572732e5101332e20416c6c20696e6465786573206d7573742062652076616c7565206163636f7264696e6720746f2074686520736e617073686f7420766563746f72732e20416c6c20656467652076616c756573206d7573745901202020616c736f20626520636f727265637420616e642073686f756c64206e6f74206f766572666c6f7720746865206772616e756c6172697479206f662074686520726174696f20747970652028692e652e203235363c2020206f722062696c6c696f6e292e0901342e20466f72206561636820656467652c20616c6c2074617267657473206172652061637475616c6c79206e6f6d696e617465642062792074686520766f7465722e68352e2048617320636f72726563742073656c662d766f7465732e00bc4120736f6c7574696f6e732073636f726520697320636f6e736973746564206f66203320706172616d65746572733a006101312e20606d696e207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d6178696d697a65642e6101322e206073756d207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d696e696d697a65642e3d01332e206073756d207b20737570706f72742e746f74616c5e32207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265982020206d696e696d697a65642028746f20656e73757265206c6573732076617269616e636529002823203c7765696768743e1501546865207472616e73616374696f6e20697320617373756d656420746f20626520746865206c6f6e6765737420706174682c20612062657474657220736f6c7574696f6e2ea020202d20496e697469616c20736f6c7574696f6e20697320616c6d6f7374207468652073616d652e410120202d20576f72736520736f6c7574696f6e20697320726574726163656420696e207072652d64697370617463682d636865636b73207768696368207365747320697473206f776e207765696768742e2c23203c2f7765696768743e847375626d69745f656c656374696f6e5f736f6c7574696f6e5f756e7369676e656414011c77696e6e657273cd05014c5665633c56616c696461746f72496e6465783e00011c636f6d70616374d1050148436f6d7061637441737369676e6d656e747300011473636f72659d060134456c656374696f6e53636f726500010c657261100120457261496e64657800011073697a65a1060130456c656374696f6e53697a65001c24bc556e7369676e65642076657273696f6e206f6620607375626d69745f656c656374696f6e5f736f6c7574696f6e602e0059014e6f746520746861742074686973206d757374207061737320746865205b6056616c6964617465556e7369676e6564605d20636865636b207768696368206f6e6c7920616c6c6f7773207472616e73616374696f6e735d0166726f6d20746865206c6f63616c206e6f646520746f20626520696e636c756465642e20496e206f7468657220776f7264732c206f6e6c792074686520626c6f636b20617574686f722063616e20696e636c7564652061647472616e73616374696f6e20696e2074686520626c6f636b2e002823203c7765696768743e84536565205b607375626d69745f656c656374696f6e5f736f6c7574696f6e605d2e2c23203c2f7765696768743e607061796f75745f7374616b6572735f62795f73797374656d08013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e646578001d04210153797374656d2076657273696f6e206f6620607061796f75745f7374616b6572732829602e204f6e6c792062652063616c6c65642062792074686520726f6f74206f726967696e2e6c6368616e67655f736c617368696e675f616c6c6f7765645f666f7204013c736c617368696e675f73776974636899010138536c617368696e67537769746368001e14690153776974636820736c617368696e6720737461747573206f6e20746865206261736973206f6620676976656e2060536c617368696e67537769746368602e2043616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473742a206f726967696e202d204163636f756e744964206f6620726f6f742e01012a20736c617368696e675f737769746368202d20537769746368207573656420746f2073657420746865207461726765747320666f7220736c617368696e672eb07570646174655f7065726d697373696f6e65645f76616c696461746f725f696e74656e6465645f636f756e740801206964656e746974797c01284964656e7469747949640001486e65775f696e74656e6465645f636f756e7410010c753332001f18d05570646174652074686520696e74656e6465642076616c696461746f7220636f756e7420666f72206120676976656e204449442e002c2320417267756d656e747331012a206f726967696e207768696368206d75737420626520746865207265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e842a206964656e7469747920746f2061646420617320612076616c696461746f722ec42a206e65775f696e74656e6465645f636f756e74204e65772076616c7565206f6620696e74656e64656420636f756e742e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652eb505083870616c6c65745f7374616b696e674452657761726444657374696e6174696f6e04244163636f756e74496401000110185374616b656400000014537461736800010028436f6e74726f6c6c65720002001c4163636f756e7404000001244163636f756e74496400030000b905083870616c6c65745f7374616b696e673856616c696461746f7250726566730000080128636f6d6d697373696f6ebd05011c50657262696c6c00011c626c6f636b65641d010110626f6f6c0000bd05000006950100c105000002d50400c5050c3473705f61726974686d65746963287065725f7468696e67731c50657263656e740000040008010875380000c90504184f7074696f6e04045401100108104e6f6e6500000010536f6d650400100000010000cd050000020d0300d105083870616c6c65745f7374616b696e6748436f6d7061637441737369676e6d656e74730000400118766f74657331d50500000118766f74657332e10500000118766f74657333f50500000118766f74657334010600000118766f746573350d0600000118766f74657336190600000118766f74657337250600000118766f74657338310600000118766f746573393d060000011c766f746573313049060000011c766f746573313155060000011c766f746573313261060000011c766f74657331336d060000011c766f746573313479060000011c766f746573313585060000011c766f74657331369106000000d505000002d90500d905000004080d04dd0500dd050000060d0300e105000002e50500e5050000040c0d04e905dd0500e90500000408dd05ed0500ed05000006f10500f1050c3473705f61726974686d65746963287065725f7468696e677318506572553136000004000d03010c7531360000f505000002f90500f9050000040c0d04fd05dd0500fd0500000302000000e90500010600000205060005060000040c0d040906dd0500090600000303000000e905000d0600000211060011060000040c0d041506dd0500150600000304000000e9050019060000021d06001d060000040c0d042106dd0500210600000305000000e90500250600000229060029060000040c0d042d06dd05002d0600000306000000e90500310600000235060035060000040c0d043906dd0500390600000307000000e905003d0600000241060041060000040c0d044506dd0500450600000308000000e9050049060000024d06004d060000040c0d045106dd0500510600000309000000e90500550600000259060059060000040c0d045d06dd05005d060000030a000000e90500610600000265060065060000040c0d046906dd050069060000030b000000e905006d0600000271060071060000040c0d047506dd050075060000030c000000e9050079060000027d06007d060000040c0d048106dd050081060000030d000000e90500850600000289060089060000040c0d048d06dd05008d060000030e000000e90500910600000295060095060000040c0d049906dd050099060000030f000000e905009d06000003030000001800a106083870616c6c65745f7374616b696e6730456c656374696f6e53697a65000008012876616c696461746f7273dd05013856616c696461746f72496e6465780001286e6f6d696e61746f72730d0401384e6f6d696e61746f72496e6465780000a5060c3870616c6c65745f73657373696f6e1870616c6c65741043616c6c040454000108207365745f6b6579730801106b657973a906011c543a3a4b65797300011470726f6f6628011c5665633c75383e000038e453657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b657973602e1d01416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722ec05468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e00d0546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e002823203c7765696768743e11012d20436f6d706c65786974793a20604f283129602e2041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468206f6698202060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642eec2d20446252656164733a20606f726967696e206163636f756e74602c2060543a3a56616c696461746f7249644f66602c20604e6578744b65797360a02d2044625772697465733a20606f726967696e206163636f756e74602c20604e6578744b65797360802d204462526561647320706572206b65792069643a20604b65794f776e657260842d20446257726974657320706572206b65792069643a20604b65794f776e6572602c23203c2f7765696768743e2870757267655f6b657973000140c852656d6f76657320616e792073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c65722e00c05468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e005501546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265205369676e656420616e6420746865206163636f756e74206d757374206265206569746865722062655d01636f6e7665727469626c6520746f20612076616c696461746f72204944207573696e672074686520636861696e2773207479706963616c2061646472657373696e672073797374656d20287468697320757375616c6c7951016d65616e73206265696e67206120636f6e74726f6c6c6572206163636f756e7429206f72206469726563746c7920636f6e7665727469626c6520696e746f20612076616c696461746f722049442028776869636894757375616c6c79206d65616e73206265696e672061207374617368206163636f756e74292e002823203c7765696768743e61012d20436f6d706c65786974793a20604f2831296020696e206e756d626572206f66206b65792074797065732e2041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468a420206f662060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642eec2d20446252656164733a2060543a3a56616c696461746f7249644f66602c20604e6578744b657973602c20606f726967696e206163636f756e7460a02d2044625772697465733a20604e6578744b657973602c20606f726967696e206163636f756e7460842d20446257726974657320706572206b65792069643a20604b65794f776e6572602c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ea9060c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d652c53657373696f6e4b657973000010011c6772616e647061b10101d03c4772616e647061206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000110626162655d0401c43c42616265206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000124696d5f6f6e6c696e65bd0101d43c496d4f6e6c696e65206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300014c617574686f726974795f646973636f76657279ad0601fc3c417574686f72697479446973636f76657279206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c69630000ad060c5873705f617574686f726974795f646973636f766572790c617070185075626c696300000400c101013c737232353531393a3a5075626c69630000b1060c3870616c6c65745f6772616e6470611870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66b50601bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f6695040140543a3a4b65794f776e657250726f6f6600001009015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66b50601bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f6695040140543a3a4b65794f776e657250726f6f6600012409015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e000d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e306e6f74655f7374616c6c656408011464656c6179100138543a3a426c6f636b4e756d62657200016c626573745f66696e616c697a65645f626c6f636b5f6e756d626572100138543a3a426c6f636b4e756d62657200021c19014e6f74652074686174207468652063757272656e7420617574686f7269747920736574206f6620746865204752414e4450412066696e616c697479206761646765742068617325017374616c6c65642e20546869732077696c6c2074726967676572206120666f7263656420617574686f7269747920736574206368616e67652061742074686520626567696e6e696e671d016f6620746865206e6578742073657373696f6e2c20746f20626520656e6163746564206064656c61796020626c6f636b7320616674657220746861742e205468652064656c6179110173686f756c64206265206869676820656e6f75676820746f20736166656c7920617373756d6520746861742074686520626c6f636b207369676e616c6c696e67207468652501666f72636564206368616e67652077696c6c206e6f742062652072652d6f726765642028652e672e203130303020626c6f636b73292e20546865204752414e44504120766f74657273250177696c6c20737461727420746865206e657720617574686f7269747920736574207573696e672074686520676976656e2066696e616c697a656420626c6f636b20617320626173652e584f6e6c792063616c6c61626c6520627920726f6f742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632eb506084c73705f66696e616c6974795f6772616e6470614445717569766f636174696f6e50726f6f660804480124044e0110000801187365745f6964200114536574496400013065717569766f636174696f6eb906014845717569766f636174696f6e3c482c204e3e0000b906084c73705f66696e616c6974795f6772616e6470613045717569766f636174696f6e0804480124044e011001081c507265766f74650400bd060139016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265766f74653c482c204e3e2c0a417574686f726974795369676e61747572653e00000024507265636f6d6d69740400d1060141016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265636f6d6d69743c482c204e3e2c0a417574686f726974795369676e61747572653e00010000bd06084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401b101045601c106045301c50600100130726f756e645f6e756d62657220010c7536340001206964656e74697479b101010849640001146669727374cd06011828562c2053290001187365636f6e64cd06011828562c2053290000c106084066696e616c6974795f6772616e6470611c507265766f74650804480124044e01100008012c7461726765745f68617368240104480001347461726765745f6e756d6265721001044e0000c5060c4c73705f66696e616c6974795f6772616e6470610c617070245369676e617475726500000400c9060148656432353531393a3a5369676e61747572650000c9060c1c73705f636f72651c65643235353139245369676e617475726500000400150201205b75383b2036345d0000cd0600000408c106c50600d106084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401b101045601d506045301c50600100130726f756e645f6e756d62657220010c7536340001206964656e74697479b101010849640001146669727374d906011828562c2053290001187365636f6e64d906011828562c2053290000d506084066696e616c6974795f6772616e64706124507265636f6d6d69740804480124044e01100008012c7461726765745f68617368240104480001347461726765745f6e756d6265721001044e0000d90600000408d506c50600dd060c4070616c6c65745f696d5f6f6e6c696e651870616c6c65741043616c6c04045400010424686561727462656174080124686561727462656174e10601644865617274626561743c543a3a426c6f636b4e756d6265723e0001247369676e6174757265f50601bc3c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e61747572650000242823203c7765696768743e61012d20436f6d706c65786974793a20604f284b202b20452960207768657265204b206973206c656e677468206f6620604b6579736020286865617274626561742e76616c696461746f72735f6c656e2920616e642045206973d820206c656e677468206f6620606865617274626561742e6e6574776f726b5f73746174652e65787465726e616c5f61646472657373608820202d20604f284b29603a206465636f64696e67206f66206c656e67746820604b60ac20202d20604f284529603a206465636f64696e672f656e636f64696e67206f66206c656e6774682060456039012d20446252656164733a2070616c6c65745f73657373696f6e206056616c696461746f7273602c2070616c6c65745f73657373696f6e206043757272656e74496e646578602c20604b657973602c5820206052656365697665644865617274626561747360802d2044625772697465733a2060526563656976656448656172746265617473602c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ee106084070616c6c65745f696d5f6f6e6c696e6524486561727462656174042c426c6f636b4e756d626572011000140130626c6f636b5f6e756d62657210012c426c6f636b4e756d6265720001346e6574776f726b5f7374617465e50601484f70617175654e6574776f726b537461746500013473657373696f6e5f696e64657810013053657373696f6e496e64657800013c617574686f726974795f696e64657810012441757468496e64657800013876616c696461746f72735f6c656e10010c7533320000e5060c1c73705f636f7265206f6666636861696e484f70617175654e6574776f726b5374617465000008011c706565725f6964e90601304f706171756550656572496400014865787465726e616c5f616464726573736573ed0601505665633c4f70617175654d756c7469616464723e0000e906081c73705f636f7265304f70617175655065657249640000040028011c5665633c75383e0000ed06000002f10600f1060c1c73705f636f7265206f6666636861696e3c4f70617175654d756c7469616464720000040028011c5665633c75383e0000f506104070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139245369676e617475726500000400f9060148737232353531393a3a5369676e61747572650000f9060c1c73705f636f72651c73723235353139245369676e617475726500000400150201205b75383b2036345d0000fd06082c70616c6c65745f7375646f1043616c6c040454000110107375646f04011063616c6c81050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000028350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e547375646f5f756e636865636b65645f77656967687408011063616c6c81050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00011c5f776569676874200118576569676874000128350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e2d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b05375646f207573657220746f20737065636966792074686520776569676874206f66207468652063616c6c2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292ecc2d2054686520776569676874206f6620746869732063616c6c20697320646566696e6564206279207468652063616c6c65722e2c23203c2f7765696768743e1c7365745f6b657904010c6e6577d504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365000224710141757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e402d204f6e65204442206368616e67652e2c23203c2f7765696768743e1c7375646f5f617308010c77686fd504018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011063616c6c81050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00032c4d0141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d406120676976656e206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e0107083070616c6c65745f61737365741043616c6c0404540001483c72656769737465725f7469636b65720401187469636b6572a401185469636b657200002405015265676973746572732061206e6577207469636b6572206f7220657874656e64732076616c6964697479206f6620616e206578697374696e67207469636b65722e11014e423a205469636b65722076616c696469747920646f6573206e6f742067657420636172727920666f7277617264207768656e2072656e6577696e67207469636b65722e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e782a20607469636b657260207469636b657220746f2072656769737465722e003423205065726d697373696f6e731c2a204173736574586163636570745f7469636b65725f7472616e7366657204011c617574685f696420010c75363400013068416363657074732061207469636b6572207472616e736665722e002d01436f6e73756d65732074686520617574686f72697a6174696f6e2060617574685f6964602028736565206070616c6c65745f6964656e746974793a3a636f6e73756d655f6175746860292e25014e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292ef82a2060617574685f69646020417574686f72697a6174696f6e204944206f66207469636b6572207472616e7366657220617574686f72697a6174696f6e2e00242323204572726f727369012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f696460206973206e6f7420612076616c6964207469636b6574207472616e7366657220617574686f72697a6174696f6e2e007c6163636570745f61737365745f6f776e6572736869705f7472616e7366657204011c617574685f696420010c753634000218ec546869732066756e6374696f6e206973207573656420746f20616363657074206120746f6b656e206f776e657273686970207472616e736665722e25014e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e2d012a2060617574685f69646020417574686f72697a6174696f6e204944206f662074686520746f6b656e206f776e657273686970207472616e7366657220617574686f72697a6174696f6e2e306372656174655f61737365741c01106e616d650102012441737365744e616d650001187469636b6572a401185469636b6572000124646976697369626c651d010110626f6f6c00012861737365745f74797065e901012441737365745479706500012c6964656e74696669657273f10101505665633c41737365744964656e7469666965723e00013466756e64696e675f726f756e64050701604f7074696f6e3c46756e64696e67526f756e644e616d653e00012864697361626c655f69751d010110626f6f6c0003682d01496e697469616c697a65732061206e657720736563757269747920746f6b656e2c20776974682074686520696e6974696174696e67206163636f756e7420617320697473206f776e65722e150154686520746f74616c20737570706c792077696c6c20696e697469616c6c79206265207a65726f2e20546f206d696e7420746f6b656e732c2075736520606973737565602e002c2320417267756d656e7473c5012a20606f726967696e60202d20636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e842a20606e616d6560202d20746865206e616d65206f662074686520746f6b656e2eb02a20607469636b657260202d20746865207469636b65722073796d626f6c206f662074686520746f6b656e2e2d012a2060646976697369626c6560202d206120626f6f6c65616e20746f206964656e74696679207468652064697669736962696c69747920737461747573206f662074686520746f6b656e2e802a206061737365745f7479706560202d2074686520617373657420747970652ec02a20606964656e7469666965727360202d206120766563746f72206f66206173736574206964656e746966696572732eb82a206066756e64696e675f726f756e6460202d206e616d65206f66207468652066756e64696e6720726f756e642e4d012a206064697361626c655f697560202d2077686574686572206f72206e6f7420696e766573746f7220756e697175656e65737320656e666f7263656d656e742073686f756c642062652064697361626c65642ec82020546869732063616e6e6f74206265206368616e676564206166746572206372656174696e67207468652061737365742e00242323204572726f7273fc2d2060496e76616c696441737365744964656e7469666965726020696620616e79206f6620606964656e74696669657273602061726520696e76616c69642e51012d20604d61784c656e6774684f6641737365744e616d6545786365656465646020696620606e616d65602773206c656e67746820657863656564732060543a3a41737365744e616d654d61784c656e677468602e55012d206046756e64696e67526f756e644e616d654d61784c656e67746845786365656465646020696620746865206e616d65206f66207468652066756e64696e6720726f756e64206973206c6f6e67657220746861747c60543a3a46756e64696e67526f756e644e616d654d61784c656e677468602ed42d20604173736574416c726561647943726561746564602069662061737365742077617320616c726561647920637265617465642e5d012d20605469636b6572546f6f4c6f6e676020696620607469636b6572602773206c656e6774682069732067726561746572207468616e2060636f6e6669672e6d61785f7469636b65725f6c656e6774686020636861696e28706172616d657465722ea1022d20605469636b65724e6f7441736369696020696620607469636b657260206973206e6f742079657420726567697374657265642c20616e6420636f6e7461696e73206e6f6e2d6173636969207072696e7461626c652063686172616374657273202866726f6d20636f646520333220746f2031323629206f7220616e7920636861726163746572206166746572206669727374206f6363757272656e6365206f6620605c30602e00382323205065726d697373696f6e732c2a20506f7274666f6c696f18667265657a650401187469636b6572a401185469636b657200042cbc467265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e00242323204572726f7273c02d2060416c726561647946726f7a656e6020696620607469636b65726020697320616c72656164792066726f7a656e2e003423205065726d697373696f6e731c2a20417373657420756e667265657a650401187469636b6572a401185469636b657200052cc4556e667265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722eb02a20607469636b657260202d20746865207469636b6572206f66207468652066726f7a656e20746f6b656e2e00242323204572726f7273b02d20604e6f7446726f7a656e6020696620607469636b657260206973206e6f742066726f7a656e207965742e003423205065726d697373696f6e731c2a2041737365743072656e616d655f61737365740801187469636b6572a401185469636b65720001106e616d650102012441737365744e616d650006345852656e616d6573206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e942a20606e616d6560202d20746865206e6577206e616d65206f662074686520746f6b656e2e00242323204572726f727311012d20604d61784c656e6774684f6641737365744e616d65457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e6060543a3a41737365744e616d654d61784c656e677468602e003423205065726d697373696f6e731c2a2041737365741469737375650801187469636b6572a401185469636b6572000118616d6f756e7418011c42616c616e636500072ca449737375652c206f72206d696e742c206e657720746f6b656e7320746f207468652063616c6c65722cac7768696368206d75737420626520616e20617574686f72697a65642065787465726e616c206167656e742e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e602a20607469636b657260206f662074686520746f6b656e2e942a2060616d6f756e7460206f6620746f6b656e73207468617420676574206973737565642e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f1872656465656d0801187469636b6572a401185469636b657200011476616c756518011c42616c616e636500083ccd0152656465656d73206578697374696e6720746f6b656e73206279207265647563696e67207468652062616c616e6365206f66207468652063616c6c657227732064656661756c7420706f7274666f6c696f20616e642074686520746f74616c20737570706c79206f662074686520746f6b656e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e942a206076616c75656020416d6f756e74206f6620746f6b656e7320746f2072656465656d2e002023204572726f727361012d2060556e617574686f72697a6564602049662063616c6c656420627920736f6d656f6e6520776974686f75742074686520617070726f7072696174652065787465726e616c206167656e74207065726d697373696f6e7359012d2060496e76616c69644772616e756c6172697479602049662074686520616d6f756e74206973206e6f7420646976697369626c652062792031305e3620666f72206e6f6e2d646976697369626c6520746f6b656e738d012d2060496e73756666696369656e74506f7274666f6c696f42616c616e636560204966207468652063616c6c657227732064656661756c7420706f7274666f6c696f20646f65736e2774206861766520656e6f75676820667265652062616c616e6365003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f386d616b655f646976697369626c650401187469636b6572a401185469636b657200092c944d616b657320616e20696e646976697369626c6520746f6b656e20646976697369626c652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e00242323204572726f7273ec2d20604173736574416c7265616479446976697369626c656020696620607469636b65726020697320616c726561647920646976697369626c652e003423205065726d697373696f6e731c2a204173736574346164645f646f63756d656e7473080110646f6373090701345665633c446f63756d656e743e0001187469636b6572a401185469636b6572000a248041646420646f63756d656e747320666f72206120676976656e20746f6b656e2e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2eb82a2060646f63736020446f63756d656e747320746f20626520617474616368656420746f20607469636b6572602e003423205065726d697373696f6e731c2a2041737365744072656d6f76655f646f63756d656e747308010c696473d502013c5665633c446f63756d656e7449643e0001187469636b6572a401185469636b6572000b248c52656d6f766520646f63756d656e747320666f72206120676976656e20746f6b656e2e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2ec82a20606964736020446f63756d656e74732069647320746f2062652072656d6f7665642066726f6d20607469636b6572602e003423205065726d697373696f6e731c2a204173736574447365745f66756e64696e675f726f756e640801187469636b6572a401185469636b65720001106e616d65e501014046756e64696e67526f756e644e616d65000c34ac5365747320746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e002c2320417267756d656e747329012a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2ee42a20606e616d6560202d207468652064657369726564206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e00242323204572726f727325012d206046756e64696e67526f756e644e616d654d61784c656e677468457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e7c60543a3a46756e64696e67526f756e644e616d654d61784c656e677468602e003423205065726d697373696f6e731c2a204173736574487570646174655f6964656e746966696572730801187469636b6572a401185469636b657200012c6964656e74696669657273f10101505665633c41737365744964656e7469666965723e000d34785570646174657320746865206173736574206964656e746966696572732e002c2320417267756d656e747329012a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e59012a20606964656e7469666965727360202d20746865206173736574206964656e7469666965727320746f206265207570646174656420696e2074686520666f726d206f66206120766563746f72206f66207061697273cc2020206f6620604964656e746966696572547970656020616e64206041737365744964656e746966696572602076616c75652e00242323204572726f727331012d2060496e76616c696441737365744964656e7469666965726020696620606964656e746966696572736020636f6e7461696e7320616e7920696e76616c6964206964656e7469666965722e003423205065726d697373696f6e731c2a20417373657450636c61696d5f636c61737369635f7469636b65720801187469636b6572a401185469636b6572000148657468657265756d5f7369676e61747572650d07013845636473615369676e6174757265000e38fc436c61696d20612073797374656d61746963616c6c7920726573657276656420506f6c796d61746820436c61737369632028504d432920607469636b657260ac616e64207472616e7366657220697420746f2074686520606f726967696e602773206964656e746974792e003d01546f2076657269667920746861742074686520606f726967696e6020697320696e20636f6e74726f6c206f662074686520457468657265756d206163636f756e74206f6e2074686520626f6f6b732c1101616e2060657468657265756d5f7369676e61747572656020636f6e7461696e696e672074686520606f726967696e6027732044494420617320746865206d657373616765a86d7573742062652070726f7669646564206279207468617420457468657265756d206163636f756e742e002023204572726f727331012d20604e6f53756368436c61737369635469636b6572602069662074686973206973206e6f7420612073797374656d61746963616c6c7920726573657276656420504d43207469636b65722e51012d20605469636b6572416c7265616479526567697374657265646020696620746865207469636b65722077617320616c726561647920726567697374657265642c20652e672e2c20627920606f726967696e602e1d012d20605469636b6572526567697374726174696f6e457870697265646020696620746865207469636b6572277320726567697374726174696f6e2068617320657870697265642e702d20604261644f726967696e60206966206e6f74207369676e65642e19012d2060496e76616c6964457468657265756d5369676e617475726560206966207468652060657468657265756d5f7369676e617475726560206973206e6f742076616c69642e29012d20604e6f74416e4f776e6572602069662074686520657468657265756d206163636f756e74206973206e6f7420746865206f776e6572206f662074686520504d43207469636b65722e58726573657276655f636c61737369635f7469636b65720c0154636c61737369635f7469636b65725f696d706f72741507014c436c61737369635469636b6572496d706f7274000130636f6e74726163745f6469647c01284964656e746974794964000118636f6e6669671907018c5469636b6572526567697374726174696f6e436f6e6669673c543a3a4d6f6d656e743e000f34a052657365727665206120506f6c796d61746820436c61737369632028504d4329207469636b65722e0d014d7573742062652063616c6c656420627920726f6f742c20616e642061737369676e7320746865207469636b657220746f20612073797374656d61746963204449442e002c2320417267756d656e7473782a20606f726967696e60207768696368206d75737420626520726f6f742eec2a2060636c61737369635f7469636b65725f696d706f7274602073706563696669636174696f6e20666f722074686520504d43207469636b65722e5d012a2060636f6e74726163745f6469646020746f207265736572766520746865207469636b657220746f2069662060636c61737369635f7469636b65725f696d706f72742e69735f636f6e74726163746020686f6c64732ebc2a2060636f6e6669676020746f2075736520666f722065787069727920616e64207469636b6572206c656e6774682e002023204572726f727349012a20604173736574416c726561647943726561746564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b65726020776173206372656174656420617320616e2061737365742e61012a20605469636b6572546f6f4c6f6e6760206966207468652060636f6e6669676020636f6e736964657273207468652060636c61737369635f7469636b65725f696d706f72742e7469636b65726020746f6f206c6f6e672e55012a20605469636b6572416c726561647952656769737465726564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b6572602077617320616c726561647920726567697374657265642e4c636f6e74726f6c6c65725f7472616e736665720c01187469636b6572a401185469636b657200011476616c756518011c42616c616e636500013866726f6d5f706f7274666f6c696fdc012c506f7274666f6c696f496400101c4d01466f726365732061207472616e73666572206f6620746f6b656e2066726f6d206066726f6d5f706f7274666f6c696f6020746f207468652063616c6c657227732064656661756c7420706f7274666f6c696f2e002c2320417267756d656e747355012a20606f726967696e60204d75737420626520616e2065787465726e616c206167656e74207769746820617070726f707269617465207065726d697373696f6e7320666f72206120676976656e207469636b65722e982a20607469636b657260205469636b65722073796d626f6c206f66207468652061737365742ecc2a206076616c7565602020416d6f756e74206f6620746f6b656e73206e65656420746f20666f726365207472616e736665722efc2a206066726f6d5f706f7274666f6c696f602046726f6d2077686f6d20706f7274666f6c696f20746f6b656e732067657473207472616e736665727265642e6872656769737465725f637573746f6d5f61737365745f74797065040108747928011c5665633c75383e00112478526567697374657273206120637573746f6d20617373657420747970652e00d05468652070726f766964656420607479602077696c6c20626520626f756e6420746f20616e20494420696e2073746f726167652ebc5468652049442063616e207468656e206265207573656420696e20604173736574547970653a3a437573746f6d602e250153686f756c6420746865206074796020616c726561647920657869737420696e2073746f726167652c206e6f207365636f6e642049442069732061737369676e656420746f2069742e002c2320417267756d656e7473902a20606f726967696e602077686f2063616c6c6564207468652065787472696e7369632ef02a206074796020636f6e7461696e732074686520737472696e6720726570726573656e746174696f6e206f662074686520617373657420747970652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e050704184f7074696f6e04045401e5010108104e6f6e6500000010536f6d650400e501000001000009070000020902000d070c4c706f6c796d6573685f7072696d69746976657320657468657265756d3845636473615369676e617475726500000400110701205b75383b2036355d000011070000034100000008001507083070616c6c65745f61737365744c436c61737369635469636b6572496d706f727400001001246574685f6f776e65723502013c457468657265756d416464726573730001187469636b6572a401185469636b657200012c69735f636f6e74726163741d010110626f6f6c00012869735f637265617465641d010110626f6f6c00001907083070616c6c65745f6173736574605469636b6572526567697374726174696f6e436f6e6669670404550120000801446d61785f7469636b65725f6c656e677468080108753800014c726567697374726174696f6e5f6c656e677468f801244f7074696f6e3c553e00001d070c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e1043616c6c04045400011428646973747269627574651c011463615f69644102011043414964000124706f7274666f6c696f2107015c4f7074696f6e3c506f7274666f6c696f4e756d6265723e00012063757272656e6379a401185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e63650001287061796d656e745f61742001184d6f6d656e74000128657870697265735f6174f801384f7074696f6e3c4d6f6d656e743e0000a82501537461727420616e64206174746163682061206361706974616c20646973747269627574696f6e2c20746f20746865204341206964656e746966696564206279206063615f6964602c6501776974682060616d6f756e74602066756e647320696e206063757272656e6379602077697468647261776e2066726f6d2060706f7274666f6c696f602062656c6f6e67696e6720746f20606f726967696e602773204449442e00290154686520646973747269627574696f6e2077696c6c20636f6d6d656e636520617420607061796d656e745f61746020616e64206578706972652061742060657870697265735f6174602cc869662070726f76696465642c206f7220696620604e6f6e65602c207468656e2074686572652773206e6f206578706972792e0025015468652066756e64732077696c6c206265206c6f636b656420696e2060706f7274666f6c696f602066726f6d207768656e206064697374726962757465602069732063616c6c65642e35015768656e2074686572652773206e6f206578706972792c20736f6d652066756e6473206d6179206265206c6f636b656420696e646566696e6974656c7920696e2060706f7274666f6c696f602c150164756520746f20636c61696d616e7473206e6f74207769746864726177696e67206f72206e6f2062656e6566697473206265696e672070757368656420746f207468656d2e2901466f7220696e646976697369626c652063757272656e636965732c20756e6c6f636b656420616d6f756e74732c206f66206c657373207468616e206f6e652077686f6c6520756e69742ca877696c6c206e6f74206265207472616e7366657261626c652066726f6d2060706f7274666f6c696f602e4d01486f77657665722c20696620776520696d6167696e6520746861742075736572732060416c6963656020616e642060426f626020626f74682061726520656e7469746c656420746f20312e3520756e6974732c5101616e64206f6e6c7920726563656976652060316020756e69747320656163682c207468656e2060302e35202b20302e35203d20316020756e69747320617265206c65667420696e2060706f7274666f6c696f602c6c7768696368206973206e6f77207472616e736665727261626c652e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e01012d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e59012d2060706f7274666f6c696f60207370656369666965732074686520706f7274666f6c696f206e756d626572206f6620746865206167656e7420746f20646973747269627574652060616d6f756e74602066726f6d2ef42d206063757272656e63796020746f20776974686472617720616e6420646973747269627574652066726f6d207468652060706f7274666f6c696f602ef82d20607065725f73686172656020616d6f756e74206f66206063757272656e63796020746f20776974686472617720616e6420646973747269627574652e25012020205370656369666965642061732061207065722d6d696c6c696f6e2c20692e652e206031202f2031305e36607468206f66206f6e65206063757272656e63796020746f6b656e2ef02d2060616d6f756e7460206f66206063757272656e63796020746f20776974686472617720616e642064697374726962757465206174206d6f73742e19012d20607061796d656e745f61746020737065636966696573207768656e2062656e6566697473206d617920666972737420626520707573686564206f7220636c61696d65642e29012d2060657870697265735f617460207370656369666965732c2069662070726f76696465642c207768656e2072656d61696e696e672062656e65666974732061726520666f726665697490202020616e64206d6179206265207265636c61696d656420627920606f726967696e602e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed02d2060446973747269627574696e67417373657460206966206063615f69642e7469636b6572203d3d2063757272656e6379602efc2d20604578706972794265666f72655061796d656e74602069662060657870697265735f61742e756e777261702829203c3d207061796d656e745f6174602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ea82d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652ee82d20605265636f72644461746541667465725374617274602069662043412773207265636f72642064617465203e207061796d656e745f61742e31012d2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f662060706f7274666f6c696f602e55012d2060496e73756666696369656e74506f7274666f6c696f42616c616e6365602069662060706f7274666f6c696f6020686173206c657373207468616e2060616d6f756e7460206f66206063757272656e6379602e01012d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e45012d206043414e6f7442656e656669746020696620746865204341206973206e6f74206f66206b696e64205072656469637461626c6542656e656669742f556e7072656469637461626c6542656e65666974003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f14636c61696d04011463615f6964410201104341496400015c0101436c61696d20612062656e65666974206f6620746865206361706974616c20646973747269627574696f6e20617474616368656420746f206063615f6964602e00a8546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5901506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e001101416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e39014d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c98746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e0030232320417267756d656e747345012d20606f726967696e60207768696368206d757374206265206120686f6c646572206f662074686520617373657420616e6420656c696769626c6520666f722074686520646973747269627574696f6e2e01012d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e002023204572726f727325012d2060486f6c646572416c7265616479506169646020696620606f726967696e602773204449442068617320616c7265616479207265636569766564206974732062656e656669742e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec42d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee42d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef42d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e35012d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e35012d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e21012d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e30707573685f62656e6566697408011463615f69644102011043414964000118686f6c6465727c01284964656e746974794964000260f8507573682062656e65666974206f6620616e206f6e676f696e6720646973747269627574696f6e20746f2074686520676976656e2060686f6c646572602e00a8546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5901506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e001101416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e39014d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c98746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e39012d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e7320746f20707573682062656e656669747320666f722e7c2d2060686f6c6465726020746f20707573682062656e656669747320746f2e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec42d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee42d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412edc2d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f74207461726765742060686f6c646572602e35012d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e35012d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e21012d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e1c7265636c61696d04011463615f6964410201104341496400032c90417373756d696e67206120646973747269627574696f6e2068617320657870697265642ce4756e6c6f636b207468652072656d61696e696e6720616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e0030232320417267756d656e747345012d20606f726967696e60207768696368206d757374206265207468652063726561746f72206f6620746865206361706974616c20646973747269627574696f6e207469656420746f206063615f6964602e1d012d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e20746f207265636c61696d20666f722e002023204572726f727319012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602e2d012d2060416c72656164795265636c61696d65646020696620746869732066756e6374696f6e2068617320616c7265616479206265656e2063616c6c6564207375636365737366756c6c792e842d20604e6f74457870697265646020696620606e6f77203c20657870697279602e4c72656d6f76655f646973747269627574696f6e04011463615f6964410201104341496400042cbc52656d6f766573206120646973747269627574696f6e2074686174206861736e27742073746172746564207965742cdc756e6c6f636b696e67207468652066756c6c20616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e49012d206063615f696460206964656e7469666965732074686520434120776974682061206e6f742d7965742d73746172746564206361706974616c20646973747269627574696f6e20746f2072656d6f76652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ebc2d2060446973747269627574696f6e537461727465646020696620607061796d656e745f6174203c3d206e6f77602e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e210704184f7074696f6e04045401e40108104e6f6e6500000010536f6d650400e4000001000025070c3070616c6c65745f617373657428636865636b706f696e741043616c6c040454000110446372656174655f636865636b706f696e740401187469636b6572a401185469636b6572000024c04372656174657320612073696e676c6520636865636b706f696e74206174207468652063757272656e742074696d652e002c2320417267756d656e74732d012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602ea02d20607469636b65726020746f206372656174652074686520636865636b706f696e7420666f722e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e0d012d2060436f756e7465724f766572666c6f77602069662074686520746f74616c20636865636b706f696e7420636f756e74657220776f756c64206f766572666c6f772e707365745f7363686564756c65735f6d61785f636f6d706c65786974790401386d61785f636f6d706c657869747920010c75363400012459015365747320746865206d617820636f6d706c6578697479206f662061207363686564756c652073657420666f7220616e20617262697472617279207469636b657220746f20606d61785f636f6d706c6578697479602eb8546865206e6577206d6178696d756d206973206e6f7420656e666f7263656420726574726f6163746976656c792cb4616e64206f6e6c79206170706c696573206f6e6365206e6577207363686564756c657320617265206d6164652e00a84d7573742062652063616c6c6564206173206120504950202872657175697265732022726f6f7422292e002c2320417267756d656e7473782d20606f726967696e602069732074686520726f6f74206f726967696e2e09012d20606d61785f636f6d706c65786974796020616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365742e3c6372656174655f7363686564756c650801187469636b6572a401185469636b65720001207363686564756c65290701305363686564756c655370656300024ca4437265617465732061207363686564756c652067656e65726174696e6720636865636b706f696e7473d4696e20746865206675747572652061742065697468657220612066697865642074696d65206f7220617420696e74657276616c732e000901546865207363686564756c6520737461727473206f7574207769746820607374726f6e675f7265665f636f756e74287363686564756c655f696429203c2d2030602e002c2320417267756d656e747321012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e982d20607469636b65726020746f2063726561746520746865207363686564756c6520666f722eb02d20607363686564756c656020746861742077696c6c2067656e657261746520636865636b706f696e74732e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e0d012d20605363686564756c654475726174696f6e546f6f53686f72746020696620746865207363686564756c65206475726174696f6e20697320746f6f2073686f72742e21012d2060496e73756666696369656e744163636f756e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c64206e6f7420626520636861726765642e4d012d2060436f756e7465724f766572666c6f776020696620746865207363686564756c65204944206f7220746f74616c20636865636b706f696e7420636f756e7465727320776f756c64206f766572666c6f772e5d012d20604661696c6564546f436f6d707574654e657874436865636b706f696e746020696620746865206e65787420636865636b706f696e7420666f7220607363686564756c656020697320696e2074686520706173742e003423205065726d697373696f6e731c2a2041737365743c72656d6f76655f7363686564756c650801187469636b6572a401185469636b657200010869646d0201285363686564756c654964000338fc52656d6f7665732074686520636865636b706f696e74207363686564756c65206f6620616e206173736574206964656e74696669656420627920606964602e002c2320417267756d656e747321012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e9c2d20607469636b65726020746f2072656d6f766520746865207363686564756c652066726f6d2e09012d2060696460206f6620746865207363686564756c652c207768656e2069742077617320637265617465642062792060637265617465645f7363686564756c65602e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e41012d20604e6f436865636b706f696e745363686564756c6560206966206069646020646f6573206e6f74206964656e746966792061207363686564756c6520666f72207468697320607469636b6572602ef42d20605363686564756c654e6f7452656d6f7661626c656020696620606964602065786973747320627574206973206e6f742072656d6f7661626c652e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e29070c3070616c6c65745f617373657428636865636b706f696e74305363686564756c655370656300000c01147374617274f801384f7074696f6e3c4d6f6d656e743e000118706572696f646502013843616c656e646172506572696f6400012472656d61696e696e6710010c75333200002d07086470616c6c65745f636f6d706c69616e63655f6d616e616765721043616c6c040454000124686164645f636f6d706c69616e63655f726571756972656d656e740c01187469636b6572a401185469636b657200014473656e6465725f636f6e646974696f6e73790201385665633c436f6e646974696f6e3e00014c72656365697665725f636f6e646974696f6e73790201385665633c436f6e646974696f6e3e00002c050141646473206120636f6d706c69616e636520726571756972656d656e7420746f20616e206173736574277320636f6d706c69616e6365206279207469636b65722ef849662074686520636f6d706c69616e636520726571756972656d656e742069732061206475706c69636174652c20697420646f6573206e6f7468696e672e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574c42a2073656e6465725f636f6e646974696f6e73202d2053656e646572207472616e7366657220636f6e646974696f6e732ed42a2072656365697665725f636f6e646974696f6e73202d205265636569766572207472616e7366657220636f6e646974696f6e732e003423205065726d697373696f6e731c2a2041737365747472656d6f76655f636f6d706c69616e63655f726571756972656d656e740801187469636b6572a401185469636b6572000108696410010c753332000124f052656d6f766573206120636f6d706c69616e636520726571756972656d656e742066726f6d20616e206173736574277320636f6d706c69616e63652e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574f02a206964202d20436f6d706c69616e636520726571756972656d656e74206964207768696368206973206e65656420746f2062652072656d6f766564003423205065726d697373696f6e731c2a204173736574607265706c6163655f61737365745f636f6d706c69616e63650801187469636b6572a401185469636b657200014061737365745f636f6d706c69616e6365a10201685665633c436f6d706c69616e6365526571756972656d656e743e00023cfc5265706c6163657320616e206173736574277320636f6d706c69616e6365206279207469636b657220776974682061206e657720636f6d706c69616e63652e00fc436f6d706c69616e636520726571756972656d656e74732077696c6c20626520736f727465642028617363656e64696e6720627920696429206265666f72658c7265706c6163696e67207468652063757272656e7420726571756972656d656e74732e002c2320417267756d656e7473782a20607469636b657260202d20746865206173736574207469636b65722cbc2a206061737365745f636f6d706c69616e6365202d20746865206e657720617373657420636f6d706c69616e63652e002023204572726f7273f02a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722eb1012a20604475706c69636174654173736574436f6d706c69616e636560206966206061737365745f636f6d706c69616e63656020636f6e7461696e73206d756c7469706c6520656e74726965732077697468207468652073616d652060726571756972656d656e745f6964602e003423205065726d697373696f6e731c2a2041737365745872657365745f61737365745f636f6d706c69616e63650401187469636b6572a401185469636b65720003207452656d6f76657320616e206173736574277320636f6d706c69616e6365002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a2041737365745870617573655f61737365745f636f6d706c69616e63650401187469636b6572a401185469636b657200042011015061757365732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a2041737365745c726573756d655f61737365745f636f6d706c69616e63650401187469636b6572a401185469636b65720005201501526573756d65732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a204173736574806164645f64656661756c745f747275737465645f636c61696d5f6973737565720801187469636b6572a401185469636b65720001186973737565729102013454727573746564497373756572000624f84164647320616e6f746865722064656661756c74207472757374656420636c61696d2069737375657220617420746865207469636b6572206c6576656c2e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742ec82a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e003423205065726d697373696f6e731c2a2041737365748c72656d6f76655f64656661756c745f747275737465645f636c61696d5f6973737565720801187469636b6572a401185469636b65720001186973737565727c01284964656e746974794964000724750152656d6f7665732074686520676976656e2060697373756572602066726f6d2074686520736574206f662064656661756c74207472757374656420636c61696d206973737565727320617420746865207469636b6572206c6576656c2e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742ec82a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e003423205065726d697373696f6e731c2a204173736574746368616e67655f636f6d706c69616e63655f726571756972656d656e740801187469636b6572a401185469636b657200011c6e65775f72657175020154436f6d706c69616e6365526571756972656d656e74000824f04d6f6469667920616e206578697374696e6720636f6d706c69616e636520726571756972656d656e74206f66206120676976656e207469636b65722e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742e8c2a206e65775f726571202d20436f6d706c69616e636520726571756972656d656e742e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e3107086070616c6c65745f636f72706f726174655f616374696f6e731043616c6c040454000120587365745f6d61785f64657461696c735f6c656e6774680401186c656e67746810010c753332000008d053657420746865206d617820606c656e67746860206f66206064657461696c736020696e207465726d73206f662062797465732e744d6179206f6e6c792062652063616c6c6564207669612061205049502e4c7365745f64656661756c745f746172676574730801187469636b6572a401185469636b657200011c74617267657473a90201405461726765744964656e746974696573000134cc536574207468652064656661756c7420434120605461726765744964656e7469746965736020746f206074617267657473602e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ee42d20607469636b65726020666f72207768696368207468652064656661756c74206964656e74697469657320617265206368616e67696e672ecc2d20607461726765747360207468652064656661756c7420746172676574206964656e74697469657320666f7220612043412e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e31012d2060546f6f4d616e79546172676574496473602069662060746172676574732e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e003423205065726d697373696f6e731c2a2041737365746c7365745f64656661756c745f77697468686f6c64696e675f7461780801187469636b6572a401185469636b657200010c7461784d02010c5461780002303d01536574207468652064656661756c742077697468686f6c64696e672074617820666f7220616c6c204449447320616e64204341732072656c6576616e7420746f207468697320607469636b6572602e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ec82d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2e05012d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e003423205065726d697373696f6e731c2a2041737365745c7365745f6469645f77697468686f6c64696e675f7461780c01187469636b6572a401185469636b657200012474617865645f6469647c01284964656e74697479496400010c746178b102012c4f7074696f6e3c5461783e000340f4536574207468652077697468686f6c64696e6720746178206f6620607469636b65726020666f72206074617865645f6469646020746f2060746178602e810149662060536f6d652874617829602c2074686973206f7665727269646573207468652064656661756c742077697468686f6c64696e6720746178206f6620607469636b65726020746f20607461786020666f72206074617865645f646964602efc4f74686572776973652c20696620604e6f6e65602c207468652064656661756c742077697468686f6c64696e67207461782077696c6c20626520757365642e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ec82d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2ee42d206074617865645f6469646020746861742077696c6c2068617665206974732077697468686f6c64696e672074617820757064617465642e05012d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e81012d2060546f6f4d616e794469645461786573602069662060536f6d6528746178296020616e6420616464696e6720746865206f7665727269646520776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e003423205065726d697373696f6e731c2a20417373657464696e6974696174655f636f72706f726174655f616374696f6e2001187469636b6572a401185469636b65720001106b696e64b902011843414b696e640001246465636c5f646174652001184d6f6d656e7400012c7265636f72645f64617465350701584f7074696f6e3c5265636f726444617465537065633e00011c64657461696c73d1020124434144657461696c7300011c746172676574733d0701604f7074696f6e3c5461726765744964656e7469746965733e00015c64656661756c745f77697468686f6c64696e675f746178b102012c4f7074696f6e3c5461783e00013c77697468686f6c64696e675f746178410701784f7074696f6e3c5665633c284964656e7469747949642c20546178293e3e0004784901496e69746961746573206120434120666f7220607469636b657260206f6620606b696e64602077697468206064657461696c736020616e64206f746865722070726f766964656420617267756d656e74732e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732e8c2d20607469636b657260207468617420746865204341206973206d61646520666f722e7c2d20606b696e6460206f66204341206265696e6720696e697469617465642e982d20606465636c5f6461746560206f66204341206272696e6720696e697469616c697a65642ef02d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f6620746869732043412e610120202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e4d012d206064657461696c7360206f662074686520434120696e20667265652d7465787420666f726d2c20757020746f2061206365727461696e206e756d626572206f6620627974657320696e206c656e6774682ef42d206074617267657473602c20696620616e792c20776869636820746869732043412069732072656c6576616e742f697272656c6576616e7420746f2e49012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f7461726765747360292e5d012d206064656661756c745f77697468686f6c64696e675f746178602c20696620616e792c206973207468652064656661756c742077697468686f6c64696e672074617820746f2075736520666f7220746869732043412e69012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f77697468686f6c64696e675f74617860292e21012d206077697468686f6c64696e675f746178602c20696620616e792c2070726f7669646573207065722d4449442077697468686f6c64696e6720746178206f76657272696465732e59012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f6469645f77697468686f6c64696e675f74617860292e002023204572726f72731d012d206044657461696c73546f6f4c6f6e6760206966206064657461696c732e6c656e28296020676f6573206265796f6e6420606d61785f64657461696c735f6c656e677468602e25012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e69012d2060436f756e7465724f766572666c6f776020696e2074686520756e6c696b656c79206576656e74207468617420736f206d616e79204341732077657265206372656174656420666f72207468697320607469636b6572602cf820207468617420696e7465676572206f766572666c6f7720776f756c642068617665206f63637572656420696620696e737465616420616c6c6f7765642e75012d2060546f6f4d616e79446964546178657360206966206077697468686f6c64696e675f7461782e756e7772617028292e6c656e28296020776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e01012d20604475706c69636174654469645461786020696620612044494420697320696e636c75646564206d6f7265207468616e206f6e636520696e20607774602e55012d2060546f6f4d616e79546172676574496473602069662060746172676574732e756e7772617028292e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e01012d20604465636c44617465496e4675747572656020696620746865206465636c61726174696f6e2064617465206973206e6f7420696e2074686520706173742e51012d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e003423205065726d697373696f6e731c2a2041737365742c6c696e6b5f63615f646f6308010869644102011043414964000110646f6373d502013c5665633c446f63756d656e7449643e000548ac4c696e6b2074686520676976656e204341206069646020746f2074686520676976656e2060646f6373602ef4416e792070726576696f7573206c696e6b7320666f7220746865204341206172652072656d6f76656420696e206661766f72206f662060646f6373602e00550154686520776f726b666c6f77206865726520697320746f206164642074686520646f63756d656e747320616e6420696e6974696174696e672074686520434120696e20616e79206f7264657220646573697265642ec44f6e636520626f74682065786973742c20746865792063616e206e6f77206265206c696e6b656420746f6765746865722e0030232320417267756d656e747351012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206069642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732ea82d2060696460206f662074686520434120746f206173736f636961746520776974682060646f6373602eb02d2060646f63736020746f206173736f6369617465207769746820746865204341207769746820606964602e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e19012d20604e6f53756368446f636020696620616e79206f662060646f63736020646f6573206e6f74206964656e7469667920616e206578697374696e6720646f63756d656e742e003423205065726d697373696f6e731c2a2041737365742472656d6f76655f636104011463615f696441020110434149640006489452656d6f76657320746865204341206964656e746966696564206279206063615f6964602e00c44173736f63696174656420646174612c207375636820617320646f63756d656e74206c696e6b732c2062616c6c6f74732cac616e64206361706974616c20646973747269627574696f6e732061726520616c736f2072656d6f7665642e00d4416e79207363686564756c65206173736f636961746564207769746820746865207265636f726420646174652077696c6c20736565b0607374726f6e675f7265665f636f756e74287363686564756c655f696429602064656372656d656e7465642e0030232320417267756d656e74735d012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e782d206063615f696460206f662074686520434120746f2072656d6f76652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e003423205065726d697373696f6e731c2a204173736574486368616e67655f7265636f72645f6461746508011463615f6964410201104341496400012c7265636f72645f64617465350701584f7074696f6e3c5265636f726444617465537065633e00073ce04368616e67657320746865207265636f72642064617465206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e74735d012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e742d206063615f696460206f662074686520434120746f20616c7465722eec2d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f66207468652043412e610120202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e51012d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e350704184f7074696f6e0404540139070108104e6f6e6500000010536f6d650400390700000100003907086070616c6c65745f636f72706f726174655f616374696f6e73385265636f7264446174655370656300010c245363686564756c656404002001184d6f6d656e74000000404578697374696e675363686564756c6504006d0201285363686564756c654964000100204578697374696e67040059020130436865636b706f696e744964000200003d0704184f7074696f6e04045401a9020108104e6f6e6500000010536f6d650400a9020000010000410704184f7074696f6e04045401c9020108104e6f6e6500000010536f6d650400c902000001000045070c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f741043616c6c040454000118346174746163685f62616c6c6f7410011463615f6964410201104341496400011472616e6765dd02013c42616c6c6f7454696d6552616e67650001106d657461e102012842616c6c6f744d65746100010c7263761d010110626f6f6c000068e8417474616368206120636f72706f726174652062616c6c6f7420746f20746865204341206964656e746966696564206279206063615f6964602e00ac5468652062616c6c6f742077696c6c2061646d697420766f7465732077697468696e206072616e6765602eb05468652062616c6c6f742773206d657461646174612069732070726f766964656420627920606d657461602c0501776869636820696e636c75646573207468652062616c6c6f74207469746c652c20746865206d6f74696f6e732c2074686569722063686f696365732c206574632e7853656520746865206042616c6c6f744d6574616020666f72206d6f72652e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602ed02d206063615f696460206964656e7469666965732074686520434120746f20617474616368207468652062616c6c6f7420746f2ec02d206072616e67656020737065636966696573207768656e20766f74696e672073746172747320616e6420656e64732eec2d20606d6574616020737065636966696573207468652062616c6c6f742773206d657461646174612061732061666f72656d656e74696f6e65642ee42d2060726376602073706563696669657320776865746865722052435620697320656e61626c656420666f7220746869732062616c6c6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef02d206043414e6f744e6f746963656020696620746865204341206973206e6f74206f662074686520604973737565724e6f7469636560206b696e642ebc2d206053746172744166746572456e6460206966206072616e67652e7374617274203e2072616e67652e656e64602e29012d20604e6f774166746572456e646020696620606e6f77203e2072616e67652e656e646020776865726520606e6f7760206973207468652063757272656e742074696d657374616d702ea82d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652e59012d20605265636f7264446174654166746572537461727460206966206064617465203e2072616e67652e73746172746020776865726520606461746560206973207468652043412773207265636f726420646174652eb82d2060416c726561647945786973747360206966207468657265277320612062616c6c6f7420616c72656164792e31012d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e09012d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e01012d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e10766f746508011463615f69644102011043414964000114766f7465730103013c5665633c42616c6c6f74566f74653e0001441101436173742060766f7465736020696e207468652062616c6c6f7420617474616368656420746f20746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747309012d20606f726967696e60207768696368206d7573742062652061207065726d697373696f6e6564207369676e6572207461726765746564206279207468652043412eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e21012d2060766f7465736020737065636966696573207468652062616c616e63657320746f2061737369676e20746f20656163682063686f69636520696e207468652062616c6c6f742e55012020205468652066756c6c20766f74696e6720706f776572206f6620606f726967696e60277320444944206d6179206265207573656420666f722065616368206d6f74696f6e20696e207468652062616c6c6f742e002023204572726f7273dc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742efc2d2060566f74696e674e6f7453746172746564602069662074686520766f74696e6720706572696f64206861736e277420636f6d6d656e636564207965742ed82d2060566f74696e67416c7265616479456e646564602069662074686520766f74696e6720706572696f642068617320656e6465642e5d012d206057726f6e67566f7465436f756e746020696620746865206e756d626572206f662063686f6963657320696e207468652062616c6c6f7420646f6573206e6f74206d617463682060766f7465732e6c656e2829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef42d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e21012d2060496e73756666696369656e74566f746573602069662074686520766f74696e6720706f776572207573656420666f7220616e79206d6f74696f6e20696e2060766f74657360a42020206578636565647320606f726967696e60277320444944277320766f74696e6720706f7765722e286368616e67655f656e6408011463615f6964410201104341496400010c656e642001184d6f6d656e740002300501416d656e642074686520656e642064617465206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ec42d2060656e64602073706563696669657320746865206e657720656e642064617465206f66207468652062616c6c6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e8c2d206053746172744166746572456e646020696620607374617274203e20656e64602e2c6368616e67655f6d65746108011463615f696441020110434149640001106d657461e102012842616c6c6f744d6574610003346101416d656e6420746865206d6574616461746120287469746c652c206d6f74696f6e732c206574632e29206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e902d20606d657461602073706563696669657320746865206e6577206d657461646174612e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e31012d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e09012d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e286368616e67655f72637608011463615f6964410201104341496400010c7263761d010110626f6f6c00042c0501416d656e642052435620737570706f727420666f72207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ecc2d206072637660207370656369666965732069662052435620697320746f20626520737570706f72746564206f72206e6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e3472656d6f76655f62616c6c6f7404011463615f69644102011043414964000528c852656d6f7665207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e4907082c70616c6c65745f706970731043616c6c040454000144647365745f7072756e655f686973746f726963616c5f706970730401147072756e651d010110626f6f6c000014a44368616e6765207768657468657220636f6d706c65746564205049507320617265207072756e65642e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473f02a20607072756e656020737065636966696573207768657468657220636f6d706c6574656420504950732073686f756c64206265207072756e65642e607365745f6d696e5f70726f706f73616c5f6465706f73697404011c6465706f73697418011c42616c616e636500011421014368616e676520746865206d696e696d756d2070726f706f73616c206465706f73697420616d6f756e7420726571756972656420746f20737461727420612070726f706f73616c2e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473f02a20606465706f7369746020746865206e6577206d696e206465706f73697420726571756972656420746f20737461727420612070726f706f73616c707365745f64656661756c745f656e6163746d656e745f706572696f640401206475726174696f6e100138543a3a426c6f636b4e756d626572000214904368616e6765207468652064656661756c7420656e6163746d656e7420706572696f642e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e747369012a20606475726174696f6e6020746865206e65772064656661756c7420656e6163746d656e7420706572696f642069742074616b657320666f722061207363686564756c65642050495020746f2062652065786563757465642e587365745f70656e64696e675f7069705f657870697279040118657870697279450101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e00031805014368616e67652074686520616d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020697320657870697265642eb4496620606578706972796020697320604e6f6e6560207468656e2050495073206e65766572206578706972652e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e74731d012a2060657870697279602074686520626c6f636b2d74696d652069742074616b657320666f722061207374696c6c2d6050656e64696e67602050495020746f206578706972652e587365745f6d61785f7069705f736b69705f636f756e7404010c6d6178080130536b6970706564436f756e74000414d44368616e676520746865206d6178696d756d20736b697020636f756e742028606d61785f7069705f736b69705f636f756e7460292e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473ec2a20606d61786020736b697073206265666f72652061205049502063616e6e6f7420626520736b697070656420627920474320616e796d6f72652e507365745f6163746976655f7069705f6c696d69740401146c696d697410010c75333200051469014368616e676520746865206d6178696d756d206e756d626572206f66206163746976652050495073206265666f726520636f6d6d756e697479206d656d626572732063616e6e6f742070726f706f736520616e797468696e672e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473902a20606c696d697460206f6620636f6e63757272656e742061637469766520504950732e1c70726f706f736510012070726f706f73616c81050140426f783c543a3a50726f706f73616c3e00011c6465706f73697418011c42616c616e636500010c75726c2103012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e290301584f7074696f6e3c5069704465736372697074696f6e3e000624050141206e6574776f726b206d656d6265722063726561746573206120504950206279207375626d697474696e67206120646973706174636861626c6520776869636855016368616e67657320746865206e6574776f726b20696e20736f6d657761792e2041206d696e696d756d206465706f73697420697320726571756972656420746f206f70656e2061206e65772070726f706f73616c2e002c2320417267756d656e7473c82a206070726f706f73657260206973206569746865722061207369676e696e67206b6579206f7220636f6d6d69747465652e65012020205573656420746f20756e6465727374616e6420776865746865722074686973206973206120636f6d6d69747465652070726f706f73616c20616e6420766572696669656420616761696e737420606f726967696e602e802a206070726f706f73616c60206120646973706174636861626c652063616c6c45012a20606465706f73697460206d696e696d756d206465706f7369742076616c75652c2077686963682069732069676e6f726564206966206070726f706f73657260206973206120636f6d6d69747465652ecc2a206075726c602061206c696e6b20746f2061207765627369746520666f722070726f706f73616c2064697363757373696f6e10766f74650c010869641d03011450697049640001286179655f6f725f6e61791d010110626f6f6c00011c6465706f73697418011c42616c616e63650007481d01566f74652065697468657220696e206661766f722028606179655f6f725f6e617960203d3d207472756529206f7220616761696e7374206120504950207769746820606964602e4d015468652022636f6e76696e6374696f6e22206f7220737472656e677468206f662074686520766f746520697320676976656e20627920606465706f736974602c2077686963682069732072657365727665642e008c4e6f746520746861742060766f746560206973202a6e6f742a2061646469746976652ef8546861742069732c2060766f74652869642c20747275652c203530296020666f6c6c6f7765642062792060766f74652869642c20747275652c2034302960490177696c6c2066697273742072657365727665206035306020616e64207468656e20726566756e6420603530202d203130602c20656e64696e672075702077697468206034306020696e206465706f7369742e2501546f206164642061746f70206f66206578697374696e6720766f7465732c20796f75276c6c206e65656420606578697374696e675f6465706f736974202b206164646974696f6e602e002c2320417267756d656e74734c2a20606964602c2070726f706f73616c206964dc2a20606179655f6f725f6e6179602c206120626f6f6c20726570726573656e74696e6720666f72206f7220616761696e737420766f7465e82a20606465706f736974602c207468652022636f6e76696374696f6e2220776974682077686963682074686520766f7465206973206d6164652e002023204572726f7273e42a20604e6f5375636850726f706f73616c60206966206069646020646f65736e2774207265666572656e636520612076616c6964205049502ee42a20604e6f7446726f6d436f6d6d756e697479602069662070726f706f73616c20776173206d616465206279206120636f6d6d69747465652ec02a2060496e636f727265637450726f706f73616c537461746560206966205049502069736e27742070656e64696e672e2d012a2060496e73756666696369656e744465706f7369746020696620606f726967696e602063616e6e6f74207265736572766520606465706f736974202d206f6c645f6465706f736974602e68617070726f76655f636f6d6d69747465655f70726f706f73616c04010869641d030114506970496400081cd4417070726f766573207468652070656e64696e6720636f6d6d69747465652050495020676976656e2062792074686520606964602e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ee42a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c2069736e27742070656e64696e672ee02a20604e6f744279436f6d6d697474656560206966207468652070726f706f73616c2069736e2774206279206120636f6d6d69747465652e3c72656a6563745f70726f706f73616c04010869641d0301145069704964000920f852656a65637473207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e7920626f6e6465642066756e64732cb8617373756d696e67206974206861736e2774206265656e2063616e63656c6c6564206f722065786563757465642e05014e6f746520746861742070726f706f73616c73207363686564756c65642d666f722d657865637574696f6e2063616e20616c736f2062652072656a65637465642e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742e15012a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c207761732063616e63656c6c6564206f722065786563757465642e387072756e655f70726f706f73616c04010869641d0301145069704964000a2429015072756e65207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e792066756e6473206e6f7420616c726561647920726566756e6465642e6454686520504950206d6179206e6f7420626520616374697665000901546869732066756e6374696f6e20697320696e74656e64656420666f722073746f72616765206761726261676520636f6c6c656374696f6e20707572706f7365732e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ed42a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c206973206163746976652e5072657363686564756c655f657865637574696f6e08010869641d0301145069704964000114756e74696cc90501584f7074696f6e3c543a3a426c6f636b4e756d6265723e000b24e0557064617465732074686520657865637574696f6e207363686564756c65206f66207468652050495020676976656e20627920606964602e002c2320417267756d656e747331012a2060756e74696c6020646566696e6573207468652066757475726520626c6f636b2077686572652074686520656e6163746d656e7420706572696f642077696c6c2066696e69736865642e4501202020604e6f6e65602076616c7565206d65616e73207468617420656e6163746d656e7420706572696f6420697320676f696e6720746f2066696e69736820696e20746865206e65787420626c6f636b2e002023204572726f727339012a206052657363686564756c654e6f74427952656c65617365436f6f7264696e61746f726020756e6c657373207472696767657265642062792072656c6561736520636f6f7264696e61746f722e21012a2060496e636f727265637450726f706f73616c53746174656020756e6c657373207468652070726f706f73616c2077617320696e2061207363686564756c65642073746174652e38636c6561725f736e617073686f74000c10e8436c656172732074686520736e617073686f7420616e6420656d69747320746865206576656e742060536e617073686f74436c6561726564602e002023204572726f72733d012a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e20736e617073686f74000d140d0154616b65732061206e657720736e617073686f74206f66207468652063757272656e74206c697374206f66206163746976652026262070656e64696e6720504950732e2901546865205049507320617265207468656e20736f7274656420696e746f2061207072696f72697479207175657565206261736564206f6e2065616368205049502773207765696768742e002023204572726f72733d012a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e58656e6163745f736e617073686f745f726573756c747304011c726573756c74734d0701705665633c2850697049642c20536e617073686f74526573756c74293e000e44d0456e616374732060726573756c74736020666f7220746865205049507320696e2074686520736e617073686f742071756575652e290154686520736e617073686f742077696c6c20626520617661696c61626c6520666f72206675727468657220656e6163746d656e747320756e74696c20697420697320636c65617265642e0055015468652060726573756c7473602061726520656e636f6465642061206c697374206f6620602869642c20726573756c7429602077686572652060726573756c7460206973206170706c69656420746f20606964602e49014e6f746520746861742074686520736e617073686f74207072696f7269747920717565756520697320656e636f646564207769746820746865202a6c6f77657374207072696f726974792066697273742a2e5501736f2060726573756c7473203d205b2869642c20417070726f7665295d602077696c6c20617070726f76652060536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20315d602e002023204572726f72730d012a20604261644f726967696e60202d20756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2e21012a206043616e6e6f74536b697050697060202d206120676976656e205049502068617320616c7265616479206265656e20736b697070656420746f6f206d616e792074696d65732e0d012a2060536e617073686f74526573756c74546f6f4c6172676560202d206f6e206c656e28726573756c747329203e206c656e28736e617073686f745f7175657565292e702a2060536e617073686f7449644d69736d6174636860202d2069663a2420206060607465787498202020e2888320286920e2888820302e2e536e617073686f7451756575652e6c656e2829292efc2020202020726573756c74735b695d2e3020e289a020536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20695d2e6964142020606060f8202020546869732069732070726f746563747320616761696e737420636c656172696e67207175657565207768696c6520474320697320766f74696e672e54657865637574655f7363686564756c65645f70697004010869641d0301145069704964000f04d8496e7465726e616c20646973706174636861626c6520746861742068616e646c657320657865637574696f6e206f662061205049502e506578706972655f7363686564756c65645f70697008010c6469647c01284964656e74697479496400010869641d0301145069704964001004dc496e7465726e616c20646973706174636861626c6520746861742068616e646c65732065787069726174696f6e206f662061205049502e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e4d070000025107005107000004081d035507005507082c70616c6c65745f7069707338536e617073686f74526573756c7400010c1c417070726f76650000001852656a65637400010010536b6970000200005907084070616c6c65745f706f7274666f6c696f1043616c6c040454000118406372656174655f706f7274666f6c696f0401106e616d655d030134506f7274666f6c696f4e616d65000004a843726561746573206120706f7274666f6c696f20776974682074686520676976656e20606e616d65602e4064656c6574655f706f7274666f6c696f04010c6e756de4013c506f7274666f6c696f4e756d626572000120350144656c657465732061207573657220706f7274666f6c696f2e204120706f7274666f6c696f2063616e2062652064656c65746564206f6e6c7920696620697420686173206e6f2066756e64732e002023204572726f72731d012a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2ef02a2060506f7274666f6c696f4e6f74456d707479602069662074686520706f7274666f6c696f207374696c6c20686f6c647320616e79206173736574003423205065726d697373696f6e732c2a20506f7274666f6c696f506d6f76655f706f7274666f6c696f5f66756e64730c011066726f6ddc012c506f7274666f6c696f4964000108746fdc012c506f7274666f6c696f49640001146974656d735d0701585665633c4d6f7665506f7274666f6c696f4974656d3e00023c5d014d6f766573206120746f6b656e20616d6f756e742066726f6d206f6e6520706f7274666f6c696f206f6620616e206964656e7469747920746f20616e6f7468657220706f7274666f6c696f206f66207468652073616d65e06964656e746974792e204d7573742062652063616c6c65642062792074686520637573746f6469616e206f66207468652073656e6465722e110146756e64732066726f6d2064656c6574656420706f7274666f6c696f732063616e20616c736f206265207265636f7665726564207669612074686973206d6574686f642e00e0412073686f7274206d656d6f2063616e20626520616464656420746f20746f206561636820746f6b656e20616d6f756e74206d6f7665642e002023204572726f727369012a2060506f7274666f6c696f446f65734e6f74457869737460206966206f6e65206f7220626f7468206f662074686520706f7274666f6c696f73207265666572656e636520616e20696e76616c696420706f7274666f6c696f2e51012a206064657374696e6174696f6e5f69735f73616d655f706f7274666f6c696f6020696620626f74682073656e64657220616e6420726563656976657220706f7274666f6c696f20617265207468652073616d6591012a2060446966666572656e744964656e74697479506f7274666f6c696f7360206966207468652073656e64657220616e6420726563656976657220706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e74697469657349012a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f66207468652066726f6d20706f7274666f6c696f41012a2060496e73756666696369656e74506f7274666f6c696f42616c616e636560206966207468652073656e64657220646f6573206e6f74206861766520656e6f75676820667265652062616c616e6365003423205065726d697373696f6e732c2a20506f7274666f6c696f4072656e616d655f706f7274666f6c696f08010c6e756de4013c506f7274666f6c696f4e756d62657200011c746f5f6e616d655d030134506f7274666f6c696f4e616d6500031c8052656e616d65732061206e6f6e2d64656661756c7420706f7274666f6c696f2e002023204572726f72731d012a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2e003423205065726d697373696f6e732c2a20506f7274666f6c696f58717569745f706f7274666f6c696f5f637573746f647904010c706964dc012c506f7274666f6c696f4964000420bc5768656e2063616c6c65642062792074686520637573746f6469616e206f662060706f7274666f6c696f5f6964602c4901616c6c6f77732072657475726e696e672074686520637573746f6479206f662074686520706f7274666f6c696f20746f2074686520706f7274666f6c696f206f776e657220756e696c61746572616c6c792e002023204572726f72735d012a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f74207468652063757272656e7420637573746f6469616e206f662060706f7274666f6c696f5f6964602e003423205065726d697373696f6e732c2a20506f7274666f6c696f606163636570745f706f7274666f6c696f5f637573746f647904011c617574685f696420010c7536340005000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e5d070000026107006107084070616c6c65745f706f7274666f6c696f444d6f7665506f7274666f6c696f4974656d00000c01187469636b6572a401185469636b6572000118616d6f756e7418011c42616c616e63650001106d656d6f8001304f7074696f6e3c4d656d6f3e00006507084c70616c6c65745f70726f746f636f6c5f6665651043616c6c040454000108486368616e67655f636f656666696369656e7404012c636f656666696369656e746d030120506f73526174696f000010c04368616e676573207468652066656520636f656666696369656e7420666f722074686520726f6f74206f726967696e2e002023204572726f7273882a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e3c6368616e67655f626173655f6665650801086f706907012850726f746f636f6c4f70000120626173655f66656518011c42616c616e6365000110ac4368616e67657320746865206120626173652066656520666f722074686520726f6f74206f726967696e2e002023204572726f7273882a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e69070c64706f6c796d6573685f636f6d6d6f6e5f7574696c69746965733070726f746f636f6c5f6665652850726f746f636f6c4f700001344c417373657452656769737465725469636b65720000002841737365744973737565000100444173736574416464446f63756d656e7473000200404173736574437265617465417373657400030060436865636b706f696e744372656174655363686564756c65000400a4436f6d706c69616e63654d616e61676572416464436f6d706c69616e6365526571756972656d656e74000500584964656e746974794364645265676973746572446964000600404964656e74697479416464436c61696d000700a44964656e746974794164645365636f6e646172794b65797357697468417574686f72697a6174696f6e0008002c5069707350726f706f736500090040436f6e747261637473507574436f6465000a006c436f72706f7261746542616c6c6f7441747461636842616c6c6f74000b00744361706974616c446973747269627574696f6e44697374726962757465000c00006d070c4070616c6c65745f7363686564756c65721870616c6c65741043616c6c040454000118207363686564756c651001107768656e100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963710701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c81050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00002870416e6f6e796d6f75736c79207363686564756c652061207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c738c2d2042617365205765696768743a2032322e3239202b202e313236202a205320c2b573302d204442205765696768743a48202020202d20526561643a204167656e64614c202020202d2057726974653a204167656e646139012d2057696c6c20757365206261736520776569676874206f662032352077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e1863616e63656c0801107768656e100138543a3a426c6f636b4e756d626572000114696e64657810010c7533320001289443616e63656c20616e20616e6f6e796d6f75736c79207363686564756c6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73902d2042617365205765696768743a2032322e3135202b20322e383639202a205320c2b573302d204442205765696768743a48202020202d20526561643a204167656e64616c202020202d2057726974653a204167656e64612c204c6f6f6b75703d012d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e387363686564756c655f6e616d6564140108696428011c5665633c75383e0001107768656e100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963710701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c81050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000228585363686564756c652061206e616d6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73882d2042617365205765696768743a2032392e36202b202e313539202a205320c2b573302d204442205765696768743a68202020202d20526561643a204167656e64612c204c6f6f6b75706c202020202d2057726974653a204167656e64612c204c6f6f6b757049012d2057696c6c20757365206261736520776569676874206f662033352077686963682073686f756c6420626520676f6f6420666f72206d6f7265207468616e203330207363686564756c65642063616c6c732c23203c2f7765696768743e3063616e63656c5f6e616d6564040108696428011c5665633c75383e0003287843616e63656c2061206e616d6564207363686564756c6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73902d2042617365205765696768743a2032342e3931202b20322e393037202a205320c2b573302d204442205765696768743a68202020202d20526561643a204167656e64612c204c6f6f6b75706c202020202d2057726974653a204167656e64612c204c6f6f6b75703d012d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e387363686564756c655f61667465721001146166746572100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963710701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c81050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000414a8416e6f6e796d6f75736c79207363686564756c652061207461736b20616674657220612064656c61792e002823203c7765696768743e5453616d65206173205b607363686564756c65605d2e2c23203c2f7765696768743e507363686564756c655f6e616d65645f6166746572140108696428011c5665633c75383e0001146166746572100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963710701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c81050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000514905363686564756c652061206e616d6564207461736b20616674657220612064656c61792e002823203c7765696768743ec453616d65206173205b607363686564756c655f6e616d6564605d2853656c663a3a7363686564756c655f6e616d6564292e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e710704184f7074696f6e0404540175030108104e6f6e6500000010536f6d650400750300000100007507084470616c6c65745f736574746c656d656e741043616c6c040454000144306372656174655f76656e75650c011c64657461696c738503013056656e756544657461696c7300011c7369676e657273910101445665633c543a3a4163636f756e7449643e00010c7479708903012456656e756554797065000014585265676973746572732061206e65772076656e75652e00a42a206064657461696c7360202d2045787472612064657461696c732061626f757420612076656e75653d012a20607369676e65727360202d204172726179206f66207369676e65727320746861742061726520616c6c6f77656420746f207369676e20726563656970747320666f7220746869732076656e7565942a206074797060202d2054797065206f662076656e7565206265696e672063726561746564507570646174655f76656e75655f64657461696c7308010869648103011c56656e7565496400011c64657461696c738503013056656e756544657461696c730001105c4564697420612076656e756527732064657461696c732e00b42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742ec02a206064657461696c7360207370656369666965732074686520757064617465642076656e75652064657461696c732e447570646174655f76656e75655f7479706508010869648103011c56656e7565496400010c7479708903012456656e756554797065000210504564697420612076656e7565277320747970652e00b42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742eb42a206074797065602073706563696669657320746865206e65772074797065206f66207468652076656e75652e3c6164645f696e737472756374696f6e14012076656e75655f69648103011c56656e7565496400013c736574746c656d656e745f7479706591030178536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e00012874726164655f64617465f801444f7074696f6e3c543a3a4d6f6d656e743e00012876616c75655f64617465f801444f7074696f6e3c543a3a4d6f6d656e743e0001106c656773950301205665633c4c65673e0003305c416464732061206e657720696e737472756374696f6e2e002c2320417267756d656e7473ec2a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e09012a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c65645d01202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e51012a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b42a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e0020232057656967687498603935305f3030305f303030202b20315f3030305f303030202a206c6567732e6c656e282960686164645f616e645f61666669726d5f696e737472756374696f6e18012076656e75655f69648103011c56656e7565496400013c736574746c656d656e745f7479706591030178536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e00012874726164655f64617465f801444f7074696f6e3c543a3a4d6f6d656e743e00012876616c75655f64617465f801444f7074696f6e3c543a3a4d6f6d656e743e0001106c656773950301205665633c4c65673e000128706f7274666f6c696f73ec01405665633c506f7274666f6c696f49643e0004348c4164647320616e642061666669726d732061206e657720696e737472756374696f6e2e002c2320417267756d656e7473ec2a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e09012a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c65645d01202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e51012a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b42a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e6d012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2075736520696e20746869732061666669726d6174696f6e732e003423205065726d697373696f6e732c2a20506f7274666f6c696f4861666669726d5f696e737472756374696f6e0c010869648d030134496e737472756374696f6e4964000128706f7274666f6c696f73ec01405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000524bc50726f766964652061666669726d6174696f6e20746f20616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e7473882a2060696460202d20496e737472756374696f6e20696420746f2061666669726d2e69012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2061666669726d207468697320696e737472756374696f6e2ef82a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f206265202061666669726d65642e003423205065726d697373696f6e732c2a20506f7274666f6c696f5077697468647261775f61666669726d6174696f6e0c010869648d030134496e737472756374696f6e4964000128706f7274666f6c696f73ec01405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000624c0576974686472617720616e2061666669726d6174696f6e20666f72206120676976656e20696e737472756374696f6e2e002c2320417267756d656e7473ec2a2060696460202d20496e737472756374696f6e20696420666f7220746861742061666669726d6174696f6e206765742077697468647261776e2e5d012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2077697468647261772061666669726d6174696f6e2e01012a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f20626520756e2d61666669726d65642e003423205065726d697373696f6e732c2a20506f7274666f6c696f4872656a6563745f696e737472756374696f6e0c010869648d030134496e737472756374696f6e4964000124706f7274666f6c696fdc012c506f7274666f6c696f496400012c6e756d5f6f665f6c65677310010c7533320007248052656a6563747320616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e7473882a2060696460202d20496e737472756374696f6e20696420746f2072656a6563742ed02a2060706f7274666f6c696f60202d20506f7274666f6c696f20746f2072656a6563742074686520696e737472756374696f6e2ed02a20606e756d5f6f665f6c65677360202d204e756d626572206f66206c65677320696e2074686520696e737472756374696f6e2e003423205065726d697373696f6e732c2a20506f7274666f6c696f5061666669726d5f776974685f726563656970747310010869648d030134496e737472756374696f6e496400013c726563656970745f64657461696c73790701dc5665633c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e000128706f7274666f6c696f73ec01405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000830cc4163636570747320616e20696e737472756374696f6e20616e6420636c61696d732061207369676e656420726563656970742e002c2320417267756d656e74737c2a2060696460202d2054617267657420696e737472756374696f6e2069642ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d42a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e8c2a20607369676e657260202d205369676e6572206f662074686520726563656970742e842a20607369676e65645f6461746160202d205369676e656420726563656970742e79012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f20616363657074207468697320696e737472756374696f6e2077697468003423205065726d697373696f6e732c2a20506f7274666f6c696f34636c61696d5f7265636569707408010869648d030134496e737472756374696f6e496400013c726563656970745f64657461696c737d0701c85265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e00092c60436c61696d732061207369676e656420726563656970742e002c2320417267756d656e7473bc2a2060696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d42a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e8c2a20607369676e657260202d205369676e6572206f662074686520726563656970742e842a20607369676e65645f6461746160202d205369676e656420726563656970742e003423205065726d697373696f6e732c2a20506f7274666f6c696f3c756e636c61696d5f72656365697074080138696e737472756374696f6e5f69648d030134496e737472756374696f6e49640001186c65675f69649d0301144c65674964000a2098556e636c61696d7320612070726576696f75736c7920636c61696d656420726563656970742e002c2320417267756d656e7473ec2a2060696e737472756374696f6e5f696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074003423205065726d697373696f6e732c2a20506f7274666f6c696f4c7365745f76656e75655f66696c746572696e670801187469636b6572a401185469636b657200011c656e61626c65641d010110626f6f6c000b20c0456e61626c6573206f722064697361626c65642076656e75652066696c746572696e6720666f72206120746f6b656e2e002c2320417267756d656e7473b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e19012a2060656e61626c656460202d20426f6f6c65616e20746861742064656369646573206966207468652066696c746572696e672073686f756c6420626520656e61626c65642e003423205065726d697373696f6e731c2a20417373657430616c6c6f775f76656e7565730801187469636b6572a401185469636b657200011876656e756573a50301305665633c56656e756549643e000c1c0d01416c6c6f7773206164646974696f6e616c2076656e75657320746f2063726561746520696e737472756374696f6e7320696e766f6c76696e6720616e2061737365742e00b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e7d012a206076656e75657360202d204172726179206f662076656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e003423205065726d697373696f6e731c2a2041737365743c646973616c6c6f775f76656e7565730801187469636b6572a401185469636b657200011876656e756573a50301305665633c56656e756549643e000d1c69015265766f6b6573207065726d697373696f6e20676976656e20746f2076656e75657320666f72206372656174696e6720696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c61722061737365742e00b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2ea5012a206076656e75657360202d204172726179206f662076656e756573207468617420617265206e6f206c6f6e67657220616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e003423205065726d697373696f6e731c2a2041737365745c6368616e67655f726563656970745f76616c696469747908012c726563656970745f75696420010c75363400012076616c69646974791d010110626f6f6c000e14fc4d61726b732061207265636569707420697373756564206279207468652063616c6c657220617320636c61696d6564206f72206e6f7420636c61696d65642ec1015468697320616c6c6f77732074686520726563656970742069737375657220746f20696e76616c696461746520616e20616c7265616479206973737565642072656365697074206f7220726576616c696461746520616e20616c726561647920636c61696d656420726563656970742e00ac2a2060726563656970745f75696460202d20556e69717565204944206f662074686520726563656970742eac2a206076616c696469747960202d204e65772076616c6964697479206f662074686520726563656970742e74657865637574655f7363686564756c65645f696e737472756374696f6e08010869648d030134496e737472756374696f6e496400012c5f6c6567735f636f756e7410010c753332000f048101526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f20657865637574652061207363686564756c656420736574746c656d656e7420696e737472756374696f6e2e5872657363686564756c655f696e737472756374696f6e04010869648d030134496e737472756374696f6e49640010288452657363686564756c65732061206661696c656420696e737472756374696f6e2e002c2320417267756d656e7473b42a2060696460202d2054617267657420696e737472756374696f6e20696420746f2072657363686564756c652e003423205065726d697373696f6e732c2a20506f7274666f6c696f002023204572726f72733d012a2060496e737472756374696f6e4e6f744661696c656460202d20496e737472756374696f6e206e6f7420696e2061206661696c6564207374617465206f7220646f6573206e6f742065786973742e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e79070000027d07007d07084470616c6c65745f736574746c656d656e74385265636569707444657461696c7308244163636f756e7449640100444f6666436861696e5369676e61747572650181070014012c726563656970745f75696420010c7536340001186c65675f69649d0301144c656749640001187369676e65720001244163636f756e7449640001247369676e6174757265810701444f6666436861696e5369676e61747572650001206d65746164617461a103013c526563656970744d6574616461746100008107082873705f72756e74696d65384d756c74695369676e617475726500010c1c456432353531390400c9060148656432353531393a3a5369676e61747572650000001c537232353531390400f9060148737232353531393a3a5369676e617475726500010014456364736104008507014065636473613a3a5369676e61747572650002000085070c1c73705f636f7265146563647361245369676e617475726500000400110701205b75383b2036355d00008907084470616c6c65745f737461746973746963731043616c6c040454000110506164645f7472616e736665725f6d616e616765720801187469636b6572a401185469636b65720001506e65775f7472616e736665725f6d616e61676572ad03013c5472616e736665724d616e6167657200003870416464732061206e6577207472616e73666572206d616e616765722e002c2320417267756d656e7473c5012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e11012a20607469636b657260207469636b657220666f7220776869636820746865207472616e73666572206d616e616765727320617265206265696e6720757064617465642ed82a20606e65775f7472616e736665725f6d616e6167657260205472616e73666572206d616e61676572206265696e672061646465642e002023204572726f7273f02a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722e65012a20604475706c69636174655472616e736665724d616e616765726020696620606e65775f7472616e736665725f6d616e616765726020697320616c726561647920656e61626c656420666f7220746865207469636b65722e35012a20605472616e736665724d616e61676572734c696d697452656163686564602069662074686520607469636b65726020616c726561647920686173206d617820544d73206174746163686564003423205065726d697373696f6e731c2a2041737365745c72656d6f76655f7472616e736665725f6d616e616765720801187469636b6572a401185469636b65720001407472616e736665725f6d616e61676572ad03013c5472616e736665724d616e616765720001346c52656d6f7665732061207472616e73666572206d616e616765722e002c2320417267756d656e7473c5012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e11012a20607469636b657260207469636b657220666f7220776869636820746865207472616e73666572206d616e616765727320617265206265696e6720757064617465642ed02a20607472616e736665725f6d616e6167657260205472616e73666572206d616e61676572206265696e672072656d6f7665642e002023204572726f7273f02a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722ea9012a20605472616e736665724d616e616765724d697373696e6760206966206061737365745f636f6d706c69616e63656020636f6e7461696e73206d756c7469706c6520656e74726965732077697468207468652073616d652060726571756972656d656e745f6964602e003423205065726d697373696f6e731c2a204173736574546164645f6578656d707465645f656e7469746965730c01187469636b6572a401185469636b65720001407472616e736665725f6d616e61676572ad03013c5472616e736665724d616e616765720001446578656d707465645f656e746974696573310101305665633c53636f706549643e0002349c4578656d707420656e7469746965732066726f6d2061207472616e73666572206d616e61676572002c2320417267756d656e7473c5012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e05012a20607469636b657260207469636b657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e55012a20607472616e736665725f6d616e6167657260205472616e73666572206d616e6167657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e39012a20606578656d707465645f656e746974696573602053636f706549647320666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e002023204572726f7273f02a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722e003423205065726d697373696f6e731c2a2041737365746072656d6f76655f6578656d707465645f656e7469746965730c01187469636b6572a401185469636b65720001407472616e736665725f6d616e61676572ad03013c5472616e736665724d616e61676572000120656e746974696573310101305665633c53636f706549643e000334e472656d6f766520656e7469746965732066726f6d206578656d7074696f6e206c697374206f662061207472616e73666572206d616e61676572002c2320417267756d656e7473c5012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e05012a20607469636b657260207469636b657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e55012a20607472616e736665725f6d616e6167657260205472616e73666572206d616e6167657220666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e19012a206073636f70655f696473602053636f706549647320666f7220776869636820746865206578656d7074696f6e206c697374206973206265696e67206d6f6469666965642e002023204572726f7273f02a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e8d07082870616c6c65745f73746f1043616c6c040454000118446372656174655f66756e647261697365722801486f66666572696e675f706f7274666f6c696fdc012c506f7274666f6c696f49640001386f66666572696e675f6173736574a401185469636b657200014472616973696e675f706f7274666f6c696fdc012c506f7274666f6c696f496400013472616973696e675f6173736574a401185469636b65720001147469657273910701385665633c5072696365546965723e00012076656e75655f69648103011c56656e756549640001147374617274f801444f7074696f6e3c543a3a4d6f6d656e743e00010c656e64f801444f7074696f6e3c543a3a4d6f6d656e743e0001486d696e696d756d5f696e766573746d656e7418011c42616c616e636500013c66756e647261697365725f6e616d65bd03013846756e647261697365724e616d65000040604372656174652061206e65772066756e647261697365722e000d012a20606f66666572696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e672074686520606f66666572696e675f6173736574602ea42a20606f66666572696e675f617373657460202d204173736574206265696e67206f6666657265642e05012a206072616973696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e6720746865206072616973696e675f6173736574602e35012a206072616973696e675f617373657460202d204173736574206265696e672065786368616e67656420666f7220606f66666572696e675f617373657460206f6e20696e766573746d656e742ee82a2060746965727360202d20507269636520746965727320746f2063686172676520696e766573746f7273206f6e20696e766573746d656e742ea82a206076656e75655f696460202d2056656e756520746f2068616e646c6520736574746c656d656e742e4d012a2060737461727460202d2046756e647261697365722073746172742074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c20737461727420696d6d6564696174656c792e29012a2060656e6460202d2046756e6472616973657220656e642074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c206e65766572206578706972652ecd012a20606d696e696d756d5f696e766573746d656e7460202d204d696e696d756d20616d6f756e74206f66206072616973696e675f617373657460207468617420616e20696e766573746f72206e6565647320746f207370656e6420746f20696e7665737420696e20746869732072616973652ef02a206066756e647261697365725f6e616d6560202d2046756e64726169736572206e616d652c206f6e6c79207573656420696e20746865205549732e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f18696e766573741c0150696e766573746d656e745f706f7274666f6c696fdc012c506f7274666f6c696f496400014466756e64696e675f706f7274666f6c696fdc012c506f7274666f6c696f49640001386f66666572696e675f6173736574a401185469636b65720001086964b903013046756e64726169736572496400013c70757263686173655f616d6f756e7418011c42616c616e63650001246d61785f70726963659907013c4f7074696f6e3c42616c616e63653e00011c726563656970749d0701e84f7074696f6e3c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e0001305c496e7665737420696e20612066756e647261697365722e0041012a2060696e766573746d656e745f706f7274666f6c696f60202d20506f7274666f6c696f207468617420606f66666572696e675f6173736574602077696c6c206265206465706f736974656420696e2e01012a206066756e64696e675f706f7274666f6c696f60202d20506f7274666f6c696f20746861742077696c6c2066756e642074686520696e766573746d656e742ea02a20606f66666572696e675f617373657460202d20417373657420746f20696e7665737420696e2eac2a2060696460202d204944206f66207468652066756e6472616973657220746f20696e7665737420696e2ef42a206070757263686173655f616d6f756e7460202d20416d6f756e74206f6620606f66666572696e675f61737365746020746f2070757263686173652eb9012a20606d61785f707269636560202d204d6178696d756d20707269636520746f207061792070657220756e6974206f6620606f66666572696e675f6173736574602c20496620604e6f6e6560746865726520617265206e6f20636f6e73747261696e7473206f6e2070726963652e69012a20607265636569707460202d204f66662d636861696e207265636569707420746f2075736520696e7374656164206f66206f6e2d636861696e2062616c616e636520696e206066756e64696e675f706f7274666f6c696f602e003423205065726d697373696f6e732c2a20506f7274666f6c696f44667265657a655f66756e647261697365720801386f66666572696e675f6173736574a401185469636b65720001086964b903013046756e64726169736572496400021c50467265657a6520612066756e647261697365722e00942a20606f66666572696e675f617373657460202d20417373657420746f20667265657a652ea02a2060696460202d204944206f66207468652066756e6472616973657220746f20667265657a652e003423205065726d697373696f6e731c2a2041737365744c756e667265657a655f66756e647261697365720801386f66666572696e675f6173736574a401185469636b65720001086964b903013046756e64726169736572496400031c58556e667265657a6520612066756e647261697365722e009c2a20606f66666572696e675f617373657460202d20417373657420746f20756e667265657a652ea82a2060696460202d204944206f66207468652066756e6472616973657220746f20756e667265657a652e003423205065726d697373696f6e731c2a204173736574606d6f646966795f66756e647261697365725f77696e646f771001386f66666572696e675f6173736574a401185469636b65720001086964b903013046756e6472616973657249640001147374617274200124543a3a4d6f6d656e7400010c656e64f801444f7074696f6e3c543a3a4d6f6d656e743e000424b44d6f64696679207468652074696d652077696e646f7720612066756e647261697365722069732061637469766500942a20606f66666572696e675f617373657460202d20417373657420746f206d6f646966792ea02a2060696460202d204944206f66207468652066756e6472616973657220746f206d6f646966792ea02a2060737461727460202d204e6577207374617274206f66207468652066756e647261697365722eb82a2060656e6460202d204e657720656e64206f66207468652066756e6472616973657220746f206d6f646966792e003423205065726d697373696f6e731c2a2041737365741073746f700801386f66666572696e675f6173736574a401185469636b65720001086964b903013046756e64726169736572496400051c4853746f7020612066756e647261697365722e008c2a20606f66666572696e675f617373657460202d20417373657420746f2073746f702e982a2060696460202d204944206f66207468652066756e6472616973657220746f2073746f702e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e91070000029507009507082870616c6c65745f73746f245072696365546965720000080114746f74616c18011c42616c616e6365000114707269636518011c42616c616e63650000990704184f7074696f6e04045401180108104e6f6e6500000010536f6d6504001800000100009d0704184f7074696f6e040454017d070108104e6f6e6500000010536f6d6504007d070000010000a107083c70616c6c65745f74726561737572791043616c6c0404540001083064697362757273656d656e7404013462656e65666963696172696573a50701785665633c42656e65666963696172793c42616c616e63654f663c543e3e3e00001851014974207472616e73666572732062616c616e6365732066726f6d20747265617375727920746f2065616368206f662062656e6566696369617269657320616e642074686520737065636966696320616d6f756e7444666f722065616368206f66207468656d2e001c23204572726f72c42a20604261644f726967696e603a204f6e6c7920726f6f742063616e2065786563757465207472616e73616374696f6e2e5d012a2060496e73756666696369656e7442616c616e6365603a2049662074726561737572792062616c616e636573206973206e6f7420656e6f75676820746f20636f76657220616c6c2062656e656669636961726965732e347265696d62757273656d656e74040118616d6f756e7418013042616c616e63654f663c543e00010c1d014974207472616e7366657273207468652073706563696669632060616d6f756e74602066726f6d20606f726967696e60206163636f756e7420696e746f2074726561737572792e0049014f6e6c79206163636f756e747320776869636820617265206173736f63696174656420746f20616e206964656e746974792063616e206d616b65206120646f6e6174696f6e20746f2074726561737572792e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ea507000002a90700a907084c706f6c796d6573685f7072696d6974697665732c42656e6566696369617279041c42616c616e636501180008010869647c01284964656e746974794964000118616d6f756e7418011c42616c616e63650000ad07083870616c6c65745f7574696c6974791043616c6c04045400011014626174636804011463616c6c73b10701605665633c3c5420617320436f6e6669673e3a3a43616c6c3e000048c44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e00e8546869732077696c6c206578656375746520756e74696c20746865206669727374206f6e65206661696c7320616e64207468656e2073746f702e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e00202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e00bd01546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e31016576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e207468655501604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d6164654d01616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c65746564604c6576656e74206973206465706f73697465642e3062617463685f61746f6d696304011463616c6c73b10701605665633c3c5420617320436f6e6669673e3a3a43616c6c3e00014cc44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e001501546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c2073746f7070696e6720617420746865206669727374206661696c7572652cc0696e207768696368206361736520746865207374617465206368616e6765732061726520726f6c6c6564206261636b2e25014f6e206661696c7572652c20616e206576656e7420604261746368496e746572727570746564286661696c7572655f6964782c206572726f722960206973206465706f73697465642e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e00202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e001501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef4546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ee4496620616e792063616c6c206661696c65642c207468656e20604261746368496e74657272757074656460206973206465706f73697465642e1501496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e4062617463685f6f7074696d697374696304011463616c6c73b10701605665633c3c5420617320436f6e6669673e3a3a43616c6c3e000254c44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e000101546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c20697272657370656374697665206f66206661696c757265732e0901416e79206661696c757265732077696c6c20626520617661696c61626c6520696e2061206042617463684f7074696d69737469634661696c656460206576656e742e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e0000202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e001501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef4546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ef8496620616e792063616c6c206661696c65642c207468656e206042617463684f7074696d69737469634661696c656460206973206465706f73697465642cfc77697468206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c2061732077656c6c206173206120766563746f72286f66206572726f72732e1501496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e2072656c61795f74780c0118746172676574000130543a3a4163636f756e7449640001247369676e617475726581070150543a3a4f6666436861696e5369676e617475726500011063616c6cb507017c556e6971756543616c6c3c3c5420617320436f6e6669673e3a3a43616c6c3e000330a052656c617920612063616c6c20666f722061207461726765742066726f6d20616e206f726967696e00510152656c6179696e6720696e207468697320636f6e746578742072656665727320746f20746865206162696c697479206f66206f726967696e20746f206d616b6520612063616c6c206f6e20626568616c66206f661c7461726765742e00684665657320617265206368617267656420746f206f726967696e00302320506172616d6574657273842d2060746172676574603a204163636f756e7420746f2062652072656c61796564e82d20607369676e6174757265603a205369676e61747572652066726f6d2074617267657420617574686f72697a696e67207468652072656c6179c02d206063616c6c603a2043616c6c20746f2062652072656c61796564206f6e20626568616c66206f6620746172676574000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652eb107000002810500b507083870616c6c65745f7574696c69747928556e6971756543616c6c040443018105000801146e6f6e6365200148417574686f72697a6174696f6e4e6f6e636500011063616c6c81050118426f783c433e0000b907082c70616c6c65745f626173651043616c6c0404540001000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ebd07085870616c6c65745f65787465726e616c5f6167656e74731043616c6c040454000118306372656174655f67726f75700801187469636b6572a401185469636b65720001147065726d73b4015045787472696e7369635065726d697373696f6e73000048e443726561746573206120637573746f6d206167656e742067726f7570202841472920666f722074686520676976656e20607469636b6572602e00d45468652041472077696c6c206861766520746865207065726d697373696f6e7320617320676976656e20627920607065726d73602e290154686973206e6577204147206973207468656e2061737369676e656420606964203d204147496453657175656e63653a3a6765742829202b20316020617320697473206041474964602c3901776869636820796f752063616e2075736520617320604167656e7447726f75703a3a437573746f6d2869642960207768656e20616464696e67206167656e747320666f7220607469636b6572602e002c2320417267756d656e74739c2d20607469636b65726020746f206164642074686520637573746f6d2067726f757020666f722e902d20607065726d7360207468617420746865206e65772041472077696c6c20686176652e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e21012d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672e25012d2060436f756e7465724f766572666c6f776020696620604147496453657175656e63653a3a6765742829202b20316020776f756c642065786365656420607533323a3a4d4158602e003423205065726d697373696f6e731c2a2041737365741c2a204167656e74547365745f67726f75705f7065726d697373696f6e730c01187469636b6572a401185469636b6572000108696419010110414749640001147065726d73b4015045787472696e7369635065726d697373696f6e7300013c51015570646174657320746865207065726d697373696f6e73206f662074686520637573746f6d204147206964656e74696669656420627920606964602c20666f722074686520676976656e20607469636b6572602e002c2320417267756d656e7473902d20607469636b6572602074686520637573746f6d2041472062656c6f6e677320746f2ea42d206069646020666f722074686520637573746f6d2041472077697468696e20607469636b6572602e942d20607065726d736020746f207570646174652074686520637573746f6d20414720746f2e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e21012d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672ecc2d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472e003423205065726d697373696f6e731c2a2041737365741c2a204167656e743072656d6f76655f6167656e740801187469636b6572a401185469636b65720001146167656e747c01284964656e7469747949640002389c52656d6f76652074686520676976656e20606167656e74602066726f6d20607469636b6572602e002c2320417267756d656e7473a82d20607469636b6572602074686174206861732074686520606167656e746020746f2072656d6f76652e802d20606167656e7460206f6620607469636b65726020746f2072656d6f76652e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ed82d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602ee82d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e746020697320746865206c6173742066756c6c206f6e652e003423205065726d697373696f6e731c2a2041737365741c2a204167656e742061626469636174650401187469636b6572a401185469636b657200032c804162646963617465206167656e747368697020666f7220607469636b6572602e002c2320417267756d656e7473ac2d20607469636b657260206f66207768696368207468652063616c6c657220697320616e206167656e742e002023204572726f7273e42d20604e6f74416e4167656e7460206966207468652063616c6c6572206973206e6f7420616e206167656e74206f6620607469636b6572602efc2d206052656d6f76696e674c61737446756c6c4167656e7460206966207468652063616c6c657220697320746865206c6173742066756c6c206167656e742e003423205065726d697373696f6e731c2a204173736574306368616e67655f67726f75700c01187469636b6572a401185469636b65720001146167656e747c01284964656e74697479496400011467726f7570150101284167656e7447726f7570000440ec4368616e676520746865206167656e742067726f7570207468617420606167656e74602062656c6f6e677320746f20696e20607469636b6572602e002c2320417267756d656e7473802d20607469636b6572602074686174206861732074686520606167656e74602eb82d20606167656e7460206f6620607469636b65726020746f206368616e6765207468652067726f757020666f722ec82d206067726f757060207468617420606167656e74602077696c6c2062656c6f6e6720746f20696e20607469636b6572602e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ecc2d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472ed82d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602e2d012d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e7460207761732061206046756c6c60206f6e6520616e64206973206265696e672064656d6f7465642e003423205065726d697373696f6e731c2a2041737365741c2a204167656e744c6163636570745f6265636f6d655f6167656e7404011c617574685f696420010c753634000540010141636365707420616e20617574686f72697a6174696f6e20627920616e206167656e742022416c696365222077686f206973737565642060617574685f696460d8746f20616c736f206265636f6d6520616e206167656e74206f6620746865207469636b657220416c696365207370656369666965642e002c2320417267756d656e7473d02d2060617574685f696460206964656e74696679696e672074686520617574686f72697a6174696f6e20746f206163636570742e002023204572726f727345012d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e35012d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f69646020697320666f7220616e206175746820746861742068617320657870697265642e4d012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f7420666f72206120604265636f6d654167656e7460206175746820747970652e25012d2060556e617574686f72697a65644167656e74602069662022416c69636522206973206e6f74207065726d697373696f6e656420746f2070726f766964652074686520617574682e0d012d20604e6f53756368414760206966207468652067726f757020726566657272656420746f206120637573746f6d207468617420646f6573206e6f742065786973742e0d012d2060416c7265616479416e4167656e7460206966207468652063616c6c657220697320616c726561647920616e206167656e74206f6620746865207469636b65722e003423205065726d697373696f6e731c2a204167656e740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ec107083870616c6c65745f72656c617965721043616c6c040454000118387365745f706179696e675f6b6579080120757365725f6b6579000130543a3a4163636f756e74496400012c706f6c79785f6c696d697418011c42616c616e6365000020bd014372656174657320616e20617574686f72697a6174696f6e20746f20616c6c6f772060757365725f6b65796020746f20616363657074207468652063616c6c65722028606f726967696e203d3d20706179696e675f6b6579602920617320746865697220737562736964697365722e002c2320417267756d656e74739c2d2060757365725f6b657960207468652075736572206b657920746f207375627369646973652ee42d2060706f6c79785f6c696d6974602074686520696e697469616c20504f4c5958206c696d697420666f72207468697320737562736964792e002023204572726f727331012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e446163636570745f706179696e675f6b657904011c617574685f696420010c753634000138944163636570747320612060706179696e675f6b65796020617574686f72697a6174696f6e2e002c2320417267756d656e7473e82d2060617574685f6964602074686520617574686f72697a6174696f6e20696420746f2061636365707420612060706179696e675f6b6579602e002023204572726f727345012d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e2d012d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f6964602074686520617574686f72697a6174696f6e2068617320657870697265642e6d012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f742061206041646452656c61796572506179696e674b65796020617574686f72697a6174696f6e2ea5012d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f206163636570742074686520617574686f72697a6174696f6e20666f72207468652060757365725f6b6579602ed9012d20604e6f74417574686f72697a6564466f72506179696e674b6579602069662074686520617574686f72697a6174696f6e20776173206372656174656420616e206964656e7469747920646966666572656e742066726f6d207468652060706179696e675f6b6579602773206964656e746974792e31012d2060557365724b65794364644d697373696e6760206966207468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e41012d2060506179696e674b65794364644d697373696e6760206966207468652060706179696e675f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e4472656d6f76655f706179696e675f6b6579080120757365725f6b6579000130543a3a4163636f756e744964000128706179696e675f6b6579000130543a3a4163636f756e74496400022cac52656d6f766573207468652060706179696e675f6b6579602066726f6d20612060757365725f6b6579602e002c2320417267756d656e7473d42d2060757365725f6b657960207468652075736572206b657920746f2072656d6f76652074686520737562736964792066726f6d2e09012d2060706179696e675f6b6579602074686520706179696e67206b6579207468617420776173207375627369646973696e67207468652060757365725f6b6579602e002023204572726f72738d012d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2072656d6f766520746865207375627369647920666f72207468652060757365725f6b6579602ef82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e31012d20604e6f74506179696e674b657960206966207468652060706179696e675f6b65796020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e487570646174655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e74496400012c706f6c79785f6c696d697418011c42616c616e6365000328b4557064617465732074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e35012d2060706f6c79785f6c696d6974602074686520616d6f756e74206f6620504f4c595820617661696c61626c6520666f72207375627369646973696e67207468652060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e50696e6372656173655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e744964000118616d6f756e7418011c42616c616e636500042cb8496e6372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e0d012d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2061646420746f207468652073756273696479206f662060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e3d012d20604f7665726c6f776020696620746865207375627369647927732072656d61696e696e6720504f4c595820776f756c642068617665206f766572666c6f7765642060753132383a3a4d4158602e5064656372656173655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e744964000118616d6f756e7418011c42616c616e636500052cb844656372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e21012d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2072656d6f76652066726f6d207468652073756273696479206f662060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e09012d20604f7665726c6f776020696620746865207375627369647920686173206c657373207468656e2060616d6f756e746020504f4c59582072656d61696e696e672e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ec507083870616c6c65745f726577617264731043616c6c04045400010840636c61696d5f69746e5f7265776172640c01387265776172645f61646472657373000130543a3a4163636f756e74496400012c69746e5f61646472657373000130543a3a4163636f756e7449640001247369676e617475726581070150543a3a4f6666436861696e5369676e617475726500003450436c61696d20616e2049544e207265776172642e0030232320417267756d656e7473d82a206069746e5f61646472657373602073706563696679696e672074686520617761726465642061646472657373206f6e2049544e2ed42a20607369676e6174757265602061757468656e7469636174696e672074686520636c61696d20746f20746865207265776172642e7501202020546865207369676e61747572652073686f756c6420636f6e7461696e20607265776172645f616464726573736020666f6c6c6f7765642062792074686520737566666978206022636c61696d5f69746e5f72657761726422602cb8202020616e64206d7573742068617665206265656e207369676e6564206279206069746e5f61646472657373602e002023204572726f727345012a2060496e73756666696369656e7442616c616e636560202d2049746e20726577617264732068617320696e73756666696369656e742066756e647320746f20697373756520746865207265776172642e31012a2060496e76616c69645369676e617475726560202d20607369676e6174757265602068616420616e20696e76616c6964207369676e6572206f7220696e76616c6964206d6573736167652e69012a206049746e526577617264416c7265616479436c61696d656460202d205265776172642069737375656420746f20746865206069746e5f61646472657373602068617320616c7265616479206265656e20636c61696d65642e89012a2060556e6b6e6f776e49746e4164647265737360202d206069746e5f6164647265737360206973206e6f7420696e207468652072657761726473207461626c6520616e6420686173206e6f2072657761726420746f20626520636c61696d65642e547365745f69746e5f7265776172645f73746174757308012c69746e5f61646472657373000130543a3a4163636f756e744964000118737461747573c907013c49746e5265776172645374617475730001000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ec907083870616c6c65745f726577617264733c49746e52657761726453746174757300010824556e636c61696d6564040018011c42616c616e63650000001c436c61696d656400010000cd07084470616c6c65745f746573745f7574696c731043616c6c0404540001103072656769737465725f64696408010c7569642101012c496e766573746f725569640001387365636f6e646172795f6b657973f104017c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e0000284d0147656e6572617465732061206e657720604964656e7469747949446020666f72207468652063616c6c65722c20616e642069737375657320612073656c662d67656e6572617465642043444420636c61696d2e00f05468652063616c6c6572206163636f756e742077696c6c20626520746865207072696d617279206b6579206f662074686174206964656e746974792e5d01466f722065616368206163636f756e74206f6620607365636f6e646172795f6b657973602c2061206e657720604a6f696e4964656e746974796020617574686f72697a6174696f6e20697320637265617465642c20736f410165616368206f66207468656d2077696c6c206e65656420746f20616363657074206974206265666f7265206265636f6d652070617274206f662074686973206e657720604964656e746974794944602e002023204572726f7273d5012d2060416c72656164794c696e6b656460206966207468652063616c6c6572206163636f756e74206f7220696620616e79206f662074686520676976656e20607365636f6e646172795f6b657973602068617320616c7265616479206c696e6b656420746f20616e20604964656e746974794944604d012d20605365636f6e646172794b657973436f6e7461696e5072696d6172794b65796020696620607365636f6e646172795f6b6579736020636f6e7461696e73207468652063616c6c6572206163636f756e742ee82d2060446964416c726561647945786973747360206966206175746f2d67656e6572617465642044494420616c7265616479206578697374732e546d6f636b5f6364645f72656769737465725f6469640401387461726765745f6163636f756e74000130543a3a4163636f756e7449640001303d015265676973746572732061206e6577204964656e7469747920666f722074686520607461726765745f6163636f756e746020616e642069737375657320612043444420636c61696d20746f2069742e510154686520496e766573746f72205549442069732067656e6572617465642064657465726d696e6973746963616c6c79206279207468652068617368206f66207468652067656e6572617465642044494420616e64b07468656e2077652066697820697420746f20626520636f6d706c69616e74207769746820555549442076342e00142320536565dc2d205b52464320343132323a20555549445d2868747470733a2f2f746f6f6c732e696574662e6f72672f68746d6c2f7266633431323229002423204661696c75726549012d20606f726967696e602068617320746f20626520616e20616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792e286765745f6d795f64696400020498456d69747320616e206576656e7420776974682063616c6c65722773206964656e746974792e286765745f6364645f6f660401086f66000130543a3a4163636f756e744964000304d4456d69747320616e206576656e7420776974682063616c6c65722773206964656e7469747920616e6420434444207374617475732e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ed107084070616c6c65745f636f6d6d697474656534506f6c796d657368566f746573042c426c6f636b4e756d626572011000100114696e64657810013450726f706f73616c496e646578000110617965733101013c5665633c4964656e7469747949643e0001106e6179733101013c5665633c4964656e7469747949643e0001186578706972794501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0000d507084070616c6c65745f636f6d6d69747465651c56657273696f6e0000040008010875380000d907084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e00dd07083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00e107084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e00e507083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00e907084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e00ed07083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00f10700000408009800f50700000408002000f9070000040800810500fd070000040c009820000108083c70616c6c65745f6d756c74697369673c50726f706f73616c44657461696c73040454012000140124617070726f76616c7320010c75363400012872656a656374696f6e7320010c7536340001187374617475730508013850726f706f73616c537461747573000118657870697279f801244f7074696f6e3c543e0001286175746f5f636c6f73651d010110626f6f6c00000508083c70616c6c65745f6d756c74697369673850726f706f73616c5374617475730001141c496e76616c69640000003c4163746976654f72457870697265640001004c457865637574696f6e5375636365737366756c0002003c457865637574696f6e4661696c65640003002052656a6563746564000400000908083c70616c6c65745f6d756c7469736967144572726f7204045400015c284364644d697373696e67000004c4546865206d756c7469736967206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e3c50726f706f73616c4d697373696e67000104705468652070726f706f73616c20646f6573206e6f742065786973742e344465636f64696e674572726f72000204444d756c746973696720616464726573732e244e6f5369676e6572730003042c4e6f207369676e6572732e7452657175697265645369676e6174757265734f75744f66426f756e6473000404a0546f6f20666577206f7220746f6f206d616e79207265717569726564207369676e6174757265732e284e6f74415369676e6572000504344e6f742061207369676e65722e384e6f537563684d756c7469736967000604444e6f2073756368206d756c74697369672e404e6f74456e6f7567685369676e6572730007044c4e6f7420656e6f756768207369676e6572732e344e6f6e63654f766572666c6f770008044441206e6f6e6365206f766572666c6f772e30416c7265616479566f74656400090438416c726561647920766f7465642e38416c7265616479415369676e6572000a0444416c72656164792061207369676e65722e444661696c6564546f436861726765466565000b04a0436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e484964656e746974794e6f7443726561746f72000c04c04964656e746974792070726f7669646564206973206e6f7420746865206d756c746973696727732063726561746f722e404368616e67654e6f74416c6c6f776564000d0425014368616e67696e67206d756c746973696720706172616d6574657273206e6f7420616c6c6f7765642073696e6365206d756c74697369672069732061207072696d617279206b65792e4c5369676e6572416c72656164794c696e6b6564000e0411015369676e657220697320616e206163636f756e74206b6579207468617420697320616c7265616479206173736f63696174656420776974682061206d756c74697369672e584d697373696e6743757272656e744964656e74697479000f045843757272656e7420444944206973206d697373696e67344e6f745072696d6172794b6579001004f45468652066756e6374696f6e2063616e206f6e6c792062652063616c6c656420627920746865207072696d617279206b6579206f6620746865206469645c50726f706f73616c416c726561647952656a65637465640011047450726f706f73616c207761732072656a6563746564206561726c6965723c50726f706f73616c457870697265640012045050726f706f73616c2068617320657870697265645c50726f706f73616c416c726561647945786563757465640013047450726f706f73616c20776173206578656375746564206561726c6965725c4d756c74697369674d697373696e674964656e746974790014049c4d756c7469736967206973206e6f7420617474616368656420746f20616e206964656e74697479404661696c6564546f5363686564756c65001504785363686564756c696e67206f6620612070726f706f73616c206661696c7338546f6f4d616e795369676e6572730016046c4d6f7265207369676e657273207468616e2072657175697265642e045c4d756c7469736967206d6f64756c65206572726f72732e0d08000004080010001108083470616c6c65745f62726964676538427269646765547844657461696c042c426c6f636b4e756d626572011000100118616d6f756e7418011c42616c616e636500011873746174757315080138427269646765547853746174757300013c657865637574696f6e5f626c6f636b10012c426c6f636b4e756d62657200011c74785f686173682401104832353600001508083470616c6c65745f62726964676538427269646765547853746174757300011418416273656e740000001c50656e64696e67040008010875380001001846726f7a656e0002002854696d656c6f636b65640003001c48616e646c6564000400001908000004081810001d08083470616c6c65745f6272696467651c56657273696f6e00000400080108753800002108083470616c6c65745f627269646765144572726f7204045400013440436f6e74726f6c6c65724e6f74536574000004a45468652062726964676520636f6e74726f6c6c65722061646472657373206973206e6f74207365742e2442616443616c6c6572000104d8546865206f726967696e206973206e6f742074686520636f6e74726f6c6c6572206f72207468652061646d696e20616464726573732e2042616441646d696e00020490546865206f726967696e206973206e6f74207468652061646d696e20616464726573732e284e6f56616c69644364640003048c54686520726563697069656e742044494420686173206e6f2076616c6964204344442e5850726f706f73616c416c726561647948616e646c6564000404390154686520627269646765207472616e73616374696f6e2070726f706f73616c2068617320616c7265616479206265656e2068616e646c656420616e64207468652066756e6473206d696e7465642e30556e617574686f72697a656400050494556e617574686f72697a656420746f20706572666f726d20616e206f7065726174696f6e2e1846726f7a656e000604745468652062726964676520697320616c72656164792066726f7a656e2e244e6f7446726f7a656e0007046454686520627269646765206973206e6f742066726f7a656e2e2046726f7a656e547800080468546865207472616e73616374696f6e2069732066726f7a656e2e484272696467654c696d697452656163686564000904e4546865206964656e746974792773206d696e74656420746f74616c2068617320726561636865642074686520627269646765206c696d69742e204f766572666c6f77000a04ac546865206964656e746974792773206d696e74656420746f74616c20686173206f766572666c6f7765642e384469766973696f6e42795a65726f000b04cc54686520626c6f636b20696e74657276616c206475726174696f6e206973207a65726f2e2043616e6e6f74206469766964652e3054696d656c6f636b65645478000c0478546865207472616e73616374696f6e2069732074696d656c6f636b65642e002508083870616c6c65745f7374616b696e67345374616b696e674c656467657208244163636f756e74496401001c42616c616e636501180014011473746173680001244163636f756e744964000114746f74616cd101011c42616c616e6365000118616374697665d101011c42616c616e6365000124756e6c6f636b696e67290801645665633c556e6c6f636b4368756e6b3c42616c616e63653e3e00013c636c61696d65645f72657761726473d90301345665633c457261496e6465783e000029080000022d08002d08083870616c6c65745f7374616b696e672c556e6c6f636b4368756e6b041c42616c616e636501180008011476616c7565d101011c42616c616e636500010c6572610d040120457261496e64657800003108083870616c6c65745f7374616b696e672c4e6f6d696e6174696f6e7304244163636f756e7449640100000c011c74617267657473910101385665633c4163636f756e7449643e0001307375626d69747465645f696e100120457261496e646578000128737570707265737365641d010110626f6f6c00003508083870616c6c65745f7374616b696e6734416374697665457261496e666f0000080114696e646578100120457261496e6465780001147374617274f8012c4f7074696f6e3c7536343e00003908000004081000003d08083870616c6c65745f7374616b696e673c457261526577617264506f696e747304244163636f756e744964010000080114746f74616c10012c526577617264506f696e74000128696e646976696475616c4108018042547265654d61703c4163636f756e7449642c20526577617264506f696e743e00004108042042547265654d617008044b010004560110000400450800000045080000020d08004908083870616c6c65745f7374616b696e671c466f7263696e67000110284e6f74466f7263696e6700000020466f7263654e657700010024466f7263654e6f6e650002002c466f726365416c77617973000300004d080000025108005108083870616c6c65745f7374616b696e6738556e6170706c696564536c61736808244163636f756e74496401001c42616c616e636501180014012476616c696461746f720001244163636f756e74496400010c6f776e18011c42616c616e63650001186f7468657273550801645665633c284163636f756e7449642c2042616c616e6365293e0001247265706f7274657273910101385665633c4163636f756e7449643e0001187061796f757418011c42616c616e6365000055080000025908005908000004080018005d08000004089501180061080c3870616c6c65745f7374616b696e6720736c617368696e6734536c617368696e675370616e7300001001287370616e5f696e6465781001245370616e496e6465780001286c6173745f7374617274100120457261496e6465780001486c6173745f6e6f6e7a65726f5f736c617368100120457261496e6465780001147072696f72d90301345665633c457261496e6465783e000065080c3870616c6c65745f7374616b696e6720736c617368696e67285370616e5265636f7264041c42616c616e636501180008011c736c617368656418011c42616c616e6365000120706169645f6f757418011c42616c616e636500006908083870616c6c65745f7374616b696e6738456c656374696f6e526573756c7408244163636f756e74496401001c42616c616e63650118000c013c656c65637465645f73746173686573910101385665633c4163636f756e7449643e0001246578706f7375726573c50101b85665633c284163636f756e7449642c204578706f737572653c4163636f756e7449642c2042616c616e63653e293e00011c636f6d707574658d01013c456c656374696f6e436f6d7075746500006d08083870616c6c65745f7374616b696e6738456c656374696f6e537461747573042c426c6f636b4e756d6265720110010818436c6f736564000000104f70656e040010012c426c6f636b4e756d626572000100007108083870616c6c65745f7374616b696e67645065726d697373696f6e65644964656e7469747950726566730000080138696e74656e6465645f636f756e7410010c75333200013472756e6e696e675f636f756e7410010c75333200007508083870616c6c65745f7374616b696e672052656c65617365730001203456315f305f30416e6369656e740000001856325f305f300001001856335f305f300002001856345f305f300003001856355f305f300004001856365f305f300005001856365f305f310006001856375f305f30000700007908083870616c6c65745f7374616b696e67144572726f720404540001a8344e6f74436f6e74726f6c6c6572000004644e6f74206120636f6e74726f6c6c6572206163636f756e742e204e6f745374617368000104504e6f742061207374617368206163636f756e742e34416c7265616479426f6e64656400020460537461736820697320616c726561647920626f6e6465642e34416c726561647950616972656400030474436f6e74726f6c6c657220697320616c7265616479207061697265642e30456d7074795461726765747300040460546172676574732063616e6e6f7420626520656d7074792e44496e76616c6964536c617368496e64657800050484536c617368207265636f726420696e646578206f7574206f6620626f756e64732e44496e73756666696369656e7456616c7565000604c843616e206e6f7420626f6e6420776974682076616c7565206c657373207468616e206d696e696d756d2062616c616e63652e304e6f4d6f72654368756e6b730007049043616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b732e344e6f556e6c6f636b4368756e6b000804a043616e206e6f74207265626f6e6420776974686f757420756e6c6f636b696e67206368756e6b732e3046756e646564546172676574000904c8417474656d7074696e6720746f2074617267657420612073746173682074686174207374696c6c206861732066756e64732e48496e76616c6964457261546f526577617264000a0458496e76616c69642065726120746f207265776172642e484e6f74536f72746564416e64556e69717565000b04804974656d7320617265206e6f7420736f7274656420616e6420756e697175652e38416c7265616479436c61696d6564000c0409015265776172647320666f72207468697320657261206861766520616c7265616479206265656e20636c61696d656420666f7220746869732076616c696461746f722e7c4f6666636861696e456c656374696f6e4561726c795375626d697373696f6e000d04e0546865207375626d697474656420726573756c74206973207265636569766564206f7574206f6620746865206f70656e2077696e646f772e784f6666636861696e456c656374696f6e5765616b5375626d697373696f6e000e04fc546865207375626d697474656420726573756c74206973206e6f7420617320676f6f6420617320746865206f6e652073746f726564206f6e20636861696e2e4c536e617073686f74556e617661696c61626c65000f04cc54686520736e617073686f742064617461206f66207468652063757272656e742077696e646f77206973206d697373696e672e804f6666636861696e456c656374696f6e426f67757357696e6e6572436f756e74001004ac496e636f7272656374206e756d626572206f662077696e6e65727320776572652070726573656e7465642e6c4f6666636861696e456c656374696f6e426f67757357696e6e65720011085d014f6e65206f6620746865207375626d69747465642077696e6e657273206973206e6f7420616e206163746976652063616e646964617465206f6e20636861696e2028696e646578206973206f7574206f662072616e676534696e20736e617073686f74292e704f6666636861696e456c656374696f6e426f677573436f6d7061637400120859014572726f72207768696c65206275696c64696e67207468652061737369676e6d656e7420747970652066726f6d2074686520636f6d706163742e20546869732063616e2068617070656e20696620616e20696e646578a4697320696e76616c69642c206f72206966207468652077656967687473205f6f766572666c6f775f2e784f6666636861696e456c656374696f6e426f6775734e6f6d696e61746f7200130411014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f7273206973206e6f7420616e20616374697665206e6f6d696e61746f72206f6e20636861696e2e7c4f6666636861696e456c656374696f6e426f6775734e6f6d696e6174696f6e00140449014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e206564676520746f20776869636820746865792068617665206e6f7420766f746564206f6e20636861696e2e844f6666636861696e456c656374696f6e536c61736865644e6f6d696e6174696f6e0015085d014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e2065646765207768696368206973207375626d6974746564206265666f726520746865206c617374206e6f6e2d7a65726f50736c617368206f6620746865207461726765742e744f6666636861696e456c656374696f6e426f67757353656c66566f74650016042101412073656c6620766f7465206d757374206f6e6c79206265206f726967696e617465642066726f6d20612076616c696461746f7220746f204f4e4c59207468656d73656c7665732e644f6666636861696e456c656374696f6e426f677573456467650017044101546865207375626d697474656420726573756c742068617320756e6b6e6f776e206564676573207468617420617265206e6f7420616d6f6e67207468652070726573656e7465642077696e6e6572732e684f6666636861696e456c656374696f6e426f67757353636f7265001804150154686520636c61696d65642073636f726520646f6573206e6f74206d61746368207769746820746865206f6e6520636f6d70757465642066726f6d2074686520646174612e844f6666636861696e456c656374696f6e426f677573456c656374696f6e53697a650019047454686520656c656374696f6e2073697a6520697320696e76616c69642e3843616c6c4e6f74416c6c6f776564001a0445015468652063616c6c206973206e6f7420616c6c6f7765642061742074686520676976656e2074696d652064756520746f207265737472696374696f6e73206f6620656c656374696f6e20706572696f642e58496e636f7272656374536c617368696e675370616e73001b04b0496e636f7272656374206e756d626572206f6620736c617368696e67207370616e732070726f76696465642e34416c7265616479457869737473001c04985065726d697373696f6e65642076616c696461746f7220616c7265616479206578697374732e244e6f74457869737473001d04885065726d697373696f6e65642076616c696461746f72206e6f74206578697374732e204e6f4368616e6765001e04605570646174657320776974682073616d652076616c75652e60496e76616c696456616c696461746f724964656e74697479001f04b8476976656e20706f74656e7469616c2076616c696461746f72206964656e7469747920697320696e76616c69642e68496e76616c696456616c696461746f72436f6d6d697373696f6e0020049c56616c696461746f7220707265667320617265206e6f7420696e2076616c69642072616e67652e6453746173684964656e74697479446f65734e6f744578697374002104d456616c696461746f72206f72206e6f6d696e61746f72207374617368206964656e7469747920646f6573206e6f742065786973742e7053746173684964656e746974794e6f745065726d697373696f6e6564002204b856616c696461746f72207374617368206964656e7469747920776173206e6f74207065726d697373696f6e65642e5453746173684964656e746974794e6f744344446564002304784e6f6d696e61746f7220737461736820776173206e6f742043444465642e64486974496e74656e64656456616c696461746f72436f756e74002404bc52756e6e696e672076616c696461746f7220636f756e74206869742074686520696e74656e64656420636f756e742e98496e74656e646564436f756e744973457863656564696e67436f6e73656e7375734c696d697400250435015768656e2074686520696e74656e646564206e756d626572206f662076616c696461746f727320746f2072756e206973203e3d20322f33206f66206076616c696461746f725f636f756e74602e30426f6e64546f6f536d616c6c002604dc5768656e2074686520616d6f756e7420746f20626520626f6e646564206973206c657373207468616e20604d696e696d756d426f6e64602042616453746174650027043901496e7465726e616c20737461746520686173206265636f6d6520736f6d65686f7720636f7272757074656420616e6420746865206f7065726174696f6e2063616e6e6f7420636f6e74696e75652e38546f6f4d616e795461726765747300280494546f6f206d616e79206e6f6d696e6174696f6e207461726765747320737570706c6965642e244261645461726765740029043d0141206e6f6d696e6174696f6e207461726765742077617320737570706c69656420746861742077617320626c6f636b6564206f72206f7468657277697365206e6f7420612076616c696461746f722e04744572726f7220666f7220746865207374616b696e67206d6f64756c652e7d080c2873705f7374616b696e671c6f6666656e6365384f6666656e636544657461696c7308205265706f727465720100204f6666656e64657201c901000801206f6666656e646572c90101204f6666656e6465720001247265706f7274657273910101345665633c5265706f727465723e000081080000040825012800850800000289080089080000040800a906008d08000004089108280091080c1c73705f636f72651863727970746f244b65795479706549640000040038011c5b75383b20345d000095080c3870616c6c65745f73657373696f6e1870616c6c6574144572726f7204045400011430496e76616c696450726f6f6600000460496e76616c6964206f776e6572736869702070726f6f662e5c4e6f4173736f63696174656456616c696461746f7249640001049c4e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e344475706c6963617465644b65790002046452656769737465726564206475706c6963617465206b65792e184e6f4b657973000304a44e6f206b65797320617265206173736f63696174656420776974682074686973206163636f756e742e244e6f4163636f756e7400040419014b65792073657474696e67206163636f756e74206973206e6f74206c6976652c20736f206974277320696d706f737369626c6520746f206173736f6369617465206b6579732e04744572726f7220666f72207468652073657373696f6e2070616c6c65742e9908083870616c6c65745f6772616e6470612c53746f726564537461746504044e01100110104c6976650000003050656e64696e6750617573650801307363686564756c65645f61741001044e00011464656c61791001044e000100185061757365640002003450656e64696e67526573756d650801307363686564756c65645f61741001044e00011464656c61791001044e000300009d08083870616c6c65745f6772616e6470614c53746f72656450656e64696e674368616e676508044e0110144c696d697400001001307363686564756c65645f61741001044e00011464656c61791001044e0001406e6578745f617574686f726974696573a108016c426f756e646564417574686f726974794c6973743c4c696d69743e000118666f72636564c90501244f7074696f6e3c4e3e0000a10810346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401ad01045300000400a90101185665633c543e0000a5080c3870616c6c65745f6772616e6470611870616c6c6574144572726f7204045400011c2c50617573654661696c65640000080501417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665a42865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e30526573756d654661696c65640001081101417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e277420706175736564a028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e344368616e676550656e64696e67000204e8417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e1c546f6f536f6f6e000304bc43616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e60496e76616c69644b65794f776e65727368697050726f6f66000404310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f660005043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400060415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909a90810346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401bd01045300000400ad0801185665633c543e0000ad08000002bd0100b10810346672616d655f737570706f727418747261697473106d69736334577261707065724f706171756504045401b5080008000d04000000b5080104540000b508084070616c6c65745f696d5f6f6e6c696e6564426f756e6465644f70617175654e6574776f726b53746174650c4c506565724964456e636f64696e674c696d697400584d756c746941646472456e636f64696e674c696d697400384164647265737365734c696d6974000008011c706565725f6964b908019c5765616b426f756e6465645665633c75382c20506565724964456e636f64696e674c696d69743e00014865787465726e616c5f616464726573736573bd08012d015765616b426f756e6465645665633c5765616b426f756e6465645665633c75382c204d756c746941646472456e636f64696e674c696d69743e2c204164647265737365734c696d69740a3e0000b90810346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401080453000004002801185665633c543e0000bd0810346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401b908045300000400c10801185665633c543e0000c108000002b90800c5080c4070616c6c65745f696d5f6f6e6c696e651870616c6c6574144572726f7204045400010828496e76616c69644b6579000004604e6f6e206578697374656e74207075626c6963206b65792e4c4475706c696361746564486561727462656174000104544475706c696361746564206865617274626561742e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909c908082c70616c6c65745f7375646f144572726f720404540001042c526571756972655375646f0000047c53656e646572206d75737420626520746865205375646f206163636f756e7404644572726f7220666f7220746865205375646f206d6f64756c65cd08083070616c6c65745f6173736574485469636b6572526567697374726174696f6e0404550120000801146f776e65727c01284964656e746974794964000118657870697279f801244f7074696f6e3c553e0000d108083070616c6c65745f6173736574345365637572697479546f6b656e0000100130746f74616c5f737570706c7918011c42616c616e63650001246f776e65725f6469647c01284964656e746974794964000124646976697369626c651d010110626f6f6c00012861737365745f74797065e90101244173736574547970650000d50800000408a47c00d90800000408a4e50100dd08000004087ca400e108083070616c6c65745f61737365745841737365744f776e65727368697052656c6174696f6e00010c204e6f744f776e65640000002c5469636b65724f776e65640001002841737365744f776e656400020000e50800000408a4050200e908083070616c6c65745f617373657464436c61737369635469636b6572526567697374726174696f6e00000801246574685f6f776e65723502013c457468657265756d4164647265737300012869735f637265617465641d010110626f6f6c0000ed08000004087c7c00f108083070616c6c65745f61737365741c56657273696f6e0000040008010875380000f508083070616c6c65745f6173736574144572726f7204045400017c30556e617574686f72697a65640000046c5468652075736572206973206e6f7420617574686f72697a65642e3c416c72656164794172636869766564000104805768656e20657874656e73696f6e20616c72656164792061726368697665642e44416c7265616479556e41726368697665640002048c5768656e20657874656e73696f6e20616c726561647920756e2d61726368697665642e5c457874656e73696f6e416c726561647950726573656e74000304805768656e20657874656e73696f6e20697320616c72656164792061646465642e4c4173736574416c7265616479437265617465640004048c54686520746f6b656e2068617320616c7265616479206265656e20637265617465642e345469636b6572546f6f4c6f6e6700050490546865207469636b6572206c656e677468206973206f76657220746865206c696d69742e385469636b65724e6f7441736369690006049c546865207469636b657220686173206e6f6e2d61736369692d656e636f6465642070617274732e5c5469636b6572416c726561647952656769737465726564000704c4546865207469636b657220697320616c7265616479207265676973746572656420746f20736f6d656f6e6520656c73652e54546f74616c537570706c7941626f76654c696d69740008049054686520746f74616c20737570706c792069732061626f766520746865206c696d69742e2c4e6f537563684173736574000904384e6f207375636820746f6b656e2e34416c726561647946726f7a656e000a047054686520746f6b656e20697320616c72656164792066726f7a656e2e284e6f74416e4f776e6572000b04984e6f7420616e206f776e6572206f662074686520746f6b656e206f6e20457468657265756d2e3c42616c616e63654f766572666c6f77000c04a8416e206f766572666c6f77207768696c652063616c63756c6174696e67207468652062616c616e63652e4c546f74616c537570706c794f766572666c6f77000d04bc416e206f766572666c6f77207768696c652063616c63756c6174696e672074686520746f74616c20737570706c792e48496e76616c69644772616e756c6172697479000e045c416e20696e76616c6964206772616e756c61726974792e244e6f7446726f7a656e000f0464546865206173736574206d7573742062652066726f7a656e2e3c496e76616c69645472616e73666572001004845472616e736665722076616c69646174696f6e20636865636b206661696c65642e4c496e73756666696369656e7442616c616e6365001104945468652073656e6465722062616c616e6365206973206e6f742073756666696369656e742e544173736574416c7265616479446976697369626c650012047c54686520746f6b656e20697320616c726561647920646976697369626c652e784d6178696d756d544d457874656e73696f6e4c696d69745265616368656400130499014e756d626572206f66205472616e73666572204d616e6167657220657874656e73696f6e7320617474616368656420746f20616e20617373657420697320657175616c20746f204d61784e756d6265724f66544d457874656e73696f6e466f7241737365742e70496e636f6d70617469626c65457874656e73696f6e56657273696f6e001404dc476976656e20736d61727420657874656e73696f6e206973206e6f7420636f6d70617469626c652077697468207468652061737365742e60496e76616c6964457468657265756d5369676e617475726500150494416e20696e76616c696420457468657265756d206045636473615369676e6174757265602e4c4e6f53756368436c61737369635469636b65720016049854686520676976656e207469636b6572206973206e6f74206120636c6173736963206f6e652e645469636b6572526567697374726174696f6e457870697265640017048c526567697374726174696f6e206f66207469636b65722068617320657870697265642e5053656e64657253616d6541735265636569766572001804845472616e736665727320746f2073656c6620617265206e6f7420616c6c6f776564244e6f53756368446f630019048854686520676976656e20446f63756d656e7420646f6573206e6f742065786973742e704d61784c656e6774684f6641737365744e616d654578636565646564001a04bc4d6178696d756d206c656e677468206f66206173736574206e616d6520686173206265656e2065786365656465642e8446756e64696e67526f756e644e616d654d61784c656e6774684578636565646564001b04ec4d6178696d756d206c656e677468206f66207468652066756e64696e6720726f756e64206e616d6520686173206265656e2065786365656465642e58496e76616c696441737365744964656e746966696572001c048c536f6d65206041737365744964656e746966696572602077617320696e76616c69642e84496e766573746f72556e697175656e657373436c61696d4e6f74416c6c6f776564001d04e8496e766573746f7220556e697175656e65737320636c61696d7320617265206e6f7420616c6c6f77656420666f7220746869732061737365742e60496e76616c6964437573746f6d4173736574547970654964001e0470496e76616c69642060437573746f6d4173736574547970654964602e00f9080000040841027c00fd080c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e1c56657273696f6e000004000801087538000001090c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e144572726f720404540001383043414e6f7442656e65666974000004d441206361706974616c20646973747269627574696f6e20776173206d61646520666f722061206e6f6e2d62656e656669742043412e34416c7265616479457869737473000104a84120646973747269627574696f6e20616c72656164792065786973747320666f7220746869732043412e4c4578706972794265666f72655061796d656e7400020829014120646973747269627574696f6e732070726f766964656420657870697279206461746520776173207374726963746c79206265666f726520697473207061796d656e7420646174652e2101496e206f7468657220776f7264732c2065766572797468696e6720746f206469737472696275746520776f756c6420696d6d6564696174656c7920626520666f726665697465642e44446973747269627574696e674173736574000308f043757272656e63792074686174206973206469737472696275746564206973207468652073616d65206173207468652043412773207469636b65722e690143616c6c696e67206167656e7420697320617474656d7074696e67206120666f726d206f662073746f636b2073706c69742c207768696368206973206e6f742077686174207468652065787472696e73696320697320666f722e44486f6c646572416c726561647950616964000404d454686520746f6b656e20686f6c6465722068617320616c7265616479206265656e20706169642074686569722062656e656669742e484e6f53756368446973747269627574696f6e000504c441206361706974616c20646973747269627574696f6e20646f65736e277420657869737420666f7220746869732043412e5843616e6e6f74436c61696d4265666f726553746172740006046101446973747269627574696f6e20616c6c6f746d656e742063616e6e6f7420626520636c61696d6564206173207468652063757272656e742074696d65206973206265666f72652073746172742d6f662d7061796d656e742e5843616e6e6f74436c61696d41667465724578706972790007046901446973747269627574696f6e27732065787069727920686173207061737365642e204449442063616e6e6f7420636c61696d20616e796d6f726520616e642068617320666f72666569746564207468652062656e65666974732e8042616c616e6365506572536861726550726f647563744f766572666c6f77656400080429014d756c7469706c69636174696f6e206f66207468652062616c616e636520776974682074686520706572207368617265207061796f757420616d6f756e74206f766572666c6f7765642e584e6f74446973747269627574696f6e43726561746f72000904c0444944206973206e6f7420746865206f6e652077686f20637265617465642074686520646973747269627574696f6e2e40416c72656164795265636c61696d6564000a04d44449442077686f20637265617465642074686520646973747269627574696f6e20616c726561647920646964207265636c61696d2e284e6f7445787069726564000b04f0446973747269627574696f6e20686164206e6f742065787069726564207965742c206f722074686572652773206e6f2065787069727920646174652e4c446973747269627574696f6e53746172746564000c0401014120646973747269627574696f6e20686173206265656e206163746976617465642c20617320607061796d656e745f6174203c3d206e6f776020686f6c64732e6c496e73756666696369656e7452656d61696e696e67416d6f756e74000d042d014120646973747269627574696f6e2068617320696e73756666696369656e742072656d61696e696e6720616d6f756e74206f662063757272656e637920746f20646973747269627574652e00050900000408a459020009090000040805097c000d0900000259020011090000025d0200150900000408a46d020019090c3070616c6c65745f617373657428636865636b706f696e741c56657273696f6e00000400080108753800001d090c3070616c6c65745f617373657428636865636b706f696e74144572726f72040454000114384e6f537563685363686564756c65000004cc4120636865636b706f696e74207363686564756c6520646f6573206e6f7420657869737420666f72207468652061737365742e505363686564756c654e6f7452656d6f7661626c650001041d014120636865636b706f696e74207363686564756c65206973206e6f742072656d6f7661626c6520617320607265665f636f756e74287363686564756c655f696429203e2030602e744661696c6564546f436f6d707574654e657874436865636b706f696e74000208984661696c656420746f20636f6d7075746520746865206e65787420636865636b706f696e742ed0546865207363686564756c6520646f6573206e6f74206861766520616e79207570636f6d696e6720636865636b706f696e74732e605363686564756c654475726174696f6e546f6f53686f7274000304bc546865206475726174696f6e206f662061207363686564756c6520706572696f6420697320746f6f2073686f72742e4c5363686564756c6573546f6f436f6d706c6578000408d054686520736574206f66207363686564756c65732074616b656e20746f6765746865722061726520746f6f20636f6d706c65782ef8466f72206578616d706c652c20746865792061726520746f6f206d616e792c206f722074686579206f636375727320746f6f206672657175656e746c792e0021090c4c706f6c796d6573685f7072696d69746976657348636f6d706c69616e63655f6d616e616765723c4173736574436f6d706c69616e636500000801187061757365641d010110626f6f6c000130726571756972656d656e7473a10201685665633c436f6d706c69616e6365526571756972656d656e743e00002509086470616c6c65745f636f6d706c69616e63655f6d616e616765721c56657273696f6e00000400080108753800002909086470616c6c65745f636f6d706c69616e63655f6d616e61676572144572726f7204045400011830556e617574686f72697a65640000045c55736572206973206e6f7420617574686f72697a65642e2c4469644e6f74457869737400010434446964206e6f7420657869737478496e76616c6964436f6d706c69616e6365526571756972656d656e7449640002049c436f6d706c69616e636520726571756972656d656e7420696420646f65736e277420657869737484496e636f72726563744f7065726174696f6e4f6e547275737465644973737565720003049c4973737565722065786973742062757420747279696e6720746f2061646420697420616761696e7c4475706c6963617465436f6d706c69616e6365526571756972656d656e7473000404b0546865726520617265206475706c696361746520636f6d706c69616e636520726571756972656d656e74732e7c436f6d706c69616e6365526571756972656d656e74546f6f436f6d706c6578000504110154686520776f7273742063617365207363656e6172696f206f662074686520636f6d706c69616e636520726571756972656d656e7420697320746f6f20636f6d706c6578002d0900000408a44502003109086070616c6c65745f636f72706f726174655f616374696f6e731c56657273696f6e00000400080108753800003509086070616c6c65745f636f72706f726174655f616374696f6e73144572726f7204045400013048417574684e6f744341415472616e73666572000004050154686520617574686f72697a6174696f6e2074797065206973206e6f7420746f207472616e73666572207468652043414120746f20616e6f74686572204449442e3844657461696c73546f6f4c6f6e67000104d8546865206064657461696c7360206f66206120434120657863656564656420746865206d617820616c6c6f776564206c656e6774682e3c4475706c69636174654469645461780002082101412077697468686f6c64696e6720746178206f7665727269646520666f72206120676976656e204449442077617320737065636966696564206d6f7265207468616e206f6e63652e050154686520636861696e207265667573656420746f206d616b6520612063686f6963652c20616e642068656e63652074686572652077617320616e206572726f722e3c546f6f4d616e794469645461786573000304c8546f6f206d616e792077697468686f6c64696e6720746178206f76657272696465732077657265207370656369666965642e40546f6f4d616e79546172676574496473000404e4546f6f206d616e79206964656e74697469657320696e20605461726765744964656e746974696573602077657265207370656369666965642e484e6f53756368436865636b706f696e74496400050405014f6e204341206372656174696f6e2c206120636865636b706f696e74204944207761732070726f766964656420776869636820646f65736e27742065786973742e204e6f537563684341000604a44120434120776974682074686520676976656e2060434149646020646964206e6f742065786973742e304e6f5265636f7264446174650007048854686520434120646964206e6f7420686176652061207265636f726420646174652e505265636f7264446174654166746572537461727400080cdc412043412773207265636f7264206461746520776173207374726963746c792061667465722074686520227374617274222074696d652c8c7768657265202273746172742220697320636f6e7465787420646570656e64656e742e8101466f72206578616d706c652c20697420636f756c6420626520746865207374617274206f6620612062616c6c6f742c206f72207468652073746172742d6f662d7061796d656e7420696e206361706974616c20646973747269627574696f6e2e5c4465636c4461746541667465725265636f726444617465000904ec412043412773206465636c61726174696f6e206461746520776173207374726963746c7920616674657220697473207265636f726420646174652e404465636c44617465496e467574757265000a04b4412043412773206465636c61726174696f6e2064617465206f636375727320696e20746865206675747572652e3c4e6f74546172676574656442794341000b046c434120646f6573206e6f742074617267657420746865204449442e00390900000218003d090c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74144572726f720404540001382c43414e6f744e6f74696365000004e04120636f72706f726174652062616c6c6f7420776173206d61646520666f722061206e6f6e20604973737565724e6f74696365602043412e34416c7265616479457869737473000104b84120636f72706f726174652062616c6c6f7420616c72656164792065786973747320666f7220746869732043412e304e6f5375636842616c6c6f74000204b44120636f72706f726174652062616c6c6f7420646f65736e277420657869737420666f7220746869732043412e3453746172744166746572456e6400030411014120636f72706f726174652062616c6c6f7427732073746172742074696d6520776173207374726963746c79206166746572207468652062616c6c6f74277320656e642e2c4e6f774166746572456e640004040d014120636f72706f726174652062616c6c6f74277320656e642074696d6520776173207374726963746c79206265666f7265207468652063757272656e742074696d652e5c4e756d6265724f6643686f696365734f766572666c6f770005043901496620736f6d65206d6f74696f6e20696e206120636f72706f726174652062616c6c6f7420686173206d6f72652063686f69636573207468616e20776f756c642066697420696e2060753136602e50566f74696e67416c7265616479537461727465640006040101566f74696e67207374617274656420616c72656164792e20416d656e64696e6720612062616c6c6f74206973206e6f206c6f6e67657220706f737369626c652e40566f74696e674e6f745374617274656400070468566f74696e67206861736e27742073746172746564207965742e48566f74696e67416c7265616479456e64656400080454566f74696e6720656e64656420616c72656164792e3857726f6e67566f7465436f756e74000904150150726f7669646564206c697374206f662062616c616e63657320646f6573206e6f74206d617463682074686520746f74616c206e756d626572206f662063686f696365732e44496e73756666696369656e74566f746573000a043d01566f74696e6720706f7765722075736564206279206120444944206f6e2061206d6f74696f6e2065786365656473207468617420776869636820697320617661696c61626c6520746f207468656d2e444e6f5375636852435646616c6c6261636b000b04bc546865205243562066616c6c6261636b206f6620736f6d652063686f69636520646f6573206e6f742065786973742e3052435653656c664379636c65000c04b4546865205243562066616c6c6261636b20706f696e747320746f20746865206f726967696e2063686f6963652e345243564e6f74416c6c6f776564000d048c524356206973206e6f7420616c6c6f77656420666f7220746869732062616c6c6f742e004109084870616c6c65745f7065726d697373696f6e73144572726f7204045400010448556e617574686f72697a656443616c6c6572000004ec5468652063616c6c6572206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e004509082c70616c6c65745f7069707330506970734d65746164617461042c426c6f636b4e756d62657201100018010869641d030114506970496400010c75726c2103012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e290301584f7074696f6e3c5069704465736372697074696f6e3e000128637265617465645f617410012c426c6f636b4e756d62657200014c7472616e73616374696f6e5f76657273696f6e10010c7533320001186578706972794501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00004909000004081d0300004d09082c70616c6c65745f706970732c4465706f736974496e666f04244163636f756e7449640100000801146f776e65720001244163636f756e744964000118616d6f756e7418011c42616c616e636500005109082c70616c6c65745f706970730c506970082050726f706f73616c018105244163636f756e74496401000010010869641d030114506970496400012070726f706f73616c8105012050726f706f73616c00011473746174653503013450726f706f73616c537461746500012070726f706f7365721503014c50726f706f7365723c4163636f756e7449643e00005509082c70616c6c65745f7069707330566f74696e67526573756c740000100128617965735f636f756e7410010c753332000128617965735f7374616b6518011c42616c616e63650001286e6179735f636f756e7410010c7533320001286e6179735f7374616b6518011c42616c616e636500005909082c70616c6c65745f7069707310566f7465000008001d010110626f6f6c000018011c42616c616e636500005d09082c70616c6c65745f7069707340536e617073686f744d65746164617461082c426c6f636b4e756d6265720110244163636f756e7449640100000c0128637265617465645f617410012c426c6f636b4e756d62657200011c6d6164655f62790001244163636f756e744964000108696439030128536e617073686f74496400006109082c70616c6c65745f706970731c56657273696f6e00000400080108753800006509082c70616c6c65745f70697073144572726f720404540001488452657363686564756c654e6f74427952656c65617365436f6f7264696e61746f7200000431014f6e6c79207468652047432072656c6561736520636f6f7264696e61746f7220697320616c6c6f77656420746f2072657363686564756c652070726f706f73616c20657865637574696f6e2e404e6f7446726f6d436f6d6d756e697479000108ec54686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2ecc5468652070726f706f73616c206d7573742062652066726f6d2074686520636f6d6d756e6974792c206275742069736e27742e384e6f744279436f6d6d6974746565000208ec54686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2eb45468652070726f706f73616c206d75737420626520627920636f6d6d756e6974792c206275742069736e27742e44546f6f4d616e794163746976655069707300030829015468652063757272656e74206e756d626572206f6620616374697665202870656e64696e67207c207363686564756c65642920504950732065786365656420746865206d6178696d756d9c616e64207468652070726f706f73616c206973206e6f74206279206120636f6d6d69747465652e40496e636f72726563744465706f7369740004049c50726f706f7365722073706563696669657320616e20696e636f7272656374206465706f7369744c496e73756666696369656e744465706f736974000504b450726f706f7365722063616e2774206166666f726420746f206c6f636b206d696e696d756d206465706f736974384e6f5375636850726f706f73616c000604705468652070726f706f73616c20646f6573206e6f742065786973742e4c4e6f7441436f6d6d69747465654d656d626572000704844e6f742070617274206f6620676f7665726e616e636520636f6d6d69747465652e60496e76616c6964467574757265426c6f636b4e756d626572000804d85768656e206120626c6f636b206e756d626572206973206c657373207468616e2063757272656e7420626c6f636b206e756d6265722e544e756d6265724f66566f74657345786365656465640009047c5768656e206e756d626572206f6620766f746573206f766572666c6f77732e685374616b65416d6f756e744f66566f7465734578636565646564000a04985768656e207374616b6520616d6f756e74206f66206120766f7465206f766572666c6f77732e584d697373696e6743757272656e744964656e74697479000b044c4d697373696e672063757272656e742044494458496e636f727265637450726f706f73616c5374617465000c049050726f706f73616c206973206e6f7420696e2074686520636f72726563742073746174653443616e6e6f74536b6970506970000d04fc5768656e20656e616374696e6720736e617073686f7420726573756c74732c20616e20756e736b69707061626c65205049502077617320736b69707065642e58536e617073686f74526573756c74546f6f4c61726765000e041501547269656420746f20656e61637420726573756c747320666f722074686520736e617073686f74207175657565206f766572666c6f77696e6720697473206c656e6774682e48536e617073686f7449644d69736d61746368000f045d01547269656420746f20656e61637420726573756c7420666f7220504950207769746820696420646966666572656e742066726f6d20746861742061742074686520706f736974696f6e20696e207468652071756575652e705363686564756c656450726f706f73616c446f65736e744578697374001004fc457865637574696f6e206f662061207363686564756c65642070726f706f73616c206661696c65642062656361757365206974206973206d697373696e672e6c50726f706f73616c4e6f74496e5363686564756c65645374617465001104fc412070726f706f73616c2074686174206973206e6f7420696e2061207363686564756c65642073746174652063616e6e6f742062652065786563757465642e006909000004087ce4006d09000004087c5d0300710900000408dca4007509000004087cdc007909084070616c6c65745f706f7274666f6c696f1c56657273696f6e00000400080108753800007d09084070616c6c65745f706f7274666f6c696f144572726f7204045400012454506f7274666f6c696f446f65734e6f7445786973740000047054686520706f7274666f6c696f20646f65736e27742065786973742e70496e73756666696369656e74506f7274666f6c696f42616c616e63650001049c496e73756666696369656e742062616c616e636520666f722061207472616e73616374696f6e2e6844657374696e6174696f6e497353616d65506f7274666f6c696f000204e854686520736f7572636520616e642064657374696e6174696f6e20706f7274666f6c696f732073686f756c6420626520646966666572656e742e64506f7274666f6c696f4e616d65416c7265616479496e557365000304310154686520706f7274666f6c696f20636f756c646e27742062652072656e616d65642062656361757365207468652063686f73656e206e616d6520697320616c726561647920696e207573652e945365636f6e646172794b65794e6f74417574686f72697a6564466f72506f7274666f6c696f000404fc546865207365636f6e64617279206b6579206973206e6f7420617574686f72697a656420746f206163636573732074686520706f7274666f6c696f2873292e54556e617574686f72697a6564437573746f6469616e000504f454686520706f72666f6c696f277320637573746f6479206973207769746820736f6d656f6e65206f74686572207468616e207468652063616c6c65722e60496e73756666696369656e74546f6b656e734c6f636b6564000604bc43616e206e6f7420756e6c6f636b206d6f726520746f6b656e73207468616e207768617420617265206c6f636b656444506f7274666f6c696f4e6f74456d707479000704bc54686520706f7274666f6c696f207374696c6c2068617320736f6d652061737365742062616c616e6365206c6566746c446966666572656e744964656e74697479506f7274666f6c696f73000804b454686520706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e746974696573008109084c70616c6c65745f70726f746f636f6c5f666565144572726f7204045400010c68496e73756666696369656e744163636f756e7442616c616e6365000004b0496e73756666696369656e74206163636f756e742062616c616e636520746f2070617920746865206665652e4c556e48616e646c6564496d62616c616e636573000104884e6f742061626c6520746f2068616e646c65642074686520696d62616c616e63657368496e73756666696369656e745375627369647942616c616e6365000204b0496e73756666696369656e7420737562736964792062616c616e636520746f2070617920746865206665652e008509000002890900890904184f7074696f6e040454018d090108104e6f6e6500000010536f6d6504008d0900000100008d09084070616c6c65745f7363686564756c65722c5363686564756c65645632101043616c6c0181052c426c6f636b4e756d62657201103450616c6c6574734f726967696e019109244163636f756e7449640100001401206d617962655f69647903013c4f7074696f6e3c5665633c75383e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c8105011043616c6c0001386d617962655f706572696f646963710701944f7074696f6e3c7363686564756c653a3a506572696f643c426c6f636b4e756d6265723e3e0001186f726967696e9109013450616c6c6574734f726967696e000091090c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d65304f726967696e43616c6c65720001141873797374656d0400950901746672616d655f73797374656d3a3a4f726967696e3c52756e74696d653e00000044506f6c796d657368436f6d6d69747465650400990901f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365313e00090048546563686e6963616c436f6d6d697474656504009d0901f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365333e000b004055706772616465436f6d6d69747465650400a10901f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365343e000d0010566f69640400a50901110173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a566f696400040000950908306672616d655f73797374656d245261774f726967696e04244163636f756e7449640100010c10526f6f74000000185369676e656404000001244163636f756e744964000100104e6f6e65000200009909084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449013901010420456e646f72736564000000009d09084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449015501010420456e646f7273656400000000a109084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449016501010420456e646f7273656400000000a509081c73705f636f726510566f696400010000a909084070616c6c65745f7363686564756c65722052656c656173657300010808563100000008563200010000ad090c4070616c6c65745f7363686564756c65721870616c6c6574144572726f72040454000110404661696c6564546f5363686564756c65000004644661696c656420746f207363686564756c6520612063616c6c204e6f74466f756e640001047c43616e6e6f742066696e6420746865207363686564756c65642063616c6c2e5c546172676574426c6f636b4e756d626572496e50617374000204a4476976656e2074617267657420626c6f636b206e756d62657220697320696e2074686520706173742e4852657363686564756c654e6f4368616e6765000304f052657363686564756c65206661696c6564206265636175736520697420646f6573206e6f74206368616e6765207363686564756c65642074696d652e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909b109084470616c6c65745f736574746c656d656e741456656e7565000008011c63726561746f727c01284964656e74697479496400012876656e75655f747970658903012456656e7565547970650000b5090000040881038d0300b9090000040881030000bd09084470616c6c65745f736574746c656d656e742c496e737472756374696f6e08184d6f6d656e7401202c426c6f636b4e756d6265720110001c0138696e737472756374696f6e5f69648d030134496e737472756374696f6e496400012076656e75655f69648103011c56656e75654964000118737461747573c1090144496e737472756374696f6e53746174757300013c736574746c656d656e745f747970659103016c536574746c656d656e74547970653c426c6f636b4e756d6265723e000128637265617465645f6174f801384f7074696f6e3c4d6f6d656e743e00012874726164655f64617465f801384f7074696f6e3c4d6f6d656e743e00012876616c75655f64617465f801384f7074696f6e3c4d6f6d656e743e0000c109084470616c6c65745f736574746c656d656e7444496e737472756374696f6e53746174757300010c1c556e6b6e6f776e0000001c50656e64696e67000100184661696c656400020000c509000004088d039d0300c909084470616c6c65745f736574746c656d656e74244c656753746174757304244163636f756e7449640100010c4050656e64696e67546f6b656e4c6f636b00000040457865637574696f6e50656e64696e6700010050457865637574696f6e546f4265536b697070656408000001244163636f756e744964000020010c75363400020000cd09000004088d03dc00d109084470616c6c65745f736574746c656d656e744441666669726d6174696f6e53746174757300010c1c556e6b6e6f776e0000001c50656e64696e670001002041666669726d656400020000d50900000408dc8d0300d90900000408a4810300dd09084470616c6c65745f736574746c656d656e741c56657273696f6e0000040008010875380000e109084470616c6c65745f736574746c656d656e74144572726f7204045400016430496e76616c696456656e75650000045456656e756520646f6573206e6f742065786973742e30556e617574686f72697a6564000104a853656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e3c4e6f50656e64696e6741666669726d000204d04e6f2070656e64696e672061666669726d6174696f6e20666f72207468652070726f766964656420696e737472756374696f6e2e58496e737472756374696f6e4e6f7441666669726d656400030488496e737472756374696f6e20686173206e6f74206265656e2061666669726d65642e54496e737472756374696f6e4e6f7450656e64696e67000404b850726f766964656420696e737472756374696f6e206973206e6f742070656e64696e6720657865637574696f6e2e50496e737472756374696f6e4e6f744661696c6564000504b850726f766964656420696e737472756374696f6e206973206e6f74206661696c696e6720657865637574696f6e2e344c65674e6f7450656e64696e670006049850726f7669646564206c6567206973206e6f742070656e64696e6720657865637574696f6e2e48556e617574686f72697a65645369676e6572000704985369676e6572206973206e6f7420617574686f72697a6564206279207468652076656e75652e5452656365697074416c7265616479436c61696d6564000804545265636569707420616c726561647920757365642e44526563656970744e6f74436c61696d65640009045452656365697074206e6f742075736564207965742e44556e617574686f72697a656456656e7565000a04a456656e756520646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e484661696c6564546f4c6f636b546f6b656e73000b0421015768696c652061666669726d696e6720746865207472616e736665722c2073797374656d206661696c656420746f206c6f636b207468652061737365747320696e766f6c7665642e44496e737472756374696f6e4661696c6564000c0478496e737472756374696f6e206661696c656420746f20657865637574652e5c496e737472756374696f6e4461746573496e76616c6964000d0474496e737472756374696f6e2068617320696e76616c696420646174657370496e737472756374696f6e536574746c65426c6f636b506173736564000e04a8496e737472756374696f6e27732074617267657420736574746c6520626c6f636b20726561636865642e40496e76616c69645369676e6174757265000f04784f6666636861696e207369676e617475726520697320696e76616c69642e4853616d6553656e64657252656365697665720010048453656e64657220616e6420726563656976657220617265207468652073616d652e44506f7274666f6c696f4d69736d617463680011042501506f7274666f6c696f20696e207265636569707420646f6573206e6f74206d61746368207769746820706f7274666f6c696f732070726f76696465642062792074686520757365722e44536574746c654f6e50617374426c6f636b00120461015468652070726f766964656420736574746c656d656e7420626c6f636b206e756d62657220697320696e20746865207061737420616e642063616e6e6f74206265207573656420627920746865207363686564756c65722e4c4e6f506f7274666f6c696f50726f76696465640013043d01506f7274666f6c696f20626173656420616374696f6e732072657175697265206174206c65617374206f6e6520706f7274666f6c696f20746f2062652070726f766964656420617320696e7075742e6c556e657870656374656441666669726d6174696f6e53746174757300140445015468652063757272656e7420696e737472756374696f6e2061666669726d6174696f6e2073746174757320646f6573206e6f7420737570706f7274207468652072657175657374656420616374696f6e2e404661696c6564546f5363686564756c650015048c5363686564756c696e67206f6620616e20696e737472756374696f6e206661696c732e404c6567436f756e74546f6f536d616c6c001604a5014c65677320636f756e742073686f756c64206d61746368657320776974682074686520746f74616c206e756d626572206f66206c65677320696e20776869636820676976656e20706f7274666f6c696f20616374206173206066726f6d5f706f7274666f6c696f602e48556e6b6e6f776e496e737472756374696f6e00170474496e737472756374696f6e2073746174757320697320756e6b6e6f776e64496e737472756374696f6e486173546f6f4d616e794c656773001804c44d6178696d756d206c65677320746861742063616e20626520696e20612073696e676c6520696e737472756374696f6e2e04844572726f727320666f722074686520536574746c656d656e74206d6f64756c652ee509000002ad0300e90900000408ed097c00ed0900000408a4ad0300f109084470616c6c65745f73746174697374696373144572726f72040454000110604475706c69636174655472616e736665724d616e616765720000048c546865207472616e73666572206d616e6167657220616c726561647920657869737473585472616e736665724d616e616765724d697373696e670001047c5472616e73666572206d616e61676572206973206e6f7420656e61626c65643c496e76616c69645472616e73666572000204505472616e73666572206e6f7420616c6c6f776564705472616e736665724d616e61676572734c696d6974526561636865640003041101546865206c696d6974206f66207472616e73666572206d616e616765727320616c6c6f77656420666f7220616e20617373657420686173206265656e2072656163686564046453746174697374696373206d6f64756c65206572726f72732ef50900000408a4b90300f909082870616c6c65745f73746f144572726f7204045400013030556e617574686f72697a6564000004a853656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e204f766572666c6f770001048c416e2061726974686d65746963206f7065726174696f6e206f766572666c6f7765642e6c496e73756666696369656e74546f6b656e7352656d61696e696e67000204804e6f7420656e6f75676820746f6b656e73206c65667420666f722073616c652e4846756e647261697365724e6f74466f756e640003045446756e64726169736572206e6f7420666f756e642e4446756e647261697365724e6f744c6976650004049c46756e64726169736572206973206569746865722066726f7a656e206f722073746f707065642e4046756e64726169736572436c6f736564000504ac46756e6472616973657220686173206265656e20636c6f7365642f73746f7070656420616c72656164792e4446756e6472616973657245787069726564000604d0496e746572616374696e67207769746820612066756e6472616973657220706173742074686520656e6420604d6f6d656e74602e30496e76616c696456656e756500070468416e20696e76616c69642076656e75652070726f76696465642e44496e76616c6964507269636554696572730008042501416e20696e646976696475616c20707269636520746965722077617320696e76616c6964206f72206120736574206f662070726963652074696572732077617320696e76616c69642e54496e76616c69644f66666572696e6757696e646f770009045d0157696e646f77202873746172742074696d652c20656e642074696d65292068617320696e76616c696420706172616d65746572732c20652e672073746172742074696d6520697320616674657220656e642074696d652e404d617850726963654578636565646564000a04bc5072696365206f662074686520696e766573746d656e7420657863656564656420746865206d61782070726963652e58496e766573746d656e74416d6f756e74546f6f4c6f77000b04e8496e766573746d656e7420616d6f756e74206973206c6f776572207468616e206d696e696d756d20696e766573746d656e7420616d6f756e742e04844572726f727320666f722074686520536574746c656d656e74206d6f64756c652efd09083c70616c6c65745f7472656173757279144572726f720404540001044c496e73756666696369656e7442616c616e63650000047850726f706f73657227732062616c616e636520697320746f6f206c6f772e04784572726f7220666f7220746865207472656173757279206d6f64756c652e010a083870616c6c65745f7574696c697479144572726f7204045400010c40496e76616c69645369676e6174757265000004744f6666636861696e207369676e617475726520697320696e76616c6964405461726765744364644d697373696e670001048054617267657420646f6573206e6f74206861766520612076616c69642043444430496e76616c69644e6f6e636500020c6850726f7669646564206e6f6e63652077617320696e76616c696411014966207468652070726f7669646564206e6f6e6365203c2063757272656e74206e6f6e63652c207468652063616c6c2077617320616c72656164792065786563757465645d014966207468652070726f7669646564206e6f6e6365203e2063757272656e74206e6f6e63652c207468652063616c6c287329206265666f7265207468652063757272656e74206661696c656420746f206578656375746500050a082c70616c6c65745f62617365144572726f720404540001081c546f6f4c6f6e6700000880457863656564656420612067656e65726963206c656e677468206c696d69742e1d01546865206c696d697420636f756c6420626520666f7220616e7920736f7274206f66206c69737473206f66207468696e67732c20696e636c7564696e67206120737472696e672e3c436f756e7465724f766572666c6f77000118b85468652073657175656e636520636f756e74657220666f7220736f6d657468696e67206f766572666c6f7765642e001d015768656e20746869732068617070656e7320646570656e6473206f6e20652e672e2c20746865206361706163697479206f6620746865206964656e74696669657220747970652e3901466f72206578616d706c652c207765206d69676874206861766520607075622073747275637420506970496428753332293b602c207769746820607533323a3a4d4158602063617061636974792e5901496e2070726163746963652c207468657365206572726f72732077696c6c206e657665722068617070656e20627574206e6f20636f646520706174682073686f756c6420726573756c7420696e20612070616e69632cfc736f20746865736520636f726e6572206361736573206e65656420746f20626520636f7665726564207769746820616e206572726f722076617269616e742e00090a00000408a41901000d0a085870616c6c65745f65787465726e616c5f6167656e7473144572726f72040454000118204e6f537563684147000004ec416e20414720776974682074686520676976656e2060414749646020646964206e6f7420657869737420666f722074686520605469636b6572602e44556e617574686f72697a65644167656e74000104e8546865206167656e74206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e38416c7265616479416e4167656e74000204e85468652070726f766964656420606167656e746020697320616c726561647920616e206167656e7420666f722074686520605469636b6572602e284e6f74416e4167656e74000304d85468652070726f766964656420606167656e7460206973206e6f7420616e206167656e7420666f722074686520605469636b6572602e5452656d6f76696e674c61737446756c6c4167656e74000408e054686973206167656e7420697320746865206c6173742066756c6c206f6e652c20616e642069742773206265696e672072656d6f7665642c686d616b696e6720746865206173736574206f727068616e65642e845365636f6e646172794b65794e6f74417574686f72697a6564466f7241737365740005041d015468652063616c6c65722773207365636f6e64617279206b657920646f6573206e6f74206861766520746865207265717569726564206173736574207065726d697373696f6e2e00110a083870616c6c65745f72656c617965721c53756273696479040c416363010000080128706179696e675f6b657900010c41636300012472656d61696e696e6718011c42616c616e63650000150a083870616c6c65745f72656c61796572144572726f7204045400011c44557365724b65794364644d697373696e67000004cc5468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e4c506179696e674b65794364644d697373696e67000104cc5468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e2c4e6f506179696e674b6579000204ac5468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e304e6f74506179696e674b6579000304b05468652060757365725f6b65796020686173206120646966666572656e742060706179696e675f6b6579602e644e6f74417574686f72697a6564466f72506179696e674b6579000404b8546865207369676e6572206973206e6f7420617574686f72697a656420666f722060706179696e675f6b6579602e5c4e6f74417574686f72697a6564466f72557365724b6579000504b0546865207369676e6572206973206e6f7420617574686f72697a656420666f722060757365725f6b6579602e204f766572666c6f77000604b85468652072656d61696e696e6720504f4c595820666f722060757365725f6b657960206f766572666c6f7765642e00190a083870616c6c65745f72657761726473144572726f7204045400011044556e6b6e6f776e49746e41646472657373000004cc4164647265737320776173206e6f7420666f756e6420696e20746865206c697374206f662049746e206164647265737365732e5c49746e526577617264416c7265616479436c61696d65640001047c49746e207265776172642077617320616c726561647920636c61696d65642e40496e76616c69645369676e61747572650002047c50726f7669646564207369676e61747572652077617320696e76616c69642e54556e61626c65546f436f7665727442616c616e6365000304b042616c616e63652063616e206e6f7420626520636f6e76657274656420746f2061207072696d69746976652e001d0a084470616c6c65745f746573745f7574696c73144572726f7204045400010000210a102873705f72756e74696d651c67656e657269634c756e636865636b65645f65787472696e73696348556e636865636b656445787472696e736963101c4164647265737301d5041043616c6c018105245369676e617475726501810714457874726101250a00040028000000250a00000420290a2d0a310a350a3d0a410a490a4d0a00290a10306672616d655f73797374656d28657874656e73696f6e7348636865636b5f737065635f76657273696f6e40436865636b5370656356657273696f6e040454000000002d0a10306672616d655f73797374656d28657874656e73696f6e7340636865636b5f74785f76657273696f6e38436865636b547856657273696f6e04045400000000310a10306672616d655f73797374656d28657874656e73696f6e7334636865636b5f67656e6573697330436865636b47656e6573697304045400000000350a10306672616d655f73797374656d28657874656e73696f6e733c636865636b5f6d6f7274616c69747938436865636b4d6f7274616c69747904045400000400390a010c4572610000390a102873705f72756e74696d651c67656e657269630c6572610c4572610001010420496d6d6f7274616c0000001c4d6f7274616c31040008000001001c4d6f7274616c32040008000002001c4d6f7274616c33040008000003001c4d6f7274616c34040008000004001c4d6f7274616c35040008000005001c4d6f7274616c36040008000006001c4d6f7274616c37040008000007001c4d6f7274616c38040008000008001c4d6f7274616c3904000800000900204d6f7274616c313004000800000a00204d6f7274616c313104000800000b00204d6f7274616c313204000800000c00204d6f7274616c313304000800000d00204d6f7274616c313404000800000e00204d6f7274616c313504000800000f00204d6f7274616c313604000800001000204d6f7274616c313704000800001100204d6f7274616c313804000800001200204d6f7274616c313904000800001300204d6f7274616c323004000800001400204d6f7274616c323104000800001500204d6f7274616c323204000800001600204d6f7274616c323304000800001700204d6f7274616c323404000800001800204d6f7274616c323504000800001900204d6f7274616c323604000800001a00204d6f7274616c323704000800001b00204d6f7274616c323804000800001c00204d6f7274616c323904000800001d00204d6f7274616c333004000800001e00204d6f7274616c333104000800001f00204d6f7274616c333204000800002000204d6f7274616c333304000800002100204d6f7274616c333404000800002200204d6f7274616c333504000800002300204d6f7274616c333604000800002400204d6f7274616c333704000800002500204d6f7274616c333804000800002600204d6f7274616c333904000800002700204d6f7274616c343004000800002800204d6f7274616c343104000800002900204d6f7274616c343204000800002a00204d6f7274616c343304000800002b00204d6f7274616c343404000800002c00204d6f7274616c343504000800002d00204d6f7274616c343604000800002e00204d6f7274616c343704000800002f00204d6f7274616c343804000800003000204d6f7274616c343904000800003100204d6f7274616c353004000800003200204d6f7274616c353104000800003300204d6f7274616c353204000800003400204d6f7274616c353304000800003500204d6f7274616c353404000800003600204d6f7274616c353504000800003700204d6f7274616c353604000800003800204d6f7274616c353704000800003900204d6f7274616c353804000800003a00204d6f7274616c353904000800003b00204d6f7274616c363004000800003c00204d6f7274616c363104000800003d00204d6f7274616c363204000800003e00204d6f7274616c363304000800003f00204d6f7274616c363404000800004000204d6f7274616c363504000800004100204d6f7274616c363604000800004200204d6f7274616c363704000800004300204d6f7274616c363804000800004400204d6f7274616c363904000800004500204d6f7274616c373004000800004600204d6f7274616c373104000800004700204d6f7274616c373204000800004800204d6f7274616c373304000800004900204d6f7274616c373404000800004a00204d6f7274616c373504000800004b00204d6f7274616c373604000800004c00204d6f7274616c373704000800004d00204d6f7274616c373804000800004e00204d6f7274616c373904000800004f00204d6f7274616c383004000800005000204d6f7274616c383104000800005100204d6f7274616c383204000800005200204d6f7274616c383304000800005300204d6f7274616c383404000800005400204d6f7274616c383504000800005500204d6f7274616c383604000800005600204d6f7274616c383704000800005700204d6f7274616c383804000800005800204d6f7274616c383904000800005900204d6f7274616c393004000800005a00204d6f7274616c393104000800005b00204d6f7274616c393204000800005c00204d6f7274616c393304000800005d00204d6f7274616c393404000800005e00204d6f7274616c393504000800005f00204d6f7274616c393604000800006000204d6f7274616c393704000800006100204d6f7274616c393804000800006200204d6f7274616c393904000800006300244d6f7274616c31303004000800006400244d6f7274616c31303104000800006500244d6f7274616c31303204000800006600244d6f7274616c31303304000800006700244d6f7274616c31303404000800006800244d6f7274616c31303504000800006900244d6f7274616c31303604000800006a00244d6f7274616c31303704000800006b00244d6f7274616c31303804000800006c00244d6f7274616c31303904000800006d00244d6f7274616c31313004000800006e00244d6f7274616c31313104000800006f00244d6f7274616c31313204000800007000244d6f7274616c31313304000800007100244d6f7274616c31313404000800007200244d6f7274616c31313504000800007300244d6f7274616c31313604000800007400244d6f7274616c31313704000800007500244d6f7274616c31313804000800007600244d6f7274616c31313904000800007700244d6f7274616c31323004000800007800244d6f7274616c31323104000800007900244d6f7274616c31323204000800007a00244d6f7274616c31323304000800007b00244d6f7274616c31323404000800007c00244d6f7274616c31323504000800007d00244d6f7274616c31323604000800007e00244d6f7274616c31323704000800007f00244d6f7274616c31323804000800008000244d6f7274616c31323904000800008100244d6f7274616c31333004000800008200244d6f7274616c31333104000800008300244d6f7274616c31333204000800008400244d6f7274616c31333304000800008500244d6f7274616c31333404000800008600244d6f7274616c31333504000800008700244d6f7274616c31333604000800008800244d6f7274616c31333704000800008900244d6f7274616c31333804000800008a00244d6f7274616c31333904000800008b00244d6f7274616c31343004000800008c00244d6f7274616c31343104000800008d00244d6f7274616c31343204000800008e00244d6f7274616c31343304000800008f00244d6f7274616c31343404000800009000244d6f7274616c31343504000800009100244d6f7274616c31343604000800009200244d6f7274616c31343704000800009300244d6f7274616c31343804000800009400244d6f7274616c31343904000800009500244d6f7274616c31353004000800009600244d6f7274616c31353104000800009700244d6f7274616c31353204000800009800244d6f7274616c31353304000800009900244d6f7274616c31353404000800009a00244d6f7274616c31353504000800009b00244d6f7274616c31353604000800009c00244d6f7274616c31353704000800009d00244d6f7274616c31353804000800009e00244d6f7274616c31353904000800009f00244d6f7274616c3136300400080000a000244d6f7274616c3136310400080000a100244d6f7274616c3136320400080000a200244d6f7274616c3136330400080000a300244d6f7274616c3136340400080000a400244d6f7274616c3136350400080000a500244d6f7274616c3136360400080000a600244d6f7274616c3136370400080000a700244d6f7274616c3136380400080000a800244d6f7274616c3136390400080000a900244d6f7274616c3137300400080000aa00244d6f7274616c3137310400080000ab00244d6f7274616c3137320400080000ac00244d6f7274616c3137330400080000ad00244d6f7274616c3137340400080000ae00244d6f7274616c3137350400080000af00244d6f7274616c3137360400080000b000244d6f7274616c3137370400080000b100244d6f7274616c3137380400080000b200244d6f7274616c3137390400080000b300244d6f7274616c3138300400080000b400244d6f7274616c3138310400080000b500244d6f7274616c3138320400080000b600244d6f7274616c3138330400080000b700244d6f7274616c3138340400080000b800244d6f7274616c3138350400080000b900244d6f7274616c3138360400080000ba00244d6f7274616c3138370400080000bb00244d6f7274616c3138380400080000bc00244d6f7274616c3138390400080000bd00244d6f7274616c3139300400080000be00244d6f7274616c3139310400080000bf00244d6f7274616c3139320400080000c000244d6f7274616c3139330400080000c100244d6f7274616c3139340400080000c200244d6f7274616c3139350400080000c300244d6f7274616c3139360400080000c400244d6f7274616c3139370400080000c500244d6f7274616c3139380400080000c600244d6f7274616c3139390400080000c700244d6f7274616c3230300400080000c800244d6f7274616c3230310400080000c900244d6f7274616c3230320400080000ca00244d6f7274616c3230330400080000cb00244d6f7274616c3230340400080000cc00244d6f7274616c3230350400080000cd00244d6f7274616c3230360400080000ce00244d6f7274616c3230370400080000cf00244d6f7274616c3230380400080000d000244d6f7274616c3230390400080000d100244d6f7274616c3231300400080000d200244d6f7274616c3231310400080000d300244d6f7274616c3231320400080000d400244d6f7274616c3231330400080000d500244d6f7274616c3231340400080000d600244d6f7274616c3231350400080000d700244d6f7274616c3231360400080000d800244d6f7274616c3231370400080000d900244d6f7274616c3231380400080000da00244d6f7274616c3231390400080000db00244d6f7274616c3232300400080000dc00244d6f7274616c3232310400080000dd00244d6f7274616c3232320400080000de00244d6f7274616c3232330400080000df00244d6f7274616c3232340400080000e000244d6f7274616c3232350400080000e100244d6f7274616c3232360400080000e200244d6f7274616c3232370400080000e300244d6f7274616c3232380400080000e400244d6f7274616c3232390400080000e500244d6f7274616c3233300400080000e600244d6f7274616c3233310400080000e700244d6f7274616c3233320400080000e800244d6f7274616c3233330400080000e900244d6f7274616c3233340400080000ea00244d6f7274616c3233350400080000eb00244d6f7274616c3233360400080000ec00244d6f7274616c3233370400080000ed00244d6f7274616c3233380400080000ee00244d6f7274616c3233390400080000ef00244d6f7274616c3234300400080000f000244d6f7274616c3234310400080000f100244d6f7274616c3234320400080000f200244d6f7274616c3234330400080000f300244d6f7274616c3234340400080000f400244d6f7274616c3234350400080000f500244d6f7274616c3234360400080000f600244d6f7274616c3234370400080000f700244d6f7274616c3234380400080000f800244d6f7274616c3234390400080000f900244d6f7274616c3235300400080000fa00244d6f7274616c3235310400080000fb00244d6f7274616c3235320400080000fc00244d6f7274616c3235330400080000fd00244d6f7274616c3235340400080000fe00244d6f7274616c3235350400080000ff00003d0a10306672616d655f73797374656d28657874656e73696f6e732c636865636b5f6e6f6e636528436865636b4e6f6e6365040454000004000d040120543a3a496e6465780000410a0c4c706f6c796d6573685f657874656e73696f6e7330636865636b5f7765696768742c436865636b57656967687404045400000400450a011443573c543e0000450a10306672616d655f73797374656d28657874656e73696f6e7330636865636b5f7765696768742c436865636b57656967687404045400000000490a086870616c6c65745f7472616e73616374696f6e5f7061796d656e74604368617267655472616e73616374696f6e5061796d656e7404045400000400d101013042616c616e63654f663c543e00004d0a084870616c6c65745f7065726d697373696f6e734453746f726543616c6c4d6574616461746104045400000000510a0c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d651c52756e74696d6500000000bc1853797374656d011853797374656d401c4163636f756e7401010402000c4101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e8205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e3845787472696e736963436f756e74000010040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e2c426c6f636b57656967687401001c600000000000000000000000000000000000000000000000000488205468652063757272656e742077656967687420666f722074686520626c6f636b2e40416c6c45787472696e736963734c656e000010040004410120546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e24426c6f636b486173680101040510248000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101040510280400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d6265720100101000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801002480000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e1844696765737401002c040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e7473010048040010a0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e005901204e4f54453a20546869732073746f72616765206974656d206973206578706c696369746c7920756e626f756e6465642073696e6365206974206973206e6576657220696e74656e64656420746f2062652072656164642066726f6d2077697468696e207468652072756e74696d652e284576656e74436f756e74010010100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f70696373010104022405040400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e004d01205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e484c61737452756e74696d65557067726164650000090404000455012053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e545570677261646564546f553332526566436f756e7401001d010400044d012054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e605570677261646564546f547269706c65526566436f756e7401001d010400085d012054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e73207468726565207479706573206f662060526566436f756e74602e2046616c736548202864656661756c7429206966206e6f742e38457865637574696f6e50686173650000fd03040004882054686520657865637574696f6e207068617365206f662074686520626c6f636b2e01150401541830426c6f636b576569676874732504850100c817a80400000000204aa9d10100008036be26000000000180914b872e010000010098f73e5d0100000100000000000000008036be26000000000180199ef1a20100000100204aa9d1010000010088526a740000008036be260000000000000004d020426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e2c426c6f636b4c656e677468310430000078000000a0000000a00004a820546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e38426c6f636b48617368436f756e741010fa000000045501204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e20446257656967687439044080f0fa020000000000c2eb0b000000000409012054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e1c56657273696f6e3d040d0430706f6c796d6573685f64657630706f6c796d6573685f64657601000000c20b00000000000048df6acb689907609b0300000037e397fc7c91f5e40100000040fe3ad401f8959a05000000d2bc9897eed08f1503000000f78b278be53f454c02000000ed99c5acb25eedf503000000cbca25e39f14238702000000687ad44ad37f03c201000000bc9d89904f5b923f0100000037c8bb1350a9a2a801000000ab3c0572291feb8b0100000018ef58a3b67ba77001000000329342994773047f01000000001a0b29f17d01f401000000f28e8080b6e2dfd001000000bb6ba9053c5c9d78010000009f242c2c886f3fce01000000595ac34c5ea1f5fe01000000020000000484204765742074686520636861696e27732063757272656e742076657273696f6e2e28535335385072656669780d03082a0014a8205468652064657369676e61746564205353383520707265666978206f66207468697320636861696e2e0039012054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e20697331012074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f662069742061737020616e206964656e746966696572206f662074686520636861696e2e015104001042616265011042616265402845706f6368496e64657801002020000000000000000004542043757272656e742065706f636820696e6465782e2c417574686f726974696573010055040400046c2043757272656e742065706f636820617574686f7269746965732e2c47656e65736973536c6f740100650420000000000000000008f82054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e205468697320697320309020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2c43757272656e74536c6f740100650420000000000000000004542043757272656e7420736c6f74206e756d6265722e2852616e646f6d6e65737301000480000000000000000000000000000000000000000000000000000000000000000028b8205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e002c20232053656375726974790005012054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061f8206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e7915012063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d6265727320746861742074686973150120286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e206265050120757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e0d01206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e6050656e64696e6745706f6368436f6e6669674368616e67650000690404000461012050656e64696e672065706f636820636f6e66696775726174696f6e206368616e676520746861742077696c6c206265206170706c696564207768656e20746865206e6578742065706f636820697320656e61637465642e384e65787452616e646f6d6e657373010004800000000000000000000000000000000000000000000000000000000000000000045c204e6578742065706f63682072616e646f6d6e6573732e3c4e657874417574686f7269746965730100550404000460204e6578742065706f636820617574686f7269746965732e305365676d656e74496e6465780100101000000000247c2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e00f4205765206d616b6520612074726164656f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e01012057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f942060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e00ec204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e090120576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572791c2065706f63682e44556e646572436f6e737472756374696f6e0101040510750404000415012054574f582d4e4f54453a20605365676d656e74496e6465786020697320616e20696e6372656173696e6720696e74656765722c20736f2074686973206973206f6b61792e2c496e697469616c697a656400007d0404000801012054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d65601d01206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e4c417574686f7256726652616e646f6d6e65737301007d0404001015012054686973206669656c642073686f756c6420616c7761797320626520706f70756c6174656420647572696e6720626c6f636b2070726f63657373696e6720756e6c6573731901207365636f6e6461727920706c61696e20736c6f74732061726520656e61626c65642028776869636820646f6e277420636f6e7461696e206120565246206f7574707574292e0051012049742069732073657420696e20606f6e5f696e697469616c697a65602c206265666f72652069742077696c6c20636f6e7461696e207468652076616c75652066726f6d20746865206c61737420626c6f636b2e2845706f6368537461727401007503200000000000000000145d012054686520626c6f636b206e756d62657273207768656e20746865206c61737420616e642063757272656e742065706f6368206861766520737461727465642c20726573706563746976656c7920604e2d316020616e641420604e602e4901204e4f54453a20576520747261636b207468697320697320696e206f7264657220746f20616e6e6f746174652074686520626c6f636b206e756d626572207768656e206120676976656e20706f6f6c206f66590120656e74726f7079207761732066697865642028692e652e20697420776173206b6e6f776e20746f20636861696e206f6273657276657273292e2053696e63652065706f6368732061726520646566696e656420696e590120736c6f74732c207768696368206d617920626520736b69707065642c2074686520626c6f636b206e756d62657273206d6179206e6f74206c696e6520757020776974682074686520736c6f74206e756d626572732e204c6174656e657373010010100000000014d820486f77206c617465207468652063757272656e7420626c6f636b20697320636f6d706172656420746f2069747320706172656e742e001501205468697320656e74727920697320706f70756c617465642061732070617274206f6620626c6f636b20657865637574696f6e20616e6420697320636c65616e65642075701101206f6e20626c6f636b2066696e616c697a6174696f6e2e205175657279696e6720746869732073746f7261676520656e747279206f757473696465206f6620626c6f636bb020657865637574696f6e20636f6e746578742073686f756c6420616c77617973207969656c64207a65726f2e2c45706f6368436f6e6669670000810404000861012054686520636f6e66696775726174696f6e20666f72207468652063757272656e742065706f63682e2053686f756c64206e6576657220626520604e6f6e656020617320697420697320696e697469616c697a656420696e242067656e657369732e3c4e65787445706f6368436f6e666967000081040400082d012054686520636f6e66696775726174696f6e20666f7220746865206e6578742065706f63682c20604e6f6e65602069662074686520636f6e6669672077696c6c206e6f74206368616e6765e82028796f752063616e2066616c6c6261636b20746f206045706f6368436f6e6669676020696e737465616420696e20746861742063617365292e018504000c3445706f63684475726174696f6e20202c010000000000000cec2054686520616d6f756e74206f662074696d652c20696e20736c6f74732c207468617420656163682065706f63682073686f756c64206c6173742e1901204e4f54453a2043757272656e746c79206974206973206e6f7420706f737369626c6520746f206368616e6765207468652065706f6368206475726174696f6e20616674657221012074686520636861696e2068617320737461727465642e20417474656d7074696e6720746f20646f20736f2077696c6c20627269636b20626c6f636b2070726f64756374696f6e2e444578706563746564426c6f636b54696d652020701700000000000014050120546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e67110120626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f75740501207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f740901206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473a0207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e384d6178417574686f7269746965731010a08601000488204d6178206e756d626572206f6620617574686f72697469657320616c6c6f776564019904012454696d657374616d70012454696d657374616d70080c4e6f7701002020000000000000000004902043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e2444696455706461746501001d01040004b420446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f019d040004344d696e696d756d506572696f642020b80b000000000000104d0120546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a5d0120706572696f6420746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c5d012067656e6572616c6c7920776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c206265a020646f75626c65207468697320706572696f64206f6e2064656661756c742073657474696e67732e00021c496e6469636573011c496e646963657304204163636f756e74730001040210a5040400048820546865206c6f6f6b75702066726f6d20696e64657820746f206163636f756e742e01a9040170041c4465706f736974184040420f0000000000000000000000000004ac20546865206465706f736974206e656564656420666f7220726573657276696e6720616e20696e6465782e01ad040328417574686f72736869700128417574686f72736869700c18556e636c65730100b1040400041c20556e636c657318417574686f720000000400046420417574686f72206f662063757272656e7420626c6f636b2e30446964536574556e636c657301001d01040004bc205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e01b904000440556e636c6547656e65726174696f6e731010000000000ccc20546865206e756d626572206f6620626c6f636b73206261636b2077652073686f756c642061636365707420756e636c65732ee42054686973206d65616e7320746861742077652077696c6c206465616c207769746820756e636c652d706172656e7473207468617420617265942060556e636c6547656e65726174696f6e73202b203160206265666f726520606e6f77602e01c104042042616c616e636573012042616c616e6365730834546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e144c6f636b730101040200c504040008b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e01d104017404484578697374656e7469616c4465706f73697418400000000000000000000000000000000004d420546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e01d90405485472616e73616374696f6e5061796d656e7401485472616e73616374696f6e5061796d656e7408444e6578744665654d756c7469706c6965720100dd0440000064a7b3b6e00d0000000000000000003853746f7261676556657273696f6e0100e104040000000008485472616e73616374696f6e42797465466565184064000000000000000000000000000000040d01205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e2c576569676874546f466565e5045c040000000000000000000000000000000049b400000001040d012054686520706f6c796e6f6d69616c2074686174206973206170706c69656420696e206f7264657220746f20646572697665206665652066726f6d207765696768742e0006204964656e7469747901204964656e7469747938284469645265636f726473010104067ced0484000000000000000000000000000000000000000000000000000000000000000000045420444944202d3e206964656e7469747920696e666f2c497344696446726f7a656e010104067c1d01040004e420444944202d3e20626f6f6c207468617420696e64696361746573206966207365636f6e64617279206b657973206172652066726f7a656e2e2843757272656e7444696400007c040004e02049742073746f726573207468652063757272656e74206964656e7469747920666f722063757272656e74207472616e73616374696f6e2e3043757272656e74506179657200000004000401012049742073746f726573207468652063757272656e74206761732066656520706179657220666f72207468652063757272656e74207472616e73616374696f6e18436c61696d730101080502f904f4c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a04f020285461726765742049442c20636c61696d20747970652920286973737565722c73636f706529202d3e204173736f63696174656420636c61696d73404b6579546f4964656e7469747949647301010405007c80000000000000000000000000000000000000000000000000000000000000000000444d756c7469507572706f73654e6f6e636501002020000000000000000004bc204e6f6e636520746f20656e7375726520756e6971756520616374696f6e732e207374617274732066726f6d20312e684f6666436861696e417574686f72697a6174696f6e4e6f6e6365010104067c2020000000000000000004c820417574686f72697a6174696f6e206e6f6e636520706572204964656e746974792e20496e697469616c6c7920697320302e38417574686f72697a6174696f6e73000108020509050d05040004b020416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792f6b6579206861734c417574686f72697a6174696f6e73476976656e010108060511059884000000000000000000000000000000000000000000000000000000000000000000044d0120416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792068617320676976656e2e2028417574686f72697a65722c20617574685f6964202d3e20617574686f72697a6564296c43646441757468466f724d61737465724b6579526f746174696f6e01001d010400086501204f62736f6c657465642073746f72616765207661726961626c652073757065726365646564206279206043646441757468466f725072696d6172794b6579526f746174696f6e602e204974206973206b65707420686572659820666f722074686520707572706f7365206f662073746f72616765206d6967726174696f6e2e7043646441757468466f725072696d6172794b6579526f746174696f6e01001d010400085d01204120636f6e66696720666c616720746861742c206966207365742c20696e7374727563747320616e20617574686f72697a6174696f6e2066726f6d2061204344442070726f766964657220696e206f7264657220746f9c206368616e676520746865207072696d617279206b6579206f6620616e206964656e746974792e3853746f7261676556657273696f6e01001505040004442053746f726167652076657273696f6e2e484163636f756e744b6579526566436f756e740101040200202000000000000000001cc420486f77206d616e7920227374726f6e6722207265666572656e63657320746f20746865206163636f756e74206b65792e00fc205374726f6e67207265666572656e6365732077696c6c20626c6f636b2061206b65792066726f6d206c656176696e672069742773206964656e746974792e00cc2050616c6c657473207573696e6720227374726f6e6722207265666572656e63657320746f206163636f756e74206b6579733aac202a2052656c617965723a20466f722060757365725f6b65796020616e642060706179696e675f6b65796000011905018c0430496e697469616c504f4c595818400000000000000000000000000000000000016d05074c4364645365727669636550726f7669646572730138496e7374616e63653247726f75700c344163746976654d656d6265727301003101040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d6265727301007105040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01790501290100017d050844506f6c796d657368436f6d6d69747465650148496e7374616e636531436f6d6d6974746565242450726f706f73616c7301000104040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f6600010406248105040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e670001040624d107040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100310104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401007503200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201004501040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e0100d507040004442053746f726167652076657273696f6e2e0185050135010001d907094c436f6d6d69747465654d656d626572736869700138496e7374616e63653147726f75700c344163746976654d656d6265727301003101040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d6265727301007105040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e0189050149010001dd070a48546563686e6963616c436f6d6d69747465650148496e7374616e636533436f6d6d6974746565242450726f706f73616c7301000104040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f6600010406248105040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e670001040624d107040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100310104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401007503200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201004501040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e0100d507040004442053746f726167652076657273696f6e2e018d050151010001e1070b70546563686e6963616c436f6d6d69747465654d656d626572736869700138496e7374616e63653347726f75700c344163746976654d656d6265727301003101040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d6265727301007105040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e0191050159010001e5070c4055706772616465436f6d6d69747465650148496e7374616e636534436f6d6d6974746565242450726f706f73616c7301000104040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f6600010406248105040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e670001040624d107040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100310104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401007503200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201004501040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e0100d507040004442053746f726167652076657273696f6e2e0195050161010001e9070d6855706772616465436f6d6d69747465654d656d626572736869700138496e7374616e63653447726f75700c344163746976654d656d6265727301003101040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d6265727301007105040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e0199050169010001ed070e204d756c746953696701204d756c746953696730344d756c74695369674e6f6e6365010020200000000000000000042101204e6f6e636520746f20656e7375726520756e69717565204d756c746953696720616464726573736573206172652067656e6572617465643b207374617274732066726f6d20312e3c4d756c74695369675369676e6572730101080605f107988400000000000000000000000000000000000000000000000000000000000000000004d4205369676e657273206f662061206d756c74697369672e20286d756c74697369672c207369676e657229203d3e207369676e65722e3c4e756d6265724f665369676e65727301010406002020000000000000000004cc204e756d626572206f6620617070726f7665642f6163636570746564207369676e657273206f662061206d756c74697369672e544d756c74695369675369676e73526571756972656401010406002020000000000000000004e020436f6e6669726d6174696f6e73207265717569726564206265666f72652070726f63657373696e672061206d756c74697369672074782e384d756c74695369675478446f6e65010104060020200000000000000000043501204e756d626572206f66207472616e73616374696f6e732070726f706f73656420696e2061206d756c74697369672e20557365642061732074782069643b207374617274732066726f6d20302e2450726f706f73616c7300010405f507810504000475012050726f706f73616c732070726573656e74656420666f7220766f74696e6720746f2061206d756c746973696720286d756c74697369672c2070726f706f73616c20696429203d3e204f7074696f6e3c543a3a50726f706f73616c3e2e2c50726f706f73616c4964730001080602f90720040004942041206d617070696e67206f662070726f706f73616c7320746f207468656972204944732e14566f74657301010405fd071d01040004250120496e646976696475616c206d756c7469736967207369676e657220766f7465732e20286d756c7469207369672c207369676e65722c2070726f706f73616c29203d3e20766f74652e344b6579546f4d756c746953696701010405000080000000000000000000000000000000000000000000000000000000000000000004c8204d6170732061206d756c7469736967207369676e6572206b657920746f2061206d756c746973696720616464726573732e484d756c7469536967546f4964656e7469747901010406007c80000000000000000000000000000000000000000000000000000000000000000004a4204d6170732061206d756c7469736967206163636f756e7420746f20697473206964656e746974792e3850726f706f73616c44657461696c01010405f50701084c00000000000000000000000000000000000000047c2044657461696c73206f662061206d756c74697369672070726f706f73616c485472616e73616374696f6e56657273696f6e010010100000000004f420546865206c617374207472616e73616374696f6e2076657273696f6e2c207573656420666f7220606f6e5f72756e74696d655f75706772616465602e019d05017101000109080f1842726964676501184272696467652828436f6e74726f6c6c65720100008000000000000000000000000000000000000000000000000000000000000000000c410120546865206d756c7469736967206163636f756e74206f66207468652062726964676520636f6e74726f6c6c65722e205468652067656e65736973207369676e65727320616363657074207468656972450120617574686f72697a6174696f6e7320616e64206172652061626c6520746f206765742074686569722070726f706f73616c732064656c6976657265642e20546865206272696467652063726561746f729c207472616e736665727320736f6d6520504f4c5920746f207468656972206964656e746974792e3c427269646765547844657461696c7301010802020d081108d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000859012044657461696c73206f6620627269646765207472616e73616374696f6e73206964656e7469666965642077697468207061697273206f662074686520726563697069656e74206163636f756e7420616e64207468656820627269646765207472616e73616374696f6e206e6f6e63652e1441646d696e010000800000000000000000000000000000000000000000000000000000000000000000043c205468652061646d696e206b65792e1846726f7a656e01001d01040004bc2057686574686572206f72206e6f742074686520627269646765206f7065726174696f6e2069732066726f7a656e2e30467265657a6541646d696e7301010402001d01040004090120467265657a65206272696467652061646d696e732e20205468657365206163636f756e74732063616e206f6e6c7920667265657a6520746865206272696467652e2054696d656c6f636b0100101000000000083d012054686520627269646765207472616e73616374696f6e2074696d656c6f636b20706572696f642c20696e20626c6f636b732c2073696e63652074686520616363657074616e6365206f66207468653101207472616e73616374696f6e2070726f706f73616c20647572696e67207768696368207468652061646d696e206b65792063616e20667265657a6520746865207472616e73616374696f6e2e2c4272696467654c696d69740100190850000000000000000000000000000000000000000008290120546865206d6178696d756d206e756d626572206f66206272696467656420504f4c595820706572206964656e746974792077697468696e20612073657420696e74657276616c206f66f820626c6f636b732e204669656c64733a20504f4c595820616d6f756e7420616e642074686520626c6f636b20696e74657276616c206475726174696f6e2e30506f6c797842726964676564010104067c190850000000000000000000000000000000000000000008510120416d6f756e74206f6620504f4c5958206272696467656420627920746865206964656e7469747920696e206c61737420626c6f636b20696e74657276616c2e204669656c64733a2074686520627269646765649420616d6f756e7420616e6420746865206c61737420696e74657276616c206e756d6265722e4c4272696467654c696d69744578656d70746564010104057c1d01040004c0204964656e746974696573206e6f7420636f6e73747261696e65642062792074686520627269646765206c696d69742e3853746f7261676556657273696f6e01001d08040004442053746f726167652076657273696f6e2e01a10501750100012108101c5374616b696e67011c5374616b696e679c30486973746f7279446570746801001010540000001c8c204e756d626572206f66206572617320746f206b65657020696e20686973746f72792e00390120496e666f726d6174696f6e206973206b65707420666f72206572617320696e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e006101204d757374206265206d6f7265207468616e20746865206e756d626572206f6620657261732064656c617965642062792073657373696f6e206f74686572776973652e20492e652e2061637469766520657261206d757374390120616c7761797320626520696e20686973746f72792e20492e652e20606163746976655f657261203e2063757272656e745f657261202d20686973746f72795f646570746860206d757374206265302067756172616e746565642e3856616c696461746f72436f756e74010010100000000004a82054686520696465616c206e756d626572206f66207374616b696e67207061727469636970616e74732e544d696e696d756d56616c696461746f72436f756e740100101000000000044101204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e34496e76756c6e657261626c65730100910104000c590120416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e636520746865792772654d01206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f7572ac20696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e18426f6e6465640001040500000400040101204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e184c6564676572000104020025080400044501204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e1450617965650101040500b505040004e42057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e2856616c696461746f72730101040500b90508000004450120546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e284e6f6d696e61746f727300010405003108040004650120546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f2074686520736574206f66207374617368206b657973206f6620616c6c2076616c696461746f727320746f206e6f6d696e6174652e2843757272656e744572610000100400105c205468652063757272656e742065726120696e6465782e006501205468697320697320746865206c617465737420706c616e6e6564206572612c20646570656e64696e67206f6e20686f77207468652053657373696f6e2070616c6c657420717565756573207468652076616c696461746f7280207365742c206974206d6967687420626520616374697665206f72206e6f742e2441637469766545726100003508040010d820546865206163746976652065726120696e666f726d6174696f6e2c20697420686f6c647320696e64657820616e642073746172742e0059012054686520616374697665206572612069732074686520657261206265696e672063757272656e746c792072657761726465642e2056616c696461746f7220736574206f66207468697320657261206d757374206265ac20657175616c20746f205b6053657373696f6e496e746572666163653a3a76616c696461746f7273605d2e5445726173537461727453657373696f6e496e6465780001040510100400103101205468652073657373696f6e20696e646578206174207768696368207468652065726120737461727420666f7220746865206c6173742060484953544f52595f44455054486020657261732e006101204e6f74653a205468697320747261636b7320746865207374617274696e672073657373696f6e2028692e652e2073657373696f6e20696e646578207768656e20657261207374617274206265696e672061637469766529f020666f7220746865206572617320696e20605b43757272656e74457261202d20484953544f52595f44455054482c2043757272656e744572615d602e2c457261735374616b65727301010805053908cd010c0000001878204578706f73757265206f662076616c696461746f72206174206572612e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e48457261735374616b657273436c697070656401010805053908cd010c0000002c9820436c6970706564204578706f73757265206f662076616c696461746f72206174206572612e00590120546869732069732073696d696c617220746f205b60457261735374616b657273605d20627574206e756d626572206f66206e6f6d696e61746f7273206578706f736564206973207265647563656420746f20746865dc2060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732e1d0120284e6f74653a20746865206669656c642060746f74616c6020616e6420606f776e60206f6620746865206578706f737572652072656d61696e7320756e6368616e676564292ef42054686973206973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e005d012054686973206973206b657965642066697374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e484572617356616c696461746f72507265667301010805053908b9050800001411012053696d696c617220746f2060457261735374616b657273602c207468697320686f6c64732074686520707265666572656e636573206f662076616c696461746f72732e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4c4572617356616c696461746f7252657761726400010405101804000c09012054686520746f74616c2076616c696461746f7220657261207061796f757420666f7220746865206c6173742060484953544f52595f44455054486020657261732e0021012045726173207468617420686176656e27742066696e697368656420796574206f7220686173206265656e2072656d6f76656420646f65736e27742068617665207265776172642e4045726173526577617264506f696e747301010405103d0814000000000008ac205265776172647320666f7220746865206c6173742060484953544f52595f44455054486020657261732e250120496620726577617264206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207265776172642069732072657475726e65642e3845726173546f74616c5374616b65010104051018400000000000000000000000000000000008ec2054686520746f74616c20616d6f756e74207374616b656420666f7220746865206c6173742060484953544f52595f44455054486020657261732e1d0120496620746f74616c206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207374616b652069732072657475726e65642e20466f7263654572610100490804000454204d6f6465206f662065726120666f7263696e672e4c536c6173685265776172644672616374696f6e0100950110000000000cf8205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e00e4205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e4c43616e63656c6564536c6173685061796f757401001840000000000000000000000000000000000815012054686520616d6f756e74206f662063757272656e637920676976656e20746f207265706f7274657273206f66206120736c617368206576656e7420776869636820776173ec2063616e63656c65642062792065787472616f7264696e6172792063697263756d7374616e6365732028652e672e20676f7665726e616e6365292e40556e6170706c696564536c617368657301010405104d08040004c420416c6c20756e6170706c69656420736c61736865732074686174206172652071756575656420666f72206c617465722e28426f6e646564457261730100050404001025012041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e00c8204d75737420636f6e7461696e7320696e666f726d6174696f6e20666f72206572617320666f72207468652072616e67653abc20605b6163746976655f657261202d20626f756e64696e675f6475726174696f6e3b206163746976655f6572615d604c56616c696461746f72536c617368496e457261000108050539085d08040008450120416c6c20736c617368696e67206576656e7473206f6e2076616c696461746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682070726f706f7274696f6e7020616e6420736c6173682076616c7565206f6620746865206572612e4c4e6f6d696e61746f72536c617368496e4572610001080505390818040004610120416c6c20736c617368696e67206576656e7473206f6e206e6f6d696e61746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682076616c7565206f6620746865206572612e34536c617368696e675370616e73000104050061080400048c20536c617368696e67207370616e7320666f72207374617368206163636f756e74732e245370616e536c617368010104050d086508800000000000000000000000000000000000000000000000000000000000000000083d01205265636f72647320696e666f726d6174696f6e2061626f757420746865206d6178696d756d20736c617368206f6620612073746173682077697468696e206120736c617368696e67207370616e2cb82061732077656c6c20617320686f77206d7563682072657761726420686173206265656e2070616964206f75742e584561726c69657374556e6170706c696564536c617368000010040004fc20546865206561726c696573742065726120666f72207768696368207765206861766520612070656e64696e672c20756e6170706c69656420736c6173682e48536e617073686f7456616c696461746f727300009101040008650120536e617073686f74206f662076616c696461746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e48536e617073686f744e6f6d696e61746f727300009101040008650120536e617073686f74206f66206e6f6d696e61746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e34517565756564456c65637465640000690804000c650120546865206e6578742076616c696461746f72207365742e2041742074686520656e64206f6620616e206572612c206966207468697320697320617661696c61626c652028706f74656e7469616c6c792066726f6d20746865610120726573756c74206f6620616e206f6666636861696e20776f726b6572292c20697420697320696d6d6564696174656c7920757365642e204f74686572776973652c20746865206f6e2d636861696e20656c656374696f6e342069732065786563757465642e2c51756575656453636f726500009d06040004b0205468652073636f7265206f66207468652063757272656e74205b60517565756564456c6563746564605d2e44457261456c656374696f6e53746174757301006d08040008490120466c616720746f20636f6e74726f6c2074686520657865637574696f6e206f6620746865206f6666636861696e20656c656374696f6e2e205768656e20604f70656e285f29602c207765206163636570746c20736f6c7574696f6e7320746f206265207375626d69747465642e54497343757272656e7453657373696f6e46696e616c01001d010400084d012054727565206966207468652063757272656e74202a2a706c616e6e65642a2a2073657373696f6e2069732066696e616c2e204e6f74652074686174207468697320646f6573206e6f742074616b65206572615820666f7263696e6720696e746f206163636f756e742e505065726d697373696f6e65644964656e74697479000104057c7108040004ec20456e74697469657320746861742061726520616c6c6f77656420746f2072756e206f70657261746f722f76616c696461746f72206e6f6465732e5856616c696461746f72436f6d6d697373696f6e4361700100950110000000000415012045766572792076616c696461746f722068617320636f6d6d697373696f6e20746861742073686f756c6420626520696e207468652072616e6765205b302c204361705d2e504d696e696d756d426f6e645468726573686f6c64010018400000000000000000000000000000000004d020546865206d696e696d756d20616d6f756e74207769746820776869636820612076616c696461746f722063616e20626f6e642e48536c617368696e67416c6c6f776564466f72010099010402003853746f7261676556657273696f6e01007508040610cc2054727565206966206e6574776f726b20686173206265656e20757067726164656420746f20746869732076657273696f6e2e7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e00a020546869732069732073657420746f2076362e302e3120666f72206e6577206e6574776f726b732e01b1050189012c3853657373696f6e735065724572611010030000000470204e756d626572206f662073657373696f6e7320706572206572612e3c426f6e64696e674475726174696f6e10100700000004e4204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e48536c61736844656665724475726174696f6e101004000000140101204e756d626572206f662065726173207468617420736c6173686573206172652064656665727265642062792c20616674657220636f6d7075746174696f6e2e00bc20546869732073686f756c64206265206c657373207468616e2074686520626f6e64696e67206475726174696f6e2e2d012053657420746f203020696620736c61736865732073686f756c64206265206170706c69656420696d6d6564696174656c792c20776974686f7574206f70706f7274756e69747920666f723820696e74657276656e74696f6e2e44456c656374696f6e4c6f6f6b616865616410104b0000001c710120546865206e756d626572206f6620626c6f636b73206265666f72652074686520656e64206f6620746865206572612066726f6d20776869636820656c656374696f6e207375626d697373696f6e732061726520616c6c6f7765642e006d012053657474696e67207468697320746f207a65726f2077696c6c2064697361626c6520746865206f6666636861696e20636f6d7075746520616e64206f6e6c79206f6e2d636861696e207365712d70687261676d656e2077696c6c2420626520757365642e007501205468697320697320626f756e646564206279206265696e672077697468696e20746865206c6173742073657373696f6e2e2048656e63652c2073657474696e6720697420746f20612076616c7565206d6f7265207468616e207468659c206c656e677468206f6620612073657373696f6e2077696c6c20626520706f696e746c6573732e344d6178497465726174696f6e7310100a0000000c2901204d6178696d756d206e756d626572206f662062616c616e63696e6720697465726174696f6e7320746f2072756e20696e20746865206f6666636861696e207375626d697373696f6e2e00ec2049662073657420746f20302c2062616c616e63655f736f6c7574696f6e2077696c6c206e6f7420626520657865637574656420617420616c6c2e504d696e536f6c7574696f6e53636f726542756d7095011020a1070004610120546865207468726573686f6c64206f6620696d70726f76656d656e7420746861742073686f756c642062652070726f766964656420666f722061206e657720736f6c7574696f6e20746f2062652061636365707465642e804d61784e6f6d696e61746f72526577617264656450657256616c696461746f7210100008000010f820546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320726577617264656420666f7220656163682076616c696461746f722e00690120466f7220656163682076616c696461746f72206f6e6c79207468652060244d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732063616e20636c61696d2101207468656972207265776172642e2054686973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e5c4d617856616c696461746f725065724964656e746974794d0210100905000cf4204d6178696d756d206e756d626572206f662076616c696461746f727320666f722065616368207065726d697373696f6e6564206964656e746974792e005901204d6178206e756d626572206f662076616c696461746f727320636f756e74203d20604d617856616c696461746f725065724964656e74697479202a2053656c663a3a76616c696461746f725f636f756e742829602e844d61785661726961626c65496e666c6174696f6e546f74616c49737375616e636518400080c6a47e8d03000000000000000000047101204d6178696d756d20616d6f756e74206f662060543a3a63757272656e63793a3a746f74616c5f69737375616e63652829602061667465722074686174206e6f6e2d696e666c6174656420726577617264732067657420706169642e444669786564596561726c79526577617264184000c0444a547f0000000000000000000004010120546f74616c2079656172207265776172647320746861742067657473207061696420647572696e6720666978656420726577617264207363686564756c652e2c4d696e696d756d426f6e64184040420f0000000000000000000000000004f0204d696e696d756d20616d6f756e74206f6620504f4c59582074686174206d75737420626520626f6e64656420666f722061206e657720626f6e642e01790811204f6666656e63657301204f6666656e6365730c1c5265706f72747300010405247d08040004490120546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e58436f6e63757272656e745265706f727473496e6465780101080505810801040400042901204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e485265706f72747342794b696e64496e64657801010405250128040018110120456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e00bc20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e004901204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f66690120646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e00019d010000121c53657373696f6e011c53657373696f6e1c2856616c696461746f7273010091010400047c205468652063757272656e7420736574206f662076616c696461746f72732e3043757272656e74496e646578010010100000000004782043757272656e7420696e646578206f66207468652073657373696f6e2e345175657565644368616e67656401001d01040008390120547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f7273a420686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e285175657565644b657973010085080400083d012054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b657973e02077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e4844697361626c656456616c696461746f72730100d9030400148020496e6469636573206f662064697361626c65642076616c696461746f72732e003d01205468652076656320697320616c77617973206b65707420736f7274656420736f20746861742077652063616e2066696e642077686574686572206120676976656e2076616c696461746f722069733d012064697361626c6564207573696e672062696e617279207365617263682e204974206765747320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e73642061206e657720736574206f66206964656e7469746965732e204e6578744b6579730001040500a9060400049c20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e204b65794f776e6572000104058d0800040004090120546865206f776e6572206f662061206b65792e20546865206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e01a50601a101000195081348417574686f72697479446973636f766572790000000000141c4772616e647061011c4772616e647061181453746174650100990804000490205374617465206f66207468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e676500009d08040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000010040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c6564000075030400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e3043757272656e745365744964010020200000000000000000085d0120546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c697469657329c420696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e30536574496453657373696f6e00010405201004001059012041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e00b82054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e01b10601a50104384d6178417574686f7269746965731010a0860100045c204d617820417574686f72697469657320696e2075736501a5081528486973746f726963616c00000000001620496d4f6e6c696e650120496d4f6e6c696e651038486561727462656174416674657201001010000000002c1d012054686520626c6f636b206e756d6265722061667465722077686963682069742773206f6b20746f2073656e64206865617274626561747320696e207468652063757272656e74242073657373696f6e2e0025012041742074686520626567696e6e696e67206f6620656163682073657373696f6e20776520736574207468697320746f20612076616c756520746861742073686f756c642066616c6c350120726f7567686c7920696e20746865206d6964646c65206f66207468652073657373696f6e206475726174696f6e2e20546865206964656120697320746f206669727374207761697420666f721901207468652076616c696461746f727320746f2070726f64756365206120626c6f636b20696e207468652063757272656e742073657373696f6e2c20736f207468617420746865a820686561727462656174206c61746572206f6e2077696c6c206e6f74206265206e65636573736172792e00390120546869732076616c75652077696c6c206f6e6c79206265207573656420617320612066616c6c6261636b206966207765206661696c20746f2067657420612070726f7065722073657373696f6e2d012070726f677265737320657374696d6174652066726f6d20604e65787453657373696f6e526f746174696f6e602c2061732074686f736520657374696d617465732073686f756c642062650101206d6f7265206163637572617465207468656e207468652076616c75652077652063616c63756c61746520666f7220604865617274626561744166746572602e104b6579730100a908040004d0205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e4852656365697665644865617274626561747300010805057503b1080400083d0120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206053657373696f6e496e6465786020616e64206041757468496e6465786020746fb02060577261707065724f70617175653c426f756e6465644f70617175654e6574776f726b53746174653e602e38417574686f726564426c6f636b730101080505390810100000000008150120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206056616c696461746f7249643c543e6020746f20746865c8206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e01dd0601b9010440556e7369676e65645072696f726974792020ffffffffffffffff10f0204120636f6e66696775726174696f6e20666f722062617365207072696f72697479206f6620756e7369676e6564207472616e73616374696f6e732e0015012054686973206973206578706f73656420736f20746861742069742063616e2062652074756e656420666f7220706172746963756c61722072756e74696d652c207768656eb4206d756c7469706c652070616c6c6574732073656e6420756e7369676e6564207472616e73616374696f6e732e01c508176052616e646f6d6e657373436f6c6c656374697665466c6970016052616e646f6d6e657373436f6c6c656374697665466c6970043852616e646f6d4d6174657269616c0100010404000c610120536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e2054686973610120697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f664420746865206f6c6465737420686173682e0000000018105375646f01105375646f040c4b657901000080000000000000000000000000000000000000000000000000000000000000000004842054686520604163636f756e74496460206f6620746865207375646f206b65792e01fd0601dd010001c9081914417373657401144173736574541c5469636b65727301010402a4cd08840000000000000000000000000000000000000000000000000000000000000000000874205469636b657220726567697374726174696f6e2064657461696c732e7c20287469636b657229202d3e205469636b6572526567697374726174696f6e305469636b6572436f6e666967010019070800000870205469636b657220726567697374726174696f6e20636f6e6669672e9420287469636b657229202d3e205469636b6572526567697374726174696f6e436f6e66696718546f6b656e7301010402a4d108c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008e02044657461696c73206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e050120287469636b657229202d3e205365637572697479546f6b656e2064657461696c73205b72657475726e73205365637572697479546f6b656e207374727563745d2841737365744e616d657301010402a40102040008ec204173736574206e616d65206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e6020287469636b657229202d3e206041737365744e616d65602442616c616e63654f660101080206d50818400000000000000000000000000000000008b42054686520746f74616c206173736574207469636b65722062616c616e636520706572206964656e746974792e6420287469636b65722c2044494429202d3e2042616c616e63652c4964656e7469666965727301010402a4f101040004b82041206d6170206f662061207469636b6572206e616d6520616e64206173736574206964656e746966696572732e50437573746f6d54797065496453657175656e63650100ed0110000000000cc420546865206e65787420604173736574547970653a3a437573746f6d6020494420696e207468652073657175656e63652e00d0204e756d6265727320696e207468652073657175656e63652073746172742066726f6d203120726174686572207468616e20302e2c437573746f6d547970657301010405ed0128040004f8204d61707320637573746f6d20617373657420747970652069647320746f20746865207265676973746572656420737472696e6720636f6e74656e74732e48437573746f6d5479706573496e76657273650101040228ed01100000000004610120496e7665727365206d6170206f662060437573746f6d5479706573602c2066726f6d207265676973746572656420737472696e6720636f6e74656e747320746f20637573746f6d2061737365742074797065206964732e3046756e64696e67526f756e6401010402a4e5010400089c20546865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e60207469636b6572202d3e2066756e64696e6720726f756e6450497373756564496e46756e64696e67526f756e6401010402d9081840000000000000000000000000000000000811012054686520746f74616c2062616c616e636573206f6620746f6b656e732069737375656420696e20616c6c207265636f726465642066756e64696e6720726f756e64732e8c20287469636b65722c2066756e64696e6720726f756e6429202d3e2062616c616e63651846726f7a656e01010402a41d01040008e82054686520736574206f662066726f7a656e2061737365747320696d706c656d656e7465642061732061206d656d62657273686970206d61702e3c207469636b6572202d3e20626f6f6c5c41737365744f776e65727368697052656c6174696f6e730101080602dd08e10804000888205469636b65727320616e6420746f6b656e206f776e656420627920612075736572842028757365722c207469636b657229202d3e2041737365744f776e657273686970384173736574446f63756d656e74730101080205e5080902140000000000087c20446f63756d656e747320617474616368656420746f20616e2041737365747420287469636b65722c20646f635f696429202d3e20646f63756d656e74604173736574446f63756d656e7473496453657175656e636501010402a4050210000000000880205065722d7469636b657220646f63756d656e7420494420636f756e7465722e4c20287469636b657229202d3e20646f635f696438436c61737369635469636b65727300010402a4e908040004f0205469636b657220726567697374726174696f6e2064657461696c73206f6e20506f6c796d61746820436c6173736963202f20457468657265756d2e4042616c616e63654f66417453636f70650101080606ed081840000000000000000000000000000000000ccc2042616c616e636573206765742073746f726564206f6e20746865206261736973206f6620746865206053636f70654964602e9d01205269676874206e6f77206974206973206f6e6c792068656c7066756c20666f722074686520554920707572706f7365732062757420696e206675747572652069742063616e206265207573656420746f20646f206d697261636c6573206f6e2d636861696e2e88202853636f706549642c204964656e74697479496429203d3e2042616c616e63652e4041676772656761746542616c616e63650101080206d5081840000000000000000000000000000000000825012053746f7265206167677265676174652062616c616e6365206f662074686f7365206964656e746974696573207468617420686173207468652073616d65206053636f70654964602e7820285469636b65722c2053636f7065496429203d3e2042616c616e63652e2453636f706549644f660101080206d5087c80000000000000000000000000000000000000000000000000000000000000000008dc20547261636b73207468652053636f70654964206f6620746865206964656e7469747920666f72206120676976656e207469636b65722e8420285469636b65722c204964656e74697479496429203d3e2053636f706549642e6444697361626c65496e766573746f72556e697175656e65737301010402a41d0104001031012044656369646573207768657468657220696e766573746f7220756e697175656e65737320726571756972656d656e7420697320656e666f7263656420666f7220746869732061737365742e8c206066616c736560206d65616e73207468617420697420697320656e666f726365642e0040205469636b6572203d3e20626f6f6c2e3853746f7261676556657273696f6e0100f108040004442053746f726167652076657273696f6e2e01010701e1010c784d61784e756d6265724f66544d457874656e73696f6e466f724173736574101005000000004841737365744e616d654d61784c656e677468101080000000006446756e64696e67526f756e644e616d654d61784c656e6774681010800000000001f5081a4c4361706974616c446973747269627574696f6e014c4361706974616c446973747269627574696f6e0c34446973747269627574696f6e73000104024102490204000c350120416c6c206361706974616c20646973747269627574696f6e732c207469656420746f207468656972207265737065637469766520636f72706f7261746520616374696f6e732028434173292e005c20284341496429203d3e20446973747269627574696f6e28486f6c6465725061696401010402f9081d0104000c8c2048617320616e20617373657420686f6c646572206265656e2070616964207965743f00a42028434149642c2044494429202d3e2057617320444944207061696420696e2074686520434149643f3853746f7261676556657273696f6e0100fd08040004442053746f726167652076657273696f6e2e011d07013902000101091b28436865636b706f696e740128436865636b706f696e742c2c546f74616c537570706c79010108020505091840000000000000000000000000000000000cb420546f74616c20737570706c79206f662074686520746f6b656e2061742074686520636865636b706f696e742e00ec20287469636b65722c20636865636b706f696e74496429202d3e20746f74616c20737570706c7920617420676976656e20636865636b706f696e741c42616c616e6365010108020509091840000000000000000000000000000000000c882042616c616e6365206f66206120444944206174206120636865636b706f696e742e00050120287469636b65722c206469642c20636865636b706f696e7420494429202d3e2042616c616e6365206f66206120444944206174206120636865636b706f696e7450436865636b706f696e74496453657175656e636501010402a45902200000000000000000108c20436865636b706f696e74732049442067656e657261746f722073657175656e63652ea8204944206f6620666972737420636865636b706f696e74206973203120696e7374656164206f6620302e007c20287469636b657229202d3e206e6f2e206f6620636865636b706f696e74733842616c616e6365557064617465730101080205d5080d09040008bc20436865636b706f696e747320776865726520612044494427732062616c616e63652077617320757064617465642ef020287469636b65722c2064696429202d3e205b636865636b706f696e7420494420776865726520757365722062616c616e6365206368616e6765645d2854696d657374616d70730101080205050920200000000000000000185c20436865636b706f696e742074696d657374616d70732e000901204576657279207363686564756c652d6f726967696e6174656420636865636b706f696e74206d6170732069747320494420746f20697473206475652074696d652e210120457665727920636865636b706f696e74206d616e75616c6c792063726561746564206d6170732069747320494420746f207468652074696d65206f66207265636f7264696e672e00d020287469636b657229202d3e2028636865636b706f696e7420494429202d3e20636865636b706f696e742074696d657374616d70585363686564756c65734d6178436f6d706c657869747901002020000000000000000008190120546865206d6178696d756d20636f6d706c657869747920616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365749c2028692e652e20605363686564756c6573602073746f72616765206974656d2062656c6f77292e485363686564756c65496453657175656e636501010402a46d022000000000000000000cb420436865636b706f696e74207363686564756c652049442073657175656e636520666f72207469636b6572732e006020287469636b657229202d3e207363686564756c65204944245363686564756c657301010402a4110904000c8820436865636b706f696e74207363686564756c657320666f72207469636b6572732e005c20287469636b657229202d3e205b7363686564756c655d405363686564756c65526566436f756e740101080205150910100000000020010120486f77206d616e7920227374726f6e6722207265666572656e6365732061726520746865726520746f206120676976656e20605363686564756c654964603f00fc205468652070726573656e6365206f66206120227374726f6e6722207265666572656e63652c20696e207468652073656e7365206f66206052633c543e602ce020656e7461696c73207468617420746865207265666572656e636564207363686564756c652063616e6e6f742062652072656d6f7665642ed820546875732c206173206c6f6e6720617320607374726f6e675f7265665f636f756e74287363686564756c655f696429203e2030602cac206072656d6f76655f7363686564756c65287363686564756c655f696429602077696c6c206572726f722e00a820287469636b65722c207363686564756c6520494429202d3e207374726f6e672072656620636f756e74385363686564756c65506f696e7473010108020515090d0904000cc420416c6c2074686520636865636b706f696e7473206120676976656e207363686564756c65206f726967696e617465642e00a420287469636b65722c207363686564756c6520494429202d3e205b636865636b706f696e742049445d3853746f7261676556657273696f6e01001909040004442053746f726167652076657273696f6e2e01250701510200011d091c44436f6d706c69616e63654d616e616765720144436f6d706c69616e63654d616e616765720c404173736574436f6d706c69616e63657301010402a4210908000004e820417373657420636f6d706c69616e636520666f722061207469636b657220285469636b6572202d3e204173736574436f6d706c69616e6365294854727573746564436c61696d49737375657201010402a48d02040004dc204c697374206f66207472757374656420636c61696d20697373756572205469636b6572202d3e20497373756572204964656e746974793853746f7261676556657273696f6e01002509040004442053746f726167652076657273696f6e2e012d0701710204584d6178436f6e646974696f6e436f6d706c6578697479101032000000000129091d3c436f72706f72617465416374696f6e013c436f72706f72617465416374696f6e24404d617844657461696c734c656e67746801001010000000001c5d012044657465726d696e657320746865206d6178696d756d206e756d626572206f6620627974657320746861742074686520667265652d666f726d206064657461696c7360206f6620612043412063616e2073746f72652e002901204e6f746520746861742074686973206973206e6f7420746865206e756d626572206f662060636861726073206f7220746865206e756d626572206f66205b6772617068656d65735d2e4101205768696c652074686973206d617920626520756e6e61747572616c20696e207465726d73206f662068756d616e20756e6465727374616e64696e67206f66206120746578742773206c656e6774682c6501206974206d6f726520636c6f73656c79207265666c656374732061637475616c2073746f7261676520636f73747320286027612760206973206368656170657220746f2073746f7265207468616e20616e20656d6f6a69292e00d0205b6772617068656d65735d3a2068747470733a2f2f656e2e77696b6970656469612e6f72672f77696b692f4772617068656d655c44656661756c745461726765744964656e74697469657301010402a4a90208000110f020546865206964656e7469746965732074617267657465642062792064656661756c7420666f722043417320666f722074686973207469636b65722c8c2065697468657220746f206265206578636c75646564206f7220696e636c756465642e007820287469636b6572203d3e20746172676574206964656e746974696573295444656661756c7457697468686f6c64696e6754617801010402a44d02100000000020ad01205468652064656661756c7420616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722074686973207469636b6572207768656e20646973747269627574696e67206469766964656e64732e00350120546f20756e6465727374616e642077697468686f6c64696e67207461782c20652e672e2c206c6574277320617373756d65207468617420796f7520686f6c642041434d45207368617265732ec42041434d45206e6f77206465636964657320746f2064697374726962757465203130302053454b20746f20416c6963652e590120416c696365206c6976657320696e2053776564656e2c20736f20536b617474657665726b6574202874686520537765646973682074617820617574686f72697479292077616e747320333025206f6620746861742e5d01205468656e2074686f736520313030202a2033302520617265207769746868656c642066726f6d20416c6963652c20616e642041434d452077696c6c2073656e64207468656d20746f20536b617474657665726b65742e006820287469636b6572203d3e202520746f2077697468686f6c64294444696457697468686f6c64696e6754617801010402a4c90204001049012054686520616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722061206365727461696e207469636b65722078204449442e6d0120496620616e20656e7472792065786973747320666f722061206365727461696e204449442c206974206f7665727269646573207468652064656661756c7420696e206044656661756c7457697468686f6c64696e67546178602e008820287469636b6572203d3e205b286469642c202520746f2077697468686f6c64295d304341496453657175656e636501010402a44502100000000008b420546865206e657874207065722d605469636b65726020434120494420696e207468652073657175656e63652e4d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652e40436f72706f72617465416374696f6e7300010802052d09b5020400146c20416c6c207265636f72646564204341732074687573206661722ea4204f6e6c792067656e6572696320696e666f726d6174696f6e2069732073746f72656420686572652e7d01205370656369666963206043414b696e6460732c20652e672e2c2062656e656669747320616e6420636f72706f726174652062616c6c6f74732c206d617920757365206164646974696f6e616c206f6e2d636861696e2073746f726167652e00b420287469636b6572203d3e206c6f63616c204944203d3e2074686520636f72706f7261746520616374696f6e29244341446f634c696e6b010104024102d502040014d0204173736f63696174696f6e732066726f6d2043417320746f2060446f63756d656e74607320766961207468656972204944732e5c202843414964203d3e205b446f63756d656e7449645d29000501205468652060436f72706f72617465416374696f6e7360206d61702073746f72657320605469636b6572203d3e204c6f63616c4964203d3e20546865204341602c250120736f2077652063616e20696e66657220605469636b6572203d3e2043414964602e205468657265666f72652c20776520646f6e2774206e656564206120646f75626c65206d61702e1c44657461696c73010104024102d102040008e8204173736f6369617465732064657461696c7320696e20667265652d666f726d207465787420776974682061204341206279206974732049442e50202843414964203d3e20434144657461696c73293853746f7261676556657273696f6e01003109040004442053746f726167652076657273696f6e2e01310701a50208304d61785461726765744964731010e803000000284d6178446964576874731010e8030000000135091e3c436f72706f7261746542616c6c6f74013c436f72706f7261746542616c6c6f7418144d65746173000104024102e10204000c80204d65746164617461206f66206120636f72706f726174652062616c6c6f742e005420284341496429203d3e2042616c6c6f744d6574612854696d6552616e676573000104024102dd02040010e42054696d652064657461696c73206f66206120636f72706f726174652062616c6c6f74206173736f636961746564207769746820612043412ed0205468652074696d657374616d70732064656e6f7465207768656e20766f74696e672073746172747320616e642073746f70732e006820284341496429203d3e2042616c6c6f7454696d6552616e6765404d6f74696f6e4e756d43686f69636573010104024102cd05040024c82053746f72657320686f77206d616e792063686f696365732074686572652061726520696e2065616368206d6f74696f6e2e00250120417420616c6c2074696d65732c2074686520696e76617269616e7420686f6c6473207468617420606d6f74696f6e5f63686f696365735b6964785d6020697320657175616c20746f310120606d657461732e756e7772617028292e6d6f74696f6e735b6964785d2e63686f696365732e6c656e2829602e20546861742069732c2074686973206973206a75737420612063616368652c1101207573656420746f2061766f6964206665746368696e6720616c6c20746865206d6f74696f6e732077697468207468656972206173736f6369617465642074657874732e0001012060753136602063686f696365732073686f756c64206265206d6f7265207468616e20656e6f75676820746f20666974207265616c207573652063617365732e00b020284341496429203d3e204e756d626572206f662063686f6963657320696e2065616368206d6f74696f6e2e0c5243560101040241021d01040010dc2049732072616e6b65642063686f69636520766f74696e6720285243562920656e61626c656420666f7220746869732062616c6c6f743f650120466f7220616e20756e6465727374616e64696e67206f6620686f77205243562069732068616e646c65642c20736565206e6f7465206f6e206042616c6c6f74566f7465602773206066616c6c6261636b60206669656c642e003c20284341496429203d3e20626f6f6c1c526573756c7473010104024102390904001cb02053746f7265732074686520746f74616c20766f74652074616c6c79206f6e20656163682063686f6963652e006820524356206973206e6f74206163636f756e74656420666f722cd02061732074686572652061726520746f6f206d616e792077616e747320746f20696e74657270726574207468652067726170682c9c20616e64206265636175736520697420776f756c64206e6f7420626520656666696369656e742e008420284341496429203d3e205b63757272656e7420766f746520776569676874735d14566f7465730101080206f9080103040018ac2053746f726573206561636820444944277320766f74657320696e206120676976656e2062616c6c6f742ef8205365652074686520646f63756d656e746174696f6e206f66206042616c6c6f74566f74656020666f72206e6f746573206f6e2073656d616e746963732e008420284341496429203d3e202844494429203d3e205b766f7465207765696768745d001d012055736572206d75737420656e746572203020766f746520776569676874206966207468657920646f6e27742077616e7420746f20766f746520666f7220612063686f6963652e01450701d90200013d091f2c5065726d697373696f6e7300000000014109201050697073011050697073544c5072756e65486973746f726963616c5069707301001d01040004fc2044657465726d696e6573207768657468657220686973746f726963616c20504950206461746120697320706572736973746564206f722072656d6f766564584d696e696d756d50726f706f73616c4465706f7369740100184000000000000000000000000000000000041d0120546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f7220636f6d6d756e69747920504950206372656174696f6e2e5844656661756c74456e6163746d656e74506572696f6401001010000000000439012044656661756c7420656e6163746d656e7420706572696f6420746861742077696c6c2062652075736520616674657220612070726f706f73616c2069732061636365707465642062792047432e4050656e64696e6750697045787069727901004501040108f420486f77206d616e7920626c6f636b732077696c6c2069742074616b652c2061667465722061206050656e64696e67602050495020657870697265732cf420617373756d696e6720697420686173206e6f74207472616e736974696f6e656420746f20616e6f74686572206050726f706f73616c5374617465603f3c4d6178506970536b6970436f756e740100080400048901204d6178696d756d2074696d65732061205049502063616e20626520736b6970706564206265666f72652074726967676572696e67206043616e6e6f74536b69705069706020696e2060656e6163745f736e617073686f745f726573756c7473602e384163746976655069704c696d6974010010100000000008c420546865206d6178696d756d20616c6c6f776564206e756d62657220666f722060416374697665506970436f756e74602e0101204f6e636520726561636865642c206e657720504950732063616e6e6f742062652070726f706f73656420627920636f6d6d756e697479206d656d626572732e34506970496453657175656e636501001d0310000000000409012050726f706f73616c7320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f662050495073206f66662d636861696e2e48536e617073686f74496453657175656e6365010039031000000000041d0120536e617073686f747320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f6620736e617073686f7473206f66662d636861696e2e38416374697665506970436f756e74010010100000000004c820546f74616c20636f756e74206f662063757272656e742070656e64696e67206f72207363686564756c656420504950732e4050726f706f73616c4d65746164617461000104051d0345090400049820546865206d65746164617461206f6620746865206163746976652070726f706f73616c732e204465706f73697473010108050549094d09c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008842054686f73652077686f2068617665206c6f636b65642061206465706f7369742e8c2070726f706f73616c202869642c2070726f706f73657229202d3e206465706f7369742450726f706f73616c73000104051d035109040008c42041637475616c2070726f706f73616c20666f72206120676976656e2069642c20696620697427732063757272656e742e602070726f706f73616c206964202d3e2070726f706f73616c3850726f706f73616c526573756c74010104051d035509a00000000000000000000000000000000000000000000000000000000000000000000000000000000008d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e682070726f706f73616c206964202d3e20766f746520636f756e743450726f706f73616c566f746573000108050549095909040008050120566f746573207065722050726f706f73616c20616e64206163636f756e742e205573656420746f2061766f696420646f75626c6520766f74652069737375652e7c202870726f706f73616c2069642c206163636f756e7429202d3e20566f746534506970546f5363686564756c65000104051d0310040004fc204d617073205049507320746f2074686520626c6f636b20617420776869636820746865792077696c6c2062652065786563757465642c20696620616e792e244c697665517565756501003d03040018cc2041206c697665207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029a0206f662070656e64696e67205049507320757020746f2074686520616374697665206c696d69742ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e00450120556e6c696b652060536e617073686f745175657565602c2074686973207175657565206973206c6976652c2067657474696e6720757064617465642077697468206561636820766f746520636173742e2d012054686520736e617073686f74206973207468657265666f726520657373656e7469616c6c79206120706f696e742d696e2d74696d6520636c6f6e65206f6620746869732071756575652e34536e617073686f74517565756501003d03040014590120546865207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029206f6620504950732061742074686520706f696e74206f6620736e617073686f7474696e672ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e000901204120717565756564205049502063616e20626520736b69707065642e20446f696e6720736f2062756d70732074686520607069705f736b69705f636f756e74602e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e30536e617073686f744d65746100005d09040004bc20546865206d65746164617461206f662074686520736e617073686f742c206966207468657265206973206f6e652e30506970536b6970436f756e74010104051d0308040008d020546865206e756d626572206f662074696d65732061206365727461696e2050495020686173206265656e20736b69707065642e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e34436f6d6d69747465655069707301005503040008d420416c6c206578697374696e672050495073207768657265207468652070726f706f736572206973206120636f6d6d69747465652e39012054686973206c6973742069732061206361636865206f6620616c6c2069647320696e206050726f706f73616c73602077697468206050726f706f7365723a3a436f6d6d6974746565285f29602e3853746f7261676556657273696f6e01006109040000014907011103000165092124506f7274666f6c696f0124506f7274666f6c696f244c4e657874506f7274666f6c696f4e756d626572010104067ce420010000000000000004cc20546865206e65787420706f7274666f6c696f2073657175656e6365206e756d626572206f6620616e206964656e746974792e28506f7274666f6c696f73010108060569095d0304000c41012054686520736574206f66206578697374696e6720706f7274666f6c696f732077697468207468656972206e616d65732e2049662061206365727461696e2070616972206f6620612044494420616e64590120706f7274666f6c696f206e756d626572206d61707320746f20604e6f6e6560207468656e2073756368206120706f7274666f6c696f20646f65736e27742065786973742e20436f6e76657273656c792c206966206135012070616972206d61707320746f2060536f6d65286e616d652960207468656e2073756368206120706f7274666f6c696f2065786973747320616e642069732063616c6c656420606e616d65602e304e616d65546f4e756d62657201010806026d09e420010000000000000008e420496e7665727365206d6170206f662060506f7274666f6c696f7360207573656420746f20656e737572652062696a6563746976697469792ca420616e6420756e697175656e657373206f66206e616d657320696e2060506f7274666f6c696f73602e4c506f7274666f6c696f4173736574436f756e7401010405dc2020000000000000000004fc20486f77206d616e79206173736574732077697468206e6f6e2d7a65726f2062616c616e6365207468697320706f7274666f6c696f20636f6e7461696e732e58506f7274666f6c696f417373657442616c616e636573010108050271091840000000000000000000000000000000000488205468652061737365742062616c616e636573206f6620706f7274666f6c696f732e54506f7274666f6c696f4c6f636b65644173736574730101080502710918400000000000000000000000000000000008a020416d6f756e74206f6620617373657473206c6f636b656420696e206120706f7274666f6c696f2e2d01205468657365206173736574732073686f7720757020696e20706f7274666f6c696f2062616c616e6365206275742063616e206e6f74206265207472616e7366657272656420617761792e48506f7274666f6c696f437573746f6469616e00010405dc7c04000481012054686520637573746f6469616e206f66206120706172746963756c617220706f7274666f6c696f2e204e6f6e6520696d706c696573207468617420746865206964656e74697479206f776e65722069732074686520637573746f6469616e2e4c506f7274666f6c696f73496e437573746f6479010108060575091d0104000c550120547261636b7320616c6c2074686520706f7274666f6c696f7320696e20637573746f6479206f66206120706172746963756c6172206964656e746974792e204f6e6c79207573656420627920746865205549732ea501205768656e206074727565602069732073746f726564206173207468652076616c756520666f72206120676976656e2060286469642c2070696429602c206974206d65616e73207468617420607069646020697320696e20637573746f6479206f662060646964602ea501206066616c7365602076616c75657320617265206e65766572206578706c696369746c792073746f72656420696e20746865206d61702c20616e642061726520696e737465616420696e6665727265642062792074686520616273656e6365206f662061206b65792e3853746f7261676556657273696f6e01007909040004442053746f726167652076657273696f6e2e01590701590300017d09222c50726f746f636f6c466565012c50726f746f636f6c4665650820426173654665657301010405690718400000000000000000000000000000000004150120546865206d617070696e67206f66206f7065726174696f6e206e616d657320746f2074686520626173652066656573206f662074686f7365206f7065726174696f6e732e2c436f656666696369656e7401006d03200100000001000000041501205468652066656520636f656666696369656e74206173206120706f73697469766520726174696f6e616c20286e756d657261746f722c2064656e6f6d696e61746f72292e0165070169030001810923245363686564756c657201245363686564756c65720c184167656e6461010104051085090400044d01204974656d7320746f2062652065786563757465642c20696e64657865642062792074686520626c6f636b206e756d626572207468617420746865792073686f756c64206265206578656375746564206f6e2e184c6f6f6b7570000104052875030400040101204c6f6f6b75702066726f6d206964656e7469747920746f2074686520626c6f636b206e756d62657220616e6420696e646578206f6620746865207461736b2e3853746f7261676556657273696f6e0100a90904000c7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e0098204e6577206e6574776f726b732073746172742077697468206c6173742076657273696f6e2e016d0701710308344d6178696d756d576569676874202000806e877401000008450120546865206d6178696d756d207765696768742074686174206d6179206265207363686564756c65642070657220626c6f636b20666f7220616e7920646973706174636861626c6573206f66206c657373a4207072696f72697479207468616e20607363686564756c653a3a484152445f444541444c494e45602e504d61785363686564756c6564506572426c6f636b101032000000081d0120546865206d6178696d756d206e756d626572206f66207363686564756c65642063616c6c7320696e2074686520717565756520666f7220612073696e676c6520626c6f636b2edc204e6f74207374726963746c7920656e666f726365642c20627574207573656420666f722077656967687420657374696d6174696f6e2e01ad092428536574746c656d656e740128536574746c656d656e74442456656e7565496e666f000104058103b1090400049820496e666f2061626f757420612076656e75652e2076656e75655f6964202d3e2076656e75651c44657461696c730101040581038503040008e420467265652d666f726d20746578742061626f757420612076656e75652e2076656e75655f6964202d3e206056656e756544657461696c736060204f6e6c79206e656564656420666f72207468652055492e4456656e7565496e737472756374696f6e730101080505b509410100107020496e737472756374696f6e7320756e64657220612076656e75652e60204f6e6c79206e656564656420666f72207468652055492e00842076656e75655f6964202d3e20696e737472756374696f6e5f6964202d3e2028293056656e75655369676e6572730101080505b9091d01040004e4205369676e65727320616c6c6f776564206279207468652076656e75652e202876656e75655f69642c207369676e657229202d3e20626f6f6c285573657256656e756573010104057ca5030400047101204172726179206f662076656e756573206372656174656420627920616e206964656e746974792e204f6e6c79206e656564656420666f72207468652055492e204964656e746974794964202d3e205665633c76656e75655f69643e48496e737472756374696f6e44657461696c73010104058d03bd09540000000000000000000000000000000000000000000411012044657461696c732061626f757420616e20696e737472756374696f6e2e20696e737472756374696f6e5f6964202d3e20696e737472756374696f6e5f64657461696c733c496e737472756374696f6e4c6567730101080505c509990379010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ec204c65677320756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656750496e737472756374696f6e4c65675374617475730101080505c509c909040004310120537461747573206f662061206c656720756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656753746174757364496e737472756374696f6e41666669726d7350656e64696e67010104058d0320200000000000000000048101204e756d626572206f662061666669726d6174696f6e732070656e64696e67206265666f726520696e737472756374696f6e2069732065786563757465642e20696e737472756374696f6e5f6964202d3e2061666669726d5f70656e64696e673c41666669726d7352656365697665640101080505cd09d109040004990120547261636b732061666669726d6174696f6e7320726563656976656420666f7220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c20636f756e7465725f706172747929202d3e2041666669726d6174696f6e537461747573405573657241666669726d6174696f6e730101080505d509d10904000855012048656c70732061207573657220747261636b2074686569722070656e64696e6720696e737472756374696f6e7320616e642061666669726d6174696f6e7320286f6e6c79206e656564656420666f72205549292ed42028636f756e7465725f70617274792c20696e737472756374696f6e5f696429202d3e2041666669726d6174696f6e537461747573305265636569707473557365640101080502f5071d01040004150120547261636b7320726564656d7074696f6e206f662072656365697074732e20287369676e65722c20726563656970745f75696429202d3e20726563656970745f757365643856656e756546696c746572696e6701010402a41d01040004fd0120547261636b73206966206120746f6b656e2068617320656e61626c65642066696c746572696e672076656e75657320746861742063616e2063726561746520696e737472756374696f6e7320696e766f6c76696e6720746865697220746f6b656e2e205469636b6572202d3e2066696c746572696e675f656e61626c65643856656e7565416c6c6f774c6973740101080205d9091d01040008c5012056656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c6172207469636b65722e204f6e6c7920757365642069662066696c746572696e6720697320656e61626c65642e7820287469636b65722c2076656e75655f696429202d3e20616c6c6f7765643056656e7565436f756e74657201008103200000000000000000041901204e756d626572206f662076656e75657320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d6265722948496e737472756374696f6e436f756e74657201008d03200000000000000000043101204e756d626572206f6620696e737472756374696f6e7320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d626572293853746f7261676556657273696f6e0100dd09040004442053746f726167652076657273696f6e2e017507017d030001e1092528537461746973746963730128537461746973746963730c584163746976655472616e736665724d616e616765727301010402a4e509040004c8205472616e73666572206d616e61676572732063757272656e746c7920656e61626c656420666f7220616e2041737365742e54496e766573746f72436f756e74506572417373657401010402a42020000000000000000004a4204e756d626572206f662063757272656e7420696e766573746f727320696e20616e2061737365742e384578656d7074456e7469746965730101080202e9091d0104000c490120456e746974696573206578656d70742066726f6d207472616e73666572206d616e61676572732e204578656d7074696f6e7320726571756972656d656e747320617265206261736564206f6e20544d532e4d0120544d73206d61792072657175697265206a757374207468652073656e6465722c206a757374207468652072656365697665722c20626f7468206f722065697468657220746f206265206578656d707465642e3d012043544d2072657175697265732073656e64657220746f206265206578656d70746564207768696c652050544d20726571756972657320726563656976657220746f206265206578656d707465642e01890701a903046c4d61785472616e736665724d616e616765727350657241737365741010030000000001f109260c53746f010c53746f0c2c46756e64726169736572730001080205f509c103040008b020416c6c2066756e64726169736572732074686174206172652063757272656e746c792072756e6e696e672e9820287469636b65722c2066756e647261697365725f696429202d3e2046756e647261697365723c46756e64726169736572436f756e7401010402a4b903200000000000000000049c20546f74616c2066756e6472616973657273206372656174656420666f72206120746f6b656e2e3c46756e647261697365724e616d65730101080205f509bd03040008b4204e616d6520666f72207468652046756e647261697365722e204f6e6c792075736564206f6666636861696e2eac20287469636b65722c2066756e647261697365725f696429202d3e2046756e64726169736572206e616d65018d0701b5030001f909272054726561737572790001a10701d1030001fd09281c5574696c697479011c5574696c69747904184e6f6e6365730101040500202000000000000000000001ad0701d5030001010a2910426173650001b90701e50304184d61784c656e1010000800000001050a2a3845787465726e616c4167656e7473013845787465726e616c4167656e747314304147496453657175656e636501010402a41901100000000010b420546865206e657874207065722d605469636b65726020414720494420696e207468652073657175656e63652e004d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652c90207768696368207374617274732066726f6d20312c20726174686572207468616e20302e1c4167656e744f660101080202dd08410100042901204d61707320616e206167656e742028604964656e746974794964602920746f20616c6c20616c6c20605469636b6572607320746865792062656c6f6e6720746f2c20696620616e792e3047726f75704f664167656e740001080205d50815010400043501204d617073206167656e74732028604964656e746974794964602920666f72206120605469636b65726020746f207768617420414720746865792062656c6f6e6720746f2c20696620616e792e344e756d46756c6c4167656e747301010402a410100000000004dc204d617073206120605469636b65726020746f20746865206e756d626572206f66206046756c6c60206167656e747320666f722069742e4047726f75705065726d697373696f6e730001080205090ab40400045d0120466f7220637573746f6d20414773206f66206120605469636b6572602c206d61707320746f2077686174207065726d697373696f6e7320616e206167656e7420696e207468617420414720776f756c6420686176652e01bd0701ed0300010d0a2b1c52656c61796572011c52656c6179657204245375627369646965730001040200110a040018ec20546865207375627369647920666f7220612060757365725f6b657960206966207468657920617265206265696e6720737562736964697365642c882061732061206d61702060757365725f6b657960203d3e206053756273696479602e0009012041206b65792063616e206f6e6c792068617665206f6e65207375627369647920617420612074696d652e2020546f206368616e67652073756273696469736572731d012061206b6579206e6565647320746f2063616c6c206072656d6f76655f706179696e675f6b65796020746f2072656d6f7665207468652063757272656e7420737562736964792ca4206265666f726520746865792063616e206163636570742061206e657720737562736964697365722e01c10701f1030001150a2c1c52657761726473011c52657761726473042849746e526577617264730001040200c9070400040101204d6170206f66202849746e204164647265737320604163636f756e7449646029202d3e2028526577617264206049746e52657761726453746174757360292e01c50701f5030001190a2d24546573745574696c730124546573745574696c730001cd0701f90300011d0a32210a042040436865636b5370656356657273696f6e290a1038436865636b547856657273696f6e2d0a1030436865636b47656e65736973310a2438436865636b4d6f7274616c697479350a2428436865636b4e6f6e63653d0a41012c436865636b576569676874410a4101604368617267655472616e73616374696f6e5061796d656e74490a41014453746f726543616c6c4d657461646174614d0a4101510a","id":"1"} diff --git a/scripts/cli/src/__tests__/0_create_identities.ts b/scripts/cli/src/__tests__/0_create_identities.ts index 6d6b33293c..0ab62c5f0e 100644 --- a/scripts/cli/src/__tests__/0_create_identities.ts +++ b/scripts/cli/src/__tests__/0_create_identities.ts @@ -5,11 +5,6 @@ import { generateEntity, } from "../util/init"; import { createIdentities } from "../helpers/identity_helper"; -import { createTable } from "../util/sqlite3"; - -beforeAll(() => { - createTable(); -}); // Disconnects api after all the tests have completed afterAll(async () => { @@ -32,8 +27,6 @@ describe("0 - Identity Unit Test", () => { const entity = await generateEntity("0_entity"); const entity1 = await generateEntity("1_entity"); await createIdentities(alice, [entity]); - await expect(createIdentities(entity, [entity1])).rejects.toThrow( - "1010: Invalid Transaction: Inability to pay some fees , e.g. account balance too low" - ); + await expect(createIdentities(entity1, [entity])).rejects.toThrow(); }); }); diff --git a/scripts/cli/src/__tests__/10_governance_management.ts b/scripts/cli/src/__tests__/10_governance_management.ts new file mode 100644 index 0000000000..b8dcfe526f --- /dev/null +++ b/scripts/cli/src/__tests__/10_governance_management.ts @@ -0,0 +1,77 @@ +import { + initMain, + generateEntityFromUri, + disconnect, + transferAmount, +} from "../util/init"; +import { createIdentities } from "../helpers/identity_helper"; +import { distributePolyBatch } from "../helpers/poly_helper"; +import * as staking from "../helpers/staking_helper"; +import * as pips from "../helpers/pips_helper"; + +// Disconnects api after all the tests have completed +afterAll(async () => { + await disconnect(); +}); + +describe("10 - Governance Management Unit Test", () => { + test("Create Proposals", async () => { + const testEntities = await initMain(); + const alice = testEntities[0]; + const govCommittee1 = testEntities[2]; + const govCommittee2 = testEntities[3]; + const bob = await generateEntityFromUri("10_bob"); + const dave = await generateEntityFromUri("10_dave"); + await pips.setDefaultEnactmentPeriod(alice, 10); + await createIdentities(alice, [bob, dave]); + + // Bob and Dave needs some funds to use. + await expect( + distributePolyBatch(alice, [bob, dave], transferAmount) + ).resolves.not.toThrow(); + await expect( + staking.bond(dave, bob, 1_000_000, "Staked") + ).resolves.not.toThrow(); + const setLimit = await pips.setActivePipLimit(42); + + const firstPipCount = await pips.pipIdSequence(); + await expect( + pips.propose(bob, setLimit, 9_000_000_000, "google.com", "first") + ).resolves.not.toThrow(); + console.log("after propose"); + + const secondPipCount = await pips.pipIdSequence(); + await expect( + pips.propose(bob, setLimit, 10_000_000_000, "google.com", "second") + ).resolves.not.toThrow(); + await expect(pips.vote(dave, 1, true, 10)).resolves.not.toThrow(); + + // GC needs some funds to use. + await expect( + distributePolyBatch(alice, [govCommittee1, govCommittee2], transferAmount) + ).resolves.not.toThrow(); + + // Snapshot and approve second PIP. + await expect(pips.snapshot(govCommittee1)).resolves.not.toThrow(); + const approvePIP = await pips.enactSnapshotResults( + secondPipCount, + "Approve" + ); + expect(approvePIP).toBeTruthy(); + await expect( + pips.voteResult([govCommittee1, govCommittee2], approvePIP) + ).resolves.not.toThrow(); + + // Reject the first PIP + const rejectPIP = await pips.rejectProposal(firstPipCount); + expect(rejectPIP).toBeTruthy(); + await expect( + pips.voteResult([govCommittee1, govCommittee2], rejectPIP) + ).resolves.not.toThrow(); + + // Finally reschedule, demonstrating that it had been scheduled. + await expect( + pips.rescheduleProposal(govCommittee1, secondPipCount) + ).resolves.not.toThrow(); + }); +}); diff --git a/scripts/cli/src/__tests__/11_A_settlement.ts b/scripts/cli/src/__tests__/11_A_settlement.ts new file mode 100644 index 0000000000..831617964f --- /dev/null +++ b/scripts/cli/src/__tests__/11_A_settlement.ts @@ -0,0 +1,76 @@ +import { + initMain, + generateEntityFromUri, + keyToIdentityIds, + disconnect, + transferAmount, + padTicker, + waitBlocks, +} from "../util/init"; +import { createIdentities } from "../helpers/identity_helper"; +import { distributePoly } from "../helpers/poly_helper"; +import { issueTokenToDid, assetBalance } from "../helpers/asset_helper"; +import { addComplianceRequirement } from "../helpers/compliance_manager_helper"; +import * as settlement from "../helpers/settlement_helper"; + +// Disconnects api after all the tests have completed +afterAll(async () => { + await disconnect(); +}); + +describe("11 A - Settlement Unit Test", () => { + test("Settlement A", async () => { + const ticker = padTicker("11ATICKER"); + const testEntities = await initMain(); + const alice = testEntities[0]; + const bob = await generateEntityFromUri("11A_bob"); + const bobDid = (await createIdentities(alice, [bob]))[0]; + expect(bobDid).toBeTruthy(); + const aliceDid = await keyToIdentityIds(alice.publicKey); + await expect( + distributePoly(alice, bob, transferAmount) + ).resolves.not.toThrow(); + await expect( + issueTokenToDid(alice, ticker, 1_000_000, null) + ).resolves.not.toThrow(); + await expect( + addComplianceRequirement(alice, ticker) + ).resolves.not.toThrow(); + + let aliceBalance = await assetBalance(ticker, aliceDid); + expect(aliceBalance).toEqual(1_000_000); + let bobBalance = await assetBalance(ticker, bobDid); + expect(bobBalance).toEqual(0); + + let venueCounter = await settlement.createVenue(alice, "Other"); + expect(venueCounter).toBeTruthy(); + + let intructionCounterAB = await settlement.addInstruction( + alice, + venueCounter, + aliceDid, + bobDid, + ticker, + 100 + ); + expect(intructionCounterAB).toBeTruthy(); + + await expect( + settlement.affirmInstruction(alice, intructionCounterAB, aliceDid, 1) + ).resolves.not.toThrow(); + await expect( + settlement.affirmInstruction(bob, intructionCounterAB, bobDid, 0) + ).resolves.not.toThrow(); + + // Wait for settlement to be executed - happens in the next block + await waitBlocks(2); + + //await rejectInstruction(bob, intructionCounter); + //await unathorizeInstruction(alice, instructionCounter); + + aliceBalance = await assetBalance(ticker, aliceDid); + expect(aliceBalance).toEqual(999_900); + bobBalance = await assetBalance(ticker, bobDid); + expect(bobBalance).toEqual(100); + }); +}); diff --git a/scripts/cli/src/__tests__/11_B_settlement.ts b/scripts/cli/src/__tests__/11_B_settlement.ts new file mode 100644 index 0000000000..844601958f --- /dev/null +++ b/scripts/cli/src/__tests__/11_B_settlement.ts @@ -0,0 +1,133 @@ +import { + initMain, + generateEntityFromUri, + keyToIdentityIds, + disconnect, + transferAmount, + padTicker, + waitBlocks, +} from "../util/init"; +import { createIdentities } from "../helpers/identity_helper"; +import { distributePolyBatch } from "../helpers/poly_helper"; +import { issueTokenToDid, assetBalance } from "../helpers/asset_helper"; +import { addComplianceRequirement } from "../helpers/compliance_manager_helper"; +import * as settlement from "../helpers/settlement_helper"; + +// Disconnects api after all the tests have completed +afterAll(async () => { + await disconnect(); +}); + +describe("11 B - Settlement Unit Test", () => { + test("Settlement B", async () => { + const ticker = padTicker("11BTICKER1"); + const ticker2 = padTicker("11BTICKER2"); + const testEntities = await initMain(); + const alice = testEntities[0]; + const bob = await generateEntityFromUri("11B_bob"); + const charlie = await generateEntityFromUri("11B_charlie"); + const dave = await generateEntityFromUri("11B_dave"); + const eve = await generateEntityFromUri("11B_eve"); + const aliceDid = await keyToIdentityIds(alice.publicKey); + const bobDid = (await createIdentities(alice, [bob]))[0]; + expect(bobDid).toBeTruthy(); + const charlieDid = (await createIdentities(alice, [charlie]))[0]; + expect(charlieDid).toBeTruthy(); + const daveDid = (await createIdentities(alice, [dave]))[0]; + expect(daveDid).toBeTruthy(); + const eveDid = (await createIdentities(alice, [eve]))[0]; + expect(eveDid).toBeTruthy(); + + await expect( + distributePolyBatch(alice, [bob, charlie, dave, eve], transferAmount) + ).resolves.not.toThrow(); + + await expect( + issueTokenToDid(alice, ticker, 1_000_000, null) + ).resolves.not.toThrow(); + await expect( + issueTokenToDid(bob, ticker2, 1_000_000, null) + ).resolves.not.toThrow(); + + await expect( + addComplianceRequirement(alice, ticker) + ).resolves.not.toThrow(); + await expect(addComplianceRequirement(bob, ticker2)).resolves.not.toThrow(); + + let aliceBalance = await assetBalance(ticker, aliceDid); + expect(aliceBalance).toEqual(1_000_000); + let bobBalance = await assetBalance(ticker, bobDid); + expect(bobBalance).toEqual(0); + let charlieBalance = await assetBalance(ticker, charlieDid); + expect(charlieBalance).toEqual(0); + let daveBalance = await assetBalance(ticker, daveDid); + expect(daveBalance).toEqual(0); + let eveBalance = await assetBalance(ticker, eveDid); + expect(eveBalance).toEqual(0); + + aliceBalance = await assetBalance(ticker2, aliceDid); + expect(aliceBalance).toEqual(0); + bobBalance = await assetBalance(ticker2, bobDid); + expect(bobBalance).toEqual(1_000_000); + charlieBalance = await assetBalance(ticker2, charlieDid); + expect(charlieBalance).toEqual(0); + daveBalance = await assetBalance(ticker2, daveDid); + expect(daveBalance).toEqual(0); + eveBalance = await assetBalance(ticker2, eveDid); + expect(eveBalance).toEqual(0); + + const venueCounter = await settlement.createVenue(alice, "Other"); + expect(venueCounter).toBeTruthy(); + let instructionCounter = await settlement.addGroupInstruction( + alice, + venueCounter, + [aliceDid, bobDid, charlieDid, daveDid, eveDid], + ticker, + ticker2, + 100 + ); + expect(instructionCounter).toBeTruthy(); + + await expect( + settlement.affirmInstruction(alice, instructionCounter, aliceDid, 4) + ).resolves.not.toThrow(); + await expect( + settlement.affirmInstruction(bob, instructionCounter, bobDid, 1) + ).resolves.not.toThrow(); + await expect( + settlement.affirmInstruction(charlie, instructionCounter, charlieDid, 0) + ).resolves.not.toThrow(); + await expect( + settlement.affirmInstruction(dave, instructionCounter, daveDid, 0) + ).resolves.not.toThrow(); + //await settlement.rejectInstruction(eve, instructionCounter); + await expect( + settlement.affirmInstruction(eve, instructionCounter, eveDid, 0) + ).resolves.not.toThrow(); + + // Wait for settlement to be executed - happens in the next block + await waitBlocks(2); + + aliceBalance = await assetBalance(ticker, aliceDid); + expect(aliceBalance).toEqual(999_600); + bobBalance = await assetBalance(ticker, bobDid); + expect(bobBalance).toEqual(100); + charlieBalance = await assetBalance(ticker, charlieDid); + expect(charlieBalance).toEqual(100); + daveBalance = await assetBalance(ticker, daveDid); + expect(daveBalance).toEqual(100); + eveBalance = await assetBalance(ticker, eveDid); + expect(eveBalance).toEqual(100); + + aliceBalance = await assetBalance(ticker2, aliceDid); + expect(aliceBalance).toEqual(100); + bobBalance = await assetBalance(ticker2, bobDid); + expect(bobBalance).toEqual(999_900); + charlieBalance = await assetBalance(ticker2, charlieDid); + expect(charlieBalance).toEqual(0); + daveBalance = await assetBalance(ticker2, daveDid); + expect(daveBalance).toEqual(0); + eveBalance = await assetBalance(ticker2, eveDid); + expect(eveBalance).toEqual(0); + }); +}); diff --git a/scripts/cli/src/__tests__/12_external_agents.ts b/scripts/cli/src/__tests__/12_external_agents.ts new file mode 100644 index 0000000000..eb6cae8ba7 --- /dev/null +++ b/scripts/cli/src/__tests__/12_external_agents.ts @@ -0,0 +1,146 @@ +import { + initMain, + transferAmount, + keyToIdentityIds, + generateEntityFromUri, + padTicker, + waitNextBlock, + disconnect, + getDefaultPortfolio, +} from "../util/init"; +import { createIdentities } from "../helpers/identity_helper"; +import { issueTokenToDid } from "../helpers/asset_helper"; +import { distributePolyBatch } from "../helpers/poly_helper"; +import { + createGroup, + setGroupPermissions, + acceptBecomeAgent, + nextAgId, + abdicate, + removeAgent, + changeGroup, +} from "../helpers/external_agent_helper"; +import { ExtrinsicPermissions } from "../types"; +import { + addInstruction, + affirmInstruction, + createVenue, +} from "../helpers/settlement_helper"; +import { addComplianceRequirement } from "../helpers/compliance_manager_helper"; +import { + createFundraiser, + freezeFundraiser, + unfreezeFundraiser, + modifyFundraiserWindow, + stop, +} from "../helpers/sto_helper"; + +// Disconnects api after all the tests have completed +afterAll(async () => { + await disconnect(); +}); + +describe("12 - External Agents Unit Test", () => { + test("External Agents Test", async () => { + const testEntities = await initMain(); + const alice = testEntities[0]; + const aliceDid = await keyToIdentityIds(alice.publicKey); + const bob = await generateEntityFromUri("12_bob"); + const dave = await generateEntityFromUri("12_dave"); + const [bobDid, daveDid] = await createIdentities(alice, [bob, dave]); + expect(bobDid).toBeTruthy(); + expect(daveDid).toBeTruthy(); + let extrinsics: ExtrinsicPermissions = { These: [] }; + console.log("Identities Created"); + await expect( + distributePolyBatch(alice, [bob, dave], transferAmount * 10) + ).resolves.not.toThrow(); + const ticker = padTicker("12TICKER"); + const raisingTicker = padTicker("12TICKERRAIS"); + await expect( + issueTokenToDid(alice, ticker, 1000000, null) + ).resolves.not.toThrow(); + console.log("EA: Group"); + await expect(createGroup(alice, ticker, extrinsics)).resolves.not.toThrow(); + + let agId = await nextAgId(ticker); + console.log("EA: Group Permissions"); + await expect( + setGroupPermissions(alice, ticker, agId, extrinsics) + ).resolves.not.toThrow(); + console.log("EA: Become Agent"); + await expect( + acceptBecomeAgent(bob, bobDid, alice, ticker, { Full: "" }) + ).resolves.not.toThrow(); + await expect( + acceptBecomeAgent(dave, daveDid, alice, ticker, { Full: "" }) + ).resolves.not.toThrow(); + await expect( + addComplianceRequirement(alice, ticker) + ).resolves.not.toThrow(); + + await expect(abdicate(alice, ticker)).resolves.not.toThrow(); + + console.log("EA: Accept Agent"); + await expect( + acceptBecomeAgent(alice, aliceDid, bob, ticker, { Full: "" }) + ).resolves.not.toThrow(); + await expect(removeAgent(alice, ticker, bobDid)).resolves.not.toThrow(); + console.log("EA: Group"); + await expect(createGroup(alice, ticker, extrinsics)).resolves.not.toThrow(); + agId = await nextAgId(ticker); + await expect( + setGroupPermissions(alice, ticker, agId, extrinsics) + ).resolves.not.toThrow(); + console.log("EA: Change Group"); + await expect( + changeGroup(alice, ticker, aliceDid, { Full: "" }) + ).resolves.not.toThrow(); + + // External agent authorized extrinsics + + let venueCounter = await createVenue(alice, "Other"); + expect(venueCounter).toBeTruthy(); + let intructionCounterAB = await addInstruction( + alice, + venueCounter, + aliceDid, + daveDid, + ticker, + 1000 + ); + expect(intructionCounterAB).toBeTruthy(); + + await expect( + affirmInstruction(alice, intructionCounterAB, aliceDid, 1) + ).resolves.not.toThrow(); + await expect( + affirmInstruction(dave, intructionCounterAB, daveDid, 0) + ).resolves.not.toThrow(); + await waitNextBlock(); + + const daveVenueCounter = await createVenue(dave, "Sto"); + const davePortfolio = getDefaultPortfolio(daveDid); + await expect( + createFundraiser( + dave, + davePortfolio, + ticker, + davePortfolio, + raisingTicker, + [{ total: 3, price: 4 }], + daveVenueCounter, + null, + null, + 0, + "mySto" + ) + ).resolves.not.toThrow(); + await expect(freezeFundraiser(dave, ticker, 0)).resolves.not.toThrow(); + await expect(unfreezeFundraiser(dave, ticker, 0)).resolves.not.toThrow(); + await expect( + modifyFundraiserWindow(dave, ticker, 0, Date.now() as any, null) + ).resolves.not.toThrow(); + await expect(stop(dave, ticker, 0)).resolves.not.toThrow(); + }); +}); diff --git a/scripts/cli/src/__tests__/13_corporate_actions.ts b/scripts/cli/src/__tests__/13_corporate_actions.ts new file mode 100644 index 0000000000..c7552d84ea --- /dev/null +++ b/scripts/cli/src/__tests__/13_corporate_actions.ts @@ -0,0 +1,140 @@ +import { + generateKeys, + transferAmount, + initMain, + keyToIdentityIds, + generateEntityFromUri, + padTicker, + disconnect, +} from "../util/init"; +import { + changeDefaultTargetIdentitites, + changeWithholdingTax, + claimDistribution, + createDistribution, + initiateCorporateAction, +} from "../helpers/corporate_actions_helper"; +import { + authorizeJoinToIdentities, + createIdentities, +} from "../helpers/identity_helper"; +import { issueTokenToDid } from "../helpers/asset_helper"; +import { distributePolyBatch } from "../helpers/poly_helper"; +import { addSecondaryKeys } from "../helpers/key_management_helper"; +import { addComplianceRequirement } from "../helpers/compliance_manager_helper"; +import { + addInstruction, + affirmInstruction, + createVenue, +} from "../helpers/settlement_helper"; + +// Disconnects api after all the tests have completed +afterAll(async () => { + await disconnect(); +}); + +describe("13 - Corporate Actions Unit Test", () => { + test("Corporate Actions", async () => { + const testEntities = await initMain(); + const alice = testEntities[0]; + const aliceDid = await keyToIdentityIds(alice.publicKey); + const bob = await generateEntityFromUri("13_bob"); + const bobDid = (await createIdentities(alice, [bob]))[0]; + expect(bobDid).toBeTruthy(); + const primaryDevSeed = "13_primary"; + const secondaryDevSeed = "13_secondary"; + const primaryKeys = await generateKeys(1, primaryDevSeed); + const secondaryKeys = await generateKeys(1, secondaryDevSeed); + await expect(createIdentities(alice, primaryKeys)).resolves.not.toThrow(); + + const ticker = padTicker("13TICKER"); + const earnedTicker = padTicker("13EARNED"); + + await expect( + distributePolyBatch(alice, [primaryKeys[0]], transferAmount) + ).resolves.not.toThrow(); + await expect( + addSecondaryKeys(primaryKeys, secondaryKeys) + ).resolves.not.toThrow(); + await expect( + authorizeJoinToIdentities(secondaryKeys, primaryKeys) + ).resolves.not.toThrow(); + await expect( + distributePolyBatch(alice, [secondaryKeys[0], bob], transferAmount) + ).resolves.not.toThrow(); + + console.log("Distributing tokens"); + await expect( + issueTokenToDid(alice, ticker, 1000000000, null) + ).resolves.not.toThrow(); + await expect( + issueTokenToDid(alice, earnedTicker, 20000000000, null) + ).resolves.not.toThrow(); + + console.log("adding compliance requirement"); + await expect( + addComplianceRequirement(alice, ticker) + ).resolves.not.toThrow(); + await expect( + addComplianceRequirement(alice, earnedTicker) + ).resolves.not.toThrow(); + + console.log("transfering token to Bob"); + let venueCounter = await createVenue(alice, "Other"); + expect(venueCounter).toBeTruthy(); + let intructionCounterAB = await addInstruction( + alice, + venueCounter, + aliceDid, + bobDid, + ticker, + 100000000 + ); + expect(intructionCounterAB).toBeTruthy(); + console.log("affirming transfer"); + await expect( + affirmInstruction(alice, intructionCounterAB, aliceDid, 1) + ).resolves.not.toThrow(); + await expect( + affirmInstruction(bob, intructionCounterAB, bobDid, 0) + ).resolves.not.toThrow(); + + console.log("changing default target and taxes for corporate action"); + await expect( + changeDefaultTargetIdentitites(alice, ticker, [bob], "include") + ).resolves.not.toThrow(); + await expect( + changeWithholdingTax(alice, ticker, 15) + ).resolves.not.toThrow(); + + await expect( + initiateCorporateAction( + alice, + ticker, + "PredictableBenefit", + "100", + { existing: 1 }, + "Regular dividend", + null, + null, + null + ) + ).resolves.not.toThrow(); + + console.log("creating distribution"); + await expect( + createDistribution( + alice, + ticker, + "0", + null, + earnedTicker, + 1000000, + 2000000000, + null + ) + ).resolves.not.toThrow(); + + await expect(claimDistribution(bob, ticker, 0)).resolves.not.toThrow(); + }); +}); diff --git a/scripts/cli/src/__tests__/14_investment.ts b/scripts/cli/src/__tests__/14_investment.ts new file mode 100644 index 0000000000..f84f4eefc8 --- /dev/null +++ b/scripts/cli/src/__tests__/14_investment.ts @@ -0,0 +1,97 @@ +import { + initMain, + transferAmount, + keyToIdentityIds, + generateEntityFromUri, + padTicker, + waitNextBlock, + disconnect, +} from "../util/init"; +import { createIdentities } from "../helpers/identity_helper"; +import { issueTokenToDid } from "../helpers/asset_helper"; +import { distributePolyBatch } from "../helpers/poly_helper"; +import { invest, createFundraiser } from "../helpers/sto_helper"; +import { + addInstruction, + affirmInstruction, + createVenue, +} from "../helpers/settlement_helper"; +import { addComplianceRequirement } from "../helpers/compliance_manager_helper"; + +// Disconnects api after all the tests have completed +afterAll(async () => { + await disconnect(); +}); + +describe("14 - Investment Unit Test", () => { + test("Investment", async () => { + const testEntities = await initMain(); + const alice = testEntities[0]; + const aliceDid = await keyToIdentityIds(alice.publicKey); + const bob = await generateEntityFromUri("14_bob"); + const dave = await generateEntityFromUri("14_dave"); + const [bobDid, daveDid] = await createIdentities(alice, [bob, dave]); + + console.log("Identities Created"); + await distributePolyBatch(alice, [bob, dave], transferAmount * 10); + const ticker = padTicker("14TICKER"); + const raisingTicker = padTicker("14TICKERRAIS"); + await issueTokenToDid(alice, ticker, 1000000, null); + await issueTokenToDid(dave, raisingTicker, 1000000, null); + + await addComplianceRequirement(alice, ticker); + await addComplianceRequirement(dave, raisingTicker); + + let venueCounter = await createVenue(dave, "Other"); + let intructionCounterAB = await addInstruction( + dave, + venueCounter, + daveDid, + bobDid, + raisingTicker, + 1000 + ); + + await affirmInstruction(dave, intructionCounterAB, daveDid, 1); + await affirmInstruction(bob, intructionCounterAB, bobDid, 0); + await waitNextBlock(); + + const aliceVenueCounter = await createVenue(alice, "Sto"); + + await createFundraiser( + alice, + { did: aliceDid, kind: { Default: "" } }, + ticker, + { did: aliceDid, kind: { Default: "" } }, + raisingTicker, + [{ total: 3000, price: 4 }], + aliceVenueCounter, + null, + null, + 0, + "mySto" + ); + + await invest( + dave, + { did: daveDid, kind: { Default: "" } }, + { did: daveDid, kind: { Default: "" } }, + ticker, + 0, + 40, + null, + null + ); + + await invest( + bob, + { did: bobDid, kind: { Default: "" } }, + { did: bobDid, kind: { Default: "" } }, + ticker, + 0, + 10, + null, + null + ); + }); +}); diff --git a/scripts/cli/src/__tests__/15_portfolio.ts b/scripts/cli/src/__tests__/15_portfolio.ts new file mode 100644 index 0000000000..1795a9d1bc --- /dev/null +++ b/scripts/cli/src/__tests__/15_portfolio.ts @@ -0,0 +1,124 @@ +import { + initMain, + transferAmount, + keyToIdentityIds, + generateEntityFromUri, + padTicker, + ApiSingleton, + disconnect, +} from "../util/init"; +import { + createIdentities, + addClaim, + joinIdentityAsKey, + addAuthorization, +} from "../helpers/identity_helper"; +import { issueTokenToDid } from "../helpers/asset_helper"; +import { distributePolyBatch } from "../helpers/poly_helper"; +import { + addComplianceRequirement, + addDefaultTrustedClaimIssuer, +} from "../helpers/compliance_manager_helper"; +import { + createPortfolio, + movePortfolioFunds, +} from "../helpers/portfolio_helper"; +import { + forceNewEra, + unbond, + nominate, + checkEraElectionClosed, + bond, +} from "../helpers/staking_helper"; +import { addTransferManager } from "../helpers/statistics_helper"; + +// Disconnects api after all the tests have completed +afterAll(async () => { + await disconnect(); +}); + +describe("15 - Portfolio Unit Test", () => { + test("Portfolio", async () => { + const api = await ApiSingleton.getInstance(); + const testEntities = await initMain(); + const alice = testEntities[0]; + const bob = testEntities[4]; + await keyToIdentityIds(alice.publicKey); + const bobDid = await keyToIdentityIds(bob.publicKey); + const dave = await generateEntityFromUri("15_dave"); + const dave2 = await generateEntityFromUri("15_dave2"); + const [daveDid] = await createIdentities(alice, [dave]); + expect(daveDid).toBeTruthy(); + console.log("Identities Created"); + await expect( + distributePolyBatch(alice, [bob, dave], transferAmount * 10) + ).resolves.not.toThrow(); + + // Staking + await bond(dave, dave, 1_000_000, "Staked"); + await nominate(dave, bob.publicKey); + console.log("Nominated validators"); + + await forceNewEra(alice); + console.log("New era, rewards paid out"); + + // SecondaryKey + await expect( + addAuthorization( + dave, + { Account: dave2.publicKey }, + { JoinIdentity: { Whole: null } }, + null + ) + ).resolves.not.toThrow(); + console.log("Added JoinIdentity authorization"); + const authorization = ( + await api.query.identity.authorizations.entries({ + Account: dave2.publicKey, + }) + )[0][1]; + await joinIdentityAsKey(dave2, authorization.unwrap().authId); + + console.log("Portfolio: TrustedDefaultClaimIssuerAdded"); + const ticker = padTicker("15TICKER"); + await expect( + issueTokenToDid(dave, ticker, 100000, null) + ).resolves.not.toThrow(); + await expect(addComplianceRequirement(dave, ticker)).resolves.not.toThrow(); + await expect( + addDefaultTrustedClaimIssuer(dave, ticker, bobDid, { Any: null }) + ).resolves.not.toThrow(); + + console.log("Portfolio: ClaimAdded"); + await expect( + addClaim(bob, daveDid, { Accredited: { Ticker: ticker } }, null) + ).resolves.not.toThrow(); + + console.log("Portfolio: ConfigureAdvancedTokenRules"); + await expect( + addTransferManager(dave, ticker, { CountTransferManager: 10 }) + ).resolves.not.toThrow(); + + console.log("Portfolio: PortfolioCreated"); + await expect(createPortfolio(dave, "foobar")).resolves.not.toThrow(); + + console.log("Portfolio: AddAssetToAPortfolio"); + await expect( + movePortfolioFunds(dave, dave, ticker, 10) + ).resolves.not.toThrow(); + + console.log( + `Election Status: ${await api.query.staking.eraElectionStatus()}` + ); + await checkEraElectionClosed(); + console.log( + `Election Status: ${await api.query.staking.eraElectionStatus()}` + ); + // AddAPortfolioManager is not possible because of old permission format + console.log("Portfolio: StopStakingAPortion"); + await expect(unbond(dave, 100)).resolves.not.toThrow(); + + console.log("Portfolio: StartStakingANewOperator"); + await expect(nominate(dave, alice.publicKey)).resolves.not.toThrow(); + }); +}); diff --git a/scripts/cli/src/__tests__/16_relayer.ts b/scripts/cli/src/__tests__/16_relayer.ts new file mode 100644 index 0000000000..3bfbea40fb --- /dev/null +++ b/scripts/cli/src/__tests__/16_relayer.ts @@ -0,0 +1,51 @@ +import { + generateEntityFromUri, + initMain, + transferAmount, + disconnect, +} from "../util/init"; +import { createIdentities, getAuthId } from "../helpers/identity_helper"; +import { distributePoly } from "../helpers/poly_helper"; +import * as relayer from "../helpers/relayer_helper"; + +// Disconnects api after all the tests have completed +afterAll(async () => { + await disconnect(); +}); + +describe("16 - Relayer Unit Test", () => { + test("Relayer", async () => { + const testEntities = await initMain(); + const alice = testEntities[0]; + const bob = await generateEntityFromUri("16_bob"); + await expect(createIdentities(alice, [bob])).resolves.not.toThrow(); + await expect( + distributePoly(alice, bob, transferAmount) + ).resolves.not.toThrow(); + console.log("Set Paying Key"); + await expect( + relayer.setPayingKey(alice, bob.publicKey, 100000) + ).resolves.not.toThrow(); + const authId = await getAuthId(); + console.log("Accept Paying Key"); + await expect( + relayer.acceptPayingKey(bob, authId) + ).resolves.not.toThrow(); + console.log("Update POLYX Limit"); + await expect( + relayer.updatePolyxLimit(alice, bob.publicKey, 500000) + ).resolves.not.toThrow(); + console.log("Increase POLYX Limit"); + await expect( + relayer.increasePolyxLimit(alice, bob.publicKey, 70000) + ).resolves.not.toThrow(); + console.log("Decrease POLYX Limit"); + await expect( + relayer.decreasePolyxLimit(alice, bob.publicKey, 30000) + ).resolves.not.toThrow(); + console.log("Remove Paying Key"); + await expect( + relayer.removePayingKey(alice, bob, "userKey") + ).resolves.not.toThrow(); + }); +}); diff --git a/scripts/cli/src/__tests__/17_itn_rewards.ts b/scripts/cli/src/__tests__/17_itn_rewards.ts new file mode 100644 index 0000000000..6e6e94c839 --- /dev/null +++ b/scripts/cli/src/__tests__/17_itn_rewards.ts @@ -0,0 +1,34 @@ +import { initMain, generateEntityFromUri, disconnect } from "../util/init"; +import { createIdentities } from "../helpers/identity_helper"; +import { claimItnReward, setItnRewardStatus } from "../helpers/rewards_helper"; + +// Disconnects api after all the tests have completed +afterAll(async () => { + await disconnect(); +}); + +describe("17 - ITN Rewards Unit Test", () => { + test("ITN Rewards", async () => { + const testEntities = await initMain(); + const alice = testEntities[0]; + const dave = await generateEntityFromUri("17_dave"); + const charlie = await generateEntityFromUri("17_charlie"); + const dave2 = await generateEntityFromUri("17_dave2"); + console.log("Create Identity"); + await expect(createIdentities(alice, [dave2])).resolves.not.toThrow(); + console.log("Set ITN Rewards Claim Status"); + await expect( + setItnRewardStatus(alice, dave, { Unclaimed: 2_000_000 }) + ).resolves.not.toThrow(); + console.log("Claim ITN Rewards"); + await expect(claimItnReward(dave, dave2)).resolves.not.toThrow(); + console.log("Claim ITN Reward that doesn't exist"); + await expect(claimItnReward(charlie, dave2)).rejects.toThrow(); + console.log("Set ITN Rewards Claim Status for Charlie"); + await expect( + setItnRewardStatus(alice, charlie, { Unclaimed: 2_000_000 }) + ).resolves.not.toThrow(); + console.log("Claim Charlie ITN Reward with Dave"); + await expect(claimItnReward(dave, charlie)).rejects.toThrow(); + }); +}); diff --git a/scripts/cli/src/__tests__/1_poly_transfer.ts b/scripts/cli/src/__tests__/1_poly_transfer.ts index a6c22bc0e6..bff0d63b87 100644 --- a/scripts/cli/src/__tests__/1_poly_transfer.ts +++ b/scripts/cli/src/__tests__/1_poly_transfer.ts @@ -6,11 +6,6 @@ import { } from "../util/init"; import { createIdentities } from "../helpers/identity_helper"; import { distributePolyBatch } from "../helpers/poly_helper"; -import { createTable } from "../util/sqlite3"; - -beforeAll(() => { - createTable(); -}); // Disconnects api after all the tests have completed afterAll(async () => { diff --git a/scripts/cli/src/__tests__/2_key_management.ts b/scripts/cli/src/__tests__/2_key_management.ts index 5943e8a9ed..7e33f0b619 100644 --- a/scripts/cli/src/__tests__/2_key_management.ts +++ b/scripts/cli/src/__tests__/2_key_management.ts @@ -5,11 +5,6 @@ import { addSecondaryKeys, createMultiSig, } from "../helpers/key_management_helper"; -import { createTable } from "../util/sqlite3"; - -beforeAll(() => { - createTable(); -}); // Disconnects api after all the tests have completed afterAll(async () => { diff --git a/scripts/cli/src/__tests__/3_auth_join_did.ts b/scripts/cli/src/__tests__/3_auth_join_did.ts index 28403ae4b7..1a5c53bf52 100644 --- a/scripts/cli/src/__tests__/3_auth_join_did.ts +++ b/scripts/cli/src/__tests__/3_auth_join_did.ts @@ -10,11 +10,6 @@ import { } from "../helpers/identity_helper"; import { distributePolyBatch } from "../helpers/poly_helper"; import { addSecondaryKeys } from "../helpers/key_management_helper"; -import { createTable } from "../util/sqlite3"; - -beforeAll(() => { - createTable(); -}); // Disconnects api after all the tests have completed afterAll(async () => { diff --git a/scripts/cli/src/__tests__/4_permission_management.ts b/scripts/cli/src/__tests__/4_permission_management.ts index 1dae2e6884..d9cf78c0dd 100644 --- a/scripts/cli/src/__tests__/4_permission_management.ts +++ b/scripts/cli/src/__tests__/4_permission_management.ts @@ -23,11 +23,6 @@ import { ExtrinsicPermissions, PortfolioPermissions, } from "../types"; -import { createTable } from "../util/sqlite3"; - -beforeAll(() => { - createTable(); -}); // Disconnects api after all the tests have completed afterAll(async () => { @@ -52,7 +47,7 @@ describe("4 - Permission Management Unit Test", () => { let documents: Document[] = []; await expect( - distributePolyBatch(alice, [primaryKeys[0]], init.transferAmount) + distributePolyBatch(alice, [primaryKeys[0]], init.transferAmount * 2) ).resolves.not.toThrow(); await expect( addSecondaryKeys(primaryKeys, secondaryKeys) @@ -61,7 +56,7 @@ describe("4 - Permission Management Unit Test", () => { authorizeJoinToIdentities(secondaryKeys, primaryKeys) ).resolves.not.toThrow(); await expect( - distributePolyBatch(alice, [secondaryKeys[0]], init.transferAmount) + distributePolyBatch(primaryKeys[0], [secondaryKeys[0]], init.transferAmount) ).resolves.not.toThrow(); await expect( issueTokenToDid(primaryKeys[0], ticker, 1000000, null) diff --git a/scripts/cli/src/__tests__/5_claim_management.ts b/scripts/cli/src/__tests__/5_claim_management.ts index 20866ffbc5..c8d6f5d466 100644 --- a/scripts/cli/src/__tests__/5_claim_management.ts +++ b/scripts/cli/src/__tests__/5_claim_management.ts @@ -7,11 +7,6 @@ import { } from "../util/init"; import { createIdentities, addClaim } from "../helpers/identity_helper"; import { distributePolyBatch } from "../helpers/poly_helper"; -import { createTable } from "../util/sqlite3"; - -beforeAll(() => { - createTable(); -}); // Disconnects api after all the tests have completed afterAll(async () => { diff --git a/scripts/cli/src/__tests__/6_create_assets.ts b/scripts/cli/src/__tests__/6_create_assets.ts index 2431c08508..a87c1c5301 100644 --- a/scripts/cli/src/__tests__/6_create_assets.ts +++ b/scripts/cli/src/__tests__/6_create_assets.ts @@ -8,11 +8,6 @@ import { import { createIdentities } from "../helpers/identity_helper"; import { distributePolyBatch } from "../helpers/poly_helper"; import { issueTokenToDid } from "../helpers/asset_helper"; -import { createTable } from "../util/sqlite3"; - -beforeAll(() => { - createTable(); -}); // Disconnects api after all the tests have completed afterAll(async () => { diff --git a/scripts/cli/src/__tests__/7_create_claim_compliance.ts b/scripts/cli/src/__tests__/7_create_claim_compliance.ts index 3d9d20cb17..fab1d34bd9 100644 --- a/scripts/cli/src/__tests__/7_create_claim_compliance.ts +++ b/scripts/cli/src/__tests__/7_create_claim_compliance.ts @@ -9,11 +9,6 @@ import { createIdentities } from "../helpers/identity_helper"; import { distributePolyBatch } from "../helpers/poly_helper"; import { issueTokenToDid } from "../helpers/asset_helper"; import { createClaimCompliance } from "../helpers/compliance_manager_helper"; -import { createTable } from "../util/sqlite3"; - -beforeAll(() => { - createTable(); -}); // Disconnects api after all the tests have completed afterAll(async () => { diff --git a/scripts/cli/src/__tests__/8_asset_minting.ts b/scripts/cli/src/__tests__/8_asset_minting.ts new file mode 100644 index 0000000000..53c397d3a7 --- /dev/null +++ b/scripts/cli/src/__tests__/8_asset_minting.ts @@ -0,0 +1,49 @@ +import { + initMain, + generateKeys, + disconnect, + transferAmount, + padTicker, +} from "../util/init"; +import { createIdentities, addClaimsToDids } from "../helpers/identity_helper"; +import { distributePoly } from "../helpers/poly_helper"; +import { issueTokenToDid, mintingAsset } from "../helpers/asset_helper"; +import { addComplianceRequirement } from "../helpers/compliance_manager_helper"; + +// Disconnects api after all the tests have completed +afterAll(async () => { + await disconnect(); +}); + +describe("8 - Asset Minting Unit Test", () => { + test("Minting Asset", async () => { + const ticker = padTicker("8TICKER"); + const testEntities = await initMain(); + const alice = testEntities[0]; + const primaryDevSeed = "8_primary"; + const primaryKey = (await generateKeys(1, primaryDevSeed))[0]; + let issuerDid = await createIdentities(alice, [primaryKey]); + expect(issuerDid).toBeTruthy(); + await distributePoly(alice, primaryKey, transferAmount); + await expect( + distributePoly(alice, primaryKey, transferAmount) + ).resolves.not.toThrow(); + await issueTokenToDid(primaryKey, ticker, 1000000, "first"); + await expect( + issueTokenToDid(primaryKey, ticker, 1000000, "first") + ).resolves.not.toThrow(); + await expect( + addClaimsToDids( + primaryKey, + issuerDid[0], + "Exempted", + { Ticker: ticker }, + null + ) + ).resolves.not.toThrow(); + await expect( + addComplianceRequirement(primaryKey, ticker) + ).resolves.not.toThrow(); + await expect(mintingAsset(primaryKey, ticker)).resolves.not.toThrow(); + }); +}); diff --git a/scripts/cli/src/__tests__/9_bridge_transfer.ts b/scripts/cli/src/__tests__/9_bridge_transfer.ts new file mode 100644 index 0000000000..a029d91dc8 --- /dev/null +++ b/scripts/cli/src/__tests__/9_bridge_transfer.ts @@ -0,0 +1,23 @@ +import { initMain, sleep, disconnect } from "../util/init"; +import { + bridgeTransfer, + freezeTransaction, + unfreezeTransaction, +} from "../helpers/bridge_helper"; + +// Disconnects api after all the tests have completed +afterAll(async () => { + await disconnect(); +}); + +describe("9 - Bridge Transfer Unit Test", () => { + test("Bridging Transaction", async () => { + const testEntities = await initMain(); + const relay = testEntities[1]; + const admin = testEntities[2]; + await expect(bridgeTransfer(relay, admin)).resolves.not.toThrow(); + await expect(freezeTransaction(admin)).resolves.not.toThrow(); + await sleep(5000); + await expect(unfreezeTransaction(admin)).resolves.not.toThrow(); + }); +}); diff --git a/scripts/cli/src/helpers/asset_helper.ts b/scripts/cli/src/helpers/asset_helper.ts index 64d45a4d14..3e01a158d1 100644 --- a/scripts/cli/src/helpers/asset_helper.ts +++ b/scripts/cli/src/helpers/asset_helper.ts @@ -1,8 +1,8 @@ import type { KeyringPair } from "@polkadot/keyring/types"; import type { Ticker, Document } from "../types"; +import type { IdentityId } from "../interfaces"; import { sendTx, ApiSingleton } from "../util/init"; import { assert } from "chai"; -import type { IdentityId } from "../interfaces"; /** * @description Adds Documents for a given token diff --git a/scripts/cli/src/helpers/compliance_manager_helper.ts b/scripts/cli/src/helpers/compliance_manager_helper.ts index fde5a27ac5..0597e41960 100644 --- a/scripts/cli/src/helpers/compliance_manager_helper.ts +++ b/scripts/cli/src/helpers/compliance_manager_helper.ts @@ -1,8 +1,8 @@ import type { KeyringPair } from "@polkadot/keyring/types"; import type { Ticker, Scope } from "../types"; +import type { AssetCompliance, IdentityId } from "../interfaces"; import { sendTx, ApiSingleton } from "../util/init"; import { assert } from "chai"; -import type { IdentityId } from "../interfaces"; const senderConditions1 = function (trusted_did: IdentityId, data: Scope) { return { @@ -55,3 +55,12 @@ export async function addComplianceRequirement(sender: KeyringPair, ticker: Tick console.log("Asset already has compliance."); } } + +export async function addDefaultTrustedClaimIssuer(signer: KeyringPair, ticker: Ticker, issuer: IdentityId, trustedFor: any) { + const api = await ApiSingleton.getInstance(); + const transaction = api.tx.complianceManager.addDefaultTrustedClaimIssuer(ticker, { + issuer, + trustedFor, + }); + await sendTx(signer, transaction); +} diff --git a/scripts/cli/src/helpers/corporate_actions_helper.ts b/scripts/cli/src/helpers/corporate_actions_helper.ts index 4ac240ccd2..75ad5deead 100644 --- a/scripts/cli/src/helpers/corporate_actions_helper.ts +++ b/scripts/cli/src/helpers/corporate_actions_helper.ts @@ -1,5 +1,5 @@ import type { KeyringPair } from "@polkadot/keyring/types"; -import { Ticker } from "../types"; +import type { Ticker } from "../types"; import { sendTx, ApiSingleton, keyToIdentityIds } from "../util/init"; export async function changeDefaultTargetIdentitites( @@ -123,8 +123,8 @@ export async function createDistribution( expiresAt: string | null ) { const api = await ApiSingleton.getInstance(); - const currentBlockTime = await api.query.timestamp.now(); - const payAt = currentBlockTime.toNumber(); + const currentBlockTime = (await api.query.timestamp.now()).toNumber(); + const payAt = currentBlockTime; const transaction = api.tx.capitalDistribution.distribute( { ticker, localId: caId }, diff --git a/scripts/cli/src/helpers/external_agent_helper.ts b/scripts/cli/src/helpers/external_agent_helper.ts index 3ee00293c5..8cad997e2d 100644 --- a/scripts/cli/src/helpers/external_agent_helper.ts +++ b/scripts/cli/src/helpers/external_agent_helper.ts @@ -1,9 +1,9 @@ import type { KeyringPair } from "@polkadot/keyring/types"; -import type { Ticker, ExtrinsicPermissions, AuthorizationData, AgentGroup } from "../types"; +import type { Ticker, ExtrinsicPermissions, AgentGroup } from "../types"; import type { AnyNumber } from "@polkadot/types/types"; -import { sendTx, ApiSingleton, signatory } from "../util/init"; -import { addAuthorization, getAuthId } from "../helpers/identity_helper"; import type { IdentityId } from "../interfaces"; +import { sendTx, ApiSingleton } from "../util/init"; +import { addAuthorization, getAuthId } from "../helpers/identity_helper"; /** * @description Creates Group @@ -79,7 +79,6 @@ export async function acceptBecomeAgent( } export async function nextAgId(ticker: Ticker) { - const api = await ApiSingleton.getInstance(); - const agId = await api.query.externalAgents.aGIdSequence(ticker); - return agId as unknown as number; + const api = await ApiSingleton.getInstance(); + return (await api.query.externalAgents.agIdSequence(ticker)).toNumber(); } \ No newline at end of file diff --git a/scripts/cli/src/helpers/identity_helper.ts b/scripts/cli/src/helpers/identity_helper.ts index e96266d579..18bde3cc52 100644 --- a/scripts/cli/src/helpers/identity_helper.ts +++ b/scripts/cli/src/helpers/identity_helper.ts @@ -1,6 +1,8 @@ import type { KeyringPair } from "@polkadot/keyring/types"; import type { AccountId } from "@polkadot/types/interfaces"; import type { AnyNumber } from "@polkadot/types/types"; +import type { IdentityId } from "../interfaces"; +import type { u64 } from '@polkadot/types/primitive'; import type { Permissions, Expiry, @@ -8,13 +10,12 @@ import type { PortfolioPermissions, AssetPermissions, Signatory, - AuthorizationData, - AgentGroup, CddId, Claim, } from "../types"; import { sendTx, keyToIdentityIds, ApiSingleton } from "../util/init"; -import type { IdentityId, Moment } from "../interfaces"; + + export async function addClaim( signer: KeyringPair, @@ -90,8 +91,8 @@ export async function authorizeJoinToIdentities( let last_auth_id: AnyNumber = 0; auths .map(([, value]) => value) - .filter((value) => value.isSome) - .forEach((value) => { + .filter((value: any) => value.isSome) + .forEach((value: any) => { const auth = value.unwrap(); if (auth.authId > last_auth_id) { last_auth_id = auth.authId; @@ -121,9 +122,9 @@ export async function createIdentitiesWithExpiry( let dids: IdentityId[] = []; for (let account of receivers) { - let account_did = (await keyToIdentityIds(account.publicKey)).toString(); + let account_did = await keyToIdentityIds(account.publicKey); - if (parseInt(account_did) == 0) { + if (account_did.isEmpty) { console.log(`>>>> [Register CDD Claim] acc: ${account.address}`); const transaction = api.tx.identity.cddRegisterDid(account.address, []); await sendTx(signer, transaction); @@ -199,5 +200,11 @@ export async function addAuthorization( export async function getAuthId() { const api = await ApiSingleton.getInstance(); - return api.query.identity.multiPurposeNonce(); + return (await api.query.identity.multiPurposeNonce()).toNumber(); +} + +export async function joinIdentityAsKey(signer: KeyringPair, authId: number | u64) { + const api = await ApiSingleton.getInstance(); + const transaction = api.tx.identity.joinIdentityAsKey(authId); + await sendTx(signer, transaction); } diff --git a/scripts/cli/src/helpers/permission_helper.ts b/scripts/cli/src/helpers/permission_helper.ts index 03441c32d5..1fb6cbfc58 100644 --- a/scripts/cli/src/helpers/permission_helper.ts +++ b/scripts/cli/src/helpers/permission_helper.ts @@ -5,12 +5,8 @@ import type { DocumentHash, DocumentName, Document, - LegacyPalletPermissions, - ExtrinsicPermissions, PalletPermissions, These, - Except, - PortfolioPermissions, DispatchableName, } from "../types"; import { keyToIdentityIds, ApiSingleton } from "../util/init"; diff --git a/scripts/cli/src/helpers/pips_helper.ts b/scripts/cli/src/helpers/pips_helper.ts index 32ac5262d2..7e753a245d 100644 --- a/scripts/cli/src/helpers/pips_helper.ts +++ b/scripts/cli/src/helpers/pips_helper.ts @@ -95,3 +95,14 @@ export async function voteResult( await sendTx(signer, vote); } } + +export async function vote( + signer: KeyringPair, + pipId: number, + vote: boolean, + deposit: number +): Promise { + const api = await ApiSingleton.getInstance(); + const transaction = api.tx.pips.vote(pipId, vote, deposit); + await sendTx(signer, transaction); +} \ No newline at end of file diff --git a/scripts/cli/src/helpers/portfolio_helper.ts b/scripts/cli/src/helpers/portfolio_helper.ts index ccd77931fa..0653bfca3f 100644 --- a/scripts/cli/src/helpers/portfolio_helper.ts +++ b/scripts/cli/src/helpers/portfolio_helper.ts @@ -1,7 +1,7 @@ import type { KeyringPair } from "@polkadot/keyring/types"; import type { PortfolioId, Ticker, MovePortfolioItem } from "../types"; -import { sendTx, keyToIdentityIds, ApiSingleton } from "../util/init"; import type { IdentityId } from "../interfaces"; +import { sendTx, keyToIdentityIds, ApiSingleton } from "../util/init"; /** * @description Returns the next portfolio number diff --git a/scripts/cli/src/helpers/rewards_helper.ts b/scripts/cli/src/helpers/rewards_helper.ts index 69a070e62b..0a6a036241 100644 --- a/scripts/cli/src/helpers/rewards_helper.ts +++ b/scripts/cli/src/helpers/rewards_helper.ts @@ -1,6 +1,6 @@ import type { KeyringPair } from "@polkadot/keyring/types"; +import type { ItnRewardStatus } from "../types"; import { sendTx, ApiSingleton } from "../util/init"; -import { ItnRewardStatus } from "../types"; import { u8aToHex } from "@polkadot/util"; /** diff --git a/scripts/cli/src/helpers/settlement_helper.ts b/scripts/cli/src/helpers/settlement_helper.ts index b1fa539dca..d345bf7354 100644 --- a/scripts/cli/src/helpers/settlement_helper.ts +++ b/scripts/cli/src/helpers/settlement_helper.ts @@ -1,19 +1,19 @@ import type { KeyringPair } from "@polkadot/keyring/types"; -import type { PortfolioId, Ticker } from "../types"; -import { sendTx, getDefaultPortfolio, ApiSingleton } from "../util/init"; +import type { PortfolioId, Ticker, venueType } from "../types"; import type { IdentityId } from "../interfaces"; +import { sendTx, getDefaultPortfolio, ApiSingleton } from "../util/init"; /** * @description Creates a Venue */ -export async function createVenue(signer: KeyringPair): Promise { +export async function createVenue(signer: KeyringPair, type: venueType): Promise { const api = await ApiSingleton.getInstance(); let venueCounter = (await api.query.settlement.venueCounter()).toNumber(); let venueDetails = "created venue"; const transaction = api.tx.settlement.createVenue( venueDetails, [signer.address], - 0 + type ); await sendTx(signer, transaction); return venueCounter; diff --git a/scripts/cli/src/helpers/staking_helper.ts b/scripts/cli/src/helpers/staking_helper.ts index 078ae9a396..7ceb49c69d 100644 --- a/scripts/cli/src/helpers/staking_helper.ts +++ b/scripts/cli/src/helpers/staking_helper.ts @@ -52,7 +52,7 @@ export async function nominate(signer: KeyringPair, target: Uint8Array) { export async function checkEraElectionClosed() { const api = await ApiSingleton.getInstance(); - while((await api.query.staking.eraElectionStatus()).isOpen) { + while ((await api.query.staking.eraElectionStatus()).isOpen) { await sleep(1000); } } \ No newline at end of file diff --git a/scripts/cli/src/helpers/statistics_helper.ts b/scripts/cli/src/helpers/statistics_helper.ts new file mode 100644 index 0000000000..5263359512 --- /dev/null +++ b/scripts/cli/src/helpers/statistics_helper.ts @@ -0,0 +1,9 @@ +import type { KeyringPair } from "@polkadot/keyring/types"; +import type { Ticker } from "../types"; +import { sendTx, ApiSingleton } from "../util/init"; + +export async function addTransferManager(signer: KeyringPair, ticker: Ticker, countTransferManager: any ) { + const api = await ApiSingleton.getInstance(); + const transaction = api.tx.statistics.addTransferManager(ticker, countTransferManager); + await sendTx(signer, transaction); +} \ No newline at end of file diff --git a/scripts/cli/src/helpers/sto_helper.ts b/scripts/cli/src/helpers/sto_helper.ts new file mode 100644 index 0000000000..aee691a661 --- /dev/null +++ b/scripts/cli/src/helpers/sto_helper.ts @@ -0,0 +1,106 @@ +import type { KeyringPair } from "@polkadot/keyring/types"; +import type { Ticker, PriceTier, PortfolioId } from "../types"; +import { sendTx, ApiSingleton } from "../util/init"; + +export async function createFundraiser( + signer: KeyringPair, + offeringPortfolio: PortfolioId, + offeringAsset: Ticker, + raisingPortfolio: PortfolioId, + raisingAsset: Ticker, + tiers: PriceTier[], + venueCounter: number, + start: string | object | Uint8Array | null, + end: string | object | Uint8Array | null, + minimumInvestment: number, + fundraiserName: string +) { + const api = await ApiSingleton.getInstance(); + const transaction = api.tx.sto.createFundraiser( + offeringPortfolio, + offeringAsset, + raisingPortfolio, + raisingAsset, + tiers, + venueCounter, + start, + end, + minimumInvestment, + fundraiserName + ); + await sendTx(signer, transaction); +} + +export async function freezeFundraiser( + signer: KeyringPair, + offeringAsset: Ticker, + fundraiserId: number +) { + const api = await ApiSingleton.getInstance(); + const transaction = api.tx.sto.freezeFundraiser(offeringAsset, fundraiserId); + await sendTx(signer, transaction); +} + +export async function unfreezeFundraiser( + signer: KeyringPair, + offeringAsset: Ticker, + fundraiserId: number +) { + const api = await ApiSingleton.getInstance(); + const transaction = api.tx.sto.unfreezeFundraiser( + offeringAsset, + fundraiserId + ); + await sendTx(signer, transaction); +} + +export async function modifyFundraiserWindow( + signer: KeyringPair, + offeringAsset: Ticker, + fundraiserId: number, + start: number, + end: string | object | Uint8Array | null +) { + const api = await ApiSingleton.getInstance(); + const transaction = api.tx.sto.modifyFundraiserWindow( + offeringAsset, + fundraiserId, + start, + end + ); + await sendTx(signer, transaction); +} + +export async function stop( + signer: KeyringPair, + offeringAsset: Ticker, + fundraiserId: number +) { + const api = await ApiSingleton.getInstance(); + const transaction = api.tx.sto.stop(offeringAsset, fundraiserId); + await sendTx(signer, transaction); +} + +export async function invest( + signer: KeyringPair, + investmentPortfolio: PortfolioId, + fundingPortfolio: PortfolioId, + offeringAsset: Ticker, + fundraiserId: number, + purchaseAmount: number, + maxPrice: string | object | Uint8Array | null, + receipt: string | null +) { + const api = await ApiSingleton.getInstance(); + + const transaction = api.tx.sto.invest( + investmentPortfolio, + fundingPortfolio, + offeringAsset, + fundraiserId, + purchaseAmount, + maxPrice, + receipt + ); + await sendTx(signer, transaction); +} diff --git a/scripts/cli/src/interfaces/augment-api-rpc.ts b/scripts/cli/src/interfaces/augment-api-rpc.ts index e83269bef8..37edc06afe 100644 --- a/scripts/cli/src/interfaces/augment-api-rpc.ts +++ b/scripts/cli/src/interfaces/augment-api-rpc.ts @@ -68,6 +68,10 @@ declare module '@polkadot/rpc-core/types/jsonrpc' { epochAuthorship: AugmentedRpc<() => Observable>>; }; beefy: { + /** + * Returns hash of the latest BEEFY finalized block as seen by this client. + **/ + getFinalizedHead: AugmentedRpc<() => Observable>; /** * Returns the block most recently finalized by BEEFY, alongside side its justification. **/ @@ -329,9 +333,9 @@ declare module '@polkadot/rpc-core/types/jsonrpc' { }; grandpa: { /** - * Prove finality for the range (begin; end] hash. + * Prove finality for the given block number, returning the Justification for the last block in the set. **/ - proveFinality: AugmentedRpc<(begin: BlockHash | string | Uint8Array, end: BlockHash | string | Uint8Array, authoritiesSetId?: u64 | AnyNumber | Uint8Array) => Observable>>; + proveFinality: AugmentedRpc<(blockNumber: BlockNumber | AnyNumber | Uint8Array) => Observable>>; /** * Returns the state of the current best round state as well as the ongoing background rounds **/ diff --git a/scripts/cli/src/interfaces/augment-api-tx.ts b/scripts/cli/src/interfaces/augment-api-tx.ts index 072449451e..250205e97e 100644 --- a/scripts/cli/src/interfaces/augment-api-tx.ts +++ b/scripts/cli/src/interfaces/augment-api-tx.ts @@ -1500,6 +1500,7 @@ declare module '@polkadot/api-base/types/submittable' { * * `ClaimVariantNotAllowed` When origin trying to pass claim variant other than `InvestorUniqueness`. * * `ConfidentialScopeClaimNotAllowed` When issuer is different from target or CDD_ID is invalid for given user. * * `InvalidScopeClaim When proof is invalid. + * * `InvalidCDDId` when you are not the owner of that CDD_ID. **/ addInvestorUniquenessClaim: AugmentedSubmittable<(target: PolymeshPrimitivesIdentityId | string | Uint8Array, claim: PolymeshPrimitivesIdentityClaimClaim | { Accredited: any } | { Affiliate: any } | { BuyLockup: any } | { SellLockup: any } | { CustomerDueDiligence: any } | { KnowYourCustomer: any } | { Jurisdiction: any } | { Exempted: any } | { Blocked: any } | { InvestorUniqueness: any } | { NoData: any } | { InvestorUniquenessV2: any } | string | Uint8Array, proof: PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData | { r?: any; s?: any } | string | Uint8Array, expiry: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityClaimClaim, PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData, Option]>; addInvestorUniquenessClaimV2: AugmentedSubmittable<(target: PolymeshPrimitivesIdentityId | string | Uint8Array, scope: PolymeshPrimitivesIdentityClaimScope | { Identity: any } | { Ticker: any } | { Custom: any } | string | Uint8Array, claim: PolymeshPrimitivesIdentityClaimClaim | { Accredited: any } | { Affiliate: any } | { BuyLockup: any } | { SellLockup: any } | { CustomerDueDiligence: any } | { KnowYourCustomer: any } | { Jurisdiction: any } | { Exempted: any } | { Blocked: any } | { InvestorUniqueness: any } | { NoData: any } | { InvestorUniquenessV2: any } | string | Uint8Array, proof: ConfidentialIdentityClaimProofsScopeClaimProof | { proofScopeIdWellformed?: any; proofScopeIdCddIdMatch?: any; scopeId?: any } | string | Uint8Array, expiry: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityClaimScope, PolymeshPrimitivesIdentityClaimClaim, ConfidentialIdentityClaimProofsScopeClaimProof, Option]>; @@ -2280,7 +2281,7 @@ declare module '@polkadot/api-base/types/submittable' { * - `AuthorizationError::Expired` if `auth_id` the authorization has expired. * - `AuthorizationError::BadType` if `auth_id` was not a `AddRelayerPayingKey` authorization. * - `NotAuthorizedForUserKey` if `origin` is not authorized to accept the authorization for the `user_key`. - * - `NotAuthorizedForPayingKey` if the authorization was created by a signer that isn't authorized by the `paying_key`. + * - `NotAuthorizedForPayingKey` if the authorization was created an identity different from the `paying_key`'s identity. * - `UserKeyCddMissing` if the `user_key` is not attached to a CDD'd identity. * - `PayingKeyCddMissing` if the `paying_key` is not attached to a CDD'd identity. * - `UnauthorizedCaller` if `origin` is not authorized to call this extrinsic. diff --git a/scripts/cli/src/interfaces/augment-types.ts b/scripts/cli/src/interfaces/augment-types.ts index e5bf3ba6c5..fbc75086bd 100644 --- a/scripts/cli/src/interfaces/augment-types.ts +++ b/scripts/cli/src/interfaces/augment-types.ts @@ -17,7 +17,7 @@ import type { PrefixedStorageKey } from '@polkadot/types/interfaces/childstate'; import type { StatementKind } from '@polkadot/types/interfaces/claims'; import type { CollectiveOrigin, MemberCount, ProposalIndex, Votes, VotesTo230 } from '@polkadot/types/interfaces/collective'; import type { AuthorityId, RawVRFOutput } from '@polkadot/types/interfaces/consensus'; -import type { AliveContractInfo, CodeHash, CodeUploadRequest, CodeUploadResult, CodeUploadResultValue, ContractCallFlags, ContractCallRequest, ContractExecResult, ContractExecResultErr, ContractExecResultErrModule, ContractExecResultOk, ContractExecResultResult, ContractExecResultSuccessTo255, ContractExecResultSuccessTo260, ContractExecResultTo255, ContractExecResultTo260, ContractExecResultTo267, ContractInfo, ContractInstantiateResult, ContractInstantiateResultTo267, ContractReturnFlags, ContractStorageKey, DeletedContract, ExecReturnValue, Gas, HostFnWeights, HostFnWeightsTo264, InstantiateRequest, InstantiateReturnValue, InstantiateReturnValueTo267, InstructionWeights, Limits, LimitsTo264, PrefabWasmModule, RentProjection, Schedule, ScheduleTo212, ScheduleTo258, ScheduleTo264, SeedOf, StorageDeposit, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts'; +import type { AliveContractInfo, CodeHash, CodeSource, CodeUploadRequest, CodeUploadResult, CodeUploadResultValue, ContractCallFlags, ContractCallRequest, ContractExecResult, ContractExecResultErr, ContractExecResultErrModule, ContractExecResultOk, ContractExecResultResult, ContractExecResultSuccessTo255, ContractExecResultSuccessTo260, ContractExecResultTo255, ContractExecResultTo260, ContractExecResultTo267, ContractInfo, ContractInstantiateResult, ContractInstantiateResultTo267, ContractInstantiateResultTo299, ContractReturnFlags, ContractStorageKey, DeletedContract, ExecReturnValue, Gas, HostFnWeights, HostFnWeightsTo264, InstantiateRequest, InstantiateRequestV1, InstantiateRequestV2, InstantiateReturnValue, InstantiateReturnValueOk, InstantiateReturnValueTo267, InstructionWeights, Limits, LimitsTo264, PrefabWasmModule, RentProjection, Schedule, ScheduleTo212, ScheduleTo258, ScheduleTo264, SeedOf, StorageDeposit, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts'; import type { ContractConstructorSpecLatest, ContractConstructorSpecV0, ContractConstructorSpecV1, ContractConstructorSpecV2, ContractConstructorSpecV3, ContractContractSpecV0, ContractContractSpecV1, ContractContractSpecV2, ContractContractSpecV3, ContractCryptoHasher, ContractDiscriminant, ContractDisplayName, ContractEventParamSpecLatest, ContractEventParamSpecV0, ContractEventParamSpecV2, ContractEventSpecLatest, ContractEventSpecV0, ContractEventSpecV1, ContractEventSpecV2, ContractLayoutArray, ContractLayoutCell, ContractLayoutEnum, ContractLayoutHash, ContractLayoutHashingStrategy, ContractLayoutKey, ContractLayoutStruct, ContractLayoutStructField, ContractMessageParamSpecLatest, ContractMessageParamSpecV0, ContractMessageParamSpecV2, ContractMessageSpecLatest, ContractMessageSpecV0, ContractMessageSpecV1, ContractMessageSpecV2, ContractMetadata, ContractMetadataLatest, ContractMetadataV0, ContractMetadataV1, ContractMetadataV2, ContractMetadataV3, ContractProject, ContractProjectContract, ContractProjectInfo, ContractProjectSource, ContractProjectV0, ContractSelector, ContractStorageLayout, ContractTypeSpec } from '@polkadot/types/interfaces/contractsAbi'; import type { FundIndex, FundInfo, LastContribution, TrieIndex } from '@polkadot/types/interfaces/crowdloan'; import type { ConfigData, MessageId, OverweightIndex, PageCounter, PageIndexData } from '@polkadot/types/interfaces/cumulus'; @@ -240,6 +240,7 @@ declare module '@polkadot/types/types/registry' { ClassMetadata: ClassMetadata; CodecHash: CodecHash; CodeHash: CodeHash; + CodeSource: CodeSource; CodeUploadRequest: CodeUploadRequest; CodeUploadResult: CodeUploadResult; CodeUploadResultValue: CodeUploadResultValue; @@ -298,6 +299,7 @@ declare module '@polkadot/types/types/registry' { ContractInfo: ContractInfo; ContractInstantiateResult: ContractInstantiateResult; ContractInstantiateResultTo267: ContractInstantiateResultTo267; + ContractInstantiateResultTo299: ContractInstantiateResultTo299; ContractLayoutArray: ContractLayoutArray; ContractLayoutCell: ContractLayoutCell; ContractLayoutEnum: ContractLayoutEnum; @@ -610,7 +612,10 @@ declare module '@polkadot/types/types/registry' { InstanceId: InstanceId; InstanceMetadata: InstanceMetadata; InstantiateRequest: InstantiateRequest; + InstantiateRequestV1: InstantiateRequestV1; + InstantiateRequestV2: InstantiateRequestV2; InstantiateReturnValue: InstantiateReturnValue; + InstantiateReturnValueOk: InstantiateReturnValueOk; InstantiateReturnValueTo267: InstantiateReturnValueTo267; Instruction: Instruction; InstructionId: InstructionId; diff --git a/scripts/cli/src/interfaces/default/types.ts b/scripts/cli/src/interfaces/default/types.ts index 54d8a94f26..9b41820204 100644 --- a/scripts/cli/src/interfaces/default/types.ts +++ b/scripts/cli/src/interfaces/default/types.ts @@ -3,8 +3,8 @@ import type { Bytes, Enum, Option, Struct, Text, U8aFixed, Vec, bool, u16, u32, u64, u8 } from '@polkadot/types-codec'; import type { ITuple } from '@polkadot/types-codec/types'; -import type { Signature } from '@polkadot/types/interfaces/extrinsics'; -import type { AccountId, Balance, BlockNumber, Call, H256, H512, Hash, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime'; +import type { MultiSignature, Signature } from '@polkadot/types/interfaces/extrinsics'; +import type { AccountId, Balance, BlockNumber, Call, H256, Hash, MultiAddress, Perbill, Permill, Weight } from '@polkadot/types/interfaces/runtime'; import type { AccountInfoWithDualRefCount, DispatchError } from '@polkadot/types/interfaces/system'; /** @name AccountInfo */ @@ -947,7 +947,7 @@ export interface InstructionStatus extends Enum { export interface InvestorUid extends U8aFixed {} /** @name InvestorZKProofData */ -export interface InvestorZKProofData extends Signature {} +export interface InvestorZKProofData extends U8aFixed {} /** @name ItnRewardStatus */ export interface ItnRewardStatus extends Enum { @@ -1047,15 +1047,7 @@ export interface MovePortfolioItem extends Struct { } /** @name OffChainSignature */ -export interface OffChainSignature extends Enum { - readonly isEd25519: boolean; - readonly asEd25519: H512; - readonly isSr25519: boolean; - readonly asSr25519: H512; - readonly isEcdsa: boolean; - readonly asEcdsa: H512; - readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa'; -} +export interface OffChainSignature extends MultiSignature {} /** @name PalletName */ export interface PalletName extends Text {} @@ -1579,6 +1571,14 @@ export interface VotingResult extends Struct { readonly nays_stake: Balance; } +/** @name WeightPerClass */ +export interface WeightPerClass extends Struct { + readonly baseExtrinsic: Weight; + readonly maxExtrinsic: Option; + readonly maxTotal: Option; + readonly reserved: Option; +} + /** @name WeightToFeeCoefficient */ export interface WeightToFeeCoefficient extends Struct { readonly coeffInteger: Balance; diff --git a/scripts/cli/src/interfaces/definitions.ts b/scripts/cli/src/interfaces/definitions.ts index 45f072cc16..3bc294b14e 100644 --- a/scripts/cli/src/interfaces/definitions.ts +++ b/scripts/cli/src/interfaces/definitions.ts @@ -1,3 +1,3 @@ export default { -types: {"Address":"MultiAddress","LookupSource":"MultiAddress","AccountInfo":"AccountInfoWithDualRefCount","IdentityId":"[u8; 32]","EventDid":"IdentityId","EventCounts":"Vec","ErrorAt":"(u32, DispatchError)","InvestorUid":"[u8; 16]","Ticker":"[u8; 12]","CddId":"[u8; 32]","ScopeId":"[u8; 32]","PosRatio":"(u32, u32)","DocumentId":"u32","DocumentName":"Text","DocumentUri":"Text","DocumentHash":{"_enum":{"None":"","H512":"[u8; 64]","H384":"[u8; 48]","H320":"[u8; 40]","H256":"[u8; 32]","H224":"[u8; 28]","H192":"[u8; 24]","H160":"[u8; 20]","H128":"[u8; 16]"}},"DocumentType":"Text","Document":{"uri":"DocumentUri","content_hash":"DocumentHash","name":"DocumentName","doc_type":"Option","filing_date":"Option"},"Version":"u8","CustomAssetTypeId":"u32","AssetType":{"_enum":{"EquityCommon":"","EquityPreferred":"","Commodity":"","FixedIncome":"","REIT":"","Fund":"","RevenueShareAgreement":"","StructuredProduct":"","Derivative":"","Custom":"CustomAssetTypeId","StableCoin":""}},"AssetIdentifier":{"_enum":{"CUSIP":"[u8; 9]","CINS":"[u8; 9]","ISIN":"[u8; 12]","LEI":"[u8; 20]"}},"AssetOwnershipRelation":{"_enum":{"NotOwned":"","TickerOwned":"","AssetOwned":""}},"AssetName":"Text","FundingRoundName":"Text","VenueDetails":"Text","SecurityToken":{"total_supply":"Balance","owner_did":"IdentityId","divisible":"bool","asset_type":"AssetType"},"PalletName":"Text","DispatchableName":"Text","AssetPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"PortfolioPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"DispatchableNames":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"PalletPermissions":{"pallet_name":"PalletName","dispatchable_names":"DispatchableNames"},"ExtrinsicPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"Permissions":{"asset":"AssetPermissions","extrinsic":"ExtrinsicPermissions","portfolio":"PortfolioPermissions"},"LegacyPalletPermissions":{"pallet_name":"PalletName","total":"bool","dispatchable_names":"Vec"},"LegacyPermissions":{"asset":"Option>","extrinsic":"Option>","portfolio":"Option>"},"Signatory":{"_enum":{"Identity":"IdentityId","Account":"AccountId"}},"SecondaryKey":{"signer":"Signatory","permissions":"Permissions"},"SecondaryKeyWithAuth":{"secondary_key":"SecondaryKey","auth_signature":"Signature"},"Subsidy":{"paying_key":"AccountId","remaining":"Balance"},"IdentityRole":{"_enum":["Issuer","SimpleTokenIssuer","Validator","ClaimIssuer","Investor","NodeRunner","PM","CDDAMLClaimIssuer","AccreditedInvestorClaimIssuer","VerifiedIdentityClaimIssuer"]},"PreAuthorizedKeyInfo":{"target_id":"IdentityId","secondary_key":"SecondaryKey"},"DidRecord":{"primary_key":"AccountId","secondary_keys":"Vec"},"KeyIdentityData":{"identity":"IdentityId","permissions":"Option"},"CountryCode":{"_enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","VG","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","HK","MO","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VI","WF","EH","YE","ZM","ZW","BQ","CW","SX"]},"Scope":{"_enum":{"Identity":"IdentityId","Ticker":"Ticker","Custom":"Vec"}},"InvestorZKProofData":"Signature","Scalar":"[u8; 32]","RistrettoPoint":"[u8; 32]","ZkProofData":{"challenge_responses":"[Scalar; 2]","subtract_expressions_res":"RistrettoPoint","blinded_scope_did_hash":"RistrettoPoint"},"ScopeClaimProof":{"proof_scope_id_wellformed":"Signature","proof_scope_id_cdd_id_match":"ZkProofData","scope_id":"RistrettoPoint"},"Claim":{"_enum":{"Accredited":"Scope","Affiliate":"Scope","BuyLockup":"Scope","SellLockup":"Scope","CustomerDueDiligence":"CddId","KnowYourCustomer":"Scope","Jurisdiction":"(CountryCode, Scope)","Exempted":"Scope","Blocked":"Scope","InvestorUniqueness":"(Scope, ScopeId, CddId)","NoData":"","InvestorUniquenessV2":"(CddId)"}},"ClaimType":{"_enum":{"Accredited":"","Affiliate":"","BuyLockup":"","SellLockup":"","CustomerDueDiligence":"","KnowYourCustomer":"","Jurisdiction":"","Exempted":"","Blocked":"","InvestorUniqueness":"","NoData":"","InvestorUniquenessV2":""}},"IdentityClaim":{"claim_issuer":"IdentityId","issuance_date":"Moment","last_update_date":"Moment","expiry":"Option","claim":"Claim"},"ComplianceRequirement":{"sender_conditions":"Vec","receiver_conditions":"Vec","id":"u32"},"ComplianceRequirementResult":{"sender_conditions":"Vec","receiver_conditions":"Vec","id":"u32","result":"bool"},"ConditionType":{"_enum":{"IsPresent":"Claim","IsAbsent":"Claim","IsAnyOf":"Vec","IsNoneOf":"Vec","IsIdentity":"TargetIdentity"}},"TrustedFor":{"_enum":{"Any":"","Specific":"Vec"}},"TrustedIssuer":{"issuer":"IdentityId","trusted_for":"TrustedFor"},"Condition":{"condition_type":"ConditionType","issuers":"Vec"},"ConditionResult":{"condition":"Condition","result":"bool"},"TargetIdAuthorization":{"target_id":"IdentityId","nonce":"u64","expires_at":"Moment"},"TickerRegistration":{"owner":"IdentityId","expiry":"Option"},"TickerRegistrationConfig":{"max_ticker_length":"u8","registration_length":"Option"},"ClassicTickerRegistration":{"eth_owner":"EthereumAddress","is_created":"bool"},"ClassicTickerImport":{"eth_owner":"EthereumAddress","ticker":"Ticker","is_contract":"bool","is_created":"bool"},"EthereumAddress":"[u8; 20]","EcdsaSignature":"[u8; 65]","MotionTitle":"Text","MotionInfoLink":"Text","ChoiceTitle":"Text","Motion":{"title":"MotionTitle","info_link":"MotionInfoLink","choices":"Vec"},"BallotTitle":"Text","BallotMeta":{"title":"BallotTitle","motions":"Vec"},"BallotTimeRange":{"start":"Moment","end":"Moment"},"BallotVote":{"power":"Balance","fallback":"Option"},"MaybeBlock":{"_enum":{"Some":"BlockNumber","None":""}},"Url":"Text","PipDescription":"Text","PipsMetadata":{"id":"PipId","url":"Option","description":"Option","created_at":"BlockNumber","transaction_version":"u32","expiry":"MaybeBlock"},"Proposer":{"_enum":{"Community":"AccountId","Committee":"Committee"}},"Committee":{"_enum":{"Technical":"","Upgrade":""}},"SkippedCount":"u8","SnapshottedPip":{"id":"PipId","weight":"(bool, Balance)"},"SnapshotId":"u32","SnapshotMetadata":{"created_at":"BlockNumber","made_by":"AccountId","id":"SnapshotId"},"SnapshotResult":{"_enum":{"Approve":"","Reject":"","Skip":""}},"Beneficiary":{"id":"IdentityId","amount":"Balance"},"DepositInfo":{"owner":"AccountId","amount":"Balance"},"PolymeshVotes":{"index":"u32","ayes":"Vec","nays":"Vec","expiry":"MaybeBlock"},"PipId":"u32","ProposalState":{"_enum":["Pending","Rejected","Scheduled","Failed","Executed","Expired"]},"Pip":{"id":"PipId","proposal":"Call","state":"ProposalState","proposer":"Proposer"},"ProposalData":{"_enum":{"Hash":"Hash","Proposal":"Vec"}},"OffChainSignature":{"_enum":{"Ed25519":"H512","Sr25519":"H512","Ecdsa":"H512"}},"Authorization":{"authorization_data":"AuthorizationData","authorized_by":"IdentityId","expiry":"Option","auth_id":"u64"},"AuthorizationData":{"_enum":{"AttestPrimaryKeyRotation":"IdentityId","RotatePrimaryKey":"","TransferTicker":"Ticker","AddMultiSigSigner":"AccountId","TransferAssetOwnership":"Ticker","JoinIdentity":"Permissions","PortfolioCustody":"PortfolioId","BecomeAgent":"(Ticker, AgentGroup)","AddRelayerPayingKey":"(AccountId, AccountId, Balance)","RotatePrimaryKeyToSecondary":"Permissions"}},"SmartExtensionType":{"_enum":{"TransferManager":"","Offerings":"","SmartWallet":"","Custom":"Vec"}},"SmartExtensionName":"Text","SmartExtension":{"extension_type":"SmartExtensionType","extension_name":"SmartExtensionName","extension_id":"AccountId","is_archive":"bool"},"MetaUrl":"Text","MetaDescription":"Text","MetaVersion":"u32","ExtVersion":"u32","TemplateMetadata":{"url":"Option","se_type":"SmartExtensionType","usage_fee":"Balance","description":"MetaDescription","version":"MetaVersion"},"TemplateDetails":{"instantiation_fee":"Balance","owner":"IdentityId","frozen":"bool"},"AuthorizationNonce":"u64","Counter":"u64","Percentage":"Permill","TransferManager":{"_enum":{"CountTransferManager":"Counter","PercentageTransferManager":"Percentage"}},"RestrictionResult":{"_enum":["Valid","Invalid","ForceValid"]},"Memo":"[u8;32]","BridgeTx":{"nonce":"u32","recipient":"AccountId","amount":"Balance","tx_hash":"H256"},"AssetCompliance":{"paused":"bool","requirements":"Vec"},"AssetComplianceResult":{"paused":"bool","requirements":"Vec","result":"bool"},"Claim1stKey":{"target":"IdentityId","claim_type":"ClaimType"},"Claim2ndKey":{"issuer":"IdentityId","scope":"Option"},"InactiveMember":{"id":"IdentityId","deactivated_at":"Moment","expiry":"Option"},"VotingResult":{"ayes_count":"u32","ayes_stake":"Balance","nays_count":"u32","nays_stake":"Balance"},"ProtocolOp":{"_enum":["AssetRegisterTicker","AssetIssue","AssetAddDocuments","AssetCreateAsset","CheckpointCreateSchedule","ComplianceManagerAddComplianceRequirement","IdentityCddRegisterDid","IdentityAddClaim","IdentityAddSecondaryKeysWithAuthorization","PipsPropose","ContractsPutCode","CorporateBallotAttachBallot","CapitalDistributionDistribute"]},"CddStatus":{"_enum":{"Ok":"IdentityId","Err":"Vec"}},"AssetDidResult":{"_enum":{"Ok":"IdentityId","Err":"Vec"}},"DidRecordsSuccess":{"primary_key":"AccountId","secondary_keys":"Vec"},"DidRecords":{"_enum":{"Success":"DidRecordsSuccess","IdNotFound":"Vec"}},"VoteCountProposalFound":{"ayes":"u64","nays":"u64"},"VoteCount":{"_enum":{"ProposalFound":"VoteCountProposalFound","ProposalNotFound":""}},"Vote":"(bool, Balance)","VoteByPip":{"pip":"PipId","vote":"Vote"},"BridgeTxDetail":{"amount":"Balance","status":"BridgeTxStatus","execution_block":"BlockNumber","tx_hash":"H256"},"BridgeTxStatus":{"_enum":{"Absent":"","Pending":"u8","Frozen":"","Timelocked":"","Handled":""}},"HandledTxStatus":{"_enum":{"Success":"","Error":"Text"}},"CappedFee":"u64","CanTransferResult":{"_enum":{"Ok":"u8","Err":"Vec"}},"AuthorizationType":{"_enum":{"AttestPrimaryKeyRotation":"","RotatePrimaryKey":"","TransferTicker":"","AddMultiSigSigner":"","TransferAssetOwnership":"","JoinIdentity":"","PortfolioCustody":"","BecomeAgent":"","AddRelayerPayingKey":"","RotatePrimaryKeyToSecondary":""}},"ProposalDetails":{"approvals":"u64","rejections":"u64","status":"ProposalStatus","expiry":"Option","auto_close":"bool"},"ProposalStatus":{"_enum":{"Invalid":"","ActiveOrExpired":"","ExecutionSuccessful":"","ExecutionFailed":"","Rejected":""}},"DidStatus":{"_enum":{"Unknown":"","Exists":"","CddVerified":""}},"PortfolioName":"Text","PortfolioNumber":"u64","PortfolioKind":{"_enum":{"Default":"","User":"PortfolioNumber"}},"PortfolioId":{"did":"IdentityId","kind":"PortfolioKind"},"Moment":"u64","CalendarUnit":{"_enum":["Second","Minute","Hour","Day","Week","Month","Year"]},"CalendarPeriod":{"unit":"CalendarUnit","amount":"u64"},"CheckpointSchedule":{"start":"Moment","period":"CalendarPeriod"},"CheckpointId":"u64","ScheduleId":"u64","StoredSchedule":{"schedule":"CheckpointSchedule","id":"ScheduleId","at":"Moment","remaining":"u32"},"ScheduleSpec":{"start":"Option","period":"CalendarPeriod","remaining":"u32"},"InstructionStatus":{"_enum":{"Unknown":"","Pending":"","Failed":""}},"LegStatus":{"_enum":{"PendingTokenLock":"","ExecutionPending":"","ExecutionToBeSkipped":"(AccountId, u64)"}},"AffirmationStatus":{"_enum":{"Unknown":"","Pending":"","Affirmed":""}},"SettlementType":{"_enum":{"SettleOnAffirmation":"","SettleOnBlock":"BlockNumber"}},"LegId":"u64","InstructionId":"u64","Instruction":{"instruction_id":"InstructionId","venue_id":"VenueId","status":"InstructionStatus","settlement_type":"SettlementType","created_at":"Option","trade_date":"Option","value_date":"Option"},"Leg":{"from":"PortfolioId","to":"PortfolioId","asset":"Ticker","amount":"Balance"},"Venue":{"creator":"IdentityId","venue_type":"VenueType"},"Receipt":{"receipt_uid":"u64","from":"PortfolioId","to":"PortfolioId","asset":"Ticker","amount":"Balance"},"ReceiptMetadata":"Text","ReceiptDetails":{"receipt_uid":"u64","leg_id":"LegId","signer":"AccountId","signature":"OffChainSignature","metadata":"ReceiptMetadata"},"UniqueCall":{"nonce":"u64","call":"Call"},"MovePortfolioItem":{"ticker":"Ticker","amount":"Balance","memo":"Option"},"WeightToFeeCoefficient":{"coeffInteger":"Balance","coeffFrac":"Perbill","negative":"bool","degree":"u8"},"TargetIdentity":{"_enum":{"ExternalAgent":"","Specific":"IdentityId"}},"FundraiserId":"u64","FundraiserName":"Text","FundraiserStatus":{"_enum":["Live","Frozen","Closed","ClosedEarly"]},"FundraiserTier":{"total":"Balance","price":"Balance","remaining":"Balance"},"Fundraiser":{"creator":"IdentityId","offering_portfolio":"PortfolioId","offering_asset":"Ticker","raising_portfolio":"PortfolioId","raising_asset":"Ticker","tiers":"Vec","venue_id":"VenueId","start":"Moment","end":"Option","status":"FundraiserStatus","minimum_investment":"Balance"},"VenueId":"u64","VenueType":{"_enum":["Other","Distribution","Sto","Exchange"]},"ExtensionAttributes":{"usage_fee":"Balance","version":"MetaVersion"},"Tax":"Permill","TargetIdentities":{"identities":"Vec","treatment":"TargetTreatment"},"TargetTreatment":{"_enum":["Include","Exclude"]},"CAKind":{"_enum":["PredictableBenefit","UnpredictableBenefit","IssuerNotice","Reorganization","Other"]},"CADetails":"Text","CACheckpoint":{"_enum":{"Scheduled":"(ScheduleId, u64)","Existing":"CheckpointId"}},"RecordDate":{"date":"Moment","checkpoint":"CACheckpoint"},"RecordDateSpec":{"_enum":{"Scheduled":"Moment","ExistingSchedule":"ScheduleId","Existing":"CheckpointId"}},"CorporateAction":{"kind":"CAKind","decl_date":"Moment","record_date":"Option","targets":"TargetIdentities","default_withholding_tax":"Tax","withholding_tax":"Vec<(IdentityId, Tax)>"},"LocalCAId":"u32","CAId":{"ticker":"Ticker","local_id":"LocalCAId"},"Distribution":{"from":"PortfolioId","currency":"Ticker","per_share":"Balance","amount":"Balance","remaining":"Balance","reclaimed":"bool","payment_at":"Moment","expires_at":"Option"},"SlashingSwitch":{"_enum":["Validator","ValidatorAndNominator","None"]},"PriceTier":{"total":"Balance","price":"Balance"},"PermissionedIdentityPrefs":{"intended_count":"u32","running_count":"u32"},"GranularCanTransferResult":{"invalid_granularity":"bool","self_transfer":"bool","invalid_receiver_cdd":"bool","invalid_sender_cdd":"bool","missing_scope_claim":"bool","receiver_custodian_error":"bool","sender_custodian_error":"bool","sender_insufficient_balance":"bool","portfolio_validity_result":"PortfolioValidityResult","asset_frozen":"bool","statistics_result":"Vec","compliance_result":"AssetComplianceResult","result":"bool"},"PortfolioValidityResult":{"receiver_is_same_portfolio":"bool","sender_portfolio_does_not_exist":"bool","receiver_portfolio_does_not_exist":"bool","sender_insufficient_balance":"bool","result":"bool"},"TransferManagerResult":{"tm":"TransferManager","result":"bool"},"AGId":"u32","AgentGroup":{"_enum":{"Full":"","Custom":"AGId","ExceptMeta":"","PolymeshV1CAA":"","PolymeshV1PIA":""}},"ItnRewardStatus":{"_enum":{"Unclaimed":"Balance","Claimed":""}}} +types: {"Address":"MultiAddress","LookupSource":"MultiAddress","AccountInfo":"AccountInfoWithDualRefCount","IdentityId":"[u8; 32]","EventDid":"IdentityId","EventCounts":"Vec","ErrorAt":"(u32, DispatchError)","InvestorUid":"[u8; 16]","Ticker":"[u8; 12]","CddId":"[u8; 32]","ScopeId":"[u8; 32]","PosRatio":"(u32, u32)","DocumentId":"u32","DocumentName":"Text","DocumentUri":"Text","DocumentHash":{"_enum":{"None":"","H512":"[u8; 64]","H384":"[u8; 48]","H320":"[u8; 40]","H256":"[u8; 32]","H224":"[u8; 28]","H192":"[u8; 24]","H160":"[u8; 20]","H128":"[u8; 16]"}},"DocumentType":"Text","Document":{"uri":"DocumentUri","content_hash":"DocumentHash","name":"DocumentName","doc_type":"Option","filing_date":"Option"},"Version":"u8","CustomAssetTypeId":"u32","AssetType":{"_enum":{"EquityCommon":"","EquityPreferred":"","Commodity":"","FixedIncome":"","REIT":"","Fund":"","RevenueShareAgreement":"","StructuredProduct":"","Derivative":"","Custom":"CustomAssetTypeId","StableCoin":""}},"AssetIdentifier":{"_enum":{"CUSIP":"[u8; 9]","CINS":"[u8; 9]","ISIN":"[u8; 12]","LEI":"[u8; 20]"}},"AssetOwnershipRelation":{"_enum":{"NotOwned":"","TickerOwned":"","AssetOwned":""}},"AssetName":"Text","FundingRoundName":"Text","VenueDetails":"Text","SecurityToken":{"total_supply":"Balance","owner_did":"IdentityId","divisible":"bool","asset_type":"AssetType"},"PalletName":"Text","DispatchableName":"Text","AssetPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"PortfolioPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"DispatchableNames":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"PalletPermissions":{"pallet_name":"PalletName","dispatchable_names":"DispatchableNames"},"ExtrinsicPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"Permissions":{"asset":"AssetPermissions","extrinsic":"ExtrinsicPermissions","portfolio":"PortfolioPermissions"},"LegacyPalletPermissions":{"pallet_name":"PalletName","total":"bool","dispatchable_names":"Vec"},"LegacyPermissions":{"asset":"Option>","extrinsic":"Option>","portfolio":"Option>"},"Signatory":{"_enum":{"Identity":"IdentityId","Account":"AccountId"}},"SecondaryKey":{"signer":"Signatory","permissions":"Permissions"},"SecondaryKeyWithAuth":{"secondary_key":"SecondaryKey","auth_signature":"Signature"},"Subsidy":{"paying_key":"AccountId","remaining":"Balance"},"IdentityRole":{"_enum":["Issuer","SimpleTokenIssuer","Validator","ClaimIssuer","Investor","NodeRunner","PM","CDDAMLClaimIssuer","AccreditedInvestorClaimIssuer","VerifiedIdentityClaimIssuer"]},"PreAuthorizedKeyInfo":{"target_id":"IdentityId","secondary_key":"SecondaryKey"},"DidRecord":{"primary_key":"AccountId","secondary_keys":"Vec"},"KeyIdentityData":{"identity":"IdentityId","permissions":"Option"},"CountryCode":{"_enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","VG","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","HK","MO","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VI","WF","EH","YE","ZM","ZW","BQ","CW","SX"]},"Scope":{"_enum":{"Identity":"IdentityId","Ticker":"Ticker","Custom":"Vec"}},"InvestorZKProofData":"[u8; 64]","Scalar":"[u8; 32]","RistrettoPoint":"[u8; 32]","ZkProofData":{"challenge_responses":"[Scalar; 2]","subtract_expressions_res":"RistrettoPoint","blinded_scope_did_hash":"RistrettoPoint"},"ScopeClaimProof":{"proof_scope_id_wellformed":"Signature","proof_scope_id_cdd_id_match":"ZkProofData","scope_id":"RistrettoPoint"},"Claim":{"_enum":{"Accredited":"Scope","Affiliate":"Scope","BuyLockup":"Scope","SellLockup":"Scope","CustomerDueDiligence":"CddId","KnowYourCustomer":"Scope","Jurisdiction":"(CountryCode, Scope)","Exempted":"Scope","Blocked":"Scope","InvestorUniqueness":"(Scope, ScopeId, CddId)","NoData":"","InvestorUniquenessV2":"(CddId)"}},"ClaimType":{"_enum":{"Accredited":"","Affiliate":"","BuyLockup":"","SellLockup":"","CustomerDueDiligence":"","KnowYourCustomer":"","Jurisdiction":"","Exempted":"","Blocked":"","InvestorUniqueness":"","NoData":"","InvestorUniquenessV2":""}},"IdentityClaim":{"claim_issuer":"IdentityId","issuance_date":"Moment","last_update_date":"Moment","expiry":"Option","claim":"Claim"},"ComplianceRequirement":{"sender_conditions":"Vec","receiver_conditions":"Vec","id":"u32"},"ComplianceRequirementResult":{"sender_conditions":"Vec","receiver_conditions":"Vec","id":"u32","result":"bool"},"ConditionType":{"_enum":{"IsPresent":"Claim","IsAbsent":"Claim","IsAnyOf":"Vec","IsNoneOf":"Vec","IsIdentity":"TargetIdentity"}},"TrustedFor":{"_enum":{"Any":"","Specific":"Vec"}},"TrustedIssuer":{"issuer":"IdentityId","trusted_for":"TrustedFor"},"Condition":{"condition_type":"ConditionType","issuers":"Vec"},"ConditionResult":{"condition":"Condition","result":"bool"},"TargetIdAuthorization":{"target_id":"IdentityId","nonce":"u64","expires_at":"Moment"},"TickerRegistration":{"owner":"IdentityId","expiry":"Option"},"TickerRegistrationConfig":{"max_ticker_length":"u8","registration_length":"Option"},"ClassicTickerRegistration":{"eth_owner":"EthereumAddress","is_created":"bool"},"ClassicTickerImport":{"eth_owner":"EthereumAddress","ticker":"Ticker","is_contract":"bool","is_created":"bool"},"EthereumAddress":"[u8; 20]","EcdsaSignature":"[u8; 65]","MotionTitle":"Text","MotionInfoLink":"Text","ChoiceTitle":"Text","Motion":{"title":"MotionTitle","info_link":"MotionInfoLink","choices":"Vec"},"BallotTitle":"Text","BallotMeta":{"title":"BallotTitle","motions":"Vec"},"BallotTimeRange":{"start":"Moment","end":"Moment"},"BallotVote":{"power":"Balance","fallback":"Option"},"MaybeBlock":{"_enum":{"Some":"BlockNumber","None":""}},"Url":"Text","PipDescription":"Text","PipsMetadata":{"id":"PipId","url":"Option","description":"Option","created_at":"BlockNumber","transaction_version":"u32","expiry":"MaybeBlock"},"Proposer":{"_enum":{"Community":"AccountId","Committee":"Committee"}},"Committee":{"_enum":{"Technical":"","Upgrade":""}},"SkippedCount":"u8","SnapshottedPip":{"id":"PipId","weight":"(bool, Balance)"},"SnapshotId":"u32","SnapshotMetadata":{"created_at":"BlockNumber","made_by":"AccountId","id":"SnapshotId"},"SnapshotResult":{"_enum":{"Approve":"","Reject":"","Skip":""}},"Beneficiary":{"id":"IdentityId","amount":"Balance"},"DepositInfo":{"owner":"AccountId","amount":"Balance"},"PolymeshVotes":{"index":"u32","ayes":"Vec","nays":"Vec","expiry":"MaybeBlock"},"PipId":"u32","ProposalState":{"_enum":["Pending","Rejected","Scheduled","Failed","Executed","Expired"]},"Pip":{"id":"PipId","proposal":"Call","state":"ProposalState","proposer":"Proposer"},"ProposalData":{"_enum":{"Hash":"Hash","Proposal":"Vec"}},"OffChainSignature":"MultiSignature","Authorization":{"authorization_data":"AuthorizationData","authorized_by":"IdentityId","expiry":"Option","auth_id":"u64"},"AuthorizationData":{"_enum":{"AttestPrimaryKeyRotation":"IdentityId","RotatePrimaryKey":"","TransferTicker":"Ticker","AddMultiSigSigner":"AccountId","TransferAssetOwnership":"Ticker","JoinIdentity":"Permissions","PortfolioCustody":"PortfolioId","BecomeAgent":"(Ticker, AgentGroup)","AddRelayerPayingKey":"(AccountId, AccountId, Balance)","RotatePrimaryKeyToSecondary":"Permissions"}},"SmartExtensionType":{"_enum":{"TransferManager":"","Offerings":"","SmartWallet":"","Custom":"Vec"}},"SmartExtensionName":"Text","SmartExtension":{"extension_type":"SmartExtensionType","extension_name":"SmartExtensionName","extension_id":"AccountId","is_archive":"bool"},"MetaUrl":"Text","MetaDescription":"Text","MetaVersion":"u32","ExtVersion":"u32","TemplateMetadata":{"url":"Option","se_type":"SmartExtensionType","usage_fee":"Balance","description":"MetaDescription","version":"MetaVersion"},"TemplateDetails":{"instantiation_fee":"Balance","owner":"IdentityId","frozen":"bool"},"AuthorizationNonce":"u64","Counter":"u64","Percentage":"Permill","TransferManager":{"_enum":{"CountTransferManager":"Counter","PercentageTransferManager":"Percentage"}},"RestrictionResult":{"_enum":["Valid","Invalid","ForceValid"]},"Memo":"[u8;32]","BridgeTx":{"nonce":"u32","recipient":"AccountId","amount":"Balance","tx_hash":"H256"},"AssetCompliance":{"paused":"bool","requirements":"Vec"},"AssetComplianceResult":{"paused":"bool","requirements":"Vec","result":"bool"},"Claim1stKey":{"target":"IdentityId","claim_type":"ClaimType"},"Claim2ndKey":{"issuer":"IdentityId","scope":"Option"},"InactiveMember":{"id":"IdentityId","deactivated_at":"Moment","expiry":"Option"},"VotingResult":{"ayes_count":"u32","ayes_stake":"Balance","nays_count":"u32","nays_stake":"Balance"},"ProtocolOp":{"_enum":["AssetRegisterTicker","AssetIssue","AssetAddDocuments","AssetCreateAsset","CheckpointCreateSchedule","ComplianceManagerAddComplianceRequirement","IdentityCddRegisterDid","IdentityAddClaim","IdentityAddSecondaryKeysWithAuthorization","PipsPropose","ContractsPutCode","CorporateBallotAttachBallot","CapitalDistributionDistribute"]},"CddStatus":{"_enum":{"Ok":"IdentityId","Err":"Vec"}},"AssetDidResult":{"_enum":{"Ok":"IdentityId","Err":"Vec"}},"DidRecordsSuccess":{"primary_key":"AccountId","secondary_keys":"Vec"},"DidRecords":{"_enum":{"Success":"DidRecordsSuccess","IdNotFound":"Vec"}},"VoteCountProposalFound":{"ayes":"u64","nays":"u64"},"VoteCount":{"_enum":{"ProposalFound":"VoteCountProposalFound","ProposalNotFound":""}},"Vote":"(bool, Balance)","VoteByPip":{"pip":"PipId","vote":"Vote"},"BridgeTxDetail":{"amount":"Balance","status":"BridgeTxStatus","execution_block":"BlockNumber","tx_hash":"H256"},"BridgeTxStatus":{"_enum":{"Absent":"","Pending":"u8","Frozen":"","Timelocked":"","Handled":""}},"HandledTxStatus":{"_enum":{"Success":"","Error":"Text"}},"CappedFee":"u64","CanTransferResult":{"_enum":{"Ok":"u8","Err":"Vec"}},"AuthorizationType":{"_enum":{"AttestPrimaryKeyRotation":"","RotatePrimaryKey":"","TransferTicker":"","AddMultiSigSigner":"","TransferAssetOwnership":"","JoinIdentity":"","PortfolioCustody":"","BecomeAgent":"","AddRelayerPayingKey":"","RotatePrimaryKeyToSecondary":""}},"ProposalDetails":{"approvals":"u64","rejections":"u64","status":"ProposalStatus","expiry":"Option","auto_close":"bool"},"ProposalStatus":{"_enum":{"Invalid":"","ActiveOrExpired":"","ExecutionSuccessful":"","ExecutionFailed":"","Rejected":""}},"DidStatus":{"_enum":{"Unknown":"","Exists":"","CddVerified":""}},"PortfolioName":"Text","PortfolioNumber":"u64","PortfolioKind":{"_enum":{"Default":"","User":"PortfolioNumber"}},"PortfolioId":{"did":"IdentityId","kind":"PortfolioKind"},"Moment":"u64","CalendarUnit":{"_enum":["Second","Minute","Hour","Day","Week","Month","Year"]},"CalendarPeriod":{"unit":"CalendarUnit","amount":"u64"},"CheckpointSchedule":{"start":"Moment","period":"CalendarPeriod"},"CheckpointId":"u64","ScheduleId":"u64","StoredSchedule":{"schedule":"CheckpointSchedule","id":"ScheduleId","at":"Moment","remaining":"u32"},"ScheduleSpec":{"start":"Option","period":"CalendarPeriod","remaining":"u32"},"InstructionStatus":{"_enum":{"Unknown":"","Pending":"","Failed":""}},"LegStatus":{"_enum":{"PendingTokenLock":"","ExecutionPending":"","ExecutionToBeSkipped":"(AccountId, u64)"}},"AffirmationStatus":{"_enum":{"Unknown":"","Pending":"","Affirmed":""}},"SettlementType":{"_enum":{"SettleOnAffirmation":"","SettleOnBlock":"BlockNumber"}},"LegId":"u64","InstructionId":"u64","Instruction":{"instruction_id":"InstructionId","venue_id":"VenueId","status":"InstructionStatus","settlement_type":"SettlementType","created_at":"Option","trade_date":"Option","value_date":"Option"},"Leg":{"from":"PortfolioId","to":"PortfolioId","asset":"Ticker","amount":"Balance"},"Venue":{"creator":"IdentityId","venue_type":"VenueType"},"Receipt":{"receipt_uid":"u64","from":"PortfolioId","to":"PortfolioId","asset":"Ticker","amount":"Balance"},"ReceiptMetadata":"Text","ReceiptDetails":{"receipt_uid":"u64","leg_id":"LegId","signer":"AccountId","signature":"OffChainSignature","metadata":"ReceiptMetadata"},"UniqueCall":{"nonce":"u64","call":"Call"},"MovePortfolioItem":{"ticker":"Ticker","amount":"Balance","memo":"Option"},"WeightToFeeCoefficient":{"coeffInteger":"Balance","coeffFrac":"Perbill","negative":"bool","degree":"u8"},"WeightPerClass":{"baseExtrinsic":"Weight","maxExtrinsic":"Option","maxTotal":"Option","reserved":"Option"},"TargetIdentity":{"_enum":{"ExternalAgent":"","Specific":"IdentityId"}},"FundraiserId":"u64","FundraiserName":"Text","FundraiserStatus":{"_enum":["Live","Frozen","Closed","ClosedEarly"]},"FundraiserTier":{"total":"Balance","price":"Balance","remaining":"Balance"},"Fundraiser":{"creator":"IdentityId","offering_portfolio":"PortfolioId","offering_asset":"Ticker","raising_portfolio":"PortfolioId","raising_asset":"Ticker","tiers":"Vec","venue_id":"VenueId","start":"Moment","end":"Option","status":"FundraiserStatus","minimum_investment":"Balance"},"VenueId":"u64","VenueType":{"_enum":["Other","Distribution","Sto","Exchange"]},"ExtensionAttributes":{"usage_fee":"Balance","version":"MetaVersion"},"Tax":"Permill","TargetIdentities":{"identities":"Vec","treatment":"TargetTreatment"},"TargetTreatment":{"_enum":["Include","Exclude"]},"CAKind":{"_enum":["PredictableBenefit","UnpredictableBenefit","IssuerNotice","Reorganization","Other"]},"CADetails":"Text","CACheckpoint":{"_enum":{"Scheduled":"(ScheduleId, u64)","Existing":"CheckpointId"}},"RecordDate":{"date":"Moment","checkpoint":"CACheckpoint"},"RecordDateSpec":{"_enum":{"Scheduled":"Moment","ExistingSchedule":"ScheduleId","Existing":"CheckpointId"}},"CorporateAction":{"kind":"CAKind","decl_date":"Moment","record_date":"Option","targets":"TargetIdentities","default_withholding_tax":"Tax","withholding_tax":"Vec<(IdentityId, Tax)>"},"LocalCAId":"u32","CAId":{"ticker":"Ticker","local_id":"LocalCAId"},"Distribution":{"from":"PortfolioId","currency":"Ticker","per_share":"Balance","amount":"Balance","remaining":"Balance","reclaimed":"bool","payment_at":"Moment","expires_at":"Option"},"SlashingSwitch":{"_enum":["Validator","ValidatorAndNominator","None"]},"PriceTier":{"total":"Balance","price":"Balance"},"PermissionedIdentityPrefs":{"intended_count":"u32","running_count":"u32"},"GranularCanTransferResult":{"invalid_granularity":"bool","self_transfer":"bool","invalid_receiver_cdd":"bool","invalid_sender_cdd":"bool","missing_scope_claim":"bool","receiver_custodian_error":"bool","sender_custodian_error":"bool","sender_insufficient_balance":"bool","portfolio_validity_result":"PortfolioValidityResult","asset_frozen":"bool","statistics_result":"Vec","compliance_result":"AssetComplianceResult","result":"bool"},"PortfolioValidityResult":{"receiver_is_same_portfolio":"bool","sender_portfolio_does_not_exist":"bool","receiver_portfolio_does_not_exist":"bool","sender_insufficient_balance":"bool","result":"bool"},"TransferManagerResult":{"tm":"TransferManager","result":"bool"},"AGId":"u32","AgentGroup":{"_enum":{"Full":"","Custom":"AGId","ExceptMeta":"","PolymeshV1CAA":"","PolymeshV1PIA":""}},"ItnRewardStatus":{"_enum":{"Unclaimed":"Balance","Claimed":""}}} } \ No newline at end of file diff --git a/scripts/cli/src/tests/10_governance_management.ts b/scripts/cli/src/tests/10_governance_management.ts deleted file mode 100644 index d3e836560b..0000000000 --- a/scripts/cli/src/tests/10_governance_management.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { - ApiSingleton, - generateEntityFromUri, - initMain, - sendTx, - transferAmount, -} from "../util/init"; -import { createIdentities } from "../helpers/identity_helper"; -import { distributePolyBatch } from "../helpers/poly_helper"; -import * as staking from "../helpers/staking_helper"; -import * as pips from "../helpers/pips_helper"; -import * as committee from "../helpers/committee_helper"; -import Keyring from "@polkadot/keyring"; -import PrettyError from "pretty-error"; - -async function main(): Promise { - const testEntities = await initMain(); - const alice = testEntities[0]; - const govCommittee1 = testEntities[2]; - const govCommittee2 = testEntities[3]; - const bob = await generateEntityFromUri("10_bob"); - const dave = await generateEntityFromUri("10_dave"); - await pips.setDefaultEnactmentPeriod(alice, 10); - await createIdentities(alice, [bob, dave]); - - // Bob and Dave needs some funds to use. - await distributePolyBatch(alice, [bob, dave], transferAmount); - await staking.bond(dave, bob, 1_000_000, "Staked"); - const setLimit = await pips.setActivePipLimit(42); - - const firstPipCount = await pips.pipIdSequence(); - await pips.propose(bob, setLimit, 9_000_000_000, "google.com", "first"); - console.log("after propose"); - - const secondPipCount = await pips.pipIdSequence(); - await pips.propose(bob, setLimit, 10_000_000_000, "google.com", "second"); - await sendTx( - dave, - (await ApiSingleton.getInstance()).tx.pips.vote(1, true, 10) - ); - - // GC needs some funds to use. - await distributePolyBatch( - alice, - [govCommittee1, govCommittee2], - transferAmount - ); - - // Snapshot and approve second PIP. - await pips.snapshot(govCommittee1); - const approvePIP = await pips.enactSnapshotResults(secondPipCount, "Approve"); - await pips.voteResult([govCommittee1, govCommittee2], approvePIP); - - // Reject the first PIP - const rejectPIP = await pips.rejectProposal(firstPipCount); - await pips.voteResult([govCommittee1, govCommittee2], rejectPIP); - - // Finally reschedule, demonstrating that it had been scheduled. - await pips.rescheduleProposal(govCommittee1, secondPipCount); -} - -main() - .catch((err: any) => { - const pe = new PrettyError(); - console.error(pe.render(err)); - process.exit(1); - }) - .finally(() => { - console.log("Completed: GOVERNANCE MANAGEMENT"); - process.exit(); - }); diff --git a/scripts/cli/src/tests/11_A_settlement.ts b/scripts/cli/src/tests/11_A_settlement.ts deleted file mode 100644 index 893e0b2bfd..0000000000 --- a/scripts/cli/src/tests/11_A_settlement.ts +++ /dev/null @@ -1,64 +0,0 @@ -import * as init from "../util/init"; -import { createIdentities } from "../helpers/identity_helper"; -import { distributePoly } from "../helpers/poly_helper"; -import { assetBalance, issueTokenToDid } from "../helpers/asset_helper"; -import { addComplianceRequirement } from "../helpers/compliance_manager_helper"; -import * as settlement from "../helpers/settlement_helper"; -import PrettyError from "pretty-error"; - -async function main(): Promise { - const ticker = init.padTicker("11ATICKER"); - const testEntities = await init.initMain(); - const alice = testEntities[0]; - const bob = await init.generateEntityFromUri("11A_bob"); - const bobDid = (await createIdentities(alice, [bob]))[0]; - const aliceDid = await init.keyToIdentityIds(alice.publicKey); - await distributePoly(alice, bob, init.transferAmount); - await issueTokenToDid(alice, ticker, 1000000, null); - await addComplianceRequirement(alice, ticker); - - let aliceBalance = await assetBalance(ticker, aliceDid); - let bobBalance = await assetBalance(ticker, bobDid); - - console.log("Balance for Asset (Before)"); - console.log(`alice asset balance --------> ${aliceBalance}`); - console.log(`bob asset balance --------> ${bobBalance}`); - console.log(" "); - - let venueCounter = await settlement.createVenue(alice); - - let intructionCounterAB = await settlement.addInstruction( - alice, - venueCounter, - aliceDid, - bobDid, - ticker, - 100 - ); - - await settlement.affirmInstruction(alice, intructionCounterAB, aliceDid, 1); - await settlement.affirmInstruction(bob, intructionCounterAB, bobDid, 0); - - // Wait for settlement to be executed - happens in the next block - await init.waitBlocks(2); - - //await rejectInstruction(bob, intructionCounter); - //await unathorizeInstruction(alice, instructionCounter); - - aliceBalance = await assetBalance(ticker, aliceDid); - bobBalance = await assetBalance(ticker, bobDid); - - console.log(`alice asset balance --------> ${aliceBalance}`); - console.log(`bob asset balance --------> ${bobBalance}`); -} - -main() - .catch((err: any) => { - const pe = new PrettyError(); - console.error(pe.render(err)); - process.exit(1); - }) - .finally(() => { - console.log("Completed: SETTLEMENT A"); - process.exit(); - }); diff --git a/scripts/cli/src/tests/11_B_settlement.ts b/scripts/cli/src/tests/11_B_settlement.ts deleted file mode 100644 index 97f0f5baa8..0000000000 --- a/scripts/cli/src/tests/11_B_settlement.ts +++ /dev/null @@ -1,133 +0,0 @@ -import * as init from "../util/init"; - -import { createIdentities } from "../helpers/identity_helper"; -import { distributePolyBatch } from "../helpers/poly_helper"; -import { - assetBalance, - issueTokenToDid, - mintingAsset, -} from "../helpers/asset_helper"; -import { addComplianceRequirement } from "../helpers/compliance_manager_helper"; -import * as settlement from "../helpers/settlement_helper"; -import PrettyError from "pretty-error"; - -async function main(): Promise { - const ticker = init.padTicker("11BTICKER1"); - const ticker2 = init.padTicker("11BTICKER2"); - const testEntities = await init.initMain(); - const alice = testEntities[0]; - const bob = await init.generateEntityFromUri("11B_bob"); - const charlie = await init.generateEntityFromUri("11B_charlie"); - const dave = await init.generateEntityFromUri("11B_dave"); - const eve = await init.generateEntityFromUri("11B_eve"); - const aliceDid = await init.keyToIdentityIds(alice.publicKey); - const bobDid = (await createIdentities(alice, [bob]))[0]; - const charlieDid = (await createIdentities(alice, [charlie]))[0]; - const daveDid = (await createIdentities(alice, [dave]))[0]; - const eveDid = (await createIdentities(alice, [eve]))[0]; - console.log("DIDs Created"); - await distributePolyBatch( - alice, - [bob, charlie, dave, eve], - init.transferAmount - ); - console.log("POLY Distributed"); - await issueTokenToDid(alice, ticker, 1000000, null); - await issueTokenToDid(bob, ticker2, 1000000, null); - console.log("Assets Created"); - await addComplianceRequirement(alice, ticker); - await addComplianceRequirement(bob, ticker2); - console.log("Compliance Rules Added"); - - let aliceBalance = await assetBalance(ticker, aliceDid); - let bobBalance = await assetBalance(ticker, bobDid); - let charlieBalance = await assetBalance(ticker, charlieDid); - let daveBalance = await assetBalance(ticker, daveDid); - let eveBalance = await assetBalance(ticker, eveDid); - console.log("Asset balances generated"); - - console.log("Balance for Alice Asset (Before)"); - console.log(`alice asset balance --------> ${aliceBalance}`); - console.log(`bob asset balance --------> ${bobBalance}`); - console.log(`charlie asset balance --------> ${charlieBalance}`); - console.log(`dave asset balance --------> ${daveBalance}`); - console.log(`eve asset balance --------> ${eveBalance}`); - console.log(" "); - - aliceBalance = await assetBalance(ticker2, aliceDid); - bobBalance = await assetBalance(ticker2, bobDid); - charlieBalance = await assetBalance(ticker2, charlieDid); - daveBalance = await assetBalance(ticker2, daveDid); - eveBalance = await assetBalance(ticker2, eveDid); - - console.log("Balance for Bob's Asset (Before)"); - console.log(`alice asset balance --------> ${aliceBalance}`); - console.log(`bob asset balance --------> ${bobBalance}`); - console.log(`charlie asset balance --------> ${charlieBalance}`); - console.log(`dave asset balance --------> ${daveBalance}`); - console.log(`eve asset balance --------> ${eveBalance}`); - console.log(" "); - - const venueCounter = await settlement.createVenue(alice); - let instructionCounter = await settlement.addGroupInstruction( - alice, - venueCounter, - [aliceDid, bobDid, charlieDid, daveDid, eveDid], - ticker, - ticker2, - 100 - ); - - await settlement.affirmInstruction(alice, instructionCounter, aliceDid, 4); - await settlement.affirmInstruction(bob, instructionCounter, bobDid, 1); - await settlement.affirmInstruction( - charlie, - instructionCounter, - charlieDid, - 0 - ); - await settlement.affirmInstruction(dave, instructionCounter, daveDid, 0); - //await settlement.rejectInstruction(eve, instructionCounter); - await settlement.affirmInstruction(eve, instructionCounter, eveDid, 0); - - // Wait for settlement to be executed - happens in the next block - await init.waitBlocks(2); - - aliceBalance = await assetBalance(ticker, aliceDid); - bobBalance = await assetBalance(ticker, bobDid); - charlieBalance = await assetBalance(ticker, charlieDid); - daveBalance = await assetBalance(ticker, daveDid); - eveBalance = await assetBalance(ticker, eveDid); - - console.log("Balance for Alice Asset (After)"); - console.log(`alice asset balance --------> ${aliceBalance}`); - console.log(`bob asset balance --------> ${bobBalance}`); - console.log(`charlie asset balance --------> ${charlieBalance}`); - console.log(`dave asset balance --------> ${daveBalance}`); - console.log(`eve asset balance --------> ${eveBalance}`); - console.log(" "); - - aliceBalance = await assetBalance(ticker2, aliceDid); - bobBalance = await assetBalance(ticker2, bobDid); - charlieBalance = await assetBalance(ticker2, charlieDid); - daveBalance = await assetBalance(ticker2, daveDid); - eveBalance = await assetBalance(ticker2, eveDid); - - console.log("Balance for Bob's ASSET (After)"); - console.log(`alice asset balance --------> ${aliceBalance}`); - console.log(`bob asset balance --------> ${bobBalance}`); - console.log(`charlie asset balance --------> ${charlieBalance}`); - console.log(`dave asset balance --------> ${daveBalance}`); - console.log(`eve asset balance --------> ${eveBalance}`); -} - -main() - .catch((err: any) => { - const pe = new PrettyError(); - console.error(pe.render(err)); - process.exit(1); - }) - .finally(() => { - console.log("Completed: SETTLEMENT B"); - process.exit(); - }); diff --git a/scripts/cli/src/tests/12_external_agents.ts b/scripts/cli/src/tests/12_external_agents.ts deleted file mode 100644 index 0fcda8563f..0000000000 --- a/scripts/cli/src/tests/12_external_agents.ts +++ /dev/null @@ -1,123 +0,0 @@ -import { - initMain, - transferAmount, - keyToIdentityIds, - generateEntityFromUri, - padTicker, - sendTx, - ApiSingleton, - waitNextBlock, -} from "../util/init"; -import { createIdentities } from "../helpers/identity_helper"; -import { issueTokenToDid } from "../helpers/asset_helper"; -import { distributePolyBatch } from "../helpers/poly_helper"; -import { - createGroup, - setGroupPermissions, - acceptBecomeAgent, - nextAgId, - abdicate, - removeAgent, - changeGroup, -} from "../helpers/external_agent_helper"; -import { ExtrinsicPermissions } from "../types"; -import PrettyError from "pretty-error"; -import { - addInstruction, - affirmInstruction, - createVenue, -} from "../helpers/settlement_helper"; -import { addComplianceRequirement } from "../helpers/compliance_manager_helper"; - -async function main(): Promise { - const api = await ApiSingleton.getInstance(); - const testEntities = await initMain(); - const alice = testEntities[0]; - const aliceDid = await keyToIdentityIds(alice.publicKey); - const bob = await generateEntityFromUri("12_bob"); - const dave = await generateEntityFromUri("12_dave"); - const [bobDid, daveDid] = await createIdentities(alice, [bob, dave]); - let extrinsics: ExtrinsicPermissions = { These: [] }; - console.log("Identities Created"); - await distributePolyBatch(alice, [bob, dave], transferAmount * 10); - const ticker = padTicker("12TICKER"); - const raisingTicker = padTicker("12TICKERRAIS"); - await issueTokenToDid(alice, ticker, 1000000, null); - console.log("EA: Group"); - await createGroup(alice, ticker, extrinsics); - - let agId = await nextAgId(ticker); - console.log("EA: Group Permissions"); - await setGroupPermissions(alice, ticker, agId, extrinsics); - console.log("EA: Become Agent"); - await acceptBecomeAgent(bob, bobDid, alice, ticker, { Full: "" }); - await acceptBecomeAgent(dave, daveDid, alice, ticker, { Full: "" }); - await addComplianceRequirement(alice, ticker); - - await abdicate(alice, ticker); - - console.log("EA: Accept Agent"); - await acceptBecomeAgent(alice, aliceDid, bob, ticker, { Full: "" }); - await removeAgent(alice, ticker, bobDid); - console.log("EA: Group"); - await createGroup(alice, ticker, extrinsics); - agId = await nextAgId(ticker); - await setGroupPermissions(alice, ticker, agId, extrinsics); - console.log("EA: Change Group"); - await changeGroup(alice, ticker, aliceDid, { Full: "" }); - - // External agent authorized extrinsics - - let venueCounter = await createVenue(alice); - let intructionCounterAB = await addInstruction( - alice, - venueCounter, - aliceDid, - daveDid, - ticker, - 1000 - ); - - await affirmInstruction(alice, intructionCounterAB, aliceDid, 1); - await affirmInstruction(dave, intructionCounterAB, daveDid, 0); - await waitNextBlock(); - - await sendTx( - dave, - api.tx.settlement.createVenue("", [dave.publicKey], "Sto") - ); - venueCounter++; - await sendTx( - dave, - api.tx.sto.createFundraiser( - { did: daveDid, kind: { Default: null } }, - ticker, - { did: daveDid, kind: { Default: null } }, - raisingTicker, - [{ total: 3, price: 4 }], - venueCounter, - null, - null, - 0, - "mySto" - ) - ); - await sendTx(dave, api.tx.sto.freezeFundraiser(ticker, 0)); - await sendTx(dave, api.tx.sto.unfreezeFundraiser(ticker, 0)); - await sendTx( - dave, - api.tx.sto.modifyFundraiserWindow(ticker, 0, Date.now() as any, null) - ); - await sendTx(dave, api.tx.sto.stop(ticker, 0)); -} - -main() - .catch((err: any) => { - const pe = new PrettyError(); - console.error(pe.render(err)); - process.exit(1); - }) - .finally(() => { - console.log("Completed: EXTERNAL AGENTS"); - process.exit(); - }); diff --git a/scripts/cli/src/tests/13_corporate_actions.ts b/scripts/cli/src/tests/13_corporate_actions.ts deleted file mode 100644 index 744bb43bb3..0000000000 --- a/scripts/cli/src/tests/13_corporate_actions.ts +++ /dev/null @@ -1,113 +0,0 @@ -import { - generateKeys, - transferAmount, - initMain, - keyToIdentityIds, - generateEntityFromUri, - padTicker, -} from "../util/init"; -import PrettyError from "pretty-error"; -import { - changeDefaultTargetIdentitites, - changeWithholdingTax, - claimDistribution, - createDistribution, - initiateCorporateAction, -} from "../helpers/corporate_actions_helper"; -import { - authorizeJoinToIdentities, - createIdentities, -} from "../helpers/identity_helper"; -import { assetBalance, issueTokenToDid } from "../helpers/asset_helper"; -import { distributePolyBatch } from "../helpers/poly_helper"; -import { addSecondaryKeys } from "../helpers/key_management_helper"; -import { addComplianceRequirement } from "../helpers/compliance_manager_helper"; -import { - addInstruction, - affirmInstruction, - createVenue, -} from "../helpers/settlement_helper"; - -async function main(): Promise { - const testEntities = await initMain(); - const alice = testEntities[0]; - const aliceDid = await keyToIdentityIds(alice.publicKey); - const bob = await generateEntityFromUri("13_bob"); - const bobDid = (await createIdentities(alice, [bob]))[0]; - const primaryDevSeed = "13_primary"; - const secondaryDevSeed = "13_secondary"; - const primaryKeys = await generateKeys(1, primaryDevSeed); - const secondaryKeys = await generateKeys(1, secondaryDevSeed); - await createIdentities(alice, primaryKeys); - - const ticker = padTicker("13TICKER"); - const earnedTicker = padTicker("13EARNED"); - - await distributePolyBatch(alice, [primaryKeys[0]], transferAmount); - await addSecondaryKeys(primaryKeys, secondaryKeys); - await authorizeJoinToIdentities(secondaryKeys, primaryKeys); - await distributePolyBatch(alice, [secondaryKeys[0], bob], transferAmount); - - console.log("Distributing tokens"); - await issueTokenToDid(alice, ticker, 1000000000, null); - await issueTokenToDid(alice, earnedTicker, 20000000000, null); - - console.log("adding compliance requirement"); - await addComplianceRequirement(alice, ticker); - await addComplianceRequirement(alice, earnedTicker); - - console.log("transfering token to Bob"); - let venueCounter = await createVenue(alice); - let intructionCounterAB = await addInstruction( - alice, - venueCounter, - aliceDid, - bobDid, - ticker, - 100000000 - ); - console.log("affirming transfer"); - await affirmInstruction(alice, intructionCounterAB, aliceDid, 1); - await affirmInstruction(bob, intructionCounterAB, bobDid, 0); - - console.log("changing default target and taxes for corporate action"); - await changeDefaultTargetIdentitites(alice, ticker, [bob], "include"); - await changeWithholdingTax(alice, ticker, 15); - - await initiateCorporateAction( - alice, - ticker, - "PredictableBenefit", - "100", - { existing: 1 }, - "Regular dividend", - null, - null, - null - ); - - console.log("creating distribution"); - await createDistribution( - alice, - ticker, - "0", - null, - earnedTicker, - 1000000, - 2000000000, - null - ); - - await claimDistribution(bob, ticker, 0); -} - -main() - .catch((err: any) => { - const pe = new PrettyError(); - console.error(pe.render(err)); - process.exit(1); - }) - .finally(() => { - console.log("Completed: CORPORATE_ACTIONS"); - process.exit(); - }); diff --git a/scripts/cli/src/tests/14_investment.ts b/scripts/cli/src/tests/14_investment.ts deleted file mode 100644 index 4921a3a531..0000000000 --- a/scripts/cli/src/tests/14_investment.ts +++ /dev/null @@ -1,120 +0,0 @@ -import { - initMain, - transferAmount, - keyToIdentityIds, - generateEntityFromUri, - padTicker, - sendTx, - ApiSingleton, - waitNextBlock, -} from "../util/init"; -import { createIdentities } from "../helpers/identity_helper"; -import { issueTokenToDid } from "../helpers/asset_helper"; -import { distributePolyBatch } from "../helpers/poly_helper"; -import { - createGroup, - setGroupPermissions, - acceptBecomeAgent, - nextAgId, - abdicate, - removeAgent, - changeGroup, -} from "../helpers/external_agent_helper"; -import { ExtrinsicPermissions } from "../types"; -import PrettyError from "pretty-error"; -import { - addInstruction, - affirmInstruction, - createVenue, -} from "../helpers/settlement_helper"; -import { addComplianceRequirement } from "../helpers/compliance_manager_helper"; - -async function main(): Promise { - const api = await ApiSingleton.getInstance(); - const testEntities = await initMain(); - const alice = testEntities[0]; - const aliceDid = await keyToIdentityIds(alice.publicKey); - const bob = await generateEntityFromUri("14_bob"); - const dave = await generateEntityFromUri("14_dave"); - const [bobDid, daveDid] = await createIdentities(alice, [bob, dave]); - - console.log("Identities Created"); - await distributePolyBatch(alice, [bob, dave], transferAmount * 10); - const ticker = padTicker("14TICKER"); - const raisingTicker = padTicker("14TICKERRAIS"); - await issueTokenToDid(alice, ticker, 1000000, null); - await issueTokenToDid(dave, raisingTicker, 1000000, null); - - await addComplianceRequirement(alice, ticker); - await addComplianceRequirement(dave, raisingTicker); - - let venueCounter = await createVenue(dave); - let intructionCounterAB = await addInstruction( - dave, - venueCounter, - daveDid, - bobDid, - raisingTicker, - 1000 - ); - - await affirmInstruction(dave, intructionCounterAB, daveDid, 1); - await affirmInstruction(bob, intructionCounterAB, bobDid, 0); - await waitNextBlock(); - - await sendTx( - alice, - api.tx.settlement.createVenue("", [alice.publicKey], "Sto") - ); - venueCounter++; - await sendTx( - alice, - api.tx.sto.createFundraiser( - { did: aliceDid, kind: { Default: null } }, - ticker, - { did: aliceDid, kind: { Default: null } }, - raisingTicker, - [{ total: 3000, price: 4 }], - venueCounter, - null, - null, - 0, - "mySto" - ) - ); - await sendTx( - dave, - api.tx.sto.invest( - { did: daveDid, kind: { Default: null } }, - { did: daveDid, kind: { Default: null } }, - ticker, - 0, - 40, - null, - null - ) - ); - await sendTx( - bob, - api.tx.sto.invest( - { did: bobDid, kind: { Default: null } }, - { did: bobDid, kind: { Default: null } }, - ticker, - 0, - 10, - null, - null - ) - ); -} - -main() - .catch((err: any) => { - const pe = new PrettyError(); - console.error(pe.render(err)); - process.exit(1); - }) - .finally(() => { - console.log("Completed: INVESTMENTS"); - process.exit(); - }); diff --git a/scripts/cli/src/tests/15_portfolio.ts b/scripts/cli/src/tests/15_portfolio.ts deleted file mode 100644 index 95f5f247cc..0000000000 --- a/scripts/cli/src/tests/15_portfolio.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { - initMain, - transferAmount, - keyToIdentityIds, - generateEntityFromUri, - padTicker, - sendTx, - ApiSingleton, -} from "../util/init"; -import { createIdentities } from "../helpers/identity_helper"; -import { issueTokenToDid } from "../helpers/asset_helper"; -import { distributePolyBatch } from "../helpers/poly_helper"; -import PrettyError from "pretty-error"; -import { addComplianceRequirement } from "../helpers/compliance_manager_helper"; -import { createTable } from "../util/sqlite3"; -import { - forceNewEra, - unbond, - nominate, - checkEraElectionClosed, -} from "../helpers/staking_helper"; - -async function main(): Promise { - createTable(); - const api = await ApiSingleton.getInstance(); - const testEntities = await initMain(); - const alice = testEntities[0]; - const bob = testEntities[4]; - await keyToIdentityIds(alice.publicKey); - const bobDid = await keyToIdentityIds(bob.publicKey); - const dave = await generateEntityFromUri("15_dave"); - const dave2 = await generateEntityFromUri("15_dave2"); - const [daveDid] = await createIdentities(alice, [dave]); - - console.log("Identities Created"); - await distributePolyBatch(alice, [bob, dave], transferAmount * 10); - - // Staking - await sendTx( - dave, - api.tx.staking.bond(dave.publicKey, 1000000, { Staked: null }) - ); - await sendTx(dave, api.tx.staking.nominate([bob.publicKey])); - console.log("Nominated validators"); - - await forceNewEra(alice); - console.log("New era, rewards paid out"); - - // SecondaryKey - await sendTx( - dave, - api.tx.identity.addAuthorization( - { Account: dave2.publicKey }, - { JoinIdentity: { Whole: null } }, - null - ) - ); - console.log("Added JoinIdentity authorization"); - const authorization = ( - await api.query.identity.authorizations.entries({ - Account: dave2.publicKey, - }) - )[0][1].unwrap().authId; - await sendTx(dave2, api.tx.identity.joinIdentityAsKey(authorization)); - - console.log("Portfolio: TrustedDefaultClaimIssuerAdded"); - const ticker = padTicker("15TICKER"); - await issueTokenToDid(dave, ticker, 100000, null); - await addComplianceRequirement(dave, ticker); - await sendTx( - dave, - api.tx.complianceManager.addDefaultTrustedClaimIssuer(ticker, { - issuer: bobDid, - trustedFor: { Any: null }, - }) - ); - - console.log("Portfolio: ClaimAdded"); - await sendTx( - bob, - api.tx.identity.addClaim(daveDid, { Accredited: { Ticker: ticker } }, null) - ); - - console.log("Portfolio: ConfigureAdvancedTokenRules"); - await sendTx( - dave, - api.tx.statistics.addTransferManager(ticker, { CountTransferManager: 10 }) - ); - - console.log("Portfolio: PortfolioCreated"); - await sendTx(dave, api.tx.portfolio.createPortfolio("foobar")); - - console.log("Portfolio: AddAssetToAPortfolio"); - const portfolioId = await api.query.portfolio.nameToNumber(daveDid, "foobar"); - - await sendTx( - dave, - api.tx.portfolio.movePortfolioFunds( - { did: daveDid, kind: { Default: null } }, - { did: daveDid, kind: { User: portfolioId } }, - [{ amount: 10, ticker }] - ) - ); - - console.log( - `Election Status: ${await api.query.staking.eraElectionStatus()}` - ); - await checkEraElectionClosed(); - console.log( - `Election Status: ${await api.query.staking.eraElectionStatus()}` - ); - // AddAPortfolioManager is not possible because of old permission format - console.log("Portfolio: StopStakingAPortion"); - await unbond(dave, 100); - - console.log("Portfolio: StartStakingANewOperator"); - await nominate(dave, alice.publicKey); -} - -main() - .catch((err: any) => { - const pe = new PrettyError(); - console.error(pe.render(err)); - process.exit(1); - }) - .finally(() => { - console.log("Completed: Portfolio Test"); - process.exit(); - }); diff --git a/scripts/cli/src/tests/16_relayer.ts b/scripts/cli/src/tests/16_relayer.ts deleted file mode 100644 index 5097bc4831..0000000000 --- a/scripts/cli/src/tests/16_relayer.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { generateEntityFromUri, initMain, transferAmount } from "../util/init"; -import { createIdentities, getAuthId } from "../helpers/identity_helper"; -import { distributePoly } from "../helpers/poly_helper"; -import * as relayer from "../helpers/relayer_helper"; -import PrettyError from "pretty-error"; - -async function main(): Promise { - const testEntities = await initMain(); - const alice = testEntities[0]; - const bob = await generateEntityFromUri("16_bob"); - await createIdentities(alice, [bob]); - await distributePoly(alice, bob, transferAmount); - console.log("Set Paying Key"); - await relayer.setPayingKey(alice, bob.publicKey, 100000); - const authId = await getAuthId(); - console.log("Accept Paying Key"); - await relayer.acceptPayingKey(bob, authId.toNumber()); - console.log("Update POLYX Limit"); - await relayer.updatePolyxLimit(alice, bob.publicKey, 500000); - console.log("Increase POLYX Limit"); - await relayer.increasePolyxLimit(alice, bob.publicKey, 70000); - console.log("Decrease POLYX Limit"); - await relayer.decreasePolyxLimit(alice, bob.publicKey, 30000); - console.log("Remove Paying Key"); - await relayer.removePayingKey(alice, bob, "userKey"); -} - -main() - .catch((err: any) => { - const pe = new PrettyError(); - console.error(pe.render(err)); - process.exit(1); - }) - .finally(() => process.exit()); diff --git a/scripts/cli/src/tests/17_itn_rewards.ts b/scripts/cli/src/tests/17_itn_rewards.ts deleted file mode 100644 index 3c93902ea1..0000000000 --- a/scripts/cli/src/tests/17_itn_rewards.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { initMain, generateEntityFromUri } from "../util/init"; -import { createIdentities } from "../helpers/identity_helper"; -import { claimItnReward, setItnRewardStatus } from "../helpers/rewards_helper"; -import { createTable } from "../util/sqlite3"; -import PrettyError from "pretty-error"; -import assert from "assert"; - -async function main(): Promise { - createTable(); - const testEntities = await initMain(); - const alice = testEntities[0]; - const dave = await generateEntityFromUri("17_dave"); - const charlie = await generateEntityFromUri("17_charlie"); - const dave2 = await generateEntityFromUri("17_dave2"); - console.log("Create Identity"); - await createIdentities(alice, [dave2]); - console.log("Set ITN Rewards Claim Status"); - await setItnRewardStatus(alice, dave, { Unclaimed: 2_000_000 }); - console.log("Claim ITN Rewards"); - await claimItnReward(dave, dave2); - console.log("Claim ITN Reward that doesn't exist"); - await assert.rejects(async () => { - await claimItnReward(charlie, dave2); - }); - console.log("Set ITN Rewards Claim Status for Charlie"); - await setItnRewardStatus(alice, charlie, { Unclaimed: 2_000_000 }); - console.log("Claim Charlie ITN Reward with Dave"); - await assert.rejects(async () => { - await claimItnReward(dave, charlie); - }); -} - -main() - .catch((err: any) => { - const pe = new PrettyError(); - console.error(pe.render(err)); - process.exit(1); - }) - .finally(() => { - console.log("Completed: ITN Rewards Test"); - process.exit(); - }); diff --git a/scripts/cli/src/tests/8_asset_minting.ts b/scripts/cli/src/tests/8_asset_minting.ts deleted file mode 100644 index ffd36e33c8..0000000000 --- a/scripts/cli/src/tests/8_asset_minting.ts +++ /dev/null @@ -1,37 +0,0 @@ -import * as init from "../util/init"; -import { createIdentities, addClaimsToDids } from "../helpers/identity_helper"; -import { distributePoly } from "../helpers/poly_helper"; -import { issueTokenToDid, mintingAsset } from "../helpers/asset_helper"; -import { addComplianceRequirement } from "../helpers/compliance_manager_helper"; -import PrettyError from "pretty-error"; - -async function main(): Promise { - const ticker = init.padTicker("8TICKER"); - const testEntities = await init.initMain(); - const alice = testEntities[0]; - const primaryDevSeed = "8_primary"; - const primaryKey = (await init.generateKeys(1, primaryDevSeed))[0]; - let issuerDid = await createIdentities(alice, [primaryKey]); - await distributePoly(alice, primaryKey, init.transferAmount); - await issueTokenToDid(primaryKey, ticker, 1000000, "first"); - await addClaimsToDids( - primaryKey, - issuerDid[0], - "Exempted", - { Ticker: ticker }, - null - ); - await addComplianceRequirement(primaryKey, ticker); - await mintingAsset(primaryKey, ticker); -} - -main() - .catch((err: any) => { - const pe = new PrettyError(); - console.error(pe.render(err)); - process.exit(1); - }) - .finally(() => { - console.log("Completed: ASSET MINTING"); - process.exit(); - }); diff --git a/scripts/cli/src/tests/9_bridge_transfer.ts b/scripts/cli/src/tests/9_bridge_transfer.ts deleted file mode 100644 index 07190a4b8d..0000000000 --- a/scripts/cli/src/tests/9_bridge_transfer.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { initMain, sleep } from "../util/init"; -import { - bridgeTransfer, - freezeTransaction, - unfreezeTransaction, -} from "../helpers/bridge_helper"; -import PrettyError from "pretty-error"; - -async function main(): Promise { - const testEntities = await initMain(); - const relay = testEntities[1]; - const admin = testEntities[2]; - await bridgeTransfer(relay, admin); - await freezeTransaction(admin); - await sleep(5000); - await unfreezeTransaction(admin); -} - -main() - .catch((err: any) => { - const pe = new PrettyError(); - console.error(pe.render(err)); - process.exit(1); - }) - .finally(() => { - console.log("Completed: BRIDGE TRANSFERS"); - process.exit(); - }); \ No newline at end of file diff --git a/scripts/cli/src/types.ts b/scripts/cli/src/types.ts index d51be97203..fa023d2a19 100644 --- a/scripts/cli/src/types.ts +++ b/scripts/cli/src/types.ts @@ -97,8 +97,9 @@ export type DispatchableName = string; export type Expiry = string | object | Uint8Array | null; export type DocumentName = string; export type DocumentUri = string; -export type Signatory = { Identity: IdentityId } | { Account: AccountId }; +export type Signatory = { Identity: IdentityId } | { Account: AccountId | Uint8Array}; export type ItnRewardStatus = { Unclaimed: number } | { Claimed: "" }; +export type venueType = "Other" | "Distribution" | "Sto" | "Exchange" | number | Uint8Array; export type Claim = | { Accredited: Scope } @@ -185,3 +186,8 @@ export type AssetCompliance = { is_paused: Boolean; requirements: ComplianceRequirement[]; }; + +export type PriceTier = { + total: number; + price: number; +} diff --git a/scripts/cli/src/util/init.ts b/scripts/cli/src/util/init.ts index b711c0f98c..bcdaeaec3a 100644 --- a/scripts/cli/src/util/init.ts +++ b/scripts/cli/src/util/init.ts @@ -18,14 +18,14 @@ import path from "path"; import type { AccountId } from "@polkadot/types/interfaces/runtime"; import type { SubmittableExtrinsic } from "@polkadot/api/types"; import type { KeyringPair } from "@polkadot/keyring/types"; -import type { DispatchError } from "@polkadot/types/interfaces"; +import type { DispatchError, EventRecord, AccountInfo, ActiveEraInfo } from "@polkadot/types/interfaces"; import type { ISubmittableResult } from "@polkadot/types/types"; import type { Ticker } from "../types"; import { createIdentities } from "../helpers/identity_helper"; import { distributePoly } from "../helpers/poly_helper"; import type { IdentityId } from "../interfaces"; import { assert } from "chai"; -import { getNonce } from "../util/sqlite3"; +import { Option } from "@polkadot/types-codec"; let block_sizes: Number[] = []; let block_times: Number[] = []; @@ -79,10 +79,12 @@ export async function disconnect() { export async function sleep(ms: number) { return new Promise((resolve) => setTimeout(resolve, ms)); } -const getEra = async () => - (await (await ApiSingleton.getInstance()).query.staking.activeEra()) - .unwrap() - .index.toJSON(); +const getEra = async () => { + const api = await ApiSingleton.getInstance(); + const activeEra = await api.query.staking.activeEra(); + activeEra.unwrap().index.toJSON(); +} + export async function waitNextEra() { const era = await getEra(); while ((await getEra()) === era) { @@ -251,9 +253,7 @@ export async function sendTx( signer: KeyringPair, tx: SubmittableExtrinsic<"promise"> ) { - const nonceObj = { nonce: await getNonce(signer) }; - const result = await sendTransaction(signer, tx, nonceObj); - return result; + return sendTransaction(signer, tx, -1); } export function sendTransaction( @@ -288,9 +288,10 @@ export function sendTransaction( if (dispatchError.isModule) { // known error const mod = dispatchError.asModule; - const { section, name, docs } = mod.registry.findMetaError( - new Uint8Array([mod.index.toNumber(), mod.error.toNumber()]) - ); + const { section, name, docs } = + mod.registry.findMetaError( + new Uint8Array([mod.index.toNumber(), mod.error.toNumber()]) + ); message = `${section}.${name}: ${docs.join(" ")}`; } else if (dispatchError.isBadOrigin) { @@ -334,7 +335,7 @@ export async function signatory(signer: KeyringPair, entity: KeyringPair) { } export function getDefaultPortfolio(did: IdentityId) { - return { did: did, kind: "Default" }; + return { did: did, kind: { Default: ""} }; } export async function getValidCddProvider(alice: KeyringPair) { @@ -375,22 +376,22 @@ export async function getValidCddProvider(alice: KeyringPair) { export async function getExpiries(length: number) { const api = await ApiSingleton.getInstance(); - let blockTime = api.consts.babe.expectedBlockTime; - let bondingDuration = api.consts.staking.bondingDuration; - let sessionPerEra = api.consts.staking.sessionsPerEra; - let session_length = api.consts.babe.epochDuration; - const currentBlockTime = await api.query.timestamp.now(); + let blockTime = (api.consts.babe.expectedBlockTime).toNumber(); + let bondingDuration = (api.consts.staking.bondingDuration).toNumber(); + let sessionPerEra = (api.consts.staking.sessionsPerEra).toNumber(); + let session_length = (api.consts.babe.epochDuration).toNumber(); + const currentBlockTime = (await api.query.timestamp.now()).toNumber(); const bondingTime = - bondingDuration.toNumber() * - sessionPerEra.toNumber() * - session_length.toNumber(); - let expiryTime = currentBlockTime.toNumber() + bondingTime * 1000; + bondingDuration * + sessionPerEra * + session_length; + let expiryTime = currentBlockTime + bondingTime * 1000; let expiries = []; for (let i = 1; i <= length; i++) { // Providing 15 block as the extra time - let temp = expiryTime + i * 5 * blockTime.toNumber(); + let temp = expiryTime + i * 5 * blockTime; expiries.push(temp); } return expiries; diff --git a/scripts/cli/src/util/sqlite3.ts b/scripts/cli/src/util/sqlite3.ts deleted file mode 100644 index cfeaeb3a90..0000000000 --- a/scripts/cli/src/util/sqlite3.ts +++ /dev/null @@ -1,38 +0,0 @@ -import sql from "sqlite3"; -import type { KeyringPair } from "@polkadot/keyring/types"; - -const sql3 = sql.verbose(); -// Setting up a database for storing data. -const db = new sql3.Database("database.db"); - -export function createTable() { - db.run( - "CREATE TABLE IF NOT EXISTS accounts ( address TEXT PRIMARY KEY, nonce INT DEFAULT 0 )" - ); -} - -export async function getNonce(signer: KeyringPair) { - return new Promise((resolve, reject) => { - db.run( - "INSERT INTO accounts(address) VALUES($address) ON CONFLICT(address) DO UPDATE SET nonce=nonce+1", - { $address: signer.address }, - (runErr) => { - if (runErr) { - reject("Couldn't get next nonce"); - } else { - db.get( - "SELECT address, nonce FROM accounts WHERE address = $address", - { $address: signer.address }, - (getErr, row) => { - if (getErr) { - reject(getErr); - } else { - resolve(row.nonce); - } - } - ); - } - } - ); - }); -} From 1cf5c35ffadc77a872cbcde6cdada59d575874dd Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Tue, 5 Apr 2022 21:20:20 +0800 Subject: [PATCH 37/53] MESH-1768 custom asset metadata (#1218) * Move `Url` to primitives crate. * Asset metadata support. * Fix unit-tests. * Add some unit-tests. * Add asset metadata events. * Add docs. * Add limit checks. * Add tests. * Add missing schema types. * Fix schema and polkadot.js issue. * Update weights. * Add asset metadata type definition example. * Add example Asset Metadata Schema. * Cargo fmt * Code cleanup. * Add Asset::register_and_set_local_metadata() call. * Update weights. Co-authored-by: Adam Dossa --- Cargo.lock | 9 + Cargo.toml | 1 + pallets/asset/src/benchmarking.rs | 77 ++- pallets/asset/src/lib.rs | 378 +++++++++++ pallets/common/src/traits/asset.rs | 35 +- pallets/pips/src/lib.rs | 7 +- pallets/runtime/ci/src/runtime.rs | 3 + pallets/runtime/common/src/runtime.rs | 3 + pallets/runtime/develop/src/runtime.rs | 3 + pallets/runtime/mainnet/src/runtime.rs | 3 + pallets/runtime/testnet/src/runtime.rs | 3 + .../runtime/tests/src/asset_metadata_test.rs | 505 +++++++++++++++ pallets/runtime/tests/src/lib.rs | 2 + pallets/runtime/tests/src/pips_test.rs | 4 +- pallets/runtime/tests/src/storage.rs | 3 + pallets/weights/src/pallet_asset.rs | 26 + polymesh_schema.json | 27 + primitives/Cargo.toml | 3 +- primitives/asset-metadata/Cargo.toml | 20 + primitives/asset-metadata/README.md | 4 + primitives/asset-metadata/example_schema.json | 20 + .../asset-metadata/src/bin/dump_specs.rs | 30 + primitives/asset-metadata/src/lib.rs | 69 ++ primitives/src/asset_metadata.rs | 227 +++++++ primitives/src/lib.rs | 8 + scripts/cli/polymesh-meta.json | 2 +- .../cli/src/interfaces/augment-api-consts.ts | 3 + .../cli/src/interfaces/augment-api-errors.ts | 28 + .../cli/src/interfaces/augment-api-events.ts | 22 +- .../cli/src/interfaces/augment-api-query.ts | 42 +- scripts/cli/src/interfaces/augment-api-rpc.ts | 4 +- scripts/cli/src/interfaces/augment-api-tx.ts | 70 +- scripts/cli/src/interfaces/augment-types.ts | 7 +- scripts/cli/src/interfaces/lookup.ts | 588 +++++++++-------- scripts/cli/src/interfaces/types-lookup.ts | 596 ++++++++++-------- 35 files changed, 2279 insertions(+), 553 deletions(-) create mode 100644 pallets/runtime/tests/src/asset_metadata_test.rs create mode 100644 primitives/asset-metadata/Cargo.toml create mode 100644 primitives/asset-metadata/README.md create mode 100644 primitives/asset-metadata/example_schema.json create mode 100644 primitives/asset-metadata/src/bin/dump_specs.rs create mode 100644 primitives/asset-metadata/src/lib.rs create mode 100644 primitives/src/asset_metadata.rs diff --git a/Cargo.lock b/Cargo.lock index c8ee6205ec..fcfc2d1ff4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -148,6 +148,15 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e22d1f4b888c298a027c99dc9048015fac177587de20fc30232a057dfbe24a21" +[[package]] +name = "asset-metadata" +version = "0.1.0" +dependencies = [ + "parity-scale-codec 2.3.1", + "polymesh-primitives", + "scale-info", +] + [[package]] name = "async-channel" version = "1.6.1" diff --git a/Cargo.toml b/Cargo.toml index 6173ade362..c275a249ba 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -154,6 +154,7 @@ members = [ "pallets/test-utils", "pallets/weights", "primitives", + "primitives/asset-metadata", "rpc", "rpc/runtime-api", "utils/permissions", diff --git a/pallets/asset/src/benchmarking.rs b/pallets/asset/src/benchmarking.rs index 5f42e3a31e..cc1f495909 100644 --- a/pallets/asset/src/benchmarking.rs +++ b/pallets/asset/src/benchmarking.rs @@ -25,7 +25,13 @@ use polymesh_common_utilities::{ }; //use polymesh_contracts::ExtensionInfo; use polymesh_primitives::{ - asset::AssetName, ticker::TICKER_LEN, AuthorizationData, Signatory, Ticker, + asset::AssetName, + asset_metadata::{ + AssetMetadataDescription, AssetMetadataKey, AssetMetadataName, AssetMetadataSpec, + AssetMetadataValue, AssetMetadataValueDetail, + }, + ticker::TICKER_LEN, + AuthorizationData, Signatory, Ticker, Url, }; //use polymesh_primitives::{ExtensionAttributes, SmartExtension}; use sp_io::hashing::keccak_256; @@ -47,6 +53,41 @@ pub fn make_document() -> Document { } } +/// Make metadata name for benchmarking. +fn make_metadata_name() -> AssetMetadataName { + AssetMetadataName(vec![b'n'; T::AssetMetadataNameMaxLength::get() as usize]) +} + +/// Make metadata value for benchmarking. +fn make_metadata_value() -> AssetMetadataValue { + AssetMetadataValue(vec![b'v'; T::AssetMetadataValueMaxLength::get() as usize]) +} + +/// Make metadata spec for benchmarking. +fn make_metadata_spec() -> AssetMetadataSpec { + AssetMetadataSpec { + url: Some(Url(vec![b'u'; T::MaxLen::get() as usize])), + description: Some(AssetMetadataDescription(vec![ + b'd'; + T::MaxLen::get() as usize + ])), + type_def: Some(vec![b'x'; T::AssetMetadataTypeDefMaxLength::get() as usize]), + } +} + +/// Register a global metadata type for benchmarking. +fn register_metadata_global_name() -> AssetMetadataKey { + let root = RawOrigin::Root.into(); + let name = make_metadata_name::(); + let spec = make_metadata_spec::(); + + Module::::register_asset_metadata_global_type(root, name, spec) + .expect("`register_asset_metadata_global_type` failed"); + + let key = Module::::asset_metadata_next_global_key(); + AssetMetadataKey::Global(key) +} + fn make_default_reg_config() -> TickerRegistrationConfig { TickerRegistrationConfig { max_ticker_length: 8, @@ -62,7 +103,7 @@ fn make_classic_ticker(eth_owner: ethereum::EthereumAddress, ticker: is_contract: false, }; let reg_config = make_default_reg_config::(); - let root = frame_system::RawOrigin::Root.into(); + let root = RawOrigin::Root.into(); >::reserve_classic_ticker(root, classic_ticker, 0u128.into(), reg_config) .expect("`reserve_classic_ticker` failed"); @@ -456,4 +497,36 @@ benchmarks! { verify { assert_ne!(id, Module::::custom_type_id_seq()); } + + set_asset_metadata { + let (owner, ticker) = owned_ticker::(); + let key = register_metadata_global_name::(); + let value = make_metadata_value::(); + let details = Some(AssetMetadataValueDetail::default()); + }: _(owner.origin, ticker, key, value, details) + + set_asset_metadata_details { + let (owner, ticker) = owned_ticker::(); + let key = register_metadata_global_name::(); + let details = AssetMetadataValueDetail::default(); + }: _(owner.origin, ticker, key, details) + + register_and_set_local_asset_metadata { + let (owner, ticker) = owned_ticker::(); + let name = make_metadata_name::(); + let spec = make_metadata_spec::(); + let value = make_metadata_value::(); + let details = Some(AssetMetadataValueDetail::default()); + }: _(owner.origin, ticker, name, spec, value, details) + + register_asset_metadata_local_type { + let (owner, ticker) = owned_ticker::(); + let name = make_metadata_name::(); + let spec = make_metadata_spec::(); + }: _(owner.origin, ticker, name, spec) + + register_asset_metadata_global_type { + let name = make_metadata_name::(); + let spec = make_metadata_spec::(); + }: _(RawOrigin::Root, name, spec) } diff --git a/pallets/asset/src/lib.rs b/pallets/asset/src/lib.rs index e4918686fc..200d633b82 100644 --- a/pallets/asset/src/lib.rs +++ b/pallets/asset/src/lib.rs @@ -50,6 +50,10 @@ //! - `remove_documents` - Remove documents for a given token. //! - `set_funding_round` - Sets the name of the current funding round. //! - `update_identifiers` - Updates the asset identifiers. +//! - `set_asset_metadata` - Set asset metadata value. +//! - `set_asset_metadata_details` - Set asset metadata value details (expire, lock status). +//! - `register_asset_metadata_local_type` - Register asset metadata local type. +//! - `register_asset_metadata_global_type` - Register asset metadata global type. //! //! ### Public Functions //! @@ -107,6 +111,10 @@ use polymesh_common_utilities::{ use polymesh_primitives::{ agent::AgentGroup, asset::{AssetName, AssetType, CustomAssetTypeId, FundingRoundName, GranularCanTransferResult}, + asset_metadata::{ + AssetMetadataGlobalKey, AssetMetadataKey, AssetMetadataLocalKey, AssetMetadataName, + AssetMetadataSpec, AssetMetadataValue, AssetMetadataValueDetail, + }, calendar::CheckpointId, ethereum::{self, EcdsaSignature, EthereumAddress}, extract_auth, @@ -293,6 +301,45 @@ decl_storage! { /// Ticker => bool. pub DisableInvestorUniqueness get(fn disable_iu): map hasher(blake2_128_concat) Ticker => bool; + /// Metatdata values for an asset. + pub AssetMetadataValues get(fn asset_metadata_values): + double_map hasher(blake2_128_concat) Ticker, hasher(twox_64_concat) AssetMetadataKey => + Option; + /// Details for an asset's Metadata values. + pub AssetMetadataValueDetails get(fn asset_metadata_value_details): + double_map hasher(blake2_128_concat) Ticker, hasher(twox_64_concat) AssetMetadataKey => + Option>; + + /// Asset Metadata Local Name -> Key. + pub AssetMetadataLocalNameToKey get(fn asset_metadata_local_name_to_key): + double_map hasher(blake2_128_concat) Ticker, hasher(blake2_128_concat) AssetMetadataName => + Option; + /// Asset Metadata Global Name -> Key. + pub AssetMetadataGlobalNameToKey get(fn asset_metadata_global_name_to_key): + map hasher(blake2_128_concat) AssetMetadataName => Option; + + /// Asset Metadata Local Key -> Name. + pub AssetMetadataLocalKeyToName get(fn asset_metadata_local_key_to_name): + double_map hasher(blake2_128_concat) Ticker, hasher(twox_64_concat) AssetMetadataLocalKey => + Option; + /// Asset Metadata Global Key -> Name. + pub AssetMetadataGlobalKeyToName get(fn asset_metadata_global_key_to_name): + map hasher(twox_64_concat) AssetMetadataGlobalKey => Option; + + /// Asset Metadata Local Key specs. + pub AssetMetadataLocalSpecs get(fn asset_metadata_local_specs): + double_map hasher(blake2_128_concat) Ticker, hasher(twox_64_concat) AssetMetadataLocalKey => + Option; + /// Asset Metadata Global Key specs. + pub AssetMetadataGlobalSpecs get(fn asset_metadata_global_specs): + map hasher(twox_64_concat) AssetMetadataGlobalKey => Option; + + /// Next Asset Metadata Local Key. + pub AssetMetadataNextLocalKey get(fn asset_metadata_next_local_key): + map hasher(blake2_128_concat) Ticker => AssetMetadataLocalKey; + /// Next Asset Metadata Global Key. + pub AssetMetadataNextGlobalKey get(fn asset_metadata_next_global_key): AssetMetadataGlobalKey; + /// Storage version. StorageVersion get(fn storage_version) build(|_| Version::new(1).unwrap()): Version; } @@ -350,6 +397,10 @@ decl_module! { const AssetNameMaxLength: u32 = T::AssetNameMaxLength::get(); const FundingRoundNameMaxLength: u32 = T::FundingRoundNameMaxLength::get(); + const AssetMetadataNameMaxLength: u32 = T::AssetMetadataNameMaxLength::get(); + const AssetMetadataValueMaxLength: u32 = T::AssetMetadataValueMaxLength::get(); + const AssetMetadataTypeDefMaxLength: u32 = T::AssetMetadataTypeDefMaxLength::get(); + fn on_runtime_upgrade() -> frame_support::weights::Weight { use frame_support::weights::constants::WEIGHT_PER_MICROS; // Keep track of upgrade cost. @@ -817,6 +868,109 @@ decl_module! { ).map(drop) }) } + + /// Set asset metadata value. + /// + /// # Arguments + /// * `origin` is a signer that has permissions to act as an agent of `ticker`. + /// * `ticker` Ticker of the token. + /// * `key` Metadata key. + /// * `value` Metadata value. + /// * `details` Optional Metadata value details (expire, lock status). + /// + /// # Errors + /// * `AssetMetadataKeyIsMissing` if the metadata type key doesn't exist. + /// * `AssetMetadataValueIsLocked` if the metadata value for `key` is locked. + /// * `AssetMetadataValueMaxLengthExceeded` if the metadata value exceeds the maximum length. + /// + /// # Permissions + /// * Agent + /// * Asset + #[weight = ::WeightInfo::set_asset_metadata()] + pub fn set_asset_metadata(origin, ticker: Ticker, key: AssetMetadataKey, value: AssetMetadataValue, detail: Option>) -> DispatchResult { + Self::base_set_asset_metadata(origin, ticker, key, value, detail) + } + + /// Set asset metadata value details (expire, lock status). + /// + /// # Arguments + /// * `origin` is a signer that has permissions to act as an agent of `ticker`. + /// * `ticker` Ticker of the token. + /// * `key` Metadata key. + /// * `details` Metadata value details (expire, lock status). + /// + /// # Errors + /// * `AssetMetadataKeyIsMissing` if the metadata type key doesn't exist. + /// * `AssetMetadataValueIsLocked` if the metadata value for `key` is locked. + /// + /// # Permissions + /// * Agent + /// * Asset + #[weight = ::WeightInfo::set_asset_metadata_details()] + pub fn set_asset_metadata_details(origin, ticker: Ticker, key: AssetMetadataKey, detail: AssetMetadataValueDetail) -> DispatchResult { + Self::base_set_asset_metadata_details(origin, ticker, key, detail) + } + + /// Registers and set local asset metadata. + /// + /// # Arguments + /// * `origin` is a signer that has permissions to act as an agent of `ticker`. + /// * `ticker` Ticker of the token. + /// * `name` Metadata name. + /// * `spec` Metadata type definition. + /// * `value` Metadata value. + /// * `details` Optional Metadata value details (expire, lock status). + /// + /// # Errors + /// * `AssetMetadataLocalKeyAlreadyExists` if a local metadata type with `name` already exists for `ticker`. + /// * `AssetMetadataNameMaxLengthExceeded` if the metadata `name` exceeds the maximum length. + /// * `AssetMetadataTypeDefMaxLengthExceeded` if the metadata `spec` type definition exceeds the maximum length. + /// * `AssetMetadataValueMaxLengthExceeded` if the metadata value exceeds the maximum length. + /// + /// # Permissions + /// * Agent + /// * Asset + #[weight = ::WeightInfo::register_and_set_local_asset_metadata()] + pub fn register_and_set_local_asset_metadata(origin, ticker: Ticker, name: AssetMetadataName, spec: AssetMetadataSpec, value: AssetMetadataValue, detail: Option>) -> DispatchResult { + Self::base_register_and_set_local_asset_metadata(origin, ticker, name, spec, value, detail) + } + + /// Registers asset metadata local type. + /// + /// # Arguments + /// * `origin` is a signer that has permissions to act as an agent of `ticker`. + /// * `ticker` Ticker of the token. + /// * `name` Metadata name. + /// * `spec` Metadata type definition. + /// + /// # Errors + /// * `AssetMetadataLocalKeyAlreadyExists` if a local metadata type with `name` already exists for `ticker`. + /// * `AssetMetadataNameMaxLengthExceeded` if the metadata `name` exceeds the maximum length. + /// * `AssetMetadataTypeDefMaxLengthExceeded` if the metadata `spec` type definition exceeds the maximum length. + /// + /// # Permissions + /// * Agent + /// * Asset + #[weight = ::WeightInfo::register_asset_metadata_local_type()] + pub fn register_asset_metadata_local_type(origin, ticker: Ticker, name: AssetMetadataName, spec: AssetMetadataSpec) -> DispatchResult { + Self::base_register_asset_metadata_local_type(origin, ticker, name, spec) + } + + /// Registers asset metadata global type. + /// + /// # Arguments + /// * `origin` is a signer that has permissions to act as an agent of `ticker`. + /// * `name` Metadata name. + /// * `spec` Metadata type definition. + /// + /// # Errors + /// * `AssetMetadataGlobalKeyAlreadyExists` if a globa metadata type with `name` already exists. + /// * `AssetMetadataNameMaxLengthExceeded` if the metadata `name` exceeds the maximum length. + /// * `AssetMetadataTypeDefMaxLengthExceeded` if the metadata `spec` type definition exceeds the maximum length. + #[weight = ::WeightInfo::register_asset_metadata_global_type()] + pub fn register_asset_metadata_global_type(origin, name: AssetMetadataName, spec: AssetMetadataSpec) -> DispatchResult { + Self::base_register_asset_metadata_global_type(origin, name, spec) + } } } @@ -888,6 +1042,20 @@ decl_error! { InvestorUniquenessClaimNotAllowed, /// Invalid `CustomAssetTypeId`. InvalidCustomAssetTypeId, + /// Maximum length of the asset metadata type name has been exceeded. + AssetMetadataNameMaxLengthExceeded, + /// Maximum length of the asset metadata value has been exceeded. + AssetMetadataValueMaxLengthExceeded, + /// Maximum length of the asset metadata type definition has been exceeded. + AssetMetadataTypeDefMaxLengthExceeded, + /// Asset Metadata key is missing. + AssetMetadataKeyIsMissing, + /// Asset Metadata value is locked. + AssetMetadataValueIsLocked, + /// Asset Metadata Local type already exists for asset. + AssetMetadataLocalKeyAlreadyExists, + /// Asset Metadata Global type already exists. + AssetMetadataGlobalKeyAlreadyExists, } } @@ -1960,6 +2128,216 @@ impl Module { Ok(()) } + fn is_asset_metadata_locked(ticker: Ticker, key: AssetMetadataKey) -> bool { + AssetMetadataValueDetails::::get(ticker, key).map_or(false, |details| { + details.is_locked(>::get()) + }) + } + + fn check_asset_metadata_key_exists(ticker: Ticker, key: AssetMetadataKey) -> bool { + match key { + AssetMetadataKey::Global(key) => AssetMetadataGlobalKeyToName::contains_key(key), + AssetMetadataKey::Local(key) => AssetMetadataLocalKeyToName::contains_key(ticker, key), + } + } + + /// Ensure asset metadata `value` is within the global limit. + fn ensure_asset_metadata_value_limited(value: &AssetMetadataValue) -> DispatchResult { + ensure!( + value.len() <= T::AssetMetadataValueMaxLength::get() as usize, + Error::::AssetMetadataValueMaxLengthExceeded + ); + Ok(()) + } + + /// Ensure asset metadata `name` is within the global limit. + fn ensure_asset_metadata_name_limited(name: &AssetMetadataName) -> DispatchResult { + ensure!( + name.len() <= T::AssetMetadataNameMaxLength::get() as usize, + Error::::AssetMetadataNameMaxLengthExceeded + ); + Ok(()) + } + + /// Ensure asset metadata `spec` is within the global limit. + fn ensure_asset_metadata_spec_limited(spec: &AssetMetadataSpec) -> DispatchResult { + ensure_opt_string_limited::(spec.url.as_deref())?; + ensure_opt_string_limited::(spec.description.as_deref())?; + if let Some(ref type_def) = spec.type_def { + ensure!( + type_def.len() <= T::AssetMetadataTypeDefMaxLength::get() as usize, + Error::::AssetMetadataTypeDefMaxLengthExceeded + ); + } + Ok(()) + } + + fn base_set_asset_metadata( + origin: T::Origin, + ticker: Ticker, + key: AssetMetadataKey, + value: AssetMetadataValue, + detail: Option>, + ) -> DispatchResult { + // Ensure the caller has the correct permissions for this asset. + let did = >::ensure_perms(origin, ticker)?; + + Self::unverified_set_asset_metadata(did, ticker, key, value, detail) + } + + fn unverified_set_asset_metadata( + did: IdentityId, + ticker: Ticker, + key: AssetMetadataKey, + value: AssetMetadataValue, + detail: Option>, + ) -> DispatchResult { + // Check value length limit. + Self::ensure_asset_metadata_value_limited(&value)?; + + // Check key exists. + ensure!( + Self::check_asset_metadata_key_exists(ticker, key), + Error::::AssetMetadataKeyIsMissing + ); + + // Check if value is currently locked. + ensure!( + !Self::is_asset_metadata_locked(ticker, key), + Error::::AssetMetadataValueIsLocked + ); + + // Set asset metadata value for asset. + AssetMetadataValues::insert(ticker, key, &value); + + // Set asset metadata value details. + if let Some(ref detail) = detail { + AssetMetadataValueDetails::::insert(ticker, key, detail); + } + + Self::deposit_event(RawEvent::SetAssetMetadataValue(did, ticker, value, detail)); + Ok(()) + } + + fn base_set_asset_metadata_details( + origin: T::Origin, + ticker: Ticker, + key: AssetMetadataKey, + detail: AssetMetadataValueDetail, + ) -> DispatchResult { + // Ensure the caller has the correct permissions for this asset. + let did = >::ensure_perms(origin, ticker)?; + + // Check key exists. + ensure!( + Self::check_asset_metadata_key_exists(ticker, key), + Error::::AssetMetadataKeyIsMissing + ); + + // Check if value is currently locked. + ensure!( + !Self::is_asset_metadata_locked(ticker, key), + Error::::AssetMetadataValueIsLocked + ); + + // Set asset metadata value details. + AssetMetadataValueDetails::::insert(ticker, key, &detail); + + Self::deposit_event(RawEvent::SetAssetMetadataValueDetails(did, ticker, detail)); + Ok(()) + } + + fn base_register_and_set_local_asset_metadata( + origin: T::Origin, + ticker: Ticker, + name: AssetMetadataName, + spec: AssetMetadataSpec, + value: AssetMetadataValue, + detail: Option>, + ) -> DispatchResult { + // Ensure the caller has the correct permissions for this asset. + let did = >::ensure_perms(origin, ticker)?; + + // Register local metadata type. + let key = Self::unverified_register_asset_metadata_local_type(did, ticker, name, spec)?; + + Self::unverified_set_asset_metadata(did, ticker, key, value, detail) + } + + fn base_register_asset_metadata_local_type( + origin: T::Origin, + ticker: Ticker, + name: AssetMetadataName, + spec: AssetMetadataSpec, + ) -> DispatchResult { + // Ensure the caller has the correct permissions for this asset. + let did = >::ensure_perms(origin, ticker)?; + + Self::unverified_register_asset_metadata_local_type(did, ticker, name, spec).map(drop) + } + + fn unverified_register_asset_metadata_local_type( + did: IdentityId, + ticker: Ticker, + name: AssetMetadataName, + spec: AssetMetadataSpec, + ) -> Result { + Self::ensure_asset_metadata_name_limited(&name)?; + Self::ensure_asset_metadata_spec_limited(&spec)?; + + // Check if key already exists. + ensure!( + !AssetMetadataLocalNameToKey::contains_key(ticker, &name), + Error::::AssetMetadataLocalKeyAlreadyExists + ); + + // Next local key for asset. + let key = AssetMetadataNextLocalKey::try_mutate(ticker, try_next_pre::)?; + + // Store local key <-> name mapping. + AssetMetadataLocalNameToKey::insert(ticker, &name, key); + AssetMetadataLocalKeyToName::insert(ticker, key, &name); + + // Store local specs. + AssetMetadataLocalSpecs::insert(ticker, key, &spec); + + Self::deposit_event(RawEvent::RegisterAssetMetadataLocalType( + did, ticker, name, key, spec, + )); + Ok(key.into()) + } + + fn base_register_asset_metadata_global_type( + origin: T::Origin, + name: AssetMetadataName, + spec: AssetMetadataSpec, + ) -> DispatchResult { + Self::ensure_asset_metadata_name_limited(&name)?; + Self::ensure_asset_metadata_spec_limited(&spec)?; + + // Only allow global metadata types to be registered by root. + ensure_root(origin)?; + + // Check if key already exists. + ensure!( + !AssetMetadataGlobalNameToKey::contains_key(&name), + Error::::AssetMetadataGlobalKeyAlreadyExists + ); + + // Next global key. + let key = AssetMetadataNextGlobalKey::try_mutate(try_next_pre::)?; + + // Store global key <-> name mapping. + AssetMetadataGlobalNameToKey::insert(&name, key); + AssetMetadataGlobalKeyToName::insert(key, &name); + + // Store global specs. + AssetMetadataGlobalSpecs::insert(key, &spec); + + Self::deposit_event(RawEvent::RegisterAssetMetadataGlobalType(name, key, spec)); + Ok(()) + } + /* fn base_add_extension( origin: T::Origin, diff --git a/pallets/common/src/traits/asset.rs b/pallets/common/src/traits/asset.rs index e6ad14552b..c3cb357400 100644 --- a/pallets/common/src/traits/asset.rs +++ b/pallets/common/src/traits/asset.rs @@ -18,9 +18,13 @@ use frame_support::decl_event; use frame_support::dispatch::DispatchResult; use frame_support::traits::{Currency, Get, UnixTime}; use frame_support::weights::Weight; -use polymesh_primitives::asset::{AssetName, AssetType, CustomAssetTypeId, FundingRoundName}; -use polymesh_primitives::ethereum::EthereumAddress; use polymesh_primitives::{ + asset::{AssetName, AssetType, CustomAssetTypeId, FundingRoundName}, + asset_metadata::{ + AssetMetadataGlobalKey, AssetMetadataLocalKey, AssetMetadataName, AssetMetadataSpec, + AssetMetadataValue, AssetMetadataValueDetail, + }, + ethereum::EthereumAddress, AssetIdentifier, Balance, Document, DocumentId, IdentityId, PortfolioId, ScopeId, Ticker, }; use sp_std::prelude::Vec; @@ -92,6 +96,12 @@ pub trait WeightInfo { fn reserve_classic_ticker() -> Weight; fn controller_transfer() -> Weight; fn register_custom_asset_type(n: u32) -> Weight; + + fn set_asset_metadata() -> Weight; + fn set_asset_metadata_details() -> Weight; + fn register_and_set_local_asset_metadata() -> Weight; + fn register_asset_metadata_local_type() -> Weight; + fn register_asset_metadata_global_type() -> Weight; } /// The module's configuration trait. @@ -126,6 +136,15 @@ pub trait Config: /// Max length of the funding round name. type FundingRoundNameMaxLength: Get; + /// Max length for the Asset Metadata type name. + type AssetMetadataNameMaxLength: Get; + + /// Max length for the Asset Metadata value. + type AssetMetadataValueMaxLength: Get; + + /// Max length for the Asset Metadata type definition. + type AssetMetadataTypeDefMaxLength: Get; + type AssetFn: AssetFnTrait; type WeightInfo: WeightInfo; @@ -214,5 +233,17 @@ decl_event! { /// A custom asset type was registered on-chain. /// caller DID, the ID of the custom asset type, the string contents registered. CustomAssetTypeRegistered(IdentityId, CustomAssetTypeId, Vec), + /// Set asset metadata value. + /// (Caller DID, ticker, metadata value, optional value details) + SetAssetMetadataValue(IdentityId, Ticker, AssetMetadataValue, Option>), + /// Set asset metadata value details (expire, lock status). + /// (Caller DID, ticker, value details) + SetAssetMetadataValueDetails(IdentityId, Ticker, AssetMetadataValueDetail), + /// Register asset metadata local type. + /// (Caller DID, ticker, Local type name, Local type key, type specs) + RegisterAssetMetadataLocalType(IdentityId, Ticker, AssetMetadataName, AssetMetadataLocalKey, AssetMetadataSpec), + /// Register asset metadata global type. + /// (Global type name, Global type key, type specs) + RegisterAssetMetadataGlobalType(AssetMetadataName, AssetMetadataGlobalKey, AssetMetadataSpec), } } diff --git a/pallets/pips/src/lib.rs b/pallets/pips/src/lib.rs index 2c0fbeff86..4f04e0adfc 100644 --- a/pallets/pips/src/lib.rs +++ b/pallets/pips/src/lib.rs @@ -117,7 +117,7 @@ use polymesh_common_utilities::{ with_transaction, CommonConfig, Context, MaybeBlock, GC_DID, }; use polymesh_primitives::{ - impl_checked_inc, storage_migrate_on, storage_migration_ver, Balance, IdentityId, + impl_checked_inc, storage_migrate_on, storage_migration_ver, Balance, IdentityId, Url, }; use polymesh_primitives_derive::VecU8StrongTyped; use polymesh_runtime_common::PipsEnactSnapshotMaximumWeight; @@ -164,11 +164,6 @@ pub trait WeightInfo { fn expire_scheduled_pip() -> Weight; } -/// A wrapper for a proposal url. -#[derive(Decode, Encode, TypeInfo, VecU8StrongTyped)] -#[derive(Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)] -pub struct Url(pub Vec); - /// A wrapper for a proposal description. #[derive(Decode, Encode, TypeInfo, VecU8StrongTyped)] #[derive(Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)] diff --git a/pallets/runtime/ci/src/runtime.rs b/pallets/runtime/ci/src/runtime.rs index 237ca45145..62f736018d 100644 --- a/pallets/runtime/ci/src/runtime.rs +++ b/pallets/runtime/ci/src/runtime.rs @@ -117,6 +117,9 @@ parameter_types! { pub const MaxNumberOfTMExtensionForAsset: u32 = 5; pub const AssetNameMaxLength: u32 = 128; pub const FundingRoundNameMaxLength: u32 = 128; + pub const AssetMetadataNameMaxLength: u32 = 256; + pub const AssetMetadataValueMaxLength: u32 = 8 * 1024; + pub const AssetMetadataTypeDefMaxLength: u32 = 8 * 1024; // Compliance manager: pub const MaxConditionComplexity: u32 = 50; diff --git a/pallets/runtime/common/src/runtime.rs b/pallets/runtime/common/src/runtime.rs index 09fb2f69ed..14beefc3d3 100644 --- a/pallets/runtime/common/src/runtime.rs +++ b/pallets/runtime/common/src/runtime.rs @@ -301,6 +301,9 @@ macro_rules! misc_pallet_impls { type UnixTime = pallet_timestamp::Pallet; type AssetNameMaxLength = AssetNameMaxLength; type FundingRoundNameMaxLength = FundingRoundNameMaxLength; + type AssetMetadataNameMaxLength = AssetMetadataNameMaxLength; + type AssetMetadataValueMaxLength = AssetMetadataValueMaxLength; + type AssetMetadataTypeDefMaxLength = AssetMetadataTypeDefMaxLength; type AssetFn = Asset; type WeightInfo = polymesh_weights::pallet_asset::WeightInfo; type CPWeightInfo = polymesh_weights::pallet_checkpoint::WeightInfo; diff --git a/pallets/runtime/develop/src/runtime.rs b/pallets/runtime/develop/src/runtime.rs index 30c9d76aaa..453105c7cc 100644 --- a/pallets/runtime/develop/src/runtime.rs +++ b/pallets/runtime/develop/src/runtime.rs @@ -113,6 +113,9 @@ parameter_types! { pub const MaxNumberOfTMExtensionForAsset: u32 = 5; pub const AssetNameMaxLength: u32 = 128; pub const FundingRoundNameMaxLength: u32 = 128; + pub const AssetMetadataNameMaxLength: u32 = 256; + pub const AssetMetadataValueMaxLength: u32 = 8 * 1024; + pub const AssetMetadataTypeDefMaxLength: u32 = 8 * 1024; // Compliance manager: pub const MaxConditionComplexity: u32 = 50; diff --git a/pallets/runtime/mainnet/src/runtime.rs b/pallets/runtime/mainnet/src/runtime.rs index 63db9b9ef5..a1cc740b43 100644 --- a/pallets/runtime/mainnet/src/runtime.rs +++ b/pallets/runtime/mainnet/src/runtime.rs @@ -113,6 +113,9 @@ parameter_types! { pub const MaxNumberOfTMExtensionForAsset: u32 = 5; pub const AssetNameMaxLength: u32 = 128; pub const FundingRoundNameMaxLength: u32 = 128; + pub const AssetMetadataNameMaxLength: u32 = 256; + pub const AssetMetadataValueMaxLength: u32 = 8 * 1024; + pub const AssetMetadataTypeDefMaxLength: u32 = 8 * 1024; // Compliance manager: pub const MaxConditionComplexity: u32 = 50; diff --git a/pallets/runtime/testnet/src/runtime.rs b/pallets/runtime/testnet/src/runtime.rs index 69ee28b968..5954303639 100644 --- a/pallets/runtime/testnet/src/runtime.rs +++ b/pallets/runtime/testnet/src/runtime.rs @@ -117,6 +117,9 @@ parameter_types! { pub const MaxNumberOfTMExtensionForAsset: u32 = 5; pub const AssetNameMaxLength: u32 = 128; pub const FundingRoundNameMaxLength: u32 = 128; + pub const AssetMetadataNameMaxLength: u32 = 256; + pub const AssetMetadataValueMaxLength: u32 = 8 * 1024; + pub const AssetMetadataTypeDefMaxLength: u32 = 8 * 1024; // Compliance manager: pub const MaxConditionComplexity: u32 = 50; diff --git a/pallets/runtime/tests/src/asset_metadata_test.rs b/pallets/runtime/tests/src/asset_metadata_test.rs new file mode 100644 index 0000000000..7314eb1832 --- /dev/null +++ b/pallets/runtime/tests/src/asset_metadata_test.rs @@ -0,0 +1,505 @@ +use super::{ + asset_test::create_token, + exec_noop, exec_ok, + storage::{TestStorage, User}, + ExtBuilder, +}; +use frame_support::{assert_noop, assert_ok, dispatch::DispatchError}; +use polymesh_primitives::{ + asset_metadata::{ + AssetMetadataKey, AssetMetadataLockStatus, AssetMetadataName, AssetMetadataSpec, + AssetMetadataValue, AssetMetadataValueDetail, + }, + Ticker, +}; +use test_client::AccountKeyring; + +type Origin = ::Origin; +type Moment = ::Moment; + +type MaxLen = ::MaxLen; +type AssetMetadataNameMaxLength = ::AssetMetadataNameMaxLength; +type AssetMetadataValueMaxLength = + ::AssetMetadataValueMaxLength; +type AssetMetadataTypeDefMaxLength = + ::AssetMetadataTypeDefMaxLength; + +type Asset = pallet_asset::Module; + +type BaseError = pallet_base::Error; +type EAError = pallet_external_agents::Error; +type AssetError = pallet_asset::Error; + +/// Make metadata name & specs using the requested lengths. +fn make_metadata_type_sizes( + name_len: u32, + url_len: u32, + desc_len: u32, + type_def_len: u32, +) -> (AssetMetadataName, AssetMetadataSpec) { + let spec = AssetMetadataSpec { + url: Some(vec![b'u'; url_len as usize].into()), + description: Some(vec![b'd'; desc_len as usize].into()), + type_def: Some(vec![b't'; type_def_len as usize]), + }; + let name = AssetMetadataName(vec![b'n'; name_len as usize]); + + (name, spec) +} + +/// Helper for creating metadata value details. +fn make_metadata_value_details( + expire: Option, + locked: bool, +) -> AssetMetadataValueDetail { + AssetMetadataValueDetail { + expire, + lock_status: if locked { + AssetMetadataLockStatus::Locked + } else { + AssetMetadataLockStatus::Unlocked + }, + } +} + +/// Make metadata name & spec for the given name. +fn make_metadata_type(name: &str) -> (AssetMetadataName, AssetMetadataSpec) { + let spec = AssetMetadataSpec { + url: Some(b"http://example.com/test_specs".into()), + description: Some(format!("{} metadata type", name).as_bytes().into()), + type_def: Some(vec![]), + }; + let name: AssetMetadataName = name.as_bytes().into(); + + (name, spec) +} + +/// Helper to register metadata type with the give name. +fn register_metadata_type(owner: User, ticker: Option, name: &str) -> AssetMetadataKey { + let (name, spec) = make_metadata_type(name); + + if let Some(ticker) = ticker { + // Register local metadata type with asset owner. + exec_ok!(Asset::register_asset_metadata_local_type( + owner.origin(), + ticker, + name.clone(), + spec, + )); + + Asset::asset_metadata_local_name_to_key(ticker, name) + .map(AssetMetadataKey::from) + .expect("Failed to register metadata") + } else { + let root = frame_system::RawOrigin::Root; + // Register global metadata type with root. + assert_ok!(Asset::register_asset_metadata_global_type( + root.into(), + name.clone(), + spec, + )); + + Asset::asset_metadata_global_name_to_key(name) + .map(AssetMetadataKey::from) + .expect("Failed to register metadata") + } +} + +#[test] +fn set_asset_metadata_local_type() { + ExtBuilder::default().build().execute_with(|| { + let owner = User::new(AccountKeyring::Dave); + let other = User::new(AccountKeyring::Alice); + + // Create asset. + let (ticker, _) = create_token(owner); + + let global_key = register_metadata_type(owner, None, "TEST"); + let local_key = register_metadata_type(owner, Some(ticker), "TEST"); + + let value = AssetMetadataValue("cow".as_bytes().into()); + let details = Some(make_metadata_value_details(None, false)); + + // Try adding global metadata value with user that doesn't have permissions for this asset. + exec_noop!( + Asset::set_asset_metadata( + other.origin(), + ticker, + global_key, + value.clone(), + details.clone() + ), + EAError::UnauthorizedAgent + ); + + // Try adding local metadata value with user that doesn't have permissions for this asset. + exec_noop!( + Asset::set_asset_metadata( + other.origin(), + ticker, + local_key, + value.clone(), + details.clone() + ), + EAError::UnauthorizedAgent + ); + + // Make value that exceeds the maximum limit. + let value_len = AssetMetadataValueMaxLength::get() + 1; + let over_sized_value = AssetMetadataValue(vec![b'v'; value_len as usize]); + + // Try to set a global key with a value that exceeds the maximum limit. + exec_noop!( + Asset::set_asset_metadata( + owner.origin(), + ticker, + global_key, + over_sized_value.clone(), + details.clone() + ), + AssetError::AssetMetadataValueMaxLengthExceeded + ); + + // Try to set a local key with a value that exceeds the maximum limit. + exec_noop!( + Asset::set_asset_metadata( + owner.origin(), + ticker, + local_key, + over_sized_value.clone(), + details.clone() + ), + AssetError::AssetMetadataValueMaxLengthExceeded + ); + + // Set metadata value for global key. + exec_ok!(Asset::set_asset_metadata( + owner.origin(), + ticker, + global_key, + value.clone(), + details.clone() + )); + + // Set metadata value for local key. + exec_ok!(Asset::set_asset_metadata( + owner.origin(), + ticker, + local_key, + value.clone(), + details.clone() + )); + + let value2 = AssetMetadataValue("beef".as_bytes().into()); + let details2 = Some(make_metadata_value_details(Some(1), false)); + + // Try updating global metadata value with user that doesn't have permissions for this asset. + exec_noop!( + Asset::set_asset_metadata( + other.origin(), + ticker, + global_key, + value2.clone(), + details2.clone() + ), + EAError::UnauthorizedAgent + ); + + // Try updating local metadata value with user that doesn't have permissions for this asset. + exec_noop!( + Asset::set_asset_metadata( + other.origin(), + ticker, + local_key, + value2.clone(), + details2.clone() + ), + EAError::UnauthorizedAgent + ); + + // Update metadata value for global key. + exec_ok!(Asset::set_asset_metadata( + owner.origin(), + ticker, + global_key, + value2.clone(), + details2.clone(), + )); + + // Update metadata value for local key. + exec_ok!(Asset::set_asset_metadata( + owner.origin(), + ticker, + local_key, + value2.clone(), + details2.clone(), + )); + + let details_locked = make_metadata_value_details(None, true); + // Try locking global metadata value with user that doesn't have permissions for this asset. + exec_noop!( + Asset::set_asset_metadata_details( + other.origin(), + ticker, + global_key, + details_locked.clone() + ), + EAError::UnauthorizedAgent + ); + + // Try locking local metadata value with user that doesn't have permissions for this asset. + exec_noop!( + Asset::set_asset_metadata_details( + other.origin(), + ticker, + local_key, + details_locked.clone() + ), + EAError::UnauthorizedAgent + ); + + // Lock metadata value for global key. + exec_ok!(Asset::set_asset_metadata_details( + owner.origin(), + ticker, + global_key, + details_locked.clone(), + )); + + // Lock metadata value for local key. + exec_ok!(Asset::set_asset_metadata_details( + owner.origin(), + ticker, + local_key, + details_locked.clone(), + )); + + let value3 = AssetMetadataValue("deadbeef".as_bytes().into()); + let details3 = Some(make_metadata_value_details(Some(3), false)); + + // Try updating locked metadata value for global key. + exec_noop!( + Asset::set_asset_metadata( + owner.origin(), + ticker, + global_key, + value3.clone(), + details3.clone(), + ), + AssetError::AssetMetadataValueIsLocked + ); + + // Try updating locked metadata value for local key. + exec_noop!( + Asset::set_asset_metadata( + owner.origin(), + ticker, + local_key, + value3.clone(), + details3.clone(), + ), + AssetError::AssetMetadataValueIsLocked + ); + }); +} + +#[test] +fn register_and_set_local_asset_metadata() { + ExtBuilder::default().build().execute_with(|| { + let owner = User::new(AccountKeyring::Dave); + let other = User::new(AccountKeyring::Alice); + + // Create asset. + let (ticker, _) = create_token(owner); + + let (name, spec) = make_metadata_type("TEST"); + let value = AssetMetadataValue("cow".as_bytes().into()); + let details = Some(make_metadata_value_details(None, false)); + + // Try registering local metadata type with user that doesn't have permissions for this asset. + exec_noop!( + Asset::register_and_set_local_asset_metadata( + other.origin(), + ticker, + name.clone(), + spec.clone(), + value.clone(), + details.clone(), + ), + EAError::UnauthorizedAgent + ); + + // Register and set local metadata type with asset owner. + exec_ok!(Asset::register_and_set_local_asset_metadata( + owner.origin(), + ticker, + name.clone(), + spec.clone(), + value.clone(), + details.clone(), + )); + + // Try registering and setting metadata with the same name. + exec_noop!( + Asset::register_and_set_local_asset_metadata( + owner.origin(), + ticker, + name, + spec, + value, + details + ), + AssetError::AssetMetadataLocalKeyAlreadyExists + ); + }); +} + +#[test] +fn register_asset_metadata_local_type() { + ExtBuilder::default().build().execute_with(|| { + let owner = User::new(AccountKeyring::Dave); + let other = User::new(AccountKeyring::Alice); + + // Create asset. + let (ticker, _) = create_token(owner); + + let (name, spec) = make_metadata_type("TEST"); + + // Try registering local metadata type with user that doesn't have permissions for this asset. + exec_noop!( + Asset::register_asset_metadata_local_type( + other.origin(), + ticker, + name.clone(), + spec.clone(), + ), + EAError::UnauthorizedAgent + ); + + // Register local metadata type with asset owner. + exec_ok!(Asset::register_asset_metadata_local_type( + owner.origin(), + ticker, + name.clone(), + spec.clone(), + )); + + // Try registering metadata with the same name. + exec_noop!( + Asset::register_asset_metadata_local_type(owner.origin(), ticker, name, spec,), + AssetError::AssetMetadataLocalKeyAlreadyExists + ); + }); +} + +#[test] +fn register_asset_metadata_global_type() { + ExtBuilder::default().build().execute_with(|| { + let alice = User::new(AccountKeyring::Alice); + let root = Origin::from(frame_system::RawOrigin::Root); + + let (name, spec) = make_metadata_type("TEST"); + + // Try registering global metadata type with non-root. + exec_noop!( + Asset::register_asset_metadata_global_type(alice.origin(), name.clone(), spec.clone(),), + DispatchError::BadOrigin + ); + + // Register global metadata type with root. + assert_ok!(Asset::register_asset_metadata_global_type( + root.clone(), + name.clone(), + spec.clone(), + )); + + // Try registering metadata with the same name. + assert_noop!( + Asset::register_asset_metadata_global_type(root, name, spec,), + AssetError::AssetMetadataGlobalKeyAlreadyExists + ); + }); +} + +#[test] +fn register_asset_metadata_local_type_limits() { + ExtBuilder::default().build().execute_with(|| { + let owner = User::new(AccountKeyring::Dave); + + // Create asset. + let (ticker, _) = create_token(owner); + + // Try registering metadata with over-sized values. + let register_type = |name, url, desc, type_def, err: DispatchError| { + let (name, spec) = make_metadata_type_sizes(name, url, desc, type_def); + exec_noop!( + Asset::register_asset_metadata_local_type(owner.origin(), ticker, name, spec,), + err + ); + }; + + // Oversized metadata name. + register_type( + AssetMetadataNameMaxLength::get() + 1, + 10, + 10, + 10, + AssetError::AssetMetadataNameMaxLengthExceeded.into(), + ); + + // Oversized metadata url. + register_type(10, MaxLen::get() + 1, 10, 10, BaseError::TooLong.into()); + + // Oversized metadata description. + register_type(10, 10, MaxLen::get() + 1, 10, BaseError::TooLong.into()); + + // Oversized metadata type definition. + register_type( + 10, + 10, + 10, + AssetMetadataTypeDefMaxLength::get() + 1, + AssetError::AssetMetadataTypeDefMaxLengthExceeded.into(), + ); + }); +} + +#[test] +fn register_asset_metadata_global_type_limits() { + ExtBuilder::default().build().execute_with(|| { + let root = Origin::from(frame_system::RawOrigin::Root); + + // Try registering metadata with over-sized values. + let register_type = |name, url, desc, type_def, err: DispatchError| { + let (name, spec) = make_metadata_type_sizes(name, url, desc, type_def); + assert_noop!( + Asset::register_asset_metadata_global_type(root.clone(), name, spec,), + err + ); + }; + + // Oversized metadata name. + register_type( + AssetMetadataNameMaxLength::get() + 1, + 10, + 10, + 10, + AssetError::AssetMetadataNameMaxLengthExceeded.into(), + ); + + // Oversized metadata url. + register_type(10, MaxLen::get() + 1, 10, 10, BaseError::TooLong.into()); + + // Oversized metadata description. + register_type(10, 10, MaxLen::get() + 1, 10, BaseError::TooLong.into()); + + // Oversized metadata type definition. + register_type( + 10, + 10, + 10, + AssetMetadataTypeDefMaxLength::get() + 1, + AssetError::AssetMetadataTypeDefMaxLengthExceeded.into(), + ); + }); +} diff --git a/pallets/runtime/tests/src/lib.rs b/pallets/runtime/tests/src/lib.rs index 482b8161ea..fcd02e8521 100644 --- a/pallets/runtime/tests/src/lib.rs +++ b/pallets/runtime/tests/src/lib.rs @@ -17,6 +17,8 @@ pub use ext_builder::ExtBuilder; #[macro_use] mod asset_test; #[cfg(test)] +mod asset_metadata_test; +#[cfg(test)] mod balances_test; #[cfg(test)] mod bridge; diff --git a/pallets/runtime/tests/src/pips_test.rs b/pallets/runtime/tests/src/pips_test.rs index d4b32d16c4..1ef53f63b2 100644 --- a/pallets/runtime/tests/src/pips_test.rs +++ b/pallets/runtime/tests/src/pips_test.rs @@ -17,12 +17,12 @@ use frame_support::{ use frame_system::{self, EventRecord}; use pallet_pips::{ DepositInfo, LiveQueue, Pip, PipDescription, PipId, PipsMetadata, ProposalState, Proposer, - RawEvent as Event, SnapshotId, SnapshotMetadata, SnapshotResult, SnapshottedPip, Url, Vote, + RawEvent as Event, SnapshotId, SnapshotMetadata, SnapshotResult, SnapshottedPip, Vote, VoteCount, VotingResult, }; use pallet_treasury as treasury; use polymesh_common_utilities::{MaybeBlock, GC_DID}; -use polymesh_primitives::{AccountId, BlockNumber}; +use polymesh_primitives::{AccountId, BlockNumber, Url}; use test_client::AccountKeyring; type System = frame_system::Pallet; diff --git a/pallets/runtime/tests/src/storage.rs b/pallets/runtime/tests/src/storage.rs index b4cd81dce6..480df94d3b 100644 --- a/pallets/runtime/tests/src/storage.rs +++ b/pallets/runtime/tests/src/storage.rs @@ -400,6 +400,9 @@ parameter_types! { pub MaxNumberOfTMExtensionForAsset: u32 = MAX_NO_OF_TM_ALLOWED.with(|v| *v.borrow()); pub const AssetNameMaxLength: u32 = 128; pub const FundingRoundNameMaxLength: u32 = 128; + pub const AssetMetadataNameMaxLength: u32 = 256; + pub const AssetMetadataValueMaxLength: u32 = 8 * 1024; + pub const AssetMetadataTypeDefMaxLength: u32 = 8 * 1024; pub const BlockRangeForTimelock: BlockNumber = 1000; pub const MaxTargetIds: u32 = 10; pub const MaxDidWhts: u32 = 10; diff --git a/pallets/weights/src/pallet_asset.rs b/pallets/weights/src/pallet_asset.rs index 120f77ce09..c70bdea629 100644 --- a/pallets/weights/src/pallet_asset.rs +++ b/pallets/weights/src/pallet_asset.rs @@ -159,4 +159,30 @@ impl pallet_asset::WeightInfo for WeightInfo { .saturating_add(DbWeight::get().reads(4 as Weight)) .saturating_add(DbWeight::get().writes(3 as Weight)) } + + fn set_asset_metadata() -> Weight { + (175_547_000 as Weight) + .saturating_add(DbWeight::get().reads(7 as Weight)) + .saturating_add(DbWeight::get().writes(2 as Weight)) + } + fn set_asset_metadata_details() -> Weight { + (140_383_000 as Weight) + .saturating_add(DbWeight::get().reads(7 as Weight)) + .saturating_add(DbWeight::get().writes(1 as Weight)) + } + fn register_and_set_local_asset_metadata() -> Weight { + (279_615_000 as Weight) + .saturating_add(DbWeight::get().reads(8 as Weight)) + .saturating_add(DbWeight::get().writes(6 as Weight)) + } + fn register_asset_metadata_local_type() -> Weight { + (223_108_000 as Weight) + .saturating_add(DbWeight::get().reads(7 as Weight)) + .saturating_add(DbWeight::get().writes(4 as Weight)) + } + fn register_asset_metadata_global_type() -> Weight { + (157_453_000 as Weight) + .saturating_add(DbWeight::get().reads(2 as Weight)) + .saturating_add(DbWeight::get().writes(4 as Weight)) + } } diff --git a/polymesh_schema.json b/polymesh_schema.json index 8c9d92bace..e2564a6323 100644 --- a/polymesh_schema.json +++ b/polymesh_schema.json @@ -77,6 +77,33 @@ "divisible": "bool", "asset_type": "AssetType" }, + "AssetMetadataName": "Text", + "AssetMetadataValue": "Vec", + "AssetMetadataLocalKey": "u64", + "AssetMetadataGlobalKey": "u64", + "AssetMetadataKey": { + "_enum": { + "Global": "u64", + "Local": "u64" + } + }, + "AssetMetadataLockStatus": { + "_enum": { + "Unlocked": "", + "Locked": "", + "LockedUntil": "Moment" + } + }, + "AssetMetadataValueDetail": { + "expire": "Option", + "lock_status": "AssetMetadataLockStatus" + }, + "AssetMetadataDescription": "Text", + "AssetMetadataSpec": { + "url": "Option", + "description": "Option", + "type_def": "Option>" + }, "PalletName": "Text", "DispatchableName": "Text", "AssetPermissions": { diff --git a/primitives/Cargo.toml b/primitives/Cargo.toml index f4dfa559fe..2023359848 100644 --- a/primitives/Cargo.toml +++ b/primitives/Cargo.toml @@ -26,7 +26,7 @@ schnorrkel = { version = "0.10.1", default-features = false } codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } frame-support = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } +scale-info = { version = "1.0", default-features = false, features = ["derive", "decode"] } sp-application-crypto = { version = "4.0.0-dev", default-features = false, optional = true } sp-arithmetic = { version = "4.0.0-dev", default-features = false } sp-core = { version = "4.0.0-dev", default-features = false } @@ -67,6 +67,7 @@ std = [ # Crypto "blake2/simd", "blake2/std", + "confidential_identity/std", "confidential_identity_v1/std", "polymesh-primitives-derive/std", "schnorrkel/std", diff --git a/primitives/asset-metadata/Cargo.toml b/primitives/asset-metadata/Cargo.toml new file mode 100644 index 0000000000..c568e06403 --- /dev/null +++ b/primitives/asset-metadata/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "asset-metadata" +version = "0.1.0" +edition = "2021" + +[dependencies] +# Polymesh primitives. +polymesh-primitives = { path = "../", default-features = false } + +# SCALE +codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "1.0", default-features = false, features = ["derive", "decode"] } + +[features] +default = ["std"] +no_std = [] +std = [ + "codec/std", + "polymesh-primitives/std", +] diff --git a/primitives/asset-metadata/README.md b/primitives/asset-metadata/README.md new file mode 100644 index 0000000000..39102617dc --- /dev/null +++ b/primitives/asset-metadata/README.md @@ -0,0 +1,4 @@ +# Example Custom Asset Metadata types definition. + +This crate is an example for how to define new asset metadata types. + diff --git a/primitives/asset-metadata/example_schema.json b/primitives/asset-metadata/example_schema.json new file mode 100644 index 0000000000..b2213451c7 --- /dev/null +++ b/primitives/asset-metadata/example_schema.json @@ -0,0 +1,20 @@ +{ + "Duration": { + "secs": "i64", + "nanos": "i32" + }, + "Date": { + "year": "u16", + "month": "u8", + "day": "u8" + }, + "Time": { + "hour": "u8", + "minute": "u8", + "second": "u8" + }, + "DateTime": { + "date": "Date", + "time": "Time" + } +} diff --git a/primitives/asset-metadata/src/bin/dump_specs.rs b/primitives/asset-metadata/src/bin/dump_specs.rs new file mode 100644 index 0000000000..222b67b0c6 --- /dev/null +++ b/primitives/asset-metadata/src/bin/dump_specs.rs @@ -0,0 +1,30 @@ +use codec::Encode; +use std::io::Write; + +use asset_metadata::*; +use polymesh_primitives::asset_metadata::AssetMetadataTypeDef; + +fn main() { + let mut args = std::env::args(); + args.next(); // skip program name. + let type_name = args.next().unwrap_or("Duration".into()); + let type_def = match type_name.as_str() { + "Duration" => AssetMetadataTypeDef::new_from_type::(), + "Date" => AssetMetadataTypeDef::new_from_type::(), + "Time" => AssetMetadataTypeDef::new_from_type::::has_valid_cdd(*did) { Context::set_current_identity::>(Some(*did)); - Ok(Some(Module::::did_records(&did).primary_key)) + Ok(Module::::get_primary_key(*did)) } else { CDD_REQUIRED } diff --git a/pallets/runtime/common/src/runtime.rs b/pallets/runtime/common/src/runtime.rs index a645370f27..a6de21c573 100644 --- a/pallets/runtime/common/src/runtime.rs +++ b/pallets/runtime/common/src/runtime.rs @@ -524,10 +524,10 @@ macro_rules! runtime_apis { use node_rpc_runtime_api::asset as rpc_api_asset; use sp_inherents::{CheckInherentsResult, InherentData}; //use pallet_contracts_primitives::ContractExecResult; - use pallet_identity::types::{AssetDidResult, CddStatus, DidRecords, DidStatus, KeyIdentityData}; + use pallet_identity::types::{AssetDidResult, CddStatus, RpcDidRecords, DidStatus, KeyIdentityData}; use pallet_pips::{Vote, VoteCount}; use pallet_protocol_fee_rpc_runtime_api::CappedFee; - use polymesh_primitives::{calendar::CheckpointId, compliance_manager::AssetComplianceResult, IdentityId, Index, PortfolioId, SecondaryKey, Signatory, Ticker}; + use polymesh_primitives::{calendar::CheckpointId, compliance_manager::AssetComplianceResult, IdentityId, Index, PortfolioId, Signatory, Ticker}; /// The address format for describing accounts. pub type Address = ::Source; @@ -810,8 +810,6 @@ macro_rules! runtime_apis { IdentityId, Ticker, polymesh_primitives::AccountId, - SecondaryKey, - Signatory, Moment > for Runtime { @@ -828,7 +826,7 @@ macro_rules! runtime_apis { } /// Retrieve primary key and secondary keys for a given IdentityId - fn get_did_records(did: IdentityId) -> DidRecords> { + fn get_did_records(did: IdentityId) -> RpcDidRecords { Identity::get_did_records(did) } diff --git a/pallets/runtime/develop/src/runtime.rs b/pallets/runtime/develop/src/runtime.rs index ce99a92bd1..ed9115e3af 100644 --- a/pallets/runtime/develop/src/runtime.rs +++ b/pallets/runtime/develop/src/runtime.rs @@ -310,7 +310,7 @@ impl TestUtilsFn for Runtime { fn register_did( target: AccountId, investor: InvestorUid, - secondary_keys: Vec>, + secondary_keys: Vec>, ) -> DispatchResult { >::register_did(target, investor, secondary_keys) } diff --git a/pallets/runtime/tests/src/asset_test.rs b/pallets/runtime/tests/src/asset_test.rs index fb3b602f9a..77581455da 100644 --- a/pallets/runtime/tests/src/asset_test.rs +++ b/pallets/runtime/tests/src/asset_test.rs @@ -1,6 +1,6 @@ use crate::{ //contract_test::{create_se_template, flipper}, - ext_builder::{ExtBuilder, MockProtocolBaseFees}, + ext_builder::{ExtBuilder, IdentityRecord, MockProtocolBaseFees}, pips_test::assert_balance, storage::{ add_secondary_key, make_account_without_cdd, provide_scope_claim, @@ -208,7 +208,7 @@ const TOTAL_SUPPLY: u128 = 1_000_000_000u128; /// Generates a new portfolio for `owner` using the given `name`. fn new_portfolio(owner: AccountId, name: &str) -> PortfolioId { let portfolio_name = PortfolioName::from(name); - let did = Identity::key_to_identity_dids(owner.clone()); + let did = Identity::get_identity(&owner).expect("User missing identity"); Portfolio::create_portfolio(Origin::signed(owner), portfolio_name.clone()) .expect("New portfolio cannot be created"); @@ -2195,22 +2195,19 @@ fn secondary_key_not_authorized_for_asset_test() { let secondary_keys = vec![ SecondaryKey { - signer: Signatory::Account(not.to_account_id()), + key: not.to_account_id(), permissions: Permissions { asset: AssetPermissions::elems(invalid_tickers), ..Default::default() }, }, SecondaryKey { - signer: Signatory::Account(all.to_account_id()), + key: all.to_account_id(), permissions: Permissions::default(), }, ]; - let owner = polymesh_primitives::Identity { - primary_key: owner.to_account_id(), - secondary_keys, - }; + let owner = IdentityRecord::new(owner.to_account_id(), secondary_keys); ExtBuilder::default() .add_regular_users(&[owner]) diff --git a/pallets/runtime/tests/src/bridge.rs b/pallets/runtime/tests/src/bridge.rs index 2fc332a9be..57f5ed6802 100644 --- a/pallets/runtime/tests/src/bridge.rs +++ b/pallets/runtime/tests/src/bridge.rs @@ -401,7 +401,7 @@ fn is_exempted() { fn do_exempted(signers: &[AccountId]) { let alice = Alice.to_account_id(); - let alice_did = Identity::key_to_identity_dids(alice.clone()); + let alice_did = Identity::get_identity(&alice).expect("Alice missing identity"); let tx = alice_make_bridge_tx(AMOUNT_OVER_LIMIT); let starting_alices_balance = alice_balance(); diff --git a/pallets/runtime/tests/src/compliance_manager_test.rs b/pallets/runtime/tests/src/compliance_manager_test.rs index 6e4c51512b..369c87d6f1 100644 --- a/pallets/runtime/tests/src/compliance_manager_test.rs +++ b/pallets/runtime/tests/src/compliance_manager_test.rs @@ -1,8 +1,8 @@ use super::{ asset_test::{allow_all_transfers, create_token}, storage::{ - create_cdd_id, create_investor_uid, provide_scope_claim_to_multiple_parties, set_curr_did, - TestStorage, User, + create_cdd_id, create_investor_uid, get_primary_key, + provide_scope_claim_to_multiple_parties, set_curr_did, TestStorage, User, }, ExtBuilder, }; @@ -544,7 +544,7 @@ fn should_successfully_add_and_use_default_issuers_we() { let (cdd_id, _) = create_cdd_id( receiver.did, Ticker::default(), - create_investor_uid(Identity::did_records(receiver.did).primary_key), + create_investor_uid(get_primary_key(receiver.did)), ); assert_ok!(Identity::add_claim( trusted_issuer.origin(), diff --git a/pallets/runtime/tests/src/ext_builder.rs b/pallets/runtime/tests/src/ext_builder.rs index 96e964acc6..b4fdcdbdf9 100644 --- a/pallets/runtime/tests/src/ext_builder.rs +++ b/pallets/runtime/tests/src/ext_builder.rs @@ -11,14 +11,31 @@ use polymesh_common_utilities::{ constants::currency::POLY, protocol_fee::ProtocolOp, SystematicIssuers, GC_DID, }; use polymesh_primitives::{ - cdd_id::InvestorUid, identity_id::GenesisIdentityRecord, AccountId, Identity, IdentityId, - PosRatio, Signatory, + cdd_id::InvestorUid, identity_id::GenesisIdentityRecord, AccountId, IdentityId, PosRatio, + SecondaryKey, Signatory, }; use sp_io::TestExternalities; use sp_runtime::{Perbill, Storage}; +use sp_std::prelude::Vec; use sp_std::{cell::RefCell, convert::From, iter}; use test_client::AccountKeyring; +/// Identity information. +#[derive(Default, Clone, PartialEq, Debug)] +pub struct IdentityRecord { + primary_key: AccountId, + secondary_keys: Vec>, +} + +impl IdentityRecord { + pub fn new(primary_key: AccountId, secondary_keys: Vec>) -> Self { + Self { + primary_key, + secondary_keys, + } + } +} + /// A prime number fee to test the split between multiple recipients. pub const PROTOCOL_OP_BASE_FEE: u128 = 41; @@ -106,7 +123,7 @@ pub struct ExtBuilder { governance_committee_members: Vec, governance_committee_vote_threshold: BuilderVoteThreshold, /// Regular users. Their DID will be generated. - regular_users: Vec>, + regular_users: Vec, protocol_base_fees: MockProtocolBaseFees, protocol_coefficient: PosRatio, @@ -209,7 +226,7 @@ impl ExtBuilder { } /// Adds DID to `users` accounts. - pub fn add_regular_users(mut self, users: &[Identity]) -> Self { + pub fn add_regular_users(mut self, users: &[IdentityRecord]) -> Self { self.regular_users.extend_from_slice(users); self } @@ -217,7 +234,10 @@ impl ExtBuilder { pub fn add_regular_users_from_accounts(mut self, accounts: &[AccountId]) -> Self { let identities = accounts .iter() - .map(|acc: &AccountId| Identity::new(acc.clone())) + .map(|acc: &AccountId| IdentityRecord { + primary_key: acc.clone(), + ..Default::default() + }) .collect::>(); self.regular_users.extend(identities); diff --git a/pallets/runtime/tests/src/identity_test.rs b/pallets/runtime/tests/src/identity_test.rs index 03d9714a7f..93edf9e206 100644 --- a/pallets/runtime/tests/src/identity_test.rs +++ b/pallets/runtime/tests/src/identity_test.rs @@ -3,23 +3,20 @@ use super::{ committee_test::gc_vmo, ext_builder::PROTOCOL_OP_BASE_FEE, storage::{ - add_secondary_key, add_secondary_key_with_perms, create_cdd_id_and_investor_uid, - get_identity_id, get_last_auth_id, provide_scope_claim, register_keyring_account, + account_from, add_secondary_key, add_secondary_key_with_perms, + create_cdd_id_and_investor_uid, get_identity_id, get_last_auth_id, get_primary_key, + get_secondary_keys, provide_scope_claim, register_keyring_account, register_keyring_account_with_balance, GovernanceCommittee, TestStorage, User, }, ExtBuilder, }; use codec::Encode; use confidential_identity::mocked::make_investor_uid as make_investor_uid_v2; -use core::iter; use frame_support::{ assert_noop, assert_ok, dispatch::DispatchResult, traits::Currency, StorageDoubleMap, - StorageMap, }; use pallet_asset::SecurityToken; use pallet_balances as balances; -use pallet_identity::types::DidRecords as RpcDidRecords; -use pallet_identity::{self as identity, DidRecords}; use polymesh_common_utilities::{ asset::AssetSubTrait, constants::currency::POLY, @@ -34,8 +31,8 @@ use polymesh_common_utilities::{ use polymesh_primitives::{ investor_zkproof_data::v2, AccountId, AssetPermissions, AuthorizationData, AuthorizationType, CddId, Claim, ClaimType, DispatchableName, ExtrinsicPermissions, IdentityClaim, IdentityId, - InvestorUid, PalletName, PalletPermissions, Permissions, PortfolioId, PortfolioNumber, Scope, - SecondaryKey, Signatory, SubsetRestriction, Ticker, TransactionError, + InvestorUid, KeyRecord, PalletName, PalletPermissions, Permissions, PortfolioId, + PortfolioNumber, Scope, SecondaryKey, Signatory, SubsetRestriction, Ticker, TransactionError, }; use polymesh_runtime_develop::runtime::{Call, CddHandler}; use sp_core::H512; @@ -43,10 +40,10 @@ use sp_runtime::transaction_validity::InvalidTransaction; use std::convert::{From, TryFrom}; use test_client::AccountKeyring; -type AuthorizationsGiven = identity::AuthorizationsGiven; +type AuthorizationsGiven = pallet_identity::AuthorizationsGiven; type Asset = pallet_asset::Module; type Balances = balances::Module; -type Identity = identity::Module; +type Identity = pallet_identity::Module; type MultiSig = pallet_multisig::Module; type System = frame_system::Pallet; type Timestamp = pallet_timestamp::Pallet; @@ -56,6 +53,9 @@ type CddServiceProviders = ::CddServiceProviders; type Error = pallet_identity::Error; type PError = pallet_permissions::Error; +const MAX_ASSETS: u64 = 2000; +const MAX_PORTFOLIOS: u64 = 2000; + // Identity Test Helper functions // ======================================= @@ -81,13 +81,6 @@ fn fetch_systematic_cdd(target: IdentityId) -> Option { ) } -fn get_secondary_keys(target: IdentityId) -> Vec> { - match Identity::get_did_records(target) { - RpcDidRecords::Success { secondary_keys, .. } => secondary_keys, - _ => vec![], - } -} - fn target_id_auth(user: User) -> (TargetIdAuthorization, u64) { let expires_at = 100u64; ( @@ -130,15 +123,15 @@ fn only_primary_or_secondary_keys_can_authenticate_as_an_identity() { let charlie = User::new_with(bob.did, AccountKeyring::Charlie); add_secondary_key(bob.did, charlie.acc()); - // Check primary key. `Signatory::Account` + // Check primary key. assert!(Identity::is_key_authorized(alice.did, &alice.acc())); - // Check secondary_keys. `Signatory::Account` + // Check secondary_keys. assert!(Identity::is_key_authorized(bob.did, &charlie.acc())); // Remove charlie's key from the secondary keys of bob. assert_ok!(Identity::remove_secondary_keys( bob.origin(), - vec![charlie.signatory_acc()] + vec![charlie.acc()] )); // Verify the secondary key was removed. @@ -256,7 +249,7 @@ fn only_primary_key_can_add_secondary_key_permissions_with_externalities() { add_secondary_key(alice.did, bob.acc()); let set = |by: User, to: User, perms| { - Identity::set_permission_to_signer(by.origin(), to.signatory_acc(), perms) + Identity::set_secondary_key_permissions(by.origin(), to.acc(), perms) }; // Only `alice` is able to update `bob`'s permissions and `charlie`'s permissions. @@ -301,9 +294,9 @@ fn do_add_permissions_to_multiple_tokens() { .collect(); let test_set_perms = |asset| { - assert_ok!(Identity::set_permission_to_signer( + assert_ok!(Identity::set_secondary_key_permissions( alice.origin(), - bob.signatory_acc(), + bob.acc(), Permissions { asset, ..Default::default() @@ -326,15 +319,15 @@ fn do_add_permissions_to_multiple_tokens() { } #[test] -fn set_permission_to_signer_with_bad_perms() { +fn set_secondary_key_permissions_with_bad_perms() { ExtBuilder::default().build().execute_with(|| { let alice = User::new(AccountKeyring::Alice); let bob = User::new_with(alice.did, AccountKeyring::Bob); add_secondary_key(alice.did, bob.acc()); test_with_bad_perms(alice.did, |perms| { - assert_too_long!(Identity::set_permission_to_signer( + assert_too_long!(Identity::set_secondary_key_permissions( alice.origin(), - bob.signatory_acc(), + bob.acc(), perms, )); }); @@ -379,9 +372,9 @@ fn freeze_secondary_keys_with_externalities() { add_secondary_key(alice.did, dave.acc()); // update permission of frozen keys. - assert_ok!(Identity::set_permission_to_signer( + assert_ok!(Identity::set_secondary_key_permissions( alice.origin(), - bob.signatory_acc(), + bob.acc(), Permissions::default().into(), )); @@ -420,15 +413,12 @@ fn remove_frozen_secondary_keys_with_externalities() { // Remove Bob's key. assert_ok!(Identity::remove_secondary_keys( alice.origin(), - vec![bob.signatory_acc()] + vec![bob.acc()] )); // Check DidRecord. assert_eq!( - Identity::did_records(alice.did).secondary_keys, - vec![SecondaryKey::new( - charlie.signatory_acc(), - Permissions::default() - )] + get_secondary_keys(alice.did), + vec![SecondaryKey::new(charlie.acc(), Permissions::default())] ); } @@ -598,7 +588,7 @@ fn do_add_secondary_keys_with_permissions_test() { let key_with_auth = SecondaryKeyWithAuth { auth_signature, - secondary_key: SecondaryKey::new(bob.signatory_acc(), permissions).into(), + secondary_key: SecondaryKey::new(bob.acc(), permissions).into(), }; assert_noop!( Identity::add_secondary_keys_with_authorization( @@ -609,7 +599,7 @@ fn do_add_secondary_keys_with_permissions_test() { Error::AlreadyLinked ); - // Check KeyToIdentityIds map + // Check KeyRecords map assert_eq!(Identity::get_identity(&bob.acc()), Some(alice.did)); // Check DidRecords @@ -620,7 +610,7 @@ fn do_add_secondary_keys_with_permissions_test() { TestStorage::set_current_identity(&alice.did); assert_ok!(Identity::remove_secondary_keys( alice.origin(), - vec![bob.signatory_acc()] + vec![bob.acc()] )); // Check DidRecord. @@ -649,7 +639,7 @@ fn do_remove_secondary_keys_test() { let did_of = |u: User| Identity::get_identity(&u.acc()); - // Check KeyToIdentityIds map + // Check KeyRecords map assert_eq!(did_of(bob), Some(alice.did)); assert_eq!(did_of(dave), Some(alice.did)); @@ -659,15 +649,14 @@ fn do_remove_secondary_keys_test() { // Try removing bob using alice. TestStorage::set_current_identity(&alice.did); - let remove_sk = - |u: User| Identity::remove_secondary_keys(alice.origin(), vec![u.signatory_acc()]); + let remove_sk = |u: User| Identity::remove_secondary_keys(alice.origin(), vec![u.acc()]); assert_ok!(remove_sk(bob)); // Try changing the permissions for bob's key. // This should fail. - let result = Identity::set_permission_to_signer( + let result = Identity::set_secondary_key_permissions( alice.origin(), - bob.signatory_acc(), + bob.acc(), Permissions::from_pallet_permissions(vec![PalletPermissions::entire_pallet( b"identity".into(), )]) @@ -752,10 +741,10 @@ fn do_remove_secondary_keys_test_with_externalities() { // Try removing bob using charlie TestStorage::set_current_identity(&charlie.did); - assert_ok!(Identity::remove_secondary_keys( - charlie.origin(), - vec![Signatory::Account(bob.acc())] - )); + assert_noop!( + Identity::remove_secondary_keys(charlie.origin(), vec![bob.acc()]), + Error::NotASigner + ); // Check DidRecord. assert_eq!(Identity::get_identity(&dave_key), None); @@ -766,7 +755,7 @@ fn do_remove_secondary_keys_test_with_externalities() { TestStorage::set_current_identity(&alice.did); assert_ok!(Identity::remove_secondary_keys( alice.origin(), - vec![Signatory::Account(bob.acc())] + vec![bob.acc()] )); // Check DidRecord. @@ -776,10 +765,7 @@ fn do_remove_secondary_keys_test_with_externalities() { // Try removing multisig while it has funds assert_noop!( - Identity::remove_secondary_keys( - alice.origin(), - vec![Signatory::Account(ms_address.clone())] - ), + Identity::remove_secondary_keys(alice.origin(), vec![ms_address.clone()]), Error::MultiSigHasBalance ); @@ -804,7 +790,7 @@ fn do_remove_secondary_keys_test_with_externalities() { // Empty multisig's funds and remove as signer assert_ok!(Identity::remove_secondary_keys( alice.origin(), - vec![Signatory::Account(ms_address.clone())] + vec![ms_address.clone()] )); // Check DidRecord. @@ -831,7 +817,7 @@ fn leave_identity_test_with_externalities() { let alice = User::new(AccountKeyring::Alice); let bob = User::new_with(alice.did, AccountKeyring::Bob); - let bob_sk = SecondaryKey::new(bob.signatory_acc(), Permissions::empty()); + let bob_sk = SecondaryKey::new(bob.acc(), Permissions::empty()); let dave_key = AccountKeyring::Dave.to_account_id(); let ms_address = MultiSig::get_next_multisig_address(alice.acc()); @@ -853,17 +839,14 @@ fn leave_identity_test_with_externalities() { add_secondary_key_with_perms(alice.did, bob.acc(), Permissions::empty()); // Check DidRecord. - assert_eq!( - Identity::did_records(alice.did).secondary_keys, - vec![bob_sk] - ); + assert_eq!(get_secondary_keys(alice.did), vec![bob_sk]); assert_eq!(Identity::get_identity(&bob.acc()), Some(alice.did)); // Bob leaves assert_ok!(Identity::leave_identity_as_key(bob.origin())); // Check DidRecord. - assert_eq!(Identity::did_records(alice.did).secondary_keys.len(), 0); + assert_eq!(get_secondary_keys(alice.did).len(), 0); assert_eq!(Identity::get_identity(&bob.acc()), None); assert_eq!(Identity::get_identity(&dave_key), None); assert_eq!(Identity::get_identity(&ms_address), None); @@ -982,12 +965,8 @@ fn one_step_join_id_with_ext() { assert_ok!(add(a, secondary_keys_with_auth[..2].to_owned())); - let secondary_keys = Identity::did_records(a.did).secondary_keys; - let contains = |u: User| { - secondary_keys - .iter() - .any(|si| si.signer == u.signatory_acc()) - }; + let secondary_keys = get_secondary_keys(a.did); + let contains = |u: User| secondary_keys.iter().any(|si| si.key == u.acc()); assert_eq!(contains(b), true); assert_eq!(contains(c), true); @@ -1007,7 +986,7 @@ fn one_step_join_id_with_ext() { let f = User::new(AccountKeyring::Ferdie); let (ferdie_auth, _) = target_id_auth(a); let ferdie_secondary_key_with_auth = SecondaryKeyWithAuth { - secondary_key: SecondaryKey::from(f.did).into(), + secondary_key: SecondaryKey::from_account_id(f.acc()).into(), auth_signature: H512::from(AccountKeyring::Eve.sign(ferdie_auth.encode().as_slice())), }; @@ -1043,12 +1022,12 @@ crate fn test_with_bad_ext_perms(test: impl Fn(ExtrinsicPermissions)) { crate fn test_with_bad_perms(did: IdentityId, test: impl Fn(Permissions)) { test(Permissions { - asset: SubsetRestriction::elems((0..=max_len() as u64).map(Ticker::generate_into)), + asset: SubsetRestriction::elems((0..=MAX_ASSETS).map(Ticker::generate_into)), ..<_>::default() }); test(Permissions { portfolio: SubsetRestriction::elems( - (0..=max_len() as u64) + (0..=MAX_PORTFOLIOS) .map(|n| PortfolioId::user_portfolio(did, PortfolioNumber::from(n))), ), ..<_>::default() @@ -1065,7 +1044,7 @@ crate fn test_with_bad_perms(did: IdentityId, test: impl Fn(Permissions)) { fn add_secondary_keys_with_authorization_too_many_sks() { ExtBuilder::default().build().execute_with(|| { let user = User::new(AccountKeyring::Alice); - let bob = User::new(AccountKeyring::Bob); + let bob = User::new_with(user.did, AccountKeyring::Bob); let expires_at = 100; let auth = || { @@ -1078,11 +1057,11 @@ fn add_secondary_keys_with_authorization_too_many_sks() { }; // Test various length problems in `Permissions`. - test_with_bad_perms(bob.did, |perms| { + test_with_bad_perms(user.did, |perms| { let auth_encoded = auth(); let auth_signature = H512::from(bob.ring.sign(&auth_encoded)); - let secondary_key = SecondaryKey::new(bob.did.into(), perms).into(); + let secondary_key = SecondaryKey::new(bob.acc(), perms); let auths = vec![SecondaryKeyWithAuth { auth_signature, secondary_key, @@ -1094,18 +1073,16 @@ fn add_secondary_keys_with_authorization_too_many_sks() { )); }); - // Populate with MAX SKs. - DidRecords::::mutate(user.did, |rec| { - let sk = SecondaryKey { - signer: Signatory::Account(rec.primary_key.clone()), - permissions: Permissions::empty(), - }; - rec.secondary_keys = iter::repeat(sk).take(max_len() as usize).collect(); - }); + // Populate with MAX_LEN secondary keys. + let key_record = KeyRecord::SecondaryKey(user.did, Permissions::empty()); + for idx in 0..max_len() { + let key = account_from(idx as u64 + 100); + Identity::add_key_record(&key, key_record.clone()); + } - // Fail at adding the {MAX + 1}th SK. + // No Secondary key limit. let auth_encoded = auth(); - assert_too_long!(Identity::add_secondary_keys_with_authorization( + assert_ok!(Identity::add_secondary_keys_with_authorization( user.origin(), secondary_keys_with_auth(&[bob], &auth_encoded), expires_at @@ -1129,7 +1106,7 @@ fn secondary_key_with_bad_permissions() { let bob = User::new_with(alice.did, AccountKeyring::Bob); test_with_bad_perms(bob.did, |perms| { - let bob_sk = SecondaryKey::new(bob.signatory_acc(), perms); + let bob_sk = SecondaryKey::new(bob.acc(), perms); assert_noop!( Identity::cdd_register_did( Origin::signed(cdd1.clone()), @@ -1249,10 +1226,12 @@ fn removing_authorizations() { false, )); assert!(!AuthorizationsGiven::contains_key(alice.did, auth_id)); - assert!(!>::contains_key( - bob.signatory_did(), - auth_id - )); + assert!( + !>::contains_key( + bob.signatory_did(), + auth_id + ) + ); }); } @@ -1270,7 +1249,7 @@ fn changing_primary_key_we() { let bob = User::new(AccountKeyring::Bob); // Primary key matches Alice's key - let alice_pk = || Identity::did_records(alice.did).primary_key; + let alice_pk = || get_primary_key(alice.did); assert_eq!(alice_pk(), alice.acc()); let add = |ring: AccountKeyring| { @@ -1327,7 +1306,7 @@ fn changing_primary_key_with_cdd_auth() { fn changing_primary_key_with_cdd_auth_we() { let alice = User::new(AccountKeyring::Alice); - let alice_pk = || Identity::did_records(alice.did).primary_key; + let alice_pk = || get_primary_key(alice.did); let new = User::new_with(alice.did, AccountKeyring::Bob); let cdd_did = get_identity_id(AccountKeyring::Eve).unwrap(); @@ -1390,7 +1369,7 @@ fn rotating_primary_key_to_secondary_we() { let charlie_origin = Origin::signed(charlie.to_account_id()); // Primary key matches Alice's key - let alice_pk = || Identity::did_records(alice.did).primary_key; + let alice_pk = || get_primary_key(alice.did); assert_eq!(alice_pk(), alice.acc()); let rotate = @@ -1414,7 +1393,7 @@ fn rotating_primary_key_to_secondary_we() { ); assert_ok!(rotate(charlie_origin.clone(), charlie_rotate_auth)); assert_eq!(alice_pk(), charlie.to_account_id()); - assert!(Identity::is_signer(alice.did, &alice.signatory_acc())); + assert!(Identity::is_secondary_key(alice.did, &alice.acc())); let alice_rotate_auth = Identity::add_auth( alice.did, @@ -1424,9 +1403,9 @@ fn rotating_primary_key_to_secondary_we() { ); assert_ok!(rotate(alice.origin(), alice_rotate_auth)); assert_eq!(alice_pk(), alice.acc()); - assert!(Identity::is_signer( + assert!(Identity::is_secondary_key( alice.did, - &Signatory::Account(charlie.to_account_id()) + &charlie.to_account_id() )); } @@ -1441,7 +1420,7 @@ fn rotating_primary_key_to_secondary_with_cdd_auth() { fn rotating_primary_key_to_secondary_with_cdd_auth_we() { let alice = User::new(AccountKeyring::Alice); - let alice_pk = || Identity::did_records(alice.did).primary_key; + let alice_pk = || get_primary_key(alice.did); let charlie = AccountKeyring::Charlie; let charlie_origin = Origin::signed(charlie.to_account_id()); @@ -1552,21 +1531,15 @@ fn cdd_register_did_test_we() { Balances::make_free_balance_be(&charlie, 10_000_000_000); assert_eq!(Identity::has_valid_cdd(charlie_id), true); - assert_eq!( - Identity::did_records(charlie_id).secondary_keys.is_empty(), - true - ); + assert_eq!(get_secondary_keys(charlie_id).is_empty(), true); - let dave_auth_id = get_last_auth_id(&dave_si.signer); + let dave_auth_id = get_last_auth_id(&Signatory::Account(dave_si.key.clone())); assert_ok!(Identity::join_identity_as_key( Origin::signed(dave), dave_auth_id )); - assert_eq!( - Identity::did_records(charlie_id).secondary_keys, - vec![dave_si.clone()] - ); + assert_eq!(get_secondary_keys(charlie_id), vec![dave_si.clone()]); } #[test] @@ -1615,18 +1588,18 @@ fn add_identity_signers() { Error::AlreadyLinked ); - let alice_secondary_keys = Identity::did_records(alice.did).secondary_keys; - let charlie_secondary_keys = Identity::did_records(charlie.did).secondary_keys; + let alice_secondary_keys = get_secondary_keys(alice.did); + let charlie_secondary_keys = get_secondary_keys(charlie.did); let mut dave_sk = SecondaryKey::from_account_id(AccountKeyring::Dave.to_account_id()); // Correct the permissions to ones set by `add_secondary_key`. dave_sk.permissions = Permissions::default(); assert!(alice_secondary_keys .iter() - .find(|si| si.signer == bob.signatory_acc()) + .find(|si| si.key == bob.acc()) .is_some()); assert!(charlie_secondary_keys .iter() - .find(|si| si.signer == bob.signatory_acc()) + .find(|si| si.key == bob.acc()) .is_none()); assert!(alice_secondary_keys .iter() @@ -1883,7 +1856,7 @@ fn add_permission_with_secondary_key() { // Add secondary keys. let sk = |acc: &AccountId| SecondaryKey { - signer: Signatory::Account(acc.clone()), + key: acc.clone(), permissions: Permissions::empty(), }; let sks = vec![sk(&bob_acc), sk(&charlie_acc)]; @@ -1914,7 +1887,7 @@ fn add_permission_with_secondary_key() { )); // check for permissions. - assert_eq!(Identity::did_records(alice_did).secondary_keys, sks); + assert_eq!(get_secondary_keys(alice_did), sks); }); } diff --git a/pallets/runtime/tests/src/multisig.rs b/pallets/runtime/tests/src/multisig.rs index 8cfbe77d5d..0fb7b12220 100644 --- a/pallets/runtime/tests/src/multisig.rs +++ b/pallets/runtime/tests/src/multisig.rs @@ -1,8 +1,8 @@ use super::{ next_block, storage::{ - add_secondary_key, get_last_auth_id, register_keyring_account, set_curr_did, Call, - TestStorage, User, + add_secondary_key, get_last_auth_id, get_primary_key, get_secondary_keys, + register_keyring_account, set_curr_did, Call, TestStorage, User, }, ExtBuilder, }; @@ -505,7 +505,7 @@ fn make_multisig_primary() { )); assert_eq!( - Identity::did_records(alice_did).primary_key, + get_primary_key(alice_did), AccountKeyring::Alice.to_account_id() ); @@ -520,7 +520,7 @@ fn make_multisig_primary() { None )); - assert_eq!(Identity::did_records(alice_did).primary_key, ms_address); + assert_eq!(get_primary_key(alice_did), ms_address); }); } @@ -541,7 +541,7 @@ fn rotate_multisig_primary_key_with_balance() { )); // Alice's primary key hasn't changed. - assert_eq!(Identity::did_records(alice.did).primary_key, alice.acc()); + assert_eq!(get_primary_key(alice.did), alice.acc()); // Bob can't make the MultiSig account his primary key. assert_noop!( @@ -557,7 +557,7 @@ fn rotate_multisig_primary_key_with_balance() { )); // Alice's primary key is now the MultiSig. - assert_eq!(Identity::did_records(alice.did).primary_key, ms_address); + assert_eq!(get_primary_key(alice.did), ms_address); // Fund the MultiSig. assert_ok!(Balances::transfer( @@ -595,14 +595,9 @@ fn make_multisig_secondary_key() { 1, )); // The desired secondary key record. - let multisig_secondary = - SecondaryKey::new(Signatory::Account(multisig.clone()), Permissions::empty()); - - let has_ms_sk = || { - Identity::did_records(alice.did) - .secondary_keys - .contains(&multisig_secondary) - }; + let multisig_secondary = SecondaryKey::new(multisig.clone(), Permissions::empty()); + + let has_ms_sk = || get_secondary_keys(alice.did).contains(&multisig_secondary); assert!(!has_ms_sk()); let mk_ms_signer = diff --git a/pallets/runtime/tests/src/settlement_test.rs b/pallets/runtime/tests/src/settlement_test.rs index abec72e129..cd406c474f 100644 --- a/pallets/runtime/tests/src/settlement_test.rs +++ b/pallets/runtime/tests/src/settlement_test.rs @@ -45,7 +45,6 @@ type OffChainSignature = AnySignature; type Origin = ::Origin; type Moment = ::Moment; type BlockNumber = ::BlockNumber; -type DidRecords = identity::DidRecords; type Settlement = pallet_settlement::Module; type System = frame_system::Pallet; type Error = pallet_settlement::Error; diff --git a/pallets/runtime/tests/src/staking/mock.rs b/pallets/runtime/tests/src/staking/mock.rs index 0755d18b48..c442191ea2 100644 --- a/pallets/runtime/tests/src/staking/mock.rs +++ b/pallets/runtime/tests/src/staking/mock.rs @@ -471,10 +471,6 @@ impl MultiSigSubTrait for Test { fn is_multisig(_account: &AccountId) -> bool { unimplemented!() } - fn is_signer(_key: &AccountId) -> bool { - // Allow all keys when mocked - false - } } impl PortfolioSubTrait for Test { @@ -971,23 +967,23 @@ pub(crate) fn active_era() -> EraIndex { } pub fn provide_did_to_user(account: AccountId) -> bool { - if >::contains_key(&account) { + if >::contains_key(&account) { return false; } let cdd_account_id = 1005; let cdd = Origin::signed(cdd_account_id); assert!( - >::contains_key(&cdd_account_id), + >::contains_key(&cdd_account_id), "CDD provider account not mapped to identity" ); - let cdd_did = >::get(&cdd_account_id); + let cdd_did = Identity::get_identity(&cdd_account_id).expect("CDD provider missing identity"); assert!( >::contains_key(&cdd_did), "CDD provider identity has no DID record" ); - let cdd_did_record = >::get(&cdd_did); + let cdd_did_record = >::get(&cdd_did).unwrap_or_default(); assert!( - cdd_did_record.primary_key == cdd_account_id, + cdd_did_record.primary_key == Some(cdd_account_id), "CDD identity primary key mismatch" ); assert!( @@ -1025,7 +1021,7 @@ pub fn add_secondary_key(stash_key: AccountId, to_secondary_key: AccountId) { } pub fn get_identity(key: AccountId) -> bool { - >::contains_key(&key) + >::contains_key(&key) } fn check_ledgers() { @@ -1578,6 +1574,10 @@ pub(crate) fn balances(who: &AccountId) -> (Balance, Balance) { (Balances::free_balance(who), Balances::reserved_balance(who)) } +fn get_primary_key(target: IdentityId) -> AccountId { + Identity::get_primary_key(target).unwrap_or_default() +} + pub fn make_account_with_uid( id: AccountId, ) -> Result<(::Origin, IdentityId), &'static str> { @@ -1597,7 +1597,7 @@ pub fn make_account_with_balance( let cdd_providers = Group::get_members(); let did = match cdd_providers.into_iter().nth(0) { Some(cdd_provider) => { - let cdd_acc = Identity::did_records(&cdd_provider).primary_key; + let cdd_acc = get_primary_key(cdd_provider); let _ = Identity::cdd_register_did(Origin::signed(cdd_acc), id, vec![]) .map_err(|_| "CDD register DID failed")?; let did = Identity::get_identity(&id).unwrap(); @@ -1638,7 +1638,7 @@ pub fn add_nominator_claim_with_expiry( } pub fn create_cdd_id_and_investor_uid(identity_id: IdentityId) -> (CddId, InvestorUid) { - let uid = create_investor_uid(Identity::did_records(identity_id).primary_key); + let uid = create_investor_uid(get_primary_key(identity_id)); let (cdd_id, _) = create_cdd_id(identity_id, Ticker::default(), uid); (cdd_id, uid) } diff --git a/pallets/runtime/tests/src/storage.rs b/pallets/runtime/tests/src/storage.rs index e880dea633..81a7d5a9fb 100644 --- a/pallets/runtime/tests/src/storage.rs +++ b/pallets/runtime/tests/src/storage.rs @@ -43,7 +43,7 @@ use polymesh_common_utilities::{ use polymesh_primitives::{ investor_zkproof_data::v1::InvestorZKProofData, AccountId, Authorization, AuthorizationData, BlockNumber, CddId, Claim, InvestorUid, Moment, Permissions as AuthPermissions, - PortfolioNumber, Scope, ScopeId, TrustedFor, TrustedIssuer, + PortfolioNumber, Scope, ScopeId, SecondaryKey, TrustedFor, TrustedIssuer, }; use polymesh_runtime_common::{ merge_active_and_inactive, @@ -695,7 +695,7 @@ pub fn make_account_with_balance( let cdd_providers = CddServiceProvider::get_members(); let did = match cdd_providers.into_iter().nth(0) { Some(cdd_provider) => { - let cdd_acc = Identity::did_records(&cdd_provider).primary_key; + let cdd_acc = get_primary_key(cdd_provider); let _ = Identity::cdd_register_did(Origin::signed(cdd_acc.clone()), id.clone(), vec![]) .map_err(|_| "CDD register DID failed")?; @@ -739,8 +739,19 @@ pub fn register_keyring_account_with_balance( make_account_with_balance(acc_id, uid, balance).map(|(_, id)| id) } +pub fn get_primary_key(target: IdentityId) -> AccountId { + Identity::get_primary_key(target).unwrap_or_default() +} + +pub fn get_secondary_keys(target: IdentityId) -> Vec> { + match Identity::get_did_records(target) { + RpcDidRecords::Success { secondary_keys, .. } => secondary_keys, + _ => vec![], + } +} + pub fn add_secondary_key_with_perms(did: IdentityId, acc: AccountId, perms: AuthPermissions) { - let _primary_key = Identity::did_records(&did).primary_key; + let _primary_key = get_primary_key(did); let auth_id = Identity::add_auth( did.clone(), Signatory::Account(acc.clone()), @@ -889,7 +900,7 @@ pub fn add_investor_uniqueness_claim( cdd_id: CddId, proof: InvestorZKProofData, ) -> DispatchResult { - let signed_claim_to = Origin::signed(Identity::did_records(claim_to).primary_key); + let signed_claim_to = Origin::signed(get_primary_key(claim_to)); // Provide the InvestorUniqueness. Identity::add_investor_uniqueness_claim( @@ -907,7 +918,7 @@ pub fn provide_scope_claim_to_multiple_parties<'a>( cdd_provider: AccountId, ) { parties.into_iter().for_each(|id| { - let uid = create_investor_uid(Identity::did_records(id).primary_key); + let uid = create_investor_uid(get_primary_key(*id)); provide_scope_claim(*id, ticker, uid, cdd_provider.clone(), None).0; }); } @@ -917,7 +928,7 @@ pub fn root() -> Origin { } pub fn create_cdd_id_and_investor_uid(identity_id: IdentityId) -> (CddId, InvestorUid) { - let uid = create_investor_uid(Identity::did_records(identity_id).primary_key); + let uid = create_investor_uid(get_primary_key(identity_id)); let (cdd_id, _) = create_cdd_id(identity_id, Ticker::default(), uid); (cdd_id, uid) } diff --git a/pallets/runtime/tests/src/utility_test.rs b/pallets/runtime/tests/src/utility_test.rs index eaa5a35742..c93710c9e8 100644 --- a/pallets/runtime/tests/src/utility_test.rs +++ b/pallets/runtime/tests/src/utility_test.rs @@ -2,8 +2,8 @@ use super::{ assert_event_doesnt_exist, assert_event_exists, assert_last_event, pips_test::assert_balance, storage::{ - add_secondary_key, register_keyring_account_with_balance, Call, EventTest, Identity, - Origin, Portfolio, System, TestStorage, User, Utility, + add_secondary_key, get_secondary_keys, register_keyring_account_with_balance, Call, + EventTest, Identity, Origin, Portfolio, System, TestStorage, User, Utility, }, ExtBuilder, }; @@ -294,12 +294,12 @@ fn batch_secondary_with_permissions() { extrinsic: SubsetRestriction::These(bob_pallet_permissions.into_iter().collect()), ..Permissions::default() }; - assert_ok!(Identity::set_permission_to_signer( + assert_ok!(Identity::set_secondary_key_permissions( alice.origin(), - bob.signatory_acc(), + bob.acc(), bob_permissions, )); - let bob_secondary_key = &Identity::did_records(&alice.did).secondary_keys[0]; + let bob_secondary_key = &get_secondary_keys(alice.did)[0]; let check_permission = |name: &[u8], t| { assert_eq!( t, diff --git a/pallets/test-utils/src/lib.rs b/pallets/test-utils/src/lib.rs index 857055eee2..da6781ebf2 100644 --- a/pallets/test-utils/src/lib.rs +++ b/pallets/test-utils/src/lib.rs @@ -184,9 +184,8 @@ impl TestUtilsFn for Module { fn register_did( target: T::AccountId, investor: InvestorUid, - secondary_keys: Vec>, + secondary_keys: Vec>, ) -> DispatchResult { - let keys = secondary_keys.into_iter().map(SecondaryKey::from).collect(); - Self::register_did(RawOrigin::Signed(target).into(), investor, keys) + Self::register_did(RawOrigin::Signed(target).into(), investor, secondary_keys) } } diff --git a/pallets/weights/src/pallet_identity.rs b/pallets/weights/src/pallet_identity.rs index 9f6039e898..82e9916270 100644 --- a/pallets/weights/src/pallet_identity.rs +++ b/pallets/weights/src/pallet_identity.rs @@ -113,7 +113,7 @@ impl pallet_identity::WeightInfo for WeightInfo { .saturating_add(DbWeight::get().reads(6 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } - fn set_permission_to_signer() -> Weight { + fn set_secondary_key_permissions() -> Weight { (45_961_000 as Weight) .saturating_add(DbWeight::get().reads(2 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) diff --git a/polymesh_schema.json b/polymesh_schema.json index 8b3c5d9b9d..fbb31944b5 100644 --- a/polymesh_schema.json +++ b/polymesh_schema.json @@ -143,16 +143,6 @@ "extrinsic": "ExtrinsicPermissions", "portfolio": "PortfolioPermissions" }, - "LegacyPalletPermissions": { - "pallet_name": "PalletName", - "total": "bool", - "dispatchable_names": "Vec" - }, - "LegacyPermissions": { - "asset": "Option>", - "extrinsic": "Option>", - "portfolio": "Option>" - }, "Signatory": { "_enum": { "Identity": "IdentityId", @@ -160,12 +150,12 @@ } }, "SecondaryKey": { - "signer": "Signatory", + "key": "AccountId", "permissions": "Permissions" }, "SecondaryKeyWithAuth": { "secondary_key": "SecondaryKey", - "auth_signature": "Signature" + "auth_signature": "H512" }, "Subsidy": { "paying_key": "AccountId", @@ -190,8 +180,14 @@ "secondary_key": "SecondaryKey" }, "DidRecord": { - "primary_key": "AccountId", - "secondary_keys": "Vec" + "primary_key": "Option" + }, + "KeyRecord": { + "_enum": { + "PrimaryKey": "IdentityId", + "SecondaryKey": "(IdentityId, Permissions)", + "MultiSigSignerKey": "AccountId" + } }, "KeyIdentityData": { "identity": "IdentityId", @@ -852,13 +848,13 @@ "Err": "Vec" } }, - "DidRecordsSuccess": { + "RpcDidRecordsSuccess": { "primary_key": "AccountId", "secondary_keys": "Vec" }, - "DidRecords": { + "RpcDidRecords": { "_enum": { - "Success": "DidRecordsSuccess", + "Success": "RpcDidRecordsSuccess", "IdNotFound": "Vec" } }, @@ -1293,7 +1289,7 @@ "isOptional": true } ], - "type": "DidRecords" + "type": "RpcDidRecords" }, "getDidStatus": { "description": "Retrieve status of the DID", diff --git a/primitives/src/identity.rs b/primitives/src/identity.rs index edd1225205..a04726505a 100644 --- a/primitives/src/identity.rs +++ b/primitives/src/identity.rs @@ -13,80 +13,29 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -use crate::{SecondaryKey, Signatory}; use codec::{Decode, Encode}; use scale_info::TypeInfo; -use sp_core::{crypto::Public as PublicType, sr25519::Public}; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; -use sp_std::{convert::From, prelude::Vec}; -/// Identity information. -#[allow(missing_docs)] -#[derive(Encode, Decode, Default, Clone, PartialEq, Debug, TypeInfo)] +/// Identity record. +/// +/// Used to check if an identity exists and lookup its primary key. +/// +/// Asset Identities don't have a primary key. +#[derive(Encode, Decode, TypeInfo)] +#[derive(Clone, Debug, Default, PartialEq, Eq)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -pub struct Identity { - pub primary_key: AccountId, - pub secondary_keys: Vec>, +pub struct DidRecord { + /// The identity's primary key, if it has one. + pub primary_key: Option, } -impl Identity -where - AccountId: Encode + Decode + Clone + Default + Eq + Ord, -{ - /// Creates an [`Identity`] from an `AccountId`. +impl DidRecord { + /// Creates an `DidRecord` from an `AccountId`. pub fn new(primary_key: AccountId) -> Self { - Identity { - primary_key, - ..Default::default() - } - } - - /// Check if `signer` is already a secondary key. - pub fn contains_secondary_key(&self, signer: &Signatory) -> bool { - self.secondary_keys.iter().any(|sk| sk.signer == *signer) - } - - /// It adds `new_secondary_keys` to `self`. - pub fn add_secondary_keys( - &mut self, - new_secondary_keys: impl IntoIterator>, - ) -> &mut Self { - self.secondary_keys.extend(new_secondary_keys); - - self - } - - /// It removes `keys_to_remove` from secondary keys. - pub fn remove_secondary_keys( - &mut self, - signers_to_remove: &[Signatory], - ) -> &mut Self { - self.secondary_keys.retain(|curr_si| { - signers_to_remove - .iter() - .find(|&signer| curr_si.signer == *signer) - .is_none() - }); - self - } - - /// Returns the complexity of the identity's permissions. - pub fn complexity(&self) -> usize { - self.secondary_keys - .iter() - .fold(0, |cost, key| cost.saturating_add(key.complexity())) - } -} - -impl From for Identity -where - AccountId: Encode + Decode + PublicType, -{ - fn from(p: Public) -> Self { - Identity { - primary_key: AccountId::from_slice(&p.0[..]), - ..Default::default() + Self { + primary_key: Some(primary_key), } } } diff --git a/primitives/src/identity_id.rs b/primitives/src/identity_id.rs index 7686e50b18..05905f3462 100644 --- a/primitives/src/identity_id.rs +++ b/primitives/src/identity_id.rs @@ -34,7 +34,7 @@ const UUID_LEN: usize = 32usize; /// The record to initialize an identity in the chain spec. #[derive(Default, Clone)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] -pub struct GenesisIdentityRecord { +pub struct GenesisIdentityRecord { /// Identity primary key. pub primary_key: AccountId, /// Secondary keys with permissions. diff --git a/primitives/src/lib.rs b/primitives/src/lib.rs index 8f981b4164..bda0ff1c39 100644 --- a/primitives/src/lib.rs +++ b/primitives/src/lib.rs @@ -169,7 +169,7 @@ pub use identity_id::{ /// Identity information. /// Each DID is associated with this kind of record. pub mod identity; -pub use identity::Identity; +pub use identity::DidRecord; /// Provides the `CheckedInc` trait. pub mod checked_inc; @@ -199,8 +199,8 @@ pub mod migrate; /// This module contains entities related with secondary keys. pub mod secondary_key; pub use secondary_key::{ - AssetPermissions, ExtrinsicPermissions, PalletPermissions, Permissions, PortfolioPermissions, - SecondaryKey, Signatory, + AssetPermissions, ExtrinsicPermissions, KeyRecord, PalletPermissions, Permissions, + PortfolioPermissions, SecondaryKey, Signatory, }; /// Subset type. diff --git a/primitives/src/secondary_key.rs b/primitives/src/secondary_key.rs index dbec08ca6f..2932e1d308 100644 --- a/primitives/src/secondary_key.rs +++ b/primitives/src/secondary_key.rs @@ -213,6 +213,72 @@ impl Permissions { } } +/// Account key record. +#[derive(Encode, Decode, TypeInfo)] +#[derive(Clone, Debug, PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] +pub enum KeyRecord { + /// Key is the primary key and has full permissions. + /// + /// (Key's identity) + PrimaryKey(IdentityId), + /// Key is a secondary key with the given permissions. + /// + /// (Key's identity, key's permissions) + SecondaryKey(IdentityId, Permissions), + /// Key is a MuliSig signer key. + /// + /// (MultiSig account id) + MultiSigSignerKey(AccountId), +} + +impl KeyRecord { + /// Check if the key is the primary key and return the identity. + pub fn is_primary_key(&self) -> Option { + if let Self::PrimaryKey(did) = self { + Some(*did) + } else { + None + } + } + + /// Check if the key is the secondary key and return the identity. + pub fn is_secondary_key(&self) -> Option { + if let Self::SecondaryKey(did, _) = self { + Some(*did) + } else { + None + } + } + + /// Get the identity and the key type (primary/secondary). + pub fn get_did_key_type(&self) -> Option<(IdentityId, bool)> { + match self { + Self::PrimaryKey(did) => Some((*did, true)), + Self::SecondaryKey(did, _) => Some((*did, false)), + _ => None, + } + } + + /// Get the identity if it is a primary/secondary key. + pub fn get_did(&self) -> Option { + match self { + Self::PrimaryKey(did) => Some(*did), + Self::SecondaryKey(did, _) => Some(*did), + _ => None, + } + } + + /// Convert `KeyRecord` into a `SecondaryKey`, if it is a secondary key. + pub fn into_secondary_key(self, key: AccountId) -> Option> { + if let Self::SecondaryKey(_did, permissions) = self { + Some(SecondaryKey { key, permissions }) + } else { + None + } + } +} + /// It supports different elements as a signer. #[allow(missing_docs)] #[derive(Encode, Decode, Copy, Clone, PartialEq, Eq, Debug, TypeInfo)] @@ -302,41 +368,47 @@ where } } -/// A secondary key is a signatory with defined permissions. -#[derive(Encode, Decode, Default, Clone, PartialEq, Eq, Debug, TypeInfo)] +/// A secondary key and its permissions. +#[derive(Encode, Decode, TypeInfo)] +#[derive(Clone, Debug, Default, PartialEq, Eq)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -pub struct SecondaryKey { - /// The account or identity that is the signatory of this key. - pub signer: Signatory, - /// The access permissions of the signing key. +pub struct SecondaryKey { + /// The account key. + pub key: AccountId, + /// The access permissions of the `key`. pub permissions: Permissions, } -impl SecondaryKey -where - AccountId: Encode + Decode, -{ +impl SecondaryKey { /// Creates a [`SecondaryKey`]. - pub fn new(signer: Signatory, permissions: Permissions) -> Self { - Self { - signer, - permissions, + pub fn new(key: AccountId, permissions: Permissions) -> Self { + Self { key, permissions } + } + + /// Convert from v1 `SecondaryKey`. + pub fn from_v1(old: v1::SecondaryKey) -> Option { + match old.signer { + Signatory::Account(key) => Some(Self { + key, + permissions: old.permissions, + }), + _ => None, } } - /// Creates a [`SecondaryKey`] from an `AccountId`. - pub fn from_account_id(s: AccountId) -> Self { + /// Creates a [`SecondaryKey`] with no permissions from an `AccountId`. + pub fn from_account_id(key: AccountId) -> Self { Self { - signer: Signatory::Account(s), + key, // No permissions. permissions: Permissions::empty(), } } /// Creates a [`SecondaryKey`] with full permissions from an `AccountId`. - pub fn from_account_id_with_full_perms(s: AccountId) -> Self { + pub fn from_account_id_with_full_perms(key: AccountId) -> Self { Self { - signer: Signatory::Account(s), + key, // Full permissions. permissions: Permissions::default(), } @@ -367,190 +439,35 @@ where pub fn complexity(&self) -> usize { self.permissions.complexity() } -} - -impl From for SecondaryKey -where - AccountId: Encode + Decode, -{ - fn from(id: IdentityId) -> Self { - Self { - signer: Signatory::Identity(id), - permissions: Permissions::empty(), - } - } -} -impl PartialEq for SecondaryKey -where - AccountId: Encode + Decode, -{ - fn eq(&self, other: &IdentityId) -> bool { - if let Signatory::Identity(id) = self.signer { - id == *other - } else { - false - } + /// Make a `KeyRecord` for this SecondaryKey. + pub fn make_key_record(&self, did: IdentityId) -> KeyRecord { + KeyRecord::SecondaryKey(did, self.permissions.clone()) } } -/// Hacks to workaround substrate and Polkadot.js restrictions/bugs. -pub mod api { - use super::{ - AssetPermissions, ExtrinsicPermissions, PalletPermissions, Permissions, - PortfolioPermissions, - }; - use crate::{DispatchableName, PalletName, Signatory, SubsetRestriction}; - use codec::{Decode, Encode}; - use scale_info::TypeInfo; - #[cfg(feature = "std")] - use sp_runtime::{Deserialize, Serialize}; - use sp_std::convert::TryInto; - use sp_std::vec::Vec; - - /// A permission to call functions within a given pallet. - #[derive(Decode, Encode, TypeInfo)] - #[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord)] - #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] - pub struct LegacyPalletPermissions { - /// The name of a pallet. - pub pallet_name: PalletName, - /// A workaround for https://github.com/polkadot-js/apps/issues/3632. - /// - /// - `total == false` - only the functions listed in `dispatchable_names` are allowed to be - /// called. - /// - /// - `total == true` - `dispatchable_names` is ignored. Such permissions allow any function in - /// `pallet_name` to be called. - pub total: bool, - /// A subset of function names within the pallet taken into account when `total == false`. - pub dispatchable_names: Vec, - } - - /// Extrinsic permissions. - #[derive(Decode, Encode, TypeInfo)] - #[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord)] - #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] - pub struct LegacyExtrinsicPermissions(pub Option>); - - /// Signing key permissions. - #[derive(Decode, Encode, TypeInfo)] - #[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord)] - #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] - pub struct LegacyPermissions { - /// The subset of assets under management. - pub asset: AssetPermissions, - /// The subset of callable extrinsics. - pub extrinsic: LegacyExtrinsicPermissions, - /// The subset of portfolios management. - pub portfolio: PortfolioPermissions, - } - - impl LegacyPermissions { - /// The empty permissions. - pub fn empty() -> Self { - Self { - asset: SubsetRestriction::empty(), - extrinsic: LegacyExtrinsicPermissions(Some(Vec::new())), - portfolio: SubsetRestriction::empty(), - } - } - - /// Return number of assets, portfolios, pallets, and extrinsics. - /// - /// This is used for weight calculation. - pub fn counts(&self) -> (u32, u32, u32, u32) { - // Count the number of assets. - let assets = self.asset.complexity().try_into().unwrap_or(u32::MAX); - // Count the number of portfolios. - let portfolios = self.portfolio.complexity().try_into().unwrap_or(u32::MAX); - // Count the number of pallets and total number of extrinsics. - let (pallets, extrinsics) = match &self.extrinsic.0 { - Some(pallets) => { - let num_pallets = pallets.len().try_into().unwrap_or(u32::MAX); - // Count all extrinsics. - let extrinsics = pallets - .iter() - .fold(0usize, |count, pallet| { - count.saturating_add(pallet.dispatchable_names.len()) - }) - .try_into() - .unwrap_or(u32::MAX); - (num_pallets, extrinsics) - } - None => (0, 0), - }; +/// Old v1 `SecondaryKey` type. +pub mod v1 { + use super::*; - (assets, portfolios, pallets, extrinsics) - } - } - - /// The same secondary key object without the extra trait constraints. - /// It is needed because it's not possible to define `decl_event!` - /// with the required restrictions on `AccountId` - #[derive(Encode, Decode, TypeInfo, Default, Clone, PartialEq, Eq, Debug)] - #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] + /// Old v1 secondary key. + #[derive(Encode, Decode, TypeInfo)] + #[derive(Clone, Default, PartialEq, Eq)] + #[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] pub struct SecondaryKey { - /// The account or identity that is the signatory of this key. + /// Signer. pub signer: Signatory, - /// The access permissions of the signing key. + /// Permissions. pub permissions: Permissions, } - impl From> for SecondaryKey - where - AccountId: Encode + Decode, - { - fn from(k: super::SecondaryKey) -> SecondaryKey { - SecondaryKey { - signer: k.signer, - permissions: k.permissions, - } - } - } - - impl From for PalletPermissions { - fn from(p: LegacyPalletPermissions) -> PalletPermissions { - PalletPermissions { - pallet_name: p.pallet_name, - dispatchable_names: if p.total { - SubsetRestriction::Whole - } else { - SubsetRestriction::These(p.dispatchable_names.into_iter().collect()) - }, - } - } - } - - impl From for ExtrinsicPermissions { - fn from(p: LegacyExtrinsicPermissions) -> ExtrinsicPermissions { - match p.0 { - Some(elems) => { - SubsetRestriction::These(elems.into_iter().map(|e| e.into()).collect()) - } - None => SubsetRestriction::Whole, - } - } - } - - impl From for Permissions { - fn from(p: LegacyPermissions) -> Permissions { - Permissions { - asset: p.asset.into(), - extrinsic: p.extrinsic.into(), - portfolio: p.portfolio.into(), - } - } - } - - impl From> for super::SecondaryKey - where - AccountId: Encode + Decode, - { - fn from(k: SecondaryKey) -> super::SecondaryKey { - super::SecondaryKey { - signer: k.signer, - permissions: k.permissions, + impl SecondaryKey { + /// Convert old `SecondaryKey` into `KeyRecord`. + pub fn into_key_record(self, did: IdentityId) -> Option<(AccountId, KeyRecord)> { + if let Signatory::Account(key) = self.signer { + Some((key, KeyRecord::SecondaryKey(did, self.permissions))) + } else { + None } } } @@ -566,7 +483,7 @@ mod tests { #[test] fn build_test() { let key = Public::from_raw([b'A'; 32]); - let rk1 = SecondaryKey::new(Signatory::Account(key.clone()), Permissions::empty()); + let rk1 = SecondaryKey::new(key.clone(), Permissions::empty()); let rk2 = SecondaryKey::from_account_id(key.clone()); assert_eq!(rk1, rk2); @@ -577,21 +494,12 @@ mod tests { 1u128, ))), }; - let rk3 = SecondaryKey::new(Signatory::Account(key.clone()), rk3_permissions.clone()); + let rk3 = SecondaryKey::new(key.clone(), rk3_permissions.clone()); assert_ne!(rk1, rk3); let mut rk4 = SecondaryKey::from_account_id(key); rk4.permissions = rk3_permissions; assert_eq!(rk3, rk4); - - let si1 = SecondaryKey::from(IdentityId::from(1u128)); - let si2 = SecondaryKey::from(IdentityId::from(1u128)); - assert_eq!(si1, si2); - - let si3 = SecondaryKey::from(IdentityId::from(2u128)); - assert_ne!(si1, si3); - - assert_ne!(si1, rk1); } #[test] @@ -606,8 +514,8 @@ mod tests { extrinsic: SubsetRestriction::Whole, portfolio: SubsetRestriction::elem(portfolio1), }; - let free_key = SecondaryKey::new(Signatory::Account(key.clone()), Permissions::default()); - let restricted_key = SecondaryKey::new(Signatory::Account(key), permissions.clone()); + let free_key = SecondaryKey::new(key.clone(), Permissions::default()); + let restricted_key = SecondaryKey::new(key, permissions.clone()); assert!(free_key.has_asset_permission(ticker2)); assert!(free_key .has_extrinsic_permission(&b"pallet".as_ref().into(), &b"function".as_ref().into())); diff --git a/rpc/runtime-api/src/identity.rs b/rpc/runtime-api/src/identity.rs index efb37c252f..87631948f6 100644 --- a/rpc/runtime-api/src/identity.rs +++ b/rpc/runtime-api/src/identity.rs @@ -1,15 +1,17 @@ use codec::Codec; -use pallet_identity::types::{AssetDidResult, CddStatus, DidRecords, DidStatus, KeyIdentityData}; -use polymesh_primitives::{Authorization, AuthorizationType}; +use pallet_identity::types::{ + v1, AssetDidResult, CddStatus, DidStatus, KeyIdentityData, RpcDidRecords, +}; +use polymesh_primitives::{Authorization, AuthorizationType, Signatory}; use sp_std::prelude::*; sp_api::decl_runtime_apis! { - pub trait IdentityApi where + /// Identity runtime API. + #[api_version(2)] + pub trait IdentityApi where IdentityId: Codec, Ticker: Codec, AccountId: Codec, - SecondaryKey: Codec, - Signatory: Codec, Moment: Codec { /// Returns CDD status of an identity @@ -19,11 +21,18 @@ sp_api::decl_runtime_apis! { fn get_asset_did(ticker: Ticker) -> AssetDidResult; /// Retrieve DidRecord for a given `did`. - fn get_did_records(did: IdentityId) -> DidRecords; + #[deprecated] + fn get_did_records(did: IdentityId) -> RpcDidRecords; + + /// Retrieve DidRecord for a given `did`. + /// + /// Old v1 call for `Signatory` based secondary keys. + #[changed_in(2)] + fn get_did_records(did: IdentityId) -> v1::RpcDidRecords; /// Retrieve list of a authorization for a given signatory fn get_filtered_authorizations( - signatory: Signatory, + signatory: Signatory, allow_expired: bool, auth_type: Option ) -> Vec>; diff --git a/rpc/src/identity.rs b/rpc/src/identity.rs index bad908ebbb..0066274813 100644 --- a/rpc/src/identity.rs +++ b/rpc/src/identity.rs @@ -1,14 +1,14 @@ pub use pallet_identity::types::{ - AssetDidResult, CddStatus, DidRecords, DidStatus, KeyIdentityData, + AssetDidResult, CddStatus, DidStatus, KeyIdentityData, RpcDidRecords, }; -use polymesh_primitives::{Authorization, AuthorizationType}; +use polymesh_primitives::{Authorization, AuthorizationType, Signatory}; pub use node_rpc_runtime_api::identity::IdentityApi as IdentityRuntimeApi; use codec::Codec; use jsonrpc_core::{Error as RpcError, ErrorCode, Result}; use jsonrpc_derive::rpc; -use sp_api::{ApiRef, ProvideRuntimeApi}; +use sp_api::{ApiExt, ApiRef, ProvideRuntimeApi}; use sp_blockchain::HeaderBackend; use sp_runtime::{ generic::BlockId, @@ -20,7 +20,7 @@ const MAX_IDENTITIES_ALLOWED_TO_QUERY: u32 = 500; /// Identity RPC methods #[rpc] -pub trait IdentityApi { +pub trait IdentityApi { /// Below function use to tell whether the given did has valid cdd claim or not #[rpc(name = "identity_isIdentityHasValidCdd")] fn is_identity_has_valid_cdd( @@ -40,13 +40,13 @@ pub trait IdentityApi, - ) -> Result>; + ) -> Result>; /// Retrieve the list of authorizations for a given signatory. #[rpc(name = "identity_getFilteredAuthorizations")] fn get_filtered_authorizations( &self, - signatory: Signatory, + signatory: Signatory, allow_expired: bool, auth_type: Option, at: Option, @@ -98,28 +98,18 @@ pub enum Error { RuntimeError, } -impl - IdentityApi< - ::Hash, - IdentityId, - Ticker, - AccountId, - SecondaryKey, - Signatory, - Moment, - > for Identity +impl + IdentityApi<::Hash, IdentityId, Ticker, AccountId, Moment> + for Identity where Block: BlockT, C: Send + Sync + 'static, C: ProvideRuntimeApi, C: HeaderBackend, - C::Api: - IdentityRuntimeApi, + C::Api: IdentityRuntimeApi, IdentityId: Codec, Ticker: Codec, AccountId: Codec, - SecondaryKey: Codec, - Signatory: Codec, Moment: Codec, { fn is_identity_has_valid_cdd( @@ -160,11 +150,40 @@ where &self, did: IdentityId, at: Option<::Hash>, - ) -> Result> { + ) -> Result> { let api = self.client.runtime_api(); let at = BlockId::hash(at.unwrap_or_else(|| self.client.info().best_hash)); + let api_version = api + .api_version::>( + &at, + ) + .map_err(|e| RpcError { + code: ErrorCode::ServerError(Error::RuntimeError as i64), + message: "Unable to fetch DID records".into(), + data: Some(format!("{:?}", e).into()), + })?; - api.get_did_records(&at, did).map_err(|e| RpcError { + match api_version { + Some(version) if version >= 2 => + { + #[allow(deprecated)] + api.get_did_records(&at, did) + } + Some(1) => + { + #[allow(deprecated)] + api.get_did_records_before_version_2(&at, did) + .map(|rec| rec.into()) + } + _ => { + return Err(RpcError { + code: ErrorCode::MethodNotFound, + message: format!("Cannot find `IdentityApi` for block {:?}", at), + data: None, + }) + } + } + .map_err(|e| RpcError { code: ErrorCode::ServerError(Error::RuntimeError as i64), message: "Unable to fetch DID records".into(), data: Some(format!("{:?}", e).into()), @@ -173,7 +192,7 @@ where fn get_filtered_authorizations( &self, - signatory: Signatory, + signatory: Signatory, allow_expired: bool, auth_type: Option, at: Option<::Hash>, diff --git a/scripts/cli/polymesh-meta.json b/scripts/cli/polymesh-meta.json index 82edfd1259..d7bd692f53 100644 --- a/scripts/cli/polymesh-meta.json +++ b/scripts/cli/polymesh-meta.json @@ -1 +1 @@ -{"jsonrpc":"2.0","result":"0x6d6574610ee10a000c1c73705f636f72651863727970746f2c4163636f756e7449643332000004000401205b75383b2033325d0000040000032000000008000800000503000c08306672616d655f73797374656d2c4163636f756e74496e666f0814496e64657801102c4163636f756e74446174610114001401146e6f6e6365100114496e646578000124636f6e73756d657273100120526566436f756e7400012470726f766964657273100120526566436f756e7400012c73756666696369656e7473100120526566436f756e740001106461746114012c4163636f756e74446174610000100000050500141064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e6365732c4163636f756e744461746100001001106672656518011c42616c616e6365000120726573657276656418011c42616c616e636500012c6d6973635f66726f7a656e18011c42616c616e63650001286665655f66726f7a656e18011c42616c616e636500001800000507001c0c346672616d655f737570706f72741c77656967687473405065724469737061746368436c6173730404540120000c01186e6f726d616c2001045400012c6f7065726174696f6e616c200104540001246d616e6461746f727920010454000020000005060024083c7072696d69746976655f74797065731048323536000004000401205b75383b2033325d00002800000208002c102873705f72756e74696d651c67656e6572696318646967657374184469676573740410486173680124000401106c6f67733001545665633c4469676573744974656d3c486173683e3e000030000002340034102873705f72756e74696d651c67656e6572696318646967657374284469676573744974656d0410486173680124011c3c4368616e67657354726965526f6f740400240110486173680002002850726552756e74696d650800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e00060024436f6e73656e7375730800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e000400105365616c0800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e000500444368616e676573547269655369676e616c04003c01444368616e676573547269655369676e616c000700144f74686572040028011c5665633c75383e0000006452756e74696d65456e7669726f6e6d656e745570646174656400080000380000030400000008003c102873705f72756e74696d651c67656e6572696318646967657374444368616e676573547269655369676e616c000104404e6577436f6e66696775726174696f6e04004001804f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e000000004004184f7074696f6e04045401440108104e6f6e6500000010536f6d650400440000010000440c1c73705f636f7265306368616e6765735f74726965604368616e67657354726965436f6e66696775726174696f6e000008013c6469676573745f696e74657276616c10010c7533320001346469676573745f6c6576656c7310010c7533320000480000024c004c08306672616d655f73797374656d2c4576656e745265636f7264080445015004540124000c011470686173656104011450686173650001146576656e7450010445000118746f70696373650401185665633c543e0000500c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d65144576656e7400019c1853797374656d04005401706672616d655f73797374656d3a3a4576656e743c52756e74696d653e0000001c496e6469636573040070017870616c6c65745f696e64696365733a3a4576656e743c52756e74696d653e0003002042616c616e636573040074017c70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d653e000500204964656e7469747904008c017c70616c6c65745f6964656e746974793a3a4576656e743c52756e74696d653e0007004c4364645365727669636550726f7669646572730400290101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365323e00080044506f6c796d657368436f6d6d69747465650400350101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365313e0009004c436f6d6d69747465654d656d626572736869700400490101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365313e000a0048546563686e6963616c436f6d6d69747465650400510101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365333e000b0070546563686e6963616c436f6d6d69747465654d656d626572736869700400590101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365333e000c004055706772616465436f6d6d69747465650400610101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365343e000d006855706772616465436f6d6d69747465654d656d626572736869700400690101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365343e000e00204d756c746953696704007101017c70616c6c65745f6d756c74697369673a3a4576656e743c52756e74696d653e000f001842726964676504007501017470616c6c65745f6272696467653a3a4576656e743c52756e74696d653e0010001c5374616b696e6704008901017870616c6c65745f7374616b696e673a3a4576656e743c52756e74696d653e001100204f6666656e63657304009d01015870616c6c65745f6f6666656e6365733a3a4576656e740012001c53657373696f6e0400a101015470616c6c65745f73657373696f6e3a3a4576656e740013001c4772616e6470610400a501015470616c6c65745f6772616e6470613a3a4576656e7400150020496d4f6e6c696e650400b901018070616c6c65745f696d5f6f6e6c696e653a3a4576656e743c52756e74696d653e001700105375646f0400dd01016c70616c6c65745f7375646f3a3a4576656e743c52756e74696d653e0019001441737365740400e101017070616c6c65745f61737365743a3a4576656e743c52756e74696d653e001a004c4361706974616c446973747269627574696f6e04006d02018870616c6c65745f6361706974616c5f646973747269627574696f6e3a3a4576656e74001b0028436865636b706f696e7404008502016070616c6c65745f636865636b706f696e743a3a4576656e74001c0044436f6d706c69616e63654d616e616765720400a502018070616c6c65745f636f6d706c69616e63655f6d616e616765723a3a4576656e74001d003c436f72706f72617465416374696f6e0400d902017c70616c6c65745f636f72706f726174655f616374696f6e733a3a4576656e74001e003c436f72706f7261746542616c6c6f7404000d03017870616c6c65745f636f72706f726174655f62616c6c6f743a3a4576656e74001f00105069707304004503016c70616c6c65745f706970733a3a4576656e743c52756e74696d653e00210024506f7274666f6c696f04008503015c70616c6c65745f706f7274666f6c696f3a3a4576656e740022002c50726f746f636f6c46656504009503018c70616c6c65745f70726f746f636f6c5f6665653a3a4576656e743c52756e74696d653e002300245363686564756c657204009d03018070616c6c65745f7363686564756c65723a3a4576656e743c52756e74696d653e00240028536574746c656d656e740400a503018470616c6c65745f736574746c656d656e743a3a4576656e743c52756e74696d653e00250028537461746973746963730400d103016070616c6c65745f737461746973746963733a3a4576656e740026000c53746f04001904016870616c6c65745f73746f3a3a4576656e743c52756e74696d653e00270020547265617375727904003504017c70616c6c65745f74726561737572793a3a4576656e743c52756e74696d653e0028001c5574696c69747904003904015470616c6c65745f7574696c6974793a3a4576656e74002900104261736504004904014870616c6c65745f626173653a3a4576656e74002a003845787465726e616c4167656e747304005104017470616c6c65745f65787465726e616c5f6167656e74733a3a4576656e74002b001c52656c6179657204005504017870616c6c65745f72656c617965723a3a4576656e743c52756e74696d653e002c001c5265776172647304005904017870616c6c65745f726577617264733a3a4576656e743c52756e74696d653e002d0024546573745574696c7304005d04018470616c6c65745f746573745f7574696c733a3a4576656e743c52756e74696d653e00320000540c306672616d655f73797374656d1870616c6c6574144576656e740404540001184045787472696e7369635375636365737304005801304469737061746368496e666f000004b4416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e205c5b696e666f5c5d3c45787472696e7369634661696c6564080064013444697370617463684572726f7200005801304469737061746368496e666f00010490416e2065787472696e736963206661696c65642e205c5b6572726f722c20696e666f5c5d2c436f64655570646174656400020450603a636f6465602077617320757064617465642e284e65774163636f756e740400000130543a3a4163636f756e7449640003047841206e6577205c5b6163636f756e745c5d2077617320637265617465642e344b696c6c65644163636f756e740400000130543a3a4163636f756e74496400040468416e205c5b6163636f756e745c5d20776173207265617065642e2052656d61726b65640800000130543a3a4163636f756e744964000024011c543a3a48617368000504d04f6e206f6e2d636861696e2072656d61726b2068617070656e65642e205c5b6f726967696e2c2072656d61726b5f686173685c5d04704576656e7420666f72207468652053797374656d2070616c6c65742e580c346672616d655f737570706f72741c77656967687473304469737061746368496e666f00000c0118776569676874200118576569676874000114636c6173735c01344469737061746368436c617373000120706179735f6665656001105061797300005c0c346672616d655f737570706f72741c77656967687473344469737061746368436c61737300010c184e6f726d616c0000002c4f7065726174696f6e616c000100244d616e6461746f727900020000600c346672616d655f737570706f72741c7765696768747310506179730001080c596573000000084e6f0001000064082873705f72756e74696d653444697370617463684572726f72000120144f746865720000003043616e6e6f744c6f6f6b7570000100244261644f726967696e000200184d6f64756c65080114696e64657808010875380001146572726f72080108753800030044436f6e73756d657252656d61696e696e670004002c4e6f50726f76696465727300050014546f6b656e0400680128546f6b656e4572726f720006002841726974686d6574696304006c013c41726974686d657469634572726f720007000068082873705f72756e74696d6528546f6b656e4572726f7200011c1c4e6f46756e647300000020576f756c644469650001003042656c6f774d696e696d756d0002003043616e6e6f7443726561746500030030556e6b6e6f776e41737365740004001846726f7a656e0005002c556e737570706f72746564000600006c082873705f72756e74696d653c41726974686d657469634572726f7200010c24556e646572666c6f77000000204f766572666c6f77000100384469766973696f6e42795a65726f00020000700c3870616c6c65745f696e64696365731870616c6c6574144576656e7404045400010c34496e64657841737369676e65640800000130543a3a4163636f756e744964000010013c543a3a4163636f756e74496e646578000004b041206163636f756e7420696e646578207761732061737369676e65642e205c5b696e6465782c2077686f5c5d28496e6465784672656564040010013c543a3a4163636f756e74496e646578000104e441206163636f756e7420696e64657820686173206265656e2066726565642075702028756e61737369676e6564292e205c5b696e6465785c5d2c496e64657846726f7a656e080010013c543a3a4163636f756e74496e6465780000000130543a3a4163636f756e744964000204250141206163636f756e7420696e64657820686173206265656e2066726f7a656e20746f206974732063757272656e74206163636f756e742049442e205c5b696e6465782c2077686f5c5d0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909741064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e636573205261774576656e7404244163636f756e7449640100011c1c456e646f7765640c007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000018011c42616c616e63650000043101416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e205c5b6469642c206163636f756e742c20667265655f62616c616e63655d205472616e7366657218007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e74496400007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000018011c42616c616e636500008001304f7074696f6e3c4d656d6f3e000104f45472616e7366657220737563636565646564202866726f6d5f6469642c2066726f6d2c20746f5f6469642c20746f2c2076616c75652c206d656d6f292e2842616c616e636553657410007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000018011c42616c616e6365000204d4412062616c616e6365207761732073657420627920726f6f7420286469642c2077686f2c20667265652c207265736572766564292e504163636f756e7442616c616e63654275726e65640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e63650003083d01546865206163636f756e7420616e642074686520616d6f756e74206f6620756e6c6f636b65642062616c616e6365206f662074686174206163636f756e74207468617420776173206275726e65642e8c2863616c6c65722049642c2063616c6c6572206163636f756e742c20616d6f756e742920526573657276656408000001244163636f756e744964000018011c42616c616e63650004041901536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e205c5b77686f2c2076616c75655d28556e726573657276656408000001244163636f756e744964000018011c42616c616e63650005042101536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e205c5b77686f2c2076616c75655d4852657365727665526570617472696174656410000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000088011853746174757300060c4d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652ea05c5b66726f6d2c20746f2c2062616c616e63652c2064657374696e6174696f6e5f7374617475735d085c4576656e747320666f722074686973206d6f64756c652e007804184f7074696f6e040454017c0108104e6f6e6500000010536f6d6504007c00000100007c0c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f6964284964656e746974794964000004000401385b75383b20555549445f4c454e5d00008004184f7074696f6e04045401840108104e6f6e6500000010536f6d650400840000010000841064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e636573104d656d6f000004000401205b75383b2033325d00008814346672616d655f737570706f72741874726169747318746f6b656e73106d6973633442616c616e63655374617475730001081046726565000000205265736572766564000100008c1064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479205261774576656e7408244163636f756e7449640100184d6f6d656e740120014c28446964437265617465640c007c01284964656e74697479496400000001244163636f756e74496400009001705665633c5365636f6e646172794b65793c4163636f756e7449643e3e000004ac4449442c207072696d617279206b6579206163636f756e742049442c207365636f6e64617279206b657973485365636f6e646172794b657973416464656408007c01284964656e74697479496400009001705665633c5365636f6e646172794b65793c4163636f756e7449643e3e000104344449442c206e6577206b657973505365636f6e646172794b65797352656d6f76656408007c01284964656e7469747949640000f001645665633c5369676e61746f72793c4163636f756e7449643e3e000204784449442c20746865206b657973207468617420676f742072656d6f766564285369676e65724c65667408007c01284964656e74697479496400009801505369676e61746f72793c4163636f756e7449643e000304ac41207369676e6572206c656674207468656972206964656e746974792e20286469642c207369676e657229785365636f6e646172794b65795065726d697373696f6e735570646174656410007c01284964656e746974794964000094015c5365636f6e646172794b65793c4163636f756e7449643e00009c012c5065726d697373696f6e7300009c012c5065726d697373696f6e7300040405014449442c2075706461746564207365636f6e64617279206b65792c2070726576696f7573207065726d697373696f6e732c206e6577207065726d697373696f6e73445072696d6172794b6579557064617465640c007c01284964656e74697479496400000001244163636f756e74496400000001244163636f756e7449640005049c4449442c206f6c64207072696d617279206b6579206163636f756e742049442c206e657720494428436c61696d416464656408007c01284964656e7469747949640000f401344964656e74697479436c61696d0006042c4449442c20636c61696d7330436c61696d5265766f6b656408007c01284964656e7469747949640000f401344964656e74697479436c61696d000704704449442c20436c61696d547970652c20436c61696d204973737565724841737365744469645265676973746572656408007c01284964656e7469747949640000a401185469636b65720008042441737365742044494448417574686f72697a6174696f6e416464656418007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e00000d0101444f7074696f6e3c4163636f756e7449643e000020010c753634000011010170417574686f72697a6174696f6e446174613c4163636f756e7449643e0000f801384f7074696f6e3c4d6f6d656e743e000908604e657720617574686f72697a6174696f6e2061646465642e310128617574686f72697365645f62792c207461726765745f6469642c207461726765745f6b65792c20617574685f69642c20617574686f72697a6174696f6e5f646174612c206578706972792950417574686f72697a6174696f6e5265766f6b65640c007801484f7074696f6e3c4964656e7469747949643e00000d0101444f7074696f6e3c4163636f756e7449643e000020010c753634000a08a0417574686f72697a6174696f6e207265766f6b65642062792074686520617574686f72697a65722eb828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e52656a65637465640c007801484f7074696f6e3c4964656e7469747949643e00000d0101444f7074696f6e3c4163636f756e7449643e000020010c753634000b08d8417574686f72697a6174696f6e2072656a65637465642062792074686520757365722077686f2077617320617574686f72697a65642eb828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e436f6e73756d65640c007801484f7074696f6e3c4964656e7469747949643e00000d0101444f7074696f6e3c4163636f756e7449643e000020010c753634000c085c417574686f72697a6174696f6e20636f6e73756d65642eb828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f696429704f6666436861696e417574686f72697a6174696f6e5265766f6b656408007c01284964656e74697479496400009801505369676e61746f72793c4163636f756e7449643e000d08a44f66662d636861696e20417574686f72697a6174696f6e20686173206265656e207265766f6b65642e7028546172676574204964656e746974792c205369676e61746f72792988436464526571756972656d656e74466f725072696d6172794b65795570646174656404001d010110626f6f6c000e040d0143444420726571756972656d656e7420666f72207570646174696e67207072696d617279206b6579206368616e6765642e20286e65775f726571756972656d656e742950436464436c61696d73496e76616c69646174656408007c01284964656e74697479496400002001184d6f6d656e74000f08410143444420636c61696d732067656e65726174656420627920604964656e74697479496460202861204344442050726f7669646572292068617665206265656e20696e76616c6964617465642066726f6d24604d6f6d656e74602e4c5365636f6e646172794b65797346726f7a656e04007c01284964656e746974794964001004c4416c6c205365636f6e64617279206b657973206f6620746865206964656e74697479204944206172652066726f7a656e2e545365636f6e646172794b657973556e66726f7a656e04007c01284964656e746974794964001104cc416c6c205365636f6e64617279206b657973206f6620746865206964656e746974792049442061726520756e66726f7a656e2e584d6f636b496e766573746f725549444372656174656408007c01284964656e74697479496400002101012c496e766573746f725569640012046c4d6f636b656420496e766573746f7255696420637265617465642e085c4576656e747320666f722074686973206d6f64756c652e0090000002940094104c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65790c617069305365636f6e646172794b657904244163636f756e7449640100000801187369676e65729801505369676e61746f72793c4163636f756e7449643e00012c7065726d697373696f6e739c012c5065726d697373696f6e730000980c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579245369676e61746f727904244163636f756e74496401000108204964656e7469747904007c01284964656e7469747949640000001c4163636f756e7404000001244163636f756e744964000100009c0c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65792c5065726d697373696f6e7300000c01146173736574a0014041737365745065726d697373696f6e7300012465787472696e736963b4015045787472696e7369635065726d697373696f6e73000124706f7274666f6c696fd80150506f7274666f6c696f5065726d697373696f6e730000a00c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101a4010c1457686f6c650000001454686573650400ac012c42547265655365743c413e000100184578636570740400ac012c42547265655365743c413e00020000a40c4c706f6c796d6573685f7072696d697469766573187469636b6572185469636b657200000400a801405b75383b205449434b45525f4c454e5d0000a80000030c0000000800ac0420425472656553657404045401a4000400b0000000b0000002a400b40c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101b8010c1457686f6c650000001454686573650400d0012c42547265655365743c413e000100184578636570740400d0012c42547265655365743c413e00020000b80c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65794450616c6c65745065726d697373696f6e73000008012c70616c6c65745f6e616d65bc012850616c6c65744e616d65000148646973706174636861626c655f6e616d6573c00144446973706174636861626c654e616d65730000bc084c706f6c796d6573685f7072696d6974697665732850616c6c65744e616d650000040028011c5665633c75383e0000c00c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101c4010c1457686f6c650000001454686573650400c8012c42547265655365743c413e000100184578636570740400c8012c42547265655365743c413e00020000c4084c706f6c796d6573685f7072696d69746976657340446973706174636861626c654e616d650000040028011c5665633c75383e0000c80420425472656553657404045401c4000400cc000000cc000002c400d00420425472656553657404045401b8000400d4000000d4000002b800d80c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101dc010c1457686f6c650000001454686573650400e8012c42547265655365743c413e000100184578636570740400e8012c42547265655365743c413e00020000dc0c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f69642c506f7274666f6c696f4964000008010c6469647c01284964656e7469747949640001106b696e64e00134506f7274666f6c696f4b696e640000e00c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f696434506f7274666f6c696f4b696e640001081c44656661756c7400000010557365720400e4013c506f7274666f6c696f4e756d62657200010000e40c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f69643c506f7274666f6c696f4e756d6265720000040020010c7536340000e80420425472656553657404045401dc000400ec000000ec000002dc00f00000029800f40c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d344964656e74697479436c61696d0000140130636c61696d5f6973737565727c01284964656e74697479496400013469737375616e63655f646174652001184d6f6d656e740001406c6173745f7570646174655f646174652001184d6f6d656e74000118657870697279f801384f7074696f6e3c4d6f6d656e743e000114636c61696dfc0114436c61696d0000f804184f7074696f6e04045401200108104e6f6e6500000010536f6d650400200000010000fc0c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d14436c61696d000130284163637265646974656404000101011453636f706500000024416666696c6961746504000101011453636f7065000100244275794c6f636b757004000101011453636f70650002002853656c6c4c6f636b757004000101011453636f706500030050437573746f6d657244756544696c6967656e63650400050101144364644964000400404b6e6f77596f7572437573746f6d657204000101011453636f7065000500304a7572697364696374696f6e08000901012c436f756e747279436f646500000101011453636f7065000600204578656d7074656404000101011453636f70650007001c426c6f636b656404000101011453636f706500080048496e766573746f72556e697175656e6573730c000101011453636f706500007c011c53636f706549640000050101144364644964000900184e6f44617461000a0050496e766573746f72556e697175656e65737356320400050101144364644964000b000001010c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d1453636f706500010c204964656e7469747904007c01284964656e746974794964000000185469636b65720400a401185469636b657200010018437573746f6d040028011c5665633c75383e0002000005010c4c706f6c796d6573685f7072696d697469766573186364645f6964144364644964000004000401205b75383b2033325d000009010c4c706f6c796d6573685f7072696d697469766573306a7572697364696374696f6e2c436f756e747279436f64650001e90308414600000008415800010008414c00020008445a00030008415300040008414400050008414f000600084149000700084151000800084147000900084152000a0008414d000b00084157000c00084155000d00084154000e0008415a000f0008425300100008424800110008424400120008424200130008425900140008424500150008425a00160008424a00170008424d00180008425400190008424f001a00084241001b00084257001c00084256001d00084252001e00085647001f0008494f00200008424e002100084247002200084246002300084249002400084b4800250008434d002600084341002700084356002800084b59002900084346002a00085444002b0008434c002c0008434e002d0008484b002e00084d4f002f0008435800300008434300310008434f003200084b4d00330008434700340008434400350008434b003600084352003700084349003800084852003900084355003a00084359003b0008435a003c0008444b003d0008444a003e0008444d003f0008444f00400008454300410008454700420008535600430008475100440008455200450008454500460008455400470008464b00480008464f00490008464a004a00084649004b00084652004c00084746004d00085046004e00085446004f0008474100500008474d00510008474500520008444500530008474800540008474900550008475200560008474c005700084744005800084750005900084755005a00084754005b00084747005c0008474e005d00084757005e00084759005f0008485400600008484d00610008564100620008484e00630008485500640008495300650008494e006600084944006700084952006800084951006900084945006a0008494d006b0008494c006c00084954006d00084a4d006e00084a50006f00084a45007000084a4f007100084b5a007200084b45007300084b49007400084b50007500084b52007600084b57007700084b47007800084c41007900084c56007a00084c42007b00084c53007c00084c52007d00084c59007e00084c49007f00084c54008000084c55008100084d4b008200084d47008300084d57008400084d59008500084d56008600084d4c008700084d54008800084d48008900084d51008a00084d52008b00084d55008c00085954008d00084d58008e0008464d008f00084d44009000084d43009100084d4e009200084d45009300084d53009400084d41009500084d5a009600084d4d009700084e41009800084e52009900084e50009a00084e4c009b0008414e009c00084e43009d00084e5a009e00084e49009f00084e4500a000084e4700a100084e5500a200084e4600a300084d5000a400084e4f00a500084f4d00a60008504b00a70008505700a80008505300a90008504100aa0008504700ab0008505900ac0008504500ad0008504800ae0008504e00af0008504c00b00008505400b10008505200b20008514100b30008524500b40008524f00b50008525500b60008525700b70008424c00b80008534800b900084b4e00ba00084c4300bb00084d4600bc0008504d00bd0008564300be0008575300bf0008534d00c00008535400c10008534100c20008534e00c30008525300c40008534300c50008534c00c60008534700c70008534b00c80008534900c90008534200ca0008534f00cb00085a4100cc0008475300cd0008535300ce0008455300cf00084c4b00d00008534400d10008535200d20008534a00d30008535a00d40008534500d50008434800d60008535900d70008545700d80008544a00d90008545a00da0008544800db0008544c00dc0008544700dd0008544b00de0008544f00df0008545400e00008544e00e10008545200e20008544d00e30008544300e40008545600e50008554700e60008554100e70008414500e80008474200e90008555300ea0008554d00eb0008555900ec0008555a00ed0008565500ee0008564500ef0008564e00f00008564900f10008574600f20008454800f30008594500f400085a4d00f500085a5700f60008425100f70008435700f80008535800f900000d0104184f7074696f6e04045401000108104e6f6e6500000010536f6d65040000000001000011010c4c706f6c796d6573685f7072696d69746976657334617574686f72697a6174696f6e44417574686f72697a6174696f6e4461746104244163636f756e74496401000128604174746573745072696d6172794b6579526f746174696f6e04007c01284964656e74697479496400000040526f746174655072696d6172794b6579000100385472616e736665725469636b65720400a401185469636b6572000200444164644d756c74695369675369676e657204000001244163636f756e744964000300585472616e7366657241737365744f776e6572736869700400a401185469636b6572000400304a6f696e4964656e7469747904009c012c5065726d697373696f6e7300050040506f7274666f6c696f437573746f64790400dc012c506f7274666f6c696f49640006002c4265636f6d654167656e740800a401185469636b65720000150101284167656e7447726f75700007004c41646452656c61796572506179696e674b65790c000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e63650008006c526f746174655072696d6172794b6579546f5365636f6e6461727904009c012c5065726d697373696f6e730009000015010c4c706f6c796d6573685f7072696d697469766573146167656e74284167656e7447726f75700001141046756c6c00000018437573746f6d04001901011041474964000100284578636570744d65746100020034506f6c796d657368563143414100030034506f6c796d65736856315049410004000019010c4c706f6c796d6573685f7072696d697469766573146167656e7410414749640000040010010c75333200001d01000005000021010c4c706f6c796d6573685f7072696d697469766573186364645f69642c496e766573746f7255696400000400250101205b75383b2031365d0000250100000310000000080029011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449012d01011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400003101013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e002d01083070616c6c65745f67726f757024496e7374616e6365320000000031010000027c003501084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d6265720110044901390101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800003101013c5665633c4964656e7469747949643e00003101013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e74697479496400002401104861736800003d0101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e003901084070616c6c65745f636f6d6d697474656524496e7374616e636531000000003d010418526573756c74080454014101044501640108084f6b04004101000000000c45727204006400000100004101000004000045010864706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573284d61796265426c6f636b042c426c6f636b4e756d6265720110010810536f6d65040010012c426c6f636b4e756d626572000000104e6f6e650001000049011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449014d01011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400003101013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e004d01083070616c6c65745f67726f757024496e7374616e636531000000005101084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d6265720110044901550101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800003101013c5665633c4964656e7469747949643e00003101013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e74697479496400002401104861736800003d0101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e005501084070616c6c65745f636f6d6d697474656524496e7374616e6365330000000059011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449015d01011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400003101013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e005d01083070616c6c65745f67726f757024496e7374616e636533000000006101084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d6265720110044901650101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800001d010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800003101013c5665633c4964656e7469747949643e00003101013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e74697479496400002401104861736800003d0101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e006501084070616c6c65745f636f6d6d697474656524496e7374616e6365340000000069011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449016d01011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400003101013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e006d01083070616c6c65745f67726f757024496e7374616e636534000000007101083c70616c6c65745f6d756c7469736967205261774576656e7404244163636f756e744964010001303c4d756c74695369674372656174656414007c01284964656e74697479496400000001244163636f756e74496400000001244163636f756e7449640000f001645665633c5369676e61746f72793c4163636f756e7449643e3e000020010c753634000008ac4576656e7420656d6974746564206166746572206372656174696f6e206f662061206d756c74697369672e6501417267756d656e74733a2063616c6c6572204449442c206d756c746973696720616464726573732c207369676e657273202870656e64696e6720617070726f76616c292c207369676e6174757265732072657175697265642e3450726f706f73616c41646465640c007c01284964656e74697479496400000001244163636f756e744964000020010c753634000108984576656e7420656d697474656420616674657220616464696e6720612070726f706f73616c2eb4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e4050726f706f73616c457865637574656410007c01284964656e74697479496400000001244163636f756e744964000020010c75363400001d010110626f6f6c000208a84576656e7420656d6974746564207768656e20612070726f706f73616c2069732065786563757465642ed4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442c20726573756c742e4c4d756c74695369675369676e657241646465640c007c01284964656e74697479496400000001244163636f756e74496400009801505369676e61746f72793c4163636f756e7449643e000308a04576656e7420656d6974746564207768656e2061207369676e61746f72792069732061646465642eb8417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206164646564207369676e65722e604d756c74695369675369676e6572417574686f72697a65640c007c01284964656e74697479496400000001244163636f756e74496400009801505369676e61746f72793c4163636f756e7449643e00040809014576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f727920697320617574686f72697a656420746f2062652061646465642ecc417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722e544d756c74695369675369676e657252656d6f7665640c007c01284964656e74697479496400000001244163636f756e74496400009801505369676e61746f72793c4163636f756e7449643e000508cc4576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f72792069732072656d6f7665642ec0417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2072656d6f766564207369676e65722e844d756c74695369675369676e61747572657352657175697265644368616e6765640c007c01284964656e74697479496400000001244163636f756e744964000020010c75363400060801014576656e7420656d6974746564207768656e20746865206e756d626572206f66207265717569726564207369676e617475726573206973206368616e6765642ee4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206e6577207265717569726564207369676e6174757265732e4050726f706f73616c417070726f76656410007c01284964656e74697479496400000001244163636f756e74496400009801505369676e61746f72793c4163636f756e7449643e000020010c753634000708b44576656e7420656d6974746564207768656e207468652070726f706f73616c2067657420617070726f7665642e0101417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e5450726f706f73616c52656a656374696f6e566f746510007c01284964656e74697479496400000001244163636f756e74496400009801505369676e61746f72793c4163636f756e7449643e000020010c7536340008080d014576656e7420656d6974746564207768656e206120766f7465206973206361737420696e206661766f72206f662072656a656374696e6720612070726f706f73616c2e0101417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e4050726f706f73616c52656a65637465640c007c01284964656e74697479496400000001244163636f756e744964000020010c753634000908a84576656e7420656d6974746564207768656e20612070726f706f73616c2069732072656a65637465642eb4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e5c50726f706f73616c457865637574696f6e4661696c6564040064013444697370617463684572726f72000a04e44576656e7420656d6974746564207768656e207468657265277320616e206572726f7220696e2070726f706f73616c20657865637574696f6e405363686564756c696e674661696c6564040064013444697370617463684572726f72000b04745363686564756c696e67206f662070726f706f73616c206661696c732e085c4576656e747320666f722074686973206d6f64756c652e007501083470616c6c65745f627269646765205261774576656e7408244163636f756e74496401002c426c6f636b4e756d6265720110014044436f6e74726f6c6c65724368616e67656408007c01284964656e74697479496400000001244163636f756e74496400000490436f6e6669726d6174696f6e206f662061207369676e657220736574206368616e67652e3041646d696e4368616e67656408007c01284964656e74697479496400000001244163636f756e74496400010474436f6e6669726d6174696f6e206f662041646d696e206368616e67652e3c54696d656c6f636b4368616e67656408007c01284964656e746974794964000010012c426c6f636b4e756d626572000204a0436f6e6669726d6174696f6e206f662064656661756c742074696d656c6f636b206368616e67652e1c4272696467656408007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e0003041d01436f6e6669726d6174696f6e206f6620504f4c59582075706772616465206f6e20506f6c796d6573682066726f6d20504f4c5920746f6b656e73206f6e20457468657265756d2e1846726f7a656e04007c01284964656e746974794964000404904e6f74696669636174696f6e206f6620667265657a696e6720746865206272696467652e20556e66726f7a656e04007c01284964656e746974794964000504984e6f74696669636174696f6e206f6620756e667265657a696e6720746865206272696467652e2046726f7a656e547808007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e0006049c4e6f74696669636174696f6e206f6620667265657a696e672061207472616e73616374696f6e2e28556e66726f7a656e547808007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e000704a44e6f74696669636174696f6e206f6620756e667265657a696e672061207472616e73616374696f6e2e3c4578656d70746564557064617465640c007c01284964656e74697479496400007c01284964656e74697479496400001d010110626f6f6c000804c44578656d7074696f6e20737461747573206f6620616e206964656e7469747920686173206265656e20757064617465642e484272696467654c696d6974557064617465640c007c01284964656e746974794964000018011c42616c616e6365000010012c426c6f636b4e756d62657200090478427269646765206c696d697420686173206265656e20757064617465642e2854787348616e646c656404007d0101985665633c284163636f756e7449642c207533322c2048616e646c65645478537461747573293e000a086101416e206576656e7420656d6974746564206166746572206120766563746f72206f66207472616e73616374696f6e732069732068616e646c65642e2054686520706172616d65746572206973206120766563746f72206f6651017475706c6573206f6620726563697069656e74206163636f756e742c20697473206e6f6e63652c20616e642074686520737461747573206f66207468652070726f636573736564207472616e73616374696f6e2e4442726964676554785363686564756c65640c007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e000010012c426c6f636b4e756d626572000b0450427269646765205478205363686564756c65642e5842726964676554785363686564756c654661696c65640c007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e000028011c5665633c75383e000c04744661696c656420746f207363686564756c65204272696467652054782e40467265657a6541646d696e416464656408007c01284964656e74697479496400000001244163636f756e744964000d048841206e657720667265657a652061646d696e20686173206265656e2061646465642e48467265657a6541646d696e52656d6f76656408007c01284964656e74697479496400000001244163636f756e744964000e04804120667265657a652061646d696e20686173206265656e2072656d6f7665642e24547852656d6f76656408007c01284964656e74697479496400007901014c42726964676554783c4163636f756e7449643e000f049c4e6f74696669636174696f6e206f662072656d6f76696e672061207472616e73616374696f6e2e085c4576656e747320666f722074686973206d6f64756c652e007901083470616c6c65745f627269646765204272696467655478041c4163636f756e740100001001146e6f6e636510010c753332000124726563697069656e7400011c4163636f756e74000118616d6f756e7418011c42616c616e636500011c74785f686173682401104832353600007d0100000281010081010000040c00108501008501083470616c6c65745f6272696467653c48616e646c656454785374617475730001081c53756363657373000000144572726f72040028011c5665633c75383e000100008901083870616c6c65745f7374616b696e67205261774576656e74081c42616c616e63650118244163636f756e74496401000144244572615061796f75740c00100120457261496e646578000018011c42616c616e6365000018011c42616c616e636500000c550154686520657261207061796f757420686173206265656e207365743b207468652066697273742062616c616e6365206973207468652076616c696461746f722d7061796f75743b20746865207365636f6e64206973c07468652072656d61696e6465722066726f6d20746865206d6178696d756d20616d6f756e74206f66207265776172642ea85c5b6572615f696e6465782c2076616c696461746f725f7061796f75742c2072656d61696e6465725c5d185265776172640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e63650001043901546865207374616b657220686173206265656e207265776172646564206279207468697320616d6f756e742e205c5b73746173685f6964656e746974792c2073746173682c20616d6f756e745c5d14536c61736808000001244163636f756e744964000018011c42616c616e636500020821014f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e545c5b76616c696461746f722c20616d6f756e745c5d684f6c64536c617368696e675265706f7274446973636172646564040010013053657373696f6e496e6465780003081901416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c648c6e6f742062652070726f6365737365642e205c5b73657373696f6e5f696e6465785c5d3c5374616b696e67456c656374696f6e04008d01013c456c656374696f6e436f6d70757465000404f041206e657720736574206f66207374616b6572732077617320656c656374656420776974682074686520676976656e205c5b636f6d707574655c5d2e38536f6c7574696f6e53746f72656404008d01013c456c656374696f6e436f6d70757465000504150141206e657720736f6c7574696f6e20666f7220746865207570636f6d696e6720656c656374696f6e20686173206265656e2073746f7265642e205c5b636f6d707574655c5d18426f6e6465640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000610e4416e206163636f756e742068617320626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d004d014e4f54453a2054686973206576656e74206973206f6e6c7920656d6974746564207768656e2066756e64732061726520626f6e64656420766961206120646973706174636861626c652e204e6f7461626c792c210169742077696c6c206e6f7420626520656d697474656420666f72207374616b696e672072657761726473207768656e20746865792061726520616464656420746f207374616b652e20556e626f6e6465640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000704ec416e206163636f756e742068617320756e626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d244e6f6d696e617465640c007c01284964656e74697479496400000001244163636f756e7449640000910101385665633c4163636f756e7449643e0008048855736572206861732075706461746564207468656972206e6f6d696e6174696f6e732457697468647261776e08000001244163636f756e744964000018011c42616c616e63650009085901416e206163636f756e74206861732063616c6c6564206077697468647261775f756e626f6e6465646020616e642072656d6f76656420756e626f6e64696e67206368756e6b7320776f727468206042616c616e636560ac66726f6d2074686520756e6c6f636b696e672071756575652e205c5b73746173682c20616d6f756e745c5d645065726d697373696f6e65644964656e74697479416464656408007c01284964656e74697479496400007c01284964656e746974794964000a08ec416e20444944206861732069737375656420612063616e6469646163792e2053656520746865207472616e73616374696f6e20666f722077686f2e8c4743206964656e74697479202c2056616c696461746f722773206964656e746974792e6c5065726d697373696f6e65644964656e7469747952656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000b08e854686520676976656e206d656d626572207761732072656d6f7665642e2053656520746865207472616e73616374696f6e20666f722077686f2e8c4743206964656e74697479202c2056616c696461746f722773206964656e746974792e54496e76616c6964617465644e6f6d696e61746f72730c007c01284964656e74697479496400000001244163636f756e7449640000910101385665633c4163636f756e7449643e000c081d0152656d6f766520746865206e6f6d696e61746f72732066726f6d207468652076616c6964206e6f6d696e61746f7273207768656e2074686572652043444420657870697265642e9443616c6c65722c205374617368206163636f756e744964206f66206e6f6d696e61746f727350436f6d6d697373696f6e436170557064617465640c007c01284964656e74697479496400009501011c50657262696c6c00009501011c50657262696c6c000d08805768656e20636f6d6d697373696f6e206361702067657420757064617465642e58286f6c642076616c75652c206e65772076616c7565296c4d696e696d756d426f6e645468726573686f6c645570646174656408007801484f7074696f6e3c4964656e7469747949643e000018011c42616c616e6365000e04ac4d696e20626f6e64207468726573686f6c6420776173207570646174656420286e65772076616c7565292e885265776172645061796d656e745363686564756c696e67496e7465727275707465640c000001244163636f756e7449640000100120457261496e646578000064013444697370617463684572726f72000f04cc5768656e207363686564756c696e67206f6620726577617264207061796d656e74732067657420696e7465727275707465642e64536c617368696e67416c6c6f776564466f724368616e676564040099010138536c617368696e675377697463680010049055706461746520666f722077686f6d2062616c616e63652067657420736c61736865642e085c4576656e747320666f722074686973206d6f64756c652e008d01083870616c6c65745f7374616b696e673c456c656374696f6e436f6d7075746500010c1c4f6e436861696e000000185369676e656400010020556e7369676e6564000200009101000002000095010c3473705f61726974686d65746963287065725f7468696e67731c50657262696c6c0000040010010c75333200009901083870616c6c65745f7374616b696e6738536c617368696e6753776974636800010c2456616c696461746f720000005456616c696461746f72416e644e6f6d696e61746f72000100104e6f6e65000200009d010c3c70616c6c65745f6f6666656e6365731870616c6c6574144576656e740001041c4f6666656e63650800250101104b696e6400002801384f706171756554696d65536c6f7400000c5101546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e643501286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e4c5c5b6b696e642c2074696d65736c6f745c5d2e04304576656e747320747970652ea1010c3870616c6c65745f73657373696f6e1870616c6c6574144576656e74000104284e657753657373696f6e040010013053657373696f6e496e64657800000849014e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e7420697320746865205c5b73657373696f6e5f696e6465785c5d2c206e6f74207468659c626c6f636b206e756d626572206173207468652074797065206d6967687420737567676573742e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909a5010c3870616c6c65745f6772616e6470611870616c6c6574144576656e7400010c384e6577417574686f7269746965730400a9010134417574686f726974794c697374000004d44e657720617574686f726974792073657420686173206265656e206170706c6965642e205c5b617574686f726974795f7365745c5d185061757365640001049843757272656e7420617574686f726974792073657420686173206265656e207061757365642e1c526573756d65640002049c43757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909a901000002ad0100ad0100000408b1012000b1010c4c73705f66696e616c6974795f6772616e6470610c617070185075626c696300000400b501013c656432353531393a3a5075626c69630000b5010c1c73705f636f72651c65643235353139185075626c6963000004000401205b75383b2033325d0000b9010c4070616c6c65745f696d5f6f6e6c696e651870616c6c6574144576656e7404045400010c4448656172746265617452656365697665640400bd010138543a3a417574686f726974794964000004010141206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f72697479496460205c5b617574686f726974795f69645c5d1c416c6c476f6f64000104d041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2c536f6d654f66666c696e650400c501016c5665633c4964656e74696669636174696f6e5475706c653c543e3e000204390141742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e652076616c696461746f722077617320666f756e6420746f206265205c5b6f66666c696e655c5d2e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909bd01104070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139185075626c696300000400c101013c737232353531393a3a5075626c69630000c1010c1c73705f636f72651c73723235353139185075626c6963000004000401205b75383b2033325d0000c501000002c90100c9010000040800cd0100cd01083870616c6c65745f7374616b696e67204578706f7375726508244163636f756e74496401001c42616c616e63650118000c0114746f74616cd101011c42616c616e636500010c6f776ed101011c42616c616e63650001186f7468657273d50101ac5665633c496e646976696475616c4578706f737572653c4163636f756e7449642c2042616c616e63653e3e0000d1010000061800d501000002d90100d901083870616c6c65745f7374616b696e6748496e646976696475616c4578706f7375726508244163636f756e74496401001c42616c616e636501180008010c77686f0001244163636f756e74496400011476616c7565d101011c42616c616e63650000dd01082c70616c6c65745f7375646f205261774576656e7404244163636f756e7449640100010c14537564696404003d0101384469737061746368526573756c740000048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d284b65794368616e67656404000001244163636f756e744964000104fc546865205c5b7375646f65725c5d206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e285375646f4173446f6e6504003d0101384469737061746368526573756c740002048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d085c4576656e747320666f722074686973206d6f64756c652e00e1011064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473146173736574205261774576656e7408184d6f6d656e740120244163636f756e74496401000168205472616e7366657214007c01284964656e7469747949640000a401185469636b65720000dc012c506f7274666f6c696f49640000dc012c506f7274666f6c696f4964000018011c42616c616e6365000008744576656e7420666f72207472616e73666572206f6620746f6b656e732edc63616c6c6572204449442c207469636b65722c2066726f6d20706f7274666f6c696f2c20746f20706f7274666f6c696f2c2076616c75651849737375656418007c01284964656e7469747949640000a401185469636b657200007c01284964656e746974794964000018011c42616c616e63650000e501014046756e64696e67526f756e644e616d65000018011c42616c616e636500010870456d6974207768656e20746f6b656e7320676574206973737565642e750163616c6c6572204449442c207469636b65722c2062656e6566696369617279204449442c2076616c75652c2066756e64696e6720726f756e642c20746f74616c2069737375656420696e20746869732066756e64696e6720726f756e642052656465656d656410007c01284964656e7469747949640000a401185469636b657200007c01284964656e746974794964000018011c42616c616e636500020878456d6974207768656e20746f6b656e73206765742072656465656d65642e9063616c6c6572204449442c207469636b65722c202066726f6d204449442c2076616c75653041737365744372656174656418007c01284964656e7469747949640000a401185469636b657200001d010110626f6f6c0000e901012441737365745479706500007c01284964656e74697479496400001d010110626f6f6c000308804576656e7420666f72206372656174696f6e206f66207468652061737365742e950163616c6c6572204449442f206f776e6572204449442c207469636b65722c2064697669736962696c6974792c20617373657420747970652c2062656e6566696369617279204449442c2064697361626c6520696e766573746f7220756e697175656e657373484964656e74696669657273557064617465640c007c01284964656e7469747949640000a401185469636b65720000f10101505665633c41737365744964656e7469666965723e000408d44576656e7420656d6974746564207768656e20616e7920746f6b656e206964656e746966696572732061726520757064617465642e0d0163616c6c6572204449442c207469636b65722c206120766563746f72206f6620286964656e74696669657220747970652c206964656e7469666965722076616c7565294c44697669736962696c6974794368616e6765640c007c01284964656e7469747949640000a401185469636b657200001d010110626f6f6c000508844576656e7420666f72206368616e676520696e2064697669736962696c6974792e8063616c6c6572204449442c207469636b65722c2064697669736962696c697479405472616e73666572576974684461746118007c01284964656e7469747949640000a401185469636b657200007c01284964656e74697479496400007c01284964656e746974794964000018011c42616c616e6365000028011c5665633c75383e0006083501416e206164646974696f6e616c206576656e7420746f205472616e736665723b20656d6974746564207768656e20607472616e736665725f776974685f64617461602069732063616c6c65642ec863616c6c657220444944202c207469636b65722c2066726f6d204449442c20746f204449442c2076616c75652c20646174612849734973737561626c650800a401185469636b657200001d010110626f6f6c0007085069735f6973737561626c652829206f75747075749c7469636b65722c2072657475726e2076616c7565202874727565206966206973737561626c6529405469636b6572526567697374657265640c007c01284964656e7469747949640000a401185469636b65720000f801384f7074696f6e3c4d6f6d656e743e0008087c456d6974207768656e207469636b657220697320726567697374657265642eec63616c6c657220444944202f207469636b6572206f776e6572206469642c207469636b65722c207469636b6572206f776e65722c20657870697279445469636b65725472616e736665727265640c007c01284964656e7469747949640000a401185469636b657200007c01284964656e74697479496400090880456d6974207768656e207469636b6572206973207472616e736665727265642ed063616c6c657220444944202f207469636b6572207472616e7366657272656420746f204449442c207469636b65722c2066726f6d6441737365744f776e6572736869705472616e736665727265640c007c01284964656e7469747949640000a401185469636b657200007c01284964656e746974794964000a08a4456d6974207768656e20746f6b656e206f776e657273686970206973207472616e736665727265642ef463616c6c657220444944202f20746f6b656e206f776e657273686970207472616e7366657272656420746f204449442c207469636b65722c2066726f6d2c417373657446726f7a656e08007c01284964656e7469747949640000a401185469636b6572000b08a4416e206576656e7420656d6974746564207768656e20616e2061737365742069732066726f7a656e2e78506172616d657465723a2063616c6c6572204449442c207469636b65722e344173736574556e66726f7a656e08007c01284964656e7469747949640000a401185469636b6572000c08ac416e206576656e7420656d6974746564207768656e20616e20617373657420697320756e66726f7a656e2e78506172616d657465723a2063616c6c6572204449442c207469636b65722e30417373657452656e616d65640c007c01284964656e7469747949640000a401185469636b657200000102012441737365744e616d65000d08a4416e206576656e7420656d6974746564207768656e206120746f6b656e2069732072656e616d65642ebc506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720746f6b656e206e616d652e3c46756e64696e67526f756e645365740c007c01284964656e7469747949640000a401185469636b65720000e501014046756e64696e67526f756e644e616d65000e081101416e206576656e74206361727279696e6720746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e64206f662061207469636b65722ecc506172616d65746572733a2063616c6c6572204449442c207469636b65722c2066756e64696e6720726f756e64206e616d652e34446f63756d656e74416464656410007c01284964656e7469747949640000a401185469636b6572000005020128446f63756d656e744964000009020120446f63756d656e74000f048c41206e657720646f63756d656e7420617474616368656420746f20616e2061737365743c446f63756d656e7452656d6f7665640c007c01284964656e7469747949640000a401185469636b6572000005020128446f63756d656e744964001004804120646f63756d656e742072656d6f7665642066726f6d20616e20617373657440457874656e73696f6e52656d6f7665640c007c01284964656e7469747949640000a401185469636b657200000001244163636f756e744964001108604120657874656e73696f6e20676f742072656d6f7665642e7463616c6c6572204449442c207469636b65722c204163636f756e74496450436c61737369635469636b6572436c61696d65640c007c01284964656e7469747949640000a401185469636b657200003502013c457468657265756d4164647265737300120435014120506f6c796d61746820436c617373696320746f6b656e2077617320636c61696d656420616e64207472616e7366657272656420746f2061206e6f6e2d73797374656d61746963204449442e48436f6e74726f6c6c65725472616e7366657210007c01284964656e7469747949640000a401185469636b65720000dc012c506f7274666f6c696f4964000018011c42616c616e6365001308b44576656e7420666f72207768656e206120666f72636564207472616e736665722074616b657320706c6163652e150163616c6c6572204449442f20636f6e74726f6c6c6572204449442c207469636b65722c20506f7274666f6c696f206f6620746f6b656e20686f6c6465722c2076616c75652e54437573746f6d4173736574547970654578697374730c007c01284964656e7469747949640000ed010144437573746f6d4173736574547970654964000028011c5665633c75383e001408b04120637573746f6d206173736574207479706520616c726561647920657869737473206f6e2d636861696e2e310163616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e64437573746f6d417373657454797065526567697374657265640c007c01284964656e7469747949640000ed010144437573746f6d4173736574547970654964000028011c5665633c75383e001508b04120637573746f6d2061737365742074797065207761732072656769737465726564206f6e2d636861696e2e310163616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e5453657441737365744d6574616461746156616c756510007c01284964656e7469747949640000a401185469636b657200003902014841737365744d6574616461746156616c756500003d0201a04f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c4d6f6d656e743e3e00160864536574206173736574206d657461646174612076616c75652ef02843616c6c6572204449442c207469636b65722c206d657461646174612076616c75652c206f7074696f6e616c2076616c75652064657461696c73297053657441737365744d6574616461746156616c756544657461696c730c007c01284964656e7469747949640000a401185469636b657200004102018041737365744d6574616461746156616c756544657461696c3c4d6f6d656e743e001708dc536574206173736574206d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e8c2843616c6c6572204449442c207469636b65722c2076616c75652064657461696c732978526567697374657241737365744d657461646174614c6f63616c5479706514007c01284964656e7469747949640000a401185469636b657200004902014441737365744d657461646174614e616d6500004d02015441737365744d657461646174614c6f63616c4b657900005102014441737365744d65746164617461537065630018088c5265676973746572206173736574206d65746164617461206c6f63616c20747970652e05012843616c6c6572204449442c207469636b65722c204c6f63616c2074797065206e616d652c204c6f63616c2074797065206b65792c2074797065207370656373297c526567697374657241737365744d65746164617461476c6f62616c547970650c004902014441737365744d657461646174614e616d6500006902015841737365744d65746164617461476c6f62616c4b657900005102014441737365744d6574616461746153706563001908905265676973746572206173736574206d6574616461746120676c6f62616c20747970652ebc28476c6f62616c2074797065206e616d652c20476c6f62616c2074797065206b65792c207479706520737065637329085c4576656e747320666f722074686973206d6f64756c652e00e5010c4c706f6c796d6573685f7072696d6974697665731461737365744046756e64696e67526f756e644e616d650000040028011c5665633c75383e0000e9010c4c706f6c796d6573685f7072696d6974697665731461737365742441737365745479706500012c30457175697479436f6d6d6f6e0000003c45717569747950726566657272656400010024436f6d6d6f646974790002002c4669786564496e636f6d6500030010524549540004001046756e6400050054526576656e7565536861726541677265656d656e74000600445374727563747572656450726f64756374000700284465726976617469766500080018437573746f6d0400ed010144437573746f6d417373657454797065496400090028537461626c65436f696e000a0000ed010c4c706f6c796d6573685f7072696d69746976657314617373657444437573746f6d41737365745479706549640000040010010c7533320000f101000002f50100f5010c4c706f6c796d6573685f7072696d6974697665734061737365745f6964656e7469666965723c41737365744964656e7469666965720001101443555349500400f901011c5b75383b20395d0000001043494e530400f901011c5b75383b20395d000100104953494e0400a801205b75383b2031325d0002000c4c45490400fd0101205b75383b2032305d00030000f901000003090000000800fd0100000314000000080001020c4c706f6c796d6573685f7072696d6974697665731461737365742441737365744e616d650000040028011c5665633c75383e000005020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7428446f63756d656e7449640000040010010c753332000009020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7420446f63756d656e74000014010c7572690d02012c446f63756d656e74557269000130636f6e74656e745f6861736811020130446f63756d656e74486173680001106e616d6529020130446f63756d656e744e616d65000120646f635f747970652d0201504f7074696f6e3c446f63756d656e74547970653e00012c66696c696e675f64617465f801384f7074696f6e3c4d6f6d656e743e00000d020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e742c446f63756d656e745572690000040028011c5665633c75383e000011020c4c706f6c796d6573685f7072696d69746976657334646f63756d656e745f6861736830446f63756d656e7448617368000124104e6f6e6500000010483531320400150201205b75383b2036345d00010010483338340400190201205b75383b2034385d000200104833323004001d0201205b75383b2034305d000300104832353604000401205b75383b2033325d00040010483232340400210201205b75383b2032385d00050010483139320400250201205b75383b2032345d00060010483136300400fd0101205b75383b2032305d00070010483132380400250101205b75383b2031365d00080000150200000340000000080019020000033000000008001d0200000328000000080021020000031c0000000800250200000318000000080029020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7430446f63756d656e744e616d650000040028011c5665633c75383e00002d0204184f7074696f6e0404540131020108104e6f6e6500000010536f6d6504003102000001000031020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7430446f63756d656e74547970650000040028011c5665633c75383e000035020c4c706f6c796d6573685f7072696d69746976657320657468657265756d3c457468657265756d4164647265737300000400fd0101205b75383b2032305d000039020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614841737365744d6574616461746156616c75650000040028011c5665633c75383e00003d0204184f7074696f6e0404540141020108104e6f6e6500000010536f6d6504004102000001000041020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174616041737365744d6574616461746156616c756544657461696c04184d6f6d656e74012000080118657870697265f801384f7074696f6e3c4d6f6d656e743e00012c6c6f636b5f7374617475734502017c41737365744d657461646174614c6f636b5374617475733c4d6f6d656e743e000045020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615c41737365744d657461646174614c6f636b53746174757304184d6f6d656e740120010c20556e6c6f636b6564000000184c6f636b65640001002c4c6f636b6564556e74696c04002001184d6f6d656e740002000049020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614441737365744d657461646174614e616d650000040028011c5665633c75383e00004d020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615441737365744d657461646174614c6f63616c4b65790000040020010c753634000051020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614441737365744d657461646174615370656300000c010c75726c5502012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e5d0201804f7074696f6e3c41737365744d657461646174614465736372697074696f6e3e000120747970655f6465666502013c4f7074696f6e3c5665633c75383e3e0000550204184f7074696f6e0404540159020108104e6f6e6500000010536f6d650400590200000100005902084c706f6c796d6573685f7072696d6974697665730c55726c0000040028011c5665633c75383e00005d0204184f7074696f6e0404540161020108104e6f6e6500000010536f6d6504006102000001000061020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174616041737365744d657461646174614465736372697074696f6e0000040028011c5665633c75383e0000650204184f7074696f6e04045401280108104e6f6e6500000010536f6d65040028000001000069020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615841737365744d65746164617461476c6f62616c4b65790000040020010c75363400006d020c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e144576656e740001101c437265617465640c00710201204576656e744469640000750201104341496400007d020130446973747269627574696f6e000010b841206361706974616c20646973747269627574696f6e2c20776974682064657461696c7320696e636c756465642c31017761732063726561746564206279207468652044494420287065726d697373696f6e6564206167656e742920666f7220746865204341206964656e746966696564206279206043414964602e00a8284167656e74204449442c20434127732049442c20646973747269627574696f6e2064657461696c73293842656e65666974436c61696d65641800710201204576656e744469640000710201204576656e744469640000750201104341496400007d020130446973747269627574696f6e000018011c42616c616e636500008102010c54617800010c51014120746f6b656e20686f6c64657227732062656e65666974206f662061206361706974616c20646973747269627574696f6e20666f722074686520676976656e206043414964602077617320636c61696d65642e0091012843616c6c6572204449442c20486f6c6465722f436c61696d616e74204449442c20434127732049442c207570646174656420646973747269627574696f6e2064657461696c732c2044494427732062656e656669742c20444944277320746178202529245265636c61696d65640c00710201204576656e7444696400007502011043414964000018011c42616c616e636500020c9853746174732066726f6d2060707573685f62656e65666974602077617320656d69747465642e001501284167656e74204449442c20434127732049442c206d61782072657175657374656420444944732c2070726f63657373656420444944732c206661696c65642044494473291c52656d6f7665640800710201204576656e744469640000750201104341496400030c8c41206361706974616c20646973747269627574696f6e207761732072656d6f7665642e0050284167656e74204449442c204341277320494429085c4576656e747320666f722074686973206d6f64756c652e0071020c4c706f6c796d6573685f7072696d697469766573286576656e745f6f6e6c79244576656e744f6e6c79040454017c0004007c01045400007502086070616c6c65745f636f72706f726174655f616374696f6e73104341496400000801187469636b6572a401185469636b65720001206c6f63616c5f6964790201244c6f63616c4341496400007902086070616c6c65745f636f72706f726174655f616374696f6e73244c6f63616c434149640000040010010c75333200007d020c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e30446973747269627574696f6e000020011066726f6ddc012c506f7274666f6c696f496400012063757272656e6379a401185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e636500012472656d61696e696e6718011c42616c616e63650001247265636c61696d65641d010110626f6f6c0001287061796d656e745f61742001184d6f6d656e74000128657870697265735f6174f801384f7074696f6e3c4d6f6d656e743e000081020c3473705f61726974686d65746963287065725f7468696e67731c5065726d696c6c0000040010010c753332000085021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e74144576656e7400011044436865636b706f696e74437265617465641400890201404f7074696f6e3c4576656e744469643e0000a401185469636b657200008d020130436865636b706f696e744964000018011c42616c616e636500002001184d6f6d656e7400000c644120636865636b706f696e742077617320637265617465642e001d012863616c6c6572204449442c207469636b65722c20636865636b706f696e742049442c20746f74616c20737570706c792c20636865636b706f696e742074696d657374616d7029844d6178696d756d5363686564756c6573436f6d706c65786974794368616e67656408007c01284964656e746974794964000020010c75363400010c2901546865206d6178696d756d20636f6d706c657869747920666f7220616e20617262697472617279207469636b65722773207363686564756c652073657420776173206368616e6765642e0064284743204449442c20746865206e6577206d6178696d756d293c5363686564756c65437265617465640c00710201204576656e744469640000a401185469636b657200009102013853746f7265645363686564756c6500020c884120636865636b706f696e74207363686564756c652077617320637265617465642e00782863616c6c6572204449442c207469636b65722c207363686564756c65293c5363686564756c6552656d6f7665640c007c01284964656e7469747949640000a401185469636b657200009102013853746f7265645363686564756c6500030c884120636865636b706f696e74207363686564756c65207761732072656d6f7665642e00782863616c6c6572204449442c207469636b65722c207363686564756c6529085c4576656e747320666f722074686973206d6f64756c652e00890204184f7074696f6e0404540171020108104e6f6e6500000010536f6d650400710200000100008d020c4c706f6c796d6573685f7072696d6974697665732063616c656e64617230436865636b706f696e7449640000040020010c753634000091021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e743853746f7265645363686564756c6500001001207363686564756c6595020148436865636b706f696e745363686564756c650001086964a10201285363686564756c65496400010861742001184d6f6d656e7400012472656d61696e696e6710010c753332000095020c4c706f6c796d6573685f7072696d6974697665732063616c656e64617248436865636b706f696e745363686564756c65000008011473746172742001184d6f6d656e74000118706572696f649902013843616c656e646172506572696f64000099020c4c706f6c796d6573685f7072696d6974697665732063616c656e6461723843616c656e646172506572696f640000080110756e69749d02013043616c656e646172556e6974000118616d6f756e7420010c75363400009d020c4c706f6c796d6573685f7072696d6974697665732063616c656e6461723043616c656e646172556e697400011c185365636f6e64000000184d696e75746500010010486f75720002000c446179000300105765656b000400144d6f6e7468000500105965617200060000a1021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e74285363686564756c6549640000040020010c7536340000a502086470616c6c65745f636f6d706c69616e63655f6d616e61676572144576656e7400012470436f6d706c69616e6365526571756972656d656e74437265617465640c007c01284964656e7469747949640000a401185469636b65720000a9020154436f6d706c69616e6365526571756972656d656e74000008cc456d6974746564207768656e206e657720636f6d706c69616e636520726571756972656d656e7420697320637265617465642eb02863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e70436f6d706c69616e6365526571756972656d656e7452656d6f7665640c007c01284964656e7469747949640000a401185469636b6572000010010c753332000108c4456d6974746564207768656e206120636f6d706c69616e636520726571756972656d656e742069732072656d6f7665642e942863616c6c6572204449442c205469636b65722c20726571756972656d656e745f6964292e5c4173736574436f6d706c69616e63655265706c616365640c007c01284964656e7469747949640000a401185469636b65720000d50201685665633c436f6d706c69616e6365526571756972656d656e743e000208b4456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206973207265706c616365642ed4506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720617373657420636f6d706c69616e63652e504173736574436f6d706c69616e6365526573657408007c01284964656e7469747949640000a401185469636b6572000308d8456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206f662061207469636b65722069732072657365742e542863616c6c6572204449442c205469636b6572292e584173736574436f6d706c69616e6365526573756d656408007c01284964656e7469747949640000a401185469636b65720004080101456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b6572206765747320726573756d652e542863616c6c6572204449442c205469636b6572292e544173736574436f6d706c69616e636550617573656408007c01284964656e7469747949640000a401185469636b65720005080101456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b65722067657473207061757365642e542863616c6c6572204449442c205469636b6572292e70436f6d706c69616e6365526571756972656d656e744368616e6765640c007c01284964656e7469747949640000a401185469636b65720000a9020154436f6d706c69616e6365526571756972656d656e74000608e0456d6974746564207768656e20636f6d706c69616e636520726571756972656d656e7420676574206d6f6469666965642f6368616e67652eb02863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e785472757374656444656661756c74436c61696d49737375657241646465640c007c01284964656e7469747949640000a401185469636b65720000c5020134547275737465644973737565720007081501456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b657220676574732061646465642ea82863616c6c6572204449442c205469636b65722c2041646465642054727573746564497373756572292e805472757374656444656661756c74436c61696d49737375657252656d6f7665640c007c01284964656e7469747949640000a401185469636b657200007c01284964656e7469747949640008081901456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b6572206765742072656d6f7665642eb02863616c6c6572204449442c205469636b65722c2052656d6f7665642054727573746564497373756572292e085c4576656e747320666f722074686973206d6f64756c652e00a9020c4c706f6c796d6573685f7072696d69746976657348636f6d706c69616e63655f6d616e6167657254436f6d706c69616e6365526571756972656d656e7400000c014473656e6465725f636f6e646974696f6e73ad0201385665633c436f6e646974696f6e3e00014c72656365697665725f636f6e646974696f6e73ad0201385665633c436f6e646974696f6e3e000108696410010c7533320000ad02000002b10200b1020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e24436f6e646974696f6e0000080138636f6e646974696f6e5f74797065b5020134436f6e646974696f6e5479706500011c69737375657273c10201485665633c547275737465644973737565723e0000b5020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e34436f6e646974696f6e5479706500011424497350726573656e740400fc0114436c61696d000000204973416273656e740400fc0114436c61696d0001001c4973416e794f660400b90201285665633c436c61696d3e0002002049734e6f6e654f660400b90201285665633c436c61696d3e0003002849734964656e746974790400bd0201385461726765744964656e7469747900040000b902000002fc00bd020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e385461726765744964656e746974790001083445787465726e616c4167656e7400000020537065636966696304007c01284964656e74697479496400010000c102000002c50200c5020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e345472757374656449737375657200000801186973737565727c01284964656e74697479496400012c747275737465645f666f72c902012854727573746564466f720000c9020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e2854727573746564466f720001080c416e790000002053706563696669630400cd0201385665633c436c61696d547970653e00010000cd02000002d10200d1020c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d24436c61696d54797065000130284163637265646974656400000024416666696c69617465000100244275794c6f636b75700002002853656c6c4c6f636b757000030050437573746f6d657244756544696c6967656e6365000400404b6e6f77596f7572437573746f6d6572000500304a7572697364696374696f6e000600204578656d707465640007001c426c6f636b656400080048496e766573746f72556e697175656e657373000900184e6f54797065000a0050496e766573746f72556e697175656e6573735632000b0000d502000002a90200d902086070616c6c65745f636f72706f726174655f616374696f6e73144576656e740001245c4d617844657461696c734c656e6774684368616e67656408007c01284964656e746974794964000010010c753332000008d4546865206d6178696d756d206c656e677468206f66206064657461696c736020696e20627974657320776173206368616e6765642e50284743204449442c206e6577206c656e677468297844656661756c745461726765744964656e7469746965734368616e6765640c007c01284964656e7469747949640000a401185469636b65720000dd0201405461726765744964656e746974696573000108ec54686520736574206f662064656661756c7420605461726765744964656e7469746965736020666f722061207469636b6572206368616e6765642ea4284167656e74204449442c205469636b65722c204e6577205461726765744964656e746974696573297044656661756c7457697468686f6c64696e675461784368616e6765640c007c01284964656e7469747949640000a401185469636b657200008102010c546178000208c45468652064656661756c742077697468686f6c64696e672074617820666f722061207469636b6572206368616e6765642e74284167656e74204449442c205469636b65722c204e657720546178292e6044696457697468686f6c64696e675461784368616e67656410007c01284964656e7469747949640000a401185469636b657200007c01284964656e7469747949640000e502012c4f7074696f6e3c5461783e000308ec5468652077697468686f6c64696e672074617820737065636966696320746f20612044494420666f722061207469636b6572206368616e6765642ea0284167656e74204449442c205469636b65722c205461786564204449442c204e657720546178292e384341415472616e736665727265640c007c01284964656e7469747949640000a401185469636b657200007c01284964656e7469747949640004086c41206e65772044494420776173206d61646520746865204341412e8c284e657720434141204449442c205469636b65722c204e65772043414120444944292e2c4341496e697469617465641000710201204576656e74446964000075020110434149640000e902013c436f72706f72617465416374696f6e000005030124434144657461696c730005084c412043412077617320696e697469617465642ea8284167656e74204449442c2043412069642c207468652043412c207468652043412064657461696c73293443414c696e6b6564546f446f630c007c01284964656e7469747949640000750201104341496400000903013c5665633c446f63756d656e7449643e000608844120434120776173206c696e6b656420746f206120736574206f6620646f63732eac284167656e74204449442c2043412049642c204c697374206f6620646f63206964656e746966696572732924434152656d6f7665640800710201204576656e74446964000075020110434149640007084441204341207761732072656d6f7665642e48284167656e74204449442c20434120496429445265636f7264446174654368616e6765640c00710201204576656e74446964000075020110434149640000e902013c436f72706f72617465416374696f6e0008046c412043412773207265636f72642064617465206368616e6765642e085c4576656e747320666f722074686973206d6f64756c652e00dd02086070616c6c65745f636f72706f726174655f616374696f6e73405461726765744964656e74697469657300000801286964656e7469746965733101013c5665633c4964656e7469747949643e00012474726561746d656e74e102013c54617267657454726561746d656e740000e102086070616c6c65745f636f72706f726174655f616374696f6e733c54617267657454726561746d656e740001081c496e636c7564650000001c4578636c75646500010000e50204184f7074696f6e0404540181020108104e6f6e6500000010536f6d65040081020000010000e902086070616c6c65745f636f72706f726174655f616374696f6e733c436f72706f72617465416374696f6e00001801106b696e64ed02011843414b696e640001246465636c5f646174652001184d6f6d656e7400012c7265636f72645f64617465f10201484f7074696f6e3c5265636f7264446174653e00011c74617267657473dd0201405461726765744964656e74697469657300015c64656661756c745f77697468686f6c64696e675f7461788102010c54617800013c77697468686f6c64696e675f746178fd0201585665633c284964656e7469747949642c20546178293e0000ed02086070616c6c65745f636f72706f726174655f616374696f6e731843414b696e64000114485072656469637461626c6542656e6566697400000050556e7072656469637461626c6542656e65666974000100304973737565724e6f746963650002003852656f7267616e697a6174696f6e000300144f7468657200040000f10204184f7074696f6e04045401f5020108104e6f6e6500000010536f6d650400f5020000010000f502086070616c6c65745f636f72706f726174655f616374696f6e73285265636f7264446174650000080110646174652001184d6f6d656e74000128636865636b706f696e74f90201304341436865636b706f696e740000f902086070616c6c65745f636f72706f726174655f616374696f6e73304341436865636b706f696e74000108245363686564756c65640800a10201285363686564756c654964000020010c753634000000204578697374696e6704008d020130436865636b706f696e74496400010000fd020000020103000103000004087c8102000503086070616c6c65745f636f72706f726174655f616374696f6e7324434144657461696c730000040028011c5665633c75383e000009030000020502000d030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74144576656e740001181c4372656174656414007c01284964656e7469747949640000750201104341496400001103013c42616c6c6f7454696d6552616e676500001503012842616c6c6f744d65746100001d010110626f6f6c00000c7c4120636f72706f726174652062616c6c6f742077617320637265617465642e001501284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e642c2042616c6c6f74206d657461646174612c2052435620656e61626c65643f2920566f7465436173740c007c01284964656e7469747949640000750201104341496400003503013c5665633c42616c6c6f74566f74653e00010c984120766f746520776173206361737420696e206120636f72706f726174652062616c6c6f742e006028766f746572204449442c20434149642c20566f746573293052616e67654368616e6765640c007c01284964656e7469747949640000750201104341496400001103013c42616c6c6f7454696d6552616e676500020cd04120636f72706f726174652062616c6c6f74206368616e676564206974732073746172742f656e6420646174652072616e67652e0098284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e64292c4d6574614368616e6765640c007c01284964656e7469747949640000750201104341496400001503012842616c6c6f744d65746100030ca04120636f72706f726174652062616c6c6f74206368616e67656420697473206d657461646174612e0088284167656e74204449442c20434127732049442c204e6577206d6574616461746129285243564368616e6765640c007c01284964656e7469747949640000750201104341496400001d010110626f6f6c00040cac4120636f72706f726174652062616c6c6f74206368616e676564206974732052435620737570706f72742e0084284167656e74204449442c20434127732049442c204e657720737570706f7274291c52656d6f7665640800710201204576656e744469640000750201104341496400050c7c4120636f72706f726174652062616c6c6f74207761732072656d6f7665642e0050284167656e74204449442c204341277320494429085c4576656e747320666f722074686973206d6f64756c652e0011030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f743c42616c6c6f7454696d6552616e6765000008011473746172742001184d6f6d656e7400010c656e642001184d6f6d656e74000015030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742842616c6c6f744d65746100000801147469746c651903012c42616c6c6f745469746c6500011c6d6f74696f6e731d03012c5665633c4d6f74696f6e3e000019030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c42616c6c6f745469746c650000040028011c5665633c75383e00001d0300000221030021030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74184d6f74696f6e00000c01147469746c652503012c4d6f74696f6e5469746c65000124696e666f5f6c696e6b290301384d6f74696f6e496e666f4c696e6b00011c63686f696365732d0301405665633c43686f6963655469746c653e000025030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c4d6f74696f6e5469746c650000040028011c5665633c75383e000029030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74384d6f74696f6e496e666f4c696e6b0000040028011c5665633c75383e00002d0300000231030031030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c43686f6963655469746c650000040028011c5665633c75383e0000350300000239030039030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742842616c6c6f74566f74650000080114706f77657218011c42616c616e636500012066616c6c6261636b3d03012c4f7074696f6e3c7531363e00003d0304184f7074696f6e0404540141030108104e6f6e6500000010536f6d65040041030000010000410300000504004503082c70616c6c65745f70697073205261774576656e7408244163636f756e74496401002c426c6f636b4e756d6265720110015050486973746f726963616c506970735072756e65640c007c01284964656e74697479496400001d010110626f6f6c00001d010110626f6f6c00000445015072756e696e6720486973746f726963616c205049507320697320656e61626c6564206f722064697361626c6564202863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293c50726f706f73616c4372656174656420007c01284964656e74697479496400004903014c50726f706f7365723c4163636f756e7449643e0000510301145069704964000018011c42616c616e636500005502012c4f7074696f6e3c55726c3e0000550301584f7074696f6e3c5069704465736372697074696f6e3e00004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00005d03013050726f706f73616c4461746100011498412050495020776173206d61646520776974682061206042616c616e636560207374616b652e00342320506172616d65746572733a00510143616c6c6572204449442c2050726f706f7365722c205049502049442c206465706f7369742c2055524c2c206465736372697074696f6e2c206578706972792074696d652c2070726f706f73616c20646174612e5050726f706f73616c5374617465557064617465640c007c01284964656e746974794964000051030114506970496400006103013450726f706f73616c5374617465000204d854726967676572656420656163682074696d6520746865207374617465206f6620612070726f706f73616c20697320616d656e64656414566f74656414007c01284964656e74697479496400000001244163636f756e744964000051030114506970496400001d010110626f6f6c000018011c42616c616e6365000304f8604163636f756e7449646020766f7465642060626f6f6c60206f6e207468652070726f706f73616c207265666572656e636564206279206050697049646024506970436c6f7365640c007c01284964656e746974794964000051030114506970496400001d010110626f6f6c000404e850697020686173206265656e20636c6f7365642c20626f6f6c20696e6469636174657320776865746865722064617461206973207072756e656448457865637574696f6e5363686564756c65640c007c01284964656e7469747949640000510301145069704964000010012c426c6f636b4e756d626572000504e0457865637574696f6e206f6620612050495020686173206265656e207363686564756c656420617420737065636966696320626c6f636b2e7444656661756c74456e6163746d656e74506572696f644368616e6765640c007c01284964656e746974794964000010012c426c6f636b4e756d626572000010012c426c6f636b4e756d626572000608d844656661756c7420656e6163746d656e7420706572696f642028696e20626c6f636b732920686173206265656e206368616e6765642e902863616c6c6572204449442c206f6c6420706572696f642c206e657720706572696f6429744d696e696d756d50726f706f73616c4465706f7369744368616e6765640c007c01284964656e746974794964000018011c42616c616e6365000018011c42616c616e63650007087c4d696e696d756d206465706f73697420616d6f756e74206d6f646966696564902863616c6c6572204449442c206f6c6420616d6f756e742c206e657720616d6f756e74295c50656e64696e675069704578706972794368616e6765640c007c01284964656e74697479496400004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00004501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e000808cc416d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020657870697265732e902863616c6c6572204449442c206f6c64206578706972792c206e65772065787069727929584d6178506970536b6970436f756e744368616e6765640c007c01284964656e7469747949640000080130536b6970706564436f756e740000080130536b6970706564436f756e74000908cc546865206d6178696d756d2074696d65732061205049502063616e20626520736b697070656420776173206368616e6765642e882863616c6c6572204449442c206f6c642076616c75652c206e65772076616c756529544163746976655069704c696d69744368616e6765640c007c01284964656e746974794964000010010c753332000010010c753332000a08b8546865206d6178696d756d206e756d626572206f6620616374697665205049507320776173206368616e6765642e882863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293850726f706f73616c526566756e640c007c01284964656e7469747949640000510301145069704964000018011c42616c616e6365000b083c526566756e642070726f706f73616c482869642c20746f74616c20616d6f756e74293c536e617073686f74436c656172656408007c01284964656e746974794964000065030128536e617073686f744964000c046454686520736e617073686f742077617320636c65617265642e34536e617073686f7454616b656e0c007c01284964656e746974794964000065030128536e617073686f74496400006903014c5665633c536e617073686f747465645069703e000d046441206e657720736e617073686f74207761732074616b656e2e28506970536b69707065640c007c01284964656e74697479496400005103011450697049640000080130536b6970706564436f756e74000e08a0412050495020696e2074686520736e617073686f742071756575652077617320736b69707065642e802867635f6469642c207069705f69642c206e65775f736b69705f636f756e742958536e617073686f74526573756c7473456e616374656414007c01284964656e7469747949640000750301484f7074696f6e3c536e617073686f7449643e0000790301685665633c2850697049642c20536b6970706564436f756e74293e0000810301285665633c50697049643e0000810301285665633c50697049643e000f083101526573756c74732028652e672e2c20617070726f7665642c2072656a65637465642c20616e6420736b6970706564292c207765726520656e616374656420666f7220736f6d6520504950732e51012867635f6469642c20736e617073686f745f69645f6f70742c20736b69707065645f706970735f776974685f6e65775f636f756e742c2072656a65637465645f706970732c20617070726f7665645f706970732964457865637574696f6e5363686564756c696e674661696c65640c007c01284964656e7469747949640000510301145069704964000010012c426c6f636b4e756d6265720010040d015363686564756c696e67206f66207468652050495020666f7220657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e3c4578706972795363686564756c65640c007c01284964656e7469747949640000510301145069704964000010012c426c6f636b4e756d626572001104985468652050495020686173206265656e207363686564756c656420666f72206578706972792e584578706972795363686564756c696e674661696c65640c007c01284964656e7469747949640000510301145069704964000010012c426c6f636b4e756d62657200120401015363686564756c696e67206f66207468652050495020666f7220657870697279206661696c656420696e20746865207363686564756c65722070616c6c65742e64457865637574696f6e43616e63656c6c696e674661696c65640400510301145069704964001304f043616e63656c6c696e67207468652050495020657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e085c4576656e747320666f722074686973206d6f64756c652e004903082c70616c6c65745f706970732050726f706f73657204244163636f756e7449640100010824436f6d6d756e69747904000001244163636f756e74496400000024436f6d6d697474656504004d030124436f6d6d6974746565000100004d03082c70616c6c65745f7069707324436f6d6d697474656500010824546563686e6963616c0000001c55706772616465000100005103082c70616c6c65745f706970731450697049640000040010010c7533320000550304184f7074696f6e0404540159030108104e6f6e6500000010536f6d650400590300000100005903082c70616c6c65745f70697073385069704465736372697074696f6e0000040028011c5665633c75383e00005d03082c70616c6c65745f706970733050726f706f73616c4461746100010810486173680400240110483235360000002050726f706f73616c040028011c5665633c75383e000100006103082c70616c6c65745f706970733450726f706f73616c53746174650001181c50656e64696e670000002052656a6563746564000100245363686564756c6564000200184661696c65640003002045786563757465640004001c45787069726564000500006503082c70616c6c65745f7069707328536e617073686f7449640000040010010c753332000069030000026d03006d03082c70616c6c65745f7069707338536e617073686f74746564506970000008010869645103011450697049640001187765696768747103013c28626f6f6c2c2042616c616e63652900007103000004081d011800750304184f7074696f6e0404540165030108104e6f6e6500000010536f6d6504006503000001000079030000027d03007d030000040851030800810300000251030085031064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747324706f7274666f6c696f144576656e7400011840506f7274666f6c696f437265617465640c007c01284964656e7469747949640000e4013c506f7274666f6c696f4e756d626572000089030134506f7274666f6c696f4e616d65000018b054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c7920637265617465642e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572402a20706f7274666f6c696f206e616d6540506f7274666f6c696f44656c6574656408007c01284964656e7469747949640000e4013c506f7274666f6c696f4e756d626572000114b054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c792072656d6f7665642e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572584d6f7665644265747765656e506f7274666f6c696f7318007c01284964656e7469747949640000dc012c506f7274666f6c696f49640000dc012c506f7274666f6c696f49640000a401185469636b6572000018011c42616c616e636500008001304f7074696f6e3c4d656d6f3e000220f04120746f6b656e20616d6f756e7420686173206265656e206d6f7665642066726f6d206f6e6520706f7274666f6c696f20746f20616e6f746865722e00302320506172616d6574657273302a206f726967696e20444944482a20736f7572636520706f7274666f6c696f5c2a2064657374696e6174696f6e20706f7274666f6c696f382a206173736574207469636b6572782a2061737365742062616c616e6365207468617420776173206d6f76656440506f7274666f6c696f52656e616d65640c007c01284964656e7469747949640000e4013c506f7274666f6c696f4e756d626572000089030134506f7274666f6c696f4e616d65000318fc54686520706f7274666f6c696f206964656e746966696564207769746820606e756d6020686173206265656e2072656e616d656420746f20606e616d65602e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572402a20706f7274666f6c696f206e616d653855736572506f7274666f6c696f7308007c01284964656e74697479496400008d0301945665633c28506f7274666f6c696f4e756d6265722c20506f7274666f6c696f4e616d65293e000414d4416c6c206e6f6e2d64656661756c7420706f7274666f6c696f206e756d6265727320616e64206e616d6573206f662061204449442e00302320506172616d6574657273302a206f726967696e20444944742a20766563746f72206f66206e756d6265722d6e616d6520706169727364506f7274666f6c696f437573746f6469616e4368616e6765640c007c01284964656e7469747949640000dc012c506f7274666f6c696f496400007c01284964656e746974794964000518f4437573746f6479206f66206120706f7274666f6c696f20686173206265656e20676976656e20746f206120646966666572656e74206964656e7469747900302320506172616d6574657273302a206f726967696e20444944382a20706f7274666f6c696f206964642a20706f7274666f6c696f20637573746f6469616e20646964085c4576656e747320666f722074686973206d6f64756c652e0089030c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f696434506f7274666f6c696f4e616d650000040028011c5665633c75383e00008d03000002910300910300000408e48903009503084c70616c6c65745f70726f746f636f6c5f666565205261774576656e7404244163636f756e7449640100010c1846656553657408007c01284964656e746974794964000018011c42616c616e6365000004845468652070726f746f636f6c20666565206f6620616e206f7065726174696f6e2e38436f656666696369656e7453657408007c01284964656e746974794964000099030120506f73526174696f000104505468652066656520636f656666696369656e742e284665654368617267656408000001244163636f756e744964000018011c42616c616e63650002043046656520636861726765642e085c4576656e747320666f722074686973206d6f64756c652e009903084c706f6c796d6573685f7072696d69746976657320506f73526174696f0000080010010c753332000010010c75333200009d030c4070616c6c65745f7363686564756c65721870616c6c6574144576656e7404045400010c245363686564756c65640800100138543a3a426c6f636b4e756d626572000010010c753332000004905363686564756c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d2043616e63656c65640800100138543a3a426c6f636b4e756d626572000010010c7533320001048c43616e63656c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d28446973706174636865640c00a103016c5461736b416464726573733c543a3a426c6f636b4e756d6265723e00006502013c4f7074696f6e3c5665633c75383e3e00003d0101384469737061746368526573756c74000204a84469737061746368656420736f6d65207461736b2e205c5b7461736b2c2069642c20726573756c745c5d04304576656e747320747970652ea10300000408101000a503084470616c6c65745f736574746c656d656e74205261774576656e740c184d6f6d656e7401202c426c6f636b4e756d6265720110244163636f756e7449640100014c3056656e75654372656174656410007c01284964656e7469747949640000a903011c56656e756549640000ad03013056656e756544657461696c730000b103012456656e756554797065000004ec41206e65772076656e756520686173206265656e206372656174656420286469642c2076656e75655f69642c2064657461696c732c2074797065294c56656e756544657461696c73557064617465640c007c01284964656e7469747949640000a903011c56656e756549640000ad03013056656e756544657461696c730001041501416e206578697374696e672076656e756527732064657461696c7320686173206265656e207570646174656420286469642c2076656e75655f69642c2064657461696c73294056656e756554797065557064617465640c007c01284964656e7469747949640000a903011c56656e756549640000b103012456656e756554797065000204fc416e206578697374696e672076656e75652773207479706520686173206265656e207570646174656420286469642c2076656e75655f69642c20747970652948496e737472756374696f6e437265617465641c007c01284964656e7469747949640000a903011c56656e756549640000b5030134496e737472756374696f6e49640000b903016c536574746c656d656e74547970653c426c6f636b4e756d6265723e0000f801384f7074696f6e3c4d6f6d656e743e0000f801384f7074696f6e3c4d6f6d656e743e0000bd0301205665633c4c65673e0003088841206e657720696e737472756374696f6e20686173206265656e20637265617465643901286469642c2076656e75655f69642c20696e737472756374696f6e5f69642c20736574746c656d656e745f747970652c2074726164655f646174652c2076616c75655f646174652c206c656773294c496e737472756374696f6e41666669726d65640c007c01284964656e7469747949640000dc012c506f7274666f6c696f49640000b5030134496e737472756374696f6e49640004040501416e20696e737472756374696f6e20686173206265656e2061666669726d656420286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964295041666669726d6174696f6e57697468647261776e0c007c01284964656e7469747949640000dc012c506f7274666f6c696f49640000b5030134496e737472756374696f6e49640005040901416e2061666669726d6174696f6e20686173206265656e2077697468647261776e20286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964294c496e737472756374696f6e52656a656374656408007c01284964656e7469747949640000b5030134496e737472756374696f6e4964000604d8416e20696e737472756374696f6e20686173206265656e2072656a656374656420286469642c20696e737472756374696f6e5f6964293852656365697074436c61696d656418007c01284964656e7469747949640000b5030134496e737472756374696f6e49640000c50301144c65674964000020010c75363400000001244163636f756e7449640000c903013c526563656970744d657461646174610007047d0141207265636569707420686173206265656e20636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e65722c2072656365697074206d6574616461746129585265636569707456616c69646974794368616e67656410007c01284964656e74697479496400000001244163636f756e744964000020010c75363400001d010110626f6f6c0008040d0141207265636569707420686173206265656e20696e76616c69646174656420286469642c207369676e65722c20726563656970745f7569642c2076616c6964697479294052656365697074556e636c61696d656414007c01284964656e7469747949640000b5030134496e737472756374696f6e49640000c50301144c65674964000020010c75363400000001244163636f756e7449640009043d0141207265636569707420686173206265656e20756e636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e6572293856656e756546696c746572696e670c007c01284964656e7469747949640000a401185469636b657200001d010110626f6f6c000a04690156656e75652066696c746572696e6720686173206265656e20656e61626c6564206f722064697361626c656420666f722061207469636b657220286469642c207469636b65722c2066696c746572696e675f656e61626c6564293456656e756573416c6c6f7765640c007c01284964656e7469747949640000a401185469636b65720000cd0301305665633c56656e756549643e000b04dc56656e75657320616464656420746f20616c6c6f77206c69737420286469642c207469636b65722c207665633c76656e75655f69643e293456656e756573426c6f636b65640c007c01284964656e7469747949640000a401185469636b65720000cd0301305665633c56656e756549643e000c04dc56656e75657320616464656420746f20626c6f636b206c69737420286469642c207469636b65722c207665633c76656e75655f69643e29484c65674661696c6564457865637574696f6e0c007c01284964656e7469747949640000b5030134496e737472756374696f6e49640000c50301144c65674964000d04dc457865637574696f6e206f662061206c6567206661696c656420286469642c20696e737472756374696f6e5f69642c206c65675f69642944496e737472756374696f6e4661696c656408007c01284964656e7469747949640000b5030134496e737472756374696f6e4964000e04c8496e737472756374696f6e206661696c656420657865637574696f6e20286469642c20696e737472756374696f6e5f6964294c496e737472756374696f6e457865637574656408007c01284964656e7469747949640000b5030134496e737472756374696f6e4964000f04d8496e737472756374696f6e206578656375746564207375636365737366756c6c79286469642c20696e737472756374696f6e5f6964294456656e7565556e617574686f72697a65640c007c01284964656e7469747949640000a401185469636b65720000a903011c56656e75654964001004010156656e7565206e6f742070617274206f662074686520746f6b656e277320616c6c6f77206c69737420286469642c205469636b65722c2076656e75655f696429405363686564756c696e674661696c6564040064013444697370617463684572726f72001104805363686564756c696e67206f6620696e737472756374696f6e206661696c732e58496e737472756374696f6e52657363686564756c656408007c01284964656e7469747949640000b5030134496e737472756374696f6e49640012086c496e737472756374696f6e2069732072657363686564756c65642e702863616c6c6572204449442c20696e737472756374696f6e5f696429085c4576656e747320666f722074686973206d6f64756c652e00a903084470616c6c65745f736574746c656d656e741c56656e756549640000040020010c7536340000ad03084470616c6c65745f736574746c656d656e743056656e756544657461696c730000040028011c5665633c75383e0000b103084470616c6c65745f736574746c656d656e742456656e756554797065000110144f7468657200000030446973747269627574696f6e0001000c53746f0002002045786368616e676500030000b503084470616c6c65745f736574746c656d656e7434496e737472756374696f6e49640000040020010c7536340000b903084470616c6c65745f736574746c656d656e7438536574746c656d656e7454797065042c426c6f636b4e756d626572011001084c536574746c654f6e41666669726d6174696f6e00000034536574746c654f6e426c6f636b040010012c426c6f636b4e756d62657200010000bd03000002c10300c103084470616c6c65745f736574746c656d656e740c4c6567000010011066726f6ddc012c506f7274666f6c696f4964000108746fdc012c506f7274666f6c696f49640001146173736574a401185469636b6572000118616d6f756e7418011c42616c616e63650000c503084470616c6c65745f736574746c656d656e74144c656749640000040020010c7536340000c903084470616c6c65745f736574746c656d656e743c526563656970744d657461646174610000040028011c5665633c75383e0000cd03000002a90300d1031064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732873746174697374696373144576656e740001183853746174547970657341646465640c007c01284964656e7469747949640000d5030128417373657453636f70650000d90301345665633c53746174547970653e00000c685374617420747970657320616464656420746f2061737365742e007c2843616c6c6572204449442c2041737365742c2053746174207479706573294053746174547970657352656d6f7665640c007c01284964656e7469747949640000d5030128417373657453636f70650000d90301345665633c53746174547970653e00010c78537461742074797065732072656d6f7665642066726f6d2061737365742e007c2843616c6c6572204449442c2041737365742c20537461742074797065732944417373657453746174735570646174656410007c01284964656e7469747949640000d5030128417373657453636f70650000dd03012053746174547970650000ed03013c5665633c537461745570646174653e00020c50417373657420737461747320757064617465642e009c2843616c6c6572204449442c2041737365742c205374617420747970652c2055706461746573296853657441737365745472616e73666572436f6d706c69616e63650c007c01284964656e7469747949640000d5030128417373657453636f70650000050401585665633c5472616e73666572436f6e646974696f6e3e00030ca0536574205472616e7366657220636f6d706c69616e63652072756c657320666f722061737365742e00a02843616c6c6572204449442c2041737365742c205472616e7366657220636f6e646974696f6e7329805472616e73666572436f6e646974696f6e4578656d7074696f6e7341646465640c007c01284964656e7469747949640000110401685472616e73666572436f6e646974696f6e4578656d70744b65790000310101305665633c53636f706549643e00040c0901416464206053636f706549646073206578656d707420666f72207472616e7366657220636f6e646974696f6e73206d61746368696e67206578656d7074206b65792e00882843616c6c6572204449442c204578656d7074206b65792c20456e74697469657329885472616e73666572436f6e646974696f6e4578656d7074696f6e7352656d6f7665640c007c01284964656e7469747949640000110401685472616e73666572436f6e646974696f6e4578656d70744b65790000310101305665633c53636f706549643e00050c150152656d6f7665206053636f706549646073206578656d707420666f72207472616e7366657220636f6e646974696f6e73206d61746368696e67206578656d7074206b65792e00882843616c6c6572204449442c204578656d7074206b65792c20456e74697469657329085c4576656e747320666f722074686973206d6f64756c652e00d5030c4c706f6c796d6573685f7072696d697469766573287374617469737469637328417373657453636f7065000104185469636b65720400a401185469636b657200000000d903000002dd0300dd030c4c706f6c796d6573685f7072696d697469766573287374617469737469637320537461745479706500000801086f70e1030128537461744f7054797065000130636c61696d5f697373756572e503017c4f7074696f6e3c28436c61696d547970652c204964656e746974794964293e0000e1030c4c706f6c796d6573685f7072696d697469766573287374617469737469637328537461744f705479706500010814436f756e740000001c42616c616e636500010000e50304184f7074696f6e04045401e9030108104e6f6e6500000010536f6d650400e9030000010000e90300000408d1027c00ed03000002f10300f1030c4c706f6c796d6573685f7072696d6974697665732873746174697374696373285374617455706461746500000801106b657932f503012853746174326e644b657900011476616c7565010401304f7074696f6e3c753132383e0000f5030c4c706f6c796d6573685f7072696d69746976657328737461746973746963732853746174326e644b65790001082c4e6f436c61696d5374617400000014436c61696d0400f903012453746174436c61696d00010000f9030c4c706f6c796d6573685f7072696d69746976657328737461746973746963732453746174436c61696d00010c284163637265646974656404001d010110626f6f6c00000024416666696c6961746504001d010110626f6f6c000100304a7572697364696374696f6e0400fd03014c4f7074696f6e3c436f756e747279436f64653e00020000fd0304184f7074696f6e0404540109010108104e6f6e6500000010536f6d65040009010000010000010404184f7074696f6e04045401180108104e6f6e6500000010536f6d650400180000010000050400000209040009040c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e6365445472616e73666572436f6e646974696f6e000110404d6178496e766573746f72436f756e74040020010c753634000000504d6178496e766573746f724f776e65727368697004000d04012850657263656e7461676500010028436c61696d436f756e741000f903012453746174436c61696d00007c01284964656e746974794964000020010c7536340000f8012c4f7074696f6e3c7536343e00020038436c61696d4f776e6572736869701000f903012453746174436c61696d00007c01284964656e74697479496400000d04012850657263656e7461676500000d04012850657263656e74616765000300000d040c4c706f6c796d6573685f7072696d69746976657328737461746973746963733c4861736861626c655065726d696c6c000004008102015873705f61726974686d657469633a3a5065726d696c6c000011040c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e6365685472616e73666572436f6e646974696f6e4578656d70744b657900000c01146173736574d5030128417373657453636f70650001086f70e1030128537461744f7054797065000128636c61696d5f74797065150401444f7074696f6e3c436c61696d547970653e0000150404184f7074696f6e04045401d1020108104e6f6e6500000010536f6d650400d10200000100001904082870616c6c65745f73746f205261774576656e7404184d6f6d656e74012001184446756e647261697365724372656174656410007c01284964656e74697479496400001d04013046756e64726169736572496400002104013846756e647261697365724e616d6500002504014846756e647261697365723c4d6f6d656e743e0000088841206e65772066756e6472616973657220686173206265656e20637265617465642efc284167656e74204449442c2066756e647261697365722069642c2066756e64726169736572206e616d652c2066756e647261697365722064657461696c732920496e76657374656418007c01284964656e74697479496400001d04013046756e6472616973657249640000a401185469636b65720000a401185469636b6572000018011c42616c616e6365000018011c42616c616e63650001089c416e20696e766573746f7220696e76657374656420696e207468652066756e647261697365722e850128496e766573746f722c2066756e647261697365725f69642c206f66666572696e6720746f6b656e2c20726169736520746f6b656e2c206f66666572696e675f746f6b656e5f616d6f756e742c2072616973655f746f6b656e5f616d6f756e74294046756e6472616973657246726f7a656e08007c01284964656e74697479496400001d04013046756e64726169736572496400020874412066756e6472616973657220686173206265656e2066726f7a656e2e68284167656e74204449442c2066756e64726169736572206964294846756e64726169736572556e66726f7a656e08007c01284964656e74697479496400001d04013046756e6472616973657249640003087c412066756e6472616973657220686173206265656e20756e66726f7a656e2e68284167656e74204449442c2066756e64726169736572206964296046756e6472616973657257696e646f774d6f6469666965641800710201204576656e7444696400001d04013046756e64726169736572496400002001184d6f6d656e740000f801384f7074696f6e3c4d6f6d656e743e00002001184d6f6d656e740000f801384f7074696f6e3c4d6f6d656e743e00040898412066756e647261697365722077696e646f7720686173206265656e206d6f6469666965642e0901284167656e74204449442c2066756e647261697365722069642c206f6c645f73746172742c206f6c645f656e642c206e65775f73746172742c206e65775f656e64294046756e64726169736572436c6f73656408007c01284964656e74697479496400001d04013046756e64726169736572496400050878412066756e6472616973657220686173206265656e2073746f707065642e68284167656e74204449442c2066756e6472616973657220696429085c4576656e747320666f722074686973206d6f64756c652e001d04082870616c6c65745f73746f3046756e6472616973657249640000040020010c75363400002104082870616c6c65745f73746f3846756e647261697365724e616d650000040028011c5665633c75383e00002504082870616c6c65745f73746f2846756e6472616973657204184d6f6d656e740120002c011c63726561746f727c01284964656e7469747949640001486f66666572696e675f706f7274666f6c696fdc012c506f7274666f6c696f49640001386f66666572696e675f6173736574a401185469636b657200014472616973696e675f706f7274666f6c696fdc012c506f7274666f6c696f496400013472616973696e675f6173736574a401185469636b657200011474696572732904014c5665633c46756e64726169736572546965723e00012076656e75655f6964a903011c56656e7565496400011473746172742001184d6f6d656e7400010c656e64f801384f7074696f6e3c4d6f6d656e743e0001187374617475733104014046756e647261697365725374617475730001486d696e696d756d5f696e766573746d656e7418011c42616c616e6365000029040000022d04002d04082870616c6c65745f73746f3846756e647261697365725469657200000c0114746f74616c18011c42616c616e6365000114707269636518011c42616c616e636500012472656d61696e696e6718011c42616c616e636500003104082870616c6c65745f73746f4046756e64726169736572537461747573000110104c6976650000001846726f7a656e00010018436c6f7365640002002c436c6f7365644561726c79000300003504083c70616c6c65745f7472656173757279205261774576656e74041c42616c616e63650118010850547265617375727944697362757273656d656e740c007c01284964656e74697479496400007c01284964656e746974794964000018011c42616c616e63650000088844697362757273656d656e7420746f206120746172676574204964656e746974792e6428746172676574206964656e746974792c20616d6f756e74295454726561737572795265696d62757273656d656e7408007c01284964656e746974794964000018011c42616c616e63650001045c5472656173757279207265696d62757273656d656e742e085c4576656e747320666f722074686973206d6f64756c652e003904083870616c6c65745f7574696c697479144576656e7400010c404261746368496e74657272757074656408003d04012c4576656e74436f756e747300004104011c4572726f72417400000cac4261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792edc496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f72206561636820646973706174636820616e64f474686520696e646578206f6620746865206669727374206661696c696e672064697370617463682061732077656c6c20617320746865206572726f722e5442617463684f7074696d69737469634661696c656408003d04012c4576656e74436f756e74730000450401305665633c4572726f7241743e00010cac4261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792ecc496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c20616e6429016120766563746f72206f6620616e79206661696c65642064697370617463686573207769746820746865697220696e646963657320616e64206173736f636961746564206572726f722e384261746368436f6d706c6574656404003d04012c4576656e74436f756e7473000208c84261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722ed0496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682064697370617463682e0c5c4576656e747320666f722074686973206d6f64756c652e00304576656e747320747970652e3d040000021000410400000408106400450400000241040049041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731062617365144576656e740001043c556e65787065637465644572726f7204004d0401544f7074696f6e3c44697370617463684572726f723e000004e4416e20756e6578706563746564206572726f722068617070656e656420746861742073686f756c6420626520696e766573746967617465642e085c4576656e747320666f722074686973206d6f64756c652e004d0404184f7074696f6e04045401640108104e6f6e6500000010536f6d65040064000001000051041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974733c65787465726e616c5f6167656e7473144576656e740001143047726f7570437265617465641000710201204576656e744469640000a401185469636b6572000019010110414749640000b4015045787472696e7369635065726d697373696f6e7300000c6c416e204167656e742047726f75702077617320637265617465642e00d02843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773207065726d697373696f6e73295c47726f75705065726d697373696f6e73557064617465641000710201204576656e744469640000a401185469636b6572000019010110414749640000b4015045787472696e7369635065726d697373696f6e7300010ca4416e204167656e742047726f75702773207065726d697373696f6e732077617320757064617465642e00e02843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773206e6577207065726d697373696f6e7329284167656e7441646465640c00710201204576656e744469640000a401185469636b65720000150101284167656e7447726f757000020c4c416e206167656e74207761732061646465642e00c42843616c6c65722f4167656e74204449442c204167656e742773207469636b65722c204167656e7427732067726f757029304167656e7452656d6f7665640c00710201204576656e744469640000a401185469636b657200007c01284964656e74697479496400030c54416e206167656e74207761732072656d6f7665642e00a42843616c6c6572204449442c204167656e742773207469636b65722c204167656e74277320444944293047726f75704368616e6765641000710201204576656e744469640000a401185469636b657200007c01284964656e7469747949640000150101284167656e7447726f757000040c74416e206167656e7427732067726f757020776173206368616e6765642e0015012843616c6c6572204449442c204167656e742773207469636b65722c204167656e742773204449442c20546865206e65772067726f7570206f6620746865206167656e7429085c4576656e747320666f722074686973206d6f64756c652e0055041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731c72656c61796572205261774576656e7404244163636f756e744964010001104c417574686f72697a6564506179696e674b65791400710201204576656e7444696400000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000020010c75363400000ccc417574686f72697a6174696f6e20676976656e20666f722060706179696e675f6b65796020746f2060757365725f6b6579602e0001012843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20496e697469616c20504f4c5958206c696d69742c204175746820494429444163636570746564506179696e674b65790c00710201204576656e7444696400000001244163636f756e74496400000001244163636f756e74496400010c50416363657074656420706179696e67206b65792e00882843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294052656d6f766564506179696e674b65790c00710201204576656e7444696400000001244163636f756e74496400000001244163636f756e74496400020c4c52656d6f76656420706179696e67206b65792e00882843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294455706461746564506f6c79784c696d69741400710201204576656e7444696400000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000018011c42616c616e636500030c505570646174656420706f6c7978206c696d69742e0011012843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20504f4c5958206c696d69742c206f6c642072656d61696e696e6720504f4c595829085c4576656e747320666f722074686973206d6f64756c652e005904083870616c6c65745f72657761726473205261774576656e7404244163636f756e744964010001044049746e526577617264436c61696d656408000001244163636f756e744964000018011c42616c616e63650000045c49746e207265776172642077617320636c61696d65642e085c4576656e747320666f722074686973206d6f64756c652e005d04084470616c6c65745f746573745f7574696c73205261774576656e7404244163636f756e7449640100010c584d6f636b496e766573746f725549444372656174656408007c01284964656e74697479496400002101012c496e766573746f725569640000080d0141206e6577206d6f636b65642060496e766573746f725569646020686173206265656e206372656174656420666f722074686520676976656e204964656e746974792e7428546172676574204449442c204e657720496e766573746f72556964292444696453746174757308007c01284964656e74697479496400000001244163636f756e744964000108e4456d6974732074686520604964656e7469747949646020616e642074686520604163636f756e74496460206f66207468652063616c6c65722e702843616c6c6572204449442c2043616c6c6572206163636f756e7429244364645374617475730c007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e74496400001d010110626f6f6c00020c550153686f777320746865206044494460206173736f63696174656420746f2074686520604163636f756e744964602c20616e64206120666c616720696e646963617465732069662074686174204449442068617320614076616c69642043444420636c61696d2ed828546172676574204449442c20546172676574204163636f756e742c20612076616c69642043444420636c61696d2065786973747329085c4576656e747320666f722074686973206d6f64756c652e00610408306672616d655f73797374656d14506861736500010c384170706c7945787472696e736963040010010c7533320000003046696e616c697a6174696f6e00010038496e697469616c697a6174696f6e00020000650400000224006904000002a103006d0408306672616d655f73797374656d584c61737452756e74696d6555706772616465496e666f0000080130737065635f76657273696f6e7104014c636f6465633a3a436f6d706163743c7533323e000124737065635f6e616d657504016473705f72756e74696d653a3a52756e74696d65537472696e670000710400000610007504000005020079040c306672616d655f73797374656d1870616c6c65741043616c6c0404540001282866696c6c5f626c6f636b040114726174696f9501011c50657262696c6c00000405014120646973706174636820746861742077696c6c2066696c6c2074686520626c6f636b2077656967687420757020746f2074686520676976656e20726174696f2e1872656d61726b04011872656d61726b28011c5665633c75383e000114684d616b6520736f6d65206f6e2d636861696e2072656d61726b2e002823203c7765696768743e202d20604f283129602c23203c2f7765696768743e387365745f686561705f7061676573040114706167657320010c753634000224f853657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e002823203c7765696768743e202d20604f28312960482d20312073746f726167652077726974652e602d2042617365205765696768743a20312e34303520c2b5735c2d203120777269746520746f20484541505f50414745533c2d203120646967657374206974656d2c23203c2f7765696768743e207365745f636f6465040110636f646528011c5665633c75383e0003306453657420746865206e65772072756e74696d6520636f64652e002823203c7765696768743e31012d20604f2843202b2053296020776865726520604360206c656e677468206f662060636f64656020616e642060536020636f6d706c6578697479206f66206063616e5f7365745f636f64656045012d20312063616c6c20746f206063616e5f7365745f636f6465603a20604f28532960202863616c6c73206073705f696f3a3a6d6973633a3a72756e74696d655f76657273696f6e60207768696368206973342020657870656e73697665292e842d20312073746f726167652077726974652028636f64656320604f28432960292e402d203120646967657374206974656d2e282d2031206576656e742e4d0154686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652c206275742067656e6572616c6c7920746869732069732076657279b8657870656e736976652e2057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e2c23203c2f7765696768743e5c7365745f636f64655f776974686f75745f636865636b73040110636f646528011c5665633c75383e000424190153657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e002823203c7765696768743e8c2d20604f2843296020776865726520604360206c656e677468206f662060636f646560842d20312073746f726167652077726974652028636f64656320604f28432960292e402d203120646967657374206974656d2e282d2031206576656e742e550154686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652e2057652077696c6c207472656174207468697320617320612066756c6c48626c6f636b2e2023203c2f7765696768743e5c7365745f6368616e6765735f747269655f636f6e66696704014c6368616e6765735f747269655f636f6e6669674001804f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e0005289c53657420746865206e6577206368616e676573207472696520636f6e66696775726174696f6e2e002823203c7765696768743e202d20604f28312960ac2d20312073746f72616765207772697465206f722064656c6574652028636f64656320604f28312960292ed42d20312063616c6c20746f20606465706f7369745f6c6f67603a20557365732060617070656e6460204150492c20736f204f283129602d2042617365205765696768743a20372e32313820c2b573302d204442205765696768743aa4202020202d205772697465733a204368616e67657320547269652c2053797374656d204469676573742c23203c2f7765696768743e2c7365745f73746f726167650401146974656d737d0401345665633c4b657956616c75653e0006206853657420736f6d65206974656d73206f662073746f726167652e002823203c7765696768743e902d20604f2849296020776865726520604960206c656e677468206f6620606974656d7360782d206049602073746f72616765207772697465732028604f28312960292e702d2042617365205765696768743a20302e353638202a206920c2b573642d205772697465733a204e756d626572206f66206974656d732c23203c2f7765696768743e306b696c6c5f73746f726167650401106b657973850401205665633c4b65793e000720744b696c6c20736f6d65206974656d732066726f6d2073746f726167652e002823203c7765696768743ef82d20604f28494b296020776865726520604960206c656e677468206f6620606b6579736020616e6420604b60206c656e677468206f66206f6e65206b6579602d206049602073746f726167652064656c6574696f6e732e6c2d2042617365205765696768743a202e333738202a206920c2b573642d205772697465733a204e756d626572206f66206974656d732c23203c2f7765696768743e2c6b696c6c5f70726566697808011870726566697828010c4b657900011c7375626b65797310010c75333200082c11014b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e0039012a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e6465723d0174686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e002823203c7765696768743ed82d20604f285029602077686572652060506020616d6f756e74206f66206b657973207769746820707265666978206070726566697860602d206050602073746f726167652064656c6574696f6e732e702d2042617365205765696768743a20302e383334202a205020c2b5737c2d205772697465733a204e756d626572206f66207375626b657973202b20312c23203c2f7765696768743e4472656d61726b5f776974685f6576656e7404011872656d61726b28011c5665633c75383e000918a44d616b6520736f6d65206f6e2d636861696e2072656d61726b20616e6420656d6974206576656e742e002823203c7765696768743eb42d20604f28622960207768657265206220697320746865206c656e677468206f66207468652072656d61726b2e282d2031206576656e742e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e7d040000028104008104000004082828008504000002280089040c306672616d655f73797374656d186c696d69747330426c6f636b5765696768747300000c0128626173655f626c6f636b2001185765696768740001246d61785f626c6f636b2001185765696768740001247065725f636c6173738d0401845065724469737061746368436c6173733c57656967687473506572436c6173733e00008d040c346672616d655f737570706f72741c77656967687473405065724469737061746368436c617373040454019104000c01186e6f726d616c910401045400012c6f7065726174696f6e616c91040104540001246d616e6461746f72799104010454000091040c306672616d655f73797374656d186c696d6974733c57656967687473506572436c6173730000100138626173655f65787472696e7369632001185765696768740001346d61785f65787472696e736963f801384f7074696f6e3c5765696768743e0001246d61785f746f74616cf801384f7074696f6e3c5765696768743e0001207265736572766564f801384f7074696f6e3c5765696768743e000095040c306672616d655f73797374656d186c696d6974732c426c6f636b4c656e677468000004010c6d6178990401545065724469737061746368436c6173733c7533323e000099040c346672616d655f737570706f72741c77656967687473405065724469737061746368436c6173730404540110000c01186e6f726d616c1001045400012c6f7065726174696f6e616c100104540001246d616e6461746f72791001045400009d040c346672616d655f737570706f72741c776569676874733c52756e74696d65446257656967687400000801107265616420011857656967687400011477726974652001185765696768740000a104082873705f76657273696f6e3852756e74696d6556657273696f6e00001c0124737065635f6e616d657504013452756e74696d65537472696e67000124696d706c5f6e616d657504013452756e74696d65537472696e67000144617574686f72696e675f76657273696f6e10010c753332000130737065635f76657273696f6e10010c753332000130696d706c5f76657273696f6e10010c75333200011061706973a504011c4170697356656300014c7472616e73616374696f6e5f76657273696f6e10010c7533320000a504040c436f7704045401a904000400a904000000a904000002ad0400ad0400000408b1041000b104000003080000000800b5040c306672616d655f73797374656d1870616c6c6574144572726f720404540001143c496e76616c6964537065634e616d650000081101546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e685370656356657273696f6e4e65656473546f496e63726561736500010841015468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e00020cec4661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e0009014569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e4c4e6f6e44656661756c74436f6d706f73697465000304fc537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e3c4e6f6e5a65726f526566436f756e74000404350154686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e046c4572726f7220666f72207468652053797374656d2070616c6c6574b90410346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401bd04045300000400c50401185665633c543e0000bd0400000408c1042000c1040c4473705f636f6e73656e7375735f626162650c617070185075626c696300000400c101013c737232353531393a3a5075626c69630000c504000002bd0400c904084873705f636f6e73656e7375735f736c6f747310536c6f740000040020010c7536340000cd040c4473705f636f6e73656e7375735f626162651c64696765737473504e657874436f6e66696744657363726970746f7200010408563108010463d1040128287536342c2075363429000134616c6c6f7765645f736c6f7473d5040130416c6c6f776564536c6f747300010000d10400000408202000d504084473705f636f6e73656e7375735f6261626530416c6c6f776564536c6f747300010c305072696d617279536c6f7473000000745072696d617279416e645365636f6e64617279506c61696e536c6f74730001006c5072696d617279416e645365636f6e64617279565246536c6f747300020000d90410346672616d655f737570706f72741c73746f726167652c626f756e6465645f76656328426f756e6465645665630804540104045300000400dd0401185665633c543e0000dd040000020400e10404184f7074696f6e04045401040108104e6f6e6500000010536f6d650400040000010000e504084473705f636f6e73656e7375735f62616265584261626545706f6368436f6e66696775726174696f6e000008010463d1040128287536342c2075363429000134616c6c6f7765645f736c6f7473d5040130416c6c6f776564536c6f74730000e9040c2c70616c6c65745f626162651870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66ed040184426f783c45717569766f636174696f6e50726f6f663c543a3a4865616465723e3e00013c6b65795f6f776e65725f70726f6f66f9040140543a3a4b65794f776e657250726f6f6600001009015265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667905017468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f660d01616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c306265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66ed040184426f783c45717569766f636174696f6e50726f6f663c543a3a4865616465723e3e00013c6b65795f6f776e65725f70726f6f66f9040140543a3a4b65794f776e657250726f6f6600012009015265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667905017468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f660d01616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c306265207265706f727465642e0d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e48706c616e5f636f6e6669675f6368616e6765040118636f6e666967cd0401504e657874436f6e66696744657363726970746f720002105d01506c616e20616e2065706f636820636f6e666967206368616e67652e205468652065706f636820636f6e666967206368616e6765206973207265636f7264656420616e642077696c6c20626520656e6163746564206f6e5101746865206e6578742063616c6c20746f2060656e6163745f65706f63685f6368616e6765602e2054686520636f6e6669672077696c6c20626520616374697661746564206f6e652065706f63682061667465722e59014d756c7469706c652063616c6c7320746f2074686973206d6574686f642077696c6c207265706c61636520616e79206578697374696e6720706c616e6e656420636f6e666967206368616e6765207468617420686164546e6f74206265656e20656e6163746564207965742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632eed04084873705f636f6e73656e7375735f736c6f74734445717569766f636174696f6e50726f6f66081848656164657201f10408496401c104001001206f6666656e646572c10401084964000110736c6f74c9040110536c6f7400013066697273745f686561646572f10401184865616465720001347365636f6e645f686561646572f10401184865616465720000f104102873705f72756e74696d651c67656e65726963186865616465721848656164657208184e756d6265720110104861736801f5040014012c706172656e745f68617368240130486173683a3a4f75747075740001186e756d626572710401184e756d62657200012873746174655f726f6f74240130486173683a3a4f757470757400013c65787472696e736963735f726f6f74240130486173683a3a4f75747075740001186469676573742c01504469676573743c486173683a3a4f75747075743e0000f5040c2873705f72756e74696d65187472616974732c426c616b6554776f32353600000000f904082873705f73657373696f6e3c4d656d6265727368697050726f6f6600000c011c73657373696f6e10013053657373696f6e496e646578000128747269655f6e6f646573850401305665633c5665633c75383e3e00013c76616c696461746f725f636f756e7410013856616c696461746f72436f756e740000fd040c2c70616c6c65745f626162651870616c6c6574144572726f7204045400010c60496e76616c696445717569766f636174696f6e50726f6f660000043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c69644b65794f776e65727368697050726f6f66000104310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400020415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a09090901050c4070616c6c65745f74696d657374616d701870616c6c65741043616c6c0404540001040c73657404010c6e6f7705050124543a3a4d6f6d656e7400004054536574207468652063757272656e742074696d652e005501546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6ed470686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e0041015468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e742073706563696669656420627940604d696e696d756d506572696f64602e00d4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e002823203c7765696768743e31012d20604f2831296020284e6f7465207468617420696d706c656d656e746174696f6e73206f6620604f6e54696d657374616d7053657460206d75737420616c736f20626520604f283129602961012d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202862656361757365206f6620604469645570646174653a3a74616b656020696e402020606f6e5f66696e616c697a656029d42d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f736574602e204d75737420626520604f283129602e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e0505000006200009050000040c00181d01000d050c3870616c6c65745f696e64696365731870616c6c65741043616c6c04045400011414636c61696d040114696e64657810013c543a3a4163636f756e74496e6465780000489841737369676e20616e2070726576696f75736c7920756e61737369676e656420696e6465782e00dc5061796d656e743a20604465706f736974602069732072657365727665642066726f6d207468652073656e646572206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e00f02d2060696e646578603a2074686520696e64657820746f20626520636c61696d65642e2054686973206d757374206e6f7420626520696e207573652e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e602d204f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e207472616e7366657208010c6e6577000130543a3a4163636f756e744964000114696e64657810013c543a3a4163636f756e74496e6465780001505d0141737369676e20616e20696e64657820616c7265616479206f776e6564206279207468652073656e64657220746f20616e6f74686572206163636f756e742e205468652062616c616e6365207265736572766174696f6eb86973206566666563746976656c79207472616e7366657272656420746f20746865206e6577206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0025012d2060696e646578603a2074686520696e64657820746f2062652072652d61737369676e65642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e5d012d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e642d204f6e65207472616e73666572206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743ae02020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e7429e42020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e74292c23203c2f7765696768743e1066726565040114696e64657810013c543a3a4163636f756e74496e646578000248944672656520757020616e20696e646578206f776e6564206279207468652073656e6465722e005d015061796d656e743a20416e792070726576696f7573206465706f73697420706c6163656420666f722074686520696e64657820697320756e726573657276656420696e207468652073656e646572206163636f756e742e005501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206f776e2074686520696e6465782e000d012d2060696e646578603a2074686520696e64657820746f2062652066726565642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e0084456d6974732060496e646578467265656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e602d204f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e38666f7263655f7472616e736665720c010c6e6577000130543a3a4163636f756e744964000114696e64657810013c543a3a4163636f756e74496e646578000118667265657a651d010110626f6f6c0003545501466f72636520616e20696e64657820746f20616e206163636f756e742e205468697320646f65736e277420726571756972652061206465706f7369742e2049662074686520696e64657820697320616c7265616479e868656c642c207468656e20616e79206465706f736974206973207265696d62757273656420746f206974732063757272656e74206f776e65722e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e00a42d2060696e646578603a2074686520696e64657820746f206265202872652d2961737369676e65642e5d012d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e41012d2060667265657a65603a2069662073657420746f206074727565602c2077696c6c20667265657a652074686520696e64657820736f2069742063616e6e6f74206265207472616e736665727265642e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e782d20557020746f206f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743af42020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e657229f82020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e6572292c23203c2f7765696768743e18667265657a65040114696e64657810013c543a3a4163636f756e74496e6465780004484101467265657a6520616e20696e64657820736f2069742077696c6c20616c7761797320706f696e7420746f207468652073656e646572206163636f756e742e205468697320636f6e73756d657320746865206465706f7369742e005901546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d757374206861766520616c6e6f6e2d66726f7a656e206163636f756e742060696e646578602e00ac2d2060696e646578603a2074686520696e64657820746f2062652066726f7a656e20696e20706c6163652e0088456d6974732060496e64657846726f7a656e60206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e702d20557020746f206f6e6520736c617368206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e11050c3870616c6c65745f696e64696365731870616c6c6574144572726f720404540001142c4e6f7441737369676e65640000048c54686520696e64657820776173206e6f7420616c72656164792061737369676e65642e204e6f744f776e6572000104a454686520696e6465782069732061737369676e656420746f20616e6f74686572206163636f756e742e14496e5573650002047054686520696e64657820776173206e6f7420617661696c61626c652e2c4e6f745472616e73666572000304c854686520736f7572636520616e642064657374696e6174696f6e206163636f756e747320617265206964656e746963616c2e245065726d616e656e74000404d054686520696e646578206973207065726d616e656e7420616e64206d6179206e6f742062652066726565642f6368616e6765642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a09090915050000021905001905084470616c6c65745f617574686f727368697038556e636c65456e7472794974656d0c2c426c6f636b4e756d62657201101048617368012418417574686f72010001083c496e636c7573696f6e486569676874040010012c426c6f636b4e756d62657200000014556e636c6508002401104861736800000d0101384f7074696f6e3c417574686f723e000100001d050c4470616c6c65745f617574686f72736869701870616c6c65741043616c6c040454000104287365745f756e636c65730401286e65775f756e636c6573210501385665633c543a3a4865616465723e0000046050726f76696465206120736574206f6620756e636c65732e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e2105000002f1040025050c4470616c6c65745f617574686f72736869701870616c6c6574144572726f7204045400011c48496e76616c6964556e636c65506172656e740000048854686520756e636c6520706172656e74206e6f7420696e2074686520636861696e2e40556e636c6573416c726561647953657400010480556e636c657320616c72656164792073657420696e2074686520626c6f636b2e34546f6f4d616e79556e636c657300020440546f6f206d616e7920756e636c65732e3047656e65736973556e636c650003045454686520756e636c652069732067656e657369732e30546f6f48696768556e636c650004047c54686520756e636c6520697320746f6f206869676820696e20636861696e2e50556e636c65416c7265616479496e636c756465640005047854686520756e636c6520697320616c726561647920696e636c756465642e204f6c64556e636c65000604b454686520756e636c652069736e277420726563656e7420656e6f75676820746f20626520696e636c756465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a09090929050000022d05002d05083c70616c6c65745f62616c616e6365732c42616c616e63654c6f636b041c42616c616e63650118000c01086964b10401384c6f636b4964656e746966696572000118616d6f756e7418011c42616c616e636500011c726561736f6e733105011c526561736f6e73000031051064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e6365731c526561736f6e7300010c0c466565000000104d6973630001000c416c6c000200003505083c70616c6c65745f62616c616e6365731043616c6c040454000118207472616e73666572080110646573743905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565d101011c42616c616e6365000058d45472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e000501607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e1d0149742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e001501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e002823203c7765696768743e2d012d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72c82020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e65012d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e004852656c617465642066756e6374696f6e733a004d0120202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e290120202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c206361757365d0202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e842d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d41012d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429dc2d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e487472616e736665725f776974685f6d656d6f0c0110646573743905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565d101011c42616c616e63650001106d656d6f8001304f7074696f6e3c4d656d6f3e000120fc5472616e7366657220746865206e61746976652063757272656e63792077697468207468652068656c70206f66206964656e74696669657220737472696e67ec746869732066756e6374696f6e616c6974792063616e2068656c7020746f20646966666572656e746961746520746865207472616e73666572732e002823203c7765696768743e41012d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429dc2d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e906465706f7369745f626c6f636b5f7265776172645f726573657276655f62616c616e636504011476616c7565d101011c42616c616e6365000204dc4d6f766520736f6d6520504f4c59582066726f6d2062616c616e6365206f662073656c6620746f2062616c616e6365206f66204252522e2c7365745f62616c616e63650c010c77686f3905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263650001206e65775f66726565d101011c42616c616e63650001306e65775f7265736572766564d101011c42616c616e636500031890536574207468652062616c616e636573206f66206120676976656e206163636f756e742e001d01546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c0501616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e00b0546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e38666f7263655f7472616e736665720c0118736f757263653905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365000110646573743905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565d101011c42616c616e636500041c4d0145786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d6179206265287370656369666965642e002823203c7765696768743e3d012d2053616d65206173207472616e736665722c20627574206164646974696f6e616c207265616420616e6420777269746520626563617573652074686520736f75726365206163636f756e742069738c20206e6f7420617373756d656420746f20626520696e20746865206f7665726c61792e2c23203c2f7765696768743e506275726e5f6163636f756e745f62616c616e6365040118616d6f756e7418011c42616c616e636500050429014275726e732074686520676976656e20616d6f756e74206f6620746f6b656e732066726f6d207468652063616c6c6572277320667265652c20756e6c6f636b65642062616c616e63652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e39050c2873705f72756e74696d65306d756c746961646472657373304d756c74694164647265737308244163636f756e7449640100304163636f756e74496e6465780110011408496404000001244163636f756e74496400000014496e6465780400710401304163636f756e74496e6465780001000c526177040028011c5665633c75383e0002002441646472657373333204000401205b75383b2033325d000300244164647265737332300400fd0101205b75383b2032305d000400003d05083c70616c6c65745f62616c616e636573144572726f72040454000114544c69717569646974795265737472696374696f6e73000004c44163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c204f766572666c6f7700010470476f7420616e206f766572666c6f7720616674657220616464696e674c496e73756666696369656e7442616c616e63650002047442616c616e636520746f6f206c6f7720746f2073656e642076616c7565484578697374656e7469616c4465706f736974000304e856616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369744852656365697665724364644d697373696e6700040488526563656976657220646f6573206e6f74206861766520612076616c6964204344440041050c3473705f61726974686d657469632c66697865645f706f696e7424466978656455313238000004001801107531323800004505086870616c6c65745f7472616e73616374696f6e5f7061796d656e742052656c6561736573000108245631416e6369656e740000000856320001000049050000024d05004d050c346672616d655f737570706f72741c7765696768747358576569676874546f466565436f656666696369656e74041c42616c616e6365011800100134636f6566665f696e746567657218011c42616c616e6365000128636f6566665f667261639501011c50657262696c6c0001206e656761746976651d010110626f6f6c0001186465677265650801087538000051050c4c706f6c796d6573685f7072696d697469766573206964656e74697479204964656e7469747904244163636f756e74496401000008012c7072696d6172795f6b65790001244163636f756e7449640001387365636f6e646172795f6b657973550501705665633c5365636f6e646172794b65793c4163636f756e7449643e3e0000550500000259050059050c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579305365636f6e646172794b657904244163636f756e7449640100000801187369676e65729801505369676e61746f72793c4163636f756e7449643e00012c7065726d697373696f6e739c012c5065726d697373696f6e7300005d0500000408610565050061050c3c70616c6c65745f6964656e746974791474797065732c436c61696d3173744b657900000801187461726765747c01284964656e746974794964000128636c61696d5f74797065d1020124436c61696d54797065000065050c3c70616c6c65745f6964656e746974791474797065732c436c61696d326e644b657900000801186973737565727c01284964656e74697479496400011473636f7065690501344f7074696f6e3c53636f70653e0000690504184f7074696f6e0404540101010108104e6f6e6500000010536f6d650400010100000100006d050000040898200071050c4c706f6c796d6573685f7072696d69746976657334617574686f72697a6174696f6e34417574686f72697a6174696f6e08244163636f756e7449640100184d6f6d656e74012000100148617574686f72697a6174696f6e5f6461746111010170417574686f72697a6174696f6e446174613c4163636f756e7449643e000134617574686f72697a65645f62797c01284964656e746974794964000118657870697279f801384f7074696f6e3c4d6f6d656e743e00011c617574685f696420010c75363400007505000004087c20007905083c70616c6c65745f6964656e746974791c56657273696f6e00000400080108753800007d05083c70616c6c65745f6964656e746974791043616c6c040454000158406364645f72656769737465725f6469640801387461726765745f6163636f756e74000130543a3a4163636f756e7449640001387365636f6e646172795f6b6579735505017c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e00002cb8526567697374657220607461726765745f6163636f756e746020776974682061206e6577204964656e746974792e002423204661696c75726545012d20606f726967696e602068617320746f206265206120616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792ef42d2045787465726e616c207365636f6e64617279206b6579732063616e206265206c696e6b656420746f206a757374206f6e65206964656e746974792e00202320576569676874c060375f3030305f3030305f303030202b203630305f303030202a207365636f6e646172795f6b6579732e6c656e28296054696e76616c69646174655f6364645f636c61696d730c010c6364647c01284964656e74697479496400013064697361626c655f66726f6d200124543a3a4d6f6d656e74000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001102101496e76616c69646174657320616e7920636c61696d2067656e6572617465642062792060636464602066726f6d206064697361626c655f66726f6d602074696d657374616d70732e009c596f752063616e20616c736f20646566696e6520616e2065787069726174696f6e2074696d652c6d0177686963682077696c6c20696e76616c696461746520616c6c20636c61696d732067656e657261746564206279207468617420606364646020616e642072656d6f766520697420617320434444206d656d6265722067726f75702e5472656d6f76655f7365636f6e646172795f6b6579730401447369676e6572735f746f5f72656d6f7665f001705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e00021cd452656d6f76657320737065636966696564207365636f6e64617279206b657973206f662061204449442069662070726573656e742e002423204661696c757265a049742063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722e00202320576569676874c0603935305f3030305f303030202b2036305f303030202a207369676e6572735f746f5f72656d6f76652e6c656e282960486163636570745f7072696d6172795f6b6579080140726f746174696f6e5f617574685f696420010c7536340001506f7074696f6e616c5f6364645f617574685f6964f8012c4f7074696f6e3c7536343e000334650143616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e6501746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f766564250174686973206368616e676520286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e005d015468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f7264756e6c696e6b656420746f20616e79206964656e746974792e005d01446966666572732066726f6d20726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727920696e20746861742069742077696c6c20756e6c696e6b20746865206f6c64207072696d617279206b6579a4696e7374656164206f66206c656176696e672069742061732061207365636f6e64617279206b65792e002c2320417267756d656e74731d012a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e42a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f7669646572986368616e67655f6364645f726571756972656d656e745f666f725f6d6b5f726f746174696f6e040134617574685f72657175697265641d010110626f6f6c00041435015365742069662043444420617574686f72697a6174696f6e20697320726571756972656420666f72207570646174696e67207072696d617279206b6579206f6620616e206964656e746974792e7843616c6c61626c652076696120726f6f742028676f7665726e616e636529002c2320417267756d656e7473cc2a2060617574685f7265717569726564602043444420417574686f72697a6174696f6e207265717569726564206f72206e6f74506a6f696e5f6964656e746974795f61735f6b657904011c617574685f696420010c753634000504904a6f696e20616e206964656e746974792061732061207365636f6e64617279206b65792e546c656176655f6964656e746974795f61735f6b65790006048c4c6561766520746865207365636f6e64617279206b65792773206964656e746974792e246164645f636c61696d0c01187461726765747c01284964656e746974794964000114636c61696dfc0114436c61696d000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e00070cc4416464732061206e657720636c61696d207265636f7264206f7220656469747320616e206578697374696e67206f6e652e00a84f6e6c792063616c6c6564206279206469645f6973737565722773207365636f6e64617279206b65792e307265766f6b655f636c61696d0801187461726765747c01284964656e746974794964000114636c61696dfc0114436c61696d000804944d61726b73207468652073706563696669656420636c61696d206173207265766f6b65642e607365745f7065726d697373696f6e5f746f5f7369676e65720801187369676e657298015c5369676e61746f72793c543a3a4163636f756e7449643e0001147065726d739c012c5065726d697373696f6e7300090cc853657473207065726d697373696f6e7320666f7220616e20737065636966696320607461726765745f6b657960206b65792e0035014f6e6c7920746865207072696d617279206b6579206f6620616e206964656e746974792069732061626c6520746f20736574207365636f6e64617279206b6579207065726d697373696f6e732e7c6c65676163795f7365745f7065726d697373696f6e5f746f5f7369676e65720801187369676e657298015c5369676e61746f72793c543a3a4163636f756e7449643e00012c7065726d697373696f6e73810501444c65676163795065726d697373696f6e73000a0c4501546869732066756e6374696f6e206973206120776f726b61726f756e6420666f722068747470733a2f2f6769746875622e636f6d2f706f6c6b61646f742d6a732f617070732f6973737565732f33363332d449742073657473207065726d697373696f6e7320666f7220616e20737065636966696320607461726765745f6b657960206b65792e35014f6e6c7920746865207072696d617279206b6579206f6620616e206964656e746974792069732061626c6520746f20736574207365636f6e64617279206b6579207065726d697373696f6e732e54667265657a655f7365636f6e646172795f6b657973000b10c449742064697361626c657320616c6c207365636f6e64617279206b657973206174206064696460206964656e746974792e002023204572726f7273005c756e667265657a655f7365636f6e646172795f6b657973000c04dc52652d656e61626c657320616c6c207365636f6e64617279206b657973206f66207468652063616c6c65722773206964656e746974792e446164645f617574686f72697a6174696f6e0c011874617267657498015c5369676e61746f72793c543a3a4163636f756e7449643e000110646174611101017c417574686f72697a6174696f6e446174613c543a3a4163636f756e7449643e000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e000d04584164647320616e20617574686f72697a6174696f6e2e5072656d6f76655f617574686f72697a6174696f6e0c011874617267657498015c5369676e61746f72793c543a3a4163636f756e7449643e00011c617574685f696420010c7536340001445f617574685f6973737565725f706179731d010110626f6f6c000e086452656d6f76657320616e20617574686f72697a6174696f6e2e75015f617574685f6973737565725f706179732064657465726d696e657320776865746865722074686520697373756572206f662074686520617574686f7269736174696f6e207061797320746865207472616e73616374696f6e20666565946164645f7365636f6e646172795f6b6579735f776974685f617574686f72697a6174696f6e08013c6164646974696f6e616c5f6b6579739505019c5665633c5365636f6e646172794b657957697468417574683c543a3a4163636f756e7449643e3e000128657870697265735f6174200124543a3a4d6f6d656e74000f30bc49742061646473207365636f6e64617279206b65797320746f20746172676574206964656e7469747920606964602e39014b65797320617265206469726563746c7920616464656420746f206964656e7469747920626563617573652065616368206f66207468656d2068617320616e20617574686f72697a6174696f6e2e0028417267756d656e74733ab0202020202d20606f726967696e60205072696d617279206b6579206f662060696460206964656e746974792eec202020202d2060696460204964656e74697479207768657265206e6577207365636f6e64617279206b6579732077696c6c2062652061646465642e6d01202020202d20606164646974696f6e616c5f6b65797360204e6577207365636f6e64617279206974656d732028616e6420746865697220617574686f72697a6174696f6e20646174612920746f2061646420746f2074617267657434202020206964656e746974792e001c4661696c757265b8202020202d2049742063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722ed0202020202d204b6579732073686f756c642062652061626c6520746f206c696e6b656420746f20616e79206964656e746974792e746164645f696e766573746f725f756e697175656e6573735f636c61696d1001187461726765747c01284964656e746974794964000114636c61696dfc0114436c61696d00011470726f6f66a105014c496e766573746f725a4b50726f6f6644617461000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e00105009014164642060436c61696d3a3a496e766573746f72556e697175656e6573736020636c61696d20666f72206120676976656e20746172676574206964656e746974792e002823203c7765696768743e410120576569676874206f662074686520746869732065787472696e73696320697320646570656e64206f6e2074686520636f6d7075746174696f6e2074686174207573656420746f2076616c69646174652501207468652070726f6f66206f6620636c61696d2c2077686963682077696c6c206265206120636f6e7374616e7420696e646570656e64656e74206f66207573657220696e707574732e2c23203c2f7765696768743e002c2320417267756d656e7473b5012a206f726967696e202d2057686f2070726f76696465732074686520636c61696d20746f2074686520757365723f20496e207468697320636173652c20697427732074686520757365722773206163636f756e742069642061732074686520757365722070726f76696465732ee42a20746172676574202d20604964656e7469747949646020746f2077686963682074686520636c61696d20676574732061737369676e65642eb42a20636c61696d202d2060496e766573746f72556e697175656e6573736020636c61696d2064657461696c732eac2a2070726f6f66202d20546f2076616c6964617465207468652073656c66206174746573746174696f6e2e6c2a20657870697279202d20457870697279206f6620636c61696d2e002023204572726f72732d012a20604469644d757374416c7265616479457869737460205461726765742073686f756c6420616c7265616479206265656e20612070617274206f66207468652065636f73797374656d2e91012a2060436c61696d56617269616e744e6f74416c6c6f77656460205768656e206f726967696e20747279696e6720746f207061737320636c61696d2076617269616e74206f74686572207468616e2060496e766573746f72556e697175656e657373602eb9012a2060436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f77656460205768656e2069737375657220697320646966666572656e742066726f6d20746172676574206f72204344445f494420697320696e76616c696420666f7220676976656e20757365722eac2a2060496e76616c696453636f7065436c61696d205768656e2070726f6f6620697320696e76616c69642eec2a2060496e76616c6964434444496460207768656e20796f7520617265206e6f7420746865206f776e6572206f662074686174204344445f49442e4067635f6164645f6364645f636c61696d0401187461726765747c01284964656e7469747949640011044501417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c20616464732061206e65772063646420636c61696d207265636f72642e4c67635f7265766f6b655f6364645f636c61696d0401187461726765747c01284964656e7469747949640012046901417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c2072656d6f76657320616e206578697374696e672063646420636c61696d207265636f72642e806164645f696e766573746f725f756e697175656e6573735f636c61696d5f76321401187461726765747c01284964656e74697479496400011473636f70650101011453636f7065000114636c61696dfc0114436c61696d00011470726f6f66b105013c53636f7065436c61696d50726f6f66000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e001300547265766f6b655f636c61696d5f62795f696e6465780c01187461726765747c01284964656e746974794964000128636c61696d5f74797065d1020124436c61696d5479706500011473636f7065690501344f7074696f6e3c53636f70653e001420f5015265766f6b6573206120737065636966696320636c61696d207573696e6720697473205b436c61696d20556e6971756520496e6465785d282f70616c6c65745f6964656e746974792f696e6465782e68746d6c23636c61696d2d756e697175652d696e6465782920636f6d706f7365642062792060746172676574602c6860636c61696d5f74797065602c20616e64206073636f7065602e000501506c65617365206e6f7465207468617420606f726967696e60206d7573742062652074686520697373756572206f66207468652074617267657420636c61696d2e002023204572726f72734d012d20605461726765744861734e6f6e5a65726f42616c616e6365417453636f7065496460207768656e20796f752074727920746f207265766f6b6520612060496e766573746f72556e697175656e6573732a602501636c61696d2c20616e64206074617267657460206964656e74697479207374696c6c206861766520616e792062616c616e6365206f6e2074686520676976656e206073636f7065602e7c726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727908011c617574685f696420010c7536340001506f7074696f6e616c5f6364645f617574685f6964f8012c4f7074696f6e3c7536343e001538650143616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e6501746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f766564290174686973206368616e67652c20286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e005d015468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f7264756e6c696e6b656420746f20616e79206964656e746974792e006101446966666572732066726f6d206163636570745f7072696d6172795f6b657920696e20746861742069742077696c6c206c6561766520746865206f6c64207072696d617279206b65792061732061207365636f6e6461727985016b6579207769746820746865207065726d697373696f6e732073706563696669656420696e2074686520636f72726573706f6e64696e6720526f746174655072696d6172794b6579546f5365636f6e6461727920617574686f72697a6174696f6ea4696e7374656164206f6620756e6c696e6b696e6720746865206f6c64207072696d617279206b65792e002c2320417267756d656e74731d012a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e42a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f76696465720c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e8105104c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65790c617069444c65676163795065726d697373696f6e7300000c01146173736574a0014041737365745065726d697373696f6e7300012465787472696e736963850501684c656761637945787472696e7369635065726d697373696f6e73000124706f7274666f6c696fd80150506f7274666f6c696f5065726d697373696f6e7300008505104c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65790c617069684c656761637945787472696e7369635065726d697373696f6e7300000400890501904f7074696f6e3c5665633c4c656761637950616c6c65745065726d697373696f6e733e3e0000890504184f7074696f6e040454018d050108104e6f6e6500000010536f6d6504008d0500000100008d050000029105009105104c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65790c6170695c4c656761637950616c6c65745065726d697373696f6e7300000c012c70616c6c65745f6e616d65bc012850616c6c65744e616d65000114746f74616c1d010110626f6f6c000148646973706174636861626c655f6e616d6573cc01545665633c446973706174636861626c654e616d653e0000950500000299050099051064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479505365636f6e646172794b6579576974684175746804244163636f756e7449640100000801347365636f6e646172795f6b657994015c5365636f6e646172794b65793c4163636f756e7449643e000138617574685f7369676e61747572659d0501104835313200009d05083c7072696d69746976655f7479706573104835313200000400150201205b75383b2036345d0000a105104c706f6c796d6573685f7072696d69746976657354696e766573746f725f7a6b70726f6f665f646174610876314c496e766573746f725a4b50726f6f664461746100000400a50501245369676e61747572650000a5050c287363686e6f72726b656c107369676e245369676e6174757265000008010452a905014c436f6d7072657373656452697374726574746f00010473ad0501185363616c61720000a9050c40637572766532353531395f64616c656b2472697374726574746f4c436f6d7072657373656452697374726574746f000004000401205b75383b2033325d0000ad050c40637572766532353531395f64616c656b187363616c6172185363616c6172000004011462797465730401205b75383b2033325d0000b1050c54636f6e666964656e7469616c5f6964656e7469747930636c61696d5f70726f6f66733c53636f7065436c61696d50726f6f6600000c016470726f6f665f73636f70655f69645f77656c6c666f726d6564b50501245369676e617475726500016c70726f6f665f73636f70655f69645f6364645f69645f6d61746368b905012c5a6b50726f6f664461746100012073636f70655f6964c105013852697374726574746f506f696e740000b5050c54636f6e666964656e7469616c5f6964656e74697479107369676e245369676e6174757265000008010452a905014c436f6d7072657373656452697374726574746f00010473ad0501185363616c61720000b9050c54636f6e666964656e7469616c5f6964656e7469747930636c61696d5f70726f6f66732c5a6b50726f6f664461746100000c014c6368616c6c656e67655f726573706f6e736573bd0501945b5363616c61723b205a4b5f50524f4f465f444154415f4348475f524553504f4e5345535d00016073756274726163745f65787072657373696f6e735f726573c105013852697374726574746f506f696e74000158626c696e6465645f73636f70655f6469645f68617368c105013852697374726574746f506f696e740000bd0500000302000000ad0500c1050c40637572766532353531395f64616c656b2472697374726574746f3852697374726574746f506f696e7400000400c505013045647761726473506f696e740000c5050c40637572766532353531395f64616c656b1c656477617264733045647761726473506f696e74000010010458c90501304669656c64456c656d656e7400010459c90501304669656c64456c656d656e740001045ac90501304669656c64456c656d656e7400010454c90501304669656c64456c656d656e740000c9051840637572766532353531395f64616c656b1c6261636b656e641873657269616c0c753634146669656c64384669656c64456c656d656e74353100000400cd0501205b7536343b20355d0000cd05000003050000002000d105083c70616c6c65745f6964656e74697479144572726f7204045400018434416c72656164794c696e6b6564000004dc4f6e65207365636f6e64617279206f72207072696d617279206b65792063616e206f6e6c792062656c6f6e6720746f206f6e6520444944584d697373696e6743757272656e744964656e74697479000104ac4d697373696e672063757272656e74206964656e74697479206f6e20746865207472616e73616374696f6e30556e617574686f72697a6564000204bc5369676e61746f7279206973206e6f742070726520617574686f72697a656420627920746865206964656e7469747944496e76616c69644163636f756e744b6579000304a84163636f756e742049642063616e6e6f74206265206578747261637465642066726f6d207369676e65725c556e417574686f72697a656443646450726f76696465720004049c4f6e6c792043444420736572766963652070726f7669646572732061726520616c6c6f7765642e74496e76616c6964417574686f72697a6174696f6e46726f6d4f776e6572000504a0416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865206f776e65722e8c496e76616c6964417574686f72697a6174696f6e46726f6d43646450726f7669646572000604bc416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865204344442070726f76696465722e644e6f7443646450726f76696465724174746573746174696f6e000704b84174746573746174696f6e20776173206e6f7420627920612043444420736572766963652070726f76696465722e70417574686f72697a6174696f6e734e6f74466f7253616d6544696473000804a0417574686f72697a6174696f6e7320617265206e6f7420666f72207468652073616d65204449442e4c4469644d757374416c726561647945786973740009046c54686520444944206d75737420616c72656164792065786973742e8043757272656e744964656e7469747943616e6e6f744265466f72776172646564000a044d0143757272656e74206964656e746974792063616e6e6f7420626520666f727761726465642c206974206973206e6f742061207365636f6e64617279206b6579206f6620746172676574206964656e746974792e50417574686f72697a6174696f6e45787069726564000b049c546865206f6666636861696e20617574686f72697a6174696f6e2068617320657870697265642e385461726765744861734e6f436464000c0480546865207461726765742044494420686173206e6f2076616c6964204344442e6c417574686f72697a6174696f6e4861734265656e5265766f6b6564000d04a8417574686f72697a6174696f6e20686173206265656e206578706c696369746c79207265766f6b65642e74496e76616c6964417574686f72697a6174696f6e5369676e6174757265000e048c416e20696e76616c696420617574686f72697a6174696f6e207369676e61747572652e344b65794e6f74416c6c6f776564000f04d454686973206b6579206973206e6f7420616c6c6f77656420746f2065786563757465206120676976656e206f7065726174696f6e2e344e6f745072696d6172794b657900100461014f6e6c7920746865207072696d617279206b657920697320616c6c6f77656420746f207265766f6b6520616e204964656e74697479205369676e61746f7279206f66662d636861696e20617574686f72697a6174696f6e2e3c446964446f65734e6f7445786973740011045c5468652044494420646f6573206e6f742065786973742e40446964416c72656164794578697374730012045c5468652044494420616c7265616479206578697374732e785365636f6e646172794b657973436f6e7461696e5072696d6172794b6579001304ac546865207365636f6e64617279206b65797320636f6e7461696e20746865207072696d617279206b65792e444661696c6564546f436861726765466565001404a0436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e284e6f74415369676e6572001504d85369676e6572206973206e6f742061207365636f6e64617279206b6579206f66207468652070726f7669646564206964656e746974796c43616e6e6f744465636f64655369676e65724163636f756e744964001604150143616e6e6f7420636f6e7665727420612060543a3a4163636f756e7449646020746f2060416e795369676e61747572653a3a5369676e65723a3a4163636f756e744964602e484d756c746953696748617342616c616e636500170421014d756c74697369672063616e206e6f7420626520756e6c696e6b65642066726f6d20616e206964656e74697479207768696c65206974207374696c6c20686f6c647320504f4c595880436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f7765640018040501436f6e666964656e7469616c2053636f706520636c61696d732063616e20626520616464656420627920616e204964656e7469747920746f2069742d73656c662e44496e76616c696453636f7065436c61696d001904bc4164646974696f6e206f662061206e65772073636f706520636c61696d206765747320696e76616c6964617465642e58436c61696d56617269616e744e6f74416c6c6f776564001a04e454727920746f20616464206120636c61696d2076617269616e74207573696e6720756e2d64657369676e617465642065787472696e7369632e805461726765744861734e6f6e5a65726f42616c616e6365417453636f70654964001b04510154727920746f2064656c6574652074686520495520636c61696d206576656e207768656e20746865207573657220686173206e6f6e207a65726f2062616c616e636520617420676976656e2073636f706549642e6443444449644e6f74556e69717565466f724964656e74697479001c041d0143444449642073686f756c6420626520756e6971756520262073616d652077697468696e20616c6c2063646420636c61696d7320706f737365737365642062792061204449442e30496e76616c69644344444964001d0409014e6f6e2073797374656d61746963204344442070726f7669646572732063616e206e6f74206372656174652064656661756c74206364645f696420636c61696d732e7c436c61696d416e6450726f6f6656657273696f6e73446f4e6f744d61746368001e049c436c61696d20616e642050726f6f662076657273696f6e732061726520646966666572656e742e544163636f756e744b657949734265696e6755736564001f04d0546865206163636f756e74206b6579206973206265696e6720757365642c2069742063616e277420626520756e6c696e6b65642e48437573746f6d53636f7065546f6f4c6f6e670020086c4120637573746f6d2073636f706520697320746f6f206c6f6e672e9c49742063616e206174206d6f737420626520603332602063686172616374657273206c6f6e672e00d505000002d90500d9051064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f757038496e6163746976654d656d62657204184d6f6d656e740120000c010869647c01284964656e74697479496400013864656163746976617465645f61742001184d6f6d656e74000118657870697279f801384f7074696f6e3c4d6f6d656e743e0000dd05083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001086174f801444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733101013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ee105083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00e5050c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d651043616c6c0001a41853797374656d0400790401ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53797374656d2c2052756e74696d653e00000010426162650400e90401a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426162652c2052756e74696d653e0001002454696d657374616d700400010501b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54696d657374616d702c2052756e74696d653e0002001c496e646963657304000d0501b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496e64696365732c2052756e74696d653e00030028417574686f727368697004001d0501bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c417574686f72736869702c2052756e74696d653e0004002042616c616e6365730400350501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c42616c616e6365732c2052756e74696d653e000500204964656e7469747904007d0501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4964656e746974792c2052756e74696d653e0007004c4364645365727669636550726f7669646572730400dd0501e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4364645365727669636550726f7669646572732c2052756e74696d653e00080044506f6c796d657368436f6d6d69747465650400e90501d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f6c796d657368436f6d6d69747465652c2052756e74696d653e0009004c436f6d6d69747465654d656d626572736869700400ed0501e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6d6d69747465654d656d626572736869702c2052756e74696d653e000a0048546563686e6963616c436f6d6d69747465650400f10501dd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546563686e6963616c436f6d6d69747465652c2052756e74696d653e000b0070546563686e6963616c436f6d6d69747465654d656d626572736869700400f50501050273656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546563686e6963616c436f6d6d69747465654d656d626572736869702c2052756e74696d653e000c004055706772616465436f6d6d69747465650400f90501d50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c55706772616465436f6d6d69747465652c2052756e74696d653e000d006855706772616465436f6d6d69747465654d656d626572736869700400fd0501fd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c55706772616465436f6d6d69747465654d656d626572736869702c2052756e74696d653e000e00204d756c74695369670400010601b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d756c74695369672c2052756e74696d653e000f00184272696467650400050601ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4272696467652c2052756e74696d653e0010001c5374616b696e670400150601b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5374616b696e672c2052756e74696d653e0011001c53657373696f6e0400090701b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53657373696f6e2c2052756e74696d653e0013001c4772616e6470610400150701b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4772616e6470612c2052756e74696d653e00150020496d4f6e6c696e650400410701b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496d4f6e6c696e652c2052756e74696d653e001700105375646f0400610701a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5375646f2c2052756e74696d653e0019001441737365740400650701a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c41737365742c2052756e74696d653e001a004c4361706974616c446973747269627574696f6e0400850701e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4361706974616c446973747269627574696f6e2c2052756e74696d653e001b0028436865636b706f696e7404008d0701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436865636b706f696e742c2052756e74696d653e001c0044436f6d706c69616e63654d616e616765720400950701d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6d706c69616e63654d616e616765722c2052756e74696d653e001d003c436f72706f72617465416374696f6e0400990701d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f72706f72617465416374696f6e2c2052756e74696d653e001e003c436f72706f7261746542616c6c6f740400b10701d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f72706f7261746542616c6c6f742c2052756e74696d653e001f0010506970730400b50701a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506970732c2052756e74696d653e00210024506f7274666f6c696f0400c50701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f7274666f6c696f2c2052756e74696d653e0022002c50726f746f636f6c4665650400d10701c10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50726f746f636f6c4665652c2052756e74696d653e002300245363686564756c65720400d90701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5363686564756c65722c2052756e74696d653e00240028536574746c656d656e740400e10701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c536574746c656d656e742c2052756e74696d653e00250028537461746973746963730400f50701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c537461746973746963732c2052756e74696d653e0026000c53746f0400090801a10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53746f2c2052756e74696d653e0027002054726561737572790400190801b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54726561737572792c2052756e74696d653e0028001c5574696c6974790400250801b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5574696c6974792c2052756e74696d653e00290010426173650400310801a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426173652c2052756e74696d653e002a003845787465726e616c4167656e74730400350801cd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c45787465726e616c4167656e74732c2052756e74696d653e002b001c52656c617965720400390801b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c52656c617965722c2052756e74696d653e002c001c5265776172647304003d0801b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c526577617264732c2052756e74696d653e002d0024546573745574696c730400450801b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546573745574696c732c2052756e74696d653e00320000e905084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279450101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f76651d010110626f6f6c00011063616c6ce5050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f76651d010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652eed05083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001086174f801444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733101013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef105084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279450101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f76651d010110626f6f6c00011063616c6ce5050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f76651d010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef505083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001086174f801444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733101013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef905084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279450101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f76651d010110626f6f6c00011063616c6ce5050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f76651d010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652efd05083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001086174f801444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733101013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e0106083c70616c6c65745f6d756c74697369671043616c6c04045400014c3c6372656174655f6d756c746973696708011c7369676e657273f001705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000134736967735f726571756972656420010c75363400001448437265617465732061206d756c7469736967002c2320417267756d656e7473a5012a20607369676e65727360202d205369676e657273206f6620746865206d756c7469736967202854686579206e65656420746f2061636365707420617574686f72697a6174696f6e206265666f72652074686579206172652061637475616c6c79206164646564292e19012a2060736967735f726571756972656460202d204e756d626572206f66207369677320726571756972656420746f2070726f636573732061206d756c74692d7369672074782e986372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6964656e746974791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616ce5050140426f783c543a3a50726f706f73616c3e000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f73651d010110626f6f6c0001203d01437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e846372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6b65791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616ce5050140426f783c543a3a50726f706f73616c3e000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f73651d010110626f6f6c0002203d01437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e6c6372656174655f70726f706f73616c5f61735f6964656e746974791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616ce5050140426f783c543a3a50726f706f73616c3e000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f73651d010110626f6f6c0003206c437265617465732061206d756c74697369672070726f706f73616c002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e586372656174655f70726f706f73616c5f61735f6b65791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616ce5050140426f783c543a3a50726f706f73616c3e000118657870697279f801444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f73651d010110626f6f6c0004206c437265617465732061206d756c74697369672070726f706f73616c002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4c617070726f76655f61735f6964656e746974790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c753634000518e4417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea42a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e38617070726f76655f61735f6b65790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340006183101417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea42a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4872656a6563745f61735f6964656e746974790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c753634000718e052656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea02a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e3472656a6563745f61735f6b65790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340008182d0152656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea02a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e886163636570745f6d756c74697369675f7369676e65725f61735f6964656e7469747904011c617574685f696420010c7536340009100d01416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206964656e746974792e002c2320417267756d656e7473ac2a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e746163636570745f6d756c74697369675f7369676e65725f61735f6b657904011c617574685f696420010c753634000a102901416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206b657920284163636f756e744964292e002c2320417267756d656e7473ac2a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e4c6164645f6d756c74697369675f7369676e65720401187369676e657298015c5369676e61746f72793c543a3a4163636f756e7449643e000b102901416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e002c2320417267756d656e7473782a20607369676e657260202d205369676e61746f727920746f206164642e5872656d6f76655f6d756c74697369675f7369676e65720401187369676e657298015c5369676e61746f72793c543a3a4163636f756e7449643e000c103d0152656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e002c2320417267756d656e7473842a20607369676e657260202d205369676e61746f727920746f2072656d6f76652e806164645f6d756c74697369675f7369676e6572735f7669615f63726561746f720801206d756c7469736967000130543a3a4163636f756e74496400011c7369676e657273f001705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000d244501416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865246d756c74697369672e002c2320417267756d656e74739c2a20606d756c746973696760202d2041646472657373206f6620746865206d756c746920736967842a20607369676e65727360202d205369676e61746f7269657320746f206164642e00202320576569676874a4603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e2829608c72656d6f76655f6d756c74697369675f7369676e6572735f7669615f63726561746f720801206d756c7469736967000130543a3a4163636f756e74496400011c7369676e657273f001705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000e248c52656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672ef054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865206d756c74697369672e002c2320417267756d656e74739c2a20606d756c746973696760202d2041646472657373206f6620746865206d756c74697369672e902a20607369676e65727360202d205369676e61746f7269657320746f2072656d6f76652e00202320576569676874a4603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e282960506368616e67655f736967735f7265717569726564040134736967735f726571756972656420010c753634000f144d014368616e67657320746865206e756d626572206f66207369676e6174757265732072657175697265642062792061206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865406d756c746973696720697473656c662e002c2320417267756d656e7473d82a2060736967735f726571756972656460202d204e6577206e756d626572206f66207265717569726564207369676e6174757265732e5c6d616b655f6d756c74697369675f7365636f6e646172790401206d756c7469736967000130543a3a4163636f756e7449640010146901416464732061206d756c74697369672061732061207365636f6e64617279206b6579206f662063757272656e7420646964206966207468652063757272656e7420646964206973207468652063726561746f72206f6620746865246d756c74697369672e002c2320417267756d656e7473802a20606d756c746973696760202d206d756c7469207369672061646472657373546d616b655f6d756c74697369675f7072696d6172790801206d756c7469736967000130543a3a4163636f756e7449640001506f7074696f6e616c5f6364645f617574685f6964f8012c4f7074696f6e3c7536343e0011145d01416464732061206d756c746973696720617320746865207072696d617279206b6579206f66207468652063757272656e7420646964206966207468652063757272656e7420444944206973207468652063726561746f72406f6620746865206d756c74697369672e002c2320417267756d656e7473842a20606d756c74695f73696760202d206d756c746920736967206164647265737368657865637574655f7363686564756c65645f70726f706f73616c1001206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340001306d756c74697369675f6469647c01284964656e7469747949640001405f70726f706f73616c5f7765696768742001185765696768740012047101526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20666f7220657865637574696e67207363686564756c6564206d756c74697369672070726f706f73616c2e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e0506083470616c6c65745f6272696467651043616c6c040454000144446368616e67655f636f6e74726f6c6c6572040128636f6e74726f6c6c6572000130543a3a4163636f756e744964000010a04368616e6765732074686520636f6e74726f6c6c6572206163636f756e742061732061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e306368616e67655f61646d696e04011461646d696e000130543a3a4163636f756e744964000110744368616e67657320746865206272696467652061646d696e206b65792e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e3c6368616e67655f74696d656c6f636b04012074696d656c6f636b100138543a3a426c6f636b4e756d626572000210704368616e676573207468652074696d656c6f636b20706572696f642e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e18667265657a650003145d01467265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c65206966206974206973206e6f7420616c72656164792066726f7a656e2e205768656e2074686549016272696467652069732066726f7a656e2c20617474656d70746564207472616e73616374696f6e732067657420706f7374706f6e656420696e7374656164206f662067657474696e672068616e646c65642e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e20756e667265657a650004101101556e667265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c652069662069742069732066726f7a656e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c6368616e67655f6272696467655f6c696d6974080118616d6f756e7418011c42616c616e63650001206475726174696f6e100138543a3a426c6f636b4e756d626572000514684368616e6765732074686520627269646765206c696d6974732e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ea42d20604469766973696f6e42795a65726f6020696620606475726174696f6e60206973207a65726f2e586368616e67655f6272696467655f6578656d707465640401206578656d707465640906015c5665633c284964656e7469747949642c20626f6f6c293e0006109c4368616e6765732074686520627269646765206c696d6974206578656d70746564206c6973742e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e58666f7263655f68616e646c655f6272696467655f74780401246272696467655f74787901015842726964676554783c543a3a4163636f756e7449643e0007142501466f726365732068616e646c696e672061207472616e73616374696f6e20627920627970617373696e672074686520627269646765206c696d697420616e642074696d656c6f636b2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e21012d20604e6f56616c69644364646020696620606272696467655f74782e726563697069656e746020646f6573206e6f74206861766520612076616c69642043444420636c61696d2e5c62617463685f70726f706f73655f6272696467655f74780401286272696467655f7478731106016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000824450150726f706f736573206120766563746f72206f6620627269646765207472616e73616374696f6e732e2054686520766563746f722069732070726f63657373656420756e74696c207468652066697273744d0170726f706f73616c2077686963682063617573657320616e206572726f722c20696e207768696368206361736520746865206572726f722069732072657475726e656420616e64207468652072657374206f667070726f706f73616c7320617265206e6f742070726f6365737365642e00242323204572726f7273c82d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e00202320576569676874b0603530305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829604470726f706f73655f6272696467655f74780401246272696467655f74787901015842726964676554783c543a3a4163636f756e7449643e000918490150726f706f736573206120627269646765207472616e73616374696f6e2c20776869636820616d6f756e747320746f206d616b696e672061206d756c74697369672070726f706f73616c20666f72207468655501627269646765207472616e73616374696f6e20696620746865207472616e73616374696f6e206973206e6577206f7220617070726f76696e6720616e206578697374696e672070726f706f73616c20696620746865987472616e73616374696f6e2068617320616c7265616479206265656e2070726f706f7365642e00242323204572726f7273c82d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e4068616e646c655f6272696467655f74780401246272696467655f74787901015842726964676554783c543a3a4163636f756e7449643e000a18c048616e646c657320616e20617070726f76656420627269646765207472616e73616374696f6e2070726f706f73616c2e00242323204572726f727319012d206042616443616c6c65726020696620606f726967696e60206973206e6f74206053656c663a3a636f6e74726f6c6c657260206f7220206053656c663a3a61646d696e602eec2d206054696d656c6f636b656454786020696620746865207472616e73616374696f6e20737461747573206973206054696d656c6f636b6564602e09012d206050726f706f73616c416c726561647948616e646c65646020696620746865207472616e73616374696f6e20737461747573206973206048616e646c6564602e28667265657a655f7478730401286272696467655f7478731106016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000b2088467265657a657320676976656e20627269646765207472616e73616374696f6e732e8501496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e00202320576569676874b0603430305f3030305f303030202b20325f3030305f303030202a206272696467655f7478732e6c656e28296030756e667265657a655f7478730401286272696467655f7478731106016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000c2090556e667265657a657320676976656e20627269646765207472616e73616374696f6e732e8501496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e00202320576569676874b0603430305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829606868616e646c655f7363686564756c65645f6272696467655f74780401246272696467655f74787901015842726964676554783c543a3a4163636f756e7449643e000d189901526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f2068616e646c652061207363686564756c65642074696d656c6f636b656420627269646765207472616e73616374696f6e2e002023204572726f7273982d20604261644f726967696e6020696620606f726967696e60206973206e6f7420726f6f742ef82d206050726f706f73616c416c726561647948616e646c656460206966207472616e73616374696f6e20737461747573206973206048616e646c6564602ebc2d206046726f7a656e547860206966207472616e73616374696f6e20737461747573206973206046726f7a656e602e406164645f667265657a655f61646d696e040130667265657a655f61646d696e000130543a3a4163636f756e744964000e104c416464206120667265657a652061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c72656d6f76655f667265657a655f61646d696e040130667265657a655f61646d696e000130543a3a4163636f756e744964000f105852656d6f7665206120667265657a652061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e2872656d6f76655f7478730401286272696467655f7478731106016c5665633c42726964676554783c543a3a4163636f756e7449643e3e0010148452656d6f766520676976656e20627269646765207472616e73616374696f6e732e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ed02d20604e6f7446726f7a656e60206966206120747820696e20606272696467655f74787360206973206e6f742066726f7a656e2e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e09060000020d06000d06000004087c1d010011060000027901001506083870616c6c65745f7374616b696e671043616c6c04045400018010626f6e640c0128636f6e74726f6c6c65723905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565d101013042616c616e63654f663c543e00011470617965651906017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e000058610154616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c80626520746865206163636f756e74207468617420636f6e74726f6c732069742e002d016076616c756560206d757374206265206d6f7265207468616e2074686520606d696e696d756d5f62616c616e636560207370656369666965642062792060543a3a43757272656e6379602e002101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e003c456d6974732060426f6e646564602e002823203c7765696768743ed02d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e1c2d204f2831292e642d20546872656520657874726120444220656e74726965732e004d014e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e65643d01756e6c6573732074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e482d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a2d012d20526561643a20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c2043757272656e74204572612c20486973746f72792044657074682c204c6f636b73dc2d2057726974653a20426f6e6465642c2050617965652c205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e28626f6e645f65787472610401386d61785f6164646974696f6e616cd101013042616c616e63654f663c543e000154610141646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e636520757030666f72207374616b696e672e004d01557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e6101556e6c696b65205b60626f6e64605d206f72205b60756e626f6e64605d20746869732066756e6374696f6e20646f6573206e6f7420696d706f736520616e79206c696d69746174696f6e206f6e2074686520616d6f756e7448746861742063616e2062652061646465642e005d01546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c657220616e64f469742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e003c456d6974732060426f6e646564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e1c2d204f2831292e3c2d204f6e6520444220656e7472792e302d2d2d2d2d2d2d2d2d2d2d2d284442205765696768743a11012d20526561643a2045726120456c656374696f6e205374617475732c20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c204c6f636b73a02d2057726974653a205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e18756e626f6e6404011476616c7565d101013042616c616e63654f663c543e00028051015363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e64fc706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e2101543a3a43757272656e63793a3a6d696e696d756d5f62616c616e636528292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e0045014f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c20796f752063616e2063616c6c206077697468647261775f756e626f6e6465646020746f2061637475616c6c79206d6f7665bc7468652066756e6473206f7574206f66206d616e6167656d656e7420726561647920666f72207472616e736665722e0039014e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d41585f554e4c4f434b494e475f4348554e4b536029390163616e20636f2d657869737473206174207468652073616d652074696d652e20496e207468617420636173652c205b6043616c6c3a3a77697468647261775f756e626f6e646564605d206e656564f8746f2062652063616c6c656420666972737420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e0044456d6974732060556e626f6e646564602e009453656520616c736f205b6043616c6c3a3a77697468647261775f756e626f6e646564605d2e002823203c7765696768743e3d012d20496e646570656e64656e74206f662074686520617267756d656e74732e204c696d697465642062757420706f74656e7469616c6c79206578706c6f697461626c6520636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732e61012d20456163682063616c6c20287265717569726573207468652072656d61696e646572206f662074686520626f6e6465642062616c616e636520746f2062652061626f766520606d696e696d756d5f62616c616e636560296d01202077696c6c2063617573652061206e657720656e74727920746f20626520696e73657274656420696e746f206120766563746f722028604c65646765722e756e6c6f636b696e676029206b65707420696e2073746f726167652e4d012020546865206f6e6c792077617920746f20636c65616e207468652061666f72656d656e74696f6e65642073746f72616765206974656d20697320616c736f20757365722d636f6e74726f6c6c6564207669615820206077697468647261775f756e626f6e646564602e3c2d204f6e6520444220656e7472792e282d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a21012d20526561643a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e744572612c204c6f636b732c205c5b4f726967696e204163636f756e745c5da82d2057726974653a204c6f636b732c204c65646765722c205c5b4f726967696e204163636f756e745c5d243c2f7765696768743e4477697468647261775f756e626f6e6465640401486e756d5f736c617368696e675f7370616e7310010c75333200037c290152656d6f766520616e7920756e6c6f636b6564206368756e6b732066726f6d207468652060756e6c6f636b696e67602071756575652066726f6d206f7572206d616e6167656d656e742e0031015468697320657373656e7469616c6c7920667265657320757020746861742062616c616e636520746f206265207573656420627920746865207374617368206163636f756e7420746f20646f4877686174657665722069742077616e74732e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e0048456d697473206057697468647261776e602e006853656520616c736f205b6043616c6c3a3a756e626f6e64605d2e002823203c7765696768743e51012d20436f756c6420626520646570656e64656e74206f6e2074686520606f726967696e6020617267756d656e7420616e6420686f77206d7563682060756e6c6f636b696e6760206368756e6b732065786973742e410120497420696d706c6965732060636f6e736f6c69646174655f756e6c6f636b656460207768696368206c6f6f7073206f76657220604c65646765722e756e6c6f636b696e67602c207768696368206973f020696e6469726563746c7920757365722d636f6e74726f6c6c65642e20536565205b60756e626f6e64605d20666f72206d6f72652064657461696c2e75012d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732c20796574207468652073697a65206f6620776869636820636f756c64206265206c61726765206261736564206f6e20606c6564676572602ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e3c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0501436f6d706c6578697479204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2072656d6f76651c5570646174653a21012d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c204c6f636b732c205b4f726967696e204163636f756e745da42d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c6564676572144b696c6c3a41012d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c20426f6e6465642c20536c617368696e67205370616e732c205b4f726967696e4420204163636f756e745d2c204c6f636b734d012d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c6420205b4f726967696e204163636f756e745d2c204c6f636b73702d2057726974657320456163683a205370616e536c617368202a205309014e4f54453a2057656967687420616e6e6f746174696f6e20697320746865206b696c6c207363656e6172696f2c20776520726566756e64206f74686572776973652e2c23203c2f7765696768743e2076616c696461746504011470726566731d06013856616c696461746f725072656673000444e44465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e2c2d2d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a8c2d20526561643a2045726120456c656374696f6e205374617475732c204c65646765727c2d2057726974653a204e6f6d696e61746f72732c2056616c696461746f72732c23203c2f7765696768743e206e6f6d696e61746504011c74617267657473250601a05665633c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e00054c0d014465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e004d01456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e20546869732063616e206f6e6c792062652063616c6c6564207768656e885b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743e2d012d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f662060746172676574736020284e29fc77686963682069732063617070656420617420436f6d7061637441737369676e6d656e74733a3a4c494d495420284d41585f4e4f4d494e4154494f4e53292ed42d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e242d2d2d2d2d2d2d2d2d305765696768743a204f284e29807768657265204e20697320746865206e756d626572206f662074617267657473284442205765696768743ac42d2052656164733a2045726120456c656374696f6e205374617475732c204c65646765722c2043757272656e7420457261802d205772697465733a2056616c696461746f72732c204e6f6d696e61746f72732c23203c2f7765696768743e146368696c6c000644c44465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e502d20436f6e7461696e73206f6e6520726561642ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e202d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a842d20526561643a20457261456c656374696f6e5374617475732c204c65646765727c2d2057726974653a2056616c696461746f72732c204e6f6d696e61746f72732c23203c2f7765696768743e247365745f706179656504011470617965651906017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e000740b42852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e242d2d2d2d2d2d2d2d2d382d205765696768743a204f283129302d204442205765696768743a48202020202d20526561643a204c656467657248202020202d2057726974653a2050617965652c23203c2f7765696768743e387365745f636f6e74726f6c6c6572040128636f6e74726f6c6c65723905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263650008408c2852652d297365742074686520636f6e74726f6c6c6572206f6620612073746173682e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e282d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743af02d20526561643a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c6572f42d2057726974653a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c65722c23203c2f7765696768743e4c7365745f76616c696461746f725f636f756e7404010c6e65777104010c75333200092090536574732074686520696465616c206e756d626572206f662076616c696461746f72732e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e305765696768743a204f2831295857726974653a2056616c696461746f7220436f756e742c23203c2f7765696768743e60696e6372656173655f76616c696461746f725f636f756e740401286164646974696f6e616c7104010c753332000a1ca8496e6372656d656e74732074686520696465616c206e756d626572206f662076616c696461746f72732e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e8053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e2c23203c2f7765696768743e547363616c655f76616c696461746f725f636f756e74040118666163746f722906011c50657263656e74000b1cd05363616c652075702074686520696465616c206e756d626572206f662076616c696461746f7273206279206120666163746f722e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e8053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e2c23203c2f7765696768743e686164645f7065726d697373696f6e65645f76616c696461746f720801206964656e746974797c01284964656e746974794964000138696e74656e6465645f636f756e742d06012c4f7074696f6e3c7533323e000c203d01476f7665726e616e636520636f6d6d6974746565206f6e20322f3320726473206d616a6f726974792063616e20696e74726f647563652061206e657720706f74656e7469616c206964656e746974799d01746f2074686520706f6f6c206f66207065726d697373696f6e656420656e7469746965732077686f2063616e2072756e2076616c696461746f72732e205374616b696e67206d6f64756c65207573657320605065726d697373696f6e65644964656e74697479605501746f20656e737572652076616c696461746f7273206861766520636f6d706c65746564204b594220636f6d706c69616e636520616e6420636f6e736964657273207468656d20666f722076616c69646174696f6e2e002c2320417267756d656e7473e82a206f726967696e205265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e882a206964656e746974792056616c696461746f722773204964656e7469747949642e05012a20696e74656e6465645f636f756e74204e6f2e206f662076616c696461746f727320676976656e206964656e7469747920696e74656e647320746f2072756e2e7472656d6f76655f7065726d697373696f6e65645f76616c696461746f720401206964656e746974797c01284964656e746974794964000d1ca90152656d6f766520616e206964656e746974792066726f6d2074686520706f6f6c206f66202877616e6e616265292076616c696461746f72206964656e7469746965732e204566666563747320617265206b6e6f776e20696e20746865206e6578742073657373696f6e2e19015374616b696e67206d6f64756c6520636865636b7320605065726d697373696f6e65644964656e746974796020746f20656e737572652076616c696461746f7273206861766560636f6d706c65746564204b594220636f6d706c69616e6365002c2320417267756d656e7473f02a206f726967696e205265717569726564206f726967696e20666f722072656d6f76696e67206120706f74656e7469616c2076616c696461746f722e882a206964656e746974792056616c696461746f722773204964656e7469747949642e7876616c69646174655f6364645f6578706972795f6e6f6d696e61746f727304011c74617267657473910101445665633c543a3a4163636f756e7449643e000e28a056616c696461746520746865206e6f6d696e61746f727320434444206578706972792074696d652e00f0496620616e206163636f756e742066726f6d206120676976656e20736574206f662061646472657373206973206e6f6d696e6174696e67207468656ed0636865636b2074686520434444206578706972792074696d65206f6620697420616e64206966206974206973206578706972656431017468656e20746865206163636f756e742073686f756c6420626520756e626f6e64656420616e642072656d6f7665642066726f6d20746865206e6f6d696e6174696e672070726f636573732e0024233c7765696768743e982d20446570656e6473206f6e20706173736564206c697374206f66204163636f756e7449642e29012d20446570656e6473206f6e20746865206e6f2e206f6620636c61696d206973737565727320616e206163636f756e7449642068617320666f722074686520434444206578706972792e28233c2f7765696768743e487365745f636f6d6d697373696f6e5f63617004011c6e65775f6361709501011c50657262696c6c000f1421014368616e67657320636f6d6d697373696f6e2072617465207768696368206170706c69657320746f20616c6c2076616c696461746f72732e204f6e6c7920476f7665726e616e6365a8636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e002c2320417267756d656e74738c2a20606e65775f6361706020746865206e657720636f6d6d697373696f6e206361702e587365745f6d696e5f626f6e645f7468726573686f6c640401246e65775f76616c756518013042616c616e63654f663c543e00101401014368616e676573206d696e20626f6e642076616c756520746f206265207573656420696e2076616c696461746528292e204f6e6c7920476f7665726e616e6365a8636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e002c2320417267756d656e7473742a20606e65775f76616c75656020746865206e6577206d696e696d756d34666f7263655f6e6f5f65726173001124ac466f72636520746865726520746f206265206e6f206e6577206572617320696e646566696e6974656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e3c2d204e6f20617267756d656e74732e382d205765696768743a204f283129442d2057726974653a20466f7263654572612c23203c2f7765696768743e34666f7263655f6e65775f6572610012284901466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f6620746865206e6578742073657373696f6e2e20416674657220746869732c2069742077696c6c2062659c726573657420746f206e6f726d616c20286e6f6e2d666f7263656429206265686176696f75722e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e3c2d204e6f20617267756d656e74732e382d205765696768743a204f283129402d20577269746520466f7263654572612c23203c2f7765696768743e447365745f696e76756c6e657261626c6573040134696e76756c6e657261626c6573910101445665633c543a3a4163636f756e7449643e001320c8536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e182d204f285629582d2057726974653a20496e76756c6e657261626c65732c23203c2f7765696768743e34666f7263655f756e7374616b650801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c7533320014280901466f72636520612063757272656e74207374616b657220746f206265636f6d6520636f6d706c6574656c7920756e7374616b65642c20696d6d6564696174656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743ee84f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2062652072656d6f766564b452656164733a20426f6e6465642c20536c617368696e67205370616e732c204163636f756e742c204c6f636b7381015772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c204163636f756e742c204c6f636b736857726974657320456163683a205370616e536c617368202a20532c23203c2f7765696768743e50666f7263655f6e65775f6572615f616c776179730015200101466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f662073657373696f6e7320696e646566696e6974656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e382d205765696768743a204f283129442d2057726974653a20466f7263654572612c23203c2f7765696768743e5463616e63656c5f64656665727265645f736c61736808010c657261100120457261496e646578000134736c6173685f696e64696365733d0401205665633c7533323e0016349443616e63656c20656e6163746d656e74206f66206120646566657272656420736c6173682e00b043616e2062652063616c6c6564206279207468652060543a3a536c61736843616e63656c4f726967696e602e000101506172616d65746572733a2065726120616e6420696e6469636573206f662074686520736c617368657320666f7220746861742065726120746f206b696c6c2e002823203c7765696768743e50436f6d706c65786974793a204f2855202b205329b477697468205520756e6170706c69656420736c6173686573207765696768746564207769746820553d31303030d0616e64205320697320746865206e756d626572206f6620736c61736820696e646963657320746f2062652063616e63656c65642e642d20526561643a20556e6170706c69656420536c6173686573682d2057726974653a20556e6170706c69656420536c61736865732c23203c2f7765696768743e387061796f75745f7374616b65727308013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e6465780017640d01506179206f757420616c6c20746865207374616b65727320626568696e6420612073696e676c652076616c696461746f7220666f7220612073696e676c65206572612e0049012d206076616c696461746f725f73746173686020697320746865207374617368206163636f756e74206f66207468652076616c696461746f722e205468656972206e6f6d696e61746f72732c20757020746f2501202060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602c2077696c6c20616c736f207265636569766520746865697220726577617264732e31012d206065726160206d617920626520616e7920657261206265747765656e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e005501546865206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2e20416e79206163636f756e742063616e2063616c6c20746869732066756e6374696f6e2c206576656e206966746974206973206e6f74206f6e65206f6620746865207374616b6572732e00fc546869732063616e206f6e6c792062652063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743efc2d2054696d6520636f6d706c65786974793a206174206d6f7374204f284d61784e6f6d696e61746f72526577617264656450657256616c696461746f72292ec02d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e2c2d2d2d2d2d2d2d2d2d2d2d19014e20697320746865204e756d626572206f66207061796f75747320666f72207468652076616c696461746f722028696e636c7564696e67207468652076616c696461746f72291c5765696768743a842d205265776172642044657374696e6174696f6e205374616b65643a204f284e29c02d205265776172642044657374696e6174696f6e20436f6e74726f6c6c657220284372656174696e67293a204f284e29284442205765696768743a25012d20526561643a20457261456c656374696f6e5374617475732c2043757272656e744572612c20486973746f727944657074682c204572617356616c696461746f725265776172642c29012020202020202020457261735374616b657273436c69707065642c2045726173526577617264506f696e74732c204572617356616c696461746f725072656673202838206974656d73290d012d205265616420456163683a20426f6e6465642c204c65646765722c2050617965652c204c6f636b732c2053797374656d204163636f756e74202835206974656d7329d42d20577269746520456163683a2053797374656d204163636f756e742c204c6f636b732c204c6564676572202833206974656d73292c23203c2f7765696768743e187265626f6e6404011476616c7565d101013042616c616e63654f663c543e001838dc5265626f6e64206120706f7274696f6e206f6620746865207374617368207363686564756c656420746f20626520756e6c6f636b65642e005101546865206469737061746368206f726967696e206d757374206265207369676e65642062792074686520636f6e74726f6c6c65722c20616e642069742063616e206265206f6e6c792063616c6c6564207768656e885b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ed02d2054696d6520636f6d706c65786974793a204f284c292c207768657265204c20697320756e6c6f636b696e67206368756e6b73902d20426f756e64656420627920604d41585f554e4c4f434b494e475f4348554e4b53602ef02d2053746f72616765206368616e6765733a2043616e277420696e6372656173652073746f726167652c206f6e6c792064656372656173652069742e3c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743afc202020202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c204c6f636b732c205b4f726967696e204163636f756e745db4202020202d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e447365745f686973746f72795f64657074680801446e65775f686973746f72795f646570746871040120457261496e6465780001485f6572615f6974656d735f64656c657465647104010c7533320019542d015365742060486973746f72794465707468602076616c75652e20546869732066756e6374696f6e2077696c6c2064656c65746520616e7920686973746f727920696e666f726d6174696f6e7c7768656e2060486973746f727944657074686020697320726564756365642e002c506172616d65746572733a0d012d20606e65775f686973746f72795f6465707468603a20546865206e657720686973746f727920646570746820796f7520776f756c64206c696b6520746f207365742e45012d20606572615f6974656d735f64656c65746564603a20546865206e756d626572206f66206974656d7320746861742077696c6c2062652064656c6574656420627920746869732064697370617463682e4101202020546869732073686f756c64207265706f727420616c6c207468652073746f72616765206974656d7320746861742077696c6c2062652064656c6574656420627920636c656172696e67206f6c64410120202065726120686973746f72792e204e656564656420746f207265706f727420616e2061636375726174652077656967687420666f72207468652064697370617463682e20547275737465642062799c20202060526f6f746020746f207265706f727420616e206163637572617465206e756d6265722e00504f726967696e206d75737420626520726f6f742e002823203c7765696768743edc2d20453a204e756d626572206f6620686973746f7279206465707468732072656d6f7665642c20692e652e203130202d3e2037203d2033382d205765696768743a204f284529302d204442205765696768743a9c202020202d2052656164733a2043757272656e74204572612c20486973746f72792044657074686c202020202d205772697465733a20486973746f72792044657074682d01202020202d20436c6561722050726566697820456163683a20457261205374616b6572732c204572615374616b657273436c69707065642c204572617356616c696461746f7250726566737d01202020202d2057726974657320456163683a204572617356616c696461746f725265776172642c2045726173526577617264506f696e74732c2045726173546f74616c5374616b652c2045726173537461727453657373696f6e496e6465782c23203c2f7765696768743e28726561705f73746173680801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c753332001a3c5d0152656d6f766520616c6c20646174612073747275637475726520636f6e6365726e696e672061207374616b65722f7374617368206f6e6365206974732062616c616e636520697320617420746865206d696e696d756d2e5d015468697320697320657373656e7469616c6c79206571756976616c656e7420746f206077697468647261775f756e626f6e64656460206578636570742069742063616e2062652063616c6c656420627920616e796f6e65f4616e6420746865207461726765742060737461736860206d7573742068617665206e6f2066756e6473206c656674206265796f6e64207468652045442e008c546869732063616e2062652063616c6c65642066726f6d20616e79206f726967696e2e00fc2d20607374617368603a20546865207374617368206163636f756e7420746f20726561702e204974732062616c616e6365206d757374206265207a65726f2e002823203c7765696768743e2101436f6d706c65786974793a204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e73206f6e20746865206163636f756e742e284442205765696768743ad42d2052656164733a205374617368204163636f756e742c20426f6e6465642c20536c617368696e67205370616e732c204c6f636b73a1012d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c205374617368204163636f756e742c204c6f636b73702d2057726974657320456163683a205370616e536c617368202a20532c23203c2f7765696768743e607375626d69745f656c656374696f6e5f736f6c7574696f6e14011c77696e6e6572733106014c5665633c56616c696461746f72496e6465783e00011c636f6d7061637435060148436f6d7061637441737369676e6d656e747300011473636f726501070134456c656374696f6e53636f726500010c657261100120457261496e64657800011073697a6505070130456c656374696f6e53697a65001bc4e05375626d697420616e20656c656374696f6e20726573756c7420746f2074686520636861696e2e2049662074686520736f6c7574696f6e3a0030312e2069732076616c69642e1101322e206861732061206265747465722073636f7265207468616e206120706f74656e7469616c6c79206578697374696e6720736f6c7574696f6e206f6e20636861696e2e00807468656e2c2069742077696c6c206265205f7075745f206f6e20636861696e2e00a84120736f6c7574696f6e20636f6e7369737473206f662074776f20706965636573206f6620646174613a00f0312e206077696e6e657273603a206120666c617420766563746f72206f6620616c6c207468652077696e6e657273206f662074686520726f756e642e4d01322e206061737369676e6d656e7473603a2074686520636f6d706163742076657273696f6e206f6620616e2061737369676e6d656e7420766563746f72207468617420656e636f6465732074686520656467652c202020776569676874732e001d01426f7468206f66207768696368206d617920626520636f6d7075746564207573696e67205f70687261676d656e5f2c206f7220616e79206f7468657220616c676f726974686d2e00a44164646974696f6e616c6c792c20746865207375626d6974746572206d7573742070726f766964653a00c42d20546865206073636f7265602074686174207468657920636c61696d20746865697220736f6c7574696f6e206861732e004901426f74682076616c696461746f727320616e64206e6f6d696e61746f72732077696c6c20626520726570726573656e74656420627920696e646963657320696e2074686520736f6c7574696f6e2e205468651901696e64696365732073686f756c6420726573706563742074686520636f72726573706f6e64696e6720747970657320285b6056616c696461746f72496e646578605d20616e642d015b604e6f6d696e61746f72496e646578605d292e204d6f72656f7665722c20746865792073686f756c642062652076616c6964207768656e207573656420746f20696e64657820696e746f4d015b60536e617073686f7456616c696461746f7273605d20616e64205b60536e617073686f744e6f6d696e61746f7273605d2e20416e7920696e76616c696420696e6465782077696c6c206361757365207468655d01736f6c7574696f6e20746f2062652072656a65637465642e2054686573652074776f2073746f72616765206974656d73206172652073657420647572696e672074686520656c656374696f6e2077696e646f7720616e64946d6179206265207573656420746f2064657465726d696e652074686520696e64696365732e005c4120736f6c7574696f6e2069732076616c69642069663a00e0302e204974206973207375626d6974746564207768656e205b60457261456c656374696f6e537461747573605d20697320604f70656e602ef4312e2049747320636c61696d65642073636f726520697320657175616c20746f207468652073636f726520636f6d7075746564206f6e2d636861696e2ea8322e2050726573656e74732074686520636f7272656374206e756d626572206f662077696e6e6572732e5101332e20416c6c20696e6465786573206d7573742062652076616c7565206163636f7264696e6720746f2074686520736e617073686f7420766563746f72732e20416c6c20656467652076616c756573206d7573745901202020616c736f20626520636f727265637420616e642073686f756c64206e6f74206f766572666c6f7720746865206772616e756c6172697479206f662074686520726174696f20747970652028692e652e203235363c2020206f722062696c6c696f6e292e0901342e20466f72206561636820656467652c20616c6c2074617267657473206172652061637475616c6c79206e6f6d696e617465642062792074686520766f7465722e68352e2048617320636f72726563742073656c662d766f7465732e00bc4120736f6c7574696f6e732073636f726520697320636f6e736973746564206f66203320706172616d65746572733a006101312e20606d696e207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d6178696d697a65642e6101322e206073756d207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d696e696d697a65642e3d01332e206073756d207b20737570706f72742e746f74616c5e32207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265982020206d696e696d697a65642028746f20656e73757265206c6573732076617269616e636529002823203c7765696768743e1501546865207472616e73616374696f6e20697320617373756d656420746f20626520746865206c6f6e6765737420706174682c20612062657474657220736f6c7574696f6e2ea020202d20496e697469616c20736f6c7574696f6e20697320616c6d6f7374207468652073616d652e410120202d20576f72736520736f6c7574696f6e20697320726574726163656420696e207072652d64697370617463682d636865636b73207768696368207365747320697473206f776e207765696768742e2c23203c2f7765696768743e847375626d69745f656c656374696f6e5f736f6c7574696f6e5f756e7369676e656414011c77696e6e6572733106014c5665633c56616c696461746f72496e6465783e00011c636f6d7061637435060148436f6d7061637441737369676e6d656e747300011473636f726501070134456c656374696f6e53636f726500010c657261100120457261496e64657800011073697a6505070130456c656374696f6e53697a65001c24bc556e7369676e65642076657273696f6e206f6620607375626d69745f656c656374696f6e5f736f6c7574696f6e602e0059014e6f746520746861742074686973206d757374207061737320746865205b6056616c6964617465556e7369676e6564605d20636865636b207768696368206f6e6c7920616c6c6f7773207472616e73616374696f6e735d0166726f6d20746865206c6f63616c206e6f646520746f20626520696e636c756465642e20496e206f7468657220776f7264732c206f6e6c792074686520626c6f636b20617574686f722063616e20696e636c7564652061647472616e73616374696f6e20696e2074686520626c6f636b2e002823203c7765696768743e84536565205b607375626d69745f656c656374696f6e5f736f6c7574696f6e605d2e2c23203c2f7765696768743e607061796f75745f7374616b6572735f62795f73797374656d08013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e646578001d04210153797374656d2076657273696f6e206f6620607061796f75745f7374616b6572732829602e204f6e6c792062652063616c6c65642062792074686520726f6f74206f726967696e2e6c6368616e67655f736c617368696e675f616c6c6f7765645f666f7204013c736c617368696e675f73776974636899010138536c617368696e67537769746368001e14690153776974636820736c617368696e6720737461747573206f6e20746865206261736973206f6620676976656e2060536c617368696e67537769746368602e2043616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473742a206f726967696e202d204163636f756e744964206f6620726f6f742e01012a20736c617368696e675f737769746368202d20537769746368207573656420746f2073657420746865207461726765747320666f7220736c617368696e672eb07570646174655f7065726d697373696f6e65645f76616c696461746f725f696e74656e6465645f636f756e740801206964656e746974797c01284964656e7469747949640001486e65775f696e74656e6465645f636f756e7410010c753332001f18d05570646174652074686520696e74656e6465642076616c696461746f7220636f756e7420666f72206120676976656e204449442e002c2320417267756d656e747331012a206f726967696e207768696368206d75737420626520746865207265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e842a206964656e7469747920746f2061646420617320612076616c696461746f722ec42a206e65775f696e74656e6465645f636f756e74204e65772076616c7565206f6620696e74656e64656420636f756e742e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e1906083870616c6c65745f7374616b696e674452657761726444657374696e6174696f6e04244163636f756e74496401000110185374616b656400000014537461736800010028436f6e74726f6c6c65720002001c4163636f756e7404000001244163636f756e744964000300001d06083870616c6c65745f7374616b696e673856616c696461746f7250726566730000080128636f6d6d697373696f6e2106011c50657262696c6c00011c626c6f636b65641d010110626f6f6c00002106000006950100250600000239050029060c3473705f61726974686d65746963287065725f7468696e67731c50657263656e7400000400080108753800002d0604184f7074696f6e04045401100108104e6f6e6500000010536f6d65040010000001000031060000024103003506083870616c6c65745f7374616b696e6748436f6d7061637441737369676e6d656e74730000400118766f74657331390600000118766f74657332450600000118766f74657333590600000118766f74657334650600000118766f74657335710600000118766f746573367d0600000118766f74657337890600000118766f74657338950600000118766f74657339a1060000011c766f7465733130ad060000011c766f7465733131b9060000011c766f7465733132c5060000011c766f7465733133d1060000011c766f7465733134dd060000011c766f7465733135e9060000011c766f7465733136f50600000039060000023d06003d060000040871044106004106000006410300450600000249060049060000040c71044d064106004d06000004084106510600510600000655060055060c3473705f61726974686d65746963287065725f7468696e677318506572553136000004004103010c753136000059060000025d06005d060000040c710461064106006106000003020000004d0600650600000269060069060000040c71046d064106006d06000003030000004d0600710600000275060075060000040c710479064106007906000003040000004d06007d0600000281060081060000040c710485064106008506000003050000004d060089060000028d06008d060000040c710491064106009106000003060000004d0600950600000299060099060000040c71049d064106009d06000003070000004d0600a106000002a50600a5060000040c7104a906410600a906000003080000004d0600ad06000002b10600b1060000040c7104b506410600b506000003090000004d0600b906000002bd0600bd060000040c7104c106410600c1060000030a0000004d0600c506000002c90600c9060000040c7104cd06410600cd060000030b0000004d0600d106000002d50600d5060000040c7104d906410600d9060000030c0000004d0600dd06000002e10600e1060000040c7104e506410600e5060000030d0000004d0600e906000002ed0600ed060000040c7104f106410600f1060000030e0000004d0600f506000002f90600f9060000040c7104fd06410600fd060000030f0000004d060001070000030300000018000507083870616c6c65745f7374616b696e6730456c656374696f6e53697a65000008012876616c696461746f72734106013856616c696461746f72496e6465780001286e6f6d696e61746f7273710401384e6f6d696e61746f72496e646578000009070c3870616c6c65745f73657373696f6e1870616c6c65741043616c6c040454000108207365745f6b6579730801106b6579730d07011c543a3a4b65797300011470726f6f6628011c5665633c75383e000038e453657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b657973602e1d01416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722ec05468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e00d0546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e002823203c7765696768743e11012d20436f6d706c65786974793a20604f283129602e2041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468206f6698202060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642eec2d20446252656164733a20606f726967696e206163636f756e74602c2060543a3a56616c696461746f7249644f66602c20604e6578744b65797360a02d2044625772697465733a20606f726967696e206163636f756e74602c20604e6578744b65797360802d204462526561647320706572206b65792069643a20604b65794f776e657260842d20446257726974657320706572206b65792069643a20604b65794f776e6572602c23203c2f7765696768743e2870757267655f6b657973000140c852656d6f76657320616e792073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c65722e00c05468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e005501546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265205369676e656420616e6420746865206163636f756e74206d757374206265206569746865722062655d01636f6e7665727469626c6520746f20612076616c696461746f72204944207573696e672074686520636861696e2773207479706963616c2061646472657373696e672073797374656d20287468697320757375616c6c7951016d65616e73206265696e67206120636f6e74726f6c6c6572206163636f756e7429206f72206469726563746c7920636f6e7665727469626c6520696e746f20612076616c696461746f722049442028776869636894757375616c6c79206d65616e73206265696e672061207374617368206163636f756e74292e002823203c7765696768743e61012d20436f6d706c65786974793a20604f2831296020696e206e756d626572206f66206b65792074797065732e2041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468a420206f662060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642eec2d20446252656164733a2060543a3a56616c696461746f7249644f66602c20604e6578744b657973602c20606f726967696e206163636f756e7460a02d2044625772697465733a20604e6578744b657973602c20606f726967696e206163636f756e7460842d20446257726974657320706572206b65792069643a20604b65794f776e6572602c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e0d070c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d652c53657373696f6e4b657973000010011c6772616e647061b10101d03c4772616e647061206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300011062616265c10401c43c42616265206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000124696d5f6f6e6c696e65bd0101d43c496d4f6e6c696e65206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300014c617574686f726974795f646973636f76657279110701fc3c417574686f72697479446973636f76657279206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000011070c5873705f617574686f726974795f646973636f766572790c617070185075626c696300000400c101013c737232353531393a3a5075626c6963000015070c3870616c6c65745f6772616e6470611870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66190701bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f66f9040140543a3a4b65794f776e657250726f6f6600001009015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66190701bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f66f9040140543a3a4b65794f776e657250726f6f6600012409015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e000d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e306e6f74655f7374616c6c656408011464656c6179100138543a3a426c6f636b4e756d62657200016c626573745f66696e616c697a65645f626c6f636b5f6e756d626572100138543a3a426c6f636b4e756d62657200021c19014e6f74652074686174207468652063757272656e7420617574686f7269747920736574206f6620746865204752414e4450412066696e616c697479206761646765742068617325017374616c6c65642e20546869732077696c6c2074726967676572206120666f7263656420617574686f7269747920736574206368616e67652061742074686520626567696e6e696e671d016f6620746865206e6578742073657373696f6e2c20746f20626520656e6163746564206064656c61796020626c6f636b7320616674657220746861742e205468652064656c6179110173686f756c64206265206869676820656e6f75676820746f20736166656c7920617373756d6520746861742074686520626c6f636b207369676e616c6c696e67207468652501666f72636564206368616e67652077696c6c206e6f742062652072652d6f726765642028652e672e203130303020626c6f636b73292e20546865204752414e44504120766f74657273250177696c6c20737461727420746865206e657720617574686f7269747920736574207573696e672074686520676976656e2066696e616c697a656420626c6f636b20617320626173652e584f6e6c792063616c6c61626c6520627920726f6f742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e1907084c73705f66696e616c6974795f6772616e6470614445717569766f636174696f6e50726f6f660804480124044e0110000801187365745f6964200114536574496400013065717569766f636174696f6e1d07014845717569766f636174696f6e3c482c204e3e00001d07084c73705f66696e616c6974795f6772616e6470613045717569766f636174696f6e0804480124044e011001081c507265766f7465040021070139016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265766f74653c482c204e3e2c0a417574686f726974795369676e61747572653e00000024507265636f6d6d6974040035070141016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265636f6d6d69743c482c204e3e2c0a417574686f726974795369676e61747572653e000100002107084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401b1010456012507045301290700100130726f756e645f6e756d62657220010c7536340001206964656e74697479b1010108496400011466697273743107011828562c2053290001187365636f6e643107011828562c20532900002507084066696e616c6974795f6772616e6470611c507265766f74650804480124044e01100008012c7461726765745f68617368240104480001347461726765745f6e756d6265721001044e000029070c4c73705f66696e616c6974795f6772616e6470610c617070245369676e6174757265000004002d070148656432353531393a3a5369676e617475726500002d070c1c73705f636f72651c65643235353139245369676e617475726500000400150201205b75383b2036345d000031070000040825072907003507084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401b1010456013907045301290700100130726f756e645f6e756d62657220010c7536340001206964656e74697479b1010108496400011466697273743d07011828562c2053290001187365636f6e643d07011828562c20532900003907084066696e616c6974795f6772616e64706124507265636f6d6d69740804480124044e01100008012c7461726765745f68617368240104480001347461726765745f6e756d6265721001044e00003d0700000408390729070041070c4070616c6c65745f696d5f6f6e6c696e651870616c6c65741043616c6c04045400010424686561727462656174080124686561727462656174450701644865617274626561743c543a3a426c6f636b4e756d6265723e0001247369676e6174757265590701bc3c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e61747572650000242823203c7765696768743e61012d20436f6d706c65786974793a20604f284b202b20452960207768657265204b206973206c656e677468206f6620604b6579736020286865617274626561742e76616c696461746f72735f6c656e2920616e642045206973d820206c656e677468206f6620606865617274626561742e6e6574776f726b5f73746174652e65787465726e616c5f61646472657373608820202d20604f284b29603a206465636f64696e67206f66206c656e67746820604b60ac20202d20604f284529603a206465636f64696e672f656e636f64696e67206f66206c656e6774682060456039012d20446252656164733a2070616c6c65745f73657373696f6e206056616c696461746f7273602c2070616c6c65745f73657373696f6e206043757272656e74496e646578602c20604b657973602c5820206052656365697665644865617274626561747360802d2044625772697465733a2060526563656976656448656172746265617473602c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e4507084070616c6c65745f696d5f6f6e6c696e6524486561727462656174042c426c6f636b4e756d626572011000140130626c6f636b5f6e756d62657210012c426c6f636b4e756d6265720001346e6574776f726b5f7374617465490701484f70617175654e6574776f726b537461746500013473657373696f6e5f696e64657810013053657373696f6e496e64657800013c617574686f726974795f696e64657810012441757468496e64657800013876616c696461746f72735f6c656e10010c753332000049070c1c73705f636f7265206f6666636861696e484f70617175654e6574776f726b5374617465000008011c706565725f69644d0701304f706171756550656572496400014865787465726e616c5f616464726573736573510701505665633c4f70617175654d756c7469616464723e00004d07081c73705f636f7265304f70617175655065657249640000040028011c5665633c75383e0000510700000255070055070c1c73705f636f7265206f6666636861696e3c4f70617175654d756c7469616464720000040028011c5665633c75383e00005907104070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139245369676e6174757265000004005d070148737232353531393a3a5369676e617475726500005d070c1c73705f636f72651c73723235353139245369676e617475726500000400150201205b75383b2036345d00006107082c70616c6c65745f7375646f1043616c6c040454000110107375646f04011063616c6ce5050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000028350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e547375646f5f756e636865636b65645f77656967687408011063616c6ce5050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00011c5f776569676874200118576569676874000128350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e2d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b05375646f207573657220746f20737065636966792074686520776569676874206f66207468652063616c6c2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292ecc2d2054686520776569676874206f6620746869732063616c6c20697320646566696e6564206279207468652063616c6c65722e2c23203c2f7765696768743e1c7365745f6b657904010c6e65773905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365000224710141757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e402d204f6e65204442206368616e67652e2c23203c2f7765696768743e1c7375646f5f617308010c77686f3905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011063616c6ce5050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00032c4d0141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d406120676976656e206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e6507083070616c6c65745f61737365741043616c6c0404540001603c72656769737465725f7469636b65720401187469636b6572a401185469636b657200002405015265676973746572732061206e6577207469636b6572206f7220657874656e64732076616c6964697479206f6620616e206578697374696e67207469636b65722e11014e423a205469636b65722076616c696469747920646f6573206e6f742067657420636172727920666f7277617264207768656e2072656e6577696e67207469636b65722e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e782a20607469636b657260207469636b657220746f2072656769737465722e003423205065726d697373696f6e731c2a204173736574586163636570745f7469636b65725f7472616e7366657204011c617574685f696420010c75363400013068416363657074732061207469636b6572207472616e736665722e002d01436f6e73756d65732074686520617574686f72697a6174696f6e2060617574685f6964602028736565206070616c6c65745f6964656e746974793a3a636f6e73756d655f6175746860292e25014e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292ef82a2060617574685f69646020417574686f72697a6174696f6e204944206f66207469636b6572207472616e7366657220617574686f72697a6174696f6e2e00242323204572726f727369012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f696460206973206e6f7420612076616c6964207469636b6574207472616e7366657220617574686f72697a6174696f6e2e007c6163636570745f61737365745f6f776e6572736869705f7472616e7366657204011c617574685f696420010c753634000218ec546869732066756e6374696f6e206973207573656420746f20616363657074206120746f6b656e206f776e657273686970207472616e736665722e25014e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e2d012a2060617574685f69646020417574686f72697a6174696f6e204944206f662074686520746f6b656e206f776e657273686970207472616e7366657220617574686f72697a6174696f6e2e306372656174655f61737365741c01106e616d650102012441737365744e616d650001187469636b6572a401185469636b6572000124646976697369626c651d010110626f6f6c00012861737365745f74797065e901012441737365745479706500012c6964656e74696669657273f10101505665633c41737365744964656e7469666965723e00013466756e64696e675f726f756e64690701604f7074696f6e3c46756e64696e67526f756e644e616d653e00012864697361626c655f69751d010110626f6f6c0003682d01496e697469616c697a65732061206e657720736563757269747920746f6b656e2c20776974682074686520696e6974696174696e67206163636f756e7420617320697473206f776e65722e150154686520746f74616c20737570706c792077696c6c20696e697469616c6c79206265207a65726f2e20546f206d696e7420746f6b656e732c2075736520606973737565602e002c2320417267756d656e7473c5012a20606f726967696e60202d20636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e842a20606e616d6560202d20746865206e616d65206f662074686520746f6b656e2eb02a20607469636b657260202d20746865207469636b65722073796d626f6c206f662074686520746f6b656e2e2d012a2060646976697369626c6560202d206120626f6f6c65616e20746f206964656e74696679207468652064697669736962696c69747920737461747573206f662074686520746f6b656e2e802a206061737365745f7479706560202d2074686520617373657420747970652ec02a20606964656e7469666965727360202d206120766563746f72206f66206173736574206964656e746966696572732eb82a206066756e64696e675f726f756e6460202d206e616d65206f66207468652066756e64696e6720726f756e642e4d012a206064697361626c655f697560202d2077686574686572206f72206e6f7420696e766573746f7220756e697175656e65737320656e666f7263656d656e742073686f756c642062652064697361626c65642ec82020546869732063616e6e6f74206265206368616e676564206166746572206372656174696e67207468652061737365742e00242323204572726f7273fc2d2060496e76616c696441737365744964656e7469666965726020696620616e79206f6620606964656e74696669657273602061726520696e76616c69642e51012d20604d61784c656e6774684f6641737365744e616d6545786365656465646020696620606e616d65602773206c656e67746820657863656564732060543a3a41737365744e616d654d61784c656e677468602e55012d206046756e64696e67526f756e644e616d654d61784c656e67746845786365656465646020696620746865206e616d65206f66207468652066756e64696e6720726f756e64206973206c6f6e67657220746861747c60543a3a46756e64696e67526f756e644e616d654d61784c656e677468602ed42d20604173736574416c726561647943726561746564602069662061737365742077617320616c726561647920637265617465642e5d012d20605469636b6572546f6f4c6f6e676020696620607469636b6572602773206c656e6774682069732067726561746572207468616e2060636f6e6669672e6d61785f7469636b65725f6c656e6774686020636861696e28706172616d657465722ea1022d20605469636b65724e6f7441736369696020696620607469636b657260206973206e6f742079657420726567697374657265642c20616e6420636f6e7461696e73206e6f6e2d6173636969207072696e7461626c652063686172616374657273202866726f6d20636f646520333220746f2031323629206f7220616e7920636861726163746572206166746572206669727374206f6363757272656e6365206f6620605c30602e00382323205065726d697373696f6e732c2a20506f7274666f6c696f18667265657a650401187469636b6572a401185469636b657200042cbc467265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e00242323204572726f7273c02d2060416c726561647946726f7a656e6020696620607469636b65726020697320616c72656164792066726f7a656e2e003423205065726d697373696f6e731c2a20417373657420756e667265657a650401187469636b6572a401185469636b657200052cc4556e667265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722eb02a20607469636b657260202d20746865207469636b6572206f66207468652066726f7a656e20746f6b656e2e00242323204572726f7273b02d20604e6f7446726f7a656e6020696620607469636b657260206973206e6f742066726f7a656e207965742e003423205065726d697373696f6e731c2a2041737365743072656e616d655f61737365740801187469636b6572a401185469636b65720001106e616d650102012441737365744e616d650006345852656e616d6573206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e942a20606e616d6560202d20746865206e6577206e616d65206f662074686520746f6b656e2e00242323204572726f727311012d20604d61784c656e6774684f6641737365744e616d65457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e6060543a3a41737365744e616d654d61784c656e677468602e003423205065726d697373696f6e731c2a2041737365741469737375650801187469636b6572a401185469636b6572000118616d6f756e7418011c42616c616e636500072ca449737375652c206f72206d696e742c206e657720746f6b656e7320746f207468652063616c6c65722cac7768696368206d75737420626520616e20617574686f72697a65642065787465726e616c206167656e742e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e602a20607469636b657260206f662074686520746f6b656e2e942a2060616d6f756e7460206f6620746f6b656e73207468617420676574206973737565642e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f1872656465656d0801187469636b6572a401185469636b657200011476616c756518011c42616c616e636500083ccd0152656465656d73206578697374696e6720746f6b656e73206279207265647563696e67207468652062616c616e6365206f66207468652063616c6c657227732064656661756c7420706f7274666f6c696f20616e642074686520746f74616c20737570706c79206f662074686520746f6b656e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e942a206076616c75656020416d6f756e74206f6620746f6b656e7320746f2072656465656d2e002023204572726f727361012d2060556e617574686f72697a6564602049662063616c6c656420627920736f6d656f6e6520776974686f75742074686520617070726f7072696174652065787465726e616c206167656e74207065726d697373696f6e7359012d2060496e76616c69644772616e756c6172697479602049662074686520616d6f756e74206973206e6f7420646976697369626c652062792031305e3620666f72206e6f6e2d646976697369626c6520746f6b656e738d012d2060496e73756666696369656e74506f7274666f6c696f42616c616e636560204966207468652063616c6c657227732064656661756c7420706f7274666f6c696f20646f65736e2774206861766520656e6f75676820667265652062616c616e6365003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f386d616b655f646976697369626c650401187469636b6572a401185469636b657200092c944d616b657320616e20696e646976697369626c6520746f6b656e20646976697369626c652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e00242323204572726f7273ec2d20604173736574416c7265616479446976697369626c656020696620607469636b65726020697320616c726561647920646976697369626c652e003423205065726d697373696f6e731c2a204173736574346164645f646f63756d656e7473080110646f63736d0701345665633c446f63756d656e743e0001187469636b6572a401185469636b6572000a248041646420646f63756d656e747320666f72206120676976656e20746f6b656e2e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2eb82a2060646f63736020446f63756d656e747320746f20626520617474616368656420746f20607469636b6572602e003423205065726d697373696f6e731c2a2041737365744072656d6f76655f646f63756d656e747308010c6964730903013c5665633c446f63756d656e7449643e0001187469636b6572a401185469636b6572000b248c52656d6f766520646f63756d656e747320666f72206120676976656e20746f6b656e2e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2ec82a20606964736020446f63756d656e74732069647320746f2062652072656d6f7665642066726f6d20607469636b6572602e003423205065726d697373696f6e731c2a204173736574447365745f66756e64696e675f726f756e640801187469636b6572a401185469636b65720001106e616d65e501014046756e64696e67526f756e644e616d65000c34ac5365747320746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e002c2320417267756d656e747329012a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2ee42a20606e616d6560202d207468652064657369726564206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e00242323204572726f727325012d206046756e64696e67526f756e644e616d654d61784c656e677468457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e7c60543a3a46756e64696e67526f756e644e616d654d61784c656e677468602e003423205065726d697373696f6e731c2a204173736574487570646174655f6964656e746966696572730801187469636b6572a401185469636b657200012c6964656e74696669657273f10101505665633c41737365744964656e7469666965723e000d34785570646174657320746865206173736574206964656e746966696572732e002c2320417267756d656e747329012a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e59012a20606964656e7469666965727360202d20746865206173736574206964656e7469666965727320746f206265207570646174656420696e2074686520666f726d206f66206120766563746f72206f66207061697273cc2020206f6620604964656e746966696572547970656020616e64206041737365744964656e746966696572602076616c75652e00242323204572726f727331012d2060496e76616c696441737365744964656e7469666965726020696620606964656e746966696572736020636f6e7461696e7320616e7920696e76616c6964206964656e7469666965722e003423205065726d697373696f6e731c2a20417373657450636c61696d5f636c61737369635f7469636b65720801187469636b6572a401185469636b6572000148657468657265756d5f7369676e61747572657107013845636473615369676e6174757265000e38fc436c61696d20612073797374656d61746963616c6c7920726573657276656420506f6c796d61746820436c61737369632028504d432920607469636b657260ac616e64207472616e7366657220697420746f2074686520606f726967696e602773206964656e746974792e003d01546f2076657269667920746861742074686520606f726967696e6020697320696e20636f6e74726f6c206f662074686520457468657265756d206163636f756e74206f6e2074686520626f6f6b732c1101616e2060657468657265756d5f7369676e61747572656020636f6e7461696e696e672074686520606f726967696e6027732044494420617320746865206d657373616765a86d7573742062652070726f7669646564206279207468617420457468657265756d206163636f756e742e002023204572726f727331012d20604e6f53756368436c61737369635469636b6572602069662074686973206973206e6f7420612073797374656d61746963616c6c7920726573657276656420504d43207469636b65722e51012d20605469636b6572416c7265616479526567697374657265646020696620746865207469636b65722077617320616c726561647920726567697374657265642c20652e672e2c20627920606f726967696e602e1d012d20605469636b6572526567697374726174696f6e457870697265646020696620746865207469636b6572277320726567697374726174696f6e2068617320657870697265642e702d20604261644f726967696e60206966206e6f74207369676e65642e19012d2060496e76616c6964457468657265756d5369676e617475726560206966207468652060657468657265756d5f7369676e617475726560206973206e6f742076616c69642e29012d20604e6f74416e4f776e6572602069662074686520657468657265756d206163636f756e74206973206e6f7420746865206f776e6572206f662074686520504d43207469636b65722e58726573657276655f636c61737369635f7469636b65720c0154636c61737369635f7469636b65725f696d706f72747907014c436c61737369635469636b6572496d706f7274000130636f6e74726163745f6469647c01284964656e746974794964000118636f6e6669677d07018c5469636b6572526567697374726174696f6e436f6e6669673c543a3a4d6f6d656e743e000f34a052657365727665206120506f6c796d61746820436c61737369632028504d4329207469636b65722e0d014d7573742062652063616c6c656420627920726f6f742c20616e642061737369676e7320746865207469636b657220746f20612073797374656d61746963204449442e002c2320417267756d656e7473782a20606f726967696e60207768696368206d75737420626520726f6f742eec2a2060636c61737369635f7469636b65725f696d706f7274602073706563696669636174696f6e20666f722074686520504d43207469636b65722e5d012a2060636f6e74726163745f6469646020746f207265736572766520746865207469636b657220746f2069662060636c61737369635f7469636b65725f696d706f72742e69735f636f6e74726163746020686f6c64732ebc2a2060636f6e6669676020746f2075736520666f722065787069727920616e64207469636b6572206c656e6774682e002023204572726f727349012a20604173736574416c726561647943726561746564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b65726020776173206372656174656420617320616e2061737365742e61012a20605469636b6572546f6f4c6f6e6760206966207468652060636f6e6669676020636f6e736964657273207468652060636c61737369635f7469636b65725f696d706f72742e7469636b65726020746f6f206c6f6e672e55012a20605469636b6572416c726561647952656769737465726564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b6572602077617320616c726561647920726567697374657265642e4c636f6e74726f6c6c65725f7472616e736665720c01187469636b6572a401185469636b657200011476616c756518011c42616c616e636500013866726f6d5f706f7274666f6c696fdc012c506f7274666f6c696f496400101c4d01466f726365732061207472616e73666572206f6620746f6b656e2066726f6d206066726f6d5f706f7274666f6c696f6020746f207468652063616c6c657227732064656661756c7420706f7274666f6c696f2e002c2320417267756d656e747355012a20606f726967696e60204d75737420626520616e2065787465726e616c206167656e74207769746820617070726f707269617465207065726d697373696f6e7320666f72206120676976656e207469636b65722e982a20607469636b657260205469636b65722073796d626f6c206f66207468652061737365742ecc2a206076616c7565602020416d6f756e74206f6620746f6b656e73206e65656420746f20666f726365207472616e736665722efc2a206066726f6d5f706f7274666f6c696f602046726f6d2077686f6d20706f7274666f6c696f20746f6b656e732067657473207472616e736665727265642e6872656769737465725f637573746f6d5f61737365745f74797065040108747928011c5665633c75383e00112478526567697374657273206120637573746f6d20617373657420747970652e00d05468652070726f766964656420607479602077696c6c20626520626f756e6420746f20616e20494420696e2073746f726167652ebc5468652049442063616e207468656e206265207573656420696e20604173736574547970653a3a437573746f6d602e250153686f756c6420746865206074796020616c726561647920657869737420696e2073746f726167652c206e6f207365636f6e642049442069732061737369676e656420746f2069742e002c2320417267756d656e7473902a20606f726967696e602077686f2063616c6c6564207468652065787472696e7369632ef02a206074796020636f6e7461696e732074686520737472696e6720726570726573656e746174696f6e206f662074686520617373657420747970652e746372656174655f61737365745f776974685f637573746f6d5f747970651c01106e616d650102012441737365744e616d650001187469636b6572a401185469636b6572000124646976697369626c651d010110626f6f6c000144637573746f6d5f61737365745f7479706528011c5665633c75383e00012c6964656e74696669657273f10101505665633c41737365744964656e7469666965723e00013466756e64696e675f726f756e64690701604f7074696f6e3c46756e64696e67526f756e644e616d653e00012864697361626c655f69751d010110626f6f6c0012042d015574696c6974792065787472696e73696320746f20626174636820606372656174655f61737365746020616e64206072656769737465725f637573746f6d5f61737365745f74797065602e487365745f61737365745f6d657461646174611001187469636b6572a401185469636b657200010c6b65798107014041737365744d657461646174614b657900011476616c75653902014841737365744d6574616461746156616c756500011864657461696c3d0201ac4f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e3e00134464536574206173736574206d657461646174612076616c75652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e542a20606b657960204d65746164617461206b65792e642a206076616c756560204d657461646174612076616c75652e09012a206064657461696c7360204f7074696f6e616c204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f727315012a206041737365744d657461646174614b657949734d697373696e676020696620746865206d657461646174612074797065206b657920646f65736e27742065786973742e25012a206041737365744d6574616461746156616c756549734c6f636b65646020696620746865206d657461646174612076616c756520666f7220606b657960206973206c6f636b65642e65012a206041737365744d6574616461746156616c75654d61784c656e67746845786365656465646020696620746865206d657461646174612076616c7565206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a204173736574687365745f61737365745f6d657461646174615f64657461696c730c01187469636b6572a401185469636b657200010c6b65798107014041737365744d657461646174614b657900011864657461696c4102018c41737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e00143cdc536574206173736574206d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e542a20606b657960204d65746164617461206b65792ee42a206064657461696c7360204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f727315012a206041737365744d657461646174614b657949734d697373696e676020696620746865206d657461646174612074797065206b657920646f65736e27742065786973742e25012a206041737365744d6574616461746156616c756549734c6f636b65646020696620746865206d657461646174612076616c756520666f7220606b657960206973206c6f636b65642e003423205065726d697373696f6e731c2a204167656e741c2a2041737365749472656769737465725f616e645f7365745f6c6f63616c5f61737365745f6d657461646174611401187469636b6572a401185469636b65720001106e616d654902014441737365744d657461646174614e616d65000110737065635102014441737365744d657461646174615370656300011476616c75653902014841737365744d6574616461746156616c756500011864657461696c3d0201ac4f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e3e00154c9c52656769737465727320616e6420736574206c6f63616c206173736574206d657461646174612e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e642a206076616c756560204d657461646174612076616c75652e09012a206064657461696c7360204f7074696f6e616c204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f7273a1012a206041737365744d657461646174614c6f63616c4b6579416c7265616479457869737473602069662061206c6f63616c206d657461646174612074797065207769746820606e616d656020616c72656164792065786973747320666f7220607469636b6572602e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e65012a206041737365744d6574616461746156616c75654d61784c656e67746845786365656465646020696620746865206d657461646174612076616c7565206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a2041737365748872656769737465725f61737365745f6d657461646174615f6c6f63616c5f747970650c01187469636b6572a401185469636b65720001106e616d654902014441737365744d657461646174614e616d65000110737065635102014441737365744d657461646174615370656300164090526567697374657273206173736574206d65746164617461206c6f63616c20747970652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e002023204572726f7273a1012a206041737365744d657461646174614c6f63616c4b6579416c7265616479457869737473602069662061206c6f63616c206d657461646174612074797065207769746820606e616d656020616c72656164792065786973747320666f7220607469636b6572602e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a2041737365748c72656769737465725f61737365745f6d657461646174615f676c6f62616c5f747970650801106e616d654902014441737365744d657461646174614e616d65000110737065635102014441737365744d657461646174615370656300172c94526567697374657273206173736574206d6574616461746120676c6f62616c20747970652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e002023204572726f727371012a206041737365744d65746164617461476c6f62616c4b6579416c726561647945786973747360206966206120676c6f6261206d657461646174612074797065207769746820606e616d656020616c7265616479206578697374732e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e690704184f7074696f6e04045401e5010108104e6f6e6500000010536f6d650400e50100000100006d0700000209020071070c4c706f6c796d6573685f7072696d69746976657320657468657265756d3845636473615369676e617475726500000400750701205b75383b2036355d000075070000034100000008007907083070616c6c65745f61737365744c436c61737369635469636b6572496d706f727400001001246574685f6f776e65723502013c457468657265756d416464726573730001187469636b6572a401185469636b657200012c69735f636f6e74726163741d010110626f6f6c00012869735f637265617465641d010110626f6f6c00007d07083070616c6c65745f6173736574605469636b6572526567697374726174696f6e436f6e6669670404550120000801446d61785f7469636b65725f6c656e677468080108753800014c726567697374726174696f6e5f6c656e677468f801244f7074696f6e3c553e000081070c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614041737365744d657461646174614b657900010818476c6f62616c04006902015841737365744d65746164617461476c6f62616c4b6579000000144c6f63616c04004d02015441737365744d657461646174614c6f63616c4b65790001000085070c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e1043616c6c04045400011428646973747269627574651c011463615f69647502011043414964000124706f7274666f6c696f8907015c4f7074696f6e3c506f7274666f6c696f4e756d6265723e00012063757272656e6379a401185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e63650001287061796d656e745f61742001184d6f6d656e74000128657870697265735f6174f801384f7074696f6e3c4d6f6d656e743e0000a82501537461727420616e64206174746163682061206361706974616c20646973747269627574696f6e2c20746f20746865204341206964656e746966696564206279206063615f6964602c6501776974682060616d6f756e74602066756e647320696e206063757272656e6379602077697468647261776e2066726f6d2060706f7274666f6c696f602062656c6f6e67696e6720746f20606f726967696e602773204449442e00290154686520646973747269627574696f6e2077696c6c20636f6d6d656e636520617420607061796d656e745f61746020616e64206578706972652061742060657870697265735f6174602cc869662070726f76696465642c206f7220696620604e6f6e65602c207468656e2074686572652773206e6f206578706972792e0025015468652066756e64732077696c6c206265206c6f636b656420696e2060706f7274666f6c696f602066726f6d207768656e206064697374726962757465602069732063616c6c65642e35015768656e2074686572652773206e6f206578706972792c20736f6d652066756e6473206d6179206265206c6f636b656420696e646566696e6974656c7920696e2060706f7274666f6c696f602c150164756520746f20636c61696d616e7473206e6f74207769746864726177696e67206f72206e6f2062656e6566697473206265696e672070757368656420746f207468656d2e2901466f7220696e646976697369626c652063757272656e636965732c20756e6c6f636b656420616d6f756e74732c206f66206c657373207468616e206f6e652077686f6c6520756e69742ca877696c6c206e6f74206265207472616e7366657261626c652066726f6d2060706f7274666f6c696f602e4d01486f77657665722c20696620776520696d6167696e6520746861742075736572732060416c6963656020616e642060426f626020626f74682061726520656e7469746c656420746f20312e3520756e6974732c5101616e64206f6e6c7920726563656976652060316020756e69747320656163682c207468656e2060302e35202b20302e35203d20316020756e69747320617265206c65667420696e2060706f7274666f6c696f602c6c7768696368206973206e6f77207472616e736665727261626c652e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e01012d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e59012d2060706f7274666f6c696f60207370656369666965732074686520706f7274666f6c696f206e756d626572206f6620746865206167656e7420746f20646973747269627574652060616d6f756e74602066726f6d2ef42d206063757272656e63796020746f20776974686472617720616e6420646973747269627574652066726f6d207468652060706f7274666f6c696f602ef82d20607065725f73686172656020616d6f756e74206f66206063757272656e63796020746f20776974686472617720616e6420646973747269627574652e25012020205370656369666965642061732061207065722d6d696c6c696f6e2c20692e652e206031202f2031305e36607468206f66206f6e65206063757272656e63796020746f6b656e2ef02d2060616d6f756e7460206f66206063757272656e63796020746f20776974686472617720616e642064697374726962757465206174206d6f73742e19012d20607061796d656e745f61746020737065636966696573207768656e2062656e6566697473206d617920666972737420626520707573686564206f7220636c61696d65642e29012d2060657870697265735f617460207370656369666965732c2069662070726f76696465642c207768656e2072656d61696e696e672062656e65666974732061726520666f726665697490202020616e64206d6179206265207265636c61696d656420627920606f726967696e602e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed02d2060446973747269627574696e67417373657460206966206063615f69642e7469636b6572203d3d2063757272656e6379602efc2d20604578706972794265666f72655061796d656e74602069662060657870697265735f61742e756e777261702829203c3d207061796d656e745f6174602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ea82d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652ee82d20605265636f72644461746541667465725374617274602069662043412773207265636f72642064617465203e207061796d656e745f61742e31012d2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f662060706f7274666f6c696f602e55012d2060496e73756666696369656e74506f7274666f6c696f42616c616e6365602069662060706f7274666f6c696f6020686173206c657373207468616e2060616d6f756e7460206f66206063757272656e6379602e01012d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e45012d206043414e6f7442656e656669746020696620746865204341206973206e6f74206f66206b696e64205072656469637461626c6542656e656669742f556e7072656469637461626c6542656e65666974003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f14636c61696d04011463615f6964750201104341496400015c0101436c61696d20612062656e65666974206f6620746865206361706974616c20646973747269627574696f6e20617474616368656420746f206063615f6964602e00a8546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5901506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e001101416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e39014d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c98746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e0030232320417267756d656e747345012d20606f726967696e60207768696368206d757374206265206120686f6c646572206f662074686520617373657420616e6420656c696769626c6520666f722074686520646973747269627574696f6e2e01012d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e002023204572726f727325012d2060486f6c646572416c7265616479506169646020696620606f726967696e602773204449442068617320616c7265616479207265636569766564206974732062656e656669742e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec42d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee42d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef42d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e35012d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e35012d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e21012d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e30707573685f62656e6566697408011463615f69647502011043414964000118686f6c6465727c01284964656e746974794964000260f8507573682062656e65666974206f6620616e206f6e676f696e6720646973747269627574696f6e20746f2074686520676976656e2060686f6c646572602e00a8546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5901506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e001101416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e39014d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c98746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e39012d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e7320746f20707573682062656e656669747320666f722e7c2d2060686f6c6465726020746f20707573682062656e656669747320746f2e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec42d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee42d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412edc2d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f74207461726765742060686f6c646572602e35012d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e35012d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e21012d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e1c7265636c61696d04011463615f6964750201104341496400032c90417373756d696e67206120646973747269627574696f6e2068617320657870697265642ce4756e6c6f636b207468652072656d61696e696e6720616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e0030232320417267756d656e747345012d20606f726967696e60207768696368206d757374206265207468652063726561746f72206f6620746865206361706974616c20646973747269627574696f6e207469656420746f206063615f6964602e1d012d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e20746f207265636c61696d20666f722e002023204572726f727319012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602e2d012d2060416c72656164795265636c61696d65646020696620746869732066756e6374696f6e2068617320616c7265616479206265656e2063616c6c6564207375636365737366756c6c792e842d20604e6f74457870697265646020696620606e6f77203c20657870697279602e4c72656d6f76655f646973747269627574696f6e04011463615f6964750201104341496400042cbc52656d6f766573206120646973747269627574696f6e2074686174206861736e27742073746172746564207965742cdc756e6c6f636b696e67207468652066756c6c20616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e49012d206063615f696460206964656e7469666965732074686520434120776974682061206e6f742d7965742d73746172746564206361706974616c20646973747269627574696f6e20746f2072656d6f76652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ebc2d2060446973747269627574696f6e537461727465646020696620607061796d656e745f6174203c3d206e6f77602e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e890704184f7074696f6e04045401e40108104e6f6e6500000010536f6d650400e400000100008d070c3070616c6c65745f617373657428636865636b706f696e741043616c6c040454000110446372656174655f636865636b706f696e740401187469636b6572a401185469636b6572000024c04372656174657320612073696e676c6520636865636b706f696e74206174207468652063757272656e742074696d652e002c2320417267756d656e74732d012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602ea02d20607469636b65726020746f206372656174652074686520636865636b706f696e7420666f722e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e0d012d2060436f756e7465724f766572666c6f77602069662074686520746f74616c20636865636b706f696e7420636f756e74657220776f756c64206f766572666c6f772e707365745f7363686564756c65735f6d61785f636f6d706c65786974790401386d61785f636f6d706c657869747920010c75363400012459015365747320746865206d617820636f6d706c6578697479206f662061207363686564756c652073657420666f7220616e20617262697472617279207469636b657220746f20606d61785f636f6d706c6578697479602eb8546865206e6577206d6178696d756d206973206e6f7420656e666f7263656420726574726f6163746976656c792cb4616e64206f6e6c79206170706c696573206f6e6365206e6577207363686564756c657320617265206d6164652e00a84d7573742062652063616c6c6564206173206120504950202872657175697265732022726f6f7422292e002c2320417267756d656e7473782d20606f726967696e602069732074686520726f6f74206f726967696e2e09012d20606d61785f636f6d706c65786974796020616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365742e3c6372656174655f7363686564756c650801187469636b6572a401185469636b65720001207363686564756c65910701305363686564756c655370656300024ca4437265617465732061207363686564756c652067656e65726174696e6720636865636b706f696e7473d4696e20746865206675747572652061742065697468657220612066697865642074696d65206f7220617420696e74657276616c732e000901546865207363686564756c6520737461727473206f7574207769746820607374726f6e675f7265665f636f756e74287363686564756c655f696429203c2d2030602e002c2320417267756d656e747321012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e982d20607469636b65726020746f2063726561746520746865207363686564756c6520666f722eb02d20607363686564756c656020746861742077696c6c2067656e657261746520636865636b706f696e74732e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e0d012d20605363686564756c654475726174696f6e546f6f53686f72746020696620746865207363686564756c65206475726174696f6e20697320746f6f2073686f72742e21012d2060496e73756666696369656e744163636f756e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c64206e6f7420626520636861726765642e4d012d2060436f756e7465724f766572666c6f776020696620746865207363686564756c65204944206f7220746f74616c20636865636b706f696e7420636f756e7465727320776f756c64206f766572666c6f772e5d012d20604661696c6564546f436f6d707574654e657874436865636b706f696e746020696620746865206e65787420636865636b706f696e7420666f7220607363686564756c656020697320696e2074686520706173742e003423205065726d697373696f6e731c2a2041737365743c72656d6f76655f7363686564756c650801187469636b6572a401185469636b65720001086964a10201285363686564756c654964000338fc52656d6f7665732074686520636865636b706f696e74207363686564756c65206f6620616e206173736574206964656e74696669656420627920606964602e002c2320417267756d656e747321012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e9c2d20607469636b65726020746f2072656d6f766520746865207363686564756c652066726f6d2e09012d2060696460206f6620746865207363686564756c652c207768656e2069742077617320637265617465642062792060637265617465645f7363686564756c65602e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e41012d20604e6f436865636b706f696e745363686564756c6560206966206069646020646f6573206e6f74206964656e746966792061207363686564756c6520666f72207468697320607469636b6572602ef42d20605363686564756c654e6f7452656d6f7661626c656020696620606964602065786973747320627574206973206e6f742072656d6f7661626c652e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e91070c3070616c6c65745f617373657428636865636b706f696e74305363686564756c655370656300000c01147374617274f801384f7074696f6e3c4d6f6d656e743e000118706572696f649902013843616c656e646172506572696f6400012472656d61696e696e6710010c75333200009507086470616c6c65745f636f6d706c69616e63655f6d616e616765721043616c6c040454000124686164645f636f6d706c69616e63655f726571756972656d656e740c01187469636b6572a401185469636b657200014473656e6465725f636f6e646974696f6e73ad0201385665633c436f6e646974696f6e3e00014c72656365697665725f636f6e646974696f6e73ad0201385665633c436f6e646974696f6e3e00002c050141646473206120636f6d706c69616e636520726571756972656d656e7420746f20616e206173736574277320636f6d706c69616e6365206279207469636b65722ef849662074686520636f6d706c69616e636520726571756972656d656e742069732061206475706c69636174652c20697420646f6573206e6f7468696e672e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574c42a2073656e6465725f636f6e646974696f6e73202d2053656e646572207472616e7366657220636f6e646974696f6e732ed42a2072656365697665725f636f6e646974696f6e73202d205265636569766572207472616e7366657220636f6e646974696f6e732e003423205065726d697373696f6e731c2a2041737365747472656d6f76655f636f6d706c69616e63655f726571756972656d656e740801187469636b6572a401185469636b6572000108696410010c753332000124f052656d6f766573206120636f6d706c69616e636520726571756972656d656e742066726f6d20616e206173736574277320636f6d706c69616e63652e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574f02a206964202d20436f6d706c69616e636520726571756972656d656e74206964207768696368206973206e65656420746f2062652072656d6f766564003423205065726d697373696f6e731c2a204173736574607265706c6163655f61737365745f636f6d706c69616e63650801187469636b6572a401185469636b657200014061737365745f636f6d706c69616e6365d50201685665633c436f6d706c69616e6365526571756972656d656e743e00023cfc5265706c6163657320616e206173736574277320636f6d706c69616e6365206279207469636b657220776974682061206e657720636f6d706c69616e63652e00fc436f6d706c69616e636520726571756972656d656e74732077696c6c20626520736f727465642028617363656e64696e6720627920696429206265666f72658c7265706c6163696e67207468652063757272656e7420726571756972656d656e74732e002c2320417267756d656e7473782a20607469636b657260202d20746865206173736574207469636b65722cbc2a206061737365745f636f6d706c69616e6365202d20746865206e657720617373657420636f6d706c69616e63652e002023204572726f7273f02a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722eb1012a20604475706c69636174654173736574436f6d706c69616e636560206966206061737365745f636f6d706c69616e63656020636f6e7461696e73206d756c7469706c6520656e74726965732077697468207468652073616d652060726571756972656d656e745f6964602e003423205065726d697373696f6e731c2a2041737365745872657365745f61737365745f636f6d706c69616e63650401187469636b6572a401185469636b65720003207452656d6f76657320616e206173736574277320636f6d706c69616e6365002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a2041737365745870617573655f61737365745f636f6d706c69616e63650401187469636b6572a401185469636b657200042011015061757365732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a2041737365745c726573756d655f61737365745f636f6d706c69616e63650401187469636b6572a401185469636b65720005201501526573756d65732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a204173736574806164645f64656661756c745f747275737465645f636c61696d5f6973737565720801187469636b6572a401185469636b6572000118697373756572c502013454727573746564497373756572000624f84164647320616e6f746865722064656661756c74207472757374656420636c61696d2069737375657220617420746865207469636b6572206c6576656c2e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742ec82a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e003423205065726d697373696f6e731c2a2041737365748c72656d6f76655f64656661756c745f747275737465645f636c61696d5f6973737565720801187469636b6572a401185469636b65720001186973737565727c01284964656e746974794964000724750152656d6f7665732074686520676976656e2060697373756572602066726f6d2074686520736574206f662064656661756c74207472757374656420636c61696d206973737565727320617420746865207469636b6572206c6576656c2e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742ec82a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e003423205065726d697373696f6e731c2a204173736574746368616e67655f636f6d706c69616e63655f726571756972656d656e740801187469636b6572a401185469636b657200011c6e65775f726571a9020154436f6d706c69616e6365526571756972656d656e74000824f04d6f6469667920616e206578697374696e6720636f6d706c69616e636520726571756972656d656e74206f66206120676976656e207469636b65722e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742e8c2a206e65775f726571202d20436f6d706c69616e636520726571756972656d656e742e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e9907086070616c6c65745f636f72706f726174655f616374696f6e731043616c6c040454000124587365745f6d61785f64657461696c735f6c656e6774680401186c656e67746810010c753332000008d053657420746865206d617820606c656e67746860206f66206064657461696c736020696e207465726d73206f662062797465732e744d6179206f6e6c792062652063616c6c6564207669612061205049502e4c7365745f64656661756c745f746172676574730801187469636b6572a401185469636b657200011c74617267657473dd0201405461726765744964656e746974696573000134cc536574207468652064656661756c7420434120605461726765744964656e7469746965736020746f206074617267657473602e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ee42d20607469636b65726020666f72207768696368207468652064656661756c74206964656e74697469657320617265206368616e67696e672ecc2d20607461726765747360207468652064656661756c7420746172676574206964656e74697469657320666f7220612043412e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e31012d2060546f6f4d616e79546172676574496473602069662060746172676574732e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e003423205065726d697373696f6e731c2a2041737365746c7365745f64656661756c745f77697468686f6c64696e675f7461780801187469636b6572a401185469636b657200010c7461788102010c5461780002303d01536574207468652064656661756c742077697468686f6c64696e672074617820666f7220616c6c204449447320616e64204341732072656c6576616e7420746f207468697320607469636b6572602e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ec82d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2e05012d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e003423205065726d697373696f6e731c2a2041737365745c7365745f6469645f77697468686f6c64696e675f7461780c01187469636b6572a401185469636b657200012474617865645f6469647c01284964656e74697479496400010c746178e502012c4f7074696f6e3c5461783e000340f4536574207468652077697468686f6c64696e6720746178206f6620607469636b65726020666f72206074617865645f6469646020746f2060746178602e810149662060536f6d652874617829602c2074686973206f7665727269646573207468652064656661756c742077697468686f6c64696e6720746178206f6620607469636b65726020746f20607461786020666f72206074617865645f646964602efc4f74686572776973652c20696620604e6f6e65602c207468652064656661756c742077697468686f6c64696e67207461782077696c6c20626520757365642e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ec82d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2ee42d206074617865645f6469646020746861742077696c6c2068617665206974732077697468686f6c64696e672074617820757064617465642e05012d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e81012d2060546f6f4d616e794469645461786573602069662060536f6d6528746178296020616e6420616464696e6720746865206f7665727269646520776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e003423205065726d697373696f6e731c2a20417373657464696e6974696174655f636f72706f726174655f616374696f6e2001187469636b6572a401185469636b65720001106b696e64ed02011843414b696e640001246465636c5f646174652001184d6f6d656e7400012c7265636f72645f646174659d0701584f7074696f6e3c5265636f726444617465537065633e00011c64657461696c7305030124434144657461696c7300011c74617267657473a50701604f7074696f6e3c5461726765744964656e7469746965733e00015c64656661756c745f77697468686f6c64696e675f746178e502012c4f7074696f6e3c5461783e00013c77697468686f6c64696e675f746178a90701784f7074696f6e3c5665633c284964656e7469747949642c20546178293e3e0004784901496e69746961746573206120434120666f7220607469636b657260206f6620606b696e64602077697468206064657461696c736020616e64206f746865722070726f766964656420617267756d656e74732e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732e8c2d20607469636b657260207468617420746865204341206973206d61646520666f722e7c2d20606b696e6460206f66204341206265696e6720696e697469617465642e982d20606465636c5f6461746560206f66204341206272696e6720696e697469616c697a65642ef02d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f6620746869732043412e610120202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e4d012d206064657461696c7360206f662074686520434120696e20667265652d7465787420666f726d2c20757020746f2061206365727461696e206e756d626572206f6620627974657320696e206c656e6774682ef42d206074617267657473602c20696620616e792c20776869636820746869732043412069732072656c6576616e742f697272656c6576616e7420746f2e49012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f7461726765747360292e5d012d206064656661756c745f77697468686f6c64696e675f746178602c20696620616e792c206973207468652064656661756c742077697468686f6c64696e672074617820746f2075736520666f7220746869732043412e69012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f77697468686f6c64696e675f74617860292e21012d206077697468686f6c64696e675f746178602c20696620616e792c2070726f7669646573207065722d4449442077697468686f6c64696e6720746178206f76657272696465732e59012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f6469645f77697468686f6c64696e675f74617860292e002023204572726f72731d012d206044657461696c73546f6f4c6f6e6760206966206064657461696c732e6c656e28296020676f6573206265796f6e6420606d61785f64657461696c735f6c656e677468602e25012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e69012d2060436f756e7465724f766572666c6f776020696e2074686520756e6c696b656c79206576656e74207468617420736f206d616e79204341732077657265206372656174656420666f72207468697320607469636b6572602cf820207468617420696e7465676572206f766572666c6f7720776f756c642068617665206f63637572656420696620696e737465616420616c6c6f7765642e75012d2060546f6f4d616e79446964546178657360206966206077697468686f6c64696e675f7461782e756e7772617028292e6c656e28296020776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e01012d20604475706c69636174654469645461786020696620612044494420697320696e636c75646564206d6f7265207468616e206f6e636520696e20607774602e55012d2060546f6f4d616e79546172676574496473602069662060746172676574732e756e7772617028292e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e01012d20604465636c44617465496e4675747572656020696620746865206465636c61726174696f6e2064617465206973206e6f7420696e2074686520706173742e51012d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e003423205065726d697373696f6e731c2a2041737365742c6c696e6b5f63615f646f6308010869647502011043414964000110646f63730903013c5665633c446f63756d656e7449643e000548ac4c696e6b2074686520676976656e204341206069646020746f2074686520676976656e2060646f6373602ef4416e792070726576696f7573206c696e6b7320666f7220746865204341206172652072656d6f76656420696e206661766f72206f662060646f6373602e00550154686520776f726b666c6f77206865726520697320746f206164642074686520646f63756d656e747320616e6420696e6974696174696e672074686520434120696e20616e79206f7264657220646573697265642ec44f6e636520626f74682065786973742c20746865792063616e206e6f77206265206c696e6b656420746f6765746865722e0030232320417267756d656e747351012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206069642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732ea82d2060696460206f662074686520434120746f206173736f636961746520776974682060646f6373602eb02d2060646f63736020746f206173736f6369617465207769746820746865204341207769746820606964602e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e19012d20604e6f53756368446f636020696620616e79206f662060646f63736020646f6573206e6f74206964656e7469667920616e206578697374696e6720646f63756d656e742e003423205065726d697373696f6e731c2a2041737365742472656d6f76655f636104011463615f696475020110434149640006489452656d6f76657320746865204341206964656e746966696564206279206063615f6964602e00c44173736f63696174656420646174612c207375636820617320646f63756d656e74206c696e6b732c2062616c6c6f74732cac616e64206361706974616c20646973747269627574696f6e732061726520616c736f2072656d6f7665642e00d4416e79207363686564756c65206173736f636961746564207769746820746865207265636f726420646174652077696c6c20736565b0607374726f6e675f7265665f636f756e74287363686564756c655f696429602064656372656d656e7465642e0030232320417267756d656e74735d012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e782d206063615f696460206f662074686520434120746f2072656d6f76652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e003423205065726d697373696f6e731c2a204173736574486368616e67655f7265636f72645f6461746508011463615f6964750201104341496400012c7265636f72645f646174659d0701584f7074696f6e3c5265636f726444617465537065633e00073ce04368616e67657320746865207265636f72642064617465206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e74735d012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e742d206063615f696460206f662074686520434120746f20616c7465722eec2d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f66207468652043412e610120202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e51012d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e003423205065726d697373696f6e731c2a204173736574a0696e6974696174655f636f72706f726174655f616374696f6e5f616e645f646973747269627574651c011c63615f61726773ad07016c496e697469617465436f72706f72617465416374696f6e41726773000124706f7274666f6c696f8907015c4f7074696f6e3c506f7274666f6c696f4e756d6265723e00012063757272656e6379a401185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e63650001287061796d656e745f61742001184d6f6d656e74000128657870697265735f6174f801384f7074696f6e3c4d6f6d656e743e0008041d015574696c6974792065787472696e73696320746f2062617463682060696e6974696174655f636f72706f726174655f616374696f6e6020616e64206064697374726962757465600c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e9d0704184f7074696f6e04045401a1070108104e6f6e6500000010536f6d650400a1070000010000a107086070616c6c65745f636f72706f726174655f616374696f6e73385265636f7264446174655370656300010c245363686564756c656404002001184d6f6d656e74000000404578697374696e675363686564756c650400a10201285363686564756c654964000100204578697374696e6704008d020130436865636b706f696e74496400020000a50704184f7074696f6e04045401dd020108104e6f6e6500000010536f6d650400dd020000010000a90704184f7074696f6e04045401fd020108104e6f6e6500000010536f6d650400fd020000010000ad07086070616c6c65745f636f72706f726174655f616374696f6e736c496e697469617465436f72706f72617465416374696f6e4172677300002001187469636b6572a401185469636b65720001106b696e64ed02011843414b696e640001246465636c5f646174652001184d6f6d656e7400012c7265636f72645f646174659d0701584f7074696f6e3c5265636f726444617465537065633e00011c64657461696c7305030124434144657461696c7300011c74617267657473a50701604f7074696f6e3c5461726765744964656e7469746965733e00015c64656661756c745f77697468686f6c64696e675f746178e502012c4f7074696f6e3c5461783e00013c77697468686f6c64696e675f746178a90701784f7074696f6e3c5665633c284964656e7469747949642c20546178293e3e0000b1070c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f741043616c6c040454000118346174746163685f62616c6c6f7410011463615f6964750201104341496400011472616e67651103013c42616c6c6f7454696d6552616e67650001106d6574611503012842616c6c6f744d65746100010c7263761d010110626f6f6c000068e8417474616368206120636f72706f726174652062616c6c6f7420746f20746865204341206964656e746966696564206279206063615f6964602e00ac5468652062616c6c6f742077696c6c2061646d697420766f7465732077697468696e206072616e6765602eb05468652062616c6c6f742773206d657461646174612069732070726f766964656420627920606d657461602c0501776869636820696e636c75646573207468652062616c6c6f74207469746c652c20746865206d6f74696f6e732c2074686569722063686f696365732c206574632e7853656520746865206042616c6c6f744d6574616020666f72206d6f72652e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602ed02d206063615f696460206964656e7469666965732074686520434120746f20617474616368207468652062616c6c6f7420746f2ec02d206072616e67656020737065636966696573207768656e20766f74696e672073746172747320616e6420656e64732eec2d20606d6574616020737065636966696573207468652062616c6c6f742773206d657461646174612061732061666f72656d656e74696f6e65642ee42d2060726376602073706563696669657320776865746865722052435620697320656e61626c656420666f7220746869732062616c6c6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef02d206043414e6f744e6f746963656020696620746865204341206973206e6f74206f662074686520604973737565724e6f7469636560206b696e642ebc2d206053746172744166746572456e6460206966206072616e67652e7374617274203e2072616e67652e656e64602e29012d20604e6f774166746572456e646020696620606e6f77203e2072616e67652e656e646020776865726520606e6f7760206973207468652063757272656e742074696d657374616d702ea82d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652e59012d20605265636f7264446174654166746572537461727460206966206064617465203e2072616e67652e73746172746020776865726520606461746560206973207468652043412773207265636f726420646174652eb82d2060416c726561647945786973747360206966207468657265277320612062616c6c6f7420616c72656164792e31012d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e09012d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e01012d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e10766f746508011463615f69647502011043414964000114766f7465733503013c5665633c42616c6c6f74566f74653e0001441101436173742060766f7465736020696e207468652062616c6c6f7420617474616368656420746f20746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747309012d20606f726967696e60207768696368206d7573742062652061207065726d697373696f6e6564207369676e6572207461726765746564206279207468652043412eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e21012d2060766f7465736020737065636966696573207468652062616c616e63657320746f2061737369676e20746f20656163682063686f69636520696e207468652062616c6c6f742e55012020205468652066756c6c20766f74696e6720706f776572206f6620606f726967696e60277320444944206d6179206265207573656420666f722065616368206d6f74696f6e20696e207468652062616c6c6f742e002023204572726f7273dc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742efc2d2060566f74696e674e6f7453746172746564602069662074686520766f74696e6720706572696f64206861736e277420636f6d6d656e636564207965742ed82d2060566f74696e67416c7265616479456e646564602069662074686520766f74696e6720706572696f642068617320656e6465642e5d012d206057726f6e67566f7465436f756e746020696620746865206e756d626572206f662063686f6963657320696e207468652062616c6c6f7420646f6573206e6f74206d617463682060766f7465732e6c656e2829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef42d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e21012d2060496e73756666696369656e74566f746573602069662074686520766f74696e6720706f776572207573656420666f7220616e79206d6f74696f6e20696e2060766f74657360a42020206578636565647320606f726967696e60277320444944277320766f74696e6720706f7765722e286368616e67655f656e6408011463615f6964750201104341496400010c656e642001184d6f6d656e740002300501416d656e642074686520656e642064617465206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ec42d2060656e64602073706563696669657320746865206e657720656e642064617465206f66207468652062616c6c6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e8c2d206053746172744166746572456e646020696620607374617274203e20656e64602e2c6368616e67655f6d65746108011463615f696475020110434149640001106d6574611503012842616c6c6f744d6574610003346101416d656e6420746865206d6574616461746120287469746c652c206d6f74696f6e732c206574632e29206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e902d20606d657461602073706563696669657320746865206e6577206d657461646174612e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e31012d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e09012d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e286368616e67655f72637608011463615f6964750201104341496400010c7263761d010110626f6f6c00042c0501416d656e642052435620737570706f727420666f72207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ecc2d206072637660207370656369666965732069662052435620697320746f20626520737570706f72746564206f72206e6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e3472656d6f76655f62616c6c6f7404011463615f69647502011043414964000528c852656d6f7665207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652eb507082c70616c6c65745f706970731043616c6c040454000144647365745f7072756e655f686973746f726963616c5f706970730401147072756e651d010110626f6f6c000014a44368616e6765207768657468657220636f6d706c65746564205049507320617265207072756e65642e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473f02a20607072756e656020737065636966696573207768657468657220636f6d706c6574656420504950732073686f756c64206265207072756e65642e607365745f6d696e5f70726f706f73616c5f6465706f73697404011c6465706f73697418011c42616c616e636500011421014368616e676520746865206d696e696d756d2070726f706f73616c206465706f73697420616d6f756e7420726571756972656420746f20737461727420612070726f706f73616c2e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473f02a20606465706f7369746020746865206e6577206d696e206465706f73697420726571756972656420746f20737461727420612070726f706f73616c707365745f64656661756c745f656e6163746d656e745f706572696f640401206475726174696f6e100138543a3a426c6f636b4e756d626572000214904368616e6765207468652064656661756c7420656e6163746d656e7420706572696f642e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e747369012a20606475726174696f6e6020746865206e65772064656661756c7420656e6163746d656e7420706572696f642069742074616b657320666f722061207363686564756c65642050495020746f2062652065786563757465642e587365745f70656e64696e675f7069705f657870697279040118657870697279450101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e00031805014368616e67652074686520616d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020697320657870697265642eb4496620606578706972796020697320604e6f6e6560207468656e2050495073206e65766572206578706972652e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e74731d012a2060657870697279602074686520626c6f636b2d74696d652069742074616b657320666f722061207374696c6c2d6050656e64696e67602050495020746f206578706972652e587365745f6d61785f7069705f736b69705f636f756e7404010c6d6178080130536b6970706564436f756e74000414d44368616e676520746865206d6178696d756d20736b697020636f756e742028606d61785f7069705f736b69705f636f756e7460292e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473ec2a20606d61786020736b697073206265666f72652061205049502063616e6e6f7420626520736b697070656420627920474320616e796d6f72652e507365745f6163746976655f7069705f6c696d69740401146c696d697410010c75333200051469014368616e676520746865206d6178696d756d206e756d626572206f66206163746976652050495073206265666f726520636f6d6d756e697479206d656d626572732063616e6e6f742070726f706f736520616e797468696e672e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473902a20606c696d697460206f6620636f6e63757272656e742061637469766520504950732e1c70726f706f736510012070726f706f73616ce5050140426f783c543a3a50726f706f73616c3e00011c6465706f73697418011c42616c616e636500010c75726c5502012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e550301584f7074696f6e3c5069704465736372697074696f6e3e000624050141206e6574776f726b206d656d6265722063726561746573206120504950206279207375626d697474696e67206120646973706174636861626c6520776869636855016368616e67657320746865206e6574776f726b20696e20736f6d657761792e2041206d696e696d756d206465706f73697420697320726571756972656420746f206f70656e2061206e65772070726f706f73616c2e002c2320417267756d656e7473c82a206070726f706f73657260206973206569746865722061207369676e696e67206b6579206f7220636f6d6d69747465652e65012020205573656420746f20756e6465727374616e6420776865746865722074686973206973206120636f6d6d69747465652070726f706f73616c20616e6420766572696669656420616761696e737420606f726967696e602e802a206070726f706f73616c60206120646973706174636861626c652063616c6c45012a20606465706f73697460206d696e696d756d206465706f7369742076616c75652c2077686963682069732069676e6f726564206966206070726f706f73657260206973206120636f6d6d69747465652ecc2a206075726c602061206c696e6b20746f2061207765627369746520666f722070726f706f73616c2064697363757373696f6e10766f74650c010869645103011450697049640001286179655f6f725f6e61791d010110626f6f6c00011c6465706f73697418011c42616c616e63650007481d01566f74652065697468657220696e206661766f722028606179655f6f725f6e617960203d3d207472756529206f7220616761696e7374206120504950207769746820606964602e4d015468652022636f6e76696e6374696f6e22206f7220737472656e677468206f662074686520766f746520697320676976656e20627920606465706f736974602c2077686963682069732072657365727665642e008c4e6f746520746861742060766f746560206973202a6e6f742a2061646469746976652ef8546861742069732c2060766f74652869642c20747275652c203530296020666f6c6c6f7765642062792060766f74652869642c20747275652c2034302960490177696c6c2066697273742072657365727665206035306020616e64207468656e20726566756e6420603530202d203130602c20656e64696e672075702077697468206034306020696e206465706f7369742e2501546f206164642061746f70206f66206578697374696e6720766f7465732c20796f75276c6c206e65656420606578697374696e675f6465706f736974202b206164646974696f6e602e002c2320417267756d656e74734c2a20606964602c2070726f706f73616c206964dc2a20606179655f6f725f6e6179602c206120626f6f6c20726570726573656e74696e6720666f72206f7220616761696e737420766f7465e82a20606465706f736974602c207468652022636f6e76696374696f6e2220776974682077686963682074686520766f7465206973206d6164652e002023204572726f7273e42a20604e6f5375636850726f706f73616c60206966206069646020646f65736e2774207265666572656e636520612076616c6964205049502ee42a20604e6f7446726f6d436f6d6d756e697479602069662070726f706f73616c20776173206d616465206279206120636f6d6d69747465652ec02a2060496e636f727265637450726f706f73616c537461746560206966205049502069736e27742070656e64696e672e2d012a2060496e73756666696369656e744465706f7369746020696620606f726967696e602063616e6e6f74207265736572766520606465706f736974202d206f6c645f6465706f736974602e68617070726f76655f636f6d6d69747465655f70726f706f73616c040108696451030114506970496400081cd4417070726f766573207468652070656e64696e6720636f6d6d69747465652050495020676976656e2062792074686520606964602e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ee42a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c2069736e27742070656e64696e672ee02a20604e6f744279436f6d6d697474656560206966207468652070726f706f73616c2069736e2774206279206120636f6d6d69747465652e3c72656a6563745f70726f706f73616c0401086964510301145069704964000920f852656a65637473207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e7920626f6e6465642066756e64732cb8617373756d696e67206974206861736e2774206265656e2063616e63656c6c6564206f722065786563757465642e05014e6f746520746861742070726f706f73616c73207363686564756c65642d666f722d657865637574696f6e2063616e20616c736f2062652072656a65637465642e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742e15012a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c207761732063616e63656c6c6564206f722065786563757465642e387072756e655f70726f706f73616c0401086964510301145069704964000a2429015072756e65207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e792066756e6473206e6f7420616c726561647920726566756e6465642e6454686520504950206d6179206e6f7420626520616374697665000901546869732066756e6374696f6e20697320696e74656e64656420666f722073746f72616765206761726261676520636f6c6c656374696f6e20707572706f7365732e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ed42a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c206973206163746976652e5072657363686564756c655f657865637574696f6e0801086964510301145069704964000114756e74696c2d0601584f7074696f6e3c543a3a426c6f636b4e756d6265723e000b24e0557064617465732074686520657865637574696f6e207363686564756c65206f66207468652050495020676976656e20627920606964602e002c2320417267756d656e747331012a2060756e74696c6020646566696e6573207468652066757475726520626c6f636b2077686572652074686520656e6163746d656e7420706572696f642077696c6c2066696e69736865642e4501202020604e6f6e65602076616c7565206d65616e73207468617420656e6163746d656e7420706572696f6420697320676f696e6720746f2066696e69736820696e20746865206e65787420626c6f636b2e002023204572726f727339012a206052657363686564756c654e6f74427952656c65617365436f6f7264696e61746f726020756e6c657373207472696767657265642062792072656c6561736520636f6f7264696e61746f722e21012a2060496e636f727265637450726f706f73616c53746174656020756e6c657373207468652070726f706f73616c2077617320696e2061207363686564756c65642073746174652e38636c6561725f736e617073686f74000c10e8436c656172732074686520736e617073686f7420616e6420656d69747320746865206576656e742060536e617073686f74436c6561726564602e002023204572726f72733d012a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e20736e617073686f74000d140d0154616b65732061206e657720736e617073686f74206f66207468652063757272656e74206c697374206f66206163746976652026262070656e64696e6720504950732e2901546865205049507320617265207468656e20736f7274656420696e746f2061207072696f72697479207175657565206261736564206f6e2065616368205049502773207765696768742e002023204572726f72733d012a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e58656e6163745f736e617073686f745f726573756c747304011c726573756c7473b90701705665633c2850697049642c20536e617073686f74526573756c74293e000e44d0456e616374732060726573756c74736020666f7220746865205049507320696e2074686520736e617073686f742071756575652e290154686520736e617073686f742077696c6c20626520617661696c61626c6520666f72206675727468657220656e6163746d656e747320756e74696c20697420697320636c65617265642e0055015468652060726573756c7473602061726520656e636f6465642061206c697374206f6620602869642c20726573756c7429602077686572652060726573756c7460206973206170706c69656420746f20606964602e49014e6f746520746861742074686520736e617073686f74207072696f7269747920717565756520697320656e636f646564207769746820746865202a6c6f77657374207072696f726974792066697273742a2e5501736f2060726573756c7473203d205b2869642c20417070726f7665295d602077696c6c20617070726f76652060536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20315d602e002023204572726f72730d012a20604261644f726967696e60202d20756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2e21012a206043616e6e6f74536b697050697060202d206120676976656e205049502068617320616c7265616479206265656e20736b697070656420746f6f206d616e792074696d65732e0d012a2060536e617073686f74526573756c74546f6f4c6172676560202d206f6e206c656e28726573756c747329203e206c656e28736e617073686f745f7175657565292e702a2060536e617073686f7449644d69736d6174636860202d2069663a2420206060607465787498202020e2888320286920e2888820302e2e536e617073686f7451756575652e6c656e2829292efc2020202020726573756c74735b695d2e3020e289a020536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20695d2e6964142020606060f8202020546869732069732070726f746563747320616761696e737420636c656172696e67207175657565207768696c6520474320697320766f74696e672e54657865637574655f7363686564756c65645f7069700401086964510301145069704964000f04d8496e7465726e616c20646973706174636861626c6520746861742068616e646c657320657865637574696f6e206f662061205049502e506578706972655f7363686564756c65645f70697008010c6469647c01284964656e7469747949640001086964510301145069704964001004dc496e7465726e616c20646973706174636861626c6520746861742068616e646c65732065787069726174696f6e206f662061205049502e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652eb907000002bd0700bd07000004085103c10700c107082c70616c6c65745f7069707338536e617073686f74526573756c7400010c1c417070726f76650000001852656a65637400010010536b697000020000c507084070616c6c65745f706f7274666f6c696f1043616c6c040454000118406372656174655f706f7274666f6c696f0401106e616d6589030134506f7274666f6c696f4e616d65000004a843726561746573206120706f7274666f6c696f20776974682074686520676976656e20606e616d65602e4064656c6574655f706f7274666f6c696f04010c6e756de4013c506f7274666f6c696f4e756d626572000120350144656c657465732061207573657220706f7274666f6c696f2e204120706f7274666f6c696f2063616e2062652064656c65746564206f6e6c7920696620697420686173206e6f2066756e64732e002023204572726f72731d012a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2ef02a2060506f7274666f6c696f4e6f74456d707479602069662074686520706f7274666f6c696f207374696c6c20686f6c647320616e79206173736574003423205065726d697373696f6e732c2a20506f7274666f6c696f506d6f76655f706f7274666f6c696f5f66756e64730c011066726f6ddc012c506f7274666f6c696f4964000108746fdc012c506f7274666f6c696f49640001146974656d73c90701585665633c4d6f7665506f7274666f6c696f4974656d3e00023c5d014d6f766573206120746f6b656e20616d6f756e742066726f6d206f6e6520706f7274666f6c696f206f6620616e206964656e7469747920746f20616e6f7468657220706f7274666f6c696f206f66207468652073616d65e06964656e746974792e204d7573742062652063616c6c65642062792074686520637573746f6469616e206f66207468652073656e6465722e110146756e64732066726f6d2064656c6574656420706f7274666f6c696f732063616e20616c736f206265207265636f7665726564207669612074686973206d6574686f642e00e0412073686f7274206d656d6f2063616e20626520616464656420746f20746f206561636820746f6b656e20616d6f756e74206d6f7665642e002023204572726f727369012a2060506f7274666f6c696f446f65734e6f74457869737460206966206f6e65206f7220626f7468206f662074686520706f7274666f6c696f73207265666572656e636520616e20696e76616c696420706f7274666f6c696f2e51012a206064657374696e6174696f6e5f69735f73616d655f706f7274666f6c696f6020696620626f74682073656e64657220616e6420726563656976657220706f7274666f6c696f20617265207468652073616d6591012a2060446966666572656e744964656e74697479506f7274666f6c696f7360206966207468652073656e64657220616e6420726563656976657220706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e74697469657349012a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f66207468652066726f6d20706f7274666f6c696f41012a2060496e73756666696369656e74506f7274666f6c696f42616c616e636560206966207468652073656e64657220646f6573206e6f74206861766520656e6f75676820667265652062616c616e6365003423205065726d697373696f6e732c2a20506f7274666f6c696f4072656e616d655f706f7274666f6c696f08010c6e756de4013c506f7274666f6c696f4e756d62657200011c746f5f6e616d6589030134506f7274666f6c696f4e616d6500031c8052656e616d65732061206e6f6e2d64656661756c7420706f7274666f6c696f2e002023204572726f72731d012a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2e003423205065726d697373696f6e732c2a20506f7274666f6c696f58717569745f706f7274666f6c696f5f637573746f647904010c706964dc012c506f7274666f6c696f4964000420bc5768656e2063616c6c65642062792074686520637573746f6469616e206f662060706f7274666f6c696f5f6964602c4901616c6c6f77732072657475726e696e672074686520637573746f6479206f662074686520706f7274666f6c696f20746f2074686520706f7274666f6c696f206f776e657220756e696c61746572616c6c792e002023204572726f72735d012a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f74207468652063757272656e7420637573746f6469616e206f662060706f7274666f6c696f5f6964602e003423205065726d697373696f6e732c2a20506f7274666f6c696f606163636570745f706f7274666f6c696f5f637573746f647904011c617574685f696420010c7536340005000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ec907000002cd0700cd07084070616c6c65745f706f7274666f6c696f444d6f7665506f7274666f6c696f4974656d00000c01187469636b6572a401185469636b6572000118616d6f756e7418011c42616c616e63650001106d656d6f8001304f7074696f6e3c4d656d6f3e0000d107084c70616c6c65745f70726f746f636f6c5f6665651043616c6c040454000108486368616e67655f636f656666696369656e7404012c636f656666696369656e7499030120506f73526174696f000010c04368616e676573207468652066656520636f656666696369656e7420666f722074686520726f6f74206f726967696e2e002023204572726f7273882a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e3c6368616e67655f626173655f6665650801086f70d507012850726f746f636f6c4f70000120626173655f66656518011c42616c616e6365000110ac4368616e67657320746865206120626173652066656520666f722074686520726f6f74206f726967696e2e002023204572726f7273882a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ed5070c64706f6c796d6573685f636f6d6d6f6e5f7574696c69746965733070726f746f636f6c5f6665652850726f746f636f6c4f700001344c417373657452656769737465725469636b65720000002841737365744973737565000100444173736574416464446f63756d656e7473000200404173736574437265617465417373657400030060436865636b706f696e744372656174655363686564756c65000400a4436f6d706c69616e63654d616e61676572416464436f6d706c69616e6365526571756972656d656e74000500584964656e746974794364645265676973746572446964000600404964656e74697479416464436c61696d000700a44964656e746974794164645365636f6e646172794b65797357697468417574686f72697a6174696f6e0008002c5069707350726f706f736500090040436f6e747261637473507574436f6465000a006c436f72706f7261746542616c6c6f7441747461636842616c6c6f74000b00744361706974616c446973747269627574696f6e44697374726962757465000c0000d9070c4070616c6c65745f7363686564756c65721870616c6c65741043616c6c040454000118207363686564756c651001107768656e100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963dd0701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6ce5050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00002870416e6f6e796d6f75736c79207363686564756c652061207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c738c2d2042617365205765696768743a2032322e3239202b202e313236202a205320c2b573302d204442205765696768743a48202020202d20526561643a204167656e64614c202020202d2057726974653a204167656e646139012d2057696c6c20757365206261736520776569676874206f662032352077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e1863616e63656c0801107768656e100138543a3a426c6f636b4e756d626572000114696e64657810010c7533320001289443616e63656c20616e20616e6f6e796d6f75736c79207363686564756c6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73902d2042617365205765696768743a2032322e3135202b20322e383639202a205320c2b573302d204442205765696768743a48202020202d20526561643a204167656e64616c202020202d2057726974653a204167656e64612c204c6f6f6b75703d012d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e387363686564756c655f6e616d6564140108696428011c5665633c75383e0001107768656e100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963dd0701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6ce5050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000228585363686564756c652061206e616d6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73882d2042617365205765696768743a2032392e36202b202e313539202a205320c2b573302d204442205765696768743a68202020202d20526561643a204167656e64612c204c6f6f6b75706c202020202d2057726974653a204167656e64612c204c6f6f6b757049012d2057696c6c20757365206261736520776569676874206f662033352077686963682073686f756c6420626520676f6f6420666f72206d6f7265207468616e203330207363686564756c65642063616c6c732c23203c2f7765696768743e3063616e63656c5f6e616d6564040108696428011c5665633c75383e0003287843616e63656c2061206e616d6564207363686564756c6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73902d2042617365205765696768743a2032342e3931202b20322e393037202a205320c2b573302d204442205765696768743a68202020202d20526561643a204167656e64612c204c6f6f6b75706c202020202d2057726974653a204167656e64612c204c6f6f6b75703d012d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e387363686564756c655f61667465721001146166746572100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963dd0701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6ce5050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000414a8416e6f6e796d6f75736c79207363686564756c652061207461736b20616674657220612064656c61792e002823203c7765696768743e5453616d65206173205b607363686564756c65605d2e2c23203c2f7765696768743e507363686564756c655f6e616d65645f6166746572140108696428011c5665633c75383e0001146166746572100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963dd0701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6ce5050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000514905363686564756c652061206e616d6564207461736b20616674657220612064656c61792e002823203c7765696768743ec453616d65206173205b607363686564756c655f6e616d6564605d2853656c663a3a7363686564756c655f6e616d6564292e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632edd0704184f7074696f6e04045401a1030108104e6f6e6500000010536f6d650400a1030000010000e107084470616c6c65745f736574746c656d656e741043616c6c040454000144306372656174655f76656e75650c011c64657461696c73ad03013056656e756544657461696c7300011c7369676e657273910101445665633c543a3a4163636f756e7449643e00010c747970b103012456656e756554797065000014585265676973746572732061206e65772076656e75652e00a42a206064657461696c7360202d2045787472612064657461696c732061626f757420612076656e75653d012a20607369676e65727360202d204172726179206f66207369676e65727320746861742061726520616c6c6f77656420746f207369676e20726563656970747320666f7220746869732076656e7565942a206074797060202d2054797065206f662076656e7565206265696e672063726561746564507570646174655f76656e75655f64657461696c730801086964a903011c56656e7565496400011c64657461696c73ad03013056656e756544657461696c730001105c4564697420612076656e756527732064657461696c732e00b42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742ec02a206064657461696c7360207370656369666965732074686520757064617465642076656e75652064657461696c732e447570646174655f76656e75655f747970650801086964a903011c56656e7565496400010c747970b103012456656e756554797065000210504564697420612076656e7565277320747970652e00b42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742eb42a206074797065602073706563696669657320746865206e65772074797065206f66207468652076656e75652e3c6164645f696e737472756374696f6e14012076656e75655f6964a903011c56656e7565496400013c736574746c656d656e745f74797065b9030178536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e00012874726164655f64617465f801444f7074696f6e3c543a3a4d6f6d656e743e00012876616c75655f64617465f801444f7074696f6e3c543a3a4d6f6d656e743e0001106c656773bd0301205665633c4c65673e0003305c416464732061206e657720696e737472756374696f6e2e002c2320417267756d656e7473ec2a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e09012a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c65645d01202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e51012a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b42a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e0020232057656967687498603935305f3030305f303030202b20315f3030305f303030202a206c6567732e6c656e282960686164645f616e645f61666669726d5f696e737472756374696f6e18012076656e75655f6964a903011c56656e7565496400013c736574746c656d656e745f74797065b9030178536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e00012874726164655f64617465f801444f7074696f6e3c543a3a4d6f6d656e743e00012876616c75655f64617465f801444f7074696f6e3c543a3a4d6f6d656e743e0001106c656773bd0301205665633c4c65673e000128706f7274666f6c696f73ec01405665633c506f7274666f6c696f49643e0004348c4164647320616e642061666669726d732061206e657720696e737472756374696f6e2e002c2320417267756d656e7473ec2a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e09012a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c65645d01202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e51012a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b42a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e6d012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2075736520696e20746869732061666669726d6174696f6e732e003423205065726d697373696f6e732c2a20506f7274666f6c696f4861666669726d5f696e737472756374696f6e0c01086964b5030134496e737472756374696f6e4964000128706f7274666f6c696f73ec01405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000524bc50726f766964652061666669726d6174696f6e20746f20616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e7473882a2060696460202d20496e737472756374696f6e20696420746f2061666669726d2e69012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2061666669726d207468697320696e737472756374696f6e2ef82a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f206265202061666669726d65642e003423205065726d697373696f6e732c2a20506f7274666f6c696f5077697468647261775f61666669726d6174696f6e0c01086964b5030134496e737472756374696f6e4964000128706f7274666f6c696f73ec01405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000624c0576974686472617720616e2061666669726d6174696f6e20666f72206120676976656e20696e737472756374696f6e2e002c2320417267756d656e7473ec2a2060696460202d20496e737472756374696f6e20696420666f7220746861742061666669726d6174696f6e206765742077697468647261776e2e5d012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2077697468647261772061666669726d6174696f6e2e01012a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f20626520756e2d61666669726d65642e003423205065726d697373696f6e732c2a20506f7274666f6c696f4872656a6563745f696e737472756374696f6e0c01086964b5030134496e737472756374696f6e4964000124706f7274666f6c696fdc012c506f7274666f6c696f496400012c6e756d5f6f665f6c65677310010c7533320007248052656a6563747320616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e7473882a2060696460202d20496e737472756374696f6e20696420746f2072656a6563742ed02a2060706f7274666f6c696f60202d20506f7274666f6c696f20746f2072656a6563742074686520696e737472756374696f6e2ed02a20606e756d5f6f665f6c65677360202d204e756d626572206f66206c65677320696e2074686520696e737472756374696f6e2e003423205065726d697373696f6e732c2a20506f7274666f6c696f5061666669726d5f776974685f72656365697074731001086964b5030134496e737472756374696f6e496400013c726563656970745f64657461696c73e50701dc5665633c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e000128706f7274666f6c696f73ec01405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000830cc4163636570747320616e20696e737472756374696f6e20616e6420636c61696d732061207369676e656420726563656970742e002c2320417267756d656e74737c2a2060696460202d2054617267657420696e737472756374696f6e2069642ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d42a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e8c2a20607369676e657260202d205369676e6572206f662074686520726563656970742e842a20607369676e65645f6461746160202d205369676e656420726563656970742e79012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f20616363657074207468697320696e737472756374696f6e2077697468003423205065726d697373696f6e732c2a20506f7274666f6c696f34636c61696d5f726563656970740801086964b5030134496e737472756374696f6e496400013c726563656970745f64657461696c73e90701c85265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e00092c60436c61696d732061207369676e656420726563656970742e002c2320417267756d656e7473bc2a2060696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d42a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e8c2a20607369676e657260202d205369676e6572206f662074686520726563656970742e842a20607369676e65645f6461746160202d205369676e656420726563656970742e003423205065726d697373696f6e732c2a20506f7274666f6c696f3c756e636c61696d5f72656365697074080138696e737472756374696f6e5f6964b5030134496e737472756374696f6e49640001186c65675f6964c50301144c65674964000a2098556e636c61696d7320612070726576696f75736c7920636c61696d656420726563656970742e002c2320417267756d656e7473ec2a2060696e737472756374696f6e5f696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074003423205065726d697373696f6e732c2a20506f7274666f6c696f4c7365745f76656e75655f66696c746572696e670801187469636b6572a401185469636b657200011c656e61626c65641d010110626f6f6c000b20c0456e61626c6573206f722064697361626c65642076656e75652066696c746572696e6720666f72206120746f6b656e2e002c2320417267756d656e7473b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e19012a2060656e61626c656460202d20426f6f6c65616e20746861742064656369646573206966207468652066696c746572696e672073686f756c6420626520656e61626c65642e003423205065726d697373696f6e731c2a20417373657430616c6c6f775f76656e7565730801187469636b6572a401185469636b657200011876656e756573cd0301305665633c56656e756549643e000c1c0d01416c6c6f7773206164646974696f6e616c2076656e75657320746f2063726561746520696e737472756374696f6e7320696e766f6c76696e6720616e2061737365742e00b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e7d012a206076656e75657360202d204172726179206f662076656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e003423205065726d697373696f6e731c2a2041737365743c646973616c6c6f775f76656e7565730801187469636b6572a401185469636b657200011876656e756573cd0301305665633c56656e756549643e000d1c69015265766f6b6573207065726d697373696f6e20676976656e20746f2076656e75657320666f72206372656174696e6720696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c61722061737365742e00b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2ea5012a206076656e75657360202d204172726179206f662076656e756573207468617420617265206e6f206c6f6e67657220616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e003423205065726d697373696f6e731c2a2041737365745c6368616e67655f726563656970745f76616c696469747908012c726563656970745f75696420010c75363400012076616c69646974791d010110626f6f6c000e14fc4d61726b732061207265636569707420697373756564206279207468652063616c6c657220617320636c61696d6564206f72206e6f7420636c61696d65642ec1015468697320616c6c6f77732074686520726563656970742069737375657220746f20696e76616c696461746520616e20616c7265616479206973737565642072656365697074206f7220726576616c696461746520616e20616c726561647920636c61696d656420726563656970742e00ac2a2060726563656970745f75696460202d20556e69717565204944206f662074686520726563656970742eac2a206076616c696469747960202d204e65772076616c6964697479206f662074686520726563656970742e74657865637574655f7363686564756c65645f696e737472756374696f6e0801086964b5030134496e737472756374696f6e496400012c5f6c6567735f636f756e7410010c753332000f048101526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f20657865637574652061207363686564756c656420736574746c656d656e7420696e737472756374696f6e2e5872657363686564756c655f696e737472756374696f6e0401086964b5030134496e737472756374696f6e49640010288452657363686564756c65732061206661696c656420696e737472756374696f6e2e002c2320417267756d656e7473b42a2060696460202d2054617267657420696e737472756374696f6e20696420746f2072657363686564756c652e003423205065726d697373696f6e732c2a20506f7274666f6c696f002023204572726f72733d012a2060496e737472756374696f6e4e6f744661696c656460202d20496e737472756374696f6e206e6f7420696e2061206661696c6564207374617465206f7220646f6573206e6f742065786973742e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ee507000002e90700e907084470616c6c65745f736574746c656d656e74385265636569707444657461696c7308244163636f756e7449640100444f6666436861696e5369676e617475726501ed070014012c726563656970745f75696420010c7536340001186c65675f6964c50301144c656749640001187369676e65720001244163636f756e7449640001247369676e6174757265ed0701444f6666436861696e5369676e61747572650001206d65746164617461c903013c526563656970744d657461646174610000ed07082873705f72756e74696d65384d756c74695369676e617475726500010c1c4564323535313904002d070148656432353531393a3a5369676e61747572650000001c5372323535313904005d070148737232353531393a3a5369676e61747572650001001445636473610400f107014065636473613a3a5369676e617475726500020000f1070c1c73705f636f7265146563647361245369676e617475726500000400750701205b75383b2036355d0000f507084470616c6c65745f737461746973746963731043616c6c040454000110587365745f6163746976655f61737365745f73746174730801146173736574d5030128417373657453636f7065000128737461745f7479706573f907014842547265655365743c53746174547970653e00003c80536574207468652061637469766520617373657420737461745f74797065732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e09012d2060737461745f747970657360202d20746865206e6577207374617420747970657320746f207265706c61636520616e79206578697374696e672074797065732e002023204572726f72731d012d206053746174547970654c696d69745265616368656460202d20746f6f206d616e79207374617420747970657320656e61626c656420666f722074686520606173736574602e85012d206043616e6e6f7452656d6f76655374617454797065496e55736560202d2063616e206e6f742072656d6f7665206120737461742074797065207468617420697320696e20757365206279207472616e7366657220636f6e646974696f6e732e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365746062617463685f7570646174655f61737365745f73746174730c01146173736574d5030128417373657453636f7065000124737461745f74797065dd030120537461745479706500011876616c756573fd07015042547265655365743c537461745570646174653e00013cec416c6c6f77206120747275737465642069737375657220746f20696e69742f726573796e63207469636b65722f636f6d70616e792073746174732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e902d2060737461745f7479706560202d2073746174207479706520746f207570646174652eb02d206076616c75657360202d20557064617465642076616c75657320666f722060737461745f74797065602e002023204572726f727305012d206053746174547970654d697373696e6760202d2060737461745f7479706560206973206e6f7420656e61626c656420666f722074686520606173736574602e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d204173736574747365745f61737365745f7472616e736665725f636f6d706c69616e63650801146173736574d5030128417373657453636f706500014c7472616e736665725f636f6e646974696f6e730108016c42547265655365743c5472616e73666572436f6e646974696f6e3e00023c90536574206173736574207472616e7366657220636f6d706c69616e63652072756c65732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e61012d20607472616e736665725f636f6e646974696f6e7360202d20746865206e6577207472616e7366657220636f6e646974696f6e20746f207265706c61636520616e79206578697374696e6720636f6e646974696f6e732e002023204572726f727355012d20605472616e73666572436f6e646974696f6e4c696d69745265616368656460202d20746f6f206d616e79207472616e7366657220636f6e64697469746f6e20656e61626c656420666f7220606173736574602e91012d206053746174547970654d697373696e6760202d2061207472616e7366657220636f6e646974696f6e2072657175697265732061207374617420747970652074686174206973206e6f7420656e61626c656420666f722074686520606173736574602e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365744c7365745f656e7469746965735f6578656d70740c012469735f6578656d70741d010110626f6f6c0001286578656d70745f6b6579110401685472616e73666572436f6e646974696f6e4578656d70744b6579000120656e7469746965730508014442547265655365743c53636f706549643e00033811015365742f756e73657420656e746974696573206578656d70742066726f6d20616e2061737365742773207472616e7366657220636f6d706c69616e63652072756c65732e002c2320417267756d656e747351012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606578656d70745f6b65792e6173736574602ee02d206069735f6578656d707460202d20656e61626c652f64697361626c65206578656d7074696f6e20666f722060656e746974696573602e1d012d20606578656d70745f6b657960202d2074686520617373657420616e642073746174207479706520746f206578656d7074207468652060656e746974696573602066726f6d2eec2d2060656e74697469657360202d2074686520656e74697469657320746f207365742f756e73657420746865206578656d7074696f6e20666f722e002023204572726f727321012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef9070420425472656553657404045401dd03000400d903000000fd070420425472656553657404045401f103000400ed030000000108042042547265655365740404540109040004000504000000050804204254726565536574040454017c00040031010000000908082870616c6c65745f73746f1043616c6c040454000118446372656174655f66756e647261697365722801486f66666572696e675f706f7274666f6c696fdc012c506f7274666f6c696f49640001386f66666572696e675f6173736574a401185469636b657200014472616973696e675f706f7274666f6c696fdc012c506f7274666f6c696f496400013472616973696e675f6173736574a401185469636b657200011474696572730d0801385665633c5072696365546965723e00012076656e75655f6964a903011c56656e756549640001147374617274f801444f7074696f6e3c543a3a4d6f6d656e743e00010c656e64f801444f7074696f6e3c543a3a4d6f6d656e743e0001486d696e696d756d5f696e766573746d656e7418011c42616c616e636500013c66756e647261697365725f6e616d652104013846756e647261697365724e616d65000040604372656174652061206e65772066756e647261697365722e000d012a20606f66666572696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e672074686520606f66666572696e675f6173736574602ea42a20606f66666572696e675f617373657460202d204173736574206265696e67206f6666657265642e05012a206072616973696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e6720746865206072616973696e675f6173736574602e35012a206072616973696e675f617373657460202d204173736574206265696e672065786368616e67656420666f7220606f66666572696e675f617373657460206f6e20696e766573746d656e742ee82a2060746965727360202d20507269636520746965727320746f2063686172676520696e766573746f7273206f6e20696e766573746d656e742ea82a206076656e75655f696460202d2056656e756520746f2068616e646c6520736574746c656d656e742e4d012a2060737461727460202d2046756e647261697365722073746172742074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c20737461727420696d6d6564696174656c792e29012a2060656e6460202d2046756e6472616973657220656e642074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c206e65766572206578706972652ecd012a20606d696e696d756d5f696e766573746d656e7460202d204d696e696d756d20616d6f756e74206f66206072616973696e675f617373657460207468617420616e20696e766573746f72206e6565647320746f207370656e6420746f20696e7665737420696e20746869732072616973652ef02a206066756e647261697365725f6e616d6560202d2046756e64726169736572206e616d652c206f6e6c79207573656420696e20746865205549732e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f18696e766573741c0150696e766573746d656e745f706f7274666f6c696fdc012c506f7274666f6c696f496400014466756e64696e675f706f7274666f6c696fdc012c506f7274666f6c696f49640001386f66666572696e675f6173736574a401185469636b657200010869641d04013046756e64726169736572496400013c70757263686173655f616d6f756e7418011c42616c616e63650001246d61785f70726963650104013c4f7074696f6e3c42616c616e63653e00011c72656365697074150801e84f7074696f6e3c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e0001305c496e7665737420696e20612066756e647261697365722e0041012a2060696e766573746d656e745f706f7274666f6c696f60202d20506f7274666f6c696f207468617420606f66666572696e675f6173736574602077696c6c206265206465706f736974656420696e2e01012a206066756e64696e675f706f7274666f6c696f60202d20506f7274666f6c696f20746861742077696c6c2066756e642074686520696e766573746d656e742ea02a20606f66666572696e675f617373657460202d20417373657420746f20696e7665737420696e2eac2a2060696460202d204944206f66207468652066756e6472616973657220746f20696e7665737420696e2ef42a206070757263686173655f616d6f756e7460202d20416d6f756e74206f6620606f66666572696e675f61737365746020746f2070757263686173652eb9012a20606d61785f707269636560202d204d6178696d756d20707269636520746f207061792070657220756e6974206f6620606f66666572696e675f6173736574602c20496620604e6f6e6560746865726520617265206e6f20636f6e73747261696e7473206f6e2070726963652e69012a20607265636569707460202d204f66662d636861696e207265636569707420746f2075736520696e7374656164206f66206f6e2d636861696e2062616c616e636520696e206066756e64696e675f706f7274666f6c696f602e003423205065726d697373696f6e732c2a20506f7274666f6c696f44667265657a655f66756e647261697365720801386f66666572696e675f6173736574a401185469636b657200010869641d04013046756e64726169736572496400021c50467265657a6520612066756e647261697365722e00942a20606f66666572696e675f617373657460202d20417373657420746f20667265657a652ea02a2060696460202d204944206f66207468652066756e6472616973657220746f20667265657a652e003423205065726d697373696f6e731c2a2041737365744c756e667265657a655f66756e647261697365720801386f66666572696e675f6173736574a401185469636b657200010869641d04013046756e64726169736572496400031c58556e667265657a6520612066756e647261697365722e009c2a20606f66666572696e675f617373657460202d20417373657420746f20756e667265657a652ea82a2060696460202d204944206f66207468652066756e6472616973657220746f20756e667265657a652e003423205065726d697373696f6e731c2a204173736574606d6f646966795f66756e647261697365725f77696e646f771001386f66666572696e675f6173736574a401185469636b657200010869641d04013046756e6472616973657249640001147374617274200124543a3a4d6f6d656e7400010c656e64f801444f7074696f6e3c543a3a4d6f6d656e743e000424b44d6f64696679207468652074696d652077696e646f7720612066756e647261697365722069732061637469766500942a20606f66666572696e675f617373657460202d20417373657420746f206d6f646966792ea02a2060696460202d204944206f66207468652066756e6472616973657220746f206d6f646966792ea02a2060737461727460202d204e6577207374617274206f66207468652066756e647261697365722eb82a2060656e6460202d204e657720656e64206f66207468652066756e6472616973657220746f206d6f646966792e003423205065726d697373696f6e731c2a2041737365741073746f700801386f66666572696e675f6173736574a401185469636b657200010869641d04013046756e64726169736572496400051c4853746f7020612066756e647261697365722e008c2a20606f66666572696e675f617373657460202d20417373657420746f2073746f702e982a2060696460202d204944206f66207468652066756e6472616973657220746f2073746f702e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e0d080000021108001108082870616c6c65745f73746f245072696365546965720000080114746f74616c18011c42616c616e6365000114707269636518011c42616c616e63650000150804184f7074696f6e04045401e9070108104e6f6e6500000010536f6d650400e90700000100001908083c70616c6c65745f74726561737572791043616c6c0404540001083064697362757273656d656e7404013462656e656669636961726965731d0801785665633c42656e65666963696172793c42616c616e63654f663c543e3e3e00001851014974207472616e73666572732062616c616e6365732066726f6d20747265617375727920746f2065616368206f662062656e6566696369617269657320616e642074686520737065636966696320616d6f756e7444666f722065616368206f66207468656d2e001c23204572726f72c42a20604261644f726967696e603a204f6e6c7920726f6f742063616e2065786563757465207472616e73616374696f6e2e5d012a2060496e73756666696369656e7442616c616e6365603a2049662074726561737572792062616c616e636573206973206e6f7420656e6f75676820746f20636f76657220616c6c2062656e656669636961726965732e347265696d62757273656d656e74040118616d6f756e7418013042616c616e63654f663c543e00010c1d014974207472616e7366657273207468652073706563696669632060616d6f756e74602066726f6d20606f726967696e60206163636f756e7420696e746f2074726561737572792e0049014f6e6c79206163636f756e747320776869636820617265206173736f63696174656420746f20616e206964656e746974792063616e206d616b65206120646f6e6174696f6e20746f2074726561737572792e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e1d080000022108002108084c706f6c796d6573685f7072696d6974697665732c42656e6566696369617279041c42616c616e636501180008010869647c01284964656e746974794964000118616d6f756e7418011c42616c616e636500002508083870616c6c65745f7574696c6974791043616c6c04045400011014626174636804011463616c6c73290801605665633c3c5420617320436f6e6669673e3a3a43616c6c3e000048c44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e00e8546869732077696c6c206578656375746520756e74696c20746865206669727374206f6e65206661696c7320616e64207468656e2073746f702e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e00202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e00bd01546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e31016576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e207468655501604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d6164654d01616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c65746564604c6576656e74206973206465706f73697465642e3062617463685f61746f6d696304011463616c6c73290801605665633c3c5420617320436f6e6669673e3a3a43616c6c3e00014cc44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e001501546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c2073746f7070696e6720617420746865206669727374206661696c7572652cc0696e207768696368206361736520746865207374617465206368616e6765732061726520726f6c6c6564206261636b2e25014f6e206661696c7572652c20616e206576656e7420604261746368496e746572727570746564286661696c7572655f6964782c206572726f722960206973206465706f73697465642e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e00202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e001501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef4546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ee4496620616e792063616c6c206661696c65642c207468656e20604261746368496e74657272757074656460206973206465706f73697465642e1501496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e4062617463685f6f7074696d697374696304011463616c6c73290801605665633c3c5420617320436f6e6669673e3a3a43616c6c3e000254c44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e000101546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c20697272657370656374697665206f66206661696c757265732e0901416e79206661696c757265732077696c6c20626520617661696c61626c6520696e2061206042617463684f7074696d69737469634661696c656460206576656e742e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e0000202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e001501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef4546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ef8496620616e792063616c6c206661696c65642c207468656e206042617463684f7074696d69737469634661696c656460206973206465706f73697465642cfc77697468206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c2061732077656c6c206173206120766563746f72286f66206572726f72732e1501496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e2072656c61795f74780c0118746172676574000130543a3a4163636f756e7449640001247369676e6174757265ed070150543a3a4f6666436861696e5369676e617475726500011063616c6c2d08017c556e6971756543616c6c3c3c5420617320436f6e6669673e3a3a43616c6c3e000330a052656c617920612063616c6c20666f722061207461726765742066726f6d20616e206f726967696e00510152656c6179696e6720696e207468697320636f6e746578742072656665727320746f20746865206162696c697479206f66206f726967696e20746f206d616b6520612063616c6c206f6e20626568616c66206f661c7461726765742e00684665657320617265206368617267656420746f206f726967696e00302320506172616d6574657273842d2060746172676574603a204163636f756e7420746f2062652072656c61796564e82d20607369676e6174757265603a205369676e61747572652066726f6d2074617267657420617574686f72697a696e67207468652072656c6179c02d206063616c6c603a2043616c6c20746f2062652072656c61796564206f6e20626568616c66206f6620746172676574000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e2908000002e505002d08083870616c6c65745f7574696c69747928556e6971756543616c6c04044301e505000801146e6f6e6365200148417574686f72697a6174696f6e4e6f6e636500011063616c6ce5050118426f783c433e00003108082c70616c6c65745f626173651043616c6c0404540001000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e3508085870616c6c65745f65787465726e616c5f6167656e74731043616c6c040454000120306372656174655f67726f75700801187469636b6572a401185469636b65720001147065726d73b4015045787472696e7369635065726d697373696f6e73000048e443726561746573206120637573746f6d206167656e742067726f7570202841472920666f722074686520676976656e20607469636b6572602e00d45468652041472077696c6c206861766520746865207065726d697373696f6e7320617320676976656e20627920607065726d73602e290154686973206e6577204147206973207468656e2061737369676e656420606964203d204147496453657175656e63653a3a6765742829202b20316020617320697473206041474964602c3901776869636820796f752063616e2075736520617320604167656e7447726f75703a3a437573746f6d2869642960207768656e20616464696e67206167656e747320666f7220607469636b6572602e002c2320417267756d656e74739c2d20607469636b65726020746f206164642074686520637573746f6d2067726f757020666f722e902d20607065726d7360207468617420746865206e65772041472077696c6c20686176652e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e21012d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672e25012d2060436f756e7465724f766572666c6f776020696620604147496453657175656e63653a3a6765742829202b20316020776f756c642065786365656420607533323a3a4d4158602e003423205065726d697373696f6e731c2a2041737365741c2a204167656e74547365745f67726f75705f7065726d697373696f6e730c01187469636b6572a401185469636b6572000108696419010110414749640001147065726d73b4015045787472696e7369635065726d697373696f6e7300013c51015570646174657320746865207065726d697373696f6e73206f662074686520637573746f6d204147206964656e74696669656420627920606964602c20666f722074686520676976656e20607469636b6572602e002c2320417267756d656e7473902d20607469636b6572602074686520637573746f6d2041472062656c6f6e677320746f2ea42d206069646020666f722074686520637573746f6d2041472077697468696e20607469636b6572602e942d20607065726d736020746f207570646174652074686520637573746f6d20414720746f2e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e21012d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672ecc2d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472e003423205065726d697373696f6e731c2a2041737365741c2a204167656e743072656d6f76655f6167656e740801187469636b6572a401185469636b65720001146167656e747c01284964656e7469747949640002389c52656d6f76652074686520676976656e20606167656e74602066726f6d20607469636b6572602e002c2320417267756d656e7473a82d20607469636b6572602074686174206861732074686520606167656e746020746f2072656d6f76652e802d20606167656e7460206f6620607469636b65726020746f2072656d6f76652e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ed82d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602ee82d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e746020697320746865206c6173742066756c6c206f6e652e003423205065726d697373696f6e731c2a2041737365741c2a204167656e742061626469636174650401187469636b6572a401185469636b657200032c804162646963617465206167656e747368697020666f7220607469636b6572602e002c2320417267756d656e7473ac2d20607469636b657260206f66207768696368207468652063616c6c657220697320616e206167656e742e002023204572726f7273e42d20604e6f74416e4167656e7460206966207468652063616c6c6572206973206e6f7420616e206167656e74206f6620607469636b6572602efc2d206052656d6f76696e674c61737446756c6c4167656e7460206966207468652063616c6c657220697320746865206c6173742066756c6c206167656e742e003423205065726d697373696f6e731c2a204173736574306368616e67655f67726f75700c01187469636b6572a401185469636b65720001146167656e747c01284964656e74697479496400011467726f7570150101284167656e7447726f7570000440ec4368616e676520746865206167656e742067726f7570207468617420606167656e74602062656c6f6e677320746f20696e20607469636b6572602e002c2320417267756d656e7473802d20607469636b6572602074686174206861732074686520606167656e74602eb82d20606167656e7460206f6620607469636b65726020746f206368616e6765207468652067726f757020666f722ec82d206067726f757060207468617420606167656e74602077696c6c2062656c6f6e6720746f20696e20607469636b6572602e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ecc2d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472ed82d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602e2d012d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e7460207761732061206046756c6c60206f6e6520616e64206973206265696e672064656d6f7465642e003423205065726d697373696f6e731c2a2041737365741c2a204167656e744c6163636570745f6265636f6d655f6167656e7404011c617574685f696420010c753634000540010141636365707420616e20617574686f72697a6174696f6e20627920616e206167656e742022416c696365222077686f206973737565642060617574685f696460d8746f20616c736f206265636f6d6520616e206167656e74206f6620746865207469636b657220416c696365207370656369666965642e002c2320417267756d656e7473d02d2060617574685f696460206964656e74696679696e672074686520617574686f72697a6174696f6e20746f206163636570742e002023204572726f727345012d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e35012d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f69646020697320666f7220616e206175746820746861742068617320657870697265642e4d012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f7420666f72206120604265636f6d654167656e7460206175746820747970652e25012d2060556e617574686f72697a65644167656e74602069662022416c69636522206973206e6f74207065726d697373696f6e656420746f2070726f766964652074686520617574682e0d012d20604e6f53756368414760206966207468652067726f757020726566657272656420746f206120637573746f6d207468617420646f6573206e6f742065786973742e0d012d2060416c7265616479416e4167656e7460206966207468652063616c6c657220697320616c726561647920616e206167656e74206f6620746865207469636b65722e003423205065726d697373696f6e731c2a204167656e74646372656174655f67726f75705f616e645f6164645f617574680c01187469636b6572a401185469636b65720001147065726d73b4015045787472696e7369635065726d697373696f6e7300011874617267657498015c5369676e61746f72793c543a3a4163636f756e7449643e000614e85574696c6974792065787472696e73696320746f20626174636820606372656174655f67726f75706020616e642020606164645f61757468602e003423205065726d697373696f6e731c2a2041737365741c2a204167656e74786372656174655f616e645f6368616e67655f637573746f6d5f67726f75700c01187469636b6572a401185469636b65720001147065726d73b4015045787472696e7369635065726d697373696f6e730001146167656e747c01284964656e74697479496400071455015574696c6974792065787472696e73696320746f20626174636820606372656174655f67726f75706020616e642020606368616e67655f67726f75706020666f7220637573746f6d2067726f757073206f6e6c792e003423205065726d697373696f6e731c2a2041737365741c2a204167656e740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e3908083870616c6c65745f72656c617965721043616c6c040454000118387365745f706179696e675f6b6579080120757365725f6b6579000130543a3a4163636f756e74496400012c706f6c79785f6c696d697418011c42616c616e6365000020bd014372656174657320616e20617574686f72697a6174696f6e20746f20616c6c6f772060757365725f6b65796020746f20616363657074207468652063616c6c65722028606f726967696e203d3d20706179696e675f6b6579602920617320746865697220737562736964697365722e002c2320417267756d656e74739c2d2060757365725f6b657960207468652075736572206b657920746f207375627369646973652ee42d2060706f6c79785f6c696d6974602074686520696e697469616c20504f4c5958206c696d697420666f72207468697320737562736964792e002023204572726f727331012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e446163636570745f706179696e675f6b657904011c617574685f696420010c753634000138944163636570747320612060706179696e675f6b65796020617574686f72697a6174696f6e2e002c2320417267756d656e7473e82d2060617574685f6964602074686520617574686f72697a6174696f6e20696420746f2061636365707420612060706179696e675f6b6579602e002023204572726f727345012d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e2d012d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f6964602074686520617574686f72697a6174696f6e2068617320657870697265642e6d012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f742061206041646452656c61796572506179696e674b65796020617574686f72697a6174696f6e2ea5012d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f206163636570742074686520617574686f72697a6174696f6e20666f72207468652060757365725f6b6579602ed9012d20604e6f74417574686f72697a6564466f72506179696e674b6579602069662074686520617574686f72697a6174696f6e20776173206372656174656420616e206964656e7469747920646966666572656e742066726f6d207468652060706179696e675f6b6579602773206964656e746974792e31012d2060557365724b65794364644d697373696e6760206966207468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e41012d2060506179696e674b65794364644d697373696e6760206966207468652060706179696e675f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e4472656d6f76655f706179696e675f6b6579080120757365725f6b6579000130543a3a4163636f756e744964000128706179696e675f6b6579000130543a3a4163636f756e74496400022cac52656d6f766573207468652060706179696e675f6b6579602066726f6d20612060757365725f6b6579602e002c2320417267756d656e7473d42d2060757365725f6b657960207468652075736572206b657920746f2072656d6f76652074686520737562736964792066726f6d2e09012d2060706179696e675f6b6579602074686520706179696e67206b6579207468617420776173207375627369646973696e67207468652060757365725f6b6579602e002023204572726f72738d012d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2072656d6f766520746865207375627369647920666f72207468652060757365725f6b6579602ef82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e31012d20604e6f74506179696e674b657960206966207468652060706179696e675f6b65796020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e487570646174655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e74496400012c706f6c79785f6c696d697418011c42616c616e6365000328b4557064617465732074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e35012d2060706f6c79785f6c696d6974602074686520616d6f756e74206f6620504f4c595820617661696c61626c6520666f72207375627369646973696e67207468652060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e50696e6372656173655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e744964000118616d6f756e7418011c42616c616e636500042cb8496e6372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e0d012d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2061646420746f207468652073756273696479206f662060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e3d012d20604f7665726c6f776020696620746865207375627369647927732072656d61696e696e6720504f4c595820776f756c642068617665206f766572666c6f7765642060753132383a3a4d4158602e5064656372656173655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e744964000118616d6f756e7418011c42616c616e636500052cb844656372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e21012d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2072656d6f76652066726f6d207468652073756273696479206f662060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e09012d20604f7665726c6f776020696620746865207375627369647920686173206c657373207468656e2060616d6f756e746020504f4c59582072656d61696e696e672e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e3d08083870616c6c65745f726577617264731043616c6c04045400010840636c61696d5f69746e5f7265776172640c01387265776172645f61646472657373000130543a3a4163636f756e74496400012c69746e5f61646472657373000130543a3a4163636f756e7449640001247369676e6174757265ed070150543a3a4f6666436861696e5369676e617475726500003450436c61696d20616e2049544e207265776172642e0030232320417267756d656e7473d82a206069746e5f61646472657373602073706563696679696e672074686520617761726465642061646472657373206f6e2049544e2ed42a20607369676e6174757265602061757468656e7469636174696e672074686520636c61696d20746f20746865207265776172642e7501202020546865207369676e61747572652073686f756c6420636f6e7461696e20607265776172645f616464726573736020666f6c6c6f7765642062792074686520737566666978206022636c61696d5f69746e5f72657761726422602cb8202020616e64206d7573742068617665206265656e207369676e6564206279206069746e5f61646472657373602e002023204572726f727345012a2060496e73756666696369656e7442616c616e636560202d2049746e20726577617264732068617320696e73756666696369656e742066756e647320746f20697373756520746865207265776172642e31012a2060496e76616c69645369676e617475726560202d20607369676e6174757265602068616420616e20696e76616c6964207369676e6572206f7220696e76616c6964206d6573736167652e69012a206049746e526577617264416c7265616479436c61696d656460202d205265776172642069737375656420746f20746865206069746e5f61646472657373602068617320616c7265616479206265656e20636c61696d65642e89012a2060556e6b6e6f776e49746e4164647265737360202d206069746e5f6164647265737360206973206e6f7420696e207468652072657761726473207461626c6520616e6420686173206e6f2072657761726420746f20626520636c61696d65642e547365745f69746e5f7265776172645f73746174757308012c69746e5f61646472657373000130543a3a4163636f756e7449640001187374617475734108013c49746e5265776172645374617475730001000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e4108083870616c6c65745f726577617264733c49746e52657761726453746174757300010824556e636c61696d6564040018011c42616c616e63650000001c436c61696d6564000100004508084470616c6c65745f746573745f7574696c731043616c6c0404540001103072656769737465725f64696408010c7569642101012c496e766573746f725569640001387365636f6e646172795f6b6579735505017c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e0000284d0147656e6572617465732061206e657720604964656e7469747949446020666f72207468652063616c6c65722c20616e642069737375657320612073656c662d67656e6572617465642043444420636c61696d2e00f05468652063616c6c6572206163636f756e742077696c6c20626520746865207072696d617279206b6579206f662074686174206964656e746974792e5d01466f722065616368206163636f756e74206f6620607365636f6e646172795f6b657973602c2061206e657720604a6f696e4964656e746974796020617574686f72697a6174696f6e20697320637265617465642c20736f410165616368206f66207468656d2077696c6c206e65656420746f20616363657074206974206265666f7265206265636f6d652070617274206f662074686973206e657720604964656e746974794944602e002023204572726f7273d5012d2060416c72656164794c696e6b656460206966207468652063616c6c6572206163636f756e74206f7220696620616e79206f662074686520676976656e20607365636f6e646172795f6b657973602068617320616c7265616479206c696e6b656420746f20616e20604964656e746974794944604d012d20605365636f6e646172794b657973436f6e7461696e5072696d6172794b65796020696620607365636f6e646172795f6b6579736020636f6e7461696e73207468652063616c6c6572206163636f756e742ee82d2060446964416c726561647945786973747360206966206175746f2d67656e6572617465642044494420616c7265616479206578697374732e546d6f636b5f6364645f72656769737465725f6469640401387461726765745f6163636f756e74000130543a3a4163636f756e7449640001303d015265676973746572732061206e6577204964656e7469747920666f722074686520607461726765745f6163636f756e746020616e642069737375657320612043444420636c61696d20746f2069742e510154686520496e766573746f72205549442069732067656e6572617465642064657465726d696e6973746963616c6c79206279207468652068617368206f66207468652067656e6572617465642044494420616e64b07468656e2077652066697820697420746f20626520636f6d706c69616e74207769746820555549442076342e00142320536565dc2d205b52464320343132323a20555549445d2868747470733a2f2f746f6f6c732e696574662e6f72672f68746d6c2f7266633431323229002423204661696c75726549012d20606f726967696e602068617320746f20626520616e20616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792e286765745f6d795f64696400020498456d69747320616e206576656e7420776974682063616c6c65722773206964656e746974792e286765745f6364645f6f660401086f66000130543a3a4163636f756e744964000304d4456d69747320616e206576656e7420776974682063616c6c65722773206964656e7469747920616e6420434444207374617475732e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e4908084070616c6c65745f636f6d6d697474656534506f6c796d657368566f746573042c426c6f636b4e756d626572011000100114696e64657810013450726f706f73616c496e646578000110617965733101013c5665633c4964656e7469747949643e0001106e6179733101013c5665633c4964656e7469747949643e0001186578706972794501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00004d08084070616c6c65745f636f6d6d69747465651c56657273696f6e00000400080108753800005108084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e005508083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e005908084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e005d08083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e006108084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e006508083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e006908000004080098006d080000040800200071080000040800e5050075080000040c009820007908083c70616c6c65745f6d756c74697369673c50726f706f73616c44657461696c73040454012000140124617070726f76616c7320010c75363400012872656a656374696f6e7320010c7536340001187374617475737d08013850726f706f73616c537461747573000118657870697279f801244f7074696f6e3c543e0001286175746f5f636c6f73651d010110626f6f6c00007d08083c70616c6c65745f6d756c74697369673850726f706f73616c5374617475730001141c496e76616c69640000003c4163746976654f72457870697265640001004c457865637574696f6e5375636365737366756c0002003c457865637574696f6e4661696c65640003002052656a6563746564000400008108083c70616c6c65745f6d756c7469736967144572726f72040454000160284364644d697373696e67000004c4546865206d756c7469736967206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e3c50726f706f73616c4d697373696e67000104705468652070726f706f73616c20646f6573206e6f742065786973742e344465636f64696e674572726f72000204444d756c746973696720616464726573732e244e6f5369676e6572730003042c4e6f207369676e6572732e7452657175697265645369676e6174757265734f75744f66426f756e6473000404a0546f6f20666577206f7220746f6f206d616e79207265717569726564207369676e6174757265732e284e6f74415369676e6572000504344e6f742061207369676e65722e384e6f537563684d756c7469736967000604444e6f2073756368206d756c74697369672e404e6f74456e6f7567685369676e6572730007044c4e6f7420656e6f756768207369676e6572732e344e6f6e63654f766572666c6f770008044441206e6f6e6365206f766572666c6f772e30416c7265616479566f74656400090438416c726561647920766f7465642e38416c7265616479415369676e6572000a0444416c72656164792061207369676e65722e444661696c6564546f436861726765466565000b04a0436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e484964656e746974794e6f7443726561746f72000c04c04964656e746974792070726f7669646564206973206e6f7420746865206d756c746973696727732063726561746f722e404368616e67654e6f74416c6c6f776564000d0425014368616e67696e67206d756c746973696720706172616d6574657273206e6f7420616c6c6f7765642073696e6365206d756c74697369672069732061207072696d617279206b65792e745369676e6572416c72656164794c696e6b6564546f4d756c7469736967000e0411015369676e657220697320616e206163636f756e74206b6579207468617420697320616c7265616479206173736f63696174656420776974682061206d756c74697369672e745369676e6572416c72656164794c696e6b6564546f4964656e74697479000f0415015369676e657220697320616e206163636f756e74206b6579207468617420697320616c7265616479206173736f636961746564207769746820616e206964656e746974792e584d697373696e6743757272656e744964656e746974790010045843757272656e7420444944206973206d697373696e67344e6f745072696d6172794b6579001104f45468652066756e6374696f6e2063616e206f6e6c792062652063616c6c656420627920746865207072696d617279206b6579206f6620746865206469645c50726f706f73616c416c726561647952656a65637465640012047450726f706f73616c207761732072656a6563746564206561726c6965723c50726f706f73616c457870697265640013045050726f706f73616c2068617320657870697265645c50726f706f73616c416c726561647945786563757465640014047450726f706f73616c20776173206578656375746564206561726c6965725c4d756c74697369674d697373696e674964656e746974790015049c4d756c7469736967206973206e6f7420617474616368656420746f20616e206964656e74697479404661696c6564546f5363686564756c65001604785363686564756c696e67206f6620612070726f706f73616c206661696c7338546f6f4d616e795369676e6572730017046c4d6f7265207369676e657273207468616e2072657175697265642e045c4d756c7469736967206d6f64756c65206572726f72732e8508000004080010008908083470616c6c65745f62726964676538427269646765547844657461696c042c426c6f636b4e756d626572011000100118616d6f756e7418011c42616c616e63650001187374617475738d080138427269646765547853746174757300013c657865637574696f6e5f626c6f636b10012c426c6f636b4e756d62657200011c74785f686173682401104832353600008d08083470616c6c65745f62726964676538427269646765547853746174757300011418416273656e740000001c50656e64696e67040008010875380001001846726f7a656e0002002854696d656c6f636b65640003001c48616e646c6564000400009108000004081810009508083470616c6c65745f6272696467651c56657273696f6e00000400080108753800009908083470616c6c65745f627269646765144572726f7204045400013440436f6e74726f6c6c65724e6f74536574000004a45468652062726964676520636f6e74726f6c6c65722061646472657373206973206e6f74207365742e2442616443616c6c6572000104d8546865206f726967696e206973206e6f742074686520636f6e74726f6c6c6572206f72207468652061646d696e20616464726573732e2042616441646d696e00020490546865206f726967696e206973206e6f74207468652061646d696e20616464726573732e284e6f56616c69644364640003048c54686520726563697069656e742044494420686173206e6f2076616c6964204344442e5850726f706f73616c416c726561647948616e646c6564000404390154686520627269646765207472616e73616374696f6e2070726f706f73616c2068617320616c7265616479206265656e2068616e646c656420616e64207468652066756e6473206d696e7465642e30556e617574686f72697a656400050494556e617574686f72697a656420746f20706572666f726d20616e206f7065726174696f6e2e1846726f7a656e000604745468652062726964676520697320616c72656164792066726f7a656e2e244e6f7446726f7a656e0007046454686520627269646765206973206e6f742066726f7a656e2e2046726f7a656e547800080468546865207472616e73616374696f6e2069732066726f7a656e2e484272696467654c696d697452656163686564000904e4546865206964656e746974792773206d696e74656420746f74616c2068617320726561636865642074686520627269646765206c696d69742e204f766572666c6f77000a04ac546865206964656e746974792773206d696e74656420746f74616c20686173206f766572666c6f7765642e384469766973696f6e42795a65726f000b04cc54686520626c6f636b20696e74657276616c206475726174696f6e206973207a65726f2e2043616e6e6f74206469766964652e3054696d656c6f636b65645478000c0478546865207472616e73616374696f6e2069732074696d656c6f636b65642e009d08083870616c6c65745f7374616b696e67345374616b696e674c656467657208244163636f756e74496401001c42616c616e636501180014011473746173680001244163636f756e744964000114746f74616cd101011c42616c616e6365000118616374697665d101011c42616c616e6365000124756e6c6f636b696e67a10801645665633c556e6c6f636b4368756e6b3c42616c616e63653e3e00013c636c61696d65645f726577617264733d0401345665633c457261496e6465783e0000a108000002a50800a508083870616c6c65745f7374616b696e672c556e6c6f636b4368756e6b041c42616c616e636501180008011476616c7565d101011c42616c616e636500010c65726171040120457261496e6465780000a908083870616c6c65745f7374616b696e672c4e6f6d696e6174696f6e7304244163636f756e7449640100000c011c74617267657473910101385665633c4163636f756e7449643e0001307375626d69747465645f696e100120457261496e646578000128737570707265737365641d010110626f6f6c0000ad08083870616c6c65745f7374616b696e6734416374697665457261496e666f0000080114696e646578100120457261496e6465780001147374617274f8012c4f7074696f6e3c7536343e0000b10800000408100000b508083870616c6c65745f7374616b696e673c457261526577617264506f696e747304244163636f756e744964010000080114746f74616c10012c526577617264506f696e74000128696e646976696475616cb908018042547265654d61703c4163636f756e7449642c20526577617264506f696e743e0000b908042042547265654d617008044b010004560110000400bd08000000bd08000002850800c108083870616c6c65745f7374616b696e671c466f7263696e67000110284e6f74466f7263696e6700000020466f7263654e657700010024466f7263654e6f6e650002002c466f726365416c7761797300030000c508000002c90800c908083870616c6c65745f7374616b696e6738556e6170706c696564536c61736808244163636f756e74496401001c42616c616e636501180014012476616c696461746f720001244163636f756e74496400010c6f776e18011c42616c616e63650001186f7468657273cd0801645665633c284163636f756e7449642c2042616c616e6365293e0001247265706f7274657273910101385665633c4163636f756e7449643e0001187061796f757418011c42616c616e63650000cd08000002d10800d10800000408001800d5080000040895011800d9080c3870616c6c65745f7374616b696e6720736c617368696e6734536c617368696e675370616e7300001001287370616e5f696e6465781001245370616e496e6465780001286c6173745f7374617274100120457261496e6465780001486c6173745f6e6f6e7a65726f5f736c617368100120457261496e6465780001147072696f723d0401345665633c457261496e6465783e0000dd080c3870616c6c65745f7374616b696e6720736c617368696e67285370616e5265636f7264041c42616c616e636501180008011c736c617368656418011c42616c616e6365000120706169645f6f757418011c42616c616e63650000e108083870616c6c65745f7374616b696e6738456c656374696f6e526573756c7408244163636f756e74496401001c42616c616e63650118000c013c656c65637465645f73746173686573910101385665633c4163636f756e7449643e0001246578706f7375726573c50101b85665633c284163636f756e7449642c204578706f737572653c4163636f756e7449642c2042616c616e63653e293e00011c636f6d707574658d01013c456c656374696f6e436f6d707574650000e508083870616c6c65745f7374616b696e6738456c656374696f6e537461747573042c426c6f636b4e756d6265720110010818436c6f736564000000104f70656e040010012c426c6f636b4e756d62657200010000e908083870616c6c65745f7374616b696e67645065726d697373696f6e65644964656e7469747950726566730000080138696e74656e6465645f636f756e7410010c75333200013472756e6e696e675f636f756e7410010c7533320000ed08083870616c6c65745f7374616b696e672052656c65617365730001203456315f305f30416e6369656e740000001856325f305f300001001856335f305f300002001856345f305f300003001856355f305f300004001856365f305f300005001856365f305f310006001856375f305f3000070000f108083870616c6c65745f7374616b696e67144572726f720404540001a8344e6f74436f6e74726f6c6c6572000004644e6f74206120636f6e74726f6c6c6572206163636f756e742e204e6f745374617368000104504e6f742061207374617368206163636f756e742e34416c7265616479426f6e64656400020460537461736820697320616c726561647920626f6e6465642e34416c726561647950616972656400030474436f6e74726f6c6c657220697320616c7265616479207061697265642e30456d7074795461726765747300040460546172676574732063616e6e6f7420626520656d7074792e44496e76616c6964536c617368496e64657800050484536c617368207265636f726420696e646578206f7574206f6620626f756e64732e44496e73756666696369656e7456616c7565000604c843616e206e6f7420626f6e6420776974682076616c7565206c657373207468616e206d696e696d756d2062616c616e63652e304e6f4d6f72654368756e6b730007049043616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b732e344e6f556e6c6f636b4368756e6b000804a043616e206e6f74207265626f6e6420776974686f757420756e6c6f636b696e67206368756e6b732e3046756e646564546172676574000904c8417474656d7074696e6720746f2074617267657420612073746173682074686174207374696c6c206861732066756e64732e48496e76616c6964457261546f526577617264000a0458496e76616c69642065726120746f207265776172642e484e6f74536f72746564416e64556e69717565000b04804974656d7320617265206e6f7420736f7274656420616e6420756e697175652e38416c7265616479436c61696d6564000c0409015265776172647320666f72207468697320657261206861766520616c7265616479206265656e20636c61696d656420666f7220746869732076616c696461746f722e7c4f6666636861696e456c656374696f6e4561726c795375626d697373696f6e000d04e0546865207375626d697474656420726573756c74206973207265636569766564206f7574206f6620746865206f70656e2077696e646f772e784f6666636861696e456c656374696f6e5765616b5375626d697373696f6e000e04fc546865207375626d697474656420726573756c74206973206e6f7420617320676f6f6420617320746865206f6e652073746f726564206f6e20636861696e2e4c536e617073686f74556e617661696c61626c65000f04cc54686520736e617073686f742064617461206f66207468652063757272656e742077696e646f77206973206d697373696e672e804f6666636861696e456c656374696f6e426f67757357696e6e6572436f756e74001004ac496e636f7272656374206e756d626572206f662077696e6e65727320776572652070726573656e7465642e6c4f6666636861696e456c656374696f6e426f67757357696e6e65720011085d014f6e65206f6620746865207375626d69747465642077696e6e657273206973206e6f7420616e206163746976652063616e646964617465206f6e20636861696e2028696e646578206973206f7574206f662072616e676534696e20736e617073686f74292e704f6666636861696e456c656374696f6e426f677573436f6d7061637400120859014572726f72207768696c65206275696c64696e67207468652061737369676e6d656e7420747970652066726f6d2074686520636f6d706163742e20546869732063616e2068617070656e20696620616e20696e646578a4697320696e76616c69642c206f72206966207468652077656967687473205f6f766572666c6f775f2e784f6666636861696e456c656374696f6e426f6775734e6f6d696e61746f7200130411014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f7273206973206e6f7420616e20616374697665206e6f6d696e61746f72206f6e20636861696e2e7c4f6666636861696e456c656374696f6e426f6775734e6f6d696e6174696f6e00140449014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e206564676520746f20776869636820746865792068617665206e6f7420766f746564206f6e20636861696e2e844f6666636861696e456c656374696f6e536c61736865644e6f6d696e6174696f6e0015085d014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e2065646765207768696368206973207375626d6974746564206265666f726520746865206c617374206e6f6e2d7a65726f50736c617368206f6620746865207461726765742e744f6666636861696e456c656374696f6e426f67757353656c66566f74650016042101412073656c6620766f7465206d757374206f6e6c79206265206f726967696e617465642066726f6d20612076616c696461746f7220746f204f4e4c59207468656d73656c7665732e644f6666636861696e456c656374696f6e426f677573456467650017044101546865207375626d697474656420726573756c742068617320756e6b6e6f776e206564676573207468617420617265206e6f7420616d6f6e67207468652070726573656e7465642077696e6e6572732e684f6666636861696e456c656374696f6e426f67757353636f7265001804150154686520636c61696d65642073636f726520646f6573206e6f74206d61746368207769746820746865206f6e6520636f6d70757465642066726f6d2074686520646174612e844f6666636861696e456c656374696f6e426f677573456c656374696f6e53697a650019047454686520656c656374696f6e2073697a6520697320696e76616c69642e3843616c6c4e6f74416c6c6f776564001a0445015468652063616c6c206973206e6f7420616c6c6f7765642061742074686520676976656e2074696d652064756520746f207265737472696374696f6e73206f6620656c656374696f6e20706572696f642e58496e636f7272656374536c617368696e675370616e73001b04b0496e636f7272656374206e756d626572206f6620736c617368696e67207370616e732070726f76696465642e34416c7265616479457869737473001c04985065726d697373696f6e65642076616c696461746f7220616c7265616479206578697374732e244e6f74457869737473001d04885065726d697373696f6e65642076616c696461746f72206e6f74206578697374732e204e6f4368616e6765001e04605570646174657320776974682073616d652076616c75652e60496e76616c696456616c696461746f724964656e74697479001f04b8476976656e20706f74656e7469616c2076616c696461746f72206964656e7469747920697320696e76616c69642e68496e76616c696456616c696461746f72436f6d6d697373696f6e0020049c56616c696461746f7220707265667320617265206e6f7420696e2076616c69642072616e67652e6453746173684964656e74697479446f65734e6f744578697374002104d456616c696461746f72206f72206e6f6d696e61746f72207374617368206964656e7469747920646f6573206e6f742065786973742e7053746173684964656e746974794e6f745065726d697373696f6e6564002204b856616c696461746f72207374617368206964656e7469747920776173206e6f74207065726d697373696f6e65642e5453746173684964656e746974794e6f744344446564002304784e6f6d696e61746f7220737461736820776173206e6f742043444465642e64486974496e74656e64656456616c696461746f72436f756e74002404bc52756e6e696e672076616c696461746f7220636f756e74206869742074686520696e74656e64656420636f756e742e98496e74656e646564436f756e744973457863656564696e67436f6e73656e7375734c696d697400250435015768656e2074686520696e74656e646564206e756d626572206f662076616c696461746f727320746f2072756e206973203e3d20322f33206f66206076616c696461746f725f636f756e74602e30426f6e64546f6f536d616c6c002604dc5768656e2074686520616d6f756e7420746f20626520626f6e646564206973206c657373207468616e20604d696e696d756d426f6e64602042616453746174650027043901496e7465726e616c20737461746520686173206265636f6d6520736f6d65686f7720636f7272757074656420616e6420746865206f7065726174696f6e2063616e6e6f7420636f6e74696e75652e38546f6f4d616e795461726765747300280494546f6f206d616e79206e6f6d696e6174696f6e207461726765747320737570706c6965642e244261645461726765740029043d0141206e6f6d696e6174696f6e207461726765742077617320737570706c69656420746861742077617320626c6f636b6564206f72206f7468657277697365206e6f7420612076616c696461746f722e04744572726f7220666f7220746865207374616b696e67206d6f64756c652ef5080c2873705f7374616b696e671c6f6666656e6365384f6666656e636544657461696c7308205265706f727465720100204f6666656e64657201c901000801206f6666656e646572c90101204f6666656e6465720001247265706f7274657273910101345665633c5265706f727465723e0000f9080000040825012800fd08000002010900010900000408000d07000509000004080909280009090c1c73705f636f72651863727970746f244b65795479706549640000040038011c5b75383b20345d00000d090c3870616c6c65745f73657373696f6e1870616c6c6574144572726f7204045400011430496e76616c696450726f6f6600000460496e76616c6964206f776e6572736869702070726f6f662e5c4e6f4173736f63696174656456616c696461746f7249640001049c4e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e344475706c6963617465644b65790002046452656769737465726564206475706c6963617465206b65792e184e6f4b657973000304a44e6f206b65797320617265206173736f63696174656420776974682074686973206163636f756e742e244e6f4163636f756e7400040419014b65792073657474696e67206163636f756e74206973206e6f74206c6976652c20736f206974277320696d706f737369626c6520746f206173736f6369617465206b6579732e04744572726f7220666f72207468652073657373696f6e2070616c6c65742e1109083870616c6c65745f6772616e6470612c53746f726564537461746504044e01100110104c6976650000003050656e64696e6750617573650801307363686564756c65645f61741001044e00011464656c61791001044e000100185061757365640002003450656e64696e67526573756d650801307363686564756c65645f61741001044e00011464656c61791001044e000300001509083870616c6c65745f6772616e6470614c53746f72656450656e64696e674368616e676508044e0110144c696d697400001001307363686564756c65645f61741001044e00011464656c61791001044e0001406e6578745f617574686f7269746965731909016c426f756e646564417574686f726974794c6973743c4c696d69743e000118666f726365642d0601244f7074696f6e3c4e3e0000190910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401ad01045300000400a90101185665633c543e00001d090c3870616c6c65745f6772616e6470611870616c6c6574144572726f7204045400011c2c50617573654661696c65640000080501417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665a42865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e30526573756d654661696c65640001081101417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e277420706175736564a028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e344368616e676550656e64696e67000204e8417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e1c546f6f536f6f6e000304bc43616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e60496e76616c69644b65794f776e65727368697050726f6f66000404310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f660005043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400060415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909210910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401bd01045300000400250901185665633c543e00002509000002bd0100290910346672616d655f737570706f727418747261697473106d69736334577261707065724f7061717565040454012d0900080071040000002d0901045400002d09084070616c6c65745f696d5f6f6e6c696e6564426f756e6465644f70617175654e6574776f726b53746174650c4c506565724964456e636f64696e674c696d697400584d756c746941646472456e636f64696e674c696d697400384164647265737365734c696d6974000008011c706565725f69643109019c5765616b426f756e6465645665633c75382c20506565724964456e636f64696e674c696d69743e00014865787465726e616c5f6164647265737365733509012d015765616b426f756e6465645665633c5765616b426f756e6465645665633c75382c204d756c746941646472456e636f64696e674c696d69743e2c204164647265737365734c696d69740a3e0000310910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401080453000004002801185665633c543e0000350910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e646564566563080454013109045300000400390901185665633c543e000039090000023109003d090c4070616c6c65745f696d5f6f6e6c696e651870616c6c6574144572726f7204045400010828496e76616c69644b6579000004604e6f6e206578697374656e74207075626c6963206b65792e4c4475706c696361746564486561727462656174000104544475706c696361746564206865617274626561742e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a0909094109082c70616c6c65745f7375646f144572726f720404540001042c526571756972655375646f0000047c53656e646572206d75737420626520746865205375646f206163636f756e7404644572726f7220666f7220746865205375646f206d6f64756c654509083070616c6c65745f6173736574485469636b6572526567697374726174696f6e0404550120000801146f776e65727c01284964656e746974794964000118657870697279f801244f7074696f6e3c553e00004909083070616c6c65745f6173736574345365637572697479546f6b656e0000100130746f74616c5f737570706c7918011c42616c616e63650001246f776e65725f6469647c01284964656e746974794964000124646976697369626c651d010110626f6f6c00012861737365745f74797065e901012441737365745479706500004d0900000408a47c00510900000408a4e501005509000004087ca4005909083070616c6c65745f61737365745841737365744f776e65727368697052656c6174696f6e00010c204e6f744f776e65640000002c5469636b65724f776e65640001002841737365744f776e6564000200005d0900000408a40502006109083070616c6c65745f617373657464436c61737369635469636b6572526567697374726174696f6e00000801246574685f6f776e65723502013c457468657265756d4164647265737300012869735f637265617465641d010110626f6f6c00006509000004087c7c00690900000408a48107006d0900000408a4490200710900000408a44d02007509083070616c6c65745f61737365741c56657273696f6e00000400080108753800007909083070616c6c65745f6173736574144572726f7204045400019830556e617574686f72697a65640000046c5468652075736572206973206e6f7420617574686f72697a65642e3c416c72656164794172636869766564000104805768656e20657874656e73696f6e20616c72656164792061726368697665642e44416c7265616479556e41726368697665640002048c5768656e20657874656e73696f6e20616c726561647920756e2d61726368697665642e5c457874656e73696f6e416c726561647950726573656e74000304805768656e20657874656e73696f6e20697320616c72656164792061646465642e4c4173736574416c7265616479437265617465640004048c54686520746f6b656e2068617320616c7265616479206265656e20637265617465642e345469636b6572546f6f4c6f6e6700050490546865207469636b6572206c656e677468206973206f76657220746865206c696d69742e385469636b65724e6f7441736369690006049c546865207469636b657220686173206e6f6e2d61736369692d656e636f6465642070617274732e5c5469636b6572416c726561647952656769737465726564000704c4546865207469636b657220697320616c7265616479207265676973746572656420746f20736f6d656f6e6520656c73652e54546f74616c537570706c7941626f76654c696d69740008049054686520746f74616c20737570706c792069732061626f766520746865206c696d69742e2c4e6f537563684173736574000904384e6f207375636820746f6b656e2e34416c726561647946726f7a656e000a047054686520746f6b656e20697320616c72656164792066726f7a656e2e284e6f74416e4f776e6572000b04984e6f7420616e206f776e6572206f662074686520746f6b656e206f6e20457468657265756d2e3c42616c616e63654f766572666c6f77000c04a8416e206f766572666c6f77207768696c652063616c63756c6174696e67207468652062616c616e63652e4c546f74616c537570706c794f766572666c6f77000d04bc416e206f766572666c6f77207768696c652063616c63756c6174696e672074686520746f74616c20737570706c792e48496e76616c69644772616e756c6172697479000e045c416e20696e76616c6964206772616e756c61726974792e244e6f7446726f7a656e000f0464546865206173736574206d7573742062652066726f7a656e2e3c496e76616c69645472616e73666572001004845472616e736665722076616c69646174696f6e20636865636b206661696c65642e4c496e73756666696369656e7442616c616e6365001104945468652073656e6465722062616c616e6365206973206e6f742073756666696369656e742e544173736574416c7265616479446976697369626c650012047c54686520746f6b656e20697320616c726561647920646976697369626c652e784d6178696d756d544d457874656e73696f6e4c696d69745265616368656400130499014e756d626572206f66205472616e73666572204d616e6167657220657874656e73696f6e7320617474616368656420746f20616e20617373657420697320657175616c20746f204d61784e756d6265724f66544d457874656e73696f6e466f7241737365742e70496e636f6d70617469626c65457874656e73696f6e56657273696f6e001404dc476976656e20736d61727420657874656e73696f6e206973206e6f7420636f6d70617469626c652077697468207468652061737365742e60496e76616c6964457468657265756d5369676e617475726500150494416e20696e76616c696420457468657265756d206045636473615369676e6174757265602e4c4e6f53756368436c61737369635469636b65720016049854686520676976656e207469636b6572206973206e6f74206120636c6173736963206f6e652e645469636b6572526567697374726174696f6e457870697265640017048c526567697374726174696f6e206f66207469636b65722068617320657870697265642e5053656e64657253616d6541735265636569766572001804845472616e736665727320746f2073656c6620617265206e6f7420616c6c6f776564244e6f53756368446f630019048854686520676976656e20446f63756d656e7420646f6573206e6f742065786973742e704d61784c656e6774684f6641737365744e616d654578636565646564001a04bc4d6178696d756d206c656e677468206f66206173736574206e616d6520686173206265656e2065786365656465642e8446756e64696e67526f756e644e616d654d61784c656e6774684578636565646564001b04ec4d6178696d756d206c656e677468206f66207468652066756e64696e6720726f756e64206e616d6520686173206265656e2065786365656465642e58496e76616c696441737365744964656e746966696572001c048c536f6d65206041737365744964656e746966696572602077617320696e76616c69642e84496e766573746f72556e697175656e657373436c61696d4e6f74416c6c6f776564001d04e8496e766573746f7220556e697175656e65737320636c61696d7320617265206e6f7420616c6c6f77656420666f7220746869732061737365742e60496e76616c6964437573746f6d4173736574547970654964001e0470496e76616c69642060437573746f6d4173736574547970654964602e8841737365744d657461646174614e616d654d61784c656e6774684578636565646564001f0405014d6178696d756d206c656e677468206f6620746865206173736574206d657461646174612074797065206e616d6520686173206265656e2065786365656465642e8c41737365744d6574616461746156616c75654d61784c656e6774684578636565646564002004f44d6178696d756d206c656e677468206f6620746865206173736574206d657461646174612076616c756520686173206265656e2065786365656465642e9441737365744d65746164617461547970654465664d61784c656e67746845786365656465640021041d014d6178696d756d206c656e677468206f6620746865206173736574206d65746164617461207479706520646566696e6974696f6e20686173206265656e2065786365656465642e6441737365744d657461646174614b657949734d697373696e67002204784173736574204d65746164617461206b6579206973206d697373696e672e6841737365744d6574616461746156616c756549734c6f636b65640023047c4173736574204d657461646174612076616c7565206973206c6f636b65642e8841737365744d657461646174614c6f63616c4b6579416c7265616479457869737473002404cc4173736574204d65746164617461204c6f63616c207479706520616c72656164792065786973747320666f722061737365742e8c41737365744d65746164617461476c6f62616c4b6579416c7265616479457869737473002504a84173736574204d6574616461746120476c6f62616c207479706520616c7265616479206578697374732e007d090000040875027c0081090c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e1c56657273696f6e000004000801087538000085090c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e144572726f720404540001383043414e6f7442656e65666974000004d441206361706974616c20646973747269627574696f6e20776173206d61646520666f722061206e6f6e2d62656e656669742043412e34416c7265616479457869737473000104a84120646973747269627574696f6e20616c72656164792065786973747320666f7220746869732043412e4c4578706972794265666f72655061796d656e7400020829014120646973747269627574696f6e732070726f766964656420657870697279206461746520776173207374726963746c79206265666f726520697473207061796d656e7420646174652e2101496e206f7468657220776f7264732c2065766572797468696e6720746f206469737472696275746520776f756c6420696d6d6564696174656c7920626520666f726665697465642e44446973747269627574696e674173736574000308f043757272656e63792074686174206973206469737472696275746564206973207468652073616d65206173207468652043412773207469636b65722e690143616c6c696e67206167656e7420697320617474656d7074696e67206120666f726d206f662073746f636b2073706c69742c207768696368206973206e6f742077686174207468652065787472696e73696320697320666f722e44486f6c646572416c726561647950616964000404d454686520746f6b656e20686f6c6465722068617320616c7265616479206265656e20706169642074686569722062656e656669742e484e6f53756368446973747269627574696f6e000504c441206361706974616c20646973747269627574696f6e20646f65736e277420657869737420666f7220746869732043412e5843616e6e6f74436c61696d4265666f726553746172740006046101446973747269627574696f6e20616c6c6f746d656e742063616e6e6f7420626520636c61696d6564206173207468652063757272656e742074696d65206973206265666f72652073746172742d6f662d7061796d656e742e5843616e6e6f74436c61696d41667465724578706972790007046901446973747269627574696f6e27732065787069727920686173207061737365642e204449442063616e6e6f7420636c61696d20616e796d6f726520616e642068617320666f72666569746564207468652062656e65666974732e8042616c616e6365506572536861726550726f647563744f766572666c6f77656400080429014d756c7469706c69636174696f6e206f66207468652062616c616e636520776974682074686520706572207368617265207061796f757420616d6f756e74206f766572666c6f7765642e584e6f74446973747269627574696f6e43726561746f72000904c0444944206973206e6f7420746865206f6e652077686f20637265617465642074686520646973747269627574696f6e2e40416c72656164795265636c61696d6564000a04d44449442077686f20637265617465642074686520646973747269627574696f6e20616c726561647920646964207265636c61696d2e284e6f7445787069726564000b04f0446973747269627574696f6e20686164206e6f742065787069726564207965742c206f722074686572652773206e6f2065787069727920646174652e4c446973747269627574696f6e53746172746564000c0401014120646973747269627574696f6e20686173206265656e206163746976617465642c20617320607061796d656e745f6174203c3d206e6f776020686f6c64732e6c496e73756666696369656e7452656d61696e696e67416d6f756e74000d042d014120646973747269627574696f6e2068617320696e73756666696369656e742072656d61696e696e6720616d6f756e74206f662063757272656e637920746f20646973747269627574652e00890900000408a48d02008d090000040889097c0091090000028d02009509000002910200990900000408a4a102009d090c3070616c6c65745f617373657428636865636b706f696e741c56657273696f6e0000040008010875380000a1090c3070616c6c65745f617373657428636865636b706f696e74144572726f72040454000114384e6f537563685363686564756c65000004cc4120636865636b706f696e74207363686564756c6520646f6573206e6f7420657869737420666f72207468652061737365742e505363686564756c654e6f7452656d6f7661626c650001041d014120636865636b706f696e74207363686564756c65206973206e6f742072656d6f7661626c6520617320607265665f636f756e74287363686564756c655f696429203e2030602e744661696c6564546f436f6d707574654e657874436865636b706f696e74000208984661696c656420746f20636f6d7075746520746865206e65787420636865636b706f696e742ed0546865207363686564756c6520646f6573206e6f74206861766520616e79207570636f6d696e6720636865636b706f696e74732e605363686564756c654475726174696f6e546f6f53686f7274000304bc546865206475726174696f6e206f662061207363686564756c6520706572696f6420697320746f6f2073686f72742e4c5363686564756c6573546f6f436f6d706c6578000408d054686520736574206f66207363686564756c65732074616b656e20746f6765746865722061726520746f6f20636f6d706c65782ef8466f72206578616d706c652c20746865792061726520746f6f206d616e792c206f722074686579206f636375727320746f6f206672657175656e746c792e00a5090c4c706f6c796d6573685f7072696d69746976657348636f6d706c69616e63655f6d616e616765723c4173736574436f6d706c69616e636500000801187061757365641d010110626f6f6c000130726571756972656d656e7473d50201685665633c436f6d706c69616e6365526571756972656d656e743e0000a909086470616c6c65745f636f6d706c69616e63655f6d616e616765721c56657273696f6e0000040008010875380000ad09086470616c6c65745f636f6d706c69616e63655f6d616e61676572144572726f7204045400011830556e617574686f72697a65640000045c55736572206973206e6f7420617574686f72697a65642e2c4469644e6f74457869737400010434446964206e6f7420657869737478496e76616c6964436f6d706c69616e6365526571756972656d656e7449640002049c436f6d706c69616e636520726571756972656d656e7420696420646f65736e277420657869737484496e636f72726563744f7065726174696f6e4f6e547275737465644973737565720003049c4973737565722065786973742062757420747279696e6720746f2061646420697420616761696e7c4475706c6963617465436f6d706c69616e6365526571756972656d656e7473000404b0546865726520617265206475706c696361746520636f6d706c69616e636520726571756972656d656e74732e7c436f6d706c69616e6365526571756972656d656e74546f6f436f6d706c6578000504110154686520776f7273742063617365207363656e6172696f206f662074686520636f6d706c69616e636520726571756972656d656e7420697320746f6f20636f6d706c657800b10900000408a4790200b509086070616c6c65745f636f72706f726174655f616374696f6e731c56657273696f6e0000040008010875380000b909086070616c6c65745f636f72706f726174655f616374696f6e73144572726f7204045400013048417574684e6f744341415472616e73666572000004050154686520617574686f72697a6174696f6e2074797065206973206e6f7420746f207472616e73666572207468652043414120746f20616e6f74686572204449442e3844657461696c73546f6f4c6f6e67000104d8546865206064657461696c7360206f66206120434120657863656564656420746865206d617820616c6c6f776564206c656e6774682e3c4475706c69636174654469645461780002082101412077697468686f6c64696e6720746178206f7665727269646520666f72206120676976656e204449442077617320737065636966696564206d6f7265207468616e206f6e63652e050154686520636861696e207265667573656420746f206d616b6520612063686f6963652c20616e642068656e63652074686572652077617320616e206572726f722e3c546f6f4d616e794469645461786573000304c8546f6f206d616e792077697468686f6c64696e6720746178206f76657272696465732077657265207370656369666965642e40546f6f4d616e79546172676574496473000404e4546f6f206d616e79206964656e74697469657320696e20605461726765744964656e746974696573602077657265207370656369666965642e484e6f53756368436865636b706f696e74496400050405014f6e204341206372656174696f6e2c206120636865636b706f696e74204944207761732070726f766964656420776869636820646f65736e27742065786973742e204e6f537563684341000604a44120434120776974682074686520676976656e2060434149646020646964206e6f742065786973742e304e6f5265636f7264446174650007048854686520434120646964206e6f7420686176652061207265636f726420646174652e505265636f7264446174654166746572537461727400080cdc412043412773207265636f7264206461746520776173207374726963746c792061667465722074686520227374617274222074696d652c8c7768657265202273746172742220697320636f6e7465787420646570656e64656e742e8101466f72206578616d706c652c20697420636f756c6420626520746865207374617274206f6620612062616c6c6f742c206f72207468652073746172742d6f662d7061796d656e7420696e206361706974616c20646973747269627574696f6e2e5c4465636c4461746541667465725265636f726444617465000904ec412043412773206465636c61726174696f6e206461746520776173207374726963746c7920616674657220697473207265636f726420646174652e404465636c44617465496e467574757265000a04b4412043412773206465636c61726174696f6e2064617465206f636375727320696e20746865206675747572652e3c4e6f74546172676574656442794341000b046c434120646f6573206e6f742074617267657420746865204449442e00bd090000021800c1090c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74144572726f720404540001382c43414e6f744e6f74696365000004e04120636f72706f726174652062616c6c6f7420776173206d61646520666f722061206e6f6e20604973737565724e6f74696365602043412e34416c7265616479457869737473000104b84120636f72706f726174652062616c6c6f7420616c72656164792065786973747320666f7220746869732043412e304e6f5375636842616c6c6f74000204b44120636f72706f726174652062616c6c6f7420646f65736e277420657869737420666f7220746869732043412e3453746172744166746572456e6400030411014120636f72706f726174652062616c6c6f7427732073746172742074696d6520776173207374726963746c79206166746572207468652062616c6c6f74277320656e642e2c4e6f774166746572456e640004040d014120636f72706f726174652062616c6c6f74277320656e642074696d6520776173207374726963746c79206265666f7265207468652063757272656e742074696d652e5c4e756d6265724f6643686f696365734f766572666c6f770005043901496620736f6d65206d6f74696f6e20696e206120636f72706f726174652062616c6c6f7420686173206d6f72652063686f69636573207468616e20776f756c642066697420696e2060753136602e50566f74696e67416c7265616479537461727465640006040101566f74696e67207374617274656420616c72656164792e20416d656e64696e6720612062616c6c6f74206973206e6f206c6f6e67657220706f737369626c652e40566f74696e674e6f745374617274656400070468566f74696e67206861736e27742073746172746564207965742e48566f74696e67416c7265616479456e64656400080454566f74696e6720656e64656420616c72656164792e3857726f6e67566f7465436f756e74000904150150726f7669646564206c697374206f662062616c616e63657320646f6573206e6f74206d617463682074686520746f74616c206e756d626572206f662063686f696365732e44496e73756666696369656e74566f746573000a043d01566f74696e6720706f7765722075736564206279206120444944206f6e2061206d6f74696f6e2065786365656473207468617420776869636820697320617661696c61626c6520746f207468656d2e444e6f5375636852435646616c6c6261636b000b04bc546865205243562066616c6c6261636b206f6620736f6d652063686f69636520646f6573206e6f742065786973742e3052435653656c664379636c65000c04b4546865205243562066616c6c6261636b20706f696e747320746f20746865206f726967696e2063686f6963652e345243564e6f74416c6c6f776564000d048c524356206973206e6f7420616c6c6f77656420666f7220746869732062616c6c6f742e00c509084870616c6c65745f7065726d697373696f6e73144572726f7204045400010448556e617574686f72697a656443616c6c6572000004ec5468652063616c6c6572206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e00c909082c70616c6c65745f7069707330506970734d65746164617461042c426c6f636b4e756d626572011000180108696451030114506970496400010c75726c5502012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e550301584f7074696f6e3c5069704465736372697074696f6e3e000128637265617465645f617410012c426c6f636b4e756d62657200014c7472616e73616374696f6e5f76657273696f6e10010c7533320001186578706972794501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0000cd090000040851030000d109082c70616c6c65745f706970732c4465706f736974496e666f04244163636f756e7449640100000801146f776e65720001244163636f756e744964000118616d6f756e7418011c42616c616e63650000d509082c70616c6c65745f706970730c506970082050726f706f73616c01e505244163636f756e744964010000100108696451030114506970496400012070726f706f73616ce505012050726f706f73616c00011473746174656103013450726f706f73616c537461746500012070726f706f7365724903014c50726f706f7365723c4163636f756e7449643e0000d909082c70616c6c65745f7069707330566f74696e67526573756c740000100128617965735f636f756e7410010c753332000128617965735f7374616b6518011c42616c616e63650001286e6179735f636f756e7410010c7533320001286e6179735f7374616b6518011c42616c616e63650000dd09082c70616c6c65745f7069707310566f7465000008001d010110626f6f6c000018011c42616c616e63650000e109082c70616c6c65745f7069707340536e617073686f744d65746164617461082c426c6f636b4e756d6265720110244163636f756e7449640100000c0128637265617465645f617410012c426c6f636b4e756d62657200011c6d6164655f62790001244163636f756e744964000108696465030128536e617073686f7449640000e509082c70616c6c65745f706970731c56657273696f6e0000040008010875380000e909082c70616c6c65745f70697073144572726f720404540001488452657363686564756c654e6f74427952656c65617365436f6f7264696e61746f7200000431014f6e6c79207468652047432072656c6561736520636f6f7264696e61746f7220697320616c6c6f77656420746f2072657363686564756c652070726f706f73616c20657865637574696f6e2e404e6f7446726f6d436f6d6d756e697479000108ec54686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2ecc5468652070726f706f73616c206d7573742062652066726f6d2074686520636f6d6d756e6974792c206275742069736e27742e384e6f744279436f6d6d6974746565000208ec54686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2eb45468652070726f706f73616c206d75737420626520627920636f6d6d756e6974792c206275742069736e27742e44546f6f4d616e794163746976655069707300030829015468652063757272656e74206e756d626572206f6620616374697665202870656e64696e67207c207363686564756c65642920504950732065786365656420746865206d6178696d756d9c616e64207468652070726f706f73616c206973206e6f74206279206120636f6d6d69747465652e40496e636f72726563744465706f7369740004049c50726f706f7365722073706563696669657320616e20696e636f7272656374206465706f7369744c496e73756666696369656e744465706f736974000504b450726f706f7365722063616e2774206166666f726420746f206c6f636b206d696e696d756d206465706f736974384e6f5375636850726f706f73616c000604705468652070726f706f73616c20646f6573206e6f742065786973742e4c4e6f7441436f6d6d69747465654d656d626572000704844e6f742070617274206f6620676f7665726e616e636520636f6d6d69747465652e60496e76616c6964467574757265426c6f636b4e756d626572000804d85768656e206120626c6f636b206e756d626572206973206c657373207468616e2063757272656e7420626c6f636b206e756d6265722e544e756d6265724f66566f74657345786365656465640009047c5768656e206e756d626572206f6620766f746573206f766572666c6f77732e685374616b65416d6f756e744f66566f7465734578636565646564000a04985768656e207374616b6520616d6f756e74206f66206120766f7465206f766572666c6f77732e584d697373696e6743757272656e744964656e74697479000b044c4d697373696e672063757272656e742044494458496e636f727265637450726f706f73616c5374617465000c049050726f706f73616c206973206e6f7420696e2074686520636f72726563742073746174653443616e6e6f74536b6970506970000d04fc5768656e20656e616374696e6720736e617073686f7420726573756c74732c20616e20756e736b69707061626c65205049502077617320736b69707065642e58536e617073686f74526573756c74546f6f4c61726765000e041501547269656420746f20656e61637420726573756c747320666f722074686520736e617073686f74207175657565206f766572666c6f77696e6720697473206c656e6774682e48536e617073686f7449644d69736d61746368000f045d01547269656420746f20656e61637420726573756c7420666f7220504950207769746820696420646966666572656e742066726f6d20746861742061742074686520706f736974696f6e20696e207468652071756575652e705363686564756c656450726f706f73616c446f65736e744578697374001004fc457865637574696f6e206f662061207363686564756c65642070726f706f73616c206661696c65642062656361757365206974206973206d697373696e672e6c50726f706f73616c4e6f74496e5363686564756c65645374617465001104fc412070726f706f73616c2074686174206973206e6f7420696e2061207363686564756c65642073746174652063616e6e6f742062652065786563757465642e00ed09000004087ce400f109000004087c890300f50900000408dca400f909000004087cdc00fd09084070616c6c65745f706f7274666f6c696f1c56657273696f6e0000040008010875380000010a084070616c6c65745f706f7274666f6c696f144572726f7204045400012454506f7274666f6c696f446f65734e6f7445786973740000047054686520706f7274666f6c696f20646f65736e27742065786973742e70496e73756666696369656e74506f7274666f6c696f42616c616e63650001049c496e73756666696369656e742062616c616e636520666f722061207472616e73616374696f6e2e6844657374696e6174696f6e497353616d65506f7274666f6c696f000204e854686520736f7572636520616e642064657374696e6174696f6e20706f7274666f6c696f732073686f756c6420626520646966666572656e742e64506f7274666f6c696f4e616d65416c7265616479496e557365000304310154686520706f7274666f6c696f20636f756c646e27742062652072656e616d65642062656361757365207468652063686f73656e206e616d6520697320616c726561647920696e207573652e945365636f6e646172794b65794e6f74417574686f72697a6564466f72506f7274666f6c696f000404fc546865207365636f6e64617279206b6579206973206e6f7420617574686f72697a656420746f206163636573732074686520706f7274666f6c696f2873292e54556e617574686f72697a6564437573746f6469616e000504f454686520706f72666f6c696f277320637573746f6479206973207769746820736f6d656f6e65206f74686572207468616e207468652063616c6c65722e60496e73756666696369656e74546f6b656e734c6f636b6564000604bc43616e206e6f7420756e6c6f636b206d6f726520746f6b656e73207468616e207768617420617265206c6f636b656444506f7274666f6c696f4e6f74456d707479000704bc54686520706f7274666f6c696f207374696c6c2068617320736f6d652061737365742062616c616e6365206c6566746c446966666572656e744964656e74697479506f7274666f6c696f73000804b454686520706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e74697469657300050a084c70616c6c65745f70726f746f636f6c5f666565144572726f7204045400010c68496e73756666696369656e744163636f756e7442616c616e6365000004b0496e73756666696369656e74206163636f756e742062616c616e636520746f2070617920746865206665652e4c556e48616e646c6564496d62616c616e636573000104884e6f742061626c6520746f2068616e646c65642074686520696d62616c616e63657368496e73756666696369656e745375627369647942616c616e6365000204b0496e73756666696369656e7420737562736964792062616c616e636520746f2070617920746865206665652e00090a0000020d0a000d0a04184f7074696f6e04045401110a0108104e6f6e6500000010536f6d650400110a0000010000110a084070616c6c65745f7363686564756c65722c5363686564756c65645632101043616c6c01e5052c426c6f636b4e756d62657201103450616c6c6574734f726967696e01150a244163636f756e7449640100001401206d617962655f69646502013c4f7074696f6e3c5665633c75383e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6ce505011043616c6c0001386d617962655f706572696f646963dd0701944f7074696f6e3c7363686564756c653a3a506572696f643c426c6f636b4e756d6265723e3e0001186f726967696e150a013450616c6c6574734f726967696e0000150a0c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d65304f726967696e43616c6c65720001141873797374656d0400190a01746672616d655f73797374656d3a3a4f726967696e3c52756e74696d653e00000044506f6c796d657368436f6d6d697474656504001d0a01f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365313e00090048546563686e6963616c436f6d6d69747465650400210a01f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365333e000b004055706772616465436f6d6d69747465650400250a01f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365343e000d0010566f69640400290a01110173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a566f696400040000190a08306672616d655f73797374656d245261774f726967696e04244163636f756e7449640100010c10526f6f74000000185369676e656404000001244163636f756e744964000100104e6f6e65000200001d0a084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449013901010420456e646f7273656400000000210a084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449015501010420456e646f7273656400000000250a084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449016501010420456e646f7273656400000000290a081c73705f636f726510566f6964000100002d0a084070616c6c65745f7363686564756c65722052656c656173657300010808563100000008563200010000310a0c4070616c6c65745f7363686564756c65721870616c6c6574144572726f72040454000110404661696c6564546f5363686564756c65000004644661696c656420746f207363686564756c6520612063616c6c204e6f74466f756e640001047c43616e6e6f742066696e6420746865207363686564756c65642063616c6c2e5c546172676574426c6f636b4e756d626572496e50617374000204a4476976656e2074617267657420626c6f636b206e756d62657220697320696e2074686520706173742e4852657363686564756c654e6f4368616e6765000304f052657363686564756c65206661696c6564206265636175736520697420646f6573206e6f74206368616e6765207363686564756c65642074696d652e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909350a084470616c6c65745f736574746c656d656e741456656e7565000008011c63726561746f727c01284964656e74697479496400012876656e75655f74797065b103012456656e7565547970650000390a00000408a903b503003d0a00000408a9030000410a084470616c6c65745f736574746c656d656e742c496e737472756374696f6e08184d6f6d656e7401202c426c6f636b4e756d6265720110001c0138696e737472756374696f6e5f6964b5030134496e737472756374696f6e496400012076656e75655f6964a903011c56656e75654964000118737461747573450a0144496e737472756374696f6e53746174757300013c736574746c656d656e745f74797065b903016c536574746c656d656e74547970653c426c6f636b4e756d6265723e000128637265617465645f6174f801384f7074696f6e3c4d6f6d656e743e00012874726164655f64617465f801384f7074696f6e3c4d6f6d656e743e00012876616c75655f64617465f801384f7074696f6e3c4d6f6d656e743e0000450a084470616c6c65745f736574746c656d656e7444496e737472756374696f6e53746174757300010c1c556e6b6e6f776e0000001c50656e64696e67000100184661696c656400020000490a00000408b503c503004d0a084470616c6c65745f736574746c656d656e74244c656753746174757304244163636f756e7449640100010c4050656e64696e67546f6b656e4c6f636b00000040457865637574696f6e50656e64696e6700010050457865637574696f6e546f4265536b697070656408000001244163636f756e744964000020010c75363400020000510a00000408b503dc00550a084470616c6c65745f736574746c656d656e744441666669726d6174696f6e53746174757300010c1c556e6b6e6f776e0000001c50656e64696e670001002041666669726d656400020000590a00000408dcb503005d0a00000408a4a90300610a084470616c6c65745f736574746c656d656e741c56657273696f6e0000040008010875380000650a084470616c6c65745f736574746c656d656e74144572726f7204045400016430496e76616c696456656e75650000045456656e756520646f6573206e6f742065786973742e30556e617574686f72697a6564000104a853656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e3c4e6f50656e64696e6741666669726d000204d04e6f2070656e64696e672061666669726d6174696f6e20666f72207468652070726f766964656420696e737472756374696f6e2e58496e737472756374696f6e4e6f7441666669726d656400030488496e737472756374696f6e20686173206e6f74206265656e2061666669726d65642e54496e737472756374696f6e4e6f7450656e64696e67000404b850726f766964656420696e737472756374696f6e206973206e6f742070656e64696e6720657865637574696f6e2e50496e737472756374696f6e4e6f744661696c6564000504b850726f766964656420696e737472756374696f6e206973206e6f74206661696c696e6720657865637574696f6e2e344c65674e6f7450656e64696e670006049850726f7669646564206c6567206973206e6f742070656e64696e6720657865637574696f6e2e48556e617574686f72697a65645369676e6572000704985369676e6572206973206e6f7420617574686f72697a6564206279207468652076656e75652e5452656365697074416c7265616479436c61696d6564000804545265636569707420616c726561647920757365642e44526563656970744e6f74436c61696d65640009045452656365697074206e6f742075736564207965742e44556e617574686f72697a656456656e7565000a04a456656e756520646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e484661696c6564546f4c6f636b546f6b656e73000b0421015768696c652061666669726d696e6720746865207472616e736665722c2073797374656d206661696c656420746f206c6f636b207468652061737365747320696e766f6c7665642e44496e737472756374696f6e4661696c6564000c0478496e737472756374696f6e206661696c656420746f20657865637574652e5c496e737472756374696f6e4461746573496e76616c6964000d0474496e737472756374696f6e2068617320696e76616c696420646174657370496e737472756374696f6e536574746c65426c6f636b506173736564000e04a8496e737472756374696f6e27732074617267657420736574746c6520626c6f636b20726561636865642e40496e76616c69645369676e6174757265000f04784f6666636861696e207369676e617475726520697320696e76616c69642e4853616d6553656e64657252656365697665720010048453656e64657220616e6420726563656976657220617265207468652073616d652e44506f7274666f6c696f4d69736d617463680011042501506f7274666f6c696f20696e207265636569707420646f6573206e6f74206d61746368207769746820706f7274666f6c696f732070726f76696465642062792074686520757365722e44536574746c654f6e50617374426c6f636b00120461015468652070726f766964656420736574746c656d656e7420626c6f636b206e756d62657220697320696e20746865207061737420616e642063616e6e6f74206265207573656420627920746865207363686564756c65722e4c4e6f506f7274666f6c696f50726f76696465640013043d01506f7274666f6c696f20626173656420616374696f6e732072657175697265206174206c65617374206f6e6520706f7274666f6c696f20746f2062652070726f766964656420617320696e7075742e6c556e657870656374656441666669726d6174696f6e53746174757300140445015468652063757272656e7420696e737472756374696f6e2061666669726d6174696f6e2073746174757320646f6573206e6f7420737570706f7274207468652072657175657374656420616374696f6e2e404661696c6564546f5363686564756c650015048c5363686564756c696e67206f6620616e20696e737472756374696f6e206661696c732e404c6567436f756e74546f6f536d616c6c001604a5014c65677320636f756e742073686f756c64206d61746368657320776974682074686520746f74616c206e756d626572206f66206c65677320696e20776869636820676976656e20706f7274666f6c696f20616374206173206066726f6d5f706f7274666f6c696f602e48556e6b6e6f776e496e737472756374696f6e00170474496e737472756374696f6e2073746174757320697320756e6b6e6f776e64496e737472756374696f6e486173546f6f4d616e794c656773001804c44d6178696d756d206c65677320746861742063616e20626520696e20612073696e676c6520696e737472756374696f6e2e04844572726f727320666f722074686520536574746c656d656e74206d6f64756c652e690a000004086d0af503006d0a0c4c706f6c796d6573685f7072696d697469766573287374617469737469637328537461743173744b657900000801146173736574d5030128417373657453636f7065000124737461745f74797065dd03012053746174547970650000710a0c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e63655c41737365745472616e73666572436f6d706c69616e636500000801187061757365641d010110626f6f6c000130726571756972656d656e74730108016c42547265655365743c5472616e73666572436f6e646974696f6e3e0000750a0000040811047c00790a084470616c6c65745f737461746973746963731c56657273696f6e00000400080108753800007d0a084470616c6c65745f73746174697374696373144572726f720404540001183c496e76616c69645472616e73666572000004545472616e73666572206e6f7420616c6c6f7765642e3c53746174547970654d697373696e67000104605374617454797065206973206e6f7420656e61626c65642e8453746174547970654e656564656442795472616e73666572436f6e646974696f6e000204a05374617454797065206973206e6565646564206279205472616e73666572436f6e646974696f6e2e6443616e6e6f7452656d6f76655374617454797065496e557365000304a84120537461747479706520697320696e2075736520616e642063616e27742062652072656d6f7665642e5053746174547970654c696d697452656163686564000404f4546865206c696d6974206f662053746174547970657320616c6c6f77656420666f7220616e20617373657420686173206265656e20726561636865642e745472616e73666572436f6e646974696f6e4c696d6974526561636865640005041901546865206c696d6974206f66205472616e73666572436f6e646974696f6e7320616c6c6f77656420666f7220616e20617373657420686173206265656e20726561636865642e046453746174697374696373206d6f64756c65206572726f72732e810a00000408a41d0400850a082870616c6c65745f73746f144572726f7204045400013030556e617574686f72697a6564000004a853656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e204f766572666c6f770001048c416e2061726974686d65746963206f7065726174696f6e206f766572666c6f7765642e6c496e73756666696369656e74546f6b656e7352656d61696e696e67000204804e6f7420656e6f75676820746f6b656e73206c65667420666f722073616c652e4846756e647261697365724e6f74466f756e640003045446756e64726169736572206e6f7420666f756e642e4446756e647261697365724e6f744c6976650004049c46756e64726169736572206973206569746865722066726f7a656e206f722073746f707065642e4046756e64726169736572436c6f736564000504ac46756e6472616973657220686173206265656e20636c6f7365642f73746f7070656420616c72656164792e4446756e6472616973657245787069726564000604d0496e746572616374696e67207769746820612066756e6472616973657220706173742074686520656e6420604d6f6d656e74602e30496e76616c696456656e756500070468416e20696e76616c69642076656e75652070726f76696465642e44496e76616c6964507269636554696572730008042501416e20696e646976696475616c20707269636520746965722077617320696e76616c6964206f72206120736574206f662070726963652074696572732077617320696e76616c69642e54496e76616c69644f66666572696e6757696e646f770009045d0157696e646f77202873746172742074696d652c20656e642074696d65292068617320696e76616c696420706172616d65746572732c20652e672073746172742074696d6520697320616674657220656e642074696d652e404d617850726963654578636565646564000a04bc5072696365206f662074686520696e766573746d656e7420657863656564656420746865206d61782070726963652e58496e766573746d656e74416d6f756e74546f6f4c6f77000b04e8496e766573746d656e7420616d6f756e74206973206c6f776572207468616e206d696e696d756d20696e766573746d656e7420616d6f756e742e04844572726f727320666f722074686520536574746c656d656e74206d6f64756c652e890a083c70616c6c65745f7472656173757279144572726f720404540001044c496e73756666696369656e7442616c616e63650000047850726f706f73657227732062616c616e636520697320746f6f206c6f772e04784572726f7220666f7220746865207472656173757279206d6f64756c652e8d0a083870616c6c65745f7574696c697479144572726f7204045400010c40496e76616c69645369676e6174757265000004744f6666636861696e207369676e617475726520697320696e76616c6964405461726765744364644d697373696e670001048054617267657420646f6573206e6f74206861766520612076616c69642043444430496e76616c69644e6f6e636500020c6850726f7669646564206e6f6e63652077617320696e76616c696411014966207468652070726f7669646564206e6f6e6365203c2063757272656e74206e6f6e63652c207468652063616c6c2077617320616c72656164792065786563757465645d014966207468652070726f7669646564206e6f6e6365203e2063757272656e74206e6f6e63652c207468652063616c6c287329206265666f7265207468652063757272656e74206661696c656420746f206578656375746500910a082c70616c6c65745f62617365144572726f720404540001081c546f6f4c6f6e6700000880457863656564656420612067656e65726963206c656e677468206c696d69742e1d01546865206c696d697420636f756c6420626520666f7220616e7920736f7274206f66206c69737473206f66207468696e67732c20696e636c7564696e67206120737472696e672e3c436f756e7465724f766572666c6f77000118b85468652073657175656e636520636f756e74657220666f7220736f6d657468696e67206f766572666c6f7765642e001d015768656e20746869732068617070656e7320646570656e6473206f6e20652e672e2c20746865206361706163697479206f6620746865206964656e74696669657220747970652e3901466f72206578616d706c652c207765206d69676874206861766520607075622073747275637420506970496428753332293b602c207769746820607533323a3a4d4158602063617061636974792e5901496e2070726163746963652c207468657365206572726f72732077696c6c206e657665722068617070656e20627574206e6f20636f646520706174682073686f756c6420726573756c7420696e20612070616e69632cfc736f20746865736520636f726e6572206361736573206e65656420746f20626520636f7665726564207769746820616e206572726f722076617269616e742e00950a00000408a4190100990a085870616c6c65745f65787465726e616c5f6167656e7473144572726f72040454000118204e6f537563684147000004ec416e20414720776974682074686520676976656e2060414749646020646964206e6f7420657869737420666f722074686520605469636b6572602e44556e617574686f72697a65644167656e74000104e8546865206167656e74206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e38416c7265616479416e4167656e74000204e85468652070726f766964656420606167656e746020697320616c726561647920616e206167656e7420666f722074686520605469636b6572602e284e6f74416e4167656e74000304d85468652070726f766964656420606167656e7460206973206e6f7420616e206167656e7420666f722074686520605469636b6572602e5452656d6f76696e674c61737446756c6c4167656e74000408e054686973206167656e7420697320746865206c6173742066756c6c206f6e652c20616e642069742773206265696e672072656d6f7665642c686d616b696e6720746865206173736574206f727068616e65642e845365636f6e646172794b65794e6f74417574686f72697a6564466f7241737365740005041d015468652063616c6c65722773207365636f6e64617279206b657920646f6573206e6f74206861766520746865207265717569726564206173736574207065726d697373696f6e2e009d0a083870616c6c65745f72656c617965721c53756273696479040c416363010000080128706179696e675f6b657900010c41636300012472656d61696e696e6718011c42616c616e63650000a10a083870616c6c65745f72656c61796572144572726f7204045400011c44557365724b65794364644d697373696e67000004cc5468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e4c506179696e674b65794364644d697373696e67000104cc5468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e2c4e6f506179696e674b6579000204ac5468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e304e6f74506179696e674b6579000304b05468652060757365725f6b65796020686173206120646966666572656e742060706179696e675f6b6579602e644e6f74417574686f72697a6564466f72506179696e674b6579000404b8546865207369676e6572206973206e6f7420617574686f72697a656420666f722060706179696e675f6b6579602e5c4e6f74417574686f72697a6564466f72557365724b6579000504b0546865207369676e6572206973206e6f7420617574686f72697a656420666f722060757365725f6b6579602e204f766572666c6f77000604b85468652072656d61696e696e6720504f4c595820666f722060757365725f6b657960206f766572666c6f7765642e00a50a083870616c6c65745f72657761726473144572726f7204045400011044556e6b6e6f776e49746e41646472657373000004cc4164647265737320776173206e6f7420666f756e6420696e20746865206c697374206f662049746e206164647265737365732e5c49746e526577617264416c7265616479436c61696d65640001047c49746e207265776172642077617320616c726561647920636c61696d65642e40496e76616c69645369676e61747572650002047c50726f7669646564207369676e61747572652077617320696e76616c69642e54556e61626c65546f436f7665727442616c616e6365000304b042616c616e63652063616e206e6f7420626520636f6e76657274656420746f2061207072696d69746976652e00a90a084470616c6c65745f746573745f7574696c73144572726f7204045400010000ad0a102873705f72756e74696d651c67656e657269634c756e636865636b65645f65787472696e73696348556e636865636b656445787472696e736963101c416464726573730139051043616c6c01e505245369676e617475726501ed0714457874726101b10a00040028000000b10a00000420b50ab90abd0ac10ac90acd0ad50ad90a00b50a10306672616d655f73797374656d28657874656e73696f6e7348636865636b5f737065635f76657273696f6e40436865636b5370656356657273696f6e04045400000000b90a10306672616d655f73797374656d28657874656e73696f6e7340636865636b5f74785f76657273696f6e38436865636b547856657273696f6e04045400000000bd0a10306672616d655f73797374656d28657874656e73696f6e7334636865636b5f67656e6573697330436865636b47656e6573697304045400000000c10a10306672616d655f73797374656d28657874656e73696f6e733c636865636b5f6d6f7274616c69747938436865636b4d6f7274616c69747904045400000400c50a010c4572610000c50a102873705f72756e74696d651c67656e657269630c6572610c4572610001010420496d6d6f7274616c0000001c4d6f7274616c31040008000001001c4d6f7274616c32040008000002001c4d6f7274616c33040008000003001c4d6f7274616c34040008000004001c4d6f7274616c35040008000005001c4d6f7274616c36040008000006001c4d6f7274616c37040008000007001c4d6f7274616c38040008000008001c4d6f7274616c3904000800000900204d6f7274616c313004000800000a00204d6f7274616c313104000800000b00204d6f7274616c313204000800000c00204d6f7274616c313304000800000d00204d6f7274616c313404000800000e00204d6f7274616c313504000800000f00204d6f7274616c313604000800001000204d6f7274616c313704000800001100204d6f7274616c313804000800001200204d6f7274616c313904000800001300204d6f7274616c323004000800001400204d6f7274616c323104000800001500204d6f7274616c323204000800001600204d6f7274616c323304000800001700204d6f7274616c323404000800001800204d6f7274616c323504000800001900204d6f7274616c323604000800001a00204d6f7274616c323704000800001b00204d6f7274616c323804000800001c00204d6f7274616c323904000800001d00204d6f7274616c333004000800001e00204d6f7274616c333104000800001f00204d6f7274616c333204000800002000204d6f7274616c333304000800002100204d6f7274616c333404000800002200204d6f7274616c333504000800002300204d6f7274616c333604000800002400204d6f7274616c333704000800002500204d6f7274616c333804000800002600204d6f7274616c333904000800002700204d6f7274616c343004000800002800204d6f7274616c343104000800002900204d6f7274616c343204000800002a00204d6f7274616c343304000800002b00204d6f7274616c343404000800002c00204d6f7274616c343504000800002d00204d6f7274616c343604000800002e00204d6f7274616c343704000800002f00204d6f7274616c343804000800003000204d6f7274616c343904000800003100204d6f7274616c353004000800003200204d6f7274616c353104000800003300204d6f7274616c353204000800003400204d6f7274616c353304000800003500204d6f7274616c353404000800003600204d6f7274616c353504000800003700204d6f7274616c353604000800003800204d6f7274616c353704000800003900204d6f7274616c353804000800003a00204d6f7274616c353904000800003b00204d6f7274616c363004000800003c00204d6f7274616c363104000800003d00204d6f7274616c363204000800003e00204d6f7274616c363304000800003f00204d6f7274616c363404000800004000204d6f7274616c363504000800004100204d6f7274616c363604000800004200204d6f7274616c363704000800004300204d6f7274616c363804000800004400204d6f7274616c363904000800004500204d6f7274616c373004000800004600204d6f7274616c373104000800004700204d6f7274616c373204000800004800204d6f7274616c373304000800004900204d6f7274616c373404000800004a00204d6f7274616c373504000800004b00204d6f7274616c373604000800004c00204d6f7274616c373704000800004d00204d6f7274616c373804000800004e00204d6f7274616c373904000800004f00204d6f7274616c383004000800005000204d6f7274616c383104000800005100204d6f7274616c383204000800005200204d6f7274616c383304000800005300204d6f7274616c383404000800005400204d6f7274616c383504000800005500204d6f7274616c383604000800005600204d6f7274616c383704000800005700204d6f7274616c383804000800005800204d6f7274616c383904000800005900204d6f7274616c393004000800005a00204d6f7274616c393104000800005b00204d6f7274616c393204000800005c00204d6f7274616c393304000800005d00204d6f7274616c393404000800005e00204d6f7274616c393504000800005f00204d6f7274616c393604000800006000204d6f7274616c393704000800006100204d6f7274616c393804000800006200204d6f7274616c393904000800006300244d6f7274616c31303004000800006400244d6f7274616c31303104000800006500244d6f7274616c31303204000800006600244d6f7274616c31303304000800006700244d6f7274616c31303404000800006800244d6f7274616c31303504000800006900244d6f7274616c31303604000800006a00244d6f7274616c31303704000800006b00244d6f7274616c31303804000800006c00244d6f7274616c31303904000800006d00244d6f7274616c31313004000800006e00244d6f7274616c31313104000800006f00244d6f7274616c31313204000800007000244d6f7274616c31313304000800007100244d6f7274616c31313404000800007200244d6f7274616c31313504000800007300244d6f7274616c31313604000800007400244d6f7274616c31313704000800007500244d6f7274616c31313804000800007600244d6f7274616c31313904000800007700244d6f7274616c31323004000800007800244d6f7274616c31323104000800007900244d6f7274616c31323204000800007a00244d6f7274616c31323304000800007b00244d6f7274616c31323404000800007c00244d6f7274616c31323504000800007d00244d6f7274616c31323604000800007e00244d6f7274616c31323704000800007f00244d6f7274616c31323804000800008000244d6f7274616c31323904000800008100244d6f7274616c31333004000800008200244d6f7274616c31333104000800008300244d6f7274616c31333204000800008400244d6f7274616c31333304000800008500244d6f7274616c31333404000800008600244d6f7274616c31333504000800008700244d6f7274616c31333604000800008800244d6f7274616c31333704000800008900244d6f7274616c31333804000800008a00244d6f7274616c31333904000800008b00244d6f7274616c31343004000800008c00244d6f7274616c31343104000800008d00244d6f7274616c31343204000800008e00244d6f7274616c31343304000800008f00244d6f7274616c31343404000800009000244d6f7274616c31343504000800009100244d6f7274616c31343604000800009200244d6f7274616c31343704000800009300244d6f7274616c31343804000800009400244d6f7274616c31343904000800009500244d6f7274616c31353004000800009600244d6f7274616c31353104000800009700244d6f7274616c31353204000800009800244d6f7274616c31353304000800009900244d6f7274616c31353404000800009a00244d6f7274616c31353504000800009b00244d6f7274616c31353604000800009c00244d6f7274616c31353704000800009d00244d6f7274616c31353804000800009e00244d6f7274616c31353904000800009f00244d6f7274616c3136300400080000a000244d6f7274616c3136310400080000a100244d6f7274616c3136320400080000a200244d6f7274616c3136330400080000a300244d6f7274616c3136340400080000a400244d6f7274616c3136350400080000a500244d6f7274616c3136360400080000a600244d6f7274616c3136370400080000a700244d6f7274616c3136380400080000a800244d6f7274616c3136390400080000a900244d6f7274616c3137300400080000aa00244d6f7274616c3137310400080000ab00244d6f7274616c3137320400080000ac00244d6f7274616c3137330400080000ad00244d6f7274616c3137340400080000ae00244d6f7274616c3137350400080000af00244d6f7274616c3137360400080000b000244d6f7274616c3137370400080000b100244d6f7274616c3137380400080000b200244d6f7274616c3137390400080000b300244d6f7274616c3138300400080000b400244d6f7274616c3138310400080000b500244d6f7274616c3138320400080000b600244d6f7274616c3138330400080000b700244d6f7274616c3138340400080000b800244d6f7274616c3138350400080000b900244d6f7274616c3138360400080000ba00244d6f7274616c3138370400080000bb00244d6f7274616c3138380400080000bc00244d6f7274616c3138390400080000bd00244d6f7274616c3139300400080000be00244d6f7274616c3139310400080000bf00244d6f7274616c3139320400080000c000244d6f7274616c3139330400080000c100244d6f7274616c3139340400080000c200244d6f7274616c3139350400080000c300244d6f7274616c3139360400080000c400244d6f7274616c3139370400080000c500244d6f7274616c3139380400080000c600244d6f7274616c3139390400080000c700244d6f7274616c3230300400080000c800244d6f7274616c3230310400080000c900244d6f7274616c3230320400080000ca00244d6f7274616c3230330400080000cb00244d6f7274616c3230340400080000cc00244d6f7274616c3230350400080000cd00244d6f7274616c3230360400080000ce00244d6f7274616c3230370400080000cf00244d6f7274616c3230380400080000d000244d6f7274616c3230390400080000d100244d6f7274616c3231300400080000d200244d6f7274616c3231310400080000d300244d6f7274616c3231320400080000d400244d6f7274616c3231330400080000d500244d6f7274616c3231340400080000d600244d6f7274616c3231350400080000d700244d6f7274616c3231360400080000d800244d6f7274616c3231370400080000d900244d6f7274616c3231380400080000da00244d6f7274616c3231390400080000db00244d6f7274616c3232300400080000dc00244d6f7274616c3232310400080000dd00244d6f7274616c3232320400080000de00244d6f7274616c3232330400080000df00244d6f7274616c3232340400080000e000244d6f7274616c3232350400080000e100244d6f7274616c3232360400080000e200244d6f7274616c3232370400080000e300244d6f7274616c3232380400080000e400244d6f7274616c3232390400080000e500244d6f7274616c3233300400080000e600244d6f7274616c3233310400080000e700244d6f7274616c3233320400080000e800244d6f7274616c3233330400080000e900244d6f7274616c3233340400080000ea00244d6f7274616c3233350400080000eb00244d6f7274616c3233360400080000ec00244d6f7274616c3233370400080000ed00244d6f7274616c3233380400080000ee00244d6f7274616c3233390400080000ef00244d6f7274616c3234300400080000f000244d6f7274616c3234310400080000f100244d6f7274616c3234320400080000f200244d6f7274616c3234330400080000f300244d6f7274616c3234340400080000f400244d6f7274616c3234350400080000f500244d6f7274616c3234360400080000f600244d6f7274616c3234370400080000f700244d6f7274616c3234380400080000f800244d6f7274616c3234390400080000f900244d6f7274616c3235300400080000fa00244d6f7274616c3235310400080000fb00244d6f7274616c3235320400080000fc00244d6f7274616c3235330400080000fd00244d6f7274616c3235340400080000fe00244d6f7274616c3235350400080000ff0000c90a10306672616d655f73797374656d28657874656e73696f6e732c636865636b5f6e6f6e636528436865636b4e6f6e63650404540000040071040120543a3a496e6465780000cd0a0c4c706f6c796d6573685f657874656e73696f6e7330636865636b5f7765696768742c436865636b57656967687404045400000400d10a011443573c543e0000d10a10306672616d655f73797374656d28657874656e73696f6e7330636865636b5f7765696768742c436865636b57656967687404045400000000d50a086870616c6c65745f7472616e73616374696f6e5f7061796d656e74604368617267655472616e73616374696f6e5061796d656e7404045400000400d101013042616c616e63654f663c543e0000d90a084870616c6c65745f7065726d697373696f6e734453746f726543616c6c4d6574616461746104045400000000dd0a0c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d651c52756e74696d6500000000bc1853797374656d011853797374656d401c4163636f756e7401010402000c4101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e8205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e3845787472696e736963436f756e74000010040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e2c426c6f636b57656967687401001c600000000000000000000000000000000000000000000000000488205468652063757272656e742077656967687420666f722074686520626c6f636b2e40416c6c45787472696e736963734c656e000010040004410120546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e24426c6f636b486173680101040510248000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101040510280400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d6265720100101000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801002480000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e1844696765737401002c040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e7473010048040010a0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e005901204e4f54453a20546869732073746f72616765206974656d206973206578706c696369746c7920756e626f756e6465642073696e6365206974206973206e6576657220696e74656e64656420746f2062652072656164642066726f6d2077697468696e207468652072756e74696d652e284576656e74436f756e74010010100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f70696373010104022469040400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e004d01205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e484c61737452756e74696d655570677261646500006d0404000455012053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e545570677261646564546f553332526566436f756e7401001d010400044d012054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e605570677261646564546f547269706c65526566436f756e7401001d010400085d012054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e73207468726565207479706573206f662060526566436f756e74602e2046616c736548202864656661756c7429206966206e6f742e38457865637574696f6e506861736500006104040004882054686520657865637574696f6e207068617365206f662074686520626c6f636b2e01790401541830426c6f636b576569676874738904850100c817a80400000000204aa9d10100008036be26000000000180914b872e010000010098f73e5d0100000100000000000000008036be26000000000180199ef1a20100000100204aa9d1010000010088526a740000008036be260000000000000004d020426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e2c426c6f636b4c656e677468950430000078000000a0000000a00004a820546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e38426c6f636b48617368436f756e741010fa000000045501204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e2044625765696768749d044080f0fa020000000000c2eb0b000000000409012054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e1c56657273696f6ea1040d0430706f6c796d6573685f64657630706f6c796d6573685f64657601000000404b4c000000000048df6acb689907609b0300000037e397fc7c91f5e40100000040fe3ad401f8959a05000000d2bc9897eed08f1503000000f78b278be53f454c02000000ed99c5acb25eedf503000000cbca25e39f14238702000000687ad44ad37f03c201000000bc9d89904f5b923f0100000037c8bb1350a9a2a801000000ab3c0572291feb8b0100000018ef58a3b67ba77001000000329342994773047f01000000001a0b29f17d01f401000000f28e8080b6e2dfd001000000bb6ba9053c5c9d78020000009f242c2c886f3fce01000000595ac34c5ea1f5fe01000000020000000484204765742074686520636861696e27732063757272656e742076657273696f6e2e28535335385072656669784103082a0014a8205468652064657369676e61746564205353383520707265666978206f66207468697320636861696e2e0039012054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e20697331012074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f662069742061737020616e206964656e746966696572206f662074686520636861696e2e01b504001042616265011042616265402845706f6368496e64657801002020000000000000000004542043757272656e742065706f636820696e6465782e2c417574686f7269746965730100b9040400046c2043757272656e742065706f636820617574686f7269746965732e2c47656e65736973536c6f740100c90420000000000000000008f82054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e205468697320697320309020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2c43757272656e74536c6f740100c90420000000000000000004542043757272656e7420736c6f74206e756d6265722e2852616e646f6d6e65737301000480000000000000000000000000000000000000000000000000000000000000000028b8205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e002c20232053656375726974790005012054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061f8206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e7915012063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d6265727320746861742074686973150120286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e206265050120757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e0d01206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e6050656e64696e6745706f6368436f6e6669674368616e67650000cd0404000461012050656e64696e672065706f636820636f6e66696775726174696f6e206368616e676520746861742077696c6c206265206170706c696564207768656e20746865206e6578742065706f636820697320656e61637465642e384e65787452616e646f6d6e657373010004800000000000000000000000000000000000000000000000000000000000000000045c204e6578742065706f63682072616e646f6d6e6573732e3c4e657874417574686f7269746965730100b90404000460204e6578742065706f636820617574686f7269746965732e305365676d656e74496e6465780100101000000000247c2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e00f4205765206d616b6520612074726164656f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e01012057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f942060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e00ec204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e090120576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572791c2065706f63682e44556e646572436f6e737472756374696f6e0101040510d90404000415012054574f582d4e4f54453a20605365676d656e74496e6465786020697320616e20696e6372656173696e6720696e74656765722c20736f2074686973206973206f6b61792e2c496e697469616c697a65640000e10404000801012054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d65601d01206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e4c417574686f7256726652616e646f6d6e6573730100e10404001015012054686973206669656c642073686f756c6420616c7761797320626520706f70756c6174656420647572696e6720626c6f636b2070726f63657373696e6720756e6c6573731901207365636f6e6461727920706c61696e20736c6f74732061726520656e61626c65642028776869636820646f6e277420636f6e7461696e206120565246206f7574707574292e0051012049742069732073657420696e20606f6e5f696e697469616c697a65602c206265666f72652069742077696c6c20636f6e7461696e207468652076616c75652066726f6d20746865206c61737420626c6f636b2e2845706f636853746172740100a103200000000000000000145d012054686520626c6f636b206e756d62657273207768656e20746865206c61737420616e642063757272656e742065706f6368206861766520737461727465642c20726573706563746976656c7920604e2d316020616e641420604e602e4901204e4f54453a20576520747261636b207468697320697320696e206f7264657220746f20616e6e6f746174652074686520626c6f636b206e756d626572207768656e206120676976656e20706f6f6c206f66590120656e74726f7079207761732066697865642028692e652e20697420776173206b6e6f776e20746f20636861696e206f6273657276657273292e2053696e63652065706f6368732061726520646566696e656420696e590120736c6f74732c207768696368206d617920626520736b69707065642c2074686520626c6f636b206e756d62657273206d6179206e6f74206c696e6520757020776974682074686520736c6f74206e756d626572732e204c6174656e657373010010100000000014d820486f77206c617465207468652063757272656e7420626c6f636b20697320636f6d706172656420746f2069747320706172656e742e001501205468697320656e74727920697320706f70756c617465642061732070617274206f6620626c6f636b20657865637574696f6e20616e6420697320636c65616e65642075701101206f6e20626c6f636b2066696e616c697a6174696f6e2e205175657279696e6720746869732073746f7261676520656e747279206f757473696465206f6620626c6f636bb020657865637574696f6e20636f6e746578742073686f756c6420616c77617973207969656c64207a65726f2e2c45706f6368436f6e6669670000e50404000861012054686520636f6e66696775726174696f6e20666f72207468652063757272656e742065706f63682e2053686f756c64206e6576657220626520604e6f6e656020617320697420697320696e697469616c697a656420696e242067656e657369732e3c4e65787445706f6368436f6e6669670000e5040400082d012054686520636f6e66696775726174696f6e20666f7220746865206e6578742065706f63682c20604e6f6e65602069662074686520636f6e6669672077696c6c206e6f74206368616e6765e82028796f752063616e2066616c6c6261636b20746f206045706f6368436f6e6669676020696e737465616420696e20746861742063617365292e01e904000c3445706f63684475726174696f6e20202c010000000000000cec2054686520616d6f756e74206f662074696d652c20696e20736c6f74732c207468617420656163682065706f63682073686f756c64206c6173742e1901204e4f54453a2043757272656e746c79206974206973206e6f7420706f737369626c6520746f206368616e6765207468652065706f6368206475726174696f6e20616674657221012074686520636861696e2068617320737461727465642e20417474656d7074696e6720746f20646f20736f2077696c6c20627269636b20626c6f636b2070726f64756374696f6e2e444578706563746564426c6f636b54696d652020701700000000000014050120546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e67110120626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f75740501207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f740901206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473a0207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e384d6178417574686f7269746965731010a08601000488204d6178206e756d626572206f6620617574686f72697469657320616c6c6f77656401fd04012454696d657374616d70012454696d657374616d70080c4e6f7701002020000000000000000004902043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e2444696455706461746501001d01040004b420446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f0101050004344d696e696d756d506572696f642020b80b000000000000104d0120546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a5d0120706572696f6420746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c5d012067656e6572616c6c7920776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c206265a020646f75626c65207468697320706572696f64206f6e2064656661756c742073657474696e67732e00021c496e6469636573011c496e646963657304204163636f756e7473000104021009050400048820546865206c6f6f6b75702066726f6d20696e64657820746f206163636f756e742e010d050170041c4465706f736974184040420f0000000000000000000000000004ac20546865206465706f736974206e656564656420666f7220726573657276696e6720616e20696e6465782e0111050328417574686f72736869700128417574686f72736869700c18556e636c6573010015050400041c20556e636c657318417574686f720000000400046420417574686f72206f662063757272656e7420626c6f636b2e30446964536574556e636c657301001d01040004bc205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e011d05000440556e636c6547656e65726174696f6e731010000000000ccc20546865206e756d626572206f6620626c6f636b73206261636b2077652073686f756c642061636365707420756e636c65732ee42054686973206d65616e7320746861742077652077696c6c206465616c207769746820756e636c652d706172656e7473207468617420617265942060556e636c6547656e65726174696f6e73202b203160206265666f726520606e6f77602e012505042042616c616e636573012042616c616e6365730834546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e144c6f636b7301010402002905040008b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e013505017404484578697374656e7469616c4465706f73697418400000000000000000000000000000000004d420546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e013d0505485472616e73616374696f6e5061796d656e7401485472616e73616374696f6e5061796d656e7408444e6578744665654d756c7469706c6965720100410540000064a7b3b6e00d0000000000000000003853746f7261676556657273696f6e01004505040000000008485472616e73616374696f6e42797465466565184064000000000000000000000000000000040d01205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e2c576569676874546f46656549055c040000000000000000000000000000000049b400000001040d012054686520706f6c796e6f6d69616c2074686174206973206170706c69656420696e206f7264657220746f20646572697665206665652066726f6d207765696768742e0006204964656e7469747901204964656e7469747938284469645265636f726473010104067c510584000000000000000000000000000000000000000000000000000000000000000000045420444944202d3e206964656e7469747920696e666f2c497344696446726f7a656e010104067c1d01040004e420444944202d3e20626f6f6c207468617420696e64696361746573206966207365636f6e64617279206b657973206172652066726f7a656e2e2843757272656e7444696400007c040004e02049742073746f726573207468652063757272656e74206964656e7469747920666f722063757272656e74207472616e73616374696f6e2e3043757272656e74506179657200000004000401012049742073746f726573207468652063757272656e74206761732066656520706179657220666f72207468652063757272656e74207472616e73616374696f6e18436c61696d7301010805025d05f4c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a04f020285461726765742049442c20636c61696d20747970652920286973737565722c73636f706529202d3e204173736f63696174656420636c61696d73404b6579546f4964656e7469747949647301010405007c80000000000000000000000000000000000000000000000000000000000000000000444d756c7469507572706f73654e6f6e636501002020000000000000000004bc204e6f6e636520746f20656e7375726520756e6971756520616374696f6e732e207374617274732066726f6d20312e684f6666436861696e417574686f72697a6174696f6e4e6f6e6365010104067c2020000000000000000004c820417574686f72697a6174696f6e206e6f6e636520706572204964656e746974792e20496e697469616c6c7920697320302e38417574686f72697a6174696f6e7300010802056d057105040004b020416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792f6b6579206861734c417574686f72697a6174696f6e73476976656e010108060575059884000000000000000000000000000000000000000000000000000000000000000000044d0120416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792068617320676976656e2e2028417574686f72697a65722c20617574685f6964202d3e20617574686f72697a6564296c43646441757468466f724d61737465724b6579526f746174696f6e01001d010400086501204f62736f6c657465642073746f72616765207661726961626c652073757065726365646564206279206043646441757468466f725072696d6172794b6579526f746174696f6e602e204974206973206b65707420686572659820666f722074686520707572706f7365206f662073746f72616765206d6967726174696f6e2e7043646441757468466f725072696d6172794b6579526f746174696f6e01001d010400085d01204120636f6e66696720666c616720746861742c206966207365742c20696e7374727563747320616e20617574686f72697a6174696f6e2066726f6d2061204344442070726f766964657220696e206f7264657220746f9c206368616e676520746865207072696d617279206b6579206f6620616e206964656e746974792e3853746f7261676556657273696f6e01007905040004442053746f726167652076657273696f6e2e484163636f756e744b6579526566436f756e740101040200202000000000000000001cc420486f77206d616e7920227374726f6e6722207265666572656e63657320746f20746865206163636f756e74206b65792e00fc205374726f6e67207265666572656e6365732077696c6c20626c6f636b2061206b65792066726f6d206c656176696e672069742773206964656e746974792e00cc2050616c6c657473207573696e6720227374726f6e6722207265666572656e63657320746f206163636f756e74206b6579733aac202a2052656c617965723a20466f722060757365725f6b65796020616e642060706179696e675f6b65796000017d05018c0430496e697469616c504f4c59581840000000000000000000000000000000000001d105074c4364645365727669636550726f7669646572730138496e7374616e63653247726f75700c344163746976654d656d6265727301003101040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100d505040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01dd050129010001e1050844506f6c796d657368436f6d6d69747465650148496e7374616e636531436f6d6d6974746565242450726f706f73616c7301006504040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001040624e505040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e6700010406244908040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100310104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c640100a103200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201004501040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01004d08040004442053746f726167652076657273696f6e2e01e90501350100015108094c436f6d6d69747465654d656d626572736869700138496e7374616e63653147726f75700c344163746976654d656d6265727301003101040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100d505040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01ed05014901000155080a48546563686e6963616c436f6d6d69747465650148496e7374616e636533436f6d6d6974746565242450726f706f73616c7301006504040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001040624e505040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e6700010406244908040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100310104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c640100a103200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201004501040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01004d08040004442053746f726167652076657273696f6e2e01f105015101000159080b70546563686e6963616c436f6d6d69747465654d656d626572736869700138496e7374616e63653347726f75700c344163746976654d656d6265727301003101040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100d505040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01f50501590100015d080c4055706772616465436f6d6d69747465650148496e7374616e636534436f6d6d6974746565242450726f706f73616c7301006504040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001040624e505040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e6700010406244908040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100310104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c640100a103200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201004501040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01004d08040004442053746f726167652076657273696f6e2e01f905016101000161080d6855706772616465436f6d6d69747465654d656d626572736869700138496e7374616e63653447726f75700c344163746976654d656d6265727301003101040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100d505040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01fd05016901000165080e204d756c746953696701204d756c746953696730344d756c74695369674e6f6e6365010020200000000000000000042101204e6f6e636520746f20656e7375726520756e69717565204d756c746953696720616464726573736573206172652067656e6572617465643b207374617274732066726f6d20312e3c4d756c74695369675369676e65727301010806056908988400000000000000000000000000000000000000000000000000000000000000000004d4205369676e657273206f662061206d756c74697369672e20286d756c74697369672c207369676e657229203d3e207369676e65722e3c4e756d6265724f665369676e65727301010406002020000000000000000004cc204e756d626572206f6620617070726f7665642f6163636570746564207369676e657273206f662061206d756c74697369672e544d756c74695369675369676e73526571756972656401010406002020000000000000000004e020436f6e6669726d6174696f6e73207265717569726564206265666f72652070726f63657373696e672061206d756c74697369672074782e384d756c74695369675478446f6e65010104060020200000000000000000043501204e756d626572206f66207472616e73616374696f6e732070726f706f73656420696e2061206d756c74697369672e20557365642061732074782069643b207374617274732066726f6d20302e2450726f706f73616c73000104056d08e50504000475012050726f706f73616c732070726573656e74656420666f7220766f74696e6720746f2061206d756c746973696720286d756c74697369672c2070726f706f73616c20696429203d3e204f7074696f6e3c543a3a50726f706f73616c3e2e2c50726f706f73616c4964730001080602710820040004942041206d617070696e67206f662070726f706f73616c7320746f207468656972204944732e14566f7465730101040575081d01040004250120496e646976696475616c206d756c7469736967207369676e657220766f7465732e20286d756c7469207369672c207369676e65722c2070726f706f73616c29203d3e20766f74652e344b6579546f4d756c746953696701010405000080000000000000000000000000000000000000000000000000000000000000000004c8204d6170732061206d756c7469736967207369676e6572206b657920746f2061206d756c746973696720616464726573732e484d756c7469536967546f4964656e7469747901010406007c80000000000000000000000000000000000000000000000000000000000000000004a4204d6170732061206d756c7469736967206163636f756e7420746f20697473206964656e746974792e3850726f706f73616c44657461696c010104056d0879084c00000000000000000000000000000000000000047c2044657461696c73206f662061206d756c74697369672070726f706f73616c485472616e73616374696f6e56657273696f6e010010100000000004f420546865206c617374207472616e73616374696f6e2076657273696f6e2c207573656420666f7220606f6e5f72756e74696d655f75706772616465602e010106017101000181080f1842726964676501184272696467652828436f6e74726f6c6c65720100008000000000000000000000000000000000000000000000000000000000000000000c410120546865206d756c7469736967206163636f756e74206f66207468652062726964676520636f6e74726f6c6c65722e205468652067656e65736973207369676e65727320616363657074207468656972450120617574686f72697a6174696f6e7320616e64206172652061626c6520746f206765742074686569722070726f706f73616c732064656c6976657265642e20546865206272696467652063726561746f729c207472616e736665727320736f6d6520504f4c5920746f207468656972206964656e746974792e3c427269646765547844657461696c73010108020285088908d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000859012044657461696c73206f6620627269646765207472616e73616374696f6e73206964656e7469666965642077697468207061697273206f662074686520726563697069656e74206163636f756e7420616e64207468656820627269646765207472616e73616374696f6e206e6f6e63652e1441646d696e010000800000000000000000000000000000000000000000000000000000000000000000043c205468652061646d696e206b65792e1846726f7a656e01001d01040004bc2057686574686572206f72206e6f742074686520627269646765206f7065726174696f6e2069732066726f7a656e2e30467265657a6541646d696e7301010402001d01040004090120467265657a65206272696467652061646d696e732e20205468657365206163636f756e74732063616e206f6e6c7920667265657a6520746865206272696467652e2054696d656c6f636b0100101000000000083d012054686520627269646765207472616e73616374696f6e2074696d656c6f636b20706572696f642c20696e20626c6f636b732c2073696e63652074686520616363657074616e6365206f66207468653101207472616e73616374696f6e2070726f706f73616c20647572696e67207768696368207468652061646d696e206b65792063616e20667265657a6520746865207472616e73616374696f6e2e2c4272696467654c696d69740100910850000000000000000000000000000000000000000008290120546865206d6178696d756d206e756d626572206f66206272696467656420504f4c595820706572206964656e746974792077697468696e20612073657420696e74657276616c206f66f820626c6f636b732e204669656c64733a20504f4c595820616d6f756e7420616e642074686520626c6f636b20696e74657276616c206475726174696f6e2e30506f6c797842726964676564010104067c910850000000000000000000000000000000000000000008510120416d6f756e74206f6620504f4c5958206272696467656420627920746865206964656e7469747920696e206c61737420626c6f636b20696e74657276616c2e204669656c64733a2074686520627269646765649420616d6f756e7420616e6420746865206c61737420696e74657276616c206e756d6265722e4c4272696467654c696d69744578656d70746564010104057c1d01040004c0204964656e746974696573206e6f7420636f6e73747261696e65642062792074686520627269646765206c696d69742e3853746f7261676556657273696f6e01009508040004442053746f726167652076657273696f6e2e01050601750100019908101c5374616b696e67011c5374616b696e679c30486973746f7279446570746801001010540000001c8c204e756d626572206f66206572617320746f206b65657020696e20686973746f72792e00390120496e666f726d6174696f6e206973206b65707420666f72206572617320696e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e006101204d757374206265206d6f7265207468616e20746865206e756d626572206f6620657261732064656c617965642062792073657373696f6e206f74686572776973652e20492e652e2061637469766520657261206d757374390120616c7761797320626520696e20686973746f72792e20492e652e20606163746976655f657261203e2063757272656e745f657261202d20686973746f72795f646570746860206d757374206265302067756172616e746565642e3856616c696461746f72436f756e74010010100000000004a82054686520696465616c206e756d626572206f66207374616b696e67207061727469636970616e74732e544d696e696d756d56616c696461746f72436f756e740100101000000000044101204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e34496e76756c6e657261626c65730100910104000c590120416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e636520746865792772654d01206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f7572ac20696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e18426f6e6465640001040500000400040101204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e184c656467657200010402009d080400044501204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e14506179656501010405001906040004e42057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e2856616c696461746f727301010405001d0608000004450120546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e284e6f6d696e61746f72730001040500a908040004650120546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f2074686520736574206f66207374617368206b657973206f6620616c6c2076616c696461746f727320746f206e6f6d696e6174652e2843757272656e744572610000100400105c205468652063757272656e742065726120696e6465782e006501205468697320697320746865206c617465737420706c616e6e6564206572612c20646570656e64696e67206f6e20686f77207468652053657373696f6e2070616c6c657420717565756573207468652076616c696461746f7280207365742c206974206d6967687420626520616374697665206f72206e6f742e244163746976654572610000ad08040010d820546865206163746976652065726120696e666f726d6174696f6e2c20697420686f6c647320696e64657820616e642073746172742e0059012054686520616374697665206572612069732074686520657261206265696e672063757272656e746c792072657761726465642e2056616c696461746f7220736574206f66207468697320657261206d757374206265ac20657175616c20746f205b6053657373696f6e496e746572666163653a3a76616c696461746f7273605d2e5445726173537461727453657373696f6e496e6465780001040510100400103101205468652073657373696f6e20696e646578206174207768696368207468652065726120737461727420666f7220746865206c6173742060484953544f52595f44455054486020657261732e006101204e6f74653a205468697320747261636b7320746865207374617274696e672073657373696f6e2028692e652e2073657373696f6e20696e646578207768656e20657261207374617274206265696e672061637469766529f020666f7220746865206572617320696e20605b43757272656e74457261202d20484953544f52595f44455054482c2043757272656e744572615d602e2c457261735374616b6572730101080505b108cd010c0000001878204578706f73757265206f662076616c696461746f72206174206572612e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e48457261735374616b657273436c69707065640101080505b108cd010c0000002c9820436c6970706564204578706f73757265206f662076616c696461746f72206174206572612e00590120546869732069732073696d696c617220746f205b60457261735374616b657273605d20627574206e756d626572206f66206e6f6d696e61746f7273206578706f736564206973207265647563656420746f20746865dc2060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732e1d0120284e6f74653a20746865206669656c642060746f74616c6020616e6420606f776e60206f6620746865206578706f737572652072656d61696e7320756e6368616e676564292ef42054686973206973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e005d012054686973206973206b657965642066697374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e484572617356616c696461746f7250726566730101080505b1081d060800001411012053696d696c617220746f2060457261735374616b657273602c207468697320686f6c64732074686520707265666572656e636573206f662076616c696461746f72732e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4c4572617356616c696461746f7252657761726400010405101804000c09012054686520746f74616c2076616c696461746f7220657261207061796f757420666f7220746865206c6173742060484953544f52595f44455054486020657261732e0021012045726173207468617420686176656e27742066696e697368656420796574206f7220686173206265656e2072656d6f76656420646f65736e27742068617665207265776172642e4045726173526577617264506f696e74730101040510b50814000000000008ac205265776172647320666f7220746865206c6173742060484953544f52595f44455054486020657261732e250120496620726577617264206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207265776172642069732072657475726e65642e3845726173546f74616c5374616b65010104051018400000000000000000000000000000000008ec2054686520746f74616c20616d6f756e74207374616b656420666f7220746865206c6173742060484953544f52595f44455054486020657261732e1d0120496620746f74616c206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207374616b652069732072657475726e65642e20466f7263654572610100c10804000454204d6f6465206f662065726120666f7263696e672e4c536c6173685265776172644672616374696f6e0100950110000000000cf8205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e00e4205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e4c43616e63656c6564536c6173685061796f757401001840000000000000000000000000000000000815012054686520616d6f756e74206f662063757272656e637920676976656e20746f207265706f7274657273206f66206120736c617368206576656e7420776869636820776173ec2063616e63656c65642062792065787472616f7264696e6172792063697263756d7374616e6365732028652e672e20676f7665726e616e6365292e40556e6170706c696564536c61736865730101040510c508040004c420416c6c20756e6170706c69656420736c61736865732074686174206172652071756575656420666f72206c617465722e28426f6e646564457261730100690404001025012041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e00c8204d75737420636f6e7461696e7320696e666f726d6174696f6e20666f72206572617320666f72207468652072616e67653abc20605b6163746976655f657261202d20626f756e64696e675f6475726174696f6e3b206163746976655f6572615d604c56616c696461746f72536c617368496e4572610001080505b108d508040008450120416c6c20736c617368696e67206576656e7473206f6e2076616c696461746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682070726f706f7274696f6e7020616e6420736c6173682076616c7565206f6620746865206572612e4c4e6f6d696e61746f72536c617368496e4572610001080505b10818040004610120416c6c20736c617368696e67206576656e7473206f6e206e6f6d696e61746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682076616c7565206f6620746865206572612e34536c617368696e675370616e730001040500d9080400048c20536c617368696e67207370616e7320666f72207374617368206163636f756e74732e245370616e536c617368010104058508dd08800000000000000000000000000000000000000000000000000000000000000000083d01205265636f72647320696e666f726d6174696f6e2061626f757420746865206d6178696d756d20736c617368206f6620612073746173682077697468696e206120736c617368696e67207370616e2cb82061732077656c6c20617320686f77206d7563682072657761726420686173206265656e2070616964206f75742e584561726c69657374556e6170706c696564536c617368000010040004fc20546865206561726c696573742065726120666f72207768696368207765206861766520612070656e64696e672c20756e6170706c69656420736c6173682e48536e617073686f7456616c696461746f727300009101040008650120536e617073686f74206f662076616c696461746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e48536e617073686f744e6f6d696e61746f727300009101040008650120536e617073686f74206f66206e6f6d696e61746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e34517565756564456c65637465640000e10804000c650120546865206e6578742076616c696461746f72207365742e2041742074686520656e64206f6620616e206572612c206966207468697320697320617661696c61626c652028706f74656e7469616c6c792066726f6d20746865610120726573756c74206f6620616e206f6666636861696e20776f726b6572292c20697420697320696d6d6564696174656c7920757365642e204f74686572776973652c20746865206f6e2d636861696e20656c656374696f6e342069732065786563757465642e2c51756575656453636f726500000107040004b0205468652073636f7265206f66207468652063757272656e74205b60517565756564456c6563746564605d2e44457261456c656374696f6e5374617475730100e508040008490120466c616720746f20636f6e74726f6c2074686520657865637574696f6e206f6620746865206f6666636861696e20656c656374696f6e2e205768656e20604f70656e285f29602c207765206163636570746c20736f6c7574696f6e7320746f206265207375626d69747465642e54497343757272656e7453657373696f6e46696e616c01001d010400084d012054727565206966207468652063757272656e74202a2a706c616e6e65642a2a2073657373696f6e2069732066696e616c2e204e6f74652074686174207468697320646f6573206e6f742074616b65206572615820666f7263696e6720696e746f206163636f756e742e505065726d697373696f6e65644964656e74697479000104057ce908040004ec20456e74697469657320746861742061726520616c6c6f77656420746f2072756e206f70657261746f722f76616c696461746f72206e6f6465732e5856616c696461746f72436f6d6d697373696f6e4361700100950110000000000415012045766572792076616c696461746f722068617320636f6d6d697373696f6e20746861742073686f756c6420626520696e207468652072616e6765205b302c204361705d2e504d696e696d756d426f6e645468726573686f6c64010018400000000000000000000000000000000004d020546865206d696e696d756d20616d6f756e74207769746820776869636820612076616c696461746f722063616e20626f6e642e48536c617368696e67416c6c6f776564466f72010099010402003853746f7261676556657273696f6e0100ed08040610cc2054727565206966206e6574776f726b20686173206265656e20757067726164656420746f20746869732076657273696f6e2e7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e00a020546869732069732073657420746f2076362e302e3120666f72206e6577206e6574776f726b732e0115060189012c3853657373696f6e735065724572611010030000000470204e756d626572206f662073657373696f6e7320706572206572612e3c426f6e64696e674475726174696f6e10100700000004e4204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e48536c61736844656665724475726174696f6e101004000000140101204e756d626572206f662065726173207468617420736c6173686573206172652064656665727265642062792c20616674657220636f6d7075746174696f6e2e00bc20546869732073686f756c64206265206c657373207468616e2074686520626f6e64696e67206475726174696f6e2e2d012053657420746f203020696620736c61736865732073686f756c64206265206170706c69656420696d6d6564696174656c792c20776974686f7574206f70706f7274756e69747920666f723820696e74657276656e74696f6e2e44456c656374696f6e4c6f6f6b616865616410104b0000001c710120546865206e756d626572206f6620626c6f636b73206265666f72652074686520656e64206f6620746865206572612066726f6d20776869636820656c656374696f6e207375626d697373696f6e732061726520616c6c6f7765642e006d012053657474696e67207468697320746f207a65726f2077696c6c2064697361626c6520746865206f6666636861696e20636f6d7075746520616e64206f6e6c79206f6e2d636861696e207365712d70687261676d656e2077696c6c2420626520757365642e007501205468697320697320626f756e646564206279206265696e672077697468696e20746865206c6173742073657373696f6e2e2048656e63652c2073657474696e6720697420746f20612076616c7565206d6f7265207468616e207468659c206c656e677468206f6620612073657373696f6e2077696c6c20626520706f696e746c6573732e344d6178497465726174696f6e7310100a0000000c2901204d6178696d756d206e756d626572206f662062616c616e63696e6720697465726174696f6e7320746f2072756e20696e20746865206f6666636861696e207375626d697373696f6e2e00ec2049662073657420746f20302c2062616c616e63655f736f6c7574696f6e2077696c6c206e6f7420626520657865637574656420617420616c6c2e504d696e536f6c7574696f6e53636f726542756d7095011020a1070004610120546865207468726573686f6c64206f6620696d70726f76656d656e7420746861742073686f756c642062652070726f766964656420666f722061206e657720736f6c7574696f6e20746f2062652061636365707465642e804d61784e6f6d696e61746f72526577617264656450657256616c696461746f7210100008000010f820546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320726577617264656420666f7220656163682076616c696461746f722e00690120466f7220656163682076616c696461746f72206f6e6c79207468652060244d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732063616e20636c61696d2101207468656972207265776172642e2054686973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e5c4d617856616c696461746f725065724964656e74697479810210100905000cf4204d6178696d756d206e756d626572206f662076616c696461746f727320666f722065616368207065726d697373696f6e6564206964656e746974792e005901204d6178206e756d626572206f662076616c696461746f727320636f756e74203d20604d617856616c696461746f725065724964656e74697479202a2053656c663a3a76616c696461746f725f636f756e742829602e844d61785661726961626c65496e666c6174696f6e546f74616c49737375616e636518400080c6a47e8d03000000000000000000047101204d6178696d756d20616d6f756e74206f662060543a3a63757272656e63793a3a746f74616c5f69737375616e63652829602061667465722074686174206e6f6e2d696e666c6174656420726577617264732067657420706169642e444669786564596561726c79526577617264184000c0444a547f0000000000000000000004010120546f74616c2079656172207265776172647320746861742067657473207061696420647572696e6720666978656420726577617264207363686564756c652e2c4d696e696d756d426f6e64184040420f0000000000000000000000000004f0204d696e696d756d20616d6f756e74206f6620504f4c59582074686174206d75737420626520626f6e64656420666f722061206e657720626f6e642e01f10811204f6666656e63657301204f6666656e6365730c1c5265706f7274730001040524f508040004490120546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e58436f6e63757272656e745265706f727473496e6465780101080505f90865040400042901204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e485265706f72747342794b696e64496e64657801010405250128040018110120456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e00bc20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e004901204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f66690120646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e00019d010000121c53657373696f6e011c53657373696f6e1c2856616c696461746f7273010091010400047c205468652063757272656e7420736574206f662076616c696461746f72732e3043757272656e74496e646578010010100000000004782043757272656e7420696e646578206f66207468652073657373696f6e2e345175657565644368616e67656401001d01040008390120547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f7273a420686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e285175657565644b6579730100fd080400083d012054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b657973e02077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e4844697361626c656456616c696461746f727301003d040400148020496e6469636573206f662064697361626c65642076616c696461746f72732e003d01205468652076656320697320616c77617973206b65707420736f7274656420736f20746861742077652063616e2066696e642077686574686572206120676976656e2076616c696461746f722069733d012064697361626c6564207573696e672062696e617279207365617263682e204974206765747320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e73642061206e657720736574206f66206964656e7469746965732e204e6578744b65797300010405000d070400049c20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e204b65794f776e657200010405050900040004090120546865206f776e6572206f662061206b65792e20546865206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e01090701a10100010d091348417574686f72697479446973636f766572790000000000141c4772616e647061011c4772616e647061181453746174650100110904000490205374617465206f66207468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e676500001509040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000010040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c65640000a1030400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e3043757272656e745365744964010020200000000000000000085d0120546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c697469657329c420696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e30536574496453657373696f6e00010405201004001059012041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e00b82054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e01150701a50104384d6178417574686f7269746965731010a0860100045c204d617820417574686f72697469657320696e20757365011d091528486973746f726963616c00000000001620496d4f6e6c696e650120496d4f6e6c696e651038486561727462656174416674657201001010000000002c1d012054686520626c6f636b206e756d6265722061667465722077686963682069742773206f6b20746f2073656e64206865617274626561747320696e207468652063757272656e74242073657373696f6e2e0025012041742074686520626567696e6e696e67206f6620656163682073657373696f6e20776520736574207468697320746f20612076616c756520746861742073686f756c642066616c6c350120726f7567686c7920696e20746865206d6964646c65206f66207468652073657373696f6e206475726174696f6e2e20546865206964656120697320746f206669727374207761697420666f721901207468652076616c696461746f727320746f2070726f64756365206120626c6f636b20696e207468652063757272656e742073657373696f6e2c20736f207468617420746865a820686561727462656174206c61746572206f6e2077696c6c206e6f74206265206e65636573736172792e00390120546869732076616c75652077696c6c206f6e6c79206265207573656420617320612066616c6c6261636b206966207765206661696c20746f2067657420612070726f7065722073657373696f6e2d012070726f677265737320657374696d6174652066726f6d20604e65787453657373696f6e526f746174696f6e602c2061732074686f736520657374696d617465732073686f756c642062650101206d6f7265206163637572617465207468656e207468652076616c75652077652063616c63756c61746520666f7220604865617274626561744166746572602e104b65797301002109040004d0205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e485265636569766564486561727462656174730001080505a10329090400083d0120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206053657373696f6e496e6465786020616e64206041757468496e6465786020746fb02060577261707065724f70617175653c426f756e6465644f70617175654e6574776f726b53746174653e602e38417574686f726564426c6f636b730101080505b10810100000000008150120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206056616c696461746f7249643c543e6020746f20746865c8206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e01410701b9010440556e7369676e65645072696f726974792020ffffffffffffffff10f0204120636f6e66696775726174696f6e20666f722062617365207072696f72697479206f6620756e7369676e6564207472616e73616374696f6e732e0015012054686973206973206578706f73656420736f20746861742069742063616e2062652074756e656420666f7220706172746963756c61722072756e74696d652c207768656eb4206d756c7469706c652070616c6c6574732073656e6420756e7369676e6564207472616e73616374696f6e732e013d09176052616e646f6d6e657373436f6c6c656374697665466c6970016052616e646f6d6e657373436f6c6c656374697665466c6970043852616e646f6d4d6174657269616c0100650404000c610120536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e2054686973610120697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f664420746865206f6c6465737420686173682e0000000018105375646f01105375646f040c4b657901000080000000000000000000000000000000000000000000000000000000000000000004842054686520604163636f756e74496460206f6620746865207375646f206b65792e01610701dd010001410919144173736574011441737365747c1c5469636b65727301010402a44509840000000000000000000000000000000000000000000000000000000000000000000874205469636b657220726567697374726174696f6e2064657461696c732e7c20287469636b657229202d3e205469636b6572526567697374726174696f6e305469636b6572436f6e66696701007d070800000870205469636b657220726567697374726174696f6e20636f6e6669672e9420287469636b657229202d3e205469636b6572526567697374726174696f6e436f6e66696718546f6b656e7301010402a44909c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008e02044657461696c73206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e050120287469636b657229202d3e205365637572697479546f6b656e2064657461696c73205b72657475726e73205365637572697479546f6b656e207374727563745d2841737365744e616d657301010402a40102040008ec204173736574206e616d65206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e6020287469636b657229202d3e206041737365744e616d65602442616c616e63654f6601010802064d0918400000000000000000000000000000000008b42054686520746f74616c206173736574207469636b65722062616c616e636520706572206964656e746974792e6420287469636b65722c2044494429202d3e2042616c616e63652c4964656e7469666965727301010402a4f101040004b82041206d6170206f662061207469636b6572206e616d6520616e64206173736574206964656e746966696572732e50437573746f6d54797065496453657175656e63650100ed0110000000000cc420546865206e65787420604173736574547970653a3a437573746f6d6020494420696e207468652073657175656e63652e00d0204e756d6265727320696e207468652073657175656e63652073746172742066726f6d203120726174686572207468616e20302e2c437573746f6d547970657301010405ed0128040004f8204d61707320637573746f6d20617373657420747970652069647320746f20746865207265676973746572656420737472696e6720636f6e74656e74732e48437573746f6d5479706573496e76657273650101040228ed01100000000004610120496e7665727365206d6170206f662060437573746f6d5479706573602c2066726f6d207265676973746572656420737472696e6720636f6e74656e747320746f20637573746f6d2061737365742074797065206964732e3046756e64696e67526f756e6401010402a4e5010400089c20546865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e60207469636b6572202d3e2066756e64696e6720726f756e6450497373756564496e46756e64696e67526f756e640101040251091840000000000000000000000000000000000811012054686520746f74616c2062616c616e636573206f6620746f6b656e732069737375656420696e20616c6c207265636f726465642066756e64696e6720726f756e64732e8c20287469636b65722c2066756e64696e6720726f756e6429202d3e2062616c616e63651846726f7a656e01010402a41d01040008e82054686520736574206f662066726f7a656e2061737365747320696d706c656d656e7465642061732061206d656d62657273686970206d61702e3c207469636b6572202d3e20626f6f6c5c41737365744f776e65727368697052656c6174696f6e7301010806025509590904000888205469636b65727320616e6420746f6b656e206f776e656420627920612075736572842028757365722c207469636b657229202d3e2041737365744f776e657273686970384173736574446f63756d656e747301010802055d090902140000000000087c20446f63756d656e747320617474616368656420746f20616e2041737365747420287469636b65722c20646f635f696429202d3e20646f63756d656e74604173736574446f63756d656e7473496453657175656e636501010402a4050210000000000880205065722d7469636b657220646f63756d656e7420494420636f756e7465722e4c20287469636b657229202d3e20646f635f696438436c61737369635469636b65727300010402a46109040004f0205469636b657220726567697374726174696f6e2064657461696c73206f6e20506f6c796d61746820436c6173736963202f20457468657265756d2e4042616c616e63654f66417453636f7065010108060665091840000000000000000000000000000000000ccc2042616c616e636573206765742073746f726564206f6e20746865206261736973206f6620746865206053636f70654964602e9d01205269676874206e6f77206974206973206f6e6c792068656c7066756c20666f722074686520554920707572706f7365732062757420696e206675747572652069742063616e206265207573656420746f20646f206d697261636c6573206f6e2d636861696e2e88202853636f706549642c204964656e74697479496429203d3e2042616c616e63652e4041676772656761746542616c616e636501010802064d091840000000000000000000000000000000000825012053746f7265206167677265676174652062616c616e6365206f662074686f7365206964656e746974696573207468617420686173207468652073616d65206053636f70654964602e7820285469636b65722c2053636f7065496429203d3e2042616c616e63652e2453636f706549644f6601010802064d097c80000000000000000000000000000000000000000000000000000000000000000008dc20547261636b73207468652053636f70654964206f6620746865206964656e7469747920666f72206120676976656e207469636b65722e8420285469636b65722c204964656e74697479496429203d3e2053636f706549642e6444697361626c65496e766573746f72556e697175656e65737301010402a41d0104001031012044656369646573207768657468657220696e766573746f7220756e697175656e65737320726571756972656d656e7420697320656e666f7263656420666f7220746869732061737365742e8c206066616c736560206d65616e73207468617420697420697320656e666f726365642e0040205469636b6572203d3e20626f6f6c2e4c41737365744d6574616461746156616c7565730001080205690939020400047c204d65746174646174612076616c75657320666f7220616e2061737365742e6441737365744d6574616461746156616c756544657461696c73000108020569094102040004a02044657461696c7320666f7220616e2061737365742773204d657461646174612076616c7565732e6c41737365744d657461646174614c6f63616c4e616d65546f4b657900010802026d094d0204000488204173736574204d65746164617461204c6f63616c204e616d65202d3e204b65792e7041737365744d65746164617461476c6f62616c4e616d65546f4b657900010402490269020400048c204173736574204d6574616461746120476c6f62616c204e616d65202d3e204b65792e6c41737365744d657461646174614c6f63616c4b6579546f4e616d6500010802057109490204000488204173736574204d65746164617461204c6f63616c204b6579202d3e204e616d652e7041737365744d65746164617461476c6f62616c4b6579546f4e616d6500010405690249020400048c204173736574204d6574616461746120476c6f62616c204b6579202d3e204e616d652e5c41737365744d657461646174614c6f63616c537065637300010802057109510204000480204173736574204d65746164617461204c6f63616c204b65792073706563732e6041737365744d65746164617461476c6f62616c5370656373000104056902510204000484204173736574204d6574616461746120476c6f62616c204b65792073706563732e6441737365744d657461646174614e6578744c6f63616c4b657901010402a44d02200000000000000000047c204e657874204173736574204d65746164617461204c6f63616c204b65792e6841737365744d657461646174614e657874476c6f62616c4b6579010069022000000000000000000480204e657874204173736574204d6574616461746120476c6f62616c204b65792e3853746f7261676556657273696f6e01007509040004442053746f726167652076657273696f6e2e01650701e10118784d61784e756d6265724f66544d457874656e73696f6e466f724173736574101005000000004841737365744e616d654d61784c656e677468101080000000006446756e64696e67526f756e644e616d654d61784c656e677468101080000000006841737365744d657461646174614e616d654d61784c656e677468101000010000006c41737365744d6574616461746156616c75654d61784c656e677468101000200000007441737365744d65746164617461547970654465664d61784c656e677468101000200000000179091a4c4361706974616c446973747269627574696f6e014c4361706974616c446973747269627574696f6e0c34446973747269627574696f6e730001040275027d0204000c350120416c6c206361706974616c20646973747269627574696f6e732c207469656420746f207468656972207265737065637469766520636f72706f7261746520616374696f6e732028434173292e005c20284341496429203d3e20446973747269627574696f6e28486f6c64657250616964010104027d091d0104000c8c2048617320616e20617373657420686f6c646572206265656e2070616964207965743f00a42028434149642c2044494429202d3e2057617320444944207061696420696e2074686520434149643f3853746f7261676556657273696f6e01008109040004442053746f726167652076657273696f6e2e018507016d02000185091b28436865636b706f696e740128436865636b706f696e742c2c546f74616c537570706c79010108020589091840000000000000000000000000000000000cb420546f74616c20737570706c79206f662074686520746f6b656e2061742074686520636865636b706f696e742e00ec20287469636b65722c20636865636b706f696e74496429202d3e20746f74616c20737570706c7920617420676976656e20636865636b706f696e741c42616c616e636501010802058d091840000000000000000000000000000000000c882042616c616e6365206f66206120444944206174206120636865636b706f696e742e00050120287469636b65722c206469642c20636865636b706f696e7420494429202d3e2042616c616e6365206f66206120444944206174206120636865636b706f696e7450436865636b706f696e74496453657175656e636501010402a48d02200000000000000000108c20436865636b706f696e74732049442067656e657261746f722073657175656e63652ea8204944206f6620666972737420636865636b706f696e74206973203120696e7374656164206f6620302e007c20287469636b657229202d3e206e6f2e206f6620636865636b706f696e74733842616c616e63655570646174657301010802054d099109040008bc20436865636b706f696e747320776865726520612044494427732062616c616e63652077617320757064617465642ef020287469636b65722c2064696429202d3e205b636865636b706f696e7420494420776865726520757365722062616c616e6365206368616e6765645d2854696d657374616d70730101080205890920200000000000000000185c20436865636b706f696e742074696d657374616d70732e000901204576657279207363686564756c652d6f726967696e6174656420636865636b706f696e74206d6170732069747320494420746f20697473206475652074696d652e210120457665727920636865636b706f696e74206d616e75616c6c792063726561746564206d6170732069747320494420746f207468652074696d65206f66207265636f7264696e672e00d020287469636b657229202d3e2028636865636b706f696e7420494429202d3e20636865636b706f696e742074696d657374616d70585363686564756c65734d6178436f6d706c657869747901002020000000000000000008190120546865206d6178696d756d20636f6d706c657869747920616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365749c2028692e652e20605363686564756c6573602073746f72616765206974656d2062656c6f77292e485363686564756c65496453657175656e636501010402a4a1022000000000000000000cb420436865636b706f696e74207363686564756c652049442073657175656e636520666f72207469636b6572732e006020287469636b657229202d3e207363686564756c65204944245363686564756c657301010402a4950904000c8820436865636b706f696e74207363686564756c657320666f72207469636b6572732e005c20287469636b657229202d3e205b7363686564756c655d405363686564756c65526566436f756e740101080205990910100000000020010120486f77206d616e7920227374726f6e6722207265666572656e6365732061726520746865726520746f206120676976656e20605363686564756c654964603f00fc205468652070726573656e6365206f66206120227374726f6e6722207265666572656e63652c20696e207468652073656e7365206f66206052633c543e602ce020656e7461696c73207468617420746865207265666572656e636564207363686564756c652063616e6e6f742062652072656d6f7665642ed820546875732c206173206c6f6e6720617320607374726f6e675f7265665f636f756e74287363686564756c655f696429203e2030602cac206072656d6f76655f7363686564756c65287363686564756c655f696429602077696c6c206572726f722e00a820287469636b65722c207363686564756c6520494429202d3e207374726f6e672072656620636f756e74385363686564756c65506f696e747301010802059909910904000cc420416c6c2074686520636865636b706f696e7473206120676976656e207363686564756c65206f726967696e617465642e00a420287469636b65722c207363686564756c6520494429202d3e205b636865636b706f696e742049445d3853746f7261676556657273696f6e01009d09040004442053746f726167652076657273696f6e2e018d070185020001a1091c44436f6d706c69616e63654d616e616765720144436f6d706c69616e63654d616e616765720c404173736574436f6d706c69616e63657301010402a4a50908000004e820417373657420636f6d706c69616e636520666f722061207469636b657220285469636b6572202d3e204173736574436f6d706c69616e6365294854727573746564436c61696d49737375657201010402a4c102040004dc204c697374206f66207472757374656420636c61696d20697373756572205469636b6572202d3e20497373756572204964656e746974793853746f7261676556657273696f6e0100a909040004442053746f726167652076657273696f6e2e01950701a50204584d6178436f6e646974696f6e436f6d706c65786974791010320000000001ad091d3c436f72706f72617465416374696f6e013c436f72706f72617465416374696f6e24404d617844657461696c734c656e67746801001010000000001c5d012044657465726d696e657320746865206d6178696d756d206e756d626572206f6620627974657320746861742074686520667265652d666f726d206064657461696c7360206f6620612043412063616e2073746f72652e002901204e6f746520746861742074686973206973206e6f7420746865206e756d626572206f662060636861726073206f7220746865206e756d626572206f66205b6772617068656d65735d2e4101205768696c652074686973206d617920626520756e6e61747572616c20696e207465726d73206f662068756d616e20756e6465727374616e64696e67206f66206120746578742773206c656e6774682c6501206974206d6f726520636c6f73656c79207265666c656374732061637475616c2073746f7261676520636f73747320286027612760206973206368656170657220746f2073746f7265207468616e20616e20656d6f6a69292e00d0205b6772617068656d65735d3a2068747470733a2f2f656e2e77696b6970656469612e6f72672f77696b692f4772617068656d655c44656661756c745461726765744964656e74697469657301010402a4dd0208000110f020546865206964656e7469746965732074617267657465642062792064656661756c7420666f722043417320666f722074686973207469636b65722c8c2065697468657220746f206265206578636c75646564206f7220696e636c756465642e007820287469636b6572203d3e20746172676574206964656e746974696573295444656661756c7457697468686f6c64696e6754617801010402a48102100000000020ad01205468652064656661756c7420616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722074686973207469636b6572207768656e20646973747269627574696e67206469766964656e64732e00350120546f20756e6465727374616e642077697468686f6c64696e67207461782c20652e672e2c206c6574277320617373756d65207468617420796f7520686f6c642041434d45207368617265732ec42041434d45206e6f77206465636964657320746f2064697374726962757465203130302053454b20746f20416c6963652e590120416c696365206c6976657320696e2053776564656e2c20736f20536b617474657665726b6574202874686520537765646973682074617820617574686f72697479292077616e747320333025206f6620746861742e5d01205468656e2074686f736520313030202a2033302520617265207769746868656c642066726f6d20416c6963652c20616e642041434d452077696c6c2073656e64207468656d20746f20536b617474657665726b65742e006820287469636b6572203d3e202520746f2077697468686f6c64294444696457697468686f6c64696e6754617801010402a4fd0204001049012054686520616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722061206365727461696e207469636b65722078204449442e6d0120496620616e20656e7472792065786973747320666f722061206365727461696e204449442c206974206f7665727269646573207468652064656661756c7420696e206044656661756c7457697468686f6c64696e67546178602e008820287469636b6572203d3e205b286469642c202520746f2077697468686f6c64295d304341496453657175656e636501010402a47902100000000008b420546865206e657874207065722d605469636b65726020434120494420696e207468652073657175656e63652e4d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652e40436f72706f72617465416374696f6e730001080205b109e9020400146c20416c6c207265636f72646564204341732074687573206661722ea4204f6e6c792067656e6572696320696e666f726d6174696f6e2069732073746f72656420686572652e7d01205370656369666963206043414b696e6460732c20652e672e2c2062656e656669747320616e6420636f72706f726174652062616c6c6f74732c206d617920757365206164646974696f6e616c206f6e2d636861696e2073746f726167652e00b420287469636b6572203d3e206c6f63616c204944203d3e2074686520636f72706f7261746520616374696f6e29244341446f634c696e6b0101040275020903040014d0204173736f63696174696f6e732066726f6d2043417320746f2060446f63756d656e74607320766961207468656972204944732e5c202843414964203d3e205b446f63756d656e7449645d29000501205468652060436f72706f72617465416374696f6e7360206d61702073746f72657320605469636b6572203d3e204c6f63616c4964203d3e20546865204341602c250120736f2077652063616e20696e66657220605469636b6572203d3e2043414964602e205468657265666f72652c20776520646f6e2774206e656564206120646f75626c65206d61702e1c44657461696c730101040275020503040008e8204173736f6369617465732064657461696c7320696e20667265652d666f726d207465787420776974682061204341206279206974732049442e50202843414964203d3e20434144657461696c73293853746f7261676556657273696f6e0100b509040004442053746f726167652076657273696f6e2e01990701d90208304d61785461726765744964731010e803000000284d6178446964576874731010e80300000001b9091e3c436f72706f7261746542616c6c6f74013c436f72706f7261746542616c6c6f7418144d65746173000104027502150304000c80204d65746164617461206f66206120636f72706f726174652062616c6c6f742e005420284341496429203d3e2042616c6c6f744d6574612854696d6552616e6765730001040275021103040010e42054696d652064657461696c73206f66206120636f72706f726174652062616c6c6f74206173736f636961746564207769746820612043412ed0205468652074696d657374616d70732064656e6f7465207768656e20766f74696e672073746172747320616e642073746f70732e006820284341496429203d3e2042616c6c6f7454696d6552616e6765404d6f74696f6e4e756d43686f696365730101040275023106040024c82053746f72657320686f77206d616e792063686f696365732074686572652061726520696e2065616368206d6f74696f6e2e00250120417420616c6c2074696d65732c2074686520696e76617269616e7420686f6c6473207468617420606d6f74696f6e5f63686f696365735b6964785d6020697320657175616c20746f310120606d657461732e756e7772617028292e6d6f74696f6e735b6964785d2e63686f696365732e6c656e2829602e20546861742069732c2074686973206973206a75737420612063616368652c1101207573656420746f2061766f6964206665746368696e6720616c6c20746865206d6f74696f6e732077697468207468656972206173736f6369617465642074657874732e0001012060753136602063686f696365732073686f756c64206265206d6f7265207468616e20656e6f75676820746f20666974207265616c207573652063617365732e00b020284341496429203d3e204e756d626572206f662063686f6963657320696e2065616368206d6f74696f6e2e0c5243560101040275021d01040010dc2049732072616e6b65642063686f69636520766f74696e6720285243562920656e61626c656420666f7220746869732062616c6c6f743f650120466f7220616e20756e6465727374616e64696e67206f6620686f77205243562069732068616e646c65642c20736565206e6f7465206f6e206042616c6c6f74566f7465602773206066616c6c6261636b60206669656c642e003c20284341496429203d3e20626f6f6c1c526573756c7473010104027502bd0904001cb02053746f7265732074686520746f74616c20766f74652074616c6c79206f6e20656163682063686f6963652e006820524356206973206e6f74206163636f756e74656420666f722cd02061732074686572652061726520746f6f206d616e792077616e747320746f20696e74657270726574207468652067726170682c9c20616e64206265636175736520697420776f756c64206e6f7420626520656666696369656e742e008420284341496429203d3e205b63757272656e7420766f746520776569676874735d14566f74657301010802067d093503040018ac2053746f726573206561636820444944277320766f74657320696e206120676976656e2062616c6c6f742ef8205365652074686520646f63756d656e746174696f6e206f66206042616c6c6f74566f74656020666f72206e6f746573206f6e2073656d616e746963732e008420284341496429203d3e202844494429203d3e205b766f7465207765696768745d001d012055736572206d75737420656e746572203020766f746520776569676874206966207468657920646f6e27742077616e7420746f20766f746520666f7220612063686f6963652e01b107010d030001c1091f2c5065726d697373696f6e730000000001c509201050697073011050697073544c5072756e65486973746f726963616c5069707301001d01040004fc2044657465726d696e6573207768657468657220686973746f726963616c20504950206461746120697320706572736973746564206f722072656d6f766564584d696e696d756d50726f706f73616c4465706f7369740100184000000000000000000000000000000000041d0120546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f7220636f6d6d756e69747920504950206372656174696f6e2e5844656661756c74456e6163746d656e74506572696f6401001010000000000439012044656661756c7420656e6163746d656e7420706572696f6420746861742077696c6c2062652075736520616674657220612070726f706f73616c2069732061636365707465642062792047432e4050656e64696e6750697045787069727901004501040108f420486f77206d616e7920626c6f636b732077696c6c2069742074616b652c2061667465722061206050656e64696e67602050495020657870697265732cf420617373756d696e6720697420686173206e6f74207472616e736974696f6e656420746f20616e6f74686572206050726f706f73616c5374617465603f3c4d6178506970536b6970436f756e740100080400048901204d6178696d756d2074696d65732061205049502063616e20626520736b6970706564206265666f72652074726967676572696e67206043616e6e6f74536b69705069706020696e2060656e6163745f736e617073686f745f726573756c7473602e384163746976655069704c696d6974010010100000000008c420546865206d6178696d756d20616c6c6f776564206e756d62657220666f722060416374697665506970436f756e74602e0101204f6e636520726561636865642c206e657720504950732063616e6e6f742062652070726f706f73656420627920636f6d6d756e697479206d656d626572732e34506970496453657175656e63650100510310000000000409012050726f706f73616c7320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f662050495073206f66662d636861696e2e48536e617073686f74496453657175656e6365010065031000000000041d0120536e617073686f747320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f6620736e617073686f7473206f66662d636861696e2e38416374697665506970436f756e74010010100000000004c820546f74616c20636f756e74206f662063757272656e742070656e64696e67206f72207363686564756c656420504950732e4050726f706f73616c4d65746164617461000104055103c9090400049820546865206d65746164617461206f6620746865206163746976652070726f706f73616c732e204465706f736974730101080505cd09d109c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008842054686f73652077686f2068617665206c6f636b65642061206465706f7369742e8c2070726f706f73616c202869642c2070726f706f73657229202d3e206465706f7369742450726f706f73616c73000104055103d509040008c42041637475616c2070726f706f73616c20666f72206120676976656e2069642c20696620697427732063757272656e742e602070726f706f73616c206964202d3e2070726f706f73616c3850726f706f73616c526573756c74010104055103d909a00000000000000000000000000000000000000000000000000000000000000000000000000000000008d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e682070726f706f73616c206964202d3e20766f746520636f756e743450726f706f73616c566f7465730001080505cd09dd09040008050120566f746573207065722050726f706f73616c20616e64206163636f756e742e205573656420746f2061766f696420646f75626c6520766f74652069737375652e7c202870726f706f73616c2069642c206163636f756e7429202d3e20566f746534506970546f5363686564756c6500010405510310040004fc204d617073205049507320746f2074686520626c6f636b20617420776869636820746865792077696c6c2062652065786563757465642c20696620616e792e244c697665517565756501006903040018cc2041206c697665207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029a0206f662070656e64696e67205049507320757020746f2074686520616374697665206c696d69742ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e00450120556e6c696b652060536e617073686f745175657565602c2074686973207175657565206973206c6976652c2067657474696e6720757064617465642077697468206561636820766f746520636173742e2d012054686520736e617073686f74206973207468657265666f726520657373656e7469616c6c79206120706f696e742d696e2d74696d6520636c6f6e65206f6620746869732071756575652e34536e617073686f74517565756501006903040014590120546865207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029206f6620504950732061742074686520706f696e74206f6620736e617073686f7474696e672ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e000901204120717565756564205049502063616e20626520736b69707065642e20446f696e6720736f2062756d70732074686520607069705f736b69705f636f756e74602e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e30536e617073686f744d6574610000e109040004bc20546865206d65746164617461206f662074686520736e617073686f742c206966207468657265206973206f6e652e30506970536b6970436f756e7401010405510308040008d020546865206e756d626572206f662074696d65732061206365727461696e2050495020686173206265656e20736b69707065642e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e34436f6d6d69747465655069707301008103040008d420416c6c206578697374696e672050495073207768657265207468652070726f706f736572206973206120636f6d6d69747465652e39012054686973206c6973742069732061206361636865206f6620616c6c2069647320696e206050726f706f73616c73602077697468206050726f706f7365723a3a436f6d6d6974746565285f29602e3853746f7261676556657273696f6e0100e50904000001b5070145030001e9092124506f7274666f6c696f0124506f7274666f6c696f244c4e657874506f7274666f6c696f4e756d626572010104067ce420010000000000000004cc20546865206e65787420706f7274666f6c696f2073657175656e6365206e756d626572206f6620616e206964656e746974792e28506f7274666f6c696f730101080605ed09890304000c41012054686520736574206f66206578697374696e6720706f7274666f6c696f732077697468207468656972206e616d65732e2049662061206365727461696e2070616972206f6620612044494420616e64590120706f7274666f6c696f206e756d626572206d61707320746f20604e6f6e6560207468656e2073756368206120706f7274666f6c696f20646f65736e27742065786973742e20436f6e76657273656c792c206966206135012070616972206d61707320746f2060536f6d65286e616d652960207468656e2073756368206120706f7274666f6c696f2065786973747320616e642069732063616c6c656420606e616d65602e304e616d65546f4e756d6265720101080602f109e420010000000000000008e420496e7665727365206d6170206f662060506f7274666f6c696f7360207573656420746f20656e737572652062696a6563746976697469792ca420616e6420756e697175656e657373206f66206e616d657320696e2060506f7274666f6c696f73602e4c506f7274666f6c696f4173736574436f756e7401010405dc2020000000000000000004fc20486f77206d616e79206173736574732077697468206e6f6e2d7a65726f2062616c616e6365207468697320706f7274666f6c696f20636f6e7461696e732e58506f7274666f6c696f417373657442616c616e6365730101080502f5091840000000000000000000000000000000000488205468652061737365742062616c616e636573206f6620706f7274666f6c696f732e54506f7274666f6c696f4c6f636b65644173736574730101080502f50918400000000000000000000000000000000008a020416d6f756e74206f6620617373657473206c6f636b656420696e206120706f7274666f6c696f2e2d01205468657365206173736574732073686f7720757020696e20706f7274666f6c696f2062616c616e6365206275742063616e206e6f74206265207472616e7366657272656420617761792e48506f7274666f6c696f437573746f6469616e00010405dc7c04000481012054686520637573746f6469616e206f66206120706172746963756c617220706f7274666f6c696f2e204e6f6e6520696d706c696573207468617420746865206964656e74697479206f776e65722069732074686520637573746f6469616e2e4c506f7274666f6c696f73496e437573746f64790101080605f9091d0104000c550120547261636b7320616c6c2074686520706f7274666f6c696f7320696e20637573746f6479206f66206120706172746963756c6172206964656e746974792e204f6e6c79207573656420627920746865205549732ea501205768656e206074727565602069732073746f726564206173207468652076616c756520666f72206120676976656e2060286469642c2070696429602c206974206d65616e73207468617420607069646020697320696e20637573746f6479206f662060646964602ea501206066616c7365602076616c75657320617265206e65766572206578706c696369746c792073746f72656420696e20746865206d61702c20616e642061726520696e737465616420696e6665727265642062792074686520616273656e6365206f662061206b65792e3853746f7261676556657273696f6e0100fd09040004442053746f726167652076657273696f6e2e01c5070185030001010a222c50726f746f636f6c466565012c50726f746f636f6c4665650820426173654665657301010405d50718400000000000000000000000000000000004150120546865206d617070696e67206f66206f7065726174696f6e206e616d657320746f2074686520626173652066656573206f662074686f7365206f7065726174696f6e732e2c436f656666696369656e7401009903200100000001000000041501205468652066656520636f656666696369656e74206173206120706f73697469766520726174696f6e616c20286e756d657261746f722c2064656e6f6d696e61746f72292e01d1070195030001050a23245363686564756c657201245363686564756c65720c184167656e64610101040510090a0400044d01204974656d7320746f2062652065786563757465642c20696e64657865642062792074686520626c6f636b206e756d626572207468617420746865792073686f756c64206265206578656375746564206f6e2e184c6f6f6b75700001040528a1030400040101204c6f6f6b75702066726f6d206964656e7469747920746f2074686520626c6f636b206e756d62657220616e6420696e646578206f6620746865207461736b2e3853746f7261676556657273696f6e01002d0a04000c7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e0098204e6577206e6574776f726b732073746172742077697468206c6173742076657273696f6e2e01d907019d0308344d6178696d756d576569676874202000806e877401000008450120546865206d6178696d756d207765696768742074686174206d6179206265207363686564756c65642070657220626c6f636b20666f7220616e7920646973706174636861626c6573206f66206c657373a4207072696f72697479207468616e20607363686564756c653a3a484152445f444541444c494e45602e504d61785363686564756c6564506572426c6f636b101032000000081d0120546865206d6178696d756d206e756d626572206f66207363686564756c65642063616c6c7320696e2074686520717565756520666f7220612073696e676c6520626c6f636b2edc204e6f74207374726963746c7920656e666f726365642c20627574207573656420666f722077656967687420657374696d6174696f6e2e01310a2428536574746c656d656e740128536574746c656d656e74442456656e7565496e666f00010405a903350a0400049820496e666f2061626f757420612076656e75652e2076656e75655f6964202d3e2076656e75651c44657461696c7301010405a903ad03040008e420467265652d666f726d20746578742061626f757420612076656e75652e2076656e75655f6964202d3e206056656e756544657461696c736060204f6e6c79206e656564656420666f72207468652055492e4456656e7565496e737472756374696f6e730101080505390a410100107020496e737472756374696f6e7320756e64657220612076656e75652e60204f6e6c79206e656564656420666f72207468652055492e00842076656e75655f6964202d3e20696e737472756374696f6e5f6964202d3e2028293056656e75655369676e65727301010805053d0a1d01040004e4205369676e65727320616c6c6f776564206279207468652076656e75652e202876656e75655f69642c207369676e657229202d3e20626f6f6c285573657256656e756573010104057ccd030400047101204172726179206f662076656e756573206372656174656420627920616e206964656e746974792e204f6e6c79206e656564656420666f72207468652055492e204964656e746974794964202d3e205665633c76656e75655f69643e48496e737472756374696f6e44657461696c7301010405b503410a540000000000000000000000000000000000000000000411012044657461696c732061626f757420616e20696e737472756374696f6e2e20696e737472756374696f6e5f6964202d3e20696e737472756374696f6e5f64657461696c733c496e737472756374696f6e4c6567730101080505490ac10379010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ec204c65677320756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656750496e737472756374696f6e4c65675374617475730101080505490a4d0a040004310120537461747573206f662061206c656720756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656753746174757364496e737472756374696f6e41666669726d7350656e64696e6701010405b50320200000000000000000048101204e756d626572206f662061666669726d6174696f6e732070656e64696e67206265666f726520696e737472756374696f6e2069732065786563757465642e20696e737472756374696f6e5f6964202d3e2061666669726d5f70656e64696e673c41666669726d7352656365697665640101080505510a550a040004990120547261636b732061666669726d6174696f6e7320726563656976656420666f7220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c20636f756e7465725f706172747929202d3e2041666669726d6174696f6e537461747573405573657241666669726d6174696f6e730101080505590a550a04000855012048656c70732061207573657220747261636b2074686569722070656e64696e6720696e737472756374696f6e7320616e642061666669726d6174696f6e7320286f6e6c79206e656564656420666f72205549292ed42028636f756e7465725f70617274792c20696e737472756374696f6e5f696429202d3e2041666669726d6174696f6e5374617475733052656365697074735573656401010805026d081d01040004150120547261636b7320726564656d7074696f6e206f662072656365697074732e20287369676e65722c20726563656970745f75696429202d3e20726563656970745f757365643856656e756546696c746572696e6701010402a41d01040004fd0120547261636b73206966206120746f6b656e2068617320656e61626c65642066696c746572696e672076656e75657320746861742063616e2063726561746520696e737472756374696f6e7320696e766f6c76696e6720746865697220746f6b656e2e205469636b6572202d3e2066696c746572696e675f656e61626c65643856656e7565416c6c6f774c69737401010802055d0a1d01040008c5012056656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c6172207469636b65722e204f6e6c7920757365642069662066696c746572696e6720697320656e61626c65642e7820287469636b65722c2076656e75655f696429202d3e20616c6c6f7765643056656e7565436f756e7465720100a903200000000000000000041901204e756d626572206f662076656e75657320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d6265722948496e737472756374696f6e436f756e7465720100b503200000000000000000043101204e756d626572206f6620696e737472756374696f6e7320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d626572293853746f7261676556657273696f6e0100610a040004442053746f726167652076657273696f6e2e01e10701a5030001650a25285374617469737469637301285374617469737469637314404163746976654173736574537461747301010402d503f907040004d1012041637469766520737461747320666f722061207469636b65722f636f6d70616e792e202054686572652073686f756c642062652061206d6178206c696d6974206f6e20746865206e756d626572206f662061637469766520737461747320666f722061207469636b65722f636f6d70616e792e28417373657453746174730101080202690a18400000000000000000000000000000000004342041737365742073746174732e6041737365745472616e73666572436f6d706c69616e63657301010402d503710a080000043d01204173736574207472616e7366657220636f6d706c69616e636520666f722061207469636b65722028417373657453636f7065202d3e2041737365745472616e73666572436f6d706c69616e6365297c5472616e73666572436f6e646974696f6e4578656d7074456e7469746965730101080202750a1d01040004c420456e746974696573206578656d70742066726f6d2061205472616e7366657220436f6d706c69616e63652072756c652e3853746f7261676556657273696f6e0100790a0400046c2053746f72616765206d6967726174696f6e2076657273696f6e2e01f50701d10308404d61785374617473506572417373657410100a00000000744d61785472616e73666572436f6e646974696f6e73506572417373657410100400000000017d0a260c53746f010c53746f0c2c46756e64726169736572730001080205810a2504040008b020416c6c2066756e64726169736572732074686174206172652063757272656e746c792072756e6e696e672e9820287469636b65722c2066756e647261697365725f696429202d3e2046756e647261697365723c46756e64726169736572436f756e7401010402a41d04200000000000000000049c20546f74616c2066756e6472616973657273206372656174656420666f72206120746f6b656e2e3c46756e647261697365724e616d65730101080205810a2104040008b4204e616d6520666f72207468652046756e647261697365722e204f6e6c792075736564206f6666636861696e2eac20287469636b65722c2066756e647261697365725f696429202d3e2046756e64726169736572206e616d650109080119040001850a27205472656173757279000119080135040001890a281c5574696c697479011c5574696c69747904184e6f6e6365730101040500202000000000000000000001250801390400018d0a2910426173650001310801490404184d61784c656e1010000800000001910a2a3845787465726e616c4167656e7473013845787465726e616c4167656e747314304147496453657175656e636501010402a41901100000000010b420546865206e657874207065722d605469636b65726020414720494420696e207468652073657175656e63652e004d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652c90207768696368207374617274732066726f6d20312c20726174686572207468616e20302e1c4167656e744f6601010802025509410100042901204d61707320616e206167656e742028604964656e746974794964602920746f20616c6c20616c6c20605469636b6572607320746865792062656c6f6e6720746f2c20696620616e792e3047726f75704f664167656e7400010802054d0915010400043501204d617073206167656e74732028604964656e746974794964602920666f72206120605469636b65726020746f207768617420414720746865792062656c6f6e6720746f2c20696620616e792e344e756d46756c6c4167656e747301010402a410100000000004dc204d617073206120605469636b65726020746f20746865206e756d626572206f66206046756c6c60206167656e747320666f722069742e4047726f75705065726d697373696f6e730001080205950ab40400045d0120466f7220637573746f6d20414773206f66206120605469636b6572602c206d61707320746f2077686174207065726d697373696f6e7320616e206167656e7420696e207468617420414720776f756c6420686176652e0135080151040001990a2b1c52656c61796572011c52656c61796572042453756273696469657300010402009d0a040018ec20546865207375627369647920666f7220612060757365725f6b657960206966207468657920617265206265696e6720737562736964697365642c882061732061206d61702060757365725f6b657960203d3e206053756273696479602e0009012041206b65792063616e206f6e6c792068617665206f6e65207375627369647920617420612074696d652e2020546f206368616e67652073756273696469736572731d012061206b6579206e6565647320746f2063616c6c206072656d6f76655f706179696e675f6b65796020746f2072656d6f7665207468652063757272656e7420737562736964792ca4206265666f726520746865792063616e206163636570742061206e657720737562736964697365722e0139080155040001a10a2c1c52657761726473011c52657761726473042849746e52657761726473000104020041080400040101204d6170206f66202849746e204164647265737320604163636f756e7449646029202d3e2028526577617264206049746e52657761726453746174757360292e013d080159040001a50a2d24546573745574696c730124546573745574696c7300014508015d040001a90a32ad0a042040436865636b5370656356657273696f6eb50a1038436865636b547856657273696f6eb90a1030436865636b47656e65736973bd0a2438436865636b4d6f7274616c697479c10a2428436865636b4e6f6e6365c90a41012c436865636b576569676874cd0a4101604368617267655472616e73616374696f6e5061796d656e74d50a41014453746f726543616c6c4d65746164617461d90a4101dd0a","id":"1"} +{"jsonrpc":"2.0","result":"0x6d6574610ed10a000c1c73705f636f72651863727970746f2c4163636f756e7449643332000004000401205b75383b2033325d0000040000032000000008000800000503000c08306672616d655f73797374656d2c4163636f756e74496e666f0814496e64657801102c4163636f756e74446174610114001401146e6f6e6365100114496e646578000124636f6e73756d657273100120526566436f756e7400012470726f766964657273100120526566436f756e7400012c73756666696369656e7473100120526566436f756e740001106461746114012c4163636f756e74446174610000100000050500141064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e6365732c4163636f756e744461746100001001106672656518011c42616c616e6365000120726573657276656418011c42616c616e636500012c6d6973635f66726f7a656e18011c42616c616e63650001286665655f66726f7a656e18011c42616c616e636500001800000507001c0c346672616d655f737570706f72741c77656967687473405065724469737061746368436c6173730404540120000c01186e6f726d616c2001045400012c6f7065726174696f6e616c200104540001246d616e6461746f727920010454000020000005060024083c7072696d69746976655f74797065731048323536000004000401205b75383b2033325d00002800000208002c102873705f72756e74696d651c67656e6572696318646967657374184469676573740410486173680124000401106c6f67733001545665633c4469676573744974656d3c486173683e3e000030000002340034102873705f72756e74696d651c67656e6572696318646967657374284469676573744974656d0410486173680124011c3c4368616e67657354726965526f6f740400240110486173680002002850726552756e74696d650800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e00060024436f6e73656e7375730800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e000400105365616c0800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e000500444368616e676573547269655369676e616c04003c01444368616e676573547269655369676e616c000700144f74686572040028011c5665633c75383e0000006452756e74696d65456e7669726f6e6d656e745570646174656400080000380000030400000008003c102873705f72756e74696d651c67656e6572696318646967657374444368616e676573547269655369676e616c000104404e6577436f6e66696775726174696f6e04004001804f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e000000004004184f7074696f6e04045401440108104e6f6e6500000010536f6d650400440000010000440c1c73705f636f7265306368616e6765735f74726965604368616e67657354726965436f6e66696775726174696f6e000008013c6469676573745f696e74657276616c10010c7533320001346469676573745f6c6576656c7310010c7533320000480000024c004c08306672616d655f73797374656d2c4576656e745265636f7264080445015004540124000c011470686173656104011450686173650001146576656e7450010445000118746f70696373650401185665633c543e0000500c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d65144576656e7400019c1853797374656d04005401706672616d655f73797374656d3a3a4576656e743c52756e74696d653e0000001c496e6469636573040070017870616c6c65745f696e64696365733a3a4576656e743c52756e74696d653e0003002042616c616e636573040074017c70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d653e000500204964656e7469747904008c017c70616c6c65745f6964656e746974793a3a4576656e743c52756e74696d653e0007004c4364645365727669636550726f76696465727304001d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365323e00080044506f6c796d657368436f6d6d69747465650400290101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365313e0009004c436f6d6d69747465654d656d6265727368697004003d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365313e000a0048546563686e6963616c436f6d6d69747465650400450101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365333e000b0070546563686e6963616c436f6d6d69747465654d656d6265727368697004004d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365333e000c004055706772616465436f6d6d69747465650400550101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365343e000d006855706772616465436f6d6d69747465654d656d6265727368697004005d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365343e000e00204d756c746953696704006501017c70616c6c65745f6d756c74697369673a3a4576656e743c52756e74696d653e000f001842726964676504007101017470616c6c65745f6272696467653a3a4576656e743c52756e74696d653e0010001c5374616b696e6704008501017870616c6c65745f7374616b696e673a3a4576656e743c52756e74696d653e001100204f6666656e63657304009501015870616c6c65745f6f6666656e6365733a3a4576656e740012001c53657373696f6e04009d01015470616c6c65745f73657373696f6e3a3a4576656e740013001c4772616e6470610400a101015470616c6c65745f6772616e6470613a3a4576656e7400150020496d4f6e6c696e650400b501018070616c6c65745f696d5f6f6e6c696e653a3a4576656e743c52756e74696d653e001700105375646f0400d901016c70616c6c65745f7375646f3a3a4576656e743c52756e74696d653e0019001441737365740400dd01017070616c6c65745f61737365743a3a4576656e743c52756e74696d653e001a004c4361706974616c446973747269627574696f6e04006902018870616c6c65745f6361706974616c5f646973747269627574696f6e3a3a4576656e74001b0028436865636b706f696e7404008102016070616c6c65745f636865636b706f696e743a3a4576656e74001c0044436f6d706c69616e63654d616e616765720400a102018070616c6c65745f636f6d706c69616e63655f6d616e616765723a3a4576656e74001d003c436f72706f72617465416374696f6e0400d502017c70616c6c65745f636f72706f726174655f616374696f6e733a3a4576656e74001e003c436f72706f7261746542616c6c6f7404000903017870616c6c65745f636f72706f726174655f62616c6c6f743a3a4576656e74001f00105069707304004103016c70616c6c65745f706970733a3a4576656e743c52756e74696d653e00210024506f7274666f6c696f04008103015c70616c6c65745f706f7274666f6c696f3a3a4576656e740022002c50726f746f636f6c46656504009103018c70616c6c65745f70726f746f636f6c5f6665653a3a4576656e743c52756e74696d653e002300245363686564756c657204009903018070616c6c65745f7363686564756c65723a3a4576656e743c52756e74696d653e00240028536574746c656d656e740400a103018470616c6c65745f736574746c656d656e743a3a4576656e743c52756e74696d653e00250028537461746973746963730400cd03016070616c6c65745f737461746973746963733a3a4576656e740026000c53746f04001504016870616c6c65745f73746f3a3a4576656e743c52756e74696d653e00270020547265617375727904003104017c70616c6c65745f74726561737572793a3a4576656e743c52756e74696d653e0028001c5574696c69747904003504015470616c6c65745f7574696c6974793a3a4576656e74002900104261736504004504014870616c6c65745f626173653a3a4576656e74002a003845787465726e616c4167656e747304004d04017470616c6c65745f65787465726e616c5f6167656e74733a3a4576656e74002b001c52656c6179657204005104017870616c6c65745f72656c617965723a3a4576656e743c52756e74696d653e002c001c5265776172647304005504017870616c6c65745f726577617264733a3a4576656e743c52756e74696d653e002d0024546573745574696c7304005904018470616c6c65745f746573745f7574696c733a3a4576656e743c52756e74696d653e00320000540c306672616d655f73797374656d1870616c6c6574144576656e740404540001184045787472696e7369635375636365737304005801304469737061746368496e666f000004b4416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e205c5b696e666f5c5d3c45787472696e7369634661696c6564080064013444697370617463684572726f7200005801304469737061746368496e666f00010490416e2065787472696e736963206661696c65642e205c5b6572726f722c20696e666f5c5d2c436f64655570646174656400020450603a636f6465602077617320757064617465642e284e65774163636f756e740400000130543a3a4163636f756e7449640003047841206e6577205c5b6163636f756e745c5d2077617320637265617465642e344b696c6c65644163636f756e740400000130543a3a4163636f756e74496400040468416e205c5b6163636f756e745c5d20776173207265617065642e2052656d61726b65640800000130543a3a4163636f756e744964000024011c543a3a48617368000504d04f6e206f6e2d636861696e2072656d61726b2068617070656e65642e205c5b6f726967696e2c2072656d61726b5f686173685c5d04704576656e7420666f72207468652053797374656d2070616c6c65742e580c346672616d655f737570706f72741c77656967687473304469737061746368496e666f00000c0118776569676874200118576569676874000114636c6173735c01344469737061746368436c617373000120706179735f6665656001105061797300005c0c346672616d655f737570706f72741c77656967687473344469737061746368436c61737300010c184e6f726d616c0000002c4f7065726174696f6e616c000100244d616e6461746f727900020000600c346672616d655f737570706f72741c7765696768747310506179730001080c596573000000084e6f0001000064082873705f72756e74696d653444697370617463684572726f72000120144f746865720000003043616e6e6f744c6f6f6b7570000100244261644f726967696e000200184d6f64756c65080114696e64657808010875380001146572726f72080108753800030044436f6e73756d657252656d61696e696e670004002c4e6f50726f76696465727300050014546f6b656e0400680128546f6b656e4572726f720006002841726974686d6574696304006c013c41726974686d657469634572726f720007000068082873705f72756e74696d6528546f6b656e4572726f7200011c1c4e6f46756e647300000020576f756c644469650001003042656c6f774d696e696d756d0002003043616e6e6f7443726561746500030030556e6b6e6f776e41737365740004001846726f7a656e0005002c556e737570706f72746564000600006c082873705f72756e74696d653c41726974686d657469634572726f7200010c24556e646572666c6f77000000204f766572666c6f77000100384469766973696f6e42795a65726f00020000700c3870616c6c65745f696e64696365731870616c6c6574144576656e7404045400010c34496e64657841737369676e65640800000130543a3a4163636f756e744964000010013c543a3a4163636f756e74496e646578000004b041206163636f756e7420696e646578207761732061737369676e65642e205c5b696e6465782c2077686f5c5d28496e6465784672656564040010013c543a3a4163636f756e74496e646578000104e441206163636f756e7420696e64657820686173206265656e2066726565642075702028756e61737369676e6564292e205c5b696e6465785c5d2c496e64657846726f7a656e080010013c543a3a4163636f756e74496e6465780000000130543a3a4163636f756e744964000204250141206163636f756e7420696e64657820686173206265656e2066726f7a656e20746f206974732063757272656e74206163636f756e742049442e205c5b696e6465782c2077686f5c5d0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909741064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e636573205261774576656e7404244163636f756e7449640100011c1c456e646f7765640c007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000018011c42616c616e63650000043101416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e205c5b6469642c206163636f756e742c20667265655f62616c616e63655d205472616e7366657218007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e74496400007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000018011c42616c616e636500008001304f7074696f6e3c4d656d6f3e000104f45472616e7366657220737563636565646564202866726f6d5f6469642c2066726f6d2c20746f5f6469642c20746f2c2076616c75652c206d656d6f292e2842616c616e636553657410007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000018011c42616c616e6365000204d4412062616c616e6365207761732073657420627920726f6f7420286469642c2077686f2c20667265652c207265736572766564292e504163636f756e7442616c616e63654275726e65640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e63650003083d01546865206163636f756e7420616e642074686520616d6f756e74206f6620756e6c6f636b65642062616c616e6365206f662074686174206163636f756e74207468617420776173206275726e65642e8c2863616c6c65722049642c2063616c6c6572206163636f756e742c20616d6f756e742920526573657276656408000001244163636f756e744964000018011c42616c616e63650004041901536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e205c5b77686f2c2076616c75655d28556e726573657276656408000001244163636f756e744964000018011c42616c616e63650005042101536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e205c5b77686f2c2076616c75655d4852657365727665526570617472696174656410000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000088011853746174757300060c4d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652ea05c5b66726f6d2c20746f2c2062616c616e63652c2064657374696e6174696f6e5f7374617475735d085c4576656e747320666f722074686973206d6f64756c652e007804184f7074696f6e040454017c0108104e6f6e6500000010536f6d6504007c00000100007c0c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f6964284964656e746974794964000004000401385b75383b20555549445f4c454e5d00008004184f7074696f6e04045401840108104e6f6e6500000010536f6d650400840000010000841064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e636573104d656d6f000004000401205b75383b2033325d00008814346672616d655f737570706f72741874726169747318746f6b656e73106d6973633442616c616e63655374617475730001081046726565000000205265736572766564000100008c1064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479205261774576656e7408244163636f756e7449640100184d6f6d656e740120014428446964437265617465640c007c01284964656e74697479496400000001244163636f756e74496400009001705665633c5365636f6e646172794b65793c4163636f756e7449643e3e00000c444964656e7469747920637265617465642e0088284449442c207072696d617279206b65792c207365636f6e64617279206b65797329485365636f6e646172794b657973416464656408007c01284964656e74697479496400009001705665633c5365636f6e646172794b65793c4163636f756e7449643e3e00010c845365636f6e64617279206b65797320616464656420746f206964656e746974792e003c284449442c206e6577206b65797329505365636f6e646172794b65797352656d6f76656408007c01284964656e7469747949640000ec01385665633c4163636f756e7449643e00020c945365636f6e64617279206b6579732072656d6f7665642066726f6d206964656e746974792e0080284449442c20746865206b657973207468617420676f742072656d6f76656429605365636f6e646172794b65794c6566744964656e7469747908007c01284964656e74697479496400000001244163636f756e74496400030c9041207365636f6e64617279206b6579206c656674207468656972206964656e746974792e0050284449442c207365636f6e64617279206b657929785365636f6e646172794b65795065726d697373696f6e735570646174656410007c01284964656e74697479496400000001244163636f756e744964000098012c5065726d697373696f6e73000098012c5065726d697373696f6e7300040c885365636f6e64617279206b6579207065726d697373696f6e7320757064617465642e000d01284449442c2075706461746564207365636f6e64617279206b65792c2070726576696f7573207065726d697373696f6e732c206e6577207065726d697373696f6e7329445072696d6172794b6579557064617465640c007c01284964656e74697479496400000001244163636f756e74496400000001244163636f756e74496400050c805072696d617279206b6579206f66206964656e74697479206368616e6765642e00a4284449442c206f6c64207072696d617279206b6579206163636f756e742049442c206e65772049442928436c61696d416464656408007c01284964656e7469747949640000f001344964656e74697479436c61696d00060c60436c61696d20616464656420746f206964656e746974792e0030284449442c20636c61696d2930436c61696d5265766f6b656408007c01284964656e7469747949640000f001344964656e74697479436c61696d00070c70436c61696d207265766f6b65642066726f6d206964656e746974792e0030284449442c20636c61696d294841737365744469645265676973746572656408007c01284964656e7469747949640000a001185469636b657200080c7041737365742773206964656e7469747920726567697374657265642e004c284173736574204449442c207469636b65722948417574686f72697a6174696f6e416464656418007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0000090101444f7074696f6e3c4163636f756e7449643e000020010c75363400000d010170417574686f72697a6174696f6e446174613c4163636f756e7449643e0000f401384f7074696f6e3c4d6f6d656e743e00090c604e657720617574686f72697a6174696f6e2061646465642e00310128617574686f72697365645f62792c207461726765745f6469642c207461726765745f6b65792c20617574685f69642c20617574686f72697a6174696f6e5f646174612c206578706972792950417574686f72697a6174696f6e5265766f6b65640c007801484f7074696f6e3c4964656e7469747949643e0000090101444f7074696f6e3c4163636f756e7449643e000020010c753634000a0ca0417574686f72697a6174696f6e207265766f6b65642062792074686520617574686f72697a65722e00b828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e52656a65637465640c007801484f7074696f6e3c4964656e7469747949643e0000090101444f7074696f6e3c4163636f756e7449643e000020010c753634000b0cd8417574686f72697a6174696f6e2072656a65637465642062792074686520757365722077686f2077617320617574686f72697a65642e00b828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e436f6e73756d65640c007801484f7074696f6e3c4964656e7469747949643e0000090101444f7074696f6e3c4163636f756e7449643e000020010c753634000c0c5c417574686f72697a6174696f6e20636f6e73756d65642e00b828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642988436464526571756972656d656e74466f725072696d6172794b657955706461746564040019010110626f6f6c000d0cc443444420726571756972656d656e7420666f72207570646174696e67207072696d617279206b6579206368616e6765642e0044286e65775f726571756972656d656e742950436464436c61696d73496e76616c69646174656408007c01284964656e74697479496400002001184d6f6d656e74000e10410143444420636c61696d732067656e65726174656420627920604964656e74697479496460202861204344442050726f7669646572292068617665206265656e20696e76616c6964617465642066726f6d24604d6f6d656e74602e0094284344442070726f7669646572204449442c2064697361626c652066726f6d2064617465294c5365636f6e646172794b65797346726f7a656e04007c01284964656e746974794964000f0cc4416c6c205365636f6e64617279206b657973206f6620746865206964656e74697479204944206172652066726f7a656e2e00142844494429545365636f6e646172794b657973556e66726f7a656e04007c01284964656e74697479496400100ccc416c6c205365636f6e64617279206b657973206f6620746865206964656e746974792049442061726520756e66726f7a656e2e00142844494429085c4576656e747320666f722074686973206d6f64756c652e00900000029400940c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579305365636f6e646172794b657904244163636f756e74496401000008010c6b65790001244163636f756e74496400012c7065726d697373696f6e7398012c5065726d697373696f6e730000980c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65792c5065726d697373696f6e7300000c011461737365749c014041737365745065726d697373696f6e7300012465787472696e736963b0015045787472696e7369635065726d697373696f6e73000124706f7274666f6c696fd40150506f7274666f6c696f5065726d697373696f6e7300009c0c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101a0010c1457686f6c650000001454686573650400a8012c42547265655365743c413e000100184578636570740400a8012c42547265655365743c413e00020000a00c4c706f6c796d6573685f7072696d697469766573187469636b6572185469636b657200000400a401405b75383b205449434b45525f4c454e5d0000a40000030c0000000800a80420425472656553657404045401a0000400ac000000ac000002a000b00c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101b4010c1457686f6c650000001454686573650400cc012c42547265655365743c413e000100184578636570740400cc012c42547265655365743c413e00020000b40c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65794450616c6c65745065726d697373696f6e73000008012c70616c6c65745f6e616d65b8012850616c6c65744e616d65000148646973706174636861626c655f6e616d6573bc0144446973706174636861626c654e616d65730000b8084c706f6c796d6573685f7072696d6974697665732850616c6c65744e616d650000040028011c5665633c75383e0000bc0c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101c0010c1457686f6c650000001454686573650400c4012c42547265655365743c413e000100184578636570740400c4012c42547265655365743c413e00020000c0084c706f6c796d6573685f7072696d69746976657340446973706174636861626c654e616d650000040028011c5665633c75383e0000c40420425472656553657404045401c0000400c8000000c8000002c000cc0420425472656553657404045401b4000400d0000000d0000002b400d40c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101d8010c1457686f6c650000001454686573650400e4012c42547265655365743c413e000100184578636570740400e4012c42547265655365743c413e00020000d80c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f69642c506f7274666f6c696f4964000008010c6469647c01284964656e7469747949640001106b696e64dc0134506f7274666f6c696f4b696e640000dc0c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f696434506f7274666f6c696f4b696e640001081c44656661756c7400000010557365720400e0013c506f7274666f6c696f4e756d62657200010000e00c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f69643c506f7274666f6c696f4e756d6265720000040020010c7536340000e40420425472656553657404045401d8000400e8000000e8000002d800ec0000020000f00c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d344964656e74697479436c61696d0000140130636c61696d5f6973737565727c01284964656e74697479496400013469737375616e63655f646174652001184d6f6d656e740001406c6173745f7570646174655f646174652001184d6f6d656e74000118657870697279f401384f7074696f6e3c4d6f6d656e743e000114636c61696df80114436c61696d0000f404184f7074696f6e04045401200108104e6f6e6500000010536f6d650400200000010000f80c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d14436c61696d00013028416363726564697465640400fc011453636f706500000024416666696c696174650400fc011453636f7065000100244275794c6f636b75700400fc011453636f70650002002853656c6c4c6f636b75700400fc011453636f706500030050437573746f6d657244756544696c6967656e63650400010101144364644964000400404b6e6f77596f7572437573746f6d65720400fc011453636f7065000500304a7572697364696374696f6e08000501012c436f756e747279436f64650000fc011453636f7065000600204578656d707465640400fc011453636f70650007001c426c6f636b65640400fc011453636f706500080048496e766573746f72556e697175656e6573730c00fc011453636f706500007c011c53636f706549640000010101144364644964000900184e6f44617461000a0050496e766573746f72556e697175656e65737356320400010101144364644964000b0000fc0c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d1453636f706500010c204964656e7469747904007c01284964656e746974794964000000185469636b65720400a001185469636b657200010018437573746f6d040028011c5665633c75383e0002000001010c4c706f6c796d6573685f7072696d697469766573186364645f6964144364644964000004000401205b75383b2033325d000005010c4c706f6c796d6573685f7072696d697469766573306a7572697364696374696f6e2c436f756e747279436f64650001e90308414600000008415800010008414c00020008445a00030008415300040008414400050008414f000600084149000700084151000800084147000900084152000a0008414d000b00084157000c00084155000d00084154000e0008415a000f0008425300100008424800110008424400120008424200130008425900140008424500150008425a00160008424a00170008424d00180008425400190008424f001a00084241001b00084257001c00084256001d00084252001e00085647001f0008494f00200008424e002100084247002200084246002300084249002400084b4800250008434d002600084341002700084356002800084b59002900084346002a00085444002b0008434c002c0008434e002d0008484b002e00084d4f002f0008435800300008434300310008434f003200084b4d00330008434700340008434400350008434b003600084352003700084349003800084852003900084355003a00084359003b0008435a003c0008444b003d0008444a003e0008444d003f0008444f00400008454300410008454700420008535600430008475100440008455200450008454500460008455400470008464b00480008464f00490008464a004a00084649004b00084652004c00084746004d00085046004e00085446004f0008474100500008474d00510008474500520008444500530008474800540008474900550008475200560008474c005700084744005800084750005900084755005a00084754005b00084747005c0008474e005d00084757005e00084759005f0008485400600008484d00610008564100620008484e00630008485500640008495300650008494e006600084944006700084952006800084951006900084945006a0008494d006b0008494c006c00084954006d00084a4d006e00084a50006f00084a45007000084a4f007100084b5a007200084b45007300084b49007400084b50007500084b52007600084b57007700084b47007800084c41007900084c56007a00084c42007b00084c53007c00084c52007d00084c59007e00084c49007f00084c54008000084c55008100084d4b008200084d47008300084d57008400084d59008500084d56008600084d4c008700084d54008800084d48008900084d51008a00084d52008b00084d55008c00085954008d00084d58008e0008464d008f00084d44009000084d43009100084d4e009200084d45009300084d53009400084d41009500084d5a009600084d4d009700084e41009800084e52009900084e50009a00084e4c009b0008414e009c00084e43009d00084e5a009e00084e49009f00084e4500a000084e4700a100084e5500a200084e4600a300084d5000a400084e4f00a500084f4d00a60008504b00a70008505700a80008505300a90008504100aa0008504700ab0008505900ac0008504500ad0008504800ae0008504e00af0008504c00b00008505400b10008505200b20008514100b30008524500b40008524f00b50008525500b60008525700b70008424c00b80008534800b900084b4e00ba00084c4300bb00084d4600bc0008504d00bd0008564300be0008575300bf0008534d00c00008535400c10008534100c20008534e00c30008525300c40008534300c50008534c00c60008534700c70008534b00c80008534900c90008534200ca0008534f00cb00085a4100cc0008475300cd0008535300ce0008455300cf00084c4b00d00008534400d10008535200d20008534a00d30008535a00d40008534500d50008434800d60008535900d70008545700d80008544a00d90008545a00da0008544800db0008544c00dc0008544700dd0008544b00de0008544f00df0008545400e00008544e00e10008545200e20008544d00e30008544300e40008545600e50008554700e60008554100e70008414500e80008474200e90008555300ea0008554d00eb0008555900ec0008555a00ed0008565500ee0008564500ef0008564e00f00008564900f10008574600f20008454800f30008594500f400085a4d00f500085a5700f60008425100f70008435700f80008535800f90000090104184f7074696f6e04045401000108104e6f6e6500000010536f6d6504000000000100000d010c4c706f6c796d6573685f7072696d69746976657334617574686f72697a6174696f6e44417574686f72697a6174696f6e4461746104244163636f756e74496401000128604174746573745072696d6172794b6579526f746174696f6e04007c01284964656e74697479496400000040526f746174655072696d6172794b6579000100385472616e736665725469636b65720400a001185469636b6572000200444164644d756c74695369675369676e657204000001244163636f756e744964000300585472616e7366657241737365744f776e6572736869700400a001185469636b6572000400304a6f696e4964656e74697479040098012c5065726d697373696f6e7300050040506f7274666f6c696f437573746f64790400d8012c506f7274666f6c696f49640006002c4265636f6d654167656e740800a001185469636b65720000110101284167656e7447726f75700007004c41646452656c61796572506179696e674b65790c000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e63650008006c526f746174655072696d6172794b6579546f5365636f6e64617279040098012c5065726d697373696f6e730009000011010c4c706f6c796d6573685f7072696d697469766573146167656e74284167656e7447726f75700001141046756c6c00000018437573746f6d04001501011041474964000100284578636570744d65746100020034506f6c796d657368563143414100030034506f6c796d65736856315049410004000015010c4c706f6c796d6573685f7072696d697469766573146167656e7410414749640000040010010c7533320000190100000500001d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449012101011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400002501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e002101083070616c6c65745f67726f757024496e7374616e6365320000000025010000027c002901084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d62657201100449012d0101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800002501013c5665633c4964656e7469747949643e00002501013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e7469747949640000240110486173680000310101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e002d01084070616c6c65745f636f6d6d697474656524496e7374616e6365310000000031010418526573756c74080454013501044501640108084f6b04003501000000000c45727204006400000100003501000004000039010864706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573284d61796265426c6f636b042c426c6f636b4e756d6265720110010810536f6d65040010012c426c6f636b4e756d626572000000104e6f6e65000100003d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449014101011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400002501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e004101083070616c6c65745f67726f757024496e7374616e636531000000004501084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d6265720110044901490101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800002501013c5665633c4964656e7469747949643e00002501013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e7469747949640000240110486173680000310101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e004901084070616c6c65745f636f6d6d697474656524496e7374616e636533000000004d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449015101011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400002501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e005101083070616c6c65745f67726f757024496e7374616e636533000000005501084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d6265720110044901590101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800002501013c5665633c4964656e7469747949643e00002501013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e7469747949640000240110486173680000310101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e005901084070616c6c65745f636f6d6d697474656524496e7374616e636534000000005d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449016101011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400002501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e006101083070616c6c65745f67726f757024496e7374616e636534000000006501083c70616c6c65745f6d756c7469736967205261774576656e7404244163636f756e744964010001303c4d756c74695369674372656174656414007c01284964656e74697479496400000001244163636f756e74496400000001244163636f756e7449640000690101645665633c5369676e61746f72793c4163636f756e7449643e3e000020010c753634000008ac4576656e7420656d6974746564206166746572206372656174696f6e206f662061206d756c74697369672e6501417267756d656e74733a2063616c6c6572204449442c206d756c746973696720616464726573732c207369676e657273202870656e64696e6720617070726f76616c292c207369676e6174757265732072657175697265642e3450726f706f73616c41646465640c007c01284964656e74697479496400000001244163636f756e744964000020010c753634000108984576656e7420656d697474656420616674657220616464696e6720612070726f706f73616c2eb4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e4050726f706f73616c457865637574656410007c01284964656e74697479496400000001244163636f756e744964000020010c753634000019010110626f6f6c000208a84576656e7420656d6974746564207768656e20612070726f706f73616c2069732065786563757465642ed4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442c20726573756c742e4c4d756c74695369675369676e657241646465640c007c01284964656e74697479496400000001244163636f756e74496400006d0101505369676e61746f72793c4163636f756e7449643e000308a04576656e7420656d6974746564207768656e2061207369676e61746f72792069732061646465642eb8417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206164646564207369676e65722e604d756c74695369675369676e6572417574686f72697a65640c007c01284964656e74697479496400000001244163636f756e74496400006d0101505369676e61746f72793c4163636f756e7449643e00040809014576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f727920697320617574686f72697a656420746f2062652061646465642ecc417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722e544d756c74695369675369676e657252656d6f7665640c007c01284964656e74697479496400000001244163636f756e74496400006d0101505369676e61746f72793c4163636f756e7449643e000508cc4576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f72792069732072656d6f7665642ec0417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2072656d6f766564207369676e65722e844d756c74695369675369676e61747572657352657175697265644368616e6765640c007c01284964656e74697479496400000001244163636f756e744964000020010c75363400060801014576656e7420656d6974746564207768656e20746865206e756d626572206f66207265717569726564207369676e617475726573206973206368616e6765642ee4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206e6577207265717569726564207369676e6174757265732e4050726f706f73616c417070726f76656410007c01284964656e74697479496400000001244163636f756e74496400006d0101505369676e61746f72793c4163636f756e7449643e000020010c753634000708b44576656e7420656d6974746564207768656e207468652070726f706f73616c2067657420617070726f7665642e0101417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e5450726f706f73616c52656a656374696f6e566f746510007c01284964656e74697479496400000001244163636f756e74496400006d0101505369676e61746f72793c4163636f756e7449643e000020010c7536340008080d014576656e7420656d6974746564207768656e206120766f7465206973206361737420696e206661766f72206f662072656a656374696e6720612070726f706f73616c2e0101417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e4050726f706f73616c52656a65637465640c007c01284964656e74697479496400000001244163636f756e744964000020010c753634000908a84576656e7420656d6974746564207768656e20612070726f706f73616c2069732072656a65637465642eb4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e5c50726f706f73616c457865637574696f6e4661696c6564040064013444697370617463684572726f72000a04e44576656e7420656d6974746564207768656e207468657265277320616e206572726f7220696e2070726f706f73616c20657865637574696f6e405363686564756c696e674661696c6564040064013444697370617463684572726f72000b04745363686564756c696e67206f662070726f706f73616c206661696c732e085c4576656e747320666f722074686973206d6f64756c652e0069010000026d01006d010c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579245369676e61746f727904244163636f756e74496401000108204964656e7469747904007c01284964656e7469747949640000001c4163636f756e7404000001244163636f756e744964000100007101083470616c6c65745f627269646765205261774576656e7408244163636f756e74496401002c426c6f636b4e756d6265720110014044436f6e74726f6c6c65724368616e67656408007c01284964656e74697479496400000001244163636f756e74496400000490436f6e6669726d6174696f6e206f662061207369676e657220736574206368616e67652e3041646d696e4368616e67656408007c01284964656e74697479496400000001244163636f756e74496400010474436f6e6669726d6174696f6e206f662041646d696e206368616e67652e3c54696d656c6f636b4368616e67656408007c01284964656e746974794964000010012c426c6f636b4e756d626572000204a0436f6e6669726d6174696f6e206f662064656661756c742074696d656c6f636b206368616e67652e1c4272696467656408007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e0003041d01436f6e6669726d6174696f6e206f6620504f4c59582075706772616465206f6e20506f6c796d6573682066726f6d20504f4c5920746f6b656e73206f6e20457468657265756d2e1846726f7a656e04007c01284964656e746974794964000404904e6f74696669636174696f6e206f6620667265657a696e6720746865206272696467652e20556e66726f7a656e04007c01284964656e746974794964000504984e6f74696669636174696f6e206f6620756e667265657a696e6720746865206272696467652e2046726f7a656e547808007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e0006049c4e6f74696669636174696f6e206f6620667265657a696e672061207472616e73616374696f6e2e28556e66726f7a656e547808007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e000704a44e6f74696669636174696f6e206f6620756e667265657a696e672061207472616e73616374696f6e2e3c4578656d70746564557064617465640c007c01284964656e74697479496400007c01284964656e746974794964000019010110626f6f6c000804c44578656d7074696f6e20737461747573206f6620616e206964656e7469747920686173206265656e20757064617465642e484272696467654c696d6974557064617465640c007c01284964656e746974794964000018011c42616c616e6365000010012c426c6f636b4e756d62657200090478427269646765206c696d697420686173206265656e20757064617465642e2854787348616e646c65640400790101985665633c284163636f756e7449642c207533322c2048616e646c65645478537461747573293e000a086101416e206576656e7420656d6974746564206166746572206120766563746f72206f66207472616e73616374696f6e732069732068616e646c65642e2054686520706172616d65746572206973206120766563746f72206f6651017475706c6573206f6620726563697069656e74206163636f756e742c20697473206e6f6e63652c20616e642074686520737461747573206f66207468652070726f636573736564207472616e73616374696f6e2e4442726964676554785363686564756c65640c007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e000010012c426c6f636b4e756d626572000b0450427269646765205478205363686564756c65642e5842726964676554785363686564756c654661696c65640c007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e000028011c5665633c75383e000c04744661696c656420746f207363686564756c65204272696467652054782e40467265657a6541646d696e416464656408007c01284964656e74697479496400000001244163636f756e744964000d048841206e657720667265657a652061646d696e20686173206265656e2061646465642e48467265657a6541646d696e52656d6f76656408007c01284964656e74697479496400000001244163636f756e744964000e04804120667265657a652061646d696e20686173206265656e2072656d6f7665642e24547852656d6f76656408007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e000f049c4e6f74696669636174696f6e206f662072656d6f76696e672061207472616e73616374696f6e2e085c4576656e747320666f722074686973206d6f64756c652e007501083470616c6c65745f627269646765204272696467655478041c4163636f756e740100001001146e6f6e636510010c753332000124726563697069656e7400011c4163636f756e74000118616d6f756e7418011c42616c616e636500011c74785f6861736824011048323536000079010000027d01007d010000040c00108101008101083470616c6c65745f6272696467653c48616e646c656454785374617475730001081c53756363657373000000144572726f72040028011c5665633c75383e000100008501083870616c6c65745f7374616b696e67205261774576656e74081c42616c616e63650118244163636f756e74496401000144244572615061796f75740c00100120457261496e646578000018011c42616c616e6365000018011c42616c616e636500000c550154686520657261207061796f757420686173206265656e207365743b207468652066697273742062616c616e6365206973207468652076616c696461746f722d7061796f75743b20746865207365636f6e64206973c07468652072656d61696e6465722066726f6d20746865206d6178696d756d20616d6f756e74206f66207265776172642ea85c5b6572615f696e6465782c2076616c696461746f725f7061796f75742c2072656d61696e6465725c5d185265776172640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e63650001043901546865207374616b657220686173206265656e207265776172646564206279207468697320616d6f756e742e205c5b73746173685f6964656e746974792c2073746173682c20616d6f756e745c5d14536c61736808000001244163636f756e744964000018011c42616c616e636500020821014f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e545c5b76616c696461746f722c20616d6f756e745c5d684f6c64536c617368696e675265706f7274446973636172646564040010013053657373696f6e496e6465780003081901416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c648c6e6f742062652070726f6365737365642e205c5b73657373696f6e5f696e6465785c5d3c5374616b696e67456c656374696f6e04008901013c456c656374696f6e436f6d70757465000404f041206e657720736574206f66207374616b6572732077617320656c656374656420776974682074686520676976656e205c5b636f6d707574655c5d2e38536f6c7574696f6e53746f72656404008901013c456c656374696f6e436f6d70757465000504150141206e657720736f6c7574696f6e20666f7220746865207570636f6d696e6720656c656374696f6e20686173206265656e2073746f7265642e205c5b636f6d707574655c5d18426f6e6465640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000610e4416e206163636f756e742068617320626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d004d014e4f54453a2054686973206576656e74206973206f6e6c7920656d6974746564207768656e2066756e64732061726520626f6e64656420766961206120646973706174636861626c652e204e6f7461626c792c210169742077696c6c206e6f7420626520656d697474656420666f72207374616b696e672072657761726473207768656e20746865792061726520616464656420746f207374616b652e20556e626f6e6465640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000704ec416e206163636f756e742068617320756e626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d244e6f6d696e617465640c007c01284964656e74697479496400000001244163636f756e7449640000ec01385665633c4163636f756e7449643e0008048855736572206861732075706461746564207468656972206e6f6d696e6174696f6e732457697468647261776e08000001244163636f756e744964000018011c42616c616e63650009085901416e206163636f756e74206861732063616c6c6564206077697468647261775f756e626f6e6465646020616e642072656d6f76656420756e626f6e64696e67206368756e6b7320776f727468206042616c616e636560ac66726f6d2074686520756e6c6f636b696e672071756575652e205c5b73746173682c20616d6f756e745c5d645065726d697373696f6e65644964656e74697479416464656408007c01284964656e74697479496400007c01284964656e746974794964000a08ec416e20444944206861732069737375656420612063616e6469646163792e2053656520746865207472616e73616374696f6e20666f722077686f2e8c4743206964656e74697479202c2056616c696461746f722773206964656e746974792e6c5065726d697373696f6e65644964656e7469747952656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000b08e854686520676976656e206d656d626572207761732072656d6f7665642e2053656520746865207472616e73616374696f6e20666f722077686f2e8c4743206964656e74697479202c2056616c696461746f722773206964656e746974792e54496e76616c6964617465644e6f6d696e61746f72730c007c01284964656e74697479496400000001244163636f756e7449640000ec01385665633c4163636f756e7449643e000c081d0152656d6f766520746865206e6f6d696e61746f72732066726f6d207468652076616c6964206e6f6d696e61746f7273207768656e2074686572652043444420657870697265642e9443616c6c65722c205374617368206163636f756e744964206f66206e6f6d696e61746f727350436f6d6d697373696f6e436170557064617465640c007c01284964656e74697479496400008d01011c50657262696c6c00008d01011c50657262696c6c000d08805768656e20636f6d6d697373696f6e206361702067657420757064617465642e58286f6c642076616c75652c206e65772076616c7565296c4d696e696d756d426f6e645468726573686f6c645570646174656408007801484f7074696f6e3c4964656e7469747949643e000018011c42616c616e6365000e04ac4d696e20626f6e64207468726573686f6c6420776173207570646174656420286e65772076616c7565292e885265776172645061796d656e745363686564756c696e67496e7465727275707465640c000001244163636f756e7449640000100120457261496e646578000064013444697370617463684572726f72000f04cc5768656e207363686564756c696e67206f6620726577617264207061796d656e74732067657420696e7465727275707465642e64536c617368696e67416c6c6f776564466f724368616e676564040091010138536c617368696e675377697463680010049055706461746520666f722077686f6d2062616c616e63652067657420736c61736865642e085c4576656e747320666f722074686973206d6f64756c652e008901083870616c6c65745f7374616b696e673c456c656374696f6e436f6d7075746500010c1c4f6e436861696e000000185369676e656400010020556e7369676e6564000200008d010c3473705f61726974686d65746963287065725f7468696e67731c50657262696c6c0000040010010c75333200009101083870616c6c65745f7374616b696e6738536c617368696e6753776974636800010c2456616c696461746f720000005456616c696461746f72416e644e6f6d696e61746f72000100104e6f6e650002000095010c3c70616c6c65745f6f6666656e6365731870616c6c6574144576656e740001041c4f6666656e63650800990101104b696e6400002801384f706171756554696d65536c6f7400000c5101546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e643501286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e4c5c5b6b696e642c2074696d65736c6f745c5d2e04304576656e747320747970652e99010000031000000008009d010c3870616c6c65745f73657373696f6e1870616c6c6574144576656e74000104284e657753657373696f6e040010013053657373696f6e496e64657800000849014e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e7420697320746865205c5b73657373696f6e5f696e6465785c5d2c206e6f74207468659c626c6f636b206e756d626572206173207468652074797065206d6967687420737567676573742e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909a1010c3870616c6c65745f6772616e6470611870616c6c6574144576656e7400010c384e6577417574686f7269746965730400a5010134417574686f726974794c697374000004d44e657720617574686f726974792073657420686173206265656e206170706c6965642e205c5b617574686f726974795f7365745c5d185061757365640001049843757272656e7420617574686f726974792073657420686173206265656e207061757365642e1c526573756d65640002049c43757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909a501000002a90100a90100000408ad012000ad010c4c73705f66696e616c6974795f6772616e6470610c617070185075626c696300000400b101013c656432353531393a3a5075626c69630000b1010c1c73705f636f72651c65643235353139185075626c6963000004000401205b75383b2033325d0000b5010c4070616c6c65745f696d5f6f6e6c696e651870616c6c6574144576656e7404045400010c4448656172746265617452656365697665640400b9010138543a3a417574686f726974794964000004010141206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f72697479496460205c5b617574686f726974795f69645c5d1c416c6c476f6f64000104d041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2c536f6d654f66666c696e650400c101016c5665633c4964656e74696669636174696f6e5475706c653c543e3e000204390141742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e652076616c696461746f722077617320666f756e6420746f206265205c5b6f66666c696e655c5d2e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909b901104070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139185075626c696300000400bd01013c737232353531393a3a5075626c69630000bd010c1c73705f636f72651c73723235353139185075626c6963000004000401205b75383b2033325d0000c101000002c50100c5010000040800c90100c901083870616c6c65745f7374616b696e67204578706f7375726508244163636f756e74496401001c42616c616e63650118000c0114746f74616ccd01011c42616c616e636500010c6f776ecd01011c42616c616e63650001186f7468657273d10101ac5665633c496e646976696475616c4578706f737572653c4163636f756e7449642c2042616c616e63653e3e0000cd010000061800d101000002d50100d501083870616c6c65745f7374616b696e6748496e646976696475616c4578706f7375726508244163636f756e74496401001c42616c616e636501180008010c77686f0001244163636f756e74496400011476616c7565cd01011c42616c616e63650000d901082c70616c6c65745f7375646f205261774576656e7404244163636f756e7449640100010c1453756469640400310101384469737061746368526573756c740000048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d284b65794368616e67656404000001244163636f756e744964000104fc546865205c5b7375646f65725c5d206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e285375646f4173446f6e650400310101384469737061746368526573756c740002048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d085c4576656e747320666f722074686973206d6f64756c652e00dd011064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473146173736574205261774576656e7408184d6f6d656e740120244163636f756e74496401000168205472616e7366657214007c01284964656e7469747949640000a001185469636b65720000d8012c506f7274666f6c696f49640000d8012c506f7274666f6c696f4964000018011c42616c616e6365000008744576656e7420666f72207472616e73666572206f6620746f6b656e732edc63616c6c6572204449442c207469636b65722c2066726f6d20706f7274666f6c696f2c20746f20706f7274666f6c696f2c2076616c75651849737375656418007c01284964656e7469747949640000a001185469636b657200007c01284964656e746974794964000018011c42616c616e63650000e101014046756e64696e67526f756e644e616d65000018011c42616c616e636500010870456d6974207768656e20746f6b656e7320676574206973737565642e750163616c6c6572204449442c207469636b65722c2062656e6566696369617279204449442c2076616c75652c2066756e64696e6720726f756e642c20746f74616c2069737375656420696e20746869732066756e64696e6720726f756e642052656465656d656410007c01284964656e7469747949640000a001185469636b657200007c01284964656e746974794964000018011c42616c616e636500020878456d6974207768656e20746f6b656e73206765742072656465656d65642e9063616c6c6572204449442c207469636b65722c202066726f6d204449442c2076616c75653041737365744372656174656418007c01284964656e7469747949640000a001185469636b6572000019010110626f6f6c0000e501012441737365745479706500007c01284964656e746974794964000019010110626f6f6c000308804576656e7420666f72206372656174696f6e206f66207468652061737365742e950163616c6c6572204449442f206f776e6572204449442c207469636b65722c2064697669736962696c6974792c20617373657420747970652c2062656e6566696369617279204449442c2064697361626c6520696e766573746f7220756e697175656e657373484964656e74696669657273557064617465640c007c01284964656e7469747949640000a001185469636b65720000ed0101505665633c41737365744964656e7469666965723e000408d44576656e7420656d6974746564207768656e20616e7920746f6b656e206964656e746966696572732061726520757064617465642e0d0163616c6c6572204449442c207469636b65722c206120766563746f72206f6620286964656e74696669657220747970652c206964656e7469666965722076616c7565294c44697669736962696c6974794368616e6765640c007c01284964656e7469747949640000a001185469636b6572000019010110626f6f6c000508844576656e7420666f72206368616e676520696e2064697669736962696c6974792e8063616c6c6572204449442c207469636b65722c2064697669736962696c697479405472616e73666572576974684461746118007c01284964656e7469747949640000a001185469636b657200007c01284964656e74697479496400007c01284964656e746974794964000018011c42616c616e6365000028011c5665633c75383e0006083501416e206164646974696f6e616c206576656e7420746f205472616e736665723b20656d6974746564207768656e20607472616e736665725f776974685f64617461602069732063616c6c65642ec863616c6c657220444944202c207469636b65722c2066726f6d204449442c20746f204449442c2076616c75652c20646174612849734973737561626c650800a001185469636b6572000019010110626f6f6c0007085069735f6973737561626c652829206f75747075749c7469636b65722c2072657475726e2076616c7565202874727565206966206973737561626c6529405469636b6572526567697374657265640c007c01284964656e7469747949640000a001185469636b65720000f401384f7074696f6e3c4d6f6d656e743e0008087c456d6974207768656e207469636b657220697320726567697374657265642eec63616c6c657220444944202f207469636b6572206f776e6572206469642c207469636b65722c207469636b6572206f776e65722c20657870697279445469636b65725472616e736665727265640c007c01284964656e7469747949640000a001185469636b657200007c01284964656e74697479496400090880456d6974207768656e207469636b6572206973207472616e736665727265642ed063616c6c657220444944202f207469636b6572207472616e7366657272656420746f204449442c207469636b65722c2066726f6d6441737365744f776e6572736869705472616e736665727265640c007c01284964656e7469747949640000a001185469636b657200007c01284964656e746974794964000a08a4456d6974207768656e20746f6b656e206f776e657273686970206973207472616e736665727265642ef463616c6c657220444944202f20746f6b656e206f776e657273686970207472616e7366657272656420746f204449442c207469636b65722c2066726f6d2c417373657446726f7a656e08007c01284964656e7469747949640000a001185469636b6572000b08a4416e206576656e7420656d6974746564207768656e20616e2061737365742069732066726f7a656e2e78506172616d657465723a2063616c6c6572204449442c207469636b65722e344173736574556e66726f7a656e08007c01284964656e7469747949640000a001185469636b6572000c08ac416e206576656e7420656d6974746564207768656e20616e20617373657420697320756e66726f7a656e2e78506172616d657465723a2063616c6c6572204449442c207469636b65722e30417373657452656e616d65640c007c01284964656e7469747949640000a001185469636b65720000fd01012441737365744e616d65000d08a4416e206576656e7420656d6974746564207768656e206120746f6b656e2069732072656e616d65642ebc506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720746f6b656e206e616d652e3c46756e64696e67526f756e645365740c007c01284964656e7469747949640000a001185469636b65720000e101014046756e64696e67526f756e644e616d65000e081101416e206576656e74206361727279696e6720746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e64206f662061207469636b65722ecc506172616d65746572733a2063616c6c6572204449442c207469636b65722c2066756e64696e6720726f756e64206e616d652e34446f63756d656e74416464656410007c01284964656e7469747949640000a001185469636b6572000001020128446f63756d656e744964000005020120446f63756d656e74000f048c41206e657720646f63756d656e7420617474616368656420746f20616e2061737365743c446f63756d656e7452656d6f7665640c007c01284964656e7469747949640000a001185469636b6572000001020128446f63756d656e744964001004804120646f63756d656e742072656d6f7665642066726f6d20616e20617373657440457874656e73696f6e52656d6f7665640c007c01284964656e7469747949640000a001185469636b657200000001244163636f756e744964001108604120657874656e73696f6e20676f742072656d6f7665642e7463616c6c6572204449442c207469636b65722c204163636f756e74496450436c61737369635469636b6572436c61696d65640c007c01284964656e7469747949640000a001185469636b657200003102013c457468657265756d4164647265737300120435014120506f6c796d61746820436c617373696320746f6b656e2077617320636c61696d656420616e64207472616e7366657272656420746f2061206e6f6e2d73797374656d61746963204449442e48436f6e74726f6c6c65725472616e7366657210007c01284964656e7469747949640000a001185469636b65720000d8012c506f7274666f6c696f4964000018011c42616c616e6365001308b44576656e7420666f72207768656e206120666f72636564207472616e736665722074616b657320706c6163652e150163616c6c6572204449442f20636f6e74726f6c6c6572204449442c207469636b65722c20506f7274666f6c696f206f6620746f6b656e20686f6c6465722c2076616c75652e54437573746f6d4173736574547970654578697374730c007c01284964656e7469747949640000e9010144437573746f6d4173736574547970654964000028011c5665633c75383e001408b04120637573746f6d206173736574207479706520616c726561647920657869737473206f6e2d636861696e2e310163616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e64437573746f6d417373657454797065526567697374657265640c007c01284964656e7469747949640000e9010144437573746f6d4173736574547970654964000028011c5665633c75383e001508b04120637573746f6d2061737365742074797065207761732072656769737465726564206f6e2d636861696e2e310163616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e5453657441737365744d6574616461746156616c756510007c01284964656e7469747949640000a001185469636b657200003502014841737365744d6574616461746156616c75650000390201a04f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c4d6f6d656e743e3e00160864536574206173736574206d657461646174612076616c75652ef02843616c6c6572204449442c207469636b65722c206d657461646174612076616c75652c206f7074696f6e616c2076616c75652064657461696c73297053657441737365744d6574616461746156616c756544657461696c730c007c01284964656e7469747949640000a001185469636b657200003d02018041737365744d6574616461746156616c756544657461696c3c4d6f6d656e743e001708dc536574206173736574206d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e8c2843616c6c6572204449442c207469636b65722c2076616c75652064657461696c732978526567697374657241737365744d657461646174614c6f63616c5479706514007c01284964656e7469747949640000a001185469636b657200004502014441737365744d657461646174614e616d6500004902015441737365744d657461646174614c6f63616c4b657900004d02014441737365744d65746164617461537065630018088c5265676973746572206173736574206d65746164617461206c6f63616c20747970652e05012843616c6c6572204449442c207469636b65722c204c6f63616c2074797065206e616d652c204c6f63616c2074797065206b65792c2074797065207370656373297c526567697374657241737365744d65746164617461476c6f62616c547970650c004502014441737365744d657461646174614e616d6500006502015841737365744d65746164617461476c6f62616c4b657900004d02014441737365744d6574616461746153706563001908905265676973746572206173736574206d6574616461746120676c6f62616c20747970652ebc28476c6f62616c2074797065206e616d652c20476c6f62616c2074797065206b65792c207479706520737065637329085c4576656e747320666f722074686973206d6f64756c652e00e1010c4c706f6c796d6573685f7072696d6974697665731461737365744046756e64696e67526f756e644e616d650000040028011c5665633c75383e0000e5010c4c706f6c796d6573685f7072696d6974697665731461737365742441737365745479706500012c30457175697479436f6d6d6f6e0000003c45717569747950726566657272656400010024436f6d6d6f646974790002002c4669786564496e636f6d6500030010524549540004001046756e6400050054526576656e7565536861726541677265656d656e74000600445374727563747572656450726f64756374000700284465726976617469766500080018437573746f6d0400e9010144437573746f6d417373657454797065496400090028537461626c65436f696e000a0000e9010c4c706f6c796d6573685f7072696d69746976657314617373657444437573746f6d41737365745479706549640000040010010c7533320000ed01000002f10100f1010c4c706f6c796d6573685f7072696d6974697665734061737365745f6964656e7469666965723c41737365744964656e7469666965720001101443555349500400f501011c5b75383b20395d0000001043494e530400f501011c5b75383b20395d000100104953494e0400a401205b75383b2031325d0002000c4c45490400f90101205b75383b2032305d00030000f501000003090000000800f901000003140000000800fd010c4c706f6c796d6573685f7072696d6974697665731461737365742441737365744e616d650000040028011c5665633c75383e000001020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7428446f63756d656e7449640000040010010c753332000005020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7420446f63756d656e74000014010c7572690902012c446f63756d656e74557269000130636f6e74656e745f686173680d020130446f63756d656e74486173680001106e616d6525020130446f63756d656e744e616d65000120646f635f74797065290201504f7074696f6e3c446f63756d656e74547970653e00012c66696c696e675f64617465f401384f7074696f6e3c4d6f6d656e743e000009020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e742c446f63756d656e745572690000040028011c5665633c75383e00000d020c4c706f6c796d6573685f7072696d69746976657334646f63756d656e745f6861736830446f63756d656e7448617368000124104e6f6e6500000010483531320400110201205b75383b2036345d00010010483338340400150201205b75383b2034385d00020010483332300400190201205b75383b2034305d000300104832353604000401205b75383b2033325d000400104832323404001d0201205b75383b2032385d00050010483139320400210201205b75383b2032345d00060010483136300400f90101205b75383b2032305d00070010483132380400990101205b75383b2031365d000800001102000003400000000800150200000330000000080019020000032800000008001d020000031c0000000800210200000318000000080025020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7430446f63756d656e744e616d650000040028011c5665633c75383e0000290204184f7074696f6e040454012d020108104e6f6e6500000010536f6d6504002d0200000100002d020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7430446f63756d656e74547970650000040028011c5665633c75383e000031020c4c706f6c796d6573685f7072696d69746976657320657468657265756d3c457468657265756d4164647265737300000400f90101205b75383b2032305d000035020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614841737365744d6574616461746156616c75650000040028011c5665633c75383e0000390204184f7074696f6e040454013d020108104e6f6e6500000010536f6d6504003d0200000100003d020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174616041737365744d6574616461746156616c756544657461696c04184d6f6d656e74012000080118657870697265f401384f7074696f6e3c4d6f6d656e743e00012c6c6f636b5f7374617475734102017c41737365744d657461646174614c6f636b5374617475733c4d6f6d656e743e000041020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615c41737365744d657461646174614c6f636b53746174757304184d6f6d656e740120010c20556e6c6f636b6564000000184c6f636b65640001002c4c6f636b6564556e74696c04002001184d6f6d656e740002000045020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614441737365744d657461646174614e616d650000040028011c5665633c75383e000049020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615441737365744d657461646174614c6f63616c4b65790000040020010c75363400004d020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614441737365744d657461646174615370656300000c010c75726c5102012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e590201804f7074696f6e3c41737365744d657461646174614465736372697074696f6e3e000120747970655f6465666102013c4f7074696f6e3c5665633c75383e3e0000510204184f7074696f6e0404540155020108104e6f6e6500000010536f6d650400550200000100005502084c706f6c796d6573685f7072696d6974697665730c55726c0000040028011c5665633c75383e0000590204184f7074696f6e040454015d020108104e6f6e6500000010536f6d6504005d0200000100005d020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174616041737365744d657461646174614465736372697074696f6e0000040028011c5665633c75383e0000610204184f7074696f6e04045401280108104e6f6e6500000010536f6d65040028000001000065020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615841737365744d65746164617461476c6f62616c4b65790000040020010c753634000069020c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e144576656e740001101c437265617465640c006d0201204576656e7444696400007102011043414964000079020130446973747269627574696f6e000010b841206361706974616c20646973747269627574696f6e2c20776974682064657461696c7320696e636c756465642c31017761732063726561746564206279207468652044494420287065726d697373696f6e6564206167656e742920666f7220746865204341206964656e746966696564206279206043414964602e00a8284167656e74204449442c20434127732049442c20646973747269627574696f6e2064657461696c73293842656e65666974436c61696d656418006d0201204576656e7444696400006d0201204576656e7444696400007102011043414964000079020130446973747269627574696f6e000018011c42616c616e636500007d02010c54617800010c51014120746f6b656e20686f6c64657227732062656e65666974206f662061206361706974616c20646973747269627574696f6e20666f722074686520676976656e206043414964602077617320636c61696d65642e0091012843616c6c6572204449442c20486f6c6465722f436c61696d616e74204449442c20434127732049442c207570646174656420646973747269627574696f6e2064657461696c732c2044494427732062656e656669742c20444944277320746178202529245265636c61696d65640c006d0201204576656e7444696400007102011043414964000018011c42616c616e636500020c9853746174732066726f6d2060707573685f62656e65666974602077617320656d69747465642e001501284167656e74204449442c20434127732049442c206d61782072657175657374656420444944732c2070726f63657373656420444944732c206661696c65642044494473291c52656d6f76656408006d0201204576656e744469640000710201104341496400030c8c41206361706974616c20646973747269627574696f6e207761732072656d6f7665642e0050284167656e74204449442c204341277320494429085c4576656e747320666f722074686973206d6f64756c652e006d020c4c706f6c796d6573685f7072696d697469766573286576656e745f6f6e6c79244576656e744f6e6c79040454017c0004007c01045400007102086070616c6c65745f636f72706f726174655f616374696f6e73104341496400000801187469636b6572a001185469636b65720001206c6f63616c5f6964750201244c6f63616c4341496400007502086070616c6c65745f636f72706f726174655f616374696f6e73244c6f63616c434149640000040010010c753332000079020c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e30446973747269627574696f6e000020011066726f6dd8012c506f7274666f6c696f496400012063757272656e6379a001185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e636500012472656d61696e696e6718011c42616c616e63650001247265636c61696d656419010110626f6f6c0001287061796d656e745f61742001184d6f6d656e74000128657870697265735f6174f401384f7074696f6e3c4d6f6d656e743e00007d020c3473705f61726974686d65746963287065725f7468696e67731c5065726d696c6c0000040010010c753332000081021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e74144576656e7400011044436865636b706f696e74437265617465641400850201404f7074696f6e3c4576656e744469643e0000a001185469636b6572000089020130436865636b706f696e744964000018011c42616c616e636500002001184d6f6d656e7400000c644120636865636b706f696e742077617320637265617465642e001d012863616c6c6572204449442c207469636b65722c20636865636b706f696e742049442c20746f74616c20737570706c792c20636865636b706f696e742074696d657374616d7029844d6178696d756d5363686564756c6573436f6d706c65786974794368616e67656408007c01284964656e746974794964000020010c75363400010c2901546865206d6178696d756d20636f6d706c657869747920666f7220616e20617262697472617279207469636b65722773207363686564756c652073657420776173206368616e6765642e0064284743204449442c20746865206e6577206d6178696d756d293c5363686564756c65437265617465640c006d0201204576656e744469640000a001185469636b657200008d02013853746f7265645363686564756c6500020c884120636865636b706f696e74207363686564756c652077617320637265617465642e00782863616c6c6572204449442c207469636b65722c207363686564756c65293c5363686564756c6552656d6f7665640c007c01284964656e7469747949640000a001185469636b657200008d02013853746f7265645363686564756c6500030c884120636865636b706f696e74207363686564756c65207761732072656d6f7665642e00782863616c6c6572204449442c207469636b65722c207363686564756c6529085c4576656e747320666f722074686973206d6f64756c652e00850204184f7074696f6e040454016d020108104e6f6e6500000010536f6d6504006d02000001000089020c4c706f6c796d6573685f7072696d6974697665732063616c656e64617230436865636b706f696e7449640000040020010c75363400008d021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e743853746f7265645363686564756c6500001001207363686564756c6591020148436865636b706f696e745363686564756c6500010869649d0201285363686564756c65496400010861742001184d6f6d656e7400012472656d61696e696e6710010c753332000091020c4c706f6c796d6573685f7072696d6974697665732063616c656e64617248436865636b706f696e745363686564756c65000008011473746172742001184d6f6d656e74000118706572696f649502013843616c656e646172506572696f64000095020c4c706f6c796d6573685f7072696d6974697665732063616c656e6461723843616c656e646172506572696f640000080110756e69749902013043616c656e646172556e6974000118616d6f756e7420010c753634000099020c4c706f6c796d6573685f7072696d6974697665732063616c656e6461723043616c656e646172556e697400011c185365636f6e64000000184d696e75746500010010486f75720002000c446179000300105765656b000400144d6f6e74680005001059656172000600009d021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e74285363686564756c6549640000040020010c7536340000a102086470616c6c65745f636f6d706c69616e63655f6d616e61676572144576656e7400012470436f6d706c69616e6365526571756972656d656e74437265617465640c007c01284964656e7469747949640000a001185469636b65720000a5020154436f6d706c69616e6365526571756972656d656e74000008cc456d6974746564207768656e206e657720636f6d706c69616e636520726571756972656d656e7420697320637265617465642eb02863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e70436f6d706c69616e6365526571756972656d656e7452656d6f7665640c007c01284964656e7469747949640000a001185469636b6572000010010c753332000108c4456d6974746564207768656e206120636f6d706c69616e636520726571756972656d656e742069732072656d6f7665642e942863616c6c6572204449442c205469636b65722c20726571756972656d656e745f6964292e5c4173736574436f6d706c69616e63655265706c616365640c007c01284964656e7469747949640000a001185469636b65720000d10201685665633c436f6d706c69616e6365526571756972656d656e743e000208b4456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206973207265706c616365642ed4506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720617373657420636f6d706c69616e63652e504173736574436f6d706c69616e6365526573657408007c01284964656e7469747949640000a001185469636b6572000308d8456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206f662061207469636b65722069732072657365742e542863616c6c6572204449442c205469636b6572292e584173736574436f6d706c69616e6365526573756d656408007c01284964656e7469747949640000a001185469636b65720004080101456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b6572206765747320726573756d652e542863616c6c6572204449442c205469636b6572292e544173736574436f6d706c69616e636550617573656408007c01284964656e7469747949640000a001185469636b65720005080101456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b65722067657473207061757365642e542863616c6c6572204449442c205469636b6572292e70436f6d706c69616e6365526571756972656d656e744368616e6765640c007c01284964656e7469747949640000a001185469636b65720000a5020154436f6d706c69616e6365526571756972656d656e74000608e0456d6974746564207768656e20636f6d706c69616e636520726571756972656d656e7420676574206d6f6469666965642f6368616e67652eb02863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e785472757374656444656661756c74436c61696d49737375657241646465640c007c01284964656e7469747949640000a001185469636b65720000c1020134547275737465644973737565720007081501456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b657220676574732061646465642ea82863616c6c6572204449442c205469636b65722c2041646465642054727573746564497373756572292e805472757374656444656661756c74436c61696d49737375657252656d6f7665640c007c01284964656e7469747949640000a001185469636b657200007c01284964656e7469747949640008081901456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b6572206765742072656d6f7665642eb02863616c6c6572204449442c205469636b65722c2052656d6f7665642054727573746564497373756572292e085c4576656e747320666f722074686973206d6f64756c652e00a5020c4c706f6c796d6573685f7072696d69746976657348636f6d706c69616e63655f6d616e6167657254436f6d706c69616e6365526571756972656d656e7400000c014473656e6465725f636f6e646974696f6e73a90201385665633c436f6e646974696f6e3e00014c72656365697665725f636f6e646974696f6e73a90201385665633c436f6e646974696f6e3e000108696410010c7533320000a902000002ad0200ad020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e24436f6e646974696f6e0000080138636f6e646974696f6e5f74797065b1020134436f6e646974696f6e5479706500011c69737375657273bd0201485665633c547275737465644973737565723e0000b1020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e34436f6e646974696f6e5479706500011424497350726573656e740400f80114436c61696d000000204973416273656e740400f80114436c61696d0001001c4973416e794f660400b50201285665633c436c61696d3e0002002049734e6f6e654f660400b50201285665633c436c61696d3e0003002849734964656e746974790400b90201385461726765744964656e7469747900040000b502000002f800b9020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e385461726765744964656e746974790001083445787465726e616c4167656e7400000020537065636966696304007c01284964656e74697479496400010000bd02000002c10200c1020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e345472757374656449737375657200000801186973737565727c01284964656e74697479496400012c747275737465645f666f72c502012854727573746564466f720000c5020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e2854727573746564466f720001080c416e790000002053706563696669630400c90201385665633c436c61696d547970653e00010000c902000002cd0200cd020c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d24436c61696d54797065000130284163637265646974656400000024416666696c69617465000100244275794c6f636b75700002002853656c6c4c6f636b757000030050437573746f6d657244756544696c6967656e6365000400404b6e6f77596f7572437573746f6d6572000500304a7572697364696374696f6e000600204578656d707465640007001c426c6f636b656400080048496e766573746f72556e697175656e657373000900184e6f54797065000a0050496e766573746f72556e697175656e6573735632000b0000d102000002a50200d502086070616c6c65745f636f72706f726174655f616374696f6e73144576656e740001245c4d617844657461696c734c656e6774684368616e67656408007c01284964656e746974794964000010010c753332000008d4546865206d6178696d756d206c656e677468206f66206064657461696c736020696e20627974657320776173206368616e6765642e50284743204449442c206e6577206c656e677468297844656661756c745461726765744964656e7469746965734368616e6765640c007c01284964656e7469747949640000a001185469636b65720000d90201405461726765744964656e746974696573000108ec54686520736574206f662064656661756c7420605461726765744964656e7469746965736020666f722061207469636b6572206368616e6765642ea4284167656e74204449442c205469636b65722c204e6577205461726765744964656e746974696573297044656661756c7457697468686f6c64696e675461784368616e6765640c007c01284964656e7469747949640000a001185469636b657200007d02010c546178000208c45468652064656661756c742077697468686f6c64696e672074617820666f722061207469636b6572206368616e6765642e74284167656e74204449442c205469636b65722c204e657720546178292e6044696457697468686f6c64696e675461784368616e67656410007c01284964656e7469747949640000a001185469636b657200007c01284964656e7469747949640000e102012c4f7074696f6e3c5461783e000308ec5468652077697468686f6c64696e672074617820737065636966696320746f20612044494420666f722061207469636b6572206368616e6765642ea0284167656e74204449442c205469636b65722c205461786564204449442c204e657720546178292e384341415472616e736665727265640c007c01284964656e7469747949640000a001185469636b657200007c01284964656e7469747949640004086c41206e65772044494420776173206d61646520746865204341412e8c284e657720434141204449442c205469636b65722c204e65772043414120444944292e2c4341496e6974696174656410006d0201204576656e74446964000071020110434149640000e502013c436f72706f72617465416374696f6e000001030124434144657461696c730005084c412043412077617320696e697469617465642ea8284167656e74204449442c2043412069642c207468652043412c207468652043412064657461696c73293443414c696e6b6564546f446f630c007c01284964656e7469747949640000710201104341496400000503013c5665633c446f63756d656e7449643e000608844120434120776173206c696e6b656420746f206120736574206f6620646f63732eac284167656e74204449442c2043412049642c204c697374206f6620646f63206964656e746966696572732924434152656d6f76656408006d0201204576656e74446964000071020110434149640007084441204341207761732072656d6f7665642e48284167656e74204449442c20434120496429445265636f7264446174654368616e6765640c006d0201204576656e74446964000071020110434149640000e502013c436f72706f72617465416374696f6e0008046c412043412773207265636f72642064617465206368616e6765642e085c4576656e747320666f722074686973206d6f64756c652e00d902086070616c6c65745f636f72706f726174655f616374696f6e73405461726765744964656e74697469657300000801286964656e7469746965732501013c5665633c4964656e7469747949643e00012474726561746d656e74dd02013c54617267657454726561746d656e740000dd02086070616c6c65745f636f72706f726174655f616374696f6e733c54617267657454726561746d656e740001081c496e636c7564650000001c4578636c75646500010000e10204184f7074696f6e040454017d020108104e6f6e6500000010536f6d6504007d020000010000e502086070616c6c65745f636f72706f726174655f616374696f6e733c436f72706f72617465416374696f6e00001801106b696e64e902011843414b696e640001246465636c5f646174652001184d6f6d656e7400012c7265636f72645f64617465ed0201484f7074696f6e3c5265636f7264446174653e00011c74617267657473d90201405461726765744964656e74697469657300015c64656661756c745f77697468686f6c64696e675f7461787d02010c54617800013c77697468686f6c64696e675f746178f90201585665633c284964656e7469747949642c20546178293e0000e902086070616c6c65745f636f72706f726174655f616374696f6e731843414b696e64000114485072656469637461626c6542656e6566697400000050556e7072656469637461626c6542656e65666974000100304973737565724e6f746963650002003852656f7267616e697a6174696f6e000300144f7468657200040000ed0204184f7074696f6e04045401f1020108104e6f6e6500000010536f6d650400f1020000010000f102086070616c6c65745f636f72706f726174655f616374696f6e73285265636f7264446174650000080110646174652001184d6f6d656e74000128636865636b706f696e74f50201304341436865636b706f696e740000f502086070616c6c65745f636f72706f726174655f616374696f6e73304341436865636b706f696e74000108245363686564756c656408009d0201285363686564756c654964000020010c753634000000204578697374696e67040089020130436865636b706f696e74496400010000f902000002fd0200fd02000004087c7d02000103086070616c6c65745f636f72706f726174655f616374696f6e7324434144657461696c730000040028011c5665633c75383e0000050300000201020009030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74144576656e740001181c4372656174656414007c01284964656e7469747949640000710201104341496400000d03013c42616c6c6f7454696d6552616e676500001103012842616c6c6f744d657461000019010110626f6f6c00000c7c4120636f72706f726174652062616c6c6f742077617320637265617465642e001501284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e642c2042616c6c6f74206d657461646174612c2052435620656e61626c65643f2920566f7465436173740c007c01284964656e7469747949640000710201104341496400003103013c5665633c42616c6c6f74566f74653e00010c984120766f746520776173206361737420696e206120636f72706f726174652062616c6c6f742e006028766f746572204449442c20434149642c20566f746573293052616e67654368616e6765640c007c01284964656e7469747949640000710201104341496400000d03013c42616c6c6f7454696d6552616e676500020cd04120636f72706f726174652062616c6c6f74206368616e676564206974732073746172742f656e6420646174652072616e67652e0098284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e64292c4d6574614368616e6765640c007c01284964656e7469747949640000710201104341496400001103012842616c6c6f744d65746100030ca04120636f72706f726174652062616c6c6f74206368616e67656420697473206d657461646174612e0088284167656e74204449442c20434127732049442c204e6577206d6574616461746129285243564368616e6765640c007c01284964656e74697479496400007102011043414964000019010110626f6f6c00040cac4120636f72706f726174652062616c6c6f74206368616e676564206974732052435620737570706f72742e0084284167656e74204449442c20434127732049442c204e657720737570706f7274291c52656d6f76656408006d0201204576656e744469640000710201104341496400050c7c4120636f72706f726174652062616c6c6f74207761732072656d6f7665642e0050284167656e74204449442c204341277320494429085c4576656e747320666f722074686973206d6f64756c652e000d030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f743c42616c6c6f7454696d6552616e6765000008011473746172742001184d6f6d656e7400010c656e642001184d6f6d656e74000011030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742842616c6c6f744d65746100000801147469746c651503012c42616c6c6f745469746c6500011c6d6f74696f6e731903012c5665633c4d6f74696f6e3e000015030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c42616c6c6f745469746c650000040028011c5665633c75383e000019030000021d03001d030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74184d6f74696f6e00000c01147469746c652103012c4d6f74696f6e5469746c65000124696e666f5f6c696e6b250301384d6f74696f6e496e666f4c696e6b00011c63686f69636573290301405665633c43686f6963655469746c653e000021030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c4d6f74696f6e5469746c650000040028011c5665633c75383e000025030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74384d6f74696f6e496e666f4c696e6b0000040028011c5665633c75383e000029030000022d03002d030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c43686f6963655469746c650000040028011c5665633c75383e0000310300000235030035030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742842616c6c6f74566f74650000080114706f77657218011c42616c616e636500012066616c6c6261636b3903012c4f7074696f6e3c7531363e0000390304184f7074696f6e040454013d030108104e6f6e6500000010536f6d6504003d0300000100003d0300000504004103082c70616c6c65745f70697073205261774576656e7408244163636f756e74496401002c426c6f636b4e756d6265720110015050486973746f726963616c506970735072756e65640c007c01284964656e746974794964000019010110626f6f6c000019010110626f6f6c00000445015072756e696e6720486973746f726963616c205049507320697320656e61626c6564206f722064697361626c6564202863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293c50726f706f73616c4372656174656420007c01284964656e74697479496400004503014c50726f706f7365723c4163636f756e7449643e00004d0301145069704964000018011c42616c616e636500005102012c4f7074696f6e3c55726c3e0000510301584f7074696f6e3c5069704465736372697074696f6e3e00003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00005903013050726f706f73616c4461746100011498412050495020776173206d61646520776974682061206042616c616e636560207374616b652e00342320506172616d65746572733a00510143616c6c6572204449442c2050726f706f7365722c205049502049442c206465706f7369742c2055524c2c206465736372697074696f6e2c206578706972792074696d652c2070726f706f73616c20646174612e5050726f706f73616c5374617465557064617465640c007c01284964656e74697479496400004d030114506970496400005d03013450726f706f73616c5374617465000204d854726967676572656420656163682074696d6520746865207374617465206f6620612070726f706f73616c20697320616d656e64656414566f74656414007c01284964656e74697479496400000001244163636f756e74496400004d0301145069704964000019010110626f6f6c000018011c42616c616e6365000304f8604163636f756e7449646020766f7465642060626f6f6c60206f6e207468652070726f706f73616c207265666572656e636564206279206050697049646024506970436c6f7365640c007c01284964656e74697479496400004d0301145069704964000019010110626f6f6c000404e850697020686173206265656e20636c6f7365642c20626f6f6c20696e6469636174657320776865746865722064617461206973207072756e656448457865637574696f6e5363686564756c65640c007c01284964656e74697479496400004d0301145069704964000010012c426c6f636b4e756d626572000504e0457865637574696f6e206f6620612050495020686173206265656e207363686564756c656420617420737065636966696320626c6f636b2e7444656661756c74456e6163746d656e74506572696f644368616e6765640c007c01284964656e746974794964000010012c426c6f636b4e756d626572000010012c426c6f636b4e756d626572000608d844656661756c7420656e6163746d656e7420706572696f642028696e20626c6f636b732920686173206265656e206368616e6765642e902863616c6c6572204449442c206f6c6420706572696f642c206e657720706572696f6429744d696e696d756d50726f706f73616c4465706f7369744368616e6765640c007c01284964656e746974794964000018011c42616c616e6365000018011c42616c616e63650007087c4d696e696d756d206465706f73697420616d6f756e74206d6f646966696564902863616c6c6572204449442c206f6c6420616d6f756e742c206e657720616d6f756e74295c50656e64696e675069704578706972794368616e6765640c007c01284964656e74697479496400003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e000808cc416d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020657870697265732e902863616c6c6572204449442c206f6c64206578706972792c206e65772065787069727929584d6178506970536b6970436f756e744368616e6765640c007c01284964656e7469747949640000080130536b6970706564436f756e740000080130536b6970706564436f756e74000908cc546865206d6178696d756d2074696d65732061205049502063616e20626520736b697070656420776173206368616e6765642e882863616c6c6572204449442c206f6c642076616c75652c206e65772076616c756529544163746976655069704c696d69744368616e6765640c007c01284964656e746974794964000010010c753332000010010c753332000a08b8546865206d6178696d756d206e756d626572206f6620616374697665205049507320776173206368616e6765642e882863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293850726f706f73616c526566756e640c007c01284964656e74697479496400004d0301145069704964000018011c42616c616e6365000b083c526566756e642070726f706f73616c482869642c20746f74616c20616d6f756e74293c536e617073686f74436c656172656408007c01284964656e746974794964000061030128536e617073686f744964000c046454686520736e617073686f742077617320636c65617265642e34536e617073686f7454616b656e0c007c01284964656e746974794964000061030128536e617073686f74496400006503014c5665633c536e617073686f747465645069703e000d046441206e657720736e617073686f74207761732074616b656e2e28506970536b69707065640c007c01284964656e74697479496400004d03011450697049640000080130536b6970706564436f756e74000e08a0412050495020696e2074686520736e617073686f742071756575652077617320736b69707065642e802867635f6469642c207069705f69642c206e65775f736b69705f636f756e742958536e617073686f74526573756c7473456e616374656414007c01284964656e7469747949640000710301484f7074696f6e3c536e617073686f7449643e0000750301685665633c2850697049642c20536b6970706564436f756e74293e00007d0301285665633c50697049643e00007d0301285665633c50697049643e000f083101526573756c74732028652e672e2c20617070726f7665642c2072656a65637465642c20616e6420736b6970706564292c207765726520656e616374656420666f7220736f6d6520504950732e51012867635f6469642c20736e617073686f745f69645f6f70742c20736b69707065645f706970735f776974685f6e65775f636f756e742c2072656a65637465645f706970732c20617070726f7665645f706970732964457865637574696f6e5363686564756c696e674661696c65640c007c01284964656e74697479496400004d0301145069704964000010012c426c6f636b4e756d6265720010040d015363686564756c696e67206f66207468652050495020666f7220657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e3c4578706972795363686564756c65640c007c01284964656e74697479496400004d0301145069704964000010012c426c6f636b4e756d626572001104985468652050495020686173206265656e207363686564756c656420666f72206578706972792e584578706972795363686564756c696e674661696c65640c007c01284964656e74697479496400004d0301145069704964000010012c426c6f636b4e756d62657200120401015363686564756c696e67206f66207468652050495020666f7220657870697279206661696c656420696e20746865207363686564756c65722070616c6c65742e64457865637574696f6e43616e63656c6c696e674661696c656404004d0301145069704964001304f043616e63656c6c696e67207468652050495020657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e085c4576656e747320666f722074686973206d6f64756c652e004503082c70616c6c65745f706970732050726f706f73657204244163636f756e7449640100010824436f6d6d756e69747904000001244163636f756e74496400000024436f6d6d6974746565040049030124436f6d6d6974746565000100004903082c70616c6c65745f7069707324436f6d6d697474656500010824546563686e6963616c0000001c55706772616465000100004d03082c70616c6c65745f706970731450697049640000040010010c7533320000510304184f7074696f6e0404540155030108104e6f6e6500000010536f6d650400550300000100005503082c70616c6c65745f70697073385069704465736372697074696f6e0000040028011c5665633c75383e00005903082c70616c6c65745f706970733050726f706f73616c4461746100010810486173680400240110483235360000002050726f706f73616c040028011c5665633c75383e000100005d03082c70616c6c65745f706970733450726f706f73616c53746174650001181c50656e64696e670000002052656a6563746564000100245363686564756c6564000200184661696c65640003002045786563757465640004001c45787069726564000500006103082c70616c6c65745f7069707328536e617073686f7449640000040010010c753332000065030000026903006903082c70616c6c65745f7069707338536e617073686f74746564506970000008010869644d03011450697049640001187765696768746d03013c28626f6f6c2c2042616c616e63652900006d030000040819011800710304184f7074696f6e0404540161030108104e6f6e6500000010536f6d6504006103000001000075030000027903007903000004084d0308007d030000024d030081031064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747324706f7274666f6c696f144576656e7400011840506f7274666f6c696f437265617465640c007c01284964656e7469747949640000e0013c506f7274666f6c696f4e756d626572000085030134506f7274666f6c696f4e616d65000018b054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c7920637265617465642e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572402a20706f7274666f6c696f206e616d6540506f7274666f6c696f44656c6574656408007c01284964656e7469747949640000e0013c506f7274666f6c696f4e756d626572000114b054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c792072656d6f7665642e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572584d6f7665644265747765656e506f7274666f6c696f7318007c01284964656e7469747949640000d8012c506f7274666f6c696f49640000d8012c506f7274666f6c696f49640000a001185469636b6572000018011c42616c616e636500008001304f7074696f6e3c4d656d6f3e000220f04120746f6b656e20616d6f756e7420686173206265656e206d6f7665642066726f6d206f6e6520706f7274666f6c696f20746f20616e6f746865722e00302320506172616d6574657273302a206f726967696e20444944482a20736f7572636520706f7274666f6c696f5c2a2064657374696e6174696f6e20706f7274666f6c696f382a206173736574207469636b6572782a2061737365742062616c616e6365207468617420776173206d6f76656440506f7274666f6c696f52656e616d65640c007c01284964656e7469747949640000e0013c506f7274666f6c696f4e756d626572000085030134506f7274666f6c696f4e616d65000318fc54686520706f7274666f6c696f206964656e746966696564207769746820606e756d6020686173206265656e2072656e616d656420746f20606e616d65602e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572402a20706f7274666f6c696f206e616d653855736572506f7274666f6c696f7308007c01284964656e7469747949640000890301945665633c28506f7274666f6c696f4e756d6265722c20506f7274666f6c696f4e616d65293e000414d4416c6c206e6f6e2d64656661756c7420706f7274666f6c696f206e756d6265727320616e64206e616d6573206f662061204449442e00302320506172616d6574657273302a206f726967696e20444944742a20766563746f72206f66206e756d6265722d6e616d6520706169727364506f7274666f6c696f437573746f6469616e4368616e6765640c007c01284964656e7469747949640000d8012c506f7274666f6c696f496400007c01284964656e746974794964000518f4437573746f6479206f66206120706f7274666f6c696f20686173206265656e20676976656e20746f206120646966666572656e74206964656e7469747900302320506172616d6574657273302a206f726967696e20444944382a20706f7274666f6c696f206964642a20706f7274666f6c696f20637573746f6469616e20646964085c4576656e747320666f722074686973206d6f64756c652e0085030c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f696434506f7274666f6c696f4e616d650000040028011c5665633c75383e000089030000028d03008d0300000408e08503009103084c70616c6c65745f70726f746f636f6c5f666565205261774576656e7404244163636f756e7449640100010c1846656553657408007c01284964656e746974794964000018011c42616c616e6365000004845468652070726f746f636f6c20666565206f6620616e206f7065726174696f6e2e38436f656666696369656e7453657408007c01284964656e746974794964000095030120506f73526174696f000104505468652066656520636f656666696369656e742e284665654368617267656408000001244163636f756e744964000018011c42616c616e63650002043046656520636861726765642e085c4576656e747320666f722074686973206d6f64756c652e009503084c706f6c796d6573685f7072696d69746976657320506f73526174696f0000080010010c753332000010010c753332000099030c4070616c6c65745f7363686564756c65721870616c6c6574144576656e7404045400010c245363686564756c65640800100138543a3a426c6f636b4e756d626572000010010c753332000004905363686564756c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d2043616e63656c65640800100138543a3a426c6f636b4e756d626572000010010c7533320001048c43616e63656c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d28446973706174636865640c009d03016c5461736b416464726573733c543a3a426c6f636b4e756d6265723e00006102013c4f7074696f6e3c5665633c75383e3e0000310101384469737061746368526573756c74000204a84469737061746368656420736f6d65207461736b2e205c5b7461736b2c2069642c20726573756c745c5d04304576656e747320747970652e9d0300000408101000a103084470616c6c65745f736574746c656d656e74205261774576656e740c184d6f6d656e7401202c426c6f636b4e756d6265720110244163636f756e7449640100014c3056656e75654372656174656410007c01284964656e7469747949640000a503011c56656e756549640000a903013056656e756544657461696c730000ad03012456656e756554797065000004ec41206e65772076656e756520686173206265656e206372656174656420286469642c2076656e75655f69642c2064657461696c732c2074797065294c56656e756544657461696c73557064617465640c007c01284964656e7469747949640000a503011c56656e756549640000a903013056656e756544657461696c730001041501416e206578697374696e672076656e756527732064657461696c7320686173206265656e207570646174656420286469642c2076656e75655f69642c2064657461696c73294056656e756554797065557064617465640c007c01284964656e7469747949640000a503011c56656e756549640000ad03012456656e756554797065000204fc416e206578697374696e672076656e75652773207479706520686173206265656e207570646174656420286469642c2076656e75655f69642c20747970652948496e737472756374696f6e437265617465641c007c01284964656e7469747949640000a503011c56656e756549640000b1030134496e737472756374696f6e49640000b503016c536574746c656d656e74547970653c426c6f636b4e756d6265723e0000f401384f7074696f6e3c4d6f6d656e743e0000f401384f7074696f6e3c4d6f6d656e743e0000b90301205665633c4c65673e0003088841206e657720696e737472756374696f6e20686173206265656e20637265617465643901286469642c2076656e75655f69642c20696e737472756374696f6e5f69642c20736574746c656d656e745f747970652c2074726164655f646174652c2076616c75655f646174652c206c656773294c496e737472756374696f6e41666669726d65640c007c01284964656e7469747949640000d8012c506f7274666f6c696f49640000b1030134496e737472756374696f6e49640004040501416e20696e737472756374696f6e20686173206265656e2061666669726d656420286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964295041666669726d6174696f6e57697468647261776e0c007c01284964656e7469747949640000d8012c506f7274666f6c696f49640000b1030134496e737472756374696f6e49640005040901416e2061666669726d6174696f6e20686173206265656e2077697468647261776e20286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964294c496e737472756374696f6e52656a656374656408007c01284964656e7469747949640000b1030134496e737472756374696f6e4964000604d8416e20696e737472756374696f6e20686173206265656e2072656a656374656420286469642c20696e737472756374696f6e5f6964293852656365697074436c61696d656418007c01284964656e7469747949640000b1030134496e737472756374696f6e49640000c10301144c65674964000020010c75363400000001244163636f756e7449640000c503013c526563656970744d657461646174610007047d0141207265636569707420686173206265656e20636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e65722c2072656365697074206d6574616461746129585265636569707456616c69646974794368616e67656410007c01284964656e74697479496400000001244163636f756e744964000020010c753634000019010110626f6f6c0008040d0141207265636569707420686173206265656e20696e76616c69646174656420286469642c207369676e65722c20726563656970745f7569642c2076616c6964697479294052656365697074556e636c61696d656414007c01284964656e7469747949640000b1030134496e737472756374696f6e49640000c10301144c65674964000020010c75363400000001244163636f756e7449640009043d0141207265636569707420686173206265656e20756e636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e6572293856656e756546696c746572696e670c007c01284964656e7469747949640000a001185469636b6572000019010110626f6f6c000a04690156656e75652066696c746572696e6720686173206265656e20656e61626c6564206f722064697361626c656420666f722061207469636b657220286469642c207469636b65722c2066696c746572696e675f656e61626c6564293456656e756573416c6c6f7765640c007c01284964656e7469747949640000a001185469636b65720000c90301305665633c56656e756549643e000b04dc56656e75657320616464656420746f20616c6c6f77206c69737420286469642c207469636b65722c207665633c76656e75655f69643e293456656e756573426c6f636b65640c007c01284964656e7469747949640000a001185469636b65720000c90301305665633c56656e756549643e000c04dc56656e75657320616464656420746f20626c6f636b206c69737420286469642c207469636b65722c207665633c76656e75655f69643e29484c65674661696c6564457865637574696f6e0c007c01284964656e7469747949640000b1030134496e737472756374696f6e49640000c10301144c65674964000d04dc457865637574696f6e206f662061206c6567206661696c656420286469642c20696e737472756374696f6e5f69642c206c65675f69642944496e737472756374696f6e4661696c656408007c01284964656e7469747949640000b1030134496e737472756374696f6e4964000e04c8496e737472756374696f6e206661696c656420657865637574696f6e20286469642c20696e737472756374696f6e5f6964294c496e737472756374696f6e457865637574656408007c01284964656e7469747949640000b1030134496e737472756374696f6e4964000f04d8496e737472756374696f6e206578656375746564207375636365737366756c6c79286469642c20696e737472756374696f6e5f6964294456656e7565556e617574686f72697a65640c007c01284964656e7469747949640000a001185469636b65720000a503011c56656e75654964001004010156656e7565206e6f742070617274206f662074686520746f6b656e277320616c6c6f77206c69737420286469642c205469636b65722c2076656e75655f696429405363686564756c696e674661696c6564040064013444697370617463684572726f72001104805363686564756c696e67206f6620696e737472756374696f6e206661696c732e58496e737472756374696f6e52657363686564756c656408007c01284964656e7469747949640000b1030134496e737472756374696f6e49640012086c496e737472756374696f6e2069732072657363686564756c65642e702863616c6c6572204449442c20696e737472756374696f6e5f696429085c4576656e747320666f722074686973206d6f64756c652e00a503084470616c6c65745f736574746c656d656e741c56656e756549640000040020010c7536340000a903084470616c6c65745f736574746c656d656e743056656e756544657461696c730000040028011c5665633c75383e0000ad03084470616c6c65745f736574746c656d656e742456656e756554797065000110144f7468657200000030446973747269627574696f6e0001000c53746f0002002045786368616e676500030000b103084470616c6c65745f736574746c656d656e7434496e737472756374696f6e49640000040020010c7536340000b503084470616c6c65745f736574746c656d656e7438536574746c656d656e7454797065042c426c6f636b4e756d626572011001084c536574746c654f6e41666669726d6174696f6e00000034536574746c654f6e426c6f636b040010012c426c6f636b4e756d62657200010000b903000002bd0300bd03084470616c6c65745f736574746c656d656e740c4c6567000010011066726f6dd8012c506f7274666f6c696f4964000108746fd8012c506f7274666f6c696f49640001146173736574a001185469636b6572000118616d6f756e7418011c42616c616e63650000c103084470616c6c65745f736574746c656d656e74144c656749640000040020010c7536340000c503084470616c6c65745f736574746c656d656e743c526563656970744d657461646174610000040028011c5665633c75383e0000c903000002a50300cd031064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732873746174697374696373144576656e740001183853746174547970657341646465640c007c01284964656e7469747949640000d1030128417373657453636f70650000d50301345665633c53746174547970653e00000c685374617420747970657320616464656420746f2061737365742e007c2843616c6c6572204449442c2041737365742c2053746174207479706573294053746174547970657352656d6f7665640c007c01284964656e7469747949640000d1030128417373657453636f70650000d50301345665633c53746174547970653e00010c78537461742074797065732072656d6f7665642066726f6d2061737365742e007c2843616c6c6572204449442c2041737365742c20537461742074797065732944417373657453746174735570646174656410007c01284964656e7469747949640000d1030128417373657453636f70650000d903012053746174547970650000e903013c5665633c537461745570646174653e00020c50417373657420737461747320757064617465642e009c2843616c6c6572204449442c2041737365742c205374617420747970652c2055706461746573296853657441737365745472616e73666572436f6d706c69616e63650c007c01284964656e7469747949640000d1030128417373657453636f70650000010401585665633c5472616e73666572436f6e646974696f6e3e00030ca0536574205472616e7366657220636f6d706c69616e63652072756c657320666f722061737365742e00a02843616c6c6572204449442c2041737365742c205472616e7366657220636f6e646974696f6e7329805472616e73666572436f6e646974696f6e4578656d7074696f6e7341646465640c007c01284964656e74697479496400000d0401685472616e73666572436f6e646974696f6e4578656d70744b65790000250101305665633c53636f706549643e00040c0901416464206053636f706549646073206578656d707420666f72207472616e7366657220636f6e646974696f6e73206d61746368696e67206578656d7074206b65792e00882843616c6c6572204449442c204578656d7074206b65792c20456e74697469657329885472616e73666572436f6e646974696f6e4578656d7074696f6e7352656d6f7665640c007c01284964656e74697479496400000d0401685472616e73666572436f6e646974696f6e4578656d70744b65790000250101305665633c53636f706549643e00050c150152656d6f7665206053636f706549646073206578656d707420666f72207472616e7366657220636f6e646974696f6e73206d61746368696e67206578656d7074206b65792e00882843616c6c6572204449442c204578656d7074206b65792c20456e74697469657329085c4576656e747320666f722074686973206d6f64756c652e00d1030c4c706f6c796d6573685f7072696d697469766573287374617469737469637328417373657453636f7065000104185469636b65720400a001185469636b657200000000d503000002d90300d9030c4c706f6c796d6573685f7072696d697469766573287374617469737469637320537461745479706500000801086f70dd030128537461744f7054797065000130636c61696d5f697373756572e103017c4f7074696f6e3c28436c61696d547970652c204964656e746974794964293e0000dd030c4c706f6c796d6573685f7072696d697469766573287374617469737469637328537461744f705479706500010814436f756e740000001c42616c616e636500010000e10304184f7074696f6e04045401e5030108104e6f6e6500000010536f6d650400e5030000010000e50300000408cd027c00e903000002ed0300ed030c4c706f6c796d6573685f7072696d6974697665732873746174697374696373285374617455706461746500000801106b657932f103012853746174326e644b657900011476616c7565fd0301304f7074696f6e3c753132383e0000f1030c4c706f6c796d6573685f7072696d69746976657328737461746973746963732853746174326e644b65790001082c4e6f436c61696d5374617400000014436c61696d0400f503012453746174436c61696d00010000f5030c4c706f6c796d6573685f7072696d69746976657328737461746973746963732453746174436c61696d00010c2841636372656469746564040019010110626f6f6c00000024416666696c69617465040019010110626f6f6c000100304a7572697364696374696f6e0400f903014c4f7074696f6e3c436f756e747279436f64653e00020000f90304184f7074696f6e0404540105010108104e6f6e6500000010536f6d65040005010000010000fd0304184f7074696f6e04045401180108104e6f6e6500000010536f6d650400180000010000010400000205040005040c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e6365445472616e73666572436f6e646974696f6e000110404d6178496e766573746f72436f756e74040020010c753634000000504d6178496e766573746f724f776e65727368697004000904012850657263656e7461676500010028436c61696d436f756e741000f503012453746174436c61696d00007c01284964656e746974794964000020010c7536340000f4012c4f7074696f6e3c7536343e00020038436c61696d4f776e6572736869701000f503012453746174436c61696d00007c01284964656e74697479496400000904012850657263656e7461676500000904012850657263656e746167650003000009040c4c706f6c796d6573685f7072696d69746976657328737461746973746963733c4861736861626c655065726d696c6c000004007d02015873705f61726974686d657469633a3a5065726d696c6c00000d040c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e6365685472616e73666572436f6e646974696f6e4578656d70744b657900000c01146173736574d1030128417373657453636f70650001086f70dd030128537461744f7054797065000128636c61696d5f74797065110401444f7074696f6e3c436c61696d547970653e0000110404184f7074696f6e04045401cd020108104e6f6e6500000010536f6d650400cd0200000100001504082870616c6c65745f73746f205261774576656e7404184d6f6d656e74012001184446756e647261697365724372656174656410007c01284964656e74697479496400001904013046756e64726169736572496400001d04013846756e647261697365724e616d6500002104014846756e647261697365723c4d6f6d656e743e0000088841206e65772066756e6472616973657220686173206265656e20637265617465642efc284167656e74204449442c2066756e647261697365722069642c2066756e64726169736572206e616d652c2066756e647261697365722064657461696c732920496e76657374656418007c01284964656e74697479496400001904013046756e6472616973657249640000a001185469636b65720000a001185469636b6572000018011c42616c616e6365000018011c42616c616e63650001089c416e20696e766573746f7220696e76657374656420696e207468652066756e647261697365722e850128496e766573746f722c2066756e647261697365725f69642c206f66666572696e6720746f6b656e2c20726169736520746f6b656e2c206f66666572696e675f746f6b656e5f616d6f756e742c2072616973655f746f6b656e5f616d6f756e74294046756e6472616973657246726f7a656e08007c01284964656e74697479496400001904013046756e64726169736572496400020874412066756e6472616973657220686173206265656e2066726f7a656e2e68284167656e74204449442c2066756e64726169736572206964294846756e64726169736572556e66726f7a656e08007c01284964656e74697479496400001904013046756e6472616973657249640003087c412066756e6472616973657220686173206265656e20756e66726f7a656e2e68284167656e74204449442c2066756e64726169736572206964296046756e6472616973657257696e646f774d6f64696669656418006d0201204576656e7444696400001904013046756e64726169736572496400002001184d6f6d656e740000f401384f7074696f6e3c4d6f6d656e743e00002001184d6f6d656e740000f401384f7074696f6e3c4d6f6d656e743e00040898412066756e647261697365722077696e646f7720686173206265656e206d6f6469666965642e0901284167656e74204449442c2066756e647261697365722069642c206f6c645f73746172742c206f6c645f656e642c206e65775f73746172742c206e65775f656e64294046756e64726169736572436c6f73656408007c01284964656e74697479496400001904013046756e64726169736572496400050878412066756e6472616973657220686173206265656e2073746f707065642e68284167656e74204449442c2066756e6472616973657220696429085c4576656e747320666f722074686973206d6f64756c652e001904082870616c6c65745f73746f3046756e6472616973657249640000040020010c75363400001d04082870616c6c65745f73746f3846756e647261697365724e616d650000040028011c5665633c75383e00002104082870616c6c65745f73746f2846756e6472616973657204184d6f6d656e740120002c011c63726561746f727c01284964656e7469747949640001486f66666572696e675f706f7274666f6c696fd8012c506f7274666f6c696f49640001386f66666572696e675f6173736574a001185469636b657200014472616973696e675f706f7274666f6c696fd8012c506f7274666f6c696f496400013472616973696e675f6173736574a001185469636b657200011474696572732504014c5665633c46756e64726169736572546965723e00012076656e75655f6964a503011c56656e7565496400011473746172742001184d6f6d656e7400010c656e64f401384f7074696f6e3c4d6f6d656e743e0001187374617475732d04014046756e647261697365725374617475730001486d696e696d756d5f696e766573746d656e7418011c42616c616e6365000025040000022904002904082870616c6c65745f73746f3846756e647261697365725469657200000c0114746f74616c18011c42616c616e6365000114707269636518011c42616c616e636500012472656d61696e696e6718011c42616c616e636500002d04082870616c6c65745f73746f4046756e64726169736572537461747573000110104c6976650000001846726f7a656e00010018436c6f7365640002002c436c6f7365644561726c79000300003104083c70616c6c65745f7472656173757279205261774576656e74041c42616c616e63650118010850547265617375727944697362757273656d656e740c007c01284964656e74697479496400007c01284964656e746974794964000018011c42616c616e63650000088844697362757273656d656e7420746f206120746172676574204964656e746974792e6428746172676574206964656e746974792c20616d6f756e74295454726561737572795265696d62757273656d656e7408007c01284964656e746974794964000018011c42616c616e63650001045c5472656173757279207265696d62757273656d656e742e085c4576656e747320666f722074686973206d6f64756c652e003504083870616c6c65745f7574696c697479144576656e7400010c404261746368496e74657272757074656408003904012c4576656e74436f756e747300003d04011c4572726f72417400000cac4261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792edc496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f72206561636820646973706174636820616e64f474686520696e646578206f6620746865206669727374206661696c696e672064697370617463682061732077656c6c20617320746865206572726f722e5442617463684f7074696d69737469634661696c656408003904012c4576656e74436f756e74730000410401305665633c4572726f7241743e00010cac4261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792ecc496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c20616e6429016120766563746f72206f6620616e79206661696c65642064697370617463686573207769746820746865697220696e646963657320616e64206173736f636961746564206572726f722e384261746368436f6d706c6574656404003904012c4576656e74436f756e7473000208c84261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722ed0496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682064697370617463682e0c5c4576656e747320666f722074686973206d6f64756c652e00304576656e747320747970652e390400000210003d040000040810640041040000023d040045041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731062617365144576656e740001043c556e65787065637465644572726f720400490401544f7074696f6e3c44697370617463684572726f723e000004e4416e20756e6578706563746564206572726f722068617070656e656420746861742073686f756c6420626520696e766573746967617465642e085c4576656e747320666f722074686973206d6f64756c652e00490404184f7074696f6e04045401640108104e6f6e6500000010536f6d6504006400000100004d041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974733c65787465726e616c5f6167656e7473144576656e740001143047726f75704372656174656410006d0201204576656e744469640000a001185469636b6572000015010110414749640000b0015045787472696e7369635065726d697373696f6e7300000c6c416e204167656e742047726f75702077617320637265617465642e00d02843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773207065726d697373696f6e73295c47726f75705065726d697373696f6e735570646174656410006d0201204576656e744469640000a001185469636b6572000015010110414749640000b0015045787472696e7369635065726d697373696f6e7300010ca4416e204167656e742047726f75702773207065726d697373696f6e732077617320757064617465642e00e02843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773206e6577207065726d697373696f6e7329284167656e7441646465640c006d0201204576656e744469640000a001185469636b65720000110101284167656e7447726f757000020c4c416e206167656e74207761732061646465642e00c42843616c6c65722f4167656e74204449442c204167656e742773207469636b65722c204167656e7427732067726f757029304167656e7452656d6f7665640c006d0201204576656e744469640000a001185469636b657200007c01284964656e74697479496400030c54416e206167656e74207761732072656d6f7665642e00a42843616c6c6572204449442c204167656e742773207469636b65722c204167656e74277320444944293047726f75704368616e67656410006d0201204576656e744469640000a001185469636b657200007c01284964656e7469747949640000110101284167656e7447726f757000040c74416e206167656e7427732067726f757020776173206368616e6765642e0015012843616c6c6572204449442c204167656e742773207469636b65722c204167656e742773204449442c20546865206e65772067726f7570206f6620746865206167656e7429085c4576656e747320666f722074686973206d6f64756c652e0051041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731c72656c61796572205261774576656e7404244163636f756e744964010001104c417574686f72697a6564506179696e674b657914006d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000020010c75363400000ccc417574686f72697a6174696f6e20676976656e20666f722060706179696e675f6b65796020746f2060757365725f6b6579602e0001012843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20496e697469616c20504f4c5958206c696d69742c204175746820494429444163636570746564506179696e674b65790c006d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e74496400010c50416363657074656420706179696e67206b65792e00882843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294052656d6f766564506179696e674b65790c006d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e74496400020c4c52656d6f76656420706179696e67206b65792e00882843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294455706461746564506f6c79784c696d697414006d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000018011c42616c616e636500030c505570646174656420706f6c7978206c696d69742e0011012843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20504f4c5958206c696d69742c206f6c642072656d61696e696e6720504f4c595829085c4576656e747320666f722074686973206d6f64756c652e005504083870616c6c65745f72657761726473205261774576656e7404244163636f756e744964010001044049746e526577617264436c61696d656408000001244163636f756e744964000018011c42616c616e63650000045c49746e207265776172642077617320636c61696d65642e085c4576656e747320666f722074686973206d6f64756c652e005904084470616c6c65745f746573745f7574696c73205261774576656e7404244163636f756e7449640100010c584d6f636b496e766573746f725549444372656174656408007c01284964656e74697479496400005d04012c496e766573746f725569640000080d0141206e6577206d6f636b65642060496e766573746f725569646020686173206265656e206372656174656420666f722074686520676976656e204964656e746974792e7428546172676574204449442c204e657720496e766573746f72556964292444696453746174757308007c01284964656e74697479496400000001244163636f756e744964000108e4456d6974732074686520604964656e7469747949646020616e642074686520604163636f756e74496460206f66207468652063616c6c65722e702843616c6c6572204449442c2043616c6c6572206163636f756e7429244364645374617475730c007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000019010110626f6f6c00020c550153686f777320746865206044494460206173736f63696174656420746f2074686520604163636f756e744964602c20616e64206120666c616720696e646963617465732069662074686174204449442068617320614076616c69642043444420636c61696d2ed828546172676574204449442c20546172676574204163636f756e742c20612076616c69642043444420636c61696d2065786973747329085c4576656e747320666f722074686973206d6f64756c652e005d040c4c706f6c796d6573685f7072696d697469766573186364645f69642c496e766573746f7255696400000400990101205b75383b2031365d0000610408306672616d655f73797374656d14506861736500010c384170706c7945787472696e736963040010010c7533320000003046696e616c697a6174696f6e00010038496e697469616c697a6174696f6e000200006504000002240069040000029d03006d0408306672616d655f73797374656d584c61737452756e74696d6555706772616465496e666f0000080130737065635f76657273696f6e7104014c636f6465633a3a436f6d706163743c7533323e000124737065635f6e616d657504016473705f72756e74696d653a3a52756e74696d65537472696e670000710400000610007504000005020079040c306672616d655f73797374656d1870616c6c65741043616c6c0404540001282866696c6c5f626c6f636b040114726174696f8d01011c50657262696c6c00000405014120646973706174636820746861742077696c6c2066696c6c2074686520626c6f636b2077656967687420757020746f2074686520676976656e20726174696f2e1872656d61726b04011872656d61726b28011c5665633c75383e000114684d616b6520736f6d65206f6e2d636861696e2072656d61726b2e002823203c7765696768743e202d20604f283129602c23203c2f7765696768743e387365745f686561705f7061676573040114706167657320010c753634000224f853657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e002823203c7765696768743e202d20604f28312960482d20312073746f726167652077726974652e602d2042617365205765696768743a20312e34303520c2b5735c2d203120777269746520746f20484541505f50414745533c2d203120646967657374206974656d2c23203c2f7765696768743e207365745f636f6465040110636f646528011c5665633c75383e0003306453657420746865206e65772072756e74696d6520636f64652e002823203c7765696768743e31012d20604f2843202b2053296020776865726520604360206c656e677468206f662060636f64656020616e642060536020636f6d706c6578697479206f66206063616e5f7365745f636f64656045012d20312063616c6c20746f206063616e5f7365745f636f6465603a20604f28532960202863616c6c73206073705f696f3a3a6d6973633a3a72756e74696d655f76657273696f6e60207768696368206973342020657870656e73697665292e842d20312073746f726167652077726974652028636f64656320604f28432960292e402d203120646967657374206974656d2e282d2031206576656e742e4d0154686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652c206275742067656e6572616c6c7920746869732069732076657279b8657870656e736976652e2057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e2c23203c2f7765696768743e5c7365745f636f64655f776974686f75745f636865636b73040110636f646528011c5665633c75383e000424190153657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e002823203c7765696768743e8c2d20604f2843296020776865726520604360206c656e677468206f662060636f646560842d20312073746f726167652077726974652028636f64656320604f28432960292e402d203120646967657374206974656d2e282d2031206576656e742e550154686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652e2057652077696c6c207472656174207468697320617320612066756c6c48626c6f636b2e2023203c2f7765696768743e5c7365745f6368616e6765735f747269655f636f6e66696704014c6368616e6765735f747269655f636f6e6669674001804f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e0005289c53657420746865206e6577206368616e676573207472696520636f6e66696775726174696f6e2e002823203c7765696768743e202d20604f28312960ac2d20312073746f72616765207772697465206f722064656c6574652028636f64656320604f28312960292ed42d20312063616c6c20746f20606465706f7369745f6c6f67603a20557365732060617070656e6460204150492c20736f204f283129602d2042617365205765696768743a20372e32313820c2b573302d204442205765696768743aa4202020202d205772697465733a204368616e67657320547269652c2053797374656d204469676573742c23203c2f7765696768743e2c7365745f73746f726167650401146974656d737d0401345665633c4b657956616c75653e0006206853657420736f6d65206974656d73206f662073746f726167652e002823203c7765696768743e902d20604f2849296020776865726520604960206c656e677468206f6620606974656d7360782d206049602073746f72616765207772697465732028604f28312960292e702d2042617365205765696768743a20302e353638202a206920c2b573642d205772697465733a204e756d626572206f66206974656d732c23203c2f7765696768743e306b696c6c5f73746f726167650401106b657973850401205665633c4b65793e000720744b696c6c20736f6d65206974656d732066726f6d2073746f726167652e002823203c7765696768743ef82d20604f28494b296020776865726520604960206c656e677468206f6620606b6579736020616e6420604b60206c656e677468206f66206f6e65206b6579602d206049602073746f726167652064656c6574696f6e732e6c2d2042617365205765696768743a202e333738202a206920c2b573642d205772697465733a204e756d626572206f66206974656d732c23203c2f7765696768743e2c6b696c6c5f70726566697808011870726566697828010c4b657900011c7375626b65797310010c75333200082c11014b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e0039012a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e6465723d0174686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e002823203c7765696768743ed82d20604f285029602077686572652060506020616d6f756e74206f66206b657973207769746820707265666978206070726566697860602d206050602073746f726167652064656c6574696f6e732e702d2042617365205765696768743a20302e383334202a205020c2b5737c2d205772697465733a204e756d626572206f66207375626b657973202b20312c23203c2f7765696768743e4472656d61726b5f776974685f6576656e7404011872656d61726b28011c5665633c75383e000918a44d616b6520736f6d65206f6e2d636861696e2072656d61726b20616e6420656d6974206576656e742e002823203c7765696768743eb42d20604f28622960207768657265206220697320746865206c656e677468206f66207468652072656d61726b2e282d2031206576656e742e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e7d040000028104008104000004082828008504000002280089040c306672616d655f73797374656d186c696d69747330426c6f636b5765696768747300000c0128626173655f626c6f636b2001185765696768740001246d61785f626c6f636b2001185765696768740001247065725f636c6173738d0401845065724469737061746368436c6173733c57656967687473506572436c6173733e00008d040c346672616d655f737570706f72741c77656967687473405065724469737061746368436c617373040454019104000c01186e6f726d616c910401045400012c6f7065726174696f6e616c91040104540001246d616e6461746f72799104010454000091040c306672616d655f73797374656d186c696d6974733c57656967687473506572436c6173730000100138626173655f65787472696e7369632001185765696768740001346d61785f65787472696e736963f401384f7074696f6e3c5765696768743e0001246d61785f746f74616cf401384f7074696f6e3c5765696768743e0001207265736572766564f401384f7074696f6e3c5765696768743e000095040c306672616d655f73797374656d186c696d6974732c426c6f636b4c656e677468000004010c6d6178990401545065724469737061746368436c6173733c7533323e000099040c346672616d655f737570706f72741c77656967687473405065724469737061746368436c6173730404540110000c01186e6f726d616c1001045400012c6f7065726174696f6e616c100104540001246d616e6461746f72791001045400009d040c346672616d655f737570706f72741c776569676874733c52756e74696d65446257656967687400000801107265616420011857656967687400011477726974652001185765696768740000a104082873705f76657273696f6e3852756e74696d6556657273696f6e00001c0124737065635f6e616d657504013452756e74696d65537472696e67000124696d706c5f6e616d657504013452756e74696d65537472696e67000144617574686f72696e675f76657273696f6e10010c753332000130737065635f76657273696f6e10010c753332000130696d706c5f76657273696f6e10010c75333200011061706973a504011c4170697356656300014c7472616e73616374696f6e5f76657273696f6e10010c7533320000a504040c436f7704045401a904000400a904000000a904000002ad0400ad0400000408b1041000b104000003080000000800b5040c306672616d655f73797374656d1870616c6c6574144572726f720404540001143c496e76616c6964537065634e616d650000081101546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e685370656356657273696f6e4e65656473546f496e63726561736500010841015468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e00020cec4661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e0009014569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e4c4e6f6e44656661756c74436f6d706f73697465000304fc537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e3c4e6f6e5a65726f526566436f756e74000404350154686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e046c4572726f7220666f72207468652053797374656d2070616c6c6574b90410346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401bd04045300000400c50401185665633c543e0000bd0400000408c1042000c1040c4473705f636f6e73656e7375735f626162650c617070185075626c696300000400bd01013c737232353531393a3a5075626c69630000c504000002bd0400c904084873705f636f6e73656e7375735f736c6f747310536c6f740000040020010c7536340000cd040c4473705f636f6e73656e7375735f626162651c64696765737473504e657874436f6e66696744657363726970746f7200010408563108010463d1040128287536342c2075363429000134616c6c6f7765645f736c6f7473d5040130416c6c6f776564536c6f747300010000d10400000408202000d504084473705f636f6e73656e7375735f6261626530416c6c6f776564536c6f747300010c305072696d617279536c6f7473000000745072696d617279416e645365636f6e64617279506c61696e536c6f74730001006c5072696d617279416e645365636f6e64617279565246536c6f747300020000d90410346672616d655f737570706f72741c73746f726167652c626f756e6465645f76656328426f756e6465645665630804540104045300000400dd0401185665633c543e0000dd040000020400e10404184f7074696f6e04045401040108104e6f6e6500000010536f6d650400040000010000e504084473705f636f6e73656e7375735f62616265584261626545706f6368436f6e66696775726174696f6e000008010463d1040128287536342c2075363429000134616c6c6f7765645f736c6f7473d5040130416c6c6f776564536c6f74730000e9040c2c70616c6c65745f626162651870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66ed040184426f783c45717569766f636174696f6e50726f6f663c543a3a4865616465723e3e00013c6b65795f6f776e65725f70726f6f66f9040140543a3a4b65794f776e657250726f6f6600001009015265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667905017468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f660d01616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c306265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66ed040184426f783c45717569766f636174696f6e50726f6f663c543a3a4865616465723e3e00013c6b65795f6f776e65725f70726f6f66f9040140543a3a4b65794f776e657250726f6f6600012009015265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667905017468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f660d01616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c306265207265706f727465642e0d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e48706c616e5f636f6e6669675f6368616e6765040118636f6e666967cd0401504e657874436f6e66696744657363726970746f720002105d01506c616e20616e2065706f636820636f6e666967206368616e67652e205468652065706f636820636f6e666967206368616e6765206973207265636f7264656420616e642077696c6c20626520656e6163746564206f6e5101746865206e6578742063616c6c20746f2060656e6163745f65706f63685f6368616e6765602e2054686520636f6e6669672077696c6c20626520616374697661746564206f6e652065706f63682061667465722e59014d756c7469706c652063616c6c7320746f2074686973206d6574686f642077696c6c207265706c61636520616e79206578697374696e6720706c616e6e656420636f6e666967206368616e6765207468617420686164546e6f74206265656e20656e6163746564207965742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632eed04084873705f636f6e73656e7375735f736c6f74734445717569766f636174696f6e50726f6f66081848656164657201f10408496401c104001001206f6666656e646572c10401084964000110736c6f74c9040110536c6f7400013066697273745f686561646572f10401184865616465720001347365636f6e645f686561646572f10401184865616465720000f104102873705f72756e74696d651c67656e65726963186865616465721848656164657208184e756d6265720110104861736801f5040014012c706172656e745f68617368240130486173683a3a4f75747075740001186e756d626572710401184e756d62657200012873746174655f726f6f74240130486173683a3a4f757470757400013c65787472696e736963735f726f6f74240130486173683a3a4f75747075740001186469676573742c01504469676573743c486173683a3a4f75747075743e0000f5040c2873705f72756e74696d65187472616974732c426c616b6554776f32353600000000f904082873705f73657373696f6e3c4d656d6265727368697050726f6f6600000c011c73657373696f6e10013053657373696f6e496e646578000128747269655f6e6f646573850401305665633c5665633c75383e3e00013c76616c696461746f725f636f756e7410013856616c696461746f72436f756e740000fd040c2c70616c6c65745f626162651870616c6c6574144572726f7204045400010c60496e76616c696445717569766f636174696f6e50726f6f660000043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c69644b65794f776e65727368697050726f6f66000104310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400020415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a09090901050c4070616c6c65745f74696d657374616d701870616c6c65741043616c6c0404540001040c73657404010c6e6f7705050124543a3a4d6f6d656e7400004054536574207468652063757272656e742074696d652e005501546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6ed470686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e0041015468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e742073706563696669656420627940604d696e696d756d506572696f64602e00d4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e002823203c7765696768743e31012d20604f2831296020284e6f7465207468617420696d706c656d656e746174696f6e73206f6620604f6e54696d657374616d7053657460206d75737420616c736f20626520604f283129602961012d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202862656361757365206f6620604469645570646174653a3a74616b656020696e402020606f6e5f66696e616c697a656029d42d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f736574602e204d75737420626520604f283129602e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e0505000006200009050000040c00181901000d050c3870616c6c65745f696e64696365731870616c6c65741043616c6c04045400011414636c61696d040114696e64657810013c543a3a4163636f756e74496e6465780000489841737369676e20616e2070726576696f75736c7920756e61737369676e656420696e6465782e00dc5061796d656e743a20604465706f736974602069732072657365727665642066726f6d207468652073656e646572206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e00f02d2060696e646578603a2074686520696e64657820746f20626520636c61696d65642e2054686973206d757374206e6f7420626520696e207573652e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e602d204f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e207472616e7366657208010c6e6577000130543a3a4163636f756e744964000114696e64657810013c543a3a4163636f756e74496e6465780001505d0141737369676e20616e20696e64657820616c7265616479206f776e6564206279207468652073656e64657220746f20616e6f74686572206163636f756e742e205468652062616c616e6365207265736572766174696f6eb86973206566666563746976656c79207472616e7366657272656420746f20746865206e6577206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0025012d2060696e646578603a2074686520696e64657820746f2062652072652d61737369676e65642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e5d012d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e642d204f6e65207472616e73666572206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743ae02020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e7429e42020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e74292c23203c2f7765696768743e1066726565040114696e64657810013c543a3a4163636f756e74496e646578000248944672656520757020616e20696e646578206f776e6564206279207468652073656e6465722e005d015061796d656e743a20416e792070726576696f7573206465706f73697420706c6163656420666f722074686520696e64657820697320756e726573657276656420696e207468652073656e646572206163636f756e742e005501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206f776e2074686520696e6465782e000d012d2060696e646578603a2074686520696e64657820746f2062652066726565642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e0084456d6974732060496e646578467265656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e602d204f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e38666f7263655f7472616e736665720c010c6e6577000130543a3a4163636f756e744964000114696e64657810013c543a3a4163636f756e74496e646578000118667265657a6519010110626f6f6c0003545501466f72636520616e20696e64657820746f20616e206163636f756e742e205468697320646f65736e277420726571756972652061206465706f7369742e2049662074686520696e64657820697320616c7265616479e868656c642c207468656e20616e79206465706f736974206973207265696d62757273656420746f206974732063757272656e74206f776e65722e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e00a42d2060696e646578603a2074686520696e64657820746f206265202872652d2961737369676e65642e5d012d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e41012d2060667265657a65603a2069662073657420746f206074727565602c2077696c6c20667265657a652074686520696e64657820736f2069742063616e6e6f74206265207472616e736665727265642e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e782d20557020746f206f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743af42020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e657229f82020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e6572292c23203c2f7765696768743e18667265657a65040114696e64657810013c543a3a4163636f756e74496e6465780004484101467265657a6520616e20696e64657820736f2069742077696c6c20616c7761797320706f696e7420746f207468652073656e646572206163636f756e742e205468697320636f6e73756d657320746865206465706f7369742e005901546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d757374206861766520616c6e6f6e2d66726f7a656e206163636f756e742060696e646578602e00ac2d2060696e646578603a2074686520696e64657820746f2062652066726f7a656e20696e20706c6163652e0088456d6974732060496e64657846726f7a656e60206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e702d20557020746f206f6e6520736c617368206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e11050c3870616c6c65745f696e64696365731870616c6c6574144572726f720404540001142c4e6f7441737369676e65640000048c54686520696e64657820776173206e6f7420616c72656164792061737369676e65642e204e6f744f776e6572000104a454686520696e6465782069732061737369676e656420746f20616e6f74686572206163636f756e742e14496e5573650002047054686520696e64657820776173206e6f7420617661696c61626c652e2c4e6f745472616e73666572000304c854686520736f7572636520616e642064657374696e6174696f6e206163636f756e747320617265206964656e746963616c2e245065726d616e656e74000404d054686520696e646578206973207065726d616e656e7420616e64206d6179206e6f742062652066726565642f6368616e6765642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a09090915050000021905001905084470616c6c65745f617574686f727368697038556e636c65456e7472794974656d0c2c426c6f636b4e756d62657201101048617368012418417574686f72010001083c496e636c7573696f6e486569676874040010012c426c6f636b4e756d62657200000014556e636c650800240110486173680000090101384f7074696f6e3c417574686f723e000100001d050c4470616c6c65745f617574686f72736869701870616c6c65741043616c6c040454000104287365745f756e636c65730401286e65775f756e636c6573210501385665633c543a3a4865616465723e0000046050726f76696465206120736574206f6620756e636c65732e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e2105000002f1040025050c4470616c6c65745f617574686f72736869701870616c6c6574144572726f7204045400011c48496e76616c6964556e636c65506172656e740000048854686520756e636c6520706172656e74206e6f7420696e2074686520636861696e2e40556e636c6573416c726561647953657400010480556e636c657320616c72656164792073657420696e2074686520626c6f636b2e34546f6f4d616e79556e636c657300020440546f6f206d616e7920756e636c65732e3047656e65736973556e636c650003045454686520756e636c652069732067656e657369732e30546f6f48696768556e636c650004047c54686520756e636c6520697320746f6f206869676820696e20636861696e2e50556e636c65416c7265616479496e636c756465640005047854686520756e636c6520697320616c726561647920696e636c756465642e204f6c64556e636c65000604b454686520756e636c652069736e277420726563656e7420656e6f75676820746f20626520696e636c756465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a09090929050000022d05002d05083c70616c6c65745f62616c616e6365732c42616c616e63654c6f636b041c42616c616e63650118000c01086964b10401384c6f636b4964656e746966696572000118616d6f756e7418011c42616c616e636500011c726561736f6e733105011c526561736f6e73000031051064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e6365731c526561736f6e7300010c0c466565000000104d6973630001000c416c6c000200003505083c70616c6c65745f62616c616e6365731043616c6c040454000118207472616e73666572080110646573743905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565cd01011c42616c616e6365000058d45472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e000501607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e1d0149742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e001501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e002823203c7765696768743e2d012d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72c82020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e65012d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e004852656c617465642066756e6374696f6e733a004d0120202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e290120202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c206361757365d0202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e842d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d41012d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429dc2d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e487472616e736665725f776974685f6d656d6f0c0110646573743905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565cd01011c42616c616e63650001106d656d6f8001304f7074696f6e3c4d656d6f3e000120fc5472616e7366657220746865206e61746976652063757272656e63792077697468207468652068656c70206f66206964656e74696669657220737472696e67ec746869732066756e6374696f6e616c6974792063616e2068656c7020746f20646966666572656e746961746520746865207472616e73666572732e002823203c7765696768743e41012d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429dc2d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e906465706f7369745f626c6f636b5f7265776172645f726573657276655f62616c616e636504011476616c7565cd01011c42616c616e6365000204dc4d6f766520736f6d6520504f4c59582066726f6d2062616c616e6365206f662073656c6620746f2062616c616e6365206f66204252522e2c7365745f62616c616e63650c010c77686f3905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263650001206e65775f66726565cd01011c42616c616e63650001306e65775f7265736572766564cd01011c42616c616e636500031890536574207468652062616c616e636573206f66206120676976656e206163636f756e742e001d01546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c0501616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e00b0546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e38666f7263655f7472616e736665720c0118736f757263653905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365000110646573743905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565cd01011c42616c616e636500041c4d0145786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d6179206265287370656369666965642e002823203c7765696768743e3d012d2053616d65206173207472616e736665722c20627574206164646974696f6e616c207265616420616e6420777269746520626563617573652074686520736f75726365206163636f756e742069738c20206e6f7420617373756d656420746f20626520696e20746865206f7665726c61792e2c23203c2f7765696768743e506275726e5f6163636f756e745f62616c616e6365040118616d6f756e7418011c42616c616e636500050429014275726e732074686520676976656e20616d6f756e74206f6620746f6b656e732066726f6d207468652063616c6c6572277320667265652c20756e6c6f636b65642062616c616e63652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e39050c2873705f72756e74696d65306d756c746961646472657373304d756c74694164647265737308244163636f756e7449640100304163636f756e74496e6465780110011408496404000001244163636f756e74496400000014496e6465780400710401304163636f756e74496e6465780001000c526177040028011c5665633c75383e0002002441646472657373333204000401205b75383b2033325d000300244164647265737332300400f90101205b75383b2032305d000400003d05083c70616c6c65745f62616c616e636573144572726f72040454000114544c69717569646974795265737472696374696f6e73000004c44163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c204f766572666c6f7700010470476f7420616e206f766572666c6f7720616674657220616464696e674c496e73756666696369656e7442616c616e63650002047442616c616e636520746f6f206c6f7720746f2073656e642076616c7565484578697374656e7469616c4465706f736974000304e856616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369744852656365697665724364644d697373696e6700040488526563656976657220646f6573206e6f74206861766520612076616c6964204344440041050c3473705f61726974686d657469632c66697865645f706f696e7424466978656455313238000004001801107531323800004505086870616c6c65745f7472616e73616374696f6e5f7061796d656e742052656c6561736573000108245631416e6369656e740000000856320001000049050000024d05004d050c346672616d655f737570706f72741c7765696768747358576569676874546f466565436f656666696369656e74041c42616c616e6365011800100134636f6566665f696e746567657218011c42616c616e6365000128636f6566665f667261638d01011c50657262696c6c0001206e6567617469766519010110626f6f6c0001186465677265650801087538000051050c4c706f6c796d6573685f7072696d697469766573206964656e74697479244469645265636f726404244163636f756e74496401000004012c7072696d6172795f6b6579090101444f7074696f6e3c4163636f756e7449643e000055050000040859055d050059050c3c70616c6c65745f6964656e746974791474797065732c436c61696d3173744b657900000801187461726765747c01284964656e746974794964000128636c61696d5f74797065cd020124436c61696d5479706500005d050c3c70616c6c65745f6964656e746974791474797065732c436c61696d326e644b657900000801186973737565727c01284964656e74697479496400011473636f7065610501344f7074696f6e3c53636f70653e0000610504184f7074696f6e04045401fc0108104e6f6e6500000010536f6d650400fc000001000065050c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579244b65795265636f726404244163636f756e7449640100010c285072696d6172794b657904007c01284964656e746974794964000000305365636f6e646172794b657908007c01284964656e746974794964000098012c5065726d697373696f6e73000100444d756c74695369675369676e65724b657904000001244163636f756e744964000200006905000004087c00006d05000004086d01200071050c4c706f6c796d6573685f7072696d69746976657334617574686f72697a6174696f6e34417574686f72697a6174696f6e08244163636f756e7449640100184d6f6d656e74012000100148617574686f72697a6174696f6e5f646174610d010170417574686f72697a6174696f6e446174613c4163636f756e7449643e000134617574686f72697a65645f62797c01284964656e746974794964000118657870697279f401384f7074696f6e3c4d6f6d656e743e00011c617574685f696420010c75363400007505000004087c20007905083c70616c6c65745f6964656e746974791c56657273696f6e00000400080108753800007d05083c70616c6c65745f6964656e746974791043616c6c040454000154406364645f72656769737465725f6469640801387461726765745f6163636f756e74000130543a3a4163636f756e7449640001387365636f6e646172795f6b65797390017c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e00002cb8526567697374657220607461726765745f6163636f756e746020776974682061206e6577204964656e746974792e002423204661696c75726545012d20606f726967696e602068617320746f206265206120616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792ef42d2045787465726e616c207365636f6e64617279206b6579732063616e206265206c696e6b656420746f206a757374206f6e65206964656e746974792e00202320576569676874c060375f3030305f3030305f303030202b203630305f303030202a207365636f6e646172795f6b6579732e6c656e28296054696e76616c69646174655f6364645f636c61696d730c010c6364647c01284964656e74697479496400013064697361626c655f66726f6d200124543a3a4d6f6d656e74000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001102101496e76616c69646174657320616e7920636c61696d2067656e6572617465642062792060636464602066726f6d206064697361626c655f66726f6d602074696d657374616d70732e009c596f752063616e20616c736f20646566696e6520616e2065787069726174696f6e2074696d652c6d0177686963682077696c6c20696e76616c696461746520616c6c20636c61696d732067656e657261746564206279207468617420606364646020616e642072656d6f766520697420617320434444206d656d6265722067726f75702e5472656d6f76655f7365636f6e646172795f6b6579730401386b6579735f746f5f72656d6f7665ec01445665633c543a3a4163636f756e7449643e00021cd452656d6f76657320737065636966696564207365636f6e64617279206b657973206f662061204449442069662070726573656e742e002423204661696c757265a049742063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722e00202320576569676874b4603935305f3030305f303030202b2036305f303030202a206b6579735f746f5f72656d6f76652e6c656e282960486163636570745f7072696d6172795f6b6579080140726f746174696f6e5f617574685f696420010c7536340001506f7074696f6e616c5f6364645f617574685f6964f4012c4f7074696f6e3c7536343e000334650143616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e6501746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f766564250174686973206368616e676520286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e005d015468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f7264756e6c696e6b656420746f20616e79206964656e746974792e005d01446966666572732066726f6d20726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727920696e20746861742069742077696c6c20756e6c696e6b20746865206f6c64207072696d617279206b6579a4696e7374656164206f66206c656176696e672069742061732061207365636f6e64617279206b65792e002c2320417267756d656e74731d012a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e42a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f7669646572986368616e67655f6364645f726571756972656d656e745f666f725f6d6b5f726f746174696f6e040134617574685f726571756972656419010110626f6f6c00041435015365742069662043444420617574686f72697a6174696f6e20697320726571756972656420666f72207570646174696e67207072696d617279206b6579206f6620616e206964656e746974792e7843616c6c61626c652076696120726f6f742028676f7665726e616e636529002c2320417267756d656e7473cc2a2060617574685f7265717569726564602043444420417574686f72697a6174696f6e207265717569726564206f72206e6f74506a6f696e5f6964656e746974795f61735f6b657904011c617574685f696420010c753634000504904a6f696e20616e206964656e746974792061732061207365636f6e64617279206b65792e546c656176655f6964656e746974795f61735f6b65790006048c4c6561766520746865207365636f6e64617279206b65792773206964656e746974792e246164645f636c61696d0c01187461726765747c01284964656e746974794964000114636c61696df80114436c61696d000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e00070cc4416464732061206e657720636c61696d207265636f7264206f7220656469747320616e206578697374696e67206f6e652e00a84f6e6c792063616c6c6564206279206469645f6973737565722773207365636f6e64617279206b65792e307265766f6b655f636c61696d0801187461726765747c01284964656e746974794964000114636c61696df80114436c61696d000804944d61726b73207468652073706563696669656420636c61696d206173207265766f6b65642e747365745f7365636f6e646172795f6b65795f7065726d697373696f6e7308010c6b6579000130543a3a4163636f756e7449640001147065726d7398012c5065726d697373696f6e7300090cc853657473207065726d697373696f6e7320666f7220616e20737065636966696320607461726765745f6b657960206b65792e0035014f6e6c7920746865207072696d617279206b6579206f6620616e206964656e746974792069732061626c6520746f20736574207365636f6e64617279206b6579207065726d697373696f6e732e54667265657a655f7365636f6e646172795f6b657973000a10c449742064697361626c657320616c6c207365636f6e64617279206b657973206174206064696460206964656e746974792e002023204572726f7273005c756e667265657a655f7365636f6e646172795f6b657973000b04dc52652d656e61626c657320616c6c207365636f6e64617279206b657973206f66207468652063616c6c65722773206964656e746974792e446164645f617574686f72697a6174696f6e0c01187461726765746d01015c5369676e61746f72793c543a3a4163636f756e7449643e000110646174610d01017c417574686f72697a6174696f6e446174613c543a3a4163636f756e7449643e000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e000c04584164647320616e20617574686f72697a6174696f6e2e5072656d6f76655f617574686f72697a6174696f6e0c01187461726765746d01015c5369676e61746f72793c543a3a4163636f756e7449643e00011c617574685f696420010c7536340001445f617574685f6973737565725f7061797319010110626f6f6c000d086452656d6f76657320616e20617574686f72697a6174696f6e2e75015f617574685f6973737565725f706179732064657465726d696e657320776865746865722074686520697373756572206f662074686520617574686f7269736174696f6e207061797320746865207472616e73616374696f6e20666565946164645f7365636f6e646172795f6b6579735f776974685f617574686f72697a6174696f6e08013c6164646974696f6e616c5f6b6579738105019c5665633c5365636f6e646172794b657957697468417574683c543a3a4163636f756e7449643e3e000128657870697265735f6174200124543a3a4d6f6d656e74000e30bc49742061646473207365636f6e64617279206b65797320746f20746172676574206964656e7469747920606964602e39014b65797320617265206469726563746c7920616464656420746f206964656e7469747920626563617573652065616368206f66207468656d2068617320616e20617574686f72697a6174696f6e2e0028417267756d656e74733ab0202020202d20606f726967696e60205072696d617279206b6579206f662060696460206964656e746974792eec202020202d2060696460204964656e74697479207768657265206e6577207365636f6e64617279206b6579732077696c6c2062652061646465642e6d01202020202d20606164646974696f6e616c5f6b65797360204e6577207365636f6e64617279206974656d732028616e6420746865697220617574686f72697a6174696f6e20646174612920746f2061646420746f2074617267657434202020206964656e746974792e001c4661696c757265b8202020202d2049742063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722ed0202020202d204b6579732073686f756c642062652061626c6520746f206c696e6b656420746f20616e79206964656e746974792e746164645f696e766573746f725f756e697175656e6573735f636c61696d1001187461726765747c01284964656e746974794964000114636c61696df80114436c61696d00011470726f6f668d05014c496e766573746f725a4b50726f6f6644617461000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e000f5009014164642060436c61696d3a3a496e766573746f72556e697175656e6573736020636c61696d20666f72206120676976656e20746172676574206964656e746974792e002823203c7765696768743e410120576569676874206f662074686520746869732065787472696e73696320697320646570656e64206f6e2074686520636f6d7075746174696f6e2074686174207573656420746f2076616c69646174652501207468652070726f6f66206f6620636c61696d2c2077686963682077696c6c206265206120636f6e7374616e7420696e646570656e64656e74206f66207573657220696e707574732e2c23203c2f7765696768743e002c2320417267756d656e7473b5012a206f726967696e202d2057686f2070726f76696465732074686520636c61696d20746f2074686520757365723f20496e207468697320636173652c20697427732074686520757365722773206163636f756e742069642061732074686520757365722070726f76696465732ee42a20746172676574202d20604964656e7469747949646020746f2077686963682074686520636c61696d20676574732061737369676e65642eb42a20636c61696d202d2060496e766573746f72556e697175656e6573736020636c61696d2064657461696c732eac2a2070726f6f66202d20546f2076616c6964617465207468652073656c66206174746573746174696f6e2e6c2a20657870697279202d20457870697279206f6620636c61696d2e002023204572726f72732d012a20604469644d757374416c7265616479457869737460205461726765742073686f756c6420616c7265616479206265656e20612070617274206f66207468652065636f73797374656d2e91012a2060436c61696d56617269616e744e6f74416c6c6f77656460205768656e206f726967696e20747279696e6720746f207061737320636c61696d2076617269616e74206f74686572207468616e2060496e766573746f72556e697175656e657373602eb9012a2060436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f77656460205768656e2069737375657220697320646966666572656e742066726f6d20746172676574206f72204344445f494420697320696e76616c696420666f7220676976656e20757365722eac2a2060496e76616c696453636f7065436c61696d205768656e2070726f6f6620697320696e76616c69642eec2a2060496e76616c6964434444496460207768656e20796f7520617265206e6f7420746865206f776e6572206f662074686174204344445f49442e4067635f6164645f6364645f636c61696d0401187461726765747c01284964656e7469747949640010044501417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c20616464732061206e65772063646420636c61696d207265636f72642e4c67635f7265766f6b655f6364645f636c61696d0401187461726765747c01284964656e7469747949640011046901417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c2072656d6f76657320616e206578697374696e672063646420636c61696d207265636f72642e806164645f696e766573746f725f756e697175656e6573735f636c61696d5f76321401187461726765747c01284964656e74697479496400011473636f7065fc011453636f7065000114636c61696df80114436c61696d00011470726f6f669d05013c53636f7065436c61696d50726f6f66000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e001200547265766f6b655f636c61696d5f62795f696e6465780c01187461726765747c01284964656e746974794964000128636c61696d5f74797065cd020124436c61696d5479706500011473636f7065610501344f7074696f6e3c53636f70653e001320f5015265766f6b6573206120737065636966696320636c61696d207573696e6720697473205b436c61696d20556e6971756520496e6465785d282f70616c6c65745f6964656e746974792f696e6465782e68746d6c23636c61696d2d756e697175652d696e6465782920636f6d706f7365642062792060746172676574602c6860636c61696d5f74797065602c20616e64206073636f7065602e000501506c65617365206e6f7465207468617420606f726967696e60206d7573742062652074686520697373756572206f66207468652074617267657420636c61696d2e002023204572726f72734d012d20605461726765744861734e6f6e5a65726f42616c616e6365417453636f7065496460207768656e20796f752074727920746f207265766f6b6520612060496e766573746f72556e697175656e6573732a602501636c61696d2c20616e64206074617267657460206964656e74697479207374696c6c206861766520616e792062616c616e6365206f6e2074686520676976656e206073636f7065602e7c726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727908011c617574685f696420010c7536340001506f7074696f6e616c5f6364645f617574685f6964f4012c4f7074696f6e3c7536343e001438650143616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e6501746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f766564290174686973206368616e67652c20286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e005d015468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f7264756e6c696e6b656420746f20616e79206964656e746974792e006101446966666572732066726f6d206163636570745f7072696d6172795f6b657920696e20746861742069742077696c6c206c6561766520746865206f6c64207072696d617279206b65792061732061207365636f6e6461727985016b6579207769746820746865207065726d697373696f6e732073706563696669656420696e2074686520636f72726573706f6e64696e6720526f746174655072696d6172794b6579546f5365636f6e6461727920617574686f72697a6174696f6ea4696e7374656164206f6620756e6c696e6b696e6720746865206f6c64207072696d617279206b65792e002c2320417267756d656e74731d012a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e42a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f76696465720c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e810500000285050085051064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479505365636f6e646172794b6579576974684175746804244163636f756e7449640100000801347365636f6e646172795f6b657994015c5365636f6e646172794b65793c4163636f756e7449643e000138617574685f7369676e6174757265890501104835313200008905083c7072696d69746976655f7479706573104835313200000400110201205b75383b2036345d00008d05104c706f6c796d6573685f7072696d69746976657354696e766573746f725f7a6b70726f6f665f646174610876314c496e766573746f725a4b50726f6f664461746100000400910501245369676e6174757265000091050c287363686e6f72726b656c107369676e245369676e61747572650000080104529505014c436f6d7072657373656452697374726574746f00010473990501185363616c6172000095050c40637572766532353531395f64616c656b2472697374726574746f4c436f6d7072657373656452697374726574746f000004000401205b75383b2033325d000099050c40637572766532353531395f64616c656b187363616c6172185363616c6172000004011462797465730401205b75383b2033325d00009d050c54636f6e666964656e7469616c5f6964656e7469747930636c61696d5f70726f6f66733c53636f7065436c61696d50726f6f6600000c016470726f6f665f73636f70655f69645f77656c6c666f726d6564a10501245369676e617475726500016c70726f6f665f73636f70655f69645f6364645f69645f6d61746368a505012c5a6b50726f6f664461746100012073636f70655f6964ad05013852697374726574746f506f696e740000a1050c54636f6e666964656e7469616c5f6964656e74697479107369676e245369676e61747572650000080104529505014c436f6d7072657373656452697374726574746f00010473990501185363616c61720000a5050c54636f6e666964656e7469616c5f6964656e7469747930636c61696d5f70726f6f66732c5a6b50726f6f664461746100000c014c6368616c6c656e67655f726573706f6e736573a90501945b5363616c61723b205a4b5f50524f4f465f444154415f4348475f524553504f4e5345535d00016073756274726163745f65787072657373696f6e735f726573ad05013852697374726574746f506f696e74000158626c696e6465645f73636f70655f6469645f68617368ad05013852697374726574746f506f696e740000a90500000302000000990500ad050c40637572766532353531395f64616c656b2472697374726574746f3852697374726574746f506f696e7400000400b105013045647761726473506f696e740000b1050c40637572766532353531395f64616c656b1c656477617264733045647761726473506f696e74000010010458b50501304669656c64456c656d656e7400010459b50501304669656c64456c656d656e740001045ab50501304669656c64456c656d656e7400010454b50501304669656c64456c656d656e740000b5051840637572766532353531395f64616c656b1c6261636b656e641873657269616c0c753634146669656c64384669656c64456c656d656e74353100000400b90501205b7536343b20355d0000b905000003050000002000bd05083c70616c6c65745f6964656e74697479144572726f7204045400018434416c72656164794c696e6b6564000004dc4f6e65207365636f6e64617279206f72207072696d617279206b65792063616e206f6e6c792062656c6f6e6720746f206f6e6520444944584d697373696e6743757272656e744964656e74697479000104ac4d697373696e672063757272656e74206964656e74697479206f6e20746865207472616e73616374696f6e30556e617574686f72697a6564000204bc5369676e61746f7279206973206e6f742070726520617574686f72697a656420627920746865206964656e7469747944496e76616c69644163636f756e744b6579000304a84163636f756e742049642063616e6e6f74206265206578747261637465642066726f6d207369676e65725c556e417574686f72697a656443646450726f76696465720004049c4f6e6c792043444420736572766963652070726f7669646572732061726520616c6c6f7765642e74496e76616c6964417574686f72697a6174696f6e46726f6d4f776e6572000504a0416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865206f776e65722e8c496e76616c6964417574686f72697a6174696f6e46726f6d43646450726f7669646572000604bc416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865204344442070726f76696465722e644e6f7443646450726f76696465724174746573746174696f6e000704b84174746573746174696f6e20776173206e6f7420627920612043444420736572766963652070726f76696465722e70417574686f72697a6174696f6e734e6f74466f7253616d6544696473000804a0417574686f72697a6174696f6e7320617265206e6f7420666f72207468652073616d65204449442e4c4469644d757374416c726561647945786973740009046c54686520444944206d75737420616c72656164792065786973742e8043757272656e744964656e7469747943616e6e6f744265466f72776172646564000a044d0143757272656e74206964656e746974792063616e6e6f7420626520666f727761726465642c206974206973206e6f742061207365636f6e64617279206b6579206f6620746172676574206964656e746974792e50417574686f72697a6174696f6e45787069726564000b049c546865206f6666636861696e20617574686f72697a6174696f6e2068617320657870697265642e385461726765744861734e6f436464000c0480546865207461726765742044494420686173206e6f2076616c6964204344442e6c417574686f72697a6174696f6e4861734265656e5265766f6b6564000d04a8417574686f72697a6174696f6e20686173206265656e206578706c696369746c79207265766f6b65642e74496e76616c6964417574686f72697a6174696f6e5369676e6174757265000e048c416e20696e76616c696420617574686f72697a6174696f6e207369676e61747572652e344b65794e6f74416c6c6f776564000f04d454686973206b6579206973206e6f7420616c6c6f77656420746f2065786563757465206120676976656e206f7065726174696f6e2e344e6f745072696d6172794b657900100461014f6e6c7920746865207072696d617279206b657920697320616c6c6f77656420746f207265766f6b6520616e204964656e74697479205369676e61746f7279206f66662d636861696e20617574686f72697a6174696f6e2e3c446964446f65734e6f7445786973740011045c5468652044494420646f6573206e6f742065786973742e40446964416c72656164794578697374730012045c5468652044494420616c7265616479206578697374732e785365636f6e646172794b657973436f6e7461696e5072696d6172794b6579001304ac546865207365636f6e64617279206b65797320636f6e7461696e20746865207072696d617279206b65792e444661696c6564546f436861726765466565001404a0436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e284e6f74415369676e6572001504d85369676e6572206973206e6f742061207365636f6e64617279206b6579206f66207468652070726f7669646564206964656e746974796c43616e6e6f744465636f64655369676e65724163636f756e744964001604150143616e6e6f7420636f6e7665727420612060543a3a4163636f756e7449646020746f2060416e795369676e61747572653a3a5369676e65723a3a4163636f756e744964602e484d756c746953696748617342616c616e636500170421014d756c74697369672063616e206e6f7420626520756e6c696e6b65642066726f6d20616e206964656e74697479207768696c65206974207374696c6c20686f6c647320504f4c595880436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f7765640018040501436f6e666964656e7469616c2053636f706520636c61696d732063616e20626520616464656420627920616e204964656e7469747920746f2069742d73656c662e44496e76616c696453636f7065436c61696d001904bc4164646974696f6e206f662061206e65772073636f706520636c61696d206765747320696e76616c6964617465642e58436c61696d56617269616e744e6f74416c6c6f776564001a04e454727920746f20616464206120636c61696d2076617269616e74207573696e6720756e2d64657369676e617465642065787472696e7369632e805461726765744861734e6f6e5a65726f42616c616e6365417453636f70654964001b04510154727920746f2064656c6574652074686520495520636c61696d206576656e207768656e20746865207573657220686173206e6f6e207a65726f2062616c616e636520617420676976656e2073636f706549642e6443444449644e6f74556e69717565466f724964656e74697479001c041d0143444449642073686f756c6420626520756e6971756520262073616d652077697468696e20616c6c2063646420636c61696d7320706f737365737365642062792061204449442e30496e76616c69644344444964001d0409014e6f6e2073797374656d61746963204344442070726f7669646572732063616e206e6f74206372656174652064656661756c74206364645f696420636c61696d732e7c436c61696d416e6450726f6f6656657273696f6e73446f4e6f744d61746368001e049c436c61696d20616e642050726f6f662076657273696f6e732061726520646966666572656e742e544163636f756e744b657949734265696e6755736564001f04d0546865206163636f756e74206b6579206973206265696e6720757365642c2069742063616e277420626520756e6c696e6b65642e48437573746f6d53636f7065546f6f4c6f6e670020086c4120637573746f6d2073636f706520697320746f6f206c6f6e672e9c49742063616e206174206d6f737420626520603332602063686172616374657273206c6f6e672e00c105000002c50500c5051064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f757038496e6163746976654d656d62657204184d6f6d656e740120000c010869647c01284964656e74697479496400013864656163746976617465645f61742001184d6f6d656e74000118657870697279f401384f7074696f6e3c4d6f6d656e743e0000c905083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001086174f401444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572732501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ecd05083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00d1050c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d651043616c6c0001a41853797374656d0400790401ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53797374656d2c2052756e74696d653e00000010426162650400e90401a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426162652c2052756e74696d653e0001002454696d657374616d700400010501b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54696d657374616d702c2052756e74696d653e0002001c496e646963657304000d0501b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496e64696365732c2052756e74696d653e00030028417574686f727368697004001d0501bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c417574686f72736869702c2052756e74696d653e0004002042616c616e6365730400350501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c42616c616e6365732c2052756e74696d653e000500204964656e7469747904007d0501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4964656e746974792c2052756e74696d653e0007004c4364645365727669636550726f7669646572730400c90501e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4364645365727669636550726f7669646572732c2052756e74696d653e00080044506f6c796d657368436f6d6d69747465650400d50501d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f6c796d657368436f6d6d69747465652c2052756e74696d653e0009004c436f6d6d69747465654d656d626572736869700400d90501e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6d6d69747465654d656d626572736869702c2052756e74696d653e000a0048546563686e6963616c436f6d6d69747465650400dd0501dd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546563686e6963616c436f6d6d69747465652c2052756e74696d653e000b0070546563686e6963616c436f6d6d69747465654d656d626572736869700400e10501050273656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546563686e6963616c436f6d6d69747465654d656d626572736869702c2052756e74696d653e000c004055706772616465436f6d6d69747465650400e50501d50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c55706772616465436f6d6d69747465652c2052756e74696d653e000d006855706772616465436f6d6d69747465654d656d626572736869700400e90501fd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c55706772616465436f6d6d69747465654d656d626572736869702c2052756e74696d653e000e00204d756c74695369670400ed0501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d756c74695369672c2052756e74696d653e000f00184272696467650400f10501ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4272696467652c2052756e74696d653e0010001c5374616b696e670400010601b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5374616b696e672c2052756e74696d653e0011001c53657373696f6e0400f50601b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53657373696f6e2c2052756e74696d653e0013001c4772616e6470610400010701b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4772616e6470612c2052756e74696d653e00150020496d4f6e6c696e6504002d0701b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496d4f6e6c696e652c2052756e74696d653e001700105375646f04004d0701a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5375646f2c2052756e74696d653e0019001441737365740400510701a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c41737365742c2052756e74696d653e001a004c4361706974616c446973747269627574696f6e0400710701e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4361706974616c446973747269627574696f6e2c2052756e74696d653e001b0028436865636b706f696e740400790701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436865636b706f696e742c2052756e74696d653e001c0044436f6d706c69616e63654d616e616765720400810701d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6d706c69616e63654d616e616765722c2052756e74696d653e001d003c436f72706f72617465416374696f6e0400850701d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f72706f72617465416374696f6e2c2052756e74696d653e001e003c436f72706f7261746542616c6c6f7404009d0701d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f72706f7261746542616c6c6f742c2052756e74696d653e001f0010506970730400a10701a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506970732c2052756e74696d653e00210024506f7274666f6c696f0400b10701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f7274666f6c696f2c2052756e74696d653e0022002c50726f746f636f6c4665650400bd0701c10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50726f746f636f6c4665652c2052756e74696d653e002300245363686564756c65720400c50701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5363686564756c65722c2052756e74696d653e00240028536574746c656d656e740400cd0701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c536574746c656d656e742c2052756e74696d653e00250028537461746973746963730400e10701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c537461746973746963732c2052756e74696d653e0026000c53746f0400f50701a10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53746f2c2052756e74696d653e0027002054726561737572790400050801b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54726561737572792c2052756e74696d653e0028001c5574696c6974790400110801b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5574696c6974792c2052756e74696d653e002900104261736504001d0801a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426173652c2052756e74696d653e002a003845787465726e616c4167656e74730400210801cd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c45787465726e616c4167656e74732c2052756e74696d653e002b001c52656c617965720400250801b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c52656c617965722c2052756e74696d653e002c001c526577617264730400290801b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c526577617264732c2052756e74696d653e002d0024546573745574696c730400310801b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546573745574696c732c2052756e74696d653e00320000d505084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279390101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f766519010110626f6f6c00011063616c6cd1050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f766519010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ed905083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001086174f401444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572732501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652edd05084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279390101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f766519010110626f6f6c00011063616c6cd1050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f766519010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ee105083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001086174f401444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572732501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ee505084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279390101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f766519010110626f6f6c00011063616c6cd1050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f766519010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ee905083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001086174f401444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572732501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652eed05083c70616c6c65745f6d756c74697369671043616c6c04045400014c3c6372656174655f6d756c746973696708011c7369676e657273690101705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000134736967735f726571756972656420010c75363400001448437265617465732061206d756c7469736967002c2320417267756d656e7473a5012a20607369676e65727360202d205369676e657273206f6620746865206d756c7469736967202854686579206e65656420746f2061636365707420617574686f72697a6174696f6e206265666f72652074686579206172652061637475616c6c79206164646564292e19012a2060736967735f726571756972656460202d204e756d626572206f66207369677320726571756972656420746f2070726f636573732061206d756c74692d7369672074782e986372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6964656e746974791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616cd1050140426f783c543a3a50726f706f73616c3e000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736519010110626f6f6c0001203d01437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e846372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6b65791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616cd1050140426f783c543a3a50726f706f73616c3e000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736519010110626f6f6c0002203d01437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e6c6372656174655f70726f706f73616c5f61735f6964656e746974791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616cd1050140426f783c543a3a50726f706f73616c3e000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736519010110626f6f6c0003206c437265617465732061206d756c74697369672070726f706f73616c002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e586372656174655f70726f706f73616c5f61735f6b65791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616cd1050140426f783c543a3a50726f706f73616c3e000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736519010110626f6f6c0004206c437265617465732061206d756c74697369672070726f706f73616c002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4c617070726f76655f61735f6964656e746974790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c753634000518e4417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea42a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e38617070726f76655f61735f6b65790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340006183101417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea42a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4872656a6563745f61735f6964656e746974790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c753634000718e052656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea02a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e3472656a6563745f61735f6b65790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340008182d0152656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea02a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e886163636570745f6d756c74697369675f7369676e65725f61735f6964656e7469747904011c617574685f696420010c7536340009100d01416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206964656e746974792e002c2320417267756d656e7473ac2a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e746163636570745f6d756c74697369675f7369676e65725f61735f6b657904011c617574685f696420010c753634000a102901416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206b657920284163636f756e744964292e002c2320417267756d656e7473ac2a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e4c6164645f6d756c74697369675f7369676e65720401187369676e65726d01015c5369676e61746f72793c543a3a4163636f756e7449643e000b102901416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e002c2320417267756d656e7473782a20607369676e657260202d205369676e61746f727920746f206164642e5872656d6f76655f6d756c74697369675f7369676e65720401187369676e65726d01015c5369676e61746f72793c543a3a4163636f756e7449643e000c103d0152656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e002c2320417267756d656e7473842a20607369676e657260202d205369676e61746f727920746f2072656d6f76652e806164645f6d756c74697369675f7369676e6572735f7669615f63726561746f720801206d756c7469736967000130543a3a4163636f756e74496400011c7369676e657273690101705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000d244501416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865246d756c74697369672e002c2320417267756d656e74739c2a20606d756c746973696760202d2041646472657373206f6620746865206d756c746920736967842a20607369676e65727360202d205369676e61746f7269657320746f206164642e00202320576569676874a4603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e2829608c72656d6f76655f6d756c74697369675f7369676e6572735f7669615f63726561746f720801206d756c7469736967000130543a3a4163636f756e74496400011c7369676e657273690101705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000e248c52656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672ef054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865206d756c74697369672e002c2320417267756d656e74739c2a20606d756c746973696760202d2041646472657373206f6620746865206d756c74697369672e902a20607369676e65727360202d205369676e61746f7269657320746f2072656d6f76652e00202320576569676874a4603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e282960506368616e67655f736967735f7265717569726564040134736967735f726571756972656420010c753634000f144d014368616e67657320746865206e756d626572206f66207369676e6174757265732072657175697265642062792061206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865406d756c746973696720697473656c662e002c2320417267756d656e7473d82a2060736967735f726571756972656460202d204e6577206e756d626572206f66207265717569726564207369676e6174757265732e5c6d616b655f6d756c74697369675f7365636f6e646172790401206d756c7469736967000130543a3a4163636f756e7449640010146901416464732061206d756c74697369672061732061207365636f6e64617279206b6579206f662063757272656e7420646964206966207468652063757272656e7420646964206973207468652063726561746f72206f6620746865246d756c74697369672e002c2320417267756d656e7473802a20606d756c746973696760202d206d756c7469207369672061646472657373546d616b655f6d756c74697369675f7072696d6172790801206d756c7469736967000130543a3a4163636f756e7449640001506f7074696f6e616c5f6364645f617574685f6964f4012c4f7074696f6e3c7536343e0011145d01416464732061206d756c746973696720617320746865207072696d617279206b6579206f66207468652063757272656e7420646964206966207468652063757272656e7420444944206973207468652063726561746f72406f6620746865206d756c74697369672e002c2320417267756d656e7473842a20606d756c74695f73696760202d206d756c746920736967206164647265737368657865637574655f7363686564756c65645f70726f706f73616c1001206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340001306d756c74697369675f6469647c01284964656e7469747949640001405f70726f706f73616c5f7765696768742001185765696768740012047101526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20666f7220657865637574696e67207363686564756c6564206d756c74697369672070726f706f73616c2e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef105083470616c6c65745f6272696467651043616c6c040454000144446368616e67655f636f6e74726f6c6c6572040128636f6e74726f6c6c6572000130543a3a4163636f756e744964000010a04368616e6765732074686520636f6e74726f6c6c6572206163636f756e742061732061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e306368616e67655f61646d696e04011461646d696e000130543a3a4163636f756e744964000110744368616e67657320746865206272696467652061646d696e206b65792e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e3c6368616e67655f74696d656c6f636b04012074696d656c6f636b100138543a3a426c6f636b4e756d626572000210704368616e676573207468652074696d656c6f636b20706572696f642e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e18667265657a650003145d01467265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c65206966206974206973206e6f7420616c72656164792066726f7a656e2e205768656e2074686549016272696467652069732066726f7a656e2c20617474656d70746564207472616e73616374696f6e732067657420706f7374706f6e656420696e7374656164206f662067657474696e672068616e646c65642e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e20756e667265657a650004101101556e667265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c652069662069742069732066726f7a656e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c6368616e67655f6272696467655f6c696d6974080118616d6f756e7418011c42616c616e63650001206475726174696f6e100138543a3a426c6f636b4e756d626572000514684368616e6765732074686520627269646765206c696d6974732e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ea42d20604469766973696f6e42795a65726f6020696620606475726174696f6e60206973207a65726f2e586368616e67655f6272696467655f6578656d707465640401206578656d70746564f505015c5665633c284964656e7469747949642c20626f6f6c293e0006109c4368616e6765732074686520627269646765206c696d6974206578656d70746564206c6973742e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e58666f7263655f68616e646c655f6272696467655f74780401246272696467655f74787501015842726964676554783c543a3a4163636f756e7449643e0007142501466f726365732068616e646c696e672061207472616e73616374696f6e20627920627970617373696e672074686520627269646765206c696d697420616e642074696d656c6f636b2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e21012d20604e6f56616c69644364646020696620606272696467655f74782e726563697069656e746020646f6573206e6f74206861766520612076616c69642043444420636c61696d2e5c62617463685f70726f706f73655f6272696467655f74780401286272696467655f747873fd05016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000824450150726f706f736573206120766563746f72206f6620627269646765207472616e73616374696f6e732e2054686520766563746f722069732070726f63657373656420756e74696c207468652066697273744d0170726f706f73616c2077686963682063617573657320616e206572726f722c20696e207768696368206361736520746865206572726f722069732072657475726e656420616e64207468652072657374206f667070726f706f73616c7320617265206e6f742070726f6365737365642e00242323204572726f7273c82d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e00202320576569676874b0603530305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829604470726f706f73655f6272696467655f74780401246272696467655f74787501015842726964676554783c543a3a4163636f756e7449643e000918490150726f706f736573206120627269646765207472616e73616374696f6e2c20776869636820616d6f756e747320746f206d616b696e672061206d756c74697369672070726f706f73616c20666f72207468655501627269646765207472616e73616374696f6e20696620746865207472616e73616374696f6e206973206e6577206f7220617070726f76696e6720616e206578697374696e672070726f706f73616c20696620746865987472616e73616374696f6e2068617320616c7265616479206265656e2070726f706f7365642e00242323204572726f7273c82d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e4068616e646c655f6272696467655f74780401246272696467655f74787501015842726964676554783c543a3a4163636f756e7449643e000a18c048616e646c657320616e20617070726f76656420627269646765207472616e73616374696f6e2070726f706f73616c2e00242323204572726f727319012d206042616443616c6c65726020696620606f726967696e60206973206e6f74206053656c663a3a636f6e74726f6c6c657260206f7220206053656c663a3a61646d696e602eec2d206054696d656c6f636b656454786020696620746865207472616e73616374696f6e20737461747573206973206054696d656c6f636b6564602e09012d206050726f706f73616c416c726561647948616e646c65646020696620746865207472616e73616374696f6e20737461747573206973206048616e646c6564602e28667265657a655f7478730401286272696467655f747873fd05016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000b2088467265657a657320676976656e20627269646765207472616e73616374696f6e732e8501496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e00202320576569676874b0603430305f3030305f303030202b20325f3030305f303030202a206272696467655f7478732e6c656e28296030756e667265657a655f7478730401286272696467655f747873fd05016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000c2090556e667265657a657320676976656e20627269646765207472616e73616374696f6e732e8501496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e00202320576569676874b0603430305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829606868616e646c655f7363686564756c65645f6272696467655f74780401246272696467655f74787501015842726964676554783c543a3a4163636f756e7449643e000d189901526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f2068616e646c652061207363686564756c65642074696d656c6f636b656420627269646765207472616e73616374696f6e2e002023204572726f7273982d20604261644f726967696e6020696620606f726967696e60206973206e6f7420726f6f742ef82d206050726f706f73616c416c726561647948616e646c656460206966207472616e73616374696f6e20737461747573206973206048616e646c6564602ebc2d206046726f7a656e547860206966207472616e73616374696f6e20737461747573206973206046726f7a656e602e406164645f667265657a655f61646d696e040130667265657a655f61646d696e000130543a3a4163636f756e744964000e104c416464206120667265657a652061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c72656d6f76655f667265657a655f61646d696e040130667265657a655f61646d696e000130543a3a4163636f756e744964000f105852656d6f7665206120667265657a652061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e2872656d6f76655f7478730401286272696467655f747873fd05016c5665633c42726964676554783c543a3a4163636f756e7449643e3e0010148452656d6f766520676976656e20627269646765207472616e73616374696f6e732e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ed02d20604e6f7446726f7a656e60206966206120747820696e20606272696467655f74787360206973206e6f742066726f7a656e2e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef505000002f90500f905000004087c190100fd050000027501000106083870616c6c65745f7374616b696e671043616c6c04045400018010626f6e640c0128636f6e74726f6c6c65723905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565cd01013042616c616e63654f663c543e00011470617965650506017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e000058610154616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c80626520746865206163636f756e74207468617420636f6e74726f6c732069742e002d016076616c756560206d757374206265206d6f7265207468616e2074686520606d696e696d756d5f62616c616e636560207370656369666965642062792060543a3a43757272656e6379602e002101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e003c456d6974732060426f6e646564602e002823203c7765696768743ed02d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e1c2d204f2831292e642d20546872656520657874726120444220656e74726965732e004d014e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e65643d01756e6c6573732074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e482d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a2d012d20526561643a20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c2043757272656e74204572612c20486973746f72792044657074682c204c6f636b73dc2d2057726974653a20426f6e6465642c2050617965652c205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e28626f6e645f65787472610401386d61785f6164646974696f6e616ccd01013042616c616e63654f663c543e000154610141646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e636520757030666f72207374616b696e672e004d01557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e6101556e6c696b65205b60626f6e64605d206f72205b60756e626f6e64605d20746869732066756e6374696f6e20646f6573206e6f7420696d706f736520616e79206c696d69746174696f6e206f6e2074686520616d6f756e7448746861742063616e2062652061646465642e005d01546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c657220616e64f469742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e003c456d6974732060426f6e646564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e1c2d204f2831292e3c2d204f6e6520444220656e7472792e302d2d2d2d2d2d2d2d2d2d2d2d284442205765696768743a11012d20526561643a2045726120456c656374696f6e205374617475732c20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c204c6f636b73a02d2057726974653a205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e18756e626f6e6404011476616c7565cd01013042616c616e63654f663c543e00028051015363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e64fc706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e2101543a3a43757272656e63793a3a6d696e696d756d5f62616c616e636528292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e0045014f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c20796f752063616e2063616c6c206077697468647261775f756e626f6e6465646020746f2061637475616c6c79206d6f7665bc7468652066756e6473206f7574206f66206d616e6167656d656e7420726561647920666f72207472616e736665722e0039014e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d41585f554e4c4f434b494e475f4348554e4b536029390163616e20636f2d657869737473206174207468652073616d652074696d652e20496e207468617420636173652c205b6043616c6c3a3a77697468647261775f756e626f6e646564605d206e656564f8746f2062652063616c6c656420666972737420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e0044456d6974732060556e626f6e646564602e009453656520616c736f205b6043616c6c3a3a77697468647261775f756e626f6e646564605d2e002823203c7765696768743e3d012d20496e646570656e64656e74206f662074686520617267756d656e74732e204c696d697465642062757420706f74656e7469616c6c79206578706c6f697461626c6520636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732e61012d20456163682063616c6c20287265717569726573207468652072656d61696e646572206f662074686520626f6e6465642062616c616e636520746f2062652061626f766520606d696e696d756d5f62616c616e636560296d01202077696c6c2063617573652061206e657720656e74727920746f20626520696e73657274656420696e746f206120766563746f722028604c65646765722e756e6c6f636b696e676029206b65707420696e2073746f726167652e4d012020546865206f6e6c792077617920746f20636c65616e207468652061666f72656d656e74696f6e65642073746f72616765206974656d20697320616c736f20757365722d636f6e74726f6c6c6564207669615820206077697468647261775f756e626f6e646564602e3c2d204f6e6520444220656e7472792e282d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a21012d20526561643a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e744572612c204c6f636b732c205c5b4f726967696e204163636f756e745c5da82d2057726974653a204c6f636b732c204c65646765722c205c5b4f726967696e204163636f756e745c5d243c2f7765696768743e4477697468647261775f756e626f6e6465640401486e756d5f736c617368696e675f7370616e7310010c75333200037c290152656d6f766520616e7920756e6c6f636b6564206368756e6b732066726f6d207468652060756e6c6f636b696e67602071756575652066726f6d206f7572206d616e6167656d656e742e0031015468697320657373656e7469616c6c7920667265657320757020746861742062616c616e636520746f206265207573656420627920746865207374617368206163636f756e7420746f20646f4877686174657665722069742077616e74732e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e0048456d697473206057697468647261776e602e006853656520616c736f205b6043616c6c3a3a756e626f6e64605d2e002823203c7765696768743e51012d20436f756c6420626520646570656e64656e74206f6e2074686520606f726967696e6020617267756d656e7420616e6420686f77206d7563682060756e6c6f636b696e6760206368756e6b732065786973742e410120497420696d706c6965732060636f6e736f6c69646174655f756e6c6f636b656460207768696368206c6f6f7073206f76657220604c65646765722e756e6c6f636b696e67602c207768696368206973f020696e6469726563746c7920757365722d636f6e74726f6c6c65642e20536565205b60756e626f6e64605d20666f72206d6f72652064657461696c2e75012d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732c20796574207468652073697a65206f6620776869636820636f756c64206265206c61726765206261736564206f6e20606c6564676572602ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e3c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0501436f6d706c6578697479204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2072656d6f76651c5570646174653a21012d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c204c6f636b732c205b4f726967696e204163636f756e745da42d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c6564676572144b696c6c3a41012d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c20426f6e6465642c20536c617368696e67205370616e732c205b4f726967696e4420204163636f756e745d2c204c6f636b734d012d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c6420205b4f726967696e204163636f756e745d2c204c6f636b73702d2057726974657320456163683a205370616e536c617368202a205309014e4f54453a2057656967687420616e6e6f746174696f6e20697320746865206b696c6c207363656e6172696f2c20776520726566756e64206f74686572776973652e2c23203c2f7765696768743e2076616c696461746504011470726566730906013856616c696461746f725072656673000444e44465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e2c2d2d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a8c2d20526561643a2045726120456c656374696f6e205374617475732c204c65646765727c2d2057726974653a204e6f6d696e61746f72732c2056616c696461746f72732c23203c2f7765696768743e206e6f6d696e61746504011c74617267657473110601a05665633c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e00054c0d014465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e004d01456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e20546869732063616e206f6e6c792062652063616c6c6564207768656e885b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743e2d012d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f662060746172676574736020284e29fc77686963682069732063617070656420617420436f6d7061637441737369676e6d656e74733a3a4c494d495420284d41585f4e4f4d494e4154494f4e53292ed42d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e242d2d2d2d2d2d2d2d2d305765696768743a204f284e29807768657265204e20697320746865206e756d626572206f662074617267657473284442205765696768743ac42d2052656164733a2045726120456c656374696f6e205374617475732c204c65646765722c2043757272656e7420457261802d205772697465733a2056616c696461746f72732c204e6f6d696e61746f72732c23203c2f7765696768743e146368696c6c000644c44465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e502d20436f6e7461696e73206f6e6520726561642ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e202d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a842d20526561643a20457261456c656374696f6e5374617475732c204c65646765727c2d2057726974653a2056616c696461746f72732c204e6f6d696e61746f72732c23203c2f7765696768743e247365745f706179656504011470617965650506017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e000740b42852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e242d2d2d2d2d2d2d2d2d382d205765696768743a204f283129302d204442205765696768743a48202020202d20526561643a204c656467657248202020202d2057726974653a2050617965652c23203c2f7765696768743e387365745f636f6e74726f6c6c6572040128636f6e74726f6c6c65723905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263650008408c2852652d297365742074686520636f6e74726f6c6c6572206f6620612073746173682e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e282d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743af02d20526561643a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c6572f42d2057726974653a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c65722c23203c2f7765696768743e4c7365745f76616c696461746f725f636f756e7404010c6e65777104010c75333200092090536574732074686520696465616c206e756d626572206f662076616c696461746f72732e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e305765696768743a204f2831295857726974653a2056616c696461746f7220436f756e742c23203c2f7765696768743e60696e6372656173655f76616c696461746f725f636f756e740401286164646974696f6e616c7104010c753332000a1ca8496e6372656d656e74732074686520696465616c206e756d626572206f662076616c696461746f72732e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e8053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e2c23203c2f7765696768743e547363616c655f76616c696461746f725f636f756e74040118666163746f721506011c50657263656e74000b1cd05363616c652075702074686520696465616c206e756d626572206f662076616c696461746f7273206279206120666163746f722e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e8053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e2c23203c2f7765696768743e686164645f7065726d697373696f6e65645f76616c696461746f720801206964656e746974797c01284964656e746974794964000138696e74656e6465645f636f756e741906012c4f7074696f6e3c7533323e000c203d01476f7665726e616e636520636f6d6d6974746565206f6e20322f3320726473206d616a6f726974792063616e20696e74726f647563652061206e657720706f74656e7469616c206964656e746974799d01746f2074686520706f6f6c206f66207065726d697373696f6e656420656e7469746965732077686f2063616e2072756e2076616c696461746f72732e205374616b696e67206d6f64756c65207573657320605065726d697373696f6e65644964656e74697479605501746f20656e737572652076616c696461746f7273206861766520636f6d706c65746564204b594220636f6d706c69616e636520616e6420636f6e736964657273207468656d20666f722076616c69646174696f6e2e002c2320417267756d656e7473e82a206f726967696e205265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e882a206964656e746974792056616c696461746f722773204964656e7469747949642e05012a20696e74656e6465645f636f756e74204e6f2e206f662076616c696461746f727320676976656e206964656e7469747920696e74656e647320746f2072756e2e7472656d6f76655f7065726d697373696f6e65645f76616c696461746f720401206964656e746974797c01284964656e746974794964000d1ca90152656d6f766520616e206964656e746974792066726f6d2074686520706f6f6c206f66202877616e6e616265292076616c696461746f72206964656e7469746965732e204566666563747320617265206b6e6f776e20696e20746865206e6578742073657373696f6e2e19015374616b696e67206d6f64756c6520636865636b7320605065726d697373696f6e65644964656e746974796020746f20656e737572652076616c696461746f7273206861766560636f6d706c65746564204b594220636f6d706c69616e6365002c2320417267756d656e7473f02a206f726967696e205265717569726564206f726967696e20666f722072656d6f76696e67206120706f74656e7469616c2076616c696461746f722e882a206964656e746974792056616c696461746f722773204964656e7469747949642e7876616c69646174655f6364645f6578706972795f6e6f6d696e61746f727304011c74617267657473ec01445665633c543a3a4163636f756e7449643e000e28a056616c696461746520746865206e6f6d696e61746f727320434444206578706972792074696d652e00f0496620616e206163636f756e742066726f6d206120676976656e20736574206f662061646472657373206973206e6f6d696e6174696e67207468656ed0636865636b2074686520434444206578706972792074696d65206f6620697420616e64206966206974206973206578706972656431017468656e20746865206163636f756e742073686f756c6420626520756e626f6e64656420616e642072656d6f7665642066726f6d20746865206e6f6d696e6174696e672070726f636573732e0024233c7765696768743e982d20446570656e6473206f6e20706173736564206c697374206f66204163636f756e7449642e29012d20446570656e6473206f6e20746865206e6f2e206f6620636c61696d206973737565727320616e206163636f756e7449642068617320666f722074686520434444206578706972792e28233c2f7765696768743e487365745f636f6d6d697373696f6e5f63617004011c6e65775f6361708d01011c50657262696c6c000f1421014368616e67657320636f6d6d697373696f6e2072617465207768696368206170706c69657320746f20616c6c2076616c696461746f72732e204f6e6c7920476f7665726e616e6365a8636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e002c2320417267756d656e74738c2a20606e65775f6361706020746865206e657720636f6d6d697373696f6e206361702e587365745f6d696e5f626f6e645f7468726573686f6c640401246e65775f76616c756518013042616c616e63654f663c543e00101401014368616e676573206d696e20626f6e642076616c756520746f206265207573656420696e2076616c696461746528292e204f6e6c7920476f7665726e616e6365a8636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e002c2320417267756d656e7473742a20606e65775f76616c75656020746865206e6577206d696e696d756d34666f7263655f6e6f5f65726173001124ac466f72636520746865726520746f206265206e6f206e6577206572617320696e646566696e6974656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e3c2d204e6f20617267756d656e74732e382d205765696768743a204f283129442d2057726974653a20466f7263654572612c23203c2f7765696768743e34666f7263655f6e65775f6572610012284901466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f6620746865206e6578742073657373696f6e2e20416674657220746869732c2069742077696c6c2062659c726573657420746f206e6f726d616c20286e6f6e2d666f7263656429206265686176696f75722e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e3c2d204e6f20617267756d656e74732e382d205765696768743a204f283129402d20577269746520466f7263654572612c23203c2f7765696768743e447365745f696e76756c6e657261626c6573040134696e76756c6e657261626c6573ec01445665633c543a3a4163636f756e7449643e001320c8536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e182d204f285629582d2057726974653a20496e76756c6e657261626c65732c23203c2f7765696768743e34666f7263655f756e7374616b650801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c7533320014280901466f72636520612063757272656e74207374616b657220746f206265636f6d6520636f6d706c6574656c7920756e7374616b65642c20696d6d6564696174656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743ee84f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2062652072656d6f766564b452656164733a20426f6e6465642c20536c617368696e67205370616e732c204163636f756e742c204c6f636b7381015772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c204163636f756e742c204c6f636b736857726974657320456163683a205370616e536c617368202a20532c23203c2f7765696768743e50666f7263655f6e65775f6572615f616c776179730015200101466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f662073657373696f6e7320696e646566696e6974656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e382d205765696768743a204f283129442d2057726974653a20466f7263654572612c23203c2f7765696768743e5463616e63656c5f64656665727265645f736c61736808010c657261100120457261496e646578000134736c6173685f696e6469636573390401205665633c7533323e0016349443616e63656c20656e6163746d656e74206f66206120646566657272656420736c6173682e00b043616e2062652063616c6c6564206279207468652060543a3a536c61736843616e63656c4f726967696e602e000101506172616d65746572733a2065726120616e6420696e6469636573206f662074686520736c617368657320666f7220746861742065726120746f206b696c6c2e002823203c7765696768743e50436f6d706c65786974793a204f2855202b205329b477697468205520756e6170706c69656420736c6173686573207765696768746564207769746820553d31303030d0616e64205320697320746865206e756d626572206f6620736c61736820696e646963657320746f2062652063616e63656c65642e642d20526561643a20556e6170706c69656420536c6173686573682d2057726974653a20556e6170706c69656420536c61736865732c23203c2f7765696768743e387061796f75745f7374616b65727308013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e6465780017640d01506179206f757420616c6c20746865207374616b65727320626568696e6420612073696e676c652076616c696461746f7220666f7220612073696e676c65206572612e0049012d206076616c696461746f725f73746173686020697320746865207374617368206163636f756e74206f66207468652076616c696461746f722e205468656972206e6f6d696e61746f72732c20757020746f2501202060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602c2077696c6c20616c736f207265636569766520746865697220726577617264732e31012d206065726160206d617920626520616e7920657261206265747765656e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e005501546865206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2e20416e79206163636f756e742063616e2063616c6c20746869732066756e6374696f6e2c206576656e206966746974206973206e6f74206f6e65206f6620746865207374616b6572732e00fc546869732063616e206f6e6c792062652063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743efc2d2054696d6520636f6d706c65786974793a206174206d6f7374204f284d61784e6f6d696e61746f72526577617264656450657256616c696461746f72292ec02d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e2c2d2d2d2d2d2d2d2d2d2d2d19014e20697320746865204e756d626572206f66207061796f75747320666f72207468652076616c696461746f722028696e636c7564696e67207468652076616c696461746f72291c5765696768743a842d205265776172642044657374696e6174696f6e205374616b65643a204f284e29c02d205265776172642044657374696e6174696f6e20436f6e74726f6c6c657220284372656174696e67293a204f284e29284442205765696768743a25012d20526561643a20457261456c656374696f6e5374617475732c2043757272656e744572612c20486973746f727944657074682c204572617356616c696461746f725265776172642c29012020202020202020457261735374616b657273436c69707065642c2045726173526577617264506f696e74732c204572617356616c696461746f725072656673202838206974656d73290d012d205265616420456163683a20426f6e6465642c204c65646765722c2050617965652c204c6f636b732c2053797374656d204163636f756e74202835206974656d7329d42d20577269746520456163683a2053797374656d204163636f756e742c204c6f636b732c204c6564676572202833206974656d73292c23203c2f7765696768743e187265626f6e6404011476616c7565cd01013042616c616e63654f663c543e001838dc5265626f6e64206120706f7274696f6e206f6620746865207374617368207363686564756c656420746f20626520756e6c6f636b65642e005101546865206469737061746368206f726967696e206d757374206265207369676e65642062792074686520636f6e74726f6c6c65722c20616e642069742063616e206265206f6e6c792063616c6c6564207768656e885b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ed02d2054696d6520636f6d706c65786974793a204f284c292c207768657265204c20697320756e6c6f636b696e67206368756e6b73902d20426f756e64656420627920604d41585f554e4c4f434b494e475f4348554e4b53602ef02d2053746f72616765206368616e6765733a2043616e277420696e6372656173652073746f726167652c206f6e6c792064656372656173652069742e3c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743afc202020202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c204c6f636b732c205b4f726967696e204163636f756e745db4202020202d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e447365745f686973746f72795f64657074680801446e65775f686973746f72795f646570746871040120457261496e6465780001485f6572615f6974656d735f64656c657465647104010c7533320019542d015365742060486973746f72794465707468602076616c75652e20546869732066756e6374696f6e2077696c6c2064656c65746520616e7920686973746f727920696e666f726d6174696f6e7c7768656e2060486973746f727944657074686020697320726564756365642e002c506172616d65746572733a0d012d20606e65775f686973746f72795f6465707468603a20546865206e657720686973746f727920646570746820796f7520776f756c64206c696b6520746f207365742e45012d20606572615f6974656d735f64656c65746564603a20546865206e756d626572206f66206974656d7320746861742077696c6c2062652064656c6574656420627920746869732064697370617463682e4101202020546869732073686f756c64207265706f727420616c6c207468652073746f72616765206974656d7320746861742077696c6c2062652064656c6574656420627920636c656172696e67206f6c64410120202065726120686973746f72792e204e656564656420746f207265706f727420616e2061636375726174652077656967687420666f72207468652064697370617463682e20547275737465642062799c20202060526f6f746020746f207265706f727420616e206163637572617465206e756d6265722e00504f726967696e206d75737420626520726f6f742e002823203c7765696768743edc2d20453a204e756d626572206f6620686973746f7279206465707468732072656d6f7665642c20692e652e203130202d3e2037203d2033382d205765696768743a204f284529302d204442205765696768743a9c202020202d2052656164733a2043757272656e74204572612c20486973746f72792044657074686c202020202d205772697465733a20486973746f72792044657074682d01202020202d20436c6561722050726566697820456163683a20457261205374616b6572732c204572615374616b657273436c69707065642c204572617356616c696461746f7250726566737d01202020202d2057726974657320456163683a204572617356616c696461746f725265776172642c2045726173526577617264506f696e74732c2045726173546f74616c5374616b652c2045726173537461727453657373696f6e496e6465782c23203c2f7765696768743e28726561705f73746173680801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c753332001a3c5d0152656d6f766520616c6c20646174612073747275637475726520636f6e6365726e696e672061207374616b65722f7374617368206f6e6365206974732062616c616e636520697320617420746865206d696e696d756d2e5d015468697320697320657373656e7469616c6c79206571756976616c656e7420746f206077697468647261775f756e626f6e64656460206578636570742069742063616e2062652063616c6c656420627920616e796f6e65f4616e6420746865207461726765742060737461736860206d7573742068617665206e6f2066756e6473206c656674206265796f6e64207468652045442e008c546869732063616e2062652063616c6c65642066726f6d20616e79206f726967696e2e00fc2d20607374617368603a20546865207374617368206163636f756e7420746f20726561702e204974732062616c616e6365206d757374206265207a65726f2e002823203c7765696768743e2101436f6d706c65786974793a204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e73206f6e20746865206163636f756e742e284442205765696768743ad42d2052656164733a205374617368204163636f756e742c20426f6e6465642c20536c617368696e67205370616e732c204c6f636b73a1012d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c205374617368204163636f756e742c204c6f636b73702d2057726974657320456163683a205370616e536c617368202a20532c23203c2f7765696768743e607375626d69745f656c656374696f6e5f736f6c7574696f6e14011c77696e6e6572731d06014c5665633c56616c696461746f72496e6465783e00011c636f6d7061637421060148436f6d7061637441737369676e6d656e747300011473636f7265ed060134456c656374696f6e53636f726500010c657261100120457261496e64657800011073697a65f1060130456c656374696f6e53697a65001bc4e05375626d697420616e20656c656374696f6e20726573756c7420746f2074686520636861696e2e2049662074686520736f6c7574696f6e3a0030312e2069732076616c69642e1101322e206861732061206265747465722073636f7265207468616e206120706f74656e7469616c6c79206578697374696e6720736f6c7574696f6e206f6e20636861696e2e00807468656e2c2069742077696c6c206265205f7075745f206f6e20636861696e2e00a84120736f6c7574696f6e20636f6e7369737473206f662074776f20706965636573206f6620646174613a00f0312e206077696e6e657273603a206120666c617420766563746f72206f6620616c6c207468652077696e6e657273206f662074686520726f756e642e4d01322e206061737369676e6d656e7473603a2074686520636f6d706163742076657273696f6e206f6620616e2061737369676e6d656e7420766563746f72207468617420656e636f6465732074686520656467652c202020776569676874732e001d01426f7468206f66207768696368206d617920626520636f6d7075746564207573696e67205f70687261676d656e5f2c206f7220616e79206f7468657220616c676f726974686d2e00a44164646974696f6e616c6c792c20746865207375626d6974746572206d7573742070726f766964653a00c42d20546865206073636f7265602074686174207468657920636c61696d20746865697220736f6c7574696f6e206861732e004901426f74682076616c696461746f727320616e64206e6f6d696e61746f72732077696c6c20626520726570726573656e74656420627920696e646963657320696e2074686520736f6c7574696f6e2e205468651901696e64696365732073686f756c6420726573706563742074686520636f72726573706f6e64696e6720747970657320285b6056616c696461746f72496e646578605d20616e642d015b604e6f6d696e61746f72496e646578605d292e204d6f72656f7665722c20746865792073686f756c642062652076616c6964207768656e207573656420746f20696e64657820696e746f4d015b60536e617073686f7456616c696461746f7273605d20616e64205b60536e617073686f744e6f6d696e61746f7273605d2e20416e7920696e76616c696420696e6465782077696c6c206361757365207468655d01736f6c7574696f6e20746f2062652072656a65637465642e2054686573652074776f2073746f72616765206974656d73206172652073657420647572696e672074686520656c656374696f6e2077696e646f7720616e64946d6179206265207573656420746f2064657465726d696e652074686520696e64696365732e005c4120736f6c7574696f6e2069732076616c69642069663a00e0302e204974206973207375626d6974746564207768656e205b60457261456c656374696f6e537461747573605d20697320604f70656e602ef4312e2049747320636c61696d65642073636f726520697320657175616c20746f207468652073636f726520636f6d7075746564206f6e2d636861696e2ea8322e2050726573656e74732074686520636f7272656374206e756d626572206f662077696e6e6572732e5101332e20416c6c20696e6465786573206d7573742062652076616c7565206163636f7264696e6720746f2074686520736e617073686f7420766563746f72732e20416c6c20656467652076616c756573206d7573745901202020616c736f20626520636f727265637420616e642073686f756c64206e6f74206f766572666c6f7720746865206772616e756c6172697479206f662074686520726174696f20747970652028692e652e203235363c2020206f722062696c6c696f6e292e0901342e20466f72206561636820656467652c20616c6c2074617267657473206172652061637475616c6c79206e6f6d696e617465642062792074686520766f7465722e68352e2048617320636f72726563742073656c662d766f7465732e00bc4120736f6c7574696f6e732073636f726520697320636f6e736973746564206f66203320706172616d65746572733a006101312e20606d696e207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d6178696d697a65642e6101322e206073756d207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d696e696d697a65642e3d01332e206073756d207b20737570706f72742e746f74616c5e32207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265982020206d696e696d697a65642028746f20656e73757265206c6573732076617269616e636529002823203c7765696768743e1501546865207472616e73616374696f6e20697320617373756d656420746f20626520746865206c6f6e6765737420706174682c20612062657474657220736f6c7574696f6e2ea020202d20496e697469616c20736f6c7574696f6e20697320616c6d6f7374207468652073616d652e410120202d20576f72736520736f6c7574696f6e20697320726574726163656420696e207072652d64697370617463682d636865636b73207768696368207365747320697473206f776e207765696768742e2c23203c2f7765696768743e847375626d69745f656c656374696f6e5f736f6c7574696f6e5f756e7369676e656414011c77696e6e6572731d06014c5665633c56616c696461746f72496e6465783e00011c636f6d7061637421060148436f6d7061637441737369676e6d656e747300011473636f7265ed060134456c656374696f6e53636f726500010c657261100120457261496e64657800011073697a65f1060130456c656374696f6e53697a65001c24bc556e7369676e65642076657273696f6e206f6620607375626d69745f656c656374696f6e5f736f6c7574696f6e602e0059014e6f746520746861742074686973206d757374207061737320746865205b6056616c6964617465556e7369676e6564605d20636865636b207768696368206f6e6c7920616c6c6f7773207472616e73616374696f6e735d0166726f6d20746865206c6f63616c206e6f646520746f20626520696e636c756465642e20496e206f7468657220776f7264732c206f6e6c792074686520626c6f636b20617574686f722063616e20696e636c7564652061647472616e73616374696f6e20696e2074686520626c6f636b2e002823203c7765696768743e84536565205b607375626d69745f656c656374696f6e5f736f6c7574696f6e605d2e2c23203c2f7765696768743e607061796f75745f7374616b6572735f62795f73797374656d08013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e646578001d04210153797374656d2076657273696f6e206f6620607061796f75745f7374616b6572732829602e204f6e6c792062652063616c6c65642062792074686520726f6f74206f726967696e2e6c6368616e67655f736c617368696e675f616c6c6f7765645f666f7204013c736c617368696e675f73776974636891010138536c617368696e67537769746368001e14690153776974636820736c617368696e6720737461747573206f6e20746865206261736973206f6620676976656e2060536c617368696e67537769746368602e2043616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473742a206f726967696e202d204163636f756e744964206f6620726f6f742e01012a20736c617368696e675f737769746368202d20537769746368207573656420746f2073657420746865207461726765747320666f7220736c617368696e672eb07570646174655f7065726d697373696f6e65645f76616c696461746f725f696e74656e6465645f636f756e740801206964656e746974797c01284964656e7469747949640001486e65775f696e74656e6465645f636f756e7410010c753332001f18d05570646174652074686520696e74656e6465642076616c696461746f7220636f756e7420666f72206120676976656e204449442e002c2320417267756d656e747331012a206f726967696e207768696368206d75737420626520746865207265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e842a206964656e7469747920746f2061646420617320612076616c696461746f722ec42a206e65775f696e74656e6465645f636f756e74204e65772076616c7565206f6620696e74656e64656420636f756e742e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e0506083870616c6c65745f7374616b696e674452657761726444657374696e6174696f6e04244163636f756e74496401000110185374616b656400000014537461736800010028436f6e74726f6c6c65720002001c4163636f756e7404000001244163636f756e744964000300000906083870616c6c65745f7374616b696e673856616c696461746f7250726566730000080128636f6d6d697373696f6e0d06011c50657262696c6c00011c626c6f636b656419010110626f6f6c00000d060000068d0100110600000239050015060c3473705f61726974686d65746963287065725f7468696e67731c50657263656e740000040008010875380000190604184f7074696f6e04045401100108104e6f6e6500000010536f6d6504001000000100001d060000023d03002106083870616c6c65745f7374616b696e6748436f6d7061637441737369676e6d656e74730000400118766f74657331250600000118766f74657332310600000118766f74657333450600000118766f74657334510600000118766f746573355d0600000118766f74657336690600000118766f74657337750600000118766f74657338810600000118766f746573398d060000011c766f746573313099060000011c766f7465733131a5060000011c766f7465733132b1060000011c766f7465733133bd060000011c766f7465733134c9060000011c766f7465733135d5060000011c766f7465733136e106000000250600000229060029060000040871042d06002d060000063d0300310600000235060035060000040c710439062d06003906000004082d063d06003d0600000641060041060c3473705f61726974686d65746963287065725f7468696e677318506572553136000004003d03010c7531360000450600000249060049060000040c71044d062d06004d0600000302000000390600510600000255060055060000040c710459062d06005906000003030000003906005d0600000261060061060000040c710465062d060065060000030400000039060069060000026d06006d060000040c710471062d0600710600000305000000390600750600000279060079060000040c71047d062d06007d0600000306000000390600810600000285060085060000040c710489062d06008906000003070000003906008d0600000291060091060000040c710495062d060095060000030800000039060099060000029d06009d060000040c7104a1062d0600a10600000309000000390600a506000002a90600a9060000040c7104ad062d0600ad060000030a000000390600b106000002b50600b5060000040c7104b9062d0600b9060000030b000000390600bd06000002c10600c1060000040c7104c5062d0600c5060000030c000000390600c906000002cd0600cd060000040c7104d1062d0600d1060000030d000000390600d506000002d90600d9060000040c7104dd062d0600dd060000030e000000390600e106000002e50600e5060000040c7104e9062d0600e9060000030f000000390600ed06000003030000001800f106083870616c6c65745f7374616b696e6730456c656374696f6e53697a65000008012876616c696461746f72732d06013856616c696461746f72496e6465780001286e6f6d696e61746f7273710401384e6f6d696e61746f72496e6465780000f5060c3870616c6c65745f73657373696f6e1870616c6c65741043616c6c040454000108207365745f6b6579730801106b657973f906011c543a3a4b65797300011470726f6f6628011c5665633c75383e000038e453657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b657973602e1d01416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722ec05468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e00d0546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e002823203c7765696768743e11012d20436f6d706c65786974793a20604f283129602e2041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468206f6698202060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642eec2d20446252656164733a20606f726967696e206163636f756e74602c2060543a3a56616c696461746f7249644f66602c20604e6578744b65797360a02d2044625772697465733a20606f726967696e206163636f756e74602c20604e6578744b65797360802d204462526561647320706572206b65792069643a20604b65794f776e657260842d20446257726974657320706572206b65792069643a20604b65794f776e6572602c23203c2f7765696768743e2870757267655f6b657973000140c852656d6f76657320616e792073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c65722e00c05468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e005501546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265205369676e656420616e6420746865206163636f756e74206d757374206265206569746865722062655d01636f6e7665727469626c6520746f20612076616c696461746f72204944207573696e672074686520636861696e2773207479706963616c2061646472657373696e672073797374656d20287468697320757375616c6c7951016d65616e73206265696e67206120636f6e74726f6c6c6572206163636f756e7429206f72206469726563746c7920636f6e7665727469626c6520696e746f20612076616c696461746f722049442028776869636894757375616c6c79206d65616e73206265696e672061207374617368206163636f756e74292e002823203c7765696768743e61012d20436f6d706c65786974793a20604f2831296020696e206e756d626572206f66206b65792074797065732e2041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468a420206f662060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642eec2d20446252656164733a2060543a3a56616c696461746f7249644f66602c20604e6578744b657973602c20606f726967696e206163636f756e7460a02d2044625772697465733a20604e6578744b657973602c20606f726967696e206163636f756e7460842d20446257726974657320706572206b65792069643a20604b65794f776e6572602c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ef9060c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d652c53657373696f6e4b657973000010011c6772616e647061ad0101d03c4772616e647061206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300011062616265c10401c43c42616265206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000124696d5f6f6e6c696e65b90101d43c496d4f6e6c696e65206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300014c617574686f726974795f646973636f76657279fd0601fc3c417574686f72697479446973636f76657279206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c69630000fd060c5873705f617574686f726974795f646973636f766572790c617070185075626c696300000400bd01013c737232353531393a3a5075626c6963000001070c3870616c6c65745f6772616e6470611870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66050701bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f66f9040140543a3a4b65794f776e657250726f6f6600001009015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66050701bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f66f9040140543a3a4b65794f776e657250726f6f6600012409015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e000d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e306e6f74655f7374616c6c656408011464656c6179100138543a3a426c6f636b4e756d62657200016c626573745f66696e616c697a65645f626c6f636b5f6e756d626572100138543a3a426c6f636b4e756d62657200021c19014e6f74652074686174207468652063757272656e7420617574686f7269747920736574206f6620746865204752414e4450412066696e616c697479206761646765742068617325017374616c6c65642e20546869732077696c6c2074726967676572206120666f7263656420617574686f7269747920736574206368616e67652061742074686520626567696e6e696e671d016f6620746865206e6578742073657373696f6e2c20746f20626520656e6163746564206064656c61796020626c6f636b7320616674657220746861742e205468652064656c6179110173686f756c64206265206869676820656e6f75676820746f20736166656c7920617373756d6520746861742074686520626c6f636b207369676e616c6c696e67207468652501666f72636564206368616e67652077696c6c206e6f742062652072652d6f726765642028652e672e203130303020626c6f636b73292e20546865204752414e44504120766f74657273250177696c6c20737461727420746865206e657720617574686f7269747920736574207573696e672074686520676976656e2066696e616c697a656420626c6f636b20617320626173652e584f6e6c792063616c6c61626c6520627920726f6f742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e0507084c73705f66696e616c6974795f6772616e6470614445717569766f636174696f6e50726f6f660804480124044e0110000801187365745f6964200114536574496400013065717569766f636174696f6e0907014845717569766f636174696f6e3c482c204e3e00000907084c73705f66696e616c6974795f6772616e6470613045717569766f636174696f6e0804480124044e011001081c507265766f746504000d070139016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265766f74653c482c204e3e2c0a417574686f726974795369676e61747572653e00000024507265636f6d6d6974040021070141016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265636f6d6d69743c482c204e3e2c0a417574686f726974795369676e61747572653e000100000d07084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401ad010456011107045301150700100130726f756e645f6e756d62657220010c7536340001206964656e74697479ad010108496400011466697273741d07011828562c2053290001187365636f6e641d07011828562c20532900001107084066696e616c6974795f6772616e6470611c507265766f74650804480124044e01100008012c7461726765745f68617368240104480001347461726765745f6e756d6265721001044e000015070c4c73705f66696e616c6974795f6772616e6470610c617070245369676e61747572650000040019070148656432353531393a3a5369676e6174757265000019070c1c73705f636f72651c65643235353139245369676e617475726500000400110201205b75383b2036345d00001d070000040811071507002107084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401ad010456012507045301150700100130726f756e645f6e756d62657220010c7536340001206964656e74697479ad010108496400011466697273742907011828562c2053290001187365636f6e642907011828562c20532900002507084066696e616c6974795f6772616e64706124507265636f6d6d69740804480124044e01100008012c7461726765745f68617368240104480001347461726765745f6e756d6265721001044e000029070000040825071507002d070c4070616c6c65745f696d5f6f6e6c696e651870616c6c65741043616c6c04045400010424686561727462656174080124686561727462656174310701644865617274626561743c543a3a426c6f636b4e756d6265723e0001247369676e6174757265450701bc3c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e61747572650000242823203c7765696768743e61012d20436f6d706c65786974793a20604f284b202b20452960207768657265204b206973206c656e677468206f6620604b6579736020286865617274626561742e76616c696461746f72735f6c656e2920616e642045206973d820206c656e677468206f6620606865617274626561742e6e6574776f726b5f73746174652e65787465726e616c5f61646472657373608820202d20604f284b29603a206465636f64696e67206f66206c656e67746820604b60ac20202d20604f284529603a206465636f64696e672f656e636f64696e67206f66206c656e6774682060456039012d20446252656164733a2070616c6c65745f73657373696f6e206056616c696461746f7273602c2070616c6c65745f73657373696f6e206043757272656e74496e646578602c20604b657973602c5820206052656365697665644865617274626561747360802d2044625772697465733a2060526563656976656448656172746265617473602c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e3107084070616c6c65745f696d5f6f6e6c696e6524486561727462656174042c426c6f636b4e756d626572011000140130626c6f636b5f6e756d62657210012c426c6f636b4e756d6265720001346e6574776f726b5f7374617465350701484f70617175654e6574776f726b537461746500013473657373696f6e5f696e64657810013053657373696f6e496e64657800013c617574686f726974795f696e64657810012441757468496e64657800013876616c696461746f72735f6c656e10010c753332000035070c1c73705f636f7265206f6666636861696e484f70617175654e6574776f726b5374617465000008011c706565725f6964390701304f706171756550656572496400014865787465726e616c5f6164647265737365733d0701505665633c4f70617175654d756c7469616464723e00003907081c73705f636f7265304f70617175655065657249640000040028011c5665633c75383e00003d0700000241070041070c1c73705f636f7265206f6666636861696e3c4f70617175654d756c7469616464720000040028011c5665633c75383e00004507104070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139245369676e61747572650000040049070148737232353531393a3a5369676e6174757265000049070c1c73705f636f72651c73723235353139245369676e617475726500000400110201205b75383b2036345d00004d07082c70616c6c65745f7375646f1043616c6c040454000110107375646f04011063616c6cd1050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000028350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e547375646f5f756e636865636b65645f77656967687408011063616c6cd1050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00011c5f776569676874200118576569676874000128350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e2d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b05375646f207573657220746f20737065636966792074686520776569676874206f66207468652063616c6c2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292ecc2d2054686520776569676874206f6620746869732063616c6c20697320646566696e6564206279207468652063616c6c65722e2c23203c2f7765696768743e1c7365745f6b657904010c6e65773905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365000224710141757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e402d204f6e65204442206368616e67652e2c23203c2f7765696768743e1c7375646f5f617308010c77686f3905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011063616c6cd1050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00032c4d0141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d406120676976656e206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e5107083070616c6c65745f61737365741043616c6c0404540001603c72656769737465725f7469636b65720401187469636b6572a001185469636b657200002405015265676973746572732061206e6577207469636b6572206f7220657874656e64732076616c6964697479206f6620616e206578697374696e67207469636b65722e11014e423a205469636b65722076616c696469747920646f6573206e6f742067657420636172727920666f7277617264207768656e2072656e6577696e67207469636b65722e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e782a20607469636b657260207469636b657220746f2072656769737465722e003423205065726d697373696f6e731c2a204173736574586163636570745f7469636b65725f7472616e7366657204011c617574685f696420010c75363400013068416363657074732061207469636b6572207472616e736665722e002d01436f6e73756d65732074686520617574686f72697a6174696f6e2060617574685f6964602028736565206070616c6c65745f6964656e746974793a3a636f6e73756d655f6175746860292e25014e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292ef82a2060617574685f69646020417574686f72697a6174696f6e204944206f66207469636b6572207472616e7366657220617574686f72697a6174696f6e2e00242323204572726f727369012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f696460206973206e6f7420612076616c6964207469636b6574207472616e7366657220617574686f72697a6174696f6e2e007c6163636570745f61737365745f6f776e6572736869705f7472616e7366657204011c617574685f696420010c753634000218ec546869732066756e6374696f6e206973207573656420746f20616363657074206120746f6b656e206f776e657273686970207472616e736665722e25014e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e2d012a2060617574685f69646020417574686f72697a6174696f6e204944206f662074686520746f6b656e206f776e657273686970207472616e7366657220617574686f72697a6174696f6e2e306372656174655f61737365741c01106e616d65fd01012441737365744e616d650001187469636b6572a001185469636b6572000124646976697369626c6519010110626f6f6c00012861737365745f74797065e501012441737365745479706500012c6964656e74696669657273ed0101505665633c41737365744964656e7469666965723e00013466756e64696e675f726f756e64550701604f7074696f6e3c46756e64696e67526f756e644e616d653e00012864697361626c655f697519010110626f6f6c0003682d01496e697469616c697a65732061206e657720736563757269747920746f6b656e2c20776974682074686520696e6974696174696e67206163636f756e7420617320697473206f776e65722e150154686520746f74616c20737570706c792077696c6c20696e697469616c6c79206265207a65726f2e20546f206d696e7420746f6b656e732c2075736520606973737565602e002c2320417267756d656e7473c5012a20606f726967696e60202d20636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e842a20606e616d6560202d20746865206e616d65206f662074686520746f6b656e2eb02a20607469636b657260202d20746865207469636b65722073796d626f6c206f662074686520746f6b656e2e2d012a2060646976697369626c6560202d206120626f6f6c65616e20746f206964656e74696679207468652064697669736962696c69747920737461747573206f662074686520746f6b656e2e802a206061737365745f7479706560202d2074686520617373657420747970652ec02a20606964656e7469666965727360202d206120766563746f72206f66206173736574206964656e746966696572732eb82a206066756e64696e675f726f756e6460202d206e616d65206f66207468652066756e64696e6720726f756e642e4d012a206064697361626c655f697560202d2077686574686572206f72206e6f7420696e766573746f7220756e697175656e65737320656e666f7263656d656e742073686f756c642062652064697361626c65642ec82020546869732063616e6e6f74206265206368616e676564206166746572206372656174696e67207468652061737365742e00242323204572726f7273fc2d2060496e76616c696441737365744964656e7469666965726020696620616e79206f6620606964656e74696669657273602061726520696e76616c69642e51012d20604d61784c656e6774684f6641737365744e616d6545786365656465646020696620606e616d65602773206c656e67746820657863656564732060543a3a41737365744e616d654d61784c656e677468602e55012d206046756e64696e67526f756e644e616d654d61784c656e67746845786365656465646020696620746865206e616d65206f66207468652066756e64696e6720726f756e64206973206c6f6e67657220746861747c60543a3a46756e64696e67526f756e644e616d654d61784c656e677468602ed42d20604173736574416c726561647943726561746564602069662061737365742077617320616c726561647920637265617465642e5d012d20605469636b6572546f6f4c6f6e676020696620607469636b6572602773206c656e6774682069732067726561746572207468616e2060636f6e6669672e6d61785f7469636b65725f6c656e6774686020636861696e28706172616d657465722ea1022d20605469636b65724e6f7441736369696020696620607469636b657260206973206e6f742079657420726567697374657265642c20616e6420636f6e7461696e73206e6f6e2d6173636969207072696e7461626c652063686172616374657273202866726f6d20636f646520333220746f2031323629206f7220616e7920636861726163746572206166746572206669727374206f6363757272656e6365206f6620605c30602e00382323205065726d697373696f6e732c2a20506f7274666f6c696f18667265657a650401187469636b6572a001185469636b657200042cbc467265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e00242323204572726f7273c02d2060416c726561647946726f7a656e6020696620607469636b65726020697320616c72656164792066726f7a656e2e003423205065726d697373696f6e731c2a20417373657420756e667265657a650401187469636b6572a001185469636b657200052cc4556e667265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722eb02a20607469636b657260202d20746865207469636b6572206f66207468652066726f7a656e20746f6b656e2e00242323204572726f7273b02d20604e6f7446726f7a656e6020696620607469636b657260206973206e6f742066726f7a656e207965742e003423205065726d697373696f6e731c2a2041737365743072656e616d655f61737365740801187469636b6572a001185469636b65720001106e616d65fd01012441737365744e616d650006345852656e616d6573206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e942a20606e616d6560202d20746865206e6577206e616d65206f662074686520746f6b656e2e00242323204572726f727311012d20604d61784c656e6774684f6641737365744e616d65457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e6060543a3a41737365744e616d654d61784c656e677468602e003423205065726d697373696f6e731c2a2041737365741469737375650801187469636b6572a001185469636b6572000118616d6f756e7418011c42616c616e636500072ca449737375652c206f72206d696e742c206e657720746f6b656e7320746f207468652063616c6c65722cac7768696368206d75737420626520616e20617574686f72697a65642065787465726e616c206167656e742e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e602a20607469636b657260206f662074686520746f6b656e2e942a2060616d6f756e7460206f6620746f6b656e73207468617420676574206973737565642e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f1872656465656d0801187469636b6572a001185469636b657200011476616c756518011c42616c616e636500083ccd0152656465656d73206578697374696e6720746f6b656e73206279207265647563696e67207468652062616c616e6365206f66207468652063616c6c657227732064656661756c7420706f7274666f6c696f20616e642074686520746f74616c20737570706c79206f662074686520746f6b656e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e942a206076616c75656020416d6f756e74206f6620746f6b656e7320746f2072656465656d2e002023204572726f727361012d2060556e617574686f72697a6564602049662063616c6c656420627920736f6d656f6e6520776974686f75742074686520617070726f7072696174652065787465726e616c206167656e74207065726d697373696f6e7359012d2060496e76616c69644772616e756c6172697479602049662074686520616d6f756e74206973206e6f7420646976697369626c652062792031305e3620666f72206e6f6e2d646976697369626c6520746f6b656e738d012d2060496e73756666696369656e74506f7274666f6c696f42616c616e636560204966207468652063616c6c657227732064656661756c7420706f7274666f6c696f20646f65736e2774206861766520656e6f75676820667265652062616c616e6365003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f386d616b655f646976697369626c650401187469636b6572a001185469636b657200092c944d616b657320616e20696e646976697369626c6520746f6b656e20646976697369626c652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e00242323204572726f7273ec2d20604173736574416c7265616479446976697369626c656020696620607469636b65726020697320616c726561647920646976697369626c652e003423205065726d697373696f6e731c2a204173736574346164645f646f63756d656e7473080110646f6373590701345665633c446f63756d656e743e0001187469636b6572a001185469636b6572000a248041646420646f63756d656e747320666f72206120676976656e20746f6b656e2e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2eb82a2060646f63736020446f63756d656e747320746f20626520617474616368656420746f20607469636b6572602e003423205065726d697373696f6e731c2a2041737365744072656d6f76655f646f63756d656e747308010c6964730503013c5665633c446f63756d656e7449643e0001187469636b6572a001185469636b6572000b248c52656d6f766520646f63756d656e747320666f72206120676976656e20746f6b656e2e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2ec82a20606964736020446f63756d656e74732069647320746f2062652072656d6f7665642066726f6d20607469636b6572602e003423205065726d697373696f6e731c2a204173736574447365745f66756e64696e675f726f756e640801187469636b6572a001185469636b65720001106e616d65e101014046756e64696e67526f756e644e616d65000c34ac5365747320746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e002c2320417267756d656e747329012a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2ee42a20606e616d6560202d207468652064657369726564206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e00242323204572726f727325012d206046756e64696e67526f756e644e616d654d61784c656e677468457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e7c60543a3a46756e64696e67526f756e644e616d654d61784c656e677468602e003423205065726d697373696f6e731c2a204173736574487570646174655f6964656e746966696572730801187469636b6572a001185469636b657200012c6964656e74696669657273ed0101505665633c41737365744964656e7469666965723e000d34785570646174657320746865206173736574206964656e746966696572732e002c2320417267756d656e747329012a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e59012a20606964656e7469666965727360202d20746865206173736574206964656e7469666965727320746f206265207570646174656420696e2074686520666f726d206f66206120766563746f72206f66207061697273cc2020206f6620604964656e746966696572547970656020616e64206041737365744964656e746966696572602076616c75652e00242323204572726f727331012d2060496e76616c696441737365744964656e7469666965726020696620606964656e746966696572736020636f6e7461696e7320616e7920696e76616c6964206964656e7469666965722e003423205065726d697373696f6e731c2a20417373657450636c61696d5f636c61737369635f7469636b65720801187469636b6572a001185469636b6572000148657468657265756d5f7369676e61747572655d07013845636473615369676e6174757265000e38fc436c61696d20612073797374656d61746963616c6c7920726573657276656420506f6c796d61746820436c61737369632028504d432920607469636b657260ac616e64207472616e7366657220697420746f2074686520606f726967696e602773206964656e746974792e003d01546f2076657269667920746861742074686520606f726967696e6020697320696e20636f6e74726f6c206f662074686520457468657265756d206163636f756e74206f6e2074686520626f6f6b732c1101616e2060657468657265756d5f7369676e61747572656020636f6e7461696e696e672074686520606f726967696e6027732044494420617320746865206d657373616765a86d7573742062652070726f7669646564206279207468617420457468657265756d206163636f756e742e002023204572726f727331012d20604e6f53756368436c61737369635469636b6572602069662074686973206973206e6f7420612073797374656d61746963616c6c7920726573657276656420504d43207469636b65722e51012d20605469636b6572416c7265616479526567697374657265646020696620746865207469636b65722077617320616c726561647920726567697374657265642c20652e672e2c20627920606f726967696e602e1d012d20605469636b6572526567697374726174696f6e457870697265646020696620746865207469636b6572277320726567697374726174696f6e2068617320657870697265642e702d20604261644f726967696e60206966206e6f74207369676e65642e19012d2060496e76616c6964457468657265756d5369676e617475726560206966207468652060657468657265756d5f7369676e617475726560206973206e6f742076616c69642e29012d20604e6f74416e4f776e6572602069662074686520657468657265756d206163636f756e74206973206e6f7420746865206f776e6572206f662074686520504d43207469636b65722e58726573657276655f636c61737369635f7469636b65720c0154636c61737369635f7469636b65725f696d706f72746507014c436c61737369635469636b6572496d706f7274000130636f6e74726163745f6469647c01284964656e746974794964000118636f6e6669676907018c5469636b6572526567697374726174696f6e436f6e6669673c543a3a4d6f6d656e743e000f34a052657365727665206120506f6c796d61746820436c61737369632028504d4329207469636b65722e0d014d7573742062652063616c6c656420627920726f6f742c20616e642061737369676e7320746865207469636b657220746f20612073797374656d61746963204449442e002c2320417267756d656e7473782a20606f726967696e60207768696368206d75737420626520726f6f742eec2a2060636c61737369635f7469636b65725f696d706f7274602073706563696669636174696f6e20666f722074686520504d43207469636b65722e5d012a2060636f6e74726163745f6469646020746f207265736572766520746865207469636b657220746f2069662060636c61737369635f7469636b65725f696d706f72742e69735f636f6e74726163746020686f6c64732ebc2a2060636f6e6669676020746f2075736520666f722065787069727920616e64207469636b6572206c656e6774682e002023204572726f727349012a20604173736574416c726561647943726561746564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b65726020776173206372656174656420617320616e2061737365742e61012a20605469636b6572546f6f4c6f6e6760206966207468652060636f6e6669676020636f6e736964657273207468652060636c61737369635f7469636b65725f696d706f72742e7469636b65726020746f6f206c6f6e672e55012a20605469636b6572416c726561647952656769737465726564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b6572602077617320616c726561647920726567697374657265642e4c636f6e74726f6c6c65725f7472616e736665720c01187469636b6572a001185469636b657200011476616c756518011c42616c616e636500013866726f6d5f706f7274666f6c696fd8012c506f7274666f6c696f496400101c4d01466f726365732061207472616e73666572206f6620746f6b656e2066726f6d206066726f6d5f706f7274666f6c696f6020746f207468652063616c6c657227732064656661756c7420706f7274666f6c696f2e002c2320417267756d656e747355012a20606f726967696e60204d75737420626520616e2065787465726e616c206167656e74207769746820617070726f707269617465207065726d697373696f6e7320666f72206120676976656e207469636b65722e982a20607469636b657260205469636b65722073796d626f6c206f66207468652061737365742ecc2a206076616c7565602020416d6f756e74206f6620746f6b656e73206e65656420746f20666f726365207472616e736665722efc2a206066726f6d5f706f7274666f6c696f602046726f6d2077686f6d20706f7274666f6c696f20746f6b656e732067657473207472616e736665727265642e6872656769737465725f637573746f6d5f61737365745f74797065040108747928011c5665633c75383e00112478526567697374657273206120637573746f6d20617373657420747970652e00d05468652070726f766964656420607479602077696c6c20626520626f756e6420746f20616e20494420696e2073746f726167652ebc5468652049442063616e207468656e206265207573656420696e20604173736574547970653a3a437573746f6d602e250153686f756c6420746865206074796020616c726561647920657869737420696e2073746f726167652c206e6f207365636f6e642049442069732061737369676e656420746f2069742e002c2320417267756d656e7473902a20606f726967696e602077686f2063616c6c6564207468652065787472696e7369632ef02a206074796020636f6e7461696e732074686520737472696e6720726570726573656e746174696f6e206f662074686520617373657420747970652e746372656174655f61737365745f776974685f637573746f6d5f747970651c01106e616d65fd01012441737365744e616d650001187469636b6572a001185469636b6572000124646976697369626c6519010110626f6f6c000144637573746f6d5f61737365745f7479706528011c5665633c75383e00012c6964656e74696669657273ed0101505665633c41737365744964656e7469666965723e00013466756e64696e675f726f756e64550701604f7074696f6e3c46756e64696e67526f756e644e616d653e00012864697361626c655f697519010110626f6f6c0012042d015574696c6974792065787472696e73696320746f20626174636820606372656174655f61737365746020616e64206072656769737465725f637573746f6d5f61737365745f74797065602e487365745f61737365745f6d657461646174611001187469636b6572a001185469636b657200010c6b65796d07014041737365744d657461646174614b657900011476616c75653502014841737365744d6574616461746156616c756500011864657461696c390201ac4f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e3e00134464536574206173736574206d657461646174612076616c75652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e542a20606b657960204d65746164617461206b65792e642a206076616c756560204d657461646174612076616c75652e09012a206064657461696c7360204f7074696f6e616c204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f727315012a206041737365744d657461646174614b657949734d697373696e676020696620746865206d657461646174612074797065206b657920646f65736e27742065786973742e25012a206041737365744d6574616461746156616c756549734c6f636b65646020696620746865206d657461646174612076616c756520666f7220606b657960206973206c6f636b65642e65012a206041737365744d6574616461746156616c75654d61784c656e67746845786365656465646020696620746865206d657461646174612076616c7565206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a204173736574687365745f61737365745f6d657461646174615f64657461696c730c01187469636b6572a001185469636b657200010c6b65796d07014041737365744d657461646174614b657900011864657461696c3d02018c41737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e00143cdc536574206173736574206d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e542a20606b657960204d65746164617461206b65792ee42a206064657461696c7360204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f727315012a206041737365744d657461646174614b657949734d697373696e676020696620746865206d657461646174612074797065206b657920646f65736e27742065786973742e25012a206041737365744d6574616461746156616c756549734c6f636b65646020696620746865206d657461646174612076616c756520666f7220606b657960206973206c6f636b65642e003423205065726d697373696f6e731c2a204167656e741c2a2041737365749472656769737465725f616e645f7365745f6c6f63616c5f61737365745f6d657461646174611401187469636b6572a001185469636b65720001106e616d654502014441737365744d657461646174614e616d65000110737065634d02014441737365744d657461646174615370656300011476616c75653502014841737365744d6574616461746156616c756500011864657461696c390201ac4f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e3e00154c9c52656769737465727320616e6420736574206c6f63616c206173736574206d657461646174612e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e642a206076616c756560204d657461646174612076616c75652e09012a206064657461696c7360204f7074696f6e616c204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f7273a1012a206041737365744d657461646174614c6f63616c4b6579416c7265616479457869737473602069662061206c6f63616c206d657461646174612074797065207769746820606e616d656020616c72656164792065786973747320666f7220607469636b6572602e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e65012a206041737365744d6574616461746156616c75654d61784c656e67746845786365656465646020696620746865206d657461646174612076616c7565206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a2041737365748872656769737465725f61737365745f6d657461646174615f6c6f63616c5f747970650c01187469636b6572a001185469636b65720001106e616d654502014441737365744d657461646174614e616d65000110737065634d02014441737365744d657461646174615370656300164090526567697374657273206173736574206d65746164617461206c6f63616c20747970652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e002023204572726f7273a1012a206041737365744d657461646174614c6f63616c4b6579416c7265616479457869737473602069662061206c6f63616c206d657461646174612074797065207769746820606e616d656020616c72656164792065786973747320666f7220607469636b6572602e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a2041737365748c72656769737465725f61737365745f6d657461646174615f676c6f62616c5f747970650801106e616d654502014441737365744d657461646174614e616d65000110737065634d02014441737365744d657461646174615370656300172c94526567697374657273206173736574206d6574616461746120676c6f62616c20747970652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e002023204572726f727371012a206041737365744d65746164617461476c6f62616c4b6579416c726561647945786973747360206966206120676c6f6261206d657461646174612074797065207769746820606e616d656020616c7265616479206578697374732e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e550704184f7074696f6e04045401e1010108104e6f6e6500000010536f6d650400e101000001000059070000020502005d070c4c706f6c796d6573685f7072696d69746976657320657468657265756d3845636473615369676e617475726500000400610701205b75383b2036355d000061070000034100000008006507083070616c6c65745f61737365744c436c61737369635469636b6572496d706f727400001001246574685f6f776e65723102013c457468657265756d416464726573730001187469636b6572a001185469636b657200012c69735f636f6e747261637419010110626f6f6c00012869735f6372656174656419010110626f6f6c00006907083070616c6c65745f6173736574605469636b6572526567697374726174696f6e436f6e6669670404550120000801446d61785f7469636b65725f6c656e677468080108753800014c726567697374726174696f6e5f6c656e677468f401244f7074696f6e3c553e00006d070c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614041737365744d657461646174614b657900010818476c6f62616c04006502015841737365744d65746164617461476c6f62616c4b6579000000144c6f63616c04004902015441737365744d657461646174614c6f63616c4b65790001000071070c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e1043616c6c04045400011428646973747269627574651c011463615f69647102011043414964000124706f7274666f6c696f7507015c4f7074696f6e3c506f7274666f6c696f4e756d6265723e00012063757272656e6379a001185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e63650001287061796d656e745f61742001184d6f6d656e74000128657870697265735f6174f401384f7074696f6e3c4d6f6d656e743e0000a82501537461727420616e64206174746163682061206361706974616c20646973747269627574696f6e2c20746f20746865204341206964656e746966696564206279206063615f6964602c6501776974682060616d6f756e74602066756e647320696e206063757272656e6379602077697468647261776e2066726f6d2060706f7274666f6c696f602062656c6f6e67696e6720746f20606f726967696e602773204449442e00290154686520646973747269627574696f6e2077696c6c20636f6d6d656e636520617420607061796d656e745f61746020616e64206578706972652061742060657870697265735f6174602cc869662070726f76696465642c206f7220696620604e6f6e65602c207468656e2074686572652773206e6f206578706972792e0025015468652066756e64732077696c6c206265206c6f636b656420696e2060706f7274666f6c696f602066726f6d207768656e206064697374726962757465602069732063616c6c65642e35015768656e2074686572652773206e6f206578706972792c20736f6d652066756e6473206d6179206265206c6f636b656420696e646566696e6974656c7920696e2060706f7274666f6c696f602c150164756520746f20636c61696d616e7473206e6f74207769746864726177696e67206f72206e6f2062656e6566697473206265696e672070757368656420746f207468656d2e2901466f7220696e646976697369626c652063757272656e636965732c20756e6c6f636b656420616d6f756e74732c206f66206c657373207468616e206f6e652077686f6c6520756e69742ca877696c6c206e6f74206265207472616e7366657261626c652066726f6d2060706f7274666f6c696f602e4d01486f77657665722c20696620776520696d6167696e6520746861742075736572732060416c6963656020616e642060426f626020626f74682061726520656e7469746c656420746f20312e3520756e6974732c5101616e64206f6e6c7920726563656976652060316020756e69747320656163682c207468656e2060302e35202b20302e35203d20316020756e69747320617265206c65667420696e2060706f7274666f6c696f602c6c7768696368206973206e6f77207472616e736665727261626c652e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e01012d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e59012d2060706f7274666f6c696f60207370656369666965732074686520706f7274666f6c696f206e756d626572206f6620746865206167656e7420746f20646973747269627574652060616d6f756e74602066726f6d2ef42d206063757272656e63796020746f20776974686472617720616e6420646973747269627574652066726f6d207468652060706f7274666f6c696f602ef82d20607065725f73686172656020616d6f756e74206f66206063757272656e63796020746f20776974686472617720616e6420646973747269627574652e25012020205370656369666965642061732061207065722d6d696c6c696f6e2c20692e652e206031202f2031305e36607468206f66206f6e65206063757272656e63796020746f6b656e2ef02d2060616d6f756e7460206f66206063757272656e63796020746f20776974686472617720616e642064697374726962757465206174206d6f73742e19012d20607061796d656e745f61746020737065636966696573207768656e2062656e6566697473206d617920666972737420626520707573686564206f7220636c61696d65642e29012d2060657870697265735f617460207370656369666965732c2069662070726f76696465642c207768656e2072656d61696e696e672062656e65666974732061726520666f726665697490202020616e64206d6179206265207265636c61696d656420627920606f726967696e602e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed02d2060446973747269627574696e67417373657460206966206063615f69642e7469636b6572203d3d2063757272656e6379602efc2d20604578706972794265666f72655061796d656e74602069662060657870697265735f61742e756e777261702829203c3d207061796d656e745f6174602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ea82d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652ee82d20605265636f72644461746541667465725374617274602069662043412773207265636f72642064617465203e207061796d656e745f61742e31012d2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f662060706f7274666f6c696f602e55012d2060496e73756666696369656e74506f7274666f6c696f42616c616e6365602069662060706f7274666f6c696f6020686173206c657373207468616e2060616d6f756e7460206f66206063757272656e6379602e01012d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e45012d206043414e6f7442656e656669746020696620746865204341206973206e6f74206f66206b696e64205072656469637461626c6542656e656669742f556e7072656469637461626c6542656e65666974003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f14636c61696d04011463615f6964710201104341496400015c0101436c61696d20612062656e65666974206f6620746865206361706974616c20646973747269627574696f6e20617474616368656420746f206063615f6964602e00a8546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5901506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e001101416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e39014d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c98746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e0030232320417267756d656e747345012d20606f726967696e60207768696368206d757374206265206120686f6c646572206f662074686520617373657420616e6420656c696769626c6520666f722074686520646973747269627574696f6e2e01012d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e002023204572726f727325012d2060486f6c646572416c7265616479506169646020696620606f726967696e602773204449442068617320616c7265616479207265636569766564206974732062656e656669742e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec42d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee42d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef42d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e35012d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e35012d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e21012d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e30707573685f62656e6566697408011463615f69647102011043414964000118686f6c6465727c01284964656e746974794964000260f8507573682062656e65666974206f6620616e206f6e676f696e6720646973747269627574696f6e20746f2074686520676976656e2060686f6c646572602e00a8546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5901506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e001101416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e39014d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c98746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e39012d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e7320746f20707573682062656e656669747320666f722e7c2d2060686f6c6465726020746f20707573682062656e656669747320746f2e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec42d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee42d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412edc2d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f74207461726765742060686f6c646572602e35012d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e35012d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e21012d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e1c7265636c61696d04011463615f6964710201104341496400032c90417373756d696e67206120646973747269627574696f6e2068617320657870697265642ce4756e6c6f636b207468652072656d61696e696e6720616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e0030232320417267756d656e747345012d20606f726967696e60207768696368206d757374206265207468652063726561746f72206f6620746865206361706974616c20646973747269627574696f6e207469656420746f206063615f6964602e1d012d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e20746f207265636c61696d20666f722e002023204572726f727319012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602e2d012d2060416c72656164795265636c61696d65646020696620746869732066756e6374696f6e2068617320616c7265616479206265656e2063616c6c6564207375636365737366756c6c792e842d20604e6f74457870697265646020696620606e6f77203c20657870697279602e4c72656d6f76655f646973747269627574696f6e04011463615f6964710201104341496400042cbc52656d6f766573206120646973747269627574696f6e2074686174206861736e27742073746172746564207965742cdc756e6c6f636b696e67207468652066756c6c20616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e49012d206063615f696460206964656e7469666965732074686520434120776974682061206e6f742d7965742d73746172746564206361706974616c20646973747269627574696f6e20746f2072656d6f76652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ebc2d2060446973747269627574696f6e537461727465646020696620607061796d656e745f6174203c3d206e6f77602e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e750704184f7074696f6e04045401e00108104e6f6e6500000010536f6d650400e0000001000079070c3070616c6c65745f617373657428636865636b706f696e741043616c6c040454000110446372656174655f636865636b706f696e740401187469636b6572a001185469636b6572000024c04372656174657320612073696e676c6520636865636b706f696e74206174207468652063757272656e742074696d652e002c2320417267756d656e74732d012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602ea02d20607469636b65726020746f206372656174652074686520636865636b706f696e7420666f722e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e0d012d2060436f756e7465724f766572666c6f77602069662074686520746f74616c20636865636b706f696e7420636f756e74657220776f756c64206f766572666c6f772e707365745f7363686564756c65735f6d61785f636f6d706c65786974790401386d61785f636f6d706c657869747920010c75363400012459015365747320746865206d617820636f6d706c6578697479206f662061207363686564756c652073657420666f7220616e20617262697472617279207469636b657220746f20606d61785f636f6d706c6578697479602eb8546865206e6577206d6178696d756d206973206e6f7420656e666f7263656420726574726f6163746976656c792cb4616e64206f6e6c79206170706c696573206f6e6365206e6577207363686564756c657320617265206d6164652e00a84d7573742062652063616c6c6564206173206120504950202872657175697265732022726f6f7422292e002c2320417267756d656e7473782d20606f726967696e602069732074686520726f6f74206f726967696e2e09012d20606d61785f636f6d706c65786974796020616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365742e3c6372656174655f7363686564756c650801187469636b6572a001185469636b65720001207363686564756c657d0701305363686564756c655370656300024ca4437265617465732061207363686564756c652067656e65726174696e6720636865636b706f696e7473d4696e20746865206675747572652061742065697468657220612066697865642074696d65206f7220617420696e74657276616c732e000901546865207363686564756c6520737461727473206f7574207769746820607374726f6e675f7265665f636f756e74287363686564756c655f696429203c2d2030602e002c2320417267756d656e747321012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e982d20607469636b65726020746f2063726561746520746865207363686564756c6520666f722eb02d20607363686564756c656020746861742077696c6c2067656e657261746520636865636b706f696e74732e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e0d012d20605363686564756c654475726174696f6e546f6f53686f72746020696620746865207363686564756c65206475726174696f6e20697320746f6f2073686f72742e21012d2060496e73756666696369656e744163636f756e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c64206e6f7420626520636861726765642e4d012d2060436f756e7465724f766572666c6f776020696620746865207363686564756c65204944206f7220746f74616c20636865636b706f696e7420636f756e7465727320776f756c64206f766572666c6f772e5d012d20604661696c6564546f436f6d707574654e657874436865636b706f696e746020696620746865206e65787420636865636b706f696e7420666f7220607363686564756c656020697320696e2074686520706173742e003423205065726d697373696f6e731c2a2041737365743c72656d6f76655f7363686564756c650801187469636b6572a001185469636b657200010869649d0201285363686564756c654964000338fc52656d6f7665732074686520636865636b706f696e74207363686564756c65206f6620616e206173736574206964656e74696669656420627920606964602e002c2320417267756d656e747321012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e9c2d20607469636b65726020746f2072656d6f766520746865207363686564756c652066726f6d2e09012d2060696460206f6620746865207363686564756c652c207768656e2069742077617320637265617465642062792060637265617465645f7363686564756c65602e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e41012d20604e6f436865636b706f696e745363686564756c6560206966206069646020646f6573206e6f74206964656e746966792061207363686564756c6520666f72207468697320607469636b6572602ef42d20605363686564756c654e6f7452656d6f7661626c656020696620606964602065786973747320627574206973206e6f742072656d6f7661626c652e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e7d070c3070616c6c65745f617373657428636865636b706f696e74305363686564756c655370656300000c01147374617274f401384f7074696f6e3c4d6f6d656e743e000118706572696f649502013843616c656e646172506572696f6400012472656d61696e696e6710010c75333200008107086470616c6c65745f636f6d706c69616e63655f6d616e616765721043616c6c040454000124686164645f636f6d706c69616e63655f726571756972656d656e740c01187469636b6572a001185469636b657200014473656e6465725f636f6e646974696f6e73a90201385665633c436f6e646974696f6e3e00014c72656365697665725f636f6e646974696f6e73a90201385665633c436f6e646974696f6e3e00002c050141646473206120636f6d706c69616e636520726571756972656d656e7420746f20616e206173736574277320636f6d706c69616e6365206279207469636b65722ef849662074686520636f6d706c69616e636520726571756972656d656e742069732061206475706c69636174652c20697420646f6573206e6f7468696e672e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574c42a2073656e6465725f636f6e646974696f6e73202d2053656e646572207472616e7366657220636f6e646974696f6e732ed42a2072656365697665725f636f6e646974696f6e73202d205265636569766572207472616e7366657220636f6e646974696f6e732e003423205065726d697373696f6e731c2a2041737365747472656d6f76655f636f6d706c69616e63655f726571756972656d656e740801187469636b6572a001185469636b6572000108696410010c753332000124f052656d6f766573206120636f6d706c69616e636520726571756972656d656e742066726f6d20616e206173736574277320636f6d706c69616e63652e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574f02a206964202d20436f6d706c69616e636520726571756972656d656e74206964207768696368206973206e65656420746f2062652072656d6f766564003423205065726d697373696f6e731c2a204173736574607265706c6163655f61737365745f636f6d706c69616e63650801187469636b6572a001185469636b657200014061737365745f636f6d706c69616e6365d10201685665633c436f6d706c69616e6365526571756972656d656e743e00023cfc5265706c6163657320616e206173736574277320636f6d706c69616e6365206279207469636b657220776974682061206e657720636f6d706c69616e63652e00fc436f6d706c69616e636520726571756972656d656e74732077696c6c20626520736f727465642028617363656e64696e6720627920696429206265666f72658c7265706c6163696e67207468652063757272656e7420726571756972656d656e74732e002c2320417267756d656e7473782a20607469636b657260202d20746865206173736574207469636b65722cbc2a206061737365745f636f6d706c69616e6365202d20746865206e657720617373657420636f6d706c69616e63652e002023204572726f7273f02a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722eb1012a20604475706c69636174654173736574436f6d706c69616e636560206966206061737365745f636f6d706c69616e63656020636f6e7461696e73206d756c7469706c6520656e74726965732077697468207468652073616d652060726571756972656d656e745f6964602e003423205065726d697373696f6e731c2a2041737365745872657365745f61737365745f636f6d706c69616e63650401187469636b6572a001185469636b65720003207452656d6f76657320616e206173736574277320636f6d706c69616e6365002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a2041737365745870617573655f61737365745f636f6d706c69616e63650401187469636b6572a001185469636b657200042011015061757365732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a2041737365745c726573756d655f61737365745f636f6d706c69616e63650401187469636b6572a001185469636b65720005201501526573756d65732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a204173736574806164645f64656661756c745f747275737465645f636c61696d5f6973737565720801187469636b6572a001185469636b6572000118697373756572c102013454727573746564497373756572000624f84164647320616e6f746865722064656661756c74207472757374656420636c61696d2069737375657220617420746865207469636b6572206c6576656c2e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742ec82a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e003423205065726d697373696f6e731c2a2041737365748c72656d6f76655f64656661756c745f747275737465645f636c61696d5f6973737565720801187469636b6572a001185469636b65720001186973737565727c01284964656e746974794964000724750152656d6f7665732074686520676976656e2060697373756572602066726f6d2074686520736574206f662064656661756c74207472757374656420636c61696d206973737565727320617420746865207469636b6572206c6576656c2e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742ec82a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e003423205065726d697373696f6e731c2a204173736574746368616e67655f636f6d706c69616e63655f726571756972656d656e740801187469636b6572a001185469636b657200011c6e65775f726571a5020154436f6d706c69616e6365526571756972656d656e74000824f04d6f6469667920616e206578697374696e6720636f6d706c69616e636520726571756972656d656e74206f66206120676976656e207469636b65722e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742e8c2a206e65775f726571202d20436f6d706c69616e636520726571756972656d656e742e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e8507086070616c6c65745f636f72706f726174655f616374696f6e731043616c6c040454000124587365745f6d61785f64657461696c735f6c656e6774680401186c656e67746810010c753332000008d053657420746865206d617820606c656e67746860206f66206064657461696c736020696e207465726d73206f662062797465732e744d6179206f6e6c792062652063616c6c6564207669612061205049502e4c7365745f64656661756c745f746172676574730801187469636b6572a001185469636b657200011c74617267657473d90201405461726765744964656e746974696573000134cc536574207468652064656661756c7420434120605461726765744964656e7469746965736020746f206074617267657473602e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ee42d20607469636b65726020666f72207768696368207468652064656661756c74206964656e74697469657320617265206368616e67696e672ecc2d20607461726765747360207468652064656661756c7420746172676574206964656e74697469657320666f7220612043412e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e31012d2060546f6f4d616e79546172676574496473602069662060746172676574732e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e003423205065726d697373696f6e731c2a2041737365746c7365745f64656661756c745f77697468686f6c64696e675f7461780801187469636b6572a001185469636b657200010c7461787d02010c5461780002303d01536574207468652064656661756c742077697468686f6c64696e672074617820666f7220616c6c204449447320616e64204341732072656c6576616e7420746f207468697320607469636b6572602e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ec82d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2e05012d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e003423205065726d697373696f6e731c2a2041737365745c7365745f6469645f77697468686f6c64696e675f7461780c01187469636b6572a001185469636b657200012474617865645f6469647c01284964656e74697479496400010c746178e102012c4f7074696f6e3c5461783e000340f4536574207468652077697468686f6c64696e6720746178206f6620607469636b65726020666f72206074617865645f6469646020746f2060746178602e810149662060536f6d652874617829602c2074686973206f7665727269646573207468652064656661756c742077697468686f6c64696e6720746178206f6620607469636b65726020746f20607461786020666f72206074617865645f646964602efc4f74686572776973652c20696620604e6f6e65602c207468652064656661756c742077697468686f6c64696e67207461782077696c6c20626520757365642e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ec82d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2ee42d206074617865645f6469646020746861742077696c6c2068617665206974732077697468686f6c64696e672074617820757064617465642e05012d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e81012d2060546f6f4d616e794469645461786573602069662060536f6d6528746178296020616e6420616464696e6720746865206f7665727269646520776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e003423205065726d697373696f6e731c2a20417373657464696e6974696174655f636f72706f726174655f616374696f6e2001187469636b6572a001185469636b65720001106b696e64e902011843414b696e640001246465636c5f646174652001184d6f6d656e7400012c7265636f72645f64617465890701584f7074696f6e3c5265636f726444617465537065633e00011c64657461696c7301030124434144657461696c7300011c74617267657473910701604f7074696f6e3c5461726765744964656e7469746965733e00015c64656661756c745f77697468686f6c64696e675f746178e102012c4f7074696f6e3c5461783e00013c77697468686f6c64696e675f746178950701784f7074696f6e3c5665633c284964656e7469747949642c20546178293e3e0004784901496e69746961746573206120434120666f7220607469636b657260206f6620606b696e64602077697468206064657461696c736020616e64206f746865722070726f766964656420617267756d656e74732e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732e8c2d20607469636b657260207468617420746865204341206973206d61646520666f722e7c2d20606b696e6460206f66204341206265696e6720696e697469617465642e982d20606465636c5f6461746560206f66204341206272696e6720696e697469616c697a65642ef02d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f6620746869732043412e610120202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e4d012d206064657461696c7360206f662074686520434120696e20667265652d7465787420666f726d2c20757020746f2061206365727461696e206e756d626572206f6620627974657320696e206c656e6774682ef42d206074617267657473602c20696620616e792c20776869636820746869732043412069732072656c6576616e742f697272656c6576616e7420746f2e49012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f7461726765747360292e5d012d206064656661756c745f77697468686f6c64696e675f746178602c20696620616e792c206973207468652064656661756c742077697468686f6c64696e672074617820746f2075736520666f7220746869732043412e69012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f77697468686f6c64696e675f74617860292e21012d206077697468686f6c64696e675f746178602c20696620616e792c2070726f7669646573207065722d4449442077697468686f6c64696e6720746178206f76657272696465732e59012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f6469645f77697468686f6c64696e675f74617860292e002023204572726f72731d012d206044657461696c73546f6f4c6f6e6760206966206064657461696c732e6c656e28296020676f6573206265796f6e6420606d61785f64657461696c735f6c656e677468602e25012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e69012d2060436f756e7465724f766572666c6f776020696e2074686520756e6c696b656c79206576656e74207468617420736f206d616e79204341732077657265206372656174656420666f72207468697320607469636b6572602cf820207468617420696e7465676572206f766572666c6f7720776f756c642068617665206f63637572656420696620696e737465616420616c6c6f7765642e75012d2060546f6f4d616e79446964546178657360206966206077697468686f6c64696e675f7461782e756e7772617028292e6c656e28296020776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e01012d20604475706c69636174654469645461786020696620612044494420697320696e636c75646564206d6f7265207468616e206f6e636520696e20607774602e55012d2060546f6f4d616e79546172676574496473602069662060746172676574732e756e7772617028292e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e01012d20604465636c44617465496e4675747572656020696620746865206465636c61726174696f6e2064617465206973206e6f7420696e2074686520706173742e51012d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e003423205065726d697373696f6e731c2a2041737365742c6c696e6b5f63615f646f6308010869647102011043414964000110646f63730503013c5665633c446f63756d656e7449643e000548ac4c696e6b2074686520676976656e204341206069646020746f2074686520676976656e2060646f6373602ef4416e792070726576696f7573206c696e6b7320666f7220746865204341206172652072656d6f76656420696e206661766f72206f662060646f6373602e00550154686520776f726b666c6f77206865726520697320746f206164642074686520646f63756d656e747320616e6420696e6974696174696e672074686520434120696e20616e79206f7264657220646573697265642ec44f6e636520626f74682065786973742c20746865792063616e206e6f77206265206c696e6b656420746f6765746865722e0030232320417267756d656e747351012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206069642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732ea82d2060696460206f662074686520434120746f206173736f636961746520776974682060646f6373602eb02d2060646f63736020746f206173736f6369617465207769746820746865204341207769746820606964602e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e19012d20604e6f53756368446f636020696620616e79206f662060646f63736020646f6573206e6f74206964656e7469667920616e206578697374696e6720646f63756d656e742e003423205065726d697373696f6e731c2a2041737365742472656d6f76655f636104011463615f696471020110434149640006489452656d6f76657320746865204341206964656e746966696564206279206063615f6964602e00c44173736f63696174656420646174612c207375636820617320646f63756d656e74206c696e6b732c2062616c6c6f74732cac616e64206361706974616c20646973747269627574696f6e732061726520616c736f2072656d6f7665642e00d4416e79207363686564756c65206173736f636961746564207769746820746865207265636f726420646174652077696c6c20736565b0607374726f6e675f7265665f636f756e74287363686564756c655f696429602064656372656d656e7465642e0030232320417267756d656e74735d012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e782d206063615f696460206f662074686520434120746f2072656d6f76652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e003423205065726d697373696f6e731c2a204173736574486368616e67655f7265636f72645f6461746508011463615f6964710201104341496400012c7265636f72645f64617465890701584f7074696f6e3c5265636f726444617465537065633e00073ce04368616e67657320746865207265636f72642064617465206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e74735d012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e742d206063615f696460206f662074686520434120746f20616c7465722eec2d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f66207468652043412e610120202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e51012d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e003423205065726d697373696f6e731c2a204173736574a0696e6974696174655f636f72706f726174655f616374696f6e5f616e645f646973747269627574651c011c63615f617267739907016c496e697469617465436f72706f72617465416374696f6e41726773000124706f7274666f6c696f7507015c4f7074696f6e3c506f7274666f6c696f4e756d6265723e00012063757272656e6379a001185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e63650001287061796d656e745f61742001184d6f6d656e74000128657870697265735f6174f401384f7074696f6e3c4d6f6d656e743e0008041d015574696c6974792065787472696e73696320746f2062617463682060696e6974696174655f636f72706f726174655f616374696f6e6020616e64206064697374726962757465600c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e890704184f7074696f6e040454018d070108104e6f6e6500000010536f6d6504008d0700000100008d07086070616c6c65745f636f72706f726174655f616374696f6e73385265636f7264446174655370656300010c245363686564756c656404002001184d6f6d656e74000000404578697374696e675363686564756c6504009d0201285363686564756c654964000100204578697374696e67040089020130436865636b706f696e74496400020000910704184f7074696f6e04045401d9020108104e6f6e6500000010536f6d650400d9020000010000950704184f7074696f6e04045401f9020108104e6f6e6500000010536f6d650400f90200000100009907086070616c6c65745f636f72706f726174655f616374696f6e736c496e697469617465436f72706f72617465416374696f6e4172677300002001187469636b6572a001185469636b65720001106b696e64e902011843414b696e640001246465636c5f646174652001184d6f6d656e7400012c7265636f72645f64617465890701584f7074696f6e3c5265636f726444617465537065633e00011c64657461696c7301030124434144657461696c7300011c74617267657473910701604f7074696f6e3c5461726765744964656e7469746965733e00015c64656661756c745f77697468686f6c64696e675f746178e102012c4f7074696f6e3c5461783e00013c77697468686f6c64696e675f746178950701784f7074696f6e3c5665633c284964656e7469747949642c20546178293e3e00009d070c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f741043616c6c040454000118346174746163685f62616c6c6f7410011463615f6964710201104341496400011472616e67650d03013c42616c6c6f7454696d6552616e67650001106d6574611103012842616c6c6f744d65746100010c72637619010110626f6f6c000068e8417474616368206120636f72706f726174652062616c6c6f7420746f20746865204341206964656e746966696564206279206063615f6964602e00ac5468652062616c6c6f742077696c6c2061646d697420766f7465732077697468696e206072616e6765602eb05468652062616c6c6f742773206d657461646174612069732070726f766964656420627920606d657461602c0501776869636820696e636c75646573207468652062616c6c6f74207469746c652c20746865206d6f74696f6e732c2074686569722063686f696365732c206574632e7853656520746865206042616c6c6f744d6574616020666f72206d6f72652e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602ed02d206063615f696460206964656e7469666965732074686520434120746f20617474616368207468652062616c6c6f7420746f2ec02d206072616e67656020737065636966696573207768656e20766f74696e672073746172747320616e6420656e64732eec2d20606d6574616020737065636966696573207468652062616c6c6f742773206d657461646174612061732061666f72656d656e74696f6e65642ee42d2060726376602073706563696669657320776865746865722052435620697320656e61626c656420666f7220746869732062616c6c6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef02d206043414e6f744e6f746963656020696620746865204341206973206e6f74206f662074686520604973737565724e6f7469636560206b696e642ebc2d206053746172744166746572456e6460206966206072616e67652e7374617274203e2072616e67652e656e64602e29012d20604e6f774166746572456e646020696620606e6f77203e2072616e67652e656e646020776865726520606e6f7760206973207468652063757272656e742074696d657374616d702ea82d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652e59012d20605265636f7264446174654166746572537461727460206966206064617465203e2072616e67652e73746172746020776865726520606461746560206973207468652043412773207265636f726420646174652eb82d2060416c726561647945786973747360206966207468657265277320612062616c6c6f7420616c72656164792e31012d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e09012d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e01012d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e10766f746508011463615f69647102011043414964000114766f7465733103013c5665633c42616c6c6f74566f74653e0001441101436173742060766f7465736020696e207468652062616c6c6f7420617474616368656420746f20746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747309012d20606f726967696e60207768696368206d7573742062652061207065726d697373696f6e6564207369676e6572207461726765746564206279207468652043412eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e21012d2060766f7465736020737065636966696573207468652062616c616e63657320746f2061737369676e20746f20656163682063686f69636520696e207468652062616c6c6f742e55012020205468652066756c6c20766f74696e6720706f776572206f6620606f726967696e60277320444944206d6179206265207573656420666f722065616368206d6f74696f6e20696e207468652062616c6c6f742e002023204572726f7273dc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742efc2d2060566f74696e674e6f7453746172746564602069662074686520766f74696e6720706572696f64206861736e277420636f6d6d656e636564207965742ed82d2060566f74696e67416c7265616479456e646564602069662074686520766f74696e6720706572696f642068617320656e6465642e5d012d206057726f6e67566f7465436f756e746020696620746865206e756d626572206f662063686f6963657320696e207468652062616c6c6f7420646f6573206e6f74206d617463682060766f7465732e6c656e2829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef42d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e21012d2060496e73756666696369656e74566f746573602069662074686520766f74696e6720706f776572207573656420666f7220616e79206d6f74696f6e20696e2060766f74657360a42020206578636565647320606f726967696e60277320444944277320766f74696e6720706f7765722e286368616e67655f656e6408011463615f6964710201104341496400010c656e642001184d6f6d656e740002300501416d656e642074686520656e642064617465206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ec42d2060656e64602073706563696669657320746865206e657720656e642064617465206f66207468652062616c6c6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e8c2d206053746172744166746572456e646020696620607374617274203e20656e64602e2c6368616e67655f6d65746108011463615f696471020110434149640001106d6574611103012842616c6c6f744d6574610003346101416d656e6420746865206d6574616461746120287469746c652c206d6f74696f6e732c206574632e29206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e902d20606d657461602073706563696669657320746865206e6577206d657461646174612e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e31012d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e09012d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e286368616e67655f72637608011463615f6964710201104341496400010c72637619010110626f6f6c00042c0501416d656e642052435620737570706f727420666f72207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ecc2d206072637660207370656369666965732069662052435620697320746f20626520737570706f72746564206f72206e6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e3472656d6f76655f62616c6c6f7404011463615f69647102011043414964000528c852656d6f7665207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ea107082c70616c6c65745f706970731043616c6c040454000144647365745f7072756e655f686973746f726963616c5f706970730401147072756e6519010110626f6f6c000014a44368616e6765207768657468657220636f6d706c65746564205049507320617265207072756e65642e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473f02a20607072756e656020737065636966696573207768657468657220636f6d706c6574656420504950732073686f756c64206265207072756e65642e607365745f6d696e5f70726f706f73616c5f6465706f73697404011c6465706f73697418011c42616c616e636500011421014368616e676520746865206d696e696d756d2070726f706f73616c206465706f73697420616d6f756e7420726571756972656420746f20737461727420612070726f706f73616c2e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473f02a20606465706f7369746020746865206e6577206d696e206465706f73697420726571756972656420746f20737461727420612070726f706f73616c707365745f64656661756c745f656e6163746d656e745f706572696f640401206475726174696f6e100138543a3a426c6f636b4e756d626572000214904368616e6765207468652064656661756c7420656e6163746d656e7420706572696f642e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e747369012a20606475726174696f6e6020746865206e65772064656661756c7420656e6163746d656e7420706572696f642069742074616b657320666f722061207363686564756c65642050495020746f2062652065786563757465642e587365745f70656e64696e675f7069705f657870697279040118657870697279390101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e00031805014368616e67652074686520616d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020697320657870697265642eb4496620606578706972796020697320604e6f6e6560207468656e2050495073206e65766572206578706972652e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e74731d012a2060657870697279602074686520626c6f636b2d74696d652069742074616b657320666f722061207374696c6c2d6050656e64696e67602050495020746f206578706972652e587365745f6d61785f7069705f736b69705f636f756e7404010c6d6178080130536b6970706564436f756e74000414d44368616e676520746865206d6178696d756d20736b697020636f756e742028606d61785f7069705f736b69705f636f756e7460292e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473ec2a20606d61786020736b697073206265666f72652061205049502063616e6e6f7420626520736b697070656420627920474320616e796d6f72652e507365745f6163746976655f7069705f6c696d69740401146c696d697410010c75333200051469014368616e676520746865206d6178696d756d206e756d626572206f66206163746976652050495073206265666f726520636f6d6d756e697479206d656d626572732063616e6e6f742070726f706f736520616e797468696e672e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473902a20606c696d697460206f6620636f6e63757272656e742061637469766520504950732e1c70726f706f736510012070726f706f73616cd1050140426f783c543a3a50726f706f73616c3e00011c6465706f73697418011c42616c616e636500010c75726c5102012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e510301584f7074696f6e3c5069704465736372697074696f6e3e000624050141206e6574776f726b206d656d6265722063726561746573206120504950206279207375626d697474696e67206120646973706174636861626c6520776869636855016368616e67657320746865206e6574776f726b20696e20736f6d657761792e2041206d696e696d756d206465706f73697420697320726571756972656420746f206f70656e2061206e65772070726f706f73616c2e002c2320417267756d656e7473c82a206070726f706f73657260206973206569746865722061207369676e696e67206b6579206f7220636f6d6d69747465652e65012020205573656420746f20756e6465727374616e6420776865746865722074686973206973206120636f6d6d69747465652070726f706f73616c20616e6420766572696669656420616761696e737420606f726967696e602e802a206070726f706f73616c60206120646973706174636861626c652063616c6c45012a20606465706f73697460206d696e696d756d206465706f7369742076616c75652c2077686963682069732069676e6f726564206966206070726f706f73657260206973206120636f6d6d69747465652ecc2a206075726c602061206c696e6b20746f2061207765627369746520666f722070726f706f73616c2064697363757373696f6e10766f74650c010869644d03011450697049640001286179655f6f725f6e617919010110626f6f6c00011c6465706f73697418011c42616c616e63650007481d01566f74652065697468657220696e206661766f722028606179655f6f725f6e617960203d3d207472756529206f7220616761696e7374206120504950207769746820606964602e4d015468652022636f6e76696e6374696f6e22206f7220737472656e677468206f662074686520766f746520697320676976656e20627920606465706f736974602c2077686963682069732072657365727665642e008c4e6f746520746861742060766f746560206973202a6e6f742a2061646469746976652ef8546861742069732c2060766f74652869642c20747275652c203530296020666f6c6c6f7765642062792060766f74652869642c20747275652c2034302960490177696c6c2066697273742072657365727665206035306020616e64207468656e20726566756e6420603530202d203130602c20656e64696e672075702077697468206034306020696e206465706f7369742e2501546f206164642061746f70206f66206578697374696e6720766f7465732c20796f75276c6c206e65656420606578697374696e675f6465706f736974202b206164646974696f6e602e002c2320417267756d656e74734c2a20606964602c2070726f706f73616c206964dc2a20606179655f6f725f6e6179602c206120626f6f6c20726570726573656e74696e6720666f72206f7220616761696e737420766f7465e82a20606465706f736974602c207468652022636f6e76696374696f6e2220776974682077686963682074686520766f7465206973206d6164652e002023204572726f7273e42a20604e6f5375636850726f706f73616c60206966206069646020646f65736e2774207265666572656e636520612076616c6964205049502ee42a20604e6f7446726f6d436f6d6d756e697479602069662070726f706f73616c20776173206d616465206279206120636f6d6d69747465652ec02a2060496e636f727265637450726f706f73616c537461746560206966205049502069736e27742070656e64696e672e2d012a2060496e73756666696369656e744465706f7369746020696620606f726967696e602063616e6e6f74207265736572766520606465706f736974202d206f6c645f6465706f736974602e68617070726f76655f636f6d6d69747465655f70726f706f73616c04010869644d030114506970496400081cd4417070726f766573207468652070656e64696e6720636f6d6d69747465652050495020676976656e2062792074686520606964602e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ee42a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c2069736e27742070656e64696e672ee02a20604e6f744279436f6d6d697474656560206966207468652070726f706f73616c2069736e2774206279206120636f6d6d69747465652e3c72656a6563745f70726f706f73616c04010869644d0301145069704964000920f852656a65637473207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e7920626f6e6465642066756e64732cb8617373756d696e67206974206861736e2774206265656e2063616e63656c6c6564206f722065786563757465642e05014e6f746520746861742070726f706f73616c73207363686564756c65642d666f722d657865637574696f6e2063616e20616c736f2062652072656a65637465642e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742e15012a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c207761732063616e63656c6c6564206f722065786563757465642e387072756e655f70726f706f73616c04010869644d0301145069704964000a2429015072756e65207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e792066756e6473206e6f7420616c726561647920726566756e6465642e6454686520504950206d6179206e6f7420626520616374697665000901546869732066756e6374696f6e20697320696e74656e64656420666f722073746f72616765206761726261676520636f6c6c656374696f6e20707572706f7365732e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ed42a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c206973206163746976652e5072657363686564756c655f657865637574696f6e08010869644d0301145069704964000114756e74696c190601584f7074696f6e3c543a3a426c6f636b4e756d6265723e000b24e0557064617465732074686520657865637574696f6e207363686564756c65206f66207468652050495020676976656e20627920606964602e002c2320417267756d656e747331012a2060756e74696c6020646566696e6573207468652066757475726520626c6f636b2077686572652074686520656e6163746d656e7420706572696f642077696c6c2066696e69736865642e4501202020604e6f6e65602076616c7565206d65616e73207468617420656e6163746d656e7420706572696f6420697320676f696e6720746f2066696e69736820696e20746865206e65787420626c6f636b2e002023204572726f727339012a206052657363686564756c654e6f74427952656c65617365436f6f7264696e61746f726020756e6c657373207472696767657265642062792072656c6561736520636f6f7264696e61746f722e21012a2060496e636f727265637450726f706f73616c53746174656020756e6c657373207468652070726f706f73616c2077617320696e2061207363686564756c65642073746174652e38636c6561725f736e617073686f74000c10e8436c656172732074686520736e617073686f7420616e6420656d69747320746865206576656e742060536e617073686f74436c6561726564602e002023204572726f72733d012a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e20736e617073686f74000d140d0154616b65732061206e657720736e617073686f74206f66207468652063757272656e74206c697374206f66206163746976652026262070656e64696e6720504950732e2901546865205049507320617265207468656e20736f7274656420696e746f2061207072696f72697479207175657565206261736564206f6e2065616368205049502773207765696768742e002023204572726f72733d012a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e58656e6163745f736e617073686f745f726573756c747304011c726573756c7473a50701705665633c2850697049642c20536e617073686f74526573756c74293e000e44d0456e616374732060726573756c74736020666f7220746865205049507320696e2074686520736e617073686f742071756575652e290154686520736e617073686f742077696c6c20626520617661696c61626c6520666f72206675727468657220656e6163746d656e747320756e74696c20697420697320636c65617265642e0055015468652060726573756c7473602061726520656e636f6465642061206c697374206f6620602869642c20726573756c7429602077686572652060726573756c7460206973206170706c69656420746f20606964602e49014e6f746520746861742074686520736e617073686f74207072696f7269747920717565756520697320656e636f646564207769746820746865202a6c6f77657374207072696f726974792066697273742a2e5501736f2060726573756c7473203d205b2869642c20417070726f7665295d602077696c6c20617070726f76652060536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20315d602e002023204572726f72730d012a20604261644f726967696e60202d20756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2e21012a206043616e6e6f74536b697050697060202d206120676976656e205049502068617320616c7265616479206265656e20736b697070656420746f6f206d616e792074696d65732e0d012a2060536e617073686f74526573756c74546f6f4c6172676560202d206f6e206c656e28726573756c747329203e206c656e28736e617073686f745f7175657565292e702a2060536e617073686f7449644d69736d6174636860202d2069663a2420206060607465787498202020e2888320286920e2888820302e2e536e617073686f7451756575652e6c656e2829292efc2020202020726573756c74735b695d2e3020e289a020536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20695d2e6964142020606060f8202020546869732069732070726f746563747320616761696e737420636c656172696e67207175657565207768696c6520474320697320766f74696e672e54657865637574655f7363686564756c65645f70697004010869644d0301145069704964000f04d8496e7465726e616c20646973706174636861626c6520746861742068616e646c657320657865637574696f6e206f662061205049502e506578706972655f7363686564756c65645f70697008010c6469647c01284964656e74697479496400010869644d0301145069704964001004dc496e7465726e616c20646973706174636861626c6520746861742068616e646c65732065787069726174696f6e206f662061205049502e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ea507000002a90700a907000004084d03ad0700ad07082c70616c6c65745f7069707338536e617073686f74526573756c7400010c1c417070726f76650000001852656a65637400010010536b697000020000b107084070616c6c65745f706f7274666f6c696f1043616c6c040454000118406372656174655f706f7274666f6c696f0401106e616d6585030134506f7274666f6c696f4e616d65000004a843726561746573206120706f7274666f6c696f20776974682074686520676976656e20606e616d65602e4064656c6574655f706f7274666f6c696f04010c6e756de0013c506f7274666f6c696f4e756d626572000120350144656c657465732061207573657220706f7274666f6c696f2e204120706f7274666f6c696f2063616e2062652064656c65746564206f6e6c7920696620697420686173206e6f2066756e64732e002023204572726f72731d012a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2ef02a2060506f7274666f6c696f4e6f74456d707479602069662074686520706f7274666f6c696f207374696c6c20686f6c647320616e79206173736574003423205065726d697373696f6e732c2a20506f7274666f6c696f506d6f76655f706f7274666f6c696f5f66756e64730c011066726f6dd8012c506f7274666f6c696f4964000108746fd8012c506f7274666f6c696f49640001146974656d73b50701585665633c4d6f7665506f7274666f6c696f4974656d3e00023c5d014d6f766573206120746f6b656e20616d6f756e742066726f6d206f6e6520706f7274666f6c696f206f6620616e206964656e7469747920746f20616e6f7468657220706f7274666f6c696f206f66207468652073616d65e06964656e746974792e204d7573742062652063616c6c65642062792074686520637573746f6469616e206f66207468652073656e6465722e110146756e64732066726f6d2064656c6574656420706f7274666f6c696f732063616e20616c736f206265207265636f7665726564207669612074686973206d6574686f642e00e0412073686f7274206d656d6f2063616e20626520616464656420746f20746f206561636820746f6b656e20616d6f756e74206d6f7665642e002023204572726f727369012a2060506f7274666f6c696f446f65734e6f74457869737460206966206f6e65206f7220626f7468206f662074686520706f7274666f6c696f73207265666572656e636520616e20696e76616c696420706f7274666f6c696f2e51012a206064657374696e6174696f6e5f69735f73616d655f706f7274666f6c696f6020696620626f74682073656e64657220616e6420726563656976657220706f7274666f6c696f20617265207468652073616d6591012a2060446966666572656e744964656e74697479506f7274666f6c696f7360206966207468652073656e64657220616e6420726563656976657220706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e74697469657349012a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f66207468652066726f6d20706f7274666f6c696f41012a2060496e73756666696369656e74506f7274666f6c696f42616c616e636560206966207468652073656e64657220646f6573206e6f74206861766520656e6f75676820667265652062616c616e6365003423205065726d697373696f6e732c2a20506f7274666f6c696f4072656e616d655f706f7274666f6c696f08010c6e756de0013c506f7274666f6c696f4e756d62657200011c746f5f6e616d6585030134506f7274666f6c696f4e616d6500031c8052656e616d65732061206e6f6e2d64656661756c7420706f7274666f6c696f2e002023204572726f72731d012a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2e003423205065726d697373696f6e732c2a20506f7274666f6c696f58717569745f706f7274666f6c696f5f637573746f647904010c706964d8012c506f7274666f6c696f4964000420bc5768656e2063616c6c65642062792074686520637573746f6469616e206f662060706f7274666f6c696f5f6964602c4901616c6c6f77732072657475726e696e672074686520637573746f6479206f662074686520706f7274666f6c696f20746f2074686520706f7274666f6c696f206f776e657220756e696c61746572616c6c792e002023204572726f72735d012a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f74207468652063757272656e7420637573746f6469616e206f662060706f7274666f6c696f5f6964602e003423205065726d697373696f6e732c2a20506f7274666f6c696f606163636570745f706f7274666f6c696f5f637573746f647904011c617574685f696420010c7536340005000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652eb507000002b90700b907084070616c6c65745f706f7274666f6c696f444d6f7665506f7274666f6c696f4974656d00000c01187469636b6572a001185469636b6572000118616d6f756e7418011c42616c616e63650001106d656d6f8001304f7074696f6e3c4d656d6f3e0000bd07084c70616c6c65745f70726f746f636f6c5f6665651043616c6c040454000108486368616e67655f636f656666696369656e7404012c636f656666696369656e7495030120506f73526174696f000010c04368616e676573207468652066656520636f656666696369656e7420666f722074686520726f6f74206f726967696e2e002023204572726f7273882a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e3c6368616e67655f626173655f6665650801086f70c107012850726f746f636f6c4f70000120626173655f66656518011c42616c616e6365000110ac4368616e67657320746865206120626173652066656520666f722074686520726f6f74206f726967696e2e002023204572726f7273882a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ec1070c64706f6c796d6573685f636f6d6d6f6e5f7574696c69746965733070726f746f636f6c5f6665652850726f746f636f6c4f700001344c417373657452656769737465725469636b65720000002841737365744973737565000100444173736574416464446f63756d656e7473000200404173736574437265617465417373657400030060436865636b706f696e744372656174655363686564756c65000400a4436f6d706c69616e63654d616e61676572416464436f6d706c69616e6365526571756972656d656e74000500584964656e746974794364645265676973746572446964000600404964656e74697479416464436c61696d000700a44964656e746974794164645365636f6e646172794b65797357697468417574686f72697a6174696f6e0008002c5069707350726f706f736500090040436f6e747261637473507574436f6465000a006c436f72706f7261746542616c6c6f7441747461636842616c6c6f74000b00744361706974616c446973747269627574696f6e44697374726962757465000c0000c5070c4070616c6c65745f7363686564756c65721870616c6c65741043616c6c040454000118207363686564756c651001107768656e100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963c90701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cd1050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00002870416e6f6e796d6f75736c79207363686564756c652061207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c738c2d2042617365205765696768743a2032322e3239202b202e313236202a205320c2b573302d204442205765696768743a48202020202d20526561643a204167656e64614c202020202d2057726974653a204167656e646139012d2057696c6c20757365206261736520776569676874206f662032352077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e1863616e63656c0801107768656e100138543a3a426c6f636b4e756d626572000114696e64657810010c7533320001289443616e63656c20616e20616e6f6e796d6f75736c79207363686564756c6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73902d2042617365205765696768743a2032322e3135202b20322e383639202a205320c2b573302d204442205765696768743a48202020202d20526561643a204167656e64616c202020202d2057726974653a204167656e64612c204c6f6f6b75703d012d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e387363686564756c655f6e616d6564140108696428011c5665633c75383e0001107768656e100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963c90701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cd1050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000228585363686564756c652061206e616d6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73882d2042617365205765696768743a2032392e36202b202e313539202a205320c2b573302d204442205765696768743a68202020202d20526561643a204167656e64612c204c6f6f6b75706c202020202d2057726974653a204167656e64612c204c6f6f6b757049012d2057696c6c20757365206261736520776569676874206f662033352077686963682073686f756c6420626520676f6f6420666f72206d6f7265207468616e203330207363686564756c65642063616c6c732c23203c2f7765696768743e3063616e63656c5f6e616d6564040108696428011c5665633c75383e0003287843616e63656c2061206e616d6564207363686564756c6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73902d2042617365205765696768743a2032342e3931202b20322e393037202a205320c2b573302d204442205765696768743a68202020202d20526561643a204167656e64612c204c6f6f6b75706c202020202d2057726974653a204167656e64612c204c6f6f6b75703d012d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e387363686564756c655f61667465721001146166746572100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963c90701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cd1050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000414a8416e6f6e796d6f75736c79207363686564756c652061207461736b20616674657220612064656c61792e002823203c7765696768743e5453616d65206173205b607363686564756c65605d2e2c23203c2f7765696768743e507363686564756c655f6e616d65645f6166746572140108696428011c5665633c75383e0001146166746572100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963c90701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cd1050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000514905363686564756c652061206e616d6564207461736b20616674657220612064656c61792e002823203c7765696768743ec453616d65206173205b607363686564756c655f6e616d6564605d2853656c663a3a7363686564756c655f6e616d6564292e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ec90704184f7074696f6e040454019d030108104e6f6e6500000010536f6d6504009d030000010000cd07084470616c6c65745f736574746c656d656e741043616c6c040454000144306372656174655f76656e75650c011c64657461696c73a903013056656e756544657461696c7300011c7369676e657273ec01445665633c543a3a4163636f756e7449643e00010c747970ad03012456656e756554797065000014585265676973746572732061206e65772076656e75652e00a42a206064657461696c7360202d2045787472612064657461696c732061626f757420612076656e75653d012a20607369676e65727360202d204172726179206f66207369676e65727320746861742061726520616c6c6f77656420746f207369676e20726563656970747320666f7220746869732076656e7565942a206074797060202d2054797065206f662076656e7565206265696e672063726561746564507570646174655f76656e75655f64657461696c730801086964a503011c56656e7565496400011c64657461696c73a903013056656e756544657461696c730001105c4564697420612076656e756527732064657461696c732e00b42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742ec02a206064657461696c7360207370656369666965732074686520757064617465642076656e75652064657461696c732e447570646174655f76656e75655f747970650801086964a503011c56656e7565496400010c747970ad03012456656e756554797065000210504564697420612076656e7565277320747970652e00b42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742eb42a206074797065602073706563696669657320746865206e65772074797065206f66207468652076656e75652e3c6164645f696e737472756374696f6e14012076656e75655f6964a503011c56656e7565496400013c736574746c656d656e745f74797065b5030178536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e00012874726164655f64617465f401444f7074696f6e3c543a3a4d6f6d656e743e00012876616c75655f64617465f401444f7074696f6e3c543a3a4d6f6d656e743e0001106c656773b90301205665633c4c65673e0003305c416464732061206e657720696e737472756374696f6e2e002c2320417267756d656e7473ec2a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e09012a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c65645d01202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e51012a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b42a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e0020232057656967687498603935305f3030305f303030202b20315f3030305f303030202a206c6567732e6c656e282960686164645f616e645f61666669726d5f696e737472756374696f6e18012076656e75655f6964a503011c56656e7565496400013c736574746c656d656e745f74797065b5030178536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e00012874726164655f64617465f401444f7074696f6e3c543a3a4d6f6d656e743e00012876616c75655f64617465f401444f7074696f6e3c543a3a4d6f6d656e743e0001106c656773b90301205665633c4c65673e000128706f7274666f6c696f73e801405665633c506f7274666f6c696f49643e0004348c4164647320616e642061666669726d732061206e657720696e737472756374696f6e2e002c2320417267756d656e7473ec2a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e09012a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c65645d01202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e51012a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b42a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e6d012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2075736520696e20746869732061666669726d6174696f6e732e003423205065726d697373696f6e732c2a20506f7274666f6c696f4861666669726d5f696e737472756374696f6e0c01086964b1030134496e737472756374696f6e4964000128706f7274666f6c696f73e801405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000524bc50726f766964652061666669726d6174696f6e20746f20616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e7473882a2060696460202d20496e737472756374696f6e20696420746f2061666669726d2e69012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2061666669726d207468697320696e737472756374696f6e2ef82a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f206265202061666669726d65642e003423205065726d697373696f6e732c2a20506f7274666f6c696f5077697468647261775f61666669726d6174696f6e0c01086964b1030134496e737472756374696f6e4964000128706f7274666f6c696f73e801405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000624c0576974686472617720616e2061666669726d6174696f6e20666f72206120676976656e20696e737472756374696f6e2e002c2320417267756d656e7473ec2a2060696460202d20496e737472756374696f6e20696420666f7220746861742061666669726d6174696f6e206765742077697468647261776e2e5d012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2077697468647261772061666669726d6174696f6e2e01012a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f20626520756e2d61666669726d65642e003423205065726d697373696f6e732c2a20506f7274666f6c696f4872656a6563745f696e737472756374696f6e0c01086964b1030134496e737472756374696f6e4964000124706f7274666f6c696fd8012c506f7274666f6c696f496400012c6e756d5f6f665f6c65677310010c7533320007248052656a6563747320616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e7473882a2060696460202d20496e737472756374696f6e20696420746f2072656a6563742ed02a2060706f7274666f6c696f60202d20506f7274666f6c696f20746f2072656a6563742074686520696e737472756374696f6e2ed02a20606e756d5f6f665f6c65677360202d204e756d626572206f66206c65677320696e2074686520696e737472756374696f6e2e003423205065726d697373696f6e732c2a20506f7274666f6c696f5061666669726d5f776974685f72656365697074731001086964b1030134496e737472756374696f6e496400013c726563656970745f64657461696c73d10701dc5665633c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e000128706f7274666f6c696f73e801405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000830cc4163636570747320616e20696e737472756374696f6e20616e6420636c61696d732061207369676e656420726563656970742e002c2320417267756d656e74737c2a2060696460202d2054617267657420696e737472756374696f6e2069642ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d42a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e8c2a20607369676e657260202d205369676e6572206f662074686520726563656970742e842a20607369676e65645f6461746160202d205369676e656420726563656970742e79012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f20616363657074207468697320696e737472756374696f6e2077697468003423205065726d697373696f6e732c2a20506f7274666f6c696f34636c61696d5f726563656970740801086964b1030134496e737472756374696f6e496400013c726563656970745f64657461696c73d50701c85265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e00092c60436c61696d732061207369676e656420726563656970742e002c2320417267756d656e7473bc2a2060696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d42a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e8c2a20607369676e657260202d205369676e6572206f662074686520726563656970742e842a20607369676e65645f6461746160202d205369676e656420726563656970742e003423205065726d697373696f6e732c2a20506f7274666f6c696f3c756e636c61696d5f72656365697074080138696e737472756374696f6e5f6964b1030134496e737472756374696f6e49640001186c65675f6964c10301144c65674964000a2098556e636c61696d7320612070726576696f75736c7920636c61696d656420726563656970742e002c2320417267756d656e7473ec2a2060696e737472756374696f6e5f696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074003423205065726d697373696f6e732c2a20506f7274666f6c696f4c7365745f76656e75655f66696c746572696e670801187469636b6572a001185469636b657200011c656e61626c656419010110626f6f6c000b20c0456e61626c6573206f722064697361626c65642076656e75652066696c746572696e6720666f72206120746f6b656e2e002c2320417267756d656e7473b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e19012a2060656e61626c656460202d20426f6f6c65616e20746861742064656369646573206966207468652066696c746572696e672073686f756c6420626520656e61626c65642e003423205065726d697373696f6e731c2a20417373657430616c6c6f775f76656e7565730801187469636b6572a001185469636b657200011876656e756573c90301305665633c56656e756549643e000c1c0d01416c6c6f7773206164646974696f6e616c2076656e75657320746f2063726561746520696e737472756374696f6e7320696e766f6c76696e6720616e2061737365742e00b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e7d012a206076656e75657360202d204172726179206f662076656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e003423205065726d697373696f6e731c2a2041737365743c646973616c6c6f775f76656e7565730801187469636b6572a001185469636b657200011876656e756573c90301305665633c56656e756549643e000d1c69015265766f6b6573207065726d697373696f6e20676976656e20746f2076656e75657320666f72206372656174696e6720696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c61722061737365742e00b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2ea5012a206076656e75657360202d204172726179206f662076656e756573207468617420617265206e6f206c6f6e67657220616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e003423205065726d697373696f6e731c2a2041737365745c6368616e67655f726563656970745f76616c696469747908012c726563656970745f75696420010c75363400012076616c696469747919010110626f6f6c000e14fc4d61726b732061207265636569707420697373756564206279207468652063616c6c657220617320636c61696d6564206f72206e6f7420636c61696d65642ec1015468697320616c6c6f77732074686520726563656970742069737375657220746f20696e76616c696461746520616e20616c7265616479206973737565642072656365697074206f7220726576616c696461746520616e20616c726561647920636c61696d656420726563656970742e00ac2a2060726563656970745f75696460202d20556e69717565204944206f662074686520726563656970742eac2a206076616c696469747960202d204e65772076616c6964697479206f662074686520726563656970742e74657865637574655f7363686564756c65645f696e737472756374696f6e0801086964b1030134496e737472756374696f6e496400012c5f6c6567735f636f756e7410010c753332000f048101526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f20657865637574652061207363686564756c656420736574746c656d656e7420696e737472756374696f6e2e5872657363686564756c655f696e737472756374696f6e0401086964b1030134496e737472756374696f6e49640010288452657363686564756c65732061206661696c656420696e737472756374696f6e2e002c2320417267756d656e7473b42a2060696460202d2054617267657420696e737472756374696f6e20696420746f2072657363686564756c652e003423205065726d697373696f6e732c2a20506f7274666f6c696f002023204572726f72733d012a2060496e737472756374696f6e4e6f744661696c656460202d20496e737472756374696f6e206e6f7420696e2061206661696c6564207374617465206f7220646f6573206e6f742065786973742e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ed107000002d50700d507084470616c6c65745f736574746c656d656e74385265636569707444657461696c7308244163636f756e7449640100444f6666436861696e5369676e617475726501d9070014012c726563656970745f75696420010c7536340001186c65675f6964c10301144c656749640001187369676e65720001244163636f756e7449640001247369676e6174757265d90701444f6666436861696e5369676e61747572650001206d65746164617461c503013c526563656970744d657461646174610000d907082873705f72756e74696d65384d756c74695369676e617475726500010c1c45643235353139040019070148656432353531393a3a5369676e61747572650000001c53723235353139040049070148737232353531393a3a5369676e61747572650001001445636473610400dd07014065636473613a3a5369676e617475726500020000dd070c1c73705f636f7265146563647361245369676e617475726500000400610701205b75383b2036355d0000e107084470616c6c65745f737461746973746963731043616c6c040454000110587365745f6163746976655f61737365745f73746174730801146173736574d1030128417373657453636f7065000128737461745f7479706573e507014842547265655365743c53746174547970653e00003c80536574207468652061637469766520617373657420737461745f74797065732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e09012d2060737461745f747970657360202d20746865206e6577207374617420747970657320746f207265706c61636520616e79206578697374696e672074797065732e002023204572726f72731d012d206053746174547970654c696d69745265616368656460202d20746f6f206d616e79207374617420747970657320656e61626c656420666f722074686520606173736574602e85012d206043616e6e6f7452656d6f76655374617454797065496e55736560202d2063616e206e6f742072656d6f7665206120737461742074797065207468617420697320696e20757365206279207472616e7366657220636f6e646974696f6e732e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365746062617463685f7570646174655f61737365745f73746174730c01146173736574d1030128417373657453636f7065000124737461745f74797065d9030120537461745479706500011876616c756573e907015042547265655365743c537461745570646174653e00013cec416c6c6f77206120747275737465642069737375657220746f20696e69742f726573796e63207469636b65722f636f6d70616e792073746174732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e902d2060737461745f7479706560202d2073746174207479706520746f207570646174652eb02d206076616c75657360202d20557064617465642076616c75657320666f722060737461745f74797065602e002023204572726f727305012d206053746174547970654d697373696e6760202d2060737461745f7479706560206973206e6f7420656e61626c656420666f722074686520606173736574602e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d204173736574747365745f61737365745f7472616e736665725f636f6d706c69616e63650801146173736574d1030128417373657453636f706500014c7472616e736665725f636f6e646974696f6e73ed07016c42547265655365743c5472616e73666572436f6e646974696f6e3e00023c90536574206173736574207472616e7366657220636f6d706c69616e63652072756c65732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e61012d20607472616e736665725f636f6e646974696f6e7360202d20746865206e6577207472616e7366657220636f6e646974696f6e20746f207265706c61636520616e79206578697374696e6720636f6e646974696f6e732e002023204572726f727355012d20605472616e73666572436f6e646974696f6e4c696d69745265616368656460202d20746f6f206d616e79207472616e7366657220636f6e64697469746f6e20656e61626c656420666f7220606173736574602e91012d206053746174547970654d697373696e6760202d2061207472616e7366657220636f6e646974696f6e2072657175697265732061207374617420747970652074686174206973206e6f7420656e61626c656420666f722074686520606173736574602e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365744c7365745f656e7469746965735f6578656d70740c012469735f6578656d707419010110626f6f6c0001286578656d70745f6b65790d0401685472616e73666572436f6e646974696f6e4578656d70744b6579000120656e746974696573f107014442547265655365743c53636f706549643e00033811015365742f756e73657420656e746974696573206578656d70742066726f6d20616e2061737365742773207472616e7366657220636f6d706c69616e63652072756c65732e002c2320417267756d656e747351012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606578656d70745f6b65792e6173736574602ee02d206069735f6578656d707460202d20656e61626c652f64697361626c65206578656d7074696f6e20666f722060656e746974696573602e1d012d20606578656d70745f6b657960202d2074686520617373657420616e642073746174207479706520746f206578656d7074207468652060656e746974696573602066726f6d2eec2d2060656e74697469657360202d2074686520656e74697469657320746f207365742f756e73657420746865206578656d7074696f6e20666f722e002023204572726f727321012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ee5070420425472656553657404045401d903000400d503000000e9070420425472656553657404045401ed03000400e903000000ed07042042547265655365740404540105040004000104000000f10704204254726565536574040454017c0004002501000000f507082870616c6c65745f73746f1043616c6c040454000118446372656174655f66756e647261697365722801486f66666572696e675f706f7274666f6c696fd8012c506f7274666f6c696f49640001386f66666572696e675f6173736574a001185469636b657200014472616973696e675f706f7274666f6c696fd8012c506f7274666f6c696f496400013472616973696e675f6173736574a001185469636b65720001147469657273f90701385665633c5072696365546965723e00012076656e75655f6964a503011c56656e756549640001147374617274f401444f7074696f6e3c543a3a4d6f6d656e743e00010c656e64f401444f7074696f6e3c543a3a4d6f6d656e743e0001486d696e696d756d5f696e766573746d656e7418011c42616c616e636500013c66756e647261697365725f6e616d651d04013846756e647261697365724e616d65000040604372656174652061206e65772066756e647261697365722e000d012a20606f66666572696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e672074686520606f66666572696e675f6173736574602ea42a20606f66666572696e675f617373657460202d204173736574206265696e67206f6666657265642e05012a206072616973696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e6720746865206072616973696e675f6173736574602e35012a206072616973696e675f617373657460202d204173736574206265696e672065786368616e67656420666f7220606f66666572696e675f617373657460206f6e20696e766573746d656e742ee82a2060746965727360202d20507269636520746965727320746f2063686172676520696e766573746f7273206f6e20696e766573746d656e742ea82a206076656e75655f696460202d2056656e756520746f2068616e646c6520736574746c656d656e742e4d012a2060737461727460202d2046756e647261697365722073746172742074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c20737461727420696d6d6564696174656c792e29012a2060656e6460202d2046756e6472616973657220656e642074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c206e65766572206578706972652ecd012a20606d696e696d756d5f696e766573746d656e7460202d204d696e696d756d20616d6f756e74206f66206072616973696e675f617373657460207468617420616e20696e766573746f72206e6565647320746f207370656e6420746f20696e7665737420696e20746869732072616973652ef02a206066756e647261697365725f6e616d6560202d2046756e64726169736572206e616d652c206f6e6c79207573656420696e20746865205549732e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f18696e766573741c0150696e766573746d656e745f706f7274666f6c696fd8012c506f7274666f6c696f496400014466756e64696e675f706f7274666f6c696fd8012c506f7274666f6c696f49640001386f66666572696e675f6173736574a001185469636b657200010869641904013046756e64726169736572496400013c70757263686173655f616d6f756e7418011c42616c616e63650001246d61785f7072696365fd03013c4f7074696f6e3c42616c616e63653e00011c72656365697074010801e84f7074696f6e3c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e0001305c496e7665737420696e20612066756e647261697365722e0041012a2060696e766573746d656e745f706f7274666f6c696f60202d20506f7274666f6c696f207468617420606f66666572696e675f6173736574602077696c6c206265206465706f736974656420696e2e01012a206066756e64696e675f706f7274666f6c696f60202d20506f7274666f6c696f20746861742077696c6c2066756e642074686520696e766573746d656e742ea02a20606f66666572696e675f617373657460202d20417373657420746f20696e7665737420696e2eac2a2060696460202d204944206f66207468652066756e6472616973657220746f20696e7665737420696e2ef42a206070757263686173655f616d6f756e7460202d20416d6f756e74206f6620606f66666572696e675f61737365746020746f2070757263686173652eb9012a20606d61785f707269636560202d204d6178696d756d20707269636520746f207061792070657220756e6974206f6620606f66666572696e675f6173736574602c20496620604e6f6e6560746865726520617265206e6f20636f6e73747261696e7473206f6e2070726963652e69012a20607265636569707460202d204f66662d636861696e207265636569707420746f2075736520696e7374656164206f66206f6e2d636861696e2062616c616e636520696e206066756e64696e675f706f7274666f6c696f602e003423205065726d697373696f6e732c2a20506f7274666f6c696f44667265657a655f66756e647261697365720801386f66666572696e675f6173736574a001185469636b657200010869641904013046756e64726169736572496400021c50467265657a6520612066756e647261697365722e00942a20606f66666572696e675f617373657460202d20417373657420746f20667265657a652ea02a2060696460202d204944206f66207468652066756e6472616973657220746f20667265657a652e003423205065726d697373696f6e731c2a2041737365744c756e667265657a655f66756e647261697365720801386f66666572696e675f6173736574a001185469636b657200010869641904013046756e64726169736572496400031c58556e667265657a6520612066756e647261697365722e009c2a20606f66666572696e675f617373657460202d20417373657420746f20756e667265657a652ea82a2060696460202d204944206f66207468652066756e6472616973657220746f20756e667265657a652e003423205065726d697373696f6e731c2a204173736574606d6f646966795f66756e647261697365725f77696e646f771001386f66666572696e675f6173736574a001185469636b657200010869641904013046756e6472616973657249640001147374617274200124543a3a4d6f6d656e7400010c656e64f401444f7074696f6e3c543a3a4d6f6d656e743e000424b44d6f64696679207468652074696d652077696e646f7720612066756e647261697365722069732061637469766500942a20606f66666572696e675f617373657460202d20417373657420746f206d6f646966792ea02a2060696460202d204944206f66207468652066756e6472616973657220746f206d6f646966792ea02a2060737461727460202d204e6577207374617274206f66207468652066756e647261697365722eb82a2060656e6460202d204e657720656e64206f66207468652066756e6472616973657220746f206d6f646966792e003423205065726d697373696f6e731c2a2041737365741073746f700801386f66666572696e675f6173736574a001185469636b657200010869641904013046756e64726169736572496400051c4853746f7020612066756e647261697365722e008c2a20606f66666572696e675f617373657460202d20417373657420746f2073746f702e982a2060696460202d204944206f66207468652066756e6472616973657220746f2073746f702e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef907000002fd0700fd07082870616c6c65745f73746f245072696365546965720000080114746f74616c18011c42616c616e6365000114707269636518011c42616c616e63650000010804184f7074696f6e04045401d5070108104e6f6e6500000010536f6d650400d50700000100000508083c70616c6c65745f74726561737572791043616c6c0404540001083064697362757273656d656e7404013462656e65666963696172696573090801785665633c42656e65666963696172793c42616c616e63654f663c543e3e3e00001851014974207472616e73666572732062616c616e6365732066726f6d20747265617375727920746f2065616368206f662062656e6566696369617269657320616e642074686520737065636966696320616d6f756e7444666f722065616368206f66207468656d2e001c23204572726f72c42a20604261644f726967696e603a204f6e6c7920726f6f742063616e2065786563757465207472616e73616374696f6e2e5d012a2060496e73756666696369656e7442616c616e6365603a2049662074726561737572792062616c616e636573206973206e6f7420656e6f75676820746f20636f76657220616c6c2062656e656669636961726965732e347265696d62757273656d656e74040118616d6f756e7418013042616c616e63654f663c543e00010c1d014974207472616e7366657273207468652073706563696669632060616d6f756e74602066726f6d20606f726967696e60206163636f756e7420696e746f2074726561737572792e0049014f6e6c79206163636f756e747320776869636820617265206173736f63696174656420746f20616e206964656e746974792063616e206d616b65206120646f6e6174696f6e20746f2074726561737572792e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e09080000020d08000d08084c706f6c796d6573685f7072696d6974697665732c42656e6566696369617279041c42616c616e636501180008010869647c01284964656e746974794964000118616d6f756e7418011c42616c616e636500001108083870616c6c65745f7574696c6974791043616c6c04045400011014626174636804011463616c6c73150801605665633c3c5420617320436f6e6669673e3a3a43616c6c3e000048c44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e00e8546869732077696c6c206578656375746520756e74696c20746865206669727374206f6e65206661696c7320616e64207468656e2073746f702e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e00202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e00bd01546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e31016576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e207468655501604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d6164654d01616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c65746564604c6576656e74206973206465706f73697465642e3062617463685f61746f6d696304011463616c6c73150801605665633c3c5420617320436f6e6669673e3a3a43616c6c3e00014cc44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e001501546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c2073746f7070696e6720617420746865206669727374206661696c7572652cc0696e207768696368206361736520746865207374617465206368616e6765732061726520726f6c6c6564206261636b2e25014f6e206661696c7572652c20616e206576656e7420604261746368496e746572727570746564286661696c7572655f6964782c206572726f722960206973206465706f73697465642e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e00202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e001501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef4546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ee4496620616e792063616c6c206661696c65642c207468656e20604261746368496e74657272757074656460206973206465706f73697465642e1501496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e4062617463685f6f7074696d697374696304011463616c6c73150801605665633c3c5420617320436f6e6669673e3a3a43616c6c3e000254c44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e000101546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c20697272657370656374697665206f66206661696c757265732e0901416e79206661696c757265732077696c6c20626520617661696c61626c6520696e2061206042617463684f7074696d69737469634661696c656460206576656e742e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e0000202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e001501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef4546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ef8496620616e792063616c6c206661696c65642c207468656e206042617463684f7074696d69737469634661696c656460206973206465706f73697465642cfc77697468206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c2061732077656c6c206173206120766563746f72286f66206572726f72732e1501496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e2072656c61795f74780c0118746172676574000130543a3a4163636f756e7449640001247369676e6174757265d9070150543a3a4f6666436861696e5369676e617475726500011063616c6c1908017c556e6971756543616c6c3c3c5420617320436f6e6669673e3a3a43616c6c3e000330a052656c617920612063616c6c20666f722061207461726765742066726f6d20616e206f726967696e00510152656c6179696e6720696e207468697320636f6e746578742072656665727320746f20746865206162696c697479206f66206f726967696e20746f206d616b6520612063616c6c206f6e20626568616c66206f661c7461726765742e00684665657320617265206368617267656420746f206f726967696e00302320506172616d6574657273842d2060746172676574603a204163636f756e7420746f2062652072656c61796564e82d20607369676e6174757265603a205369676e61747572652066726f6d2074617267657420617574686f72697a696e67207468652072656c6179c02d206063616c6c603a2043616c6c20746f2062652072656c61796564206f6e20626568616c66206f6620746172676574000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e1508000002d105001908083870616c6c65745f7574696c69747928556e6971756543616c6c04044301d105000801146e6f6e6365200148417574686f72697a6174696f6e4e6f6e636500011063616c6cd1050118426f783c433e00001d08082c70616c6c65745f626173651043616c6c0404540001000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e2108085870616c6c65745f65787465726e616c5f6167656e74731043616c6c040454000120306372656174655f67726f75700801187469636b6572a001185469636b65720001147065726d73b0015045787472696e7369635065726d697373696f6e73000048e443726561746573206120637573746f6d206167656e742067726f7570202841472920666f722074686520676976656e20607469636b6572602e00d45468652041472077696c6c206861766520746865207065726d697373696f6e7320617320676976656e20627920607065726d73602e290154686973206e6577204147206973207468656e2061737369676e656420606964203d204147496453657175656e63653a3a6765742829202b20316020617320697473206041474964602c3901776869636820796f752063616e2075736520617320604167656e7447726f75703a3a437573746f6d2869642960207768656e20616464696e67206167656e747320666f7220607469636b6572602e002c2320417267756d656e74739c2d20607469636b65726020746f206164642074686520637573746f6d2067726f757020666f722e902d20607065726d7360207468617420746865206e65772041472077696c6c20686176652e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e21012d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672e25012d2060436f756e7465724f766572666c6f776020696620604147496453657175656e63653a3a6765742829202b20316020776f756c642065786365656420607533323a3a4d4158602e003423205065726d697373696f6e731c2a2041737365741c2a204167656e74547365745f67726f75705f7065726d697373696f6e730c01187469636b6572a001185469636b6572000108696415010110414749640001147065726d73b0015045787472696e7369635065726d697373696f6e7300013c51015570646174657320746865207065726d697373696f6e73206f662074686520637573746f6d204147206964656e74696669656420627920606964602c20666f722074686520676976656e20607469636b6572602e002c2320417267756d656e7473902d20607469636b6572602074686520637573746f6d2041472062656c6f6e677320746f2ea42d206069646020666f722074686520637573746f6d2041472077697468696e20607469636b6572602e942d20607065726d736020746f207570646174652074686520637573746f6d20414720746f2e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e21012d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672ecc2d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472e003423205065726d697373696f6e731c2a2041737365741c2a204167656e743072656d6f76655f6167656e740801187469636b6572a001185469636b65720001146167656e747c01284964656e7469747949640002389c52656d6f76652074686520676976656e20606167656e74602066726f6d20607469636b6572602e002c2320417267756d656e7473a82d20607469636b6572602074686174206861732074686520606167656e746020746f2072656d6f76652e802d20606167656e7460206f6620607469636b65726020746f2072656d6f76652e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ed82d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602ee82d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e746020697320746865206c6173742066756c6c206f6e652e003423205065726d697373696f6e731c2a2041737365741c2a204167656e742061626469636174650401187469636b6572a001185469636b657200032c804162646963617465206167656e747368697020666f7220607469636b6572602e002c2320417267756d656e7473ac2d20607469636b657260206f66207768696368207468652063616c6c657220697320616e206167656e742e002023204572726f7273e42d20604e6f74416e4167656e7460206966207468652063616c6c6572206973206e6f7420616e206167656e74206f6620607469636b6572602efc2d206052656d6f76696e674c61737446756c6c4167656e7460206966207468652063616c6c657220697320746865206c6173742066756c6c206167656e742e003423205065726d697373696f6e731c2a204173736574306368616e67655f67726f75700c01187469636b6572a001185469636b65720001146167656e747c01284964656e74697479496400011467726f7570110101284167656e7447726f7570000440ec4368616e676520746865206167656e742067726f7570207468617420606167656e74602062656c6f6e677320746f20696e20607469636b6572602e002c2320417267756d656e7473802d20607469636b6572602074686174206861732074686520606167656e74602eb82d20606167656e7460206f6620607469636b65726020746f206368616e6765207468652067726f757020666f722ec82d206067726f757060207468617420606167656e74602077696c6c2062656c6f6e6720746f20696e20607469636b6572602e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ecc2d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472ed82d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602e2d012d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e7460207761732061206046756c6c60206f6e6520616e64206973206265696e672064656d6f7465642e003423205065726d697373696f6e731c2a2041737365741c2a204167656e744c6163636570745f6265636f6d655f6167656e7404011c617574685f696420010c753634000540010141636365707420616e20617574686f72697a6174696f6e20627920616e206167656e742022416c696365222077686f206973737565642060617574685f696460d8746f20616c736f206265636f6d6520616e206167656e74206f6620746865207469636b657220416c696365207370656369666965642e002c2320417267756d656e7473d02d2060617574685f696460206964656e74696679696e672074686520617574686f72697a6174696f6e20746f206163636570742e002023204572726f727345012d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e35012d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f69646020697320666f7220616e206175746820746861742068617320657870697265642e4d012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f7420666f72206120604265636f6d654167656e7460206175746820747970652e25012d2060556e617574686f72697a65644167656e74602069662022416c69636522206973206e6f74207065726d697373696f6e656420746f2070726f766964652074686520617574682e0d012d20604e6f53756368414760206966207468652067726f757020726566657272656420746f206120637573746f6d207468617420646f6573206e6f742065786973742e0d012d2060416c7265616479416e4167656e7460206966207468652063616c6c657220697320616c726561647920616e206167656e74206f6620746865207469636b65722e003423205065726d697373696f6e731c2a204167656e74646372656174655f67726f75705f616e645f6164645f617574680c01187469636b6572a001185469636b65720001147065726d73b0015045787472696e7369635065726d697373696f6e730001187461726765746d01015c5369676e61746f72793c543a3a4163636f756e7449643e000614e85574696c6974792065787472696e73696320746f20626174636820606372656174655f67726f75706020616e642020606164645f61757468602e003423205065726d697373696f6e731c2a2041737365741c2a204167656e74786372656174655f616e645f6368616e67655f637573746f6d5f67726f75700c01187469636b6572a001185469636b65720001147065726d73b0015045787472696e7369635065726d697373696f6e730001146167656e747c01284964656e74697479496400071455015574696c6974792065787472696e73696320746f20626174636820606372656174655f67726f75706020616e642020606368616e67655f67726f75706020666f7220637573746f6d2067726f757073206f6e6c792e003423205065726d697373696f6e731c2a2041737365741c2a204167656e740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e2508083870616c6c65745f72656c617965721043616c6c040454000118387365745f706179696e675f6b6579080120757365725f6b6579000130543a3a4163636f756e74496400012c706f6c79785f6c696d697418011c42616c616e6365000020bd014372656174657320616e20617574686f72697a6174696f6e20746f20616c6c6f772060757365725f6b65796020746f20616363657074207468652063616c6c65722028606f726967696e203d3d20706179696e675f6b6579602920617320746865697220737562736964697365722e002c2320417267756d656e74739c2d2060757365725f6b657960207468652075736572206b657920746f207375627369646973652ee42d2060706f6c79785f6c696d6974602074686520696e697469616c20504f4c5958206c696d697420666f72207468697320737562736964792e002023204572726f727331012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e446163636570745f706179696e675f6b657904011c617574685f696420010c753634000138944163636570747320612060706179696e675f6b65796020617574686f72697a6174696f6e2e002c2320417267756d656e7473e82d2060617574685f6964602074686520617574686f72697a6174696f6e20696420746f2061636365707420612060706179696e675f6b6579602e002023204572726f727345012d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e2d012d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f6964602074686520617574686f72697a6174696f6e2068617320657870697265642e6d012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f742061206041646452656c61796572506179696e674b65796020617574686f72697a6174696f6e2ea5012d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f206163636570742074686520617574686f72697a6174696f6e20666f72207468652060757365725f6b6579602ed9012d20604e6f74417574686f72697a6564466f72506179696e674b6579602069662074686520617574686f72697a6174696f6e20776173206372656174656420616e206964656e7469747920646966666572656e742066726f6d207468652060706179696e675f6b6579602773206964656e746974792e31012d2060557365724b65794364644d697373696e6760206966207468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e41012d2060506179696e674b65794364644d697373696e6760206966207468652060706179696e675f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e4472656d6f76655f706179696e675f6b6579080120757365725f6b6579000130543a3a4163636f756e744964000128706179696e675f6b6579000130543a3a4163636f756e74496400022cac52656d6f766573207468652060706179696e675f6b6579602066726f6d20612060757365725f6b6579602e002c2320417267756d656e7473d42d2060757365725f6b657960207468652075736572206b657920746f2072656d6f76652074686520737562736964792066726f6d2e09012d2060706179696e675f6b6579602074686520706179696e67206b6579207468617420776173207375627369646973696e67207468652060757365725f6b6579602e002023204572726f72738d012d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2072656d6f766520746865207375627369647920666f72207468652060757365725f6b6579602ef82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e31012d20604e6f74506179696e674b657960206966207468652060706179696e675f6b65796020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e487570646174655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e74496400012c706f6c79785f6c696d697418011c42616c616e6365000328b4557064617465732074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e35012d2060706f6c79785f6c696d6974602074686520616d6f756e74206f6620504f4c595820617661696c61626c6520666f72207375627369646973696e67207468652060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e50696e6372656173655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e744964000118616d6f756e7418011c42616c616e636500042cb8496e6372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e0d012d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2061646420746f207468652073756273696479206f662060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e3d012d20604f7665726c6f776020696620746865207375627369647927732072656d61696e696e6720504f4c595820776f756c642068617665206f766572666c6f7765642060753132383a3a4d4158602e5064656372656173655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e744964000118616d6f756e7418011c42616c616e636500052cb844656372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e21012d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2072656d6f76652066726f6d207468652073756273696479206f662060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e09012d20604f7665726c6f776020696620746865207375627369647920686173206c657373207468656e2060616d6f756e746020504f4c59582072656d61696e696e672e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e2908083870616c6c65745f726577617264731043616c6c04045400010840636c61696d5f69746e5f7265776172640c01387265776172645f61646472657373000130543a3a4163636f756e74496400012c69746e5f61646472657373000130543a3a4163636f756e7449640001247369676e6174757265d9070150543a3a4f6666436861696e5369676e617475726500003450436c61696d20616e2049544e207265776172642e0030232320417267756d656e7473d82a206069746e5f61646472657373602073706563696679696e672074686520617761726465642061646472657373206f6e2049544e2ed42a20607369676e6174757265602061757468656e7469636174696e672074686520636c61696d20746f20746865207265776172642e7501202020546865207369676e61747572652073686f756c6420636f6e7461696e20607265776172645f616464726573736020666f6c6c6f7765642062792074686520737566666978206022636c61696d5f69746e5f72657761726422602cb8202020616e64206d7573742068617665206265656e207369676e6564206279206069746e5f61646472657373602e002023204572726f727345012a2060496e73756666696369656e7442616c616e636560202d2049746e20726577617264732068617320696e73756666696369656e742066756e647320746f20697373756520746865207265776172642e31012a2060496e76616c69645369676e617475726560202d20607369676e6174757265602068616420616e20696e76616c6964207369676e6572206f7220696e76616c6964206d6573736167652e69012a206049746e526577617264416c7265616479436c61696d656460202d205265776172642069737375656420746f20746865206069746e5f61646472657373602068617320616c7265616479206265656e20636c61696d65642e89012a2060556e6b6e6f776e49746e4164647265737360202d206069746e5f6164647265737360206973206e6f7420696e207468652072657761726473207461626c6520616e6420686173206e6f2072657761726420746f20626520636c61696d65642e547365745f69746e5f7265776172645f73746174757308012c69746e5f61646472657373000130543a3a4163636f756e7449640001187374617475732d08013c49746e5265776172645374617475730001000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e2d08083870616c6c65745f726577617264733c49746e52657761726453746174757300010824556e636c61696d6564040018011c42616c616e63650000001c436c61696d6564000100003108084470616c6c65745f746573745f7574696c731043616c6c0404540001103072656769737465725f64696408010c7569645d04012c496e766573746f725569640001387365636f6e646172795f6b65797390017c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e0000284d0147656e6572617465732061206e657720604964656e7469747949446020666f72207468652063616c6c65722c20616e642069737375657320612073656c662d67656e6572617465642043444420636c61696d2e00f05468652063616c6c6572206163636f756e742077696c6c20626520746865207072696d617279206b6579206f662074686174206964656e746974792e5d01466f722065616368206163636f756e74206f6620607365636f6e646172795f6b657973602c2061206e657720604a6f696e4964656e746974796020617574686f72697a6174696f6e20697320637265617465642c20736f410165616368206f66207468656d2077696c6c206e65656420746f20616363657074206974206265666f7265206265636f6d652070617274206f662074686973206e657720604964656e746974794944602e002023204572726f7273d5012d2060416c72656164794c696e6b656460206966207468652063616c6c6572206163636f756e74206f7220696620616e79206f662074686520676976656e20607365636f6e646172795f6b657973602068617320616c7265616479206c696e6b656420746f20616e20604964656e746974794944604d012d20605365636f6e646172794b657973436f6e7461696e5072696d6172794b65796020696620607365636f6e646172795f6b6579736020636f6e7461696e73207468652063616c6c6572206163636f756e742ee82d2060446964416c726561647945786973747360206966206175746f2d67656e6572617465642044494420616c7265616479206578697374732e546d6f636b5f6364645f72656769737465725f6469640401387461726765745f6163636f756e74000130543a3a4163636f756e7449640001303d015265676973746572732061206e6577204964656e7469747920666f722074686520607461726765745f6163636f756e746020616e642069737375657320612043444420636c61696d20746f2069742e510154686520496e766573746f72205549442069732067656e6572617465642064657465726d696e6973746963616c6c79206279207468652068617368206f66207468652067656e6572617465642044494420616e64b07468656e2077652066697820697420746f20626520636f6d706c69616e74207769746820555549442076342e00142320536565dc2d205b52464320343132323a20555549445d2868747470733a2f2f746f6f6c732e696574662e6f72672f68746d6c2f7266633431323229002423204661696c75726549012d20606f726967696e602068617320746f20626520616e20616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792e286765745f6d795f64696400020498456d69747320616e206576656e7420776974682063616c6c65722773206964656e746974792e286765745f6364645f6f660401086f66000130543a3a4163636f756e744964000304d4456d69747320616e206576656e7420776974682063616c6c65722773206964656e7469747920616e6420434444207374617475732e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e3508084070616c6c65745f636f6d6d697474656534506f6c796d657368566f746573042c426c6f636b4e756d626572011000100114696e64657810013450726f706f73616c496e646578000110617965732501013c5665633c4964656e7469747949643e0001106e6179732501013c5665633c4964656e7469747949643e0001186578706972793901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00003908084070616c6c65745f636f6d6d69747465651c56657273696f6e00000400080108753800003d08084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e004108083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e004508084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e004908083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e004d08084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e005108083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00550800000408006d01005908000004080020005d080000040800d1050061080000040c006d0120006508083c70616c6c65745f6d756c74697369673c50726f706f73616c44657461696c73040454012000140124617070726f76616c7320010c75363400012872656a656374696f6e7320010c7536340001187374617475736908013850726f706f73616c537461747573000118657870697279f401244f7074696f6e3c543e0001286175746f5f636c6f736519010110626f6f6c00006908083c70616c6c65745f6d756c74697369673850726f706f73616c5374617475730001141c496e76616c69640000003c4163746976654f72457870697265640001004c457865637574696f6e5375636365737366756c0002003c457865637574696f6e4661696c65640003002052656a6563746564000400006d08083c70616c6c65745f6d756c74697369671c56657273696f6e00000400080108753800007108083c70616c6c65745f6d756c7469736967144572726f72040454000164284364644d697373696e67000004c4546865206d756c7469736967206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e3c50726f706f73616c4d697373696e67000104705468652070726f706f73616c20646f6573206e6f742065786973742e344465636f64696e674572726f72000204444d756c746973696720616464726573732e244e6f5369676e6572730003042c4e6f207369676e6572732e7452657175697265645369676e6174757265734f75744f66426f756e6473000404a0546f6f20666577206f7220746f6f206d616e79207265717569726564207369676e6174757265732e284e6f74415369676e6572000504344e6f742061207369676e65722e384e6f537563684d756c7469736967000604444e6f2073756368206d756c74697369672e404e6f74456e6f7567685369676e6572730007044c4e6f7420656e6f756768207369676e6572732e344e6f6e63654f766572666c6f770008044441206e6f6e6365206f766572666c6f772e30416c7265616479566f74656400090438416c726561647920766f7465642e38416c7265616479415369676e6572000a0444416c72656164792061207369676e65722e444661696c6564546f436861726765466565000b04a0436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e484964656e746974794e6f7443726561746f72000c04c04964656e746974792070726f7669646564206973206e6f7420746865206d756c746973696727732063726561746f722e404368616e67654e6f74416c6c6f776564000d0425014368616e67696e67206d756c746973696720706172616d6574657273206e6f7420616c6c6f7765642073696e6365206d756c74697369672069732061207072696d617279206b65792e745369676e6572416c72656164794c696e6b6564546f4d756c7469736967000e0411015369676e657220697320616e206163636f756e74206b6579207468617420697320616c7265616479206173736f63696174656420776974682061206d756c74697369672e745369676e6572416c72656164794c696e6b6564546f4964656e74697479000f0415015369676e657220697320616e206163636f756e74206b6579207468617420697320616c7265616479206173736f636961746564207769746820616e206964656e746974792e505369676e657253616d6541734d756c746973696700100429015369676e657220697320746865206d756c74697369672e2020546865206d756c7469736967206163636f756e742063616e27742062652061207369676e657220746f20697473656c662e584d697373696e6743757272656e744964656e746974790011045843757272656e7420444944206973206d697373696e67344e6f745072696d6172794b6579001204f45468652066756e6374696f6e2063616e206f6e6c792062652063616c6c656420627920746865207072696d617279206b6579206f6620746865206469645c50726f706f73616c416c726561647952656a65637465640013047450726f706f73616c207761732072656a6563746564206561726c6965723c50726f706f73616c457870697265640014045050726f706f73616c2068617320657870697265645c50726f706f73616c416c726561647945786563757465640015047450726f706f73616c20776173206578656375746564206561726c6965725c4d756c74697369674d697373696e674964656e746974790016049c4d756c7469736967206973206e6f7420617474616368656420746f20616e206964656e74697479404661696c6564546f5363686564756c65001704785363686564756c696e67206f6620612070726f706f73616c206661696c7338546f6f4d616e795369676e6572730018046c4d6f7265207369676e657273207468616e2072657175697265642e045c4d756c7469736967206d6f64756c65206572726f72732e7508000004080010007908083470616c6c65745f62726964676538427269646765547844657461696c042c426c6f636b4e756d626572011000100118616d6f756e7418011c42616c616e63650001187374617475737d080138427269646765547853746174757300013c657865637574696f6e5f626c6f636b10012c426c6f636b4e756d62657200011c74785f686173682401104832353600007d08083470616c6c65745f62726964676538427269646765547853746174757300011418416273656e740000001c50656e64696e67040008010875380001001846726f7a656e0002002854696d656c6f636b65640003001c48616e646c6564000400008108000004081810008508083470616c6c65745f6272696467651c56657273696f6e00000400080108753800008908083470616c6c65745f627269646765144572726f7204045400013440436f6e74726f6c6c65724e6f74536574000004a45468652062726964676520636f6e74726f6c6c65722061646472657373206973206e6f74207365742e2442616443616c6c6572000104d8546865206f726967696e206973206e6f742074686520636f6e74726f6c6c6572206f72207468652061646d696e20616464726573732e2042616441646d696e00020490546865206f726967696e206973206e6f74207468652061646d696e20616464726573732e284e6f56616c69644364640003048c54686520726563697069656e742044494420686173206e6f2076616c6964204344442e5850726f706f73616c416c726561647948616e646c6564000404390154686520627269646765207472616e73616374696f6e2070726f706f73616c2068617320616c7265616479206265656e2068616e646c656420616e64207468652066756e6473206d696e7465642e30556e617574686f72697a656400050494556e617574686f72697a656420746f20706572666f726d20616e206f7065726174696f6e2e1846726f7a656e000604745468652062726964676520697320616c72656164792066726f7a656e2e244e6f7446726f7a656e0007046454686520627269646765206973206e6f742066726f7a656e2e2046726f7a656e547800080468546865207472616e73616374696f6e2069732066726f7a656e2e484272696467654c696d697452656163686564000904e4546865206964656e746974792773206d696e74656420746f74616c2068617320726561636865642074686520627269646765206c696d69742e204f766572666c6f77000a04ac546865206964656e746974792773206d696e74656420746f74616c20686173206f766572666c6f7765642e384469766973696f6e42795a65726f000b04cc54686520626c6f636b20696e74657276616c206475726174696f6e206973207a65726f2e2043616e6e6f74206469766964652e3054696d656c6f636b65645478000c0478546865207472616e73616374696f6e2069732074696d656c6f636b65642e008d08083870616c6c65745f7374616b696e67345374616b696e674c656467657208244163636f756e74496401001c42616c616e636501180014011473746173680001244163636f756e744964000114746f74616ccd01011c42616c616e6365000118616374697665cd01011c42616c616e6365000124756e6c6f636b696e67910801645665633c556e6c6f636b4368756e6b3c42616c616e63653e3e00013c636c61696d65645f72657761726473390401345665633c457261496e6465783e000091080000029508009508083870616c6c65745f7374616b696e672c556e6c6f636b4368756e6b041c42616c616e636501180008011476616c7565cd01011c42616c616e636500010c65726171040120457261496e64657800009908083870616c6c65745f7374616b696e672c4e6f6d696e6174696f6e7304244163636f756e7449640100000c011c74617267657473ec01385665633c4163636f756e7449643e0001307375626d69747465645f696e100120457261496e6465780001287375707072657373656419010110626f6f6c00009d08083870616c6c65745f7374616b696e6734416374697665457261496e666f0000080114696e646578100120457261496e6465780001147374617274f4012c4f7074696f6e3c7536343e0000a10800000408100000a508083870616c6c65745f7374616b696e673c457261526577617264506f696e747304244163636f756e744964010000080114746f74616c10012c526577617264506f696e74000128696e646976696475616ca908018042547265654d61703c4163636f756e7449642c20526577617264506f696e743e0000a908042042547265654d617008044b010004560110000400ad08000000ad08000002750800b108083870616c6c65745f7374616b696e671c466f7263696e67000110284e6f74466f7263696e6700000020466f7263654e657700010024466f7263654e6f6e650002002c466f726365416c7761797300030000b508000002b90800b908083870616c6c65745f7374616b696e6738556e6170706c696564536c61736808244163636f756e74496401001c42616c616e636501180014012476616c696461746f720001244163636f756e74496400010c6f776e18011c42616c616e63650001186f7468657273bd0801645665633c284163636f756e7449642c2042616c616e6365293e0001247265706f7274657273ec01385665633c4163636f756e7449643e0001187061796f757418011c42616c616e63650000bd08000002c10800c10800000408001800c508000004088d011800c9080c3870616c6c65745f7374616b696e6720736c617368696e6734536c617368696e675370616e7300001001287370616e5f696e6465781001245370616e496e6465780001286c6173745f7374617274100120457261496e6465780001486c6173745f6e6f6e7a65726f5f736c617368100120457261496e6465780001147072696f72390401345665633c457261496e6465783e0000cd080c3870616c6c65745f7374616b696e6720736c617368696e67285370616e5265636f7264041c42616c616e636501180008011c736c617368656418011c42616c616e6365000120706169645f6f757418011c42616c616e63650000d108083870616c6c65745f7374616b696e6738456c656374696f6e526573756c7408244163636f756e74496401001c42616c616e63650118000c013c656c65637465645f73746173686573ec01385665633c4163636f756e7449643e0001246578706f7375726573c10101b85665633c284163636f756e7449642c204578706f737572653c4163636f756e7449642c2042616c616e63653e293e00011c636f6d707574658901013c456c656374696f6e436f6d707574650000d508083870616c6c65745f7374616b696e6738456c656374696f6e537461747573042c426c6f636b4e756d6265720110010818436c6f736564000000104f70656e040010012c426c6f636b4e756d62657200010000d908083870616c6c65745f7374616b696e67645065726d697373696f6e65644964656e7469747950726566730000080138696e74656e6465645f636f756e7410010c75333200013472756e6e696e675f636f756e7410010c7533320000dd08083870616c6c65745f7374616b696e672052656c65617365730001203456315f305f30416e6369656e740000001856325f305f300001001856335f305f300002001856345f305f300003001856355f305f300004001856365f305f300005001856365f305f310006001856375f305f3000070000e108083870616c6c65745f7374616b696e67144572726f720404540001a8344e6f74436f6e74726f6c6c6572000004644e6f74206120636f6e74726f6c6c6572206163636f756e742e204e6f745374617368000104504e6f742061207374617368206163636f756e742e34416c7265616479426f6e64656400020460537461736820697320616c726561647920626f6e6465642e34416c726561647950616972656400030474436f6e74726f6c6c657220697320616c7265616479207061697265642e30456d7074795461726765747300040460546172676574732063616e6e6f7420626520656d7074792e44496e76616c6964536c617368496e64657800050484536c617368207265636f726420696e646578206f7574206f6620626f756e64732e44496e73756666696369656e7456616c7565000604c843616e206e6f7420626f6e6420776974682076616c7565206c657373207468616e206d696e696d756d2062616c616e63652e304e6f4d6f72654368756e6b730007049043616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b732e344e6f556e6c6f636b4368756e6b000804a043616e206e6f74207265626f6e6420776974686f757420756e6c6f636b696e67206368756e6b732e3046756e646564546172676574000904c8417474656d7074696e6720746f2074617267657420612073746173682074686174207374696c6c206861732066756e64732e48496e76616c6964457261546f526577617264000a0458496e76616c69642065726120746f207265776172642e484e6f74536f72746564416e64556e69717565000b04804974656d7320617265206e6f7420736f7274656420616e6420756e697175652e38416c7265616479436c61696d6564000c0409015265776172647320666f72207468697320657261206861766520616c7265616479206265656e20636c61696d656420666f7220746869732076616c696461746f722e7c4f6666636861696e456c656374696f6e4561726c795375626d697373696f6e000d04e0546865207375626d697474656420726573756c74206973207265636569766564206f7574206f6620746865206f70656e2077696e646f772e784f6666636861696e456c656374696f6e5765616b5375626d697373696f6e000e04fc546865207375626d697474656420726573756c74206973206e6f7420617320676f6f6420617320746865206f6e652073746f726564206f6e20636861696e2e4c536e617073686f74556e617661696c61626c65000f04cc54686520736e617073686f742064617461206f66207468652063757272656e742077696e646f77206973206d697373696e672e804f6666636861696e456c656374696f6e426f67757357696e6e6572436f756e74001004ac496e636f7272656374206e756d626572206f662077696e6e65727320776572652070726573656e7465642e6c4f6666636861696e456c656374696f6e426f67757357696e6e65720011085d014f6e65206f6620746865207375626d69747465642077696e6e657273206973206e6f7420616e206163746976652063616e646964617465206f6e20636861696e2028696e646578206973206f7574206f662072616e676534696e20736e617073686f74292e704f6666636861696e456c656374696f6e426f677573436f6d7061637400120859014572726f72207768696c65206275696c64696e67207468652061737369676e6d656e7420747970652066726f6d2074686520636f6d706163742e20546869732063616e2068617070656e20696620616e20696e646578a4697320696e76616c69642c206f72206966207468652077656967687473205f6f766572666c6f775f2e784f6666636861696e456c656374696f6e426f6775734e6f6d696e61746f7200130411014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f7273206973206e6f7420616e20616374697665206e6f6d696e61746f72206f6e20636861696e2e7c4f6666636861696e456c656374696f6e426f6775734e6f6d696e6174696f6e00140449014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e206564676520746f20776869636820746865792068617665206e6f7420766f746564206f6e20636861696e2e844f6666636861696e456c656374696f6e536c61736865644e6f6d696e6174696f6e0015085d014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e2065646765207768696368206973207375626d6974746564206265666f726520746865206c617374206e6f6e2d7a65726f50736c617368206f6620746865207461726765742e744f6666636861696e456c656374696f6e426f67757353656c66566f74650016042101412073656c6620766f7465206d757374206f6e6c79206265206f726967696e617465642066726f6d20612076616c696461746f7220746f204f4e4c59207468656d73656c7665732e644f6666636861696e456c656374696f6e426f677573456467650017044101546865207375626d697474656420726573756c742068617320756e6b6e6f776e206564676573207468617420617265206e6f7420616d6f6e67207468652070726573656e7465642077696e6e6572732e684f6666636861696e456c656374696f6e426f67757353636f7265001804150154686520636c61696d65642073636f726520646f6573206e6f74206d61746368207769746820746865206f6e6520636f6d70757465642066726f6d2074686520646174612e844f6666636861696e456c656374696f6e426f677573456c656374696f6e53697a650019047454686520656c656374696f6e2073697a6520697320696e76616c69642e3843616c6c4e6f74416c6c6f776564001a0445015468652063616c6c206973206e6f7420616c6c6f7765642061742074686520676976656e2074696d652064756520746f207265737472696374696f6e73206f6620656c656374696f6e20706572696f642e58496e636f7272656374536c617368696e675370616e73001b04b0496e636f7272656374206e756d626572206f6620736c617368696e67207370616e732070726f76696465642e34416c7265616479457869737473001c04985065726d697373696f6e65642076616c696461746f7220616c7265616479206578697374732e244e6f74457869737473001d04885065726d697373696f6e65642076616c696461746f72206e6f74206578697374732e204e6f4368616e6765001e04605570646174657320776974682073616d652076616c75652e60496e76616c696456616c696461746f724964656e74697479001f04b8476976656e20706f74656e7469616c2076616c696461746f72206964656e7469747920697320696e76616c69642e68496e76616c696456616c696461746f72436f6d6d697373696f6e0020049c56616c696461746f7220707265667320617265206e6f7420696e2076616c69642072616e67652e6453746173684964656e74697479446f65734e6f744578697374002104d456616c696461746f72206f72206e6f6d696e61746f72207374617368206964656e7469747920646f6573206e6f742065786973742e7053746173684964656e746974794e6f745065726d697373696f6e6564002204b856616c696461746f72207374617368206964656e7469747920776173206e6f74207065726d697373696f6e65642e5453746173684964656e746974794e6f744344446564002304784e6f6d696e61746f7220737461736820776173206e6f742043444465642e64486974496e74656e64656456616c696461746f72436f756e74002404bc52756e6e696e672076616c696461746f7220636f756e74206869742074686520696e74656e64656420636f756e742e98496e74656e646564436f756e744973457863656564696e67436f6e73656e7375734c696d697400250435015768656e2074686520696e74656e646564206e756d626572206f662076616c696461746f727320746f2072756e206973203e3d20322f33206f66206076616c696461746f725f636f756e74602e30426f6e64546f6f536d616c6c002604dc5768656e2074686520616d6f756e7420746f20626520626f6e646564206973206c657373207468616e20604d696e696d756d426f6e64602042616453746174650027043901496e7465726e616c20737461746520686173206265636f6d6520736f6d65686f7720636f7272757074656420616e6420746865206f7065726174696f6e2063616e6e6f7420636f6e74696e75652e38546f6f4d616e795461726765747300280494546f6f206d616e79206e6f6d696e6174696f6e207461726765747320737570706c6965642e244261645461726765740029043d0141206e6f6d696e6174696f6e207461726765742077617320737570706c69656420746861742077617320626c6f636b6564206f72206f7468657277697365206e6f7420612076616c696461746f722e04744572726f7220666f7220746865207374616b696e67206d6f64756c652ee5080c2873705f7374616b696e671c6f6666656e6365384f6666656e636544657461696c7308205265706f727465720100204f6666656e64657201c501000801206f6666656e646572c50101204f6666656e6465720001247265706f7274657273ec01345665633c5265706f727465723e0000e9080000040899012800ed08000002f10800f1080000040800f90600f50800000408f9082800f9080c1c73705f636f72651863727970746f244b65795479706549640000040038011c5b75383b20345d0000fd080c3870616c6c65745f73657373696f6e1870616c6c6574144572726f7204045400011430496e76616c696450726f6f6600000460496e76616c6964206f776e6572736869702070726f6f662e5c4e6f4173736f63696174656456616c696461746f7249640001049c4e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e344475706c6963617465644b65790002046452656769737465726564206475706c6963617465206b65792e184e6f4b657973000304a44e6f206b65797320617265206173736f63696174656420776974682074686973206163636f756e742e244e6f4163636f756e7400040419014b65792073657474696e67206163636f756e74206973206e6f74206c6976652c20736f206974277320696d706f737369626c6520746f206173736f6369617465206b6579732e04744572726f7220666f72207468652073657373696f6e2070616c6c65742e0109083870616c6c65745f6772616e6470612c53746f726564537461746504044e01100110104c6976650000003050656e64696e6750617573650801307363686564756c65645f61741001044e00011464656c61791001044e000100185061757365640002003450656e64696e67526573756d650801307363686564756c65645f61741001044e00011464656c61791001044e000300000509083870616c6c65745f6772616e6470614c53746f72656450656e64696e674368616e676508044e0110144c696d697400001001307363686564756c65645f61741001044e00011464656c61791001044e0001406e6578745f617574686f7269746965730909016c426f756e646564417574686f726974794c6973743c4c696d69743e000118666f72636564190601244f7074696f6e3c4e3e0000090910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401a901045300000400a50101185665633c543e00000d090c3870616c6c65745f6772616e6470611870616c6c6574144572726f7204045400011c2c50617573654661696c65640000080501417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665a42865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e30526573756d654661696c65640001081101417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e277420706175736564a028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e344368616e676550656e64696e67000204e8417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e1c546f6f536f6f6e000304bc43616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e60496e76616c69644b65794f776e65727368697050726f6f66000404310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f660005043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400060415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909110910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401b901045300000400150901185665633c543e00001509000002b90100190910346672616d655f737570706f727418747261697473106d69736334577261707065724f7061717565040454011d0900080071040000001d0901045400001d09084070616c6c65745f696d5f6f6e6c696e6564426f756e6465644f70617175654e6574776f726b53746174650c4c506565724964456e636f64696e674c696d697400584d756c746941646472456e636f64696e674c696d697400384164647265737365734c696d6974000008011c706565725f69642109019c5765616b426f756e6465645665633c75382c20506565724964456e636f64696e674c696d69743e00014865787465726e616c5f6164647265737365732509012d015765616b426f756e6465645665633c5765616b426f756e6465645665633c75382c204d756c746941646472456e636f64696e674c696d69743e2c204164647265737365734c696d69740a3e0000210910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401080453000004002801185665633c543e0000250910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e646564566563080454012109045300000400290901185665633c543e000029090000022109002d090c4070616c6c65745f696d5f6f6e6c696e651870616c6c6574144572726f7204045400010828496e76616c69644b6579000004604e6f6e206578697374656e74207075626c6963206b65792e4c4475706c696361746564486561727462656174000104544475706c696361746564206865617274626561742e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a0909093109082c70616c6c65745f7375646f144572726f720404540001042c526571756972655375646f0000047c53656e646572206d75737420626520746865205375646f206163636f756e7404644572726f7220666f7220746865205375646f206d6f64756c653509083070616c6c65745f6173736574485469636b6572526567697374726174696f6e0404550120000801146f776e65727c01284964656e746974794964000118657870697279f401244f7074696f6e3c553e00003909083070616c6c65745f6173736574345365637572697479546f6b656e0000100130746f74616c5f737570706c7918011c42616c616e63650001246f776e65725f6469647c01284964656e746974794964000124646976697369626c6519010110626f6f6c00012861737365745f74797065e501012441737365745479706500003d0900000408a07c00410900000408a0e101004509000004087ca0004909083070616c6c65745f61737365745841737365744f776e65727368697052656c6174696f6e00010c204e6f744f776e65640000002c5469636b65724f776e65640001002841737365744f776e6564000200004d0900000408a00102005109083070616c6c65745f617373657464436c61737369635469636b6572526567697374726174696f6e00000801246574685f6f776e65723102013c457468657265756d4164647265737300012869735f6372656174656419010110626f6f6c00005509000004087c7c00590900000408a06d07005d0900000408a0450200610900000408a04902006509083070616c6c65745f61737365741c56657273696f6e00000400080108753800006909083070616c6c65745f6173736574144572726f7204045400019830556e617574686f72697a65640000046c5468652075736572206973206e6f7420617574686f72697a65642e3c416c72656164794172636869766564000104805768656e20657874656e73696f6e20616c72656164792061726368697665642e44416c7265616479556e41726368697665640002048c5768656e20657874656e73696f6e20616c726561647920756e2d61726368697665642e5c457874656e73696f6e416c726561647950726573656e74000304805768656e20657874656e73696f6e20697320616c72656164792061646465642e4c4173736574416c7265616479437265617465640004048c54686520746f6b656e2068617320616c7265616479206265656e20637265617465642e345469636b6572546f6f4c6f6e6700050490546865207469636b6572206c656e677468206973206f76657220746865206c696d69742e385469636b65724e6f7441736369690006049c546865207469636b657220686173206e6f6e2d61736369692d656e636f6465642070617274732e5c5469636b6572416c726561647952656769737465726564000704c4546865207469636b657220697320616c7265616479207265676973746572656420746f20736f6d656f6e6520656c73652e54546f74616c537570706c7941626f76654c696d69740008049054686520746f74616c20737570706c792069732061626f766520746865206c696d69742e2c4e6f537563684173736574000904384e6f207375636820746f6b656e2e34416c726561647946726f7a656e000a047054686520746f6b656e20697320616c72656164792066726f7a656e2e284e6f74416e4f776e6572000b04984e6f7420616e206f776e6572206f662074686520746f6b656e206f6e20457468657265756d2e3c42616c616e63654f766572666c6f77000c04a8416e206f766572666c6f77207768696c652063616c63756c6174696e67207468652062616c616e63652e4c546f74616c537570706c794f766572666c6f77000d04bc416e206f766572666c6f77207768696c652063616c63756c6174696e672074686520746f74616c20737570706c792e48496e76616c69644772616e756c6172697479000e045c416e20696e76616c6964206772616e756c61726974792e244e6f7446726f7a656e000f0464546865206173736574206d7573742062652066726f7a656e2e3c496e76616c69645472616e73666572001004845472616e736665722076616c69646174696f6e20636865636b206661696c65642e4c496e73756666696369656e7442616c616e6365001104945468652073656e6465722062616c616e6365206973206e6f742073756666696369656e742e544173736574416c7265616479446976697369626c650012047c54686520746f6b656e20697320616c726561647920646976697369626c652e784d6178696d756d544d457874656e73696f6e4c696d69745265616368656400130499014e756d626572206f66205472616e73666572204d616e6167657220657874656e73696f6e7320617474616368656420746f20616e20617373657420697320657175616c20746f204d61784e756d6265724f66544d457874656e73696f6e466f7241737365742e70496e636f6d70617469626c65457874656e73696f6e56657273696f6e001404dc476976656e20736d61727420657874656e73696f6e206973206e6f7420636f6d70617469626c652077697468207468652061737365742e60496e76616c6964457468657265756d5369676e617475726500150494416e20696e76616c696420457468657265756d206045636473615369676e6174757265602e4c4e6f53756368436c61737369635469636b65720016049854686520676976656e207469636b6572206973206e6f74206120636c6173736963206f6e652e645469636b6572526567697374726174696f6e457870697265640017048c526567697374726174696f6e206f66207469636b65722068617320657870697265642e5053656e64657253616d6541735265636569766572001804845472616e736665727320746f2073656c6620617265206e6f7420616c6c6f776564244e6f53756368446f630019048854686520676976656e20446f63756d656e7420646f6573206e6f742065786973742e704d61784c656e6774684f6641737365744e616d654578636565646564001a04bc4d6178696d756d206c656e677468206f66206173736574206e616d6520686173206265656e2065786365656465642e8446756e64696e67526f756e644e616d654d61784c656e6774684578636565646564001b04ec4d6178696d756d206c656e677468206f66207468652066756e64696e6720726f756e64206e616d6520686173206265656e2065786365656465642e58496e76616c696441737365744964656e746966696572001c048c536f6d65206041737365744964656e746966696572602077617320696e76616c69642e84496e766573746f72556e697175656e657373436c61696d4e6f74416c6c6f776564001d04e8496e766573746f7220556e697175656e65737320636c61696d7320617265206e6f7420616c6c6f77656420666f7220746869732061737365742e60496e76616c6964437573746f6d4173736574547970654964001e0470496e76616c69642060437573746f6d4173736574547970654964602e8841737365744d657461646174614e616d654d61784c656e6774684578636565646564001f0405014d6178696d756d206c656e677468206f6620746865206173736574206d657461646174612074797065206e616d6520686173206265656e2065786365656465642e8c41737365744d6574616461746156616c75654d61784c656e6774684578636565646564002004f44d6178696d756d206c656e677468206f6620746865206173736574206d657461646174612076616c756520686173206265656e2065786365656465642e9441737365744d65746164617461547970654465664d61784c656e67746845786365656465640021041d014d6178696d756d206c656e677468206f6620746865206173736574206d65746164617461207479706520646566696e6974696f6e20686173206265656e2065786365656465642e6441737365744d657461646174614b657949734d697373696e67002204784173736574204d65746164617461206b6579206973206d697373696e672e6841737365744d6574616461746156616c756549734c6f636b65640023047c4173736574204d657461646174612076616c7565206973206c6f636b65642e8841737365744d657461646174614c6f63616c4b6579416c7265616479457869737473002404cc4173736574204d65746164617461204c6f63616c207479706520616c72656164792065786973747320666f722061737365742e8c41737365744d65746164617461476c6f62616c4b6579416c7265616479457869737473002504a84173736574204d6574616461746120476c6f62616c207479706520616c7265616479206578697374732e006d090000040871027c0071090c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e1c56657273696f6e000004000801087538000075090c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e144572726f720404540001383043414e6f7442656e65666974000004d441206361706974616c20646973747269627574696f6e20776173206d61646520666f722061206e6f6e2d62656e656669742043412e34416c7265616479457869737473000104a84120646973747269627574696f6e20616c72656164792065786973747320666f7220746869732043412e4c4578706972794265666f72655061796d656e7400020829014120646973747269627574696f6e732070726f766964656420657870697279206461746520776173207374726963746c79206265666f726520697473207061796d656e7420646174652e2101496e206f7468657220776f7264732c2065766572797468696e6720746f206469737472696275746520776f756c6420696d6d6564696174656c7920626520666f726665697465642e44446973747269627574696e674173736574000308f043757272656e63792074686174206973206469737472696275746564206973207468652073616d65206173207468652043412773207469636b65722e690143616c6c696e67206167656e7420697320617474656d7074696e67206120666f726d206f662073746f636b2073706c69742c207768696368206973206e6f742077686174207468652065787472696e73696320697320666f722e44486f6c646572416c726561647950616964000404d454686520746f6b656e20686f6c6465722068617320616c7265616479206265656e20706169642074686569722062656e656669742e484e6f53756368446973747269627574696f6e000504c441206361706974616c20646973747269627574696f6e20646f65736e277420657869737420666f7220746869732043412e5843616e6e6f74436c61696d4265666f726553746172740006046101446973747269627574696f6e20616c6c6f746d656e742063616e6e6f7420626520636c61696d6564206173207468652063757272656e742074696d65206973206265666f72652073746172742d6f662d7061796d656e742e5843616e6e6f74436c61696d41667465724578706972790007046901446973747269627574696f6e27732065787069727920686173207061737365642e204449442063616e6e6f7420636c61696d20616e796d6f726520616e642068617320666f72666569746564207468652062656e65666974732e8042616c616e6365506572536861726550726f647563744f766572666c6f77656400080429014d756c7469706c69636174696f6e206f66207468652062616c616e636520776974682074686520706572207368617265207061796f757420616d6f756e74206f766572666c6f7765642e584e6f74446973747269627574696f6e43726561746f72000904c0444944206973206e6f7420746865206f6e652077686f20637265617465642074686520646973747269627574696f6e2e40416c72656164795265636c61696d6564000a04d44449442077686f20637265617465642074686520646973747269627574696f6e20616c726561647920646964207265636c61696d2e284e6f7445787069726564000b04f0446973747269627574696f6e20686164206e6f742065787069726564207965742c206f722074686572652773206e6f2065787069727920646174652e4c446973747269627574696f6e53746172746564000c0401014120646973747269627574696f6e20686173206265656e206163746976617465642c20617320607061796d656e745f6174203c3d206e6f776020686f6c64732e6c496e73756666696369656e7452656d61696e696e67416d6f756e74000d042d014120646973747269627574696f6e2068617320696e73756666696369656e742072656d61696e696e6720616d6f756e74206f662063757272656e637920746f20646973747269627574652e00790900000408a08902007d090000040879097c00810900000289020085090000028d0200890900000408a09d02008d090c3070616c6c65745f617373657428636865636b706f696e741c56657273696f6e000004000801087538000091090c3070616c6c65745f617373657428636865636b706f696e74144572726f72040454000114384e6f537563685363686564756c65000004cc4120636865636b706f696e74207363686564756c6520646f6573206e6f7420657869737420666f72207468652061737365742e505363686564756c654e6f7452656d6f7661626c650001041d014120636865636b706f696e74207363686564756c65206973206e6f742072656d6f7661626c6520617320607265665f636f756e74287363686564756c655f696429203e2030602e744661696c6564546f436f6d707574654e657874436865636b706f696e74000208984661696c656420746f20636f6d7075746520746865206e65787420636865636b706f696e742ed0546865207363686564756c6520646f6573206e6f74206861766520616e79207570636f6d696e6720636865636b706f696e74732e605363686564756c654475726174696f6e546f6f53686f7274000304bc546865206475726174696f6e206f662061207363686564756c6520706572696f6420697320746f6f2073686f72742e4c5363686564756c6573546f6f436f6d706c6578000408d054686520736574206f66207363686564756c65732074616b656e20746f6765746865722061726520746f6f20636f6d706c65782ef8466f72206578616d706c652c20746865792061726520746f6f206d616e792c206f722074686579206f636375727320746f6f206672657175656e746c792e0095090c4c706f6c796d6573685f7072696d69746976657348636f6d706c69616e63655f6d616e616765723c4173736574436f6d706c69616e6365000008011870617573656419010110626f6f6c000130726571756972656d656e7473d10201685665633c436f6d706c69616e6365526571756972656d656e743e00009909086470616c6c65745f636f6d706c69616e63655f6d616e616765721c56657273696f6e00000400080108753800009d09086470616c6c65745f636f6d706c69616e63655f6d616e61676572144572726f7204045400011830556e617574686f72697a65640000045c55736572206973206e6f7420617574686f72697a65642e2c4469644e6f74457869737400010434446964206e6f7420657869737478496e76616c6964436f6d706c69616e6365526571756972656d656e7449640002049c436f6d706c69616e636520726571756972656d656e7420696420646f65736e277420657869737484496e636f72726563744f7065726174696f6e4f6e547275737465644973737565720003049c4973737565722065786973742062757420747279696e6720746f2061646420697420616761696e7c4475706c6963617465436f6d706c69616e6365526571756972656d656e7473000404b0546865726520617265206475706c696361746520636f6d706c69616e636520726571756972656d656e74732e7c436f6d706c69616e6365526571756972656d656e74546f6f436f6d706c6578000504110154686520776f7273742063617365207363656e6172696f206f662074686520636f6d706c69616e636520726571756972656d656e7420697320746f6f20636f6d706c657800a10900000408a0750200a509086070616c6c65745f636f72706f726174655f616374696f6e731c56657273696f6e0000040008010875380000a909086070616c6c65745f636f72706f726174655f616374696f6e73144572726f7204045400013048417574684e6f744341415472616e73666572000004050154686520617574686f72697a6174696f6e2074797065206973206e6f7420746f207472616e73666572207468652043414120746f20616e6f74686572204449442e3844657461696c73546f6f4c6f6e67000104d8546865206064657461696c7360206f66206120434120657863656564656420746865206d617820616c6c6f776564206c656e6774682e3c4475706c69636174654469645461780002082101412077697468686f6c64696e6720746178206f7665727269646520666f72206120676976656e204449442077617320737065636966696564206d6f7265207468616e206f6e63652e050154686520636861696e207265667573656420746f206d616b6520612063686f6963652c20616e642068656e63652074686572652077617320616e206572726f722e3c546f6f4d616e794469645461786573000304c8546f6f206d616e792077697468686f6c64696e6720746178206f76657272696465732077657265207370656369666965642e40546f6f4d616e79546172676574496473000404e4546f6f206d616e79206964656e74697469657320696e20605461726765744964656e746974696573602077657265207370656369666965642e484e6f53756368436865636b706f696e74496400050405014f6e204341206372656174696f6e2c206120636865636b706f696e74204944207761732070726f766964656420776869636820646f65736e27742065786973742e204e6f537563684341000604a44120434120776974682074686520676976656e2060434149646020646964206e6f742065786973742e304e6f5265636f7264446174650007048854686520434120646964206e6f7420686176652061207265636f726420646174652e505265636f7264446174654166746572537461727400080cdc412043412773207265636f7264206461746520776173207374726963746c792061667465722074686520227374617274222074696d652c8c7768657265202273746172742220697320636f6e7465787420646570656e64656e742e8101466f72206578616d706c652c20697420636f756c6420626520746865207374617274206f6620612062616c6c6f742c206f72207468652073746172742d6f662d7061796d656e7420696e206361706974616c20646973747269627574696f6e2e5c4465636c4461746541667465725265636f726444617465000904ec412043412773206465636c61726174696f6e206461746520776173207374726963746c7920616674657220697473207265636f726420646174652e404465636c44617465496e467574757265000a04b4412043412773206465636c61726174696f6e2064617465206f636375727320696e20746865206675747572652e3c4e6f74546172676574656442794341000b046c434120646f6573206e6f742074617267657420746865204449442e00ad090000021800b1090c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74144572726f720404540001382c43414e6f744e6f74696365000004e04120636f72706f726174652062616c6c6f7420776173206d61646520666f722061206e6f6e20604973737565724e6f74696365602043412e34416c7265616479457869737473000104b84120636f72706f726174652062616c6c6f7420616c72656164792065786973747320666f7220746869732043412e304e6f5375636842616c6c6f74000204b44120636f72706f726174652062616c6c6f7420646f65736e277420657869737420666f7220746869732043412e3453746172744166746572456e6400030411014120636f72706f726174652062616c6c6f7427732073746172742074696d6520776173207374726963746c79206166746572207468652062616c6c6f74277320656e642e2c4e6f774166746572456e640004040d014120636f72706f726174652062616c6c6f74277320656e642074696d6520776173207374726963746c79206265666f7265207468652063757272656e742074696d652e5c4e756d6265724f6643686f696365734f766572666c6f770005043901496620736f6d65206d6f74696f6e20696e206120636f72706f726174652062616c6c6f7420686173206d6f72652063686f69636573207468616e20776f756c642066697420696e2060753136602e50566f74696e67416c7265616479537461727465640006040101566f74696e67207374617274656420616c72656164792e20416d656e64696e6720612062616c6c6f74206973206e6f206c6f6e67657220706f737369626c652e40566f74696e674e6f745374617274656400070468566f74696e67206861736e27742073746172746564207965742e48566f74696e67416c7265616479456e64656400080454566f74696e6720656e64656420616c72656164792e3857726f6e67566f7465436f756e74000904150150726f7669646564206c697374206f662062616c616e63657320646f6573206e6f74206d617463682074686520746f74616c206e756d626572206f662063686f696365732e44496e73756666696369656e74566f746573000a043d01566f74696e6720706f7765722075736564206279206120444944206f6e2061206d6f74696f6e2065786365656473207468617420776869636820697320617661696c61626c6520746f207468656d2e444e6f5375636852435646616c6c6261636b000b04bc546865205243562066616c6c6261636b206f6620736f6d652063686f69636520646f6573206e6f742065786973742e3052435653656c664379636c65000c04b4546865205243562066616c6c6261636b20706f696e747320746f20746865206f726967696e2063686f6963652e345243564e6f74416c6c6f776564000d048c524356206973206e6f7420616c6c6f77656420666f7220746869732062616c6c6f742e00b509084870616c6c65745f7065726d697373696f6e73144572726f7204045400010448556e617574686f72697a656443616c6c6572000004ec5468652063616c6c6572206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e00b909082c70616c6c65745f7069707330506970734d65746164617461042c426c6f636b4e756d62657201100018010869644d030114506970496400010c75726c5102012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e510301584f7074696f6e3c5069704465736372697074696f6e3e000128637265617465645f617410012c426c6f636b4e756d62657200014c7472616e73616374696f6e5f76657273696f6e10010c7533320001186578706972793901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0000bd09000004084d030000c109082c70616c6c65745f706970732c4465706f736974496e666f04244163636f756e7449640100000801146f776e65720001244163636f756e744964000118616d6f756e7418011c42616c616e63650000c509082c70616c6c65745f706970730c506970082050726f706f73616c01d105244163636f756e74496401000010010869644d030114506970496400012070726f706f73616cd105012050726f706f73616c00011473746174655d03013450726f706f73616c537461746500012070726f706f7365724503014c50726f706f7365723c4163636f756e7449643e0000c909082c70616c6c65745f7069707330566f74696e67526573756c740000100128617965735f636f756e7410010c753332000128617965735f7374616b6518011c42616c616e63650001286e6179735f636f756e7410010c7533320001286e6179735f7374616b6518011c42616c616e63650000cd09082c70616c6c65745f7069707310566f74650000080019010110626f6f6c000018011c42616c616e63650000d109082c70616c6c65745f7069707340536e617073686f744d65746164617461082c426c6f636b4e756d6265720110244163636f756e7449640100000c0128637265617465645f617410012c426c6f636b4e756d62657200011c6d6164655f62790001244163636f756e744964000108696461030128536e617073686f7449640000d509082c70616c6c65745f706970731c56657273696f6e0000040008010875380000d909082c70616c6c65745f70697073144572726f720404540001488452657363686564756c654e6f74427952656c65617365436f6f7264696e61746f7200000431014f6e6c79207468652047432072656c6561736520636f6f7264696e61746f7220697320616c6c6f77656420746f2072657363686564756c652070726f706f73616c20657865637574696f6e2e404e6f7446726f6d436f6d6d756e697479000108ec54686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2ecc5468652070726f706f73616c206d7573742062652066726f6d2074686520636f6d6d756e6974792c206275742069736e27742e384e6f744279436f6d6d6974746565000208ec54686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2eb45468652070726f706f73616c206d75737420626520627920636f6d6d756e6974792c206275742069736e27742e44546f6f4d616e794163746976655069707300030829015468652063757272656e74206e756d626572206f6620616374697665202870656e64696e67207c207363686564756c65642920504950732065786365656420746865206d6178696d756d9c616e64207468652070726f706f73616c206973206e6f74206279206120636f6d6d69747465652e40496e636f72726563744465706f7369740004049c50726f706f7365722073706563696669657320616e20696e636f7272656374206465706f7369744c496e73756666696369656e744465706f736974000504b450726f706f7365722063616e2774206166666f726420746f206c6f636b206d696e696d756d206465706f736974384e6f5375636850726f706f73616c000604705468652070726f706f73616c20646f6573206e6f742065786973742e4c4e6f7441436f6d6d69747465654d656d626572000704844e6f742070617274206f6620676f7665726e616e636520636f6d6d69747465652e60496e76616c6964467574757265426c6f636b4e756d626572000804d85768656e206120626c6f636b206e756d626572206973206c657373207468616e2063757272656e7420626c6f636b206e756d6265722e544e756d6265724f66566f74657345786365656465640009047c5768656e206e756d626572206f6620766f746573206f766572666c6f77732e685374616b65416d6f756e744f66566f7465734578636565646564000a04985768656e207374616b6520616d6f756e74206f66206120766f7465206f766572666c6f77732e584d697373696e6743757272656e744964656e74697479000b044c4d697373696e672063757272656e742044494458496e636f727265637450726f706f73616c5374617465000c049050726f706f73616c206973206e6f7420696e2074686520636f72726563742073746174653443616e6e6f74536b6970506970000d04fc5768656e20656e616374696e6720736e617073686f7420726573756c74732c20616e20756e736b69707061626c65205049502077617320736b69707065642e58536e617073686f74526573756c74546f6f4c61726765000e041501547269656420746f20656e61637420726573756c747320666f722074686520736e617073686f74207175657565206f766572666c6f77696e6720697473206c656e6774682e48536e617073686f7449644d69736d61746368000f045d01547269656420746f20656e61637420726573756c7420666f7220504950207769746820696420646966666572656e742066726f6d20746861742061742074686520706f736974696f6e20696e207468652071756575652e705363686564756c656450726f706f73616c446f65736e744578697374001004fc457865637574696f6e206f662061207363686564756c65642070726f706f73616c206661696c65642062656361757365206974206973206d697373696e672e6c50726f706f73616c4e6f74496e5363686564756c65645374617465001104fc412070726f706f73616c2074686174206973206e6f7420696e2061207363686564756c65642073746174652063616e6e6f742062652065786563757465642e00dd09000004087ce000e109000004087c850300e50900000408d8a000e909000004087cd800ed09084070616c6c65745f706f7274666f6c696f1c56657273696f6e0000040008010875380000f109084070616c6c65745f706f7274666f6c696f144572726f7204045400012454506f7274666f6c696f446f65734e6f7445786973740000047054686520706f7274666f6c696f20646f65736e27742065786973742e70496e73756666696369656e74506f7274666f6c696f42616c616e63650001049c496e73756666696369656e742062616c616e636520666f722061207472616e73616374696f6e2e6844657374696e6174696f6e497353616d65506f7274666f6c696f000204e854686520736f7572636520616e642064657374696e6174696f6e20706f7274666f6c696f732073686f756c6420626520646966666572656e742e64506f7274666f6c696f4e616d65416c7265616479496e557365000304310154686520706f7274666f6c696f20636f756c646e27742062652072656e616d65642062656361757365207468652063686f73656e206e616d6520697320616c726561647920696e207573652e945365636f6e646172794b65794e6f74417574686f72697a6564466f72506f7274666f6c696f000404fc546865207365636f6e64617279206b6579206973206e6f7420617574686f72697a656420746f206163636573732074686520706f7274666f6c696f2873292e54556e617574686f72697a6564437573746f6469616e000504f454686520706f72666f6c696f277320637573746f6479206973207769746820736f6d656f6e65206f74686572207468616e207468652063616c6c65722e60496e73756666696369656e74546f6b656e734c6f636b6564000604bc43616e206e6f7420756e6c6f636b206d6f726520746f6b656e73207468616e207768617420617265206c6f636b656444506f7274666f6c696f4e6f74456d707479000704bc54686520706f7274666f6c696f207374696c6c2068617320736f6d652061737365742062616c616e6365206c6566746c446966666572656e744964656e74697479506f7274666f6c696f73000804b454686520706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e74697469657300f509084c70616c6c65745f70726f746f636f6c5f666565144572726f7204045400010c68496e73756666696369656e744163636f756e7442616c616e6365000004b0496e73756666696369656e74206163636f756e742062616c616e636520746f2070617920746865206665652e4c556e48616e646c6564496d62616c616e636573000104884e6f742061626c6520746f2068616e646c65642074686520696d62616c616e63657368496e73756666696369656e745375627369647942616c616e6365000204b0496e73756666696369656e7420737562736964792062616c616e636520746f2070617920746865206665652e00f909000002fd0900fd0904184f7074696f6e04045401010a0108104e6f6e6500000010536f6d650400010a0000010000010a084070616c6c65745f7363686564756c65722c5363686564756c65645632101043616c6c01d1052c426c6f636b4e756d62657201103450616c6c6574734f726967696e01050a244163636f756e7449640100001401206d617962655f69646102013c4f7074696f6e3c5665633c75383e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cd105011043616c6c0001386d617962655f706572696f646963c90701944f7074696f6e3c7363686564756c653a3a506572696f643c426c6f636b4e756d6265723e3e0001186f726967696e050a013450616c6c6574734f726967696e0000050a0c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d65304f726967696e43616c6c65720001141873797374656d0400090a01746672616d655f73797374656d3a3a4f726967696e3c52756e74696d653e00000044506f6c796d657368436f6d6d697474656504000d0a01f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365313e00090048546563686e6963616c436f6d6d69747465650400110a01f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365333e000b004055706772616465436f6d6d69747465650400150a01f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365343e000d0010566f69640400190a01110173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a566f696400040000090a08306672616d655f73797374656d245261774f726967696e04244163636f756e7449640100010c10526f6f74000000185369676e656404000001244163636f756e744964000100104e6f6e65000200000d0a084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449012d01010420456e646f7273656400000000110a084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449014901010420456e646f7273656400000000150a084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449015901010420456e646f7273656400000000190a081c73705f636f726510566f6964000100001d0a084070616c6c65745f7363686564756c65722052656c656173657300010808563100000008563200010000210a0c4070616c6c65745f7363686564756c65721870616c6c6574144572726f72040454000110404661696c6564546f5363686564756c65000004644661696c656420746f207363686564756c6520612063616c6c204e6f74466f756e640001047c43616e6e6f742066696e6420746865207363686564756c65642063616c6c2e5c546172676574426c6f636b4e756d626572496e50617374000204a4476976656e2074617267657420626c6f636b206e756d62657220697320696e2074686520706173742e4852657363686564756c654e6f4368616e6765000304f052657363686564756c65206661696c6564206265636175736520697420646f6573206e6f74206368616e6765207363686564756c65642074696d652e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909250a084470616c6c65745f736574746c656d656e741456656e7565000008011c63726561746f727c01284964656e74697479496400012876656e75655f74797065ad03012456656e7565547970650000290a00000408a503b103002d0a00000408a5030000310a084470616c6c65745f736574746c656d656e742c496e737472756374696f6e08184d6f6d656e7401202c426c6f636b4e756d6265720110001c0138696e737472756374696f6e5f6964b1030134496e737472756374696f6e496400012076656e75655f6964a503011c56656e75654964000118737461747573350a0144496e737472756374696f6e53746174757300013c736574746c656d656e745f74797065b503016c536574746c656d656e74547970653c426c6f636b4e756d6265723e000128637265617465645f6174f401384f7074696f6e3c4d6f6d656e743e00012874726164655f64617465f401384f7074696f6e3c4d6f6d656e743e00012876616c75655f64617465f401384f7074696f6e3c4d6f6d656e743e0000350a084470616c6c65745f736574746c656d656e7444496e737472756374696f6e53746174757300010c1c556e6b6e6f776e0000001c50656e64696e67000100184661696c656400020000390a00000408b103c103003d0a084470616c6c65745f736574746c656d656e74244c656753746174757304244163636f756e7449640100010c4050656e64696e67546f6b656e4c6f636b00000040457865637574696f6e50656e64696e6700010050457865637574696f6e546f4265536b697070656408000001244163636f756e744964000020010c75363400020000410a00000408b103d800450a084470616c6c65745f736574746c656d656e744441666669726d6174696f6e53746174757300010c1c556e6b6e6f776e0000001c50656e64696e670001002041666669726d656400020000490a00000408d8b103004d0a00000408a0a50300510a084470616c6c65745f736574746c656d656e741c56657273696f6e0000040008010875380000550a084470616c6c65745f736574746c656d656e74144572726f7204045400016430496e76616c696456656e75650000045456656e756520646f6573206e6f742065786973742e30556e617574686f72697a6564000104a853656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e3c4e6f50656e64696e6741666669726d000204d04e6f2070656e64696e672061666669726d6174696f6e20666f72207468652070726f766964656420696e737472756374696f6e2e58496e737472756374696f6e4e6f7441666669726d656400030488496e737472756374696f6e20686173206e6f74206265656e2061666669726d65642e54496e737472756374696f6e4e6f7450656e64696e67000404b850726f766964656420696e737472756374696f6e206973206e6f742070656e64696e6720657865637574696f6e2e50496e737472756374696f6e4e6f744661696c6564000504b850726f766964656420696e737472756374696f6e206973206e6f74206661696c696e6720657865637574696f6e2e344c65674e6f7450656e64696e670006049850726f7669646564206c6567206973206e6f742070656e64696e6720657865637574696f6e2e48556e617574686f72697a65645369676e6572000704985369676e6572206973206e6f7420617574686f72697a6564206279207468652076656e75652e5452656365697074416c7265616479436c61696d6564000804545265636569707420616c726561647920757365642e44526563656970744e6f74436c61696d65640009045452656365697074206e6f742075736564207965742e44556e617574686f72697a656456656e7565000a04a456656e756520646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e484661696c6564546f4c6f636b546f6b656e73000b0421015768696c652061666669726d696e6720746865207472616e736665722c2073797374656d206661696c656420746f206c6f636b207468652061737365747320696e766f6c7665642e44496e737472756374696f6e4661696c6564000c0478496e737472756374696f6e206661696c656420746f20657865637574652e5c496e737472756374696f6e4461746573496e76616c6964000d0474496e737472756374696f6e2068617320696e76616c696420646174657370496e737472756374696f6e536574746c65426c6f636b506173736564000e04a8496e737472756374696f6e27732074617267657420736574746c6520626c6f636b20726561636865642e40496e76616c69645369676e6174757265000f04784f6666636861696e207369676e617475726520697320696e76616c69642e4853616d6553656e64657252656365697665720010048453656e64657220616e6420726563656976657220617265207468652073616d652e44506f7274666f6c696f4d69736d617463680011042501506f7274666f6c696f20696e207265636569707420646f6573206e6f74206d61746368207769746820706f7274666f6c696f732070726f76696465642062792074686520757365722e44536574746c654f6e50617374426c6f636b00120461015468652070726f766964656420736574746c656d656e7420626c6f636b206e756d62657220697320696e20746865207061737420616e642063616e6e6f74206265207573656420627920746865207363686564756c65722e4c4e6f506f7274666f6c696f50726f76696465640013043d01506f7274666f6c696f20626173656420616374696f6e732072657175697265206174206c65617374206f6e6520706f7274666f6c696f20746f2062652070726f766964656420617320696e7075742e6c556e657870656374656441666669726d6174696f6e53746174757300140445015468652063757272656e7420696e737472756374696f6e2061666669726d6174696f6e2073746174757320646f6573206e6f7420737570706f7274207468652072657175657374656420616374696f6e2e404661696c6564546f5363686564756c650015048c5363686564756c696e67206f6620616e20696e737472756374696f6e206661696c732e404c6567436f756e74546f6f536d616c6c001604a5014c65677320636f756e742073686f756c64206d61746368657320776974682074686520746f74616c206e756d626572206f66206c65677320696e20776869636820676976656e20706f7274666f6c696f20616374206173206066726f6d5f706f7274666f6c696f602e48556e6b6e6f776e496e737472756374696f6e00170474496e737472756374696f6e2073746174757320697320756e6b6e6f776e64496e737472756374696f6e486173546f6f4d616e794c656773001804c44d6178696d756d206c65677320746861742063616e20626520696e20612073696e676c6520696e737472756374696f6e2e04844572726f727320666f722074686520536574746c656d656e74206d6f64756c652e590a000004085d0af103005d0a0c4c706f6c796d6573685f7072696d697469766573287374617469737469637328537461743173744b657900000801146173736574d1030128417373657453636f7065000124737461745f74797065d903012053746174547970650000610a0c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e63655c41737365745472616e73666572436f6d706c69616e6365000008011870617573656419010110626f6f6c000130726571756972656d656e7473ed07016c42547265655365743c5472616e73666572436f6e646974696f6e3e0000650a000004080d047c00690a084470616c6c65745f737461746973746963731c56657273696f6e00000400080108753800006d0a084470616c6c65745f73746174697374696373144572726f720404540001183c496e76616c69645472616e73666572000004545472616e73666572206e6f7420616c6c6f7765642e3c53746174547970654d697373696e67000104605374617454797065206973206e6f7420656e61626c65642e8453746174547970654e656564656442795472616e73666572436f6e646974696f6e000204a05374617454797065206973206e6565646564206279205472616e73666572436f6e646974696f6e2e6443616e6e6f7452656d6f76655374617454797065496e557365000304a84120537461747479706520697320696e2075736520616e642063616e27742062652072656d6f7665642e5053746174547970654c696d697452656163686564000404f4546865206c696d6974206f662053746174547970657320616c6c6f77656420666f7220616e20617373657420686173206265656e20726561636865642e745472616e73666572436f6e646974696f6e4c696d6974526561636865640005041901546865206c696d6974206f66205472616e73666572436f6e646974696f6e7320616c6c6f77656420666f7220616e20617373657420686173206265656e20726561636865642e046453746174697374696373206d6f64756c65206572726f72732e710a00000408a0190400750a082870616c6c65745f73746f144572726f7204045400013030556e617574686f72697a6564000004a853656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e204f766572666c6f770001048c416e2061726974686d65746963206f7065726174696f6e206f766572666c6f7765642e6c496e73756666696369656e74546f6b656e7352656d61696e696e67000204804e6f7420656e6f75676820746f6b656e73206c65667420666f722073616c652e4846756e647261697365724e6f74466f756e640003045446756e64726169736572206e6f7420666f756e642e4446756e647261697365724e6f744c6976650004049c46756e64726169736572206973206569746865722066726f7a656e206f722073746f707065642e4046756e64726169736572436c6f736564000504ac46756e6472616973657220686173206265656e20636c6f7365642f73746f7070656420616c72656164792e4446756e6472616973657245787069726564000604d0496e746572616374696e67207769746820612066756e6472616973657220706173742074686520656e6420604d6f6d656e74602e30496e76616c696456656e756500070468416e20696e76616c69642076656e75652070726f76696465642e44496e76616c6964507269636554696572730008042501416e20696e646976696475616c20707269636520746965722077617320696e76616c6964206f72206120736574206f662070726963652074696572732077617320696e76616c69642e54496e76616c69644f66666572696e6757696e646f770009045d0157696e646f77202873746172742074696d652c20656e642074696d65292068617320696e76616c696420706172616d65746572732c20652e672073746172742074696d6520697320616674657220656e642074696d652e404d617850726963654578636565646564000a04bc5072696365206f662074686520696e766573746d656e7420657863656564656420746865206d61782070726963652e58496e766573746d656e74416d6f756e74546f6f4c6f77000b04e8496e766573746d656e7420616d6f756e74206973206c6f776572207468616e206d696e696d756d20696e766573746d656e7420616d6f756e742e04844572726f727320666f722074686520536574746c656d656e74206d6f64756c652e790a083c70616c6c65745f7472656173757279144572726f720404540001044c496e73756666696369656e7442616c616e63650000047850726f706f73657227732062616c616e636520697320746f6f206c6f772e04784572726f7220666f7220746865207472656173757279206d6f64756c652e7d0a083870616c6c65745f7574696c697479144572726f7204045400010c40496e76616c69645369676e6174757265000004744f6666636861696e207369676e617475726520697320696e76616c6964405461726765744364644d697373696e670001048054617267657420646f6573206e6f74206861766520612076616c69642043444430496e76616c69644e6f6e636500020c6850726f7669646564206e6f6e63652077617320696e76616c696411014966207468652070726f7669646564206e6f6e6365203c2063757272656e74206e6f6e63652c207468652063616c6c2077617320616c72656164792065786563757465645d014966207468652070726f7669646564206e6f6e6365203e2063757272656e74206e6f6e63652c207468652063616c6c287329206265666f7265207468652063757272656e74206661696c656420746f206578656375746500810a082c70616c6c65745f62617365144572726f720404540001081c546f6f4c6f6e6700000880457863656564656420612067656e65726963206c656e677468206c696d69742e1d01546865206c696d697420636f756c6420626520666f7220616e7920736f7274206f66206c69737473206f66207468696e67732c20696e636c7564696e67206120737472696e672e3c436f756e7465724f766572666c6f77000118b85468652073657175656e636520636f756e74657220666f7220736f6d657468696e67206f766572666c6f7765642e001d015768656e20746869732068617070656e7320646570656e6473206f6e20652e672e2c20746865206361706163697479206f6620746865206964656e74696669657220747970652e3901466f72206578616d706c652c207765206d69676874206861766520607075622073747275637420506970496428753332293b602c207769746820607533323a3a4d4158602063617061636974792e5901496e2070726163746963652c207468657365206572726f72732077696c6c206e657665722068617070656e20627574206e6f20636f646520706174682073686f756c6420726573756c7420696e20612070616e69632cfc736f20746865736520636f726e6572206361736573206e65656420746f20626520636f7665726564207769746820616e206572726f722076617269616e742e00850a00000408a0150100890a085870616c6c65745f65787465726e616c5f6167656e7473144572726f72040454000118204e6f537563684147000004ec416e20414720776974682074686520676976656e2060414749646020646964206e6f7420657869737420666f722074686520605469636b6572602e44556e617574686f72697a65644167656e74000104e8546865206167656e74206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e38416c7265616479416e4167656e74000204e85468652070726f766964656420606167656e746020697320616c726561647920616e206167656e7420666f722074686520605469636b6572602e284e6f74416e4167656e74000304d85468652070726f766964656420606167656e7460206973206e6f7420616e206167656e7420666f722074686520605469636b6572602e5452656d6f76696e674c61737446756c6c4167656e74000408e054686973206167656e7420697320746865206c6173742066756c6c206f6e652c20616e642069742773206265696e672072656d6f7665642c686d616b696e6720746865206173736574206f727068616e65642e845365636f6e646172794b65794e6f74417574686f72697a6564466f7241737365740005041d015468652063616c6c65722773207365636f6e64617279206b657920646f6573206e6f74206861766520746865207265717569726564206173736574207065726d697373696f6e2e008d0a083870616c6c65745f72656c617965721c53756273696479040c416363010000080128706179696e675f6b657900010c41636300012472656d61696e696e6718011c42616c616e63650000910a083870616c6c65745f72656c61796572144572726f7204045400011c44557365724b65794364644d697373696e67000004cc5468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e4c506179696e674b65794364644d697373696e67000104cc5468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e2c4e6f506179696e674b6579000204ac5468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e304e6f74506179696e674b6579000304b05468652060757365725f6b65796020686173206120646966666572656e742060706179696e675f6b6579602e644e6f74417574686f72697a6564466f72506179696e674b6579000404b8546865207369676e6572206973206e6f7420617574686f72697a656420666f722060706179696e675f6b6579602e5c4e6f74417574686f72697a6564466f72557365724b6579000504b0546865207369676e6572206973206e6f7420617574686f72697a656420666f722060757365725f6b6579602e204f766572666c6f77000604b85468652072656d61696e696e6720504f4c595820666f722060757365725f6b657960206f766572666c6f7765642e00950a083870616c6c65745f72657761726473144572726f7204045400011044556e6b6e6f776e49746e41646472657373000004cc4164647265737320776173206e6f7420666f756e6420696e20746865206c697374206f662049746e206164647265737365732e5c49746e526577617264416c7265616479436c61696d65640001047c49746e207265776172642077617320616c726561647920636c61696d65642e40496e76616c69645369676e61747572650002047c50726f7669646564207369676e61747572652077617320696e76616c69642e54556e61626c65546f436f7665727442616c616e6365000304b042616c616e63652063616e206e6f7420626520636f6e76657274656420746f2061207072696d69746976652e00990a084470616c6c65745f746573745f7574696c73144572726f72040454000100009d0a102873705f72756e74696d651c67656e657269634c756e636865636b65645f65787472696e73696348556e636865636b656445787472696e736963101c416464726573730139051043616c6c01d105245369676e617475726501d90714457874726101a10a00040028000000a10a00000420a50aa90aad0ab10ab90abd0ac50ac90a00a50a10306672616d655f73797374656d28657874656e73696f6e7348636865636b5f737065635f76657273696f6e40436865636b5370656356657273696f6e04045400000000a90a10306672616d655f73797374656d28657874656e73696f6e7340636865636b5f74785f76657273696f6e38436865636b547856657273696f6e04045400000000ad0a10306672616d655f73797374656d28657874656e73696f6e7334636865636b5f67656e6573697330436865636b47656e6573697304045400000000b10a10306672616d655f73797374656d28657874656e73696f6e733c636865636b5f6d6f7274616c69747938436865636b4d6f7274616c69747904045400000400b50a010c4572610000b50a102873705f72756e74696d651c67656e657269630c6572610c4572610001010420496d6d6f7274616c0000001c4d6f7274616c31040008000001001c4d6f7274616c32040008000002001c4d6f7274616c33040008000003001c4d6f7274616c34040008000004001c4d6f7274616c35040008000005001c4d6f7274616c36040008000006001c4d6f7274616c37040008000007001c4d6f7274616c38040008000008001c4d6f7274616c3904000800000900204d6f7274616c313004000800000a00204d6f7274616c313104000800000b00204d6f7274616c313204000800000c00204d6f7274616c313304000800000d00204d6f7274616c313404000800000e00204d6f7274616c313504000800000f00204d6f7274616c313604000800001000204d6f7274616c313704000800001100204d6f7274616c313804000800001200204d6f7274616c313904000800001300204d6f7274616c323004000800001400204d6f7274616c323104000800001500204d6f7274616c323204000800001600204d6f7274616c323304000800001700204d6f7274616c323404000800001800204d6f7274616c323504000800001900204d6f7274616c323604000800001a00204d6f7274616c323704000800001b00204d6f7274616c323804000800001c00204d6f7274616c323904000800001d00204d6f7274616c333004000800001e00204d6f7274616c333104000800001f00204d6f7274616c333204000800002000204d6f7274616c333304000800002100204d6f7274616c333404000800002200204d6f7274616c333504000800002300204d6f7274616c333604000800002400204d6f7274616c333704000800002500204d6f7274616c333804000800002600204d6f7274616c333904000800002700204d6f7274616c343004000800002800204d6f7274616c343104000800002900204d6f7274616c343204000800002a00204d6f7274616c343304000800002b00204d6f7274616c343404000800002c00204d6f7274616c343504000800002d00204d6f7274616c343604000800002e00204d6f7274616c343704000800002f00204d6f7274616c343804000800003000204d6f7274616c343904000800003100204d6f7274616c353004000800003200204d6f7274616c353104000800003300204d6f7274616c353204000800003400204d6f7274616c353304000800003500204d6f7274616c353404000800003600204d6f7274616c353504000800003700204d6f7274616c353604000800003800204d6f7274616c353704000800003900204d6f7274616c353804000800003a00204d6f7274616c353904000800003b00204d6f7274616c363004000800003c00204d6f7274616c363104000800003d00204d6f7274616c363204000800003e00204d6f7274616c363304000800003f00204d6f7274616c363404000800004000204d6f7274616c363504000800004100204d6f7274616c363604000800004200204d6f7274616c363704000800004300204d6f7274616c363804000800004400204d6f7274616c363904000800004500204d6f7274616c373004000800004600204d6f7274616c373104000800004700204d6f7274616c373204000800004800204d6f7274616c373304000800004900204d6f7274616c373404000800004a00204d6f7274616c373504000800004b00204d6f7274616c373604000800004c00204d6f7274616c373704000800004d00204d6f7274616c373804000800004e00204d6f7274616c373904000800004f00204d6f7274616c383004000800005000204d6f7274616c383104000800005100204d6f7274616c383204000800005200204d6f7274616c383304000800005300204d6f7274616c383404000800005400204d6f7274616c383504000800005500204d6f7274616c383604000800005600204d6f7274616c383704000800005700204d6f7274616c383804000800005800204d6f7274616c383904000800005900204d6f7274616c393004000800005a00204d6f7274616c393104000800005b00204d6f7274616c393204000800005c00204d6f7274616c393304000800005d00204d6f7274616c393404000800005e00204d6f7274616c393504000800005f00204d6f7274616c393604000800006000204d6f7274616c393704000800006100204d6f7274616c393804000800006200204d6f7274616c393904000800006300244d6f7274616c31303004000800006400244d6f7274616c31303104000800006500244d6f7274616c31303204000800006600244d6f7274616c31303304000800006700244d6f7274616c31303404000800006800244d6f7274616c31303504000800006900244d6f7274616c31303604000800006a00244d6f7274616c31303704000800006b00244d6f7274616c31303804000800006c00244d6f7274616c31303904000800006d00244d6f7274616c31313004000800006e00244d6f7274616c31313104000800006f00244d6f7274616c31313204000800007000244d6f7274616c31313304000800007100244d6f7274616c31313404000800007200244d6f7274616c31313504000800007300244d6f7274616c31313604000800007400244d6f7274616c31313704000800007500244d6f7274616c31313804000800007600244d6f7274616c31313904000800007700244d6f7274616c31323004000800007800244d6f7274616c31323104000800007900244d6f7274616c31323204000800007a00244d6f7274616c31323304000800007b00244d6f7274616c31323404000800007c00244d6f7274616c31323504000800007d00244d6f7274616c31323604000800007e00244d6f7274616c31323704000800007f00244d6f7274616c31323804000800008000244d6f7274616c31323904000800008100244d6f7274616c31333004000800008200244d6f7274616c31333104000800008300244d6f7274616c31333204000800008400244d6f7274616c31333304000800008500244d6f7274616c31333404000800008600244d6f7274616c31333504000800008700244d6f7274616c31333604000800008800244d6f7274616c31333704000800008900244d6f7274616c31333804000800008a00244d6f7274616c31333904000800008b00244d6f7274616c31343004000800008c00244d6f7274616c31343104000800008d00244d6f7274616c31343204000800008e00244d6f7274616c31343304000800008f00244d6f7274616c31343404000800009000244d6f7274616c31343504000800009100244d6f7274616c31343604000800009200244d6f7274616c31343704000800009300244d6f7274616c31343804000800009400244d6f7274616c31343904000800009500244d6f7274616c31353004000800009600244d6f7274616c31353104000800009700244d6f7274616c31353204000800009800244d6f7274616c31353304000800009900244d6f7274616c31353404000800009a00244d6f7274616c31353504000800009b00244d6f7274616c31353604000800009c00244d6f7274616c31353704000800009d00244d6f7274616c31353804000800009e00244d6f7274616c31353904000800009f00244d6f7274616c3136300400080000a000244d6f7274616c3136310400080000a100244d6f7274616c3136320400080000a200244d6f7274616c3136330400080000a300244d6f7274616c3136340400080000a400244d6f7274616c3136350400080000a500244d6f7274616c3136360400080000a600244d6f7274616c3136370400080000a700244d6f7274616c3136380400080000a800244d6f7274616c3136390400080000a900244d6f7274616c3137300400080000aa00244d6f7274616c3137310400080000ab00244d6f7274616c3137320400080000ac00244d6f7274616c3137330400080000ad00244d6f7274616c3137340400080000ae00244d6f7274616c3137350400080000af00244d6f7274616c3137360400080000b000244d6f7274616c3137370400080000b100244d6f7274616c3137380400080000b200244d6f7274616c3137390400080000b300244d6f7274616c3138300400080000b400244d6f7274616c3138310400080000b500244d6f7274616c3138320400080000b600244d6f7274616c3138330400080000b700244d6f7274616c3138340400080000b800244d6f7274616c3138350400080000b900244d6f7274616c3138360400080000ba00244d6f7274616c3138370400080000bb00244d6f7274616c3138380400080000bc00244d6f7274616c3138390400080000bd00244d6f7274616c3139300400080000be00244d6f7274616c3139310400080000bf00244d6f7274616c3139320400080000c000244d6f7274616c3139330400080000c100244d6f7274616c3139340400080000c200244d6f7274616c3139350400080000c300244d6f7274616c3139360400080000c400244d6f7274616c3139370400080000c500244d6f7274616c3139380400080000c600244d6f7274616c3139390400080000c700244d6f7274616c3230300400080000c800244d6f7274616c3230310400080000c900244d6f7274616c3230320400080000ca00244d6f7274616c3230330400080000cb00244d6f7274616c3230340400080000cc00244d6f7274616c3230350400080000cd00244d6f7274616c3230360400080000ce00244d6f7274616c3230370400080000cf00244d6f7274616c3230380400080000d000244d6f7274616c3230390400080000d100244d6f7274616c3231300400080000d200244d6f7274616c3231310400080000d300244d6f7274616c3231320400080000d400244d6f7274616c3231330400080000d500244d6f7274616c3231340400080000d600244d6f7274616c3231350400080000d700244d6f7274616c3231360400080000d800244d6f7274616c3231370400080000d900244d6f7274616c3231380400080000da00244d6f7274616c3231390400080000db00244d6f7274616c3232300400080000dc00244d6f7274616c3232310400080000dd00244d6f7274616c3232320400080000de00244d6f7274616c3232330400080000df00244d6f7274616c3232340400080000e000244d6f7274616c3232350400080000e100244d6f7274616c3232360400080000e200244d6f7274616c3232370400080000e300244d6f7274616c3232380400080000e400244d6f7274616c3232390400080000e500244d6f7274616c3233300400080000e600244d6f7274616c3233310400080000e700244d6f7274616c3233320400080000e800244d6f7274616c3233330400080000e900244d6f7274616c3233340400080000ea00244d6f7274616c3233350400080000eb00244d6f7274616c3233360400080000ec00244d6f7274616c3233370400080000ed00244d6f7274616c3233380400080000ee00244d6f7274616c3233390400080000ef00244d6f7274616c3234300400080000f000244d6f7274616c3234310400080000f100244d6f7274616c3234320400080000f200244d6f7274616c3234330400080000f300244d6f7274616c3234340400080000f400244d6f7274616c3234350400080000f500244d6f7274616c3234360400080000f600244d6f7274616c3234370400080000f700244d6f7274616c3234380400080000f800244d6f7274616c3234390400080000f900244d6f7274616c3235300400080000fa00244d6f7274616c3235310400080000fb00244d6f7274616c3235320400080000fc00244d6f7274616c3235330400080000fd00244d6f7274616c3235340400080000fe00244d6f7274616c3235350400080000ff0000b90a10306672616d655f73797374656d28657874656e73696f6e732c636865636b5f6e6f6e636528436865636b4e6f6e63650404540000040071040120543a3a496e6465780000bd0a0c4c706f6c796d6573685f657874656e73696f6e7330636865636b5f7765696768742c436865636b57656967687404045400000400c10a011443573c543e0000c10a10306672616d655f73797374656d28657874656e73696f6e7330636865636b5f7765696768742c436865636b57656967687404045400000000c50a086870616c6c65745f7472616e73616374696f6e5f7061796d656e74604368617267655472616e73616374696f6e5061796d656e7404045400000400cd01013042616c616e63654f663c543e0000c90a084870616c6c65745f7065726d697373696f6e734453746f726543616c6c4d6574616461746104045400000000cd0a0c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d651c52756e74696d6500000000bc1853797374656d011853797374656d401c4163636f756e7401010402000c4101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e8205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e3845787472696e736963436f756e74000010040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e2c426c6f636b57656967687401001c600000000000000000000000000000000000000000000000000488205468652063757272656e742077656967687420666f722074686520626c6f636b2e40416c6c45787472696e736963734c656e000010040004410120546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e24426c6f636b486173680101040510248000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101040510280400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d6265720100101000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801002480000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e1844696765737401002c040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e7473010048040010a0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e005901204e4f54453a20546869732073746f72616765206974656d206973206578706c696369746c7920756e626f756e6465642073696e6365206974206973206e6576657220696e74656e64656420746f2062652072656164642066726f6d2077697468696e207468652072756e74696d652e284576656e74436f756e74010010100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f70696373010104022469040400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e004d01205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e484c61737452756e74696d655570677261646500006d0404000455012053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e545570677261646564546f553332526566436f756e74010019010400044d012054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e605570677261646564546f547269706c65526566436f756e74010019010400085d012054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e73207468726565207479706573206f662060526566436f756e74602e2046616c736548202864656661756c7429206966206e6f742e38457865637574696f6e506861736500006104040004882054686520657865637574696f6e207068617365206f662074686520626c6f636b2e01790401541830426c6f636b576569676874738904850100c817a80400000000204aa9d10100008036be26000000000180914b872e010000010098f73e5d0100000100000000000000008036be26000000000180199ef1a20100000100204aa9d1010000010088526a740000008036be260000000000000004d020426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e2c426c6f636b4c656e677468950430000078000000a0000000a00004a820546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e38426c6f636b48617368436f756e741010fa000000045501204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e2044625765696768749d044080f0fa020000000000c2eb0b000000000409012054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e1c56657273696f6ea1040d0430706f6c796d6573685f64657630706f6c796d6573685f64657601000000404b4c000000000048df6acb689907609b0300000037e397fc7c91f5e40100000040fe3ad401f8959a05000000d2bc9897eed08f1503000000f78b278be53f454c02000000ed99c5acb25eedf503000000cbca25e39f14238702000000687ad44ad37f03c201000000bc9d89904f5b923f0100000037c8bb1350a9a2a801000000ab3c0572291feb8b0100000018ef58a3b67ba77001000000329342994773047f01000000001a0b29f17d01f401000000f28e8080b6e2dfd002000000bb6ba9053c5c9d78020000009f242c2c886f3fce01000000595ac34c5ea1f5fe01000000020000000484204765742074686520636861696e27732063757272656e742076657273696f6e2e28535335385072656669783d03082a0014a8205468652064657369676e61746564205353383520707265666978206f66207468697320636861696e2e0039012054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e20697331012074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f662069742061737020616e206964656e746966696572206f662074686520636861696e2e01b504001042616265011042616265402845706f6368496e64657801002020000000000000000004542043757272656e742065706f636820696e6465782e2c417574686f7269746965730100b9040400046c2043757272656e742065706f636820617574686f7269746965732e2c47656e65736973536c6f740100c90420000000000000000008f82054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e205468697320697320309020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2c43757272656e74536c6f740100c90420000000000000000004542043757272656e7420736c6f74206e756d6265722e2852616e646f6d6e65737301000480000000000000000000000000000000000000000000000000000000000000000028b8205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e002c20232053656375726974790005012054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061f8206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e7915012063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d6265727320746861742074686973150120286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e206265050120757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e0d01206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e6050656e64696e6745706f6368436f6e6669674368616e67650000cd0404000461012050656e64696e672065706f636820636f6e66696775726174696f6e206368616e676520746861742077696c6c206265206170706c696564207768656e20746865206e6578742065706f636820697320656e61637465642e384e65787452616e646f6d6e657373010004800000000000000000000000000000000000000000000000000000000000000000045c204e6578742065706f63682072616e646f6d6e6573732e3c4e657874417574686f7269746965730100b90404000460204e6578742065706f636820617574686f7269746965732e305365676d656e74496e6465780100101000000000247c2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e00f4205765206d616b6520612074726164656f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e01012057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f942060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e00ec204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e090120576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572791c2065706f63682e44556e646572436f6e737472756374696f6e0101040510d90404000415012054574f582d4e4f54453a20605365676d656e74496e6465786020697320616e20696e6372656173696e6720696e74656765722c20736f2074686973206973206f6b61792e2c496e697469616c697a65640000e10404000801012054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d65601d01206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e4c417574686f7256726652616e646f6d6e6573730100e10404001015012054686973206669656c642073686f756c6420616c7761797320626520706f70756c6174656420647572696e6720626c6f636b2070726f63657373696e6720756e6c6573731901207365636f6e6461727920706c61696e20736c6f74732061726520656e61626c65642028776869636820646f6e277420636f6e7461696e206120565246206f7574707574292e0051012049742069732073657420696e20606f6e5f696e697469616c697a65602c206265666f72652069742077696c6c20636f6e7461696e207468652076616c75652066726f6d20746865206c61737420626c6f636b2e2845706f6368537461727401009d03200000000000000000145d012054686520626c6f636b206e756d62657273207768656e20746865206c61737420616e642063757272656e742065706f6368206861766520737461727465642c20726573706563746976656c7920604e2d316020616e641420604e602e4901204e4f54453a20576520747261636b207468697320697320696e206f7264657220746f20616e6e6f746174652074686520626c6f636b206e756d626572207768656e206120676976656e20706f6f6c206f66590120656e74726f7079207761732066697865642028692e652e20697420776173206b6e6f776e20746f20636861696e206f6273657276657273292e2053696e63652065706f6368732061726520646566696e656420696e590120736c6f74732c207768696368206d617920626520736b69707065642c2074686520626c6f636b206e756d62657273206d6179206e6f74206c696e6520757020776974682074686520736c6f74206e756d626572732e204c6174656e657373010010100000000014d820486f77206c617465207468652063757272656e7420626c6f636b20697320636f6d706172656420746f2069747320706172656e742e001501205468697320656e74727920697320706f70756c617465642061732070617274206f6620626c6f636b20657865637574696f6e20616e6420697320636c65616e65642075701101206f6e20626c6f636b2066696e616c697a6174696f6e2e205175657279696e6720746869732073746f7261676520656e747279206f757473696465206f6620626c6f636bb020657865637574696f6e20636f6e746578742073686f756c6420616c77617973207969656c64207a65726f2e2c45706f6368436f6e6669670000e50404000861012054686520636f6e66696775726174696f6e20666f72207468652063757272656e742065706f63682e2053686f756c64206e6576657220626520604e6f6e656020617320697420697320696e697469616c697a656420696e242067656e657369732e3c4e65787445706f6368436f6e6669670000e5040400082d012054686520636f6e66696775726174696f6e20666f7220746865206e6578742065706f63682c20604e6f6e65602069662074686520636f6e6669672077696c6c206e6f74206368616e6765e82028796f752063616e2066616c6c6261636b20746f206045706f6368436f6e6669676020696e737465616420696e20746861742063617365292e01e904000c3445706f63684475726174696f6e20202c010000000000000cec2054686520616d6f756e74206f662074696d652c20696e20736c6f74732c207468617420656163682065706f63682073686f756c64206c6173742e1901204e4f54453a2043757272656e746c79206974206973206e6f7420706f737369626c6520746f206368616e6765207468652065706f6368206475726174696f6e20616674657221012074686520636861696e2068617320737461727465642e20417474656d7074696e6720746f20646f20736f2077696c6c20627269636b20626c6f636b2070726f64756374696f6e2e444578706563746564426c6f636b54696d652020701700000000000014050120546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e67110120626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f75740501207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f740901206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473a0207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e384d6178417574686f7269746965731010a08601000488204d6178206e756d626572206f6620617574686f72697469657320616c6c6f77656401fd04012454696d657374616d70012454696d657374616d70080c4e6f7701002020000000000000000004902043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e2444696455706461746501001901040004b420446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f0101050004344d696e696d756d506572696f642020b80b000000000000104d0120546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a5d0120706572696f6420746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c5d012067656e6572616c6c7920776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c206265a020646f75626c65207468697320706572696f64206f6e2064656661756c742073657474696e67732e00021c496e6469636573011c496e646963657304204163636f756e7473000104021009050400048820546865206c6f6f6b75702066726f6d20696e64657820746f206163636f756e742e010d050170041c4465706f736974184040420f0000000000000000000000000004ac20546865206465706f736974206e656564656420666f7220726573657276696e6720616e20696e6465782e0111050328417574686f72736869700128417574686f72736869700c18556e636c6573010015050400041c20556e636c657318417574686f720000000400046420417574686f72206f662063757272656e7420626c6f636b2e30446964536574556e636c657301001901040004bc205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e011d05000440556e636c6547656e65726174696f6e731010000000000ccc20546865206e756d626572206f6620626c6f636b73206261636b2077652073686f756c642061636365707420756e636c65732ee42054686973206d65616e7320746861742077652077696c6c206465616c207769746820756e636c652d706172656e7473207468617420617265942060556e636c6547656e65726174696f6e73202b203160206265666f726520606e6f77602e012505042042616c616e636573012042616c616e6365730834546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e144c6f636b7301010402002905040008b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e013505017404484578697374656e7469616c4465706f73697418400000000000000000000000000000000004d420546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e013d0505485472616e73616374696f6e5061796d656e7401485472616e73616374696f6e5061796d656e7408444e6578744665654d756c7469706c6965720100410540000064a7b3b6e00d0000000000000000003853746f7261676556657273696f6e01004505040000000008485472616e73616374696f6e42797465466565184064000000000000000000000000000000040d01205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e2c576569676874546f46656549055c040000000000000000000000000000000049b400000001040d012054686520706f6c796e6f6d69616c2074686174206973206170706c69656420696e206f7264657220746f20646572697665206665652066726f6d207765696768742e0006204964656e7469747901204964656e746974793c284469645265636f726473000104067c51050400045420444944202d3e206964656e7469747920696e666f2c497344696446726f7a656e010104067c1901040004e420444944202d3e20626f6f6c207468617420696e64696361746573206966207365636f6e64617279206b657973206172652066726f7a656e2e2843757272656e7444696400007c040004e02049742073746f726573207468652063757272656e74206964656e7469747920666f722063757272656e74207472616e73616374696f6e2e3043757272656e74506179657200000004000401012049742073746f726573207468652063757272656e74206761732066656520706179657220666f72207468652063757272656e74207472616e73616374696f6e18436c61696d7301010805025505f0c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a04f020285461726765742049442c20636c61696d20747970652920286973737565722c73636f706529202d3e204173736f63696174656420636c61696d73284b65795265636f726473000104050065050400044501204d61702066726f6d204163636f756e74496420746f20604b65795265636f726460207468617420686f6c647320746865206b65792773206964656e7469747920616e64207065726d697373696f6e732e1c4469644b65797301010806056905190104000401012041207265766572736520646f75626c65206d617020746f20616c6c6f772066696e64696e6720616c6c206b65797320666f7220616e206964656e746974792e444d756c7469507572706f73654e6f6e636501002020000000000000000004bc204e6f6e636520746f20656e7375726520756e6971756520616374696f6e732e207374617274732066726f6d20312e684f6666436861696e417574686f72697a6174696f6e4e6f6e6365010104067c2020000000000000000004c820417574686f72697a6174696f6e206e6f6e636520706572204964656e746974792e20496e697469616c6c7920697320302e38417574686f72697a6174696f6e7300010802056d057105040004b020416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792f6b6579206861734c417574686f72697a6174696f6e73476976656e010108060575056d0184000000000000000000000000000000000000000000000000000000000000000000044d0120416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792068617320676976656e2e2028417574686f72697a65722c20617574685f6964202d3e20617574686f72697a6564296c43646441757468466f724d61737465724b6579526f746174696f6e010019010400086501204f62736f6c657465642073746f72616765207661726961626c652073757065726365646564206279206043646441757468466f725072696d6172794b6579526f746174696f6e602e204974206973206b65707420686572659820666f722074686520707572706f7365206f662073746f72616765206d6967726174696f6e2e7043646441757468466f725072696d6172794b6579526f746174696f6e010019010400085d01204120636f6e66696720666c616720746861742c206966207365742c20696e7374727563747320616e20617574686f72697a6174696f6e2066726f6d2061204344442070726f766964657220696e206f7264657220746f9c206368616e676520746865207072696d617279206b6579206f6620616e206964656e746974792e3853746f7261676556657273696f6e01007905040004442053746f726167652076657273696f6e2e484163636f756e744b6579526566436f756e740101040200202000000000000000001cc420486f77206d616e7920227374726f6e6722207265666572656e63657320746f20746865206163636f756e74206b65792e00fc205374726f6e67207265666572656e6365732077696c6c20626c6f636b2061206b65792066726f6d206c656176696e672069742773206964656e746974792e00cc2050616c6c657473207573696e6720227374726f6e6722207265666572656e63657320746f206163636f756e74206b6579733aac202a2052656c617965723a20466f722060757365725f6b65796020616e642060706179696e675f6b65796000017d05018c0430496e697469616c504f4c59581840000000000000000000000000000000000001bd05074c4364645365727669636550726f7669646572730138496e7374616e63653247726f75700c344163746976654d656d6265727301002501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100c105040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01c905011d010001cd050844506f6c796d657368436f6d6d69747465650148496e7374616e636531436f6d6d6974746565242450726f706f73616c7301006504040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001040624d105040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e6700010406243508040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100250104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401009d03200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201003901040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01003908040004442053746f726167652076657273696f6e2e01d50501290100013d08094c436f6d6d69747465654d656d626572736869700138496e7374616e63653147726f75700c344163746976654d656d6265727301002501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100c105040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01d905013d01000141080a48546563686e6963616c436f6d6d69747465650148496e7374616e636533436f6d6d6974746565242450726f706f73616c7301006504040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001040624d105040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e6700010406243508040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100250104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401009d03200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201003901040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01003908040004442053746f726167652076657273696f6e2e01dd05014501000145080b70546563686e6963616c436f6d6d69747465654d656d626572736869700138496e7374616e63653347726f75700c344163746976654d656d6265727301002501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100c105040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01e105014d01000149080c4055706772616465436f6d6d69747465650148496e7374616e636534436f6d6d6974746565242450726f706f73616c7301006504040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001040624d105040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e6700010406243508040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100250104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401009d03200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201003901040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01003908040004442053746f726167652076657273696f6e2e01e50501550100014d080d6855706772616465436f6d6d69747465654d656d626572736869700138496e7374616e63653447726f75700c344163746976654d656d6265727301002501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100c105040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01e905015d01000151080e204d756c746953696701204d756c746953696730344d756c74695369674e6f6e6365010020200000000000000000042101204e6f6e636520746f20656e7375726520756e69717565204d756c746953696720616464726573736573206172652067656e6572617465643b207374617274732066726f6d20312e3c4d756c74695369675369676e657273010108060555086d018400000000000000000000000000000000000000000000000000000000000000000004d4205369676e657273206f662061206d756c74697369672e20286d756c74697369672c207369676e657229203d3e207369676e65722e3c4e756d6265724f665369676e65727301010406002020000000000000000004cc204e756d626572206f6620617070726f7665642f6163636570746564207369676e657273206f662061206d756c74697369672e544d756c74695369675369676e73526571756972656401010406002020000000000000000004e020436f6e6669726d6174696f6e73207265717569726564206265666f72652070726f63657373696e672061206d756c74697369672074782e384d756c74695369675478446f6e65010104060020200000000000000000043501204e756d626572206f66207472616e73616374696f6e732070726f706f73656420696e2061206d756c74697369672e20557365642061732074782069643b207374617274732066726f6d20302e2450726f706f73616c73000104055908d10504000475012050726f706f73616c732070726573656e74656420666f7220766f74696e6720746f2061206d756c746973696720286d756c74697369672c2070726f706f73616c20696429203d3e204f7074696f6e3c543a3a50726f706f73616c3e2e2c50726f706f73616c49647300010806025d0820040004942041206d617070696e67206f662070726f706f73616c7320746f207468656972204944732e14566f7465730101040561081901040004250120496e646976696475616c206d756c7469736967207369676e657220766f7465732e20286d756c7469207369672c207369676e65722c2070726f706f73616c29203d3e20766f74652e484d756c7469536967546f4964656e7469747901010406007c80000000000000000000000000000000000000000000000000000000000000000004a4204d6170732061206d756c7469736967206163636f756e7420746f20697473206964656e746974792e3850726f706f73616c44657461696c01010405590865084c00000000000000000000000000000000000000047c2044657461696c73206f662061206d756c74697369672070726f706f73616c485472616e73616374696f6e56657273696f6e010010100000000004f420546865206c617374207472616e73616374696f6e2076657273696f6e2c207573656420666f7220606f6e5f72756e74696d655f75706772616465602e3853746f7261676556657273696f6e01006d08040004442053746f726167652076657273696f6e2e01ed05016501000171080f1842726964676501184272696467652828436f6e74726f6c6c65720100008000000000000000000000000000000000000000000000000000000000000000000c410120546865206d756c7469736967206163636f756e74206f66207468652062726964676520636f6e74726f6c6c65722e205468652067656e65736973207369676e65727320616363657074207468656972450120617574686f72697a6174696f6e7320616e64206172652061626c6520746f206765742074686569722070726f706f73616c732064656c6976657265642e20546865206272696467652063726561746f729c207472616e736665727320736f6d6520504f4c5920746f207468656972206964656e746974792e3c427269646765547844657461696c73010108020275087908d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000859012044657461696c73206f6620627269646765207472616e73616374696f6e73206964656e7469666965642077697468207061697273206f662074686520726563697069656e74206163636f756e7420616e64207468656820627269646765207472616e73616374696f6e206e6f6e63652e1441646d696e010000800000000000000000000000000000000000000000000000000000000000000000043c205468652061646d696e206b65792e1846726f7a656e01001901040004bc2057686574686572206f72206e6f742074686520627269646765206f7065726174696f6e2069732066726f7a656e2e30467265657a6541646d696e7301010402001901040004090120467265657a65206272696467652061646d696e732e20205468657365206163636f756e74732063616e206f6e6c7920667265657a6520746865206272696467652e2054696d656c6f636b0100101000000000083d012054686520627269646765207472616e73616374696f6e2074696d656c6f636b20706572696f642c20696e20626c6f636b732c2073696e63652074686520616363657074616e6365206f66207468653101207472616e73616374696f6e2070726f706f73616c20647572696e67207768696368207468652061646d696e206b65792063616e20667265657a6520746865207472616e73616374696f6e2e2c4272696467654c696d69740100810850000000000000000000000000000000000000000008290120546865206d6178696d756d206e756d626572206f66206272696467656420504f4c595820706572206964656e746974792077697468696e20612073657420696e74657276616c206f66f820626c6f636b732e204669656c64733a20504f4c595820616d6f756e7420616e642074686520626c6f636b20696e74657276616c206475726174696f6e2e30506f6c797842726964676564010104067c810850000000000000000000000000000000000000000008510120416d6f756e74206f6620504f4c5958206272696467656420627920746865206964656e7469747920696e206c61737420626c6f636b20696e74657276616c2e204669656c64733a2074686520627269646765649420616d6f756e7420616e6420746865206c61737420696e74657276616c206e756d6265722e4c4272696467654c696d69744578656d70746564010104057c1901040004c0204964656e746974696573206e6f7420636f6e73747261696e65642062792074686520627269646765206c696d69742e3853746f7261676556657273696f6e01008508040004442053746f726167652076657273696f6e2e01f10501710100018908101c5374616b696e67011c5374616b696e679c30486973746f7279446570746801001010540000001c8c204e756d626572206f66206572617320746f206b65657020696e20686973746f72792e00390120496e666f726d6174696f6e206973206b65707420666f72206572617320696e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e006101204d757374206265206d6f7265207468616e20746865206e756d626572206f6620657261732064656c617965642062792073657373696f6e206f74686572776973652e20492e652e2061637469766520657261206d757374390120616c7761797320626520696e20686973746f72792e20492e652e20606163746976655f657261203e2063757272656e745f657261202d20686973746f72795f646570746860206d757374206265302067756172616e746565642e3856616c696461746f72436f756e74010010100000000004a82054686520696465616c206e756d626572206f66207374616b696e67207061727469636970616e74732e544d696e696d756d56616c696461746f72436f756e740100101000000000044101204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e34496e76756c6e657261626c65730100ec04000c590120416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e636520746865792772654d01206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f7572ac20696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e18426f6e6465640001040500000400040101204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e184c656467657200010402008d080400044501204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e14506179656501010405000506040004e42057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e2856616c696461746f72730101040500090608000004450120546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e284e6f6d696e61746f727300010405009908040004650120546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f2074686520736574206f66207374617368206b657973206f6620616c6c2076616c696461746f727320746f206e6f6d696e6174652e2843757272656e744572610000100400105c205468652063757272656e742065726120696e6465782e006501205468697320697320746865206c617465737420706c616e6e6564206572612c20646570656e64696e67206f6e20686f77207468652053657373696f6e2070616c6c657420717565756573207468652076616c696461746f7280207365742c206974206d6967687420626520616374697665206f72206e6f742e2441637469766545726100009d08040010d820546865206163746976652065726120696e666f726d6174696f6e2c20697420686f6c647320696e64657820616e642073746172742e0059012054686520616374697665206572612069732074686520657261206265696e672063757272656e746c792072657761726465642e2056616c696461746f7220736574206f66207468697320657261206d757374206265ac20657175616c20746f205b6053657373696f6e496e746572666163653a3a76616c696461746f7273605d2e5445726173537461727453657373696f6e496e6465780001040510100400103101205468652073657373696f6e20696e646578206174207768696368207468652065726120737461727420666f7220746865206c6173742060484953544f52595f44455054486020657261732e006101204e6f74653a205468697320747261636b7320746865207374617274696e672073657373696f6e2028692e652e2073657373696f6e20696e646578207768656e20657261207374617274206265696e672061637469766529f020666f7220746865206572617320696e20605b43757272656e74457261202d20484953544f52595f44455054482c2043757272656e744572615d602e2c457261735374616b6572730101080505a108c9010c0000001878204578706f73757265206f662076616c696461746f72206174206572612e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e48457261735374616b657273436c69707065640101080505a108c9010c0000002c9820436c6970706564204578706f73757265206f662076616c696461746f72206174206572612e00590120546869732069732073696d696c617220746f205b60457261735374616b657273605d20627574206e756d626572206f66206e6f6d696e61746f7273206578706f736564206973207265647563656420746f20746865dc2060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732e1d0120284e6f74653a20746865206669656c642060746f74616c6020616e6420606f776e60206f6620746865206578706f737572652072656d61696e7320756e6368616e676564292ef42054686973206973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e005d012054686973206973206b657965642066697374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e484572617356616c696461746f7250726566730101080505a10809060800001411012053696d696c617220746f2060457261735374616b657273602c207468697320686f6c64732074686520707265666572656e636573206f662076616c696461746f72732e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4c4572617356616c696461746f7252657761726400010405101804000c09012054686520746f74616c2076616c696461746f7220657261207061796f757420666f7220746865206c6173742060484953544f52595f44455054486020657261732e0021012045726173207468617420686176656e27742066696e697368656420796574206f7220686173206265656e2072656d6f76656420646f65736e27742068617665207265776172642e4045726173526577617264506f696e74730101040510a50814000000000008ac205265776172647320666f7220746865206c6173742060484953544f52595f44455054486020657261732e250120496620726577617264206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207265776172642069732072657475726e65642e3845726173546f74616c5374616b65010104051018400000000000000000000000000000000008ec2054686520746f74616c20616d6f756e74207374616b656420666f7220746865206c6173742060484953544f52595f44455054486020657261732e1d0120496620746f74616c206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207374616b652069732072657475726e65642e20466f7263654572610100b10804000454204d6f6465206f662065726120666f7263696e672e4c536c6173685265776172644672616374696f6e01008d0110000000000cf8205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e00e4205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e4c43616e63656c6564536c6173685061796f757401001840000000000000000000000000000000000815012054686520616d6f756e74206f662063757272656e637920676976656e20746f207265706f7274657273206f66206120736c617368206576656e7420776869636820776173ec2063616e63656c65642062792065787472616f7264696e6172792063697263756d7374616e6365732028652e672e20676f7665726e616e6365292e40556e6170706c696564536c61736865730101040510b508040004c420416c6c20756e6170706c69656420736c61736865732074686174206172652071756575656420666f72206c617465722e28426f6e646564457261730100690404001025012041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e00c8204d75737420636f6e7461696e7320696e666f726d6174696f6e20666f72206572617320666f72207468652072616e67653abc20605b6163746976655f657261202d20626f756e64696e675f6475726174696f6e3b206163746976655f6572615d604c56616c696461746f72536c617368496e4572610001080505a108c508040008450120416c6c20736c617368696e67206576656e7473206f6e2076616c696461746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682070726f706f7274696f6e7020616e6420736c6173682076616c7565206f6620746865206572612e4c4e6f6d696e61746f72536c617368496e4572610001080505a10818040004610120416c6c20736c617368696e67206576656e7473206f6e206e6f6d696e61746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682076616c7565206f6620746865206572612e34536c617368696e675370616e730001040500c9080400048c20536c617368696e67207370616e7320666f72207374617368206163636f756e74732e245370616e536c617368010104057508cd08800000000000000000000000000000000000000000000000000000000000000000083d01205265636f72647320696e666f726d6174696f6e2061626f757420746865206d6178696d756d20736c617368206f6620612073746173682077697468696e206120736c617368696e67207370616e2cb82061732077656c6c20617320686f77206d7563682072657761726420686173206265656e2070616964206f75742e584561726c69657374556e6170706c696564536c617368000010040004fc20546865206561726c696573742065726120666f72207768696368207765206861766520612070656e64696e672c20756e6170706c69656420736c6173682e48536e617073686f7456616c696461746f72730000ec040008650120536e617073686f74206f662076616c696461746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e48536e617073686f744e6f6d696e61746f72730000ec040008650120536e617073686f74206f66206e6f6d696e61746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e34517565756564456c65637465640000d10804000c650120546865206e6578742076616c696461746f72207365742e2041742074686520656e64206f6620616e206572612c206966207468697320697320617661696c61626c652028706f74656e7469616c6c792066726f6d20746865610120726573756c74206f6620616e206f6666636861696e20776f726b6572292c20697420697320696d6d6564696174656c7920757365642e204f74686572776973652c20746865206f6e2d636861696e20656c656374696f6e342069732065786563757465642e2c51756575656453636f72650000ed06040004b0205468652073636f7265206f66207468652063757272656e74205b60517565756564456c6563746564605d2e44457261456c656374696f6e5374617475730100d508040008490120466c616720746f20636f6e74726f6c2074686520657865637574696f6e206f6620746865206f6666636861696e20656c656374696f6e2e205768656e20604f70656e285f29602c207765206163636570746c20736f6c7574696f6e7320746f206265207375626d69747465642e54497343757272656e7453657373696f6e46696e616c010019010400084d012054727565206966207468652063757272656e74202a2a706c616e6e65642a2a2073657373696f6e2069732066696e616c2e204e6f74652074686174207468697320646f6573206e6f742074616b65206572615820666f7263696e6720696e746f206163636f756e742e505065726d697373696f6e65644964656e74697479000104057cd908040004ec20456e74697469657320746861742061726520616c6c6f77656420746f2072756e206f70657261746f722f76616c696461746f72206e6f6465732e5856616c696461746f72436f6d6d697373696f6e43617001008d0110000000000415012045766572792076616c696461746f722068617320636f6d6d697373696f6e20746861742073686f756c6420626520696e207468652072616e6765205b302c204361705d2e504d696e696d756d426f6e645468726573686f6c64010018400000000000000000000000000000000004d020546865206d696e696d756d20616d6f756e74207769746820776869636820612076616c696461746f722063616e20626f6e642e48536c617368696e67416c6c6f776564466f72010091010402003853746f7261676556657273696f6e0100dd08040610cc2054727565206966206e6574776f726b20686173206265656e20757067726164656420746f20746869732076657273696f6e2e7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e00a020546869732069732073657420746f2076362e302e3120666f72206e6577206e6574776f726b732e0101060185012c3853657373696f6e735065724572611010030000000470204e756d626572206f662073657373696f6e7320706572206572612e3c426f6e64696e674475726174696f6e10100700000004e4204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e48536c61736844656665724475726174696f6e101004000000140101204e756d626572206f662065726173207468617420736c6173686573206172652064656665727265642062792c20616674657220636f6d7075746174696f6e2e00bc20546869732073686f756c64206265206c657373207468616e2074686520626f6e64696e67206475726174696f6e2e2d012053657420746f203020696620736c61736865732073686f756c64206265206170706c69656420696d6d6564696174656c792c20776974686f7574206f70706f7274756e69747920666f723820696e74657276656e74696f6e2e44456c656374696f6e4c6f6f6b616865616410104b0000001c710120546865206e756d626572206f6620626c6f636b73206265666f72652074686520656e64206f6620746865206572612066726f6d20776869636820656c656374696f6e207375626d697373696f6e732061726520616c6c6f7765642e006d012053657474696e67207468697320746f207a65726f2077696c6c2064697361626c6520746865206f6666636861696e20636f6d7075746520616e64206f6e6c79206f6e2d636861696e207365712d70687261676d656e2077696c6c2420626520757365642e007501205468697320697320626f756e646564206279206265696e672077697468696e20746865206c6173742073657373696f6e2e2048656e63652c2073657474696e6720697420746f20612076616c7565206d6f7265207468616e207468659c206c656e677468206f6620612073657373696f6e2077696c6c20626520706f696e746c6573732e344d6178497465726174696f6e7310100a0000000c2901204d6178696d756d206e756d626572206f662062616c616e63696e6720697465726174696f6e7320746f2072756e20696e20746865206f6666636861696e207375626d697373696f6e2e00ec2049662073657420746f20302c2062616c616e63655f736f6c7574696f6e2077696c6c206e6f7420626520657865637574656420617420616c6c2e504d696e536f6c7574696f6e53636f726542756d708d011020a1070004610120546865207468726573686f6c64206f6620696d70726f76656d656e7420746861742073686f756c642062652070726f766964656420666f722061206e657720736f6c7574696f6e20746f2062652061636365707465642e804d61784e6f6d696e61746f72526577617264656450657256616c696461746f7210100008000010f820546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320726577617264656420666f7220656163682076616c696461746f722e00690120466f7220656163682076616c696461746f72206f6e6c79207468652060244d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732063616e20636c61696d2101207468656972207265776172642e2054686973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e5c4d617856616c696461746f725065724964656e746974797d0210100905000cf4204d6178696d756d206e756d626572206f662076616c696461746f727320666f722065616368207065726d697373696f6e6564206964656e746974792e005901204d6178206e756d626572206f662076616c696461746f727320636f756e74203d20604d617856616c696461746f725065724964656e74697479202a2053656c663a3a76616c696461746f725f636f756e742829602e844d61785661726961626c65496e666c6174696f6e546f74616c49737375616e636518400080c6a47e8d03000000000000000000047101204d6178696d756d20616d6f756e74206f662060543a3a63757272656e63793a3a746f74616c5f69737375616e63652829602061667465722074686174206e6f6e2d696e666c6174656420726577617264732067657420706169642e444669786564596561726c79526577617264184000c0444a547f0000000000000000000004010120546f74616c2079656172207265776172647320746861742067657473207061696420647572696e6720666978656420726577617264207363686564756c652e2c4d696e696d756d426f6e64184040420f0000000000000000000000000004f0204d696e696d756d20616d6f756e74206f6620504f4c59582074686174206d75737420626520626f6e64656420666f722061206e657720626f6e642e01e10811204f6666656e63657301204f6666656e6365730c1c5265706f7274730001040524e508040004490120546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e58436f6e63757272656e745265706f727473496e6465780101080505e90865040400042901204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e485265706f72747342794b696e64496e64657801010405990128040018110120456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e00bc20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e004901204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f66690120646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e000195010000121c53657373696f6e011c53657373696f6e1c2856616c696461746f72730100ec0400047c205468652063757272656e7420736574206f662076616c696461746f72732e3043757272656e74496e646578010010100000000004782043757272656e7420696e646578206f66207468652073657373696f6e2e345175657565644368616e67656401001901040008390120547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f7273a420686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e285175657565644b6579730100ed080400083d012054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b657973e02077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e4844697361626c656456616c696461746f7273010039040400148020496e6469636573206f662064697361626c65642076616c696461746f72732e003d01205468652076656320697320616c77617973206b65707420736f7274656420736f20746861742077652063616e2066696e642077686574686572206120676976656e2076616c696461746f722069733d012064697361626c6564207573696e672062696e617279207365617263682e204974206765747320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e73642061206e657720736574206f66206964656e7469746965732e204e6578744b6579730001040500f9060400049c20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e204b65794f776e657200010405f50800040004090120546865206f776e6572206f662061206b65792e20546865206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e01f506019d010001fd081348417574686f72697479446973636f766572790000000000141c4772616e647061011c4772616e647061181453746174650100010904000490205374617465206f66207468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e676500000509040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000010040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c656400009d030400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e3043757272656e745365744964010020200000000000000000085d0120546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c697469657329c420696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e30536574496453657373696f6e00010405201004001059012041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e00b82054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e01010701a10104384d6178417574686f7269746965731010a0860100045c204d617820417574686f72697469657320696e20757365010d091528486973746f726963616c00000000001620496d4f6e6c696e650120496d4f6e6c696e651038486561727462656174416674657201001010000000002c1d012054686520626c6f636b206e756d6265722061667465722077686963682069742773206f6b20746f2073656e64206865617274626561747320696e207468652063757272656e74242073657373696f6e2e0025012041742074686520626567696e6e696e67206f6620656163682073657373696f6e20776520736574207468697320746f20612076616c756520746861742073686f756c642066616c6c350120726f7567686c7920696e20746865206d6964646c65206f66207468652073657373696f6e206475726174696f6e2e20546865206964656120697320746f206669727374207761697420666f721901207468652076616c696461746f727320746f2070726f64756365206120626c6f636b20696e207468652063757272656e742073657373696f6e2c20736f207468617420746865a820686561727462656174206c61746572206f6e2077696c6c206e6f74206265206e65636573736172792e00390120546869732076616c75652077696c6c206f6e6c79206265207573656420617320612066616c6c6261636b206966207765206661696c20746f2067657420612070726f7065722073657373696f6e2d012070726f677265737320657374696d6174652066726f6d20604e65787453657373696f6e526f746174696f6e602c2061732074686f736520657374696d617465732073686f756c642062650101206d6f7265206163637572617465207468656e207468652076616c75652077652063616c63756c61746520666f7220604865617274626561744166746572602e104b65797301001109040004d0205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e4852656365697665644865617274626561747300010805059d0319090400083d0120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206053657373696f6e496e6465786020616e64206041757468496e6465786020746fb02060577261707065724f70617175653c426f756e6465644f70617175654e6574776f726b53746174653e602e38417574686f726564426c6f636b730101080505a10810100000000008150120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206056616c696461746f7249643c543e6020746f20746865c8206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e012d0701b5010440556e7369676e65645072696f726974792020ffffffffffffffff10f0204120636f6e66696775726174696f6e20666f722062617365207072696f72697479206f6620756e7369676e6564207472616e73616374696f6e732e0015012054686973206973206578706f73656420736f20746861742069742063616e2062652074756e656420666f7220706172746963756c61722072756e74696d652c207768656eb4206d756c7469706c652070616c6c6574732073656e6420756e7369676e6564207472616e73616374696f6e732e012d09176052616e646f6d6e657373436f6c6c656374697665466c6970016052616e646f6d6e657373436f6c6c656374697665466c6970043852616e646f6d4d6174657269616c0100650404000c610120536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e2054686973610120697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f664420746865206f6c6465737420686173682e0000000018105375646f01105375646f040c4b657901000080000000000000000000000000000000000000000000000000000000000000000004842054686520604163636f756e74496460206f6620746865207375646f206b65792e014d0701d9010001310919144173736574011441737365747c1c5469636b65727301010402a03509840000000000000000000000000000000000000000000000000000000000000000000874205469636b657220726567697374726174696f6e2064657461696c732e7c20287469636b657229202d3e205469636b6572526567697374726174696f6e305469636b6572436f6e666967010069070800000870205469636b657220726567697374726174696f6e20636f6e6669672e9420287469636b657229202d3e205469636b6572526567697374726174696f6e436f6e66696718546f6b656e7301010402a03909c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008e02044657461696c73206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e050120287469636b657229202d3e205365637572697479546f6b656e2064657461696c73205b72657475726e73205365637572697479546f6b656e207374727563745d2841737365744e616d657301010402a0fd01040008ec204173736574206e616d65206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e6020287469636b657229202d3e206041737365744e616d65602442616c616e63654f6601010802063d0918400000000000000000000000000000000008b42054686520746f74616c206173736574207469636b65722062616c616e636520706572206964656e746974792e6420287469636b65722c2044494429202d3e2042616c616e63652c4964656e7469666965727301010402a0ed01040004b82041206d6170206f662061207469636b6572206e616d6520616e64206173736574206964656e746966696572732e50437573746f6d54797065496453657175656e63650100e90110000000000cc420546865206e65787420604173736574547970653a3a437573746f6d6020494420696e207468652073657175656e63652e00d0204e756d6265727320696e207468652073657175656e63652073746172742066726f6d203120726174686572207468616e20302e2c437573746f6d547970657301010405e90128040004f8204d61707320637573746f6d20617373657420747970652069647320746f20746865207265676973746572656420737472696e6720636f6e74656e74732e48437573746f6d5479706573496e76657273650101040228e901100000000004610120496e7665727365206d6170206f662060437573746f6d5479706573602c2066726f6d207265676973746572656420737472696e6720636f6e74656e747320746f20637573746f6d2061737365742074797065206964732e3046756e64696e67526f756e6401010402a0e1010400089c20546865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e60207469636b6572202d3e2066756e64696e6720726f756e6450497373756564496e46756e64696e67526f756e640101040241091840000000000000000000000000000000000811012054686520746f74616c2062616c616e636573206f6620746f6b656e732069737375656420696e20616c6c207265636f726465642066756e64696e6720726f756e64732e8c20287469636b65722c2066756e64696e6720726f756e6429202d3e2062616c616e63651846726f7a656e01010402a01901040008e82054686520736574206f662066726f7a656e2061737365747320696d706c656d656e7465642061732061206d656d62657273686970206d61702e3c207469636b6572202d3e20626f6f6c5c41737365744f776e65727368697052656c6174696f6e7301010806024509490904000888205469636b65727320616e6420746f6b656e206f776e656420627920612075736572842028757365722c207469636b657229202d3e2041737365744f776e657273686970384173736574446f63756d656e747301010802054d090502140000000000087c20446f63756d656e747320617474616368656420746f20616e2041737365747420287469636b65722c20646f635f696429202d3e20646f63756d656e74604173736574446f63756d656e7473496453657175656e636501010402a0010210000000000880205065722d7469636b657220646f63756d656e7420494420636f756e7465722e4c20287469636b657229202d3e20646f635f696438436c61737369635469636b65727300010402a05109040004f0205469636b657220726567697374726174696f6e2064657461696c73206f6e20506f6c796d61746820436c6173736963202f20457468657265756d2e4042616c616e63654f66417453636f7065010108060655091840000000000000000000000000000000000ccc2042616c616e636573206765742073746f726564206f6e20746865206261736973206f6620746865206053636f70654964602e9d01205269676874206e6f77206974206973206f6e6c792068656c7066756c20666f722074686520554920707572706f7365732062757420696e206675747572652069742063616e206265207573656420746f20646f206d697261636c6573206f6e2d636861696e2e88202853636f706549642c204964656e74697479496429203d3e2042616c616e63652e4041676772656761746542616c616e636501010802063d091840000000000000000000000000000000000825012053746f7265206167677265676174652062616c616e6365206f662074686f7365206964656e746974696573207468617420686173207468652073616d65206053636f70654964602e7820285469636b65722c2053636f7065496429203d3e2042616c616e63652e2453636f706549644f6601010802063d097c80000000000000000000000000000000000000000000000000000000000000000008dc20547261636b73207468652053636f70654964206f6620746865206964656e7469747920666f72206120676976656e207469636b65722e8420285469636b65722c204964656e74697479496429203d3e2053636f706549642e6444697361626c65496e766573746f72556e697175656e65737301010402a0190104001031012044656369646573207768657468657220696e766573746f7220756e697175656e65737320726571756972656d656e7420697320656e666f7263656420666f7220746869732061737365742e8c206066616c736560206d65616e73207468617420697420697320656e666f726365642e0040205469636b6572203d3e20626f6f6c2e4c41737365744d6574616461746156616c7565730001080205590935020400047c204d65746174646174612076616c75657320666f7220616e2061737365742e6441737365744d6574616461746156616c756544657461696c73000108020559093d02040004a02044657461696c7320666f7220616e2061737365742773204d657461646174612076616c7565732e6c41737365744d657461646174614c6f63616c4e616d65546f4b657900010802025d09490204000488204173736574204d65746164617461204c6f63616c204e616d65202d3e204b65792e7041737365744d65746164617461476c6f62616c4e616d65546f4b657900010402450265020400048c204173736574204d6574616461746120476c6f62616c204e616d65202d3e204b65792e6c41737365744d657461646174614c6f63616c4b6579546f4e616d6500010802056109450204000488204173736574204d65746164617461204c6f63616c204b6579202d3e204e616d652e7041737365744d65746164617461476c6f62616c4b6579546f4e616d6500010405650245020400048c204173736574204d6574616461746120476c6f62616c204b6579202d3e204e616d652e5c41737365744d657461646174614c6f63616c5370656373000108020561094d0204000480204173736574204d65746164617461204c6f63616c204b65792073706563732e6041737365744d65746164617461476c6f62616c53706563730001040565024d0204000484204173736574204d6574616461746120476c6f62616c204b65792073706563732e6441737365744d657461646174614e6578744c6f63616c4b657901010402a04902200000000000000000047c204e657874204173736574204d65746164617461204c6f63616c204b65792e6841737365744d657461646174614e657874476c6f62616c4b6579010065022000000000000000000480204e657874204173736574204d6574616461746120476c6f62616c204b65792e3853746f7261676556657273696f6e01006509040004442053746f726167652076657273696f6e2e01510701dd0118784d61784e756d6265724f66544d457874656e73696f6e466f724173736574101005000000004841737365744e616d654d61784c656e677468101080000000006446756e64696e67526f756e644e616d654d61784c656e677468101080000000006841737365744d657461646174614e616d654d61784c656e677468101000010000006c41737365744d6574616461746156616c75654d61784c656e677468101000200000007441737365744d65746164617461547970654465664d61784c656e677468101000200000000169091a4c4361706974616c446973747269627574696f6e014c4361706974616c446973747269627574696f6e0c34446973747269627574696f6e73000104027102790204000c350120416c6c206361706974616c20646973747269627574696f6e732c207469656420746f207468656972207265737065637469766520636f72706f7261746520616374696f6e732028434173292e005c20284341496429203d3e20446973747269627574696f6e28486f6c64657250616964010104026d09190104000c8c2048617320616e20617373657420686f6c646572206265656e2070616964207965743f00a42028434149642c2044494429202d3e2057617320444944207061696420696e2074686520434149643f3853746f7261676556657273696f6e01007109040004442053746f726167652076657273696f6e2e017107016902000175091b28436865636b706f696e740128436865636b706f696e742c2c546f74616c537570706c79010108020579091840000000000000000000000000000000000cb420546f74616c20737570706c79206f662074686520746f6b656e2061742074686520636865636b706f696e742e00ec20287469636b65722c20636865636b706f696e74496429202d3e20746f74616c20737570706c7920617420676976656e20636865636b706f696e741c42616c616e636501010802057d091840000000000000000000000000000000000c882042616c616e6365206f66206120444944206174206120636865636b706f696e742e00050120287469636b65722c206469642c20636865636b706f696e7420494429202d3e2042616c616e6365206f66206120444944206174206120636865636b706f696e7450436865636b706f696e74496453657175656e636501010402a08902200000000000000000108c20436865636b706f696e74732049442067656e657261746f722073657175656e63652ea8204944206f6620666972737420636865636b706f696e74206973203120696e7374656164206f6620302e007c20287469636b657229202d3e206e6f2e206f6620636865636b706f696e74733842616c616e63655570646174657301010802053d098109040008bc20436865636b706f696e747320776865726520612044494427732062616c616e63652077617320757064617465642ef020287469636b65722c2064696429202d3e205b636865636b706f696e7420494420776865726520757365722062616c616e6365206368616e6765645d2854696d657374616d70730101080205790920200000000000000000185c20436865636b706f696e742074696d657374616d70732e000901204576657279207363686564756c652d6f726967696e6174656420636865636b706f696e74206d6170732069747320494420746f20697473206475652074696d652e210120457665727920636865636b706f696e74206d616e75616c6c792063726561746564206d6170732069747320494420746f207468652074696d65206f66207265636f7264696e672e00d020287469636b657229202d3e2028636865636b706f696e7420494429202d3e20636865636b706f696e742074696d657374616d70585363686564756c65734d6178436f6d706c657869747901002020000000000000000008190120546865206d6178696d756d20636f6d706c657869747920616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365749c2028692e652e20605363686564756c6573602073746f72616765206974656d2062656c6f77292e485363686564756c65496453657175656e636501010402a09d022000000000000000000cb420436865636b706f696e74207363686564756c652049442073657175656e636520666f72207469636b6572732e006020287469636b657229202d3e207363686564756c65204944245363686564756c657301010402a0850904000c8820436865636b706f696e74207363686564756c657320666f72207469636b6572732e005c20287469636b657229202d3e205b7363686564756c655d405363686564756c65526566436f756e740101080205890910100000000020010120486f77206d616e7920227374726f6e6722207265666572656e6365732061726520746865726520746f206120676976656e20605363686564756c654964603f00fc205468652070726573656e6365206f66206120227374726f6e6722207265666572656e63652c20696e207468652073656e7365206f66206052633c543e602ce020656e7461696c73207468617420746865207265666572656e636564207363686564756c652063616e6e6f742062652072656d6f7665642ed820546875732c206173206c6f6e6720617320607374726f6e675f7265665f636f756e74287363686564756c655f696429203e2030602cac206072656d6f76655f7363686564756c65287363686564756c655f696429602077696c6c206572726f722e00a820287469636b65722c207363686564756c6520494429202d3e207374726f6e672072656620636f756e74385363686564756c65506f696e747301010802058909810904000cc420416c6c2074686520636865636b706f696e7473206120676976656e207363686564756c65206f726967696e617465642e00a420287469636b65722c207363686564756c6520494429202d3e205b636865636b706f696e742049445d3853746f7261676556657273696f6e01008d09040004442053746f726167652076657273696f6e2e017907018102000191091c44436f6d706c69616e63654d616e616765720144436f6d706c69616e63654d616e616765720c404173736574436f6d706c69616e63657301010402a0950908000004e820417373657420636f6d706c69616e636520666f722061207469636b657220285469636b6572202d3e204173736574436f6d706c69616e6365294854727573746564436c61696d49737375657201010402a0bd02040004dc204c697374206f66207472757374656420636c61696d20697373756572205469636b6572202d3e20497373756572204964656e746974793853746f7261676556657273696f6e01009909040004442053746f726167652076657273696f6e2e01810701a10204584d6178436f6e646974696f6e436f6d706c657869747910103200000000019d091d3c436f72706f72617465416374696f6e013c436f72706f72617465416374696f6e24404d617844657461696c734c656e67746801001010000000001c5d012044657465726d696e657320746865206d6178696d756d206e756d626572206f6620627974657320746861742074686520667265652d666f726d206064657461696c7360206f6620612043412063616e2073746f72652e002901204e6f746520746861742074686973206973206e6f7420746865206e756d626572206f662060636861726073206f7220746865206e756d626572206f66205b6772617068656d65735d2e4101205768696c652074686973206d617920626520756e6e61747572616c20696e207465726d73206f662068756d616e20756e6465727374616e64696e67206f66206120746578742773206c656e6774682c6501206974206d6f726520636c6f73656c79207265666c656374732061637475616c2073746f7261676520636f73747320286027612760206973206368656170657220746f2073746f7265207468616e20616e20656d6f6a69292e00d0205b6772617068656d65735d3a2068747470733a2f2f656e2e77696b6970656469612e6f72672f77696b692f4772617068656d655c44656661756c745461726765744964656e74697469657301010402a0d90208000110f020546865206964656e7469746965732074617267657465642062792064656661756c7420666f722043417320666f722074686973207469636b65722c8c2065697468657220746f206265206578636c75646564206f7220696e636c756465642e007820287469636b6572203d3e20746172676574206964656e746974696573295444656661756c7457697468686f6c64696e6754617801010402a07d02100000000020ad01205468652064656661756c7420616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722074686973207469636b6572207768656e20646973747269627574696e67206469766964656e64732e00350120546f20756e6465727374616e642077697468686f6c64696e67207461782c20652e672e2c206c6574277320617373756d65207468617420796f7520686f6c642041434d45207368617265732ec42041434d45206e6f77206465636964657320746f2064697374726962757465203130302053454b20746f20416c6963652e590120416c696365206c6976657320696e2053776564656e2c20736f20536b617474657665726b6574202874686520537765646973682074617820617574686f72697479292077616e747320333025206f6620746861742e5d01205468656e2074686f736520313030202a2033302520617265207769746868656c642066726f6d20416c6963652c20616e642041434d452077696c6c2073656e64207468656d20746f20536b617474657665726b65742e006820287469636b6572203d3e202520746f2077697468686f6c64294444696457697468686f6c64696e6754617801010402a0f90204001049012054686520616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722061206365727461696e207469636b65722078204449442e6d0120496620616e20656e7472792065786973747320666f722061206365727461696e204449442c206974206f7665727269646573207468652064656661756c7420696e206044656661756c7457697468686f6c64696e67546178602e008820287469636b6572203d3e205b286469642c202520746f2077697468686f6c64295d304341496453657175656e636501010402a07502100000000008b420546865206e657874207065722d605469636b65726020434120494420696e207468652073657175656e63652e4d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652e40436f72706f72617465416374696f6e730001080205a109e5020400146c20416c6c207265636f72646564204341732074687573206661722ea4204f6e6c792067656e6572696320696e666f726d6174696f6e2069732073746f72656420686572652e7d01205370656369666963206043414b696e6460732c20652e672e2c2062656e656669747320616e6420636f72706f726174652062616c6c6f74732c206d617920757365206164646974696f6e616c206f6e2d636861696e2073746f726167652e00b420287469636b6572203d3e206c6f63616c204944203d3e2074686520636f72706f7261746520616374696f6e29244341446f634c696e6b0101040271020503040014d0204173736f63696174696f6e732066726f6d2043417320746f2060446f63756d656e74607320766961207468656972204944732e5c202843414964203d3e205b446f63756d656e7449645d29000501205468652060436f72706f72617465416374696f6e7360206d61702073746f72657320605469636b6572203d3e204c6f63616c4964203d3e20546865204341602c250120736f2077652063616e20696e66657220605469636b6572203d3e2043414964602e205468657265666f72652c20776520646f6e2774206e656564206120646f75626c65206d61702e1c44657461696c730101040271020103040008e8204173736f6369617465732064657461696c7320696e20667265652d666f726d207465787420776974682061204341206279206974732049442e50202843414964203d3e20434144657461696c73293853746f7261676556657273696f6e0100a509040004442053746f726167652076657273696f6e2e01850701d50208304d61785461726765744964731010e803000000284d6178446964576874731010e80300000001a9091e3c436f72706f7261746542616c6c6f74013c436f72706f7261746542616c6c6f7418144d65746173000104027102110304000c80204d65746164617461206f66206120636f72706f726174652062616c6c6f742e005420284341496429203d3e2042616c6c6f744d6574612854696d6552616e6765730001040271020d03040010e42054696d652064657461696c73206f66206120636f72706f726174652062616c6c6f74206173736f636961746564207769746820612043412ed0205468652074696d657374616d70732064656e6f7465207768656e20766f74696e672073746172747320616e642073746f70732e006820284341496429203d3e2042616c6c6f7454696d6552616e6765404d6f74696f6e4e756d43686f696365730101040271021d06040024c82053746f72657320686f77206d616e792063686f696365732074686572652061726520696e2065616368206d6f74696f6e2e00250120417420616c6c2074696d65732c2074686520696e76617269616e7420686f6c6473207468617420606d6f74696f6e5f63686f696365735b6964785d6020697320657175616c20746f310120606d657461732e756e7772617028292e6d6f74696f6e735b6964785d2e63686f696365732e6c656e2829602e20546861742069732c2074686973206973206a75737420612063616368652c1101207573656420746f2061766f6964206665746368696e6720616c6c20746865206d6f74696f6e732077697468207468656972206173736f6369617465642074657874732e0001012060753136602063686f696365732073686f756c64206265206d6f7265207468616e20656e6f75676820746f20666974207265616c207573652063617365732e00b020284341496429203d3e204e756d626572206f662063686f6963657320696e2065616368206d6f74696f6e2e0c5243560101040271021901040010dc2049732072616e6b65642063686f69636520766f74696e6720285243562920656e61626c656420666f7220746869732062616c6c6f743f650120466f7220616e20756e6465727374616e64696e67206f6620686f77205243562069732068616e646c65642c20736565206e6f7465206f6e206042616c6c6f74566f7465602773206066616c6c6261636b60206669656c642e003c20284341496429203d3e20626f6f6c1c526573756c7473010104027102ad0904001cb02053746f7265732074686520746f74616c20766f74652074616c6c79206f6e20656163682063686f6963652e006820524356206973206e6f74206163636f756e74656420666f722cd02061732074686572652061726520746f6f206d616e792077616e747320746f20696e74657270726574207468652067726170682c9c20616e64206265636175736520697420776f756c64206e6f7420626520656666696369656e742e008420284341496429203d3e205b63757272656e7420766f746520776569676874735d14566f74657301010802066d093103040018ac2053746f726573206561636820444944277320766f74657320696e206120676976656e2062616c6c6f742ef8205365652074686520646f63756d656e746174696f6e206f66206042616c6c6f74566f74656020666f72206e6f746573206f6e2073656d616e746963732e008420284341496429203d3e202844494429203d3e205b766f7465207765696768745d001d012055736572206d75737420656e746572203020766f746520776569676874206966207468657920646f6e27742077616e7420746f20766f746520666f7220612063686f6963652e019d070109030001b1091f2c5065726d697373696f6e730000000001b509201050697073011050697073544c5072756e65486973746f726963616c5069707301001901040004fc2044657465726d696e6573207768657468657220686973746f726963616c20504950206461746120697320706572736973746564206f722072656d6f766564584d696e696d756d50726f706f73616c4465706f7369740100184000000000000000000000000000000000041d0120546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f7220636f6d6d756e69747920504950206372656174696f6e2e5844656661756c74456e6163746d656e74506572696f6401001010000000000439012044656661756c7420656e6163746d656e7420706572696f6420746861742077696c6c2062652075736520616674657220612070726f706f73616c2069732061636365707465642062792047432e4050656e64696e6750697045787069727901003901040108f420486f77206d616e7920626c6f636b732077696c6c2069742074616b652c2061667465722061206050656e64696e67602050495020657870697265732cf420617373756d696e6720697420686173206e6f74207472616e736974696f6e656420746f20616e6f74686572206050726f706f73616c5374617465603f3c4d6178506970536b6970436f756e740100080400048901204d6178696d756d2074696d65732061205049502063616e20626520736b6970706564206265666f72652074726967676572696e67206043616e6e6f74536b69705069706020696e2060656e6163745f736e617073686f745f726573756c7473602e384163746976655069704c696d6974010010100000000008c420546865206d6178696d756d20616c6c6f776564206e756d62657220666f722060416374697665506970436f756e74602e0101204f6e636520726561636865642c206e657720504950732063616e6e6f742062652070726f706f73656420627920636f6d6d756e697479206d656d626572732e34506970496453657175656e636501004d0310000000000409012050726f706f73616c7320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f662050495073206f66662d636861696e2e48536e617073686f74496453657175656e6365010061031000000000041d0120536e617073686f747320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f6620736e617073686f7473206f66662d636861696e2e38416374697665506970436f756e74010010100000000004c820546f74616c20636f756e74206f662063757272656e742070656e64696e67206f72207363686564756c656420504950732e4050726f706f73616c4d65746164617461000104054d03b9090400049820546865206d65746164617461206f6620746865206163746976652070726f706f73616c732e204465706f736974730101080505bd09c109c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008842054686f73652077686f2068617665206c6f636b65642061206465706f7369742e8c2070726f706f73616c202869642c2070726f706f73657229202d3e206465706f7369742450726f706f73616c73000104054d03c509040008c42041637475616c2070726f706f73616c20666f72206120676976656e2069642c20696620697427732063757272656e742e602070726f706f73616c206964202d3e2070726f706f73616c3850726f706f73616c526573756c74010104054d03c909a00000000000000000000000000000000000000000000000000000000000000000000000000000000008d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e682070726f706f73616c206964202d3e20766f746520636f756e743450726f706f73616c566f7465730001080505bd09cd09040008050120566f746573207065722050726f706f73616c20616e64206163636f756e742e205573656420746f2061766f696420646f75626c6520766f74652069737375652e7c202870726f706f73616c2069642c206163636f756e7429202d3e20566f746534506970546f5363686564756c65000104054d0310040004fc204d617073205049507320746f2074686520626c6f636b20617420776869636820746865792077696c6c2062652065786563757465642c20696620616e792e244c697665517565756501006503040018cc2041206c697665207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029a0206f662070656e64696e67205049507320757020746f2074686520616374697665206c696d69742ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e00450120556e6c696b652060536e617073686f745175657565602c2074686973207175657565206973206c6976652c2067657474696e6720757064617465642077697468206561636820766f746520636173742e2d012054686520736e617073686f74206973207468657265666f726520657373656e7469616c6c79206120706f696e742d696e2d74696d6520636c6f6e65206f6620746869732071756575652e34536e617073686f74517565756501006503040014590120546865207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029206f6620504950732061742074686520706f696e74206f6620736e617073686f7474696e672ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e000901204120717565756564205049502063616e20626520736b69707065642e20446f696e6720736f2062756d70732074686520607069705f736b69705f636f756e74602e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e30536e617073686f744d6574610000d109040004bc20546865206d65746164617461206f662074686520736e617073686f742c206966207468657265206973206f6e652e30506970536b6970436f756e74010104054d0308040008d020546865206e756d626572206f662074696d65732061206365727461696e2050495020686173206265656e20736b69707065642e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e34436f6d6d69747465655069707301007d03040008d420416c6c206578697374696e672050495073207768657265207468652070726f706f736572206973206120636f6d6d69747465652e39012054686973206c6973742069732061206361636865206f6620616c6c2069647320696e206050726f706f73616c73602077697468206050726f706f7365723a3a436f6d6d6974746565285f29602e3853746f7261676556657273696f6e0100d50904000001a1070141030001d9092124506f7274666f6c696f0124506f7274666f6c696f244c4e657874506f7274666f6c696f4e756d626572010104067ce020010000000000000004cc20546865206e65787420706f7274666f6c696f2073657175656e6365206e756d626572206f6620616e206964656e746974792e28506f7274666f6c696f730101080605dd09850304000c41012054686520736574206f66206578697374696e6720706f7274666f6c696f732077697468207468656972206e616d65732e2049662061206365727461696e2070616972206f6620612044494420616e64590120706f7274666f6c696f206e756d626572206d61707320746f20604e6f6e6560207468656e2073756368206120706f7274666f6c696f20646f65736e27742065786973742e20436f6e76657273656c792c206966206135012070616972206d61707320746f2060536f6d65286e616d652960207468656e2073756368206120706f7274666f6c696f2065786973747320616e642069732063616c6c656420606e616d65602e304e616d65546f4e756d6265720101080602e109e020010000000000000008e420496e7665727365206d6170206f662060506f7274666f6c696f7360207573656420746f20656e737572652062696a6563746976697469792ca420616e6420756e697175656e657373206f66206e616d657320696e2060506f7274666f6c696f73602e4c506f7274666f6c696f4173736574436f756e7401010405d82020000000000000000004fc20486f77206d616e79206173736574732077697468206e6f6e2d7a65726f2062616c616e6365207468697320706f7274666f6c696f20636f6e7461696e732e58506f7274666f6c696f417373657442616c616e6365730101080502e5091840000000000000000000000000000000000488205468652061737365742062616c616e636573206f6620706f7274666f6c696f732e54506f7274666f6c696f4c6f636b65644173736574730101080502e50918400000000000000000000000000000000008a020416d6f756e74206f6620617373657473206c6f636b656420696e206120706f7274666f6c696f2e2d01205468657365206173736574732073686f7720757020696e20706f7274666f6c696f2062616c616e6365206275742063616e206e6f74206265207472616e7366657272656420617761792e48506f7274666f6c696f437573746f6469616e00010405d87c04000481012054686520637573746f6469616e206f66206120706172746963756c617220706f7274666f6c696f2e204e6f6e6520696d706c696573207468617420746865206964656e74697479206f776e65722069732074686520637573746f6469616e2e4c506f7274666f6c696f73496e437573746f64790101080605e909190104000c550120547261636b7320616c6c2074686520706f7274666f6c696f7320696e20637573746f6479206f66206120706172746963756c6172206964656e746974792e204f6e6c79207573656420627920746865205549732ea501205768656e206074727565602069732073746f726564206173207468652076616c756520666f72206120676976656e2060286469642c2070696429602c206974206d65616e73207468617420607069646020697320696e20637573746f6479206f662060646964602ea501206066616c7365602076616c75657320617265206e65766572206578706c696369746c792073746f72656420696e20746865206d61702c20616e642061726520696e737465616420696e6665727265642062792074686520616273656e6365206f662061206b65792e3853746f7261676556657273696f6e0100ed09040004442053746f726167652076657273696f6e2e01b1070181030001f109222c50726f746f636f6c466565012c50726f746f636f6c4665650820426173654665657301010405c10718400000000000000000000000000000000004150120546865206d617070696e67206f66206f7065726174696f6e206e616d657320746f2074686520626173652066656573206f662074686f7365206f7065726174696f6e732e2c436f656666696369656e7401009503200100000001000000041501205468652066656520636f656666696369656e74206173206120706f73697469766520726174696f6e616c20286e756d657261746f722c2064656e6f6d696e61746f72292e01bd070191030001f50923245363686564756c657201245363686564756c65720c184167656e64610101040510f9090400044d01204974656d7320746f2062652065786563757465642c20696e64657865642062792074686520626c6f636b206e756d626572207468617420746865792073686f756c64206265206578656375746564206f6e2e184c6f6f6b757000010405289d030400040101204c6f6f6b75702066726f6d206964656e7469747920746f2074686520626c6f636b206e756d62657220616e6420696e646578206f6620746865207461736b2e3853746f7261676556657273696f6e01001d0a04000c7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e0098204e6577206e6574776f726b732073746172742077697468206c6173742076657273696f6e2e01c50701990308344d6178696d756d576569676874202000806e877401000008450120546865206d6178696d756d207765696768742074686174206d6179206265207363686564756c65642070657220626c6f636b20666f7220616e7920646973706174636861626c6573206f66206c657373a4207072696f72697479207468616e20607363686564756c653a3a484152445f444541444c494e45602e504d61785363686564756c6564506572426c6f636b101032000000081d0120546865206d6178696d756d206e756d626572206f66207363686564756c65642063616c6c7320696e2074686520717565756520666f7220612073696e676c6520626c6f636b2edc204e6f74207374726963746c7920656e666f726365642c20627574207573656420666f722077656967687420657374696d6174696f6e2e01210a2428536574746c656d656e740128536574746c656d656e74442456656e7565496e666f00010405a503250a0400049820496e666f2061626f757420612076656e75652e2076656e75655f6964202d3e2076656e75651c44657461696c7301010405a503a903040008e420467265652d666f726d20746578742061626f757420612076656e75652e2076656e75655f6964202d3e206056656e756544657461696c736060204f6e6c79206e656564656420666f72207468652055492e4456656e7565496e737472756374696f6e730101080505290a350100107020496e737472756374696f6e7320756e64657220612076656e75652e60204f6e6c79206e656564656420666f72207468652055492e00842076656e75655f6964202d3e20696e737472756374696f6e5f6964202d3e2028293056656e75655369676e65727301010805052d0a1901040004e4205369676e65727320616c6c6f776564206279207468652076656e75652e202876656e75655f69642c207369676e657229202d3e20626f6f6c285573657256656e756573010104057cc9030400047101204172726179206f662076656e756573206372656174656420627920616e206964656e746974792e204f6e6c79206e656564656420666f72207468652055492e204964656e746974794964202d3e205665633c76656e75655f69643e48496e737472756374696f6e44657461696c7301010405b103310a540000000000000000000000000000000000000000000411012044657461696c732061626f757420616e20696e737472756374696f6e2e20696e737472756374696f6e5f6964202d3e20696e737472756374696f6e5f64657461696c733c496e737472756374696f6e4c6567730101080505390abd0379010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ec204c65677320756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656750496e737472756374696f6e4c65675374617475730101080505390a3d0a040004310120537461747573206f662061206c656720756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656753746174757364496e737472756374696f6e41666669726d7350656e64696e6701010405b10320200000000000000000048101204e756d626572206f662061666669726d6174696f6e732070656e64696e67206265666f726520696e737472756374696f6e2069732065786563757465642e20696e737472756374696f6e5f6964202d3e2061666669726d5f70656e64696e673c41666669726d7352656365697665640101080505410a450a040004990120547261636b732061666669726d6174696f6e7320726563656976656420666f7220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c20636f756e7465725f706172747929202d3e2041666669726d6174696f6e537461747573405573657241666669726d6174696f6e730101080505490a450a04000855012048656c70732061207573657220747261636b2074686569722070656e64696e6720696e737472756374696f6e7320616e642061666669726d6174696f6e7320286f6e6c79206e656564656420666f72205549292ed42028636f756e7465725f70617274792c20696e737472756374696f6e5f696429202d3e2041666669726d6174696f6e53746174757330526563656970747355736564010108050259081901040004150120547261636b7320726564656d7074696f6e206f662072656365697074732e20287369676e65722c20726563656970745f75696429202d3e20726563656970745f757365643856656e756546696c746572696e6701010402a01901040004fd0120547261636b73206966206120746f6b656e2068617320656e61626c65642066696c746572696e672076656e75657320746861742063616e2063726561746520696e737472756374696f6e7320696e766f6c76696e6720746865697220746f6b656e2e205469636b6572202d3e2066696c746572696e675f656e61626c65643856656e7565416c6c6f774c69737401010802054d0a1901040008c5012056656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c6172207469636b65722e204f6e6c7920757365642069662066696c746572696e6720697320656e61626c65642e7820287469636b65722c2076656e75655f696429202d3e20616c6c6f7765643056656e7565436f756e7465720100a503200000000000000000041901204e756d626572206f662076656e75657320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d6265722948496e737472756374696f6e436f756e7465720100b103200000000000000000043101204e756d626572206f6620696e737472756374696f6e7320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d626572293853746f7261676556657273696f6e0100510a040004442053746f726167652076657273696f6e2e01cd0701a1030001550a25285374617469737469637301285374617469737469637314404163746976654173736574537461747301010402d103e507040004d1012041637469766520737461747320666f722061207469636b65722f636f6d70616e792e202054686572652073686f756c642062652061206d6178206c696d6974206f6e20746865206e756d626572206f662061637469766520737461747320666f722061207469636b65722f636f6d70616e792e28417373657453746174730101080202590a18400000000000000000000000000000000004342041737365742073746174732e6041737365745472616e73666572436f6d706c69616e63657301010402d103610a080000043d01204173736574207472616e7366657220636f6d706c69616e636520666f722061207469636b65722028417373657453636f7065202d3e2041737365745472616e73666572436f6d706c69616e6365297c5472616e73666572436f6e646974696f6e4578656d7074456e7469746965730101080202650a1901040004c420456e746974696573206578656d70742066726f6d2061205472616e7366657220436f6d706c69616e63652072756c652e3853746f7261676556657273696f6e0100690a0400046c2053746f72616765206d6967726174696f6e2076657273696f6e2e01e10701cd0308404d61785374617473506572417373657410100a00000000744d61785472616e73666572436f6e646974696f6e73506572417373657410100400000000016d0a260c53746f010c53746f0c2c46756e64726169736572730001080205710a2104040008b020416c6c2066756e64726169736572732074686174206172652063757272656e746c792072756e6e696e672e9820287469636b65722c2066756e647261697365725f696429202d3e2046756e647261697365723c46756e64726169736572436f756e7401010402a01904200000000000000000049c20546f74616c2066756e6472616973657273206372656174656420666f72206120746f6b656e2e3c46756e647261697365724e616d65730101080205710a1d04040008b4204e616d6520666f72207468652046756e647261697365722e204f6e6c792075736564206f6666636861696e2eac20287469636b65722c2066756e647261697365725f696429202d3e2046756e64726169736572206e616d6501f5070115040001750a27205472656173757279000105080131040001790a281c5574696c697479011c5574696c69747904184e6f6e6365730101040500202000000000000000000001110801350400017d0a29104261736500011d0801450404184d61784c656e1010000800000001810a2a3845787465726e616c4167656e7473013845787465726e616c4167656e747314304147496453657175656e636501010402a01501100000000010b420546865206e657874207065722d605469636b65726020414720494420696e207468652073657175656e63652e004d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652c90207768696368207374617274732066726f6d20312c20726174686572207468616e20302e1c4167656e744f6601010802024509350100042901204d61707320616e206167656e742028604964656e746974794964602920746f20616c6c20616c6c20605469636b6572607320746865792062656c6f6e6720746f2c20696620616e792e3047726f75704f664167656e7400010802053d0911010400043501204d617073206167656e74732028604964656e746974794964602920666f72206120605469636b65726020746f207768617420414720746865792062656c6f6e6720746f2c20696620616e792e344e756d46756c6c4167656e747301010402a010100000000004dc204d617073206120605469636b65726020746f20746865206e756d626572206f66206046756c6c60206167656e747320666f722069742e4047726f75705065726d697373696f6e730001080205850ab00400045d0120466f7220637573746f6d20414773206f66206120605469636b6572602c206d61707320746f2077686174207065726d697373696f6e7320616e206167656e7420696e207468617420414720776f756c6420686176652e012108014d040001890a2b1c52656c61796572011c52656c61796572042453756273696469657300010402008d0a040018ec20546865207375627369647920666f7220612060757365725f6b657960206966207468657920617265206265696e6720737562736964697365642c882061732061206d61702060757365725f6b657960203d3e206053756273696479602e0009012041206b65792063616e206f6e6c792068617665206f6e65207375627369647920617420612074696d652e2020546f206368616e67652073756273696469736572731d012061206b6579206e6565647320746f2063616c6c206072656d6f76655f706179696e675f6b65796020746f2072656d6f7665207468652063757272656e7420737562736964792ca4206265666f726520746865792063616e206163636570742061206e657720737562736964697365722e0125080151040001910a2c1c52657761726473011c52657761726473042849746e5265776172647300010402002d080400040101204d6170206f66202849746e204164647265737320604163636f756e7449646029202d3e2028526577617264206049746e52657761726453746174757360292e0129080155040001950a2d24546573745574696c730124546573745574696c73000131080159040001990a329d0a042040436865636b5370656356657273696f6ea50a1038436865636b547856657273696f6ea90a1030436865636b47656e65736973ad0a2438436865636b4d6f7274616c697479b10a2428436865636b4e6f6e6365b90a35012c436865636b576569676874bd0a3501604368617267655472616e73616374696f6e5061796d656e74c50a35014453746f726543616c6c4d65746164617461c90a3501cd0a","id":"1"} diff --git a/scripts/cli/src/__tests__/4_permission_management.ts b/scripts/cli/src/__tests__/4_permission_management.ts index d9cf78c0dd..df7ac21be8 100644 --- a/scripts/cli/src/__tests__/4_permission_management.ts +++ b/scripts/cli/src/__tests__/4_permission_management.ts @@ -2,7 +2,7 @@ import * as init from "../util/init"; import { createIdentities, authorizeJoinToIdentities, - setPermissionToSigner, + setSecondaryKeyPermissions, } from "../helpers/identity_helper"; import { distributePolyBatch } from "../helpers/poly_helper"; import { addSecondaryKeys } from "../helpers/key_management_helper"; @@ -69,7 +69,7 @@ describe("4 - Permission Management Unit Test", () => { expect(portfolioOutput).toBeFalsy(); setExtrinsic(extrinsics, "Portfolio", "create_portfolio"); - await setPermissionToSigner( + await setSecondaryKeyPermissions( primaryKeys, secondaryKeys, extrinsics, @@ -80,7 +80,7 @@ describe("4 - Permission Management Unit Test", () => { expect(portfolioOutput).toBeTruthy(); setExtrinsic(extrinsics, "Portfolio", "move_portfolio_funds"); - await setPermissionToSigner( + await setSecondaryKeyPermissions( primaryKeys, secondaryKeys, extrinsics, @@ -97,7 +97,7 @@ describe("4 - Permission Management Unit Test", () => { await setPortfolio(portfolios, primaryKeys[0], "Default"); await setPortfolio(portfolios, secondaryKeys[0], "User"); - await setPermissionToSigner( + await setSecondaryKeyPermissions( primaryKeys, secondaryKeys, extrinsics, @@ -114,7 +114,7 @@ describe("4 - Permission Management Unit Test", () => { expect(portfolioFundsOutput).toBeTruthy(); setExtrinsic(extrinsics, "Asset", "add_documents"); - await setPermissionToSigner( + await setSecondaryKeyPermissions( primaryKeys, secondaryKeys, extrinsics, @@ -127,7 +127,7 @@ describe("4 - Permission Management Unit Test", () => { console.log("after docs"); setAsset(ticker, assets); - await setPermissionToSigner( + await setSecondaryKeyPermissions( primaryKeys, secondaryKeys, extrinsics, diff --git a/scripts/cli/src/commands/helpers/identity_helper.ts b/scripts/cli/src/commands/helpers/identity_helper.ts index de947636f6..a452a101b2 100644 --- a/scripts/cli/src/commands/helpers/identity_helper.ts +++ b/scripts/cli/src/commands/helpers/identity_helper.ts @@ -1,4 +1,4 @@ -import { nonces, sendTransaction } from "../util/init"; +import { nonces, sendTransaction, keyToIdentityIds } from "../util/init"; import { IKeyringPair } from "@polkadot/types/types"; import { ApiPromise } from "@polkadot/api"; import { SecondaryKey } from "../../types"; @@ -40,9 +40,7 @@ const createIdentitiesWithExpiry = async function ( } for (let i = 0; i < accounts.length; i++) { - const d: any = await api.query.identity.keyToIdentityIds( - accounts[i].publicKey - ); + const d: any = await keyToIdentityIds(accounts[i].publicKey); dids.push(d.toHuman().Unique); } diff --git a/scripts/cli/src/helpers/identity_helper.ts b/scripts/cli/src/helpers/identity_helper.ts index 18bde3cc52..b5933cc870 100644 --- a/scripts/cli/src/helpers/identity_helper.ts +++ b/scripts/cli/src/helpers/identity_helper.ts @@ -48,7 +48,7 @@ export async function addClaimsToDids( /** * @description Sets permission to signer key */ -export async function setPermissionToSigner( +export async function setSecondaryKeyPermissions( signers: KeyringPair[], receivers: KeyringPair[], extrinsic: ExtrinsicPermissions, @@ -63,11 +63,9 @@ export async function setPermissionToSigner( }; for (let i in signers) { - let signer = { - Account: receivers[i].publicKey as AccountId, - }; - let transaction = api.tx.identity.setPermissionToSigner( - signer, + let key = receivers[i].publicKey as AccountId; + let transaction = api.tx.identity.setSecondaryKeyPermissions( + key, permissions ); await sendTx(signers[i], transaction); @@ -122,9 +120,9 @@ export async function createIdentitiesWithExpiry( let dids: IdentityId[] = []; for (let account of receivers) { - let account_did = await keyToIdentityIds(account.publicKey); + let account_did = (await keyToIdentityIds(account.publicKey)).toString(); - if (account_did.isEmpty) { + if (parseInt(account_did) == 0) { console.log(`>>>> [Register CDD Claim] acc: ${account.address}`); const transaction = api.tx.identity.cddRegisterDid(account.address, []); await sendTx(signer, transaction); diff --git a/scripts/cli/src/interfaces/augment-api-errors.ts b/scripts/cli/src/interfaces/augment-api-errors.ts index 0e8a17c7d3..b9678a0241 100644 --- a/scripts/cli/src/interfaces/augment-api-errors.ts +++ b/scripts/cli/src/interfaces/augment-api-errors.ts @@ -967,6 +967,10 @@ declare module '@polkadot/api-base/types/errors' { * Signer is an account key that is already associated with a multisig. **/ SignerAlreadyLinkedToMultisig: AugmentedError; + /** + * Signer is the multisig. The multisig account can't be a signer to itself. + **/ + SignerSameAsMultisig: AugmentedError; /** * More signers than required. **/ diff --git a/scripts/cli/src/interfaces/augment-api-events.ts b/scripts/cli/src/interfaces/augment-api-events.ts index d45fad61d4..ef674f4c8f 100644 --- a/scripts/cli/src/interfaces/augment-api-events.ts +++ b/scripts/cli/src/interfaces/augment-api-events.ts @@ -5,7 +5,7 @@ import type { ApiTypes } from '@polkadot/api-base/types'; import type { Bytes, Null, Option, Result, U8aFixed, Vec, bool, u128, u32, u64, u8 } from '@polkadot/types-codec'; import type { ITuple } from '@polkadot/types-codec/types'; import type { AccountId32, H256, Perbill, Permill } from '@polkadot/types/interfaces/runtime'; -import type { FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchInfo, PalletBridgeBridgeTx, PalletBridgeHandledTxStatus, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsCaId, PalletCorporateActionsCorporateAction, PalletCorporateActionsDistribution, PalletCorporateActionsTargetIdentities, PalletImOnlineSr25519AppSr25519Public, PalletPipsProposalData, PalletPipsProposalState, PalletPipsProposer, PalletPipsSnapshottedPip, PalletSettlementLeg, PalletSettlementSettlementType, PalletSettlementVenueType, PalletStakingElectionCompute, PalletStakingExposure, PalletStakingSlashingSwitch, PalletStoFundraiser, PolymeshCommonUtilitiesBalancesMemo, PolymeshCommonUtilitiesCheckpointStoredSchedule, PolymeshCommonUtilitiesMaybeBlock, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetAssetType, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAssetMetadataAssetMetadataSpec, PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail, PolymeshPrimitivesAuthorizationAuthorizationData, PolymeshPrimitivesCddIdInvestorUid, PolymeshPrimitivesComplianceManagerComplianceRequirement, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesEthereumEthereumAddress, PolymeshPrimitivesEventOnly, PolymeshPrimitivesIdentityClaim, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKeyApiSecondaryKey, PolymeshPrimitivesSecondaryKeyPermissions, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesStatisticsAssetScope, PolymeshPrimitivesStatisticsStatType, PolymeshPrimitivesStatisticsStatUpdate, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesTicker, PolymeshPrimitivesTransferComplianceTransferCondition, PolymeshPrimitivesTransferComplianceTransferConditionExemptKey, SpFinalityGrandpaAppPublic, SpRuntimeDispatchError } from '@polkadot/types/lookup'; +import type { FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchInfo, PalletBridgeBridgeTx, PalletBridgeHandledTxStatus, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsCaId, PalletCorporateActionsCorporateAction, PalletCorporateActionsDistribution, PalletCorporateActionsTargetIdentities, PalletImOnlineSr25519AppSr25519Public, PalletPipsProposalData, PalletPipsProposalState, PalletPipsProposer, PalletPipsSnapshottedPip, PalletSettlementLeg, PalletSettlementSettlementType, PalletSettlementVenueType, PalletStakingElectionCompute, PalletStakingExposure, PalletStakingSlashingSwitch, PalletStoFundraiser, PolymeshCommonUtilitiesBalancesMemo, PolymeshCommonUtilitiesCheckpointStoredSchedule, PolymeshCommonUtilitiesMaybeBlock, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetAssetType, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAssetMetadataAssetMetadataSpec, PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail, PolymeshPrimitivesAuthorizationAuthorizationData, PolymeshPrimitivesCddIdInvestorUid, PolymeshPrimitivesComplianceManagerComplianceRequirement, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesEthereumEthereumAddress, PolymeshPrimitivesEventOnly, PolymeshPrimitivesIdentityClaim, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKey, PolymeshPrimitivesSecondaryKeyPermissions, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesStatisticsAssetScope, PolymeshPrimitivesStatisticsStatType, PolymeshPrimitivesStatisticsStatUpdate, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesTicker, PolymeshPrimitivesTransferComplianceTransferCondition, PolymeshPrimitivesTransferComplianceTransferConditionExemptKey, SpFinalityGrandpaAppPublic, SpRuntimeDispatchError } from '@polkadot/types/lookup'; declare module '@polkadot/api-base/types/events' { export interface AugmentedEvents { @@ -598,87 +598,108 @@ declare module '@polkadot/api-base/types/events' { }; identity: { /** - * Asset DID + * Asset's identity registered. + * + * (Asset DID, ticker) **/ AssetDidRegistered: AugmentedEvent; /** * New authorization added. + * * (authorised_by, target_did, target_key, auth_id, authorization_data, expiry) **/ AuthorizationAdded: AugmentedEvent, Option, u64, PolymeshPrimitivesAuthorizationAuthorizationData, Option]>; /** * Authorization consumed. + * * (authorized_identity, authorized_key, auth_id) **/ AuthorizationConsumed: AugmentedEvent, Option, u64]>; /** * Authorization rejected by the user who was authorized. + * * (authorized_identity, authorized_key, auth_id) **/ AuthorizationRejected: AugmentedEvent, Option, u64]>; /** * Authorization revoked by the authorizer. + * * (authorized_identity, authorized_key, auth_id) **/ AuthorizationRevoked: AugmentedEvent, Option, u64]>; /** * CDD claims generated by `IdentityId` (a CDD Provider) have been invalidated from * `Moment`. + * + * (CDD provider DID, disable from date) **/ CddClaimsInvalidated: AugmentedEvent; /** - * CDD requirement for updating primary key changed. (new_requirement) + * CDD requirement for updating primary key changed. + * + * (new_requirement) **/ CddRequirementForPrimaryKeyUpdated: AugmentedEvent; /** - * DID, claims + * Claim added to identity. + * + * (DID, claim) **/ ClaimAdded: AugmentedEvent; /** - * DID, ClaimType, Claim Issuer + * Claim revoked from identity. + * + * (DID, claim) **/ ClaimRevoked: AugmentedEvent; /** - * DID, primary key account ID, secondary keys - **/ - DidCreated: AugmentedEvent]>; - /** - * Mocked InvestorUid created. + * Identity created. + * + * (DID, primary key, secondary keys) **/ - MockInvestorUIDCreated: AugmentedEvent; + DidCreated: AugmentedEvent]>; /** - * Off-chain Authorization has been revoked. - * (Target Identity, Signatory) + * Primary key of identity changed. + * + * (DID, old primary key account ID, new ID) **/ - OffChainAuthorizationRevoked: AugmentedEvent; + PrimaryKeyUpdated: AugmentedEvent; /** - * DID, old primary key account ID, new ID + * A secondary key left their identity. + * + * (DID, secondary key) **/ - PrimaryKeyUpdated: AugmentedEvent; + SecondaryKeyLeftIdentity: AugmentedEvent; /** - * DID, updated secondary key, previous permissions, new permissions + * Secondary key permissions updated. + * + * (DID, updated secondary key, previous permissions, new permissions) **/ - SecondaryKeyPermissionsUpdated: AugmentedEvent; + SecondaryKeyPermissionsUpdated: AugmentedEvent; /** - * DID, new keys + * Secondary keys added to identity. + * + * (DID, new keys) **/ - SecondaryKeysAdded: AugmentedEvent]>; + SecondaryKeysAdded: AugmentedEvent]>; /** * All Secondary keys of the identity ID are frozen. + * + * (DID) **/ SecondaryKeysFrozen: AugmentedEvent; /** - * DID, the keys that got removed + * Secondary keys removed from identity. + * + * (DID, the keys that got removed) **/ - SecondaryKeysRemoved: AugmentedEvent]>; + SecondaryKeysRemoved: AugmentedEvent]>; /** * All Secondary keys of the identity ID are unfrozen. + * + * (DID) **/ SecondaryKeysUnfrozen: AugmentedEvent; - /** - * A signer left their identity. (did, signer) - **/ - SignerLeft: AugmentedEvent; /** * Generic event **/ diff --git a/scripts/cli/src/interfaces/augment-api-query.ts b/scripts/cli/src/interfaces/augment-api-query.ts index e3d5c0ca1f..1331ac148f 100644 --- a/scripts/cli/src/interfaces/augment-api-query.ts +++ b/scripts/cli/src/interfaces/augment-api-query.ts @@ -5,7 +5,7 @@ import type { ApiTypes } from '@polkadot/api-base/types'; import type { Bytes, Null, Option, U8aFixed, Vec, WrapperOpaque, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec'; import type { AnyNumber, ITuple } from '@polkadot/types-codec/types'; import type { AccountId32, Call, H256, Perbill, Permill } from '@polkadot/types/interfaces/runtime'; -import type { BTreeSetStatType, FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, PalletAssetAssetOwnershipRelation, PalletAssetClassicTickerRegistration, PalletAssetSecurityToken, PalletAssetTickerRegistration, PalletAssetTickerRegistrationConfig, PalletAuthorshipUncleEntryItem, PalletBalancesBalanceLock, PalletBridgeBridgeTxDetail, PalletCommitteePolymeshVotes, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsCaId, PalletCorporateActionsCorporateAction, PalletCorporateActionsDistribution, PalletCorporateActionsTargetIdentities, PalletGrandpaStoredPendingChange, PalletGrandpaStoredState, PalletIdentityClaim1stKey, PalletIdentityClaim2ndKey, PalletImOnlineBoundedOpaqueNetworkState, PalletImOnlineSr25519AppSr25519Public, PalletMultisigProposalDetails, PalletPipsDepositInfo, PalletPipsPip, PalletPipsPipsMetadata, PalletPipsSnapshotMetadata, PalletPipsSnapshottedPip, PalletPipsVote, PalletPipsVotingResult, PalletRelayerSubsidy, PalletRewardsItnRewardStatus, PalletSchedulerReleases, PalletSchedulerScheduledV2, PalletSettlementAffirmationStatus, PalletSettlementInstruction, PalletSettlementLeg, PalletSettlementLegStatus, PalletSettlementVenue, PalletStakingActiveEraInfo, PalletStakingElectionResult, PalletStakingElectionStatus, PalletStakingEraRewardPoints, PalletStakingExposure, PalletStakingForcing, PalletStakingNominations, PalletStakingPermissionedIdentityPrefs, PalletStakingReleases, PalletStakingRewardDestination, PalletStakingSlashingSlashingSpans, PalletStakingSlashingSpanRecord, PalletStakingSlashingSwitch, PalletStakingStakingLedger, PalletStakingUnappliedSlash, PalletStakingValidatorPrefs, PalletStoFundraiser, PalletTransactionPaymentReleases, PolymeshCommonUtilitiesCheckpointStoredSchedule, PolymeshCommonUtilitiesGroupInactiveMember, PolymeshCommonUtilitiesMaybeBlock, PolymeshCommonUtilitiesProtocolFeeProtocolOp, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAssetMetadataAssetMetadataKey, PolymeshPrimitivesAssetMetadataAssetMetadataSpec, PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail, PolymeshPrimitivesAuthorization, PolymeshPrimitivesComplianceManagerAssetCompliance, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesIdentity, PolymeshPrimitivesIdentityClaim, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesStatisticsAssetScope, PolymeshPrimitivesStatisticsStat1stKey, PolymeshPrimitivesStatisticsStat2ndKey, PolymeshPrimitivesStatisticsStatType, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesTicker, PolymeshPrimitivesTransferComplianceAssetTransferCompliance, PolymeshPrimitivesTransferComplianceTransferConditionExemptKey, PolymeshRuntimeDevelopRuntimeSessionKeys, SpConsensusBabeAppPublic, SpConsensusBabeBabeEpochConfiguration, SpConsensusBabeDigestsNextConfigDescriptor, SpCoreCryptoKeyTypeId, SpRuntimeDigest, SpStakingOffenceOffenceDetails } from '@polkadot/types/lookup'; +import type { BTreeSetStatType, FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, PalletAssetAssetOwnershipRelation, PalletAssetClassicTickerRegistration, PalletAssetSecurityToken, PalletAssetTickerRegistration, PalletAssetTickerRegistrationConfig, PalletAuthorshipUncleEntryItem, PalletBalancesBalanceLock, PalletBridgeBridgeTxDetail, PalletCommitteePolymeshVotes, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsCaId, PalletCorporateActionsCorporateAction, PalletCorporateActionsDistribution, PalletCorporateActionsTargetIdentities, PalletGrandpaStoredPendingChange, PalletGrandpaStoredState, PalletIdentityClaim1stKey, PalletIdentityClaim2ndKey, PalletImOnlineBoundedOpaqueNetworkState, PalletImOnlineSr25519AppSr25519Public, PalletMultisigProposalDetails, PalletPipsDepositInfo, PalletPipsPip, PalletPipsPipsMetadata, PalletPipsSnapshotMetadata, PalletPipsSnapshottedPip, PalletPipsVote, PalletPipsVotingResult, PalletRelayerSubsidy, PalletRewardsItnRewardStatus, PalletSchedulerReleases, PalletSchedulerScheduledV2, PalletSettlementAffirmationStatus, PalletSettlementInstruction, PalletSettlementLeg, PalletSettlementLegStatus, PalletSettlementVenue, PalletStakingActiveEraInfo, PalletStakingElectionResult, PalletStakingElectionStatus, PalletStakingEraRewardPoints, PalletStakingExposure, PalletStakingForcing, PalletStakingNominations, PalletStakingPermissionedIdentityPrefs, PalletStakingReleases, PalletStakingRewardDestination, PalletStakingSlashingSlashingSpans, PalletStakingSlashingSpanRecord, PalletStakingSlashingSwitch, PalletStakingStakingLedger, PalletStakingUnappliedSlash, PalletStakingValidatorPrefs, PalletStoFundraiser, PalletTransactionPaymentReleases, PolymeshCommonUtilitiesCheckpointStoredSchedule, PolymeshCommonUtilitiesGroupInactiveMember, PolymeshCommonUtilitiesMaybeBlock, PolymeshCommonUtilitiesProtocolFeeProtocolOp, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAssetMetadataAssetMetadataKey, PolymeshPrimitivesAssetMetadataAssetMetadataSpec, PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail, PolymeshPrimitivesAuthorization, PolymeshPrimitivesComplianceManagerAssetCompliance, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesIdentityClaim, PolymeshPrimitivesIdentityDidRecord, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKeyKeyRecord, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesStatisticsAssetScope, PolymeshPrimitivesStatisticsStat1stKey, PolymeshPrimitivesStatisticsStat2ndKey, PolymeshPrimitivesStatisticsStatType, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesTicker, PolymeshPrimitivesTransferComplianceAssetTransferCompliance, PolymeshPrimitivesTransferComplianceTransferConditionExemptKey, PolymeshRuntimeDevelopRuntimeSessionKeys, SpConsensusBabeAppPublic, SpConsensusBabeBabeEpochConfiguration, SpConsensusBabeDigestsNextConfigDescriptor, SpCoreCryptoKeyTypeId, SpRuntimeDigest, SpStakingOffenceOffenceDetails } from '@polkadot/types/lookup'; import type { Observable } from '@polkadot/types/types'; declare module '@polkadot/api-base/types/storage' { @@ -732,15 +732,22 @@ declare module '@polkadot/api-base/types/storage' { * It stores the current gas fee payer for the current transaction **/ currentPayer: AugmentedQuery Observable>, []> & QueryableStorageEntry; + /** + * A reverse double map to allow finding all keys for an identity. + **/ + didKeys: AugmentedQuery Observable, [PolymeshPrimitivesIdentityId, AccountId32]> & QueryableStorageEntry; /** * DID -> identity info **/ - didRecords: AugmentedQuery Observable, [PolymeshPrimitivesIdentityId]> & QueryableStorageEntry; + didRecords: AugmentedQuery Observable>, [PolymeshPrimitivesIdentityId]> & QueryableStorageEntry; /** * DID -> bool that indicates if secondary keys are frozen. **/ isDidFrozen: AugmentedQuery Observable, [PolymeshPrimitivesIdentityId]> & QueryableStorageEntry; - keyToIdentityIds: AugmentedQuery Observable, [AccountId32]> & QueryableStorageEntry; + /** + * Map from AccountId to `KeyRecord` that holds the key's identity and permissions. + **/ + keyRecords: AugmentedQuery Observable>, [AccountId32]> & QueryableStorageEntry; /** * Nonce to ensure unique actions. starts from 1. **/ @@ -803,10 +810,6 @@ declare module '@polkadot/api-base/types/storage' { [key: string]: QueryableStorageEntry; }; multiSig: { - /** - * Maps a multisig signer key to a multisig address. - **/ - keyToMultiSig: AugmentedQuery Observable, [AccountId32]> & QueryableStorageEntry; /** * Nonce to ensure unique MultiSig addresses are generated; starts from 1. **/ @@ -843,6 +846,10 @@ declare module '@polkadot/api-base/types/storage' { * Proposals presented for voting to a multisig (multisig, proposal id) => Option. **/ proposals: AugmentedQuery | [AccountId32 | string | Uint8Array, u64 | AnyNumber | Uint8Array]) => Observable>, [ITuple<[AccountId32, u64]>]> & QueryableStorageEntry]>; + /** + * Storage version. + **/ + storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * The last transaction version, used for `on_runtime_upgrade`. **/ diff --git a/scripts/cli/src/interfaces/augment-api-tx.ts b/scripts/cli/src/interfaces/augment-api-tx.ts index ec0e1b77b5..25c945ba68 100644 --- a/scripts/cli/src/interfaces/augment-api-tx.ts +++ b/scripts/cli/src/interfaces/augment-api-tx.ts @@ -5,7 +5,7 @@ import type { ApiTypes } from '@polkadot/api-base/types'; import type { Bytes, Compact, Option, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec'; import type { AnyNumber, ITuple } from '@polkadot/types-codec/types'; import type { AccountId32, Call, H256, MultiAddress, Perbill, Percent, Permill } from '@polkadot/types/interfaces/runtime'; -import type { BTreeSetIdentityId, BTreeSetStatType, BTreeSetStatUpdate, BTreeSetTransferCondition, ConfidentialIdentityClaimProofsScopeClaimProof, PalletAssetCheckpointScheduleSpec, PalletAssetClassicTickerImport, PalletAssetTickerRegistrationConfig, PalletBridgeBridgeTx, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsCaId, PalletCorporateActionsCaKind, PalletCorporateActionsInitiateCorporateActionArgs, PalletCorporateActionsRecordDateSpec, PalletCorporateActionsTargetIdentities, PalletImOnlineHeartbeat, PalletImOnlineSr25519AppSr25519Signature, PalletPipsSnapshotResult, PalletPortfolioMovePortfolioItem, PalletRewardsItnRewardStatus, PalletSettlementLeg, PalletSettlementReceiptDetails, PalletSettlementSettlementType, PalletSettlementVenueType, PalletStakingCompactAssignments, PalletStakingElectionSize, PalletStakingRewardDestination, PalletStakingSlashingSwitch, PalletStakingValidatorPrefs, PalletStoPriceTier, PalletUtilityUniqueCall, PolymeshCommonUtilitiesBalancesMemo, PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth, PolymeshCommonUtilitiesMaybeBlock, PolymeshCommonUtilitiesProtocolFeeProtocolOp, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetAssetType, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAssetMetadataAssetMetadataKey, PolymeshPrimitivesAssetMetadataAssetMetadataSpec, PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail, PolymeshPrimitivesAuthorizationAuthorizationData, PolymeshPrimitivesBeneficiary, PolymeshPrimitivesCddIdInvestorUid, PolymeshPrimitivesComplianceManagerComplianceRequirement, PolymeshPrimitivesCondition, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesEthereumEcdsaSignature, PolymeshPrimitivesIdentityClaimClaim, PolymeshPrimitivesIdentityClaimClaimType, PolymeshPrimitivesIdentityClaimScope, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKey, PolymeshPrimitivesSecondaryKeyApiLegacyPermissions, PolymeshPrimitivesSecondaryKeyPermissions, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesStatisticsAssetScope, PolymeshPrimitivesStatisticsStatType, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesTicker, PolymeshPrimitivesTransferComplianceTransferConditionExemptKey, PolymeshRuntimeDevelopRuntimeSessionKeys, SpConsensusBabeDigestsNextConfigDescriptor, SpConsensusSlotsEquivocationProof, SpCoreChangesTrieChangesTrieConfiguration, SpFinalityGrandpaEquivocationProof, SpRuntimeHeader, SpRuntimeMultiSignature, SpSessionMembershipProof } from '@polkadot/types/lookup'; +import type { BTreeSetIdentityId, BTreeSetStatType, BTreeSetStatUpdate, BTreeSetTransferCondition, ConfidentialIdentityClaimProofsScopeClaimProof, PalletAssetCheckpointScheduleSpec, PalletAssetClassicTickerImport, PalletAssetTickerRegistrationConfig, PalletBridgeBridgeTx, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsCaId, PalletCorporateActionsCaKind, PalletCorporateActionsInitiateCorporateActionArgs, PalletCorporateActionsRecordDateSpec, PalletCorporateActionsTargetIdentities, PalletImOnlineHeartbeat, PalletImOnlineSr25519AppSr25519Signature, PalletPipsSnapshotResult, PalletPortfolioMovePortfolioItem, PalletRewardsItnRewardStatus, PalletSettlementLeg, PalletSettlementReceiptDetails, PalletSettlementSettlementType, PalletSettlementVenueType, PalletStakingCompactAssignments, PalletStakingElectionSize, PalletStakingRewardDestination, PalletStakingSlashingSwitch, PalletStakingValidatorPrefs, PalletStoPriceTier, PalletUtilityUniqueCall, PolymeshCommonUtilitiesBalancesMemo, PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth, PolymeshCommonUtilitiesMaybeBlock, PolymeshCommonUtilitiesProtocolFeeProtocolOp, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetAssetType, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAssetMetadataAssetMetadataKey, PolymeshPrimitivesAssetMetadataAssetMetadataSpec, PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail, PolymeshPrimitivesAuthorizationAuthorizationData, PolymeshPrimitivesBeneficiary, PolymeshPrimitivesCddIdInvestorUid, PolymeshPrimitivesComplianceManagerComplianceRequirement, PolymeshPrimitivesCondition, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesEthereumEcdsaSignature, PolymeshPrimitivesIdentityClaimClaim, PolymeshPrimitivesIdentityClaimClaimType, PolymeshPrimitivesIdentityClaimScope, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKey, PolymeshPrimitivesSecondaryKeyPermissions, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesStatisticsAssetScope, PolymeshPrimitivesStatisticsStatType, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesTicker, PolymeshPrimitivesTransferComplianceTransferConditionExemptKey, PolymeshRuntimeDevelopRuntimeSessionKeys, SpConsensusBabeDigestsNextConfigDescriptor, SpConsensusSlotsEquivocationProof, SpCoreChangesTrieChangesTrieConfiguration, SpFinalityGrandpaEquivocationProof, SpRuntimeHeader, SpRuntimeMultiSignature, SpSessionMembershipProof } from '@polkadot/types/lookup'; declare module '@polkadot/api-base/types/submittable' { export interface AugmentedSubmittables { @@ -1649,7 +1649,7 @@ declare module '@polkadot/api-base/types/submittable' { * # Weight * `7_000_000_000 + 600_000 * secondary_keys.len()` **/ - cddRegisterDid: AugmentedSubmittable<(targetAccount: AccountId32 | string | Uint8Array, secondaryKeys: Vec | (PolymeshPrimitivesSecondaryKey | { signer?: any; permissions?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [AccountId32, Vec]>; + cddRegisterDid: AugmentedSubmittable<(targetAccount: AccountId32 | string | Uint8Array, secondaryKeys: Vec | (PolymeshPrimitivesSecondaryKey | { key?: any; permissions?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [AccountId32, Vec]>; /** * Set if CDD authorization is required for updating primary key of an identity. * Callable via root (governance) @@ -1688,12 +1688,6 @@ declare module '@polkadot/api-base/types/submittable' { * Leave the secondary key's identity. **/ leaveIdentityAsKey: AugmentedSubmittable<() => SubmittableExtrinsic, []>; - /** - * This function is a workaround for https://github.com/polkadot-js/apps/issues/3632 - * It sets permissions for an specific `target_key` key. - * Only the primary key of an identity is able to set secondary key permissions. - **/ - legacySetPermissionToSigner: AugmentedSubmittable<(signer: PolymeshPrimitivesSecondaryKeySignatory | { Identity: any } | { Account: any } | string | Uint8Array, permissions: PolymeshPrimitivesSecondaryKeyApiLegacyPermissions | { asset?: any; extrinsic?: any; portfolio?: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesSecondaryKeyApiLegacyPermissions]>; /** * Removes an authorization. * _auth_issuer_pays determines whether the issuer of the authorisation pays the transaction fee @@ -1706,9 +1700,9 @@ declare module '@polkadot/api-base/types/submittable' { * It can only called by primary key owner. * * # Weight - * `950_000_000 + 60_000 * signers_to_remove.len()` + * `950_000_000 + 60_000 * keys_to_remove.len()` **/ - removeSecondaryKeys: AugmentedSubmittable<(signersToRemove: Vec | (PolymeshPrimitivesSecondaryKeySignatory | { Identity: any } | { Account: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; + removeSecondaryKeys: AugmentedSubmittable<(keysToRemove: Vec | (AccountId32 | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** * Marks the specified claim as revoked. **/ @@ -1746,7 +1740,7 @@ declare module '@polkadot/api-base/types/submittable' { * * Only the primary key of an identity is able to set secondary key permissions. **/ - setPermissionToSigner: AugmentedSubmittable<(signer: PolymeshPrimitivesSecondaryKeySignatory | { Identity: any } | { Account: any } | string | Uint8Array, perms: PolymeshPrimitivesSecondaryKeyPermissions | { asset?: any; extrinsic?: any; portfolio?: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesSecondaryKeyPermissions]>; + setSecondaryKeyPermissions: AugmentedSubmittable<(key: AccountId32 | string | Uint8Array, perms: PolymeshPrimitivesSecondaryKeyPermissions | { asset?: any; extrinsic?: any; portfolio?: any } | string | Uint8Array) => SubmittableExtrinsic, [AccountId32, PolymeshPrimitivesSecondaryKeyPermissions]>; /** * Re-enables all secondary keys of the caller's identity. **/ @@ -3877,7 +3871,7 @@ declare module '@polkadot/api-base/types/submittable' { * - `SecondaryKeysContainPrimaryKey` if `secondary_keys` contains the caller account. * - `DidAlreadyExists` if auto-generated DID already exists. **/ - registerDid: AugmentedSubmittable<(uid: PolymeshPrimitivesCddIdInvestorUid | string | Uint8Array, secondaryKeys: Vec | (PolymeshPrimitivesSecondaryKey | { signer?: any; permissions?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [PolymeshPrimitivesCddIdInvestorUid, Vec]>; + registerDid: AugmentedSubmittable<(uid: PolymeshPrimitivesCddIdInvestorUid | string | Uint8Array, secondaryKeys: Vec | (PolymeshPrimitivesSecondaryKey | { key?: any; permissions?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [PolymeshPrimitivesCddIdInvestorUid, Vec]>; /** * Generic tx **/ diff --git a/scripts/cli/src/interfaces/definitions.ts b/scripts/cli/src/interfaces/definitions.ts index 3bc294b14e..ce3c5e8177 100644 --- a/scripts/cli/src/interfaces/definitions.ts +++ b/scripts/cli/src/interfaces/definitions.ts @@ -1,3 +1,3 @@ export default { types: {"Address":"MultiAddress","LookupSource":"MultiAddress","AccountInfo":"AccountInfoWithDualRefCount","IdentityId":"[u8; 32]","EventDid":"IdentityId","EventCounts":"Vec","ErrorAt":"(u32, DispatchError)","InvestorUid":"[u8; 16]","Ticker":"[u8; 12]","CddId":"[u8; 32]","ScopeId":"[u8; 32]","PosRatio":"(u32, u32)","DocumentId":"u32","DocumentName":"Text","DocumentUri":"Text","DocumentHash":{"_enum":{"None":"","H512":"[u8; 64]","H384":"[u8; 48]","H320":"[u8; 40]","H256":"[u8; 32]","H224":"[u8; 28]","H192":"[u8; 24]","H160":"[u8; 20]","H128":"[u8; 16]"}},"DocumentType":"Text","Document":{"uri":"DocumentUri","content_hash":"DocumentHash","name":"DocumentName","doc_type":"Option","filing_date":"Option"},"Version":"u8","CustomAssetTypeId":"u32","AssetType":{"_enum":{"EquityCommon":"","EquityPreferred":"","Commodity":"","FixedIncome":"","REIT":"","Fund":"","RevenueShareAgreement":"","StructuredProduct":"","Derivative":"","Custom":"CustomAssetTypeId","StableCoin":""}},"AssetIdentifier":{"_enum":{"CUSIP":"[u8; 9]","CINS":"[u8; 9]","ISIN":"[u8; 12]","LEI":"[u8; 20]"}},"AssetOwnershipRelation":{"_enum":{"NotOwned":"","TickerOwned":"","AssetOwned":""}},"AssetName":"Text","FundingRoundName":"Text","VenueDetails":"Text","SecurityToken":{"total_supply":"Balance","owner_did":"IdentityId","divisible":"bool","asset_type":"AssetType"},"PalletName":"Text","DispatchableName":"Text","AssetPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"PortfolioPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"DispatchableNames":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"PalletPermissions":{"pallet_name":"PalletName","dispatchable_names":"DispatchableNames"},"ExtrinsicPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"Permissions":{"asset":"AssetPermissions","extrinsic":"ExtrinsicPermissions","portfolio":"PortfolioPermissions"},"LegacyPalletPermissions":{"pallet_name":"PalletName","total":"bool","dispatchable_names":"Vec"},"LegacyPermissions":{"asset":"Option>","extrinsic":"Option>","portfolio":"Option>"},"Signatory":{"_enum":{"Identity":"IdentityId","Account":"AccountId"}},"SecondaryKey":{"signer":"Signatory","permissions":"Permissions"},"SecondaryKeyWithAuth":{"secondary_key":"SecondaryKey","auth_signature":"Signature"},"Subsidy":{"paying_key":"AccountId","remaining":"Balance"},"IdentityRole":{"_enum":["Issuer","SimpleTokenIssuer","Validator","ClaimIssuer","Investor","NodeRunner","PM","CDDAMLClaimIssuer","AccreditedInvestorClaimIssuer","VerifiedIdentityClaimIssuer"]},"PreAuthorizedKeyInfo":{"target_id":"IdentityId","secondary_key":"SecondaryKey"},"DidRecord":{"primary_key":"AccountId","secondary_keys":"Vec"},"KeyIdentityData":{"identity":"IdentityId","permissions":"Option"},"CountryCode":{"_enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","VG","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","HK","MO","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VI","WF","EH","YE","ZM","ZW","BQ","CW","SX"]},"Scope":{"_enum":{"Identity":"IdentityId","Ticker":"Ticker","Custom":"Vec"}},"InvestorZKProofData":"[u8; 64]","Scalar":"[u8; 32]","RistrettoPoint":"[u8; 32]","ZkProofData":{"challenge_responses":"[Scalar; 2]","subtract_expressions_res":"RistrettoPoint","blinded_scope_did_hash":"RistrettoPoint"},"ScopeClaimProof":{"proof_scope_id_wellformed":"Signature","proof_scope_id_cdd_id_match":"ZkProofData","scope_id":"RistrettoPoint"},"Claim":{"_enum":{"Accredited":"Scope","Affiliate":"Scope","BuyLockup":"Scope","SellLockup":"Scope","CustomerDueDiligence":"CddId","KnowYourCustomer":"Scope","Jurisdiction":"(CountryCode, Scope)","Exempted":"Scope","Blocked":"Scope","InvestorUniqueness":"(Scope, ScopeId, CddId)","NoData":"","InvestorUniquenessV2":"(CddId)"}},"ClaimType":{"_enum":{"Accredited":"","Affiliate":"","BuyLockup":"","SellLockup":"","CustomerDueDiligence":"","KnowYourCustomer":"","Jurisdiction":"","Exempted":"","Blocked":"","InvestorUniqueness":"","NoData":"","InvestorUniquenessV2":""}},"IdentityClaim":{"claim_issuer":"IdentityId","issuance_date":"Moment","last_update_date":"Moment","expiry":"Option","claim":"Claim"},"ComplianceRequirement":{"sender_conditions":"Vec","receiver_conditions":"Vec","id":"u32"},"ComplianceRequirementResult":{"sender_conditions":"Vec","receiver_conditions":"Vec","id":"u32","result":"bool"},"ConditionType":{"_enum":{"IsPresent":"Claim","IsAbsent":"Claim","IsAnyOf":"Vec","IsNoneOf":"Vec","IsIdentity":"TargetIdentity"}},"TrustedFor":{"_enum":{"Any":"","Specific":"Vec"}},"TrustedIssuer":{"issuer":"IdentityId","trusted_for":"TrustedFor"},"Condition":{"condition_type":"ConditionType","issuers":"Vec"},"ConditionResult":{"condition":"Condition","result":"bool"},"TargetIdAuthorization":{"target_id":"IdentityId","nonce":"u64","expires_at":"Moment"},"TickerRegistration":{"owner":"IdentityId","expiry":"Option"},"TickerRegistrationConfig":{"max_ticker_length":"u8","registration_length":"Option"},"ClassicTickerRegistration":{"eth_owner":"EthereumAddress","is_created":"bool"},"ClassicTickerImport":{"eth_owner":"EthereumAddress","ticker":"Ticker","is_contract":"bool","is_created":"bool"},"EthereumAddress":"[u8; 20]","EcdsaSignature":"[u8; 65]","MotionTitle":"Text","MotionInfoLink":"Text","ChoiceTitle":"Text","Motion":{"title":"MotionTitle","info_link":"MotionInfoLink","choices":"Vec"},"BallotTitle":"Text","BallotMeta":{"title":"BallotTitle","motions":"Vec"},"BallotTimeRange":{"start":"Moment","end":"Moment"},"BallotVote":{"power":"Balance","fallback":"Option"},"MaybeBlock":{"_enum":{"Some":"BlockNumber","None":""}},"Url":"Text","PipDescription":"Text","PipsMetadata":{"id":"PipId","url":"Option","description":"Option","created_at":"BlockNumber","transaction_version":"u32","expiry":"MaybeBlock"},"Proposer":{"_enum":{"Community":"AccountId","Committee":"Committee"}},"Committee":{"_enum":{"Technical":"","Upgrade":""}},"SkippedCount":"u8","SnapshottedPip":{"id":"PipId","weight":"(bool, Balance)"},"SnapshotId":"u32","SnapshotMetadata":{"created_at":"BlockNumber","made_by":"AccountId","id":"SnapshotId"},"SnapshotResult":{"_enum":{"Approve":"","Reject":"","Skip":""}},"Beneficiary":{"id":"IdentityId","amount":"Balance"},"DepositInfo":{"owner":"AccountId","amount":"Balance"},"PolymeshVotes":{"index":"u32","ayes":"Vec","nays":"Vec","expiry":"MaybeBlock"},"PipId":"u32","ProposalState":{"_enum":["Pending","Rejected","Scheduled","Failed","Executed","Expired"]},"Pip":{"id":"PipId","proposal":"Call","state":"ProposalState","proposer":"Proposer"},"ProposalData":{"_enum":{"Hash":"Hash","Proposal":"Vec"}},"OffChainSignature":"MultiSignature","Authorization":{"authorization_data":"AuthorizationData","authorized_by":"IdentityId","expiry":"Option","auth_id":"u64"},"AuthorizationData":{"_enum":{"AttestPrimaryKeyRotation":"IdentityId","RotatePrimaryKey":"","TransferTicker":"Ticker","AddMultiSigSigner":"AccountId","TransferAssetOwnership":"Ticker","JoinIdentity":"Permissions","PortfolioCustody":"PortfolioId","BecomeAgent":"(Ticker, AgentGroup)","AddRelayerPayingKey":"(AccountId, AccountId, Balance)","RotatePrimaryKeyToSecondary":"Permissions"}},"SmartExtensionType":{"_enum":{"TransferManager":"","Offerings":"","SmartWallet":"","Custom":"Vec"}},"SmartExtensionName":"Text","SmartExtension":{"extension_type":"SmartExtensionType","extension_name":"SmartExtensionName","extension_id":"AccountId","is_archive":"bool"},"MetaUrl":"Text","MetaDescription":"Text","MetaVersion":"u32","ExtVersion":"u32","TemplateMetadata":{"url":"Option","se_type":"SmartExtensionType","usage_fee":"Balance","description":"MetaDescription","version":"MetaVersion"},"TemplateDetails":{"instantiation_fee":"Balance","owner":"IdentityId","frozen":"bool"},"AuthorizationNonce":"u64","Counter":"u64","Percentage":"Permill","TransferManager":{"_enum":{"CountTransferManager":"Counter","PercentageTransferManager":"Percentage"}},"RestrictionResult":{"_enum":["Valid","Invalid","ForceValid"]},"Memo":"[u8;32]","BridgeTx":{"nonce":"u32","recipient":"AccountId","amount":"Balance","tx_hash":"H256"},"AssetCompliance":{"paused":"bool","requirements":"Vec"},"AssetComplianceResult":{"paused":"bool","requirements":"Vec","result":"bool"},"Claim1stKey":{"target":"IdentityId","claim_type":"ClaimType"},"Claim2ndKey":{"issuer":"IdentityId","scope":"Option"},"InactiveMember":{"id":"IdentityId","deactivated_at":"Moment","expiry":"Option"},"VotingResult":{"ayes_count":"u32","ayes_stake":"Balance","nays_count":"u32","nays_stake":"Balance"},"ProtocolOp":{"_enum":["AssetRegisterTicker","AssetIssue","AssetAddDocuments","AssetCreateAsset","CheckpointCreateSchedule","ComplianceManagerAddComplianceRequirement","IdentityCddRegisterDid","IdentityAddClaim","IdentityAddSecondaryKeysWithAuthorization","PipsPropose","ContractsPutCode","CorporateBallotAttachBallot","CapitalDistributionDistribute"]},"CddStatus":{"_enum":{"Ok":"IdentityId","Err":"Vec"}},"AssetDidResult":{"_enum":{"Ok":"IdentityId","Err":"Vec"}},"DidRecordsSuccess":{"primary_key":"AccountId","secondary_keys":"Vec"},"DidRecords":{"_enum":{"Success":"DidRecordsSuccess","IdNotFound":"Vec"}},"VoteCountProposalFound":{"ayes":"u64","nays":"u64"},"VoteCount":{"_enum":{"ProposalFound":"VoteCountProposalFound","ProposalNotFound":""}},"Vote":"(bool, Balance)","VoteByPip":{"pip":"PipId","vote":"Vote"},"BridgeTxDetail":{"amount":"Balance","status":"BridgeTxStatus","execution_block":"BlockNumber","tx_hash":"H256"},"BridgeTxStatus":{"_enum":{"Absent":"","Pending":"u8","Frozen":"","Timelocked":"","Handled":""}},"HandledTxStatus":{"_enum":{"Success":"","Error":"Text"}},"CappedFee":"u64","CanTransferResult":{"_enum":{"Ok":"u8","Err":"Vec"}},"AuthorizationType":{"_enum":{"AttestPrimaryKeyRotation":"","RotatePrimaryKey":"","TransferTicker":"","AddMultiSigSigner":"","TransferAssetOwnership":"","JoinIdentity":"","PortfolioCustody":"","BecomeAgent":"","AddRelayerPayingKey":"","RotatePrimaryKeyToSecondary":""}},"ProposalDetails":{"approvals":"u64","rejections":"u64","status":"ProposalStatus","expiry":"Option","auto_close":"bool"},"ProposalStatus":{"_enum":{"Invalid":"","ActiveOrExpired":"","ExecutionSuccessful":"","ExecutionFailed":"","Rejected":""}},"DidStatus":{"_enum":{"Unknown":"","Exists":"","CddVerified":""}},"PortfolioName":"Text","PortfolioNumber":"u64","PortfolioKind":{"_enum":{"Default":"","User":"PortfolioNumber"}},"PortfolioId":{"did":"IdentityId","kind":"PortfolioKind"},"Moment":"u64","CalendarUnit":{"_enum":["Second","Minute","Hour","Day","Week","Month","Year"]},"CalendarPeriod":{"unit":"CalendarUnit","amount":"u64"},"CheckpointSchedule":{"start":"Moment","period":"CalendarPeriod"},"CheckpointId":"u64","ScheduleId":"u64","StoredSchedule":{"schedule":"CheckpointSchedule","id":"ScheduleId","at":"Moment","remaining":"u32"},"ScheduleSpec":{"start":"Option","period":"CalendarPeriod","remaining":"u32"},"InstructionStatus":{"_enum":{"Unknown":"","Pending":"","Failed":""}},"LegStatus":{"_enum":{"PendingTokenLock":"","ExecutionPending":"","ExecutionToBeSkipped":"(AccountId, u64)"}},"AffirmationStatus":{"_enum":{"Unknown":"","Pending":"","Affirmed":""}},"SettlementType":{"_enum":{"SettleOnAffirmation":"","SettleOnBlock":"BlockNumber"}},"LegId":"u64","InstructionId":"u64","Instruction":{"instruction_id":"InstructionId","venue_id":"VenueId","status":"InstructionStatus","settlement_type":"SettlementType","created_at":"Option","trade_date":"Option","value_date":"Option"},"Leg":{"from":"PortfolioId","to":"PortfolioId","asset":"Ticker","amount":"Balance"},"Venue":{"creator":"IdentityId","venue_type":"VenueType"},"Receipt":{"receipt_uid":"u64","from":"PortfolioId","to":"PortfolioId","asset":"Ticker","amount":"Balance"},"ReceiptMetadata":"Text","ReceiptDetails":{"receipt_uid":"u64","leg_id":"LegId","signer":"AccountId","signature":"OffChainSignature","metadata":"ReceiptMetadata"},"UniqueCall":{"nonce":"u64","call":"Call"},"MovePortfolioItem":{"ticker":"Ticker","amount":"Balance","memo":"Option"},"WeightToFeeCoefficient":{"coeffInteger":"Balance","coeffFrac":"Perbill","negative":"bool","degree":"u8"},"WeightPerClass":{"baseExtrinsic":"Weight","maxExtrinsic":"Option","maxTotal":"Option","reserved":"Option"},"TargetIdentity":{"_enum":{"ExternalAgent":"","Specific":"IdentityId"}},"FundraiserId":"u64","FundraiserName":"Text","FundraiserStatus":{"_enum":["Live","Frozen","Closed","ClosedEarly"]},"FundraiserTier":{"total":"Balance","price":"Balance","remaining":"Balance"},"Fundraiser":{"creator":"IdentityId","offering_portfolio":"PortfolioId","offering_asset":"Ticker","raising_portfolio":"PortfolioId","raising_asset":"Ticker","tiers":"Vec","venue_id":"VenueId","start":"Moment","end":"Option","status":"FundraiserStatus","minimum_investment":"Balance"},"VenueId":"u64","VenueType":{"_enum":["Other","Distribution","Sto","Exchange"]},"ExtensionAttributes":{"usage_fee":"Balance","version":"MetaVersion"},"Tax":"Permill","TargetIdentities":{"identities":"Vec","treatment":"TargetTreatment"},"TargetTreatment":{"_enum":["Include","Exclude"]},"CAKind":{"_enum":["PredictableBenefit","UnpredictableBenefit","IssuerNotice","Reorganization","Other"]},"CADetails":"Text","CACheckpoint":{"_enum":{"Scheduled":"(ScheduleId, u64)","Existing":"CheckpointId"}},"RecordDate":{"date":"Moment","checkpoint":"CACheckpoint"},"RecordDateSpec":{"_enum":{"Scheduled":"Moment","ExistingSchedule":"ScheduleId","Existing":"CheckpointId"}},"CorporateAction":{"kind":"CAKind","decl_date":"Moment","record_date":"Option","targets":"TargetIdentities","default_withholding_tax":"Tax","withholding_tax":"Vec<(IdentityId, Tax)>"},"LocalCAId":"u32","CAId":{"ticker":"Ticker","local_id":"LocalCAId"},"Distribution":{"from":"PortfolioId","currency":"Ticker","per_share":"Balance","amount":"Balance","remaining":"Balance","reclaimed":"bool","payment_at":"Moment","expires_at":"Option"},"SlashingSwitch":{"_enum":["Validator","ValidatorAndNominator","None"]},"PriceTier":{"total":"Balance","price":"Balance"},"PermissionedIdentityPrefs":{"intended_count":"u32","running_count":"u32"},"GranularCanTransferResult":{"invalid_granularity":"bool","self_transfer":"bool","invalid_receiver_cdd":"bool","invalid_sender_cdd":"bool","missing_scope_claim":"bool","receiver_custodian_error":"bool","sender_custodian_error":"bool","sender_insufficient_balance":"bool","portfolio_validity_result":"PortfolioValidityResult","asset_frozen":"bool","statistics_result":"Vec","compliance_result":"AssetComplianceResult","result":"bool"},"PortfolioValidityResult":{"receiver_is_same_portfolio":"bool","sender_portfolio_does_not_exist":"bool","receiver_portfolio_does_not_exist":"bool","sender_insufficient_balance":"bool","result":"bool"},"TransferManagerResult":{"tm":"TransferManager","result":"bool"},"AGId":"u32","AgentGroup":{"_enum":{"Full":"","Custom":"AGId","ExceptMeta":"","PolymeshV1CAA":"","PolymeshV1PIA":""}},"ItnRewardStatus":{"_enum":{"Unclaimed":"Balance","Claimed":""}}} -} \ No newline at end of file +} diff --git a/scripts/cli/src/interfaces/lookup.ts b/scripts/cli/src/interfaces/lookup.ts index 5f478d8dac..f1698df2eb 100644 --- a/scripts/cli/src/interfaces/lookup.ts +++ b/scripts/cli/src/interfaces/lookup.ts @@ -182,11 +182,11 @@ export default { **/ PolymeshCommonUtilitiesIdentityRawEvent: { _enum: { - DidCreated: '(PolymeshPrimitivesIdentityId,AccountId32,Vec)', - SecondaryKeysAdded: '(PolymeshPrimitivesIdentityId,Vec)', - SecondaryKeysRemoved: '(PolymeshPrimitivesIdentityId,Vec)', - SignerLeft: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesSecondaryKeySignatory)', - SecondaryKeyPermissionsUpdated: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesSecondaryKeyApiSecondaryKey,PolymeshPrimitivesSecondaryKeyPermissions,PolymeshPrimitivesSecondaryKeyPermissions)', + DidCreated: '(PolymeshPrimitivesIdentityId,AccountId32,Vec)', + SecondaryKeysAdded: '(PolymeshPrimitivesIdentityId,Vec)', + SecondaryKeysRemoved: '(PolymeshPrimitivesIdentityId,Vec)', + SecondaryKeyLeftIdentity: '(PolymeshPrimitivesIdentityId,AccountId32)', + SecondaryKeyPermissionsUpdated: '(PolymeshPrimitivesIdentityId,AccountId32,PolymeshPrimitivesSecondaryKeyPermissions,PolymeshPrimitivesSecondaryKeyPermissions)', PrimaryKeyUpdated: '(PolymeshPrimitivesIdentityId,AccountId32,AccountId32)', ClaimAdded: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityClaim)', ClaimRevoked: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityClaim)', @@ -195,32 +195,21 @@ export default { AuthorizationRevoked: '(Option,Option,u64)', AuthorizationRejected: '(Option,Option,u64)', AuthorizationConsumed: '(Option,Option,u64)', - OffChainAuthorizationRevoked: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesSecondaryKeySignatory)', CddRequirementForPrimaryKeyUpdated: 'bool', CddClaimsInvalidated: '(PolymeshPrimitivesIdentityId,u64)', SecondaryKeysFrozen: 'PolymeshPrimitivesIdentityId', - SecondaryKeysUnfrozen: 'PolymeshPrimitivesIdentityId', - MockInvestorUIDCreated: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesCddIdInvestorUid)' + SecondaryKeysUnfrozen: 'PolymeshPrimitivesIdentityId' } }, /** - * Lookup37: polymesh_primitives::secondary_key::api::SecondaryKey + * Lookup37: polymesh_primitives::secondary_key::SecondaryKey **/ - PolymeshPrimitivesSecondaryKeyApiSecondaryKey: { - signer: 'PolymeshPrimitivesSecondaryKeySignatory', + PolymeshPrimitivesSecondaryKey: { + key: 'AccountId32', permissions: 'PolymeshPrimitivesSecondaryKeyPermissions' }, /** - * Lookup38: polymesh_primitives::secondary_key::Signatory - **/ - PolymeshPrimitivesSecondaryKeySignatory: { - _enum: { - Identity: 'PolymeshPrimitivesIdentityId', - Account: 'AccountId32' - } - }, - /** - * Lookup39: polymesh_primitives::secondary_key::Permissions + * Lookup38: polymesh_primitives::secondary_key::Permissions **/ PolymeshPrimitivesSecondaryKeyPermissions: { asset: 'PolymeshPrimitivesSubsetSubsetRestrictionTicker', @@ -228,7 +217,7 @@ export default { portfolio: 'PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId' }, /** - * Lookup40: polymesh_primitives::subset::SubsetRestriction + * Lookup39: polymesh_primitives::subset::SubsetRestriction **/ PolymeshPrimitivesSubsetSubsetRestrictionTicker: { _enum: { @@ -238,15 +227,15 @@ export default { } }, /** - * Lookup41: polymesh_primitives::ticker::Ticker + * Lookup40: polymesh_primitives::ticker::Ticker **/ PolymeshPrimitivesTicker: '[u8;12]', /** - * Lookup43: BTreeSet + * Lookup42: BTreeSet **/ BTreeSetTicker: 'Vec', /** - * Lookup45: polymesh_primitives::subset::SubsetRestriction + * Lookup44: polymesh_primitives::subset::SubsetRestriction **/ PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions: { _enum: { @@ -256,14 +245,14 @@ export default { } }, /** - * Lookup46: polymesh_primitives::secondary_key::PalletPermissions + * Lookup45: polymesh_primitives::secondary_key::PalletPermissions **/ PolymeshPrimitivesSecondaryKeyPalletPermissions: { palletName: 'Bytes', dispatchableNames: 'PolymeshPrimitivesSubsetSubsetRestrictionDispatchableName' }, /** - * Lookup48: polymesh_primitives::subset::SubsetRestriction + * Lookup47: polymesh_primitives::subset::SubsetRestriction **/ PolymeshPrimitivesSubsetSubsetRestrictionDispatchableName: { _enum: { @@ -273,15 +262,15 @@ export default { } }, /** - * Lookup50: BTreeSet + * Lookup49: BTreeSet **/ BTreeSetDispatchableName: 'Vec', /** - * Lookup52: BTreeSet + * Lookup51: BTreeSet **/ BTreeSetPalletPermissions: 'Vec', /** - * Lookup54: polymesh_primitives::subset::SubsetRestriction + * Lookup53: polymesh_primitives::subset::SubsetRestriction **/ PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId: { _enum: { @@ -291,14 +280,14 @@ export default { } }, /** - * Lookup55: polymesh_primitives::identity_id::PortfolioId + * Lookup54: polymesh_primitives::identity_id::PortfolioId **/ PolymeshPrimitivesIdentityIdPortfolioId: { did: 'PolymeshPrimitivesIdentityId', kind: 'PolymeshPrimitivesIdentityIdPortfolioKind' }, /** - * Lookup56: polymesh_primitives::identity_id::PortfolioKind + * Lookup55: polymesh_primitives::identity_id::PortfolioKind **/ PolymeshPrimitivesIdentityIdPortfolioKind: { _enum: { @@ -307,11 +296,11 @@ export default { } }, /** - * Lookup58: BTreeSet + * Lookup57: BTreeSet **/ BTreeSetPortfolioId: 'Vec', /** - * Lookup61: polymesh_primitives::identity_claim::IdentityClaim + * Lookup60: polymesh_primitives::identity_claim::IdentityClaim **/ PolymeshPrimitivesIdentityClaim: { claimIssuer: 'PolymeshPrimitivesIdentityId', @@ -321,7 +310,7 @@ export default { claim: 'PolymeshPrimitivesIdentityClaimClaim' }, /** - * Lookup63: polymesh_primitives::identity_claim::Claim + * Lookup62: polymesh_primitives::identity_claim::Claim **/ PolymeshPrimitivesIdentityClaimClaim: { _enum: { @@ -340,7 +329,7 @@ export default { } }, /** - * Lookup64: polymesh_primitives::identity_claim::Scope + * Lookup63: polymesh_primitives::identity_claim::Scope **/ PolymeshPrimitivesIdentityClaimScope: { _enum: { @@ -350,17 +339,17 @@ export default { } }, /** - * Lookup65: polymesh_primitives::cdd_id::CddId + * Lookup64: polymesh_primitives::cdd_id::CddId **/ PolymeshPrimitivesCddId: '[u8;32]', /** - * Lookup66: polymesh_primitives::jurisdiction::CountryCode + * Lookup65: polymesh_primitives::jurisdiction::CountryCode **/ PolymeshPrimitivesJurisdictionCountryCode: { _enum: ['AF', 'AX', 'AL', 'DZ', 'AS', 'AD', 'AO', 'AI', 'AQ', 'AG', 'AR', 'AM', 'AW', 'AU', 'AT', 'AZ', 'BS', 'BH', 'BD', 'BB', 'BY', 'BE', 'BZ', 'BJ', 'BM', 'BT', 'BO', 'BA', 'BW', 'BV', 'BR', 'VG', 'IO', 'BN', 'BG', 'BF', 'BI', 'KH', 'CM', 'CA', 'CV', 'KY', 'CF', 'TD', 'CL', 'CN', 'HK', 'MO', 'CX', 'CC', 'CO', 'KM', 'CG', 'CD', 'CK', 'CR', 'CI', 'HR', 'CU', 'CY', 'CZ', 'DK', 'DJ', 'DM', 'DO', 'EC', 'EG', 'SV', 'GQ', 'ER', 'EE', 'ET', 'FK', 'FO', 'FJ', 'FI', 'FR', 'GF', 'PF', 'TF', 'GA', 'GM', 'GE', 'DE', 'GH', 'GI', 'GR', 'GL', 'GD', 'GP', 'GU', 'GT', 'GG', 'GN', 'GW', 'GY', 'HT', 'HM', 'VA', 'HN', 'HU', 'IS', 'IN', 'ID', 'IR', 'IQ', 'IE', 'IM', 'IL', 'IT', 'JM', 'JP', 'JE', 'JO', 'KZ', 'KE', 'KI', 'KP', 'KR', 'KW', 'KG', 'LA', 'LV', 'LB', 'LS', 'LR', 'LY', 'LI', 'LT', 'LU', 'MK', 'MG', 'MW', 'MY', 'MV', 'ML', 'MT', 'MH', 'MQ', 'MR', 'MU', 'YT', 'MX', 'FM', 'MD', 'MC', 'MN', 'ME', 'MS', 'MA', 'MZ', 'MM', 'NA', 'NR', 'NP', 'NL', 'AN', 'NC', 'NZ', 'NI', 'NE', 'NG', 'NU', 'NF', 'MP', 'NO', 'OM', 'PK', 'PW', 'PS', 'PA', 'PG', 'PY', 'PE', 'PH', 'PN', 'PL', 'PT', 'PR', 'QA', 'RE', 'RO', 'RU', 'RW', 'BL', 'SH', 'KN', 'LC', 'MF', 'PM', 'VC', 'WS', 'SM', 'ST', 'SA', 'SN', 'RS', 'SC', 'SL', 'SG', 'SK', 'SI', 'SB', 'SO', 'ZA', 'GS', 'SS', 'ES', 'LK', 'SD', 'SR', 'SJ', 'SZ', 'SE', 'CH', 'SY', 'TW', 'TJ', 'TZ', 'TH', 'TL', 'TG', 'TK', 'TO', 'TT', 'TN', 'TR', 'TM', 'TC', 'TV', 'UG', 'UA', 'AE', 'GB', 'US', 'UM', 'UY', 'UZ', 'VU', 'VE', 'VN', 'VI', 'WF', 'EH', 'YE', 'ZM', 'ZW', 'BQ', 'CW', 'SX'] }, /** - * Lookup68: polymesh_primitives::authorization::AuthorizationData + * Lookup67: polymesh_primitives::authorization::AuthorizationData **/ PolymeshPrimitivesAuthorizationAuthorizationData: { _enum: { @@ -377,7 +366,7 @@ export default { } }, /** - * Lookup69: polymesh_primitives::agent::AgentGroup + * Lookup68: polymesh_primitives::agent::AgentGroup **/ PolymeshPrimitivesAgentAgentGroup: { _enum: { @@ -389,11 +378,7 @@ export default { } }, /** - * Lookup72: polymesh_primitives::cdd_id::InvestorUid - **/ - PolymeshPrimitivesCddIdInvestorUid: '[u8;16]', - /** - * Lookup74: polymesh_common_utilities::traits::group::RawEvent + * Lookup71: polymesh_common_utilities::traits::group::RawEvent **/ PolymeshCommonUtilitiesGroupRawEventInstance2: { _enum: { @@ -407,11 +392,11 @@ export default { } }, /** - * Lookup75: pallet_group::Instance2 + * Lookup72: pallet_group::Instance2 **/ PalletGroupInstance2: 'Null', /** - * Lookup77: pallet_committee::RawEvent + * Lookup74: pallet_committee::RawEvent **/ PalletCommitteeRawEventInstance1: { _enum: { @@ -428,11 +413,11 @@ export default { } }, /** - * Lookup78: pallet_committee::Instance1 + * Lookup75: pallet_committee::Instance1 **/ PalletCommitteeInstance1: 'Null', /** - * Lookup81: polymesh_common_utilities::MaybeBlock + * Lookup78: polymesh_common_utilities::MaybeBlock **/ PolymeshCommonUtilitiesMaybeBlock: { _enum: { @@ -441,7 +426,7 @@ export default { } }, /** - * Lookup82: polymesh_common_utilities::traits::group::RawEvent + * Lookup79: polymesh_common_utilities::traits::group::RawEvent **/ PolymeshCommonUtilitiesGroupRawEventInstance1: { _enum: { @@ -455,11 +440,11 @@ export default { } }, /** - * Lookup83: pallet_group::Instance1 + * Lookup80: pallet_group::Instance1 **/ PalletGroupInstance1: 'Null', /** - * Lookup84: pallet_committee::RawEvent + * Lookup81: pallet_committee::RawEvent **/ PalletCommitteeRawEventInstance3: { _enum: { @@ -476,11 +461,11 @@ export default { } }, /** - * Lookup85: pallet_committee::Instance3 + * Lookup82: pallet_committee::Instance3 **/ PalletCommitteeInstance3: 'Null', /** - * Lookup86: polymesh_common_utilities::traits::group::RawEvent + * Lookup83: polymesh_common_utilities::traits::group::RawEvent **/ PolymeshCommonUtilitiesGroupRawEventInstance3: { _enum: { @@ -494,11 +479,11 @@ export default { } }, /** - * Lookup87: pallet_group::Instance3 + * Lookup84: pallet_group::Instance3 **/ PalletGroupInstance3: 'Null', /** - * Lookup88: pallet_committee::RawEvent + * Lookup85: pallet_committee::RawEvent **/ PalletCommitteeRawEventInstance4: { _enum: { @@ -515,11 +500,11 @@ export default { } }, /** - * Lookup89: pallet_committee::Instance4 + * Lookup86: pallet_committee::Instance4 **/ PalletCommitteeInstance4: 'Null', /** - * Lookup90: polymesh_common_utilities::traits::group::RawEvent + * Lookup87: polymesh_common_utilities::traits::group::RawEvent **/ PolymeshCommonUtilitiesGroupRawEventInstance4: { _enum: { @@ -533,11 +518,11 @@ export default { } }, /** - * Lookup91: pallet_group::Instance4 + * Lookup88: pallet_group::Instance4 **/ PalletGroupInstance4: 'Null', /** - * Lookup92: pallet_multisig::RawEvent + * Lookup89: pallet_multisig::RawEvent **/ PalletMultisigRawEvent: { _enum: { @@ -556,7 +541,16 @@ export default { } }, /** - * Lookup93: pallet_bridge::RawEvent + * Lookup91: polymesh_primitives::secondary_key::Signatory + **/ + PolymeshPrimitivesSecondaryKeySignatory: { + _enum: { + Identity: 'PolymeshPrimitivesIdentityId', + Account: 'AccountId32' + } + }, + /** + * Lookup92: pallet_bridge::RawEvent **/ PalletBridgeRawEvent: { _enum: { @@ -579,7 +573,7 @@ export default { } }, /** - * Lookup94: pallet_bridge::BridgeTx + * Lookup93: pallet_bridge::BridgeTx **/ PalletBridgeBridgeTx: { nonce: 'u32', @@ -588,7 +582,7 @@ export default { txHash: 'H256' }, /** - * Lookup97: pallet_bridge::HandledTxStatus + * Lookup96: pallet_bridge::HandledTxStatus **/ PalletBridgeHandledTxStatus: { _enum: { @@ -597,7 +591,7 @@ export default { } }, /** - * Lookup98: pallet_staking::RawEvent + * Lookup97: pallet_staking::RawEvent **/ PalletStakingRawEvent: { _enum: { @@ -621,19 +615,19 @@ export default { } }, /** - * Lookup99: pallet_staking::ElectionCompute + * Lookup98: pallet_staking::ElectionCompute **/ PalletStakingElectionCompute: { _enum: ['OnChain', 'Signed', 'Unsigned'] }, /** - * Lookup102: pallet_staking::SlashingSwitch + * Lookup100: pallet_staking::SlashingSwitch **/ PalletStakingSlashingSwitch: { _enum: ['Validator', 'ValidatorAndNominator', 'None'] }, /** - * Lookup103: pallet_offences::pallet::Event + * Lookup101: pallet_offences::pallet::Event **/ PalletOffencesEvent: { _enum: { @@ -641,7 +635,7 @@ export default { } }, /** - * Lookup104: pallet_session::pallet::Event + * Lookup103: pallet_session::pallet::Event **/ PalletSessionEvent: { _enum: { @@ -649,7 +643,7 @@ export default { } }, /** - * Lookup105: pallet_grandpa::pallet::Event + * Lookup104: pallet_grandpa::pallet::Event **/ PalletGrandpaEvent: { _enum: { @@ -659,15 +653,15 @@ export default { } }, /** - * Lookup108: sp_finality_grandpa::app::Public + * Lookup107: sp_finality_grandpa::app::Public **/ SpFinalityGrandpaAppPublic: 'SpCoreEd25519Public', /** - * Lookup109: sp_core::ed25519::Public + * Lookup108: sp_core::ed25519::Public **/ SpCoreEd25519Public: '[u8;32]', /** - * Lookup110: pallet_im_online::pallet::Event + * Lookup109: pallet_im_online::pallet::Event **/ PalletImOnlineEvent: { _enum: { @@ -677,15 +671,15 @@ export default { } }, /** - * Lookup111: pallet_im_online::sr25519::app_sr25519::Public + * Lookup110: pallet_im_online::sr25519::app_sr25519::Public **/ PalletImOnlineSr25519AppSr25519Public: 'SpCoreSr25519Public', /** - * Lookup112: sp_core::sr25519::Public + * Lookup111: sp_core::sr25519::Public **/ SpCoreSr25519Public: '[u8;32]', /** - * Lookup115: pallet_staking::Exposure + * Lookup114: pallet_staking::Exposure **/ PalletStakingExposure: { total: 'Compact', @@ -693,14 +687,14 @@ export default { others: 'Vec' }, /** - * Lookup118: pallet_staking::IndividualExposure + * Lookup117: pallet_staking::IndividualExposure **/ PalletStakingIndividualExposure: { who: 'AccountId32', value: 'Compact' }, /** - * Lookup119: pallet_sudo::RawEvent + * Lookup118: pallet_sudo::RawEvent **/ PalletSudoRawEvent: { _enum: { @@ -710,7 +704,7 @@ export default { } }, /** - * Lookup120: polymesh_common_utilities::traits::asset::RawEvent + * Lookup119: polymesh_common_utilities::traits::asset::RawEvent **/ PolymeshCommonUtilitiesAssetRawEvent: { _enum: { @@ -743,7 +737,7 @@ export default { } }, /** - * Lookup122: polymesh_primitives::asset::AssetType + * Lookup121: polymesh_primitives::asset::AssetType **/ PolymeshPrimitivesAssetAssetType: { _enum: { @@ -761,7 +755,7 @@ export default { } }, /** - * Lookup125: polymesh_primitives::asset_identifier::AssetIdentifier + * Lookup124: polymesh_primitives::asset_identifier::AssetIdentifier **/ PolymeshPrimitivesAssetIdentifier: { _enum: { @@ -772,7 +766,7 @@ export default { } }, /** - * Lookup130: polymesh_primitives::document::Document + * Lookup129: polymesh_primitives::document::Document **/ PolymeshPrimitivesDocument: { uri: 'Bytes', @@ -782,7 +776,7 @@ export default { filingDate: 'Option' }, /** - * Lookup132: polymesh_primitives::document_hash::DocumentHash + * Lookup131: polymesh_primitives::document_hash::DocumentHash **/ PolymeshPrimitivesDocumentHash: { _enum: { @@ -798,18 +792,18 @@ export default { } }, /** - * Lookup141: polymesh_primitives::ethereum::EthereumAddress + * Lookup140: polymesh_primitives::ethereum::EthereumAddress **/ PolymeshPrimitivesEthereumEthereumAddress: '[u8;20]', /** - * Lookup144: polymesh_primitives::asset_metadata::AssetMetadataValueDetail + * Lookup143: polymesh_primitives::asset_metadata::AssetMetadataValueDetail **/ PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail: { expire: 'Option', lockStatus: 'PolymeshPrimitivesAssetMetadataAssetMetadataLockStatus' }, /** - * Lookup145: polymesh_primitives::asset_metadata::AssetMetadataLockStatus + * Lookup144: polymesh_primitives::asset_metadata::AssetMetadataLockStatus **/ PolymeshPrimitivesAssetMetadataAssetMetadataLockStatus: { _enum: { @@ -819,7 +813,7 @@ export default { } }, /** - * Lookup148: polymesh_primitives::asset_metadata::AssetMetadataSpec + * Lookup147: polymesh_primitives::asset_metadata::AssetMetadataSpec **/ PolymeshPrimitivesAssetMetadataAssetMetadataSpec: { url: 'Option', @@ -827,7 +821,7 @@ export default { typeDef: 'Option' }, /** - * Lookup155: pallet_corporate_actions::distribution::Event + * Lookup154: pallet_corporate_actions::distribution::Event **/ PalletCorporateActionsDistributionEvent: { _enum: { @@ -838,18 +832,18 @@ export default { } }, /** - * Lookup156: polymesh_primitives::event_only::EventOnly + * Lookup155: polymesh_primitives::event_only::EventOnly **/ PolymeshPrimitivesEventOnly: 'PolymeshPrimitivesIdentityId', /** - * Lookup157: pallet_corporate_actions::CAId + * Lookup156: pallet_corporate_actions::CAId **/ PalletCorporateActionsCaId: { ticker: 'PolymeshPrimitivesTicker', localId: 'u32' }, /** - * Lookup159: pallet_corporate_actions::distribution::Distribution + * Lookup158: pallet_corporate_actions::distribution::Distribution **/ PalletCorporateActionsDistribution: { from: 'PolymeshPrimitivesIdentityIdPortfolioId', @@ -862,7 +856,7 @@ export default { expiresAt: 'Option' }, /** - * Lookup161: polymesh_common_utilities::traits::checkpoint::Event + * Lookup160: polymesh_common_utilities::traits::checkpoint::Event **/ PolymeshCommonUtilitiesCheckpointEvent: { _enum: { @@ -873,7 +867,7 @@ export default { } }, /** - * Lookup164: polymesh_common_utilities::traits::checkpoint::StoredSchedule + * Lookup163: polymesh_common_utilities::traits::checkpoint::StoredSchedule **/ PolymeshCommonUtilitiesCheckpointStoredSchedule: { schedule: 'PolymeshPrimitivesCalendarCheckpointSchedule', @@ -882,27 +876,27 @@ export default { remaining: 'u32' }, /** - * Lookup165: polymesh_primitives::calendar::CheckpointSchedule + * Lookup164: polymesh_primitives::calendar::CheckpointSchedule **/ PolymeshPrimitivesCalendarCheckpointSchedule: { start: 'u64', period: 'PolymeshPrimitivesCalendarCalendarPeriod' }, /** - * Lookup166: polymesh_primitives::calendar::CalendarPeriod + * Lookup165: polymesh_primitives::calendar::CalendarPeriod **/ PolymeshPrimitivesCalendarCalendarPeriod: { unit: 'PolymeshPrimitivesCalendarCalendarUnit', amount: 'u64' }, /** - * Lookup167: polymesh_primitives::calendar::CalendarUnit + * Lookup166: polymesh_primitives::calendar::CalendarUnit **/ PolymeshPrimitivesCalendarCalendarUnit: { _enum: ['Second', 'Minute', 'Hour', 'Day', 'Week', 'Month', 'Year'] }, /** - * Lookup169: pallet_compliance_manager::Event + * Lookup168: pallet_compliance_manager::Event **/ PalletComplianceManagerEvent: { _enum: { @@ -918,7 +912,7 @@ export default { } }, /** - * Lookup170: polymesh_primitives::compliance_manager::ComplianceRequirement + * Lookup169: polymesh_primitives::compliance_manager::ComplianceRequirement **/ PolymeshPrimitivesComplianceManagerComplianceRequirement: { senderConditions: 'Vec', @@ -926,14 +920,14 @@ export default { id: 'u32' }, /** - * Lookup172: polymesh_primitives::condition::Condition + * Lookup171: polymesh_primitives::condition::Condition **/ PolymeshPrimitivesCondition: { conditionType: 'PolymeshPrimitivesConditionConditionType', issuers: 'Vec' }, /** - * Lookup173: polymesh_primitives::condition::ConditionType + * Lookup172: polymesh_primitives::condition::ConditionType **/ PolymeshPrimitivesConditionConditionType: { _enum: { @@ -945,7 +939,7 @@ export default { } }, /** - * Lookup175: polymesh_primitives::condition::TargetIdentity + * Lookup174: polymesh_primitives::condition::TargetIdentity **/ PolymeshPrimitivesConditionTargetIdentity: { _enum: { @@ -954,14 +948,14 @@ export default { } }, /** - * Lookup177: polymesh_primitives::condition::TrustedIssuer + * Lookup176: polymesh_primitives::condition::TrustedIssuer **/ PolymeshPrimitivesConditionTrustedIssuer: { issuer: 'PolymeshPrimitivesIdentityId', trustedFor: 'PolymeshPrimitivesConditionTrustedFor' }, /** - * Lookup178: polymesh_primitives::condition::TrustedFor + * Lookup177: polymesh_primitives::condition::TrustedFor **/ PolymeshPrimitivesConditionTrustedFor: { _enum: { @@ -970,13 +964,13 @@ export default { } }, /** - * Lookup180: polymesh_primitives::identity_claim::ClaimType + * Lookup179: polymesh_primitives::identity_claim::ClaimType **/ PolymeshPrimitivesIdentityClaimClaimType: { _enum: ['Accredited', 'Affiliate', 'BuyLockup', 'SellLockup', 'CustomerDueDiligence', 'KnowYourCustomer', 'Jurisdiction', 'Exempted', 'Blocked', 'InvestorUniqueness', 'NoType', 'InvestorUniquenessV2'] }, /** - * Lookup182: pallet_corporate_actions::Event + * Lookup181: pallet_corporate_actions::Event **/ PalletCorporateActionsEvent: { _enum: { @@ -992,20 +986,20 @@ export default { } }, /** - * Lookup183: pallet_corporate_actions::TargetIdentities + * Lookup182: pallet_corporate_actions::TargetIdentities **/ PalletCorporateActionsTargetIdentities: { identities: 'Vec', treatment: 'PalletCorporateActionsTargetTreatment' }, /** - * Lookup184: pallet_corporate_actions::TargetTreatment + * Lookup183: pallet_corporate_actions::TargetTreatment **/ PalletCorporateActionsTargetTreatment: { _enum: ['Include', 'Exclude'] }, /** - * Lookup186: pallet_corporate_actions::CorporateAction + * Lookup185: pallet_corporate_actions::CorporateAction **/ PalletCorporateActionsCorporateAction: { kind: 'PalletCorporateActionsCaKind', @@ -1016,20 +1010,20 @@ export default { withholdingTax: 'Vec<(PolymeshPrimitivesIdentityId,Permill)>' }, /** - * Lookup187: pallet_corporate_actions::CAKind + * Lookup186: pallet_corporate_actions::CAKind **/ PalletCorporateActionsCaKind: { _enum: ['PredictableBenefit', 'UnpredictableBenefit', 'IssuerNotice', 'Reorganization', 'Other'] }, /** - * Lookup189: pallet_corporate_actions::RecordDate + * Lookup188: pallet_corporate_actions::RecordDate **/ PalletCorporateActionsRecordDate: { date: 'u64', checkpoint: 'PalletCorporateActionsCaCheckpoint' }, /** - * Lookup190: pallet_corporate_actions::CACheckpoint + * Lookup189: pallet_corporate_actions::CACheckpoint **/ PalletCorporateActionsCaCheckpoint: { _enum: { @@ -1038,7 +1032,7 @@ export default { } }, /** - * Lookup195: pallet_corporate_actions::ballot::Event + * Lookup194: pallet_corporate_actions::ballot::Event **/ PalletCorporateActionsBallotEvent: { _enum: { @@ -1051,21 +1045,21 @@ export default { } }, /** - * Lookup196: pallet_corporate_actions::ballot::BallotTimeRange + * Lookup195: pallet_corporate_actions::ballot::BallotTimeRange **/ PalletCorporateActionsBallotBallotTimeRange: { start: 'u64', end: 'u64' }, /** - * Lookup197: pallet_corporate_actions::ballot::BallotMeta + * Lookup196: pallet_corporate_actions::ballot::BallotMeta **/ PalletCorporateActionsBallotBallotMeta: { title: 'Bytes', motions: 'Vec' }, /** - * Lookup200: pallet_corporate_actions::ballot::Motion + * Lookup199: pallet_corporate_actions::ballot::Motion **/ PalletCorporateActionsBallotMotion: { title: 'Bytes', @@ -1073,14 +1067,14 @@ export default { choices: 'Vec' }, /** - * Lookup206: pallet_corporate_actions::ballot::BallotVote + * Lookup205: pallet_corporate_actions::ballot::BallotVote **/ PalletCorporateActionsBallotBallotVote: { power: 'u128', fallback: 'Option' }, /** - * Lookup209: pallet_pips::RawEvent + * Lookup208: pallet_pips::RawEvent **/ PalletPipsRawEvent: { _enum: { @@ -1107,7 +1101,7 @@ export default { } }, /** - * Lookup210: pallet_pips::Proposer + * Lookup209: pallet_pips::Proposer **/ PalletPipsProposer: { _enum: { @@ -1116,13 +1110,13 @@ export default { } }, /** - * Lookup211: pallet_pips::Committee + * Lookup210: pallet_pips::Committee **/ PalletPipsCommittee: { _enum: ['Technical', 'Upgrade'] }, /** - * Lookup215: pallet_pips::ProposalData + * Lookup214: pallet_pips::ProposalData **/ PalletPipsProposalData: { _enum: { @@ -1131,20 +1125,20 @@ export default { } }, /** - * Lookup216: pallet_pips::ProposalState + * Lookup215: pallet_pips::ProposalState **/ PalletPipsProposalState: { _enum: ['Pending', 'Rejected', 'Scheduled', 'Failed', 'Executed', 'Expired'] }, /** - * Lookup219: pallet_pips::SnapshottedPip + * Lookup218: pallet_pips::SnapshottedPip **/ PalletPipsSnapshottedPip: { id: 'u32', weight: '(bool,u128)' }, /** - * Lookup225: polymesh_common_utilities::traits::portfolio::Event + * Lookup224: polymesh_common_utilities::traits::portfolio::Event **/ PolymeshCommonUtilitiesPortfolioEvent: { _enum: { @@ -1157,7 +1151,7 @@ export default { } }, /** - * Lookup229: pallet_protocol_fee::RawEvent + * Lookup228: pallet_protocol_fee::RawEvent **/ PalletProtocolFeeRawEvent: { _enum: { @@ -1167,11 +1161,11 @@ export default { } }, /** - * Lookup230: polymesh_primitives::PosRatio + * Lookup229: polymesh_primitives::PosRatio **/ PolymeshPrimitivesPosRatio: '(u32,u32)', /** - * Lookup231: pallet_scheduler::pallet::Event + * Lookup230: pallet_scheduler::pallet::Event **/ PalletSchedulerEvent: { _enum: { @@ -1181,7 +1175,7 @@ export default { } }, /** - * Lookup233: pallet_settlement::RawEvent + * Lookup232: pallet_settlement::RawEvent **/ PalletSettlementRawEvent: { _enum: { @@ -1207,13 +1201,13 @@ export default { } }, /** - * Lookup236: pallet_settlement::VenueType + * Lookup235: pallet_settlement::VenueType **/ PalletSettlementVenueType: { _enum: ['Other', 'Distribution', 'Sto', 'Exchange'] }, /** - * Lookup238: pallet_settlement::SettlementType + * Lookup237: pallet_settlement::SettlementType **/ PalletSettlementSettlementType: { _enum: { @@ -1222,7 +1216,7 @@ export default { } }, /** - * Lookup240: pallet_settlement::Leg + * Lookup239: pallet_settlement::Leg **/ PalletSettlementLeg: { from: 'PolymeshPrimitivesIdentityIdPortfolioId', @@ -1231,7 +1225,7 @@ export default { amount: 'u128' }, /** - * Lookup244: polymesh_common_utilities::traits::statistics::Event + * Lookup243: polymesh_common_utilities::traits::statistics::Event **/ PolymeshCommonUtilitiesStatisticsEvent: { _enum: { @@ -1244,7 +1238,7 @@ export default { } }, /** - * Lookup245: polymesh_primitives::statistics::AssetScope + * Lookup244: polymesh_primitives::statistics::AssetScope **/ PolymeshPrimitivesStatisticsAssetScope: { _enum: { @@ -1252,27 +1246,27 @@ export default { } }, /** - * Lookup247: polymesh_primitives::statistics::StatType + * Lookup246: polymesh_primitives::statistics::StatType **/ PolymeshPrimitivesStatisticsStatType: { op: 'PolymeshPrimitivesStatisticsStatOpType', claimIssuer: 'Option<(PolymeshPrimitivesIdentityClaimClaimType,PolymeshPrimitivesIdentityId)>' }, /** - * Lookup248: polymesh_primitives::statistics::StatOpType + * Lookup247: polymesh_primitives::statistics::StatOpType **/ PolymeshPrimitivesStatisticsStatOpType: { _enum: ['Count', 'Balance'] }, /** - * Lookup252: polymesh_primitives::statistics::StatUpdate + * Lookup251: polymesh_primitives::statistics::StatUpdate **/ PolymeshPrimitivesStatisticsStatUpdate: { key2: 'PolymeshPrimitivesStatisticsStat2ndKey', value: 'Option' }, /** - * Lookup253: polymesh_primitives::statistics::Stat2ndKey + * Lookup252: polymesh_primitives::statistics::Stat2ndKey **/ PolymeshPrimitivesStatisticsStat2ndKey: { _enum: { @@ -1281,7 +1275,7 @@ export default { } }, /** - * Lookup254: polymesh_primitives::statistics::StatClaim + * Lookup253: polymesh_primitives::statistics::StatClaim **/ PolymeshPrimitivesStatisticsStatClaim: { _enum: { @@ -1291,7 +1285,7 @@ export default { } }, /** - * Lookup258: polymesh_primitives::transfer_compliance::TransferCondition + * Lookup257: polymesh_primitives::transfer_compliance::TransferCondition **/ PolymeshPrimitivesTransferComplianceTransferCondition: { _enum: { @@ -1302,7 +1296,7 @@ export default { } }, /** - * Lookup260: polymesh_primitives::transfer_compliance::TransferConditionExemptKey + * Lookup259: polymesh_primitives::transfer_compliance::TransferConditionExemptKey **/ PolymeshPrimitivesTransferComplianceTransferConditionExemptKey: { asset: 'PolymeshPrimitivesStatisticsAssetScope', @@ -1310,7 +1304,7 @@ export default { claimType: 'Option' }, /** - * Lookup262: pallet_sto::RawEvent + * Lookup261: pallet_sto::RawEvent **/ PalletStoRawEvent: { _enum: { @@ -1323,7 +1317,7 @@ export default { } }, /** - * Lookup265: pallet_sto::Fundraiser + * Lookup264: pallet_sto::Fundraiser **/ PalletStoFundraiser: { creator: 'PolymeshPrimitivesIdentityId', @@ -1339,7 +1333,7 @@ export default { minimumInvestment: 'u128' }, /** - * Lookup267: pallet_sto::FundraiserTier + * Lookup266: pallet_sto::FundraiserTier **/ PalletStoFundraiserTier: { total: 'u128', @@ -1347,13 +1341,13 @@ export default { remaining: 'u128' }, /** - * Lookup268: pallet_sto::FundraiserStatus + * Lookup267: pallet_sto::FundraiserStatus **/ PalletStoFundraiserStatus: { _enum: ['Live', 'Frozen', 'Closed', 'ClosedEarly'] }, /** - * Lookup269: pallet_treasury::RawEvent + * Lookup268: pallet_treasury::RawEvent **/ PalletTreasuryRawEvent: { _enum: { @@ -1362,7 +1356,7 @@ export default { } }, /** - * Lookup270: pallet_utility::Event + * Lookup269: pallet_utility::Event **/ PalletUtilityEvent: { _enum: { @@ -1372,7 +1366,7 @@ export default { } }, /** - * Lookup274: polymesh_common_utilities::traits::base::Event + * Lookup273: polymesh_common_utilities::traits::base::Event **/ PolymeshCommonUtilitiesBaseEvent: { _enum: { @@ -1380,7 +1374,7 @@ export default { } }, /** - * Lookup276: polymesh_common_utilities::traits::external_agents::Event + * Lookup275: polymesh_common_utilities::traits::external_agents::Event **/ PolymeshCommonUtilitiesExternalAgentsEvent: { _enum: { @@ -1392,7 +1386,7 @@ export default { } }, /** - * Lookup277: polymesh_common_utilities::traits::relayer::RawEvent + * Lookup276: polymesh_common_utilities::traits::relayer::RawEvent **/ PolymeshCommonUtilitiesRelayerRawEvent: { _enum: { @@ -1403,7 +1397,7 @@ export default { } }, /** - * Lookup278: pallet_rewards::RawEvent + * Lookup277: pallet_rewards::RawEvent **/ PalletRewardsRawEvent: { _enum: { @@ -1411,7 +1405,7 @@ export default { } }, /** - * Lookup279: pallet_test_utils::RawEvent + * Lookup278: pallet_test_utils::RawEvent **/ PalletTestUtilsRawEvent: { _enum: { @@ -1420,6 +1414,10 @@ export default { CddStatus: '(Option,AccountId32,bool)' } }, + /** + * Lookup279: polymesh_primitives::cdd_id::InvestorUid + **/ + PolymeshPrimitivesCddIdInvestorUid: '[u8;16]', /** * Lookup280: frame_system::Phase **/ @@ -1766,33 +1764,35 @@ export default { degree: 'u8' }, /** - * Lookup340: polymesh_primitives::identity::Identity + * Lookup340: polymesh_primitives::identity::DidRecord **/ - PolymeshPrimitivesIdentity: { - primaryKey: 'AccountId32', - secondaryKeys: 'Vec' + PolymeshPrimitivesIdentityDidRecord: { + primaryKey: 'Option' }, /** - * Lookup342: polymesh_primitives::secondary_key::SecondaryKey - **/ - PolymeshPrimitivesSecondaryKey: { - signer: 'PolymeshPrimitivesSecondaryKeySignatory', - permissions: 'PolymeshPrimitivesSecondaryKeyPermissions' - }, - /** - * Lookup344: pallet_identity::types::Claim1stKey + * Lookup342: pallet_identity::types::Claim1stKey **/ PalletIdentityClaim1stKey: { target: 'PolymeshPrimitivesIdentityId', claimType: 'PolymeshPrimitivesIdentityClaimClaimType' }, /** - * Lookup345: pallet_identity::types::Claim2ndKey + * Lookup343: pallet_identity::types::Claim2ndKey **/ PalletIdentityClaim2ndKey: { issuer: 'PolymeshPrimitivesIdentityId', scope: 'Option' }, + /** + * Lookup345: polymesh_primitives::secondary_key::KeyRecord + **/ + PolymeshPrimitivesSecondaryKeyKeyRecord: { + _enum: { + PrimaryKey: 'PolymeshPrimitivesIdentityId', + SecondaryKey: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesSecondaryKeyPermissions)', + MultiSigSignerKey: 'AccountId32' + } + }, /** * Lookup348: polymesh_primitives::authorization::Authorization **/ @@ -1817,7 +1817,7 @@ export default { expiry: 'Option', }, remove_secondary_keys: { - signersToRemove: 'Vec', + keysToRemove: 'Vec', }, accept_primary_key: { rotationAuthId: 'u64', @@ -1839,14 +1839,10 @@ export default { target: 'PolymeshPrimitivesIdentityId', claim: 'PolymeshPrimitivesIdentityClaimClaim', }, - set_permission_to_signer: { - signer: 'PolymeshPrimitivesSecondaryKeySignatory', + set_secondary_key_permissions: { + key: 'AccountId32', perms: 'PolymeshPrimitivesSecondaryKeyPermissions', }, - legacy_set_permission_to_signer: { - signer: 'PolymeshPrimitivesSecondaryKeySignatory', - permissions: 'PolymeshPrimitivesSecondaryKeyApiLegacyPermissions', - }, freeze_secondary_keys: 'Null', unfreeze_secondary_keys: 'Null', add_authorization: { @@ -1894,55 +1890,35 @@ export default { } }, /** - * Lookup352: polymesh_primitives::secondary_key::api::LegacyPermissions - **/ - PolymeshPrimitivesSecondaryKeyApiLegacyPermissions: { - asset: 'PolymeshPrimitivesSubsetSubsetRestrictionTicker', - extrinsic: 'PolymeshPrimitivesSecondaryKeyApiLegacyExtrinsicPermissions', - portfolio: 'PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId' - }, - /** - * Lookup353: polymesh_primitives::secondary_key::api::LegacyExtrinsicPermissions - **/ - PolymeshPrimitivesSecondaryKeyApiLegacyExtrinsicPermissions: 'Option>', - /** - * Lookup356: polymesh_primitives::secondary_key::api::LegacyPalletPermissions - **/ - PolymeshPrimitivesSecondaryKeyApiLegacyPalletPermissions: { - palletName: 'Bytes', - total: 'bool', - dispatchableNames: 'Vec' - }, - /** - * Lookup358: polymesh_common_utilities::traits::identity::SecondaryKeyWithAuth + * Lookup353: polymesh_common_utilities::traits::identity::SecondaryKeyWithAuth **/ PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth: { - secondaryKey: 'PolymeshPrimitivesSecondaryKeyApiSecondaryKey', + secondaryKey: 'PolymeshPrimitivesSecondaryKey', authSignature: 'H512' }, /** - * Lookup360: polymesh_primitives::investor_zkproof_data::v1::InvestorZKProofData + * Lookup355: polymesh_primitives::investor_zkproof_data::v1::InvestorZKProofData **/ PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData: 'SchnorrkelSignSignature', /** - * Lookup361: schnorrkel::sign::Signature + * Lookup356: schnorrkel::sign::Signature **/ SchnorrkelSignSignature: { r: 'Curve25519DalekRistrettoCompressedRistretto', s: 'Curve25519DalekScalar' }, /** - * Lookup362: curve25519_dalek::ristretto::CompressedRistretto + * Lookup357: curve25519_dalek::ristretto::CompressedRistretto **/ Curve25519DalekRistrettoCompressedRistretto: '[u8;32]', /** - * Lookup363: curve25519_dalek::scalar::Scalar + * Lookup358: curve25519_dalek::scalar::Scalar **/ Curve25519DalekScalar: { bytes: '[u8;32]' }, /** - * Lookup364: confidential_identity::claim_proofs::ScopeClaimProof + * Lookup359: confidential_identity::claim_proofs::ScopeClaimProof **/ ConfidentialIdentityClaimProofsScopeClaimProof: { proofScopeIdWellformed: 'ConfidentialIdentitySignSignature', @@ -1950,26 +1926,26 @@ export default { scopeId: 'Curve25519DalekRistrettoRistrettoPoint' }, /** - * Lookup365: confidential_identity::sign::Signature + * Lookup360: confidential_identity::sign::Signature **/ ConfidentialIdentitySignSignature: { r: 'Curve25519DalekRistrettoCompressedRistretto', s: 'Curve25519DalekScalar' }, /** - * Lookup366: confidential_identity::claim_proofs::ZkProofData + * Lookup361: confidential_identity::claim_proofs::ZkProofData **/ ConfidentialIdentityClaimProofsZkProofData: { - challengeResponses: '[Lookup363;2]', + challengeResponses: '[Lookup358;2]', subtractExpressionsRes: 'Curve25519DalekRistrettoRistrettoPoint', blindedScopeDidHash: 'Curve25519DalekRistrettoRistrettoPoint' }, /** - * Lookup368: curve25519_dalek::ristretto::RistrettoPoint + * Lookup363: curve25519_dalek::ristretto::RistrettoPoint **/ Curve25519DalekRistrettoRistrettoPoint: 'Curve25519DalekEdwardsEdwardsPoint', /** - * Lookup369: curve25519_dalek::edwards::EdwardsPoint + * Lookup364: curve25519_dalek::edwards::EdwardsPoint **/ Curve25519DalekEdwardsEdwardsPoint: { x: 'Curve25519DalekBackendSerialU64FieldFieldElement51', @@ -1978,17 +1954,17 @@ export default { t: 'Curve25519DalekBackendSerialU64FieldFieldElement51' }, /** - * Lookup370: curve25519_dalek::backend::serial::u64::field::FieldElement51 + * Lookup365: curve25519_dalek::backend::serial::u64::field::FieldElement51 **/ Curve25519DalekBackendSerialU64FieldFieldElement51: '[u64;5]', /** - * Lookup372: pallet_identity::Error + * Lookup367: pallet_identity::Error **/ PalletIdentityError: { _enum: ['AlreadyLinked', 'MissingCurrentIdentity', 'Unauthorized', 'InvalidAccountKey', 'UnAuthorizedCddProvider', 'InvalidAuthorizationFromOwner', 'InvalidAuthorizationFromCddProvider', 'NotCddProviderAttestation', 'AuthorizationsNotForSameDids', 'DidMustAlreadyExist', 'CurrentIdentityCannotBeForwarded', 'AuthorizationExpired', 'TargetHasNoCdd', 'AuthorizationHasBeenRevoked', 'InvalidAuthorizationSignature', 'KeyNotAllowed', 'NotPrimaryKey', 'DidDoesNotExist', 'DidAlreadyExists', 'SecondaryKeysContainPrimaryKey', 'FailedToChargeFee', 'NotASigner', 'CannotDecodeSignerAccountId', 'MultiSigHasBalance', 'ConfidentialScopeClaimNotAllowed', 'InvalidScopeClaim', 'ClaimVariantNotAllowed', 'TargetHasNonZeroBalanceAtScopeId', 'CDDIdNotUniqueForIdentity', 'InvalidCDDId', 'ClaimAndProofVersionsDoNotMatch', 'AccountKeyIsBeingUsed', 'CustomScopeTooLong'] }, /** - * Lookup374: polymesh_common_utilities::traits::group::InactiveMember + * Lookup369: polymesh_common_utilities::traits::group::InactiveMember **/ PolymeshCommonUtilitiesGroupInactiveMember: { id: 'PolymeshPrimitivesIdentityId', @@ -1996,7 +1972,7 @@ export default { expiry: 'Option' }, /** - * Lookup375: pallet_group::Call + * Lookup370: pallet_group::Call **/ PalletGroupCall: { _enum: { @@ -2025,13 +2001,13 @@ export default { } }, /** - * Lookup376: pallet_group::Error + * Lookup371: pallet_group::Error **/ PalletGroupError: { _enum: ['OnlyPrimaryKeyAllowed', 'DuplicateMember', 'NoSuchMember', 'LastMemberCannotQuit', 'MissingCurrentIdentity', 'ActiveMembersLimitExceeded', 'ActiveMembersLimitOverflow'] }, /** - * Lookup378: pallet_committee::Call + * Lookup373: pallet_committee::Call **/ PalletCommitteeCall: { _enum: { @@ -2057,7 +2033,7 @@ export default { } }, /** - * Lookup384: pallet_multisig::Call + * Lookup379: pallet_multisig::Call **/ PalletMultisigCall: { _enum: { @@ -2144,7 +2120,7 @@ export default { } }, /** - * Lookup385: pallet_bridge::Call + * Lookup380: pallet_bridge::Call **/ PalletBridgeCall: { _enum: { @@ -2199,7 +2175,7 @@ export default { } }, /** - * Lookup389: pallet_staking::Call + * Lookup384: pallet_staking::Call **/ PalletStakingCall: { _enum: { @@ -2321,7 +2297,7 @@ export default { } }, /** - * Lookup390: pallet_staking::RewardDestination + * Lookup385: pallet_staking::RewardDestination **/ PalletStakingRewardDestination: { _enum: { @@ -2332,14 +2308,14 @@ export default { } }, /** - * Lookup391: pallet_staking::ValidatorPrefs + * Lookup386: pallet_staking::ValidatorPrefs **/ PalletStakingValidatorPrefs: { commission: 'Compact', blocked: 'bool' }, /** - * Lookup397: pallet_staking::CompactAssignments + * Lookup392: pallet_staking::CompactAssignments **/ PalletStakingCompactAssignments: { votes1: 'Vec<(Compact,Compact)>', @@ -2360,14 +2336,14 @@ export default { votes16: 'Vec<(Compact,[(Compact,Compact);15],Compact)>' }, /** - * Lookup449: pallet_staking::ElectionSize + * Lookup444: pallet_staking::ElectionSize **/ PalletStakingElectionSize: { validators: 'Compact', nominators: 'Compact' }, /** - * Lookup450: pallet_session::pallet::Call + * Lookup445: pallet_session::pallet::Call **/ PalletSessionCall: { _enum: { @@ -2382,7 +2358,7 @@ export default { } }, /** - * Lookup451: polymesh_runtime_develop::runtime::SessionKeys + * Lookup446: polymesh_runtime_develop::runtime::SessionKeys **/ PolymeshRuntimeDevelopRuntimeSessionKeys: { grandpa: 'SpFinalityGrandpaAppPublic', @@ -2391,11 +2367,11 @@ export default { authorityDiscovery: 'SpAuthorityDiscoveryAppPublic' }, /** - * Lookup452: sp_authority_discovery::app::Public + * Lookup447: sp_authority_discovery::app::Public **/ SpAuthorityDiscoveryAppPublic: 'SpCoreSr25519Public', /** - * Lookup453: pallet_grandpa::pallet::Call + * Lookup448: pallet_grandpa::pallet::Call **/ PalletGrandpaCall: { _enum: { @@ -2414,14 +2390,14 @@ export default { } }, /** - * Lookup454: sp_finality_grandpa::EquivocationProof + * Lookup449: sp_finality_grandpa::EquivocationProof **/ SpFinalityGrandpaEquivocationProof: { setId: 'u64', equivocation: 'SpFinalityGrandpaEquivocation' }, /** - * Lookup455: sp_finality_grandpa::Equivocation + * Lookup450: sp_finality_grandpa::Equivocation **/ SpFinalityGrandpaEquivocation: { _enum: { @@ -2430,7 +2406,7 @@ export default { } }, /** - * Lookup456: finality_grandpa::Equivocation, sp_finality_grandpa::app::Signature> + * Lookup451: finality_grandpa::Equivocation, sp_finality_grandpa::app::Signature> **/ FinalityGrandpaEquivocationPrevote: { roundNumber: 'u64', @@ -2439,22 +2415,22 @@ export default { second: '(FinalityGrandpaPrevote,SpFinalityGrandpaAppSignature)' }, /** - * Lookup457: finality_grandpa::Prevote + * Lookup452: finality_grandpa::Prevote **/ FinalityGrandpaPrevote: { targetHash: 'H256', targetNumber: 'u32' }, /** - * Lookup458: sp_finality_grandpa::app::Signature + * Lookup453: sp_finality_grandpa::app::Signature **/ SpFinalityGrandpaAppSignature: 'SpCoreEd25519Signature', /** - * Lookup459: sp_core::ed25519::Signature + * Lookup454: sp_core::ed25519::Signature **/ SpCoreEd25519Signature: '[u8;64]', /** - * Lookup461: finality_grandpa::Equivocation, sp_finality_grandpa::app::Signature> + * Lookup456: finality_grandpa::Equivocation, sp_finality_grandpa::app::Signature> **/ FinalityGrandpaEquivocationPrecommit: { roundNumber: 'u64', @@ -2463,14 +2439,14 @@ export default { second: '(FinalityGrandpaPrecommit,SpFinalityGrandpaAppSignature)' }, /** - * Lookup462: finality_grandpa::Precommit + * Lookup457: finality_grandpa::Precommit **/ FinalityGrandpaPrecommit: { targetHash: 'H256', targetNumber: 'u32' }, /** - * Lookup464: pallet_im_online::pallet::Call + * Lookup459: pallet_im_online::pallet::Call **/ PalletImOnlineCall: { _enum: { @@ -2481,7 +2457,7 @@ export default { } }, /** - * Lookup465: pallet_im_online::Heartbeat + * Lookup460: pallet_im_online::Heartbeat **/ PalletImOnlineHeartbeat: { blockNumber: 'u32', @@ -2491,22 +2467,22 @@ export default { validatorsLen: 'u32' }, /** - * Lookup466: sp_core::offchain::OpaqueNetworkState + * Lookup461: sp_core::offchain::OpaqueNetworkState **/ SpCoreOffchainOpaqueNetworkState: { peerId: 'Bytes', externalAddresses: 'Vec' }, /** - * Lookup470: pallet_im_online::sr25519::app_sr25519::Signature + * Lookup465: pallet_im_online::sr25519::app_sr25519::Signature **/ PalletImOnlineSr25519AppSr25519Signature: 'SpCoreSr25519Signature', /** - * Lookup471: sp_core::sr25519::Signature + * Lookup466: sp_core::sr25519::Signature **/ SpCoreSr25519Signature: '[u8;64]', /** - * Lookup472: pallet_sudo::Call + * Lookup467: pallet_sudo::Call **/ PalletSudoCall: { _enum: { @@ -2530,7 +2506,7 @@ export default { } }, /** - * Lookup473: pallet_asset::Call + * Lookup468: pallet_asset::Call **/ PalletAssetCall: { _enum: { @@ -2645,11 +2621,11 @@ export default { } }, /** - * Lookup476: polymesh_primitives::ethereum::EcdsaSignature + * Lookup471: polymesh_primitives::ethereum::EcdsaSignature **/ PolymeshPrimitivesEthereumEcdsaSignature: '[u8;65]', /** - * Lookup478: pallet_asset::ClassicTickerImport + * Lookup473: pallet_asset::ClassicTickerImport **/ PalletAssetClassicTickerImport: { ethOwner: 'PolymeshPrimitivesEthereumEthereumAddress', @@ -2658,14 +2634,14 @@ export default { isCreated: 'bool' }, /** - * Lookup479: pallet_asset::TickerRegistrationConfig + * Lookup474: pallet_asset::TickerRegistrationConfig **/ PalletAssetTickerRegistrationConfig: { maxTickerLength: 'u8', registrationLength: 'Option' }, /** - * Lookup480: polymesh_primitives::asset_metadata::AssetMetadataKey + * Lookup475: polymesh_primitives::asset_metadata::AssetMetadataKey **/ PolymeshPrimitivesAssetMetadataAssetMetadataKey: { _enum: { @@ -2674,7 +2650,7 @@ export default { } }, /** - * Lookup481: pallet_corporate_actions::distribution::Call + * Lookup476: pallet_corporate_actions::distribution::Call **/ PalletCorporateActionsDistributionCall: { _enum: { @@ -2703,7 +2679,7 @@ export default { } }, /** - * Lookup483: pallet_asset::checkpoint::Call + * Lookup478: pallet_asset::checkpoint::Call **/ PalletAssetCheckpointCall: { _enum: { @@ -2724,7 +2700,7 @@ export default { } }, /** - * Lookup484: pallet_asset::checkpoint::ScheduleSpec + * Lookup479: pallet_asset::checkpoint::ScheduleSpec **/ PalletAssetCheckpointScheduleSpec: { start: 'Option', @@ -2732,7 +2708,7 @@ export default { remaining: 'u32' }, /** - * Lookup485: pallet_compliance_manager::Call + * Lookup480: pallet_compliance_manager::Call **/ PalletComplianceManagerCall: { _enum: { @@ -2773,7 +2749,7 @@ export default { } }, /** - * Lookup486: pallet_corporate_actions::Call + * Lookup481: pallet_corporate_actions::Call **/ PalletCorporateActionsCall: { _enum: { @@ -2826,7 +2802,7 @@ export default { } }, /** - * Lookup488: pallet_corporate_actions::RecordDateSpec + * Lookup483: pallet_corporate_actions::RecordDateSpec **/ PalletCorporateActionsRecordDateSpec: { _enum: { @@ -2836,7 +2812,7 @@ export default { } }, /** - * Lookup491: pallet_corporate_actions::InitiateCorporateActionArgs + * Lookup486: pallet_corporate_actions::InitiateCorporateActionArgs **/ PalletCorporateActionsInitiateCorporateActionArgs: { ticker: 'PolymeshPrimitivesTicker', @@ -2849,7 +2825,7 @@ export default { withholdingTax: 'Option>' }, /** - * Lookup492: pallet_corporate_actions::ballot::Call + * Lookup487: pallet_corporate_actions::ballot::Call **/ PalletCorporateActionsBallotCall: { _enum: { @@ -2881,7 +2857,7 @@ export default { } }, /** - * Lookup493: pallet_pips::Call + * Lookup488: pallet_pips::Call **/ PalletPipsCall: { _enum: { @@ -2942,13 +2918,13 @@ export default { } }, /** - * Lookup496: pallet_pips::SnapshotResult + * Lookup491: pallet_pips::SnapshotResult **/ PalletPipsSnapshotResult: { _enum: ['Approve', 'Reject', 'Skip'] }, /** - * Lookup497: pallet_portfolio::Call + * Lookup492: pallet_portfolio::Call **/ PalletPortfolioCall: { _enum: { @@ -2976,7 +2952,7 @@ export default { } }, /** - * Lookup499: pallet_portfolio::MovePortfolioItem + * Lookup494: pallet_portfolio::MovePortfolioItem **/ PalletPortfolioMovePortfolioItem: { ticker: 'PolymeshPrimitivesTicker', @@ -2984,7 +2960,7 @@ export default { memo: 'Option' }, /** - * Lookup500: pallet_protocol_fee::Call + * Lookup495: pallet_protocol_fee::Call **/ PalletProtocolFeeCall: { _enum: { @@ -2998,13 +2974,13 @@ export default { } }, /** - * Lookup501: polymesh_common_utilities::protocol_fee::ProtocolOp + * Lookup496: polymesh_common_utilities::protocol_fee::ProtocolOp **/ PolymeshCommonUtilitiesProtocolFeeProtocolOp: { _enum: ['AssetRegisterTicker', 'AssetIssue', 'AssetAddDocuments', 'AssetCreateAsset', 'CheckpointCreateSchedule', 'ComplianceManagerAddComplianceRequirement', 'IdentityCddRegisterDid', 'IdentityAddClaim', 'IdentityAddSecondaryKeysWithAuthorization', 'PipsPropose', 'ContractsPutCode', 'CorporateBallotAttachBallot', 'CapitalDistributionDistribute'] }, /** - * Lookup502: pallet_scheduler::pallet::Call + * Lookup497: pallet_scheduler::pallet::Call **/ PalletSchedulerCall: { _enum: { @@ -3044,7 +3020,7 @@ export default { } }, /** - * Lookup504: pallet_settlement::Call + * Lookup499: pallet_settlement::Call **/ PalletSettlementCall: { _enum: { @@ -3131,7 +3107,7 @@ export default { } }, /** - * Lookup506: pallet_settlement::ReceiptDetails + * Lookup501: pallet_settlement::ReceiptDetails **/ PalletSettlementReceiptDetails: { receiptUid: 'u64', @@ -3141,7 +3117,7 @@ export default { metadata: 'Bytes' }, /** - * Lookup507: sp_runtime::MultiSignature + * Lookup502: sp_runtime::MultiSignature **/ SpRuntimeMultiSignature: { _enum: { @@ -3151,11 +3127,11 @@ export default { } }, /** - * Lookup508: sp_core::ecdsa::Signature + * Lookup503: sp_core::ecdsa::Signature **/ SpCoreEcdsaSignature: '[u8;65]', /** - * Lookup509: pallet_statistics::Call + * Lookup504: pallet_statistics::Call **/ PalletStatisticsCall: { _enum: { @@ -3180,23 +3156,23 @@ export default { } }, /** - * Lookup510: BTreeSet + * Lookup505: BTreeSet **/ BTreeSetStatType: 'Vec', /** - * Lookup511: BTreeSet + * Lookup506: BTreeSet **/ BTreeSetStatUpdate: 'Vec', /** - * Lookup512: BTreeSet + * Lookup507: BTreeSet **/ BTreeSetTransferCondition: 'Vec', /** - * Lookup513: BTreeSet + * Lookup508: BTreeSet **/ BTreeSetIdentityId: 'Vec', /** - * Lookup514: pallet_sto::Call + * Lookup509: pallet_sto::Call **/ PalletStoCall: { _enum: { @@ -3242,14 +3218,14 @@ export default { } }, /** - * Lookup516: pallet_sto::PriceTier + * Lookup511: pallet_sto::PriceTier **/ PalletStoPriceTier: { total: 'u128', price: 'u128' }, /** - * Lookup518: pallet_treasury::Call + * Lookup513: pallet_treasury::Call **/ PalletTreasuryCall: { _enum: { @@ -3262,14 +3238,14 @@ export default { } }, /** - * Lookup520: polymesh_primitives::Beneficiary + * Lookup515: polymesh_primitives::Beneficiary **/ PolymeshPrimitivesBeneficiary: { id: 'PolymeshPrimitivesIdentityId', amount: 'u128' }, /** - * Lookup521: pallet_utility::Call + * Lookup516: pallet_utility::Call **/ PalletUtilityCall: { _enum: { @@ -3290,18 +3266,18 @@ export default { } }, /** - * Lookup523: pallet_utility::UniqueCall + * Lookup518: pallet_utility::UniqueCall **/ PalletUtilityUniqueCall: { nonce: 'u64', call: 'Call' }, /** - * Lookup524: pallet_base::Call + * Lookup519: pallet_base::Call **/ PalletBaseCall: 'Null', /** - * Lookup525: pallet_external_agents::Call + * Lookup520: pallet_external_agents::Call **/ PalletExternalAgentsCall: { _enum: { @@ -3342,7 +3318,7 @@ export default { } }, /** - * Lookup526: pallet_relayer::Call + * Lookup521: pallet_relayer::Call **/ PalletRelayerCall: { _enum: { @@ -3372,7 +3348,7 @@ export default { } }, /** - * Lookup527: pallet_rewards::Call + * Lookup522: pallet_rewards::Call **/ PalletRewardsCall: { _enum: { @@ -3388,7 +3364,7 @@ export default { } }, /** - * Lookup528: pallet_rewards::ItnRewardStatus + * Lookup523: pallet_rewards::ItnRewardStatus **/ PalletRewardsItnRewardStatus: { _enum: { @@ -3397,7 +3373,7 @@ export default { } }, /** - * Lookup529: pallet_test_utils::Call + * Lookup524: pallet_test_utils::Call **/ PalletTestUtilsCall: { _enum: { @@ -3415,7 +3391,7 @@ export default { } }, /** - * Lookup530: pallet_committee::PolymeshVotes + * Lookup525: pallet_committee::PolymeshVotes **/ PalletCommitteePolymeshVotes: { index: 'u32', @@ -3424,13 +3400,13 @@ export default { expiry: 'PolymeshCommonUtilitiesMaybeBlock' }, /** - * Lookup532: pallet_committee::Error + * Lookup527: pallet_committee::Error **/ PalletCommitteeError: { _enum: ['DuplicateVote', 'NotAMember', 'NoSuchProposal', 'ProposalExpired', 'DuplicateProposal', 'MismatchedVotingIndex', 'InvalidProportion', 'FirstVoteReject', 'ProposalsLimitReached'] }, /** - * Lookup542: pallet_multisig::ProposalDetails + * Lookup537: pallet_multisig::ProposalDetails **/ PalletMultisigProposalDetails: { approvals: 'u64', @@ -3440,19 +3416,19 @@ export default { autoClose: 'bool' }, /** - * Lookup543: pallet_multisig::ProposalStatus + * Lookup538: pallet_multisig::ProposalStatus **/ PalletMultisigProposalStatus: { _enum: ['Invalid', 'ActiveOrExpired', 'ExecutionSuccessful', 'ExecutionFailed', 'Rejected'] }, /** - * Lookup544: pallet_multisig::Error + * Lookup540: pallet_multisig::Error **/ PalletMultisigError: { - _enum: ['CddMissing', 'ProposalMissing', 'DecodingError', 'NoSigners', 'RequiredSignaturesOutOfBounds', 'NotASigner', 'NoSuchMultisig', 'NotEnoughSigners', 'NonceOverflow', 'AlreadyVoted', 'AlreadyASigner', 'FailedToChargeFee', 'IdentityNotCreator', 'ChangeNotAllowed', 'SignerAlreadyLinkedToMultisig', 'SignerAlreadyLinkedToIdentity', 'MissingCurrentIdentity', 'NotPrimaryKey', 'ProposalAlreadyRejected', 'ProposalExpired', 'ProposalAlreadyExecuted', 'MultisigMissingIdentity', 'FailedToSchedule', 'TooManySigners'] + _enum: ['CddMissing', 'ProposalMissing', 'DecodingError', 'NoSigners', 'RequiredSignaturesOutOfBounds', 'NotASigner', 'NoSuchMultisig', 'NotEnoughSigners', 'NonceOverflow', 'AlreadyVoted', 'AlreadyASigner', 'FailedToChargeFee', 'IdentityNotCreator', 'ChangeNotAllowed', 'SignerAlreadyLinkedToMultisig', 'SignerAlreadyLinkedToIdentity', 'SignerSameAsMultisig', 'MissingCurrentIdentity', 'NotPrimaryKey', 'ProposalAlreadyRejected', 'ProposalExpired', 'ProposalAlreadyExecuted', 'MultisigMissingIdentity', 'FailedToSchedule', 'TooManySigners'] }, /** - * Lookup546: pallet_bridge::BridgeTxDetail + * Lookup542: pallet_bridge::BridgeTxDetail **/ PalletBridgeBridgeTxDetail: { amount: 'u128', @@ -3461,7 +3437,7 @@ export default { txHash: 'H256' }, /** - * Lookup547: pallet_bridge::BridgeTxStatus + * Lookup543: pallet_bridge::BridgeTxStatus **/ PalletBridgeBridgeTxStatus: { _enum: { @@ -3473,13 +3449,13 @@ export default { } }, /** - * Lookup550: pallet_bridge::Error + * Lookup546: pallet_bridge::Error **/ PalletBridgeError: { _enum: ['ControllerNotSet', 'BadCaller', 'BadAdmin', 'NoValidCdd', 'ProposalAlreadyHandled', 'Unauthorized', 'Frozen', 'NotFrozen', 'FrozenTx', 'BridgeLimitReached', 'Overflow', 'DivisionByZero', 'TimelockedTx'] }, /** - * Lookup551: pallet_staking::StakingLedger + * Lookup547: pallet_staking::StakingLedger **/ PalletStakingStakingLedger: { stash: 'AccountId32', @@ -3489,14 +3465,14 @@ export default { claimedRewards: 'Vec' }, /** - * Lookup553: pallet_staking::UnlockChunk + * Lookup549: pallet_staking::UnlockChunk **/ PalletStakingUnlockChunk: { value: 'Compact', era: 'Compact' }, /** - * Lookup554: pallet_staking::Nominations + * Lookup550: pallet_staking::Nominations **/ PalletStakingNominations: { targets: 'Vec', @@ -3504,27 +3480,27 @@ export default { suppressed: 'bool' }, /** - * Lookup555: pallet_staking::ActiveEraInfo + * Lookup551: pallet_staking::ActiveEraInfo **/ PalletStakingActiveEraInfo: { index: 'u32', start: 'Option' }, /** - * Lookup557: pallet_staking::EraRewardPoints + * Lookup553: pallet_staking::EraRewardPoints **/ PalletStakingEraRewardPoints: { total: 'u32', individual: 'BTreeMap' }, /** - * Lookup560: pallet_staking::Forcing + * Lookup556: pallet_staking::Forcing **/ PalletStakingForcing: { _enum: ['NotForcing', 'ForceNew', 'ForceNone', 'ForceAlways'] }, /** - * Lookup562: pallet_staking::UnappliedSlash + * Lookup558: pallet_staking::UnappliedSlash **/ PalletStakingUnappliedSlash: { validator: 'AccountId32', @@ -3534,7 +3510,7 @@ export default { payout: 'u128' }, /** - * Lookup566: pallet_staking::slashing::SlashingSpans + * Lookup562: pallet_staking::slashing::SlashingSpans **/ PalletStakingSlashingSlashingSpans: { spanIndex: 'u32', @@ -3543,14 +3519,14 @@ export default { prior: 'Vec' }, /** - * Lookup567: pallet_staking::slashing::SpanRecord + * Lookup563: pallet_staking::slashing::SpanRecord **/ PalletStakingSlashingSpanRecord: { slashed: 'u128', paidOut: 'u128' }, /** - * Lookup568: pallet_staking::ElectionResult + * Lookup564: pallet_staking::ElectionResult **/ PalletStakingElectionResult: { electedStashes: 'Vec', @@ -3558,7 +3534,7 @@ export default { compute: 'PalletStakingElectionCompute' }, /** - * Lookup569: pallet_staking::ElectionStatus + * Lookup565: pallet_staking::ElectionStatus **/ PalletStakingElectionStatus: { _enum: { @@ -3567,43 +3543,43 @@ export default { } }, /** - * Lookup570: pallet_staking::PermissionedIdentityPrefs + * Lookup566: pallet_staking::PermissionedIdentityPrefs **/ PalletStakingPermissionedIdentityPrefs: { intendedCount: 'u32', runningCount: 'u32' }, /** - * Lookup571: pallet_staking::Releases + * Lookup567: pallet_staking::Releases **/ PalletStakingReleases: { _enum: ['V1_0_0Ancient', 'V2_0_0', 'V3_0_0', 'V4_0_0', 'V5_0_0', 'V6_0_0', 'V6_0_1', 'V7_0_0'] }, /** - * Lookup572: pallet_staking::Error + * Lookup568: pallet_staking::Error **/ PalletStakingError: { _enum: ['NotController', 'NotStash', 'AlreadyBonded', 'AlreadyPaired', 'EmptyTargets', 'InvalidSlashIndex', 'InsufficientValue', 'NoMoreChunks', 'NoUnlockChunk', 'FundedTarget', 'InvalidEraToReward', 'NotSortedAndUnique', 'AlreadyClaimed', 'OffchainElectionEarlySubmission', 'OffchainElectionWeakSubmission', 'SnapshotUnavailable', 'OffchainElectionBogusWinnerCount', 'OffchainElectionBogusWinner', 'OffchainElectionBogusCompact', 'OffchainElectionBogusNominator', 'OffchainElectionBogusNomination', 'OffchainElectionSlashedNomination', 'OffchainElectionBogusSelfVote', 'OffchainElectionBogusEdge', 'OffchainElectionBogusScore', 'OffchainElectionBogusElectionSize', 'CallNotAllowed', 'IncorrectSlashingSpans', 'AlreadyExists', 'NotExists', 'NoChange', 'InvalidValidatorIdentity', 'InvalidValidatorCommission', 'StashIdentityDoesNotExist', 'StashIdentityNotPermissioned', 'StashIdentityNotCDDed', 'HitIntendedValidatorCount', 'IntendedCountIsExceedingConsensusLimit', 'BondTooSmall', 'BadState', 'TooManyTargets', 'BadTarget'] }, /** - * Lookup573: sp_staking::offence::OffenceDetails + * Lookup569: sp_staking::offence::OffenceDetails **/ SpStakingOffenceOffenceDetails: { offender: '(AccountId32,PalletStakingExposure)', reporters: 'Vec' }, /** - * Lookup578: sp_core::crypto::KeyTypeId + * Lookup574: sp_core::crypto::KeyTypeId **/ SpCoreCryptoKeyTypeId: '[u8;4]', /** - * Lookup579: pallet_session::pallet::Error + * Lookup575: pallet_session::pallet::Error **/ PalletSessionError: { _enum: ['InvalidProof', 'NoAssociatedValidatorId', 'DuplicatedKey', 'NoKeys', 'NoAccount'] }, /** - * Lookup580: pallet_grandpa::StoredState + * Lookup576: pallet_grandpa::StoredState **/ PalletGrandpaStoredState: { _enum: { @@ -3620,7 +3596,7 @@ export default { } }, /** - * Lookup581: pallet_grandpa::StoredPendingChange + * Lookup577: pallet_grandpa::StoredPendingChange **/ PalletGrandpaStoredPendingChange: { scheduledAt: 'u32', @@ -3629,39 +3605,39 @@ export default { forced: 'Option' }, /** - * Lookup583: pallet_grandpa::pallet::Error + * Lookup579: pallet_grandpa::pallet::Error **/ PalletGrandpaError: { _enum: ['PauseFailed', 'ResumeFailed', 'ChangePending', 'TooSoon', 'InvalidKeyOwnershipProof', 'InvalidEquivocationProof', 'DuplicateOffenceReport'] }, /** - * Lookup587: pallet_im_online::BoundedOpaqueNetworkState + * Lookup583: pallet_im_online::BoundedOpaqueNetworkState **/ PalletImOnlineBoundedOpaqueNetworkState: { peerId: 'Bytes', externalAddresses: 'Vec' }, /** - * Lookup591: pallet_im_online::pallet::Error + * Lookup587: pallet_im_online::pallet::Error **/ PalletImOnlineError: { _enum: ['InvalidKey', 'DuplicatedHeartbeat'] }, /** - * Lookup592: pallet_sudo::Error + * Lookup588: pallet_sudo::Error **/ PalletSudoError: { _enum: ['RequireSudo'] }, /** - * Lookup593: pallet_asset::TickerRegistration + * Lookup589: pallet_asset::TickerRegistration **/ PalletAssetTickerRegistration: { owner: 'PolymeshPrimitivesIdentityId', expiry: 'Option' }, /** - * Lookup594: pallet_asset::SecurityToken + * Lookup590: pallet_asset::SecurityToken **/ PalletAssetSecurityToken: { totalSupply: 'u128', @@ -3670,69 +3646,69 @@ export default { assetType: 'PolymeshPrimitivesAssetAssetType' }, /** - * Lookup598: pallet_asset::AssetOwnershipRelation + * Lookup594: pallet_asset::AssetOwnershipRelation **/ PalletAssetAssetOwnershipRelation: { _enum: ['NotOwned', 'TickerOwned', 'AssetOwned'] }, /** - * Lookup600: pallet_asset::ClassicTickerRegistration + * Lookup596: pallet_asset::ClassicTickerRegistration **/ PalletAssetClassicTickerRegistration: { ethOwner: 'PolymeshPrimitivesEthereumEthereumAddress', isCreated: 'bool' }, /** - * Lookup606: pallet_asset::Error + * Lookup602: pallet_asset::Error **/ PalletAssetError: { _enum: ['Unauthorized', 'AlreadyArchived', 'AlreadyUnArchived', 'ExtensionAlreadyPresent', 'AssetAlreadyCreated', 'TickerTooLong', 'TickerNotAscii', 'TickerAlreadyRegistered', 'TotalSupplyAboveLimit', 'NoSuchAsset', 'AlreadyFrozen', 'NotAnOwner', 'BalanceOverflow', 'TotalSupplyOverflow', 'InvalidGranularity', 'NotFrozen', 'InvalidTransfer', 'InsufficientBalance', 'AssetAlreadyDivisible', 'MaximumTMExtensionLimitReached', 'IncompatibleExtensionVersion', 'InvalidEthereumSignature', 'NoSuchClassicTicker', 'TickerRegistrationExpired', 'SenderSameAsReceiver', 'NoSuchDoc', 'MaxLengthOfAssetNameExceeded', 'FundingRoundNameMaxLengthExceeded', 'InvalidAssetIdentifier', 'InvestorUniquenessClaimNotAllowed', 'InvalidCustomAssetTypeId', 'AssetMetadataNameMaxLengthExceeded', 'AssetMetadataValueMaxLengthExceeded', 'AssetMetadataTypeDefMaxLengthExceeded', 'AssetMetadataKeyIsMissing', 'AssetMetadataValueIsLocked', 'AssetMetadataLocalKeyAlreadyExists', 'AssetMetadataGlobalKeyAlreadyExists'] }, /** - * Lookup609: pallet_corporate_actions::distribution::Error + * Lookup605: pallet_corporate_actions::distribution::Error **/ PalletCorporateActionsDistributionError: { _enum: ['CANotBenefit', 'AlreadyExists', 'ExpiryBeforePayment', 'DistributingAsset', 'HolderAlreadyPaid', 'NoSuchDistribution', 'CannotClaimBeforeStart', 'CannotClaimAfterExpiry', 'BalancePerShareProductOverflowed', 'NotDistributionCreator', 'AlreadyReclaimed', 'NotExpired', 'DistributionStarted', 'InsufficientRemainingAmount'] }, /** - * Lookup616: pallet_asset::checkpoint::Error + * Lookup612: pallet_asset::checkpoint::Error **/ PalletAssetCheckpointError: { _enum: ['NoSuchSchedule', 'ScheduleNotRemovable', 'FailedToComputeNextCheckpoint', 'ScheduleDurationTooShort', 'SchedulesTooComplex'] }, /** - * Lookup617: polymesh_primitives::compliance_manager::AssetCompliance + * Lookup613: polymesh_primitives::compliance_manager::AssetCompliance **/ PolymeshPrimitivesComplianceManagerAssetCompliance: { paused: 'bool', requirements: 'Vec' }, /** - * Lookup619: pallet_compliance_manager::Error + * Lookup615: pallet_compliance_manager::Error **/ PalletComplianceManagerError: { _enum: ['Unauthorized', 'DidNotExist', 'InvalidComplianceRequirementId', 'IncorrectOperationOnTrustedIssuer', 'DuplicateComplianceRequirements', 'ComplianceRequirementTooComplex'] }, /** - * Lookup622: pallet_corporate_actions::Error + * Lookup618: pallet_corporate_actions::Error **/ PalletCorporateActionsError: { _enum: ['AuthNotCAATransfer', 'DetailsTooLong', 'DuplicateDidTax', 'TooManyDidTaxes', 'TooManyTargetIds', 'NoSuchCheckpointId', 'NoSuchCA', 'NoRecordDate', 'RecordDateAfterStart', 'DeclDateAfterRecordDate', 'DeclDateInFuture', 'NotTargetedByCA'] }, /** - * Lookup624: pallet_corporate_actions::ballot::Error + * Lookup620: pallet_corporate_actions::ballot::Error **/ PalletCorporateActionsBallotError: { _enum: ['CANotNotice', 'AlreadyExists', 'NoSuchBallot', 'StartAfterEnd', 'NowAfterEnd', 'NumberOfChoicesOverflow', 'VotingAlreadyStarted', 'VotingNotStarted', 'VotingAlreadyEnded', 'WrongVoteCount', 'InsufficientVotes', 'NoSuchRCVFallback', 'RCVSelfCycle', 'RCVNotAllowed'] }, /** - * Lookup625: pallet_permissions::Error + * Lookup621: pallet_permissions::Error **/ PalletPermissionsError: { _enum: ['UnauthorizedCaller'] }, /** - * Lookup626: pallet_pips::PipsMetadata + * Lookup622: pallet_pips::PipsMetadata **/ PalletPipsPipsMetadata: { id: 'u32', @@ -3743,14 +3719,14 @@ export default { expiry: 'PolymeshCommonUtilitiesMaybeBlock' }, /** - * Lookup628: pallet_pips::DepositInfo + * Lookup624: pallet_pips::DepositInfo **/ PalletPipsDepositInfo: { owner: 'AccountId32', amount: 'u128' }, /** - * Lookup629: pallet_pips::Pip + * Lookup625: pallet_pips::Pip **/ PalletPipsPip: { id: 'u32', @@ -3759,7 +3735,7 @@ export default { proposer: 'PalletPipsProposer' }, /** - * Lookup630: pallet_pips::VotingResult + * Lookup626: pallet_pips::VotingResult **/ PalletPipsVotingResult: { ayesCount: 'u32', @@ -3768,11 +3744,11 @@ export default { naysStake: 'u128' }, /** - * Lookup631: pallet_pips::Vote + * Lookup627: pallet_pips::Vote **/ PalletPipsVote: '(bool,u128)', /** - * Lookup632: pallet_pips::SnapshotMetadata + * Lookup628: pallet_pips::SnapshotMetadata **/ PalletPipsSnapshotMetadata: { createdAt: 'u32', @@ -3780,25 +3756,25 @@ export default { id: 'u32' }, /** - * Lookup634: pallet_pips::Error + * Lookup630: pallet_pips::Error **/ PalletPipsError: { _enum: ['RescheduleNotByReleaseCoordinator', 'NotFromCommunity', 'NotByCommittee', 'TooManyActivePips', 'IncorrectDeposit', 'InsufficientDeposit', 'NoSuchProposal', 'NotACommitteeMember', 'InvalidFutureBlockNumber', 'NumberOfVotesExceeded', 'StakeAmountOfVotesExceeded', 'MissingCurrentIdentity', 'IncorrectProposalState', 'CannotSkipPip', 'SnapshotResultTooLarge', 'SnapshotIdMismatch', 'ScheduledProposalDoesntExist', 'ProposalNotInScheduledState'] }, /** - * Lookup640: pallet_portfolio::Error + * Lookup636: pallet_portfolio::Error **/ PalletPortfolioError: { _enum: ['PortfolioDoesNotExist', 'InsufficientPortfolioBalance', 'DestinationIsSamePortfolio', 'PortfolioNameAlreadyInUse', 'SecondaryKeyNotAuthorizedForPortfolio', 'UnauthorizedCustodian', 'InsufficientTokensLocked', 'PortfolioNotEmpty', 'DifferentIdentityPortfolios'] }, /** - * Lookup641: pallet_protocol_fee::Error + * Lookup637: pallet_protocol_fee::Error **/ PalletProtocolFeeError: { _enum: ['InsufficientAccountBalance', 'UnHandledImbalances', 'InsufficientSubsidyBalance'] }, /** - * Lookup644: pallet_scheduler::ScheduledV2 + * Lookup640: pallet_scheduler::ScheduledV2 **/ PalletSchedulerScheduledV2: { maybeId: 'Option', @@ -3808,7 +3784,7 @@ export default { origin: 'PolymeshRuntimeDevelopRuntimeOriginCaller' }, /** - * Lookup645: polymesh_runtime_develop::runtime::OriginCaller + * Lookup641: polymesh_runtime_develop::runtime::OriginCaller **/ PolymeshRuntimeDevelopRuntimeOriginCaller: { _enum: { @@ -3829,7 +3805,7 @@ export default { } }, /** - * Lookup646: frame_system::RawOrigin + * Lookup642: frame_system::RawOrigin **/ FrameSystemRawOrigin: { _enum: { @@ -3839,48 +3815,48 @@ export default { } }, /** - * Lookup647: pallet_committee::RawOrigin + * Lookup643: pallet_committee::RawOrigin **/ PalletCommitteeRawOriginInstance1: { _enum: ['Endorsed'] }, /** - * Lookup648: pallet_committee::RawOrigin + * Lookup644: pallet_committee::RawOrigin **/ PalletCommitteeRawOriginInstance3: { _enum: ['Endorsed'] }, /** - * Lookup649: pallet_committee::RawOrigin + * Lookup645: pallet_committee::RawOrigin **/ PalletCommitteeRawOriginInstance4: { _enum: ['Endorsed'] }, /** - * Lookup650: sp_core::Void + * Lookup646: sp_core::Void **/ SpCoreVoid: 'Null', /** - * Lookup651: pallet_scheduler::Releases + * Lookup647: pallet_scheduler::Releases **/ PalletSchedulerReleases: { _enum: ['V1', 'V2'] }, /** - * Lookup652: pallet_scheduler::pallet::Error + * Lookup648: pallet_scheduler::pallet::Error **/ PalletSchedulerError: { _enum: ['FailedToSchedule', 'NotFound', 'TargetBlockNumberInPast', 'RescheduleNoChange'] }, /** - * Lookup653: pallet_settlement::Venue + * Lookup649: pallet_settlement::Venue **/ PalletSettlementVenue: { creator: 'PolymeshPrimitivesIdentityId', venueType: 'PalletSettlementVenueType' }, /** - * Lookup656: pallet_settlement::Instruction + * Lookup652: pallet_settlement::Instruction **/ PalletSettlementInstruction: { instructionId: 'u64', @@ -3892,13 +3868,13 @@ export default { valueDate: 'Option' }, /** - * Lookup657: pallet_settlement::InstructionStatus + * Lookup653: pallet_settlement::InstructionStatus **/ PalletSettlementInstructionStatus: { _enum: ['Unknown', 'Pending', 'Failed'] }, /** - * Lookup659: pallet_settlement::LegStatus + * Lookup655: pallet_settlement::LegStatus **/ PalletSettlementLegStatus: { _enum: { @@ -3908,124 +3884,124 @@ export default { } }, /** - * Lookup661: pallet_settlement::AffirmationStatus + * Lookup657: pallet_settlement::AffirmationStatus **/ PalletSettlementAffirmationStatus: { _enum: ['Unknown', 'Pending', 'Affirmed'] }, /** - * Lookup665: pallet_settlement::Error + * Lookup661: pallet_settlement::Error **/ PalletSettlementError: { _enum: ['InvalidVenue', 'Unauthorized', 'NoPendingAffirm', 'InstructionNotAffirmed', 'InstructionNotPending', 'InstructionNotFailed', 'LegNotPending', 'UnauthorizedSigner', 'ReceiptAlreadyClaimed', 'ReceiptNotClaimed', 'UnauthorizedVenue', 'FailedToLockTokens', 'InstructionFailed', 'InstructionDatesInvalid', 'InstructionSettleBlockPassed', 'InvalidSignature', 'SameSenderReceiver', 'PortfolioMismatch', 'SettleOnPastBlock', 'NoPortfolioProvided', 'UnexpectedAffirmationStatus', 'FailedToSchedule', 'LegCountTooSmall', 'UnknownInstruction', 'InstructionHasTooManyLegs'] }, /** - * Lookup667: polymesh_primitives::statistics::Stat1stKey + * Lookup663: polymesh_primitives::statistics::Stat1stKey **/ PolymeshPrimitivesStatisticsStat1stKey: { asset: 'PolymeshPrimitivesStatisticsAssetScope', statType: 'PolymeshPrimitivesStatisticsStatType' }, /** - * Lookup668: polymesh_primitives::transfer_compliance::AssetTransferCompliance + * Lookup664: polymesh_primitives::transfer_compliance::AssetTransferCompliance **/ PolymeshPrimitivesTransferComplianceAssetTransferCompliance: { paused: 'bool', requirements: 'BTreeSetTransferCondition' }, /** - * Lookup671: pallet_statistics::Error + * Lookup667: pallet_statistics::Error **/ PalletStatisticsError: { _enum: ['InvalidTransfer', 'StatTypeMissing', 'StatTypeNeededByTransferCondition', 'CannotRemoveStatTypeInUse', 'StatTypeLimitReached', 'TransferConditionLimitReached'] }, /** - * Lookup673: pallet_sto::Error + * Lookup669: pallet_sto::Error **/ PalletStoError: { _enum: ['Unauthorized', 'Overflow', 'InsufficientTokensRemaining', 'FundraiserNotFound', 'FundraiserNotLive', 'FundraiserClosed', 'FundraiserExpired', 'InvalidVenue', 'InvalidPriceTiers', 'InvalidOfferingWindow', 'MaxPriceExceeded', 'InvestmentAmountTooLow'] }, /** - * Lookup674: pallet_treasury::Error + * Lookup670: pallet_treasury::Error **/ PalletTreasuryError: { _enum: ['InsufficientBalance'] }, /** - * Lookup675: pallet_utility::Error + * Lookup671: pallet_utility::Error **/ PalletUtilityError: { _enum: ['InvalidSignature', 'TargetCddMissing', 'InvalidNonce'] }, /** - * Lookup676: pallet_base::Error + * Lookup672: pallet_base::Error **/ PalletBaseError: { _enum: ['TooLong', 'CounterOverflow'] }, /** - * Lookup678: pallet_external_agents::Error + * Lookup674: pallet_external_agents::Error **/ PalletExternalAgentsError: { _enum: ['NoSuchAG', 'UnauthorizedAgent', 'AlreadyAnAgent', 'NotAnAgent', 'RemovingLastFullAgent', 'SecondaryKeyNotAuthorizedForAsset'] }, /** - * Lookup679: pallet_relayer::Subsidy + * Lookup675: pallet_relayer::Subsidy **/ PalletRelayerSubsidy: { payingKey: 'AccountId32', remaining: 'u128' }, /** - * Lookup680: pallet_relayer::Error + * Lookup676: pallet_relayer::Error **/ PalletRelayerError: { _enum: ['UserKeyCddMissing', 'PayingKeyCddMissing', 'NoPayingKey', 'NotPayingKey', 'NotAuthorizedForPayingKey', 'NotAuthorizedForUserKey', 'Overflow'] }, /** - * Lookup681: pallet_rewards::Error + * Lookup677: pallet_rewards::Error **/ PalletRewardsError: { _enum: ['UnknownItnAddress', 'ItnRewardAlreadyClaimed', 'InvalidSignature', 'UnableToCovertBalance'] }, /** - * Lookup682: pallet_test_utils::Error + * Lookup678: pallet_test_utils::Error **/ PalletTestUtilsError: 'Null', /** - * Lookup685: frame_system::extensions::check_spec_version::CheckSpecVersion + * Lookup681: frame_system::extensions::check_spec_version::CheckSpecVersion **/ FrameSystemExtensionsCheckSpecVersion: 'Null', /** - * Lookup686: frame_system::extensions::check_tx_version::CheckTxVersion + * Lookup682: frame_system::extensions::check_tx_version::CheckTxVersion **/ FrameSystemExtensionsCheckTxVersion: 'Null', /** - * Lookup687: frame_system::extensions::check_genesis::CheckGenesis + * Lookup683: frame_system::extensions::check_genesis::CheckGenesis **/ FrameSystemExtensionsCheckGenesis: 'Null', /** - * Lookup690: frame_system::extensions::check_nonce::CheckNonce + * Lookup686: frame_system::extensions::check_nonce::CheckNonce **/ FrameSystemExtensionsCheckNonce: 'Compact', /** - * Lookup691: polymesh_extensions::check_weight::CheckWeight + * Lookup687: polymesh_extensions::check_weight::CheckWeight **/ PolymeshExtensionsCheckWeight: 'FrameSystemExtensionsCheckWeight', /** - * Lookup692: frame_system::extensions::check_weight::CheckWeight + * Lookup688: frame_system::extensions::check_weight::CheckWeight **/ FrameSystemExtensionsCheckWeight: 'Null', /** - * Lookup693: pallet_transaction_payment::ChargeTransactionPayment + * Lookup689: pallet_transaction_payment::ChargeTransactionPayment **/ PalletTransactionPaymentChargeTransactionPayment: 'Compact', /** - * Lookup694: pallet_permissions::StoreCallMetadata + * Lookup690: pallet_permissions::StoreCallMetadata **/ PalletPermissionsStoreCallMetadata: 'Null', /** - * Lookup695: polymesh_runtime_develop::runtime::Runtime + * Lookup691: polymesh_runtime_develop::runtime::Runtime **/ PolymeshRuntimeDevelopRuntime: 'Null' }; diff --git a/scripts/cli/src/interfaces/types-lookup.ts b/scripts/cli/src/interfaces/types-lookup.ts index 8e6bca61ae..0bbd780654 100644 --- a/scripts/cli/src/interfaces/types-lookup.ts +++ b/scripts/cli/src/interfaces/types-lookup.ts @@ -197,15 +197,15 @@ declare module '@polkadot/types/lookup' { /** @name PolymeshCommonUtilitiesIdentityRawEvent (35) */ export interface PolymeshCommonUtilitiesIdentityRawEvent extends Enum { readonly isDidCreated: boolean; - readonly asDidCreated: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, Vec]>; + readonly asDidCreated: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, Vec]>; readonly isSecondaryKeysAdded: boolean; - readonly asSecondaryKeysAdded: ITuple<[PolymeshPrimitivesIdentityId, Vec]>; + readonly asSecondaryKeysAdded: ITuple<[PolymeshPrimitivesIdentityId, Vec]>; readonly isSecondaryKeysRemoved: boolean; - readonly asSecondaryKeysRemoved: ITuple<[PolymeshPrimitivesIdentityId, Vec]>; - readonly isSignerLeft: boolean; - readonly asSignerLeft: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesSecondaryKeySignatory]>; + readonly asSecondaryKeysRemoved: ITuple<[PolymeshPrimitivesIdentityId, Vec]>; + readonly isSecondaryKeyLeftIdentity: boolean; + readonly asSecondaryKeyLeftIdentity: ITuple<[PolymeshPrimitivesIdentityId, AccountId32]>; readonly isSecondaryKeyPermissionsUpdated: boolean; - readonly asSecondaryKeyPermissionsUpdated: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesSecondaryKeyApiSecondaryKey, PolymeshPrimitivesSecondaryKeyPermissions, PolymeshPrimitivesSecondaryKeyPermissions]>; + readonly asSecondaryKeyPermissionsUpdated: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, PolymeshPrimitivesSecondaryKeyPermissions, PolymeshPrimitivesSecondaryKeyPermissions]>; readonly isPrimaryKeyUpdated: boolean; readonly asPrimaryKeyUpdated: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, AccountId32]>; readonly isClaimAdded: boolean; @@ -222,8 +222,6 @@ declare module '@polkadot/types/lookup' { readonly asAuthorizationRejected: ITuple<[Option, Option, u64]>; readonly isAuthorizationConsumed: boolean; readonly asAuthorizationConsumed: ITuple<[Option, Option, u64]>; - readonly isOffChainAuthorizationRevoked: boolean; - readonly asOffChainAuthorizationRevoked: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesSecondaryKeySignatory]>; readonly isCddRequirementForPrimaryKeyUpdated: boolean; readonly asCddRequirementForPrimaryKeyUpdated: bool; readonly isCddClaimsInvalidated: boolean; @@ -232,34 +230,23 @@ declare module '@polkadot/types/lookup' { readonly asSecondaryKeysFrozen: PolymeshPrimitivesIdentityId; readonly isSecondaryKeysUnfrozen: boolean; readonly asSecondaryKeysUnfrozen: PolymeshPrimitivesIdentityId; - readonly isMockInvestorUIDCreated: boolean; - readonly asMockInvestorUIDCreated: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesCddIdInvestorUid]>; - readonly type: 'DidCreated' | 'SecondaryKeysAdded' | 'SecondaryKeysRemoved' | 'SignerLeft' | 'SecondaryKeyPermissionsUpdated' | 'PrimaryKeyUpdated' | 'ClaimAdded' | 'ClaimRevoked' | 'AssetDidRegistered' | 'AuthorizationAdded' | 'AuthorizationRevoked' | 'AuthorizationRejected' | 'AuthorizationConsumed' | 'OffChainAuthorizationRevoked' | 'CddRequirementForPrimaryKeyUpdated' | 'CddClaimsInvalidated' | 'SecondaryKeysFrozen' | 'SecondaryKeysUnfrozen' | 'MockInvestorUIDCreated'; + readonly type: 'DidCreated' | 'SecondaryKeysAdded' | 'SecondaryKeysRemoved' | 'SecondaryKeyLeftIdentity' | 'SecondaryKeyPermissionsUpdated' | 'PrimaryKeyUpdated' | 'ClaimAdded' | 'ClaimRevoked' | 'AssetDidRegistered' | 'AuthorizationAdded' | 'AuthorizationRevoked' | 'AuthorizationRejected' | 'AuthorizationConsumed' | 'CddRequirementForPrimaryKeyUpdated' | 'CddClaimsInvalidated' | 'SecondaryKeysFrozen' | 'SecondaryKeysUnfrozen'; } - /** @name PolymeshPrimitivesSecondaryKeyApiSecondaryKey (37) */ - export interface PolymeshPrimitivesSecondaryKeyApiSecondaryKey extends Struct { - readonly signer: PolymeshPrimitivesSecondaryKeySignatory; + /** @name PolymeshPrimitivesSecondaryKey (37) */ + export interface PolymeshPrimitivesSecondaryKey extends Struct { + readonly key: AccountId32; readonly permissions: PolymeshPrimitivesSecondaryKeyPermissions; } - /** @name PolymeshPrimitivesSecondaryKeySignatory (38) */ - export interface PolymeshPrimitivesSecondaryKeySignatory extends Enum { - readonly isIdentity: boolean; - readonly asIdentity: PolymeshPrimitivesIdentityId; - readonly isAccount: boolean; - readonly asAccount: AccountId32; - readonly type: 'Identity' | 'Account'; - } - - /** @name PolymeshPrimitivesSecondaryKeyPermissions (39) */ + /** @name PolymeshPrimitivesSecondaryKeyPermissions (38) */ export interface PolymeshPrimitivesSecondaryKeyPermissions extends Struct { readonly asset: PolymeshPrimitivesSubsetSubsetRestrictionTicker; readonly extrinsic: PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions; readonly portfolio: PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId; } - /** @name PolymeshPrimitivesSubsetSubsetRestrictionTicker (40) */ + /** @name PolymeshPrimitivesSubsetSubsetRestrictionTicker (39) */ export interface PolymeshPrimitivesSubsetSubsetRestrictionTicker extends Enum { readonly isWhole: boolean; readonly isThese: boolean; @@ -269,13 +256,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Whole' | 'These' | 'Except'; } - /** @name PolymeshPrimitivesTicker (41) */ + /** @name PolymeshPrimitivesTicker (40) */ export interface PolymeshPrimitivesTicker extends U8aFixed {} - /** @name BTreeSetTicker (43) */ + /** @name BTreeSetTicker (42) */ export interface BTreeSetTicker extends Vec {} - /** @name PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions (45) */ + /** @name PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions (44) */ export interface PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions extends Enum { readonly isWhole: boolean; readonly isThese: boolean; @@ -285,13 +272,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Whole' | 'These' | 'Except'; } - /** @name PolymeshPrimitivesSecondaryKeyPalletPermissions (46) */ + /** @name PolymeshPrimitivesSecondaryKeyPalletPermissions (45) */ export interface PolymeshPrimitivesSecondaryKeyPalletPermissions extends Struct { readonly palletName: Bytes; readonly dispatchableNames: PolymeshPrimitivesSubsetSubsetRestrictionDispatchableName; } - /** @name PolymeshPrimitivesSubsetSubsetRestrictionDispatchableName (48) */ + /** @name PolymeshPrimitivesSubsetSubsetRestrictionDispatchableName (47) */ export interface PolymeshPrimitivesSubsetSubsetRestrictionDispatchableName extends Enum { readonly isWhole: boolean; readonly isThese: boolean; @@ -301,13 +288,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Whole' | 'These' | 'Except'; } - /** @name BTreeSetDispatchableName (50) */ + /** @name BTreeSetDispatchableName (49) */ export interface BTreeSetDispatchableName extends Vec {} - /** @name BTreeSetPalletPermissions (52) */ + /** @name BTreeSetPalletPermissions (51) */ export interface BTreeSetPalletPermissions extends Vec {} - /** @name PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId (54) */ + /** @name PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId (53) */ export interface PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId extends Enum { readonly isWhole: boolean; readonly isThese: boolean; @@ -317,13 +304,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Whole' | 'These' | 'Except'; } - /** @name PolymeshPrimitivesIdentityIdPortfolioId (55) */ + /** @name PolymeshPrimitivesIdentityIdPortfolioId (54) */ export interface PolymeshPrimitivesIdentityIdPortfolioId extends Struct { readonly did: PolymeshPrimitivesIdentityId; readonly kind: PolymeshPrimitivesIdentityIdPortfolioKind; } - /** @name PolymeshPrimitivesIdentityIdPortfolioKind (56) */ + /** @name PolymeshPrimitivesIdentityIdPortfolioKind (55) */ export interface PolymeshPrimitivesIdentityIdPortfolioKind extends Enum { readonly isDefault: boolean; readonly isUser: boolean; @@ -331,10 +318,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'Default' | 'User'; } - /** @name BTreeSetPortfolioId (58) */ + /** @name BTreeSetPortfolioId (57) */ export interface BTreeSetPortfolioId extends Vec {} - /** @name PolymeshPrimitivesIdentityClaim (61) */ + /** @name PolymeshPrimitivesIdentityClaim (60) */ export interface PolymeshPrimitivesIdentityClaim extends Struct { readonly claimIssuer: PolymeshPrimitivesIdentityId; readonly issuanceDate: u64; @@ -343,7 +330,7 @@ declare module '@polkadot/types/lookup' { readonly claim: PolymeshPrimitivesIdentityClaimClaim; } - /** @name PolymeshPrimitivesIdentityClaimClaim (63) */ + /** @name PolymeshPrimitivesIdentityClaimClaim (62) */ export interface PolymeshPrimitivesIdentityClaimClaim extends Enum { readonly isAccredited: boolean; readonly asAccredited: PolymeshPrimitivesIdentityClaimScope; @@ -371,7 +358,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Accredited' | 'Affiliate' | 'BuyLockup' | 'SellLockup' | 'CustomerDueDiligence' | 'KnowYourCustomer' | 'Jurisdiction' | 'Exempted' | 'Blocked' | 'InvestorUniqueness' | 'NoData' | 'InvestorUniquenessV2'; } - /** @name PolymeshPrimitivesIdentityClaimScope (64) */ + /** @name PolymeshPrimitivesIdentityClaimScope (63) */ export interface PolymeshPrimitivesIdentityClaimScope extends Enum { readonly isIdentity: boolean; readonly asIdentity: PolymeshPrimitivesIdentityId; @@ -382,10 +369,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'Identity' | 'Ticker' | 'Custom'; } - /** @name PolymeshPrimitivesCddId (65) */ + /** @name PolymeshPrimitivesCddId (64) */ export interface PolymeshPrimitivesCddId extends U8aFixed {} - /** @name PolymeshPrimitivesJurisdictionCountryCode (66) */ + /** @name PolymeshPrimitivesJurisdictionCountryCode (65) */ export interface PolymeshPrimitivesJurisdictionCountryCode extends Enum { readonly isAf: boolean; readonly isAx: boolean; @@ -640,7 +627,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Af' | 'Ax' | 'Al' | 'Dz' | 'As' | 'Ad' | 'Ao' | 'Ai' | 'Aq' | 'Ag' | 'Ar' | 'Am' | 'Aw' | 'Au' | 'At' | 'Az' | 'Bs' | 'Bh' | 'Bd' | 'Bb' | 'By' | 'Be' | 'Bz' | 'Bj' | 'Bm' | 'Bt' | 'Bo' | 'Ba' | 'Bw' | 'Bv' | 'Br' | 'Vg' | 'Io' | 'Bn' | 'Bg' | 'Bf' | 'Bi' | 'Kh' | 'Cm' | 'Ca' | 'Cv' | 'Ky' | 'Cf' | 'Td' | 'Cl' | 'Cn' | 'Hk' | 'Mo' | 'Cx' | 'Cc' | 'Co' | 'Km' | 'Cg' | 'Cd' | 'Ck' | 'Cr' | 'Ci' | 'Hr' | 'Cu' | 'Cy' | 'Cz' | 'Dk' | 'Dj' | 'Dm' | 'Do' | 'Ec' | 'Eg' | 'Sv' | 'Gq' | 'Er' | 'Ee' | 'Et' | 'Fk' | 'Fo' | 'Fj' | 'Fi' | 'Fr' | 'Gf' | 'Pf' | 'Tf' | 'Ga' | 'Gm' | 'Ge' | 'De' | 'Gh' | 'Gi' | 'Gr' | 'Gl' | 'Gd' | 'Gp' | 'Gu' | 'Gt' | 'Gg' | 'Gn' | 'Gw' | 'Gy' | 'Ht' | 'Hm' | 'Va' | 'Hn' | 'Hu' | 'Is' | 'In' | 'Id' | 'Ir' | 'Iq' | 'Ie' | 'Im' | 'Il' | 'It' | 'Jm' | 'Jp' | 'Je' | 'Jo' | 'Kz' | 'Ke' | 'Ki' | 'Kp' | 'Kr' | 'Kw' | 'Kg' | 'La' | 'Lv' | 'Lb' | 'Ls' | 'Lr' | 'Ly' | 'Li' | 'Lt' | 'Lu' | 'Mk' | 'Mg' | 'Mw' | 'My' | 'Mv' | 'Ml' | 'Mt' | 'Mh' | 'Mq' | 'Mr' | 'Mu' | 'Yt' | 'Mx' | 'Fm' | 'Md' | 'Mc' | 'Mn' | 'Me' | 'Ms' | 'Ma' | 'Mz' | 'Mm' | 'Na' | 'Nr' | 'Np' | 'Nl' | 'An' | 'Nc' | 'Nz' | 'Ni' | 'Ne' | 'Ng' | 'Nu' | 'Nf' | 'Mp' | 'No' | 'Om' | 'Pk' | 'Pw' | 'Ps' | 'Pa' | 'Pg' | 'Py' | 'Pe' | 'Ph' | 'Pn' | 'Pl' | 'Pt' | 'Pr' | 'Qa' | 'Re' | 'Ro' | 'Ru' | 'Rw' | 'Bl' | 'Sh' | 'Kn' | 'Lc' | 'Mf' | 'Pm' | 'Vc' | 'Ws' | 'Sm' | 'St' | 'Sa' | 'Sn' | 'Rs' | 'Sc' | 'Sl' | 'Sg' | 'Sk' | 'Si' | 'Sb' | 'So' | 'Za' | 'Gs' | 'Ss' | 'Es' | 'Lk' | 'Sd' | 'Sr' | 'Sj' | 'Sz' | 'Se' | 'Ch' | 'Sy' | 'Tw' | 'Tj' | 'Tz' | 'Th' | 'Tl' | 'Tg' | 'Tk' | 'To' | 'Tt' | 'Tn' | 'Tr' | 'Tm' | 'Tc' | 'Tv' | 'Ug' | 'Ua' | 'Ae' | 'Gb' | 'Us' | 'Um' | 'Uy' | 'Uz' | 'Vu' | 'Ve' | 'Vn' | 'Vi' | 'Wf' | 'Eh' | 'Ye' | 'Zm' | 'Zw' | 'Bq' | 'Cw' | 'Sx'; } - /** @name PolymeshPrimitivesAuthorizationAuthorizationData (68) */ + /** @name PolymeshPrimitivesAuthorizationAuthorizationData (67) */ export interface PolymeshPrimitivesAuthorizationAuthorizationData extends Enum { readonly isAttestPrimaryKeyRotation: boolean; readonly asAttestPrimaryKeyRotation: PolymeshPrimitivesIdentityId; @@ -664,7 +651,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'AttestPrimaryKeyRotation' | 'RotatePrimaryKey' | 'TransferTicker' | 'AddMultiSigSigner' | 'TransferAssetOwnership' | 'JoinIdentity' | 'PortfolioCustody' | 'BecomeAgent' | 'AddRelayerPayingKey' | 'RotatePrimaryKeyToSecondary'; } - /** @name PolymeshPrimitivesAgentAgentGroup (69) */ + /** @name PolymeshPrimitivesAgentAgentGroup (68) */ export interface PolymeshPrimitivesAgentAgentGroup extends Enum { readonly isFull: boolean; readonly isCustom: boolean; @@ -675,10 +662,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Full' | 'Custom' | 'ExceptMeta' | 'PolymeshV1CAA' | 'PolymeshV1PIA'; } - /** @name PolymeshPrimitivesCddIdInvestorUid (72) */ - export interface PolymeshPrimitivesCddIdInvestorUid extends U8aFixed {} - - /** @name PolymeshCommonUtilitiesGroupRawEventInstance2 (74) */ + /** @name PolymeshCommonUtilitiesGroupRawEventInstance2 (71) */ export interface PolymeshCommonUtilitiesGroupRawEventInstance2 extends Enum { readonly isMemberAdded: boolean; readonly asMemberAdded: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; @@ -696,10 +680,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'MemberAdded' | 'MemberRemoved' | 'MemberRevoked' | 'MembersSwapped' | 'MembersReset' | 'ActiveLimitChanged' | 'Dummy'; } - /** @name PalletGroupInstance2 (75) */ + /** @name PalletGroupInstance2 (72) */ export type PalletGroupInstance2 = Null; - /** @name PalletCommitteeRawEventInstance1 (77) */ + /** @name PalletCommitteeRawEventInstance1 (74) */ export interface PalletCommitteeRawEventInstance1 extends Enum { readonly isProposed: boolean; readonly asProposed: ITuple<[PolymeshPrimitivesIdentityId, u32, H256]>; @@ -724,10 +708,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'Proposed' | 'Voted' | 'VoteRetracted' | 'FinalVotes' | 'Approved' | 'Rejected' | 'Executed' | 'ReleaseCoordinatorUpdated' | 'ExpiresAfterUpdated' | 'VoteThresholdUpdated'; } - /** @name PalletCommitteeInstance1 (78) */ + /** @name PalletCommitteeInstance1 (75) */ export type PalletCommitteeInstance1 = Null; - /** @name PolymeshCommonUtilitiesMaybeBlock (81) */ + /** @name PolymeshCommonUtilitiesMaybeBlock (78) */ export interface PolymeshCommonUtilitiesMaybeBlock extends Enum { readonly isSome: boolean; readonly asSome: u32; @@ -735,7 +719,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Some' | 'None'; } - /** @name PolymeshCommonUtilitiesGroupRawEventInstance1 (82) */ + /** @name PolymeshCommonUtilitiesGroupRawEventInstance1 (79) */ export interface PolymeshCommonUtilitiesGroupRawEventInstance1 extends Enum { readonly isMemberAdded: boolean; readonly asMemberAdded: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; @@ -753,10 +737,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'MemberAdded' | 'MemberRemoved' | 'MemberRevoked' | 'MembersSwapped' | 'MembersReset' | 'ActiveLimitChanged' | 'Dummy'; } - /** @name PalletGroupInstance1 (83) */ + /** @name PalletGroupInstance1 (80) */ export type PalletGroupInstance1 = Null; - /** @name PalletCommitteeRawEventInstance3 (84) */ + /** @name PalletCommitteeRawEventInstance3 (81) */ export interface PalletCommitteeRawEventInstance3 extends Enum { readonly isProposed: boolean; readonly asProposed: ITuple<[PolymeshPrimitivesIdentityId, u32, H256]>; @@ -781,10 +765,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'Proposed' | 'Voted' | 'VoteRetracted' | 'FinalVotes' | 'Approved' | 'Rejected' | 'Executed' | 'ReleaseCoordinatorUpdated' | 'ExpiresAfterUpdated' | 'VoteThresholdUpdated'; } - /** @name PalletCommitteeInstance3 (85) */ + /** @name PalletCommitteeInstance3 (82) */ export type PalletCommitteeInstance3 = Null; - /** @name PolymeshCommonUtilitiesGroupRawEventInstance3 (86) */ + /** @name PolymeshCommonUtilitiesGroupRawEventInstance3 (83) */ export interface PolymeshCommonUtilitiesGroupRawEventInstance3 extends Enum { readonly isMemberAdded: boolean; readonly asMemberAdded: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; @@ -802,10 +786,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'MemberAdded' | 'MemberRemoved' | 'MemberRevoked' | 'MembersSwapped' | 'MembersReset' | 'ActiveLimitChanged' | 'Dummy'; } - /** @name PalletGroupInstance3 (87) */ + /** @name PalletGroupInstance3 (84) */ export type PalletGroupInstance3 = Null; - /** @name PalletCommitteeRawEventInstance4 (88) */ + /** @name PalletCommitteeRawEventInstance4 (85) */ export interface PalletCommitteeRawEventInstance4 extends Enum { readonly isProposed: boolean; readonly asProposed: ITuple<[PolymeshPrimitivesIdentityId, u32, H256]>; @@ -830,10 +814,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'Proposed' | 'Voted' | 'VoteRetracted' | 'FinalVotes' | 'Approved' | 'Rejected' | 'Executed' | 'ReleaseCoordinatorUpdated' | 'ExpiresAfterUpdated' | 'VoteThresholdUpdated'; } - /** @name PalletCommitteeInstance4 (89) */ + /** @name PalletCommitteeInstance4 (86) */ export type PalletCommitteeInstance4 = Null; - /** @name PolymeshCommonUtilitiesGroupRawEventInstance4 (90) */ + /** @name PolymeshCommonUtilitiesGroupRawEventInstance4 (87) */ export interface PolymeshCommonUtilitiesGroupRawEventInstance4 extends Enum { readonly isMemberAdded: boolean; readonly asMemberAdded: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; @@ -851,10 +835,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'MemberAdded' | 'MemberRemoved' | 'MemberRevoked' | 'MembersSwapped' | 'MembersReset' | 'ActiveLimitChanged' | 'Dummy'; } - /** @name PalletGroupInstance4 (91) */ + /** @name PalletGroupInstance4 (88) */ export type PalletGroupInstance4 = Null; - /** @name PalletMultisigRawEvent (92) */ + /** @name PalletMultisigRawEvent (89) */ export interface PalletMultisigRawEvent extends Enum { readonly isMultiSigCreated: boolean; readonly asMultiSigCreated: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, AccountId32, Vec, u64]>; @@ -883,7 +867,16 @@ declare module '@polkadot/types/lookup' { readonly type: 'MultiSigCreated' | 'ProposalAdded' | 'ProposalExecuted' | 'MultiSigSignerAdded' | 'MultiSigSignerAuthorized' | 'MultiSigSignerRemoved' | 'MultiSigSignaturesRequiredChanged' | 'ProposalApproved' | 'ProposalRejectionVote' | 'ProposalRejected' | 'ProposalExecutionFailed' | 'SchedulingFailed'; } - /** @name PalletBridgeRawEvent (93) */ + /** @name PolymeshPrimitivesSecondaryKeySignatory (91) */ + export interface PolymeshPrimitivesSecondaryKeySignatory extends Enum { + readonly isIdentity: boolean; + readonly asIdentity: PolymeshPrimitivesIdentityId; + readonly isAccount: boolean; + readonly asAccount: AccountId32; + readonly type: 'Identity' | 'Account'; + } + + /** @name PalletBridgeRawEvent (92) */ export interface PalletBridgeRawEvent extends Enum { readonly isControllerChanged: boolean; readonly asControllerChanged: ITuple<[PolymeshPrimitivesIdentityId, AccountId32]>; @@ -920,7 +913,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'ControllerChanged' | 'AdminChanged' | 'TimelockChanged' | 'Bridged' | 'Frozen' | 'Unfrozen' | 'FrozenTx' | 'UnfrozenTx' | 'ExemptedUpdated' | 'BridgeLimitUpdated' | 'TxsHandled' | 'BridgeTxScheduled' | 'BridgeTxScheduleFailed' | 'FreezeAdminAdded' | 'FreezeAdminRemoved' | 'TxRemoved'; } - /** @name PalletBridgeBridgeTx (94) */ + /** @name PalletBridgeBridgeTx (93) */ export interface PalletBridgeBridgeTx extends Struct { readonly nonce: u32; readonly recipient: AccountId32; @@ -928,7 +921,7 @@ declare module '@polkadot/types/lookup' { readonly txHash: H256; } - /** @name PalletBridgeHandledTxStatus (97) */ + /** @name PalletBridgeHandledTxStatus (96) */ export interface PalletBridgeHandledTxStatus extends Enum { readonly isSuccess: boolean; readonly isError: boolean; @@ -936,7 +929,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Success' | 'Error'; } - /** @name PalletStakingRawEvent (98) */ + /** @name PalletStakingRawEvent (97) */ export interface PalletStakingRawEvent extends Enum { readonly isEraPayout: boolean; readonly asEraPayout: ITuple<[u32, u128, u128]>; @@ -975,7 +968,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'EraPayout' | 'Reward' | 'Slash' | 'OldSlashingReportDiscarded' | 'StakingElection' | 'SolutionStored' | 'Bonded' | 'Unbonded' | 'Nominated' | 'Withdrawn' | 'PermissionedIdentityAdded' | 'PermissionedIdentityRemoved' | 'InvalidatedNominators' | 'CommissionCapUpdated' | 'MinimumBondThresholdUpdated' | 'RewardPaymentSchedulingInterrupted' | 'SlashingAllowedForChanged'; } - /** @name PalletStakingElectionCompute (99) */ + /** @name PalletStakingElectionCompute (98) */ export interface PalletStakingElectionCompute extends Enum { readonly isOnChain: boolean; readonly isSigned: boolean; @@ -983,7 +976,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'OnChain' | 'Signed' | 'Unsigned'; } - /** @name PalletStakingSlashingSwitch (102) */ + /** @name PalletStakingSlashingSwitch (100) */ export interface PalletStakingSlashingSwitch extends Enum { readonly isValidator: boolean; readonly isValidatorAndNominator: boolean; @@ -991,21 +984,21 @@ declare module '@polkadot/types/lookup' { readonly type: 'Validator' | 'ValidatorAndNominator' | 'None'; } - /** @name PalletOffencesEvent (103) */ + /** @name PalletOffencesEvent (101) */ export interface PalletOffencesEvent extends Enum { readonly isOffence: boolean; readonly asOffence: ITuple<[U8aFixed, Bytes]>; readonly type: 'Offence'; } - /** @name PalletSessionEvent (104) */ + /** @name PalletSessionEvent (103) */ export interface PalletSessionEvent extends Enum { readonly isNewSession: boolean; readonly asNewSession: u32; readonly type: 'NewSession'; } - /** @name PalletGrandpaEvent (105) */ + /** @name PalletGrandpaEvent (104) */ export interface PalletGrandpaEvent extends Enum { readonly isNewAuthorities: boolean; readonly asNewAuthorities: Vec>; @@ -1014,13 +1007,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'NewAuthorities' | 'Paused' | 'Resumed'; } - /** @name SpFinalityGrandpaAppPublic (108) */ + /** @name SpFinalityGrandpaAppPublic (107) */ export interface SpFinalityGrandpaAppPublic extends SpCoreEd25519Public {} - /** @name SpCoreEd25519Public (109) */ + /** @name SpCoreEd25519Public (108) */ export interface SpCoreEd25519Public extends U8aFixed {} - /** @name PalletImOnlineEvent (110) */ + /** @name PalletImOnlineEvent (109) */ export interface PalletImOnlineEvent extends Enum { readonly isHeartbeatReceived: boolean; readonly asHeartbeatReceived: PalletImOnlineSr25519AppSr25519Public; @@ -1030,26 +1023,26 @@ declare module '@polkadot/types/lookup' { readonly type: 'HeartbeatReceived' | 'AllGood' | 'SomeOffline'; } - /** @name PalletImOnlineSr25519AppSr25519Public (111) */ + /** @name PalletImOnlineSr25519AppSr25519Public (110) */ export interface PalletImOnlineSr25519AppSr25519Public extends SpCoreSr25519Public {} - /** @name SpCoreSr25519Public (112) */ + /** @name SpCoreSr25519Public (111) */ export interface SpCoreSr25519Public extends U8aFixed {} - /** @name PalletStakingExposure (115) */ + /** @name PalletStakingExposure (114) */ export interface PalletStakingExposure extends Struct { readonly total: Compact; readonly own: Compact; readonly others: Vec; } - /** @name PalletStakingIndividualExposure (118) */ + /** @name PalletStakingIndividualExposure (117) */ export interface PalletStakingIndividualExposure extends Struct { readonly who: AccountId32; readonly value: Compact; } - /** @name PalletSudoRawEvent (119) */ + /** @name PalletSudoRawEvent (118) */ export interface PalletSudoRawEvent extends Enum { readonly isSudid: boolean; readonly asSudid: Result; @@ -1060,7 +1053,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Sudid' | 'KeyChanged' | 'SudoAsDone'; } - /** @name PolymeshCommonUtilitiesAssetRawEvent (120) */ + /** @name PolymeshCommonUtilitiesAssetRawEvent (119) */ export interface PolymeshCommonUtilitiesAssetRawEvent extends Enum { readonly isTransfer: boolean; readonly asTransfer: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesIdentityIdPortfolioId, u128]>; @@ -1117,7 +1110,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Transfer' | 'Issued' | 'Redeemed' | 'AssetCreated' | 'IdentifiersUpdated' | 'DivisibilityChanged' | 'TransferWithData' | 'IsIssuable' | 'TickerRegistered' | 'TickerTransferred' | 'AssetOwnershipTransferred' | 'AssetFrozen' | 'AssetUnfrozen' | 'AssetRenamed' | 'FundingRoundSet' | 'DocumentAdded' | 'DocumentRemoved' | 'ExtensionRemoved' | 'ClassicTickerClaimed' | 'ControllerTransfer' | 'CustomAssetTypeExists' | 'CustomAssetTypeRegistered' | 'SetAssetMetadataValue' | 'SetAssetMetadataValueDetails' | 'RegisterAssetMetadataLocalType' | 'RegisterAssetMetadataGlobalType'; } - /** @name PolymeshPrimitivesAssetAssetType (122) */ + /** @name PolymeshPrimitivesAssetAssetType (121) */ export interface PolymeshPrimitivesAssetAssetType extends Enum { readonly isEquityCommon: boolean; readonly isEquityPreferred: boolean; @@ -1134,7 +1127,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'EquityCommon' | 'EquityPreferred' | 'Commodity' | 'FixedIncome' | 'Reit' | 'Fund' | 'RevenueShareAgreement' | 'StructuredProduct' | 'Derivative' | 'Custom' | 'StableCoin'; } - /** @name PolymeshPrimitivesAssetIdentifier (125) */ + /** @name PolymeshPrimitivesAssetIdentifier (124) */ export interface PolymeshPrimitivesAssetIdentifier extends Enum { readonly isCusip: boolean; readonly asCusip: U8aFixed; @@ -1147,7 +1140,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Cusip' | 'Cins' | 'Isin' | 'Lei'; } - /** @name PolymeshPrimitivesDocument (130) */ + /** @name PolymeshPrimitivesDocument (129) */ export interface PolymeshPrimitivesDocument extends Struct { readonly uri: Bytes; readonly contentHash: PolymeshPrimitivesDocumentHash; @@ -1156,7 +1149,7 @@ declare module '@polkadot/types/lookup' { readonly filingDate: Option; } - /** @name PolymeshPrimitivesDocumentHash (132) */ + /** @name PolymeshPrimitivesDocumentHash (131) */ export interface PolymeshPrimitivesDocumentHash extends Enum { readonly isNone: boolean; readonly isH512: boolean; @@ -1178,16 +1171,16 @@ declare module '@polkadot/types/lookup' { readonly type: 'None' | 'H512' | 'H384' | 'H320' | 'H256' | 'H224' | 'H192' | 'H160' | 'H128'; } - /** @name PolymeshPrimitivesEthereumEthereumAddress (141) */ + /** @name PolymeshPrimitivesEthereumEthereumAddress (140) */ export interface PolymeshPrimitivesEthereumEthereumAddress extends U8aFixed {} - /** @name PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail (144) */ + /** @name PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail (143) */ export interface PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail extends Struct { readonly expire: Option; readonly lockStatus: PolymeshPrimitivesAssetMetadataAssetMetadataLockStatus; } - /** @name PolymeshPrimitivesAssetMetadataAssetMetadataLockStatus (145) */ + /** @name PolymeshPrimitivesAssetMetadataAssetMetadataLockStatus (144) */ export interface PolymeshPrimitivesAssetMetadataAssetMetadataLockStatus extends Enum { readonly isUnlocked: boolean; readonly isLocked: boolean; @@ -1196,14 +1189,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unlocked' | 'Locked' | 'LockedUntil'; } - /** @name PolymeshPrimitivesAssetMetadataAssetMetadataSpec (148) */ + /** @name PolymeshPrimitivesAssetMetadataAssetMetadataSpec (147) */ export interface PolymeshPrimitivesAssetMetadataAssetMetadataSpec extends Struct { readonly url: Option; readonly description: Option; readonly typeDef: Option; } - /** @name PalletCorporateActionsDistributionEvent (155) */ + /** @name PalletCorporateActionsDistributionEvent (154) */ export interface PalletCorporateActionsDistributionEvent extends Enum { readonly isCreated: boolean; readonly asCreated: ITuple<[PolymeshPrimitivesEventOnly, PalletCorporateActionsCaId, PalletCorporateActionsDistribution]>; @@ -1216,16 +1209,16 @@ declare module '@polkadot/types/lookup' { readonly type: 'Created' | 'BenefitClaimed' | 'Reclaimed' | 'Removed'; } - /** @name PolymeshPrimitivesEventOnly (156) */ + /** @name PolymeshPrimitivesEventOnly (155) */ export interface PolymeshPrimitivesEventOnly extends PolymeshPrimitivesIdentityId {} - /** @name PalletCorporateActionsCaId (157) */ + /** @name PalletCorporateActionsCaId (156) */ export interface PalletCorporateActionsCaId extends Struct { readonly ticker: PolymeshPrimitivesTicker; readonly localId: u32; } - /** @name PalletCorporateActionsDistribution (159) */ + /** @name PalletCorporateActionsDistribution (158) */ export interface PalletCorporateActionsDistribution extends Struct { readonly from: PolymeshPrimitivesIdentityIdPortfolioId; readonly currency: PolymeshPrimitivesTicker; @@ -1237,7 +1230,7 @@ declare module '@polkadot/types/lookup' { readonly expiresAt: Option; } - /** @name PolymeshCommonUtilitiesCheckpointEvent (161) */ + /** @name PolymeshCommonUtilitiesCheckpointEvent (160) */ export interface PolymeshCommonUtilitiesCheckpointEvent extends Enum { readonly isCheckpointCreated: boolean; readonly asCheckpointCreated: ITuple<[Option, PolymeshPrimitivesTicker, u64, u128, u64]>; @@ -1250,7 +1243,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'CheckpointCreated' | 'MaximumSchedulesComplexityChanged' | 'ScheduleCreated' | 'ScheduleRemoved'; } - /** @name PolymeshCommonUtilitiesCheckpointStoredSchedule (164) */ + /** @name PolymeshCommonUtilitiesCheckpointStoredSchedule (163) */ export interface PolymeshCommonUtilitiesCheckpointStoredSchedule extends Struct { readonly schedule: PolymeshPrimitivesCalendarCheckpointSchedule; readonly id: u64; @@ -1258,19 +1251,19 @@ declare module '@polkadot/types/lookup' { readonly remaining: u32; } - /** @name PolymeshPrimitivesCalendarCheckpointSchedule (165) */ + /** @name PolymeshPrimitivesCalendarCheckpointSchedule (164) */ export interface PolymeshPrimitivesCalendarCheckpointSchedule extends Struct { readonly start: u64; readonly period: PolymeshPrimitivesCalendarCalendarPeriod; } - /** @name PolymeshPrimitivesCalendarCalendarPeriod (166) */ + /** @name PolymeshPrimitivesCalendarCalendarPeriod (165) */ export interface PolymeshPrimitivesCalendarCalendarPeriod extends Struct { readonly unit: PolymeshPrimitivesCalendarCalendarUnit; readonly amount: u64; } - /** @name PolymeshPrimitivesCalendarCalendarUnit (167) */ + /** @name PolymeshPrimitivesCalendarCalendarUnit (166) */ export interface PolymeshPrimitivesCalendarCalendarUnit extends Enum { readonly isSecond: boolean; readonly isMinute: boolean; @@ -1282,7 +1275,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Second' | 'Minute' | 'Hour' | 'Day' | 'Week' | 'Month' | 'Year'; } - /** @name PalletComplianceManagerEvent (169) */ + /** @name PalletComplianceManagerEvent (168) */ export interface PalletComplianceManagerEvent extends Enum { readonly isComplianceRequirementCreated: boolean; readonly asComplianceRequirementCreated: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesComplianceManagerComplianceRequirement]>; @@ -1305,20 +1298,20 @@ declare module '@polkadot/types/lookup' { readonly type: 'ComplianceRequirementCreated' | 'ComplianceRequirementRemoved' | 'AssetComplianceReplaced' | 'AssetComplianceReset' | 'AssetComplianceResumed' | 'AssetCompliancePaused' | 'ComplianceRequirementChanged' | 'TrustedDefaultClaimIssuerAdded' | 'TrustedDefaultClaimIssuerRemoved'; } - /** @name PolymeshPrimitivesComplianceManagerComplianceRequirement (170) */ + /** @name PolymeshPrimitivesComplianceManagerComplianceRequirement (169) */ export interface PolymeshPrimitivesComplianceManagerComplianceRequirement extends Struct { readonly senderConditions: Vec; readonly receiverConditions: Vec; readonly id: u32; } - /** @name PolymeshPrimitivesCondition (172) */ + /** @name PolymeshPrimitivesCondition (171) */ export interface PolymeshPrimitivesCondition extends Struct { readonly conditionType: PolymeshPrimitivesConditionConditionType; readonly issuers: Vec; } - /** @name PolymeshPrimitivesConditionConditionType (173) */ + /** @name PolymeshPrimitivesConditionConditionType (172) */ export interface PolymeshPrimitivesConditionConditionType extends Enum { readonly isIsPresent: boolean; readonly asIsPresent: PolymeshPrimitivesIdentityClaimClaim; @@ -1333,7 +1326,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'IsPresent' | 'IsAbsent' | 'IsAnyOf' | 'IsNoneOf' | 'IsIdentity'; } - /** @name PolymeshPrimitivesConditionTargetIdentity (175) */ + /** @name PolymeshPrimitivesConditionTargetIdentity (174) */ export interface PolymeshPrimitivesConditionTargetIdentity extends Enum { readonly isExternalAgent: boolean; readonly isSpecific: boolean; @@ -1341,13 +1334,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'ExternalAgent' | 'Specific'; } - /** @name PolymeshPrimitivesConditionTrustedIssuer (177) */ + /** @name PolymeshPrimitivesConditionTrustedIssuer (176) */ export interface PolymeshPrimitivesConditionTrustedIssuer extends Struct { readonly issuer: PolymeshPrimitivesIdentityId; readonly trustedFor: PolymeshPrimitivesConditionTrustedFor; } - /** @name PolymeshPrimitivesConditionTrustedFor (178) */ + /** @name PolymeshPrimitivesConditionTrustedFor (177) */ export interface PolymeshPrimitivesConditionTrustedFor extends Enum { readonly isAny: boolean; readonly isSpecific: boolean; @@ -1355,7 +1348,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Any' | 'Specific'; } - /** @name PolymeshPrimitivesIdentityClaimClaimType (180) */ + /** @name PolymeshPrimitivesIdentityClaimClaimType (179) */ export interface PolymeshPrimitivesIdentityClaimClaimType extends Enum { readonly isAccredited: boolean; readonly isAffiliate: boolean; @@ -1372,7 +1365,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Accredited' | 'Affiliate' | 'BuyLockup' | 'SellLockup' | 'CustomerDueDiligence' | 'KnowYourCustomer' | 'Jurisdiction' | 'Exempted' | 'Blocked' | 'InvestorUniqueness' | 'NoType' | 'InvestorUniquenessV2'; } - /** @name PalletCorporateActionsEvent (182) */ + /** @name PalletCorporateActionsEvent (181) */ export interface PalletCorporateActionsEvent extends Enum { readonly isMaxDetailsLengthChanged: boolean; readonly asMaxDetailsLengthChanged: ITuple<[PolymeshPrimitivesIdentityId, u32]>; @@ -1395,20 +1388,20 @@ declare module '@polkadot/types/lookup' { readonly type: 'MaxDetailsLengthChanged' | 'DefaultTargetIdentitiesChanged' | 'DefaultWithholdingTaxChanged' | 'DidWithholdingTaxChanged' | 'CaaTransferred' | 'CaInitiated' | 'CaLinkedToDoc' | 'CaRemoved' | 'RecordDateChanged'; } - /** @name PalletCorporateActionsTargetIdentities (183) */ + /** @name PalletCorporateActionsTargetIdentities (182) */ export interface PalletCorporateActionsTargetIdentities extends Struct { readonly identities: Vec; readonly treatment: PalletCorporateActionsTargetTreatment; } - /** @name PalletCorporateActionsTargetTreatment (184) */ + /** @name PalletCorporateActionsTargetTreatment (183) */ export interface PalletCorporateActionsTargetTreatment extends Enum { readonly isInclude: boolean; readonly isExclude: boolean; readonly type: 'Include' | 'Exclude'; } - /** @name PalletCorporateActionsCorporateAction (186) */ + /** @name PalletCorporateActionsCorporateAction (185) */ export interface PalletCorporateActionsCorporateAction extends Struct { readonly kind: PalletCorporateActionsCaKind; readonly declDate: u64; @@ -1418,7 +1411,7 @@ declare module '@polkadot/types/lookup' { readonly withholdingTax: Vec>; } - /** @name PalletCorporateActionsCaKind (187) */ + /** @name PalletCorporateActionsCaKind (186) */ export interface PalletCorporateActionsCaKind extends Enum { readonly isPredictableBenefit: boolean; readonly isUnpredictableBenefit: boolean; @@ -1428,13 +1421,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'PredictableBenefit' | 'UnpredictableBenefit' | 'IssuerNotice' | 'Reorganization' | 'Other'; } - /** @name PalletCorporateActionsRecordDate (189) */ + /** @name PalletCorporateActionsRecordDate (188) */ export interface PalletCorporateActionsRecordDate extends Struct { readonly date: u64; readonly checkpoint: PalletCorporateActionsCaCheckpoint; } - /** @name PalletCorporateActionsCaCheckpoint (190) */ + /** @name PalletCorporateActionsCaCheckpoint (189) */ export interface PalletCorporateActionsCaCheckpoint extends Enum { readonly isScheduled: boolean; readonly asScheduled: ITuple<[u64, u64]>; @@ -1443,7 +1436,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Scheduled' | 'Existing'; } - /** @name PalletCorporateActionsBallotEvent (195) */ + /** @name PalletCorporateActionsBallotEvent (194) */ export interface PalletCorporateActionsBallotEvent extends Enum { readonly isCreated: boolean; readonly asCreated: ITuple<[PolymeshPrimitivesIdentityId, PalletCorporateActionsCaId, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotMeta, bool]>; @@ -1460,32 +1453,32 @@ declare module '@polkadot/types/lookup' { readonly type: 'Created' | 'VoteCast' | 'RangeChanged' | 'MetaChanged' | 'RcvChanged' | 'Removed'; } - /** @name PalletCorporateActionsBallotBallotTimeRange (196) */ + /** @name PalletCorporateActionsBallotBallotTimeRange (195) */ export interface PalletCorporateActionsBallotBallotTimeRange extends Struct { readonly start: u64; readonly end: u64; } - /** @name PalletCorporateActionsBallotBallotMeta (197) */ + /** @name PalletCorporateActionsBallotBallotMeta (196) */ export interface PalletCorporateActionsBallotBallotMeta extends Struct { readonly title: Bytes; readonly motions: Vec; } - /** @name PalletCorporateActionsBallotMotion (200) */ + /** @name PalletCorporateActionsBallotMotion (199) */ export interface PalletCorporateActionsBallotMotion extends Struct { readonly title: Bytes; readonly infoLink: Bytes; readonly choices: Vec; } - /** @name PalletCorporateActionsBallotBallotVote (206) */ + /** @name PalletCorporateActionsBallotBallotVote (205) */ export interface PalletCorporateActionsBallotBallotVote extends Struct { readonly power: u128; readonly fallback: Option; } - /** @name PalletPipsRawEvent (209) */ + /** @name PalletPipsRawEvent (208) */ export interface PalletPipsRawEvent extends Enum { readonly isHistoricalPipsPruned: boolean; readonly asHistoricalPipsPruned: ITuple<[PolymeshPrimitivesIdentityId, bool, bool]>; @@ -1530,7 +1523,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'HistoricalPipsPruned' | 'ProposalCreated' | 'ProposalStateUpdated' | 'Voted' | 'PipClosed' | 'ExecutionScheduled' | 'DefaultEnactmentPeriodChanged' | 'MinimumProposalDepositChanged' | 'PendingPipExpiryChanged' | 'MaxPipSkipCountChanged' | 'ActivePipLimitChanged' | 'ProposalRefund' | 'SnapshotCleared' | 'SnapshotTaken' | 'PipSkipped' | 'SnapshotResultsEnacted' | 'ExecutionSchedulingFailed' | 'ExpiryScheduled' | 'ExpirySchedulingFailed' | 'ExecutionCancellingFailed'; } - /** @name PalletPipsProposer (210) */ + /** @name PalletPipsProposer (209) */ export interface PalletPipsProposer extends Enum { readonly isCommunity: boolean; readonly asCommunity: AccountId32; @@ -1539,14 +1532,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'Community' | 'Committee'; } - /** @name PalletPipsCommittee (211) */ + /** @name PalletPipsCommittee (210) */ export interface PalletPipsCommittee extends Enum { readonly isTechnical: boolean; readonly isUpgrade: boolean; readonly type: 'Technical' | 'Upgrade'; } - /** @name PalletPipsProposalData (215) */ + /** @name PalletPipsProposalData (214) */ export interface PalletPipsProposalData extends Enum { readonly isHash: boolean; readonly asHash: H256; @@ -1555,7 +1548,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Hash' | 'Proposal'; } - /** @name PalletPipsProposalState (216) */ + /** @name PalletPipsProposalState (215) */ export interface PalletPipsProposalState extends Enum { readonly isPending: boolean; readonly isRejected: boolean; @@ -1566,13 +1559,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Pending' | 'Rejected' | 'Scheduled' | 'Failed' | 'Executed' | 'Expired'; } - /** @name PalletPipsSnapshottedPip (219) */ + /** @name PalletPipsSnapshottedPip (218) */ export interface PalletPipsSnapshottedPip extends Struct { readonly id: u32; readonly weight: ITuple<[bool, u128]>; } - /** @name PolymeshCommonUtilitiesPortfolioEvent (225) */ + /** @name PolymeshCommonUtilitiesPortfolioEvent (224) */ export interface PolymeshCommonUtilitiesPortfolioEvent extends Enum { readonly isPortfolioCreated: boolean; readonly asPortfolioCreated: ITuple<[PolymeshPrimitivesIdentityId, u64, Bytes]>; @@ -1589,7 +1582,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'PortfolioCreated' | 'PortfolioDeleted' | 'MovedBetweenPortfolios' | 'PortfolioRenamed' | 'UserPortfolios' | 'PortfolioCustodianChanged'; } - /** @name PalletProtocolFeeRawEvent (229) */ + /** @name PalletProtocolFeeRawEvent (228) */ export interface PalletProtocolFeeRawEvent extends Enum { readonly isFeeSet: boolean; readonly asFeeSet: ITuple<[PolymeshPrimitivesIdentityId, u128]>; @@ -1600,10 +1593,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'FeeSet' | 'CoefficientSet' | 'FeeCharged'; } - /** @name PolymeshPrimitivesPosRatio (230) */ + /** @name PolymeshPrimitivesPosRatio (229) */ export interface PolymeshPrimitivesPosRatio extends ITuple<[u32, u32]> {} - /** @name PalletSchedulerEvent (231) */ + /** @name PalletSchedulerEvent (230) */ export interface PalletSchedulerEvent extends Enum { readonly isScheduled: boolean; readonly asScheduled: ITuple<[u32, u32]>; @@ -1614,7 +1607,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Scheduled' | 'Canceled' | 'Dispatched'; } - /** @name PalletSettlementRawEvent (233) */ + /** @name PalletSettlementRawEvent (232) */ export interface PalletSettlementRawEvent extends Enum { readonly isVenueCreated: boolean; readonly asVenueCreated: ITuple<[PolymeshPrimitivesIdentityId, u64, Bytes, PalletSettlementVenueType]>; @@ -1657,7 +1650,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'VenueCreated' | 'VenueDetailsUpdated' | 'VenueTypeUpdated' | 'InstructionCreated' | 'InstructionAffirmed' | 'AffirmationWithdrawn' | 'InstructionRejected' | 'ReceiptClaimed' | 'ReceiptValidityChanged' | 'ReceiptUnclaimed' | 'VenueFiltering' | 'VenuesAllowed' | 'VenuesBlocked' | 'LegFailedExecution' | 'InstructionFailed' | 'InstructionExecuted' | 'VenueUnauthorized' | 'SchedulingFailed' | 'InstructionRescheduled'; } - /** @name PalletSettlementVenueType (236) */ + /** @name PalletSettlementVenueType (235) */ export interface PalletSettlementVenueType extends Enum { readonly isOther: boolean; readonly isDistribution: boolean; @@ -1666,7 +1659,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Other' | 'Distribution' | 'Sto' | 'Exchange'; } - /** @name PalletSettlementSettlementType (238) */ + /** @name PalletSettlementSettlementType (237) */ export interface PalletSettlementSettlementType extends Enum { readonly isSettleOnAffirmation: boolean; readonly isSettleOnBlock: boolean; @@ -1674,7 +1667,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SettleOnAffirmation' | 'SettleOnBlock'; } - /** @name PalletSettlementLeg (240) */ + /** @name PalletSettlementLeg (239) */ export interface PalletSettlementLeg extends Struct { readonly from: PolymeshPrimitivesIdentityIdPortfolioId; readonly to: PolymeshPrimitivesIdentityIdPortfolioId; @@ -1682,7 +1675,7 @@ declare module '@polkadot/types/lookup' { readonly amount: u128; } - /** @name PolymeshCommonUtilitiesStatisticsEvent (244) */ + /** @name PolymeshCommonUtilitiesStatisticsEvent (243) */ export interface PolymeshCommonUtilitiesStatisticsEvent extends Enum { readonly isStatTypesAdded: boolean; readonly asStatTypesAdded: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesStatisticsAssetScope, Vec]>; @@ -1699,33 +1692,33 @@ declare module '@polkadot/types/lookup' { readonly type: 'StatTypesAdded' | 'StatTypesRemoved' | 'AssetStatsUpdated' | 'SetAssetTransferCompliance' | 'TransferConditionExemptionsAdded' | 'TransferConditionExemptionsRemoved'; } - /** @name PolymeshPrimitivesStatisticsAssetScope (245) */ + /** @name PolymeshPrimitivesStatisticsAssetScope (244) */ export interface PolymeshPrimitivesStatisticsAssetScope extends Enum { readonly isTicker: boolean; readonly asTicker: PolymeshPrimitivesTicker; readonly type: 'Ticker'; } - /** @name PolymeshPrimitivesStatisticsStatType (247) */ + /** @name PolymeshPrimitivesStatisticsStatType (246) */ export interface PolymeshPrimitivesStatisticsStatType extends Struct { readonly op: PolymeshPrimitivesStatisticsStatOpType; readonly claimIssuer: Option>; } - /** @name PolymeshPrimitivesStatisticsStatOpType (248) */ + /** @name PolymeshPrimitivesStatisticsStatOpType (247) */ export interface PolymeshPrimitivesStatisticsStatOpType extends Enum { readonly isCount: boolean; readonly isBalance: boolean; readonly type: 'Count' | 'Balance'; } - /** @name PolymeshPrimitivesStatisticsStatUpdate (252) */ + /** @name PolymeshPrimitivesStatisticsStatUpdate (251) */ export interface PolymeshPrimitivesStatisticsStatUpdate extends Struct { readonly key2: PolymeshPrimitivesStatisticsStat2ndKey; readonly value: Option; } - /** @name PolymeshPrimitivesStatisticsStat2ndKey (253) */ + /** @name PolymeshPrimitivesStatisticsStat2ndKey (252) */ export interface PolymeshPrimitivesStatisticsStat2ndKey extends Enum { readonly isNoClaimStat: boolean; readonly isClaim: boolean; @@ -1733,7 +1726,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'NoClaimStat' | 'Claim'; } - /** @name PolymeshPrimitivesStatisticsStatClaim (254) */ + /** @name PolymeshPrimitivesStatisticsStatClaim (253) */ export interface PolymeshPrimitivesStatisticsStatClaim extends Enum { readonly isAccredited: boolean; readonly asAccredited: bool; @@ -1744,7 +1737,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Accredited' | 'Affiliate' | 'Jurisdiction'; } - /** @name PolymeshPrimitivesTransferComplianceTransferCondition (258) */ + /** @name PolymeshPrimitivesTransferComplianceTransferCondition (257) */ export interface PolymeshPrimitivesTransferComplianceTransferCondition extends Enum { readonly isMaxInvestorCount: boolean; readonly asMaxInvestorCount: u64; @@ -1757,14 +1750,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'MaxInvestorCount' | 'MaxInvestorOwnership' | 'ClaimCount' | 'ClaimOwnership'; } - /** @name PolymeshPrimitivesTransferComplianceTransferConditionExemptKey (260) */ + /** @name PolymeshPrimitivesTransferComplianceTransferConditionExemptKey (259) */ export interface PolymeshPrimitivesTransferComplianceTransferConditionExemptKey extends Struct { readonly asset: PolymeshPrimitivesStatisticsAssetScope; readonly op: PolymeshPrimitivesStatisticsStatOpType; readonly claimType: Option; } - /** @name PalletStoRawEvent (262) */ + /** @name PalletStoRawEvent (261) */ export interface PalletStoRawEvent extends Enum { readonly isFundraiserCreated: boolean; readonly asFundraiserCreated: ITuple<[PolymeshPrimitivesIdentityId, u64, Bytes, PalletStoFundraiser]>; @@ -1781,7 +1774,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'FundraiserCreated' | 'Invested' | 'FundraiserFrozen' | 'FundraiserUnfrozen' | 'FundraiserWindowModified' | 'FundraiserClosed'; } - /** @name PalletStoFundraiser (265) */ + /** @name PalletStoFundraiser (264) */ export interface PalletStoFundraiser extends Struct { readonly creator: PolymeshPrimitivesIdentityId; readonly offeringPortfolio: PolymeshPrimitivesIdentityIdPortfolioId; @@ -1796,14 +1789,14 @@ declare module '@polkadot/types/lookup' { readonly minimumInvestment: u128; } - /** @name PalletStoFundraiserTier (267) */ + /** @name PalletStoFundraiserTier (266) */ export interface PalletStoFundraiserTier extends Struct { readonly total: u128; readonly price: u128; readonly remaining: u128; } - /** @name PalletStoFundraiserStatus (268) */ + /** @name PalletStoFundraiserStatus (267) */ export interface PalletStoFundraiserStatus extends Enum { readonly isLive: boolean; readonly isFrozen: boolean; @@ -1812,7 +1805,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Live' | 'Frozen' | 'Closed' | 'ClosedEarly'; } - /** @name PalletTreasuryRawEvent (269) */ + /** @name PalletTreasuryRawEvent (268) */ export interface PalletTreasuryRawEvent extends Enum { readonly isTreasuryDisbursement: boolean; readonly asTreasuryDisbursement: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId, u128]>; @@ -1821,7 +1814,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'TreasuryDisbursement' | 'TreasuryReimbursement'; } - /** @name PalletUtilityEvent (270) */ + /** @name PalletUtilityEvent (269) */ export interface PalletUtilityEvent extends Enum { readonly isBatchInterrupted: boolean; readonly asBatchInterrupted: ITuple<[Vec, ITuple<[u32, SpRuntimeDispatchError]>]>; @@ -1832,14 +1825,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'BatchInterrupted' | 'BatchOptimisticFailed' | 'BatchCompleted'; } - /** @name PolymeshCommonUtilitiesBaseEvent (274) */ + /** @name PolymeshCommonUtilitiesBaseEvent (273) */ export interface PolymeshCommonUtilitiesBaseEvent extends Enum { readonly isUnexpectedError: boolean; readonly asUnexpectedError: Option; readonly type: 'UnexpectedError'; } - /** @name PolymeshCommonUtilitiesExternalAgentsEvent (276) */ + /** @name PolymeshCommonUtilitiesExternalAgentsEvent (275) */ export interface PolymeshCommonUtilitiesExternalAgentsEvent extends Enum { readonly isGroupCreated: boolean; readonly asGroupCreated: ITuple<[PolymeshPrimitivesEventOnly, PolymeshPrimitivesTicker, u32, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions]>; @@ -1854,7 +1847,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'GroupCreated' | 'GroupPermissionsUpdated' | 'AgentAdded' | 'AgentRemoved' | 'GroupChanged'; } - /** @name PolymeshCommonUtilitiesRelayerRawEvent (277) */ + /** @name PolymeshCommonUtilitiesRelayerRawEvent (276) */ export interface PolymeshCommonUtilitiesRelayerRawEvent extends Enum { readonly isAuthorizedPayingKey: boolean; readonly asAuthorizedPayingKey: ITuple<[PolymeshPrimitivesEventOnly, AccountId32, AccountId32, u128, u64]>; @@ -1867,14 +1860,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'AuthorizedPayingKey' | 'AcceptedPayingKey' | 'RemovedPayingKey' | 'UpdatedPolyxLimit'; } - /** @name PalletRewardsRawEvent (278) */ + /** @name PalletRewardsRawEvent (277) */ export interface PalletRewardsRawEvent extends Enum { readonly isItnRewardClaimed: boolean; readonly asItnRewardClaimed: ITuple<[AccountId32, u128]>; readonly type: 'ItnRewardClaimed'; } - /** @name PalletTestUtilsRawEvent (279) */ + /** @name PalletTestUtilsRawEvent (278) */ export interface PalletTestUtilsRawEvent extends Enum { readonly isMockInvestorUIDCreated: boolean; readonly asMockInvestorUIDCreated: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesCddIdInvestorUid]>; @@ -1885,6 +1878,9 @@ declare module '@polkadot/types/lookup' { readonly type: 'MockInvestorUIDCreated' | 'DidStatus' | 'CddStatus'; } + /** @name PolymeshPrimitivesCddIdInvestorUid (279) */ + export interface PolymeshPrimitivesCddIdInvestorUid extends U8aFixed {} + /** @name FrameSystemPhase (280) */ export interface FrameSystemPhase extends Enum { readonly isApplyExtrinsic: boolean; @@ -2241,30 +2237,34 @@ declare module '@polkadot/types/lookup' { readonly degree: u8; } - /** @name PolymeshPrimitivesIdentity (340) */ - export interface PolymeshPrimitivesIdentity extends Struct { - readonly primaryKey: AccountId32; - readonly secondaryKeys: Vec; - } - - /** @name PolymeshPrimitivesSecondaryKey (342) */ - export interface PolymeshPrimitivesSecondaryKey extends Struct { - readonly signer: PolymeshPrimitivesSecondaryKeySignatory; - readonly permissions: PolymeshPrimitivesSecondaryKeyPermissions; + /** @name PolymeshPrimitivesIdentityDidRecord (340) */ + export interface PolymeshPrimitivesIdentityDidRecord extends Struct { + readonly primaryKey: Option; } - /** @name PalletIdentityClaim1stKey (344) */ + /** @name PalletIdentityClaim1stKey (342) */ export interface PalletIdentityClaim1stKey extends Struct { readonly target: PolymeshPrimitivesIdentityId; readonly claimType: PolymeshPrimitivesIdentityClaimClaimType; } - /** @name PalletIdentityClaim2ndKey (345) */ + /** @name PalletIdentityClaim2ndKey (343) */ export interface PalletIdentityClaim2ndKey extends Struct { readonly issuer: PolymeshPrimitivesIdentityId; readonly scope: Option; } + /** @name PolymeshPrimitivesSecondaryKeyKeyRecord (345) */ + export interface PolymeshPrimitivesSecondaryKeyKeyRecord extends Enum { + readonly isPrimaryKey: boolean; + readonly asPrimaryKey: PolymeshPrimitivesIdentityId; + readonly isSecondaryKey: boolean; + readonly asSecondaryKey: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesSecondaryKeyPermissions]>; + readonly isMultiSigSignerKey: boolean; + readonly asMultiSigSignerKey: AccountId32; + readonly type: 'PrimaryKey' | 'SecondaryKey' | 'MultiSigSignerKey'; + } + /** @name PolymeshPrimitivesAuthorization (348) */ export interface PolymeshPrimitivesAuthorization extends Struct { readonly authorizationData: PolymeshPrimitivesAuthorizationAuthorizationData; @@ -2288,7 +2288,7 @@ declare module '@polkadot/types/lookup' { } & Struct; readonly isRemoveSecondaryKeys: boolean; readonly asRemoveSecondaryKeys: { - readonly signersToRemove: Vec; + readonly keysToRemove: Vec; } & Struct; readonly isAcceptPrimaryKey: boolean; readonly asAcceptPrimaryKey: { @@ -2315,16 +2315,11 @@ declare module '@polkadot/types/lookup' { readonly target: PolymeshPrimitivesIdentityId; readonly claim: PolymeshPrimitivesIdentityClaimClaim; } & Struct; - readonly isSetPermissionToSigner: boolean; - readonly asSetPermissionToSigner: { - readonly signer: PolymeshPrimitivesSecondaryKeySignatory; + readonly isSetSecondaryKeyPermissions: boolean; + readonly asSetSecondaryKeyPermissions: { + readonly key: AccountId32; readonly perms: PolymeshPrimitivesSecondaryKeyPermissions; } & Struct; - readonly isLegacySetPermissionToSigner: boolean; - readonly asLegacySetPermissionToSigner: { - readonly signer: PolymeshPrimitivesSecondaryKeySignatory; - readonly permissions: PolymeshPrimitivesSecondaryKeyApiLegacyPermissions; - } & Struct; readonly isFreezeSecondaryKeys: boolean; readonly isUnfreezeSecondaryKeys: boolean; readonly isAddAuthorization: boolean; @@ -2378,73 +2373,56 @@ declare module '@polkadot/types/lookup' { readonly authId: u64; readonly optionalCddAuthId: Option; } & Struct; - readonly type: 'CddRegisterDid' | 'InvalidateCddClaims' | 'RemoveSecondaryKeys' | 'AcceptPrimaryKey' | 'ChangeCddRequirementForMkRotation' | 'JoinIdentityAsKey' | 'LeaveIdentityAsKey' | 'AddClaim' | 'RevokeClaim' | 'SetPermissionToSigner' | 'LegacySetPermissionToSigner' | 'FreezeSecondaryKeys' | 'UnfreezeSecondaryKeys' | 'AddAuthorization' | 'RemoveAuthorization' | 'AddSecondaryKeysWithAuthorization' | 'AddInvestorUniquenessClaim' | 'GcAddCddClaim' | 'GcRevokeCddClaim' | 'AddInvestorUniquenessClaimV2' | 'RevokeClaimByIndex' | 'RotatePrimaryKeyToSecondary'; - } - - /** @name PolymeshPrimitivesSecondaryKeyApiLegacyPermissions (352) */ - export interface PolymeshPrimitivesSecondaryKeyApiLegacyPermissions extends Struct { - readonly asset: PolymeshPrimitivesSubsetSubsetRestrictionTicker; - readonly extrinsic: PolymeshPrimitivesSecondaryKeyApiLegacyExtrinsicPermissions; - readonly portfolio: PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId; - } - - /** @name PolymeshPrimitivesSecondaryKeyApiLegacyExtrinsicPermissions (353) */ - export interface PolymeshPrimitivesSecondaryKeyApiLegacyExtrinsicPermissions extends Option> {} - - /** @name PolymeshPrimitivesSecondaryKeyApiLegacyPalletPermissions (356) */ - export interface PolymeshPrimitivesSecondaryKeyApiLegacyPalletPermissions extends Struct { - readonly palletName: Bytes; - readonly total: bool; - readonly dispatchableNames: Vec; + readonly type: 'CddRegisterDid' | 'InvalidateCddClaims' | 'RemoveSecondaryKeys' | 'AcceptPrimaryKey' | 'ChangeCddRequirementForMkRotation' | 'JoinIdentityAsKey' | 'LeaveIdentityAsKey' | 'AddClaim' | 'RevokeClaim' | 'SetSecondaryKeyPermissions' | 'FreezeSecondaryKeys' | 'UnfreezeSecondaryKeys' | 'AddAuthorization' | 'RemoveAuthorization' | 'AddSecondaryKeysWithAuthorization' | 'AddInvestorUniquenessClaim' | 'GcAddCddClaim' | 'GcRevokeCddClaim' | 'AddInvestorUniquenessClaimV2' | 'RevokeClaimByIndex' | 'RotatePrimaryKeyToSecondary'; } - /** @name PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth (358) */ + /** @name PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth (353) */ export interface PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth extends Struct { - readonly secondaryKey: PolymeshPrimitivesSecondaryKeyApiSecondaryKey; + readonly secondaryKey: PolymeshPrimitivesSecondaryKey; readonly authSignature: H512; } - /** @name PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData (360) */ + /** @name PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData (355) */ export interface PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData extends SchnorrkelSignSignature {} - /** @name SchnorrkelSignSignature (361) */ + /** @name SchnorrkelSignSignature (356) */ export interface SchnorrkelSignSignature extends Struct { readonly r: Curve25519DalekRistrettoCompressedRistretto; readonly s: Curve25519DalekScalar; } - /** @name Curve25519DalekRistrettoCompressedRistretto (362) */ + /** @name Curve25519DalekRistrettoCompressedRistretto (357) */ export interface Curve25519DalekRistrettoCompressedRistretto extends U8aFixed {} - /** @name Curve25519DalekScalar (363) */ + /** @name Curve25519DalekScalar (358) */ export interface Curve25519DalekScalar extends Struct { readonly bytes: U8aFixed; } - /** @name ConfidentialIdentityClaimProofsScopeClaimProof (364) */ + /** @name ConfidentialIdentityClaimProofsScopeClaimProof (359) */ export interface ConfidentialIdentityClaimProofsScopeClaimProof extends Struct { readonly proofScopeIdWellformed: ConfidentialIdentitySignSignature; readonly proofScopeIdCddIdMatch: ConfidentialIdentityClaimProofsZkProofData; readonly scopeId: Curve25519DalekRistrettoRistrettoPoint; } - /** @name ConfidentialIdentitySignSignature (365) */ + /** @name ConfidentialIdentitySignSignature (360) */ export interface ConfidentialIdentitySignSignature extends Struct { readonly r: Curve25519DalekRistrettoCompressedRistretto; readonly s: Curve25519DalekScalar; } - /** @name ConfidentialIdentityClaimProofsZkProofData (366) */ + /** @name ConfidentialIdentityClaimProofsZkProofData (361) */ export interface ConfidentialIdentityClaimProofsZkProofData extends Struct { readonly challengeResponses: Vec; readonly subtractExpressionsRes: Curve25519DalekRistrettoRistrettoPoint; readonly blindedScopeDidHash: Curve25519DalekRistrettoRistrettoPoint; } - /** @name Curve25519DalekRistrettoRistrettoPoint (368) */ + /** @name Curve25519DalekRistrettoRistrettoPoint (363) */ export interface Curve25519DalekRistrettoRistrettoPoint extends Curve25519DalekEdwardsEdwardsPoint {} - /** @name Curve25519DalekEdwardsEdwardsPoint (369) */ + /** @name Curve25519DalekEdwardsEdwardsPoint (364) */ export interface Curve25519DalekEdwardsEdwardsPoint extends Struct { readonly x: Curve25519DalekBackendSerialU64FieldFieldElement51; readonly y: Curve25519DalekBackendSerialU64FieldFieldElement51; @@ -2452,10 +2430,10 @@ declare module '@polkadot/types/lookup' { readonly t: Curve25519DalekBackendSerialU64FieldFieldElement51; } - /** @name Curve25519DalekBackendSerialU64FieldFieldElement51 (370) */ + /** @name Curve25519DalekBackendSerialU64FieldFieldElement51 (365) */ export interface Curve25519DalekBackendSerialU64FieldFieldElement51 extends Vec {} - /** @name PalletIdentityError (372) */ + /** @name PalletIdentityError (367) */ export interface PalletIdentityError extends Enum { readonly isAlreadyLinked: boolean; readonly isMissingCurrentIdentity: boolean; @@ -2493,14 +2471,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'AlreadyLinked' | 'MissingCurrentIdentity' | 'Unauthorized' | 'InvalidAccountKey' | 'UnAuthorizedCddProvider' | 'InvalidAuthorizationFromOwner' | 'InvalidAuthorizationFromCddProvider' | 'NotCddProviderAttestation' | 'AuthorizationsNotForSameDids' | 'DidMustAlreadyExist' | 'CurrentIdentityCannotBeForwarded' | 'AuthorizationExpired' | 'TargetHasNoCdd' | 'AuthorizationHasBeenRevoked' | 'InvalidAuthorizationSignature' | 'KeyNotAllowed' | 'NotPrimaryKey' | 'DidDoesNotExist' | 'DidAlreadyExists' | 'SecondaryKeysContainPrimaryKey' | 'FailedToChargeFee' | 'NotASigner' | 'CannotDecodeSignerAccountId' | 'MultiSigHasBalance' | 'ConfidentialScopeClaimNotAllowed' | 'InvalidScopeClaim' | 'ClaimVariantNotAllowed' | 'TargetHasNonZeroBalanceAtScopeId' | 'CddIdNotUniqueForIdentity' | 'InvalidCDDId' | 'ClaimAndProofVersionsDoNotMatch' | 'AccountKeyIsBeingUsed' | 'CustomScopeTooLong'; } - /** @name PolymeshCommonUtilitiesGroupInactiveMember (374) */ + /** @name PolymeshCommonUtilitiesGroupInactiveMember (369) */ export interface PolymeshCommonUtilitiesGroupInactiveMember extends Struct { readonly id: PolymeshPrimitivesIdentityId; readonly deactivatedAt: u64; readonly expiry: Option; } - /** @name PalletGroupCall (375) */ + /** @name PalletGroupCall (370) */ export interface PalletGroupCall extends Enum { readonly isSetActiveMembersLimit: boolean; readonly asSetActiveMembersLimit: { @@ -2533,7 +2511,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetActiveMembersLimit' | 'DisableMember' | 'AddMember' | 'RemoveMember' | 'SwapMember' | 'ResetMembers' | 'AbdicateMembership'; } - /** @name PalletGroupError (376) */ + /** @name PalletGroupError (371) */ export interface PalletGroupError extends Enum { readonly isOnlyPrimaryKeyAllowed: boolean; readonly isDuplicateMember: boolean; @@ -2545,7 +2523,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'OnlyPrimaryKeyAllowed' | 'DuplicateMember' | 'NoSuchMember' | 'LastMemberCannotQuit' | 'MissingCurrentIdentity' | 'ActiveMembersLimitExceeded' | 'ActiveMembersLimitOverflow'; } - /** @name PalletCommitteeCall (378) */ + /** @name PalletCommitteeCall (373) */ export interface PalletCommitteeCall extends Enum { readonly isSetVoteThreshold: boolean; readonly asSetVoteThreshold: { @@ -2574,7 +2552,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetVoteThreshold' | 'SetReleaseCoordinator' | 'SetExpiresAfter' | 'VoteOrPropose' | 'Vote'; } - /** @name PalletMultisigCall (384) */ + /** @name PalletMultisigCall (379) */ export interface PalletMultisigCall extends Enum { readonly isCreateMultisig: boolean; readonly asCreateMultisig: { @@ -2678,7 +2656,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'CreateMultisig' | 'CreateOrApproveProposalAsIdentity' | 'CreateOrApproveProposalAsKey' | 'CreateProposalAsIdentity' | 'CreateProposalAsKey' | 'ApproveAsIdentity' | 'ApproveAsKey' | 'RejectAsIdentity' | 'RejectAsKey' | 'AcceptMultisigSignerAsIdentity' | 'AcceptMultisigSignerAsKey' | 'AddMultisigSigner' | 'RemoveMultisigSigner' | 'AddMultisigSignersViaCreator' | 'RemoveMultisigSignersViaCreator' | 'ChangeSigsRequired' | 'MakeMultisigSecondary' | 'MakeMultisigPrimary' | 'ExecuteScheduledProposal'; } - /** @name PalletBridgeCall (385) */ + /** @name PalletBridgeCall (380) */ export interface PalletBridgeCall extends Enum { readonly isChangeController: boolean; readonly asChangeController: { @@ -2746,7 +2724,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'ChangeController' | 'ChangeAdmin' | 'ChangeTimelock' | 'Freeze' | 'Unfreeze' | 'ChangeBridgeLimit' | 'ChangeBridgeExempted' | 'ForceHandleBridgeTx' | 'BatchProposeBridgeTx' | 'ProposeBridgeTx' | 'HandleBridgeTx' | 'FreezeTxs' | 'UnfreezeTxs' | 'HandleScheduledBridgeTx' | 'AddFreezeAdmin' | 'RemoveFreezeAdmin' | 'RemoveTxs'; } - /** @name PalletStakingCall (389) */ + /** @name PalletStakingCall (384) */ export interface PalletStakingCall extends Enum { readonly isBond: boolean; readonly asBond: { @@ -2885,7 +2863,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Bond' | 'BondExtra' | 'Unbond' | 'WithdrawUnbonded' | 'Validate' | 'Nominate' | 'Chill' | 'SetPayee' | 'SetController' | 'SetValidatorCount' | 'IncreaseValidatorCount' | 'ScaleValidatorCount' | 'AddPermissionedValidator' | 'RemovePermissionedValidator' | 'ValidateCddExpiryNominators' | 'SetCommissionCap' | 'SetMinBondThreshold' | 'ForceNoEras' | 'ForceNewEra' | 'SetInvulnerables' | 'ForceUnstake' | 'ForceNewEraAlways' | 'CancelDeferredSlash' | 'PayoutStakers' | 'Rebond' | 'SetHistoryDepth' | 'ReapStash' | 'SubmitElectionSolution' | 'SubmitElectionSolutionUnsigned' | 'PayoutStakersBySystem' | 'ChangeSlashingAllowedFor' | 'UpdatePermissionedValidatorIntendedCount'; } - /** @name PalletStakingRewardDestination (390) */ + /** @name PalletStakingRewardDestination (385) */ export interface PalletStakingRewardDestination extends Enum { readonly isStaked: boolean; readonly isStash: boolean; @@ -2895,13 +2873,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Staked' | 'Stash' | 'Controller' | 'Account'; } - /** @name PalletStakingValidatorPrefs (391) */ + /** @name PalletStakingValidatorPrefs (386) */ export interface PalletStakingValidatorPrefs extends Struct { readonly commission: Compact; readonly blocked: bool; } - /** @name PalletStakingCompactAssignments (397) */ + /** @name PalletStakingCompactAssignments (392) */ export interface PalletStakingCompactAssignments extends Struct { readonly votes1: Vec, Compact]>>; readonly votes2: Vec, ITuple<[Compact, Compact]>, Compact]>>; @@ -2921,13 +2899,13 @@ declare module '@polkadot/types/lookup' { readonly votes16: Vec, Vec, Compact]>>, Compact]>>; } - /** @name PalletStakingElectionSize (449) */ + /** @name PalletStakingElectionSize (444) */ export interface PalletStakingElectionSize extends Struct { readonly validators: Compact; readonly nominators: Compact; } - /** @name PalletSessionCall (450) */ + /** @name PalletSessionCall (445) */ export interface PalletSessionCall extends Enum { readonly isSetKeys: boolean; readonly asSetKeys: { @@ -2938,7 +2916,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetKeys' | 'PurgeKeys'; } - /** @name PolymeshRuntimeDevelopRuntimeSessionKeys (451) */ + /** @name PolymeshRuntimeDevelopRuntimeSessionKeys (446) */ export interface PolymeshRuntimeDevelopRuntimeSessionKeys extends Struct { readonly grandpa: SpFinalityGrandpaAppPublic; readonly babe: SpConsensusBabeAppPublic; @@ -2946,10 +2924,10 @@ declare module '@polkadot/types/lookup' { readonly authorityDiscovery: SpAuthorityDiscoveryAppPublic; } - /** @name SpAuthorityDiscoveryAppPublic (452) */ + /** @name SpAuthorityDiscoveryAppPublic (447) */ export interface SpAuthorityDiscoveryAppPublic extends SpCoreSr25519Public {} - /** @name PalletGrandpaCall (453) */ + /** @name PalletGrandpaCall (448) */ export interface PalletGrandpaCall extends Enum { readonly isReportEquivocation: boolean; readonly asReportEquivocation: { @@ -2969,13 +2947,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'ReportEquivocation' | 'ReportEquivocationUnsigned' | 'NoteStalled'; } - /** @name SpFinalityGrandpaEquivocationProof (454) */ + /** @name SpFinalityGrandpaEquivocationProof (449) */ export interface SpFinalityGrandpaEquivocationProof extends Struct { readonly setId: u64; readonly equivocation: SpFinalityGrandpaEquivocation; } - /** @name SpFinalityGrandpaEquivocation (455) */ + /** @name SpFinalityGrandpaEquivocation (450) */ export interface SpFinalityGrandpaEquivocation extends Enum { readonly isPrevote: boolean; readonly asPrevote: FinalityGrandpaEquivocationPrevote; @@ -2984,7 +2962,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Prevote' | 'Precommit'; } - /** @name FinalityGrandpaEquivocationPrevote (456) */ + /** @name FinalityGrandpaEquivocationPrevote (451) */ export interface FinalityGrandpaEquivocationPrevote extends Struct { readonly roundNumber: u64; readonly identity: SpFinalityGrandpaAppPublic; @@ -2992,19 +2970,19 @@ declare module '@polkadot/types/lookup' { readonly second: ITuple<[FinalityGrandpaPrevote, SpFinalityGrandpaAppSignature]>; } - /** @name FinalityGrandpaPrevote (457) */ + /** @name FinalityGrandpaPrevote (452) */ export interface FinalityGrandpaPrevote extends Struct { readonly targetHash: H256; readonly targetNumber: u32; } - /** @name SpFinalityGrandpaAppSignature (458) */ + /** @name SpFinalityGrandpaAppSignature (453) */ export interface SpFinalityGrandpaAppSignature extends SpCoreEd25519Signature {} - /** @name SpCoreEd25519Signature (459) */ + /** @name SpCoreEd25519Signature (454) */ export interface SpCoreEd25519Signature extends U8aFixed {} - /** @name FinalityGrandpaEquivocationPrecommit (461) */ + /** @name FinalityGrandpaEquivocationPrecommit (456) */ export interface FinalityGrandpaEquivocationPrecommit extends Struct { readonly roundNumber: u64; readonly identity: SpFinalityGrandpaAppPublic; @@ -3012,13 +2990,13 @@ declare module '@polkadot/types/lookup' { readonly second: ITuple<[FinalityGrandpaPrecommit, SpFinalityGrandpaAppSignature]>; } - /** @name FinalityGrandpaPrecommit (462) */ + /** @name FinalityGrandpaPrecommit (457) */ export interface FinalityGrandpaPrecommit extends Struct { readonly targetHash: H256; readonly targetNumber: u32; } - /** @name PalletImOnlineCall (464) */ + /** @name PalletImOnlineCall (459) */ export interface PalletImOnlineCall extends Enum { readonly isHeartbeat: boolean; readonly asHeartbeat: { @@ -3028,7 +3006,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Heartbeat'; } - /** @name PalletImOnlineHeartbeat (465) */ + /** @name PalletImOnlineHeartbeat (460) */ export interface PalletImOnlineHeartbeat extends Struct { readonly blockNumber: u32; readonly networkState: SpCoreOffchainOpaqueNetworkState; @@ -3037,19 +3015,19 @@ declare module '@polkadot/types/lookup' { readonly validatorsLen: u32; } - /** @name SpCoreOffchainOpaqueNetworkState (466) */ + /** @name SpCoreOffchainOpaqueNetworkState (461) */ export interface SpCoreOffchainOpaqueNetworkState extends Struct { readonly peerId: Bytes; readonly externalAddresses: Vec; } - /** @name PalletImOnlineSr25519AppSr25519Signature (470) */ + /** @name PalletImOnlineSr25519AppSr25519Signature (465) */ export interface PalletImOnlineSr25519AppSr25519Signature extends SpCoreSr25519Signature {} - /** @name SpCoreSr25519Signature (471) */ + /** @name SpCoreSr25519Signature (466) */ export interface SpCoreSr25519Signature extends U8aFixed {} - /** @name PalletSudoCall (472) */ + /** @name PalletSudoCall (467) */ export interface PalletSudoCall extends Enum { readonly isSudo: boolean; readonly asSudo: { @@ -3072,7 +3050,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Sudo' | 'SudoUncheckedWeight' | 'SetKey' | 'SudoAs'; } - /** @name PalletAssetCall (473) */ + /** @name PalletAssetCall (468) */ export interface PalletAssetCall extends Enum { readonly isRegisterTicker: boolean; readonly asRegisterTicker: { @@ -3209,10 +3187,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'RegisterTicker' | 'AcceptTickerTransfer' | 'AcceptAssetOwnershipTransfer' | 'CreateAsset' | 'Freeze' | 'Unfreeze' | 'RenameAsset' | 'Issue' | 'Redeem' | 'MakeDivisible' | 'AddDocuments' | 'RemoveDocuments' | 'SetFundingRound' | 'UpdateIdentifiers' | 'ClaimClassicTicker' | 'ReserveClassicTicker' | 'ControllerTransfer' | 'RegisterCustomAssetType' | 'CreateAssetWithCustomType' | 'SetAssetMetadata' | 'SetAssetMetadataDetails' | 'RegisterAndSetLocalAssetMetadata' | 'RegisterAssetMetadataLocalType' | 'RegisterAssetMetadataGlobalType'; } - /** @name PolymeshPrimitivesEthereumEcdsaSignature (476) */ + /** @name PolymeshPrimitivesEthereumEcdsaSignature (471) */ export interface PolymeshPrimitivesEthereumEcdsaSignature extends U8aFixed {} - /** @name PalletAssetClassicTickerImport (478) */ + /** @name PalletAssetClassicTickerImport (473) */ export interface PalletAssetClassicTickerImport extends Struct { readonly ethOwner: PolymeshPrimitivesEthereumEthereumAddress; readonly ticker: PolymeshPrimitivesTicker; @@ -3220,13 +3198,13 @@ declare module '@polkadot/types/lookup' { readonly isCreated: bool; } - /** @name PalletAssetTickerRegistrationConfig (479) */ + /** @name PalletAssetTickerRegistrationConfig (474) */ export interface PalletAssetTickerRegistrationConfig extends Struct { readonly maxTickerLength: u8; readonly registrationLength: Option; } - /** @name PolymeshPrimitivesAssetMetadataAssetMetadataKey (480) */ + /** @name PolymeshPrimitivesAssetMetadataAssetMetadataKey (475) */ export interface PolymeshPrimitivesAssetMetadataAssetMetadataKey extends Enum { readonly isGlobal: boolean; readonly asGlobal: u64; @@ -3235,7 +3213,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Global' | 'Local'; } - /** @name PalletCorporateActionsDistributionCall (481) */ + /** @name PalletCorporateActionsDistributionCall (476) */ export interface PalletCorporateActionsDistributionCall extends Enum { readonly isDistribute: boolean; readonly asDistribute: { @@ -3267,7 +3245,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Distribute' | 'Claim' | 'PushBenefit' | 'Reclaim' | 'RemoveDistribution'; } - /** @name PalletAssetCheckpointCall (483) */ + /** @name PalletAssetCheckpointCall (478) */ export interface PalletAssetCheckpointCall extends Enum { readonly isCreateCheckpoint: boolean; readonly asCreateCheckpoint: { @@ -3290,14 +3268,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'CreateCheckpoint' | 'SetSchedulesMaxComplexity' | 'CreateSchedule' | 'RemoveSchedule'; } - /** @name PalletAssetCheckpointScheduleSpec (484) */ + /** @name PalletAssetCheckpointScheduleSpec (479) */ export interface PalletAssetCheckpointScheduleSpec extends Struct { readonly start: Option; readonly period: PolymeshPrimitivesCalendarCalendarPeriod; readonly remaining: u32; } - /** @name PalletComplianceManagerCall (485) */ + /** @name PalletComplianceManagerCall (480) */ export interface PalletComplianceManagerCall extends Enum { readonly isAddComplianceRequirement: boolean; readonly asAddComplianceRequirement: { @@ -3345,7 +3323,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'AddComplianceRequirement' | 'RemoveComplianceRequirement' | 'ReplaceAssetCompliance' | 'ResetAssetCompliance' | 'PauseAssetCompliance' | 'ResumeAssetCompliance' | 'AddDefaultTrustedClaimIssuer' | 'RemoveDefaultTrustedClaimIssuer' | 'ChangeComplianceRequirement'; } - /** @name PalletCorporateActionsCall (486) */ + /** @name PalletCorporateActionsCall (481) */ export interface PalletCorporateActionsCall extends Enum { readonly isSetMaxDetailsLength: boolean; readonly asSetMaxDetailsLength: { @@ -3405,7 +3383,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetMaxDetailsLength' | 'SetDefaultTargets' | 'SetDefaultWithholdingTax' | 'SetDidWithholdingTax' | 'InitiateCorporateAction' | 'LinkCaDoc' | 'RemoveCa' | 'ChangeRecordDate' | 'InitiateCorporateActionAndDistribute'; } - /** @name PalletCorporateActionsRecordDateSpec (488) */ + /** @name PalletCorporateActionsRecordDateSpec (483) */ export interface PalletCorporateActionsRecordDateSpec extends Enum { readonly isScheduled: boolean; readonly asScheduled: u64; @@ -3416,7 +3394,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Scheduled' | 'ExistingSchedule' | 'Existing'; } - /** @name PalletCorporateActionsInitiateCorporateActionArgs (491) */ + /** @name PalletCorporateActionsInitiateCorporateActionArgs (486) */ export interface PalletCorporateActionsInitiateCorporateActionArgs extends Struct { readonly ticker: PolymeshPrimitivesTicker; readonly kind: PalletCorporateActionsCaKind; @@ -3428,7 +3406,7 @@ declare module '@polkadot/types/lookup' { readonly withholdingTax: Option>>; } - /** @name PalletCorporateActionsBallotCall (492) */ + /** @name PalletCorporateActionsBallotCall (487) */ export interface PalletCorporateActionsBallotCall extends Enum { readonly isAttachBallot: boolean; readonly asAttachBallot: { @@ -3464,7 +3442,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'AttachBallot' | 'Vote' | 'ChangeEnd' | 'ChangeMeta' | 'ChangeRcv' | 'RemoveBallot'; } - /** @name PalletPipsCall (493) */ + /** @name PalletPipsCall (488) */ export interface PalletPipsCall extends Enum { readonly isSetPruneHistoricalPips: boolean; readonly asSetPruneHistoricalPips: { @@ -3538,7 +3516,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetPruneHistoricalPips' | 'SetMinProposalDeposit' | 'SetDefaultEnactmentPeriod' | 'SetPendingPipExpiry' | 'SetMaxPipSkipCount' | 'SetActivePipLimit' | 'Propose' | 'Vote' | 'ApproveCommitteeProposal' | 'RejectProposal' | 'PruneProposal' | 'RescheduleExecution' | 'ClearSnapshot' | 'Snapshot' | 'EnactSnapshotResults' | 'ExecuteScheduledPip' | 'ExpireScheduledPip'; } - /** @name PalletPipsSnapshotResult (496) */ + /** @name PalletPipsSnapshotResult (491) */ export interface PalletPipsSnapshotResult extends Enum { readonly isApprove: boolean; readonly isReject: boolean; @@ -3546,7 +3524,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Approve' | 'Reject' | 'Skip'; } - /** @name PalletPortfolioCall (497) */ + /** @name PalletPortfolioCall (492) */ export interface PalletPortfolioCall extends Enum { readonly isCreatePortfolio: boolean; readonly asCreatePortfolio: { @@ -3578,14 +3556,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'CreatePortfolio' | 'DeletePortfolio' | 'MovePortfolioFunds' | 'RenamePortfolio' | 'QuitPortfolioCustody' | 'AcceptPortfolioCustody'; } - /** @name PalletPortfolioMovePortfolioItem (499) */ + /** @name PalletPortfolioMovePortfolioItem (494) */ export interface PalletPortfolioMovePortfolioItem extends Struct { readonly ticker: PolymeshPrimitivesTicker; readonly amount: u128; readonly memo: Option; } - /** @name PalletProtocolFeeCall (500) */ + /** @name PalletProtocolFeeCall (495) */ export interface PalletProtocolFeeCall extends Enum { readonly isChangeCoefficient: boolean; readonly asChangeCoefficient: { @@ -3599,7 +3577,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'ChangeCoefficient' | 'ChangeBaseFee'; } - /** @name PolymeshCommonUtilitiesProtocolFeeProtocolOp (501) */ + /** @name PolymeshCommonUtilitiesProtocolFeeProtocolOp (496) */ export interface PolymeshCommonUtilitiesProtocolFeeProtocolOp extends Enum { readonly isAssetRegisterTicker: boolean; readonly isAssetIssue: boolean; @@ -3617,7 +3595,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'AssetRegisterTicker' | 'AssetIssue' | 'AssetAddDocuments' | 'AssetCreateAsset' | 'CheckpointCreateSchedule' | 'ComplianceManagerAddComplianceRequirement' | 'IdentityCddRegisterDid' | 'IdentityAddClaim' | 'IdentityAddSecondaryKeysWithAuthorization' | 'PipsPropose' | 'ContractsPutCode' | 'CorporateBallotAttachBallot' | 'CapitalDistributionDistribute'; } - /** @name PalletSchedulerCall (502) */ + /** @name PalletSchedulerCall (497) */ export interface PalletSchedulerCall extends Enum { readonly isSchedule: boolean; readonly asSchedule: { @@ -3661,7 +3639,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Schedule' | 'Cancel' | 'ScheduleNamed' | 'CancelNamed' | 'ScheduleAfter' | 'ScheduleNamedAfter'; } - /** @name PalletSettlementCall (504) */ + /** @name PalletSettlementCall (499) */ export interface PalletSettlementCall extends Enum { readonly isCreateVenue: boolean; readonly asCreateVenue: { @@ -3763,7 +3741,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'CreateVenue' | 'UpdateVenueDetails' | 'UpdateVenueType' | 'AddInstruction' | 'AddAndAffirmInstruction' | 'AffirmInstruction' | 'WithdrawAffirmation' | 'RejectInstruction' | 'AffirmWithReceipts' | 'ClaimReceipt' | 'UnclaimReceipt' | 'SetVenueFiltering' | 'AllowVenues' | 'DisallowVenues' | 'ChangeReceiptValidity' | 'ExecuteScheduledInstruction' | 'RescheduleInstruction'; } - /** @name PalletSettlementReceiptDetails (506) */ + /** @name PalletSettlementReceiptDetails (501) */ export interface PalletSettlementReceiptDetails extends Struct { readonly receiptUid: u64; readonly legId: u64; @@ -3772,7 +3750,7 @@ declare module '@polkadot/types/lookup' { readonly metadata: Bytes; } - /** @name SpRuntimeMultiSignature (507) */ + /** @name SpRuntimeMultiSignature (502) */ export interface SpRuntimeMultiSignature extends Enum { readonly isEd25519: boolean; readonly asEd25519: SpCoreEd25519Signature; @@ -3783,10 +3761,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa'; } - /** @name SpCoreEcdsaSignature (508) */ + /** @name SpCoreEcdsaSignature (503) */ export interface SpCoreEcdsaSignature extends U8aFixed {} - /** @name PalletStatisticsCall (509) */ + /** @name PalletStatisticsCall (504) */ export interface PalletStatisticsCall extends Enum { readonly isSetActiveAssetStats: boolean; readonly asSetActiveAssetStats: { @@ -3813,19 +3791,19 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetActiveAssetStats' | 'BatchUpdateAssetStats' | 'SetAssetTransferCompliance' | 'SetEntitiesExempt'; } - /** @name BTreeSetStatType (510) */ + /** @name BTreeSetStatType (505) */ export interface BTreeSetStatType extends Vec {} - /** @name BTreeSetStatUpdate (511) */ + /** @name BTreeSetStatUpdate (506) */ export interface BTreeSetStatUpdate extends Vec {} - /** @name BTreeSetTransferCondition (512) */ + /** @name BTreeSetTransferCondition (507) */ export interface BTreeSetTransferCondition extends Vec {} - /** @name BTreeSetIdentityId (513) */ + /** @name BTreeSetIdentityId (508) */ export interface BTreeSetIdentityId extends Vec {} - /** @name PalletStoCall (514) */ + /** @name PalletStoCall (509) */ export interface PalletStoCall extends Enum { readonly isCreateFundraiser: boolean; readonly asCreateFundraiser: { @@ -3875,13 +3853,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'CreateFundraiser' | 'Invest' | 'FreezeFundraiser' | 'UnfreezeFundraiser' | 'ModifyFundraiserWindow' | 'Stop'; } - /** @name PalletStoPriceTier (516) */ + /** @name PalletStoPriceTier (511) */ export interface PalletStoPriceTier extends Struct { readonly total: u128; readonly price: u128; } - /** @name PalletTreasuryCall (518) */ + /** @name PalletTreasuryCall (513) */ export interface PalletTreasuryCall extends Enum { readonly isDisbursement: boolean; readonly asDisbursement: { @@ -3894,13 +3872,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Disbursement' | 'Reimbursement'; } - /** @name PolymeshPrimitivesBeneficiary (520) */ + /** @name PolymeshPrimitivesBeneficiary (515) */ export interface PolymeshPrimitivesBeneficiary extends Struct { readonly id: PolymeshPrimitivesIdentityId; readonly amount: u128; } - /** @name PalletUtilityCall (521) */ + /** @name PalletUtilityCall (516) */ export interface PalletUtilityCall extends Enum { readonly isBatch: boolean; readonly asBatch: { @@ -3923,16 +3901,16 @@ declare module '@polkadot/types/lookup' { readonly type: 'Batch' | 'BatchAtomic' | 'BatchOptimistic' | 'RelayTx'; } - /** @name PalletUtilityUniqueCall (523) */ + /** @name PalletUtilityUniqueCall (518) */ export interface PalletUtilityUniqueCall extends Struct { readonly nonce: u64; readonly call: Call; } - /** @name PalletBaseCall (524) */ + /** @name PalletBaseCall (519) */ export type PalletBaseCall = Null; - /** @name PalletExternalAgentsCall (525) */ + /** @name PalletExternalAgentsCall (520) */ export interface PalletExternalAgentsCall extends Enum { readonly isCreateGroup: boolean; readonly asCreateGroup: { @@ -3979,7 +3957,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'CreateGroup' | 'SetGroupPermissions' | 'RemoveAgent' | 'Abdicate' | 'ChangeGroup' | 'AcceptBecomeAgent' | 'CreateGroupAndAddAuth' | 'CreateAndChangeCustomGroup'; } - /** @name PalletRelayerCall (526) */ + /** @name PalletRelayerCall (521) */ export interface PalletRelayerCall extends Enum { readonly isSetPayingKey: boolean; readonly asSetPayingKey: { @@ -4013,7 +3991,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetPayingKey' | 'AcceptPayingKey' | 'RemovePayingKey' | 'UpdatePolyxLimit' | 'IncreasePolyxLimit' | 'DecreasePolyxLimit'; } - /** @name PalletRewardsCall (527) */ + /** @name PalletRewardsCall (522) */ export interface PalletRewardsCall extends Enum { readonly isClaimItnReward: boolean; readonly asClaimItnReward: { @@ -4029,7 +4007,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'ClaimItnReward' | 'SetItnRewardStatus'; } - /** @name PalletRewardsItnRewardStatus (528) */ + /** @name PalletRewardsItnRewardStatus (523) */ export interface PalletRewardsItnRewardStatus extends Enum { readonly isUnclaimed: boolean; readonly asUnclaimed: u128; @@ -4037,7 +4015,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unclaimed' | 'Claimed'; } - /** @name PalletTestUtilsCall (529) */ + /** @name PalletTestUtilsCall (524) */ export interface PalletTestUtilsCall extends Enum { readonly isRegisterDid: boolean; readonly asRegisterDid: { @@ -4056,7 +4034,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'RegisterDid' | 'MockCddRegisterDid' | 'GetMyDid' | 'GetCddOf'; } - /** @name PalletCommitteePolymeshVotes (530) */ + /** @name PalletCommitteePolymeshVotes (525) */ export interface PalletCommitteePolymeshVotes extends Struct { readonly index: u32; readonly ayes: Vec; @@ -4064,7 +4042,7 @@ declare module '@polkadot/types/lookup' { readonly expiry: PolymeshCommonUtilitiesMaybeBlock; } - /** @name PalletCommitteeError (532) */ + /** @name PalletCommitteeError (527) */ export interface PalletCommitteeError extends Enum { readonly isDuplicateVote: boolean; readonly isNotAMember: boolean; @@ -4078,7 +4056,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'DuplicateVote' | 'NotAMember' | 'NoSuchProposal' | 'ProposalExpired' | 'DuplicateProposal' | 'MismatchedVotingIndex' | 'InvalidProportion' | 'FirstVoteReject' | 'ProposalsLimitReached'; } - /** @name PalletMultisigProposalDetails (542) */ + /** @name PalletMultisigProposalDetails (537) */ export interface PalletMultisigProposalDetails extends Struct { readonly approvals: u64; readonly rejections: u64; @@ -4087,7 +4065,7 @@ declare module '@polkadot/types/lookup' { readonly autoClose: bool; } - /** @name PalletMultisigProposalStatus (543) */ + /** @name PalletMultisigProposalStatus (538) */ export interface PalletMultisigProposalStatus extends Enum { readonly isInvalid: boolean; readonly isActiveOrExpired: boolean; @@ -4097,7 +4075,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Invalid' | 'ActiveOrExpired' | 'ExecutionSuccessful' | 'ExecutionFailed' | 'Rejected'; } - /** @name PalletMultisigError (544) */ + /** @name PalletMultisigError (540) */ export interface PalletMultisigError extends Enum { readonly isCddMissing: boolean; readonly isProposalMissing: boolean; @@ -4115,6 +4093,7 @@ declare module '@polkadot/types/lookup' { readonly isChangeNotAllowed: boolean; readonly isSignerAlreadyLinkedToMultisig: boolean; readonly isSignerAlreadyLinkedToIdentity: boolean; + readonly isSignerSameAsMultisig: boolean; readonly isMissingCurrentIdentity: boolean; readonly isNotPrimaryKey: boolean; readonly isProposalAlreadyRejected: boolean; @@ -4123,10 +4102,10 @@ declare module '@polkadot/types/lookup' { readonly isMultisigMissingIdentity: boolean; readonly isFailedToSchedule: boolean; readonly isTooManySigners: boolean; - readonly type: 'CddMissing' | 'ProposalMissing' | 'DecodingError' | 'NoSigners' | 'RequiredSignaturesOutOfBounds' | 'NotASigner' | 'NoSuchMultisig' | 'NotEnoughSigners' | 'NonceOverflow' | 'AlreadyVoted' | 'AlreadyASigner' | 'FailedToChargeFee' | 'IdentityNotCreator' | 'ChangeNotAllowed' | 'SignerAlreadyLinkedToMultisig' | 'SignerAlreadyLinkedToIdentity' | 'MissingCurrentIdentity' | 'NotPrimaryKey' | 'ProposalAlreadyRejected' | 'ProposalExpired' | 'ProposalAlreadyExecuted' | 'MultisigMissingIdentity' | 'FailedToSchedule' | 'TooManySigners'; + readonly type: 'CddMissing' | 'ProposalMissing' | 'DecodingError' | 'NoSigners' | 'RequiredSignaturesOutOfBounds' | 'NotASigner' | 'NoSuchMultisig' | 'NotEnoughSigners' | 'NonceOverflow' | 'AlreadyVoted' | 'AlreadyASigner' | 'FailedToChargeFee' | 'IdentityNotCreator' | 'ChangeNotAllowed' | 'SignerAlreadyLinkedToMultisig' | 'SignerAlreadyLinkedToIdentity' | 'SignerSameAsMultisig' | 'MissingCurrentIdentity' | 'NotPrimaryKey' | 'ProposalAlreadyRejected' | 'ProposalExpired' | 'ProposalAlreadyExecuted' | 'MultisigMissingIdentity' | 'FailedToSchedule' | 'TooManySigners'; } - /** @name PalletBridgeBridgeTxDetail (546) */ + /** @name PalletBridgeBridgeTxDetail (542) */ export interface PalletBridgeBridgeTxDetail extends Struct { readonly amount: u128; readonly status: PalletBridgeBridgeTxStatus; @@ -4134,7 +4113,7 @@ declare module '@polkadot/types/lookup' { readonly txHash: H256; } - /** @name PalletBridgeBridgeTxStatus (547) */ + /** @name PalletBridgeBridgeTxStatus (543) */ export interface PalletBridgeBridgeTxStatus extends Enum { readonly isAbsent: boolean; readonly isPending: boolean; @@ -4145,7 +4124,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Absent' | 'Pending' | 'Frozen' | 'Timelocked' | 'Handled'; } - /** @name PalletBridgeError (550) */ + /** @name PalletBridgeError (546) */ export interface PalletBridgeError extends Enum { readonly isControllerNotSet: boolean; readonly isBadCaller: boolean; @@ -4163,7 +4142,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'ControllerNotSet' | 'BadCaller' | 'BadAdmin' | 'NoValidCdd' | 'ProposalAlreadyHandled' | 'Unauthorized' | 'Frozen' | 'NotFrozen' | 'FrozenTx' | 'BridgeLimitReached' | 'Overflow' | 'DivisionByZero' | 'TimelockedTx'; } - /** @name PalletStakingStakingLedger (551) */ + /** @name PalletStakingStakingLedger (547) */ export interface PalletStakingStakingLedger extends Struct { readonly stash: AccountId32; readonly total: Compact; @@ -4172,32 +4151,32 @@ declare module '@polkadot/types/lookup' { readonly claimedRewards: Vec; } - /** @name PalletStakingUnlockChunk (553) */ + /** @name PalletStakingUnlockChunk (549) */ export interface PalletStakingUnlockChunk extends Struct { readonly value: Compact; readonly era: Compact; } - /** @name PalletStakingNominations (554) */ + /** @name PalletStakingNominations (550) */ export interface PalletStakingNominations extends Struct { readonly targets: Vec; readonly submittedIn: u32; readonly suppressed: bool; } - /** @name PalletStakingActiveEraInfo (555) */ + /** @name PalletStakingActiveEraInfo (551) */ export interface PalletStakingActiveEraInfo extends Struct { readonly index: u32; readonly start: Option; } - /** @name PalletStakingEraRewardPoints (557) */ + /** @name PalletStakingEraRewardPoints (553) */ export interface PalletStakingEraRewardPoints extends Struct { readonly total: u32; readonly individual: BTreeMap; } - /** @name PalletStakingForcing (560) */ + /** @name PalletStakingForcing (556) */ export interface PalletStakingForcing extends Enum { readonly isNotForcing: boolean; readonly isForceNew: boolean; @@ -4206,7 +4185,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'NotForcing' | 'ForceNew' | 'ForceNone' | 'ForceAlways'; } - /** @name PalletStakingUnappliedSlash (562) */ + /** @name PalletStakingUnappliedSlash (558) */ export interface PalletStakingUnappliedSlash extends Struct { readonly validator: AccountId32; readonly own: u128; @@ -4215,7 +4194,7 @@ declare module '@polkadot/types/lookup' { readonly payout: u128; } - /** @name PalletStakingSlashingSlashingSpans (566) */ + /** @name PalletStakingSlashingSlashingSpans (562) */ export interface PalletStakingSlashingSlashingSpans extends Struct { readonly spanIndex: u32; readonly lastStart: u32; @@ -4223,20 +4202,20 @@ declare module '@polkadot/types/lookup' { readonly prior: Vec; } - /** @name PalletStakingSlashingSpanRecord (567) */ + /** @name PalletStakingSlashingSpanRecord (563) */ export interface PalletStakingSlashingSpanRecord extends Struct { readonly slashed: u128; readonly paidOut: u128; } - /** @name PalletStakingElectionResult (568) */ + /** @name PalletStakingElectionResult (564) */ export interface PalletStakingElectionResult extends Struct { readonly electedStashes: Vec; readonly exposures: Vec>; readonly compute: PalletStakingElectionCompute; } - /** @name PalletStakingElectionStatus (569) */ + /** @name PalletStakingElectionStatus (565) */ export interface PalletStakingElectionStatus extends Enum { readonly isClosed: boolean; readonly isOpen: boolean; @@ -4244,13 +4223,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Closed' | 'Open'; } - /** @name PalletStakingPermissionedIdentityPrefs (570) */ + /** @name PalletStakingPermissionedIdentityPrefs (566) */ export interface PalletStakingPermissionedIdentityPrefs extends Struct { readonly intendedCount: u32; readonly runningCount: u32; } - /** @name PalletStakingReleases (571) */ + /** @name PalletStakingReleases (567) */ export interface PalletStakingReleases extends Enum { readonly isV100Ancient: boolean; readonly isV200: boolean; @@ -4263,7 +4242,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'V100Ancient' | 'V200' | 'V300' | 'V400' | 'V500' | 'V600' | 'V601' | 'V700'; } - /** @name PalletStakingError (572) */ + /** @name PalletStakingError (568) */ export interface PalletStakingError extends Enum { readonly isNotController: boolean; readonly isNotStash: boolean; @@ -4310,16 +4289,16 @@ declare module '@polkadot/types/lookup' { readonly type: 'NotController' | 'NotStash' | 'AlreadyBonded' | 'AlreadyPaired' | 'EmptyTargets' | 'InvalidSlashIndex' | 'InsufficientValue' | 'NoMoreChunks' | 'NoUnlockChunk' | 'FundedTarget' | 'InvalidEraToReward' | 'NotSortedAndUnique' | 'AlreadyClaimed' | 'OffchainElectionEarlySubmission' | 'OffchainElectionWeakSubmission' | 'SnapshotUnavailable' | 'OffchainElectionBogusWinnerCount' | 'OffchainElectionBogusWinner' | 'OffchainElectionBogusCompact' | 'OffchainElectionBogusNominator' | 'OffchainElectionBogusNomination' | 'OffchainElectionSlashedNomination' | 'OffchainElectionBogusSelfVote' | 'OffchainElectionBogusEdge' | 'OffchainElectionBogusScore' | 'OffchainElectionBogusElectionSize' | 'CallNotAllowed' | 'IncorrectSlashingSpans' | 'AlreadyExists' | 'NotExists' | 'NoChange' | 'InvalidValidatorIdentity' | 'InvalidValidatorCommission' | 'StashIdentityDoesNotExist' | 'StashIdentityNotPermissioned' | 'StashIdentityNotCDDed' | 'HitIntendedValidatorCount' | 'IntendedCountIsExceedingConsensusLimit' | 'BondTooSmall' | 'BadState' | 'TooManyTargets' | 'BadTarget'; } - /** @name SpStakingOffenceOffenceDetails (573) */ + /** @name SpStakingOffenceOffenceDetails (569) */ export interface SpStakingOffenceOffenceDetails extends Struct { readonly offender: ITuple<[AccountId32, PalletStakingExposure]>; readonly reporters: Vec; } - /** @name SpCoreCryptoKeyTypeId (578) */ + /** @name SpCoreCryptoKeyTypeId (574) */ export interface SpCoreCryptoKeyTypeId extends U8aFixed {} - /** @name PalletSessionError (579) */ + /** @name PalletSessionError (575) */ export interface PalletSessionError extends Enum { readonly isInvalidProof: boolean; readonly isNoAssociatedValidatorId: boolean; @@ -4329,7 +4308,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'InvalidProof' | 'NoAssociatedValidatorId' | 'DuplicatedKey' | 'NoKeys' | 'NoAccount'; } - /** @name PalletGrandpaStoredState (580) */ + /** @name PalletGrandpaStoredState (576) */ export interface PalletGrandpaStoredState extends Enum { readonly isLive: boolean; readonly isPendingPause: boolean; @@ -4346,7 +4325,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Live' | 'PendingPause' | 'Paused' | 'PendingResume'; } - /** @name PalletGrandpaStoredPendingChange (581) */ + /** @name PalletGrandpaStoredPendingChange (577) */ export interface PalletGrandpaStoredPendingChange extends Struct { readonly scheduledAt: u32; readonly delay: u32; @@ -4354,7 +4333,7 @@ declare module '@polkadot/types/lookup' { readonly forced: Option; } - /** @name PalletGrandpaError (583) */ + /** @name PalletGrandpaError (579) */ export interface PalletGrandpaError extends Enum { readonly isPauseFailed: boolean; readonly isResumeFailed: boolean; @@ -4366,32 +4345,32 @@ declare module '@polkadot/types/lookup' { readonly type: 'PauseFailed' | 'ResumeFailed' | 'ChangePending' | 'TooSoon' | 'InvalidKeyOwnershipProof' | 'InvalidEquivocationProof' | 'DuplicateOffenceReport'; } - /** @name PalletImOnlineBoundedOpaqueNetworkState (587) */ + /** @name PalletImOnlineBoundedOpaqueNetworkState (583) */ export interface PalletImOnlineBoundedOpaqueNetworkState extends Struct { readonly peerId: Bytes; readonly externalAddresses: Vec; } - /** @name PalletImOnlineError (591) */ + /** @name PalletImOnlineError (587) */ export interface PalletImOnlineError extends Enum { readonly isInvalidKey: boolean; readonly isDuplicatedHeartbeat: boolean; readonly type: 'InvalidKey' | 'DuplicatedHeartbeat'; } - /** @name PalletSudoError (592) */ + /** @name PalletSudoError (588) */ export interface PalletSudoError extends Enum { readonly isRequireSudo: boolean; readonly type: 'RequireSudo'; } - /** @name PalletAssetTickerRegistration (593) */ + /** @name PalletAssetTickerRegistration (589) */ export interface PalletAssetTickerRegistration extends Struct { readonly owner: PolymeshPrimitivesIdentityId; readonly expiry: Option; } - /** @name PalletAssetSecurityToken (594) */ + /** @name PalletAssetSecurityToken (590) */ export interface PalletAssetSecurityToken extends Struct { readonly totalSupply: u128; readonly ownerDid: PolymeshPrimitivesIdentityId; @@ -4399,7 +4378,7 @@ declare module '@polkadot/types/lookup' { readonly assetType: PolymeshPrimitivesAssetAssetType; } - /** @name PalletAssetAssetOwnershipRelation (598) */ + /** @name PalletAssetAssetOwnershipRelation (594) */ export interface PalletAssetAssetOwnershipRelation extends Enum { readonly isNotOwned: boolean; readonly isTickerOwned: boolean; @@ -4407,13 +4386,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'NotOwned' | 'TickerOwned' | 'AssetOwned'; } - /** @name PalletAssetClassicTickerRegistration (600) */ + /** @name PalletAssetClassicTickerRegistration (596) */ export interface PalletAssetClassicTickerRegistration extends Struct { readonly ethOwner: PolymeshPrimitivesEthereumEthereumAddress; readonly isCreated: bool; } - /** @name PalletAssetError (606) */ + /** @name PalletAssetError (602) */ export interface PalletAssetError extends Enum { readonly isUnauthorized: boolean; readonly isAlreadyArchived: boolean; @@ -4456,7 +4435,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unauthorized' | 'AlreadyArchived' | 'AlreadyUnArchived' | 'ExtensionAlreadyPresent' | 'AssetAlreadyCreated' | 'TickerTooLong' | 'TickerNotAscii' | 'TickerAlreadyRegistered' | 'TotalSupplyAboveLimit' | 'NoSuchAsset' | 'AlreadyFrozen' | 'NotAnOwner' | 'BalanceOverflow' | 'TotalSupplyOverflow' | 'InvalidGranularity' | 'NotFrozen' | 'InvalidTransfer' | 'InsufficientBalance' | 'AssetAlreadyDivisible' | 'MaximumTMExtensionLimitReached' | 'IncompatibleExtensionVersion' | 'InvalidEthereumSignature' | 'NoSuchClassicTicker' | 'TickerRegistrationExpired' | 'SenderSameAsReceiver' | 'NoSuchDoc' | 'MaxLengthOfAssetNameExceeded' | 'FundingRoundNameMaxLengthExceeded' | 'InvalidAssetIdentifier' | 'InvestorUniquenessClaimNotAllowed' | 'InvalidCustomAssetTypeId' | 'AssetMetadataNameMaxLengthExceeded' | 'AssetMetadataValueMaxLengthExceeded' | 'AssetMetadataTypeDefMaxLengthExceeded' | 'AssetMetadataKeyIsMissing' | 'AssetMetadataValueIsLocked' | 'AssetMetadataLocalKeyAlreadyExists' | 'AssetMetadataGlobalKeyAlreadyExists'; } - /** @name PalletCorporateActionsDistributionError (609) */ + /** @name PalletCorporateActionsDistributionError (605) */ export interface PalletCorporateActionsDistributionError extends Enum { readonly isCaNotBenefit: boolean; readonly isAlreadyExists: boolean; @@ -4475,7 +4454,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'CaNotBenefit' | 'AlreadyExists' | 'ExpiryBeforePayment' | 'DistributingAsset' | 'HolderAlreadyPaid' | 'NoSuchDistribution' | 'CannotClaimBeforeStart' | 'CannotClaimAfterExpiry' | 'BalancePerShareProductOverflowed' | 'NotDistributionCreator' | 'AlreadyReclaimed' | 'NotExpired' | 'DistributionStarted' | 'InsufficientRemainingAmount'; } - /** @name PalletAssetCheckpointError (616) */ + /** @name PalletAssetCheckpointError (612) */ export interface PalletAssetCheckpointError extends Enum { readonly isNoSuchSchedule: boolean; readonly isScheduleNotRemovable: boolean; @@ -4485,13 +4464,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'NoSuchSchedule' | 'ScheduleNotRemovable' | 'FailedToComputeNextCheckpoint' | 'ScheduleDurationTooShort' | 'SchedulesTooComplex'; } - /** @name PolymeshPrimitivesComplianceManagerAssetCompliance (617) */ + /** @name PolymeshPrimitivesComplianceManagerAssetCompliance (613) */ export interface PolymeshPrimitivesComplianceManagerAssetCompliance extends Struct { readonly paused: bool; readonly requirements: Vec; } - /** @name PalletComplianceManagerError (619) */ + /** @name PalletComplianceManagerError (615) */ export interface PalletComplianceManagerError extends Enum { readonly isUnauthorized: boolean; readonly isDidNotExist: boolean; @@ -4502,7 +4481,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unauthorized' | 'DidNotExist' | 'InvalidComplianceRequirementId' | 'IncorrectOperationOnTrustedIssuer' | 'DuplicateComplianceRequirements' | 'ComplianceRequirementTooComplex'; } - /** @name PalletCorporateActionsError (622) */ + /** @name PalletCorporateActionsError (618) */ export interface PalletCorporateActionsError extends Enum { readonly isAuthNotCAATransfer: boolean; readonly isDetailsTooLong: boolean; @@ -4519,7 +4498,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'AuthNotCAATransfer' | 'DetailsTooLong' | 'DuplicateDidTax' | 'TooManyDidTaxes' | 'TooManyTargetIds' | 'NoSuchCheckpointId' | 'NoSuchCA' | 'NoRecordDate' | 'RecordDateAfterStart' | 'DeclDateAfterRecordDate' | 'DeclDateInFuture' | 'NotTargetedByCA'; } - /** @name PalletCorporateActionsBallotError (624) */ + /** @name PalletCorporateActionsBallotError (620) */ export interface PalletCorporateActionsBallotError extends Enum { readonly isCaNotNotice: boolean; readonly isAlreadyExists: boolean; @@ -4538,13 +4517,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'CaNotNotice' | 'AlreadyExists' | 'NoSuchBallot' | 'StartAfterEnd' | 'NowAfterEnd' | 'NumberOfChoicesOverflow' | 'VotingAlreadyStarted' | 'VotingNotStarted' | 'VotingAlreadyEnded' | 'WrongVoteCount' | 'InsufficientVotes' | 'NoSuchRCVFallback' | 'RcvSelfCycle' | 'RcvNotAllowed'; } - /** @name PalletPermissionsError (625) */ + /** @name PalletPermissionsError (621) */ export interface PalletPermissionsError extends Enum { readonly isUnauthorizedCaller: boolean; readonly type: 'UnauthorizedCaller'; } - /** @name PalletPipsPipsMetadata (626) */ + /** @name PalletPipsPipsMetadata (622) */ export interface PalletPipsPipsMetadata extends Struct { readonly id: u32; readonly url: Option; @@ -4554,13 +4533,13 @@ declare module '@polkadot/types/lookup' { readonly expiry: PolymeshCommonUtilitiesMaybeBlock; } - /** @name PalletPipsDepositInfo (628) */ + /** @name PalletPipsDepositInfo (624) */ export interface PalletPipsDepositInfo extends Struct { readonly owner: AccountId32; readonly amount: u128; } - /** @name PalletPipsPip (629) */ + /** @name PalletPipsPip (625) */ export interface PalletPipsPip extends Struct { readonly id: u32; readonly proposal: Call; @@ -4568,7 +4547,7 @@ declare module '@polkadot/types/lookup' { readonly proposer: PalletPipsProposer; } - /** @name PalletPipsVotingResult (630) */ + /** @name PalletPipsVotingResult (626) */ export interface PalletPipsVotingResult extends Struct { readonly ayesCount: u32; readonly ayesStake: u128; @@ -4576,17 +4555,17 @@ declare module '@polkadot/types/lookup' { readonly naysStake: u128; } - /** @name PalletPipsVote (631) */ + /** @name PalletPipsVote (627) */ export interface PalletPipsVote extends ITuple<[bool, u128]> {} - /** @name PalletPipsSnapshotMetadata (632) */ + /** @name PalletPipsSnapshotMetadata (628) */ export interface PalletPipsSnapshotMetadata extends Struct { readonly createdAt: u32; readonly madeBy: AccountId32; readonly id: u32; } - /** @name PalletPipsError (634) */ + /** @name PalletPipsError (630) */ export interface PalletPipsError extends Enum { readonly isRescheduleNotByReleaseCoordinator: boolean; readonly isNotFromCommunity: boolean; @@ -4609,7 +4588,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'RescheduleNotByReleaseCoordinator' | 'NotFromCommunity' | 'NotByCommittee' | 'TooManyActivePips' | 'IncorrectDeposit' | 'InsufficientDeposit' | 'NoSuchProposal' | 'NotACommitteeMember' | 'InvalidFutureBlockNumber' | 'NumberOfVotesExceeded' | 'StakeAmountOfVotesExceeded' | 'MissingCurrentIdentity' | 'IncorrectProposalState' | 'CannotSkipPip' | 'SnapshotResultTooLarge' | 'SnapshotIdMismatch' | 'ScheduledProposalDoesntExist' | 'ProposalNotInScheduledState'; } - /** @name PalletPortfolioError (640) */ + /** @name PalletPortfolioError (636) */ export interface PalletPortfolioError extends Enum { readonly isPortfolioDoesNotExist: boolean; readonly isInsufficientPortfolioBalance: boolean; @@ -4623,7 +4602,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'PortfolioDoesNotExist' | 'InsufficientPortfolioBalance' | 'DestinationIsSamePortfolio' | 'PortfolioNameAlreadyInUse' | 'SecondaryKeyNotAuthorizedForPortfolio' | 'UnauthorizedCustodian' | 'InsufficientTokensLocked' | 'PortfolioNotEmpty' | 'DifferentIdentityPortfolios'; } - /** @name PalletProtocolFeeError (641) */ + /** @name PalletProtocolFeeError (637) */ export interface PalletProtocolFeeError extends Enum { readonly isInsufficientAccountBalance: boolean; readonly isUnHandledImbalances: boolean; @@ -4631,7 +4610,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'InsufficientAccountBalance' | 'UnHandledImbalances' | 'InsufficientSubsidyBalance'; } - /** @name PalletSchedulerScheduledV2 (644) */ + /** @name PalletSchedulerScheduledV2 (640) */ export interface PalletSchedulerScheduledV2 extends Struct { readonly maybeId: Option; readonly priority: u8; @@ -4640,7 +4619,7 @@ declare module '@polkadot/types/lookup' { readonly origin: PolymeshRuntimeDevelopRuntimeOriginCaller; } - /** @name PolymeshRuntimeDevelopRuntimeOriginCaller (645) */ + /** @name PolymeshRuntimeDevelopRuntimeOriginCaller (641) */ export interface PolymeshRuntimeDevelopRuntimeOriginCaller extends Enum { readonly isSystem: boolean; readonly asSystem: FrameSystemRawOrigin; @@ -4654,7 +4633,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'System' | 'Void' | 'PolymeshCommittee' | 'TechnicalCommittee' | 'UpgradeCommittee'; } - /** @name FrameSystemRawOrigin (646) */ + /** @name FrameSystemRawOrigin (642) */ export interface FrameSystemRawOrigin extends Enum { readonly isRoot: boolean; readonly isSigned: boolean; @@ -4663,35 +4642,35 @@ declare module '@polkadot/types/lookup' { readonly type: 'Root' | 'Signed' | 'None'; } - /** @name PalletCommitteeRawOriginInstance1 (647) */ + /** @name PalletCommitteeRawOriginInstance1 (643) */ export interface PalletCommitteeRawOriginInstance1 extends Enum { readonly isEndorsed: boolean; readonly type: 'Endorsed'; } - /** @name PalletCommitteeRawOriginInstance3 (648) */ + /** @name PalletCommitteeRawOriginInstance3 (644) */ export interface PalletCommitteeRawOriginInstance3 extends Enum { readonly isEndorsed: boolean; readonly type: 'Endorsed'; } - /** @name PalletCommitteeRawOriginInstance4 (649) */ + /** @name PalletCommitteeRawOriginInstance4 (645) */ export interface PalletCommitteeRawOriginInstance4 extends Enum { readonly isEndorsed: boolean; readonly type: 'Endorsed'; } - /** @name SpCoreVoid (650) */ + /** @name SpCoreVoid (646) */ export type SpCoreVoid = Null; - /** @name PalletSchedulerReleases (651) */ + /** @name PalletSchedulerReleases (647) */ export interface PalletSchedulerReleases extends Enum { readonly isV1: boolean; readonly isV2: boolean; readonly type: 'V1' | 'V2'; } - /** @name PalletSchedulerError (652) */ + /** @name PalletSchedulerError (648) */ export interface PalletSchedulerError extends Enum { readonly isFailedToSchedule: boolean; readonly isNotFound: boolean; @@ -4700,13 +4679,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange'; } - /** @name PalletSettlementVenue (653) */ + /** @name PalletSettlementVenue (649) */ export interface PalletSettlementVenue extends Struct { readonly creator: PolymeshPrimitivesIdentityId; readonly venueType: PalletSettlementVenueType; } - /** @name PalletSettlementInstruction (656) */ + /** @name PalletSettlementInstruction (652) */ export interface PalletSettlementInstruction extends Struct { readonly instructionId: u64; readonly venueId: u64; @@ -4717,7 +4696,7 @@ declare module '@polkadot/types/lookup' { readonly valueDate: Option; } - /** @name PalletSettlementInstructionStatus (657) */ + /** @name PalletSettlementInstructionStatus (653) */ export interface PalletSettlementInstructionStatus extends Enum { readonly isUnknown: boolean; readonly isPending: boolean; @@ -4725,7 +4704,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unknown' | 'Pending' | 'Failed'; } - /** @name PalletSettlementLegStatus (659) */ + /** @name PalletSettlementLegStatus (655) */ export interface PalletSettlementLegStatus extends Enum { readonly isPendingTokenLock: boolean; readonly isExecutionPending: boolean; @@ -4734,7 +4713,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'PendingTokenLock' | 'ExecutionPending' | 'ExecutionToBeSkipped'; } - /** @name PalletSettlementAffirmationStatus (661) */ + /** @name PalletSettlementAffirmationStatus (657) */ export interface PalletSettlementAffirmationStatus extends Enum { readonly isUnknown: boolean; readonly isPending: boolean; @@ -4742,7 +4721,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unknown' | 'Pending' | 'Affirmed'; } - /** @name PalletSettlementError (665) */ + /** @name PalletSettlementError (661) */ export interface PalletSettlementError extends Enum { readonly isInvalidVenue: boolean; readonly isUnauthorized: boolean; @@ -4772,19 +4751,19 @@ declare module '@polkadot/types/lookup' { readonly type: 'InvalidVenue' | 'Unauthorized' | 'NoPendingAffirm' | 'InstructionNotAffirmed' | 'InstructionNotPending' | 'InstructionNotFailed' | 'LegNotPending' | 'UnauthorizedSigner' | 'ReceiptAlreadyClaimed' | 'ReceiptNotClaimed' | 'UnauthorizedVenue' | 'FailedToLockTokens' | 'InstructionFailed' | 'InstructionDatesInvalid' | 'InstructionSettleBlockPassed' | 'InvalidSignature' | 'SameSenderReceiver' | 'PortfolioMismatch' | 'SettleOnPastBlock' | 'NoPortfolioProvided' | 'UnexpectedAffirmationStatus' | 'FailedToSchedule' | 'LegCountTooSmall' | 'UnknownInstruction' | 'InstructionHasTooManyLegs'; } - /** @name PolymeshPrimitivesStatisticsStat1stKey (667) */ + /** @name PolymeshPrimitivesStatisticsStat1stKey (663) */ export interface PolymeshPrimitivesStatisticsStat1stKey extends Struct { readonly asset: PolymeshPrimitivesStatisticsAssetScope; readonly statType: PolymeshPrimitivesStatisticsStatType; } - /** @name PolymeshPrimitivesTransferComplianceAssetTransferCompliance (668) */ + /** @name PolymeshPrimitivesTransferComplianceAssetTransferCompliance (664) */ export interface PolymeshPrimitivesTransferComplianceAssetTransferCompliance extends Struct { readonly paused: bool; readonly requirements: BTreeSetTransferCondition; } - /** @name PalletStatisticsError (671) */ + /** @name PalletStatisticsError (667) */ export interface PalletStatisticsError extends Enum { readonly isInvalidTransfer: boolean; readonly isStatTypeMissing: boolean; @@ -4795,7 +4774,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'InvalidTransfer' | 'StatTypeMissing' | 'StatTypeNeededByTransferCondition' | 'CannotRemoveStatTypeInUse' | 'StatTypeLimitReached' | 'TransferConditionLimitReached'; } - /** @name PalletStoError (673) */ + /** @name PalletStoError (669) */ export interface PalletStoError extends Enum { readonly isUnauthorized: boolean; readonly isOverflow: boolean; @@ -4812,13 +4791,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unauthorized' | 'Overflow' | 'InsufficientTokensRemaining' | 'FundraiserNotFound' | 'FundraiserNotLive' | 'FundraiserClosed' | 'FundraiserExpired' | 'InvalidVenue' | 'InvalidPriceTiers' | 'InvalidOfferingWindow' | 'MaxPriceExceeded' | 'InvestmentAmountTooLow'; } - /** @name PalletTreasuryError (674) */ + /** @name PalletTreasuryError (670) */ export interface PalletTreasuryError extends Enum { readonly isInsufficientBalance: boolean; readonly type: 'InsufficientBalance'; } - /** @name PalletUtilityError (675) */ + /** @name PalletUtilityError (671) */ export interface PalletUtilityError extends Enum { readonly isInvalidSignature: boolean; readonly isTargetCddMissing: boolean; @@ -4826,14 +4805,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'InvalidSignature' | 'TargetCddMissing' | 'InvalidNonce'; } - /** @name PalletBaseError (676) */ + /** @name PalletBaseError (672) */ export interface PalletBaseError extends Enum { readonly isTooLong: boolean; readonly isCounterOverflow: boolean; readonly type: 'TooLong' | 'CounterOverflow'; } - /** @name PalletExternalAgentsError (678) */ + /** @name PalletExternalAgentsError (674) */ export interface PalletExternalAgentsError extends Enum { readonly isNoSuchAG: boolean; readonly isUnauthorizedAgent: boolean; @@ -4844,13 +4823,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'NoSuchAG' | 'UnauthorizedAgent' | 'AlreadyAnAgent' | 'NotAnAgent' | 'RemovingLastFullAgent' | 'SecondaryKeyNotAuthorizedForAsset'; } - /** @name PalletRelayerSubsidy (679) */ + /** @name PalletRelayerSubsidy (675) */ export interface PalletRelayerSubsidy extends Struct { readonly payingKey: AccountId32; readonly remaining: u128; } - /** @name PalletRelayerError (680) */ + /** @name PalletRelayerError (676) */ export interface PalletRelayerError extends Enum { readonly isUserKeyCddMissing: boolean; readonly isPayingKeyCddMissing: boolean; @@ -4862,7 +4841,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'UserKeyCddMissing' | 'PayingKeyCddMissing' | 'NoPayingKey' | 'NotPayingKey' | 'NotAuthorizedForPayingKey' | 'NotAuthorizedForUserKey' | 'Overflow'; } - /** @name PalletRewardsError (681) */ + /** @name PalletRewardsError (677) */ export interface PalletRewardsError extends Enum { readonly isUnknownItnAddress: boolean; readonly isItnRewardAlreadyClaimed: boolean; @@ -4871,34 +4850,34 @@ declare module '@polkadot/types/lookup' { readonly type: 'UnknownItnAddress' | 'ItnRewardAlreadyClaimed' | 'InvalidSignature' | 'UnableToCovertBalance'; } - /** @name PalletTestUtilsError (682) */ + /** @name PalletTestUtilsError (678) */ export type PalletTestUtilsError = Null; - /** @name FrameSystemExtensionsCheckSpecVersion (685) */ + /** @name FrameSystemExtensionsCheckSpecVersion (681) */ export type FrameSystemExtensionsCheckSpecVersion = Null; - /** @name FrameSystemExtensionsCheckTxVersion (686) */ + /** @name FrameSystemExtensionsCheckTxVersion (682) */ export type FrameSystemExtensionsCheckTxVersion = Null; - /** @name FrameSystemExtensionsCheckGenesis (687) */ + /** @name FrameSystemExtensionsCheckGenesis (683) */ export type FrameSystemExtensionsCheckGenesis = Null; - /** @name FrameSystemExtensionsCheckNonce (690) */ + /** @name FrameSystemExtensionsCheckNonce (686) */ export interface FrameSystemExtensionsCheckNonce extends Compact {} - /** @name PolymeshExtensionsCheckWeight (691) */ + /** @name PolymeshExtensionsCheckWeight (687) */ export interface PolymeshExtensionsCheckWeight extends FrameSystemExtensionsCheckWeight {} - /** @name FrameSystemExtensionsCheckWeight (692) */ + /** @name FrameSystemExtensionsCheckWeight (688) */ export type FrameSystemExtensionsCheckWeight = Null; - /** @name PalletTransactionPaymentChargeTransactionPayment (693) */ + /** @name PalletTransactionPaymentChargeTransactionPayment (689) */ export interface PalletTransactionPaymentChargeTransactionPayment extends Compact {} - /** @name PalletPermissionsStoreCallMetadata (694) */ + /** @name PalletPermissionsStoreCallMetadata (690) */ export type PalletPermissionsStoreCallMetadata = Null; - /** @name PolymeshRuntimeDevelopRuntime (695) */ + /** @name PolymeshRuntimeDevelopRuntime (691) */ export type PolymeshRuntimeDevelopRuntime = Null; } // declare module diff --git a/scripts/cli/src/types.ts b/scripts/cli/src/types.ts index fa023d2a19..09cc16fb5a 100644 --- a/scripts/cli/src/types.ts +++ b/scripts/cli/src/types.ts @@ -143,12 +143,6 @@ export type PalletPermissions = { dispatchable_names: SubsetRestriction; }; -export type LegacyPalletPermissions = { - pallet_name: PalletName; - total: Boolean; - dispatchable_names: DispatchableName[]; -}; - export type PortfolioId = { did: IdentityId; kind: PortfolioKind; diff --git a/scripts/cli/src/util/init.ts b/scripts/cli/src/util/init.ts index bcdaeaec3a..e1f248d3a2 100644 --- a/scripts/cli/src/util/init.ts +++ b/scripts/cli/src/util/init.ts @@ -218,8 +218,16 @@ export async function keyToIdentityIds( accountKey: AccountId | KeyringPair["publicKey"] ): Promise { const api = await ApiSingleton.getInstance(); - let account_did = await api.query.identity.keyToIdentityIds(accountKey); - return account_did; + let opt_rec = await api.query.identity.keyRecords(accountKey); + if (opt_rec.isSome) { + const rec = opt_rec.unwrap(); + if (rec.isPrimaryKey) { + return rec.asPrimaryKey; + } else if (rec.isSecondaryKey) { + return rec.asSecondaryKey[0]; + } + } + return (0 as unknown); } // Returns the asset did diff --git a/scripts/cli/util/init.mjs b/scripts/cli/util/init.mjs index d63e30cbb4..9c62a55f23 100644 --- a/scripts/cli/util/init.mjs +++ b/scripts/cli/util/init.mjs @@ -237,8 +237,16 @@ const createIdentitiesWithExpiry = async function ( // Fetches DID that belongs to the Account Key async function keyToIdentityIds(api, accountKey) { - let account_did = await api.query.identity.keyToIdentityIds(accountKey); - return account_did.toHuman(); + let opt_rec = await api.query.identity.keyRecords(accountKey); + if (opt_rec.isSome) { + const rec = opt_rec.unwrap(); + if (rec.isPrimaryKey) { + return rec.asPrimaryKey.toHuman(); + } else if (rec.isPrimaryKey) { + return rec.asSecondaryKey[0].toHuman(); + } + } + return ""; } // Sends transfer_amount to accounts[] from alice diff --git a/src/chain_spec.rs b/src/chain_spec.rs index 96ac5741e8..a5b52ac43b 100644 --- a/src/chain_spec.rs +++ b/src/chain_spec.rs @@ -445,12 +445,7 @@ fn dev_genesis_processed_data( let mut complete_txs: Vec<_> = key_bridge_locks .iter() .cloned() - .zip( - identity - .secondary_keys - .iter() - .map(|sk| sk.signer.as_account().unwrap().clone()), - ) + .zip(identity.secondary_keys.iter().map(|sk| sk.key.clone())) .map( |( BridgeLockId { diff --git a/src/service.rs b/src/service.rs index 7775511aeb..e1ee5a929e 100644 --- a/src/service.rs +++ b/src/service.rs @@ -9,7 +9,7 @@ use futures::stream::StreamExt; use polymesh_node_rpc as node_rpc; pub use polymesh_primitives::{ crypto::native_schnorrkel, host_functions::native_rng::native_rng, AccountId, Balance, Block, - BlockNumber, Hash, IdentityId, Index as Nonce, Moment, SecondaryKey, Signatory, Ticker, + BlockNumber, Hash, IdentityId, Index as Nonce, Moment, Ticker, }; pub use polymesh_runtime_ci; pub use polymesh_runtime_develop; @@ -116,8 +116,6 @@ pub trait RuntimeApiCollection: IdentityId, Ticker, AccountId, - SecondaryKey, - Signatory, Moment, > + pallet_protocol_fee_rpc_runtime_api::ProtocolFeeApi + node_rpc_runtime_api::asset::AssetApi @@ -144,15 +142,8 @@ where //+ pallet_contracts_rpc_runtime_api::ContractsApi + pallet_staking_rpc_runtime_api::StakingApi + node_rpc_runtime_api::pips::PipsApi - + node_rpc_runtime_api::identity::IdentityApi< - Block, - IdentityId, - Ticker, - AccountId, - SecondaryKey, - Signatory, - Moment, - > + pallet_protocol_fee_rpc_runtime_api::ProtocolFeeApi + + node_rpc_runtime_api::identity::IdentityApi + + pallet_protocol_fee_rpc_runtime_api::ProtocolFeeApi + node_rpc_runtime_api::asset::AssetApi + pallet_group_rpc_runtime_api::GroupApi + node_rpc_runtime_api::compliance_manager::ComplianceManagerApi, From 1aa12cb32efaf31e1ddee65f58794245e99d7400 Mon Sep 17 00:00:00 2001 From: Joel Moore <47923231+JMoore96@users.noreply.github.com> Date: Mon, 25 Apr 2022 06:39:19 -0400 Subject: [PATCH 46/53] MESH-1817/ Allow capital distributions in the base asset (#1235) * minor change removing test case * removing all cases of DistributingAsset error * minor change to test * minor changes --- errors_schema.json | 1 - .../corporate-actions/src/distribution/mod.rs | 7 ------- .../tests/src/corporate_actions_test.rs | 18 +++++++++++------- 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/errors_schema.json b/errors_schema.json index fe433c5cbd..e617916d6a 100644 --- a/errors_schema.json +++ b/errors_schema.json @@ -315,7 +315,6 @@ "CANotBenefit", "AlreadyExists", "ExpiryBeforePayment", - "DistributingAsset", "HolderAlreadyPaid", "NoSuchDistribution", "CannotClaimBeforeStart", diff --git a/pallets/corporate-actions/src/distribution/mod.rs b/pallets/corporate-actions/src/distribution/mod.rs index 512d53170f..018d17175c 100644 --- a/pallets/corporate-actions/src/distribution/mod.rs +++ b/pallets/corporate-actions/src/distribution/mod.rs @@ -194,7 +194,6 @@ decl_module! { /// /// # Errors /// - `UnauthorizedAgent` if `origin` is not agent-permissioned for `ticker`. - /// - `DistributingAsset` if `ca_id.ticker == currency`. /// - `ExpiryBeforePayment` if `expires_at.unwrap() <= payment_at`. /// - `NoSuchCA` if `ca_id` does not identify an existing CA. /// - `NoRecordDate` if CA has no record date. @@ -386,9 +385,6 @@ decl_error! { /// A distributions provided expiry date was strictly before its payment date. /// In other words, everything to distribute would immediately be forfeited. ExpiryBeforePayment, - /// Currency that is distributed is the same as the CA's ticker. - /// Calling agent is attempting a form of stock split, which is not what the extrinsic is for. - DistributingAsset, /// The token holder has already been paid their benefit. HolderAlreadyPaid, /// A capital distribution doesn't exist for this CA. @@ -546,9 +542,6 @@ impl Module { payment_at: Moment, expires_at: Option, ) -> DispatchResult { - // Ensure CA's asset is distinct from the distributed currency. - ensure!(ca_id.ticker != currency, Error::::DistributingAsset); - // Ensure that any expiry date doesn't come before the payment date. ensure!( !expired(expires_at, payment_at), diff --git a/pallets/runtime/tests/src/corporate_actions_test.rs b/pallets/runtime/tests/src/corporate_actions_test.rs index 90473a64b1..22a4bf940c 100644 --- a/pallets/runtime/tests/src/corporate_actions_test.rs +++ b/pallets/runtime/tests/src/corporate_actions_test.rs @@ -1764,13 +1764,17 @@ fn dist_distribute_works() { Timestamp::set_timestamp(2); let id2 = dist_ca(owner, ticker, Some(2)).unwrap(); - - // Test same-asset logic. - assert_noop!( - Dist::distribute(owner.origin(), id2, None, ticker, 0, 0, 0, None), - DistError::DistributingAsset - ); - + let id3 = dist_ca(owner, ticker, Some(2)).unwrap(); + assert_ok!(Dist::distribute( + owner.origin(), + id3, + None, + ticker, + 0, + 0, + 5, + None + )); // Test expiry. for &(pay, expiry) in &[(5, 5), (6, 5)] { assert_noop!( From b3089c88da7d44185cd6a09793b0bdb24a886d9c Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Mon, 25 Apr 2022 22:46:53 +0800 Subject: [PATCH 47/53] MESH-1813 - reject invalid distributions (#1236) * Move logic into base_ prefixed functions. * Check if distribution amount or per_share is zero. * Update docs. * Docs improvement. Co-authored-by: Mazdak Farrokhzad * Don't use unsafe_ prefix. * Bump transaction_version for 5.0 release. Co-authored-by: Mazdak Farrokhzad --- .../corporate-actions/src/distribution/mod.rs | 152 +++++++++++++----- pallets/corporate-actions/src/lib.rs | 4 +- pallets/runtime/ci/src/runtime.rs | 2 +- pallets/runtime/develop/src/runtime.rs | 2 +- pallets/runtime/mainnet/src/runtime.rs | 2 +- pallets/runtime/testnet/src/runtime.rs | 2 +- .../tests/src/corporate_actions_test.rs | 68 +++++--- 7 files changed, 161 insertions(+), 71 deletions(-) diff --git a/pallets/corporate-actions/src/distribution/mod.rs b/pallets/corporate-actions/src/distribution/mod.rs index 018d17175c..06b746d33b 100644 --- a/pallets/corporate-actions/src/distribution/mod.rs +++ b/pallets/corporate-actions/src/distribution/mod.rs @@ -87,6 +87,7 @@ use polymesh_primitives::{ SecondaryKey, Ticker, }; use scale_info::TypeInfo; +use sp_runtime::traits::Zero; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; use sp_std::prelude::*; @@ -202,6 +203,8 @@ decl_module! { /// - `InsufficientPortfolioBalance` if `portfolio` has less than `amount` of `currency`. /// - `InsufficientBalance` if the protocol fee couldn't be charged. /// - `CANotBenefit` if the CA is not of kind PredictableBenefit/UnpredictableBenefit + /// - `DistributionAmountIsZero` if the `amount` is zero. + /// - `DistributionPerShareIsZero` if the `per_share` is zero. /// /// # Permissions /// * Asset @@ -217,15 +220,8 @@ decl_module! { payment_at: Moment, expires_at: Option, ) -> DispatchResult { - let PermissionedCallOriginData { - primary_did: agent, - secondary_key, - .. - } = >::ensure_agent_asset_perms(origin, ca_id.ticker)?; - - Self::unsafe_distribute( - agent, - secondary_key, + Self::base_distribute( + origin, ca_id, portfolio, currency, @@ -261,8 +257,7 @@ decl_module! { /// - Other errors can occur if the compliance manager rejects the transfer. #[weight = ::DistWeightInfo::claim(T::MaxTargetIds::get(), T::MaxDidWhts::get())] pub fn claim(origin, ca_id: CAId) { - let did = >::ensure_perms(origin)?; - Self::transfer_benefit(did.for_event(), did, ca_id)?; + Self::base_claim(origin, ca_id)?; } /// Push benefit of an ongoing distribution to the given `holder`. @@ -291,8 +286,7 @@ decl_module! { /// - Other errors can occur if the compliance manager rejects the transfer. #[weight = ::DistWeightInfo::push_benefit(T::MaxTargetIds::get(), T::MaxDidWhts::get())] pub fn push_benefit(origin, ca_id: CAId, holder: IdentityId) { - let agent = >::ensure_perms(origin, ca_id.ticker)?.for_event(); - Self::transfer_benefit(agent, holder, ca_id)?; + Self::base_push_benefit(origin, ca_id, holder)?; } /// Assuming a distribution has expired, @@ -308,27 +302,7 @@ decl_module! { /// - `NotExpired` if `now < expiry`. #[weight = ::DistWeightInfo::reclaim()] pub fn reclaim(origin, ca_id: CAId) { - // Ensure distribution is created, they haven't reclaimed, and that expiry has passed. - // CA must be authorized and be the custodian. - let PermissionedCallOriginData { - primary_did: agent, - secondary_key, - .. - } = >::ensure_agent_asset_perms(origin.clone(), ca_id.ticker)?; - let dist = Self::ensure_distribution_exists(ca_id)?; - ensure!(!dist.reclaimed, Error::::AlreadyReclaimed); - ensure!(expired(dist.expires_at, >::now_unix()), Error::::NotExpired); - >::ensure_portfolio_custody_and_permission(dist.from, agent, secondary_key.as_ref())?; - - // Unlock `remaining` of `currency` from DID's portfolio. - // This won't fail, as we've already locked the requisite amount prior. - Self::unlock(&dist, dist.remaining)?; - - // Zero `remaining` + note that we've reclaimed. - Distributions::insert(ca_id, Distribution { reclaimed: true, remaining:0u32.into(), ..dist }); - - // Emit event. - Self::deposit_event(Event::Reclaimed(agent.for_event(), ca_id, dist.remaining)); + Self::base_reclaim(origin, ca_id)?; } /// Removes a distribution that hasn't started yet, @@ -344,9 +318,7 @@ decl_module! { /// - `DistributionStarted` if `payment_at <= now`. #[weight = ::DistWeightInfo::remove_distribution()] pub fn remove_distribution(origin, ca_id: CAId) { - let agent = >::ensure_perms(origin, ca_id.ticker)?.for_event(); - let dist = Self::ensure_distribution_exists(ca_id)?; - Self::remove_distribution_base(agent, ca_id, &dist)?; + Self::base_remove_distribution(origin, ca_id)?; } } } @@ -405,12 +377,107 @@ decl_error! { DistributionStarted, /// A distribution has insufficient remaining amount of currency to distribute. InsufficientRemainingAmount, + /// Distribution `amount` cannot be zero. + DistributionAmountIsZero, + /// Distribution `per_share` cannot be zero. + DistributionPerShareIsZero, } } impl Module { + fn base_distribute( + origin: T::Origin, + ca_id: CAId, + portfolio: Option, + currency: Ticker, + per_share: Balance, + amount: Balance, + payment_at: Moment, + expires_at: Option, + ) -> DispatchResult { + let PermissionedCallOriginData { + primary_did: agent, + secondary_key, + .. + } = >::ensure_agent_asset_perms(origin, ca_id.ticker)?; + + Self::unverified_distribute( + agent, + secondary_key, + ca_id, + portfolio, + currency, + per_share, + amount, + payment_at, + expires_at, + ) + } + + fn base_claim(origin: T::Origin, ca_id: CAId) -> DispatchResult { + let did = >::ensure_perms(origin)?; + Self::transfer_benefit(did.for_event(), did, ca_id)?; + Ok(()) + } + + fn base_push_benefit(origin: T::Origin, ca_id: CAId, holder: IdentityId) -> DispatchResult { + let agent = >::ensure_perms(origin, ca_id.ticker)?.for_event(); + Self::transfer_benefit(agent, holder, ca_id)?; + Ok(()) + } + + fn base_reclaim(origin: T::Origin, ca_id: CAId) -> DispatchResult { + // Ensure distribution is created, they haven't reclaimed, and that expiry has passed. + // CA must be authorized and be the custodian. + let PermissionedCallOriginData { + primary_did: agent, + secondary_key, + .. + } = >::ensure_agent_asset_perms(origin.clone(), ca_id.ticker)?; + let dist = Self::ensure_distribution_exists(ca_id)?; + ensure!(!dist.reclaimed, Error::::AlreadyReclaimed); + ensure!( + expired(dist.expires_at, >::now_unix()), + Error::::NotExpired + ); + >::ensure_portfolio_custody_and_permission( + dist.from, + agent, + secondary_key.as_ref(), + )?; + + // Unlock `remaining` of `currency` from DID's portfolio. + // This won't fail, as we've already locked the requisite amount prior. + Self::unlock(&dist, dist.remaining)?; + + // Zero `remaining` + note that we've reclaimed. + Distributions::insert( + ca_id, + Distribution { + reclaimed: true, + remaining: 0u32.into(), + ..dist + }, + ); + + // Emit event. + Self::deposit_event(Event::Reclaimed(agent.for_event(), ca_id, dist.remaining)); + + Ok(()) + } + + fn base_remove_distribution(origin: T::Origin, ca_id: CAId) -> DispatchResult { + let agent = >::ensure_perms(origin, ca_id.ticker)?.for_event(); + let dist = Self::ensure_distribution_exists(ca_id)?; + Self::unverified_remove_distribution(agent, ca_id, &dist)?; + + Ok(()) + } + /// Kill the distribution identified by `ca_id`. - crate fn remove_distribution_base( + /// + /// Unlike `base_remove_distribution`, this won't check permissions and that the dist exists. + crate fn unverified_remove_distribution( agent: EventDid, ca_id: CAId, dist: &Distribution, @@ -531,7 +598,10 @@ impl Module { Ok(dist) } - pub fn unsafe_distribute( + /// Create a capital distribution. + /// + /// Unlike `base_distribute`, this won't check permissions. + crate fn unverified_distribute( agent: IdentityId, secondary_key: Option>, ca_id: CAId, @@ -542,6 +612,10 @@ impl Module { payment_at: Moment, expires_at: Option, ) -> DispatchResult { + // Ensure valid `amount` and `per_share`. + ensure!(!amount.is_zero(), Error::::DistributionAmountIsZero); + ensure!(!per_share.is_zero(), Error::::DistributionPerShareIsZero); + // Ensure that any expiry date doesn't come before the payment date. ensure!( !expired(expires_at, payment_at), diff --git a/pallets/corporate-actions/src/lib.rs b/pallets/corporate-actions/src/lib.rs index 6b05ebc966..b0ae198cc5 100644 --- a/pallets/corporate-actions/src/lib.rs +++ b/pallets/corporate-actions/src/lib.rs @@ -652,7 +652,7 @@ decl_module! { } CAKind::PredictableBenefit | CAKind::UnpredictableBenefit => { if let Some(dist) = >::distributions(ca_id) { - >::remove_distribution_base(agent, ca_id, &dist)?; + >::unverified_remove_distribution(agent, ca_id, &dist)?; } } } @@ -761,7 +761,7 @@ decl_module! { withholding_tax )?; - >::unsafe_distribute( + >::unverified_distribute( agent, secondary_key, ca_id, diff --git a/pallets/runtime/ci/src/runtime.rs b/pallets/runtime/ci/src/runtime.rs index c7cb224065..eb0d4d8d77 100644 --- a/pallets/runtime/ci/src/runtime.rs +++ b/pallets/runtime/ci/src/runtime.rs @@ -62,7 +62,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_version: 5_000_000, impl_version: 0, apis: RUNTIME_API_VERSIONS, - transaction_version: 2, + transaction_version: 3, }; parameter_types! { diff --git a/pallets/runtime/develop/src/runtime.rs b/pallets/runtime/develop/src/runtime.rs index ed9115e3af..a2cb903d9c 100644 --- a/pallets/runtime/develop/src/runtime.rs +++ b/pallets/runtime/develop/src/runtime.rs @@ -60,7 +60,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_version: 5_000_000, impl_version: 0, apis: RUNTIME_API_VERSIONS, - transaction_version: 2, + transaction_version: 3, }; parameter_types! { diff --git a/pallets/runtime/mainnet/src/runtime.rs b/pallets/runtime/mainnet/src/runtime.rs index 4de9da5e3c..df03fb7fee 100644 --- a/pallets/runtime/mainnet/src/runtime.rs +++ b/pallets/runtime/mainnet/src/runtime.rs @@ -57,7 +57,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_version: 5_000_000, impl_version: 0, apis: RUNTIME_API_VERSIONS, - transaction_version: 2, + transaction_version: 3, }; parameter_types! { diff --git a/pallets/runtime/testnet/src/runtime.rs b/pallets/runtime/testnet/src/runtime.rs index 909e10645d..3db110e41c 100644 --- a/pallets/runtime/testnet/src/runtime.rs +++ b/pallets/runtime/testnet/src/runtime.rs @@ -62,7 +62,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_version: 5_000_000, impl_version: 0, apis: RUNTIME_API_VERSIONS, - transaction_version: 2, + transaction_version: 3, }; parameter_types! { diff --git a/pallets/runtime/tests/src/corporate_actions_test.rs b/pallets/runtime/tests/src/corporate_actions_test.rs index 22a4bf940c..626b4b54c0 100644 --- a/pallets/runtime/tests/src/corporate_actions_test.rs +++ b/pallets/runtime/tests/src/corporate_actions_test.rs @@ -253,6 +253,7 @@ fn only_caa_authorized() { transfer(&ticker, owner, other); let currency = create_asset(b"BETA", owner); + transfer(¤cy, owner, caa); macro_rules! checks { ($user:expr, $assert:ident $(, $tail:expr)?) => { @@ -301,7 +302,7 @@ fn only_caa_authorized() { // ..., `distribute`, let id = next_ca_id(ticker); $assert!(mk_ca(CAKind::UnpredictableBenefit) $(, $tail)?); - $assert!(Dist::distribute($user.origin(), id, None, currency, 0, 0, 3000, None) $(, $tail)?); + $assert!(Dist::distribute($user.origin(), id, None, currency, 1, 1, 3000, None) $(, $tail)?); // ..., and `remove_distribution`. $assert!(Dist::remove_distribution($user.origin(), id) $(, $tail)?); }; @@ -837,7 +838,7 @@ fn remove_ca_works() { None, currency, 2, - 0, + 2, 3000, None, )); @@ -851,8 +852,8 @@ fn remove_ca_works() { from: PortfolioId::default_portfolio(owner.did), currency, per_share: 2, - amount: 0, - remaining: 0, + amount: 2, + remaining: 2, reclaimed: false, payment_at: 3000, expires_at: None, @@ -1013,8 +1014,8 @@ fn change_record_date_works() { id, None, create_asset(b"BETA", owner), - 0, - 0, + 1, + 2, 5000, None, )); @@ -1756,7 +1757,7 @@ fn dist_distribute_works() { // Test no CA at id. let id = next_ca_id(ticker); assert_noop!( - Dist::distribute(owner.origin(), id, None, currency, 0, 0, 1, None), + Dist::distribute(owner.origin(), id, None, currency, 1, 1, 1, None), Error::NoSuchCA ); @@ -1764,39 +1765,54 @@ fn dist_distribute_works() { Timestamp::set_timestamp(2); let id2 = dist_ca(owner, ticker, Some(2)).unwrap(); + + // Test same-asset. let id3 = dist_ca(owner, ticker, Some(2)).unwrap(); assert_ok!(Dist::distribute( owner.origin(), id3, None, ticker, - 0, - 0, + 1, + 1, 5, None )); + // Test expiry. for &(pay, expiry) in &[(5, 5), (6, 5)] { assert_noop!( - Dist::distribute(owner.origin(), id2, None, currency, 0, 0, pay, Some(expiry)), + Dist::distribute(owner.origin(), id2, None, currency, 1, 1, pay, Some(expiry)), DistError::ExpiryBeforePayment ); } Timestamp::set_timestamp(5); + + // Test `amount == 0`. + assert_noop!( + Dist::distribute(owner.origin(), id2, None, currency, 1, 0, 5, Some(6)), + DistError::DistributionAmountIsZero + ); + // Test `per_share == 0`. + assert_noop!( + Dist::distribute(owner.origin(), id2, None, currency, 0, 1, 5, Some(6)), + DistError::DistributionPerShareIsZero + ); + assert_ok!(Dist::distribute( owner.origin(), id2, None, currency, - 0, - 0, + 1, + 1, 5, Some(6) )); // Distribution already exists. assert_noop!( - Dist::distribute(owner.origin(), id2, None, currency, 0, 0, 5, None), + Dist::distribute(owner.origin(), id2, None, currency, 1, 1, 5, None), DistError::AlreadyExists ); @@ -1806,8 +1822,8 @@ fn dist_distribute_works() { id1, None, currency, - 0, - 0, + 1, + 1, 4, None )); @@ -1816,14 +1832,14 @@ fn dist_distribute_works() { let id = dist_ca(owner, ticker, Some(5)).unwrap(); let num = PortfolioNumber(42); assert_noop!( - Dist::distribute(owner.origin(), id, Some(num), currency, 0, 0, 5, None), + Dist::distribute(owner.origin(), id, Some(num), currency, 1, 1, 5, None), PError::PortfolioDoesNotExist ); // No custody over portfolio. let custody = |who: User| Custodian::insert(PortfolioId::default_portfolio(owner.did), who.did); - let dist = |id| Dist::distribute(owner.origin(), id, None, currency, 0, 0, 6, None); + let dist = |id| Dist::distribute(owner.origin(), id, None, currency, 1, 1, 6, None); custody(other); assert_noop!(dist(id), PError::UnauthorizedCustodian); custody(owner); @@ -1845,7 +1861,7 @@ fn dist_distribute_works() { // Record date after start. let dist = - |id, start| Dist::distribute(owner.origin(), id, None, currency, 0, 0, start, None); + |id, start| Dist::distribute(owner.origin(), id, None, currency, 1, 1, start, None); let id = dist_ca(owner, ticker, Some(5000)).unwrap(); assert_noop!(dist(id, 4999), Error::RecordDateAfterStart); assert_ok!(dist(id, 5000)); @@ -1892,8 +1908,8 @@ fn dist_remove_works() { id, None, create_asset(b"BETA", owner), - 0, - 0, + 1, + 1, 5, Some(6) )); @@ -1930,7 +1946,7 @@ fn dist_reclaim_works() { id, None, currency, - 0, + 1, AMOUNT, 5, Some(6) @@ -2002,8 +2018,8 @@ fn dist_claim_misc_bad() { id, None, create_asset(b"BETA", owner), - 0, - 0, + 1, + 1, 5, Some(6) )); @@ -2032,8 +2048,8 @@ fn dist_claim_not_targeted() { id, None, currency, - 0, - 0, + 1, + 1, 1, None, )); @@ -2206,7 +2222,7 @@ fn dist_claim_no_remaining() { // One has sufficient tokens but we'll claim from the other. // Previously, this would cause `remaining -= benefit` underflow. mk_dist(1_000_000); - let id = mk_dist(0); + let id = mk_dist(1); Timestamp::set_timestamp(5); assert_noop!( From 98f4642204f388993ca3fd7985c56c7191cc597c Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Wed, 4 May 2022 18:48:38 +0200 Subject: [PATCH 48/53] Smart contracts pallet (#1217) * wip for robert * contracts: add Config impls * initial smart contracts pallet * contracts: wip chain extension * get cargo check to work * define most of chain extension logic * contracts: use drop-guard for swap-back * contracts: decided not to charge weights for now * contracts: remove need for drop_guard * contract: pass this on * contracts: propagate init/upgrade + limits and charge for in_len * contracts: add register_custom_asset_type * contracts: simplify DID swapping * contracts: use contract key instead of caller * cargo fmt * contracts: fix docs * contracts: impl From contracts-old} * mv contracts2 -> contracts * contracts: set dispatchable name + rerun benchs * contracts: misc tweaks * contracts: tests + other tweaks * contracts: adjust to new keys storage * contracts: rerun benchmarks * contracts2_test -> contracts_test * BaseContracts <-(swap)-> Contracts * contracts: get benchmarks running again * cargo fmt * mv benchmarking/mod.rs -> benchmarking.rs * contracts: address review comments --- Cargo.lock | 1280 ++++++++++------- Cargo.toml | 4 +- pallets/common/src/traits/identity.rs | 28 +- pallets/contracts-old/Cargo.toml | 54 + .../fixtures/dummy.wat | 0 .../fixtures/ptm.wat | 0 pallets/contracts-old/src/benchmarking.rs | 263 ++++ pallets/contracts-old/src/lib.rs | 453 ++++++ pallets/contracts/Cargo.toml | 20 +- pallets/contracts/src/benchmarking.rs | 403 +++--- pallets/contracts/src/lib.rs | 979 ++++++++----- pallets/identity/src/keys.rs | 21 +- pallets/runtime/ci/Cargo.toml | 8 +- pallets/runtime/ci/src/runtime.rs | 33 +- pallets/runtime/common/Cargo.toml | 2 +- pallets/runtime/common/src/runtime.rs | 37 +- pallets/runtime/develop/Cargo.toml | 11 +- pallets/runtime/develop/src/runtime.rs | 35 +- pallets/runtime/mainnet/Cargo.toml | 8 +- pallets/runtime/mainnet/src/runtime.rs | 43 +- pallets/runtime/testnet/Cargo.toml | 8 +- pallets/runtime/testnet/src/runtime.rs | 33 +- pallets/runtime/tests/Cargo.toml | 8 +- .../tests/fixtures/chain_extension.wat | 32 + pallets/runtime/tests/src/asset_test.rs | 5 +- pallets/runtime/tests/src/contracts_test.rs | 161 +++ pallets/runtime/tests/src/lib.rs | 32 +- pallets/runtime/tests/src/storage.rs | 19 +- pallets/weights/Cargo.toml | 4 +- pallets/weights/src/lib.rs | 2 +- pallets/weights/src/polymesh_contracts.rs | 153 +- primitives/src/secondary_key.rs | 7 +- 32 files changed, 2793 insertions(+), 1353 deletions(-) create mode 100644 pallets/contracts-old/Cargo.toml rename pallets/{contracts => contracts-old}/fixtures/dummy.wat (100%) rename pallets/{contracts => contracts-old}/fixtures/ptm.wat (100%) create mode 100644 pallets/contracts-old/src/benchmarking.rs create mode 100644 pallets/contracts-old/src/lib.rs create mode 100644 pallets/runtime/tests/fixtures/chain_extension.wat create mode 100644 pallets/runtime/tests/src/contracts_test.rs diff --git a/Cargo.lock b/Cargo.lock index 7296e8d1cf..17294fd236 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -53,7 +53,7 @@ checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" dependencies = [ "cfg-if 1.0.0", "cipher", - "cpufeatures 0.2.1", + "cpufeatures 0.2.2", "opaque-debug 0.3.0", ] @@ -77,7 +77,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.4", + "getrandom 0.2.6", "once_cell", "version_check", ] @@ -102,9 +102,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.53" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94a45b455c14666b85fc40a019e8ab9eb75e3a124e05494f5397122bc9eb06e0" +checksum = "4361135be9122e0870de935d7c439aef945b9f9ddd4199a553b5270b49c82a27" [[package]] name = "approx" @@ -184,9 +184,9 @@ dependencies = [ [[package]] name = "async-global-executor" -version = "2.0.2" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9586ec52317f36de58453159d48351bc244bc24ced3effc1fce22f3d48664af6" +checksum = "c290043c9a95b05d45e952fb6383c67bcb61471f60cfa21e890dba6654234f43" dependencies = [ "async-channel", "async-executor", @@ -219,9 +219,9 @@ dependencies = [ [[package]] name = "async-lock" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6a8ea61bf9947a1007c5cada31e647dbc77b103c679858150003ba697ea798b" +checksum = "e97a171d191782fba31bb902b14ad94e24a68145032b7eedf871ab0bc0d077b6" dependencies = [ "event-listener", ] @@ -254,9 +254,9 @@ dependencies = [ [[package]] name = "async-std" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8056f1455169ab86dd47b47391e4ab0cbd25410a70e9fe675544f49bafaf952" +checksum = "52580991739c5cdb36cde8b2a516371c0a3b70dda36d916cc08b82372916808c" dependencies = [ "async-channel", "async-global-executor", @@ -296,15 +296,15 @@ dependencies = [ [[package]] name = "async-task" -version = "4.1.0" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d306121baf53310a3fd342d88dc0824f6bbeace68347593658525565abee8" +checksum = "30696a84d817107fc028e049980e09d5e140e8da8f1caeb17e8e950658a3cea9" [[package]] name = "async-trait" -version = "0.1.52" +version = "0.1.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3" +checksum = "ed6aa3524a2dfcf9fe180c51eae2b58738348d819517ceadf95789c51fff7600" dependencies = [ "proc-macro2", "quote", @@ -365,22 +365,22 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.64" +version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e121dee8023ce33ab248d9ce1493df03c3b38a659b240096fcbd7048ff9c31f" +checksum = "11a17d453482a265fd5f8479f2a3f405566e6ca627837aaddb85af8b1ab8ef61" dependencies = [ "addr2line 0.17.0", "cc", "cfg-if 1.0.0", "libc", "miniz_oxide", - "object 0.27.1", + "object 0.28.3", "rustc-demangle", ] @@ -560,9 +560,9 @@ checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] name = "blocking" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046e47d4b2d391b1f6f8b407b1deb8dee56c1852ccd868becf2710f601b5f427" +checksum = "c6ccb65d468978a086b69884437ded69a90faab3bbe6e67f242173ea728acccc" dependencies = [ "async-channel", "async-task", @@ -632,9 +632,9 @@ checksum = "b0a5e3906bcbf133e33c1d4d95afc664ad37fbdb9f6568d8043e7ea8c27d93d3" [[package]] name = "byte-slice-cast" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d30c751592b77c499e7bce34d99d67c2c11bdc0574e9a488ddade14150a4698" +checksum = "87c5fdd0166095e1d463fc6cc01aa8ce547ad77a4e84d42eb6762b084e28067e" [[package]] name = "byte-tools" @@ -732,9 +732,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.72" +version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" dependencies = [ "jobserver", ] @@ -820,9 +820,9 @@ dependencies = [ [[package]] name = "clang-sys" -version = "1.3.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa66045b9cb23c2e9c1520732030608b02ee07e5cfaa5a521ec15ded7fa24c90" +checksum = "4cc00842eed744b858222c4c9faf7243aafc6d33f92f96935263ef4d8a41ce21" dependencies = [ "glob 0.3.0", "libc", @@ -923,9 +923,9 @@ checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" [[package]] name = "core-foundation" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6888e10551bb93e424d8df1d07f1a8b4fceb0001a3a4b048bfc47554946f47b3" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" dependencies = [ "core-foundation-sys", "libc", @@ -957,9 +957,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" +checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" dependencies = [ "libc", ] @@ -1056,9 +1056,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.3.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2209c310e29876f7f0b2721e7e26b84aff178aa3da5d091f9bfbf47669e60e3" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ "cfg-if 1.0.0", ] @@ -1101,9 +1101,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e54ea8bc3fb1ee042f5aace6e3c6e025d3874866da222930f70ce62aceba0bfa" +checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -1122,10 +1122,11 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.6" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97242a70df9b89a65d0b6df3c4bf5b9ce03c5b7309019777fbde37e7537f8762" +checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c" dependencies = [ + "autocfg", "cfg-if 1.0.0", "crossbeam-utils", "lazy_static", @@ -1135,9 +1136,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcae03edb34f947e64acdb1c33ec169824e20657e9ecb61cef6c8c74dcb8120" +checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38" dependencies = [ "cfg-if 1.0.0", "lazy_static", @@ -1280,9 +1281,9 @@ dependencies = [ [[package]] name = "ctor" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccc0a48a9b826acdf4028595adc9db92caea352f7af011a3034acd172a52a0aa" +checksum = "f877be4f7c9f246b183111634f75baa039715e3f46ce860677d3b19a69fb229c" dependencies = [ "quote", "syn", @@ -1414,9 +1415,9 @@ dependencies = [ [[package]] name = "dirs-sys" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03d86534ed367a67548dc68113a0f5db55432fdfbb6e6f9d77704397d95d5780" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" dependencies = [ "libc", "redox_users", @@ -1488,15 +1489,15 @@ dependencies = [ [[package]] name = "dyn-clone" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee2626afccd7561a06cf1367e2950c4718ea04565e20fb5029b6c7d8ad09abcf" +checksum = "21e50f3adc76d6a43f5ed73b698a87d0760ca74617f60f7c3b879003536fdd28" [[package]] name = "ed25519" -version = "1.3.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74e1069e39f1454367eb2de793ed062fac4c35c2934b76a81d90dd9abcd28816" +checksum = "3d5c4b5e5959dc2c2b89918d8e2cc40fcdd623cef026ed09d2f0ee05199dc8e4" dependencies = [ "signature", ] @@ -1529,11 +1530,11 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" [[package]] name = "enum-as-inner" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c5f0096a91d210159eceb2ff5e1c4da18388a170e1e3ce948aac9c8fdbbf595" +checksum = "570d109b813e904becc80d8d5da38376818a143348413f7149f1340fe04754d4" dependencies = [ - "heck", + "heck 0.4.0", "proc-macro2", "quote", "syn", @@ -1546,7 +1547,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" dependencies = [ "atty", - "humantime", + "humantime 1.3.0", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "env_logger" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3" +dependencies = [ + "atty", + "humantime 2.1.0", "log", "regex", "termcolor", @@ -1591,7 +1605,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", ] [[package]] @@ -1648,11 +1662,11 @@ dependencies = [ [[package]] name = "file-per-thread-logger" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fdbe0d94371f9ce939b555dd342d0686cc4c0cadbcd4b61d70af5ff97eb4126" +checksum = "21e16290574b39ee41c71aeb90ae960c504ebaf1e2a1c87bd52aa56ed6e1a02f" dependencies = [ - "env_logger", + "env_logger 0.9.0", "log", ] @@ -1663,12 +1677,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8ac3ff5224ef91f3c97e03eb1de2db82743427e91aaa5ac635f454f0b164f5a" dependencies = [ "either", - "futures 0.3.19", + "futures 0.3.21", "futures-timer 3.0.2", "log", "num-traits", "parity-scale-codec 2.3.1", - "parking_lot", + "parking_lot 0.11.2", "scale-info", ] @@ -1679,7 +1693,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" dependencies = [ "byteorder", - "rand 0.8.4", + "rand 0.8.5", "rustc-hex", "static_assertions", ] @@ -1692,9 +1706,9 @@ checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" [[package]] name = "flate2" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53f" +checksum = "b39522e96686d38f4bc984b9198e3a0613264abaebaff2c5c918bfa6b6da09af" dependencies = [ "cfg-if 1.0.0", "crc32fast", @@ -1712,7 +1726,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "parity-scale-codec 2.3.1", ] @@ -1730,7 +1744,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "frame-support", "frame-system", @@ -1750,7 +1764,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "Inflector", "chrono", @@ -1776,7 +1790,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "frame-support", "frame-system", @@ -1804,7 +1818,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "bitflags", "frame-metadata", @@ -1832,7 +1846,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -1844,10 +1858,10 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "frame-support-procedural-tools-derive", - "proc-macro-crate 1.1.0", + "proc-macro-crate 1.1.3", "proc-macro2", "quote", "syn", @@ -1856,7 +1870,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "proc-macro2", "quote", @@ -1866,7 +1880,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "frame-support", "log", @@ -1883,7 +1897,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "frame-benchmarking", "frame-support", @@ -1898,7 +1912,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "parity-scale-codec 2.3.1", "sp-api", @@ -1956,9 +1970,9 @@ checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" [[package]] name = "futf" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c9c1ce3fa9336301af935ab852c437817d14cd33690446569392e65170aac3b" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" dependencies = [ "mac", "new_debug_unreachable", @@ -1972,9 +1986,9 @@ checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" [[package]] name = "futures" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28560757fe2bb34e79f907794bb6b22ae8b0e5c669b638a1132f2592b19035b4" +checksum = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e" dependencies = [ "futures-channel", "futures-core", @@ -1987,9 +2001,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3dda0b6588335f360afc675d0564c17a77a2bda81ca178a4b6081bd86c7f0b" +checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" dependencies = [ "futures-core", "futures-sink", @@ -1997,15 +2011,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c8ff0461b82559810cdccfde3215c3f373807f5e5232b71479bff7bb2583d7" +checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" [[package]] name = "futures-executor" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29d6d2ff5bb10fb95c85b8ce46538a2e5f5e7fdc755623a7d4529ab8a4ed9d2a" +checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6" dependencies = [ "futures-core", "futures-task", @@ -2015,9 +2029,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f9d34af5a1aac6fb380f735fe510746c38067c5bf16c7fd250280503c971b2" +checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" [[package]] name = "futures-lite" @@ -2036,9 +2050,9 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbd947adfffb0efc70599b3ddcf7b5597bb5fa9e245eb99f62b3a5f7bb8bd3c" +checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512" dependencies = [ "proc-macro2", "quote", @@ -2058,15 +2072,15 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3055baccb68d74ff6480350f8d6eb8fcfa3aa11bdc1a1ae3afdd0514617d508" +checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" [[package]] name = "futures-task" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ee7c6485c30167ce4dfb83ac568a849fe53274c831081476ee13e0dce1aad72" +checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" [[package]] name = "futures-timer" @@ -2082,9 +2096,9 @@ checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" [[package]] name = "futures-util" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b5cf40b47a271f77a8b1bec03ca09044d99d2372c0de244e66430761127164" +checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" dependencies = [ "futures 0.1.31", "futures-channel", @@ -2151,9 +2165,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418d37c8b1d42553c93648be529cb70f920d3baf8ef469b74b9638df426e0b4c" +checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" dependencies = [ "cfg-if 1.0.0", "libc", @@ -2214,9 +2228,9 @@ dependencies = [ [[package]] name = "gloo-timers" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d12a7f4e95cfe710f1d624fb1210b7d961a5fb05c4fd942f4feab06e61f590e" +checksum = "5fb7d06c1c8cc2a29bee7ec961009a0b2caa0793ee4900c2ffb348734ba1c8f9" dependencies = [ "futures-channel", "futures-core", @@ -2277,6 +2291,12 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "heck" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + [[package]] name = "hermit-abi" version = "0.1.19" @@ -2294,9 +2314,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hex-literal" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "961de220ec9a91af2e1e5bd80d02109155695e516771762381ef8581317066e0" +checksum = "d70693199b3cf4552f3fa720b54163927a3ebed2aef240efaf556033ab336a11" dependencies = [ "hex-literal-impl", "proc-macro-hack", @@ -2310,9 +2330,9 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "hex-literal-impl" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "853f769599eb31de176303197b7ba4973299c38c7a7604a6bc88c3eef05b9b46" +checksum = "59448fc2f82a5fb6907f78c3d69d843e82ff5b051923313cc4438cb0c7b745a8" dependencies = [ "proc-macro-hack", ] @@ -2367,9 +2387,9 @@ dependencies = [ [[package]] name = "html5ever" -version = "0.25.1" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aafcf38a1a36118242d29b92e1b08ef84e67e4a5ed06e0a80be20e6a32bfed6b" +checksum = "e5c13fb08e5d4dfc151ee5e88bae63f7773d61852f3bdc73c9f4b9e1bde03148" dependencies = [ "log", "mac", @@ -2403,9 +2423,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.5.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503" +checksum = "6330e8a36bd8c859f3fa6d9382911fbb7147ec39807f63b923933a247240b9ba" [[package]] name = "httpdate" @@ -2422,11 +2442,17 @@ dependencies = [ "quick-error 1.2.3", ] +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + [[package]] name = "hyper" -version = "0.14.16" +version = "0.14.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7ec3e62bdc98a2f0393a5048e4c30ef659440ea6e0e572965103e72bd836f55" +checksum = "b26ae0a80afebe130861d90abf98e3814a4f28a4c6ffeb5ab8ebb2be311e0ef2" dependencies = [ "bytes 1.1.0", "futures-channel", @@ -2436,7 +2462,7 @@ dependencies = [ "http-body", "httparse", "httpdate", - "itoa 0.4.8", + "itoa 1.0.1", "pin-project-lite 0.2.8", "socket2 0.4.4", "tokio", @@ -2512,7 +2538,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae8ab7f67bad3240049cb24fb9cb0b4c2c6af4c245840917fbbdededeee91179" dependencies = [ "async-io", - "futures 0.3.19", + "futures 0.3.21", "futures-lite", "if-addrs", "ipnet", @@ -2541,9 +2567,9 @@ dependencies = [ [[package]] name = "impl-trait-for-tuples" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5dacb10c5b3bb92d46ba347505a9041e676bb20ad220101326bffb0c93031ee" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" dependencies = [ "proc-macro2", "quote", @@ -2552,9 +2578,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223" +checksum = "0f647032dfaa1f8b6dc29bd3edb7bbef4861b8b8007ebb118d6db284fd59f6ee" dependencies = [ "autocfg", "hashbrown", @@ -2604,7 +2630,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64fa110ec7b8f493f416eed552740d10e7030ad5f63b2308f82c9608ec2df275" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "futures-timer 2.0.2", ] @@ -2637,9 +2663,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9" +checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" [[package]] name = "itertools" @@ -2673,9 +2699,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.56" +version = "0.3.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04" +checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397" dependencies = [ "wasm-bindgen", ] @@ -2687,7 +2713,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2b99d4207e2a04fb4581746903c2bb7eb376f88de9c699d0f3e10feeac0cd3a" dependencies = [ "derive_more", - "futures 0.3.19", + "futures 0.3.21", "jsonrpc-core", "jsonrpc-pubsub", "log", @@ -2702,7 +2728,7 @@ version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "futures-executor", "futures-util", "log", @@ -2717,7 +2743,7 @@ version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b51da17abecbdab3e3d4f26b01c5ec075e88d3abe3ab3b05dc9aa69392764ec0" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "jsonrpc-client-transports", ] @@ -2739,13 +2765,13 @@ version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1dea6e07251d9ce6a552abfb5d7ad6bc290a4596c8dcc3d795fae2bbdc1f3ff" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "hyper", "jsonrpc-core", "jsonrpc-server-utils", "log", "net2", - "parking_lot", + "parking_lot 0.11.2", "unicase", ] @@ -2755,12 +2781,12 @@ version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "382bb0206323ca7cda3dcd7e245cea86d37d02457a02a975e3378fb149a48845" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "jsonrpc-core", "jsonrpc-server-utils", "log", "parity-tokio-ipc", - "parking_lot", + "parking_lot 0.11.2", "tower-service", ] @@ -2770,11 +2796,11 @@ version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240f87695e6c6f62fb37f05c02c04953cf68d6408b8c1c89de85c7a0125b1011" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "jsonrpc-core", "lazy_static", "log", - "parking_lot", + "parking_lot 0.11.2", "rand 0.7.3", "serde", ] @@ -2786,7 +2812,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa4fdea130485b572c39a460d50888beb00afb3e35de23ccd7fad8ff19f0e0d4" dependencies = [ "bytes 1.1.0", - "futures 0.3.19", + "futures 0.3.21", "globset", "jsonrpc-core", "lazy_static", @@ -2803,12 +2829,12 @@ version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f892c7d766369475ab7b0669f417906302d7c0fb521285c0a0c92e52e7c8e946" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "jsonrpc-core", "jsonrpc-server-utils", "log", "parity-ws", - "parking_lot", + "parking_lot 0.11.2", "slab", ] @@ -2855,7 +2881,7 @@ checksum = "c3b6b85fc643f5acd0bffb2cc8a6d150209379267af0d41db72170021841f9f5" dependencies = [ "kvdb", "parity-util-mem", - "parking_lot", + "parking_lot 0.11.2", ] [[package]] @@ -2870,7 +2896,7 @@ dependencies = [ "num_cpus", "owning_ref", "parity-util-mem", - "parking_lot", + "parking_lot 0.11.2", "regex", "rocksdb", "smallvec", @@ -2899,9 +2925,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.117" +version = "0.2.124" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e74d72e0f9b65b5b4ca49a346af3976df0f9c61d550727f349ecd559f251a26c" +checksum = "21a41fed9d98f27ab1c6d161da622a4fa35e8a54a8adc24bbf3ddd0ef70b0e50" [[package]] name = "libloading" @@ -2931,9 +2957,9 @@ checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a" [[package]] name = "libm" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a" +checksum = "33a33a362ce288760ec6a508b94caaec573ae7d3bbbd91b87aa0bad4456839db" [[package]] name = "libp2p" @@ -2943,7 +2969,7 @@ checksum = "9004c06878ef8f3b4b4067e69a140d87ed20bf777287f82223e49713b36ee433" dependencies = [ "atomic", "bytes 1.1.0", - "futures 0.3.19", + "futures 0.3.21", "lazy_static", "libp2p-core", "libp2p-deflate", @@ -2968,7 +2994,7 @@ dependencies = [ "libp2p-websocket", "libp2p-yamux", "multiaddr", - "parking_lot", + "parking_lot 0.11.2", "pin-project 1.0.10", "smallvec", "wasm-timer", @@ -2985,7 +3011,7 @@ dependencies = [ "ed25519-dalek", "either", "fnv", - "futures 0.3.19", + "futures 0.3.21", "futures-timer 3.0.2", "lazy_static", "libsecp256k1 0.5.0", @@ -2993,7 +3019,7 @@ dependencies = [ "multiaddr", "multihash 0.14.0", "multistream-select", - "parking_lot", + "parking_lot 0.11.2", "pin-project 1.0.10", "prost", "prost-build", @@ -3015,7 +3041,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66097fccc0b7f8579f90a03ea76ba6196332ea049fd07fd969490a06819dcdc8" dependencies = [ "flate2", - "futures 0.3.19", + "futures 0.3.21", "libp2p-core", ] @@ -3026,7 +3052,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58ff08b3196b85a17f202d80589e93b1660a574af67275706657fdc762e42c32" dependencies = [ "async-std-resolver", - "futures 0.3.19", + "futures 0.3.21", "libp2p-core", "log", "smallvec", @@ -3041,7 +3067,7 @@ checksum = "404eca8720967179dac7a5b4275eb91f904a53859c69ca8d018560ad6beb214f" dependencies = [ "cuckoofilter", "fnv", - "futures 0.3.19", + "futures 0.3.21", "libp2p-core", "libp2p-swarm", "log", @@ -3062,7 +3088,7 @@ dependencies = [ "byteorder", "bytes 1.1.0", "fnv", - "futures 0.3.19", + "futures 0.3.21", "hex_fmt", "libp2p-core", "libp2p-swarm", @@ -3083,7 +3109,7 @@ version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7b61f6cf07664fb97016c318c4d4512b3dd4cc07238607f3f0163245f99008e" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "libp2p-core", "libp2p-swarm", "log", @@ -3104,7 +3130,7 @@ dependencies = [ "bytes 1.1.0", "either", "fnv", - "futures 0.3.19", + "futures 0.3.21", "libp2p-core", "libp2p-swarm", "log", @@ -3128,13 +3154,13 @@ dependencies = [ "async-io", "data-encoding", "dns-parser", - "futures 0.3.19", + "futures 0.3.21", "if-watch", "lazy_static", "libp2p-core", "libp2p-swarm", "log", - "rand 0.8.4", + "rand 0.8.5", "smallvec", "socket2 0.4.4", "void", @@ -3148,11 +3174,11 @@ checksum = "313d9ea526c68df4425f580024e67a9d3ffd49f2c33de5154b1f5019816f7a99" dependencies = [ "asynchronous-codec 0.6.0", "bytes 1.1.0", - "futures 0.3.19", + "futures 0.3.21", "libp2p-core", "log", "nohash-hasher", - "parking_lot", + "parking_lot 0.11.2", "rand 0.7.3", "smallvec", "unsigned-varint 0.7.1", @@ -3166,13 +3192,13 @@ checksum = "3f1db7212f342b6ba7c981cc40e31f76e9e56cb48e65fa4c142ecaca5839523e" dependencies = [ "bytes 1.1.0", "curve25519-dalek 3.2.0", - "futures 0.3.19", + "futures 0.3.21", "lazy_static", "libp2p-core", "log", "prost", "prost-build", - "rand 0.8.4", + "rand 0.8.5", "sha2 0.9.9", "snow", "static_assertions", @@ -3186,7 +3212,7 @@ version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2482cfd9eb0b7a0baaf3e7b329dc4f2785181a161b1a47b7192f8d758f54a439" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "libp2p-core", "libp2p-swarm", "log", @@ -3203,7 +3229,7 @@ checksum = "13b4783e5423870b9a5c199f65a7a3bc66d86ab56b2b9beebf3c338d889cf8e4" dependencies = [ "asynchronous-codec 0.6.0", "bytes 1.1.0", - "futures 0.3.19", + "futures 0.3.21", "libp2p-core", "log", "prost", @@ -3218,7 +3244,7 @@ version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07cb4dd4b917e5b40ddefe49b96b07adcd8d342e0317011d175b7b2bb1dcc974" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "log", "pin-project 1.0.10", "rand 0.7.3", @@ -3234,7 +3260,7 @@ checksum = "0133f6cfd81cdc16e716de2982e012c62e6b9d4f12e41967b3ee361051c622aa" dependencies = [ "asynchronous-codec 0.6.0", "bytes 1.1.0", - "futures 0.3.19", + "futures 0.3.21", "futures-timer 3.0.2", "libp2p-core", "libp2p-swarm", @@ -3257,7 +3283,7 @@ checksum = "06cdae44b6821466123af93cbcdec7c9e6ba9534a8af9cdc296446d39416d241" dependencies = [ "async-trait", "bytes 1.1.0", - "futures 0.3.19", + "futures 0.3.21", "libp2p-core", "libp2p-swarm", "log", @@ -3276,7 +3302,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7083861341e1555467863b4cd802bea1e8c4787c0f7b5110097d0f1f3248f9a9" dependencies = [ "either", - "futures 0.3.19", + "futures 0.3.21", "libp2p-core", "log", "rand 0.7.3", @@ -3302,7 +3328,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79edd26b6b4bb5feee210dcda562dca186940dfecb0024b979c3f50824b3bf28" dependencies = [ "async-io", - "futures 0.3.19", + "futures 0.3.21", "futures-timer 3.0.2", "if-watch", "ipnet", @@ -3319,7 +3345,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "280e793440dd4e9f273d714f4497325c72cddb0fe85a49f9a03c88f41dd20182" dependencies = [ "async-std", - "futures 0.3.19", + "futures 0.3.21", "libp2p-core", "log", ] @@ -3330,7 +3356,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f553b7140fad3d7a76f50497b0ea591e26737d9607428a75509fc191e4d1b1f6" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "js-sys", "libp2p-core", "parity-send-wrapper", @@ -3345,7 +3371,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddf99dcbf5063e9d59087f61b1e85c686ceab2f5abedb472d32288065c0e5e27" dependencies = [ "either", - "futures 0.3.19", + "futures 0.3.21", "futures-rustls", "libp2p-core", "log", @@ -3362,9 +3388,9 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "214cc0dd9c37cbed27f0bb1eba0c41bbafdb93a8be5e9d6ae1e6b4b42cd044bf" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "libp2p-core", - "parking_lot", + "parking_lot 0.11.2", "thiserror", "yamux", ] @@ -3450,9 +3476,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de5435b8549c16d423ed0c03dbaafe57cf6c3344744f1242520d59c9d8ecec66" +checksum = "6f35facd4a5673cb5a48822be2be1d4236c1c99cb4113cab7061ac720d5bf859" dependencies = [ "cc", "pkg-config", @@ -3486,18 +3512,19 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b" +checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" dependencies = [ + "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.14" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" +checksum = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8" dependencies = [ "cfg-if 1.0.0", "value-bag", @@ -3523,9 +3550,9 @@ dependencies = [ [[package]] name = "lz4" -version = "1.23.2" +version = "1.23.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aac20ed6991e01bf6a2e68cc73df2b389707403662a8ba89f68511fb340f724c" +checksum = "4edcb94251b1c375c459e5abe9fb0168c1c826c3370172684844f8f3f8d1a885" dependencies = [ "libc", "lz4-sys", @@ -3533,9 +3560,9 @@ dependencies = [ [[package]] name = "lz4-sys" -version = "1.9.2" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dca79aa95d8b3226213ad454d328369853be3a1382d89532a854f4d69640acae" +checksum = "d7be8908e2ed6f31c02db8a9fa962f03e36c53fbfde437363eae3306b85d7e17" dependencies = [ "cc", "libc", @@ -3699,12 +3726,11 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.4.4" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +checksum = "d2b29bd4bc3f33391105ebee3589c19197c4271e3e5a9ec9bfe8127eeff8f082" dependencies = [ "adler", - "autocfg", ] [[package]] @@ -3728,14 +3754,15 @@ dependencies = [ [[package]] name = "mio" -version = "0.7.14" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" +checksum = "52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9" dependencies = [ "libc", "log", "miow 0.3.7", "ntapi", + "wasi 0.11.0+wasi-snapshot-preview1", "winapi 0.3.9", ] @@ -3843,7 +3870,7 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "424f6e86263cd5294cbd7f1e95746b95aca0e0d66bff31e5a40d6baa87b4aa99" dependencies = [ - "proc-macro-crate 1.1.0", + "proc-macro-crate 1.1.3", "proc-macro-error", "proc-macro2", "quote", @@ -3864,7 +3891,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56a336acba8bc87c8876f6425407dbbe6c417bf478b22015f8fb0994ef3bc0ab" dependencies = [ "bytes 1.1.0", - "futures 0.3.19", + "futures 0.3.21", "log", "pin-project 1.0.10", "smallvec", @@ -3883,7 +3910,7 @@ dependencies = [ "num-complex", "num-rational 0.4.0", "num-traits", - "rand 0.8.4", + "rand 0.8.5", "rand_distr", "simba", "typenum", @@ -3906,7 +3933,7 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10a8690bf09abf659851e58cd666c3d37ac6af07c2bd7a9e332cfba471715775" dependencies = [ - "rand 0.8.4", + "rand 0.8.5", ] [[package]] @@ -3932,7 +3959,7 @@ version = "0.9.0" dependencies = [ "derive_more", "fs_extra", - "futures 0.3.19", + "futures 0.3.21", "hash-db", "hex", "kvdb", @@ -4051,7 +4078,7 @@ dependencies = [ "frame-support", "frame-system", "fs_extra", - "futures 0.3.19", + "futures 0.3.21", "log", "node-executor", "pallet-balances 0.1.0", @@ -4102,20 +4129,19 @@ checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" [[package]] name = "nom" -version = "7.1.0" +version = "7.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d11e1ef389c76fe5b81bcaf2ea32cf88b62bc494e19f493d0b30e7a930109" +checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" dependencies = [ "memchr", "minimal-lexical", - "version_check", ] [[package]] name = "ntapi" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" +checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" dependencies = [ "winapi 0.3.9", ] @@ -4140,6 +4166,16 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-format" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bafe4179722c2894288ee77a9f044f02811c86af699344c498b0840c698a2465" +dependencies = [ + "arrayvec 0.4.12", + "itoa 0.4.8", +] + [[package]] name = "num-integer" version = "0.1.44" @@ -4180,7 +4216,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" dependencies = [ "autocfg", - "libm 0.2.1", + "libm 0.2.2", ] [[package]] @@ -4206,18 +4242,18 @@ dependencies = [ [[package]] name = "object" -version = "0.27.1" +version = "0.28.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" +checksum = "40bec70ba014595f99f7aa110b84331ffe1ee9aece7fe6f387cc7e3ecda4d456" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5" +checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" [[package]] name = "oorandom" @@ -4270,7 +4306,7 @@ dependencies = [ "frame-benchmarking", "frame-support", "frame-system", - "hex-literal 0.2.1", + "hex-literal 0.2.2", "libsecp256k1 0.6.0", "pallet-balances 0.1.0", "pallet-base", @@ -4302,7 +4338,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "frame-support", "frame-system", @@ -4318,7 +4354,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "frame-support", "frame-system", @@ -4333,7 +4369,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "frame-benchmarking", "frame-support", @@ -4383,7 +4419,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "frame-benchmarking", "frame-support", @@ -4491,6 +4527,58 @@ dependencies = [ "sp-version", ] +[[package]] +name = "pallet-contracts" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +dependencies = [ + "bitflags", + "frame-benchmarking", + "frame-support", + "frame-system", + "libsecp256k1 0.6.0", + "log", + "pallet-contracts-primitives", + "pallet-contracts-proc-macro", + "parity-scale-codec 2.3.1", + "pwasm-utils", + "rand 0.7.3", + "rand_pcg", + "scale-info", + "serde", + "smallvec", + "sp-core", + "sp-io", + "sp-runtime", + "sp-sandbox", + "sp-std", + "wasmi-validation", +] + +[[package]] +name = "pallet-contracts-primitives" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +dependencies = [ + "bitflags", + "parity-scale-codec 2.3.1", + "scale-info", + "serde", + "sp-core", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-contracts-proc-macro" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "pallet-corporate-actions" version = "0.1.0" @@ -4546,7 +4634,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "frame-benchmarking", "frame-support", @@ -4655,7 +4743,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "frame-benchmarking", "frame-support", @@ -4675,7 +4763,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "frame-benchmarking", "frame-support", @@ -4714,7 +4802,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "frame-support", "frame-system", @@ -4764,7 +4852,7 @@ dependencies = [ "polymesh-primitives", "polymesh-primitives-derive", "polymesh-runtime-common", - "rand 0.8.4", + "rand 0.8.5", "rand_chacha 0.3.1", "scale-info", "serde", @@ -4848,7 +4936,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "frame-support", "frame-system", @@ -4897,7 +4985,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "frame-benchmarking", "frame-support", @@ -4913,7 +5001,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "frame-support", "frame-system", @@ -4939,7 +5027,7 @@ dependencies = [ "frame-support", "frame-system", "hex", - "hex-literal 0.2.1", + "hex-literal 0.2.2", "pallet-asset", "pallet-balances 0.1.0", "pallet-base", @@ -4998,9 +5086,9 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ - "proc-macro-crate 1.1.0", + "proc-macro-crate 1.1.3", "proc-macro2", "quote", "syn", @@ -5128,7 +5216,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5189,7 +5277,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "frame-support", "frame-system", @@ -5210,7 +5298,7 @@ dependencies = [ "frame-support", "frame-system", "hex", - "hex-literal 0.2.1", + "hex-literal 0.2.2", "pallet-balances 0.1.0", "pallet-permissions", "parity-scale-codec 2.3.1", @@ -5237,15 +5325,15 @@ dependencies = [ "libc", "log", "memmap2", - "parking_lot", - "rand 0.8.4", + "parking_lot 0.11.2", + "rand 0.8.5", ] [[package]] name = "parity-db" -version = "0.3.6" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68de01cff53da5574397233383dd7f5c15ee958c348245765ea8cb09f2571e6b" +checksum = "b3e7f385d61562f5834282b90aa50b41f38a35cf64d5209b8b05487b50553dbe" dependencies = [ "blake2-rfc", "crc32fast", @@ -5255,8 +5343,8 @@ dependencies = [ "log", "lz4", "memmap2", - "parking_lot", - "rand 0.8.4", + "parking_lot 0.11.2", + "rand 0.8.5", "snap", ] @@ -5281,7 +5369,7 @@ checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" dependencies = [ "arrayvec 0.7.2", "bitvec 0.20.4", - "byte-slice-cast 1.2.0", + "byte-slice-cast 1.2.1", "impl-trait-for-tuples", "parity-scale-codec-derive 2.3.1", "serde", @@ -5305,7 +5393,7 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" dependencies = [ - "proc-macro-crate 1.1.0", + "proc-macro-crate 1.1.3", "proc-macro2", "quote", "syn", @@ -5323,7 +5411,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9981e32fb75e004cc148f5fb70342f393830e0a4aa62e3cc93b50976218d42b6" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "libc", "log", "rand 0.7.3", @@ -5341,7 +5429,7 @@ dependencies = [ "hashbrown", "impl-trait-for-tuples", "parity-util-mem-derive", - "parking_lot", + "parking_lot 0.11.2", "primitive-types", "smallvec", "winapi 0.3.9", @@ -5405,7 +5493,17 @@ checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" dependencies = [ "instant", "lock_api", - "parking_lot_core", + "parking_lot_core 0.8.5", +] + +[[package]] +name = "parking_lot" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.2", ] [[package]] @@ -5422,11 +5520,24 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "parking_lot_core" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "995f667a6c822200b0433ac218e05582f0e2efa1b922a3fd2fbaadc5f87bab37" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall", + "smallvec", + "windows-sys", +] + [[package]] name = "paste" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0744126afe1a6dd7f394cb50a716dbe086cb06e255e53d8d0185d82828358fb5" +checksum = "0c520e05135d6e763148b6426a837e239041653ba7becd2e538c076c738025fc" [[package]] name = "pbkdf2" @@ -5533,7 +5644,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" dependencies = [ "phf_macros", - "phf_shared", + "phf_shared 0.8.0", "proc-macro-hack", ] @@ -5543,8 +5654,8 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" dependencies = [ - "phf_generator", - "phf_shared", + "phf_generator 0.8.0", + "phf_shared 0.8.0", ] [[package]] @@ -5553,18 +5664,28 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" dependencies = [ - "phf_shared", + "phf_shared 0.8.0", "rand 0.7.3", ] +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared 0.10.0", + "rand 0.8.5", +] + [[package]] name = "phf_macros" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" dependencies = [ - "phf_generator", - "phf_shared", + "phf_generator 0.8.0", + "phf_shared 0.8.0", "proc-macro-hack", "proc-macro2", "quote", @@ -5580,6 +5701,15 @@ dependencies = [ "siphasher", ] +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + [[package]] name = "pin-project" version = "0.4.29" @@ -5640,9 +5770,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" [[package]] name = "plotters" @@ -5691,7 +5821,7 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "048aeb476be11a4b6ca432ca569e375810de9294ae78f4774e78ea98a9246ede" dependencies = [ - "cpufeatures 0.2.1", + "cpufeatures 0.2.2", "opaque-debug 0.3.0", "universal-hash", ] @@ -5707,7 +5837,7 @@ dependencies = [ "frame-support", "frame-system", "frame-system-rpc-runtime-api", - "futures 0.3.19", + "futures 0.3.21", "jsonrpc-core", "log", "node-rpc", @@ -5820,6 +5950,30 @@ dependencies = [ "substrate-test-runtime-client", ] +[[package]] +name = "polymesh-contracts" +version = "0.1.0" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "pallet-asset", + "pallet-base", + "pallet-contracts", + "pallet-contracts-primitives", + "pallet-identity", + "pallet-permissions", + "parity-scale-codec 2.3.1", + "polymesh-common-utilities", + "polymesh-primitives", + "pwasm-utils", + "scale-info", + "serde", + "sp-core", + "sp-runtime", + "sp-std", +] + [[package]] name = "polymesh-exec-macro" version = "1.0.0" @@ -5940,6 +6094,7 @@ dependencies = [ "pallet-bridge", "pallet-committee", "pallet-compliance-manager", + "pallet-contracts", "pallet-corporate-actions", "pallet-external-agents", "pallet-grandpa", @@ -5975,6 +6130,7 @@ dependencies = [ "parity-scale-codec 2.3.1", "polymesh-build-tool", "polymesh-common-utilities", + "polymesh-contracts", "polymesh-extensions", "polymesh-primitives", "polymesh-runtime-common", @@ -6055,6 +6211,7 @@ dependencies = [ "pallet-bridge", "pallet-committee", "pallet-compliance-manager", + "pallet-contracts", "pallet-corporate-actions", "pallet-external-agents", "pallet-grandpa", @@ -6090,6 +6247,7 @@ dependencies = [ "parity-scale-codec 2.3.1", "polymesh-build-tool", "polymesh-common-utilities", + "polymesh-contracts", "polymesh-extensions", "polymesh-primitives", "polymesh-runtime-common", @@ -6134,6 +6292,7 @@ dependencies = [ "pallet-bridge", "pallet-committee", "pallet-compliance-manager", + "pallet-contracts", "pallet-corporate-actions", "pallet-external-agents", "pallet-grandpa", @@ -6168,6 +6327,7 @@ dependencies = [ "parity-scale-codec 2.3.1", "polymesh-build-tool", "polymesh-common-utilities", + "polymesh-contracts", "polymesh-extensions", "polymesh-primitives", "polymesh-runtime-common", @@ -6214,6 +6374,7 @@ dependencies = [ "pallet-bridge", "pallet-committee", "pallet-compliance-manager", + "pallet-contracts", "pallet-corporate-actions", "pallet-external-agents", "pallet-grandpa", @@ -6249,6 +6410,7 @@ dependencies = [ "parity-scale-codec 2.3.1", "polymesh-build-tool", "polymesh-common-utilities", + "polymesh-contracts", "polymesh-extensions", "polymesh-primitives", "polymesh-runtime-common", @@ -6281,7 +6443,7 @@ dependencies = [ "chrono", "confidential_identity 1.0.0", "cryptography_core 1.0.0 (git+https://github.com/PolymathNetwork/cryptography.git?branch=confidential-identity-v1)", - "env_logger", + "env_logger 0.7.1", "frame-benchmarking", "frame-executive", "frame-support", @@ -6302,6 +6464,7 @@ dependencies = [ "pallet-bridge", "pallet-committee", "pallet-compliance-manager", + "pallet-contracts", "pallet-corporate-actions", "pallet-external-agents", "pallet-grandpa", @@ -6335,8 +6498,9 @@ dependencies = [ "pallet-treasury 0.1.0", "pallet-utility", "parity-scale-codec 2.3.1", - "parking_lot", + "parking_lot 0.11.2", "polymesh-common-utilities", + "polymesh-contracts", "polymesh-exec-macro", "polymesh-extensions", "polymesh-primitives", @@ -6404,6 +6568,7 @@ dependencies = [ "pallet-timestamp", "pallet-treasury 0.1.0", "pallet-utility", + "polymesh-contracts", "polymesh-runtime-common", "sp-std", ] @@ -6415,7 +6580,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" dependencies = [ "cfg-if 1.0.0", - "cpufeatures 0.2.1", + "cpufeatures 0.2.2", "opaque-debug 0.3.0", "universal-hash", ] @@ -6456,9 +6621,9 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.1.0" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ebace6889caf889b4d3f76becee12e90353f2b8c7d875534a71e5742f8f6f83" +checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" dependencies = [ "thiserror", "toml", @@ -6496,9 +6661,9 @@ checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" [[package]] name = "proc-macro2" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" +checksum = "ec757218438d5fda206afc041538b2f6d889286160d649a86a24d37e1235afd1" dependencies = [ "unicode-xid", ] @@ -6513,7 +6678,7 @@ dependencies = [ "fnv", "lazy_static", "memchr", - "parking_lot", + "parking_lot 0.11.2", "thiserror", ] @@ -6534,7 +6699,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "355f634b43cdd80724ee7848f95770e7e70eefa6dcf14fea676216573b8fd603" dependencies = [ "bytes 1.1.0", - "heck", + "heck 0.3.3", "itertools", "log", "multimap", @@ -6570,9 +6735,9 @@ dependencies = [ [[package]] name = "psm" -version = "0.1.16" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd136ff4382c4753fc061cb9e4712ab2af263376b95bbd5bd8cd50c020b78e69" +checksum = "871372391786ccec00d3c5d3d6608905b3d4db263639cfe075d3b60a736d115a" dependencies = [ "cc", ] @@ -6613,9 +6778,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.15" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145" +checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1" dependencies = [ "proc-macro2", ] @@ -6642,20 +6807,19 @@ dependencies = [ "libc", "rand_chacha 0.2.2", "rand_core 0.5.1", - "rand_hc 0.2.0", + "rand_hc", "rand_pcg", ] [[package]] name = "rand" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha 0.3.1", "rand_core 0.6.3", - "rand_hc 0.3.1", ] [[package]] @@ -6693,7 +6857,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "getrandom 0.2.4", + "getrandom 0.2.6", ] [[package]] @@ -6703,7 +6867,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" dependencies = [ "num-traits", - "rand 0.8.4", + "rand 0.8.5", ] [[package]] @@ -6715,15 +6879,6 @@ dependencies = [ "rand_core 0.5.1", ] -[[package]] -name = "rand_hc" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" -dependencies = [ - "rand_core 0.6.3", -] - [[package]] name = "rand_pcg" version = "0.2.1" @@ -6741,9 +6896,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" [[package]] name = "rayon" -version = "1.5.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" +checksum = "fd249e82c21598a9a426a4e00dd7adc1d640b22445ec8545feef801d1a74c221" dependencies = [ "autocfg", "crossbeam-deque", @@ -6753,34 +6908,34 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" +checksum = "9f51245e1e62e1f1629cbfec37b5793bbabcaeb90f30e94d2ba03564687353e4" dependencies = [ "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "lazy_static", "num_cpus", ] [[package]] name = "redox_syscall" -version = "0.2.10" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" +checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" dependencies = [ "bitflags", ] [[package]] name = "redox_users" -version = "0.4.0" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.4", + "getrandom 0.2.6", "redox_syscall", + "thiserror", ] [[package]] @@ -6816,9 +6971,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.5.4" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" +checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286" dependencies = [ "aho-corasick", "memchr", @@ -6873,9 +7028,9 @@ dependencies = [ [[package]] name = "retain_mut" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51dd4445360338dab5116712bee1388dc727991d51969558a8882ab552e6db30" +checksum = "8c31b5c4033f8fdde8700e4657be2c497e7288f01515be52168c631e2e4d4086" [[package]] name = "ring" @@ -6954,7 +7109,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.4", + "semver 1.0.7", ] [[package]] @@ -6988,7 +7143,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "pin-project 0.4.29", "static_assertions", ] @@ -7029,7 +7184,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "log", "sp-core", @@ -7040,11 +7195,11 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "async-trait", "derive_more", - "futures 0.3.19", + "futures 0.3.21", "futures-timer 3.0.2", "ip_network", "libp2p", @@ -7067,9 +7222,9 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "futures-timer 3.0.2", "log", "parity-scale-codec 2.3.1", @@ -7090,7 +7245,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "parity-scale-codec 2.3.1", "sc-client-api", @@ -7106,7 +7261,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec 2.3.1", @@ -7122,9 +7277,9 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ - "proc-macro-crate 1.1.0", + "proc-macro-crate 1.1.3", "proc-macro2", "quote", "syn", @@ -7133,11 +7288,11 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "chrono", "fdlimit", - "futures 0.3.19", + "futures 0.3.21", "hex", "libp2p", "log", @@ -7171,14 +7326,14 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "fnv", - "futures 0.3.19", + "futures 0.3.21", "hash-db", "log", "parity-scale-codec 2.3.1", - "parking_lot", + "parking_lot 0.11.2", "sc-executor", "sc-transaction-pool-api", "sc-utils", @@ -7199,7 +7354,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "hash-db", "kvdb", @@ -7207,9 +7362,9 @@ dependencies = [ "kvdb-rocksdb", "linked-hash-map", "log", - "parity-db 0.3.6", + "parity-db 0.3.11", "parity-scale-codec 2.3.1", - "parking_lot", + "parking_lot 0.11.2", "sc-client-api", "sc-state-db", "sp-arithmetic", @@ -7224,14 +7379,14 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "async-trait", - "futures 0.3.19", + "futures 0.3.21", "futures-timer 3.0.2", "libp2p", "log", - "parking_lot", + "parking_lot 0.11.2", "sc-client-api", "sc-utils", "serde", @@ -7248,19 +7403,19 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "async-trait", "derive_more", "fork-tree", - "futures 0.3.19", + "futures 0.3.21", "log", "merlin 2.0.1", "num-bigint", "num-rational 0.2.4", "num-traits", "parity-scale-codec 2.3.1", - "parking_lot", + "parking_lot 0.11.2", "rand 0.7.3", "retain_mut", "sc-client-api", @@ -7291,10 +7446,10 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "derive_more", - "futures 0.3.19", + "futures 0.3.21", "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", @@ -7315,7 +7470,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "fork-tree", "parity-scale-codec 2.3.1", @@ -7328,10 +7483,10 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "async-trait", - "futures 0.3.19", + "futures 0.3.21", "futures-timer 3.0.2", "log", "parity-scale-codec 2.3.1", @@ -7354,7 +7509,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "sc-client-api", "sp-authorship", @@ -7365,13 +7520,13 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", "log", "parity-scale-codec 2.3.1", - "parking_lot", + "parking_lot 0.11.2", "sc-executor-common", "sc-executor-wasmi", "sc-executor-wasmtime", @@ -7391,7 +7546,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "derive_more", "environmental", @@ -7409,7 +7564,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "log", "parity-scale-codec 2.3.1", @@ -7425,7 +7580,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "cfg-if 1.0.0", "libc", @@ -7443,19 +7598,19 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "async-trait", "derive_more", "dyn-clone", "finality-grandpa", "fork-tree", - "futures 0.3.19", + "futures 0.3.21", "futures-timer 3.0.2", "log", "parity-scale-codec 2.3.1", - "parking_lot", - "rand 0.8.4", + "parking_lot 0.11.2", + "rand 0.8.5", "sc-block-builder", "sc-client-api", "sc-consensus", @@ -7480,11 +7635,11 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "derive_more", "finality-grandpa", - "futures 0.3.19", + "futures 0.3.21", "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", @@ -7504,10 +7659,10 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "ansi_term", - "futures 0.3.19", + "futures 0.3.21", "futures-timer 3.0.2", "log", "parity-util-mem", @@ -7521,12 +7676,12 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "async-trait", "derive_more", "hex", - "parking_lot", + "parking_lot 0.11.2", "serde_json", "sp-application-crypto", "sp-core", @@ -7536,11 +7691,11 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "hash-db", "parity-scale-codec 2.3.1", - "parking_lot", + "parking_lot 0.11.2", "sc-client-api", "sc-executor", "sp-api", @@ -7554,7 +7709,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "async-std", "async-trait", @@ -7566,7 +7721,7 @@ dependencies = [ "either", "fnv", "fork-tree", - "futures 0.3.19", + "futures 0.3.21", "futures-timer 3.0.2", "hex", "ip_network", @@ -7576,7 +7731,7 @@ dependencies = [ "log", "lru", "parity-scale-codec 2.3.1", - "parking_lot", + "parking_lot 0.11.2", "pin-project 1.0.10", "prost", "prost-build", @@ -7605,9 +7760,9 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "futures-timer 3.0.2", "libp2p", "log", @@ -7621,11 +7776,11 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "bytes 1.1.0", "fnv", - "futures 0.3.19", + "futures 0.3.21", "futures-timer 3.0.2", "hex", "hyper", @@ -7634,7 +7789,7 @@ dependencies = [ "num_cpus", "once_cell", "parity-scale-codec 2.3.1", - "parking_lot", + "parking_lot 0.11.2", "rand 0.7.3", "sc-client-api", "sc-network", @@ -7649,9 +7804,9 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "libp2p", "log", "sc-utils", @@ -7662,7 +7817,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -7671,15 +7826,15 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "hash-db", "jsonrpc-core", "jsonrpc-pubsub", "log", "parity-scale-codec 2.3.1", - "parking_lot", + "parking_lot 0.11.2", "sc-block-builder", "sc-chain-spec", "sc-client-api", @@ -7702,16 +7857,16 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", "jsonrpc-pubsub", "log", "parity-scale-codec 2.3.1", - "parking_lot", + "parking_lot 0.11.2", "sc-chain-spec", "sc-transaction-pool-api", "serde", @@ -7727,9 +7882,9 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "jsonrpc-core", "jsonrpc-http-server", "jsonrpc-ipc-server", @@ -7744,12 +7899,12 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "async-trait", "directories", "exit-future", - "futures 0.3.19", + "futures 0.3.21", "futures-timer 3.0.2", "hash-db", "jsonrpc-core", @@ -7757,7 +7912,7 @@ dependencies = [ "log", "parity-scale-codec 2.3.1", "parity-util-mem", - "parking_lot", + "parking_lot 0.11.2", "pin-project 1.0.10", "rand 0.7.3", "sc-block-builder", @@ -7808,13 +7963,13 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "log", "parity-scale-codec 2.3.1", "parity-util-mem", "parity-util-mem-derive", - "parking_lot", + "parking_lot 0.11.2", "sc-client-api", "sp-core", ] @@ -7822,7 +7977,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -7844,13 +7999,13 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "chrono", - "futures 0.3.19", + "futures 0.3.21", "libp2p", "log", - "parking_lot", + "parking_lot 0.11.2", "pin-project 1.0.10", "rand 0.7.3", "serde", @@ -7862,7 +8017,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "ansi_term", "atty", @@ -7871,7 +8026,7 @@ dependencies = [ "libc", "log", "once_cell", - "parking_lot", + "parking_lot 0.11.2", "regex", "rustc-hash", "sc-client-api", @@ -7893,9 +8048,9 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ - "proc-macro-crate 1.1.0", + "proc-macro-crate 1.1.3", "proc-macro2", "quote", "syn", @@ -7904,15 +8059,15 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "intervalier", "linked-hash-map", "log", "parity-scale-codec 2.3.1", "parity-util-mem", - "parking_lot", + "parking_lot 0.11.2", "retain_mut", "sc-client-api", "sc-transaction-pool-api", @@ -7931,10 +8086,10 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "derive_more", - "futures 0.3.19", + "futures 0.3.21", "log", "serde", "sp-blockchain", @@ -7945,9 +8100,9 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "futures-timer 3.0.2", "lazy_static", "prometheus", @@ -7973,7 +8128,7 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baeb2780690380592f86205aa4ee49815feb2acad8c2f59e6dd207148c3f1fcd" dependencies = [ - "proc-macro-crate 1.1.0", + "proc-macro-crate 1.1.3", "proc-macro2", "quote", "syn", @@ -8075,9 +8230,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fed7948b6c68acbb6e20c334f55ad635dc0f75506963de4464289fbd3b051ac" +checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" dependencies = [ "bitflags", "core-foundation", @@ -8088,9 +8243,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a57321bf8bc2362081b2599912d2961fe899c0efadf1b4b2f8d48b3e253bb96c" +checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" dependencies = [ "core-foundation-sys", "libc", @@ -8146,9 +8301,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.4" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012" +checksum = "d65bd28f48be7196d222d95b9243287f48d27aca604e08497513019ff0502cc4" [[package]] name = "semver-parser" @@ -8206,9 +8361,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.78" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d23c1ba4cf0efd44be32017709280b32d1cea5c3f1275c3b6d9e8bc54f758085" +checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" dependencies = [ "itoa 1.0.1", "ryu", @@ -8245,7 +8400,7 @@ checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" dependencies = [ "block-buffer 0.9.0", "cfg-if 1.0.0", - "cpufeatures 0.2.1", + "cpufeatures 0.2.2", "digest 0.9.0", "opaque-debug 0.3.0", ] @@ -8270,7 +8425,7 @@ checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ "block-buffer 0.9.0", "cfg-if 1.0.0", - "cpufeatures 0.2.1", + "cpufeatures 0.2.2", "digest 0.9.0", "opaque-debug 0.3.0", ] @@ -8341,15 +8496,15 @@ dependencies = [ [[package]] name = "siphasher" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a86232ab60fa71287d7f2ddae4a7073f6b7aac33631c3015abb556f08c6d0a3e" +checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" [[package]] name = "slab" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" +checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32" [[package]] name = "smallvec" @@ -8372,7 +8527,7 @@ dependencies = [ "aes-gcm", "blake2", "chacha20poly1305", - "rand 0.8.4", + "rand 0.8.5", "rand_core 0.6.3", "ring", "rustc_version 0.3.3", @@ -8411,7 +8566,7 @@ dependencies = [ "base64 0.12.3", "bytes 0.5.6", "flate2", - "futures 0.3.19", + "futures 0.3.21", "httparse", "log", "rand 0.7.3", @@ -8421,7 +8576,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "hash-db", "log", @@ -8438,10 +8593,10 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "blake2-rfc", - "proc-macro-crate 1.1.0", + "proc-macro-crate 1.1.3", "proc-macro2", "quote", "syn", @@ -8450,7 +8605,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "parity-scale-codec 2.3.1", "scale-info", @@ -8463,7 +8618,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "integer-sqrt", "num-traits", @@ -8478,7 +8633,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "parity-scale-codec 2.3.1", "scale-info", @@ -8491,7 +8646,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "async-trait", "parity-scale-codec 2.3.1", @@ -8503,7 +8658,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "parity-scale-codec 2.3.1", "sp-api", @@ -8515,13 +8670,13 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "log", "lru", "parity-scale-codec 2.3.1", - "parking_lot", + "parking_lot 0.11.2", "sp-api", "sp-consensus", "sp-database", @@ -8533,10 +8688,10 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "async-trait", - "futures 0.3.19", + "futures 0.3.21", "futures-timer 3.0.2", "log", "parity-scale-codec 2.3.1", @@ -8552,7 +8707,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "async-trait", "parity-scale-codec 2.3.1", @@ -8570,7 +8725,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "async-trait", "merlin 2.0.1", @@ -8593,7 +8748,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "parity-scale-codec 2.3.1", "scale-info", @@ -8604,7 +8759,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "parity-scale-codec 2.3.1", "schnorrkel 0.9.1", @@ -8616,7 +8771,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "base58", "bitflags", @@ -8624,7 +8779,7 @@ dependencies = [ "byteorder", "dyn-clonable", "ed25519-dalek", - "futures 0.3.19", + "futures 0.3.21", "hash-db", "hash256-std-hasher", "hex", @@ -8636,7 +8791,7 @@ dependencies = [ "num-traits", "parity-scale-codec 2.3.1", "parity-util-mem", - "parking_lot", + "parking_lot 0.11.2", "primitive-types", "rand 0.7.3", "regex", @@ -8663,16 +8818,16 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "kvdb", - "parking_lot", + "parking_lot 0.11.2", ] [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "proc-macro2", "quote", @@ -8682,7 +8837,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "environmental", "parity-scale-codec 2.3.1", @@ -8693,7 +8848,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "finality-grandpa", "log", @@ -8711,7 +8866,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -8725,14 +8880,14 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "hash-db", "libsecp256k1 0.6.0", "log", "parity-scale-codec 2.3.1", - "parking_lot", + "parking_lot 0.11.2", "sp-core", "sp-externalities", "sp-keystore", @@ -8749,7 +8904,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "lazy_static", "sp-core", @@ -8760,14 +8915,14 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "async-trait", "derive_more", - "futures 0.3.19", + "futures 0.3.21", "merlin 2.0.1", "parity-scale-codec 2.3.1", - "parking_lot", + "parking_lot 0.11.2", "schnorrkel 0.9.1", "serde", "sp-core", @@ -8777,7 +8932,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "zstd", ] @@ -8785,7 +8940,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "parity-scale-codec 2.3.1", "scale-info", @@ -8800,9 +8955,9 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ - "proc-macro-crate 1.1.0", + "proc-macro-crate 1.1.3", "proc-macro2", "quote", "syn", @@ -8811,7 +8966,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "sp-api", "sp-core", @@ -8821,7 +8976,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "backtrace", ] @@ -8829,7 +8984,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "rustc-hash", "serde", @@ -8839,7 +8994,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "either", "hash256-std-hasher", @@ -8861,7 +9016,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec 2.3.1", @@ -8878,19 +9033,33 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "Inflector", - "proc-macro-crate 1.1.0", + "proc-macro-crate 1.1.3", "proc-macro2", "quote", "syn", ] +[[package]] +name = "sp-sandbox" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +dependencies = [ + "log", + "parity-scale-codec 2.3.1", + "sp-core", + "sp-io", + "sp-std", + "sp-wasm-interface", + "wasmi", +] + [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "serde", "serde_json", @@ -8899,7 +9068,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "parity-scale-codec 2.3.1", "scale-info", @@ -8913,7 +9082,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "parity-scale-codec 2.3.1", "scale-info", @@ -8924,13 +9093,13 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "hash-db", "log", "num-traits", "parity-scale-codec 2.3.1", - "parking_lot", + "parking_lot 0.11.2", "rand 0.7.3", "smallvec", "sp-core", @@ -8947,12 +9116,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "impl-serde", "parity-scale-codec 2.3.1", @@ -8965,7 +9134,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "log", "sp-core", @@ -8978,7 +9147,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -8994,7 +9163,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "parity-scale-codec 2.3.1", "sp-std", @@ -9006,7 +9175,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "sp-api", "sp-runtime", @@ -9015,7 +9184,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "async-trait", "log", @@ -9031,7 +9200,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "hash-db", "memory-db", @@ -9046,7 +9215,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "impl-serde", "parity-scale-codec 2.3.1", @@ -9062,7 +9231,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "parity-scale-codec 2.3.1", "proc-macro2", @@ -9073,7 +9242,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec 2.3.1", @@ -9089,11 +9258,12 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "ss58-registry" -version = "1.12.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8319f44e20b42e5c11b88b1ad4130c35fe2974665a007b08b02322070177136a" +checksum = "7b84a70894df7a73666e0694f44b41a9571625e9546fb58a0818a565d2c7e084" dependencies = [ "Inflector", + "num-format", "proc-macro2", "quote", "serde", @@ -9123,31 +9293,31 @@ dependencies = [ "lazy_static", "nalgebra", "num-traits", - "rand 0.8.4", + "rand 0.8.5", ] [[package]] name = "string_cache" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "923f0f39b6267d37d23ce71ae7235602134b250ace715dd2c90421998ddac0c6" +checksum = "213494b7a2b503146286049378ce02b482200519accc31872ee8be91fa820a08" dependencies = [ - "lazy_static", "new_debug_unreachable", - "parking_lot", - "phf_shared", + "once_cell", + "parking_lot 0.12.0", + "phf_shared 0.10.0", "precomputed-hash", "serde", ] [[package]] name = "string_cache_codegen" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f24c8e5e19d22a726626f1a5e16fe15b132dcf21d10177fa5a45ce7962996b97" +checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" dependencies = [ - "phf_generator", - "phf_shared", + "phf_generator 0.10.0", + "phf_shared 0.10.0", "proc-macro2", "quote", ] @@ -9175,7 +9345,7 @@ version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" dependencies = [ - "heck", + "heck 0.3.3", "proc-macro-error", "proc-macro2", "quote", @@ -9197,7 +9367,7 @@ version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee8bc6b87a5112aeeab1f4a9f7ab634fe6cbefc4850006df31267f4cfb9e3149" dependencies = [ - "heck", + "heck 0.3.3", "proc-macro2", "quote", "syn", @@ -9219,10 +9389,10 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "frame-system-rpc-runtime-api", - "futures 0.3.19", + "futures 0.3.21", "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", @@ -9241,7 +9411,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "async-std", "derive_more", @@ -9255,10 +9425,10 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "async-trait", - "futures 0.3.19", + "futures 0.3.21", "hex", "parity-scale-codec 2.3.1", "sc-client-api", @@ -9282,7 +9452,7 @@ dependencies = [ [[package]] name = "substrate-test-runtime" version = "2.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "cfg-if 1.0.0", "frame-support", @@ -9324,9 +9494,9 @@ dependencies = [ [[package]] name = "substrate-test-runtime-client" version = "2.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "parity-scale-codec 2.3.1", "sc-block-builder", "sc-client-api", @@ -9344,9 +9514,9 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "substrate-test-utils-derive", "tokio", ] @@ -9354,9 +9524,9 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ - "proc-macro-crate 1.1.0", + "proc-macro-crate 1.1.3", "proc-macro2", "quote", "syn", @@ -9381,7 +9551,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#e20e2391171fbd4ad4e0461d473eb1fbfa4db88b" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" dependencies = [ "ansi_term", "build-helper", @@ -9401,9 +9571,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.86" +version = "1.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b" +checksum = "b683b2b825c8eef438b77c36a06dc262294da3d5a5813fac20da149241dcd44d" dependencies = [ "proc-macro2", "quote", @@ -9450,9 +9620,9 @@ dependencies = [ [[package]] name = "tendril" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9ef557cb397a4f0a5a3a628f06515f78563f2209e64d47055d9dc6052bf5e33" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" dependencies = [ "futf", "mac", @@ -9461,9 +9631,9 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" dependencies = [ "winapi-util", ] @@ -9587,18 +9757,19 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.16.1" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c27a64b625de6d309e8c57716ba93021dccf1b3b5c97edd6d3dd2d2135afc0a" +checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee" dependencies = [ "bytes 1.1.0", "libc", "memchr", - "mio 0.7.14", + "mio 0.8.2", "num_cpus", "once_cell", "pin-project-lite 0.2.8", "signal-hook-registry", + "socket2 0.4.4", "tokio-macros", "winapi 0.3.9", ] @@ -9652,9 +9823,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" dependencies = [ "serde", ] @@ -9667,9 +9838,9 @@ checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" [[package]] name = "tracing" -version = "0.1.29" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "375a639232caf30edfc78e8d89b2d4c375515393e7af7e16f01cd96917fb2105" +checksum = "5d0ecdcb44a79f0fe9844f0c4f33a342cbcbb5117de8001e6ba0dc2351327d09" dependencies = [ "cfg-if 1.0.0", "pin-project-lite 0.2.8", @@ -9679,9 +9850,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.18" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f480b8f81512e825f337ad51e94c1eb5d3bbdf2b363dcd01e2b19a9ffe3f8e" +checksum = "2e65ce065b4b5c53e73bb28912318cb8c9e9ad3921f1d669eb0e68b4c8143a2b" dependencies = [ "proc-macro2", "quote", @@ -9690,11 +9861,12 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.21" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4ed65637b8390770814083d20756f87bfa2c21bf2f110babdc5438351746e4" +checksum = "f54c8ca710e81886d498c2fd3331b56c93aa248d49de2222ad2742247c60072f" dependencies = [ "lazy_static", + "valuable", ] [[package]] @@ -9720,9 +9892,9 @@ dependencies = [ [[package]] name = "tracing-serde" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb65ea441fbb84f9f6748fd496cf7f63ec9af5bca94dd86456978d055e8eb28b" +checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" dependencies = [ "serde", "tracing-core", @@ -9738,7 +9910,7 @@ dependencies = [ "chrono", "lazy_static", "matchers", - "parking_lot", + "parking_lot 0.11.2", "regex", "serde", "serde_json", @@ -9790,7 +9962,7 @@ dependencies = [ "ipnet", "lazy_static", "log", - "rand 0.8.4", + "rand 0.8.5", "smallvec", "thiserror", "tinyvec", @@ -9809,7 +9981,7 @@ dependencies = [ "lazy_static", "log", "lru-cache", - "parking_lot", + "parking_lot 0.11.2", "resolv-conf", "smallvec", "thiserror", @@ -9835,7 +10007,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ee73e6e4924fe940354b8d4d98cad5231175d615cd855b758adc658c0aac6a0" dependencies = [ "cfg-if 1.0.0", - "rand 0.8.4", + "rand 0.8.5", "static_assertions", ] @@ -9873,9 +10045,9 @@ checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" [[package]] name = "uint" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1b413ebfe8c2c74a69ff124699dd156a7fa41cb1d09ba6df94aa2f2b0a4a3a" +checksum = "12f03af7ccf01dd611cc450a0d10dbc9b745770d096473e2faf0ca6e2d66d1e0" dependencies = [ "byteorder", "crunchy", @@ -9909,9 +10081,9 @@ dependencies = [ [[package]] name = "unicode-segmentation" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b" +checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" [[package]] name = "unicode-width" @@ -10000,6 +10172,12 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + [[package]] name = "value-bag" version = "1.0.0-alpha.8" @@ -10107,11 +10285,17 @@ version = "0.10.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + [[package]] name = "wasm-bindgen" -version = "0.2.79" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06" +checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad" dependencies = [ "cfg-if 1.0.0", "wasm-bindgen-macro", @@ -10119,9 +10303,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.79" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca" +checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4" dependencies = [ "bumpalo", "lazy_static", @@ -10134,9 +10318,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.29" +version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eb6ec270a31b1d3c7e266b999739109abce8b6c87e4b31fcfcd788b65267395" +checksum = "6f741de44b75e14c35df886aff5f1eb73aa114fa5d4d00dcd37b5e01259bf3b2" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -10146,9 +10330,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.79" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01" +checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -10156,9 +10340,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.79" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc" +checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b" dependencies = [ "proc-macro2", "quote", @@ -10169,9 +10353,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.79" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2" +checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744" [[package]] name = "wasm-gc-api" @@ -10190,9 +10374,9 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "js-sys", - "parking_lot", + "parking_lot 0.11.2", "pin-utils", "wasm-bindgen", "wasm-bindgen-futures", @@ -10208,6 +10392,7 @@ dependencies = [ "downcast-rs", "errno", "libc", + "libm 0.2.2", "memory_units", "num-rational 0.2.4", "num-traits", @@ -10367,7 +10552,7 @@ dependencies = [ "mach", "memoffset", "more-asserts", - "rand 0.8.4", + "rand 0.8.5", "region", "thiserror", "wasmtime-environ", @@ -10388,9 +10573,9 @@ dependencies = [ [[package]] name = "wast" -version = "39.0.0" +version = "40.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9bbbd53432b267421186feee3e52436531fa69a7cfee9403f5204352df3dd05" +checksum = "9bb4f48a8b083dbc50e291e430afb8f524092bb00428957bcc63f49f856c64ac" dependencies = [ "leb128", "memchr", @@ -10399,18 +10584,18 @@ dependencies = [ [[package]] name = "wat" -version = "1.0.41" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab98ed25494f97c69f28758617f27c3e92e5336040b5c3a14634f2dd3fe61830" +checksum = "0401b6395ce0db91629a75b29597ccb66ea29950af9fc859f1bb3a736609c76e" dependencies = [ "wast", ] [[package]] name = "web-sys" -version = "0.3.56" +version = "0.3.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb" +checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283" dependencies = [ "js-sys", "wasm-bindgen", @@ -10446,9 +10631,9 @@ dependencies = [ [[package]] name = "which" -version = "4.2.4" +version = "4.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a5a7e487e921cf220206864a94a89b6c6905bfc19f1057fa26a4cb360e5c1d2" +checksum = "5c4fb54e6113b6a8772ee41c3404fb0301ac79604489467e0a9ce1f3e97c24ae" dependencies = [ "either", "lazy_static", @@ -10504,6 +10689,49 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-sys" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5acdd78cb4ba54c0045ac14f62d8f94a03d10047904ae2a40afa1e99d8f70825" +dependencies = [ + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_msvc" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881d" + +[[package]] +name = "windows_i686_gnu" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed" + +[[package]] +name = "windows_i686_msvc" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9" + [[package]] name = "winreg" version = "0.6.2" @@ -10546,28 +10774,28 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7d9028f208dd5e63c614be69f115c1b53cacc1111437d4c765185856666c107" dependencies = [ - "futures 0.3.19", + "futures 0.3.21", "log", "nohash-hasher", - "parking_lot", - "rand 0.8.4", + "parking_lot 0.11.2", + "rand 0.8.5", "static_assertions", ] [[package]] name = "zeroize" -version = "1.5.2" +version = "1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c88870063c39ee00ec285a2f8d6a966e5b6fb2becc4e8dac77ed0d370ed6006" +checksum = "7eb5728b8afd3f280a869ce1d4c554ffaed35f45c231fc41bfbd0381bef50317" dependencies = [ "zeroize_derive", ] [[package]] name = "zeroize_derive" -version = "1.3.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81e8f13fef10b63c06356d65d416b070798ddabcadc10d3ece0c5be9b3c7eddb" +checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index c275a249ba..9f7ac62878 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,8 +22,8 @@ pallet-authority-discovery = { git = "https://github.com/PolymathNetwork/substra pallet-authorship = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } pallet-babe = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } pallet-balances = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -#pallet-contracts = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -#pallet-contracts-primitives = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +pallet-contracts = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +pallet-contracts-primitives = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } #pallet-contracts-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } #pallet-contracts-rpc-runtime-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } pallet-grandpa = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } diff --git a/pallets/common/src/traits/identity.rs b/pallets/common/src/traits/identity.rs index 8213c2fea3..4de919f50b 100644 --- a/pallets/common/src/traits/identity.rs +++ b/pallets/common/src/traits/identity.rs @@ -33,7 +33,8 @@ use frame_support::{ Parameter, }; use polymesh_primitives::{ - secondary_key::SecondaryKey, AuthorizationData, IdentityClaim, IdentityId, Permissions, Ticker, + secondary_key::SecondaryKey, AuthorizationData, Balance, IdentityClaim, IdentityId, + Permissions, Ticker, }; use scale_info::TypeInfo; use sp_core::H512; @@ -93,6 +94,12 @@ pub trait WeightInfo { /// `l` = Number of pa(L)lets /// `e` = Number of (E)xtrinsics fn permissions_cost(a: u32, p: u32, l: u32, e: u32) -> Weight; + + fn permissions_cost_perms(perms: &Permissions) -> Weight { + let (assets, portfolios, pallets, extrinsics) = perms.counts(); + Self::permissions_cost(assets, portfolios, pallets, extrinsics) + } + fn freeze_secondary_keys() -> Weight; fn unfreeze_secondary_keys() -> Weight; fn add_authorization() -> Weight; @@ -106,11 +113,8 @@ pub trait WeightInfo { fn add_secondary_keys_full( additional_keys: &[SecondaryKeyWithAuth], ) -> Weight { - let perm_cost = additional_keys.iter().fold(0u64, |cost, key_with_auth| { - let (assets, portfolios, pallets, extrinsics) = - key_with_auth.secondary_key.permissions.counts(); - let perm_cost = Self::permissions_cost(assets, portfolios, pallets, extrinsics); - cost.saturating_add(perm_cost) + let perm_cost = additional_keys.iter().fold(0u64, |cost, key| { + cost.saturating_add(Self::permissions_cost_perms(&key.secondary_key.permissions)) }); perm_cost.saturating_add(Self::add_secondary_keys_with_authorization( additional_keys.len() as u32, @@ -120,21 +124,15 @@ pub trait WeightInfo { /// Add complexity cost of Permissions to `add_authorization` extrinsic. fn add_authorization_full(data: &AuthorizationData) -> Weight { let perm_cost = match data { - AuthorizationData::JoinIdentity(perms) => { - let (assets, portfolios, pallets, extrinsics) = perms.counts(); - Self::permissions_cost(assets, portfolios, pallets, extrinsics) - } + AuthorizationData::JoinIdentity(perms) => Self::permissions_cost_perms(perms), _ => 0, }; - perm_cost.saturating_add(Self::add_authorization()) } /// Add complexity cost of Permissions to `set_secondary_key_permissions` extrinsic. fn set_secondary_key_permissions_full(perms: &Permissions) -> Weight { - let (assets, portfolios, pallets, extrinsics) = perms.counts(); - Self::permissions_cost(assets, portfolios, pallets, extrinsics) - .saturating_add(Self::set_secondary_key_permissions()) + Self::permissions_cost_perms(perms).saturating_add(Self::set_secondary_key_permissions()) } } @@ -155,7 +153,7 @@ pub trait Config: CommonConfig + pallet_timestamp::Config + crate::traits::base: /// Group module type CddServiceProviders: GroupTrait; /// Balances module - type Balances: Currency; + type Balances: Currency; /// Charges fee for forwarded call type ChargeTxFeeTarget: ChargeTxFee; /// Used to check and update CDD diff --git a/pallets/contracts-old/Cargo.toml b/pallets/contracts-old/Cargo.toml new file mode 100644 index 0000000000..138098abf4 --- /dev/null +++ b/pallets/contracts-old/Cargo.toml @@ -0,0 +1,54 @@ +[package] +name = "polymesh-contracts" +version = "0.1.0" +authors = ["Polymath Inc."] +edition = "2018" + +[dependencies] + +# Substrate specific +serde = { version = "1.0.104", default-features = false } +codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } +frame-system = { version = "4.0.0-dev", default-features = false } +frame-support = { version = "4.0.0-dev", default-features = false } +pallet-contracts = { version = "4.0.0-dev", default-features = false } +sp-core = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0-dev", default-features = false } +wat = { version = "1.0", optional = true, default-features = false } +parity-wasm = { version = "0.41.0", default-features = false } + +# Polymesh specific +pallet-base = { path = "../base", default-features = false } +pallet-identity = { path = "../identity", default-features = false } +polymesh-primitives = { path = "../../primitives", default-features = false } +polymesh-common-utilities = { path = "../common", default-features = false } +pallet-protocol-fee = { path = "../protocol-fee", default-features = false } + +# Only in STD env +frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } + +[features] +default = ["std"] +no_std = [] +std = [ + "serde/std", + "sp-io/std", + "codec/std", + "sp-std/std", + "sp-core/std", + "parity-wasm/std", + "sp-runtime/std", + "frame-system/std", + "frame-support/std", + "pallet-identity/std", + "pallet-contracts/std", + "polymesh-primitives/std", + "pallet-protocol-fee/std", + "polymesh-common-utilities/std", +] +runtime-benchmarks = [ + "frame-benchmarking", + "wat" +] diff --git a/pallets/contracts/fixtures/dummy.wat b/pallets/contracts-old/fixtures/dummy.wat similarity index 100% rename from pallets/contracts/fixtures/dummy.wat rename to pallets/contracts-old/fixtures/dummy.wat diff --git a/pallets/contracts/fixtures/ptm.wat b/pallets/contracts-old/fixtures/ptm.wat similarity index 100% rename from pallets/contracts/fixtures/ptm.wat rename to pallets/contracts-old/fixtures/ptm.wat diff --git a/pallets/contracts-old/src/benchmarking.rs b/pallets/contracts-old/src/benchmarking.rs new file mode 100644 index 0000000000..4b50e2aa09 --- /dev/null +++ b/pallets/contracts-old/src/benchmarking.rs @@ -0,0 +1,263 @@ +// This file is part of the Polymesh distribution (https://github.com/PolymathNetwork/Polymesh). +// Copyright (c) 2020 Polymath + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, version 3. + +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +use crate::*; + +use frame_benchmarking::benchmarks; +use frame_support::storage::IterableStorageMap; +use frame_support::weights::Weight; +use frame_system::RawOrigin; +use pallet_contracts::PristineCode; +use parity_wasm::elements::FuncBody; +use polymesh_common_utilities::{ + benchs::{AccountIdOf, UserBuilder}, + constants::ENSURED_MAX_LEN, + TestUtilsFn, +}; +use polymesh_primitives::{MetaDescription, MetaUrl, SmartExtensionType, TemplateMetadata}; +use sp_runtime::traits::Hash; + +type BaseContracts = pallet_contracts::Module; + +const MAX_URL_LENGTH: u32 = ENSURED_MAX_LEN; +const MAX_DESCRIPTION_LENGTH: u32 = ENSURED_MAX_LEN; + +// Copied from - https://github.com/PolymathNetwork/substrate/blob/v2.0.0/frame/contracts/src/benchmarking.rs#L30 +macro_rules! load_module { + ($name:expr) => {{ + let code = include_bytes!(concat!("../fixtures/", $name, ".wat")); + compile_module::(code) + }}; +} + +// Copied from - https://github.com/PolymathNetwork/substrate/blob/v2.0.0/frame/contracts/src/benchmarking.rs#L37 +pub fn compile_module(code: &[u8]) -> (Vec, ::Output) { + let code = sp_std::str::from_utf8(code).expect("Invalid utf8 in wat file."); + let binary = wat::parse_str(code).expect("Failed to compile wat file."); + let hash = T::Hashing::hash(&binary); + (binary, hash) +} + +// Copied from - https://github.com/PolymathNetwork/substrate/blob/v2.0.0/frame/contracts/src/benchmarking.rs#L54 +fn contract_with_call_body(body: FuncBody) -> (Vec, ::Output) { + use parity_wasm::elements::{Instruction::End, Instructions}; + let contract = parity_wasm::builder::ModuleBuilder::new() + // deploy function (idx 0) + .function() + .signature() + .with_params(vec![]) + .with_return_type(None) + .build() + .body() + .with_instructions(Instructions::new(vec![End])) + .build() + .build() + // call function (idx 1) + .function() + .signature() + .with_params(vec![]) + .with_return_type(None) + .build() + .with_body(body) + .build() + .export() + .field("deploy") + .internal() + .func(0) + .build() + .export() + .field("call") + .internal() + .func(1) + .build() + .build(); + let bytes = contract.to_bytes().unwrap(); + let hash = T::Hashing::hash(&bytes); + (bytes, hash) +} + +// Copied from - https://github.com/PolymathNetwork/substrate/blob/v2.0.0/frame/contracts/src/benchmarking.rs#L77 +fn expanded_contract(target_bytes: u32) -> (Vec, ::Output) { + use parity_wasm::elements::{ + BlockType, + Instruction::{self, End, I32Const, If, Return}, + Instructions, + }; + // Base size of a contract is 47 bytes and each expansion adds 6 bytes. + // We do one expansion less to account for the code section and function body + // size fields inside the binary wasm module representation which are leb128 encoded + // and therefore grow in size when the contract grows. We are not allowed to overshoot + // because of the maximum code size that is enforced by `put_code`. + let expansions = (target_bytes.saturating_sub(47) / 6).saturating_sub(1) as usize; + const EXPANSION: [Instruction; 4] = [I32Const(0), If(BlockType::NoResult), Return, End]; + let instructions = Instructions::new( + EXPANSION + .iter() + .cycle() + .take(EXPANSION.len() * expansions) + .cloned() + .chain(sp_std::iter::once(End)) + .collect(), + ); + contract_with_call_body::(FuncBody::new(Vec::new(), instructions)) +} + +pub fn emulate_blueprint_in_storage( + instantiation_fee: u32, + origin: RawOrigin, + expanded: &'static str, +) -> Result<::Output, DispatchError> { + let url = Some(MetaUrl::from( + vec![b'U'; MAX_URL_LENGTH as usize].as_slice(), + )); + let description = MetaDescription::from(vec![b'D'; MAX_DESCRIPTION_LENGTH as usize].as_slice()); + let meta_info = TemplateMetadata { + url, + se_type: SmartExtensionType::TransferManager, + usage_fee: 100u32.into(), + description, + version: 5000, + }; + let (wasm_blob, code_hash) = if expanded == "" { + expanded_contract::(BaseContracts::::current_schedule().max_code_size) + } else { + if expanded == "dummy" { + load_module!("dummy") + } else { + load_module!("ptm") + } + }; + Module::::set_put_code_flag(RawOrigin::Root.into(), true).unwrap(); + Module::::put_code( + origin.into(), + meta_info, + instantiation_fee.into(), + wasm_blob, + ) + .unwrap(); + Ok(code_hash) +} + +benchmarks! { + where_clause { where T: TestUtilsFn> } + + _{} + + put_code { + // Catalyst for the code size length + let l in 1 .. BaseContracts::::current_schedule().max_code_size; + // Catalyst for the MetaUrl length. + let u in 1 .. MAX_URL_LENGTH; + // Catalyst for the MetaDescription length. + let d in 1 .. MAX_DESCRIPTION_LENGTH; + + let url = Some(MetaUrl::from(vec![b'U'; u as usize].as_slice())); + let description = MetaDescription::from(vec![b'D'; d as usize].as_slice()); + let meta_info = TemplateMetadata { + url, + se_type: SmartExtensionType::TransferManager, + usage_fee: 100u32.into(), + description, + version: 5000 + }; + let (wasm_blob, code_hash) = expanded_contract::(l); + let user = UserBuilder::::default().generate_did().build("creator"); + Module::::set_put_code_flag(RawOrigin::Root.into(), true).unwrap(); + + }: _(user.origin, meta_info, 1000u32.into(), wasm_blob) + verify { + assert!(matches!(Module::::get_metadata_of(code_hash), meta_info), "Contracts_putCode: Meta info set incorrect"); + assert!(PristineCode::::get(code_hash).is_some(), "Contracts_putCode: Base contract doesn't get updated with given code hash"); + } + + // No catalyst. + instantiate { + let data = vec![0u8; 128]; + let max_fee = 100; + let creator = UserBuilder::::default().generate_did().build("creator"); + let code_hash = emulate_blueprint_in_storage::(max_fee, creator.origin, "dummy").unwrap(); + let deployer = UserBuilder::::default().generate_did().build("deployer"); + }: _(deployer.origin, 1_000_000u32.into(), Weight::max_value(), code_hash, data, max_fee.into()) + verify { + let (key, value) = ExtensionInfo::::iter().next().unwrap(); + let attributes = Module::::ext_details(&code_hash); + assert!(matches!(value, attributes), "Contracts_instantiate: Storage doesn't set correctly"); + } + + // No catalyst. + freeze_instantiation { + let creator = UserBuilder::::default().generate_did().build("creator"); + let code_hash = emulate_blueprint_in_storage::(100, creator.origin.clone(), "dummy").unwrap(); + }: _(creator.origin, code_hash) + verify { + assert!(Module::::get_template_details(code_hash).is_instantiation_frozen(), "Contracts_freeze_instantiation: Failed to freeze instantiation"); + } + + // No catalyst. + unfreeze_instantiation { + let creator = UserBuilder::::default().generate_did().build("creator"); + let code_hash = emulate_blueprint_in_storage::(100, creator.origin.clone(), "dummy").unwrap(); + Module::::freeze_instantiation(creator.origin.clone().into(), code_hash).unwrap(); + }: _(creator.origin, code_hash) + verify { + assert!(!Module::::get_template_details(code_hash).is_instantiation_frozen(), "Contracts_unfreeze_instantiation: Failed to unfreeze instantiation"); + } + + // No catalyst. + transfer_template_ownership { + let creator = UserBuilder::::default().generate_did().build("creator"); + let code_hash = emulate_blueprint_in_storage::(100, creator.origin.clone(), "dummy").unwrap(); + let new_owner = UserBuilder::::default().generate_did().build("newOwner"); + }: _(creator.origin, code_hash, new_owner.did()) + verify { + assert_eq!(Module::::get_template_details(code_hash).owner, new_owner.did(), "Contracts_transfer_template_ownership: Failed to transfer ownership"); + } + + // No catalyst. + change_template_fees { + let creator = UserBuilder::::default().generate_did().build("creator"); + let code_hash = emulate_blueprint_in_storage::(100, creator.origin.clone(), "").unwrap(); + }: _(creator.origin, code_hash, Some(500u32.into()), Some(650u32.into())) + verify { + assert_eq!(Module::::get_template_details(code_hash).get_instantiation_fee(), 500u32.into(), "Contracts_change_template_fees: Failed to change the instantiation fees"); + assert_eq!(Module::::get_metadata_of(code_hash).usage_fee, 650u32.into(), "Contracts_change_template_fees: Failed to change the usage fees"); + } + + change_template_meta_url { + // Catalyst for the MetaUrl length. + let u in 1 .. MAX_URL_LENGTH; + let url = Some(MetaUrl::from(vec![b'U'; u as usize].as_slice())); + let creator = UserBuilder::::default().generate_did().build("creator"); + let code_hash = emulate_blueprint_in_storage::(100, creator.origin.clone(), "").unwrap(); + }: _(creator.origin, code_hash, url.clone()) + verify { + assert_eq!(Module::::get_metadata_of(code_hash).url, url, "Contracts_change_template_meta_url: Failed to change the url of template"); + } + + // No catalyst. + update_schedule { + let schedule = Schedule { + version: 1, + .. Default::default() + }; + }: _(RawOrigin::Root, schedule) + + set_put_code_flag { + assert!(!Module::::is_put_code_enabled(), "Contracts_set_put_code_flag: Unexpected initial state"); + }: _(RawOrigin::Root, true) + verify { + assert!(Module::::is_put_code_enabled(), "Contracts_set_put_code_flag: Failed to change the flag"); + } +} diff --git a/pallets/contracts-old/src/lib.rs b/pallets/contracts-old/src/lib.rs new file mode 100644 index 0000000000..2269b0ba56 --- /dev/null +++ b/pallets/contracts-old/src/lib.rs @@ -0,0 +1,453 @@ +// This file is part of the Polymesh distribution (https://github.com/PolymathNetwork/Polymesh). +// Copyright (c) 2020 Polymath + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, version 3. + +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +// Ensure we're `no_std` when compiling for Wasm. +#![cfg_attr(not(feature = "std"), no_std)] + +#[cfg(feature = "runtime-benchmarks")] +pub mod benchmarking; + +use core::mem; +use frame_support::{ + decl_error, decl_module, decl_storage, + dispatch::{DispatchError, DispatchResult, DispatchResultWithPostInfo}, + ensure, + traits::Get, + weights::DispatchClass::Operational, +}; +use frame_system::ensure_root; +use pallet_base::{ensure_opt_string_limited, ensure_string_limited}; +use pallet_contracts::{weights::WeightInfo as _, BalanceOf, CodeHash, Schedule}; +use pallet_identity as identity; +pub use polymesh_common_utilities::traits::contracts::{Event, Trait, WeightInfo}; +use polymesh_common_utilities::{ + protocol_fee::{ChargeProtocolFee, ProtocolOp}, + traits::contracts::ContractsFn, + with_transaction, +}; +use polymesh_primitives::{ + ExtensionAttributes, Gas, IdentityId, MetaUrl, SmartExtensionType, TemplateDetails, + TemplateMetadata, +}; +use sp_core::crypto::UncheckedFrom; +use sp_runtime::{ + traits::{Hash, StaticLookup}, + Perbill, SaturatedConversion, +}; +use sp_std::prelude::*; + +type Identity = identity::Module; +type Contracts = pallet_contracts::Module; + +pub const INSTANTIATE_WITH_CODE_EXTRA: u64 = 50_000_000; +const INSTANTIATE_EXTRA: u64 = 500_000_000; + +decl_storage! { + trait Store for Module as ContractsWrapper + where + T::AccountId: UncheckedFrom + AsRef<[u8]> + { + /// Store the meta details of the smart extension template. + pub MetadataOfTemplate get(fn get_metadata_of): map hasher(identity) CodeHash => TemplateMetadata>; + /// Store the details of the template (Ex- owner, frozen etc). + pub TemplateInfo get(fn get_template_details): map hasher(identity) CodeHash => TemplateDetails>; + /// Details of extension get updated. + pub ExtensionInfo get(fn extension_info): map hasher(identity) T::AccountId => ExtensionAttributes>; + /// Nonce for the smart extension account id generation. + /// Using explicit nonce as in batch transaction accounts nonce doesn't get incremented. + pub ExtensionNonce get(fn extension_nonce): u64; + /// Store if `put_code` extrinsic is enabled or disabled. + pub EnablePutCode get(fn is_put_code_enabled) config(enable_put_code): bool; + } +} + +decl_error! { + pub enum Error for Module + where + T::AccountId: UncheckedFrom, + T::AccountId: AsRef<[u8]>, + { + /// Instantiation is not allowed. + InstantiationIsNotAllowed, + /// Smart extension template not exist in the storage. + TemplateNotExists, + /// When instantiation of the template is already frozen. + InstantiationAlreadyFrozen, + /// When instantiation of the template is already un-frozen. + InstantiationAlreadyUnFrozen, + /// When un-authorized personnel try to access the un-authorized extrinsic. + UnAuthorizedOrigin, + /// Given identityId is not CDD. + NewOwnerIsNotCDD, + /// Insufficient max_fee provided by the user to instantiate the SE. + InsufficientMaxFee, + /// `put_code` extrinsic is disabled. See `set_put_code_flag` extrinsic. + PutCodeIsNotAllowed, + } +} + +decl_module! { + // Wrap dispatchable functions for contracts so that we can add additional gating logic. + pub struct Module for enum Call + where + origin: T::Origin, + T::AccountId: UncheckedFrom, + T::AccountId: AsRef<[u8]>, + { + + /// Initialize the default event for this module. + fn deposit_event() = default; + + /// Error type. + type Error = Error; + + /// The minimum amount required to generate a tombstone. + const NetworkShareInInstantiationFee: Perbill = T::NetworkShareInFee::get(); + + // Simply forwards to the `update_schedule` function in the Contract module. + #[weight = ::WeightInfo::update_schedule()] + pub fn update_schedule(origin, schedule: Schedule) -> DispatchResultWithPostInfo { + Contracts::::update_schedule(origin, schedule) + } + + /// Enable or disable the extrinsic `put_code` in this module. + /// + /// ## Arguments + /// - `origin` which must be root. + /// - `is_enabled` is the new value for this flag. + /// + /// ## Errors + /// - `BadOrigin` if caller is not root. + /// + /// ## Permissions + /// None + #[weight = (::WeightInfo::set_put_code_flag(), Operational)] + pub fn set_put_code_flag(origin, is_enabled: bool) -> DispatchResult { + Self::base_set_put_code_flag(origin, is_enabled) + } + + /// Simply forwards to the `put_code` function in the Contract module. + /// + /// # Additional functionality + /// 1. Allow origin to pass some meta-details related to template code. + /// 2. Charge protocol fee for deploying the template. + /// + /// # Errors + /// - `PutCodeIsNotAllowed` if the `put_code` flag is false. See `set_put_code_flag()`. + /// - `frame_system::BadOrigin` if `origin` is not signed. + /// - `pallet_permission::Error::::UnAutorizedCaller` if `origin` does not have a valid + /// IdentityId. + /// - `TooLong` if the strings embedded in `meta_info` are too long. + /// - `pallet_contrats::Error::::CodeTooLarge` if `code` length is grater than the chain + /// setting for `pallet_contrats::max_code_size`. + /// - Before `code` is inserted, some checks are performed on it, and them could raise up + /// some errors. Please see `pallet_contracts::wasm::prepare_contract` for details. + #[weight = + ::WeightInfo::instantiate_with_code( + code.len() as u32 / 1024, + salt.len() as u32 / 1024, + ) + .saturating_add(*gas_limit) + .saturating_add(INSTANTIATE_WITH_CODE_EXTRA) + ] + pub fn instantiate_with_code( + origin, + #[compact] endowment: BalanceOf, + #[compact] gas_limit: Gas, + code: Vec, + data: Vec, + salt: Vec, + meta_info: TemplateMetadata>, + instantiation_fee: BalanceOf, + ) -> DispatchResultWithPostInfo { + ensure!(Self::is_put_code_enabled(), Error::::PutCodeIsNotAllowed); + let p_origin = Identity::::ensure_origin_call_permissions(origin.clone())?; + + // Ensure strings are limited in length. + ensure_string_limited::(&meta_info.description)?; + ensure_opt_string_limited::(meta_info.url.as_deref())?; + if let SmartExtensionType::Custom(ty) = &meta_info.se_type { + ensure_string_limited::(ty)?; + } + + // Save metadata related to the SE template + // Generate the code_hash here as well because there is no way + // to read it directly from the upstream `pallet-contracts` module. + let code_hash = T::Hashing::hash(&code); + let contract_address = Contracts::::contract_address(&p_origin.sender, &code_hash, &salt); + + // Rollback the `put_code()` if user is not able to pay the protocol-fee. + let post_info = with_transaction(|| -> DispatchResultWithPostInfo { + // Charge the protocol fee, update nonce, and instantiate the code. + + T::ProtocolFee::charge_fee(ProtocolOp::ContractsPutCode)?; + ExtensionNonce::mutate(|n| *n = *n + 1u64); + Contracts::::instantiate_with_code(origin, endowment, gas_limit, code, data, salt) + })?; + + // Update the storage. + >::insert(&code_hash, TemplateDetails { + instantiation_fee, + owner: p_origin.primary_did.clone(), + frozen: false + }); + >::insert(&code_hash, meta_info); + + // Update the usage fee for the extension instance. + >::insert(contract_address, Self::ext_details(&code_hash)); + + Ok(post_info) + } + + // Simply forwards to the `call` function in the Contract module. + #[weight = ::WeightInfo::call( + ::MaxCodeSize::get() / 1024 + ).saturating_add(*gas_limit)] + pub fn call( + origin, + dest: ::Source, + #[compact] value: BalanceOf, + #[compact] gas_limit: Gas, + data: Vec + ) -> DispatchResultWithPostInfo { + Contracts::::call(origin, dest, value, gas_limit, data) + } + + /// Simply forwards to the `instantiate` function in the Contract module. + /// + /// # Additional functionality + /// 1. Check whether instantiation of given code_hash is allowed or not. + /// 2. Charge instantiation fee. + /// + /// # Errors + /// InstantiationIsNotAllowed - It occurred when instantiation of the template is frozen. + /// InsufficientMaxFee - Provided max_fee is less than required. + #[weight = ::WeightInfo::instantiate().saturating_add(*gas_limit)] + pub fn instantiate( + origin, + #[compact] endowment: BalanceOf, + #[compact] gas_limit: Gas, + code_hash: CodeHash, + data: Vec, + salt: Vec, + max_fee: BalanceOf + ) -> DispatchResultWithPostInfo { + let sender = Identity::::ensure_origin_call_permissions(origin.clone())?.sender; + // Access the meta details of SE template + let template_details = Self::get_template_details(code_hash); + + // Check whether instantiation is allowed or not. + ensure!(!template_details.is_instantiation_frozen(), Error::::InstantiationIsNotAllowed); + + // Check instantiation fee should be <= max_fee. + let instantiation_fee = template_details.get_instantiation_fee(); + ensure!(instantiation_fee <= max_fee, Error::::InsufficientMaxFee); + + let contract_address = Contracts::::contract_address(&sender, &code_hash, &salt); + let mut post_info = with_transaction(|| { + // Update the extension nonce. + ExtensionNonce::mutate(|n| *n = *n + 1u64); + // Charge instantiation fee + let fee = (instantiation_fee.saturated_into::()).into(); + let owner_pk = Self::get_primary_key(&template_details.owner); + T::ProtocolFee::charge_extension_instantiation_fee(fee, owner_pk, T::NetworkShareInFee::get())?; + T::ProtocolFee::charge_fee(ProtocolOp::ContractsPutCode)?; + + // Generate the contract address. Generating here to avoid cloning of the vec. + // transmit the call to the base `pallet-contracts` module. + Contracts::::instantiate(origin, endowment, gas_limit, code_hash, data, salt) + })?; + if let Some(ref mut actual_weight) = post_info.actual_weight { + *actual_weight = actual_weight.saturating_add(INSTANTIATE_EXTRA); + } + + // Update the usage fee for the extension instance. + >::insert(contract_address, Self::ext_details(&code_hash)); + + // Update the actual weight of the extrinsic. + Ok(post_info) + } + + /// Allows a smart extension template owner to freeze the instantiation. + /// + /// # Arguments + /// * origin - Only owner of the template is allowed to execute the dispatchable. + /// * code_hash - Unique hash of the smart extension template. + #[weight = ::WeightInfo::freeze_instantiation()] + pub fn freeze_instantiation(origin, code_hash: CodeHash) -> DispatchResult { + // Ensure whether the extrinsic is signed & validate the `code_hash`. + let (did, template_details) = Self::ensure_signed_and_template_exists(origin, code_hash)?; + + // If instantiation is already frozen then there is no point of changing the storage value. + ensure!(!template_details.is_instantiation_frozen(), Error::::InstantiationAlreadyFrozen); + // Change the `frozen` variable to `true`. + >::mutate(&code_hash, |template_details| template_details.frozen = true); + + // Emit event. + Self::deposit_event(Event::::InstantiationFreezed(did, code_hash)); + Ok(()) + } + + /// Allows a smart extension template owner to un freeze the instantiation. + /// + /// # Arguments + /// * origin - Only owner of the template is allowed to execute the dispatchable. + /// * code_hash - Unique hash of the smart extension template. + #[weight = ::WeightInfo::unfreeze_instantiation()] + pub fn unfreeze_instantiation(origin, code_hash: CodeHash) -> DispatchResult { + // Ensure whether the extrinsic is signed & validate the `code_hash`. + let (did, template_details) = Self::ensure_signed_and_template_exists(origin, code_hash)?; + + // If instantiation is already un-frozen then there is no point of changing the storage value. + ensure!(template_details.is_instantiation_frozen(), Error::::InstantiationAlreadyUnFrozen); + // Change the `frozen` variable to `false`. + >::mutate(&code_hash, |template_details| template_details.frozen = false); + + // Emit event. + Self::deposit_event(Event::::InstantiationUnFreezed(did, code_hash)); + Ok(()) + } + + /// Transfer ownership of the template, Can only be called by the owner of template. + /// `new_owner` should posses the valid CDD claim. + /// + /// # Arguments + /// * origin Owner of the provided code_hash. + /// * code_hash Unique identifer of the template. + /// * new_owner Identity that will be the new owner of the provided code_hash. + #[weight = ::WeightInfo::transfer_template_ownership()] + pub fn transfer_template_ownership(origin, code_hash: CodeHash, new_owner: IdentityId) -> DispatchResult { + // Ensure whether the extrinsic is signed & validate the `code_hash`. + let (did, _) = Self::ensure_signed_and_template_exists(origin, code_hash)?; + + // Ensuring the `new_owner` is CDD or not. + ensure!(Identity::::has_valid_cdd(new_owner), Error::::NewOwnerIsNotCDD); + + // Change the `owner` variable value to the given did. + >::mutate(&code_hash, |template_details| template_details.owner = new_owner); + + // Emit event. + Self::deposit_event(Event::::TemplateOwnershipTransferred(did, code_hash, new_owner)); + Ok(()) + } + + /// Change the usage fee & the instantiation fee of the smart extension template + /// + /// # Arguments + /// * origin - Only owner of template is allowed to execute the dispatchable. + /// * code_hash - Unique hash of the smart extension template. + /// * new_instantiation_fee - New value of instantiation fee for the smart extension template. + /// * new_usage_fee - New value of usage fee for the smart extension template. + #[weight = ::WeightInfo::change_template_fees()] + pub fn change_template_fees(origin, code_hash: CodeHash, new_instantiation_fee: Option>, new_usage_fee: Option>) -> DispatchResult { + // Ensure whether the extrinsic is signed & validate the `code_hash`. + let (did, _) = Self::ensure_signed_and_template_exists(origin, code_hash)?; + + // Update the fees + if let Some(usage_fee) = new_usage_fee { + // Update the usage fee for a given code hash. + let old_usage_fee = >::mutate(&code_hash, |metadata| mem::replace(&mut metadata.usage_fee, usage_fee)); + // Emit event with the old & new usage fee. + Self::deposit_event(Event::::TemplateUsageFeeChanged(did, code_hash, old_usage_fee, usage_fee)); + } + if let Some(instantiation_fee) = new_instantiation_fee { + // Update the instantiation fee for a given code_hash. + let old_instantiation_fee = >::mutate(&code_hash, |template_details| mem::replace(&mut template_details.instantiation_fee, instantiation_fee)); + // Emit event with the old & new instantiation fee. + Self::deposit_event(Event::::TemplateInstantiationFeeChanged(did, code_hash, old_instantiation_fee, instantiation_fee)); + } + Ok(()) + } + + /// Change the template meta url. + /// + /// # Arguments + /// * origin - Only owner of template is allowed to execute the dispatchable. + /// * code_hash - Unique hash of the smart extension template. + /// * new_url - New meta url that need to replace with old url. + #[weight = ::WeightInfo::change_template_meta_url(new_url.as_ref().map_or(0, |u| u.0.len()) as u32 )] + pub fn change_template_meta_url(origin, code_hash: CodeHash, new_url: Option) -> DispatchResult { + // Ensure whether the extrinsic is signed & validate the `code_hash`. + let (did, _) = Self::ensure_signed_and_template_exists(origin, code_hash)?; + // Ensure URL is limited in length. + ensure_opt_string_limited::(new_url.as_deref())?; + // Update the usage fee for a given code hash. + let old_url = >::mutate(&code_hash, |metadata| mem::replace(&mut metadata.url, new_url.clone())); + // Emit event with old and new url. + Self::deposit_event(Event::::TemplateMetaUrlChanged(did, code_hash, old_url, new_url)); + Ok(()) + } + } +} + +impl Module +where + T::AccountId: UncheckedFrom, + T::AccountId: AsRef<[u8]>, +{ + // Internal function + // Perform some basic sanity checks + fn ensure_signed_and_template_exists( + origin: T::Origin, + code_hash: CodeHash, + ) -> Result<(IdentityId, TemplateDetails>), DispatchError> { + // Ensure the transaction is signed and ensure `origin` has the required permission to + // execute the dispatchable. + let did = Identity::::ensure_perms(origin)?; + // Validate whether the template exists or not for a given code_hash. + ensure!( + >::contains_key(code_hash), + Error::::TemplateNotExists + ); + + // Access the meta details of SE template + let template_details = Self::get_template_details(code_hash); + // Ensure sender's DID is the owner of the template. + ensure!( + did == template_details.owner, + Error::::UnAuthorizedOrigin + ); + // Return the DID and the template details. + Ok((did, template_details)) + } + + fn get_primary_key(id: &IdentityId) -> T::AccountId { + Identity::::get_primary_key(*id) + } + + fn ext_details(code_hash: &CodeHash) -> ExtensionAttributes> { + let meta_info = Self::get_metadata_of(code_hash); + ExtensionAttributes { + usage_fee: meta_info.usage_fee, + version: meta_info.version, + } + } + + fn base_set_put_code_flag(origin: T::Origin, is_enabled: bool) -> DispatchResult { + ensure_root(origin)?; + EnablePutCode::put(is_enabled); + Self::deposit_event(Event::::PutCodeFlagChanged(is_enabled)); + Ok(()) + } +} + +impl ContractsFn> for Module +where + T::AccountId: UncheckedFrom + AsRef<[u8]>, +{ + fn extension_info(acc: T::AccountId) -> ExtensionAttributes> { + Self::extension_info(acc) + } +} diff --git a/pallets/contracts/Cargo.toml b/pallets/contracts/Cargo.toml index 138098abf4..ad64452cc9 100644 --- a/pallets/contracts/Cargo.toml +++ b/pallets/contracts/Cargo.toml @@ -5,28 +5,27 @@ authors = ["Polymath Inc."] edition = "2018" [dependencies] - -# Substrate specific serde = { version = "1.0.104", default-features = false } + +pwasm-utils = { version = "0.18.2", default-features = false } codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } frame-system = { version = "4.0.0-dev", default-features = false } frame-support = { version = "4.0.0-dev", default-features = false } pallet-contracts = { version = "4.0.0-dev", default-features = false } +pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } sp-core = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } sp-runtime = { version = "4.0.0-dev", default-features = false } sp-std = { version = "4.0.0-dev", default-features = false } -wat = { version = "1.0", optional = true, default-features = false } -parity-wasm = { version = "0.41.0", default-features = false } # Polymesh specific +pallet-asset = { path = "../asset", default-features = false } pallet-base = { path = "../base", default-features = false } pallet-identity = { path = "../identity", default-features = false } +pallet-permissions = { path = "../permissions", default-features = false } polymesh-primitives = { path = "../../primitives", default-features = false } polymesh-common-utilities = { path = "../common", default-features = false } -pallet-protocol-fee = { path = "../protocol-fee", default-features = false } -# Only in STD env frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } [features] @@ -34,21 +33,18 @@ default = ["std"] no_std = [] std = [ "serde/std", - "sp-io/std", "codec/std", "sp-std/std", "sp-core/std", - "parity-wasm/std", - "sp-runtime/std", "frame-system/std", "frame-support/std", "pallet-identity/std", "pallet-contracts/std", "polymesh-primitives/std", - "pallet-protocol-fee/std", "polymesh-common-utilities/std", + "pwasm-utils/std", ] runtime-benchmarks = [ "frame-benchmarking", - "wat" + "pallet-contracts/runtime-benchmarks", ] diff --git a/pallets/contracts/src/benchmarking.rs b/pallets/contracts/src/benchmarking.rs index 4b50e2aa09..7ced540b74 100644 --- a/pallets/contracts/src/benchmarking.rs +++ b/pallets/contracts/src/benchmarking.rs @@ -15,249 +15,226 @@ use crate::*; +use codec::Encode; use frame_benchmarking::benchmarks; -use frame_support::storage::IterableStorageMap; -use frame_support::weights::Weight; -use frame_system::RawOrigin; -use pallet_contracts::PristineCode; -use parity_wasm::elements::FuncBody; +use frame_support::traits::tokens::currency::Currency; +use pallet_asset::Pallet as Asset; +use pallet_contracts::benchmarking::code::{ + body, max_pages, DataSegment, ImportedFunction, ImportedMemory, ModuleDefinition, WasmModule, +}; +use pallet_contracts::Pallet as Base; use polymesh_common_utilities::{ - benchs::{AccountIdOf, UserBuilder}, - constants::ENSURED_MAX_LEN, + benchs::{user, AccountIdOf, User}, + constants::currency::POLY, TestUtilsFn, }; -use polymesh_primitives::{MetaDescription, MetaUrl, SmartExtensionType, TemplateMetadata}; -use sp_runtime::traits::Hash; +use polymesh_primitives::{Balance, Permissions}; +use pwasm_utils::parity_wasm::elements::{Instruction, ValueType}; +use sp_runtime::Perbill; +use sp_std::prelude::*; -type BaseContracts = pallet_contracts::Module; +pub(crate) const SEED: u32 = 0; -const MAX_URL_LENGTH: u32 = ENSURED_MAX_LEN; -const MAX_DESCRIPTION_LENGTH: u32 = ENSURED_MAX_LEN; +const ENDOWMENT: Balance = 1_000 * POLY; -// Copied from - https://github.com/PolymathNetwork/substrate/blob/v2.0.0/frame/contracts/src/benchmarking.rs#L30 -macro_rules! load_module { - ($name:expr) => {{ - let code = include_bytes!(concat!("../fixtures/", $name, ".wat")); - compile_module::(code) - }}; -} +const SALT_BYTE: u8 = 0xFF; -// Copied from - https://github.com/PolymathNetwork/substrate/blob/v2.0.0/frame/contracts/src/benchmarking.rs#L37 -pub fn compile_module(code: &[u8]) -> (Vec, ::Output) { - let code = sp_std::str::from_utf8(code).expect("Invalid utf8 in wat file."); - let binary = wat::parse_str(code).expect("Failed to compile wat file."); - let hash = T::Hashing::hash(&binary); - (binary, hash) +/// Construct the default salt used for most benchmarks. +fn salt() -> Vec { + vec![SALT_BYTE] } -// Copied from - https://github.com/PolymathNetwork/substrate/blob/v2.0.0/frame/contracts/src/benchmarking.rs#L54 -fn contract_with_call_body(body: FuncBody) -> (Vec, ::Output) { - use parity_wasm::elements::{Instruction::End, Instructions}; - let contract = parity_wasm::builder::ModuleBuilder::new() - // deploy function (idx 0) - .function() - .signature() - .with_params(vec![]) - .with_return_type(None) - .build() - .body() - .with_instructions(Instructions::new(vec![End])) - .build() - .build() - // call function (idx 1) - .function() - .signature() - .with_params(vec![]) - .with_return_type(None) - .build() - .with_body(body) - .build() - .export() - .field("deploy") - .internal() - .func(0) - .build() - .export() - .field("call") - .internal() - .func(1) - .build() - .build(); - let bytes = contract.to_bytes().unwrap(); - let hash = T::Hashing::hash(&bytes); - (bytes, hash) +/// Create a funded user used by all benchmarks. +fn funded_user>>() -> User { + let user = user::("actor", SEED); + T::Currency::make_free_balance_be(&user.account(), 1_000_000 * POLY); + user } -// Copied from - https://github.com/PolymathNetwork/substrate/blob/v2.0.0/frame/contracts/src/benchmarking.rs#L77 -fn expanded_contract(target_bytes: u32) -> (Vec, ::Output) { - use parity_wasm::elements::{ - BlockType, - Instruction::{self, End, I32Const, If, Return}, - Instructions, - }; - // Base size of a contract is 47 bytes and each expansion adds 6 bytes. - // We do one expansion less to account for the code section and function body - // size fields inside the binary wasm module representation which are leb128 encoded - // and therefore grow in size when the contract grows. We are not allowed to overshoot - // because of the maximum code size that is enforced by `put_code`. - let expansions = (target_bytes.saturating_sub(47) / 6).saturating_sub(1) as usize; - const EXPANSION: [Instruction; 4] = [I32Const(0), If(BlockType::NoResult), Return, End]; - let instructions = Instructions::new( - EXPANSION - .iter() - .cycle() - .take(EXPANSION.len() * expansions) - .cloned() - .chain(sp_std::iter::once(End)) - .collect(), - ); - contract_with_call_body::(FuncBody::new(Vec::new(), instructions)) +/// Returns the free balance of `acc`. +fn free_balance(acc: &T::AccountId) -> Balance { + T::Currency::free_balance(&acc) } -pub fn emulate_blueprint_in_storage( - instantiation_fee: u32, - origin: RawOrigin, - expanded: &'static str, -) -> Result<::Output, DispatchError> { - let url = Some(MetaUrl::from( - vec![b'U'; MAX_URL_LENGTH as usize].as_slice(), - )); - let description = MetaDescription::from(vec![b'D'; MAX_DESCRIPTION_LENGTH as usize].as_slice()); - let meta_info = TemplateMetadata { - url, - se_type: SmartExtensionType::TransferManager, - usage_fee: 100u32.into(), - description, - version: 5000, - }; - let (wasm_blob, code_hash) = if expanded == "" { - expanded_contract::(BaseContracts::::current_schedule().max_code_size) - } else { - if expanded == "dummy" { - load_module!("dummy") - } else { - load_module!("ptm") - } - }; - Module::::set_put_code_flag(RawOrigin::Root.into(), true).unwrap(); - Module::::put_code( - origin.into(), - meta_info, - instantiation_fee.into(), - wasm_blob, +/// The `user` instantiates `wasm.code` as the contract with `salt`. +/// Returns the address of the new contract. +fn instantiate(user: &User, wasm: WasmModule, salt: Vec) -> T::AccountId { + let callee = Base::::contract_address(&user.account(), &wasm.hash, &salt); + Pallet::::instantiate_with_code( + user.origin().into(), + Base::::subsistence_threshold(), // endowment + Weight::MAX, // gas limit + wasm.code, + vec![], // data + salt, + Permissions::default(), // Full perms necessary for calling into the runtime. ) - .unwrap(); - Ok(code_hash) + .expect("could not create contract"); + callee } -benchmarks! { - where_clause { where T: TestUtilsFn> } - - _{} - - put_code { - // Catalyst for the code size length - let l in 1 .. BaseContracts::::current_schedule().max_code_size; - // Catalyst for the MetaUrl length. - let u in 1 .. MAX_URL_LENGTH; - // Catalyst for the MetaDescription length. - let d in 1 .. MAX_DESCRIPTION_LENGTH; - - let url = Some(MetaUrl::from(vec![b'U'; u as usize].as_slice())); - let description = MetaDescription::from(vec![b'D'; d as usize].as_slice()); - let meta_info = TemplateMetadata { - url, - se_type: SmartExtensionType::TransferManager, - usage_fee: 100u32.into(), - description, - version: 5000 - }; - let (wasm_blob, code_hash) = expanded_contract::(l); - let user = UserBuilder::::default().generate_did().build("creator"); - Module::::set_put_code_flag(RawOrigin::Root.into(), true).unwrap(); - - }: _(user.origin, meta_info, 1000u32.into(), wasm_blob) - verify { - assert!(matches!(Module::::get_metadata_of(code_hash), meta_info), "Contracts_putCode: Meta info set incorrect"); - assert!(PristineCode::::get(code_hash).is_some(), "Contracts_putCode: Base contract doesn't get updated with given code hash"); +/// Returns a module definition that will import and call `seal_call_chain_extension`. +fn chain_extension_module_def(func_id: i32, in_ptr: i32, in_len: i32) -> ModuleDefinition { + ModuleDefinition { + // Import `seal_call_chain_extension`. + imported_functions: vec![ImportedFunction { + module: "seal0", + name: "seal_call_chain_extension", + params: vec![ValueType::I32; 5], + return_type: Some(ValueType::I32), + }], + // Call `seal_call_chain_extension` with the given `func_id`, `in_ptr`, and `in_len`. + call_body: Some(body::plain(vec![ + Instruction::I32Const(func_id), + Instruction::I32Const(in_ptr), + Instruction::I32Const(in_len), + Instruction::I32Const(0), // `output_ptr` + Instruction::I32Const(0), // `output_len` + Instruction::Call(0), // Call `seal_call_chain_extension`, assumed to be at `0`. + Instruction::Drop, + Instruction::End, + ])), + ..Default::default() } +} - // No catalyst. - instantiate { - let data = vec![0u8; 128]; - let max_fee = 100; - let creator = UserBuilder::::default().generate_did().build("creator"); - let code_hash = emulate_blueprint_in_storage::(max_fee, creator.origin, "dummy").unwrap(); - let deployer = UserBuilder::::default().generate_did().build("deployer"); - }: _(deployer.origin, 1_000_000u32.into(), Weight::max_value(), code_hash, data, max_fee.into()) - verify { - let (key, value) = ExtensionInfo::::iter().next().unwrap(); - let attributes = Module::::ext_details(&code_hash); - assert!(matches!(value, attributes), "Contracts_instantiate: Storage doesn't set correctly"); - } +/// Make the `prepare_instantiate` input. +fn prepare_input(n: u32) -> Vec { + // For simplicity, we assume the salt is `n` long and the rest is 0 long. + let hash = Vec::::new(); + let salt = vec![b'A'; n as usize]; + let perms = Permissions::default(); + (hash, salt, perms).encode() +} - // No catalyst. - freeze_instantiation { - let creator = UserBuilder::::default().generate_did().build("creator"); - let code_hash = emulate_blueprint_in_storage::(100, creator.origin.clone(), "dummy").unwrap(); - }: _(creator.origin, code_hash) - verify { - assert!(Module::::get_template_details(code_hash).is_instantiation_frozen(), "Contracts_freeze_instantiation: Failed to freeze instantiation"); +benchmarks! { + where_clause { where T: pallet_asset::Config, T: TestUtilsFn> } + + prepare_instantiate_full { + let n in 1 .. T::MaxLen::get().saturating_sub(prepare_input(0).len() as u32); + + // Construct a user doing everything. + let user = funded_user::(); + + // Construct our contract. + let input = prepare_input(n); + let def = chain_extension_module_def(0x_00_00_00_00u32 as i32, 0, input.len() as i32); + let wasm = WasmModule::::from(ModuleDefinition { + memory: Some(ImportedMemory::max::()), + data_segments: vec![DataSegment { offset: 0, value: input }], + ..def + }); + + // Instantiate the contract. + let callee = instantiate::(&user, wasm, salt()); + }: call(user.origin(), callee.clone(), 0, Weight::MAX, vec![]) + + chain_extension_full { + let n in 1 .. T::MaxLen::get() as u32; + + // Construct a user doing everything. + let user = funded_user::(); + + // Construct our contract. + let input = vec![b'A'; n as usize].encode(); + let def = chain_extension_module_def(0x_00_01_11_00, 0, input.len() as i32); + let wasm = WasmModule::::from(ModuleDefinition { + memory: Some(ImportedMemory::max::()), + data_segments: vec![DataSegment { offset: 0, value: input }], + ..def + }); + + // Instantiate the contract. + let callee = instantiate::(&user, wasm, salt()); + }: call(user.origin(), callee.clone(), 0, Weight::MAX, vec![]) + + chain_extension_early_exit { + // Construct a user doing everything. + let user = funded_user::(); + + // Construct our contract. + let wasm = WasmModule::::from(chain_extension_module_def(0, 0, 0)); + + // Instantiate the contract. + let callee = instantiate::(&user, wasm, salt()); + }: call(user.origin(), callee.clone(), 0, Weight::MAX, vec![]) + + basic_runtime_call { + let n in 1 .. T::MaxLen::get() as u32; + + let user = funded_user::(); + let custom_type = vec![b'A'; n as usize]; + let origin = user.origin().into(); + }: { + Asset::::register_custom_asset_type(origin, custom_type).unwrap(); } - // No catalyst. - unfreeze_instantiation { - let creator = UserBuilder::::default().generate_did().build("creator"); - let code_hash = emulate_blueprint_in_storage::(100, creator.origin.clone(), "dummy").unwrap(); - Module::::freeze_instantiation(creator.origin.clone().into(), code_hash).unwrap(); - }: _(creator.origin, code_hash) - verify { - assert!(!Module::::get_template_details(code_hash).is_instantiation_frozen(), "Contracts_unfreeze_instantiation: Failed to unfreeze instantiation"); - } + call { + // Construct a user doing everything. + let user = funded_user::(); - // No catalyst. - transfer_template_ownership { - let creator = UserBuilder::::default().generate_did().build("creator"); - let code_hash = emulate_blueprint_in_storage::(100, creator.origin.clone(), "dummy").unwrap(); - let new_owner = UserBuilder::::default().generate_did().build("newOwner"); - }: _(creator.origin, code_hash, new_owner.did()) - verify { - assert_eq!(Module::::get_template_details(code_hash).owner, new_owner.did(), "Contracts_transfer_template_ownership: Failed to transfer ownership"); - } + // Instantiate a dummy contract. + let callee = instantiate::(&user, WasmModule::::dummy(), salt()); + let before = free_balance::(&callee); - // No catalyst. - change_template_fees { - let creator = UserBuilder::::default().generate_did().build("creator"); - let code_hash = emulate_blueprint_in_storage::(100, creator.origin.clone(), "").unwrap(); - }: _(creator.origin, code_hash, Some(500u32.into()), Some(650u32.into())) + // Arguments to pass to contract call. + let data = vec![42u8; 1024]; + }: _(user.origin(), callee.clone(), ENDOWMENT, Weight::MAX, data) verify { - assert_eq!(Module::::get_template_details(code_hash).get_instantiation_fee(), 500u32.into(), "Contracts_change_template_fees: Failed to change the instantiation fees"); - assert_eq!(Module::::get_metadata_of(code_hash).usage_fee, 650u32.into(), "Contracts_change_template_fees: Failed to change the usage fees"); + // Contract should have received the value. + assert_eq!(free_balance::(&callee), before + ENDOWMENT); } - change_template_meta_url { - // Catalyst for the MetaUrl length. - let u in 1 .. MAX_URL_LENGTH; - let url = Some(MetaUrl::from(vec![b'U'; u as usize].as_slice())); - let creator = UserBuilder::::default().generate_did().build("creator"); - let code_hash = emulate_blueprint_in_storage::(100, creator.origin.clone(), "").unwrap(); - }: _(creator.origin, code_hash, url.clone()) + // Use a dummy contract constructor to measure the overhead. + // `s`: Size of the salt in kilobytes. + instantiate_with_hash { + let s in 0 .. max_pages::() * 64 * 1024; + let other_salt = vec![42u8; s as usize]; + + // Construct a user doing everything. + let user = funded_user::(); + + // Have the user instantiate a dummy contract. + let wasm = WasmModule::::dummy(); + let hash = wasm.hash.clone(); + let addr = Base::::contract_address(&user.account(), &hash, &other_salt); + + // Pre-instantiate a contract so that one with the hash exists. + let _ = instantiate::(&user, wasm, salt()); + }: _(user.origin(), ENDOWMENT, Weight::MAX, hash, vec![], other_salt, Permissions::empty()) verify { - assert_eq!(Module::::get_metadata_of(code_hash).url, url, "Contracts_change_template_meta_url: Failed to change the url of template"); + // Ensure contract has the full value. + assert_eq!(free_balance::(&addr), ENDOWMENT); } - // No catalyst. - update_schedule { - let schedule = Schedule { - version: 1, - .. Default::default() - }; - }: _(RawOrigin::Root, schedule) - - set_put_code_flag { - assert!(!Module::::is_put_code_enabled(), "Contracts_set_put_code_flag: Unexpected initial state"); - }: _(RawOrigin::Root, true) + // This constructs a contract that is maximal expensive to instrument. + // It creates a maximum number of metering blocks per byte. + // The size of the salt influences the runtime because is is hashed in order to + // determine the contract address. All code is generated to the `call` function so that + // we don't benchmark the actual execution of this code but merely what it takes to load + // a code of that size into the sandbox. + // + // `c`: Size of the code in kilobytes. + // `s`: Size of the salt in kilobytes. + // + // # Note + // + // We cannot let `c` grow to the maximum code size because the code is not allowed + // to be larger than the maximum size **after instrumentation**. + instantiate_with_code { + let c in 0 .. Perbill::from_percent(50).mul_ceil(T::Schedule::get().limits.code_len); + let s in 0 .. max_pages::() * 64 * 1024; + let salt = vec![42u8; s as usize]; + + // Construct a user doing everything. + let user = funded_user::(); + + // Construct the contract code + get addr. + let wasm = WasmModule::::sized(c); + let addr = Base::::contract_address(&user.account(), &wasm.hash, &salt); + }: _(user.origin(), ENDOWMENT, Weight::MAX, wasm.code, vec![], salt, Permissions::empty()) verify { - assert!(Module::::is_put_code_enabled(), "Contracts_set_put_code_flag: Failed to change the flag"); + // Ensure contract has the full value. + assert_eq!(free_balance::(&addr), ENDOWMENT); } } diff --git a/pallets/contracts/src/lib.rs b/pallets/contracts/src/lib.rs index 2269b0ba56..8ace67cc3f 100644 --- a/pallets/contracts/src/lib.rs +++ b/pallets/contracts/src/lib.rs @@ -13,441 +13,694 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -// Ensure we're `no_std` when compiling for Wasm. +//! # Contracts Module +//! +//! The contracts module provides the Layer 2 solution for Polymesh. +//! These smart contracts are defined using WASM, +//! and facilitated by the `ink!` DSL provided by Parity. +//! +//! With this module, you or Alice can instantiate such a contract, +//! through `instantiate_with_code` or `instantiate_with_hash`, +//! attaching its key as a secondary key of the signer's identity. +//! Anyone can then call this smart contract, e.g., Bob, +//! which may call back into the runtime to e.g., `create_asset`. +//! However, during the execution of `create_asset`, +//! the current identity will be Alice, as opposed to `Bob`. +//! +//! ## Overview +//! +//! The Contracts module provides functions for: +//! +//! - Instantiating contracts +//! - Calling contracts +//! +//! ## Interface +//! +//! ### Dispatchable Functions +//! +//! - `instantiate_with_code` instantiates a contract with the code provided. +//! - `instantiate_with_hash` instantiates a contract by hash, +//! assuming that a contract with the same code already was uploaded. +//! - `call` dispatches to the smart contract code, acting as the identity who made the contract. + #![cfg_attr(not(feature = "std"), no_std)] +#![feature(associated_type_bounds)] #[cfg(feature = "runtime-benchmarks")] pub mod benchmarking; -use core::mem; +use codec::Decode; use frame_support::{ - decl_error, decl_module, decl_storage, - dispatch::{DispatchError, DispatchResult, DispatchResultWithPostInfo}, + decl_error, decl_event, decl_module, decl_storage, + dispatch::{ + DispatchError, DispatchErrorWithPostInfo, DispatchResult, DispatchResultWithPostInfo, + Dispatchable, GetDispatchInfo, + }, ensure, - traits::Get, - weights::DispatchClass::Operational, -}; -use frame_system::ensure_root; -use pallet_base::{ensure_opt_string_limited, ensure_string_limited}; -use pallet_contracts::{weights::WeightInfo as _, BalanceOf, CodeHash, Schedule}; -use pallet_identity as identity; -pub use polymesh_common_utilities::traits::contracts::{Event, Trait, WeightInfo}; -use polymesh_common_utilities::{ - protocol_fee::{ChargeProtocolFee, ProtocolOp}, - traits::contracts::ContractsFn, - with_transaction, -}; -use polymesh_primitives::{ - ExtensionAttributes, Gas, IdentityId, MetaUrl, SmartExtensionType, TemplateDetails, - TemplateMetadata, + traits::{Get, GetCallMetadata}, + weights::Weight, }; +use frame_system::RawOrigin; +use pallet_contracts::chain_extension as ce; +use pallet_contracts::Config as BConfig; +use pallet_contracts_primitives::{Code, ContractResult}; +use pallet_identity::PermissionedCallOriginData; +use pallet_identity::WeightInfo as _; +use pallet_permissions::with_call_metadata; +use polymesh_common_utilities::traits::identity::Config as IdentityConfig; +use polymesh_common_utilities::{with_transaction, Context}; +use polymesh_primitives::{Balance, IdentityId, Permissions}; use sp_core::crypto::UncheckedFrom; -use sp_runtime::{ - traits::{Hash, StaticLookup}, - Perbill, SaturatedConversion, -}; -use sp_std::prelude::*; +use sp_core::Bytes; +use sp_runtime::traits::Hash; +use sp_std::vec::Vec; + +type Identity = pallet_identity::Module; +type FrameContracts = pallet_contracts::Pallet; +type CodeHash = ::Hash; + +pub trait WeightInfo { + fn call() -> Weight; + + /// Computes the cost of instantiating where `code_len` + /// and `salt_len` are specified in kilobytes. + fn instantiate_with_code(code_len: u32, salt_len: u32) -> Weight; + + /// Computes the cost of instantiating for `code` and `salt`. + /// + /// Permissions are not accounted for here. + fn instantiate_with_code_bytes(code: &[u8], salt: &[u8]) -> Weight { + Self::instantiate_with_code(code.len() as u32 / 1024, salt.len() as u32 / 1024) + } -type Identity = identity::Module; -type Contracts = pallet_contracts::Module; + /// Computes the cost of instantiating where `salt_len` is specified in kilobytes. + fn instantiate_with_hash(salt_len: u32) -> Weight; -pub const INSTANTIATE_WITH_CODE_EXTRA: u64 = 50_000_000; -const INSTANTIATE_EXTRA: u64 = 500_000_000; + /// Computes the cost of instantiating for `salt`. + /// + /// Permissions are not accounted for here. + fn instantiate_with_hash_bytes(salt: &[u8]) -> Weight { + Self::instantiate_with_hash((salt.len() / 1024) as u32) + } -decl_storage! { - trait Store for Module as ContractsWrapper - where - T::AccountId: UncheckedFrom + AsRef<[u8]> - { - /// Store the meta details of the smart extension template. - pub MetadataOfTemplate get(fn get_metadata_of): map hasher(identity) CodeHash => TemplateMetadata>; - /// Store the details of the template (Ex- owner, frozen etc). - pub TemplateInfo get(fn get_template_details): map hasher(identity) CodeHash => TemplateDetails>; - /// Details of extension get updated. - pub ExtensionInfo get(fn extension_info): map hasher(identity) T::AccountId => ExtensionAttributes>; - /// Nonce for the smart extension account id generation. - /// Using explicit nonce as in batch transaction accounts nonce doesn't get incremented. - pub ExtensionNonce get(fn extension_nonce): u64; - /// Store if `put_code` extrinsic is enabled or disabled. - pub EnablePutCode get(fn is_put_code_enabled) config(enable_put_code): bool; + /// Computes the cost just for executing the chain extension, + /// subtracting costs for `call` itself and runtime callbacks. + fn chain_extension(in_len: u32) -> Weight { + Self::chain_extension_full(in_len) + .saturating_sub(Self::chain_extension_early_exit()) + .saturating_sub(Self::basic_runtime_call(in_len)) } + + /// Returns the weight for a full execution of a smart contract `call` that + /// calls `register_custom_asset_type` in the runtime via a chain extension. + /// The asset type is `in_len` characters long. + fn chain_extension_full(in_len: u32) -> Weight; + + /// Returns the weight for a smart contract `call` that enters the chain extension + /// but then immediately returns. + fn chain_extension_early_exit() -> Weight; + + /// Returns the weight of executing `Asset::register_custom_asset_type` + /// with an asset type that is `in_len` characters long. + fn basic_runtime_call(in_len: u32) -> Weight; + + /// Computes the cost of executing the special `prepare_instantiate` func_id + /// with `in_len` as the length in bytes of the code hash, salt, and permissions taken together. + fn prepare_instantiate(in_len: u32) -> Weight { + Self::prepare_instantiate_full(in_len).saturating_sub(Self::chain_extension_early_exit()) + } + + /// Returns the weight for a full execution of a smart contract `call` + /// that uses the special `prepare_instantiate` func_id with `in_len` + /// as the length in bytes of the code hash, salt, and permissions taken together. + fn prepare_instantiate_full(in_len: u32) -> Weight; } -decl_error! { - pub enum Error for Module - where - T::AccountId: UncheckedFrom, - T::AccountId: AsRef<[u8]>, - { - /// Instantiation is not allowed. - InstantiationIsNotAllowed, - /// Smart extension template not exist in the storage. - TemplateNotExists, - /// When instantiation of the template is already frozen. - InstantiationAlreadyFrozen, - /// When instantiation of the template is already un-frozen. - InstantiationAlreadyUnFrozen, - /// When un-authorized personnel try to access the un-authorized extrinsic. - UnAuthorizedOrigin, - /// Given identityId is not CDD. - NewOwnerIsNotCDD, - /// Insufficient max_fee provided by the user to instantiate the SE. - InsufficientMaxFee, - /// `put_code` extrinsic is disabled. See `set_put_code_flag` extrinsic. - PutCodeIsNotAllowed, +/// The `Config` trait for the smart contracts pallet. +pub trait Config: + IdentityConfig + + BConfig + + frame_system::Config< + AccountId: AsRef<[u8]> + UncheckedFrom<::Hash>, + > +{ + /// The overarching event type. + type Event: From + Into<::Event>; + + /// Max value that `in_len` can take, that is, + /// the length of the data sent from a contract when making a runtime call. + type MaxInLen: Get; + + /// The weight configuration for the pallet. + type WeightInfo: WeightInfo; +} + +decl_event! { + pub enum Event { + // This pallet does not directly define custom events. + // See `pallet_contracts` and `pallet_identity` + // for events currently emitted by extrinsics of this pallet. } } -decl_module! { - // Wrap dispatchable functions for contracts so that we can add additional gating logic. - pub struct Module for enum Call - where - origin: T::Origin, - T::AccountId: UncheckedFrom, - T::AccountId: AsRef<[u8]>, - { +decl_error! { + pub enum Error for Module { + /// The given `func_id: u32` did not translate into a known runtime call. + RuntimeCallNotFound, + /// Data left in input when decoding arguments of a call. + DataLeftAfterDecoding, + /// Input data that a contract passed when making a runtime call was too large. + InLenTooLarge, + /// A contract was attempted to be instantiated, + /// but no identity was given to associate the new contract's key with. + InstantiatorWithNoIdentity, + } +} - /// Initialize the default event for this module. - fn deposit_event() = default; +decl_storage! { + trait Store for Module as Contracts { + // Storage items defined in `pallet_contracts` and `pallet_identity`. + } +} - /// Error type. +decl_module! { + pub struct Module for enum Call where origin: T::Origin { type Error = Error; + fn deposit_event() = default; - /// The minimum amount required to generate a tombstone. - const NetworkShareInInstantiationFee: Perbill = T::NetworkShareInFee::get(); + fn on_initialize(block: T::BlockNumber) -> Weight { + // Does he know what I do and... 🎶 + pallet_contracts::Pallet::::on_initialize(block) + } - // Simply forwards to the `update_schedule` function in the Contract module. - #[weight = ::WeightInfo::update_schedule()] - pub fn update_schedule(origin, schedule: Schedule) -> DispatchResultWithPostInfo { - Contracts::::update_schedule(origin, schedule) + fn on_runtime_upgrade() -> Weight { + // 🎶 ...You'll pass this on, won't you and? + pallet_contracts::Pallet::::on_runtime_upgrade() } - /// Enable or disable the extrinsic `put_code` in this module. + /// Calls the `contract` through its address with the given `data`. + /// + /// The contract is endowed with `value` POLYX, + /// but note that this is distinct from gas fees which are limited with `gas_limit`. /// - /// ## Arguments - /// - `origin` which must be root. - /// - `is_enabled` is the new value for this flag. + /// The contract may optionally call back into the runtime, + /// executing extrinsics such as e.g., `create_asset`. + /// During such runtime calls, the current identity will be the one that instantiate the `contract`. + /// This restriction exists for security purposes. /// - /// ## Errors - /// - `BadOrigin` if caller is not root. + /// # Arguments + /// - `contract` to call. + /// - `value` in POLYX to transfer to the contract. + /// - `gas_limit` that limits how much gas execution can consume, erroring above it. + /// - `data` to be interpreted by the smart contract call. /// - /// ## Permissions - /// None - #[weight = (::WeightInfo::set_put_code_flag(), Operational)] - pub fn set_put_code_flag(origin, is_enabled: bool) -> DispatchResult { - Self::base_set_put_code_flag(origin, is_enabled) + /// # Errors + /// - All the errors in `pallet_contracts::Call::call` can also happen here. + /// - `ContractNotFound` if `contract` doesn't exist or isn't a contract. + /// - CDD/Permissions are checked, unlike in `pallet_contracts`. + #[weight = ::WeightInfo::call().saturating_add(*gas_limit)] + pub fn call( + origin, + contract: T::AccountId, + value: Balance, + gas_limit: Weight, + data: Vec, + ) -> DispatchResultWithPostInfo { + Self::base_call(origin, contract, value, gas_limit, data) } - /// Simply forwards to the `put_code` function in the Contract module. + /// Instantiates a smart contract defining it with the given `code` and `salt`. + /// + /// The contract will be attached as a secondary key, + /// with `perms` as its permissions, to `origin`'s identity. /// - /// # Additional functionality - /// 1. Allow origin to pass some meta-details related to template code. - /// 2. Charge protocol fee for deploying the template. + /// The contract is transferred `endowment` amount of POLYX. + /// This is distinct from the `gas_limit`, + /// which controls how much gas the deployment code may at most consume. + /// + /// # Arguments + /// - `endowment` amount of POLYX to transfer to the contract. + /// - `gas_limit` for how much gas the `deploy` code in the contract may at most consume. + /// - `code` with the WASM binary defining the smart contract. + /// - `salt` used for contract address derivation. + /// By varying this, the same `code` can be used under the same identity. /// /// # Errors - /// - `PutCodeIsNotAllowed` if the `put_code` flag is false. See `set_put_code_flag()`. - /// - `frame_system::BadOrigin` if `origin` is not signed. - /// - `pallet_permission::Error::::UnAutorizedCaller` if `origin` does not have a valid - /// IdentityId. - /// - `TooLong` if the strings embedded in `meta_info` are too long. - /// - `pallet_contrats::Error::::CodeTooLarge` if `code` length is grater than the chain - /// setting for `pallet_contrats::max_code_size`. - /// - Before `code` is inserted, some checks are performed on it, and them could raise up - /// some errors. Please see `pallet_contracts::wasm::prepare_contract` for details. - #[weight = - ::WeightInfo::instantiate_with_code( - code.len() as u32 / 1024, - salt.len() as u32 / 1024, - ) - .saturating_add(*gas_limit) - .saturating_add(INSTANTIATE_WITH_CODE_EXTRA) - ] + /// - All the errors in `pallet_contracts::Call::instantiate_with_code` can also happen here. + /// - CDD/Permissions are checked, unlike in `pallet_contracts`. + /// - Errors that arise when adding a new secondary key can also occur here. + #[weight = Module::::weight_instantiate_with_code(&code, &salt, &perms)] pub fn instantiate_with_code( origin, - #[compact] endowment: BalanceOf, - #[compact] gas_limit: Gas, + endowment: Balance, + gas_limit: Weight, code: Vec, data: Vec, salt: Vec, - meta_info: TemplateMetadata>, - instantiation_fee: BalanceOf, + perms: Permissions ) -> DispatchResultWithPostInfo { - ensure!(Self::is_put_code_enabled(), Error::::PutCodeIsNotAllowed); - let p_origin = Identity::::ensure_origin_call_permissions(origin.clone())?; - - // Ensure strings are limited in length. - ensure_string_limited::(&meta_info.description)?; - ensure_opt_string_limited::(meta_info.url.as_deref())?; - if let SmartExtensionType::Custom(ty) = &meta_info.se_type { - ensure_string_limited::(ty)?; - } - - // Save metadata related to the SE template - // Generate the code_hash here as well because there is no way - // to read it directly from the upstream `pallet-contracts` module. - let code_hash = T::Hashing::hash(&code); - let contract_address = Contracts::::contract_address(&p_origin.sender, &code_hash, &salt); - - // Rollback the `put_code()` if user is not able to pay the protocol-fee. - let post_info = with_transaction(|| -> DispatchResultWithPostInfo { - // Charge the protocol fee, update nonce, and instantiate the code. - - T::ProtocolFee::charge_fee(ProtocolOp::ContractsPutCode)?; - ExtensionNonce::mutate(|n| *n = *n + 1u64); - Contracts::::instantiate_with_code(origin, endowment, gas_limit, code, data, salt) - })?; - - // Update the storage. - >::insert(&code_hash, TemplateDetails { - instantiation_fee, - owner: p_origin.primary_did.clone(), - frozen: false - }); - >::insert(&code_hash, meta_info); - - // Update the usage fee for the extension instance. - >::insert(contract_address, Self::ext_details(&code_hash)); - - Ok(post_info) - } - - // Simply forwards to the `call` function in the Contract module. - #[weight = ::WeightInfo::call( - ::MaxCodeSize::get() / 1024 - ).saturating_add(*gas_limit)] - pub fn call( - origin, - dest: ::Source, - #[compact] value: BalanceOf, - #[compact] gas_limit: Gas, - data: Vec - ) -> DispatchResultWithPostInfo { - Contracts::::call(origin, dest, value, gas_limit, data) + Self::base_instantiate_with_code(origin, endowment, gas_limit, code, data, salt, perms) } - /// Simply forwards to the `instantiate` function in the Contract module. + /// Instantiates a smart contract defining using the given `code_hash` and `salt`. + /// + /// Unlike `instantiate_with_code`, + /// this assumes that at least one contract with the same WASM code has already been uploaded. + /// + /// The contract will be attached as a secondary key, + /// with `perms` as its permissions, to `origin`'s identity. /// - /// # Additional functionality - /// 1. Check whether instantiation of given code_hash is allowed or not. - /// 2. Charge instantiation fee. + /// The contract is transferred `endowment` amount of POLYX. + /// This is distinct from the `gas_limit`, + /// which controls how much gas the deployment code may at most consume. + /// + /// # Arguments + /// - `endowment` amount of POLYX to transfer to the contract. + /// - `gas_limit` for how much gas the `deploy` code in the contract may at most consume. + /// - `code_hash` of an already uploaded WASM binary. + /// - `salt` used for contract address derivation. + /// By varying this, the same `code` can be used under the same identity. /// /// # Errors - /// InstantiationIsNotAllowed - It occurred when instantiation of the template is frozen. - /// InsufficientMaxFee - Provided max_fee is less than required. - #[weight = ::WeightInfo::instantiate().saturating_add(*gas_limit)] - pub fn instantiate( + /// - All the errors in `pallet_contracts::Call::instantiate` can also happen here. + /// - CDD/Permissions are checked, unlike in `pallet_contracts`. + /// - Errors that arise when adding a new secondary key can also occur here. + #[weight = Module::::weight_instantiate_with_hash(&salt, &perms)] + pub fn instantiate_with_hash( origin, - #[compact] endowment: BalanceOf, - #[compact] gas_limit: Gas, + endowment: Balance, + gas_limit: Weight, code_hash: CodeHash, data: Vec, salt: Vec, - max_fee: BalanceOf + perms: Permissions ) -> DispatchResultWithPostInfo { - let sender = Identity::::ensure_origin_call_permissions(origin.clone())?.sender; - // Access the meta details of SE template - let template_details = Self::get_template_details(code_hash); - - // Check whether instantiation is allowed or not. - ensure!(!template_details.is_instantiation_frozen(), Error::::InstantiationIsNotAllowed); - - // Check instantiation fee should be <= max_fee. - let instantiation_fee = template_details.get_instantiation_fee(); - ensure!(instantiation_fee <= max_fee, Error::::InsufficientMaxFee); - - let contract_address = Contracts::::contract_address(&sender, &code_hash, &salt); - let mut post_info = with_transaction(|| { - // Update the extension nonce. - ExtensionNonce::mutate(|n| *n = *n + 1u64); - // Charge instantiation fee - let fee = (instantiation_fee.saturated_into::()).into(); - let owner_pk = Self::get_primary_key(&template_details.owner); - T::ProtocolFee::charge_extension_instantiation_fee(fee, owner_pk, T::NetworkShareInFee::get())?; - T::ProtocolFee::charge_fee(ProtocolOp::ContractsPutCode)?; - - // Generate the contract address. Generating here to avoid cloning of the vec. - // transmit the call to the base `pallet-contracts` module. - Contracts::::instantiate(origin, endowment, gas_limit, code_hash, data, salt) - })?; - if let Some(ref mut actual_weight) = post_info.actual_weight { - *actual_weight = actual_weight.saturating_add(INSTANTIATE_EXTRA); - } + Self::base_instantiate_with_hash(origin, endowment, gas_limit, code_hash, data, salt, perms) + } + } +} - // Update the usage fee for the extension instance. - >::insert(contract_address, Self::ext_details(&code_hash)); +impl Module { + /// Calls `contract` with `data`, gas limits, etc. + /// The call is made as the DID the contract is a key of and not `origin`'s DID. + fn base_call( + origin: T::Origin, + contract: T::AccountId, + value: Balance, + gas_limit: Weight, + data: Vec, + ) -> DispatchResultWithPostInfo { + // Ensure contract caller has perms. + let sender = Identity::::ensure_origin_call_permissions(origin)?.sender; + + // Execute contract. + Self::handle_error( + ::WeightInfo::call(), + FrameContracts::::bare_call(sender, contract, value, gas_limit, data, false), + ) + } - // Update the actual weight of the extrinsic. - Ok(post_info) - } + /// Instantiates a contract using `code` as the WASM code blob. + fn base_instantiate_with_code( + origin: T::Origin, + endowment: Balance, + gas_limit: Weight, + code: Vec, + inst_data: Vec, + salt: Vec, + perms: Permissions, + ) -> DispatchResultWithPostInfo { + Self::general_instantiate( + origin, + endowment, + // Compute the base weight of roughly `base_instantiate`. + Self::weight_instantiate_with_code(&code, &salt, &perms), + gas_limit, + T::Hashing::hash(&code), + Code::Upload(Bytes(code)), + inst_data, + salt, + perms, + ) + } - /// Allows a smart extension template owner to freeze the instantiation. - /// - /// # Arguments - /// * origin - Only owner of the template is allowed to execute the dispatchable. - /// * code_hash - Unique hash of the smart extension template. - #[weight = ::WeightInfo::freeze_instantiation()] - pub fn freeze_instantiation(origin, code_hash: CodeHash) -> DispatchResult { - // Ensure whether the extrinsic is signed & validate the `code_hash`. - let (did, template_details) = Self::ensure_signed_and_template_exists(origin, code_hash)?; - - // If instantiation is already frozen then there is no point of changing the storage value. - ensure!(!template_details.is_instantiation_frozen(), Error::::InstantiationAlreadyFrozen); - // Change the `frozen` variable to `true`. - >::mutate(&code_hash, |template_details| template_details.frozen = true); - - // Emit event. - Self::deposit_event(Event::::InstantiationFreezed(did, code_hash)); - Ok(()) - } + /// Computes weight of `instantiate_with_code(code, salt, perms)`. + fn weight_instantiate_with_code(code: &[u8], salt: &[u8], perms: &Permissions) -> Weight { + ::WeightInfo::instantiate_with_code_bytes(&code, &salt).saturating_add( + ::WeightInfo::permissions_cost_perms(perms), + ) + } - /// Allows a smart extension template owner to un freeze the instantiation. - /// - /// # Arguments - /// * origin - Only owner of the template is allowed to execute the dispatchable. - /// * code_hash - Unique hash of the smart extension template. - #[weight = ::WeightInfo::unfreeze_instantiation()] - pub fn unfreeze_instantiation(origin, code_hash: CodeHash) -> DispatchResult { - // Ensure whether the extrinsic is signed & validate the `code_hash`. - let (did, template_details) = Self::ensure_signed_and_template_exists(origin, code_hash)?; - - // If instantiation is already un-frozen then there is no point of changing the storage value. - ensure!(template_details.is_instantiation_frozen(), Error::::InstantiationAlreadyUnFrozen); - // Change the `frozen` variable to `false`. - >::mutate(&code_hash, |template_details| template_details.frozen = false); - - // Emit event. - Self::deposit_event(Event::::InstantiationUnFreezed(did, code_hash)); - Ok(()) - } + /// Instantiates a contract using an existing WASM code blob with `code_hash` as its code. + fn base_instantiate_with_hash( + origin: T::Origin, + endowment: Balance, + gas_limit: Weight, + code_hash: CodeHash, + inst_data: Vec, + salt: Vec, + perms: Permissions, + ) -> DispatchResultWithPostInfo { + Self::general_instantiate( + origin, + endowment, + // Compute the base weight of roughly `base_instantiate`. + Self::weight_instantiate_with_hash(&salt, &perms), + gas_limit, + code_hash, + Code::Existing(code_hash), + inst_data, + salt, + perms, + ) + } - /// Transfer ownership of the template, Can only be called by the owner of template. - /// `new_owner` should posses the valid CDD claim. - /// - /// # Arguments - /// * origin Owner of the provided code_hash. - /// * code_hash Unique identifer of the template. - /// * new_owner Identity that will be the new owner of the provided code_hash. - #[weight = ::WeightInfo::transfer_template_ownership()] - pub fn transfer_template_ownership(origin, code_hash: CodeHash, new_owner: IdentityId) -> DispatchResult { - // Ensure whether the extrinsic is signed & validate the `code_hash`. - let (did, _) = Self::ensure_signed_and_template_exists(origin, code_hash)?; - - // Ensuring the `new_owner` is CDD or not. - ensure!(Identity::::has_valid_cdd(new_owner), Error::::NewOwnerIsNotCDD); - - // Change the `owner` variable value to the given did. - >::mutate(&code_hash, |template_details| template_details.owner = new_owner); - - // Emit event. - Self::deposit_event(Event::::TemplateOwnershipTransferred(did, code_hash, new_owner)); - Ok(()) - } + /// Computes weight of `instantiate_with_hash(code, salt, perms)`. + fn weight_instantiate_with_hash(salt: &[u8], perms: &Permissions) -> Weight { + ::WeightInfo::instantiate_with_hash_bytes(&salt).saturating_add( + ::WeightInfo::permissions_cost_perms(perms), + ) + } - /// Change the usage fee & the instantiation fee of the smart extension template - /// - /// # Arguments - /// * origin - Only owner of template is allowed to execute the dispatchable. - /// * code_hash - Unique hash of the smart extension template. - /// * new_instantiation_fee - New value of instantiation fee for the smart extension template. - /// * new_usage_fee - New value of usage fee for the smart extension template. - #[weight = ::WeightInfo::change_template_fees()] - pub fn change_template_fees(origin, code_hash: CodeHash, new_instantiation_fee: Option>, new_usage_fee: Option>) -> DispatchResult { - // Ensure whether the extrinsic is signed & validate the `code_hash`. - let (did, _) = Self::ensure_signed_and_template_exists(origin, code_hash)?; - - // Update the fees - if let Some(usage_fee) = new_usage_fee { - // Update the usage fee for a given code hash. - let old_usage_fee = >::mutate(&code_hash, |metadata| mem::replace(&mut metadata.usage_fee, usage_fee)); - // Emit event with the old & new usage fee. - Self::deposit_event(Event::::TemplateUsageFeeChanged(did, code_hash, old_usage_fee, usage_fee)); - } - if let Some(instantiation_fee) = new_instantiation_fee { - // Update the instantiation fee for a given code_hash. - let old_instantiation_fee = >::mutate(&code_hash, |template_details| mem::replace(&mut template_details.instantiation_fee, instantiation_fee)); - // Emit event with the old & new instantiation fee. - Self::deposit_event(Event::::TemplateInstantiationFeeChanged(did, code_hash, old_instantiation_fee, instantiation_fee)); - } - Ok(()) - } + /// General logic for contract instantiation both when the code or code hash is given. + /// + /// The interesting parameters here are: + /// - `base_weight` assigns a base non-variable weight to the full extrinsic. + /// - `code_hash` specifies the hash to use to derive the contract's key. + /// - `code` specifies the code for the contract, either as a code blob or an existing hash. + /// The hash of `code` in either case is assumed to correspond to `code_hash`. + fn general_instantiate( + origin: T::Origin, + endowment: Balance, + base_weight: Weight, + gas_limit: Weight, + code_hash: CodeHash, + code: Code>, + inst_data: Vec, + salt: Vec, + perms: Permissions, + ) -> DispatchResultWithPostInfo { + // Ensure we have perms + we'll need sender & DID. + let PermissionedCallOriginData { + primary_did: did, + sender, + .. + } = Identity::::ensure_origin_call_permissions(origin)?; + + with_transaction(|| { + // Roll back `prepare_instantiate` if contract was not instantiated. + Self::prepare_instantiate(did, &sender, &code_hash, &salt, perms)?; + + // Now we can finally instantiate the contract. + Self::handle_error( + base_weight, + FrameContracts::::bare_instantiate( + sender.clone(), + endowment, + gas_limit, + code, + inst_data, + salt, + false, + ), + ) + }) + } - /// Change the template meta url. - /// - /// # Arguments - /// * origin - Only owner of template is allowed to execute the dispatchable. - /// * code_hash - Unique hash of the smart extension template. - /// * new_url - New meta url that need to replace with old url. - #[weight = ::WeightInfo::change_template_meta_url(new_url.as_ref().map_or(0, |u| u.0.len()) as u32 )] - pub fn change_template_meta_url(origin, code_hash: CodeHash, new_url: Option) -> DispatchResult { - // Ensure whether the extrinsic is signed & validate the `code_hash`. - let (did, _) = Self::ensure_signed_and_template_exists(origin, code_hash)?; - // Ensure URL is limited in length. - ensure_opt_string_limited::(new_url.as_deref())?; - // Update the usage fee for a given code hash. - let old_url = >::mutate(&code_hash, |metadata| mem::replace(&mut metadata.url, new_url.clone())); - // Emit event with old and new url. - Self::deposit_event(Event::::TemplateMetaUrlChanged(did, code_hash, old_url, new_url)); - Ok(()) + /// Prepare instantiation of a contract by trying to add it as a secondary key. + fn prepare_instantiate( + did: IdentityId, + sender: &T::AccountId, + code_hash: &T::Hash, + salt: &[u8], + perms: Permissions, + ) -> DispatchResult { + // Pre-compute what contract's key will be... + let contract_key = FrameContracts::::contract_address(sender, code_hash, salt); + + // ...and ensure that key can be a secondary-key of DID... + Identity::::ensure_perms_length_limited(&perms)?; + Identity::::ensure_key_did_unlinked(&contract_key)?; + + // ...so that the CDD due to `endowment` passes. + Identity::::unsafe_join_identity(did, perms, contract_key); + Ok(()) + } + + /// Enriches `result` of executing a smart contract with actual weight, + /// accounting for the consumed gas. + fn handle_error( + base_weight: Weight, + result: ContractResult>, + ) -> DispatchResultWithPostInfo { + let post_info = Some(result.gas_consumed.saturating_add(base_weight)).into(); + match result.result { + Ok(_) => Ok(post_info), + Err(error) => Err(DispatchErrorWithPostInfo { post_info, error }), } } } -impl Module +/// The `Call` enums of various pallets that the contracts pallet wants to know about. +pub enum CommonCall where - T::AccountId: UncheckedFrom, - T::AccountId: AsRef<[u8]>, + T: Config + pallet_asset::Config, { - // Internal function - // Perform some basic sanity checks - fn ensure_signed_and_template_exists( - origin: T::Origin, - code_hash: CodeHash, - ) -> Result<(IdentityId, TemplateDetails>), DispatchError> { - // Ensure the transaction is signed and ensure `origin` has the required permission to - // execute the dispatchable. - let did = Identity::::ensure_perms(origin)?; - // Validate whether the template exists or not for a given code_hash. - ensure!( - >::contains_key(code_hash), - Error::::TemplateNotExists - ); + Asset(pallet_asset::Call), + Contracts(Call), +} - // Access the meta details of SE template - let template_details = Self::get_template_details(code_hash); - // Ensure sender's DID is the owner of the template. - ensure!( - did == template_details.owner, - Error::::UnAuthorizedOrigin - ); - // Return the DID and the template details. - Ok((did, template_details)) - } +/// An encoding of `func_id` into the encoding `0x_S_P_E_V`, +/// with each letter being a byte. +#[derive(Clone, Copy, Debug)] +struct FuncId { + /// Decides the version of the `extrinsic`. + version: u8, + /// Decides the `extrinsic` within the `pallet`. + /// This isn't necessarily the same as the index within the pallet. + extrinsic: u8, + /// Decides the `pallet` within the runtime. + /// This isn't necessarily the same as the index within the runtime. + pallet: u8, + /// Decides the scheme to use when interpreting `(extrinsic, pallet, version)`. + scheme: u8, +} - fn get_primary_key(id: &IdentityId) -> T::AccountId { - Identity::::get_primary_key(*id) +/// Splits the `func_id` given from a smart contract into +/// the encoding `(scheme: u8, pallet: u8, extrinsic: u8, version: u8)`. +fn split_func_id(func_id: u32) -> FuncId { + let extract = |which| (func_id >> which * 8) as u8; + FuncId { + version: extract(0), + extrinsic: extract(1), + pallet: extract(2), + scheme: extract(3), } +} - fn ext_details(code_hash: &CodeHash) -> ExtensionAttributes> { - let meta_info = Self::get_metadata_of(code_hash); - ExtensionAttributes { - usage_fee: meta_info.usage_fee, - version: meta_info.version, - } +/// Returns the `contract`'s DID or errors. +fn contract_did(contract: &T::AccountId) -> Result { + // N.B. it might be the case that the contract is a primary key due to rotation. + Ok(Identity::::get_identity(&contract).ok_or(Error::::InstantiatorWithNoIdentity)?) +} + +/// Run `with` while the current DID is temporarily set to the given one. +fn with_did_as_current R, R>(did: IdentityId, with: W) -> R { + let old_did = Context::current_identity::>(); + Context::set_current_identity::>(Some(did)); + let result = with(); + Context::set_current_identity::>(old_did); + result +} + +/// Ensure that `input.is_empty()` or error. +fn ensure_consumed(input: &[u8]) -> DispatchResult { + ensure!(input.is_empty(), Error::::DataLeftAfterDecoding); + Ok(()) +} + +/// Advance `input` and decode a `V` from it, or error. +fn decode(input: &mut &[u8]) -> Result { + <_>::decode(input).map_err(|_| pallet_contracts::Error::::DecodingFailed.into()) +} + +/// Constructs a call description from a `func_id` and associated `input`. +fn construct_call(func_id: FuncId, input: &mut &[u8]) -> Result, DispatchError> +where + T: Config + pallet_asset::Config, +{ + /// Decode type from `input`. + macro_rules! decode { + () => { + decode::<_, T>(input)? + }; } - fn base_set_put_code_flag(origin: T::Origin, is_enabled: bool) -> DispatchResult { - ensure_root(origin)?; - EnablePutCode::put(is_enabled); - Self::deposit_event(Event::::PutCodeFlagChanged(is_enabled)); - Ok(()) + /// Pattern match on functions `0x00_pp_ee_00`. + macro_rules! on { + ($p:pat, $e:pat) => { + FuncId { + scheme: 0, + pallet: $p, + extrinsic: $e, + version: 0, + } + }; } + + Ok(match func_id { + on!(0, 0) => CommonCall::Contracts(Call::call { + contract: decode!(), + value: decode!(), + gas_limit: decode!(), + data: decode!(), + }), + on!(0, 1) => CommonCall::Contracts(Call::instantiate_with_code { + endowment: decode!(), + gas_limit: decode!(), + code: decode!(), + data: decode!(), + salt: decode!(), + perms: decode!(), + }), + on!(0, 2) => CommonCall::Contracts(Call::instantiate_with_hash { + endowment: decode!(), + gas_limit: decode!(), + code_hash: decode!(), + data: decode!(), + salt: decode!(), + perms: decode!(), + }), + on!(1, 0) => CommonCall::Asset(pallet_asset::Call::register_ticker { ticker: decode!() }), + on!(1, 1) => { + CommonCall::Asset(pallet_asset::Call::accept_ticker_transfer { auth_id: decode!() }) + } + on!(1, 2) => CommonCall::Asset(pallet_asset::Call::accept_asset_ownership_transfer { + auth_id: decode!(), + }), + on!(1, 3) => CommonCall::Asset(pallet_asset::Call::create_asset { + name: decode!(), + ticker: decode!(), + divisible: decode!(), + asset_type: decode!(), + identifiers: decode!(), + funding_round: decode!(), + disable_iu: decode!(), + }), + on!(1, 0x11) => { + CommonCall::Asset(pallet_asset::Call::register_custom_asset_type { ty: decode!() }) + } + _ => return Err(Error::::RuntimeCallNotFound.into()), + }) +} + +/// Prepare for the instantiation of a contract as a chain extension. +/// +/// The `sender` is expected to be the smart contract's address, +/// from which the DID-to-attach-to is derived. +/// The `input` contains all the data needed for instantiation. +fn prepare_instantiate_ce( + input: &mut &[u8], + sender: T::AccountId, +) -> ce::Result { + // Decode the hash, salt, and permissions. + let (code_hash, salt, perms): (_, Vec, _) = decode::<_, T>(input)?; + ensure_consumed::(input)?; + + // The DID is that of `sender`. + let did = contract_did::(&sender)?; + + // Now that we've got all the data we need, instantiate! + Module::::prepare_instantiate(did, &sender, &code_hash, &salt, perms)?; + + // Done; continue with smart contract execution when returning. + Ok(ce::RetVal::Converging(0)) } -impl ContractsFn> for Module +/// A chain extension allowing calls to polymesh pallets +/// and using the contract's DID instead of the caller's DID. +impl ce::ChainExtension for Module where - T::AccountId: UncheckedFrom + AsRef<[u8]>, + ::Call: From> + GetDispatchInfo, + T: Config + pallet_asset::Config, { - fn extension_info(acc: T::AccountId) -> ExtensionAttributes> { - Self::extension_info(acc) + fn enabled() -> bool { + true + } + + fn call>( + func_id: u32, + env: ce::Environment, + ) -> ce::Result { + // Used for benchmarking `chain_extension_early_exit`, + // so we can remove the cost of the call + overhead of using any chain extension. + // That is, we want to subtract costs not directly arising from *this* function body. + // Caveat: This `if` imposes a minor cost during benchmarking but we'll live with that. + #[cfg(feature = "runtime-benchmarks")] + if func_id == 0 { + return Ok(ce::RetVal::Converging(0)); + } + + let mut env = env.buf_in_buf_out(); + + // Limit `in_len` to a maximum. + let in_len = env.in_len(); + ensure!( + in_len <= ::MaxInLen::get(), + Error::::InLenTooLarge + ); + + // Special case: we provide a "prepare_instantiate" "runtime function" + // that will add a secondary key with the address of the contract + // to the running contract's identity. + let func_id = split_func_id(func_id); + let addr = env.ext().address().clone(); + if let FuncId { + scheme: 0xFF, + version: 0, + pallet: 0, + extrinsic: 0, + } = func_id + { + // Charge weight, read input, and run the logic to add a secondary key. + env.charge_weight(::WeightInfo::prepare_instantiate(in_len))?; + let input = &mut &*env.read(in_len)?; + return prepare_instantiate_ce::(input, addr); + } + + // Charge weight as a linear function of `in_len`. + env.charge_weight(::WeightInfo::chain_extension(in_len))?; + + // Decide what to call in the runtime. + let input = &mut &*env.read(in_len)?; + let call: ::Call = construct_call::(func_id, input)?.into(); + ensure_consumed::(input)?; + + // Charge weight for the call. + let di = call.get_dispatch_info(); + let charged_amount = env.charge_weight(di.weight)?; + + // Execute call requested by contract, with current DID set to the contract owner. + let result = with_did_as_current::(contract_did::(&addr)?, || { + with_call_metadata(call.get_call_metadata(), || { + // Dispatch the call, avoiding use of `ext.call_runtime()`, + // as that uses `CallFilter = Nothing`, which would case a problem for us. + call.dispatch(RawOrigin::Signed(addr).into()) + }) + }); + + // Refund unspent weight. + let post_di = result.unwrap_or_else(|e| e.post_info); + // This check isn't necessary but avoids some work. + if post_di.actual_weight.is_some() { + let actual_weight = post_di.calc_actual_weight(&di); + env.adjust_weight(charged_amount, actual_weight); + } + + // Ensure the call was successful. + result.map_err(|e| e.error)?; + + // Done; continue with smart contract execution when returning. + Ok(ce::RetVal::Converging(0)) } } diff --git a/pallets/identity/src/keys.rs b/pallets/identity/src/keys.rs index e9007633e2..d002e278b9 100644 --- a/pallets/identity/src/keys.rs +++ b/pallets/identity/src/keys.rs @@ -732,7 +732,7 @@ impl Module { } /// Ensures length limits are enforced in `perms`. - crate fn ensure_perms_length_limited(perms: &Permissions) -> DispatchResult { + pub fn ensure_perms_length_limited(perms: &Permissions) -> DispatchResult { ensure_custom_length_ok::(perms.complexity(), MAX_PERMISSION_COMPLEXITY)?; ensure_custom_length_ok::(perms.asset.complexity(), MAX_ASSETS)?; ensure_custom_length_ok::(perms.portfolio.complexity(), MAX_PORTFOLIOS)?; @@ -769,25 +769,20 @@ impl CheckAccountCallPermissions for Module { secondary_key, }; - KeyRecords::::get(who).and_then(|record| match record { - KeyRecord::PrimaryKey(did) => { - // Primary key. - Some(data(did, None)) - } + match KeyRecords::::get(who)? { + // Primary keys do not have / require further permission checks. + KeyRecord::PrimaryKey(did) => Some(data(did, None)), + // Secondary Key. Ensure DID isn't frozen + key has sufficient permissions. KeyRecord::SecondaryKey(did, permissions) if !Self::is_did_frozen(&did) => { let sk = SecondaryKey { key: who.clone(), permissions, }; - if sk.has_extrinsic_permission(&pallet_name(), &function_name()) { - Some(data(did, Some(sk))) - } else { - // Secondary key doesn't have permissions to make this call. - None - } + sk.has_extrinsic_permission(&pallet_name(), &function_name()) + .then(|| data(did, Some(sk))) } // DIDs with frozen secondary keys, AKA frozen DIDs, are not permitted to call extrinsics. _ => None, - }) + } } } diff --git a/pallets/runtime/ci/Cargo.toml b/pallets/runtime/ci/Cargo.toml index 69c566ccba..2c6ce8eb1a 100644 --- a/pallets/runtime/ci/Cargo.toml +++ b/pallets/runtime/ci/Cargo.toml @@ -41,7 +41,7 @@ pallet-statistics = { path = "../../statistics", default-features = false } pallet-transaction-payment = { path = "../../transaction-payment", default-features = false } pallet-treasury = { path = "../../treasury", default-features = false } pallet-utility = { path = "../../utility", default-features = false } -#polymesh-contracts = { path = "../../contracts", default-features = false } +polymesh-contracts = { path = "../../contracts", default-features = false } pallet-sudo = { path = "../../sudo", default-features = false } pallet-test-utils = { path = "../../test-utils", default-features = false } @@ -80,7 +80,7 @@ sp-block-builder = { version = "4.0.0-dev", default-features = false } sp-arithmetic = { version = "4.0.0-dev", default-features = false } pallet-authorship = { version = "4.0.0-dev", default-features = false } -#pallet-contracts = { version = "4.0.0-dev", default-features = false } +pallet-contracts = { version = "4.0.0-dev", default-features = false } #pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false} pallet-executive = { package = "frame-executive", version = "4.0.0-dev", default-features = false } pallet-grandpa = { version = "4.0.0-dev", default-features = false } @@ -131,7 +131,7 @@ std = [ "pallet-compliance-manager/std", #"pallet-contracts-primitives/std", #"pallet-contracts-rpc-runtime-api/std", - #"pallet-contracts/std", + "pallet-contracts/std", "pallet-executive/std", "pallet-external-agents/std", "pallet-grandpa/std", @@ -182,7 +182,7 @@ std = [ "sp-std/std", "sp-transaction-pool/std", "sp-version/std", - #"polymesh-contracts/std" + "polymesh-contracts/std" ] runtime-benchmarks = [ diff --git a/pallets/runtime/ci/src/runtime.rs b/pallets/runtime/ci/src/runtime.rs index eb0d4d8d77..fc3a72e60f 100644 --- a/pallets/runtime/ci/src/runtime.rs +++ b/pallets/runtime/ci/src/runtime.rs @@ -139,19 +139,15 @@ parameter_types! { // Identity: pub const InitialPOLYX: Balance = 0; - /* - /// The fraction of the deposit that should be used as rent per block. - pub RentFraction: Perbill = Perbill::from_rational_approximation(1u32, 30 * DAYS); - // The lazy deletion runs inside on_initialize. - pub DeletionWeightLimit: Weight = AVERAGE_ON_INITIALIZE_RATIO * - RuntimeBlockWeights::get().max_block; - // The weight needed for decoding the queue should be less or equal than a fifth - // of the overall weight dedicated to the lazy deletion. - pub DeletionQueueDepth: u32 = ((DeletionWeightLimit::get() / ( - ::WeightInfo::on_initialize_per_queue_item(1) - - ::WeightInfo::on_initialize_per_queue_item(0) - )) / 5) as u32; - */ + // Contracts: + pub ContractDeposit: Balance = polymesh_runtime_common::deposit( + 1, + >::contract_info_size(), + ); + pub Schedule: pallet_contracts::Schedule = Default::default(); + pub DeletionWeightLimit: Weight = 500_000_000_000; + pub DeletionQueueDepth: u32 = 1024; + pub MaxInLen: u32 = 8 * 1024; } /// Splits fees 80/20 between treasury and block author. @@ -370,12 +366,6 @@ construct_runtime!( // Sudo. Usable initially. Sudo: pallet_sudo::{Pallet, Call, Config, Storage, Event}, - /* - // Contracts - BaseContracts: pallet_contracts::{Pallet, Config, Storage, Event}, - Contracts: polymesh_contracts::{Pallet, Call, Storage, Event}, - */ - // Asset: Genesis config deps: Timestamp, Asset: pallet_asset::{Pallet, Call, Storage, Config, Event}, CapitalDistribution: pallet_capital_distribution::{Pallet, Call, Storage, Event}, @@ -397,6 +387,11 @@ construct_runtime!( ExternalAgents: pallet_external_agents::{Pallet, Call, Storage, Event}, Relayer: pallet_relayer::{Pallet, Call, Storage, Event}, Rewards: pallet_rewards::{Pallet, Call, Storage, Event, Config, ValidateUnsigned}, + + // Contracts + Contracts: pallet_contracts::{Pallet, Storage, Event}, + PolymeshContracts: polymesh_contracts::{Pallet, Call, Storage, Event}, + TestUtils: pallet_test_utils::{Pallet, Call, Storage, Event } = 50, } ); diff --git a/pallets/runtime/common/Cargo.toml b/pallets/runtime/common/Cargo.toml index 39eb995cfb..29d04f67f0 100644 --- a/pallets/runtime/common/Cargo.toml +++ b/pallets/runtime/common/Cargo.toml @@ -15,7 +15,7 @@ pallet-committee = { path = "../../committee", default-features = false } pallet-compliance-manager = { path = "../../compliance-manager", default-features = false } #pallet-contracts = { version = "4.0.0-dev", default-features = false } pallet-identity = { path = "../../identity", default-features = false } -pallet-multisig = { path = "../../multisig", default-features = false} +pallet-multisig = { path = "../../multisig", default-features = false } pallet-portfolio = { path = "../../portfolio", default-features = false } pallet-relayer = { path = "../../relayer", default-features = false } pallet-test-utils = { path = "../../test-utils", default-features = false } diff --git a/pallets/runtime/common/src/runtime.rs b/pallets/runtime/common/src/runtime.rs index a6de21c573..344298f5ac 100644 --- a/pallets/runtime/common/src/runtime.rs +++ b/pallets/runtime/common/src/runtime.rs @@ -319,10 +319,9 @@ macro_rules! misc_pallet_impls { //type ContractsFn = polymesh_contracts::Module; } - /* impl polymesh_contracts::Config for Runtime { type Event = Event; - type NetworkShareInFee = NetworkShareInFee; + type MaxInLen = MaxInLen; type WeightInfo = polymesh_weights::polymesh_contracts::WeightInfo; } impl pallet_contracts::Config for Runtime { @@ -330,24 +329,30 @@ macro_rules! misc_pallet_impls { type Randomness = RandomnessCollectiveFlip; type Currency = Balances; type Event = Event; - type RentPayment = (); - type SignedClaimHandicap = polymesh_runtime_common::SignedClaimHandicap; - type TombstoneDeposit = TombstoneDeposit; - type DepositPerContract = polymesh_runtime_common::DepositPerContract; - type DepositPerStorageByte = polymesh_runtime_common::DepositPerStorageByte; - type DepositPerStorageItem = polymesh_runtime_common::DepositPerStorageItem; - type RentFraction = RentFraction; - type SurchargeReward = SurchargeReward; - type MaxDepth = polymesh_runtime_common::ContractsMaxDepth; - type MaxValueSize = polymesh_runtime_common::ContractsMaxValueSize; - type WeightPrice = pallet_transaction_payment::Module; + type Call = Call; + // The `CallFilter` ends up being used in `ext.call_runtime()`, + // via the `seal_call_runtime` feature, + // which won't swap the current identity, + // so we need `Nothing` to basically disable that feature. + type CallFilter = frame_support::traits::Nothing; + type CallStack = [pallet_contracts::Frame; 31]; + type WeightPrice = pallet_transaction_payment::Pallet; type WeightInfo = pallet_contracts::weights::SubstrateWeight; - type ChainExtension = (); + type ChainExtension = polymesh_contracts::Pallet; + type Schedule = Schedule; + type ContractDeposit = ContractDeposit; type DeletionQueueDepth = DeletionQueueDepth; type DeletionWeightLimit = DeletionWeightLimit; - type MaxCodeSize = polymesh_runtime_common::ContractsMaxCodeSize; } - */ + impl From> for Call { + fn from(call: polymesh_contracts::CommonCall) -> Self { + use polymesh_contracts::CommonCall::*; + match call { + Asset(x) => Self::Asset(x), + Contracts(x) => Self::PolymeshContracts(x), + } + } + } impl pallet_compliance_manager::Config for Runtime { type Event = Event; diff --git a/pallets/runtime/develop/Cargo.toml b/pallets/runtime/develop/Cargo.toml index d5d3e37cfb..6c7f09180a 100644 --- a/pallets/runtime/develop/Cargo.toml +++ b/pallets/runtime/develop/Cargo.toml @@ -42,8 +42,8 @@ pallet-test-utils = { path = "../../test-utils", default-features = false } pallet-transaction-payment = { path = "../../transaction-payment", default-features = false } pallet-treasury = { path = "../../treasury", default-features = false } pallet-utility = { path = "../../utility", default-features = false } -#polymesh-contracts = { path = "../../contracts", default-features = false } pallet-sudo = { path = "../../sudo", default-features = false } +polymesh-contracts = { path = "../../contracts", default-features = false } # Others serde = { version = "1.0.104", default-features = false } @@ -69,7 +69,7 @@ sp-block-builder = { version = "4.0.0-dev", default-features = false } sp-arithmetic = { version = "4.0.0-dev", default-features = false } # pallet-authorship = { version = "4.0.0-dev", default-features = false } -#pallet-contracts = { version = "4.0.0-dev", default-features = false } +pallet-contracts = { version = "4.0.0-dev", default-features = false } #pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false } pallet-executive = { package = "frame-executive", version = "4.0.0-dev", default-features = false } pallet-grandpa = { version = "4.0.0-dev", default-features = false } @@ -139,7 +139,7 @@ std = [ "pallet-compliance-manager/std", #"pallet-contracts-primitives/std", #"pallet-contracts-rpc-runtime-api/std", - #"pallet-contracts/std", + "pallet-contracts/std", "pallet-corporate-actions/std", "pallet-executive/std", "pallet-external-agents/std", @@ -191,7 +191,7 @@ std = [ "sp-std/std", "sp-transaction-pool/std", "sp-version/std", - #"polymesh-contracts/std", + "polymesh-contracts/std", "polymesh-extensions/std", ] runtime-benchmarks = [ @@ -208,6 +208,7 @@ runtime-benchmarks = [ "pallet-balances/runtime-benchmarks", "pallet-committee/runtime-benchmarks", "pallet-compliance-manager/runtime-benchmarks", + "pallet-contracts/runtime-benchmarks", "pallet-corporate-actions/runtime-benchmarks", "pallet-external-agents/runtime-benchmarks", "pallet-group/runtime-benchmarks", @@ -230,7 +231,7 @@ runtime-benchmarks = [ "pallet-test-utils/runtime-benchmarks", "pallet-staking/runtime-benchmarks", "polymesh-common-utilities/runtime-benchmarks", - #"polymesh-contracts/runtime-benchmarks", + "polymesh-contracts/runtime-benchmarks", "polymesh-primitives/runtime-benchmarks", "polymesh-runtime-common/runtime-benchmarks", "sp-runtime/runtime-benchmarks", diff --git a/pallets/runtime/develop/src/runtime.rs b/pallets/runtime/develop/src/runtime.rs index a2cb903d9c..3e9ae2d079 100644 --- a/pallets/runtime/develop/src/runtime.rs +++ b/pallets/runtime/develop/src/runtime.rs @@ -135,19 +135,15 @@ parameter_types! { // Identity: pub const InitialPOLYX: Balance = 0 * POLY; - /* - /// The fraction of the deposit that should be used as rent per block. - pub RentFraction: Perbill = Perbill::from_rational_approximation(1u32, 30 * DAYS); - // The lazy deletion runs inside on_initialize. - pub DeletionWeightLimit: Weight = AVERAGE_ON_INITIALIZE_RATIO * - RuntimeBlockWeights::get().max_block; - // The weight needed for decoding the queue should be less or equal than a fifth - // of the overall weight dedicated to the lazy deletion. - pub DeletionQueueDepth: u32 = ((DeletionWeightLimit::get() / ( - ::WeightInfo::on_initialize_per_queue_item(1) - - ::WeightInfo::on_initialize_per_queue_item(0) - )) / 5) as u32; - */ + // Contracts: + pub ContractDeposit: Balance = polymesh_runtime_common::deposit( + 1, + >::contract_info_size(), + ); + pub Schedule: pallet_contracts::Schedule = Default::default(); + pub DeletionWeightLimit: Weight = 500_000_000_000; + pub DeletionQueueDepth: u32 = 1024; + pub MaxInLen: u32 = 8 * 1024; } /// Splits fees 80/20 between treasury and block author. @@ -376,12 +372,6 @@ construct_runtime!( // Sudo. Usable initially. Sudo: pallet_sudo::{Pallet, Call, Config, Storage, Event}, - /* - // Contracts - BaseContracts: pallet_contracts::{Pallet, Config, Storage, Event}, - Contracts: polymesh_contracts::{Pallet, Call, Storage, Event}, - */ - // Asset: Genesis config deps: Timestamp, Asset: pallet_asset::{Pallet, Call, Storage, Config, Event}, CapitalDistribution: pallet_capital_distribution::{Pallet, Call, Storage, Event}, @@ -403,6 +393,11 @@ construct_runtime!( ExternalAgents: pallet_external_agents::{Pallet, Call, Storage, Event}, Relayer: pallet_relayer::{Pallet, Call, Storage, Event}, Rewards: pallet_rewards::{Pallet, Call, Storage, Event, Config, ValidateUnsigned}, + + // Contracts + Contracts: pallet_contracts::{Pallet, Storage, Event}, + PolymeshContracts: polymesh_contracts::{Pallet, Call, Storage, Event}, + TestUtils: pallet_test_utils::{Pallet, Call, Storage, Event } = 50, } ); @@ -472,6 +467,7 @@ polymesh_runtime_common::runtime_apis! { add_benchmark!(params, batches, pallet_scheduler, Scheduler); add_benchmark!(params, batches, pallet_staking, Staking); add_benchmark!(params, batches, pallet_test_utils, TestUtils); + add_benchmark!(params, batches, polymesh_contracts, PolymeshContracts); if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) } Ok(batches) @@ -521,6 +517,7 @@ polymesh_runtime_common::runtime_apis! { list_benchmark!(list, extra, pallet_scheduler, Scheduler); list_benchmark!(list, extra, pallet_staking, Staking); list_benchmark!(list, extra, pallet_test_utils, TestUtils); + list_benchmark!(list, extra, polymesh_contracts, PolymeshContracts); let storage_info = AllPalletsWithSystem::storage_info(); diff --git a/pallets/runtime/mainnet/Cargo.toml b/pallets/runtime/mainnet/Cargo.toml index 5c904a309e..ad1233ad23 100644 --- a/pallets/runtime/mainnet/Cargo.toml +++ b/pallets/runtime/mainnet/Cargo.toml @@ -42,7 +42,7 @@ pallet-sudo = { path = "../../sudo", default-features = false } pallet-transaction-payment = { path = "../../transaction-payment", default-features = false } pallet-treasury = { path = "../../treasury", default-features = false } pallet-utility = { path = "../../utility", default-features = false } -#polymesh-contracts = { path = "../../contracts", default-features = false } +polymesh-contracts = { path = "../../contracts", default-features = false } # RPC node-rpc-runtime-api = { path = "../../../rpc/runtime-api", default-features = false } @@ -65,7 +65,7 @@ frame-system-rpc-runtime-api = { version = "4.0.0-dev", default-features = false pallet-authority-discovery = { version = "4.0.0-dev", default-features = false } pallet-authorship = { version = "4.0.0-dev", default-features = false } pallet-babe = { version = "4.0.0-dev", default-features = false } -#pallet-contracts = { version = "4.0.0-dev", default-features = false } +pallet-contracts = { version = "4.0.0-dev", default-features = false } #pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false} pallet-executive = { package = "frame-executive", version = "4.0.0-dev", default-features = false } pallet-grandpa = { version = "4.0.0-dev", default-features = false } @@ -130,7 +130,7 @@ std = [ "pallet-compliance-manager/std", #"pallet-contracts-primitives/std", #"pallet-contracts-rpc-runtime-api/std", - #"pallet-contracts/std", + "pallet-contracts/std", "pallet-executive/std", "pallet-external-agents/std", "pallet-grandpa/std", @@ -162,7 +162,7 @@ std = [ "pallet-treasury/std", "pallet-utility/std", "polymesh-common-utilities/std", - #"polymesh-contracts/std", + "polymesh-contracts/std", "polymesh-primitives/std", "polymesh-runtime-common/std", "polymesh-weights/std", diff --git a/pallets/runtime/mainnet/src/runtime.rs b/pallets/runtime/mainnet/src/runtime.rs index df03fb7fee..5a847e1a4f 100644 --- a/pallets/runtime/mainnet/src/runtime.rs +++ b/pallets/runtime/mainnet/src/runtime.rs @@ -87,17 +87,6 @@ parameter_types! { // Authorship: pub const UncleGenerations: BlockNumber = 0; - /* - // Contracts: - pub const NetworkShareInFee: Perbill = Perbill::from_percent(60); - pub const TombstoneDeposit: Balance = 0; - pub const RentByteFee: Balance = 0; // Assigning zero to switch off the rent logic in the contracts; - pub const RentDepositOffset: Balance = 300 * DOLLARS; - /// Reward that is received by the party whose touch has led - /// to removal of a contract. - pub const SurchargeReward: Balance = 150 * DOLLARS; - */ - // Settlement: pub const MaxLegsInInstruction: u32 = 10; @@ -135,19 +124,15 @@ parameter_types! { // Identity: pub const InitialPOLYX: Balance = 0; - /* - /// The fraction of the deposit that should be used as rent per block. - pub RentFraction: Perbill = Perbill::from_rational_approximation(1u32, 30 * DAYS); - // The lazy deletion runs inside on_initialize. - pub DeletionWeightLimit: Weight = AVERAGE_ON_INITIALIZE_RATIO * - RuntimeBlockWeights::get().max_block; - // The weight needed for decoding the queue should be less or equal than a fifth - // of the overall weight dedicated to the lazy deletion. - pub DeletionQueueDepth: u32 = ((DeletionWeightLimit::get() / ( - ::WeightInfo::on_initialize_per_queue_item(1) - - ::WeightInfo::on_initialize_per_queue_item(0) - )) / 5) as u32; - */ + // Contracts: + pub ContractDeposit: Balance = polymesh_runtime_common::deposit( + 1, + >::contract_info_size(), + ); + pub Schedule: pallet_contracts::Schedule = Default::default(); + pub DeletionWeightLimit: Weight = 500_000_000_000; + pub DeletionQueueDepth: u32 = 1024; + pub MaxInLen: u32 = 8 * 1024; } /// Splits fees 80/20 between treasury and block author. @@ -352,12 +337,6 @@ construct_runtime!( // Sudo. Usable initially. Sudo: pallet_sudo::{Pallet, Call, Config, Storage, Event}, - /* - // Contracts - BaseContracts: pallet_contracts::{Pallet, Config, Storage, Event}, - Contracts: polymesh_contracts::{Pallet, Call, Storage, Event}, - */ - // Asset: Genesis config deps: Timestamp, Asset: pallet_asset::{Pallet, Call, Storage, Config, Event}, CapitalDistribution: pallet_capital_distribution::{Pallet, Call, Storage, Event}, @@ -379,6 +358,10 @@ construct_runtime!( ExternalAgents: pallet_external_agents::{Pallet, Call, Storage, Event}, Relayer: pallet_relayer::{Pallet, Call, Storage, Event}, Rewards: pallet_rewards::{Pallet, Call, Storage, Event, Config, ValidateUnsigned}, + + // Contracts + Contracts: pallet_contracts::{Pallet, Storage, Event}, + PolymeshContracts: polymesh_contracts::{Pallet, Call, Storage, Event}, } ); diff --git a/pallets/runtime/testnet/Cargo.toml b/pallets/runtime/testnet/Cargo.toml index fcddd0e344..9ba58958ae 100644 --- a/pallets/runtime/testnet/Cargo.toml +++ b/pallets/runtime/testnet/Cargo.toml @@ -41,9 +41,9 @@ pallet-statistics = { path = "../../statistics", default-features = false } pallet-transaction-payment = { path = "../../transaction-payment", default-features = false } pallet-treasury = { path = "../../treasury", default-features = false } pallet-utility = { path = "../../utility", default-features = false } -#polymesh-contracts = { path = "../../contracts", default-features = false } pallet-sudo = { path = "../../sudo", default-features = false } pallet-test-utils = { path = "../../test-utils", default-features = false } +polymesh-contracts = { path = "../../contracts", default-features = false } # RPC node-rpc-runtime-api = { path = "../../../rpc/runtime-api", default-features = false } @@ -80,7 +80,7 @@ sp-block-builder = { version = "4.0.0-dev", default-features = false } sp-arithmetic = { version = "4.0.0-dev", default-features = false } pallet-authorship = { version = "4.0.0-dev", default-features = false } -#pallet-contracts = { version = "4.0.0-dev", default-features = false } +pallet-contracts = { version = "4.0.0-dev", default-features = false } #pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false} pallet-executive = { package = "frame-executive", version = "4.0.0-dev", default-features = false } pallet-grandpa = { version = "4.0.0-dev", default-features = false } @@ -131,7 +131,7 @@ std = [ "pallet-compliance-manager/std", #"pallet-contracts-primitives/std", #"pallet-contracts-rpc-runtime-api/std", - #"pallet-contracts/std", + "pallet-contracts/std", "pallet-executive/std", "pallet-external-agents/std", "pallet-grandpa/std", @@ -182,7 +182,7 @@ std = [ "sp-std/std", "sp-transaction-pool/std", "sp-version/std", - #"polymesh-contracts/std" + "polymesh-contracts/std" ] runtime-benchmarks = [ diff --git a/pallets/runtime/testnet/src/runtime.rs b/pallets/runtime/testnet/src/runtime.rs index 3db110e41c..2e33ef3273 100644 --- a/pallets/runtime/testnet/src/runtime.rs +++ b/pallets/runtime/testnet/src/runtime.rs @@ -139,19 +139,15 @@ parameter_types! { // Identity: pub const InitialPOLYX: Balance = 100_000 * POLY; - /* - /// The fraction of the deposit that should be used as rent per block. - pub RentFraction: Perbill = Perbill::from_rational_approximation(1u32, 30 * DAYS); - // The lazy deletion runs inside on_initialize. - pub DeletionWeightLimit: Weight = AVERAGE_ON_INITIALIZE_RATIO * - RuntimeBlockWeights::get().max_block; - // The weight needed for decoding the queue should be less or equal than a fifth - // of the overall weight dedicated to the lazy deletion. - pub DeletionQueueDepth: u32 = ((DeletionWeightLimit::get() / ( - ::WeightInfo::on_initialize_per_queue_item(1) - - ::WeightInfo::on_initialize_per_queue_item(0) - )) / 5) as u32; - */ + // Contracts: + pub ContractDeposit: Balance = polymesh_runtime_common::deposit( + 1, + >::contract_info_size(), + ); + pub Schedule: pallet_contracts::Schedule = Default::default(); + pub DeletionWeightLimit: Weight = 500_000_000_000; + pub DeletionQueueDepth: u32 = 1024; + pub MaxInLen: u32 = 8 * 1024; } /// Splits fees 80/20 between treasury and block author. @@ -371,12 +367,6 @@ construct_runtime!( // Sudo. Usable initially. Sudo: pallet_sudo::{Pallet, Call, Config, Storage, Event}, - /* - // Contracts - BaseContracts: pallet_contracts::{Pallet, Config, Storage, Event}, - Contracts: polymesh_contracts::{Pallet, Call, Storage, Event}, - */ - // Asset: Genesis config deps: Timestamp, Asset: pallet_asset::{Pallet, Call, Storage, Config, Event}, CapitalDistribution: pallet_capital_distribution::{Pallet, Call, Storage, Event}, @@ -398,6 +388,11 @@ construct_runtime!( ExternalAgents: pallet_external_agents::{Pallet, Call, Storage, Event}, Relayer: pallet_relayer::{Pallet, Call, Storage, Event}, Rewards: pallet_rewards::{Pallet, Call, Storage, Event, Config, ValidateUnsigned}, + + // Contracts + Contracts: pallet_contracts::{Pallet, Storage, Event}, + PolymeshContracts: polymesh_contracts::{Pallet, Call, Storage, Event}, + TestUtils: pallet_test_utils::{Pallet, Call, Storage, Event } = 50, } ); diff --git a/pallets/runtime/tests/Cargo.toml b/pallets/runtime/tests/Cargo.toml index d50b441853..dcd2efb00a 100644 --- a/pallets/runtime/tests/Cargo.toml +++ b/pallets/runtime/tests/Cargo.toml @@ -38,7 +38,7 @@ pallet-transaction-payment = { path = "../../transaction-payment", default-featu pallet-treasury = { path = "../../treasury", default-features = false } pallet-utility = { path = "../../utility", default-features = false } polymesh-common-utilities = { path = "../../common", default-features = false } -#polymesh-contracts = { path = "../../contracts", default-features = false } +polymesh-contracts = { path = "../../contracts", default-features = false } polymesh-extensions = { path = "../extensions", default-features = false } polymesh-primitives = { path = "../../../primitives", default-features = false } polymesh-runtime-common = { path = "../common", default-features = false } @@ -68,7 +68,7 @@ ink_primitives = { git = "https://github.com/paritytech/ink", tag = "v2.1.0", de pallet-authority-discovery = { version = "4.0.0-dev", default-features = false } pallet-authorship = { version = "4.0.0-dev", default-features = false } pallet-babe = { version = "4.0.0-dev", default-features = false } -#pallet-contracts = { version = "4.0.0-dev", default-features = false } +pallet-contracts = { version = "4.0.0-dev", default-features = false } #pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false } #pallet-contracts-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } pallet-executive = { package = "frame-executive", version = "4.0.0-dev", default-features = false } @@ -138,7 +138,7 @@ std = [ "pallet-bridge/std", "pallet-committee/std", "pallet-compliance-manager/std", - #"pallet-contracts/std", + "pallet-contracts/std", "pallet-corporate-actions/std", "pallet-external-agents/std", "polymesh-weights/std", @@ -162,7 +162,7 @@ std = [ "polymesh-common-utilities/std", "polymesh-primitives/std", "polymesh-runtime-common/std", - #"polymesh-contracts/std", + "polymesh-contracts/std", "polymesh-weights/std", "serde/std", "sp-arithmetic/std", diff --git a/pallets/runtime/tests/fixtures/chain_extension.wat b/pallets/runtime/tests/fixtures/chain_extension.wat new file mode 100644 index 0000000000..b7813b8779 --- /dev/null +++ b/pallets/runtime/tests/fixtures/chain_extension.wat @@ -0,0 +1,32 @@ +;; Call chain extension by passing through input and output of this contract +(module + (import "seal0" "seal_call_chain_extension" + (func $seal_call_chain_extension (param i32 i32 i32 i32 i32) (result i32)) + ) + (import "seal0" "seal_input" (func $seal_input (param i32 i32))) + (import "env" "memory" (memory 16 16)) + + ;; [0, 4) len of input output + (data (i32.const 0) "10000") + + (func (export "deploy")) + + (func (export "call") + ;; Read input into memory at offset 4 and length at offset 0. + (call $seal_input (i32.const 4) (i32.const 0)) + + ;; Input is expected to be `func_id` followed by arbitrary data. + (call $seal_call_chain_extension + ;; func_id is first 4 bytes of input. + (i32.load (i32.const 4)) + ;; input_ptr, starts at offset 8 since func_id takes up 4 initial. + (i32.const 8) + ;; input_len stored at 0 per above, but we need to discount func_id from length. + (i32.sub (i32.load (i32.const 0)) (i32.const 4)) + (i32.const 0) ;; output_ptr -- ignored + (i32.const 0) ;; output_len_ptr -- ignored + ) + + drop + ) +) diff --git a/pallets/runtime/tests/src/asset_test.rs b/pallets/runtime/tests/src/asset_test.rs index 77581455da..f17c976c36 100644 --- a/pallets/runtime/tests/src/asset_test.rs +++ b/pallets/runtime/tests/src/asset_test.rs @@ -2244,10 +2244,9 @@ fn invalid_ticker_registry_test() { (&b"YOUR"[..], false), ] .iter() - .map(|(name, exp)| (Ticker::try_from(name.as_ref()).unwrap(), exp)) + .map(|(name, exp)| ((*name).try_into().unwrap(), exp)) .for_each(|(ticker, exp)| { - let valid = Asset::is_ticker_registry_valid(&ticker, owner.did); - assert_eq!(*exp, valid) + assert_eq!(*exp, Asset::is_ticker_registry_valid(&ticker, owner.did)) }); }); } diff --git a/pallets/runtime/tests/src/contracts_test.rs b/pallets/runtime/tests/src/contracts_test.rs new file mode 100644 index 0000000000..b7433253a0 --- /dev/null +++ b/pallets/runtime/tests/src/contracts_test.rs @@ -0,0 +1,161 @@ +use crate::{ + ext_builder::ExtBuilder, + storage::{TestStorage, User}, +}; +use codec::Encode; +use frame_support::{assert_err_ignore_postinfo, assert_noop, assert_ok, assert_storage_noop}; +use polymesh_common_utilities::constants::currency::POLY; +use polymesh_primitives::{AccountId, Gas, Permissions, PortfolioPermissions, Ticker}; +use polymesh_runtime_common::Currency; +use sp_runtime::traits::Hash; +use std::convert::TryFrom; +use test_client::AccountKeyring; + +// We leave it to tests in the substrate to ensure that `pallet-contracts` +// is functioning correctly, so we do not add such redundant tests +// and instead focus on the particulars of our contracts pallet. +// This includes testing CDD, permissions, and what the chain extension does. + +const GAS_LIMIT: Gas = 10_000_000_000; + +type Asset = pallet_asset::Module; +type FrameContracts = pallet_contracts::Pallet; +type BaseContractsError = pallet_contracts::Error; +type CodeHash = ::Output; +type Hashing = ::Hashing; +type Contracts = polymesh_contracts::Pallet; +type ContractsError = polymesh_contracts::Error; +type MaxInLen = ::MaxInLen; +type Balances = pallet_balances::Pallet; +type Identity = pallet_identity::Module; +type IdentityError = pallet_identity::Error; + +/// Load a given wasm module represented by a .wat file +/// and returns a wasm binary contents along with it's hash. +/// +/// The fixture files are located under the `fixtures/` directory. +fn compile_module(fixture_name: &str) -> wat::Result<(Vec, CodeHash)> { + let fixture_path = ["fixtures/", fixture_name, ".wat"].concat(); + let wasm_binary = wat::parse_file(fixture_path)?; + let code_hash = Hashing::hash(&wasm_binary); + Ok((wasm_binary, code_hash)) +} + +fn chain_extension() -> (Vec, CodeHash) { + compile_module("chain_extension").unwrap() +} + +#[test] +fn misc_polymesh_extensions() { + let eve = AccountKeyring::Eve.to_account_id(); + ExtBuilder::default() + .cdd_providers(vec![eve.clone()]) + .build() + .execute_with(|| { + let owner = User::new(AccountKeyring::Alice); + let user = User::new(AccountKeyring::Bob); + Balances::make_free_balance_be(&owner.acc(), 1_000_000 * POLY); + + let (code, _) = chain_extension(); + let hash = Hashing::hash(&code); + let salt = vec![0xFF]; + + let perms = Permissions { + portfolio: PortfolioPermissions::Whole, + ..Permissions::empty() + }; + let instantiate = || { + Contracts::instantiate_with_code( + owner.origin(), + FrameContracts::subsistence_threshold(), + GAS_LIMIT, + code.clone(), + vec![], + salt.clone(), + perms.clone(), + ) + }; + let derive_key = |key, salt| FrameContracts::contract_address(&key, &hash, salt); + let call = |key, data| Contracts::call(user.origin(), key, 0, GAS_LIMIT, data); + let assert_has_secondary_key = |key: AccountId| { + let data = Identity::get_key_identity_data(key).unwrap(); + assert_eq!(data.identity, owner.did); + assert_eq!(data.permissions.unwrap(), perms); + }; + + // Instantiate contract. + // Next time, a secondary key with that key already exists. + assert_ok!(instantiate()); + assert_noop!(instantiate(), IdentityError::AlreadyLinked); + + // Ensure contract is now a secondary key of Alice. + let key_first_contract = derive_key(owner.acc(), &salt); + assert_has_secondary_key(key_first_contract.clone()); + + // Ensure a call different non-existent instantiation results in "contract not found". + assert_storage_noop!(assert_err_ignore_postinfo!( + call(derive_key(owner.acc(), &[0x00]), vec![]), + BaseContractsError::ContractNotFound, + )); + + // Execute a chain extension with too long data. + let call = |data| call(key_first_contract.clone(), data); + let mut too_long_data = 0x00_00_00_00.encode(); + too_long_data.extend(vec![b'X'; MaxInLen::get() as usize + 1]); + assert_storage_noop!(assert_err_ignore_postinfo!( + call(too_long_data), + ContractsError::InLenTooLarge, + )); + + // Execute a func_id that isn't recognized. + assert_storage_noop!(assert_err_ignore_postinfo!( + call(0x04_00_00_00.encode()), + ContractsError::RuntimeCallNotFound, + )); + + // Input for registering ticker AAAAAAAAAAAA. + let ticker = Ticker::try_from(b"A" as &[u8]).unwrap(); + let mut register_ticker_data = 0x00_01_00_00.encode(); + register_ticker_data.extend(ticker.encode()); + + // Leave too much data left in the input. + let mut register_ticker_extra_data = register_ticker_data.clone(); + register_ticker_extra_data.extend(b"X"); // Adding this leaves too much data. + assert_storage_noop!(assert_err_ignore_postinfo!( + call(register_ticker_extra_data), + ContractsError::DataLeftAfterDecoding, + )); + + // Execute `register_ticker` but fail due to lacking permissions. + assert_storage_noop!(assert_err_ignore_postinfo!( + call(register_ticker_data.clone()), + pallet_permissions::Error::::UnauthorizedCaller, + )); + + // Grant permissions to `key_first_contract`, and so registration should go through. + assert_ok!(Identity::set_secondary_key_permissions( + owner.origin(), + key_first_contract.clone(), + Permissions::default(), + )); + + // Successfully execute `register_ticker`, + // ensuring that it was Alice who registered it. + assert_ok!(call(register_ticker_data)); + assert_ok!(Asset::ensure_owner(&ticker, owner.did)); + + // Prepare instantiation with a different salt. + // Make sure that fails with additional 'X' and then succeeds. + let mut prepare_instantiate_data = 0xFF_00_00_00u32.encode(); + let salt = vec![0xEEu8]; + prepare_instantiate_data.extend((hash, salt.clone(), perms.clone()).encode()); + prepare_instantiate_data.extend(b"X"); + assert_storage_noop!(assert_err_ignore_postinfo!( + call(prepare_instantiate_data.clone()), + ContractsError::DataLeftAfterDecoding, + )); + prepare_instantiate_data.pop().unwrap(); + assert_ok!(call(prepare_instantiate_data)); + assert_has_secondary_key(derive_key(key_first_contract, &salt)); + }) +} diff --git a/pallets/runtime/tests/src/lib.rs b/pallets/runtime/tests/src/lib.rs index 736f484c6f..effed98f7a 100644 --- a/pallets/runtime/tests/src/lib.rs +++ b/pallets/runtime/tests/src/lib.rs @@ -2,6 +2,7 @@ #![feature(crate_visibility_modifier)] #![feature(bool_to_option)] #![feature(assert_matches)] +#![cfg(test)] pub mod storage; pub use storage::{ @@ -13,59 +14,32 @@ pub use storage::{ pub mod ext_builder; pub use ext_builder::ExtBuilder; -#[cfg(test)] #[macro_use] mod asset_test; -#[cfg(test)] mod asset_metadata_test; -#[cfg(test)] mod balances_test; -#[cfg(test)] mod bridge; -#[cfg(test)] mod committee_test; -#[cfg(test)] mod compliance_manager_test; -/* -#[cfg(test)] -mod contract_test; -*/ -#[cfg(test)] +//mod contract_test; +mod contracts_test; mod corporate_actions_test; -#[cfg(test)] #[macro_use] mod external_agents_test; -#[cfg(test)] mod fee_details; -#[cfg(test)] mod group_test; -#[cfg(test)] mod identity_test; -#[cfg(test)] mod multisig; -#[cfg(test)] mod pips_test; -#[cfg(test)] mod portfolio; -#[cfg(test)] mod protocol_fee; -#[cfg(test)] mod relayer_test; -#[cfg(test)] mod rewards_test; -#[cfg(test)] mod settlement_test; -#[cfg(test)] mod signed_extra; -#[cfg(test)] mod staking; -#[cfg(test)] mod sto_test; -#[cfg(test)] mod transaction_payment_test; -#[cfg(test)] mod transfer_compliance_test; -#[cfg(test)] mod treasury_test; -#[cfg(test)] mod utility_test; diff --git a/pallets/runtime/tests/src/storage.rs b/pallets/runtime/tests/src/storage.rs index 81a7d5a9fb..7976ccfa0f 100644 --- a/pallets/runtime/tests/src/storage.rs +++ b/pallets/runtime/tests/src/storage.rs @@ -222,12 +222,6 @@ frame_support::construct_runtime!( Sudo: pallet_sudo::{Pallet, Call, Config, Storage, Event} = 17, MultiSig: pallet_multisig::{Pallet, Call, Config, Storage, Event} = 18, - /* - // Contracts - BaseContracts: pallet_contracts::{Pallet, Config, Storage, Event} = 19, - Contracts: polymesh_contracts::{Pallet, Call, Storage, Event} = 20, - */ - // Polymesh Governance Committees Treasury: pallet_treasury::{Pallet, Call, Event} = 21, PolymeshCommittee: pallet_committee::::{Pallet, Call, Storage, Origin, Event, Config} = 22, @@ -271,6 +265,10 @@ frame_support::construct_runtime!( ExternalAgents: pallet_external_agents::{Pallet, Call, Storage, Event} = 52, Relayer: pallet_relayer::{Pallet, Call, Storage, Event} = 53, Rewards: pallet_rewards::{Pallet, Call, Storage, Event, Config} = 54, + + // Contracts + Contracts: pallet_contracts::{Pallet, Storage, Event} = 19, + PolymeshContracts: polymesh_contracts::{Pallet, Call, Storage, Event} = 20, } ); @@ -434,6 +432,15 @@ parameter_types! { pub const SurchargeReward: Balance = 1500; pub const MaxDepth: u32 = 100; pub const MaxValueSize: u32 = 16_384; + + pub ContractDeposit: Balance = polymesh_runtime_common::deposit( + 1, + >::contract_info_size(), + ); + pub Schedule: pallet_contracts::Schedule = Default::default(); + pub DeletionWeightLimit: Weight = 500_000_000_000; + pub DeletionQueueDepth: u32 = 1024; + pub MaxInLen: u32 = 8 * 1024; } thread_local! { diff --git a/pallets/weights/Cargo.toml b/pallets/weights/Cargo.toml index 70b0d6590f..2a3f9d0430 100644 --- a/pallets/weights/Cargo.toml +++ b/pallets/weights/Cargo.toml @@ -39,7 +39,7 @@ pallet-sto = { path = "../sto", default-features = false } pallet-treasury = { path = "../treasury", default-features = false } pallet-utility = { path = "../utility", default-features = false } pallet-test-utils = { path = "../test-utils", default-features = false } -#polymesh-contracts = { path = "../contracts", default-features = false } +polymesh-contracts = { path = "../contracts", default-features = false } polymesh-runtime-common = { path = "../runtime/common", default-features = false } [features] @@ -71,5 +71,5 @@ std = [ "pallet-timestamp/std", "pallet-treasury/std", "pallet-utility/std", - #"polymesh-contracts/std", + "polymesh-contracts/std", ] diff --git a/pallets/weights/src/lib.rs b/pallets/weights/src/lib.rs index c5bfd0272b..cf20fab8e2 100644 --- a/pallets/weights/src/lib.rs +++ b/pallets/weights/src/lib.rs @@ -49,4 +49,4 @@ pub mod pallet_test_utils; pub mod pallet_timestamp; pub mod pallet_treasury; pub mod pallet_utility; -//pub mod polymesh_contracts; +pub mod polymesh_contracts; diff --git a/pallets/weights/src/polymesh_contracts.rs b/pallets/weights/src/polymesh_contracts.rs index dba641bb18..529f4fd897 100644 --- a/pallets/weights/src/polymesh_contracts.rs +++ b/pallets/weights/src/polymesh_contracts.rs @@ -1,57 +1,132 @@ -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 2.0.1 +//! Autogenerated weights for `polymesh_contracts` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2022-03-25, STEPS: `200`, REPEAT: 10, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 128 + +// Executed Command: +// ./target/release/polymesh +// benchmark +// -p=polymesh_contracts +// -e=* +// -s=200 +// -r +// 10 +// --execution +// Wasm +// --wasm-execution +// Compiled +// --output +// polymesh_contracts.rs #![allow(unused_parens)] #![allow(unused_imports)] use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; +/// Weight functions for `polymesh_contracts`. pub struct WeightInfo; impl polymesh_contracts::WeightInfo for WeightInfo { - fn put_code(l: u32, u: u32, d: u32) -> Weight { - (0 as Weight) - .saturating_add((259_000 as Weight).saturating_mul(l as Weight)) - .saturating_add((14_000 as Weight).saturating_mul(u as Weight)) - .saturating_add((18_000 as Weight).saturating_mul(d as Weight)) - .saturating_add(DbWeight::get().reads(10 as Weight)) - .saturating_add(DbWeight::get().writes(4 as Weight)) - } - fn instantiate() -> Weight { - (1_724_633_000 as Weight) - .saturating_add(DbWeight::get().reads(19 as Weight)) - .saturating_add(DbWeight::get().writes(6 as Weight)) - } - fn freeze_instantiation() -> Weight { - (123_290_000 as Weight) - .saturating_add(DbWeight::get().reads(7 as Weight)) + // Storage: Identity KeyRecords (r:1 w:0) + // Storage: Contracts ContractInfoOf (r:1 w:1) + // Storage: Contracts CodeStorage (r:1 w:0) + // Storage: Timestamp Now (r:1 w:0) + fn prepare_instantiate_full(n: u32) -> Weight { + (273_154_000 as Weight) + // Standard Error: 0 + .saturating_add((2_000 as Weight).saturating_mul(n as Weight)) + .saturating_add(DbWeight::get().reads(4 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } - fn unfreeze_instantiation() -> Weight { - (141_107_000 as Weight) - .saturating_add(DbWeight::get().reads(7 as Weight)) - .saturating_add(DbWeight::get().writes(1 as Weight)) + // Storage: Identity KeyRecords (r:2 w:0) + // Storage: Contracts ContractInfoOf (r:1 w:1) + // Storage: Contracts CodeStorage (r:1 w:0) + // Storage: Timestamp Now (r:1 w:0) + // Storage: Identity IsDidFrozen (r:1 w:0) + // Storage: Identity CurrentDid (r:1 w:1) + // Storage: Permissions CurrentPalletName (r:1 w:1) + // Storage: Permissions CurrentDispatchableName (r:1 w:1) + // Storage: Asset CustomTypesInverse (r:1 w:1) + // Storage: Asset CustomTypeIdSequence (r:1 w:1) + // Storage: Asset CustomTypes (r:0 w:1) + fn chain_extension_full(n: u32) -> Weight { + (338_423_000 as Weight) + // Standard Error: 0 + .saturating_add((12_000 as Weight).saturating_mul(n as Weight)) + .saturating_add(DbWeight::get().reads(11 as Weight)) + .saturating_add(DbWeight::get().writes(7 as Weight)) } - fn transfer_template_ownership() -> Weight { - (201_119_000 as Weight) - .saturating_add(DbWeight::get().reads(12 as Weight)) + // Storage: Identity KeyRecords (r:1 w:0) + // Storage: Contracts ContractInfoOf (r:1 w:1) + // Storage: Contracts CodeStorage (r:1 w:0) + // Storage: Timestamp Now (r:1 w:0) + fn chain_extension_early_exit() -> Weight { + (155_987_000 as Weight) + .saturating_add(DbWeight::get().reads(4 as Weight)) .saturating_add(DbWeight::get().writes(1 as Weight)) } - fn change_template_fees() -> Weight { - (2_494_202_000 as Weight) - .saturating_add(DbWeight::get().reads(8 as Weight)) - .saturating_add(DbWeight::get().writes(2 as Weight)) + // Storage: Identity KeyRecords (r:1 w:0) + // Storage: Asset CustomTypesInverse (r:1 w:1) + // Storage: Asset CustomTypeIdSequence (r:1 w:1) + // Storage: Asset CustomTypes (r:0 w:1) + fn basic_runtime_call(n: u32) -> Weight { + (34_352_000 as Weight) + // Standard Error: 0 + .saturating_add((6_000 as Weight).saturating_mul(n as Weight)) + .saturating_add(DbWeight::get().reads(3 as Weight)) + .saturating_add(DbWeight::get().writes(3 as Weight)) } - fn change_template_meta_url(u: u32) -> Weight { - (2_196_686_000 as Weight) - .saturating_add((11_000 as Weight).saturating_mul(u as Weight)) - .saturating_add(DbWeight::get().reads(8 as Weight)) - .saturating_add(DbWeight::get().writes(1 as Weight)) + // Storage: Identity KeyRecords (r:2 w:0) + // Storage: Contracts ContractInfoOf (r:1 w:1) + // Storage: Contracts CodeStorage (r:1 w:0) + // Storage: Timestamp Now (r:1 w:0) + // Storage: Identity IsDidFrozen (r:1 w:0) + // Storage: Instance2Group ActiveMembers (r:1 w:0) + // Storage: Instance2Group InactiveMembers (r:1 w:0) + // Storage: Identity Claims (r:2 w:0) + // Storage: System Account (r:2 w:2) + fn call() -> Weight { + (196_050_000 as Weight) + .saturating_add(DbWeight::get().reads(12 as Weight)) + .saturating_add(DbWeight::get().writes(3 as Weight)) } - fn update_schedule() -> Weight { - (55_649_000 as Weight) - .saturating_add(DbWeight::get().reads(1 as Weight)) - .saturating_add(DbWeight::get().writes(1 as Weight)) + // Storage: Identity KeyRecords (r:2 w:1) + // Storage: Contracts CodeStorage (r:1 w:1) + // Storage: Contracts AccountCounter (r:1 w:1) + // Storage: Contracts ContractInfoOf (r:1 w:1) + // Storage: Timestamp Now (r:1 w:0) + // Storage: Identity IsDidFrozen (r:1 w:0) + // Storage: Instance2Group ActiveMembers (r:1 w:0) + // Storage: Instance2Group InactiveMembers (r:1 w:0) + // Storage: Identity Claims (r:2 w:0) + // Storage: System Account (r:2 w:2) + // Storage: Identity DidKeys (r:0 w:1) + fn instantiate_with_hash(s: u32) -> Weight { + (264_925_000 as Weight) + // Standard Error: 0 + .saturating_add((3_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(DbWeight::get().reads(13 as Weight)) + .saturating_add(DbWeight::get().writes(7 as Weight)) } - fn set_put_code_flag() -> Weight { - (25_048_000 as Weight).saturating_add(DbWeight::get().writes(1 as Weight)) + // Storage: Identity KeyRecords (r:2 w:1) + // Storage: Contracts AccountCounter (r:1 w:1) + // Storage: Contracts ContractInfoOf (r:1 w:1) + // Storage: Timestamp Now (r:1 w:0) + // Storage: Identity IsDidFrozen (r:1 w:0) + // Storage: Instance2Group ActiveMembers (r:1 w:0) + // Storage: Instance2Group InactiveMembers (r:1 w:0) + // Storage: Identity Claims (r:2 w:0) + // Storage: System Account (r:2 w:2) + // Storage: Contracts CodeStorage (r:1 w:1) + // Storage: Contracts PristineCode (r:0 w:1) + // Storage: Identity DidKeys (r:0 w:1) + fn instantiate_with_code(c: u32, s: u32) -> Weight { + (338_327_000 as Weight) + // Standard Error: 0 + .saturating_add((185_000 as Weight).saturating_mul(c as Weight)) + // Standard Error: 0 + .saturating_add((3_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(DbWeight::get().reads(13 as Weight)) + .saturating_add(DbWeight::get().writes(8 as Weight)) } } diff --git a/primitives/src/secondary_key.rs b/primitives/src/secondary_key.rs index 2932e1d308..73427f2dbd 100644 --- a/primitives/src/secondary_key.rs +++ b/primitives/src/secondary_key.rs @@ -260,11 +260,10 @@ impl KeyRecord { } } - /// Get the identity if it is a primary/secondary key. - pub fn get_did(&self) -> Option { + /// Extract the identity if it is a primary/secondary key. + pub fn as_did(&self) -> Option { match self { - Self::PrimaryKey(did) => Some(*did), - Self::SecondaryKey(did, _) => Some(*did), + Self::PrimaryKey(did) | Self::SecondaryKey(did, _) => Some(*did), _ => None, } } From ba91adeaaed762fc4f8806bef8968c7bbbddbba4 Mon Sep 17 00:00:00 2001 From: Joel Moore <47923231+JMoore96@users.noreply.github.com> Date: Thu, 12 May 2022 09:40:26 -0400 Subject: [PATCH 49/53] Mesh 1826/ remove contracts old code and examples (#1240) * removed contracts/* and pallets/contracts-old folders along with old commented out code related to contracts * formatting * minor changes --- bin/executor/tests/basic.rs | 165 - contracts/CountTransferManager/.gitignore | 9 - contracts/CountTransferManager/Cargo.lock | 1191 -- contracts/CountTransferManager/Cargo.toml | 45 - contracts/CountTransferManager/README.md | 32 - contracts/CountTransferManager/lib.rs | 238 - .../GeneralTransferManager/.cargo/config | 5 - .../.ink/abi_gen/Cargo.toml | 15 - .../.ink/abi_gen/main.rs | 7 - contracts/GeneralTransferManager/Cargo.lock | 495 - contracts/GeneralTransferManager/Cargo.toml | 61 - contracts/GeneralTransferManager/README.md | 23 - contracts/GeneralTransferManager/src/lib.rs | 242 - .../PercentageTransferManager/.gitignore | 9 - .../PercentageTransferManager/Cargo.toml | 48 - contracts/PercentageTransferManager/README.md | 31 - .../PercentageTransferManager/src/lib.rs | 591 - contracts/SimpleSTO/.cargo/config | 5 - contracts/SimpleSTO/.ink/abi_gen/Cargo.toml | 15 - contracts/SimpleSTO/.ink/abi_gen/main.rs | 7 - contracts/SimpleSTO/Cargo.lock | 495 - contracts/SimpleSTO/Cargo.toml | 61 - contracts/SimpleSTO/README.md | 23 - contracts/SimpleSTO/src/lib.rs | 58 - .../examples/RuntimeInteraction/.gitignore | 9 - .../.ink/abi_gen/Cargo.toml | 16 - .../RuntimeInteraction/.ink/abi_gen/main.rs | 7 - .../examples/RuntimeInteraction/Cargo.toml | 74 - contracts/examples/RuntimeInteraction/lib.rs | 81 - .../examples/custom-ink-env-types/.gitignore | 9 - .../examples/custom-ink-env-types/Cargo.toml | 43 - .../custom-ink-env-types/src/calls.rs | 51 - .../examples/custom-ink-env-types/src/lib.rs | 209 - pallets/asset/src/lib.rs | 141 +- pallets/common/src/traits/asset.rs | 3 - pallets/contracts-old/Cargo.toml | 54 - pallets/contracts-old/fixtures/dummy.wat | 4 - pallets/contracts-old/fixtures/ptm.wat | 12921 ---------------- pallets/contracts-old/src/benchmarking.rs | 263 - pallets/contracts-old/src/lib.rs | 453 - pallets/runtime/ci/src/runtime.rs | 1 - pallets/runtime/common/src/runtime.rs | 1 - pallets/runtime/develop/src/runtime.rs | 3 +- pallets/runtime/mainnet/src/runtime.rs | 1 - pallets/runtime/testnet/src/runtime.rs | 1 - pallets/runtime/tests/src/asset_test.rs | 191 - pallets/settlement/src/benchmarking.rs | 34 - src/service.rs | 9 +- 48 files changed, 4 insertions(+), 18446 deletions(-) delete mode 100755 contracts/CountTransferManager/.gitignore delete mode 100644 contracts/CountTransferManager/Cargo.lock delete mode 100755 contracts/CountTransferManager/Cargo.toml delete mode 100644 contracts/CountTransferManager/README.md delete mode 100755 contracts/CountTransferManager/lib.rs delete mode 100755 contracts/GeneralTransferManager/.cargo/config delete mode 100755 contracts/GeneralTransferManager/.ink/abi_gen/Cargo.toml delete mode 100755 contracts/GeneralTransferManager/.ink/abi_gen/main.rs delete mode 100644 contracts/GeneralTransferManager/Cargo.lock delete mode 100755 contracts/GeneralTransferManager/Cargo.toml delete mode 100644 contracts/GeneralTransferManager/README.md delete mode 100755 contracts/GeneralTransferManager/src/lib.rs delete mode 100755 contracts/PercentageTransferManager/.gitignore delete mode 100755 contracts/PercentageTransferManager/Cargo.toml delete mode 100644 contracts/PercentageTransferManager/README.md delete mode 100755 contracts/PercentageTransferManager/src/lib.rs delete mode 100755 contracts/SimpleSTO/.cargo/config delete mode 100755 contracts/SimpleSTO/.ink/abi_gen/Cargo.toml delete mode 100755 contracts/SimpleSTO/.ink/abi_gen/main.rs delete mode 100644 contracts/SimpleSTO/Cargo.lock delete mode 100755 contracts/SimpleSTO/Cargo.toml delete mode 100644 contracts/SimpleSTO/README.md delete mode 100755 contracts/SimpleSTO/src/lib.rs delete mode 100755 contracts/examples/RuntimeInteraction/.gitignore delete mode 100755 contracts/examples/RuntimeInteraction/.ink/abi_gen/Cargo.toml delete mode 100755 contracts/examples/RuntimeInteraction/.ink/abi_gen/main.rs delete mode 100755 contracts/examples/RuntimeInteraction/Cargo.toml delete mode 100755 contracts/examples/RuntimeInteraction/lib.rs delete mode 100644 contracts/examples/custom-ink-env-types/.gitignore delete mode 100644 contracts/examples/custom-ink-env-types/Cargo.toml delete mode 100644 contracts/examples/custom-ink-env-types/src/calls.rs delete mode 100644 contracts/examples/custom-ink-env-types/src/lib.rs delete mode 100644 pallets/contracts-old/Cargo.toml delete mode 100644 pallets/contracts-old/fixtures/dummy.wat delete mode 100644 pallets/contracts-old/fixtures/ptm.wat delete mode 100644 pallets/contracts-old/src/benchmarking.rs delete mode 100644 pallets/contracts-old/src/lib.rs diff --git a/bin/executor/tests/basic.rs b/bin/executor/tests/basic.rs index c37a278b20..216ebde619 100644 --- a/bin/executor/tests/basic.rs +++ b/bin/executor/tests/basic.rs @@ -22,7 +22,6 @@ use frame_support::{ StorageMap, StorageValue, }; use frame_system::{self, EventRecord, Phase}; -//use pallet_contracts::ContractAddressFor; use sp_core::{storage::well_known_keys, traits::Externalities, NeverNativeValue}; use sp_runtime::{ traits::Hash as HashT, transaction_validity::InvalidTransaction, ApplyExtrinsicResult, @@ -542,170 +541,6 @@ fn full_wasm_block_import_works() { }); } -const CODE_TRANSFER: &str = r#" -(module -;; seal_call( -;; callee_ptr: u32, -;; callee_len: u32, -;; gas: u64, -;; value_ptr: u32, -;; value_len: u32, -;; input_data_ptr: u32, -;; input_data_len: u32, -;; output_ptr: u32, -;; output_len_ptr: u32 -;; ) -> u32 -(import "seal0" "seal_call" (func $seal_call (param i32 i32 i64 i32 i32 i32 i32 i32 i32) (result i32))) -(import "seal0" "seal_input" (func $seal_input (param i32 i32))) -(import "env" "memory" (memory 1 1)) -(func (export "deploy") -) -(func (export "call") - (block $fail - ;; Load input data to contract memory - (call $seal_input - (i32.const 0) - (i32.const 52) - ) - - ;; fail if the input size is not != 4 - (br_if $fail - (i32.ne - (i32.const 4) - (i32.load (i32.const 52)) - ) - ) - - (br_if $fail - (i32.ne - (i32.load8_u (i32.const 0)) - (i32.const 0) - ) - ) - (br_if $fail - (i32.ne - (i32.load8_u (i32.const 1)) - (i32.const 1) - ) - ) - (br_if $fail - (i32.ne - (i32.load8_u (i32.const 2)) - (i32.const 2) - ) - ) - (br_if $fail - (i32.ne - (i32.load8_u (i32.const 3)) - (i32.const 3) - ) - ) - - (drop - (call $seal_call - (i32.const 4) ;; Pointer to "callee" address. - (i32.const 32) ;; Length of "callee" address. - (i64.const 0) ;; How much gas to devote for the execution. 0 = all. - (i32.const 36) ;; Pointer to the buffer with value to transfer - (i32.const 16) ;; Length of the buffer with value to transfer. - (i32.const 0) ;; Pointer to input data buffer address - (i32.const 0) ;; Length of input data buffer - (i32.const 4294967295) ;; u32 max value is the sentinel value: do not copy output - (i32.const 0) ;; Length is ignored in this case - ) - ) - - (return) - ) - unreachable -) -;; Destination AccountId to transfer the funds. -;; Represented by H256 (32 bytes long) in little endian. -(data (i32.const 4) - "\09\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00" - "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00" - "\00\00\00\00" -) -;; Amount of value to transfer. -;; Represented by u128 (16 bytes long) in little endian. -(data (i32.const 36) - "\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00" - "\00\00" -) -;; Length of the input buffer -(data (i32.const 52) "\04") -) -"#; - -/* -#[test] -fn deploying_wasm_contract_should_work() { - let transfer_code = wabt::wat2wasm(CODE_TRANSFER).unwrap(); - let transfer_ch = ::Hashing::hash(&transfer_code); - - let addr = ::DetermineContractAddress::contract_address_for( - &transfer_ch, - &[], - &charlie(), - ); - - let subsistence = pallet_contracts::Config::::subsistence_threshold_uncached(); - - let b = construct_block( - &mut new_test_ext(compact_code_unwrap(), false), - 1, - GENESIS_HASH.into(), - vec![ - CheckedExtrinsic { - signed: None, - function: Call::Timestamp(pallet_timestamp::Call::set(42 * 1000)), - }, - CheckedExtrinsic { - signed: Some((charlie(), signed_extra(0, 0))), - function: Call::Contracts(pallet_contracts::Call::put_code::( - transfer_code, - )), - }, - CheckedExtrinsic { - signed: Some((charlie(), signed_extra(1, 0))), - function: Call::Contracts(pallet_contracts::Call::instantiate::( - 1 * DOLLARS + subsistence, - 500_000_000, - transfer_ch, - Vec::new(), - )), - }, - CheckedExtrinsic { - signed: Some((charlie(), signed_extra(2, 0))), - function: Call::Contracts(pallet_contracts::Call::call::( - pallet_indices::address::Address::Id(addr.clone()), - 10, - 500_000_000, - vec![0x00, 0x01, 0x02, 0x03], - )), - }, - ], - ); - - let mut t = new_test_ext(compact_code_unwrap(), false); - - executor_call:: _>(&mut t, "Core_execute_block", &b.0, false, None) - .0 - .unwrap(); - - t.execute_with(|| { - // Verify that the contract constructor worked well and code of TRANSFER contract is actually deployed. - assert_eq!( - &pallet_contracts::ContractInfoOf::::get(addr) - .and_then(|c| c.get_alive()) - .unwrap() - .code_hash, - &transfer_ch - ); - }); -} -*/ - #[test] fn wasm_big_block_import_fails() { let mut t = new_test_ext(compact_code_unwrap(), false); diff --git a/contracts/CountTransferManager/.gitignore b/contracts/CountTransferManager/.gitignore deleted file mode 100755 index 8de8f877e4..0000000000 --- a/contracts/CountTransferManager/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# Ignore build artifacts from the local tests sub-crate. -/target/ - -# Ignore backup files creates by cargo fmt. -**/*.rs.bk - -# Remove Cargo.lock when creating an executable, leave it for libraries -# More information here http://doc.crates.io/guide.html#cargotoml-vs-cargolock -Cargo.lock diff --git a/contracts/CountTransferManager/Cargo.lock b/contracts/CountTransferManager/Cargo.lock deleted file mode 100644 index c06ef8b96c..0000000000 --- a/contracts/CountTransferManager/Cargo.lock +++ /dev/null @@ -1,1191 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -[[package]] -name = "CountTransferManager" -version = "0.1.0" -dependencies = [ - "ink_env", - "ink_lang", - "ink_metadata", - "ink_prelude", - "ink_primitives", - "ink_storage", - "parity-scale-codec", - "scale-info", -] - -[[package]] -name = "aho-corasick" -version = "0.7.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043164d8ba5c4c3035fec9bbee8647c0261d788f3474306f93bb65901cae0e86" -dependencies = [ - "memchr", -] - -[[package]] -name = "array-init" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a51c983d65b6691893a791e55aa8bda43bbd9b11f947e5a9581710362277cc95" - -[[package]] -name = "arrayref" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" - -[[package]] -name = "arrayvec" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] - -[[package]] -name = "autocfg" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" - -[[package]] -name = "bitflags" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" - -[[package]] -name = "bitvec" -version = "0.17.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41262f11d771fd4a61aa3ce019fca363b4b6c282fca9da2a31186d3965a47a5c" -dependencies = [ - "either", - "radium", -] - -[[package]] -name = "blake2" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84ce5b6108f8e154604bd4eb76a2f726066c3464d5a552a4229262a18c9bb471" -dependencies = [ - "byte-tools", - "byteorder", - "crypto-mac", - "digest", - "opaque-debug 0.2.3", -] - -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "block-padding", - "generic-array", -] - -[[package]] -name = "block-padding" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" - -[[package]] -name = "bstr" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31accafdb70df7871592c058eca3985b71104e15ac32f64706022c58867da931" -dependencies = [ - "lazy_static", - "memchr", - "regex-automata", - "serde", -] - -[[package]] -name = "bumpalo" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820" - -[[package]] -name = "byte-slice-cast" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0a5e3906bcbf133e33c1d4d95afc664ad37fbdb9f6568d8043e7ea8c27d93d3" - -[[package]] -name = "byte-tools" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" - -[[package]] -name = "byteorder" -version = "1.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" - -[[package]] -name = "cast" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b9434b9a5aa1450faa3f9cb14ea0e8c53bb5d2b3c1bfd1ab4fc03e9f33fbfb0" -dependencies = [ - "rustc_version", -] - -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "clap" -version = "2.33.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" -dependencies = [ - "bitflags", - "textwrap", - "unicode-width", -] - -[[package]] -name = "cpuid-bool" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8aebca1129a03dc6dc2b127edd729435bbc4a37e1d5f4d7513165089ceb02634" - -[[package]] -name = "criterion" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70daa7ceec6cf143990669a04c7df13391d55fb27bd4079d252fca774ba244d8" -dependencies = [ - "atty", - "cast", - "clap", - "criterion-plot", - "csv", - "itertools", - "lazy_static", - "num-traits", - "oorandom", - "plotters", - "rayon", - "regex", - "serde", - "serde_cbor", - "serde_derive", - "serde_json", - "tinytemplate", - "walkdir", -] - -[[package]] -name = "criterion-plot" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e022feadec601fba1649cfa83586381a4ad31c6bf3a9ab7d408118b05dd9889d" -dependencies = [ - "cast", - "itertools", -] - -[[package]] -name = "crossbeam-channel" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87" -dependencies = [ - "crossbeam-utils", - "maybe-uninit", -] - -[[package]] -name = "crossbeam-deque" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", - "maybe-uninit", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" -dependencies = [ - "autocfg", - "cfg-if 0.1.10", - "crossbeam-utils", - "lazy_static", - "maybe-uninit", - "memoffset", - "scopeguard", -] - -[[package]] -name = "crossbeam-utils" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" -dependencies = [ - "autocfg", - "cfg-if 0.1.10", - "lazy_static", -] - -[[package]] -name = "crunchy" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" - -[[package]] -name = "crypto-mac" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" -dependencies = [ - "generic-array", - "subtle", -] - -[[package]] -name = "csv" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00affe7f6ab566df61b4be3ce8cf16bc2576bca0963ceb0955e45d514bf9a279" -dependencies = [ - "bstr", - "csv-core", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "csv-core" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" -dependencies = [ - "memchr", -] - -[[package]] -name = "derive_more" -version = "0.99.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298998b1cf6b5b2c8a7b023dfd45821825ce3ba8a8af55c921a0e734e4653f76" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - -[[package]] -name = "either" -version = "1.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" - -[[package]] -name = "generic-array" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getrandom" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" -dependencies = [ - "cfg-if 0.1.10", - "libc", - "wasi", -] - -[[package]] -name = "half" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d36fab90f82edc3c747f9d438e06cf0a491055896f2a279638bb5beed6c40177" - -[[package]] -name = "heck" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "hermit-abi" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c30f6d0bc6b00693347368a67d41b58f2fb851215ff1da49e90fe2c5c667151" -dependencies = [ - "libc", -] - -[[package]] -name = "impl-serde" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b47ca4d2b6931707a55fce5cf66aff80e2178c8b63bbb4ecb5695cbc870ddf6f" -dependencies = [ - "serde", -] - -[[package]] -name = "ink_allocator" -version = "3.0.0-rc2" -source = "git+https://github.com/paritytech/ink?tag=v3.0.0-rc2#4f8f8f165232774d93d7a6a859fc129d782a020b" -dependencies = [ - "wee_alloc", -] - -[[package]] -name = "ink_env" -version = "3.0.0-rc2" -source = "git+https://github.com/paritytech/ink?tag=v3.0.0-rc2#4f8f8f165232774d93d7a6a859fc129d782a020b" -dependencies = [ - "arrayref", - "blake2", - "cfg-if 1.0.0", - "derive_more", - "ink_allocator", - "ink_metadata", - "ink_prelude", - "ink_primitives", - "num-traits", - "parity-scale-codec", - "paste", - "rand", - "scale-info", - "sha2", - "sha3", - "static_assertions", -] - -[[package]] -name = "ink_lang" -version = "3.0.0-rc2" -source = "git+https://github.com/paritytech/ink?tag=v3.0.0-rc2#4f8f8f165232774d93d7a6a859fc129d782a020b" -dependencies = [ - "derive_more", - "ink_env", - "ink_lang_macro", - "ink_metadata", - "ink_prelude", - "ink_primitives", - "ink_storage", - "parity-scale-codec", - "static_assertions", -] - -[[package]] -name = "ink_lang_codegen" -version = "3.0.0-rc2" -source = "git+https://github.com/paritytech/ink?tag=v3.0.0-rc2#4f8f8f165232774d93d7a6a859fc129d782a020b" -dependencies = [ - "blake2", - "derive_more", - "either", - "heck", - "ink_lang_ir", - "itertools", - "proc-macro2", - "quote", - "regex", - "syn", -] - -[[package]] -name = "ink_lang_ir" -version = "3.0.0-rc2" -source = "git+https://github.com/paritytech/ink?tag=v3.0.0-rc2#4f8f8f165232774d93d7a6a859fc129d782a020b" -dependencies = [ - "blake2", - "either", - "itertools", - "proc-macro2", - "quote", - "regex", - "syn", -] - -[[package]] -name = "ink_lang_macro" -version = "3.0.0-rc2" -source = "git+https://github.com/paritytech/ink?tag=v3.0.0-rc2#4f8f8f165232774d93d7a6a859fc129d782a020b" -dependencies = [ - "ink_lang_codegen", - "ink_lang_ir", - "ink_primitives", - "parity-scale-codec", - "proc-macro2", - "syn", -] - -[[package]] -name = "ink_metadata" -version = "3.0.0-rc2" -source = "git+https://github.com/paritytech/ink?tag=v3.0.0-rc2#4f8f8f165232774d93d7a6a859fc129d782a020b" -dependencies = [ - "derive_more", - "impl-serde", - "ink_prelude", - "ink_primitives", - "scale-info", - "serde", -] - -[[package]] -name = "ink_prelude" -version = "3.0.0-rc2" -source = "git+https://github.com/paritytech/ink?tag=v3.0.0-rc2#4f8f8f165232774d93d7a6a859fc129d782a020b" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "ink_primitives" -version = "3.0.0-rc2" -source = "git+https://github.com/paritytech/ink?tag=v3.0.0-rc2#4f8f8f165232774d93d7a6a859fc129d782a020b" -dependencies = [ - "ink_prelude", - "parity-scale-codec", - "scale-info", - "tiny-keccak", -] - -[[package]] -name = "ink_storage" -version = "3.0.0-rc2" -source = "git+https://github.com/paritytech/ink?tag=v3.0.0-rc2#4f8f8f165232774d93d7a6a859fc129d782a020b" -dependencies = [ - "array-init", - "cfg-if 1.0.0", - "criterion", - "derive_more", - "generic-array", - "ink_env", - "ink_metadata", - "ink_prelude", - "ink_primitives", - "ink_storage_derive", - "parity-scale-codec", - "scale-info", -] - -[[package]] -name = "ink_storage_derive" -version = "3.0.0-rc2" -source = "git+https://github.com/paritytech/ink?tag=v3.0.0-rc2#4f8f8f165232774d93d7a6a859fc129d782a020b" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "itertools" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" - -[[package]] -name = "js-sys" -version = "0.3.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca059e81d9486668f12d455a4ea6daa600bd408134cd17e3d3fb5a32d1f016f8" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "keccak" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "libc" -version = "0.2.72" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9f8082297d534141b30c8d39e9b1773713ab50fdbe4ff30f750d063b3bfd701" - -[[package]] -name = "log" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" -dependencies = [ - "cfg-if 0.1.10", -] - -[[package]] -name = "maybe-uninit" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" - -[[package]] -name = "memchr" -version = "2.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" - -[[package]] -name = "memoffset" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" -dependencies = [ - "autocfg", -] - -[[package]] -name = "memory_units" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" - -[[package]] -name = "num-traits" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_cpus" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "oorandom" -version = "11.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a170cebd8021a008ea92e4db85a72f80b35df514ec664b296fdcbb654eac0b2c" - -[[package]] -name = "opaque-debug" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" - -[[package]] -name = "opaque-debug" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" - -[[package]] -name = "parity-scale-codec" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a74f02beb35d47e0706155c9eac554b50c671e0d868fe8296bcdf44a9a4847bf" -dependencies = [ - "arrayvec", - "bitvec", - "byte-slice-cast", - "parity-scale-codec-derive", - "serde", -] - -[[package]] -name = "parity-scale-codec-derive" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a0ec292e92e8ec7c58e576adacc1e3f399c597c8f263c42f18420abe58e7245" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "paste" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba7ae1a2180ed02ddfdb5ab70c70d596a26dd642e097bb6fe78b1bde8588ed97" - -[[package]] -name = "plotters" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d1685fbe7beba33de0330629da9d955ac75bd54f33d7b79f9a895590124f6bb" -dependencies = [ - "js-sys", - "num-traits", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "237a5ed80e274dbc66f86bd59c1e25edc039660be53194b5fe0a482e0f2612ea" - -[[package]] -name = "proc-macro-crate" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" -dependencies = [ - "toml", -] - -[[package]] -name = "proc-macro2" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "beae6331a816b1f65d04c45b078fd8e6c93e8071771f41b8163255bbd8d7c8fa" -dependencies = [ - "unicode-xid", -] - -[[package]] -name = "quote" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "radium" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "def50a86306165861203e7f84ecffbbdfdea79f0e51039b33de1e952358c47ac" - -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom", - "libc", - "rand_chacha", - "rand_core", - "rand_hc", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core", -] - -[[package]] -name = "rayon" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfd016f0c045ad38b5251be2c9c0ab806917f82da4d36b2a327e5166adad9270" -dependencies = [ - "autocfg", - "crossbeam-deque", - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c4fec834fb6e6d2dd5eece3c7b432a52f0ba887cf40e595190c4107edc08bf" -dependencies = [ - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-utils", - "lazy_static", - "num_cpus", -] - -[[package]] -name = "regex" -version = "1.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3780fcf44b193bc4d09f36d2a3c87b251da4a046c87795a0d35f4f927ad8e6" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", - "thread_local", -] - -[[package]] -name = "regex-automata" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1ded71d66a4a97f5e961fd0cb25a5f366a42a41570d16a763a69c092c26ae4" -dependencies = [ - "byteorder", -] - -[[package]] -name = "regex-syntax" -version = "0.6.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8" - -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver", -] - -[[package]] -name = "ryu" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "scale-info" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09591597256643082c89e633dc300e4892627f7e1f69006400b463a7108a93e2" -dependencies = [ - "derive_more", - "parity-scale-codec", - "scale-info-derive", - "serde", -] - -[[package]] -name = "scale-info-derive" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e46e58629b3dbc3334c65adfe6b4a2fd63501cdeebe7079195848c5ab8bd2c1" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "scopeguard" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - -[[package]] -name = "serde" -version = "1.0.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5317f7588f0a5078ee60ef675ef96735a1442132dc645eb1d12c018620ed8cd3" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_cbor" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e18acfa2f90e8b735b2836ab8d538de304cbb6729a7360729ea5a895d15a622" -dependencies = [ - "half", - "serde", -] - -[[package]] -name = "serde_derive" -version = "1.0.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0be94b04690fbaed37cddffc5c134bf537c8e3329d53e982fe04c374978f8e" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.56" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3433e879a558dde8b5e8feb2a04899cf34fdde1fafb894687e52105fc1162ac3" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "sha2" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2933378ddfeda7ea26f48c555bdad8bb446bf8a3d17832dc83e380d444cfb8c1" -dependencies = [ - "block-buffer", - "cfg-if 0.1.10", - "cpuid-bool", - "digest", - "opaque-debug 0.3.0", -] - -[[package]] -name = "sha3" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" -dependencies = [ - "block-buffer", - "digest", - "keccak", - "opaque-debug 0.3.0", -] - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "subtle" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "343f3f510c2915908f155e94f17220b19ccfacf2a64a2a5d8004f2c3e311e7fd" - -[[package]] -name = "syn" -version = "1.0.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936cae2873c940d92e697597c5eee105fb570cd5689c695806f672883653349b" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "synstructure" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "unicode-xid", -] - -[[package]] -name = "textwrap" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -dependencies = [ - "unicode-width", -] - -[[package]] -name = "thread_local" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - -[[package]] -name = "tinytemplate" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d3dc76004a03cec1c5932bca4cdc2e39aaa798e3f82363dd94f9adf6098c12f" -dependencies = [ - "serde", - "serde_json", -] - -[[package]] -name = "toml" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a" -dependencies = [ - "serde", -] - -[[package]] -name = "typenum" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" - -[[package]] -name = "unicode-segmentation" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0" - -[[package]] -name = "unicode-width" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" - -[[package]] -name = "unicode-xid" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" - -[[package]] -name = "version_check" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" - -[[package]] -name = "walkdir" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" -dependencies = [ - "same-file", - "winapi", - "winapi-util", -] - -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - -[[package]] -name = "wasm-bindgen" -version = "0.2.68" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ac64ead5ea5f05873d7c12b545865ca2b8d28adfc50a49b84770a3a97265d42" -dependencies = [ - "cfg-if 0.1.10", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.68" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f22b422e2a757c35a73774860af8e112bff612ce6cb604224e8e47641a9e4f68" -dependencies = [ - "bumpalo", - "lazy_static", - "log", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.68" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b13312a745c08c469f0b292dd2fcd6411dba5f7160f593da6ef69b64e407038" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.68" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f249f06ef7ee334cc3b8ff031bfc11ec99d00f34d86da7498396dc1e3b1498fe" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.68" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d649a3145108d7d3fbcde896a468d1bd636791823c9921135218ad89be08307" - -[[package]] -name = "web-sys" -version = "0.3.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bf6ef87ad7ae8008e15a355ce696bed26012b7caa21605188cfd8214ab51e2d" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "wee_alloc" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb3b5a6b2bb17cb6ad44a2e68a43e8d2722c997da10e928665c72ec6c0a0b8e" -dependencies = [ - "cfg-if 0.1.10", - "libc", - "memory_units", - "winapi", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -dependencies = [ - "winapi", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/contracts/CountTransferManager/Cargo.toml b/contracts/CountTransferManager/Cargo.toml deleted file mode 100755 index 0362f8b73b..0000000000 --- a/contracts/CountTransferManager/Cargo.toml +++ /dev/null @@ -1,45 +0,0 @@ -[package] -name = "CountTransferManager" -version = "0.1.0" -authors = ["Polymath Inc."] -edition = "2018" - -[dependencies] -ink_metadata = { git = "https://github.com/paritytech/ink", default-features = false, features = ["derive"], optional = true, tag = "v3.0.0-rc2" } -ink_primitives = { git = "https://github.com/paritytech/ink", default-features = false, tag = "v3.0.0-rc2" } -ink_storage = { git = "https://github.com/paritytech/ink", default-features = false, tag = "v3.0.0-rc2" } -ink_lang = { git = "https://github.com/paritytech/ink", default-features = false, tag = "v3.0.0-rc2" } -ink_prelude = { git = "https://github.com/paritytech/ink", default-features = false, tag = "v3.0.0-rc2" } -ink_env = { git = "https://github.com/paritytech/ink", default-features = false, tag = "v3.0.0-rc2" } - -scale = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -scale-info = { version = "0.4", default-features = false, features = ["derive"], optional = true } - -[lib] -name = "CountTransferManager" -path = "lib.rs" -crate-type = [ - # Used for normal contract Wasm blobs. - "cdylib", - # Required for ABI generation, and using this contract as a dependency. - # If using `cargo contract build`, it will be automatically disabled to produce a smaller Wasm binary - "rlib", -] - -[features] -default = ["std"] -std = [ - "ink_metadata", - "ink_metadata/std", - "ink_storage/std", - "ink_lang/std", - "ink_env/std", - "ink_primitives/std", - "scale/std", - "scale-info", - "scale-info/std", -] -ink-as-dependency = [] - -[workspace] -members = [] \ No newline at end of file diff --git a/contracts/CountTransferManager/README.md b/contracts/CountTransferManager/README.md deleted file mode 100644 index 17d25946d0..0000000000 --- a/contracts/CountTransferManager/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# CountTransferManager -This smart contract is a transfer manager for limiting the number of token holders a ticker can have. - - -## Pre-requsite -`cargo-contract` Install using below command -``` -cargo install cargo-contract -``` - -Make sure the cargo contract version should be >= 0.7.1. -``` - -### Build example contract and generate the contracts metadata - -To build a single example and generate the contracts Wasm file, navigate to the root of the example smart contract and run: - -``` -cargo contract build - -``` - -To generate the contract metadata (a.k.a. the contract ABI), run the following command: - -``` -cargo contract generate-metadata - -``` - -You should now have an optimized `.wasm` file and an `metadata.json` file in the `target` folder of the contract. - -For further information, please have a look at our [smart contracts workshop](https://substrate.dev/substrate-contracts-workshop/). \ No newline at end of file diff --git a/contracts/CountTransferManager/lib.rs b/contracts/CountTransferManager/lib.rs deleted file mode 100755 index 8690cb599a..0000000000 --- a/contracts/CountTransferManager/lib.rs +++ /dev/null @@ -1,238 +0,0 @@ -#![cfg_attr(not(feature = "std"), no_std)] - -use ink_lang as ink; - -mod custom_types { - use scale::{Decode, Encode}; - use scale_info::TypeInfo; - - #[derive(Decode, Encode, TypeInfo)] - #[derive(PartialEq, Ord, Eq, PartialOrd, Copy, Hash, Clone, Default)] - #[cfg_attr(feature = "std", derive(Debug))] - pub struct IdentityId([u8; 32]); - - impl From for IdentityId { - fn from(id: u128) -> Self { - let mut encoded_id = id.encode(); - encoded_id.resize(32, 0); - let mut did = [0; 32]; - did.copy_from_slice(&encoded_id); - IdentityId(did) - } - } - - #[derive(Decode, Encode, PartialEq, Ord, Eq, PartialOrd)] - #[cfg_attr(feature = "std", derive(TypeInfo, Debug))] - pub enum RestrictionResult { - Valid, - Invalid, - ForceValid, - } -} - -#[ink::contract] -mod count_transfer_manager { - use crate::custom_types::{IdentityId, RestrictionResult}; - pub type Counter = u64; - - #[cfg(not(feature = "ink-as-dependency"))] - use ink_storage::lazy::Lazy; - - /// Event emitted when maximum holders set - #[ink(event)] - pub struct SetMaximumHolders { - #[ink(topic)] - new_holder_count: Counter, - #[ink(topic)] - old_holder_count: Counter, - } - - /// Struct that contains the storage items of this smart contract. - #[ink(storage)] - #[derive(Default)] - pub struct CountTransferManagerStorage { - /// No. of maximum holders a ticker can have. - max_holders: Counter, - /// Owner of the smart contract. It has the special privileges over other callers - owner: Lazy, - } - - impl CountTransferManagerStorage { - /// Constructor use to set the no. of maximum holder count a - /// ticker can have. - #[ink(constructor)] - pub fn new(max_holders: Counter) -> Self { - Self { - max_holders, - owner: Lazy::new(Self::env().caller()), - } - } - - /// Sets number of max holders - /// # Arguments - /// * max_holders No. of maximum holders - #[ink(message)] - pub fn set_max_holders(&mut self, max_holders: Counter) { - self.ensure_owner(self.env().caller()); - self.env().emit_event(SetMaximumHolders { - new_holder_count: self.max_holders, - old_holder_count: max_holders, - }); - self.max_holders = max_holders; - } - - /// Returns number of max holders - #[ink(message)] - pub fn get_max_holders(&self) -> Counter { - self.max_holders - } - - /// This function is used to verify transfers initiated by the - /// runtime assets - /// - /// It will be a valid transfer even when value > from balance as we are not checking the overflow / underflow - /// of the sender balances. Assuming these will be checked in the blockchain itself. - /// - /// # Arguments - /// * `from` - Identity Id of the sender. - /// * `to` - Identity Id of the receiver. - /// * `value` - Asset amount need to transfer to the receiver. - /// * `balance_from` - Balance of sender at the time of transaction. - /// * `balance_to` - Balance of receiver at the time of transaction. - /// * `total_supply` - Total supply of the asset - /// * `current_holder_count - Total no. of investors of a ticker. - #[ink(message)] - pub fn verify_transfer( - &self, - _from: Option, - _to: Option, - value: Balance, - balance_from: Balance, - balance_to: Balance, - _total_supply: Balance, - current_holder_count: Counter, - ) -> RestrictionResult { - // Strict checking only the cases where no. of holders get increases. - if self.max_holders == current_holder_count && balance_to == 0 && balance_from > value { - return RestrictionResult::Invalid; // INVALID - } - RestrictionResult::Valid // VALID - } - - /// Simply returns the current value of `owner`. - #[ink(message)] - pub fn owner(&self) -> AccountId { - *Lazy::get(&self.owner) - } - - fn ensure_owner(&self, owner: AccountId) { - assert!(owner == self.owner(), "Not Authorized"); - } - } - - #[cfg(test)] - mod tests { - /// Imports all the definitions from the outer scope so we can use them here. - use super::*; - use ink_env::{call, test}; - type Accounts = test::DefaultAccounts; - const CALLEE: [u8; 32] = [7; 32]; - - fn set_sender(sender: AccountId) { - test::push_execution_context::( - sender, - CALLEE.into(), - 1000000, - 1000000, - test::CallData::new(call::Selector::new([0x00; 4])), // dummy - ); - } - - fn set_from_owner() { - let accounts = default_accounts(); - set_sender(accounts.alice); - } - - fn default_accounts() -> Accounts { - test::default_accounts().expect("Test environment is expected to be initialized.") - } - - /// We test if the default constructor does its job. - #[test] - fn constructor_initialization_check() { - let default_accounts = default_accounts(); - set_from_owner(); - let count_transfer_manager = CountTransferManagerStorage::new(5000u64); - assert_eq!(count_transfer_manager.get_max_holders(), 5000u64); - assert_eq!(count_transfer_manager.owner(), default_accounts.alice); - } - - #[test] - fn verify_transfer_check() { - let alice_did = IdentityId::from(1); - let bob_did = IdentityId::from(2); - set_from_owner(); - let mut count_transfer_manager = CountTransferManagerStorage::new(5u64); - assert_eq!(count_transfer_manager.get_max_holders(), 5u64); - - // Check for simple transfer case - assert_eq!( - count_transfer_manager.verify_transfer( - Some(alice_did), - Some(bob_did), - 100, - 200, - 10, - 500, - 5 - ), - RestrictionResult::Valid - ); - - assert_eq!( - count_transfer_manager.verify_transfer( - Some(alice_did), - Some(bob_did), - 100, - 200, - 0, - 500, - 5 - ), - RestrictionResult::Invalid - ); - - // allowing transfer when holder counts get change - assert_eq!(count_transfer_manager.set_max_holders(10u64), ()); - assert_eq!(count_transfer_manager.get_max_holders(), 10u64); - - assert_eq!( - count_transfer_manager.verify_transfer( - Some(alice_did), - Some(bob_did), - 100, - 200, - 0, - 500, - 5 - ), - RestrictionResult::Valid - ); - - // It will be a valid transfer as we are not checking the overflow / underflow - // of the sender balances. Assuming these will be checked in the blockchain itself - assert_eq!( - count_transfer_manager.verify_transfer( - Some(alice_did), - Some(bob_did), - 100, - 50, - 0, - 500, - 5 - ), - RestrictionResult::Valid - ); - } - } -} diff --git a/contracts/GeneralTransferManager/.cargo/config b/contracts/GeneralTransferManager/.cargo/config deleted file mode 100755 index 5e1472510b..0000000000 --- a/contracts/GeneralTransferManager/.cargo/config +++ /dev/null @@ -1,5 +0,0 @@ -[target.wasm32-unknown-unknown] -rustflags = [ - "-C", "overflow-checks=on", - "-C", "link-args=-z stack-size=65536 --import-memory" -] \ No newline at end of file diff --git a/contracts/GeneralTransferManager/.ink/abi_gen/Cargo.toml b/contracts/GeneralTransferManager/.ink/abi_gen/Cargo.toml deleted file mode 100755 index 1b9a83bed2..0000000000 --- a/contracts/GeneralTransferManager/.ink/abi_gen/Cargo.toml +++ /dev/null @@ -1,15 +0,0 @@ -[package] -name = "abi-gen" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -publish = false - -[[bin]] -name = "abi-gen" -path = "main.rs" - -[dependencies] -contract = { path = "../..", package = "general_transfer_manager", features = ["ink-generate-abi", "test-env"] } -serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0" diff --git a/contracts/GeneralTransferManager/.ink/abi_gen/main.rs b/contracts/GeneralTransferManager/.ink/abi_gen/main.rs deleted file mode 100755 index 9fa36177a6..0000000000 --- a/contracts/GeneralTransferManager/.ink/abi_gen/main.rs +++ /dev/null @@ -1,7 +0,0 @@ -fn main() -> Result<(), std::io::Error> { - let abi = contract::ink_generate_abi(); - let contents = serde_json::to_string_pretty(&abi)?; - std::fs::create_dir("target").ok(); - std::fs::write("target/abi.json", contents)?; - Ok(()) -} diff --git a/contracts/GeneralTransferManager/Cargo.lock b/contracts/GeneralTransferManager/Cargo.lock deleted file mode 100644 index 31e3dd70fa..0000000000 --- a/contracts/GeneralTransferManager/Cargo.lock +++ /dev/null @@ -1,495 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -[[package]] -name = "abi-gen" -version = "0.1.0" -dependencies = [ - "general_transfer_manager 0.1.0", - "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "aho-corasick" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "arrayvec" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "bitvec" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "byte-slice-cast" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "crunchy" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "derive_more" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "either" -version = "1.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "general_transfer_manager" -version = "0.1.0" -dependencies = [ - "ink_abi 0.1.0 (git+https://github.com/paritytech/ink)", - "ink_core 0.1.0 (git+https://github.com/paritytech/ink)", - "ink_lang 0.1.0 (git+https://github.com/paritytech/ink)", - "ink_model 0.1.0 (git+https://github.com/paritytech/ink)", - "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "type-metadata 0.1.0 (git+https://github.com/type-metadata/type-metadata.git)", -] - -[[package]] -name = "heck" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ink_abi" -version = "0.1.0" -source = "git+https://github.com/paritytech/ink#53fa4d5862e11bdb8fca1715c825d63514a48686" -dependencies = [ - "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ink_abi_derive 0.1.0 (git+https://github.com/paritytech/ink)", - "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", - "type-metadata 0.1.0 (git+https://github.com/type-metadata/type-metadata.git)", -] - -[[package]] -name = "ink_abi_derive" -version = "0.1.0" -source = "git+https://github.com/paritytech/ink#53fa4d5862e11bdb8fca1715c825d63514a48686" -dependencies = [ - "proc-macro2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ink_alloc" -version = "0.1.0" -source = "git+https://github.com/paritytech/ink#53fa4d5862e11bdb8fca1715c825d63514a48686" -dependencies = [ - "wee_alloc 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ink_core" -version = "0.1.0" -source = "git+https://github.com/paritytech/ink#53fa4d5862e11bdb8fca1715c825d63514a48686" -dependencies = [ - "ink_abi 0.1.0 (git+https://github.com/paritytech/ink)", - "ink_alloc 0.1.0 (git+https://github.com/paritytech/ink)", - "ink_utils 0.1.0 (git+https://github.com/paritytech/ink)", - "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "type-metadata 0.1.0 (git+https://github.com/type-metadata/type-metadata.git)", -] - -[[package]] -name = "ink_lang" -version = "0.1.0" -source = "git+https://github.com/paritytech/ink#53fa4d5862e11bdb8fca1715c825d63514a48686" -dependencies = [ - "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ink_model 0.1.0 (git+https://github.com/paritytech/ink)", - "ink_utils 0.1.0 (git+https://github.com/paritytech/ink)", - "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ink_model" -version = "0.1.0" -source = "git+https://github.com/paritytech/ink#53fa4d5862e11bdb8fca1715c825d63514a48686" -dependencies = [ - "ink_core 0.1.0 (git+https://github.com/paritytech/ink)", - "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ink_utils" -version = "0.1.0" -source = "git+https://github.com/paritytech/ink#53fa4d5862e11bdb8fca1715c825d63514a48686" -dependencies = [ - "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "itertools" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "itoa" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "libc" -version = "0.2.62" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "memchr" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "memory_units" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "nodrop" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "parity-scale-codec" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "bitvec 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-slice-cast 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec-derive 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "parity-scale-codec-derive" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "proc-macro-crate" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "proc-macro2" -version = "0.4.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "proc-macro2" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "quote" -version = "0.6.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "quote" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "regex" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "regex-syntax" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ryu" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "serde" -version = "1.0.101" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "serde_derive" -version = "1.0.101" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "serde_json" -version = "1.0.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "syn" -version = "0.15.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "syn" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "thread_local" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tiny-keccak" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "toml" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "type-metadata" -version = "0.1.0" -source = "git+https://github.com/type-metadata/type-metadata.git#f50ca5c475c1abbff87bb649b1d248cd2bcc0bef" -dependencies = [ - "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", - "type-metadata-derive 0.1.0 (git+https://github.com/type-metadata/type-metadata.git)", -] - -[[package]] -name = "type-metadata-derive" -version = "0.1.0" -source = "git+https://github.com/type-metadata/type-metadata.git#f50ca5c475c1abbff87bb649b1d248cd2bcc0bef" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "unicode-segmentation" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "unicode-xid" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "unicode-xid" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "wee_alloc" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "memory_units 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "winapi" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[metadata] -"checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d" -"checksum arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba" -"checksum bitvec 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9633b74910e1870f50f5af189b08487195cdb83c0e27a71d6f64d5e09dd0538b" -"checksum byte-slice-cast 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7cbcbf18128ec71d8d4a0d054461ec59fff5b75b7d10a4c9b7c7cb1a379c3e77" -"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" -"checksum crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" -"checksum derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a141330240c921ec6d074a3e188a7c7ef95668bb95e7d44fa0e5778ec2a7afe" -"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" -"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" -"checksum ink_abi 0.1.0 (git+https://github.com/paritytech/ink)" = "" -"checksum ink_abi_derive 0.1.0 (git+https://github.com/paritytech/ink)" = "" -"checksum ink_alloc 0.1.0 (git+https://github.com/paritytech/ink)" = "" -"checksum ink_core 0.1.0 (git+https://github.com/paritytech/ink)" = "" -"checksum ink_lang 0.1.0 (git+https://github.com/paritytech/ink)" = "" -"checksum ink_model 0.1.0 (git+https://github.com/paritytech/ink)" = "" -"checksum ink_utils 0.1.0 (git+https://github.com/paritytech/ink)" = "" -"checksum itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5b8467d9c1cebe26feb08c640139247fac215782d35371ade9a2136ed6085358" -"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" -"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -"checksum libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)" = "34fcd2c08d2f832f376f4173a231990fa5aef4e99fb569867318a227ef4c06ba" -"checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" -"checksum memory_units 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" -"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" -"checksum parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "65582b5c02128a4b0fa60fb3e070216e9c84be3e4a8f1b74bc37e15a25e58daf" -"checksum parity-scale-codec-derive 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a81f3cd93ed368a8e41c4e79538e99ca6e8f536096de23e3a0bc3e782093ce28" -"checksum proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e10d4b51f154c8a7fb96fd6dad097cb74b863943ec010ac94b9fd1be8861fe1e" -"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -"checksum proc-macro2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "afdc77cc74ec70ed262262942ebb7dac3d479e9e5cfa2da1841c0806f6cdabcc" -"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" -"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" -"checksum regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc220bd33bdce8f093101afe22a037b8eb0e5af33592e6a9caafff0d4cb81cbd" -"checksum regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716" -"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -"checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997" -"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -"checksum serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)" = "9796c9b7ba2ffe7a9ce53c2287dfc48080f4b2b362fcc245a259b3a7201119dd" -"checksum serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)" = "4b133a43a1ecd55d4086bd5b4dc6c1751c68b1bfbeba7a5040442022c7e7c02e" -"checksum serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704" -"checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" -"checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf" -"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" -"checksum tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d8a021c69bb74a44ccedb824a046447e2c84a01df9e5c20779750acb38e11b2" -"checksum toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c7aabe75941d914b72bf3e5d3932ed92ce0664d49d8432305a8b547c37227724" -"checksum type-metadata 0.1.0 (git+https://github.com/type-metadata/type-metadata.git)" = "" -"checksum type-metadata-derive 0.1.0 (git+https://github.com/type-metadata/type-metadata.git)" = "" -"checksum unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1967f4cdfc355b37fd76d2a954fb2ed3871034eb4f26d60537d88795cfc332a9" -"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" -"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" -"checksum wee_alloc 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "dbb3b5a6b2bb17cb6ad44a2e68a43e8d2722c997da10e928665c72ec6c0a0b8e" -"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" -"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/contracts/GeneralTransferManager/Cargo.toml b/contracts/GeneralTransferManager/Cargo.toml deleted file mode 100755 index c70d0ce446..0000000000 --- a/contracts/GeneralTransferManager/Cargo.toml +++ /dev/null @@ -1,61 +0,0 @@ -[package] -name = "general_transfer_manager" -version = "0.1.0" -edition = "2018" - -[dependencies] -ink_abi = { git = "https://github.com/paritytech/ink", package = "ink_abi", default-features = false, optional = true } -ink_core = { git = "https://github.com/paritytech/ink", package = "ink_core", default-features = false } -ink_model = { git = "https://github.com/paritytech/ink", package = "ink_model", default-features = false } -ink_lang = { git = "https://github.com/paritytech/ink", package = "ink_lang", default-features = false } - -scale = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -type-metadata = { git = "https://github.com/type-metadata/type-metadata.git", default-features = false, features = ["derive"], optional = true } - -[lib] -name = "general_transfer_manager" -crate-type = [ - # Used for normal contract Wasm blobs. - "cdylib", - # Used for ABI generation. - "rlib", -] - -[features] -default = ["test-env"] -std = [ - "ink_abi/std", - "ink_core/std", - "ink_model/std", - "ink_lang/std", - "scale/std", - "type-metadata/std", -] -test-env = [ - "std", - "ink_core/test-env", - "ink_model/test-env", - "ink_lang/test-env", -] -ink-generate-abi = [ - "std", - "ink_abi", - "type-metadata", - "ink_core/ink-generate-abi", - "ink_lang/ink-generate-abi", -] -ink-as-dependency = [] - -[profile.release] -panic = "abort" -lto = true -opt-level = "z" -overflow-checks = true - -[workspace] -members = [ - ".ink/abi_gen" -] -exclude = [ - ".ink" -] diff --git a/contracts/GeneralTransferManager/README.md b/contracts/GeneralTransferManager/README.md deleted file mode 100644 index aff0b83eae..0000000000 --- a/contracts/GeneralTransferManager/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# polymesh-general-transfer-manager - -General Transfer Manager implemented in Ink! smart contract. - -Designed to be attached to a regulated asset to allow transfers of the asset to be controlled through an exemption list. - -# Pre-Requisites - - - Rust (nightly and stable) - - Contract Crate - `cargo install --force --git https://github.com/paritytech/ink cargo-contract` - -# To build WASM - -``` -cargo contract build -``` - -# To build ABI - -``` -cargo +nightly build --features ink-generate-abi -``` \ No newline at end of file diff --git a/contracts/GeneralTransferManager/src/lib.rs b/contracts/GeneralTransferManager/src/lib.rs deleted file mode 100755 index 486ed2a992..0000000000 --- a/contracts/GeneralTransferManager/src/lib.rs +++ /dev/null @@ -1,242 +0,0 @@ -#![cfg_attr(not(any(test, feature = "std")), no_std)] - -use ink_core::{memory::format, memory::vec::Vec, storage}; - -use ink_lang::contract; - -contract! { - #![env = ink_core::env::DefaultSrmlTypes] - - struct GeneralTransferManager { - // (transfer type, restriction type) => enabl. True signifies that the restricition is in force. - // Transfer types are general(0), issuance(1) and redemption(2). - // Transfer restricitons are fromValidCDD(0), toValidCDD(1), fromRestricted(2), toRestricted(3). - // Not using enums as ink is not able to serialize and deserialze them. As a result, - // enums can not be used in function parameters. - transfer_restrictions: storage::HashMap<(u64, u64), bool>, - owner: storage::Value, - issuance_address: storage::Value, - redemption_address: storage::Value, - default_can_send_after: storage::Value, - default_can_receive_after: storage::Value, - } - - - impl Deploy for GeneralTransferManager { - fn deploy(&mut self) { - for i in 0..3 { - for j in 0..4 { - self.transfer_restrictions.insert((i, j), false); - } - } - self.owner.set(env.caller()); - // TODO Replace with proper issuance and redemption addresses - self.issuance_address.set(env.caller()); - self.redemption_address.set(env.caller()); - self.default_can_send_after.set(0); - self.default_can_receive_after.set(0); - } - } - - impl GeneralTransferManager { - /// Sets restriction status - pub(external) fn set_restriction_status(&mut self, transfer_type: u64, restriciton_type: u64, status: bool) { - if env.caller() != *self.owner { - return; - } - self.transfer_restrictions.insert((transfer_type, restriciton_type), status); - } - - /// Returns restriction status - pub(external) fn get_restriction_status(&self, transfer_type: u64, restriciton_type: u64) -> bool { - env.println(&format!("Restriction enabled: {:?}", *self.transfer_restrictions.get(&(transfer_type, restriciton_type)).unwrap_or(&false))); - *self.transfer_restrictions.get(&(transfer_type, restriciton_type)).unwrap_or(&false) - } - - /// Sets issuance address - pub(external) fn set_issuance_address(&mut self, issuance_address: AccountId) { - if env.caller() != *self.owner { - return; - } - self.issuance_address.set(issuance_address); - } - - /// Sets default_can_send_after - pub(external) fn set_default_can_send_after(&mut self, default_can_send_after: u64) { - if env.caller() != *self.owner { - return; - } - self.default_can_send_after.set(default_can_send_after); - } - - /// Sets default_can_receive_after - pub(external) fn set_default_can_receive_after(&mut self, default_can_receive_after: u64) { - if env.caller() != *self.owner { - return; - } - self.default_can_receive_after.set(default_can_receive_after); - } - - /// Sets redemption address - pub(external) fn set_redemption_address(&mut self, redemption_address: AccountId) { - if env.caller() != *self.owner { - return; - } - self.redemption_address.set(redemption_address); - } - - /// Gets issuance address - pub(external) fn get_issuance_address(&self) -> Option { - Some(*self.issuance_address.get()) - } - - /// Gets redemption address - pub(external) fn get_redemption_address(&self) -> Option { - Some(*self.redemption_address.get()) - } - - /// Gets default_can_send_after - pub(external) fn get_default_can_send_after(&self) -> u64 { - *self.default_can_send_after.get() - } - - /// Gets default_can_receive_after - pub(external) fn get_default_can_receive_after(&self) -> u64 { - *self.default_can_receive_after.get() - } - - /// Runtime will call this function to fetch the claims needed by this module - pub(external) fn get_claims(&self) -> Option>> { - // #TODO Finalize encoding/decoding mechanism for claims. - // Currently, it is a vector of vector of u8. Every u8 represents one ASCII character. Vec represents a string. - // Vec> represents a collection of strings. Every string represents one claim. - // The string is <0|1>;;. 0 represents sender, 1 represents receiver. example: 0;can_send_after;u64 - let mut claim1 = Vec::new(); - claim1.push('0' as u8); - claim1.push(';' as u8); - claim1.push('f' as u8); - claim1.push('e' as u8); - claim1.push(';' as u8); - claim1.push('u' as u8); - claim1.push('6' as u8); - claim1.push('4' as u8); - - let mut claim2 = Vec::new(); - claim2.push('1' as u8); - claim2.push(';' as u8); - claim2.push('t' as u8); - claim2.push('e' as u8); - claim2.push(';' as u8); - claim2.push('u' as u8); - claim2.push('6' as u8); - claim2.push('4' as u8); - - let mut claim3 = Vec::new(); - claim3.push('0' as u8); - claim3.push(';' as u8); - claim3.push('c' as u8); - claim3.push('s' as u8); - claim3.push('a' as u8); - claim3.push(';' as u8); - claim3.push('u' as u8); - claim3.push('6' as u8); - claim3.push('4' as u8); - - let mut claim4 = Vec::new(); - claim4.push('1' as u8); - claim4.push(';' as u8); - claim4.push('c' as u8); - claim4.push('r' as u8); - claim4.push('a' as u8); - claim4.push(';' as u8); - claim4.push('u' as u8); - claim4.push('6' as u8); - claim4.push('4' as u8); - - let mut claims = Vec::new(); - claims.push(claim1); - claims.push(claim2); - claims.push(claim3); - claims.push(claim4); - Some(claims) - } - - /// Verify transfer function with standard interface. - pub(external) fn verify_tranfer( - &self, - sender: AccountId, - receiver: AccountId, - amount: Balance, - sender_balance: Balance, - receiver_balance: Balance, - total_supply: Balance, - number_of_investors: u64, - from_expiry: u64, - to_expiry: u64, - can_send_after: u64, - can_receive_after: u64 - ) -> u16 { //u8 doesn't work. enums don't work. Hence, using u16. - - let mut tx_type:u64 = 0; //General (Default) - if sender == *self.issuance_address { - tx_type = 1; //Issuance - } else if receiver == *self.redemption_address { - tx_type = 2; //Redemption - } - - if (*self.transfer_restrictions.get(&(tx_type, 0)).unwrap_or(&false) && from_expiry >= env.now()) || - (*self.transfer_restrictions.get(&(tx_type, 1)).unwrap_or(&false) && to_expiry >= env.now()) - { - return 1; //NA - } - - if (*self.transfer_restrictions.get(&(tx_type, 2)).unwrap_or(&false) && - if can_send_after == 0 { *self.default_can_send_after.get() } else { can_send_after } >= env.now()) || ( - *self.transfer_restrictions.get(&(tx_type, 3)).unwrap_or(&false) && - if can_receive_after == 0 { *self.default_can_receive_after.get() } else { can_receive_after } >= env.now()) - { - return 1; //NA - } - - return 2; //Valid - } - // pub(external) fn test_now(&self) -> u64 { - // env.now() - // } - } -} - -#[cfg(all(test, feature = "test-env"))] -mod tests { - use super::*; - use ink_core::env; - type Types = ink_core::env::DefaultSrmlTypes; - - #[test] - fn owner_can_change_restriction_status() { - let alice = AccountId::from([0x0; 32]); - env::test::set_caller::(alice); - let mut contract = GeneralTransferManager::deploy_mock(); - assert_eq!(contract.get_restriction_status(0, 0), false); - contract.set_restriction_status(0, 0, true); - assert_eq!(contract.get_restriction_status(0, 0), true); - } - #[test] - fn not_owner_can_not_change_restriction_status() { - let alice = AccountId::from([0x0; 32]); - let bob = AccountId::from([0x1; 32]); - env::test::set_caller::(alice); - let mut contract = GeneralTransferManager::deploy_mock(); - env::test::set_caller::(bob); - assert_eq!(contract.get_restriction_status(0, 0), false); - contract.set_restriction_status(0, 0, true); - assert_eq!(contract.get_restriction_status(0, 0), false); - } - // #[test] - // fn test_now() { - // let time = Moment::from(10u64); - // env::test::set_now::(time); - // let mut contract = GeneralTransferManager::deploy_mock(); - // assert_eq!(contract.test_now(), 10); - // } -} diff --git a/contracts/PercentageTransferManager/.gitignore b/contracts/PercentageTransferManager/.gitignore deleted file mode 100755 index bf910de10a..0000000000 --- a/contracts/PercentageTransferManager/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# Ignore build artifacts from the local tests sub-crate. -/target/ - -# Ignore backup files creates by cargo fmt. -**/*.rs.bk - -# Remove Cargo.lock when creating an executable, leave it for libraries -# More information here http://doc.crates.io/guide.html#cargotoml-vs-cargolock -Cargo.lock \ No newline at end of file diff --git a/contracts/PercentageTransferManager/Cargo.toml b/contracts/PercentageTransferManager/Cargo.toml deleted file mode 100755 index 5d31ac5d34..0000000000 --- a/contracts/PercentageTransferManager/Cargo.toml +++ /dev/null @@ -1,48 +0,0 @@ -[package] -name = "percentage_transfer_manager" -version = "0.1.0" -authors = ["Polymath Inc "] -edition = "2018" - -[dependencies] -ink_metadata = { git = "https://github.com/paritytech/ink", default-features = false, features = ["derive"], optional = true, tag = "v3.0.0-rc2" } -ink_primitives = { git = "https://github.com/paritytech/ink", default-features = false, tag = "v3.0.0-rc2" } -ink_storage = { git = "https://github.com/paritytech/ink", default-features = false, tag = "v3.0.0-rc2" } -ink_lang = { git = "https://github.com/paritytech/ink", default-features = false, tag = "v3.0.0-rc2" } -ink_prelude = { git = "https://github.com/paritytech/ink", default-features = false, tag = "v3.0.0-rc2" } -ink_env = { git = "https://github.com/paritytech/ink", default-features = false, tag = "v3.0.0-rc2" } - -scale = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -scale-info = { version = "0.4", default-features = false, features = ["derive"], optional = true } - -[lib] -name = "percentage_transfer_manager" -path = "src/lib.rs" -crate-type = [ - # Used for normal contract Wasm blobs. - "cdylib", - # Used for ABI generation. - "rlib", -] - -[features] -default = ["std"] -std = [ - "ink_metadata", - "ink_metadata/std", - "ink_storage/std", - "ink_lang/std", - "ink_env/std", - "ink_primitives/std", - "scale/std", - "scale-info", - "scale-info/std", -] - -[profile.release] -overflow-checks = false - -ink-as-dependency = [] - -[workspace] -members = [] diff --git a/contracts/PercentageTransferManager/README.md b/contracts/PercentageTransferManager/README.md deleted file mode 100644 index 4d5a6f1600..0000000000 --- a/contracts/PercentageTransferManager/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# PercentageTransferManager -This smart contract is a transfer manager for limiting the percentage of token supply that a single address can hold. - - -## Pre-requisite -`cargo-contract` Install using below command -``` -cargo install cargo-contract -``` - -Make sure the cargo contract version should be >= 0.7.1. - -### Build example contract and generate the contracts metadata - -To build a single example and generate the contracts Wasm file, navigate to the root of the example smart contract and run: - -``` -cargo contract build - -``` - -To generate the contract metadata (a.k.a. the contract ABI), run the following command: - -``` -cargo contract generate-metadata - -``` - -You should now have an optimized `.wasm` file and an `metadata.json` file in the `target` folder of the contract. - -For further information, please have a look at our [smart contracts workshop](https://substrate.dev/substrate-contracts-workshop/). \ No newline at end of file diff --git a/contracts/PercentageTransferManager/src/lib.rs b/contracts/PercentageTransferManager/src/lib.rs deleted file mode 100755 index 643a4dd8b3..0000000000 --- a/contracts/PercentageTransferManager/src/lib.rs +++ /dev/null @@ -1,591 +0,0 @@ -#![cfg_attr(not(any(test, feature = "std")), no_std)] - -use ink_lang as ink; - -mod custom_types { - use ink_storage::traits::{PackedLayout, SpreadLayout, StorageLayout}; - use scale::{Decode, Encode}; - use scale_info::TypeInfo; - - #[derive(Decode, Encode, TypeInfo, SpreadLayout, PackedLayout)] - #[derive(PartialEq, Ord, Eq, PartialOrd, Copy, Hash, Clone, Default)] - #[cfg_attr(feature = "std", derive(Debug, StorageLayout))] - pub struct IdentityId([u8; 32]); - - impl From for IdentityId { - fn from(id: u128) -> Self { - let mut encoded_id = id.encode(); - encoded_id.resize(32, 0); - let mut did = [0; 32]; - did.copy_from_slice(&encoded_id); - IdentityId(did) - } - } - - #[derive(Decode, Encode, PartialEq, Ord, Eq, PartialOrd)] - #[cfg_attr(feature = "std", derive(TypeInfo, Debug))] - pub enum RestrictionResult { - Valid, - Invalid, - ForceValid, - } -} - -#[ink::contract] -mod percentage_transfer_manager { - use crate::custom_types::{IdentityId, RestrictionResult}; - use ink_prelude::vec::Vec; - #[cfg(not(feature = "ink-as-dependency"))] - use ink_storage::collections::HashMap as StorageHashMap; - - /// Defines the storage of your contract. - /// Add new fields to the below struct in order - /// to add new static storage fields to your contract. - #[ink(storage)] - #[derive(Default)] - pub struct PercentageTransferManagerStorage { - /// Owner of the smart extension - pub owner: AccountId, - /// Maximum allowed percentage of the tokens hold by an investor - /// %age is based on the total supply of the asset. Multiplier of 10^6 - pub max_allowed_percentage: u128, - /// By toggling the primary issuance variable it will bypass - /// all the restrictions imposed by this smart extension - pub allow_primary_issuance: bool, - /// Exemption list that contains the list of investor's identities - /// which are not affected by this module restrictions - pub exemption_list: StorageHashMap, - } - - #[ink(event)] - pub struct ChangeAllowedPercentage { - #[ink(topic)] - old_percentage: u128, - #[ink(topic)] - new_percentage: u128, - } - - #[ink(event)] - pub struct ChangePrimaryIssuance { - #[ink(topic)] - allow_primary_issuance: bool, - } - - #[ink(event)] - pub struct ModifyExemptionList { - #[ink(topic)] - identity: IdentityId, - #[ink(topic)] - exempted: bool, - } - - #[ink(event)] - pub struct TransferOwnership { - #[ink(topic)] - new_owner: AccountId, - #[ink(topic)] - old_owner: AccountId, - } - - impl PercentageTransferManagerStorage { - /// Constructor that initializes the `u128` value to the given `max_allowed_percentage`, - /// boolean value for the `allow_primary_issuance` & `owner` of the SE. - #[ink(constructor)] - pub fn new(max_percentage: u128, primary_issuance: bool) -> Self { - Self { - owner: Self::env().caller(), - max_allowed_percentage: max_percentage, - allow_primary_issuance: primary_issuance, - exemption_list: StorageHashMap::default(), - } - } - - /// This function is used to verify transfers initiated by the - /// runtime assets - /// - /// # Arguments - /// * `from` - Identity Id of the sender. - /// * `to` - Identity Id of the receiver. - /// * `value` - Asset amount need to transfer to the receiver. - /// * `balance_from` - Balance of sender at the time of transaction. - /// * `balance_to` - Balance of receiver at the time of transaction. - /// * `total_supply` - Total supply of the asset - /// * `current_holder_count - Total no. of investors of a ticker - #[ink(message)] - pub fn verify_transfer( - &self, - from: Option, - to: Option, - value: Balance, - _balance_from: Balance, - balance_to: Balance, - total_supply: Balance, - _current_holder_count: u64, - ) -> RestrictionResult { - if from == None && self.allow_primary_issuance - || to.map_or(false, |to| self.is_exempted(&to)) - || ((balance_to + value) * 10u128.pow(6)) / total_supply - <= self.max_allowed_percentage - { - return RestrictionResult::Valid; - } - RestrictionResult::Invalid - } - - /// Change the value of allowed percentage - /// - /// # Arguments - /// * `new_percentage` - New value of Max percentage of assets hold by an investor - #[ink(message)] - pub fn change_allowed_percentage(&mut self, new_percentage: u128) { - self.ensure_owner(self.env().caller()); - assert!( - self.max_allowed_percentage != new_percentage, - "Must change setting" - ); - self.env().emit_event(ChangeAllowedPercentage { - old_percentage: self.max_allowed_percentage, - new_percentage, - }); - self.max_allowed_percentage = new_percentage; - } - - /// Sets whether or not to consider primary issuance transfers - /// - /// # Arguments - /// * `primary_issuance` - whether to allow all primary issuance transfers - #[ink(message)] - pub fn change_primary_issuance(&mut self, primary_issuance: bool) { - self.ensure_owner(self.env().caller()); - assert!( - self.allow_primary_issuance != primary_issuance, - "Must change setting" - ); - self.allow_primary_issuance = primary_issuance; - self.env().emit_event(ChangePrimaryIssuance { - allow_primary_issuance: primary_issuance, - }); - } - - /// To exempt the given Identity from the restriction - /// - /// # Arguments - /// * `identity` - Identity of the token holder whose exemption status needs to change - /// * `is_exempted` - New exemption status of the identity - #[ink(message)] - pub fn modify_exemption_list(&mut self, identity: IdentityId, is_exempted: bool) { - self.ensure_owner(self.env().caller()); - assert!( - self.is_exempted(&identity) != is_exempted, - "Must change setting" - ); - self.exemption_list.insert(identity, is_exempted); - self.env().emit_event(ModifyExemptionList { - identity, - exempted: is_exempted, - }); - } - - /// To exempt the given Identities from the restriction - /// - /// # Arguments - /// * `exemptions` - Identities & exemption status of the identities - #[ink(message)] - pub fn modify_exemption_list_batch(&mut self, exemptions: Vec<(IdentityId, bool)>) { - for (identity, status) in exemptions.into_iter() { - self.modify_exemption_list(identity, status); - } - } - - /// Transfer ownership of the smart extension - /// - /// # Arguments - /// * `new_owner` - AccountId of the new owner - #[ink(message)] - pub fn transfer_ownership(&mut self, new_owner: AccountId) { - self.ensure_owner(self.env().caller()); - self.env().emit_event(TransferOwnership { - old_owner: self.env().caller(), - new_owner, - }); - self.owner = new_owner; - } - - /// Simply returns the current value of `max_allowed_percentage`. - #[ink(message)] - pub fn get_max_allowed_percentage(&self) -> u128 { - self.max_allowed_percentage - } - - /// Simply returns the current value of `allow_primary_issuance`. - #[ink(message)] - pub fn is_primary_issuance_allowed(&self) -> bool { - self.allow_primary_issuance - } - - /// Simply returns the current value of `owner`. - #[ink(message)] - pub fn owner(&self) -> AccountId { - self.owner - } - - /// Function to know whether given Identity is exempted or not - #[ink(message)] - pub fn is_identity_exempted_or_not(&self, of: IdentityId) -> bool { - self.is_exempted(&of) - } - - /// Return all exempted identities. - #[ink(message)] - pub fn get_all_exempted_identities(&self) -> Vec { - self.exemption_list - .iter() - .filter(|(_, status)| **status) - .map(|(id, _)| *id) - .collect() - } - - fn is_exempted(&self, of: &IdentityId) -> bool { - *self.exemption_list.get(of).unwrap_or(&false) - } - - fn ensure_owner(&self, owner: AccountId) { - assert!(owner == self.owner, "Not Authorized"); - } - } - - /// Unit tests in Rust are normally defined within such a `#[cfg(test)]` - /// module and test functions are marked with a `#[test]` attribute. - /// The below code is technically just normal Rust code. - #[cfg(test)] - mod tests { - /// Imports all the definitions from the outer scope so we can use them here. - use super::*; - use ink_env::{call, test}; - type Accounts = test::DefaultAccounts; - const CALLEE: [u8; 32] = [7; 32]; - - fn set_sender(sender: AccountId) { - test::push_execution_context::( - sender, - CALLEE.into(), - 1000000, - 1000000, - test::CallData::new(call::Selector::new([0x00; 4])), // dummy - ); - } - - fn set_from_owner() { - let accounts = default_accounts(); - set_sender(accounts.alice); - } - - fn default_accounts() -> Accounts { - test::default_accounts().expect("Test environment is expected to be initialized.") - } - - /// We test if the default constructor does its job. - #[test] - fn constructor_initialization_check() { - let default_accounts = default_accounts(); - set_from_owner(); - let percentage_transfer_manager = - PercentageTransferManagerStorage::new(200000u128, false); - assert_eq!( - percentage_transfer_manager.get_max_allowed_percentage(), - 200000u128 - ); - assert_eq!( - percentage_transfer_manager.is_primary_issuance_allowed(), - false - ); - assert_eq!(percentage_transfer_manager.owner(), default_accounts.alice); - } - - #[test] - fn test_verify_transfer_successfully() { - set_from_owner(); - let mut percentage_transfer_manager = - PercentageTransferManagerStorage::new(200000, false); - let from = IdentityId::from(1); - let to = IdentityId::from(2); - let multiplier: u128 = 1000000; - // test verify transfer return value - - // Should pass when transfer value is under restriction - assert_eq!( - percentage_transfer_manager.verify_transfer( - Some(from), - Some(to), - (100u128 * multiplier).into(), - (2000u128 * multiplier).into(), - 0u128.into(), - (2000u128 * multiplier).into(), - 0 - ), - RestrictionResult::Valid - ); - - // Should fail if the transfer value is more than the restriction - assert_eq!( - percentage_transfer_manager.verify_transfer( - Some(from), - Some(to), - (410u128 * multiplier).into(), - (2000u128 * multiplier).into(), - 0u128.into(), - (2000u128 * multiplier).into(), - 0 - ), - RestrictionResult::Invalid - ); - - // Should fail when the balance of will be more the restriction - assert_eq!( - percentage_transfer_manager.verify_transfer( - Some(from), - Some(to), - (301u128 * multiplier).into(), - (2000u128 * multiplier).into(), - (100u128 * multiplier).into(), - (2000u128 * multiplier).into(), - 0 - ), - RestrictionResult::Invalid - ); - - // Should fail when primary issuance is on because from is not None - percentage_transfer_manager.change_primary_issuance(true); - // check for the primary issuance value - assert_eq!( - percentage_transfer_manager.is_primary_issuance_allowed(), - true - ); - assert_eq!( - percentage_transfer_manager.verify_transfer( - Some(from), - Some(to), - (700u128 * multiplier).into(), - (2000u128 * multiplier).into(), - 0u128.into(), - (2000u128 * multiplier).into(), - 0 - ), - RestrictionResult::Invalid - ); - - // Should pass when primary issuance is on & from is None - assert_eq!( - percentage_transfer_manager.verify_transfer( - None, - Some(to), - (700u128 * multiplier).into(), - (2000u128 * multiplier).into(), - 0u128.into(), - (2000u128 * multiplier).into(), - 0 - ), - RestrictionResult::Valid - ); - - // Should pass when the Identity in the exemption list - percentage_transfer_manager.change_primary_issuance(false); - assert_eq!( - percentage_transfer_manager.is_primary_issuance_allowed(), - false - ); - percentage_transfer_manager.modify_exemption_list(to, true); - assert_eq!( - percentage_transfer_manager.is_identity_exempted_or_not(to), - true - ); - - assert_eq!( - percentage_transfer_manager.verify_transfer( - None, - Some(to), - (700u128 * multiplier).into(), - (2000u128 * multiplier).into(), - 0u128.into(), - (2000u128 * multiplier).into(), - 0 - ), - RestrictionResult::Valid - ); - } - - #[test] - fn test_verify_transfer_with_decimal_percentage() { - set_from_owner(); - let percentage_transfer_manager = PercentageTransferManagerStorage::new(278940, false); // it is 27.894% of the totalSupply - let from = IdentityId::from(1); - let to = IdentityId::from(2); - let multiplier: u128 = 1000000; - - // Should pass when transfer value is under restriction - assert_eq!( - percentage_transfer_manager.verify_transfer( - Some(from), - Some(to), - (55788u128 * 10000).into(), // exact 27.894% of 2000 tokens - (2000u128 * multiplier).into(), - 0u128.into(), - (2000u128 * multiplier).into(), - 0 - ), - RestrictionResult::Valid - ); - - // Should fail when passing more than 27.894% - assert_eq!( - percentage_transfer_manager.verify_transfer( - Some(from), - Some(to), - (558u128 * multiplier).into(), - (2000u128 * multiplier).into(), - 0u128.into(), - (2000u128 * multiplier).into(), - 0 - ), - RestrictionResult::Invalid - ); - } - - #[test] - fn should_successfully_change_allowed_percentage() { - set_from_owner(); - let mut percentage_transfer_manager = - PercentageTransferManagerStorage::new(200000, false); - let from = IdentityId::from(1); - let to = IdentityId::from(2); - let multiplier: u128 = 1000000; - - // Should fail if the transfer value is more than the restriction - assert_eq!( - percentage_transfer_manager.verify_transfer( - Some(from), - Some(to), - (410u128 * multiplier).into(), - (2000u128 * multiplier).into(), - 0u128.into(), - (2000u128 * multiplier).into(), - 0 - ), - RestrictionResult::Invalid - ); - - percentage_transfer_manager.change_allowed_percentage(300000u128); - - // Should pass with the same values because allowed percentage get increased - assert_eq!( - percentage_transfer_manager.verify_transfer( - Some(from), - Some(to), - (410u128 * multiplier).into(), - (2000u128 * multiplier).into(), - 0u128.into(), - (2000u128 * multiplier).into(), - 0 - ), - RestrictionResult::Valid - ); - } - - #[test] - #[should_panic(expected = "Must change setting")] - fn should_panic_when_same_value_submitted_as_param() { - set_from_owner(); - let mut percentage_transfer_manager = - PercentageTransferManagerStorage::new(200000, false); - //Should fail to change the allowed percentage because no change in the allowed percentage value - percentage_transfer_manager.change_allowed_percentage(200000u128); - } - - #[test] - #[should_panic(expected = "Not Authorized")] - fn should_panic_when_wrong_owner_call() { - let default_accounts = default_accounts(); - set_from_owner(); - let mut percentage_transfer_manager = - PercentageTransferManagerStorage::new(200000, false); - - // Should fail to call change_allowed_percentage when ownership changes - percentage_transfer_manager.transfer_ownership(default_accounts.bob); - assert_eq!(percentage_transfer_manager.owner(), default_accounts.bob); - percentage_transfer_manager.change_allowed_percentage(200000u128); - } - - #[test] - #[should_panic(expected = "Not Authorized")] - fn should_panic_when_calling_modify_exemption_list_by_wrong_owner() { - let default_accounts = default_accounts(); - set_from_owner(); - let mut percentage_transfer_manager = - PercentageTransferManagerStorage::new(200000, false); - let to = IdentityId::from(2); - - percentage_transfer_manager.transfer_ownership(default_accounts.bob); - assert_eq!(percentage_transfer_manager.owner(), default_accounts.bob); - percentage_transfer_manager.modify_exemption_list(to, true); - } - - #[test] - #[should_panic(expected = "Must change setting")] - fn should_panic_when_calling_modify_exemption_list_when_same_value_passed() { - set_from_owner(); - let mut percentage_transfer_manager = - PercentageTransferManagerStorage::new(200000, false); - let to = IdentityId::from(2); - - percentage_transfer_manager.modify_exemption_list(to, true); - // Should fail to call modify_exemption_list with same exemption state - percentage_transfer_manager.modify_exemption_list(to, true); - } - - #[test] - #[should_panic(expected = "Not Authorized")] - fn should_panic_when_calling_change_primary_issuance_by_wrong_owner() { - let default_accounts = default_accounts(); - set_from_owner(); - let mut percentage_transfer_manager = - PercentageTransferManagerStorage::new(200000, false); - - percentage_transfer_manager.transfer_ownership(default_accounts.bob); - assert_eq!(percentage_transfer_manager.owner(), default_accounts.bob); - percentage_transfer_manager.change_primary_issuance(true); - } - - #[test] - #[should_panic(expected = "Must change setting")] - fn should_panic_when_calling_change_primary_issuance_when_same_value_passed() { - set_from_owner(); - let mut percentage_transfer_manager = - PercentageTransferManagerStorage::new(200000, false); - - // Should fail to call change_primary_issuance with same issuance state - percentage_transfer_manager.change_primary_issuance(false); - } - - #[test] - fn should_exempt_multiple_identities() { - set_from_owner(); - let mut percentage_transfer_manager = - PercentageTransferManagerStorage::new(200000, false); - let exempted_identities = vec![ - (IdentityId::from(1), true), - (IdentityId::from(2), true), - (IdentityId::from(3), true), - ]; - let exempt_to = exempted_identities - .iter() - .map(|(id, _)| *id) - .collect::>(); - percentage_transfer_manager.modify_exemption_list_batch(exempted_identities); - let exempt_id = percentage_transfer_manager.get_all_exempted_identities(); - assert!(exempt_id == exempt_to); - assert!(percentage_transfer_manager.is_identity_exempted_or_not(IdentityId::from(1))); - assert!(percentage_transfer_manager.is_identity_exempted_or_not(IdentityId::from(2))); - assert!(percentage_transfer_manager.is_identity_exempted_or_not(IdentityId::from(3))); - } - } -} diff --git a/contracts/SimpleSTO/.cargo/config b/contracts/SimpleSTO/.cargo/config deleted file mode 100755 index 5e1472510b..0000000000 --- a/contracts/SimpleSTO/.cargo/config +++ /dev/null @@ -1,5 +0,0 @@ -[target.wasm32-unknown-unknown] -rustflags = [ - "-C", "overflow-checks=on", - "-C", "link-args=-z stack-size=65536 --import-memory" -] \ No newline at end of file diff --git a/contracts/SimpleSTO/.ink/abi_gen/Cargo.toml b/contracts/SimpleSTO/.ink/abi_gen/Cargo.toml deleted file mode 100755 index bcbfca3c82..0000000000 --- a/contracts/SimpleSTO/.ink/abi_gen/Cargo.toml +++ /dev/null @@ -1,15 +0,0 @@ -[package] -name = "abi-gen" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -publish = false - -[[bin]] -name = "abi-gen" -path = "main.rs" - -[dependencies] -contract = { path = "../..", package = "simple_sto", features = ["ink-generate-abi", "test-env"] } -serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0" diff --git a/contracts/SimpleSTO/.ink/abi_gen/main.rs b/contracts/SimpleSTO/.ink/abi_gen/main.rs deleted file mode 100755 index 9fa36177a6..0000000000 --- a/contracts/SimpleSTO/.ink/abi_gen/main.rs +++ /dev/null @@ -1,7 +0,0 @@ -fn main() -> Result<(), std::io::Error> { - let abi = contract::ink_generate_abi(); - let contents = serde_json::to_string_pretty(&abi)?; - std::fs::create_dir("target").ok(); - std::fs::write("target/abi.json", contents)?; - Ok(()) -} diff --git a/contracts/SimpleSTO/Cargo.lock b/contracts/SimpleSTO/Cargo.lock deleted file mode 100644 index 417978f983..0000000000 --- a/contracts/SimpleSTO/Cargo.lock +++ /dev/null @@ -1,495 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -[[package]] -name = "abi-gen" -version = "0.1.0" -dependencies = [ - "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", - "simple_sto 0.1.0", -] - -[[package]] -name = "aho-corasick" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "arrayvec" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "bitvec" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "byte-slice-cast" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "crunchy" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "derive_more" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "either" -version = "1.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "heck" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ink_abi" -version = "0.1.0" -source = "git+https://github.com/paritytech/ink#53fa4d5862e11bdb8fca1715c825d63514a48686" -dependencies = [ - "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ink_abi_derive 0.1.0 (git+https://github.com/paritytech/ink)", - "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", - "type-metadata 0.1.0 (git+https://github.com/type-metadata/type-metadata.git)", -] - -[[package]] -name = "ink_abi_derive" -version = "0.1.0" -source = "git+https://github.com/paritytech/ink#53fa4d5862e11bdb8fca1715c825d63514a48686" -dependencies = [ - "proc-macro2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ink_alloc" -version = "0.1.0" -source = "git+https://github.com/paritytech/ink#53fa4d5862e11bdb8fca1715c825d63514a48686" -dependencies = [ - "wee_alloc 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ink_core" -version = "0.1.0" -source = "git+https://github.com/paritytech/ink#53fa4d5862e11bdb8fca1715c825d63514a48686" -dependencies = [ - "ink_abi 0.1.0 (git+https://github.com/paritytech/ink)", - "ink_alloc 0.1.0 (git+https://github.com/paritytech/ink)", - "ink_utils 0.1.0 (git+https://github.com/paritytech/ink)", - "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "type-metadata 0.1.0 (git+https://github.com/type-metadata/type-metadata.git)", -] - -[[package]] -name = "ink_lang" -version = "0.1.0" -source = "git+https://github.com/paritytech/ink#53fa4d5862e11bdb8fca1715c825d63514a48686" -dependencies = [ - "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ink_model 0.1.0 (git+https://github.com/paritytech/ink)", - "ink_utils 0.1.0 (git+https://github.com/paritytech/ink)", - "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ink_model" -version = "0.1.0" -source = "git+https://github.com/paritytech/ink#53fa4d5862e11bdb8fca1715c825d63514a48686" -dependencies = [ - "ink_core 0.1.0 (git+https://github.com/paritytech/ink)", - "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ink_utils" -version = "0.1.0" -source = "git+https://github.com/paritytech/ink#53fa4d5862e11bdb8fca1715c825d63514a48686" -dependencies = [ - "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "itertools" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "itoa" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "libc" -version = "0.2.62" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "memchr" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "memory_units" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "nodrop" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "parity-scale-codec" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "bitvec 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-slice-cast 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec-derive 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "parity-scale-codec-derive" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "proc-macro-crate" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "proc-macro2" -version = "0.4.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "proc-macro2" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "quote" -version = "0.6.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "quote" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "regex" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "regex-syntax" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ryu" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "serde" -version = "1.0.101" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "serde_derive" -version = "1.0.101" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "serde_json" -version = "1.0.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "simple_sto" -version = "0.1.0" -dependencies = [ - "ink_abi 0.1.0 (git+https://github.com/paritytech/ink)", - "ink_core 0.1.0 (git+https://github.com/paritytech/ink)", - "ink_lang 0.1.0 (git+https://github.com/paritytech/ink)", - "ink_model 0.1.0 (git+https://github.com/paritytech/ink)", - "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "type-metadata 0.1.0 (git+https://github.com/type-metadata/type-metadata.git)", -] - -[[package]] -name = "syn" -version = "0.15.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "syn" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "thread_local" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tiny-keccak" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "toml" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "type-metadata" -version = "0.1.0" -source = "git+https://github.com/type-metadata/type-metadata.git#f50ca5c475c1abbff87bb649b1d248cd2bcc0bef" -dependencies = [ - "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", - "type-metadata-derive 0.1.0 (git+https://github.com/type-metadata/type-metadata.git)", -] - -[[package]] -name = "type-metadata-derive" -version = "0.1.0" -source = "git+https://github.com/type-metadata/type-metadata.git#f50ca5c475c1abbff87bb649b1d248cd2bcc0bef" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "unicode-segmentation" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "unicode-xid" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "unicode-xid" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "wee_alloc" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "memory_units 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "winapi" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[metadata] -"checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d" -"checksum arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba" -"checksum bitvec 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9633b74910e1870f50f5af189b08487195cdb83c0e27a71d6f64d5e09dd0538b" -"checksum byte-slice-cast 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7cbcbf18128ec71d8d4a0d054461ec59fff5b75b7d10a4c9b7c7cb1a379c3e77" -"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" -"checksum crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" -"checksum derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a141330240c921ec6d074a3e188a7c7ef95668bb95e7d44fa0e5778ec2a7afe" -"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" -"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" -"checksum ink_abi 0.1.0 (git+https://github.com/paritytech/ink)" = "" -"checksum ink_abi_derive 0.1.0 (git+https://github.com/paritytech/ink)" = "" -"checksum ink_alloc 0.1.0 (git+https://github.com/paritytech/ink)" = "" -"checksum ink_core 0.1.0 (git+https://github.com/paritytech/ink)" = "" -"checksum ink_lang 0.1.0 (git+https://github.com/paritytech/ink)" = "" -"checksum ink_model 0.1.0 (git+https://github.com/paritytech/ink)" = "" -"checksum ink_utils 0.1.0 (git+https://github.com/paritytech/ink)" = "" -"checksum itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5b8467d9c1cebe26feb08c640139247fac215782d35371ade9a2136ed6085358" -"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" -"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -"checksum libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)" = "34fcd2c08d2f832f376f4173a231990fa5aef4e99fb569867318a227ef4c06ba" -"checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" -"checksum memory_units 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" -"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" -"checksum parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "65582b5c02128a4b0fa60fb3e070216e9c84be3e4a8f1b74bc37e15a25e58daf" -"checksum parity-scale-codec-derive 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a81f3cd93ed368a8e41c4e79538e99ca6e8f536096de23e3a0bc3e782093ce28" -"checksum proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e10d4b51f154c8a7fb96fd6dad097cb74b863943ec010ac94b9fd1be8861fe1e" -"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -"checksum proc-macro2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "afdc77cc74ec70ed262262942ebb7dac3d479e9e5cfa2da1841c0806f6cdabcc" -"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" -"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" -"checksum regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc220bd33bdce8f093101afe22a037b8eb0e5af33592e6a9caafff0d4cb81cbd" -"checksum regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716" -"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -"checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997" -"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -"checksum serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)" = "9796c9b7ba2ffe7a9ce53c2287dfc48080f4b2b362fcc245a259b3a7201119dd" -"checksum serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)" = "4b133a43a1ecd55d4086bd5b4dc6c1751c68b1bfbeba7a5040442022c7e7c02e" -"checksum serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704" -"checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" -"checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf" -"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" -"checksum tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d8a021c69bb74a44ccedb824a046447e2c84a01df9e5c20779750acb38e11b2" -"checksum toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c7aabe75941d914b72bf3e5d3932ed92ce0664d49d8432305a8b547c37227724" -"checksum type-metadata 0.1.0 (git+https://github.com/type-metadata/type-metadata.git)" = "" -"checksum type-metadata-derive 0.1.0 (git+https://github.com/type-metadata/type-metadata.git)" = "" -"checksum unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1967f4cdfc355b37fd76d2a954fb2ed3871034eb4f26d60537d88795cfc332a9" -"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" -"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" -"checksum wee_alloc 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "dbb3b5a6b2bb17cb6ad44a2e68a43e8d2722c997da10e928665c72ec6c0a0b8e" -"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" -"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/contracts/SimpleSTO/Cargo.toml b/contracts/SimpleSTO/Cargo.toml deleted file mode 100755 index b526308df1..0000000000 --- a/contracts/SimpleSTO/Cargo.toml +++ /dev/null @@ -1,61 +0,0 @@ -[package] -name = "simple_sto" -version = "0.1.0" -edition = "2018" - -[dependencies] -ink_abi = { git = "https://github.com/paritytech/ink", package = "ink_abi", default-features = false, optional = true } -ink_core = { git = "https://github.com/paritytech/ink", package = "ink_core", default-features = false } -ink_model = { git = "https://github.com/paritytech/ink", package = "ink_model", default-features = false } -ink_lang = { git = "https://github.com/paritytech/ink", package = "ink_lang", default-features = false } - -scale = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -type-metadata = { git = "https://github.com/type-metadata/type-metadata.git", default-features = false, features = ["derive"], optional = true } - -[lib] -name = "simple_sto" -crate-type = [ - # Used for normal contract Wasm blobs. - "cdylib", - # Used for ABI generation. - "rlib", -] - -[features] -default = ["test-env"] -std = [ - "ink_abi/std", - "ink_core/std", - "ink_model/std", - "ink_lang/std", - "scale/std", - "type-metadata/std", -] -test-env = [ - "std", - "ink_core/test-env", - "ink_model/test-env", - "ink_lang/test-env", -] -ink-generate-abi = [ - "std", - "ink_abi", - "type-metadata", - "ink_core/ink-generate-abi", - "ink_lang/ink-generate-abi", -] -ink-as-dependency = [] - -[profile.release] -panic = "abort" -lto = true -opt-level = "z" -overflow-checks = true - -[workspace] -members = [ - ".ink/abi_gen" -] -exclude = [ - ".ink" -] diff --git a/contracts/SimpleSTO/README.md b/contracts/SimpleSTO/README.md deleted file mode 100644 index ae88fe7e2c..0000000000 --- a/contracts/SimpleSTO/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# polymesh-simple-sto - -Simple STO implemented in Ink! smart contract. - -Designed to be attached to the Settlement module to primary offerings of an asset. - -# Pre-Requisites - - - Rust (nightly and stable) - - Contract Crate - `cargo install --force --git https://github.com/paritytech/ink cargo-contract` - -# To build WASM - -``` -cargo contract build -``` - -# To build ABI - -``` -cargo +nightly build --features ink-generate-abi -``` \ No newline at end of file diff --git a/contracts/SimpleSTO/src/lib.rs b/contracts/SimpleSTO/src/lib.rs deleted file mode 100755 index 681407a112..0000000000 --- a/contracts/SimpleSTO/src/lib.rs +++ /dev/null @@ -1,58 +0,0 @@ -#![cfg_attr(not(any(test, feature = "std")), no_std)] - -use ink_core::storage; - -use ink_lang::contract; - -contract! { - #![env = ink_core::env::DefaultSrmlTypes] - - struct SimpleSTO { - token_sold: storage::Value, - max_limit: storage::Value, - reserve_percent: storage::Value, // enter 1 for 1% i.e. 0.01 ratio - starting_price: storage::Value, // price * 10000. Enter 50000 if price is 5 - owner: storage::Value, - } - - - impl Deploy for SimpleSTO { - fn deploy(&mut self) { - self.owner.set(env.caller()); - self.token_sold.set(0); - self.max_limit.set(0); - } - } - - impl SimpleSTO { - /// Sets max token sold - pub(external) fn configure(&mut self, max_limit: u128, reserve_percent: u128, starting_price: u128) { - if env.caller() != *self.owner { - return; - } - self.max_limit.set(max_limit); - self.reserve_percent.set(reserve_percent); - self.starting_price.set(starting_price); - } - - /// gets price - pub(external) fn get_price(&mut self, amount: u128) -> u128 { - let price = *self.token_sold.get() / - *self.starting_price.get() + (*self.max_limit.get() - *self.token_sold.get()) * *self.reserve_percent.get(); - let buy_amount = price * amount + *self.token_sold.get(); - if buy_amount > *self.max_limit.get() { - return 0; - } else { - self.token_sold.set(buy_amount); - return price - } - } - } -} - -#[cfg(all(test, feature = "test-env"))] -mod tests { - use super::*; - use ink_core::env; - type Types = ink_core::env::DefaultSrmlTypes; -} diff --git a/contracts/examples/RuntimeInteraction/.gitignore b/contracts/examples/RuntimeInteraction/.gitignore deleted file mode 100755 index 8de8f877e4..0000000000 --- a/contracts/examples/RuntimeInteraction/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# Ignore build artifacts from the local tests sub-crate. -/target/ - -# Ignore backup files creates by cargo fmt. -**/*.rs.bk - -# Remove Cargo.lock when creating an executable, leave it for libraries -# More information here http://doc.crates.io/guide.html#cargotoml-vs-cargolock -Cargo.lock diff --git a/contracts/examples/RuntimeInteraction/.ink/abi_gen/Cargo.toml b/contracts/examples/RuntimeInteraction/.ink/abi_gen/Cargo.toml deleted file mode 100755 index 5b3b7ab8a0..0000000000 --- a/contracts/examples/RuntimeInteraction/.ink/abi_gen/Cargo.toml +++ /dev/null @@ -1,16 +0,0 @@ -[package] -name = "abi-gen" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -publish = false - -[[bin]] -name = "abi-gen" -path = "main.rs" - -[dependencies] -contract = { path = "../..", package = "RuntimeInteraction", default-features = false, features = ["ink-generate-abi"] } -ink_lang = { git = "https://github.com/paritytech/ink", tag = "v2.1.0", package = "ink_lang", default-features = false, features = ["ink-generate-abi"] } -serde = "1.0" -serde_json = "1.0" diff --git a/contracts/examples/RuntimeInteraction/.ink/abi_gen/main.rs b/contracts/examples/RuntimeInteraction/.ink/abi_gen/main.rs deleted file mode 100755 index 54342324c6..0000000000 --- a/contracts/examples/RuntimeInteraction/.ink/abi_gen/main.rs +++ /dev/null @@ -1,7 +0,0 @@ -fn main() -> Result<(), std::io::Error> { - let abi = ::generate_abi(); - let contents = serde_json::to_string_pretty(&abi)?; - std::fs::create_dir("target").ok(); - std::fs::write("target/metadata.json", contents)?; - Ok(()) -} diff --git a/contracts/examples/RuntimeInteraction/Cargo.toml b/contracts/examples/RuntimeInteraction/Cargo.toml deleted file mode 100755 index b8c2dc7fb7..0000000000 --- a/contracts/examples/RuntimeInteraction/Cargo.toml +++ /dev/null @@ -1,74 +0,0 @@ -[package] -name = "RuntimeInteraction" -version = "0.1.0" -authors = ["Polymath Inc."] -edition = "2018" - -[dependencies] -ink_abi = { git = "https://github.com/paritytech/ink", tag = "v2.1.0", package = "ink_abi", default-features = false, features = ["derive"], optional = true } -ink_primitives = { git = "https://github.com/paritytech/ink", tag = "v2.1.0", package = "ink_primitives", default-features = false } -ink_core = { git = "https://github.com/paritytech/ink", tag = "v2.1.0", package = "ink_core", default-features = false } -ink_lang = { git = "https://github.com/paritytech/ink", tag = "v2.1.0", package = "ink_lang", default-features = false } -ink_prelude = { git = "https://github.com/paritytech/ink", tag = "v2.1.0", package = "ink_prelude", default-features = false } - -scale = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -serde = { version = "1.0.104", optional = true, features = ["derive"] } -custom-ink-env-types = { path = "../custom-ink-env-types", default-features = false } - -[dependencies.type-metadata] -git = "https://github.com/type-metadata/type-metadata.git" -rev = "02eae9f35c40c943b56af5b60616219f2b72b47d" -default-features = false -features = ["derive"] -optional = true - -[lib] -name = "RuntimeInteraction" -path = "lib.rs" -crate-type = [ - # Used for normal contract Wasm blobs. - "cdylib", - # Required for ABI generation, and using this contract as a dependency. - # If using `cargo contract build`, it will be automatically disabled to produce a smaller Wasm binary - "rlib", -] - -[features] -default = ["test-env"] -std = [ - "serde", - "ink_abi/std", - "ink_core/std", - "ink_primitives/std", - "ink_prelude/std", - "scale/std", - "type-metadata/std", - "custom-ink-env-types/std" -] -test-env = [ - "std", - "ink_lang/test-env", -] -ink-generate-abi = [ - "std", - "ink_abi", - "type-metadata", - "ink_core/ink-generate-abi", - "ink_lang/ink-generate-abi", - "custom-ink-env-types/ink-generate-abi" -] -ink-as-dependency = [] - -[profile.release] -panic = "abort" -lto = true -opt-level = "z" -# overflow-checks = true - -[workspace] -members = [ - ".ink/abi_gen" -] -exclude = [ - ".ink" -] diff --git a/contracts/examples/RuntimeInteraction/lib.rs b/contracts/examples/RuntimeInteraction/lib.rs deleted file mode 100755 index 269f379dc7..0000000000 --- a/contracts/examples/RuntimeInteraction/lib.rs +++ /dev/null @@ -1,81 +0,0 @@ -#![cfg_attr(not(feature = "std"), no_std)] - -use ink_lang as ink; - -#[ink::contract(version = "0.1.0", env = PolymeshRuntimeTypes)] -#[allow(non_snake_case)] -mod RuntimeInteraction { - use custom_ink_env_types::{ - calls as runtime_calls, AssetTransferRules, PolymeshRuntimeTypes, Ticker, - }; - use ink_core::{env, hash::Blake2x128, storage}; - use ink_prelude::{format, vec, vec::Vec}; - use scale::Encode; - - /// Defines the storage of your contract. - /// Add new fields to the below struct in order - /// to add new static storage fields to your contract. - #[ink(storage)] - struct RuntimeInteractionStorage {} - - impl RuntimeInteractionStorage { - /// Constructor. - #[ink(constructor)] - fn new(&mut self) {} - - #[ink(message)] - fn read_compliance_manager_storage(&self, ticker: Ticker) -> AssetTransferRules { - // Read the storage of compliance transfer manager - // Read the map storage - // Twox128(module_prefix) ++ Twox128(storage_prefix) ++ Hasher(encode(key)) - - let mut key = vec![ - // Precomputed: Twox128("ComplianceManager") - 255, 219, 199, 116, 193, 144, 129, 130, 221, 228, 247, 53, 193, 10, 8, 220, - // Precomputed: Twox128("AssetRulesMap") - 43, 166, 32, 27, 86, 56, 171, 63, 215, 7, 88, 63, 149, 251, 213, 120, - ]; - - let encoded_ticker = &ticker.encode(); - - let mut blake2_128 = Blake2x128::from(Vec::new()); - let hashed_ticker = blake2_128.hash_raw(&encoded_ticker); - - // The hasher is `Blake2_128Concat` which appends the unhashed account to the hashed account - key.extend_from_slice(&hashed_ticker); - key.extend_from_slice(&encoded_ticker); - - // fetch from runtime storage - let result = self.env().get_runtime_storage::(&key[..]); - env::println(&format!("PRINT THE KEY {:?}", key)); - match result { - Some(Ok(asset_compliance)) => { - env::println(&format!("AssetCompliances {:?}", asset_compliance)); - asset_compliance - } - Some(Err(err)) => { - env::println(&format!("Error reading AssetCompliances {:?}", err)); - AssetCompliances::default() - } - None => { - env::println(&format!("No data at key {:?}", key)); - AssetCompliances::default() - } - } - } - - #[ink(message)] - fn call_runtime_dispatch(&self, ticker: Ticker, id: u32) { - // Creating the instance of the runtime call - let remove_requirement_call = - runtime_calls::cm_remove_compliance_requirement(ticker, id); - // dispatch the call to the runtime - let result = self.env().invoke_runtime(&remove_requirement_call); - // Print the result if the async call - env::println(&format!( - "Remove active call invoke_runtime result {:?}", - result - )); - } - } -} diff --git a/contracts/examples/custom-ink-env-types/.gitignore b/contracts/examples/custom-ink-env-types/.gitignore deleted file mode 100644 index bf910de10a..0000000000 --- a/contracts/examples/custom-ink-env-types/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# Ignore build artifacts from the local tests sub-crate. -/target/ - -# Ignore backup files creates by cargo fmt. -**/*.rs.bk - -# Remove Cargo.lock when creating an executable, leave it for libraries -# More information here http://doc.crates.io/guide.html#cargotoml-vs-cargolock -Cargo.lock \ No newline at end of file diff --git a/contracts/examples/custom-ink-env-types/Cargo.toml b/contracts/examples/custom-ink-env-types/Cargo.toml deleted file mode 100644 index 4e31bd53e5..0000000000 --- a/contracts/examples/custom-ink-env-types/Cargo.toml +++ /dev/null @@ -1,43 +0,0 @@ -[package] -name = "custom-ink-env-types" -version = "0.1.0" -authors = ["Polymath Inc."] -edition = "2018" - -[dependencies] -ink_core = { git = "https://github.com/paritytech/ink", tag = "v2.1.0", package = "ink_core", default-features = false } -ink_prelude = { git = "https://github.com/paritytech/ink", tag = "v2.1.0", package = "ink_prelude", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } -scale = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -serde = { version = "1.0.104", optional = true, features = ["derive"] } -scale-info = { version = "0.3", default-features = false, features = ["derive"], optional = true } -derive_more = { version = "0.99", default-features = false, features = ["from", "display"] } -sp-io = { version = "4.0.0-dev", default-features = false, features = ["disable_panic_handler", "disable_oom", "disable_allocator"] } - -[dependencies.type-metadata] -git = "https://github.com/type-metadata/type-metadata.git" -rev = "02eae9f35c40c943b56af5b60616219f2b72b47d" -default-features = false -features = ["derive"] -optional = true - -[features] -default = ["std"] -std = [ - "serde", - "scale-info", - "scale-info/std", - "scale/std", - "sp-io/std", - "sp-runtime/std", - "ink_core/std", -] -ink-generate-abi = [ - "std", - "type-metadata", - "ink_core/ink-generate-abi", -] -no_std = [ ] - -[workspace] -members = [] diff --git a/contracts/examples/custom-ink-env-types/src/calls.rs b/contracts/examples/custom-ink-env-types/src/calls.rs deleted file mode 100644 index 4c54e62aec..0000000000 --- a/contracts/examples/custom-ink-env-types/src/calls.rs +++ /dev/null @@ -1,51 +0,0 @@ -use crate::{Condition, Ticker}; -use ink_prelude::vec::Vec; -use scale::{Codec, Decode, Encode}; -use sp_runtime::traits::Member; - -/// Default runtime Call type, a subset of the runtime Call module variants -/// -/// The codec indices of the modules *MUST* match those in the concrete runtime. -#[derive(Encode, Decode)] -#[cfg_attr(feature = "std", derive(Clone, PartialEq, Eq))] -pub enum Call { - #[codec(index = "27")] - ComplianceManager(ComplianceManager), -} - -impl From> for Call { - fn from(compliance_manager_call: ComplianceManager) -> Call { - Call::ComplianceManager(compliance_manager_call) - } -} -/// Generic ComplianceManager Call, could be used with other runtimes -#[derive(Encode, Decode, Clone, PartialEq, Eq)] -pub enum ComplianceManager -where - Condition: Member + Codec, - Ticker: Member + Codec, -{ - #[allow(non_camel_case_types)] - add_compliance_requirement(Ticker, Vec, Vec), - #[allow(non_camel_case_types)] - remove_compliance_requirement(Ticker, u32), -} - -/// Construct a `ComplianceManager::remove_compliance_requirement` call -pub fn cm_remove_compliance_requirement(ticker: Ticker, id: u32) -> Call { - ComplianceManager::::remove_compliance_requirement(ticker, id).into() -} - -/// Construct a `ComplianceManager::add_compliance_requirement` call -pub fn cm_add_compliance_requirement( - ticker: Ticker, - sender_conditions: Vec, - receiver_conditions: Vec, -) -> Call { - ComplianceManager::::add_compliance_requirement( - ticker, - sender_conditions, - receiver_conditions, - ) - .into() -} diff --git a/contracts/examples/custom-ink-env-types/src/lib.rs b/contracts/examples/custom-ink-env-types/src/lib.rs deleted file mode 100644 index 2f30142a9b..0000000000 --- a/contracts/examples/custom-ink-env-types/src/lib.rs +++ /dev/null @@ -1,209 +0,0 @@ -#![cfg_attr(not(feature = "std"), no_std)] - -use core::{array::TryFromSliceError, convert::TryFrom}; -use derive_more::From; -use ink_core::env::Clear; -use ink_core::storage::Flush; -use ink_prelude::vec::Vec; -use scale::{Decode, Encode}; -#[cfg(feature = "std")] -use scale_info::TypeInfo; -#[cfg(feature = "std")] -use serde::{Deserialize, Serialize}; - -pub mod calls; - -/// Contract environment types defined in substrate node-runtime -#[cfg_attr(feature = "ink-generate-abi", derive(type_metadata::Metadata))] -#[derive(Clone, Debug, PartialEq, Eq)] -pub enum PolymeshRuntimeTypes {} - -/// The default balance type. -pub type Balance = u128; - -/// The default timestamp type. -pub type Timestamp = u64; - -/// The default block number type. -pub type BlockNumber = u64; - -/// The default environment `AccountId` type. -/// -/// # Note -/// -/// This is a mirror of the `AccountId` type used in the default configuration -/// of PALLET contracts. -#[derive(Encode, Decode, From)] -#[derive(Debug, Copy, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Default)] -#[cfg_attr(feature = "std", derive(TypeInfo))] -pub struct AccountId([u8; 32]); - -impl<'a> TryFrom<&'a [u8]> for AccountId { - type Error = TryFromSliceError; - - fn try_from(bytes: &'a [u8]) -> Result { - let address = <[u8; 32]>::try_from(bytes)?; - Ok(Self(address)) - } -} - -/// The default environment `Hash` type. -/// -/// # Note -/// -/// This is a mirror of the `Hash` type used in the default configuration -/// of PALLET contracts. -#[derive(Encode, Decode, From)] -#[derive(Debug, Copy, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Default)] -#[cfg_attr(feature = "std", derive(TypeInfo))] -pub struct Hash([u8; 32]); - -impl<'a> TryFrom<&'a [u8]> for Hash { - type Error = TryFromSliceError; - - fn try_from(bytes: &'a [u8]) -> Result { - let address = <[u8; 32]>::try_from(bytes)?; - Ok(Self(address)) - } -} - -impl AsRef<[u8]> for Hash { - fn as_ref(&self) -> &[u8] { - &self.0[..] - } -} - -impl AsMut<[u8]> for Hash { - fn as_mut(&mut self) -> &mut [u8] { - &mut self.0[..] - } -} - -impl Clear for Hash { - fn is_clear(&self) -> bool { - self.as_ref().iter().all(|&byte| byte == 0x00) - } - - fn clear() -> Self { - Self([0x00; 32]) - } -} - -impl ink_core::env::EnvTypes for PolymeshRuntimeTypes { - type AccountId = AccountId; - type Balance = Balance; - type Hash = Hash; - type Timestamp = Timestamp; - type BlockNumber = BlockNumber; - type Call = calls::Call; -} - -const TICKER_LEN: usize = 12; - -#[derive(Decode, Encode)] -#[derive(PartialEq, Ord, Eq, PartialOrd, Copy, Hash, Clone, Default, Debug)] -#[cfg_attr(feature = "ink-generate-abi", derive(type_metadata::Metadata))] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -pub struct IdentityId([u8; 32]); - -impl Flush for IdentityId {} - -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[cfg_attr(feature = "ink-generate-abi", derive(type_metadata::Metadata))] -#[derive(Decode, Encode)] -#[derive(Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)] -pub struct JurisdictionName(pub Vec); - -/// Scope: Almost all claim needs a valid scope identity. -pub type Scope = IdentityId; - -/// All possible claims in polymesh -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[cfg_attr(feature = "ink-generate-abi", derive(type_metadata::Metadata))] -#[derive(Encode, Decode, Clone, PartialEq, Eq, PartialOrd, Ord, Debug)] -pub enum Claim { - /// User is Accredited - Accredited(Scope), - /// User is Accredited - Affiliate(Scope), - /// User has an active BuyLockup (end date defined in claim expiry) - BuyLockup(Scope), - /// User has an active SellLockup (date defined in claim expiry) - SellLockup(Scope), - /// User has passed CDD - CustomerDueDiligence, - /// User is KYC'd - KnowYourCustomer(Scope), - /// This claim contains a string that represents the jurisdiction of the user - Jurisdiction(JurisdictionName, Scope), - /// User is exempted - Exempted(Scope), - /// User is Blocked - Blocked(Scope), - /// Empty claim - NoData, -} - -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[cfg_attr(feature = "ink-generate-abi", derive(type_metadata::Metadata))] -#[derive(Encode, Decode, Clone, PartialEq, Eq, Debug)] -/// It defines the type of Condition supported, and the filter information we will use to evaluate as a -/// predicate. -pub enum ConditionType { - /// Condition to ensure that claim filter produces one claim. - IsPresent(Claim), - /// Condition to ensure that claim filter produces an empty list. - IsAbsent(Claim), - /// Condition to ensure that at least one claim is fetched when filter is applied. - IsAnyOf(Vec), - /// Condition to ensure that at none of claims is fetched when filter is applied. - IsNoneOf(Vec), -} - -/// Type of claim requirements that a condition can have -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[cfg_attr(feature = "ink-generate-abi", derive(type_metadata::Metadata))] -#[derive(Encode, Decode, Clone, PartialEq, Eq, Debug)] -pub struct Condition { - /// Type of condition. - pub condition_type: ConditionType, - /// Trusted issuers. - pub issuers: Vec, -} - -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[cfg_attr(feature = "ink-generate-abi", derive(type_metadata::Metadata))] -#[derive(Encode, Decode, Default, Clone, PartialEq, Eq, Debug)] -pub struct ComplianceRequirement { - pub sender_conditions: Vec, - pub receiver_conditions: Vec, - /// Unique identifier of the asset condition - pub id: u32, -} - -/// List of conditions associated to an asset. -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -#[cfg_attr(feature = "ink-generate-abi", derive(type_metadata::Metadata))] -#[derive(Encode, Decode, Default, Clone, PartialEq, Eq, Debug)] -pub struct AssetCompliance { - /// This flag indicates if asset transfer conditions are active or paused. - pub is_paused: bool, - /// List of conditions. - pub requirements: Vec, -} - -/// Ticker symbol. -/// -/// This type stores fixed-length case-sensitive byte strings. Any value of this type that is -/// received by a Substrate module call method has to be converted to canonical uppercase -/// representation using [`Ticker::canonize`]. -#[cfg_attr(feature = "ink-generate-abi", derive(type_metadata::Metadata))] -#[derive(Decode, Encode)] -#[derive(Clone, Copy, Hash, PartialEq, Eq, PartialOrd, Ord, Debug)] -pub struct Ticker([u8; TICKER_LEN]); - -impl Default for Ticker { - fn default() -> Self { - Ticker([0u8; TICKER_LEN]) - } -} diff --git a/pallets/asset/src/lib.rs b/pallets/asset/src/lib.rs index 84929ab81c..afeff404e2 100644 --- a/pallets/asset/src/lib.rs +++ b/pallets/asset/src/lib.rs @@ -104,9 +104,7 @@ use polymesh_common_utilities::{ compliance_manager::Config as ComplianceManagerConfig, constants::*, protocol_fee::{ChargeProtocolFee, ProtocolOp}, - //traits::contracts::ContractsFn, - with_transaction, - SystematicIssuers, + with_transaction, SystematicIssuers, }; use polymesh_primitives::{ agent::AgentGroup, @@ -1786,47 +1784,6 @@ impl Module { Ok(()) } - /* - // Return bool to know whether the given extension is compatible with the supported version of asset. - fn is_ext_compatible(ext_type: &SmartExtensionType, extension_id: T::AccountId) -> bool { - // Access version. - let ext_version = T::ContractsFn::extension_info(extension_id).version; - Self::compatible_extension_version(ext_type) == ext_version - } - - /// Ensure the number of attached transfer manager extension should be < `MaxNumberOfTMExtensionForAsset`. - fn ensure_max_limit_for_tm_extension( - ext_type: &SmartExtensionType, - ticker: &Ticker, - ) -> DispatchResult { - if *ext_type == SmartExtensionType::TransferManager { - let no_of_ext = u32::try_from( - >::get((ticker, SmartExtensionType::TransferManager)).len(), - ) - .unwrap_or_default(); - ensure!( - no_of_ext < T::MaxNumberOfTMExtensionForAsset::get(), - Error::::MaximumTMExtensionLimitReached - ); - } - Ok(()) - } - - /// Ensure the extrinsic is signed and have valid extension id. - fn ensure_signed_and_validate_extension_id( - origin: T::Origin, - ticker: &Ticker, - id: &T::AccountId, - ) -> Result { - let did = >::ensure_perms(origin, *ticker)?; - ensure!( - >::contains_key((ticker, id)), - Error::::NoSuchSmartExtension - ); - Ok(did) - } - */ - fn base_create_asset( origin: T::Origin, name: AssetName, @@ -2354,102 +2311,6 @@ impl Module { Ok(()) } - /* - fn base_add_extension( - origin: T::Origin, - ticker: Ticker, - details: SmartExtension, - ) -> DispatchResult { - let did = >::ensure_perms(origin, ticker)?; - - // Enforce length limits. - ensure_string_limited::(&details.extension_name)?; - if let SmartExtensionType::Custom(ty) = &details.extension_type { - ensure_string_limited::(ty)?; - } - - // Verify the details of smart extension & store it. - ensure!( - !>::contains_key((ticker, &details.extension_id)), - Error::::ExtensionAlreadyPresent - ); - // Ensure the version compatibility with the asset. - ensure!( - Self::is_ext_compatible(&details.extension_type, details.extension_id.clone()), - Error::::IncompatibleExtensionVersion - ); - // Ensure the hard limit on the count of maximum transfer manager an asset can have. - Self::ensure_max_limit_for_tm_extension(&details.extension_type, &ticker)?; - - // Update the storage. - let id = details.extension_id.clone(); - let name = details.extension_name.clone(); - let ty = details.extension_type.clone(); - >::append((ticker, &ty), id.clone()); - >::insert((ticker, &id), details); - Self::deposit_event(Event::::ExtensionAdded(did, ticker, id, name, ty)); - - Ok(()) - } - - fn base_remove_smart_extension( - origin: T::Origin, - ticker: Ticker, - extension_id: T::AccountId, - ) -> DispatchResult { - // Ensure the extrinsic is signed and have valid extension id. - let did = Self::ensure_signed_and_validate_extension_id(origin, &ticker, &extension_id)?; - let extension_detail_key = (ticker, extension_id.clone()); - ensure!( - >::contains_key(&extension_detail_key), - Error::::NoSuchSmartExtension - ); - - let extension_type = Self::extension_details(&extension_detail_key).extension_type; - - // Remove the storage reference for the given extension_id. - // The order of SEs do not matter, so `swap_remove` is OK. - >::mutate(&(ticker, extension_type), |extension_list| { - if let Some(pos) = extension_list.iter().position(|ext| ext == &extension_id) { - extension_list.swap_remove(pos); - } - }); - >::remove(extension_detail_key); - - Self::deposit_event(RawEvent::ExtensionRemoved(did, ticker, extension_id)); - Ok(()) - } - - fn set_archive_on_extension( - origin: T::Origin, - ticker: Ticker, - extension_id: T::AccountId, - archive: bool, - ) -> DispatchResult { - // Ensure the extrinsic is signed and have valid extension id. - let did = Self::ensure_signed_and_validate_extension_id(origin, &ticker, &extension_id)?; - - // Mutate the extension details - >::try_mutate((ticker, &extension_id), |details| { - ensure!( - details.is_archive != archive, - archive - .then_some(Error::::AlreadyArchived) - .unwrap_or(Error::::AlreadyUnArchived) - ); - details.is_archive = archive; - - let event = match archive { - true => RawEvent::ExtensionArchived(did, ticker, extension_id.clone()), - false => RawEvent::ExtensionUnArchived(did, ticker, extension_id.clone()), - }; - - Self::deposit_event(event); - Ok(()) - }) - } - */ - fn base_claim_classic_ticker( origin: T::Origin, ticker: Ticker, diff --git a/pallets/common/src/traits/asset.rs b/pallets/common/src/traits/asset.rs index c3cb357400..fee42b2f7b 100644 --- a/pallets/common/src/traits/asset.rs +++ b/pallets/common/src/traits/asset.rs @@ -110,7 +110,6 @@ pub trait Config: + external_agents::Config + pallet_session::Config + statistics::Config - //+ contracts::Trait + portfolio::Config { /// The overarching event type. @@ -149,8 +148,6 @@ pub trait Config: type WeightInfo: WeightInfo; type CPWeightInfo: crate::traits::checkpoint::WeightInfo; - - //type ContractsFn: ContractsFn; } decl_event! { diff --git a/pallets/contracts-old/Cargo.toml b/pallets/contracts-old/Cargo.toml deleted file mode 100644 index 138098abf4..0000000000 --- a/pallets/contracts-old/Cargo.toml +++ /dev/null @@ -1,54 +0,0 @@ -[package] -name = "polymesh-contracts" -version = "0.1.0" -authors = ["Polymath Inc."] -edition = "2018" - -[dependencies] - -# Substrate specific -serde = { version = "1.0.104", default-features = false } -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -frame-system = { version = "4.0.0-dev", default-features = false } -frame-support = { version = "4.0.0-dev", default-features = false } -pallet-contracts = { version = "4.0.0-dev", default-features = false } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } -wat = { version = "1.0", optional = true, default-features = false } -parity-wasm = { version = "0.41.0", default-features = false } - -# Polymesh specific -pallet-base = { path = "../base", default-features = false } -pallet-identity = { path = "../identity", default-features = false } -polymesh-primitives = { path = "../../primitives", default-features = false } -polymesh-common-utilities = { path = "../common", default-features = false } -pallet-protocol-fee = { path = "../protocol-fee", default-features = false } - -# Only in STD env -frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } - -[features] -default = ["std"] -no_std = [] -std = [ - "serde/std", - "sp-io/std", - "codec/std", - "sp-std/std", - "sp-core/std", - "parity-wasm/std", - "sp-runtime/std", - "frame-system/std", - "frame-support/std", - "pallet-identity/std", - "pallet-contracts/std", - "polymesh-primitives/std", - "pallet-protocol-fee/std", - "polymesh-common-utilities/std", -] -runtime-benchmarks = [ - "frame-benchmarking", - "wat" -] diff --git a/pallets/contracts-old/fixtures/dummy.wat b/pallets/contracts-old/fixtures/dummy.wat deleted file mode 100644 index 86a0e612ff..0000000000 --- a/pallets/contracts-old/fixtures/dummy.wat +++ /dev/null @@ -1,4 +0,0 @@ -(module - (func (export "call")) - (func (export "deploy")) -) \ No newline at end of file diff --git a/pallets/contracts-old/fixtures/ptm.wat b/pallets/contracts-old/fixtures/ptm.wat deleted file mode 100644 index 63767fe3e3..0000000000 --- a/pallets/contracts-old/fixtures/ptm.wat +++ /dev/null @@ -1,12921 +0,0 @@ -(module - (type $t0 (func (param i32 i32 i32))) - (type $t1 (func (param i32 i32 i32 i32))) - (type $t2 (func (param i32 i32))) - (type $t3 (func (param i32))) - (type $t4 (func (param i32 i32 i32) (result i32))) - (type $t5 (func (param i32 i32) (result i32))) - (type $t6 (func (param i32) (result i32))) - (type $t7 (func (param i32 i32 i64))) - (type $t8 (func (param i32 i32 i64 i64))) - (type $t9 (func (param i32 i64 i64))) - (type $t10 (func (param i32 i64) (result i32))) - (type $t11 (func (param i64 i64 i32))) - (type $t12 (func (param i64 i64))) - (type $t13 (func (result i32))) - (type $t14 (func (param i32 i32 i32 i32 i32))) - (type $t15 (func (param i32 i64 i64 i64 i64))) - (type $t16 (func (param i32 i64 i64 i32))) - (type $t17 (func (param i32 i64 i64))) - (type $t18 (func (param i32 i32 i32))) - (type $t19 (func (param i32 i32) (result i32))) - (type $t20 (func (param i32 i64 i64 i64 i64))) - (import "seal0" "seal_hash_blake2_256" (func $seal0.seal_hash_blake2_256 (type $t0))) - (import "seal0" "seal_set_storage" (func $seal0.seal_set_storage (type $t0))) - (import "seal0" "seal_deposit_event" (func $seal0.seal_deposit_event (type $t1))) - (import "seal0" "seal_caller" (func $seal0.seal_caller (type $t2))) - (import "seal0" "seal_value_transferred" (func $seal0.seal_value_transferred (type $t2))) - (import "seal0" "seal_clear_storage" (func $seal0.seal_clear_storage (type $t3))) - (import "seal0" "seal_get_storage" (func $seal0.seal_get_storage (type $t4))) - (import "seal0" "seal_input" (func $seal0.seal_input (type $t2))) - (import "seal0" "seal_return" (func $seal0.seal_return (type $t0))) - (import "env" "memory" (memory $env.memory 2 16)) - (func $f9 (type $t0) (param $p0 i32) (param $p1 i32) (param $p2 i32) - (local $l3 i32) (local $l4 i32) (local $l5 i64) (local $l6 i64) (local $l7 i64) - local.get $p1 - i64.load offset=16 align=4 - local.set $l5 - local.get $p1 - local.get $p2 - i64.load offset=16 align=4 - i64.store offset=16 align=4 - local.get $p1 - i64.load offset=8 align=4 - local.set $l7 - local.get $p1 - local.get $p2 - i64.load offset=8 align=4 - i64.store offset=8 align=4 - local.get $p1 - i64.load align=4 - local.set $l6 - local.get $p1 - local.get $p2 - i64.load align=4 - i64.store align=4 - local.get $p0 - local.get $l5 - i64.store offset=16 align=4 - local.get $p0 - local.get $l7 - i64.store offset=8 align=4 - local.get $p0 - local.get $l6 - i64.store align=4 - local.get $p1 - i32.const 24 - i32.add - local.tee $l3 - i64.load align=4 - local.set $l5 - local.get $l3 - local.get $p2 - i32.const 24 - i32.add - i64.load align=4 - i64.store align=4 - local.get $p0 - i32.const 24 - i32.add - local.get $l5 - i64.store align=4 - local.get $p1 - i32.const 32 - i32.add - local.tee $l3 - i32.load - local.set $l4 - local.get $l3 - local.get $p2 - i32.const 32 - i32.add - i32.load - i32.store - local.get $p0 - i32.const 32 - i32.add - local.get $l4 - i32.store - block $B0 - local.get $p2 - i32.load8_u - i32.const 2 - i32.eq - if $I1 - local.get $l6 - i32.wrap_i64 - i32.const 255 - i32.and - i32.const 2 - i32.eq - br_if $B0 - end - local.get $p1 - i32.const 0 - i32.store8 offset=36 - end) - (func $f10 (type $t5) (param $p0 i32) (param $p1 i32) (result i32) - (local $l2 i32) (local $l3 i32) (local $l4 i32) - global.get $g0 - i32.const 240 - i32.sub - local.tee $l2 - global.set $g0 - local.get $l2 - i32.const 176 - i32.add - local.get $p1 - i32.const 24 - i32.add - i64.load align=1 - i64.store - local.get $l2 - i32.const 168 - i32.add - local.get $p1 - i32.const 16 - i32.add - i64.load align=1 - i64.store - local.get $l2 - i32.const 160 - i32.add - local.get $p1 - i32.const 8 - i32.add - i64.load align=1 - i64.store - local.get $l2 - local.get $p1 - i64.load align=1 - i64.store offset=152 - local.get $l2 - i32.const 16 - i32.add - local.get $p0 - i32.const 40 - i32.add - local.get $l2 - i32.const 152 - i32.add - call $f11 - block $B0 - block $B1 - block $B2 (result i32) - local.get $l2 - i32.load offset=16 - i32.const 1 - i32.ne - if $I3 - local.get $l2 - i32.const 72 - i32.add - local.get $l2 - i32.const 16 - i32.add - i32.const 4 - i32.or - i32.const 48 - call $f99 - local.get $l2 - i32.const 216 - i32.add - local.get $p0 - i32.const 16 - i32.add - i64.load - i64.store - local.get $l2 - i32.const 224 - i32.add - local.get $p0 - i32.const 24 - i32.add - i64.load - i64.store - local.get $l2 - i32.const 232 - i32.add - local.get $p0 - i32.const 32 - i32.add - i64.load - i64.store - local.get $l2 - local.get $p0 - i64.load offset=8 - i64.store offset=208 - block $B4 - block $B5 - local.get $p0 - i64.load - i64.const 1 - i64.ne - br_if $B5 - local.get $l2 - i32.const 176 - i32.add - local.tee $p0 - local.get $l2 - i32.const 232 - i32.add - i64.load - i64.store - local.get $l2 - i32.const 168 - i32.add - local.tee $l3 - local.get $l2 - i32.const 224 - i32.add - i64.load - i64.store - local.get $l2 - i32.const 160 - i32.add - local.tee $l4 - local.get $l2 - i32.const 216 - i32.add - i64.load - i64.store - local.get $l2 - local.get $l2 - i64.load offset=208 - i64.store offset=152 - local.get $l2 - i32.const 120 - i32.add - local.get $l2 - i32.const 152 - i32.add - local.get $p1 - call $f12 - local.get $p0 - local.get $l2 - i32.const 144 - i32.add - i64.load - i64.store - local.get $l3 - local.get $l2 - i32.const 136 - i32.add - i64.load - i64.store - local.get $l4 - local.get $l2 - i32.const 128 - i32.add - i64.load - i64.store - local.get $l2 - local.get $l2 - i64.load offset=120 - i64.store offset=152 - local.get $l2 - i32.const 16384 - i32.store offset=204 - local.get $l2 - i32.const 65796 - i32.store offset=200 - local.get $l2 - i32.const 152 - i32.add - local.get $l2 - i32.const 200 - i32.add - call $f13 - local.tee $p0 - i32.const 3 - i32.eq - br_if $B5 - local.get $p0 - i32.const 10 - i32.ne - br_if $B1 - local.get $l2 - local.get $l2 - i64.load offset=200 - i64.store offset=208 - local.get $l2 - i32.const 208 - i32.add - call $f14 - i32.const 255 - i32.and - local.tee $p0 - i32.const 2 - i32.eq - br_if $B0 - local.get $l2 - i32.const 8 - i32.add - local.get $l2 - i32.const 208 - i32.add - call $f15 - local.get $l2 - i32.load offset=8 - br_if $B0 - local.get $l2 - i32.load offset=12 - local.set $l3 - br $B4 - end - i32.const 2 - local.set $p0 - end - local.get $l2 - i32.const 152 - i32.add - local.get $l2 - i32.const 72 - i32.add - i32.const 48 - call $f99 - i32.const 12 - call $f16 - local.tee $p1 - i32.const 1 - i32.store8 offset=8 - local.get $p1 - local.get $p0 - i32.store8 offset=4 - local.get $p1 - local.get $l3 - i32.store - local.get $l2 - i32.const 152 - i32.add - local.get $p1 - call $f17 - i32.load - br $B2 - end - local.get $l2 - i32.const 24 - i32.add - i32.load - local.get $l2 - i32.const 28 - i32.add - i32.load - i32.const 2 - i32.shl - i32.add - i32.const 4 - i32.add - i32.load - end - local.get $l2 - i32.const 240 - i32.add - global.set $g0 - return - end - unreachable - end - unreachable) - (func $f11 (type $t0) (param $p0 i32) (param $p1 i32) (param $p2 i32) - (local $l3 i32) (local $l4 i32) (local $l5 i32) (local $l6 i32) (local $l7 i32) (local $l8 i32) - block $B0 (result i32) - local.get $p1 - i32.load - local.tee $l3 - if $I1 - local.get $p1 - i32.load offset=4 - br $B0 - end - i32.const 404 - call $f16 - local.tee $l3 - i32.const 0 - i32.store16 offset=50 - local.get $l3 - i32.const 0 - i32.store - local.get $p1 - i32.const 0 - i32.store offset=4 - local.get $p1 - local.get $l3 - i32.store - i32.const 0 - end - local.set $l5 - local.get $p0 - block $B2 (result i32) - block $B3 - loop $L4 - local.get $l3 - i32.const 52 - i32.add - local.set $l7 - local.get $l3 - i32.load16_u offset=50 - local.set $l6 - i32.const 0 - local.set $l4 - block $B5 - loop $L6 - local.get $l4 - local.get $l6 - i32.eq - br_if $B5 - local.get $p2 - local.get $l7 - call $f101 - local.set $l8 - local.get $l7 - i32.const 32 - i32.add - local.set $l7 - local.get $l4 - i32.const 1 - i32.add - local.set $l4 - block $B7 - i32.const 1 - i32.const -1 - local.get $l8 - i32.const -1 - i32.gt_s - select - i32.const 0 - local.get $l8 - select - br_table $B3 $L6 $B7 - end - end - local.get $l4 - i32.const -1 - i32.add - local.set $l6 - end - local.get $l5 - if $I8 - local.get $l5 - i32.const -1 - i32.add - local.set $l5 - local.get $l3 - local.get $l6 - i32.const 2 - i32.shl - i32.add - i32.const 404 - i32.add - i32.load - local.set $l3 - br $L4 - end - end - local.get $p0 - i32.const 0 - i32.store offset=4 - local.get $p0 - i32.const 16 - i32.add - local.get $p1 - i32.store - local.get $p0 - i32.const 12 - i32.add - local.get $l6 - i32.store - local.get $p0 - i32.const 8 - i32.add - local.get $l3 - i32.store - local.get $p0 - i32.const 20 - i32.add - local.get $p2 - i64.load align=1 - i64.store align=1 - local.get $p0 - i32.const 28 - i32.add - local.get $p2 - i32.const 8 - i32.add - i64.load align=1 - i64.store align=1 - local.get $p0 - i32.const 36 - i32.add - local.get $p2 - i32.const 16 - i32.add - i64.load align=1 - i64.store align=1 - local.get $p0 - i32.const 44 - i32.add - local.get $p2 - i32.const 24 - i32.add - i64.load align=1 - i64.store align=1 - i32.const 0 - br $B2 - end - local.get $p0 - local.get $l5 - i32.store offset=4 - local.get $p0 - i32.const 16 - i32.add - local.get $p1 - i32.store - local.get $p0 - i32.const 12 - i32.add - local.get $l4 - i32.const -1 - i32.add - i32.store - local.get $p0 - i32.const 8 - i32.add - local.get $l3 - i32.store - i32.const 1 - end - i32.store) - (func $f12 (type $t0) (param $p0 i32) (param $p1 i32) (param $p2 i32) - (local $l3 i32) (local $l4 i32) (local $l5 i32) (local $l6 i32) - global.get $g0 - i32.const 80 - i32.sub - local.tee $l3 - global.set $g0 - local.get $l3 - i32.const 26 - i32.add - i32.const 112 - i32.store8 - local.get $l3 - i32.const 24 - i32.add - i32.const 24941 - i32.store16 - local.get $l3 - i64.const 7526466502114635369 - i64.store offset=16 - local.get $l3 - local.get $p2 - i32.store offset=12 - local.get $l3 - local.get $p1 - i32.store offset=8 - local.get $l3 - i32.const 56 - i32.add - local.tee $l4 - i64.const 0 - i64.store - local.get $l3 - i32.const 48 - i32.add - local.tee $l5 - i64.const 0 - i64.store - local.get $l3 - i32.const 40 - i32.add - local.tee $l6 - i64.const 0 - i64.store - local.get $l3 - i64.const 0 - i64.store offset=32 - local.get $l3 - i64.const 16384 - i64.store offset=68 align=4 - local.get $l3 - i32.const 65796 - i32.store offset=64 - local.get $l3 - i32.const -64 - i32.sub - local.get $l3 - i32.const 16 - i32.add - i32.const 11 - call $f18 - local.get $l3 - i32.const -64 - i32.sub - local.get $p1 - i32.const 32 - call $f18 - local.get $p2 - local.get $l3 - i32.const -64 - i32.sub - call $f19 - local.get $l3 - i32.load offset=68 - local.get $l3 - i32.load offset=72 - local.tee $p1 - i32.lt_u - if $I0 - unreachable - end - local.get $l3 - i32.load offset=64 - local.get $p1 - local.get $l3 - i32.const 32 - i32.add - call $seal0.seal_hash_blake2_256 - local.get $p0 - i32.const 24 - i32.add - local.get $l4 - i64.load - i64.store align=1 - local.get $p0 - i32.const 16 - i32.add - local.get $l5 - i64.load - i64.store align=1 - local.get $p0 - i32.const 8 - i32.add - local.get $l6 - i64.load - i64.store align=1 - local.get $p0 - local.get $l3 - i64.load offset=32 - i64.store align=1 - local.get $l3 - i32.const 80 - i32.add - global.set $g0) - (func $f13 (type $t5) (param $p0 i32) (param $p1 i32) (result i32) - (local $l2 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l2 - global.set $g0 - local.get $l2 - local.get $p1 - i32.load offset=4 - i32.store offset=12 - local.get $p0 - local.get $p1 - i32.load - local.get $l2 - i32.const 12 - i32.add - call $seal0.seal_get_storage - local.set $p0 - local.get $p1 - local.get $l2 - i32.load offset=12 - call $f77 - i32.const 9 - local.set $p1 - block $B0 - block $B1 - block $B2 - block $B3 - block $B4 - block $B5 - block $B6 - block $B7 - block $B8 - block $B9 - local.get $p0 - br_table $B9 $B8 $B7 $B6 $B5 $B4 $B3 $B2 $B1 $B0 - end - i32.const 10 - local.set $p1 - br $B0 - end - i32.const 1 - local.set $p1 - br $B0 - end - i32.const 2 - local.set $p1 - br $B0 - end - i32.const 3 - local.set $p1 - br $B0 - end - i32.const 4 - local.set $p1 - br $B0 - end - i32.const 5 - local.set $p1 - br $B0 - end - i32.const 6 - local.set $p1 - br $B0 - end - i32.const 7 - local.set $p1 - br $B0 - end - i32.const 8 - local.set $p1 - end - local.get $l2 - i32.const 16 - i32.add - global.set $g0 - local.get $p1) - (func $f14 (type $t6) (param $p0 i32) (result i32) - (local $l1 i32) (local $l2 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l1 - global.set $g0 - local.get $l1 - i32.const 8 - i32.add - local.get $p0 - call $f23 - local.get $l1 - i32.load8_u offset=9 - local.set $p0 - local.get $l1 - i32.load8_u offset=8 - local.set $l2 - local.get $l1 - i32.const 16 - i32.add - global.set $g0 - i32.const 2 - i32.const 1 - i32.const 2 - local.get $p0 - i32.const 1 - i32.eq - select - i32.const 0 - local.get $p0 - select - local.get $l2 - i32.const 1 - i32.and - select) - (func $f15 (type $t2) (param $p0 i32) (param $p1 i32) - (local $l2 i32) (local $l3 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l2 - global.set $g0 - local.get $l2 - i32.const 0 - i32.store offset=12 - block $B0 - local.get $p1 - local.get $l2 - i32.const 12 - i32.add - i32.const 4 - call $f49 - i32.eqz - if $I1 - local.get $l2 - i32.load offset=12 - local.set $p1 - br $B0 - end - i32.const 1 - local.set $l3 - end - local.get $p0 - local.get $p1 - i32.store offset=4 - local.get $p0 - local.get $l3 - i32.store - local.get $l2 - i32.const 16 - i32.add - global.set $g0) - (func $f16 (type $t6) (param $p0 i32) (result i32) - (local $l1 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l1 - global.set $g0 - local.get $l1 - i32.const 8 - i32.add - local.get $p0 - i32.const 4 - call $f57 - local.get $l1 - i32.load offset=8 - local.tee $p0 - i32.eqz - if $I0 - unreachable - end - local.get $l1 - i32.const 16 - i32.add - global.set $g0 - local.get $p0) - (func $f17 (type $t5) (param $p0 i32) (param $p1 i32) (result i32) - (local $l2 i32) (local $l3 i32) (local $l4 i32) (local $l5 i32) (local $l6 i32) (local $l7 i32) (local $l8 i32) (local $l9 i32) (local $l10 i32) (local $l11 i32) (local $l12 i32) (local $l13 i32) (local $l14 i32) (local $l15 i32) (local $l16 i32) (local $l17 i32) (local $l18 i32) (local $l19 i32) (local $l20 i32) (local $l21 i32) (local $l22 i32) (local $l23 i32) (local $l24 i32) (local $l25 i32) (local $l26 i32) (local $l27 i32) (local $l28 i64) (local $l29 i64) (local $l30 i64) (local $l31 i64) - global.get $g0 - i32.const 192 - i32.sub - local.tee $l2 - global.set $g0 - local.get $l2 - i32.const 152 - i32.add - local.get $p0 - i32.const 8 - i32.add - i32.load - i32.store - local.get $l2 - local.get $p0 - i64.load align=4 - i64.store offset=144 - local.get $l2 - i32.const 104 - i32.add - local.tee $l4 - local.get $p0 - i32.const 40 - i32.add - i64.load align=1 - i64.store - local.get $l2 - i32.const 96 - i32.add - local.tee $l5 - local.get $p0 - i32.const 32 - i32.add - i64.load align=1 - i64.store - local.get $l2 - i32.const 88 - i32.add - local.tee $l11 - local.get $p0 - i32.const 24 - i32.add - i64.load align=1 - i64.store - local.get $l2 - local.get $p0 - i64.load offset=16 align=1 - i64.store offset=80 - block $B0 - block $B1 - block $B2 (result i32) - local.get $l2 - i32.load offset=148 - local.tee $l3 - i32.load16_u offset=50 - i32.const 11 - i32.ge_u - if $I3 - local.get $l2 - i32.const 160 - i32.add - local.get $l2 - i32.load offset=152 - call $f50 - local.get $l2 - i32.const 168 - i32.add - local.tee $l6 - i32.load - local.set $l9 - local.get $l2 - i32.load offset=164 - local.set $l12 - local.get $l2 - i32.load offset=160 - local.set $l4 - local.get $l2 - i32.load offset=144 - local.set $l8 - i32.const 404 - call $f16 - local.tee $l7 - i32.const 0 - i32.store16 offset=50 - local.get $l7 - i32.const 0 - i32.store - local.get $l6 - local.get $l3 - i32.const 52 - i32.add - local.tee $l13 - local.get $l4 - i32.const 5 - i32.shl - i32.add - local.tee $l5 - i32.const 8 - i32.add - i64.load align=1 - i64.store - local.get $l2 - i32.const 176 - i32.add - local.tee $l14 - local.get $l5 - i32.const 16 - i32.add - i64.load align=1 - i64.store - local.get $l2 - i32.const 184 - i32.add - local.tee $l15 - local.get $l5 - i32.const 24 - i32.add - i64.load align=1 - i64.store - local.get $l2 - local.get $l5 - i64.load align=1 - i64.store offset=160 - local.get $l3 - i32.const 4 - i32.add - local.tee $l10 - local.get $l4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $l11 - local.get $l7 - i32.const 52 - i32.add - local.get $l13 - local.get $l4 - i32.const 1 - i32.add - local.tee $l16 - i32.const 5 - i32.shl - i32.add - local.get $l3 - i32.load16_u offset=50 - local.get $l4 - i32.const -1 - i32.xor - i32.add - local.tee $l5 - i32.const 5 - i32.shl - call $f99 - local.get $l7 - i32.const 4 - i32.add - local.get $l10 - local.get $l16 - i32.const 2 - i32.shl - i32.add - local.get $l5 - i32.const 2 - i32.shl - call $f99 - local.get $l3 - local.get $l4 - i32.store16 offset=50 - local.get $l7 - local.get $l5 - i32.store16 offset=50 - local.get $l2 - i32.const 136 - i32.add - local.get $l15 - i64.load - i64.store - local.get $l2 - i32.const 128 - i32.add - local.get $l14 - i64.load - i64.store - local.get $l2 - i32.const 120 - i32.add - local.get $l6 - i64.load - i64.store - local.get $l2 - local.get $l2 - i64.load offset=160 - i64.store offset=112 - block $B4 - local.get $l12 - i32.const 1 - i32.eq - if $I5 - local.get $l2 - local.get $l7 - i32.store offset=4 - local.get $l2 - i32.const 0 - i32.store - br $B4 - end - local.get $l2 - local.get $l3 - i32.store offset=4 - local.get $l2 - local.get $l8 - i32.store - end - local.get $l2 - local.get $l9 - i32.store offset=8 - local.get $l2 - i32.const 184 - i32.add - local.get $l2 - i32.const 104 - i32.add - i64.load - i64.store - local.get $l2 - i32.const 176 - i32.add - local.get $l2 - i32.const 96 - i32.add - i64.load - i64.store - local.get $l2 - i32.const 168 - i32.add - local.get $l2 - i32.const 88 - i32.add - i64.load - i64.store - local.get $l2 - local.get $l2 - i64.load offset=80 - i64.store offset=160 - local.get $l2 - local.get $l2 - i32.const 160 - i32.add - local.get $p1 - call $f51 - local.set $l16 - local.get $l2 - i32.const 40 - i32.add - local.get $l2 - i32.const 120 - i32.add - i64.load - i64.store - local.get $l2 - i32.const 48 - i32.add - local.get $l2 - i32.const 128 - i32.add - i64.load - i64.store - local.get $l2 - i32.const 56 - i32.add - local.get $l2 - i32.const 136 - i32.add - i64.load - i64.store - local.get $l2 - local.get $l2 - i64.load offset=112 - i64.store offset=32 - i32.const 1 - br $B2 - end - local.get $l2 - i32.const 184 - i32.add - local.get $l4 - i64.load - i64.store - local.get $l2 - i32.const 176 - i32.add - local.get $l5 - i64.load - i64.store - local.get $l2 - i32.const 168 - i32.add - local.get $l11 - i64.load - i64.store - local.get $l2 - local.get $l2 - i64.load offset=80 - i64.store offset=160 - local.get $l2 - i32.const 144 - i32.add - local.get $l2 - i32.const 160 - i32.add - local.get $p1 - call $f51 - local.set $l16 - local.get $l2 - i32.load offset=152 - local.set $l11 - local.get $l2 - i32.load offset=144 - local.set $l8 - i32.const 0 - end - i32.eqz - br_if $B1 - local.get $l2 - i32.const 24 - i32.add - local.tee $l19 - local.get $l2 - i32.const 56 - i32.add - local.tee $l20 - i64.load - i64.store - local.get $l2 - i32.const 16 - i32.add - local.tee $l21 - local.get $l2 - i32.const 48 - i32.add - local.tee $l22 - i64.load - i64.store - local.get $l2 - i32.const 8 - i32.add - local.tee $l23 - local.get $l2 - i32.const 40 - i32.add - local.tee $l24 - i64.load - i64.store - local.get $l2 - local.get $l2 - i64.load offset=32 - i64.store - i32.const 0 - local.set $l9 - loop $L6 - block $B7 - block $B8 - block $B9 - local.get $l3 - i32.load - local.tee $l5 - if $I10 - local.get $l2 - local.get $l3 - i32.load16_u offset=48 - local.tee $l6 - i32.store offset=72 - local.get $l2 - local.get $l5 - i32.store offset=68 - local.get $l2 - local.get $l8 - i32.const 1 - i32.add - local.tee $l4 - i32.store offset=64 - local.get $l2 - i32.const 104 - i32.add - local.tee $l12 - local.get $l19 - i64.load - i64.store - local.get $l2 - i32.const 96 - i32.add - local.tee $l13 - local.get $l21 - i64.load - i64.store - local.get $l2 - i32.const 88 - i32.add - local.tee $l14 - local.get $l23 - i64.load - i64.store - local.get $l2 - local.get $l2 - i64.load - i64.store offset=80 - local.get $l8 - local.get $l9 - i32.ne - br_if $B8 - local.get $l5 - i32.load16_u offset=50 - i32.const 11 - i32.lt_u - br_if $B9 - local.get $l2 - i32.const 160 - i32.add - local.get $l6 - call $f50 - local.get $l2 - i32.load offset=168 - local.set $l25 - local.get $l2 - i32.load offset=164 - local.set $l26 - local.get $l2 - i32.load offset=160 - local.set $l3 - i32.const 452 - call $f16 - local.tee $p1 - i32.const 0 - i32.store16 offset=50 - local.get $p1 - i32.const 0 - i32.store - local.get $l2 - i32.const 168 - i32.add - local.tee $l8 - local.get $l5 - i32.const 52 - i32.add - local.tee $l10 - local.get $l3 - i32.const 5 - i32.shl - i32.add - local.tee $l6 - i32.const 8 - i32.add - i64.load align=1 - i64.store - local.get $l2 - i32.const 176 - i32.add - local.tee $l9 - local.get $l6 - i32.const 16 - i32.add - i64.load align=1 - i64.store - local.get $l2 - i32.const 184 - i32.add - local.tee $l15 - local.get $l6 - i32.const 24 - i32.add - i64.load align=1 - i64.store - local.get $l2 - local.get $l6 - i64.load align=1 - i64.store offset=160 - local.get $l5 - i32.const 4 - i32.add - local.tee $l17 - local.get $l3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $l6 - local.get $p1 - i32.const 52 - i32.add - local.get $l10 - local.get $l3 - i32.const 1 - i32.add - local.tee $l18 - i32.const 5 - i32.shl - i32.add - local.get $l5 - i32.load16_u offset=50 - local.tee $l27 - local.get $l3 - i32.const -1 - i32.xor - i32.add - local.tee $l10 - i32.const 5 - i32.shl - call $f99 - local.get $p1 - i32.const 4 - i32.add - local.get $l17 - local.get $l18 - i32.const 2 - i32.shl - local.tee $l18 - i32.add - local.get $l10 - i32.const 2 - i32.shl - call $f99 - local.get $l5 - local.get $l3 - i32.store16 offset=50 - local.get $p1 - local.get $l10 - i32.store16 offset=50 - local.get $p1 - i32.const 404 - i32.add - local.get $l5 - local.get $l18 - i32.add - i32.const 404 - i32.add - local.get $l27 - local.get $l3 - i32.sub - i32.const 2 - i32.shl - call $f99 - local.get $l2 - local.get $p1 - i32.store offset=148 - local.get $l2 - local.get $l4 - i32.store offset=144 - local.get $l2 - i32.const 0 - i32.store8 offset=120 - local.get $l2 - local.get $l10 - i32.store offset=116 - local.get $l2 - i32.const 0 - i32.store offset=112 - local.get $l2 - i32.const 144 - i32.add - local.get $l2 - i32.const 112 - i32.add - call $f52 - local.get $l2 - i32.const 136 - i32.add - local.tee $l3 - local.get $l15 - i64.load - i64.store - local.get $l2 - i32.const 128 - i32.add - local.tee $l10 - local.get $l9 - i64.load - i64.store - local.get $l2 - i32.const 120 - i32.add - local.tee $l17 - local.get $l8 - i64.load - i64.store - local.get $l2 - local.get $l2 - i64.load offset=160 - i64.store offset=112 - block $B11 - local.get $l26 - i32.const 1 - i32.eq - if $I12 - local.get $l2 - local.get $l25 - i32.store offset=152 - local.get $l2 - local.get $p1 - i32.store offset=148 - br $B11 - end - local.get $l2 - local.get $l25 - i32.store offset=152 - local.get $l2 - local.get $l5 - i32.store offset=148 - end - local.get $l2 - local.get $l4 - i32.store offset=144 - local.get $l15 - local.get $l12 - i64.load - i64.store - local.get $l9 - local.get $l13 - i64.load - i64.store - local.get $l8 - local.get $l14 - i64.load - i64.store - local.get $l2 - local.get $l2 - i64.load offset=80 - i64.store offset=160 - local.get $l2 - i32.const 144 - i32.add - local.get $l2 - i32.const 160 - i32.add - local.get $l11 - local.get $l7 - call $f53 - local.get $l20 - local.get $l3 - i64.load - i64.store - local.get $l22 - local.get $l10 - i64.load - i64.store - local.get $l24 - local.get $l17 - i64.load - i64.store - local.get $l2 - local.get $l2 - i64.load offset=112 - i64.store offset=32 - i32.const 1 - local.set $l3 - local.get $l4 - local.set $l9 - br $B7 - end - local.get $l2 - i32.const 104 - i32.add - local.get $l2 - i32.const 24 - i32.add - i64.load - local.tee $l28 - i64.store - local.get $l2 - i32.const 96 - i32.add - local.get $l2 - i32.const 16 - i32.add - i64.load - local.tee $l29 - i64.store - local.get $l2 - i32.const 88 - i32.add - local.get $l2 - i32.const 8 - i32.add - i64.load - local.tee $l30 - i64.store - local.get $l2 - local.get $l2 - i64.load - local.tee $l31 - i64.store offset=80 - local.get $l2 - i32.const 136 - i32.add - local.tee $l3 - local.get $l28 - i64.store - local.get $l2 - i32.const 128 - i32.add - local.tee $l5 - local.get $l29 - i64.store - local.get $l2 - i32.const 120 - i32.add - local.tee $l8 - local.get $l30 - i64.store - local.get $l2 - local.get $l31 - i64.store offset=112 - local.get $p0 - i32.load offset=12 - local.tee $p1 - i32.load - local.tee $l4 - i32.eqz - br_if $B8 - i32.const 452 - call $f16 - local.tee $p0 - i32.const 0 - i32.store16 offset=50 - local.get $p0 - i32.const 0 - i32.store - local.get $p0 - local.get $p1 - i32.const 0 - local.get $l4 - select - local.tee $l4 - i32.load - i32.store offset=404 - local.get $l4 - local.get $p0 - i32.store - local.get $l4 - local.get $l4 - i32.load offset=4 - local.tee $l4 - i32.const 1 - i32.add - i32.store offset=4 - local.get $p0 - i32.load offset=404 - local.tee $l6 - i32.const 0 - i32.store16 offset=48 - local.get $l6 - local.get $p0 - i32.store - local.get $l2 - i32.const 184 - i32.add - local.get $l3 - i64.load - i64.store - local.get $l2 - i32.const 176 - i32.add - local.get $l5 - i64.load - i64.store - local.get $l2 - i32.const 168 - i32.add - local.get $l8 - i64.load - i64.store - local.get $l2 - local.get $l2 - i64.load offset=112 - i64.store offset=160 - local.get $l4 - local.get $l9 - i32.ne - br_if $B8 - local.get $p0 - i32.load16_u offset=50 - local.tee $l4 - i32.const 10 - i32.gt_u - br_if $B8 - local.get $p0 - local.get $l4 - i32.const 1 - i32.add - local.tee $l5 - i32.store16 offset=50 - local.get $p0 - local.get $l4 - i32.const 5 - i32.shl - i32.add - local.tee $l3 - i32.const 52 - i32.add - local.get $l2 - i64.load offset=160 - i64.store align=1 - local.get $l3 - i32.const 60 - i32.add - local.get $l2 - i32.const 168 - i32.add - i64.load - i64.store align=1 - local.get $l3 - i32.const 68 - i32.add - local.get $l2 - i32.const 176 - i32.add - i64.load - i64.store align=1 - local.get $l3 - i32.const 76 - i32.add - local.get $l2 - i32.const 184 - i32.add - i64.load - i64.store align=1 - local.get $p0 - local.get $l4 - i32.const 2 - i32.shl - i32.add - i32.const 4 - i32.add - local.get $l11 - i32.store - local.get $p0 - local.get $l5 - i32.const 2 - i32.shl - i32.add - i32.const 404 - i32.add - local.get $l7 - i32.store - local.get $l7 - local.get $p0 - i32.store - local.get $l7 - local.get $l5 - i32.store16 offset=48 - local.get $p1 - local.get $p1 - i32.load offset=8 - i32.const 1 - i32.add - i32.store offset=8 - br $B0 - end - local.get $l2 - i32.const 184 - i32.add - local.get $l12 - i64.load - i64.store - local.get $l2 - i32.const 176 - i32.add - local.get $l13 - i64.load - i64.store - local.get $l2 - i32.const 168 - i32.add - local.get $l14 - i64.load - i64.store - local.get $l2 - local.get $l2 - i64.load offset=80 - i64.store offset=160 - local.get $l2 - i32.const -64 - i32.sub - local.get $l2 - i32.const 160 - i32.add - local.get $l11 - local.get $l7 - call $f53 - i32.const 0 - local.set $l3 - br $B7 - end - unreachable - end - local.get $l3 - i32.eqz - br_if $B1 - local.get $l19 - local.get $l20 - i64.load - i64.store - local.get $l21 - local.get $l22 - i64.load - i64.store - local.get $l23 - local.get $l24 - i64.load - i64.store - local.get $l2 - local.get $l2 - i64.load offset=32 - i64.store - local.get $p1 - local.set $l7 - local.get $l6 - local.set $l11 - local.get $l5 - local.set $l3 - local.get $l4 - local.set $l8 - br $L6 - end - unreachable - end - local.get $p0 - i32.load offset=12 - local.tee $p0 - local.get $p0 - i32.load offset=8 - i32.const 1 - i32.add - i32.store offset=8 - end - local.get $l2 - i32.const 192 - i32.add - global.set $g0 - local.get $l16) - (func $f18 (type $t0) (param $p0 i32) (param $p1 i32) (param $p2 i32) - (local $l3 i32) (local $l4 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l3 - global.set $g0 - local.get $l3 - i32.const 8 - i32.add - local.get $p0 - i32.load offset=8 - local.tee $l4 - local.get $p2 - local.get $l4 - i32.add - local.get $p0 - i32.load - local.get $p0 - i32.load offset=4 - call $f90 - local.get $p2 - local.get $l3 - i32.load offset=12 - i32.ne - if $I0 - unreachable - end - local.get $l3 - i32.load offset=8 - local.get $p1 - local.get $p2 - call $f99 - local.get $p0 - local.get $p0 - i32.load offset=8 - local.get $p2 - i32.add - i32.store offset=8 - local.get $l3 - i32.const 16 - i32.add - global.set $g0) - (func $f19 (type $t2) (param $p0 i32) (param $p1 i32) - local.get $p0 - local.get $p1 - call $f48) - (func $f20 (type $t5) (param $p0 i32) (param $p1 i32) (result i32) - (local $l2 i32) (local $l3 i32) (local $l4 i32) (local $l5 i32) (local $l6 i32) (local $l7 i32) (local $l8 i32) (local $l9 i32) (local $l10 i64) (local $l11 i64) (local $l12 i64) (local $l13 i64) - global.get $g0 - i32.const 272 - i32.sub - local.tee $l2 - global.set $g0 - local.get $l2 - i32.const 32 - i32.add - local.get $p0 - i32.const 40 - i32.add - local.get $p1 - call $f21 - block $B0 - block $B1 (result i32) - local.get $l2 - i32.load offset=32 - i32.const 1 - i32.ne - if $I2 - local.get $l2 - i32.const 72 - i32.add - local.get $l2 - i32.const 52 - i32.add - i32.load - i32.store - local.get $l2 - i32.const -64 - i32.sub - local.get $l2 - i32.const 44 - i32.add - i64.load align=4 - i64.store - local.get $l2 - local.get $l2 - i64.load offset=36 align=4 - i64.store offset=56 - local.get $p0 - i64.load - local.set $l10 - local.get $l2 - i32.const 256 - i32.add - local.tee $l3 - local.get $p0 - i32.const 32 - i32.add - i64.load - i64.store - local.get $l2 - i32.const 248 - i32.add - local.tee $l5 - local.get $p0 - i32.const 24 - i32.add - i64.load - i64.store - local.get $l2 - i32.const 240 - i32.add - local.tee $l6 - local.get $p0 - i32.const 16 - i32.add - i64.load - i64.store - local.get $l2 - local.get $p0 - i64.load offset=8 - i64.store offset=232 - block $B3 - local.get $l10 - i64.const 1 - i64.ne - if $I4 - i32.const 3 - local.set $p1 - br $B3 - end - local.get $l2 - i32.const 136 - i32.add - local.tee $p0 - local.get $l3 - i64.load - local.tee $l10 - i64.store - local.get $l2 - i32.const 128 - i32.add - local.tee $l4 - local.get $l5 - i64.load - local.tee $l11 - i64.store - local.get $l2 - i32.const 120 - i32.add - local.tee $l7 - local.get $l6 - i64.load - local.tee $l12 - i64.store - local.get $l2 - local.get $l2 - i64.load offset=232 - local.tee $l13 - i64.store offset=112 - local.get $l3 - local.get $l10 - i64.store - local.get $l5 - local.get $l11 - i64.store - local.get $l6 - local.get $l12 - i64.store - local.get $l2 - local.get $l13 - i64.store offset=232 - local.get $l2 - i32.const 80 - i32.add - local.get $l2 - i32.const 232 - i32.add - local.get $p1 - i64.extend_i32_u - call $f22 - local.get $p0 - local.get $l2 - i32.const 104 - i32.add - i64.load - i64.store - local.get $l4 - local.get $l2 - i32.const 96 - i32.add - i64.load - i64.store - local.get $l7 - local.get $l2 - i32.const 88 - i32.add - i64.load - i64.store - local.get $l2 - local.get $l2 - i64.load offset=80 - i64.store offset=112 - local.get $l2 - i32.const 16384 - i32.store offset=148 - local.get $l2 - i32.const 65796 - i32.store offset=144 - block $B5 - local.get $l2 - i32.const 112 - i32.add - local.get $l2 - i32.const 144 - i32.add - call $f13 - local.tee $p0 - i32.const 3 - i32.ne - if $I6 - local.get $p0 - i32.const 10 - i32.ne - br_if $B0 - local.get $l2 - local.get $l2 - i64.load offset=144 - i64.store offset=216 - local.get $l2 - i32.const 24 - i32.add - local.get $l2 - i32.const 216 - i32.add - call $f23 - i32.const 1 - local.set $p0 - block $B7 - block $B8 - local.get $l2 - i32.load8_u offset=24 - i32.const 1 - i32.and - br_if $B8 - i32.const 2 - local.set $p1 - block $B9 - block $B10 - local.get $l2 - i32.load8_u offset=25 - br_table $B10 $B9 $B7 - end - local.get $l2 - i32.const 16 - i32.add - local.get $l2 - i32.const 216 - i32.add - call $f15 - local.get $l2 - i32.load offset=16 - br_if $B8 - local.get $l2 - i32.load offset=20 - local.set $l5 - local.get $l2 - i32.const 8 - i32.add - local.get $l2 - i32.const 216 - i32.add - call $f15 - local.get $l2 - i32.load offset=8 - br_if $B8 - local.get $l2 - i32.load offset=12 - local.set $l6 - local.get $l2 - i32.const 214 - i32.add - local.get $l2 - i32.const 230 - i32.add - i32.load8_u - i32.store8 - local.get $l2 - i32.const 192 - i32.add - local.get $l2 - i32.const 240 - i32.add - i64.load align=4 - i64.store - local.get $l2 - i32.const 200 - i32.add - local.get $l2 - i32.const 248 - i32.add - i64.load align=4 - i64.store - local.get $l2 - local.get $l2 - i32.load16_u offset=228 align=1 - i32.store16 offset=212 - local.get $l2 - local.get $l2 - i64.load offset=232 align=4 - i64.store offset=184 - i32.const 0 - local.set $p0 - i32.const 0 - local.set $p1 - br $B7 - end - local.get $l2 - i32.const 232 - i32.add - local.get $l2 - i32.const 216 - i32.add - call $f24 - i32.const 1 - local.set $p1 - local.get $l2 - i32.load8_u offset=232 - i32.const 1 - i32.ne - if $I11 - local.get $l2 - i32.const 214 - i32.add - local.get $l2 - i32.load8_u offset=235 - i32.store8 - local.get $l2 - i32.const 192 - i32.add - local.get $l2 - i32.const 252 - i32.add - i64.load align=4 - i64.store - local.get $l2 - i32.const 197 - i32.add - local.get $l2 - i32.const 257 - i32.add - i64.load align=1 - i64.store align=1 - local.get $l2 - i32.const 207 - i32.add - local.get $l2 - i32.const 230 - i32.add - i32.load8_u - i32.store8 - local.get $l2 - local.get $l2 - i32.load16_u offset=233 align=1 - i32.store16 offset=212 - local.get $l2 - local.get $l2 - i32.const 244 - i32.add - i64.load align=4 - i64.store offset=184 - local.get $l2 - local.get $l2 - i32.load16_u offset=228 align=1 - i32.store16 offset=205 align=1 - local.get $l2 - i32.const 240 - i32.add - i32.load - local.set $l6 - local.get $l2 - i32.load offset=236 - local.set $l5 - i32.const 0 - local.set $p0 - br $B7 - end - end - i32.const 2 - local.set $p1 - end - local.get $l2 - i32.const 182 - i32.add - local.get $l2 - i32.const 214 - i32.add - i32.load8_u - i32.store8 - local.get $l2 - i32.const 160 - i32.add - local.tee $l3 - local.get $l2 - i32.const 192 - i32.add - i64.load - i64.store - local.get $l2 - i32.const 168 - i32.add - local.tee $l4 - local.get $l2 - i32.const 200 - i32.add - i64.load - i64.store - local.get $l2 - local.get $l2 - i32.load16_u offset=212 - i32.store16 offset=180 - local.get $l2 - local.get $l2 - i64.load offset=184 - i64.store offset=152 - local.get $p0 - i32.eqz - if $I12 - local.get $l2 - i32.const 230 - i32.add - local.get $l2 - i32.const 182 - i32.add - i32.load8_u - i32.store8 - local.get $l2 - i32.const 240 - i32.add - local.get $l3 - i64.load - i64.store - local.get $l2 - i32.const 248 - i32.add - local.get $l4 - i64.load - i64.store - local.get $l2 - local.get $l2 - i32.load16_u offset=180 - i32.store16 offset=228 - local.get $l2 - local.get $l2 - i64.load offset=152 - i64.store offset=232 - br $B5 - end - unreachable - end - i32.const 2 - local.set $p1 - end - local.get $l2 - i32.const 218 - i32.add - local.tee $l4 - local.get $l2 - i32.const 230 - i32.add - local.tee $l7 - i32.load8_u - i32.store8 - local.get $l2 - i32.const 192 - i32.add - local.tee $l8 - local.get $l2 - i32.const 240 - i32.add - local.tee $p0 - i64.load - i64.store - local.get $l2 - i32.const 200 - i32.add - local.tee $l9 - local.get $l2 - i32.const 248 - i32.add - local.tee $l3 - i64.load - i64.store - local.get $l2 - local.get $l2 - i32.load16_u offset=228 - i32.store16 offset=216 - local.get $l2 - local.get $l2 - i64.load offset=232 - i64.store offset=184 - local.get $p1 - i32.const 2 - i32.ne - if $I13 - local.get $l2 - i32.const 146 - i32.add - local.get $l4 - i32.load8_u - i32.store8 - local.get $p0 - local.get $l8 - i64.load - i64.store - local.get $l3 - local.get $l9 - i64.load - i64.store - local.get $l2 - local.get $l2 - i32.load16_u offset=216 - i32.store16 offset=144 - local.get $l2 - local.get $l2 - i64.load offset=184 - i64.store offset=232 - end - local.get $l7 - local.get $l2 - i32.const 146 - i32.add - i32.load8_u - i32.store8 - local.get $l2 - i32.const 160 - i32.add - local.get $p0 - i64.load - i64.store - local.get $l2 - i32.const 168 - i32.add - local.get $l3 - i64.load - i64.store - local.get $l2 - local.get $l2 - i32.load16_u offset=144 - i32.store16 offset=228 - local.get $l2 - local.get $l2 - i64.load offset=232 - i64.store offset=152 - end - local.get $l2 - i32.const 186 - i32.add - local.tee $l4 - local.get $l2 - i32.const 80 - i32.add - local.get $l2 - i32.const 228 - i32.add - local.get $p1 - i32.const 3 - i32.eq - local.tee $l3 - select - local.tee $l7 - i32.const 2 - i32.add - i32.load8_u - i32.store8 - local.get $l2 - i32.const 120 - i32.add - local.tee $l8 - local.get $l2 - i32.const 232 - i32.add - local.get $l2 - i32.const 152 - i32.add - local.get $l3 - select - local.tee $p0 - i32.const 8 - i32.add - i64.load align=4 - i64.store - local.get $l2 - i32.const 128 - i32.add - local.tee $l9 - local.get $p0 - i32.const 16 - i32.add - i64.load align=4 - i64.store - local.get $l2 - local.get $l7 - i32.load16_u align=1 - i32.store16 offset=184 - local.get $l2 - local.get $p0 - i64.load align=4 - i64.store offset=112 - local.get $l2 - i32.const 248 - i32.add - local.get $l2 - i32.const 72 - i32.add - i32.load - i32.store - local.get $l2 - i32.const 240 - i32.add - local.get $l2 - i32.const -64 - i32.sub - i64.load - i64.store - local.get $l2 - local.get $l2 - i64.load offset=56 - i64.store offset=232 - i32.const 40 - call $f16 - local.tee $p0 - i32.const 2 - local.get $p1 - local.get $l3 - select - i32.store8 - local.get $p0 - local.get $l6 - i32.store offset=8 - local.get $p0 - local.get $l5 - i32.store offset=4 - local.get $p0 - i32.const 1 - i32.store8 offset=36 - local.get $p0 - local.get $l2 - i32.load16_u offset=184 - i32.store16 offset=1 align=1 - local.get $p0 - i32.const 3 - i32.add - local.get $l4 - i32.load8_u - i32.store8 - local.get $p0 - local.get $l2 - i64.load offset=112 - i64.store offset=12 align=4 - local.get $p0 - i32.const 20 - i32.add - local.get $l8 - i64.load - i64.store align=4 - local.get $p0 - i32.const 28 - i32.add - local.get $l9 - i64.load - i64.store align=4 - local.get $l2 - i32.const 232 - i32.add - local.get $p0 - call $f25 - i32.load - br $B1 - end - local.get $l2 - i32.const 40 - i32.add - i32.load - local.get $l2 - i32.const 44 - i32.add - i32.load - i32.const 2 - i32.shl - i32.add - i32.const 48 - i32.add - i32.load - end - local.get $l2 - i32.const 272 - i32.add - global.set $g0 - return - end - unreachable) - (func $f21 (type $t0) (param $p0 i32) (param $p1 i32) (param $p2 i32) - (local $l3 i32) (local $l4 i32) (local $l5 i32) (local $l6 i32) (local $l7 i32) (local $l8 i32) - block $B0 (result i32) - local.get $p1 - i32.load - local.tee $l3 - if $I1 - local.get $p1 - i32.load offset=4 - br $B0 - end - i32.const 96 - call $f16 - local.tee $l3 - i32.const 0 - i32.store16 offset=94 - local.get $l3 - i32.const 0 - i32.store - local.get $p1 - i32.const 0 - i32.store offset=4 - local.get $p1 - local.get $l3 - i32.store - i32.const 0 - end - local.set $l6 - local.get $p0 - block $B2 (result i32) - block $B3 - loop $L4 - local.get $l3 - i32.const 4 - i32.add - local.set $l4 - local.get $l3 - i32.load16_u offset=94 - local.set $l7 - i32.const 0 - local.set $l5 - block $B5 - loop $L6 - local.get $l5 - local.get $l7 - i32.eq - br_if $B5 - local.get $l4 - i32.load - local.set $l8 - local.get $l4 - i32.const 4 - i32.add - local.set $l4 - local.get $l5 - i32.const 1 - i32.add - local.set $l5 - block $B7 - i32.const -1 - local.get $p2 - local.get $l8 - i32.ne - local.get $l8 - local.get $p2 - i32.gt_u - select - br_table $B3 $L6 $B7 - end - end - local.get $l5 - i32.const -1 - i32.add - local.set $l7 - end - local.get $l6 - if $I8 - local.get $l6 - i32.const -1 - i32.add - local.set $l6 - local.get $l3 - local.get $l7 - i32.const 2 - i32.shl - i32.add - i32.const 96 - i32.add - i32.load - local.set $l3 - br $L4 - end - end - local.get $p0 - local.get $p2 - i32.store offset=4 - local.get $p0 - i32.const 16 - i32.add - local.get $l7 - i32.store - local.get $p0 - i32.const 12 - i32.add - local.get $l3 - i32.store - local.get $p0 - i32.const 8 - i32.add - i32.const 0 - i32.store - local.get $p0 - i32.const 20 - i32.add - local.set $l4 - i32.const 0 - br $B2 - end - local.get $p0 - local.get $l6 - i32.store offset=4 - local.get $p0 - i32.const 12 - i32.add - local.get $l5 - i32.const -1 - i32.add - i32.store - local.get $p0 - i32.const 8 - i32.add - local.get $l3 - i32.store - local.get $p0 - i32.const 16 - i32.add - local.set $l4 - i32.const 1 - end - i32.store - local.get $l4 - local.get $p1 - i32.store) - (func $f22 (type $t7) (param $p0 i32) (param $p1 i32) (param $p2 i64) - (local $l3 i64) (local $l4 i64) - local.get $p1 - local.get $p1 - i64.load - local.tee $l3 - local.get $p2 - i64.add - local.tee $p2 - i64.store - local.get $p0 - local.get $p2 - i64.store - local.get $p1 - local.get $p1 - i64.load offset=8 - local.tee $l4 - local.get $p2 - local.get $l3 - i64.lt_u - i64.extend_i32_u - i64.add - local.tee $p2 - i64.store offset=8 - local.get $p0 - i32.const 8 - i32.add - local.get $p2 - i64.store - local.get $p1 - local.get $p1 - i64.load offset=16 - local.tee $l3 - local.get $p2 - local.get $l4 - i64.lt_u - i64.extend_i32_u - i64.add - local.tee $p2 - i64.store offset=16 - local.get $p0 - i32.const 16 - i32.add - local.get $p2 - i64.store - local.get $p1 - local.get $p1 - i64.load offset=24 - local.get $p2 - local.get $l3 - i64.lt_u - i64.extend_i32_u - i64.add - local.tee $p2 - i64.store offset=24 - local.get $p0 - i32.const 24 - i32.add - local.get $p2 - i64.store) - (func $f23 (type $t2) (param $p0 i32) (param $p1 i32) - (local $l2 i32) (local $l3 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l2 - global.set $g0 - local.get $l2 - i32.const 0 - i32.store8 offset=15 - block $B0 - local.get $p1 - local.get $l2 - i32.const 15 - i32.add - i32.const 1 - call $f49 - i32.eqz - if $I1 - local.get $l2 - i32.load8_u offset=15 - local.set $p1 - br $B0 - end - i32.const 1 - local.set $l3 - end - local.get $p0 - local.get $p1 - i32.store8 offset=1 - local.get $p0 - local.get $l3 - i32.store8 - local.get $l2 - i32.const 16 - i32.add - global.set $g0) - (func $f24 (type $t2) (param $p0 i32) (param $p1 i32) - (local $l2 i32) (local $l3 i64) (local $l4 i64) (local $l5 i64) (local $l6 i64) - global.get $g0 - i32.const 80 - i32.sub - local.tee $l2 - global.set $g0 - local.get $l2 - i32.const 40 - i32.add - local.get $p1 - call $f71 - i32.const 1 - local.set $p1 - local.get $p0 - local.get $l2 - i32.load8_u offset=40 - i32.const 1 - i32.ne - if $I0 (result i32) - local.get $l2 - i32.const 32 - i32.add - local.get $l2 - i32.const 65 - i32.add - i64.load align=1 - local.tee $l3 - i64.store - local.get $l2 - i32.const 24 - i32.add - local.get $l2 - i32.const 57 - i32.add - i64.load align=1 - local.tee $l4 - i64.store - local.get $l2 - i32.const 16 - i32.add - local.get $l2 - i32.const 49 - i32.add - i64.load align=1 - local.tee $l5 - i64.store - local.get $l2 - local.get $l2 - i64.load offset=41 align=1 - local.tee $l6 - i64.store offset=8 - local.get $p0 - i32.const 25 - i32.add - local.get $l3 - i64.store align=1 - local.get $p0 - i32.const 17 - i32.add - local.get $l4 - i64.store align=1 - local.get $p0 - i32.const 9 - i32.add - local.get $l5 - i64.store align=1 - local.get $p0 - local.get $l6 - i64.store offset=1 align=1 - i32.const 0 - else - i32.const 1 - end - i32.store8 - local.get $l2 - i32.const 80 - i32.add - global.set $g0) - (func $f25 (type $t5) (param $p0 i32) (param $p1 i32) (result i32) - (local $l2 i32) (local $l3 i32) (local $l4 i32) (local $l5 i32) (local $l6 i32) (local $l7 i32) (local $l8 i32) (local $l9 i32) (local $l10 i32) (local $l11 i32) (local $l12 i32) (local $l13 i32) (local $l14 i32) (local $l15 i32) (local $l16 i32) (local $l17 i32) (local $l18 i32) - global.get $g0 - i32.const 48 - i32.sub - local.tee $l2 - global.set $g0 - local.get $p0 - i32.load - local.set $l6 - local.get $l2 - i32.const 16 - i32.add - local.get $p0 - i32.const 12 - i32.add - i32.load - i32.store - local.get $l2 - local.get $p0 - i64.load offset=4 align=4 - i64.store offset=8 - block $B0 - block $B1 - block $B2 - local.get $l2 - i32.load offset=12 - local.tee $l3 - i32.load16_u offset=94 - i32.const 11 - i32.ge_u - if $I3 - local.get $l2 - i32.const 32 - i32.add - local.get $l2 - i32.load offset=16 - call $f50 - local.get $l2 - i32.const 40 - i32.add - i32.load - local.set $l13 - local.get $l2 - i32.load offset=36 - local.set $l14 - local.get $l2 - i32.load offset=32 - local.set $l4 - local.get $l2 - i32.load offset=8 - local.set $l9 - i32.const 96 - call $f16 - local.tee $l5 - i32.const 0 - i32.store16 offset=94 - local.get $l5 - i32.const 0 - i32.store - local.get $l3 - i32.const 48 - i32.add - local.tee $l8 - local.get $l4 - i32.const 2 - i32.shl - local.tee $l10 - i32.add - i32.load - local.set $l11 - local.get $l3 - i32.const 4 - i32.add - local.tee $l7 - local.get $l10 - i32.add - i32.load - local.set $l12 - local.get $l5 - i32.const 4 - i32.add - local.get $l7 - local.get $l10 - i32.const 4 - i32.add - local.tee $l10 - i32.add - local.get $l3 - i32.load16_u offset=94 - local.get $l4 - i32.const -1 - i32.xor - i32.add - local.tee $l7 - i32.const 2 - i32.shl - local.tee $l15 - call $f99 - local.get $l5 - i32.const 48 - i32.add - local.get $l8 - local.get $l10 - i32.add - local.get $l15 - call $f99 - local.get $l3 - local.get $l4 - i32.store16 offset=94 - local.get $l5 - local.get $l7 - i32.store16 offset=94 - block $B4 - local.get $l14 - i32.const 1 - i32.eq - if $I5 - local.get $l2 - local.get $l5 - i32.store offset=36 - local.get $l2 - i32.const 0 - i32.store offset=32 - br $B4 - end - local.get $l2 - local.get $l3 - i32.store offset=36 - local.get $l2 - local.get $l9 - i32.store offset=32 - end - local.get $l2 - local.get $l13 - i32.store offset=40 - local.get $l2 - i32.const 32 - i32.add - local.get $l6 - local.get $p1 - call $f54 - local.set $l13 - i32.const 0 - local.set $l4 - block $B6 - loop $L7 - local.get $l3 - i32.load - local.tee $p1 - i32.eqz - br_if $B6 - local.get $l2 - local.get $l3 - i32.load16_u offset=92 - local.tee $l3 - i32.store offset=16 - local.get $l2 - local.get $p1 - i32.store offset=12 - local.get $l2 - local.get $l9 - i32.const 1 - i32.add - local.tee $l6 - i32.store offset=8 - local.get $l4 - local.get $l9 - i32.ne - br_if $B0 - local.get $p1 - i32.load16_u offset=94 - i32.const 11 - i32.ge_u - if $I8 - local.get $l2 - i32.const 32 - i32.add - local.get $l3 - call $f50 - local.get $l2 - i32.load offset=40 - local.set $l14 - local.get $l2 - i32.load offset=36 - local.set $l15 - local.get $l2 - i32.load offset=32 - local.set $l4 - i32.const 144 - call $f16 - local.tee $l3 - i32.const 0 - i32.store16 offset=94 - local.get $l3 - i32.const 0 - i32.store - local.get $p1 - i32.const 48 - i32.add - local.tee $l16 - local.get $l4 - i32.const 2 - i32.shl - local.tee $l8 - i32.add - i32.load - local.get $p1 - i32.const 4 - i32.add - local.tee $l7 - local.get $l8 - i32.add - i32.load - local.set $l10 - local.get $l3 - i32.const 4 - i32.add - local.get $l7 - local.get $l8 - i32.const 4 - i32.add - local.tee $l8 - i32.add - local.get $p1 - i32.load16_u offset=94 - local.tee $l17 - local.get $l4 - i32.const -1 - i32.xor - i32.add - local.tee $l7 - i32.const 2 - i32.shl - local.tee $l18 - call $f99 - local.get $l3 - i32.const 48 - i32.add - local.get $l8 - local.get $l16 - i32.add - local.get $l18 - call $f99 - local.get $p1 - local.get $l4 - i32.store16 offset=94 - local.get $l3 - local.get $l7 - i32.store16 offset=94 - local.get $l3 - i32.const 96 - i32.add - local.get $p1 - local.get $l8 - i32.add - i32.const 96 - i32.add - local.get $l17 - local.get $l4 - i32.sub - i32.const 2 - i32.shl - call $f99 - local.get $l2 - local.get $l3 - i32.store offset=28 - local.get $l2 - local.get $l6 - i32.store offset=24 - local.get $l2 - i32.const 0 - i32.store8 offset=40 - local.get $l2 - local.get $l7 - i32.store offset=36 - local.get $l2 - i32.const 0 - i32.store offset=32 - local.get $l2 - i32.const 24 - i32.add - local.get $l2 - i32.const 32 - i32.add - call $f55 - block $B9 - local.get $l15 - i32.const 1 - i32.eq - if $I10 - local.get $l2 - local.get $l14 - i32.store offset=40 - local.get $l2 - local.get $l3 - i32.store offset=36 - br $B9 - end - local.get $l2 - local.get $l14 - i32.store offset=40 - local.get $l2 - local.get $p1 - i32.store offset=36 - end - local.get $l2 - local.get $l6 - i32.store offset=32 - local.get $l2 - i32.const 32 - i32.add - local.get $l12 - local.get $l11 - local.get $l5 - call $f56 - local.get $l3 - local.set $l5 - local.set $l11 - local.get $l10 - local.set $l12 - local.get $p1 - local.set $l3 - local.get $l6 - local.tee $l4 - local.set $l9 - br $L7 - end - end - local.get $l2 - i32.const 8 - i32.add - local.get $l12 - local.get $l11 - local.get $l5 - call $f56 - br $B2 - end - local.get $p0 - i32.load offset=16 - local.tee $p1 - i32.load - local.tee $l3 - i32.eqz - br_if $B0 - i32.const 144 - call $f16 - local.tee $p0 - i32.const 0 - i32.store16 offset=94 - local.get $p0 - i32.const 0 - i32.store - local.get $p0 - local.get $p1 - i32.const 0 - local.get $l3 - select - local.tee $l3 - i32.load - i32.store offset=96 - local.get $l3 - local.get $p0 - i32.store - local.get $l3 - local.get $l3 - i32.load offset=4 - local.tee $l3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $p0 - i32.load offset=96 - local.tee $l6 - i32.const 0 - i32.store16 offset=92 - local.get $l6 - local.get $p0 - i32.store - local.get $l3 - local.get $l4 - i32.ne - br_if $B0 - local.get $p0 - i32.load16_u offset=94 - local.tee $l4 - i32.const 10 - i32.gt_u - br_if $B0 - local.get $p0 - local.get $l4 - i32.const 1 - i32.add - local.tee $l3 - i32.store16 offset=94 - local.get $p0 - local.get $l4 - i32.const 2 - i32.shl - i32.add - local.tee $l4 - i32.const 48 - i32.add - local.get $l11 - i32.store - local.get $l4 - i32.const 4 - i32.add - local.get $l12 - i32.store - local.get $p0 - local.get $l3 - i32.const 2 - i32.shl - i32.add - i32.const 96 - i32.add - local.get $l5 - i32.store - local.get $l5 - local.get $l3 - i32.store16 offset=92 - local.get $l5 - local.get $p0 - i32.store - br $B1 - end - local.get $l2 - i32.const 8 - i32.add - local.get $l6 - local.get $p1 - call $f54 - local.set $l13 - end - local.get $p0 - i32.load offset=16 - local.set $p1 - end - local.get $p1 - local.get $p1 - i32.load offset=8 - i32.const 1 - i32.add - i32.store offset=8 - local.get $l2 - i32.const 48 - i32.add - global.set $g0 - local.get $l13 - return - end - unreachable) - (func $f26 (type $t5) (param $p0 i32) (param $p1 i32) (result i32) - (local $l2 i32) - local.get $p0 - local.get $p1 - call $f20 - local.tee $p0 - i32.load8_u - i32.const 2 - i32.ne - if $I0 (result i32) - local.get $p0 - i32.const 0 - i32.store8 offset=36 - local.get $p0 - else - i32.const 0 - end) - (func $f27 (type $t2) (param $p0 i32) (param $p1 i32) - (local $l2 i32) (local $l3 i32) (local $l4 i32) (local $l5 i32) (local $l6 i32) (local $l7 i32) (local $l8 i32) (local $l9 i32) (local $l10 i64) (local $l11 i64) - global.get $g0 - i32.const 208 - i32.sub - local.tee $l2 - global.set $g0 - local.get $l2 - i32.const 72 - i32.add - local.get $p1 - i32.const 24 - i32.add - i64.load - i64.store - local.get $l2 - i32.const -64 - i32.sub - local.get $p1 - i32.const 16 - i32.add - i64.load - i64.store - local.get $l2 - i32.const 56 - i32.add - local.get $p1 - i32.const 8 - i32.add - i64.load - i64.store - local.get $l2 - i64.const 0 - i64.store offset=80 - local.get $l2 - local.get $p1 - i64.load - i64.store offset=48 - local.get $l2 - i32.const 48 - i32.add - call $f28 - local.set $p1 - local.get $l2 - i32.const 16384 - i32.store offset=124 - local.get $l2 - i32.const 65796 - i32.store offset=120 - block $B0 - block $B1 - local.get $p1 - local.get $l2 - i32.const 120 - i32.add - call $f13 - local.tee $p1 - i32.const 10 - i32.ne - if $I2 - local.get $p1 - i32.const 3 - i32.eq - br_if $B1 - br $B0 - end - local.get $l2 - local.get $l2 - i64.load offset=120 - i64.store offset=200 - local.get $l2 - i32.const 160 - i32.add - local.get $l2 - i32.const 200 - i32.add - call $f24 - local.get $l2 - i32.const 136 - i32.add - local.get $l2 - i32.const 169 - i32.add - i64.load align=1 - i64.store - local.get $l2 - i32.const 144 - i32.add - local.get $l2 - i32.const 177 - i32.add - i64.load align=1 - i64.store - local.get $l2 - i32.const 152 - i32.add - local.get $l2 - i32.const 185 - i32.add - i64.load align=1 - i64.store - local.get $l2 - local.get $l2 - i64.load offset=161 align=1 - i64.store offset=128 - block $B3 - local.get $l2 - i32.load8_u offset=160 - i32.const 1 - i32.eq - br_if $B3 - local.get $l2 - i32.const 112 - i32.add - local.get $l2 - i32.const 152 - i32.add - i64.load - i64.store - local.get $l2 - i32.const 104 - i32.add - local.get $l2 - i32.const 144 - i32.add - i64.load - i64.store - local.get $l2 - i32.const 96 - i32.add - local.get $l2 - i32.const 136 - i32.add - i64.load - i64.store - local.get $l2 - local.get $l2 - i64.load offset=128 - i64.store offset=88 - local.get $l2 - i32.const 48 - i32.add - call $f28 - local.get $l2 - i32.const 16384 - i32.store offset=132 - local.get $l2 - i32.const 65796 - i32.store offset=128 - local.get $l2 - i32.const 128 - i32.add - call $f13 - local.tee $p1 - i32.const 10 - i32.ne - if $I4 - local.get $p1 - i32.const 3 - i32.ne - br_if $B0 - br $B1 - end - local.get $l2 - local.get $l2 - i64.load offset=128 - i64.store offset=160 - local.get $l2 - i32.const 24 - i32.add - local.get $l2 - i32.const 160 - i32.add - call $f29 - local.get $l2 - i64.load offset=24 - i32.wrap_i64 - br_if $B3 - local.get $l2 - i32.const 40 - i32.add - i64.load - local.set $l10 - local.get $l2 - i64.load offset=32 - local.set $l11 - local.get $l2 - i32.const 48 - i32.add - call $f28 - local.get $l2 - i32.const 16384 - i32.store offset=132 - local.get $l2 - i32.const 65796 - i32.store offset=128 - local.get $l2 - i32.const 128 - i32.add - call $f13 - local.tee $p1 - i32.const 10 - i32.ne - if $I5 - local.get $p1 - i32.const 3 - i32.ne - br_if $B0 - br $B1 - end - local.get $l2 - local.get $l2 - i64.load offset=128 - i64.store offset=160 - local.get $l2 - i32.const 160 - i32.add - call $f14 - i32.const 255 - i32.and - local.tee $l3 - i32.const 2 - i32.eq - br_if $B3 - local.get $l2 - i32.const 48 - i32.add - call $f30 - local.get $l2 - i32.const 16384 - i32.store offset=132 - local.get $l2 - i32.const 65796 - i32.store offset=128 - local.get $l2 - i32.const 128 - i32.add - call $f13 - local.tee $p1 - i32.const 10 - i32.ne - if $I6 - local.get $p1 - i32.const 3 - i32.ne - br_if $B0 - br $B1 - end - local.get $l2 - local.get $l2 - i64.load offset=128 - i64.store offset=160 - local.get $l2 - i32.const 16 - i32.add - local.get $l2 - i32.const 160 - i32.add - call $f15 - i32.const 1 - local.set $p1 - local.get $l2 - i32.load offset=20 - local.set $l4 - block $B7 - local.get $l2 - i32.load offset=16 - br_if $B7 - local.get $l2 - i32.const 8 - i32.add - local.get $l2 - i32.const 160 - i32.add - call $f15 - local.get $l2 - i32.load offset=8 - br_if $B7 - local.get $l2 - i32.load offset=12 - local.set $l5 - local.get $l2 - local.get $l2 - i32.const 160 - i32.add - call $f15 - local.get $l2 - i32.load - i32.const 0 - i32.ne - local.set $p1 - local.get $l2 - i32.load offset=4 - local.set $l6 - end - local.get $p1 - br_if $B3 - local.get $l2 - i32.const 184 - i32.add - local.tee $l7 - local.get $l2 - i32.const 48 - i32.add - call $f31 - local.tee $p1 - i32.const 24 - i32.add - i64.load - i64.store - local.get $l2 - i32.const 176 - i32.add - local.tee $l8 - local.get $p1 - i32.const 16 - i32.add - i64.load - i64.store - local.get $l2 - i32.const 168 - i32.add - local.tee $l9 - local.get $p1 - i32.const 8 - i32.add - i64.load - i64.store - local.get $l2 - local.get $p1 - i64.load - i64.store offset=160 - local.get $l2 - i32.const 48 - i32.add - call $f28 - local.set $p1 - local.get $p0 - local.get $l10 - i64.store offset=8 - local.get $p0 - local.get $l11 - i64.store - local.get $p0 - local.get $l3 - i32.const 0 - i32.ne - i32.store8 offset=176 - local.get $p0 - i64.const 1 - i64.store offset=16 - local.get $p0 - i32.const 168 - i32.add - local.get $l2 - i32.const 112 - i32.add - i64.load - i64.store align=1 - local.get $p0 - i32.const 160 - i32.add - local.get $l2 - i32.const 104 - i32.add - i64.load - i64.store align=1 - local.get $p0 - i32.const 152 - i32.add - local.get $l2 - i32.const 96 - i32.add - i64.load - i64.store align=1 - local.get $p0 - local.get $l2 - i64.load offset=88 - i64.store offset=144 align=1 - local.get $p0 - i32.const 24 - i32.add - local.get $l2 - i64.load offset=160 - i64.store - local.get $p0 - i32.const 32 - i32.add - local.get $l9 - i64.load - i64.store - local.get $p0 - i32.const 40 - i32.add - local.get $l8 - i64.load - i64.store - local.get $p0 - i32.const 48 - i32.add - local.get $l7 - i64.load - i64.store - local.get $p0 - i32.const 88 - i32.add - i64.const 1 - i64.store - local.get $p0 - i32.const 80 - i32.add - local.get $l6 - i32.store - local.get $p0 - i32.const 76 - i32.add - local.get $l5 - i32.store - local.get $p0 - i32.const 72 - i32.add - local.get $l4 - i32.store - local.get $p0 - i32.const -64 - i32.sub - i32.const 0 - i32.store - local.get $p0 - i32.const 56 - i32.add - i32.const 0 - i32.store - local.get $p0 - i32.const 128 - i32.add - i32.const 0 - i32.store - local.get $p0 - i32.const 136 - i32.add - i32.const 0 - i32.store - local.get $p0 - i32.const 96 - i32.add - local.get $p1 - i64.load - i64.store - local.get $p0 - i32.const 104 - i32.add - local.get $p1 - i32.const 8 - i32.add - i64.load - i64.store - local.get $p0 - i32.const 112 - i32.add - local.get $p1 - i32.const 16 - i32.add - i64.load - i64.store - local.get $p0 - i32.const 120 - i32.add - local.get $p1 - i32.const 24 - i32.add - i64.load - i64.store - local.get $l2 - i32.const 208 - i32.add - global.set $g0 - return - end - unreachable - end - unreachable - end - unreachable) - (func $f28 (type $t6) (param $p0 i32) (result i32) - local.get $p0 - i64.const 1 - call $f43) - (func $f29 (type $t2) (param $p0 i32) (param $p1 i32) - (local $l2 i32) (local $l3 i32) (local $l4 i64) (local $l5 i64) (local $l6 i64) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l2 - global.set $g0 - local.get $l2 - i32.const 8 - i32.add - local.tee $l3 - i64.const 0 - i64.store - local.get $l2 - i64.const 0 - i64.store - block $B0 - local.get $p1 - local.get $l2 - i32.const 16 - call $f49 - i32.eqz - if $I1 - local.get $l3 - i64.load - local.set $l5 - local.get $l2 - i64.load - local.set $l6 - br $B0 - end - i64.const 1 - local.set $l4 - end - local.get $p0 - local.get $l6 - i64.store offset=8 - local.get $p0 - local.get $l4 - i64.store - local.get $p0 - i32.const 16 - i32.add - local.get $l5 - i64.store - local.get $l2 - i32.const 16 - i32.add - global.set $g0) - (func $f30 (type $t6) (param $p0 i32) (result i32) - (local $l1 i64) (local $l2 i64) (local $l3 i64) - local.get $p0 - i64.load offset=32 - local.set $l1 - local.get $p0 - i64.const 1 - i64.store offset=32 - local.get $p0 - local.get $l1 - local.get $p0 - i64.load - local.tee $l2 - i64.add - local.tee $l1 - i64.store - local.get $p0 - local.get $p0 - i64.load offset=8 - local.tee $l3 - local.get $l1 - local.get $l2 - i64.lt_u - i64.extend_i32_u - i64.add - local.tee $l1 - i64.store offset=8 - local.get $p0 - local.get $p0 - i64.load offset=16 - local.tee $l2 - local.get $l1 - local.get $l3 - i64.lt_u - i64.extend_i32_u - i64.add - local.tee $l1 - i64.store offset=16 - local.get $p0 - local.get $p0 - i64.load offset=24 - local.get $l1 - local.get $l2 - i64.lt_u - i64.extend_i32_u - i64.add - i64.store offset=24 - local.get $p0) - (func $f31 (type $t6) (param $p0 i32) (result i32) - local.get $p0 - i64.const 4294967296 - call $f43) - (func $f32 (type $t2) (param $p0 i32) (param $p1 i32) - (local $l2 i32) (local $l3 i32) (local $l4 i32) (local $l5 i32) (local $l6 i32) (local $l7 i32) (local $l8 i32) (local $l9 i64) - global.get $g0 - i32.const 160 - i32.sub - local.tee $l2 - global.set $g0 - local.get $l2 - i32.const 48 - i32.add - local.get $p1 - i32.const 24 - i32.add - i64.load - i64.store - local.get $l2 - i32.const 40 - i32.add - local.get $p1 - i32.const 16 - i32.add - i64.load - i64.store - local.get $l2 - i32.const 32 - i32.add - local.get $p1 - i32.const 8 - i32.add - i64.load - i64.store - local.get $l2 - i64.const 0 - i64.store offset=56 - local.get $l2 - local.get $p1 - i64.load - i64.store offset=24 - local.get $l2 - i32.const 24 - i32.add - call $f28 - local.get $l2 - i32.const 136 - i32.add - local.tee $p1 - i32.const 16384 - i32.store - local.get $l2 - i32.const 65796 - i32.store offset=132 - local.get $l2 - i32.const 0 - i32.store offset=128 - local.get $l2 - i32.const 16 - i32.add - local.get $l2 - i32.const 128 - i32.add - local.get $p0 - i32.const 144 - i32.add - call $f33 - local.get $l2 - i32.load offset=16 - local.get $l2 - i32.load offset=20 - call $seal0.seal_set_storage - local.get $l2 - i32.const 24 - i32.add - call $f28 - local.get $p1 - i32.const 16384 - i32.store - local.get $l2 - i32.const 65796 - i32.store offset=132 - local.get $l2 - i32.const 0 - i32.store offset=128 - local.get $l2 - i32.const 8 - i32.add - local.get $l2 - i32.const 128 - i32.add - local.get $p0 - i64.load - local.get $p0 - i32.const 8 - i32.add - i64.load - call $f34 - local.get $l2 - i32.load offset=8 - local.get $l2 - i32.load offset=12 - call $seal0.seal_set_storage - local.get $l2 - i32.const 24 - i32.add - call $f28 - local.get $p1 - i32.const 16384 - i32.store - local.get $l2 - i32.const 65796 - i32.store offset=132 - local.get $l2 - i32.const 0 - i32.store offset=128 - local.get $l2 - local.get $l2 - i32.const 128 - i32.add - local.get $p0 - i32.load8_u offset=176 - call $f35 - local.get $l2 - i32.load - local.get $l2 - i32.load offset=4 - call $seal0.seal_set_storage - local.get $l2 - i32.const 24 - i32.add - call $f30 - local.set $p1 - local.get $l2 - i64.const 16384 - i64.store offset=132 align=4 - local.get $l2 - i32.const 65796 - i32.store offset=128 - local.get $p0 - i32.const 72 - i32.add - i32.load - local.get $l2 - i32.const 128 - i32.add - call $f36 - local.get $p0 - i32.const 76 - i32.add - i32.load - local.get $l2 - i32.const 128 - i32.add - call $f36 - local.get $p0 - i32.const 80 - i32.add - i32.load - local.get $l2 - i32.const 128 - i32.add - call $f36 - block $B0 - block $B1 - local.get $l2 - i32.load offset=132 - local.get $l2 - i32.load offset=136 - local.tee $l3 - i32.lt_u - br_if $B1 - local.get $p1 - local.get $l2 - i32.load offset=128 - local.get $l3 - call $seal0.seal_set_storage - local.get $l2 - i32.const 24 - i32.add - call $f31 - local.set $l8 - block $B2 (result i32) - local.get $p0 - i32.const 56 - i32.add - i32.load - local.tee $l4 - i32.eqz - if $I3 - i32.const 0 - local.set $l3 - i32.const 0 - br $B2 - end - local.get $p0 - i32.const 60 - i32.add - i32.load - local.set $p1 - local.get $l4 - local.set $l3 - loop $L4 - local.get $l4 - i32.load16_u offset=94 - local.set $l5 - local.get $p1 - if $I5 - local.get $p1 - i32.const -1 - i32.add - local.set $p1 - local.get $l4 - local.get $l5 - i32.const 2 - i32.shl - i32.add - i32.const 96 - i32.add - i32.load - local.set $l4 - local.get $l3 - i32.load offset=96 - local.set $l3 - br $L4 - end - end - local.get $l4 - local.set $l6 - local.get $p0 - i32.const -64 - i32.sub - i32.load - end - local.set $p1 - local.get $l2 - i32.const 84 - i32.add - local.get $l5 - i32.store - local.get $l2 - i32.const 80 - i32.add - local.get $l6 - i32.store - local.get $l2 - local.get $p1 - i32.store offset=88 - local.get $l2 - i64.const 0 - i64.store offset=72 - local.get $l2 - local.get $l3 - i32.store offset=68 - local.get $l2 - i32.const 0 - i32.store offset=64 - loop $L6 - local.get $p1 - if $I7 - local.get $l2 - local.get $p1 - i32.const -1 - i32.add - i32.store offset=88 - local.get $l2 - i32.const -64 - i32.sub - i32.const 0 - local.get $l2 - i32.load offset=68 - select - local.tee $l7 - i32.load - local.set $l5 - local.get $l7 - i32.load offset=8 - local.set $l6 - local.get $l7 - i32.load offset=4 - local.set $p1 - loop $L8 - block $B9 - local.get $l6 - local.get $p1 - i32.load16_u offset=94 - i32.ge_u - if $I10 - local.get $p1 - i32.load - local.tee $l3 - br_if $B9 - i32.const 0 - local.set $p1 - end - local.get $l6 - i32.const 1 - i32.add - local.set $l4 - block $B11 - local.get $l5 - i32.eqz - if $I12 - local.get $p1 - local.set $l3 - br $B11 - end - local.get $p1 - local.get $l4 - i32.const 2 - i32.shl - i32.add - i32.const 96 - i32.add - local.set $l3 - i32.const 1 - local.set $l4 - loop $L13 - local.get $l3 - i32.load - local.set $l3 - local.get $l4 - local.get $l5 - i32.ne - if $I14 - local.get $l4 - i32.const 1 - i32.add - local.set $l4 - local.get $l3 - i32.const 96 - i32.add - local.set $l3 - br $L13 - end - end - i32.const 0 - local.set $l4 - end - local.get $l7 - local.get $l3 - i32.store offset=4 - local.get $l7 - i32.const 0 - i32.store - local.get $l7 - local.get $l4 - i32.store offset=8 - local.get $p1 - local.get $l6 - i32.const 2 - i32.shl - i32.add - local.tee $p1 - i32.const 4 - i32.add - i64.load32_u - local.set $l9 - local.get $l2 - i32.const 152 - i32.add - local.get $l8 - i32.const 24 - i32.add - i64.load - i64.store - local.get $l2 - i32.const 144 - i32.add - local.get $l8 - i32.const 16 - i32.add - i64.load - i64.store - local.get $l2 - i32.const 136 - i32.add - local.get $l8 - i32.const 8 - i32.add - i64.load - i64.store - local.get $l2 - local.get $l8 - i64.load - i64.store offset=128 - local.get $l2 - i32.const 96 - i32.add - local.get $l2 - i32.const 128 - i32.add - local.get $l9 - call $f22 - local.get $p1 - i32.const 48 - i32.add - i32.load - local.tee $p1 - i32.load8_u offset=36 - local.set $l3 - local.get $p1 - i32.const 1 - i32.store8 offset=36 - block $B15 - local.get $l3 - i32.const 1 - i32.and - br_if $B15 - local.get $p1 - i32.load8_u - local.tee $l3 - i32.const 2 - i32.eq - if $I16 - local.get $l2 - i32.const 96 - i32.add - call $seal0.seal_clear_storage - br $B15 - end - local.get $l2 - i64.const 16384 - i64.store offset=132 align=4 - local.get $l2 - i32.const 65796 - i32.store offset=128 - block $B17 - i32.const 0 - local.get $p1 - local.get $l3 - i32.const 2 - i32.eq - select - local.tee $p1 - i32.load8_u - i32.const 1 - i32.ne - if $I18 - local.get $l2 - i32.const 1 - i32.store offset=136 - i32.const 65796 - i32.const 0 - i32.store8 - local.get $p1 - i32.load offset=4 - local.get $l2 - i32.const 128 - i32.add - call $f36 - local.get $p1 - i32.load offset=8 - local.get $l2 - i32.const 128 - i32.add - call $f36 - br $B17 - end - i32.const 65796 - i32.const 1 - i32.store8 - local.get $l2 - i32.const 1 - i32.store offset=136 - local.get $p1 - i32.const 1 - i32.add - local.get $l2 - i32.const 128 - i32.add - call $f19 - end - local.get $l2 - i32.load offset=132 - local.get $l2 - i32.load offset=136 - local.tee $p1 - i32.lt_u - br_if $B1 - local.get $l2 - i32.const 96 - i32.add - local.get $l2 - i32.load offset=128 - local.get $p1 - call $seal0.seal_set_storage - end - local.get $l2 - i32.load offset=88 - local.set $p1 - br $L6 - end - local.get $l5 - i32.const 1 - i32.add - local.set $l5 - local.get $p1 - i32.load16_u offset=92 - local.set $l6 - local.get $l3 - local.set $p1 - br $L8 - end - unreachable - end - end - local.get $l2 - i32.const 24 - i32.add - call $f28 - local.set $l8 - block $B19 (result i32) - local.get $p0 - i32.const 128 - i32.add - i32.load - local.tee $l4 - i32.eqz - if $I20 - i32.const 0 - local.set $l4 - i32.const 0 - local.set $l3 - i32.const 0 - br $B19 - end - local.get $p0 - i32.const 132 - i32.add - i32.load - local.set $p1 - local.get $l4 - local.set $l3 - loop $L21 - local.get $l4 - i32.load16_u offset=50 - local.set $l5 - local.get $p1 - if $I22 - local.get $p1 - i32.const -1 - i32.add - local.set $p1 - local.get $l4 - local.get $l5 - i32.const 2 - i32.shl - i32.add - i32.const 404 - i32.add - i32.load - local.set $l4 - local.get $l3 - i32.load offset=404 - local.set $l3 - br $L21 - end - end - local.get $p0 - i32.const 136 - i32.add - i32.load - end - local.set $p1 - local.get $l2 - i32.const 116 - i32.add - local.get $l5 - i32.store - local.get $l2 - i32.const 112 - i32.add - local.get $l4 - i32.store - local.get $l2 - local.get $p1 - i32.store offset=120 - local.get $l2 - i64.const 0 - i64.store offset=104 - local.get $l2 - local.get $l3 - i32.store offset=100 - local.get $l2 - i32.const 0 - i32.store offset=96 - loop $L23 - local.get $p1 - i32.eqz - br_if $B0 - local.get $l2 - local.get $p1 - i32.const -1 - i32.add - i32.store offset=120 - local.get $l2 - i32.const 96 - i32.add - i32.const 0 - local.get $l2 - i32.load offset=100 - select - local.tee $l7 - i32.load - local.set $l5 - local.get $l7 - i32.load offset=8 - local.set $l6 - local.get $l7 - i32.load offset=4 - local.set $p1 - loop $L24 - block $B25 - local.get $l6 - local.get $p1 - i32.load16_u offset=50 - i32.ge_u - if $I26 - local.get $p1 - i32.load - local.tee $p0 - br_if $B25 - i32.const 0 - local.set $p1 - end - local.get $l6 - i32.const 1 - i32.add - local.set $l4 - block $B27 - local.get $l5 - i32.eqz - if $I28 - local.get $p1 - local.set $l3 - br $B27 - end - local.get $p1 - local.get $l4 - i32.const 2 - i32.shl - i32.add - i32.const 404 - i32.add - local.set $l3 - i32.const 1 - local.set $l4 - loop $L29 - local.get $l3 - i32.load - local.set $l3 - local.get $l4 - local.get $l5 - i32.ne - if $I30 - local.get $l4 - i32.const 1 - i32.add - local.set $l4 - local.get $l3 - i32.const 404 - i32.add - local.set $l3 - br $L29 - end - end - i32.const 0 - local.set $l4 - end - local.get $l7 - local.get $l3 - i32.store offset=4 - local.get $l7 - i32.const 0 - i32.store - local.get $l7 - local.get $l4 - i32.store offset=8 - local.get $l2 - i32.const 128 - i32.add - local.get $l8 - local.get $p1 - local.get $l6 - i32.const 5 - i32.shl - i32.add - i32.const 52 - i32.add - call $f12 - local.get $p1 - local.get $l6 - i32.const 2 - i32.shl - i32.add - i32.const 4 - i32.add - i32.load - local.tee $p0 - i32.load8_u offset=8 - local.set $p1 - local.get $p0 - i32.const 1 - i32.store8 offset=8 - block $B31 - local.get $p1 - i32.const 1 - i32.and - br_if $B31 - local.get $p0 - i32.load8_u offset=4 - local.tee $p1 - i32.const 2 - i32.eq - if $I32 - local.get $l2 - i32.const 128 - i32.add - call $seal0.seal_clear_storage - br $B31 - end - local.get $l2 - i64.const 16384 - i64.store offset=68 align=4 - local.get $l2 - i32.const 65796 - i32.store offset=64 - i32.const 0 - local.get $p0 - local.get $p1 - i32.const 2 - i32.eq - select - local.tee $p0 - i32.load8_u offset=4 - local.get $l2 - i32.const -64 - i32.sub - call $f37 - local.get $p0 - i32.load - local.get $l2 - i32.const -64 - i32.sub - call $f36 - local.get $l2 - i32.load offset=68 - local.get $l2 - i32.load offset=72 - local.tee $p0 - i32.lt_u - br_if $B1 - local.get $l2 - i32.const 128 - i32.add - local.get $l2 - i32.load offset=64 - local.get $p0 - call $seal0.seal_set_storage - end - local.get $l2 - i32.load offset=120 - local.set $p1 - br $L23 - end - local.get $l5 - i32.const 1 - i32.add - local.set $l5 - local.get $p1 - i32.load16_u offset=48 - local.set $l6 - local.get $p0 - local.set $p1 - br $L24 - end - unreachable - end - unreachable - end - unreachable - end - local.get $l2 - i32.const 160 - i32.add - global.set $g0) - (func $f33 (type $t0) (param $p0 i32) (param $p1 i32) (param $p2 i32) - (local $l3 i32) (local $l4 i64) - global.get $g0 - i32.const 32 - i32.sub - local.tee $l3 - global.set $g0 - local.get $p1 - i64.load offset=4 align=4 - local.set $l4 - local.get $p1 - i32.const 8 - i32.add - i32.const 0 - i32.store - local.get $p1 - i32.const 65792 - i32.store offset=4 - local.get $l3 - i32.const 0 - i32.store offset=24 - local.get $l3 - local.get $l4 - i64.store offset=16 - local.get $p2 - local.get $l3 - i32.const 16 - i32.add - call $f19 - local.get $p1 - local.get $l3 - i64.load offset=16 - i64.store offset=4 align=4 - local.get $l3 - i32.const 8 - i32.add - local.get $p1 - local.get $l3 - i32.load offset=24 - call $f74 - local.get $p0 - local.get $l3 - i64.load offset=8 - i64.store - local.get $l3 - i32.const 32 - i32.add - global.set $g0) - (func $f34 (type $t8) (param $p0 i32) (param $p1 i32) (param $p2 i64) (param $p3 i64) - (local $l4 i32) (local $l5 i64) - global.get $g0 - i32.const 32 - i32.sub - local.tee $l4 - global.set $g0 - local.get $p1 - i64.load offset=4 align=4 - local.set $l5 - local.get $p1 - i32.const 8 - i32.add - i32.const 0 - i32.store - local.get $p1 - i32.const 65792 - i32.store offset=4 - local.get $l4 - i32.const 0 - i32.store offset=24 - local.get $l4 - local.get $l5 - i64.store offset=16 - local.get $p2 - local.get $p3 - local.get $l4 - i32.const 16 - i32.add - call $f44 - local.get $p1 - local.get $l4 - i64.load offset=16 - i64.store offset=4 align=4 - local.get $l4 - i32.const 8 - i32.add - local.get $p1 - local.get $l4 - i32.load offset=24 - call $f74 - local.get $p0 - local.get $l4 - i64.load offset=8 - i64.store - local.get $l4 - i32.const 32 - i32.add - global.set $g0) - (func $f35 (type $t0) (param $p0 i32) (param $p1 i32) (param $p2 i32) - (local $l3 i32) (local $l4 i64) - global.get $g0 - i32.const 32 - i32.sub - local.tee $l3 - global.set $g0 - local.get $p1 - i64.load offset=4 align=4 - local.set $l4 - local.get $p1 - i32.const 8 - i32.add - i32.const 0 - i32.store - local.get $p1 - i32.const 65792 - i32.store offset=4 - local.get $l3 - i32.const 0 - i32.store offset=24 - local.get $l3 - local.get $l4 - i64.store offset=16 - local.get $p2 - local.get $l3 - i32.const 16 - i32.add - call $f37 - local.get $p1 - local.get $l3 - i64.load offset=16 - i64.store offset=4 align=4 - local.get $l3 - i32.const 8 - i32.add - local.get $p1 - local.get $l3 - i32.load offset=24 - call $f74 - local.get $p0 - local.get $l3 - i64.load offset=8 - i64.store - local.get $l3 - i32.const 32 - i32.add - global.set $g0) - (func $f36 (type $t2) (param $p0 i32) (param $p1 i32) - (local $l2 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l2 - global.set $g0 - local.get $l2 - local.get $p0 - i32.store offset=12 - local.get $p1 - local.get $l2 - i32.const 12 - i32.add - i32.const 4 - call $f18 - local.get $l2 - i32.const 16 - i32.add - global.set $g0) - (func $f37 (type $t2) (param $p0 i32) (param $p1 i32) - (local $l2 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l2 - global.set $g0 - local.get $l2 - local.get $p0 - i32.store8 offset=15 - local.get $p1 - local.get $l2 - i32.const 15 - i32.add - i32.const 1 - call $f18 - local.get $l2 - i32.const 16 - i32.add - global.set $g0) - (func $f38 (type $t9) (param $p0 i32) (param $p1 i64) (param $p2 i64) - (local $l3 i32) (local $l4 i32) (local $l5 i32) (local $l6 i32) (local $l7 i32) (local $l8 i32) (local $l9 i32) (local $l10 i32) (local $l11 i32) - global.get $g0 - i32.const 96 - i32.sub - local.tee $l3 - global.set $g0 - local.get $l3 - i32.const 16 - i32.add - local.get $p0 - i32.load - local.get $p0 - i32.const 4 - i32.add - i32.load - local.get $p0 - i32.const 8 - i32.add - i32.load - call $f39 - local.get $l3 - i32.const 8 - i32.add - local.get $l3 - i32.const 16 - i32.add - local.get $p1 - local.get $p2 - call $f34 - local.get $l3 - i32.load offset=8 - local.set $l5 - local.get $l3 - i32.load offset=12 - local.set $l4 - local.get $l3 - i32.const 56 - i32.add - local.tee $l6 - i64.const 0 - i64.store - local.get $l3 - i32.const 48 - i32.add - local.tee $l7 - i64.const 0 - i64.store - local.get $l3 - i32.const 40 - i32.add - local.tee $l8 - i64.const 0 - i64.store - local.get $l3 - i64.const 0 - i64.store offset=32 - block $B0 - local.get $l4 - i32.const 33 - i32.ge_u - if $I1 - local.get $l3 - i32.const 88 - i32.add - local.tee $l9 - i64.const 0 - i64.store - local.get $l3 - i32.const 80 - i32.add - local.tee $l10 - i64.const 0 - i64.store - local.get $l3 - i32.const 72 - i32.add - local.tee $l11 - i64.const 0 - i64.store - local.get $l3 - i64.const 0 - i64.store offset=64 - local.get $l5 - local.get $l4 - local.get $l3 - i32.const -64 - i32.sub - call $seal0.seal_hash_blake2_256 - local.get $l6 - local.get $l9 - i64.load - i64.store - local.get $l7 - local.get $l10 - i64.load - i64.store - local.get $l8 - local.get $l11 - i64.load - i64.store - local.get $l3 - local.get $l3 - i64.load offset=64 - i64.store offset=32 - br $B0 - end - local.get $l3 - i32.const 32 - i32.add - local.get $l5 - local.get $l4 - call $f99 - end - local.get $p0 - local.get $l3 - i32.const 32 - i32.add - call $f40 - local.get $l3 - i32.const 96 - i32.add - global.set $g0) - (func $f39 (type $t1) (param $p0 i32) (param $p1 i32) (param $p2 i32) (param $p3 i32) - local.get $p3 - local.get $p1 - i32.lt_u - if $I0 - unreachable - end - local.get $p0 - i32.const 0 - i32.store - local.get $p0 - i32.const 8 - i32.add - local.get $p3 - local.get $p1 - i32.sub - i32.store - local.get $p0 - local.get $p1 - local.get $p2 - i32.add - i32.store offset=4) - (func $f40 (type $t2) (param $p0 i32) (param $p1 i32) - (local $l2 i32) (local $l3 i32) (local $l4 i32) (local $l5 i32) (local $l6 i32) (local $l7 i32) - global.get $g0 - i32.const 32 - i32.sub - local.tee $l2 - global.set $g0 - local.get $p0 - i32.load offset=4 - local.set $l4 - local.get $p0 - i32.const 65792 - i32.store offset=4 - local.get $p0 - i32.const 8 - i32.add - local.tee $l5 - i32.load - local.set $l3 - local.get $l5 - i32.const 0 - i32.store - local.get $l2 - i32.const 8 - i32.add - local.set $l6 - local.get $l3 - local.get $p0 - i32.load - local.tee $l7 - i32.lt_u - if $I0 - unreachable - end - local.get $l6 - local.get $l3 - local.get $l7 - i32.sub - i32.store offset=4 - local.get $l6 - local.get $l4 - local.get $l7 - i32.add - i32.store - local.get $l2 - i32.const 0 - i32.store offset=24 - local.get $l2 - local.get $l2 - i64.load offset=8 - i64.store offset=16 - local.get $p1 - local.get $l2 - i32.const 16 - i32.add - call $f48 - local.get $l5 - local.get $l3 - i32.store - local.get $p0 - local.get $l4 - i32.store offset=4 - local.get $p0 - local.get $p0 - i32.load - local.get $l2 - i32.load offset=24 - i32.add - i32.store - local.get $l2 - i32.const 32 - i32.add - global.set $g0) - (func $f41 (type $t2) (param $p0 i32) (param $p1 i32) - (local $l2 i32) (local $l3 i32) (local $l4 i32) (local $l5 i32) (local $l6 i32) (local $l7 i32) (local $l8 i32) (local $l9 i32) - global.get $g0 - i32.const 96 - i32.sub - local.tee $l2 - global.set $g0 - local.get $l2 - i32.const 16 - i32.add - local.get $p0 - i32.load - local.get $p0 - i32.const 4 - i32.add - i32.load - local.get $p0 - i32.const 8 - i32.add - i32.load - call $f39 - local.get $l2 - i32.const 8 - i32.add - local.get $l2 - i32.const 16 - i32.add - local.get $p1 - call $f33 - local.get $l2 - i32.load offset=8 - local.set $l3 - local.get $l2 - i32.load offset=12 - local.set $p1 - local.get $l2 - i32.const 56 - i32.add - local.tee $l4 - i64.const 0 - i64.store - local.get $l2 - i32.const 48 - i32.add - local.tee $l5 - i64.const 0 - i64.store - local.get $l2 - i32.const 40 - i32.add - local.tee $l6 - i64.const 0 - i64.store - local.get $l2 - i64.const 0 - i64.store offset=32 - block $B0 - local.get $p1 - i32.const 33 - i32.ge_u - if $I1 - local.get $l2 - i32.const 88 - i32.add - local.tee $l7 - i64.const 0 - i64.store - local.get $l2 - i32.const 80 - i32.add - local.tee $l8 - i64.const 0 - i64.store - local.get $l2 - i32.const 72 - i32.add - local.tee $l9 - i64.const 0 - i64.store - local.get $l2 - i64.const 0 - i64.store offset=64 - local.get $l3 - local.get $p1 - local.get $l2 - i32.const -64 - i32.sub - call $seal0.seal_hash_blake2_256 - local.get $l4 - local.get $l7 - i64.load - i64.store - local.get $l5 - local.get $l8 - i64.load - i64.store - local.get $l6 - local.get $l9 - i64.load - i64.store - local.get $l2 - local.get $l2 - i64.load offset=64 - i64.store offset=32 - br $B0 - end - local.get $l2 - i32.const 32 - i32.add - local.get $l3 - local.get $p1 - call $f99 - end - local.get $p0 - local.get $l2 - i32.const 32 - i32.add - call $f40 - local.get $l2 - i32.const 96 - i32.add - global.set $g0) - (func $f42 (type $t2) (param $p0 i32) (param $p1 i32) - (local $l2 i32) (local $l3 i32) (local $l4 i32) (local $l5 i32) (local $l6 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l2 - global.set $g0 - local.get $p0 - i32.load offset=4 - local.set $l5 - local.get $p0 - i32.const 65792 - i32.store offset=4 - local.get $p0 - i32.const 8 - i32.add - local.tee $l3 - i32.load - local.set $l4 - local.get $l3 - i32.const 0 - i32.store - local.get $l2 - i32.const 8 - i32.add - local.set $l6 - local.get $l4 - local.get $p0 - i32.load - local.tee $l3 - i32.lt_u - if $I0 - unreachable - end - local.get $l6 - local.get $l4 - local.get $l3 - i32.sub - i32.store offset=4 - local.get $l6 - local.get $l3 - local.get $l5 - i32.add - i32.store - local.get $l2 - i32.load offset=12 - i32.eqz - if $I1 - unreachable - end - local.get $l2 - i32.load offset=8 - local.get $p1 - i32.const 2 - i32.shl - i32.store8 - local.get $p0 - local.get $l4 - i32.store offset=8 - local.get $p0 - local.get $l5 - i32.store offset=4 - local.get $p0 - local.get $p0 - i32.load - i32.const 1 - i32.add - i32.store - local.get $l2 - i32.const 16 - i32.add - global.set $g0) - (func $f43 (type $t10) (param $p0 i32) (param $p1 i64) (result i32) - (local $l2 i64) (local $l3 i64) - local.get $p0 - i64.load offset=32 - local.set $l2 - local.get $p0 - local.get $p1 - i64.store offset=32 - local.get $p0 - local.get $l2 - local.get $p0 - i64.load - local.tee $p1 - i64.add - local.tee $l2 - i64.store - local.get $p0 - local.get $p0 - i64.load offset=8 - local.tee $l3 - local.get $l2 - local.get $p1 - i64.lt_u - i64.extend_i32_u - i64.add - local.tee $p1 - i64.store offset=8 - local.get $p0 - local.get $p0 - i64.load offset=16 - local.tee $l2 - local.get $p1 - local.get $l3 - i64.lt_u - i64.extend_i32_u - i64.add - local.tee $p1 - i64.store offset=16 - local.get $p0 - local.get $p0 - i64.load offset=24 - local.get $p1 - local.get $l2 - i64.lt_u - i64.extend_i32_u - i64.add - i64.store offset=24 - local.get $p0) - (func $f44 (type $t11) (param $p0 i64) (param $p1 i64) (param $p2 i32) - (local $l3 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l3 - global.set $g0 - local.get $l3 - local.get $p1 - i64.store offset=8 - local.get $l3 - local.get $p0 - i64.store - local.get $p2 - local.get $l3 - i32.const 16 - call $f18 - local.get $l3 - i32.const 16 - i32.add - global.set $g0) - (func $f45 (type $t3) (param $p0 i32) - (local $l1 i32) (local $l2 i32) (local $l3 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l1 - global.set $g0 - local.get $p0 - i32.load8_u offset=4 - local.tee $l2 - if $I0 - local.get $l1 - i32.const 8 - i32.add - local.set $l3 - local.get $l2 - i32.const 0 - i32.lt_u - if $I1 - unreachable - end - local.get $l3 - local.get $l2 - i32.store offset=4 - local.get $l3 - local.get $p0 - i32.store - local.get $p0 - i32.const 0 - i32.store8 offset=4 - end - local.get $l1 - i32.const 16 - i32.add - global.set $g0) - (func $f46 (type $t3) (param $p0 i32) - (local $l1 i32) - block $B0 - local.get $p0 - i32.load offset=4 - local.tee $l1 - i32.eqz - br_if $B0 - local.get $p0 - i32.load - local.tee $p0 - i32.eqz - br_if $B0 - local.get $l1 - i32.const 33 - i32.mul - i32.eqz - br_if $B0 - local.get $p0 - call $f89 - end) - (func $f47 (type $t2) (param $p0 i32) (param $p1 i32) - (local $l2 i32) (local $l3 i32) (local $l4 i32) - local.get $p1 - i32.load - local.set $l2 - block $B0 - local.get $p1 - i32.load8_u offset=8 - br_if $B0 - local.get $l2 - local.get $p1 - i32.load offset=4 - local.tee $l4 - i32.gt_u - br_if $B0 - local.get $l2 - local.get $l4 - i32.ge_u - if $I1 - i32.const 1 - local.set $l3 - local.get $p1 - i32.const 1 - i32.store8 offset=8 - br $B0 - end - i32.const 1 - local.set $l3 - local.get $p1 - local.get $l2 - i32.const 1 - i32.add - i32.store - end - local.get $p0 - local.get $l2 - i32.store offset=4 - local.get $p0 - local.get $l3 - i32.store) - (func $f48 (type $t2) (param $p0 i32) (param $p1 i32) - local.get $p1 - local.get $p0 - i32.const 32 - call $f18) - (func $f49 (type $t4) (param $p0 i32) (param $p1 i32) (param $p2 i32) (result i32) - block $B0 - local.get $p0 - i32.load offset=4 - local.get $p2 - i32.ge_u - if $I1 (result i32) - local.get $p1 - local.get $p0 - i32.load - local.get $p2 - call $f99 - local.get $p0 - i32.load offset=4 - local.tee $p1 - local.get $p2 - i32.lt_u - br_if $B0 - local.get $p0 - local.get $p1 - local.get $p2 - i32.sub - i32.store offset=4 - local.get $p0 - local.get $p0 - i32.load - local.get $p2 - i32.add - i32.store - i32.const 0 - else - i32.const 1 - end - return - end - unreachable) - (func $f50 (type $t2) (param $p0 i32) (param $p1 i32) - block $B0 - block $B1 - local.get $p1 - i32.const 5 - i32.ge_u - if $I2 - block $B3 - local.get $p1 - i32.const -5 - i32.add - br_table $B1 $B0 $B3 - end - local.get $p0 - i64.const 4294967302 - i64.store align=4 - local.get $p0 - i32.const 8 - i32.add - local.get $p1 - i32.const -7 - i32.add - i32.store - return - end - local.get $p0 - i64.const 4 - i64.store align=4 - local.get $p0 - i32.const 8 - i32.add - local.get $p1 - i32.store - return - end - local.get $p0 - i64.const 5 - i64.store align=4 - local.get $p0 - i32.const 8 - i32.add - i32.const 5 - i32.store - return - end - local.get $p0 - i64.const 4294967301 - i64.store align=4 - local.get $p0 - i32.const 8 - i32.add - i32.const 0 - i32.store) - (func $f51 (type $t4) (param $p0 i32) (param $p1 i32) (param $p2 i32) (result i32) - (local $l3 i32) (local $l4 i32) (local $l5 i32) (local $l6 i32) - local.get $p0 - i32.load offset=4 - local.tee $l4 - local.get $p0 - i32.load offset=8 - local.tee $l5 - i32.const 5 - i32.shl - i32.add - local.tee $l3 - i32.const 84 - i32.add - local.get $l3 - i32.const 52 - i32.add - local.tee $l6 - local.get $l4 - i32.load16_u offset=50 - local.get $l5 - i32.sub - i32.const 5 - i32.shl - call $f100 - local.get $l3 - i32.const 76 - i32.add - local.get $p1 - i32.const 24 - i32.add - i64.load align=1 - i64.store align=1 - local.get $l3 - i32.const 68 - i32.add - local.get $p1 - i32.const 16 - i32.add - i64.load align=1 - i64.store align=1 - local.get $l3 - i32.const 60 - i32.add - local.get $p1 - i32.const 8 - i32.add - i64.load align=1 - i64.store align=1 - local.get $l6 - local.get $p1 - i64.load align=1 - i64.store align=1 - local.get $p0 - i32.load offset=4 - local.tee $p1 - local.get $p0 - i32.load offset=8 - local.tee $l3 - i32.const 2 - i32.shl - i32.add - local.tee $l4 - i32.const 8 - i32.add - local.get $l4 - i32.const 4 - i32.add - local.tee $l4 - local.get $p1 - i32.load16_u offset=50 - local.get $l3 - i32.sub - i32.const 2 - i32.shl - call $f100 - local.get $l4 - local.get $p2 - i32.store - local.get $p0 - i32.load offset=4 - local.tee $p1 - local.get $p1 - i32.load16_u offset=50 - i32.const 1 - i32.add - i32.store16 offset=50 - local.get $p0 - i32.load offset=4 - local.get $p0 - i32.load offset=8 - i32.const 2 - i32.shl - i32.add - i32.const 4 - i32.add) - (func $f52 (type $t2) (param $p0 i32) (param $p1 i32) - (local $l2 i32) (local $l3 i32) (local $l4 i32) - global.get $g0 - i32.const 48 - i32.sub - local.tee $l2 - global.set $g0 - local.get $l2 - i32.const 40 - i32.add - local.tee $l3 - local.get $p1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $l2 - local.get $p1 - i64.load align=4 - i64.store offset=32 - local.get $l2 - i32.const 16 - i32.add - local.tee $p1 - local.get $l2 - i32.const 32 - i32.add - local.tee $l4 - i64.load align=4 - i64.store align=4 - local.get $p1 - i32.const 8 - i32.add - local.get $l4 - i32.const 8 - i32.add - i32.load - i32.store - local.get $l3 - local.get $l2 - i32.const 24 - i32.add - i32.load - i32.store - local.get $l2 - local.get $l2 - i64.load offset=16 - i64.store offset=32 - loop $L0 - local.get $l2 - i32.const 8 - i32.add - local.get $l2 - i32.const 32 - i32.add - call $f47 - local.get $l2 - i32.load offset=8 - if $I1 - local.get $p0 - i32.load offset=4 - local.tee $p1 - local.get $l2 - i32.load offset=12 - local.tee $l3 - i32.const 2 - i32.shl - i32.add - i32.const 404 - i32.add - i32.load - local.tee $l4 - local.get $l3 - i32.store16 offset=48 - local.get $l4 - local.get $p1 - i32.store - br $L0 - else - local.get $l2 - i32.const 48 - i32.add - global.set $g0 - end - end) - (func $f53 (type $t1) (param $p0 i32) (param $p1 i32) (param $p2 i32) (param $p3 i32) - (local $l4 i32) (local $l5 i32) (local $l6 i32) (local $l7 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l5 - global.set $g0 - local.get $p0 - i32.load offset=4 - local.tee $l4 - local.get $p0 - i32.load offset=8 - local.tee $l7 - i32.const 2 - i32.shl - i32.add - local.tee $l6 - i32.const 412 - i32.add - local.get $l6 - i32.const 408 - i32.add - local.tee $l6 - local.get $l4 - i32.load16_u offset=50 - local.get $l7 - i32.sub - i32.const 2 - i32.shl - call $f100 - local.get $l6 - local.get $p3 - i32.store - local.get $p0 - i32.load offset=4 - local.tee $l4 - local.get $p0 - i32.load offset=8 - local.tee $l7 - i32.const 5 - i32.shl - i32.add - local.tee $p3 - i32.const 84 - i32.add - local.get $p3 - i32.const 52 - i32.add - local.tee $l6 - local.get $l4 - i32.load16_u offset=50 - local.get $l7 - i32.sub - i32.const 5 - i32.shl - call $f100 - local.get $p3 - i32.const 76 - i32.add - local.get $p1 - i32.const 24 - i32.add - i64.load align=1 - i64.store align=1 - local.get $p3 - i32.const 68 - i32.add - local.get $p1 - i32.const 16 - i32.add - i64.load align=1 - i64.store align=1 - local.get $p3 - i32.const 60 - i32.add - local.get $p1 - i32.const 8 - i32.add - i64.load align=1 - i64.store align=1 - local.get $l6 - local.get $p1 - i64.load align=1 - i64.store align=1 - local.get $p0 - i32.load offset=4 - local.tee $p1 - local.get $p0 - i32.load offset=8 - local.tee $p3 - i32.const 2 - i32.shl - i32.add - local.tee $l4 - i32.const 8 - i32.add - local.get $l4 - i32.const 4 - i32.add - local.tee $l4 - local.get $p1 - i32.load16_u offset=50 - local.get $p3 - i32.sub - i32.const 2 - i32.shl - call $f100 - local.get $l4 - local.get $p2 - i32.store - local.get $p0 - i32.load offset=4 - local.tee $p1 - local.get $p1 - i32.load16_u offset=50 - i32.const 1 - i32.add - i32.store16 offset=50 - local.get $l5 - i32.const 0 - i32.store8 offset=8 - local.get $l5 - local.get $p0 - i32.load offset=4 - i32.load16_u offset=50 - i32.store offset=4 - local.get $l5 - local.get $p0 - i32.load offset=8 - i32.const 1 - i32.add - i32.store - local.get $p0 - local.get $l5 - call $f52 - local.get $l5 - i32.const 16 - i32.add - global.set $g0) - (func $f54 (type $t4) (param $p0 i32) (param $p1 i32) (param $p2 i32) (result i32) - (local $l3 i32) (local $l4 i32) (local $l5 i32) - local.get $p0 - i32.load offset=4 - local.tee $l4 - local.get $p0 - i32.load offset=8 - local.tee $l3 - i32.const 2 - i32.shl - i32.add - local.tee $l5 - i32.const 8 - i32.add - local.get $l5 - i32.const 4 - i32.add - local.tee $l5 - local.get $l4 - i32.load16_u offset=94 - local.get $l3 - i32.sub - i32.const 2 - i32.shl - call $f100 - local.get $l5 - local.get $p1 - i32.store - local.get $p0 - i32.load offset=4 - local.tee $p1 - local.get $p0 - i32.load offset=8 - local.tee $l4 - i32.const 2 - i32.shl - i32.add - local.tee $l3 - i32.const 52 - i32.add - local.get $l3 - i32.const 48 - i32.add - local.tee $l3 - local.get $p1 - i32.load16_u offset=94 - local.get $l4 - i32.sub - i32.const 2 - i32.shl - call $f100 - local.get $l3 - local.get $p2 - i32.store - local.get $p0 - i32.load offset=4 - local.tee $p1 - local.get $p1 - i32.load16_u offset=94 - i32.const 1 - i32.add - i32.store16 offset=94 - local.get $p0 - i32.load offset=4 - local.get $p0 - i32.load offset=8 - i32.const 2 - i32.shl - i32.add - i32.const 48 - i32.add) - (func $f55 (type $t2) (param $p0 i32) (param $p1 i32) - (local $l2 i32) (local $l3 i32) (local $l4 i32) - global.get $g0 - i32.const 48 - i32.sub - local.tee $l2 - global.set $g0 - local.get $l2 - i32.const 40 - i32.add - local.tee $l3 - local.get $p1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $l2 - local.get $p1 - i64.load align=4 - i64.store offset=32 - local.get $l2 - i32.const 16 - i32.add - local.tee $p1 - local.get $l2 - i32.const 32 - i32.add - local.tee $l4 - i64.load align=4 - i64.store align=4 - local.get $p1 - i32.const 8 - i32.add - local.get $l4 - i32.const 8 - i32.add - i32.load - i32.store - local.get $l3 - local.get $l2 - i32.const 24 - i32.add - i32.load - i32.store - local.get $l2 - local.get $l2 - i64.load offset=16 - i64.store offset=32 - loop $L0 - local.get $l2 - i32.const 8 - i32.add - local.get $l2 - i32.const 32 - i32.add - call $f47 - local.get $l2 - i32.load offset=8 - if $I1 - local.get $p0 - i32.load offset=4 - local.tee $p1 - local.get $l2 - i32.load offset=12 - local.tee $l3 - i32.const 2 - i32.shl - i32.add - i32.const 96 - i32.add - i32.load - local.tee $l4 - local.get $l3 - i32.store16 offset=92 - local.get $l4 - local.get $p1 - i32.store - br $L0 - else - local.get $l2 - i32.const 48 - i32.add - global.set $g0 - end - end) - (func $f56 (type $t1) (param $p0 i32) (param $p1 i32) (param $p2 i32) (param $p3 i32) - (local $l4 i32) (local $l5 i32) (local $l6 i32) (local $l7 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l5 - global.set $g0 - local.get $p0 - i32.load offset=4 - local.tee $l4 - local.get $p0 - i32.load offset=8 - local.tee $l6 - i32.const 2 - i32.shl - i32.add - local.tee $l7 - i32.const 104 - i32.add - local.get $l7 - i32.const 100 - i32.add - local.tee $l7 - local.get $l4 - i32.load16_u offset=94 - local.get $l6 - i32.sub - i32.const 2 - i32.shl - call $f100 - local.get $l7 - local.get $p3 - i32.store - local.get $p0 - i32.load offset=4 - local.tee $p3 - local.get $p0 - i32.load offset=8 - local.tee $l4 - i32.const 2 - i32.shl - i32.add - local.tee $l6 - i32.const 8 - i32.add - local.get $l6 - i32.const 4 - i32.add - local.tee $l6 - local.get $p3 - i32.load16_u offset=94 - local.get $l4 - i32.sub - i32.const 2 - i32.shl - call $f100 - local.get $l6 - local.get $p1 - i32.store - local.get $p0 - i32.load offset=4 - local.tee $p1 - local.get $p0 - i32.load offset=8 - local.tee $p3 - i32.const 2 - i32.shl - i32.add - local.tee $l4 - i32.const 52 - i32.add - local.get $l4 - i32.const 48 - i32.add - local.tee $l4 - local.get $p1 - i32.load16_u offset=94 - local.get $p3 - i32.sub - i32.const 2 - i32.shl - call $f100 - local.get $l4 - local.get $p2 - i32.store - local.get $p0 - i32.load offset=4 - local.tee $p1 - local.get $p1 - i32.load16_u offset=94 - i32.const 1 - i32.add - i32.store16 offset=94 - local.get $l5 - i32.const 0 - i32.store8 offset=8 - local.get $l5 - local.get $p0 - i32.load offset=4 - i32.load16_u offset=94 - i32.store offset=4 - local.get $l5 - local.get $p0 - i32.load offset=8 - i32.const 1 - i32.add - i32.store - local.get $p0 - local.get $l5 - call $f55 - local.get $l5 - i32.const 16 - i32.add - global.set $g0) - (func $f57 (type $t0) (param $p0 i32) (param $p1 i32) (param $p2 i32) - block $B0 - local.get $p1 - i32.eqz - if $I1 - i32.const 0 - local.set $p1 - br $B0 - end - local.get $p1 - local.get $p2 - call $f58 - local.set $p2 - end - local.get $p0 - local.get $p1 - i32.store offset=4 - local.get $p0 - local.get $p2 - i32.store) - (func $f58 (type $t5) (param $p0 i32) (param $p1 i32) (result i32) - local.get $p0 - local.get $p1 - call $f88) - (func $f59 (type $t2) (param $p0 i32) (param $p1 i32) - (local $l2 i32) (local $l3 i32) (local $l4 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l2 - global.set $g0 - block $B0 - block $B1 - loop $L2 - local.get $l2 - local.get $l4 - i32.store8 offset=12 - local.get $l3 - i32.const 4 - i32.eq - br_if $B1 - local.get $l2 - local.get $p1 - call $f60 - local.get $l2 - i32.load8_u - i32.const 1 - i32.and - i32.eqz - if $I3 - local.get $l2 - i32.const 8 - i32.add - local.get $l3 - i32.add - local.get $l2 - i32.load8_u offset=1 - i32.store8 - local.get $l4 - i32.const 1 - i32.add - local.set $l4 - local.get $l3 - i32.const 1 - i32.add - local.set $l3 - br $L2 - end - end - local.get $p0 - i32.const 1 - i32.store8 - local.get $l2 - i32.const 8 - i32.add - call $f45 - br $B0 - end - local.get $p0 - local.get $l2 - i32.load offset=8 - i32.store offset=1 align=1 - local.get $p0 - i32.const 0 - i32.store8 - end - local.get $l2 - i32.const 16 - i32.add - global.set $g0) - (func $f60 (type $t2) (param $p0 i32) (param $p1 i32) - (local $l2 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l2 - global.set $g0 - local.get $l2 - i32.const 8 - i32.add - local.get $p1 - call $f23 - local.get $l2 - i32.load8_u offset=8 - local.set $p1 - local.get $p0 - local.get $l2 - i32.load8_u offset=9 - i32.store8 offset=1 - local.get $p0 - local.get $p1 - i32.const 1 - i32.and - i32.store8 - local.get $l2 - i32.const 16 - i32.add - global.set $g0) - (func $f61 (type $t3) (param $p0 i32) - (local $l1 i32) (local $l2 i32) (local $l3 i32) (local $l4 i32) (local $l5 i32) (local $l6 i32) (local $l7 i32) (local $l8 i32) (local $l9 i32) (local $l10 i64) - global.get $g0 - i32.const 192 - i32.sub - local.tee $l1 - global.set $g0 - local.get $l1 - i32.const 8 - i32.add - local.get $p0 - i32.const 72 - call $f99 - block $B0 - block $B1 - block $B2 - block $B3 - block $B4 - block $B5 - local.get $l1 - i32.load8_u offset=8 - local.tee $l9 - i32.const 1 - i32.sub - br_table $B3 $B2 $B5 $B4 - end - local.get $l1 - i32.const 168 - i32.add - local.tee $l3 - i32.const 16384 - i32.store - local.get $l1 - i32.const 65796 - i32.store offset=164 - local.get $l1 - i32.const 0 - i32.store offset=160 - local.get $l1 - i32.const 160 - i32.add - i32.const 3 - call $f42 - local.get $l1 - i32.const 136 - i32.add - local.get $l3 - i32.load - local.tee $p0 - i32.store - local.get $l1 - local.get $l1 - i64.load offset=160 - local.tee $l10 - i64.store offset=128 - local.get $l1 - i32.const 144 - i32.add - local.get $l10 - i32.wrap_i64 - local.get $l1 - i32.load offset=132 - local.get $p0 - call $f39 - local.get $l1 - i64.load offset=148 align=4 - local.set $l10 - local.get $l1 - i32.const 0 - i32.store offset=168 - local.get $l1 - local.get $l10 - i64.store offset=160 - local.get $l1 - i32.const 160 - i32.add - i32.const 65701 - i32.const 51 - call $f18 - local.get $l1 - i32.const 152 - i32.add - i32.const 0 - i32.store - local.get $l1 - i32.const 65792 - i32.store offset=148 - local.get $l1 - i32.load offset=164 - local.tee $l4 - local.get $l1 - i32.load offset=168 - local.tee $p0 - i32.lt_u - br_if $B0 - local.get $l1 - i32.const 8 - i32.add - i32.const 1 - i32.or - local.set $l5 - local.get $l1 - i32.load offset=160 - local.set $l2 - local.get $l1 - local.get $l4 - local.get $p0 - i32.sub - i32.store offset=152 - local.get $l1 - local.get $p0 - local.get $l2 - i32.add - i32.store offset=148 - local.get $l1 - i32.const 184 - i32.add - local.tee $l4 - i64.const 0 - i64.store - local.get $l1 - i32.const 176 - i32.add - local.tee $l6 - i64.const 0 - i64.store - local.get $l3 - i64.const 0 - i64.store - local.get $l1 - i64.const 0 - i64.store offset=160 - block $B6 - local.get $p0 - i32.const 33 - i32.ge_u - if $I7 - local.get $l1 - i32.const 104 - i32.add - local.tee $l3 - i64.const 0 - i64.store - local.get $l1 - i32.const 96 - i32.add - local.tee $l7 - i64.const 0 - i64.store - local.get $l1 - i32.const 88 - i32.add - local.tee $l8 - i64.const 0 - i64.store - local.get $l1 - i64.const 0 - i64.store offset=80 - local.get $l2 - local.get $p0 - local.get $l1 - i32.const 80 - i32.add - call $seal0.seal_hash_blake2_256 - local.get $l4 - local.get $l3 - i64.load - i64.store - local.get $l6 - local.get $l7 - i64.load - i64.store - local.get $l1 - i32.const 168 - i32.add - local.get $l8 - i64.load - i64.store - local.get $l1 - local.get $l1 - i64.load offset=80 - i64.store offset=160 - br $B6 - end - local.get $l1 - i32.const 160 - i32.add - local.get $l2 - local.get $p0 - call $f99 - end - local.get $l1 - i32.const 128 - i32.add - local.get $l1 - i32.const 160 - i32.add - call $f40 - local.get $l1 - i32.const 88 - i32.add - local.tee $p0 - local.get $l1 - i32.const 136 - i32.add - i32.load - i32.store - local.get $l1 - local.get $l1 - i64.load offset=128 - i64.store offset=80 - local.get $l1 - i32.const 80 - i32.add - local.get $l5 - call $f41 - local.get $l1 - i32.const 168 - i32.add - local.tee $l2 - local.get $p0 - i32.load - i32.store - local.get $l1 - local.get $l1 - i64.load offset=80 - i64.store offset=160 - local.get $l1 - i32.const 160 - i32.add - local.get $l1 - i32.const 41 - i32.add - call $f41 - local.get $p0 - local.get $l2 - i32.load - i32.store - local.get $l1 - local.get $l1 - i64.load offset=160 - i64.store offset=80 - local.get $l1 - i32.const 160 - i32.add - local.get $l1 - i32.const 80 - i32.add - call $f62 - br $B1 - end - local.get $l1 - i32.const 168 - i32.add - local.tee $l3 - i32.const 16384 - i32.store - local.get $l1 - i32.const 65796 - i32.store offset=164 - local.get $l1 - i32.const 0 - i32.store offset=160 - local.get $l1 - i32.const 160 - i32.add - i32.const 3 - call $f42 - local.get $l1 - i32.const 136 - i32.add - local.get $l3 - i32.load - local.tee $p0 - i32.store - local.get $l1 - local.get $l1 - i64.load offset=160 - local.tee $l10 - i64.store offset=128 - local.get $l1 - i32.const 144 - i32.add - local.get $l10 - i32.wrap_i64 - local.get $l1 - i32.load offset=132 - local.get $p0 - call $f39 - local.get $l1 - i64.load offset=148 align=4 - local.set $l10 - local.get $l1 - i32.const 0 - i32.store offset=168 - local.get $l1 - local.get $l10 - i64.store offset=160 - local.get $l1 - i32.const 160 - i32.add - i32.const 65536 - i32.const 57 - call $f18 - local.get $l1 - i32.const 152 - i32.add - i32.const 0 - i32.store - local.get $l1 - i32.const 65792 - i32.store offset=148 - local.get $l1 - i32.load offset=164 - local.tee $l4 - local.get $l1 - i32.load offset=168 - local.tee $p0 - i32.lt_u - br_if $B0 - local.get $l1 - i32.load offset=160 - local.set $l2 - local.get $l1 - local.get $l4 - local.get $p0 - i32.sub - i32.store offset=152 - local.get $l1 - local.get $p0 - local.get $l2 - i32.add - i32.store offset=148 - local.get $l1 - i32.const 184 - i32.add - local.tee $l4 - i64.const 0 - i64.store - local.get $l1 - i32.const 176 - i32.add - local.tee $l5 - i64.const 0 - i64.store - local.get $l3 - i64.const 0 - i64.store - local.get $l1 - i64.const 0 - i64.store offset=160 - block $B8 - local.get $p0 - i32.const 33 - i32.ge_u - if $I9 - local.get $l1 - i32.const 104 - i32.add - local.tee $l3 - i64.const 0 - i64.store - local.get $l1 - i32.const 96 - i32.add - local.tee $l6 - i64.const 0 - i64.store - local.get $l1 - i32.const 88 - i32.add - local.tee $l7 - i64.const 0 - i64.store - local.get $l1 - i64.const 0 - i64.store offset=80 - local.get $l2 - local.get $p0 - local.get $l1 - i32.const 80 - i32.add - call $seal0.seal_hash_blake2_256 - local.get $l4 - local.get $l3 - i64.load - i64.store - local.get $l5 - local.get $l6 - i64.load - i64.store - local.get $l1 - i32.const 168 - i32.add - local.get $l7 - i64.load - i64.store - local.get $l1 - local.get $l1 - i64.load offset=80 - i64.store offset=160 - br $B8 - end - local.get $l1 - i32.const 160 - i32.add - local.get $l2 - local.get $p0 - call $f99 - end - local.get $l1 - i32.const 128 - i32.add - local.get $l1 - i32.const 160 - i32.add - call $f40 - local.get $l1 - i32.const 88 - i32.add - local.tee $p0 - local.get $l1 - i32.const 136 - i32.add - i32.load - i32.store - local.get $l1 - local.get $l1 - i64.load offset=128 - i64.store offset=80 - local.get $l1 - i32.const 80 - i32.add - local.get $l1 - i64.load offset=16 - local.get $l1 - i32.const 24 - i32.add - i64.load - call $f38 - local.get $l1 - i32.const 168 - i32.add - local.tee $l2 - local.get $p0 - i32.load - i32.store - local.get $l1 - local.get $l1 - i64.load offset=80 - i64.store offset=160 - local.get $l1 - i32.const 160 - i32.add - local.get $l1 - i32.const 32 - i32.add - i64.load - local.get $l1 - i32.const 40 - i32.add - i64.load - call $f38 - local.get $p0 - local.get $l2 - i32.load - i32.store - local.get $l1 - local.get $l1 - i64.load offset=160 - i64.store offset=80 - local.get $l1 - i32.const 160 - i32.add - local.get $l1 - i32.const 80 - i32.add - call $f62 - br $B1 - end - local.get $l1 - i32.const 168 - i32.add - local.tee $l3 - i32.const 16384 - i32.store - local.get $l1 - i32.const 65796 - i32.store offset=164 - local.get $l1 - i32.const 0 - i32.store offset=160 - local.get $l1 - i32.const 160 - i32.add - i32.const 2 - call $f42 - local.get $l1 - i32.const 136 - i32.add - local.get $l3 - i32.load - local.tee $p0 - i32.store - local.get $l1 - local.get $l1 - i64.load offset=160 - local.tee $l10 - i64.store offset=128 - local.get $l1 - i32.const 144 - i32.add - local.get $l10 - i32.wrap_i64 - local.get $l1 - i32.load offset=132 - local.get $p0 - call $f39 - local.get $l1 - i64.load offset=148 align=4 - local.set $l10 - local.get $l1 - i32.const 0 - i32.store offset=168 - local.get $l1 - local.get $l10 - i64.store offset=160 - local.get $l1 - i32.const 160 - i32.add - i32.const 65593 - i32.const 55 - call $f18 - local.get $l1 - i32.const 152 - i32.add - i32.const 0 - i32.store - local.get $l1 - i32.const 65792 - i32.store offset=148 - local.get $l1 - i32.load offset=164 - local.tee $l4 - local.get $l1 - i32.load offset=168 - local.tee $p0 - i32.lt_u - br_if $B0 - local.get $l1 - i32.load offset=160 - local.set $l2 - local.get $l1 - local.get $l4 - local.get $p0 - i32.sub - i32.store offset=152 - local.get $l1 - local.get $p0 - local.get $l2 - i32.add - i32.store offset=148 - local.get $l1 - i32.const 184 - i32.add - local.tee $l4 - i64.const 0 - i64.store - local.get $l1 - i32.const 176 - i32.add - local.tee $l5 - i64.const 0 - i64.store - local.get $l3 - i64.const 0 - i64.store - local.get $l1 - i64.const 0 - i64.store offset=160 - block $B10 - local.get $p0 - i32.const 33 - i32.ge_u - if $I11 - local.get $l1 - i32.const 104 - i32.add - local.tee $l3 - i64.const 0 - i64.store - local.get $l1 - i32.const 96 - i32.add - local.tee $l6 - i64.const 0 - i64.store - local.get $l1 - i32.const 88 - i32.add - local.tee $l7 - i64.const 0 - i64.store - local.get $l1 - i64.const 0 - i64.store offset=80 - local.get $l2 - local.get $p0 - local.get $l1 - i32.const 80 - i32.add - call $seal0.seal_hash_blake2_256 - local.get $l4 - local.get $l3 - i64.load - i64.store - local.get $l5 - local.get $l6 - i64.load - i64.store - local.get $l1 - i32.const 168 - i32.add - local.get $l7 - i64.load - i64.store - local.get $l1 - local.get $l1 - i64.load offset=80 - i64.store offset=160 - br $B10 - end - local.get $l1 - i32.const 160 - i32.add - local.get $l2 - local.get $p0 - call $f99 - end - local.get $l1 - i32.const 128 - i32.add - local.get $l1 - i32.const 160 - i32.add - call $f40 - local.get $l1 - i32.const 88 - i32.add - local.get $l1 - i32.const 136 - i32.add - i32.load - i32.store - local.get $l1 - local.get $l1 - i64.load offset=128 - i64.store offset=80 - local.get $l1 - i32.const 144 - i32.add - local.get $l1 - i32.const 80 - i32.add - local.get $l1 - i32.load8_u offset=9 - call $f63 - local.get $l1 - i32.const 160 - i32.add - local.get $l1 - i32.const 144 - i32.add - call $f62 - br $B1 - end - local.get $l1 - i32.const 168 - i32.add - local.tee $l3 - i32.const 16384 - i32.store - local.get $l1 - i32.const 65796 - i32.store offset=164 - local.get $l1 - i32.const 0 - i32.store offset=160 - local.get $l1 - i32.const 160 - i32.add - i32.const 3 - call $f42 - local.get $l1 - i32.const 136 - i32.add - local.get $l3 - i32.load - local.tee $p0 - i32.store - local.get $l1 - local.get $l1 - i64.load offset=160 - local.tee $l10 - i64.store offset=128 - local.get $l1 - i32.const 144 - i32.add - local.get $l10 - i32.wrap_i64 - local.get $l1 - i32.load offset=132 - local.get $p0 - call $f39 - local.get $l1 - i64.load offset=148 align=4 - local.set $l10 - local.get $l1 - i32.const 0 - i32.store offset=168 - local.get $l1 - local.get $l10 - i64.store offset=160 - local.get $l1 - i32.const 160 - i32.add - i32.const 65648 - i32.const 53 - call $f18 - local.get $l1 - i32.const 152 - i32.add - i32.const 0 - i32.store - local.get $l1 - i32.const 65792 - i32.store offset=148 - local.get $l1 - i32.load offset=164 - local.tee $l4 - local.get $l1 - i32.load offset=168 - local.tee $p0 - i32.lt_u - br_if $B0 - local.get $l1 - i32.const 8 - i32.add - i32.const 1 - i32.or - local.get $l1 - i32.load offset=160 - local.set $l2 - local.get $l1 - local.get $l4 - local.get $p0 - i32.sub - i32.store offset=152 - local.get $l1 - local.get $p0 - local.get $l2 - i32.add - i32.store offset=148 - local.get $l1 - i32.const 184 - i32.add - local.tee $l4 - i64.const 0 - i64.store - local.get $l1 - i32.const 176 - i32.add - local.tee $l6 - i64.const 0 - i64.store - local.get $l3 - i64.const 0 - i64.store - local.get $l1 - i64.const 0 - i64.store offset=160 - block $B12 - local.get $p0 - i32.const 33 - i32.ge_u - if $I13 - local.get $l1 - i32.const 104 - i32.add - local.tee $l3 - i64.const 0 - i64.store - local.get $l1 - i32.const 96 - i32.add - local.tee $l7 - i64.const 0 - i64.store - local.get $l1 - i32.const 88 - i32.add - local.tee $l8 - i64.const 0 - i64.store - local.get $l1 - i64.const 0 - i64.store offset=80 - local.get $l2 - local.get $p0 - local.get $l1 - i32.const 80 - i32.add - call $seal0.seal_hash_blake2_256 - local.get $l4 - local.get $l3 - i64.load - i64.store - local.get $l6 - local.get $l7 - i64.load - i64.store - local.get $l1 - i32.const 168 - i32.add - local.get $l8 - i64.load - i64.store - local.get $l1 - local.get $l1 - i64.load offset=80 - i64.store offset=160 - br $B12 - end - local.get $l1 - i32.const 160 - i32.add - local.get $l2 - local.get $p0 - call $f99 - end - local.get $l1 - i32.const 128 - i32.add - local.get $l1 - i32.const 160 - i32.add - call $f40 - local.get $l1 - i32.const 120 - i32.add - local.get $l1 - i32.const 136 - i32.add - i32.load - local.tee $p0 - i32.store - local.get $l1 - local.get $l1 - i64.load offset=128 - local.tee $l10 - i64.store offset=112 - local.get $l1 - i32.const 144 - i32.add - local.get $l10 - i32.wrap_i64 - local.get $l1 - i32.load offset=116 - local.get $p0 - call $f39 - local.get $l1 - i64.load offset=148 align=4 - local.set $l10 - local.get $l1 - i32.const 0 - i32.store offset=168 - local.get $l1 - local.get $l10 - i64.store offset=160 - local.get $l1 - i32.const 160 - i32.add - call $f19 - local.get $l1 - i32.const 152 - i32.add - i32.const 0 - i32.store - local.get $l1 - i32.const 65792 - i32.store offset=148 - local.get $l1 - i32.load offset=164 - local.tee $l3 - local.get $l1 - i32.load offset=168 - local.tee $p0 - i32.lt_u - br_if $B0 - local.get $l1 - i32.load offset=160 - local.set $l2 - local.get $l1 - local.get $l3 - local.get $p0 - i32.sub - i32.store offset=152 - local.get $l1 - local.get $p0 - local.get $l2 - i32.add - i32.store offset=148 - local.get $l1 - i32.const 184 - i32.add - local.tee $l3 - i64.const 0 - i64.store - local.get $l1 - i32.const 176 - i32.add - local.tee $l4 - i64.const 0 - i64.store - local.get $l1 - i32.const 168 - i32.add - i64.const 0 - i64.store - local.get $l1 - i64.const 0 - i64.store offset=160 - block $B14 - local.get $p0 - i32.const 33 - i32.ge_u - if $I15 - local.get $l1 - i32.const 104 - i32.add - local.tee $l5 - i64.const 0 - i64.store - local.get $l1 - i32.const 96 - i32.add - local.tee $l6 - i64.const 0 - i64.store - local.get $l1 - i32.const 88 - i32.add - local.tee $l7 - i64.const 0 - i64.store - local.get $l1 - i64.const 0 - i64.store offset=80 - local.get $l2 - local.get $p0 - local.get $l1 - i32.const 80 - i32.add - call $seal0.seal_hash_blake2_256 - local.get $l3 - local.get $l5 - i64.load - i64.store - local.get $l4 - local.get $l6 - i64.load - i64.store - local.get $l1 - i32.const 168 - i32.add - local.get $l7 - i64.load - i64.store - local.get $l1 - local.get $l1 - i64.load offset=80 - i64.store offset=160 - br $B14 - end - local.get $l1 - i32.const 160 - i32.add - local.get $l2 - local.get $p0 - call $f99 - end - local.get $l1 - i32.const 112 - i32.add - local.get $l1 - i32.const 160 - i32.add - call $f40 - local.get $l1 - i32.const 88 - i32.add - local.get $l1 - i32.const 120 - i32.add - i32.load - i32.store - local.get $l1 - local.get $l1 - i64.load offset=112 - i64.store offset=80 - local.get $l1 - i32.const 144 - i32.add - local.get $l1 - i32.const 80 - i32.add - local.get $l1 - i32.const 41 - i32.add - i32.load8_u - call $f63 - local.get $l1 - i32.const 160 - i32.add - local.get $l1 - i32.const 144 - i32.add - call $f62 - end - local.get $l1 - i32.const 176 - i32.add - i32.load - local.set $l3 - local.get $l1 - i32.const 168 - i32.add - i32.load - local.set $p0 - local.get $l1 - i32.load offset=172 - local.get $l1 - i32.load offset=164 - local.set $l2 - local.get $l1 - i32.const 0 - i32.store offset=168 - local.get $l1 - local.get $p0 - i32.store offset=164 - local.get $l1 - local.get $l2 - i32.store offset=160 - block $B16 - block $B17 - block $B18 - block $B19 - block $B20 - local.get $l9 - i32.const 1 - i32.sub - br_table $B19 $B18 $B17 $B20 - end - local.get $p0 - i32.eqz - br_if $B0 - local.get $l2 - i32.const 0 - i32.store8 - local.get $l1 - local.get $l1 - i32.load offset=168 - i32.const 1 - i32.add - i32.store offset=168 - local.get $l1 - i32.const 16 - i32.add - i64.load - local.get $l1 - i32.const 24 - i32.add - i64.load - local.get $l1 - i32.const 160 - i32.add - call $f44 - local.get $l1 - i32.const 32 - i32.add - i64.load - local.get $l1 - i32.const 40 - i32.add - i64.load - local.get $l1 - i32.const 160 - i32.add - call $f44 - br $B16 - end - local.get $p0 - i32.eqz - br_if $B0 - local.get $l2 - i32.const 1 - i32.store8 - local.get $l1 - local.get $l1 - i32.load offset=168 - i32.const 1 - i32.add - i32.store offset=168 - local.get $l1 - i32.load8_u offset=9 - local.get $l1 - i32.const 160 - i32.add - call $f37 - br $B16 - end - local.get $p0 - i32.eqz - br_if $B0 - local.get $l2 - i32.const 2 - i32.store8 - local.get $l1 - local.get $l1 - i32.load offset=168 - i32.const 1 - i32.add - i32.store offset=168 - local.get $l1 - i32.const 8 - i32.add - i32.const 1 - i32.or - local.get $l1 - i32.const 160 - i32.add - call $f19 - local.get $l1 - i32.const 41 - i32.add - i32.load8_u - local.get $l1 - i32.const 160 - i32.add - call $f37 - br $B16 - end - local.get $p0 - i32.eqz - br_if $B0 - local.get $l2 - i32.const 3 - i32.store8 - local.get $l1 - local.get $l1 - i32.load offset=168 - i32.const 1 - i32.add - i32.store offset=168 - local.get $l1 - i32.const 8 - i32.add - i32.const 1 - i32.or - local.get $l1 - i32.const 160 - i32.add - call $f19 - local.get $l1 - i32.const 41 - i32.add - local.get $l1 - i32.const 160 - i32.add - call $f19 - end - local.get $l1 - i32.load offset=164 - local.get $l1 - i32.load offset=168 - local.tee $p0 - i32.lt_u - br_if $B0 - local.get $l3 - local.get $l1 - i32.load offset=160 - local.get $p0 - call $seal0.seal_deposit_event - local.get $l1 - i32.const 192 - i32.add - global.set $g0 - return - end - unreachable) - (func $f62 (type $t2) (param $p0 i32) (param $p1 i32) - (local $l2 i32) (local $l3 i32) - local.get $p1 - i32.const 8 - i32.add - i32.load - local.tee $l3 - local.get $p1 - i32.load - local.tee $l2 - i32.lt_u - if $I0 - unreachable - end - local.get $p0 - local.get $p1 - i32.load offset=4 - local.tee $p1 - i32.store offset=12 - local.get $p0 - i32.const 0 - i32.store - local.get $p0 - i32.const 16 - i32.add - local.get $l2 - i32.store - local.get $p0 - i32.const 8 - i32.add - local.get $l3 - local.get $l2 - i32.sub - i32.store - local.get $p0 - local.get $p1 - local.get $l2 - i32.add - i32.store offset=4) - (func $f63 (type $t0) (param $p0 i32) (param $p1 i32) (param $p2 i32) - (local $l3 i32) (local $l4 i32) (local $l5 i32) (local $l6 i32) (local $l7 i32) (local $l8 i32) (local $l9 i32) (local $l10 i32) - global.get $g0 - i32.const 96 - i32.sub - local.tee $l3 - global.set $g0 - local.get $l3 - i32.const 16 - i32.add - local.get $p1 - i32.load - local.get $p1 - i32.const 4 - i32.add - i32.load - local.get $p1 - i32.const 8 - i32.add - i32.load - call $f39 - local.get $l3 - i32.const 8 - i32.add - local.get $l3 - i32.const 16 - i32.add - local.get $p2 - call $f35 - local.get $l3 - i32.load offset=8 - local.set $l4 - local.get $l3 - i32.load offset=12 - local.set $p2 - local.get $l3 - i32.const 56 - i32.add - local.tee $l5 - i64.const 0 - i64.store - local.get $l3 - i32.const 48 - i32.add - local.tee $l6 - i64.const 0 - i64.store - local.get $l3 - i32.const 40 - i32.add - local.tee $l7 - i64.const 0 - i64.store - local.get $l3 - i64.const 0 - i64.store offset=32 - block $B0 - local.get $p2 - i32.const 33 - i32.ge_u - if $I1 - local.get $l3 - i32.const 88 - i32.add - local.tee $l8 - i64.const 0 - i64.store - local.get $l3 - i32.const 80 - i32.add - local.tee $l9 - i64.const 0 - i64.store - local.get $l3 - i32.const 72 - i32.add - local.tee $l10 - i64.const 0 - i64.store - local.get $l3 - i64.const 0 - i64.store offset=64 - local.get $l4 - local.get $p2 - local.get $l3 - i32.const -64 - i32.sub - call $seal0.seal_hash_blake2_256 - local.get $l5 - local.get $l8 - i64.load - i64.store - local.get $l6 - local.get $l9 - i64.load - i64.store - local.get $l7 - local.get $l10 - i64.load - i64.store - local.get $l3 - local.get $l3 - i64.load offset=64 - i64.store offset=32 - br $B0 - end - local.get $l3 - i32.const 32 - i32.add - local.get $l4 - local.get $p2 - call $f99 - end - local.get $p1 - local.get $l3 - i32.const 32 - i32.add - call $f40 - local.get $p0 - i32.const 8 - i32.add - local.get $p1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $p0 - local.get $p1 - i64.load align=4 - i64.store align=4 - local.get $l3 - i32.const 96 - i32.add - global.set $g0) - (func $f64 (type $t3) (param $p0 i32) - (local $l1 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l1 - global.set $g0 - local.get $l1 - local.get $p0 - i32.store offset=12 - local.get $l1 - i32.const 12 - i32.add - i32.load - i32.load8_u - call $f69 - unreachable) - (func $f65 (type $t3) (param $p0 i32) - (local $l1 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l1 - global.set $g0 - local.get $l1 - local.get $p0 - i32.store offset=12 - local.get $l1 - i32.const 12 - i32.add - i32.load - i32.load8_u - call $f68 - unreachable) - (func $f66 (type $t3) (param $p0 i32) - (local $l1 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l1 - global.set $g0 - local.get $l1 - local.get $p0 - i32.store offset=12 - local.get $l1 - i32.const 12 - i32.add - i32.load - local.tee $p0 - i64.load - local.get $p0 - i32.const 8 - i32.add - i64.load - call $f67 - unreachable) - (func $f67 (type $t12) (param $p0 i64) (param $p1 i64) - (local $l2 i32) - global.get $g0 - i32.const 32 - i32.sub - local.tee $l2 - global.set $g0 - local.get $l2 - i32.const 24 - i32.add - i32.const 16384 - i32.store - local.get $l2 - i32.const 65796 - i32.store offset=20 - local.get $l2 - i32.const 0 - i32.store offset=16 - local.get $l2 - i32.const 8 - i32.add - local.get $l2 - i32.const 16 - i32.add - local.get $p0 - local.get $p1 - call $f34 - local.get $l2 - i32.load offset=8 - local.get $l2 - i32.load offset=12 - call $f73 - unreachable) - (func $f68 (type $t3) (param $p0 i32) - (local $l1 i32) - global.get $g0 - i32.const 32 - i32.sub - local.tee $l1 - global.set $g0 - local.get $l1 - i32.const 24 - i32.add - i32.const 16384 - i32.store - local.get $l1 - i32.const 65796 - i32.store offset=20 - local.get $l1 - i32.const 0 - i32.store offset=16 - local.get $l1 - i32.const 8 - i32.add - local.get $l1 - i32.const 16 - i32.add - local.get $p0 - call $f72 - local.get $l1 - i32.load offset=8 - local.get $l1 - i32.load offset=12 - call $f73 - unreachable) - (func $f69 (type $t3) (param $p0 i32) - (local $l1 i32) - global.get $g0 - i32.const 32 - i32.sub - local.tee $l1 - global.set $g0 - local.get $l1 - i32.const 24 - i32.add - i32.const 16384 - i32.store - local.get $l1 - i32.const 65796 - i32.store offset=20 - local.get $l1 - i32.const 0 - i32.store offset=16 - local.get $l1 - i32.const 8 - i32.add - local.get $l1 - i32.const 16 - i32.add - local.get $p0 - call $f35 - local.get $l1 - i32.load offset=8 - local.get $l1 - i32.load offset=12 - call $f73 - unreachable) - (func $f70 (type $t3) (param $p0 i32) - (local $l1 i32) - global.get $g0 - i32.const 32 - i32.sub - local.tee $l1 - global.set $g0 - local.get $l1 - i32.const 24 - i32.add - i32.const 16384 - i32.store - local.get $l1 - i32.const 65796 - i32.store offset=20 - local.get $l1 - i32.const 0 - i32.store offset=16 - local.get $l1 - i32.const 8 - i32.add - local.get $l1 - i32.const 16 - i32.add - local.get $p0 - call $f33 - local.get $l1 - i32.load offset=8 - local.get $l1 - i32.load offset=12 - call $f73 - unreachable) - (func $f71 (type $t2) (param $p0 i32) (param $p1 i32) - (local $l2 i32) (local $l3 i32) - global.get $g0 - i32.const 80 - i32.sub - local.tee $l2 - global.set $g0 - block $B0 - loop $L1 - local.get $l2 - local.get $l3 - i32.store8 offset=40 - local.get $l3 - i32.const 32 - i32.eq - if $I2 - local.get $p0 - local.get $l2 - i64.load offset=8 - i64.store offset=1 align=1 - local.get $p0 - i32.const 0 - i32.store8 - local.get $p0 - i32.const 9 - i32.add - local.get $l2 - i32.const 16 - i32.add - i64.load - i64.store align=1 - local.get $p0 - i32.const 17 - i32.add - local.get $l2 - i32.const 24 - i32.add - i64.load - i64.store align=1 - local.get $p0 - i32.const 25 - i32.add - local.get $l2 - i32.const 32 - i32.add - i64.load - i64.store align=1 - br $B0 - end - local.get $l2 - local.get $p1 - call $f60 - local.get $l2 - i32.load8_u - i32.const 1 - i32.and - i32.eqz - if $I3 - local.get $l2 - i32.const 8 - i32.add - local.get $l3 - i32.add - local.get $l2 - i32.load8_u offset=1 - i32.store8 - local.get $l3 - i32.const 1 - i32.add - local.set $l3 - br $L1 - end - end - local.get $p0 - i32.const 1 - i32.store8 - local.get $l3 - i32.const 255 - i32.and - i32.eqz - br_if $B0 - local.get $l2 - i32.const 0 - i32.store8 offset=40 - end - local.get $l2 - i32.const 80 - i32.add - global.set $g0) - (func $f72 (type $t0) (param $p0 i32) (param $p1 i32) (param $p2 i32) - (local $l3 i32) (local $l4 i32) (local $l5 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l3 - global.set $g0 - local.get $p1 - i32.const 8 - i32.add - local.tee $l4 - i32.load - local.set $l5 - local.get $l4 - i32.const 0 - i32.store - local.get $p1 - i32.load offset=4 - local.set $l4 - local.get $p1 - i32.const 65792 - i32.store offset=4 - local.get $l5 - i32.eqz - if $I0 - unreachable - end - local.get $l4 - local.get $p2 - i32.store8 - local.get $p1 - local.get $l5 - i32.store offset=8 - local.get $p1 - local.get $l4 - i32.store offset=4 - local.get $l3 - i32.const 8 - i32.add - local.get $p1 - i32.const 1 - call $f74 - local.get $p0 - local.get $l3 - i32.load offset=8 - i32.store - local.get $p0 - local.get $l3 - i32.load offset=12 - i32.store offset=4 - local.get $l3 - i32.const 16 - i32.add - global.set $g0) - (func $f73 (type $t2) (param $p0 i32) (param $p1 i32) - i32.const 0 - local.get $p0 - local.get $p1 - call $seal0.seal_return - unreachable) - (func $f74 (type $t0) (param $p0 i32) (param $p1 i32) (param $p2 i32) - (local $l3 i32) (local $l4 i32) - local.get $p1 - i32.const 8 - i32.add - local.tee $l3 - i32.load - local.set $l4 - local.get $l3 - i32.const 0 - i32.store - local.get $p1 - i32.load offset=4 - local.set $l3 - local.get $p1 - i32.const 65792 - i32.store offset=4 - local.get $l4 - local.get $p2 - i32.lt_u - if $I0 - unreachable - end - local.get $p1 - local.get $l4 - local.get $p2 - i32.sub - i32.store offset=8 - local.get $p1 - local.get $p2 - local.get $l3 - i32.add - i32.store offset=4 - local.get $p0 - local.get $p2 - i32.store offset=4 - local.get $p0 - local.get $l3 - i32.store) - (func $f75 (type $t2) (param $p0 i32) (param $p1 i32) - (local $l2 i32) (local $l3 i32) (local $l4 i32) - global.get $g0 - i32.const 80 - i32.sub - local.tee $l2 - global.set $g0 - local.get $l2 - local.get $p1 - call $f23 - block $B0 - block $B1 - block $B2 - block $B3 - local.get $l2 - i32.load8_u - i32.const 1 - i32.and - i32.eqz - if $I4 - local.get $l2 - i32.load8_u offset=1 - br_table $B2 $B1 $B3 - end - local.get $p0 - i32.const 2 - i32.store8 - br $B0 - end - local.get $p0 - i32.const 2 - i32.store8 - br $B0 - end - local.get $p0 - i32.const 0 - i32.store8 - br $B0 - end - local.get $l2 - i32.const 40 - i32.add - local.get $p1 - call $f24 - local.get $l2 - i32.const 16 - i32.add - local.tee $p1 - local.get $l2 - i32.const 49 - i32.add - i64.load align=1 - i64.store - local.get $l2 - i32.const 24 - i32.add - local.tee $l3 - local.get $l2 - i32.const 57 - i32.add - i64.load align=1 - i64.store - local.get $l2 - i32.const 32 - i32.add - local.tee $l4 - local.get $l2 - i32.const 65 - i32.add - i64.load align=1 - i64.store - local.get $l2 - local.get $l2 - i64.load offset=41 align=1 - i64.store offset=8 - local.get $l2 - i32.load8_u offset=40 - i32.const 1 - i32.ne - if $I5 - local.get $p0 - i32.const 1 - i32.store8 - local.get $p0 - local.get $l2 - i64.load offset=8 - i64.store offset=1 align=1 - local.get $p0 - i32.const 9 - i32.add - local.get $p1 - i64.load - i64.store align=1 - local.get $p0 - i32.const 17 - i32.add - local.get $l3 - i64.load - i64.store align=1 - local.get $p0 - i32.const 25 - i32.add - local.get $l4 - i64.load - i64.store align=1 - br $B0 - end - local.get $p0 - i32.const 2 - i32.store8 - end - local.get $l2 - i32.const 80 - i32.add - global.set $g0) - (func $f76 (type $t3) (param $p0 i32) - (local $l1 i32) (local $l2 i32) - global.get $g0 - i32.const 96 - i32.sub - local.tee $l1 - global.set $g0 - local.get $l1 - i32.const 16384 - i32.store offset=44 - local.get $l1 - i32.const 65796 - i32.store offset=40 - local.get $l1 - i32.const 16384 - i32.store offset=48 - i32.const 65796 - local.get $l1 - i32.const 48 - i32.add - call $seal0.seal_caller - local.get $l1 - i32.const 40 - i32.add - local.get $l1 - i32.load offset=48 - call $f77 - local.get $l1 - local.get $l1 - i64.load offset=40 - i64.store offset=88 - local.get $l1 - i32.const 48 - i32.add - local.get $l1 - i32.const 88 - i32.add - call $f24 - local.get $l1 - i32.load8_u offset=48 - i32.const 1 - i32.ne - if $I0 (result i32) - local.get $l1 - i32.const 16 - i32.add - local.get $l1 - i32.const 58 - i32.add - i64.load align=2 - i64.store - local.get $l1 - i32.const 24 - i32.add - local.get $l1 - i32.const 66 - i32.add - i64.load align=2 - i64.store - local.get $l1 - i32.const 31 - i32.add - local.get $l1 - i32.const 73 - i32.add - i64.load align=1 - i64.store align=1 - local.get $l1 - local.get $l1 - i64.load offset=50 align=2 - i64.store offset=8 - local.get $l1 - i32.load8_u offset=49 - local.set $l2 - i32.const 0 - else - i32.const 1 - end - if $I1 - unreachable - end - local.get $p0 - local.get $l2 - i32.store8 - local.get $p0 - local.get $l1 - i64.load offset=8 - i64.store offset=1 align=1 - local.get $p0 - i32.const 9 - i32.add - local.get $l1 - i32.const 16 - i32.add - i64.load - i64.store align=1 - local.get $p0 - i32.const 17 - i32.add - local.get $l1 - i32.const 24 - i32.add - i64.load - i64.store align=1 - local.get $p0 - i32.const 24 - i32.add - local.get $l1 - i32.const 31 - i32.add - i64.load align=1 - i64.store align=1 - local.get $l1 - i32.const 96 - i32.add - global.set $g0) - (func $f77 (type $t2) (param $p0 i32) (param $p1 i32) - (local $l2 i32) (local $l3 i32) (local $l4 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l2 - global.set $g0 - local.get $p0 - i32.load offset=4 - local.set $l3 - local.get $p0 - i32.const 0 - i32.store offset=4 - local.get $p0 - i32.load - local.set $l4 - local.get $p0 - i32.const 65792 - i32.store - local.get $l2 - i32.const 8 - i32.add - i32.const 0 - local.get $p1 - local.get $l4 - local.get $l3 - call $f90 - local.get $p0 - local.get $l2 - i64.load offset=8 - i64.store align=4 - local.get $l2 - i32.const 16 - i32.add - global.set $g0) - (func $deploy (type $t13) (result i32) - i32.const 0 - call $f79 - i32.const 255 - i32.and - i32.const 2 - i32.shl - i32.const 65756 - i32.add - i32.load) - (func $f79 (type $t6) (param $p0 i32) (result i32) - (local $l1 i32) (local $l2 i32) (local $l3 i32) (local $l4 i32) (local $l5 i32) (local $l6 i32) (local $l7 i32) (local $l8 i32) (local $l9 i32) (local $l10 i32) (local $l11 i32) (local $l12 i32) (local $l13 i32) (local $l14 i32) (local $l15 i32) (local $l16 i64) (local $l17 i64) (local $l18 i64) (local $l19 i64) (local $l20 i64) (local $l21 i64) (local $l22 i64) (local $l23 i64) (local $l24 i64) (local $l25 i64) (local $l26 i64) - global.get $g0 - i32.const 704 - i32.sub - local.tee $l1 - global.set $g0 - block $B0 - block $B1 - block $B2 - block $B3 - block $B4 - block $B5 - local.get $p0 - if $I6 - local.get $l1 - i32.const 16384 - i32.store offset=292 - local.get $l1 - i32.const 65796 - i32.store offset=288 - local.get $l1 - i32.const 288 - i32.add - call $f81 - local.get $l1 - local.get $l1 - i64.load offset=288 - i64.store offset=312 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 312 - i32.add - call $f59 - i32.const 1 - local.set $p0 - local.get $l1 - i32.load8_u offset=520 - i32.const 1 - i32.eq - br_if $B4 - local.get $l1 - i32.load8_u offset=524 - local.set $l6 - local.get $l1 - i32.load8_u offset=523 - local.set $l4 - local.get $l1 - i32.load8_u offset=522 - local.set $l2 - block $B7 - block $B8 - block $B9 - block $B10 - block $B11 - block $B12 - block $B13 - block $B14 - block $B15 - block $B16 - block $B17 - block $B18 - local.get $l1 - i32.load8_u offset=521 - local.tee $l3 - i32.const -101 - i32.add - br_table $B17 $B14 $B18 - end - block $B19 - block $B20 - block $B21 - local.get $l3 - i32.const 112 - i32.ne - if $I22 - local.get $l3 - i32.const 118 - i32.eq - br_if $B19 - local.get $l3 - i32.const 176 - i32.eq - br_if $B13 - local.get $l3 - i32.const 187 - i32.eq - br_if $B21 - local.get $l3 - i32.const 194 - i32.eq - br_if $B20 - local.get $l3 - i32.const 251 - i32.eq - br_if $B16 - local.get $l3 - i32.const 243 - i32.eq - br_if $B15 - local.get $l3 - i32.const 209 - i32.ne - br_if $B4 - local.get $l2 - i32.const 20 - i32.ne - br_if $B3 - local.get $l4 - i32.const 255 - i32.and - i32.const 10 - i32.ne - br_if $B3 - local.get $l6 - i32.const 201 - i32.ne - br_if $B3 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 312 - i32.add - call $f75 - local.get $l1 - i32.const 392 - i32.add - local.tee $l6 - local.get $l1 - i32.const 551 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - local.get $l1 - i32.const 543 - i32.add - i64.load align=1 - i64.store offset=384 - local.get $l1 - i32.load8_u offset=520 - local.tee $l3 - i32.const 2 - i32.eq - br_if $B4 - local.get $l1 - i32.const 535 - i32.add - i64.load align=1 - local.get $l1 - i32.const 552 - i32.add - local.tee $l2 - i32.load8_u - local.set $l10 - local.get $l1 - i64.load offset=527 align=1 - local.set $l20 - local.get $l1 - i32.load offset=523 align=1 - local.set $l8 - local.get $l1 - i32.load16_u offset=521 align=1 - local.set $l4 - local.get $l1 - i32.const 376 - i32.add - local.get $l6 - i32.load8_u - i32.store8 - local.get $l1 - local.get $l1 - i64.load offset=384 - i64.store offset=368 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 312 - i32.add - call $f75 - local.get $l1 - i32.const 424 - i32.add - local.get $l2 - i32.load8_u - i32.store8 - local.get $l1 - local.get $l1 - i32.const 544 - i32.add - i64.load - i64.store offset=416 - local.get $l1 - i32.load8_u offset=520 - local.tee $l7 - i32.const 2 - i32.eq - br_if $B4 - local.get $l1 - i32.const 536 - i32.add - i64.load - local.set $l18 - local.get $l1 - i32.const 528 - i32.add - i64.load - local.set $l21 - local.get $l1 - i32.load offset=524 - local.set $l12 - local.get $l1 - i32.load16_u offset=522 - local.set $l13 - local.get $l1 - i32.load8_u offset=521 - local.set $l14 - local.get $l1 - i32.const 496 - i32.add - local.get $l1 - i32.const 424 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - local.get $l1 - i64.load offset=416 - i64.store offset=488 - local.get $l1 - i32.const 112 - i32.add - local.get $l1 - i32.const 312 - i32.add - call $f29 - local.get $l1 - i32.load offset=112 - br_if $B4 - local.get $l1 - i32.const 128 - i32.add - i64.load - local.set $l17 - local.get $l1 - i64.load offset=120 - local.set $l22 - local.get $l1 - i32.const 88 - i32.add - local.get $l1 - i32.const 312 - i32.add - call $f29 - local.get $l1 - i32.load offset=88 - br_if $B4 - local.get $l1 - i32.const -64 - i32.sub - local.get $l1 - i32.const 312 - i32.add - call $f29 - local.get $l1 - i32.load offset=64 - br_if $B4 - local.get $l1 - i32.const 80 - i32.add - i64.load - local.set $l25 - local.get $l1 - i64.load offset=72 - local.set $l26 - local.get $l1 - i32.const 40 - i32.add - local.get $l1 - i32.const 312 - i32.add - call $f29 - local.get $l1 - i32.load offset=40 - br_if $B4 - local.get $l1 - i32.const 56 - i32.add - i64.load - local.set $l23 - local.get $l1 - i64.load offset=48 - local.set $l24 - local.get $l1 - i64.const 0 - i64.store offset=520 - local.get $l1 - i32.const 312 - i32.add - local.get $l1 - i32.const 520 - i32.add - i32.const 8 - call $f49 - br_if $B4 - local.get $l1 - i32.const 360 - i32.add - local.get $l1 - i32.const 376 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - i32.const 304 - i32.add - local.get $l1 - i32.const 496 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - local.get $l1 - i64.load offset=368 - i64.store offset=352 - local.get $l1 - local.get $l1 - i64.load offset=488 - i64.store offset=296 - local.set $l16 - br $B5 - end - local.get $l2 - i32.const 87 - i32.ne - br_if $B3 - local.get $l4 - i32.const 255 - i32.and - i32.const 77 - i32.ne - br_if $B3 - local.get $l6 - i32.const 226 - i32.ne - br_if $B3 - local.get $l1 - i32.const 136 - i32.add - local.get $l1 - i32.const 312 - i32.add - call $f29 - local.get $l1 - i64.load offset=136 - i32.wrap_i64 - br_if $B4 - local.get $l1 - i32.const 152 - i32.add - i64.load - local.set $l16 - local.get $l1 - i64.load offset=144 - local.set $l20 - local.get $l1 - i32.const 360 - i32.add - local.get $l1 - i32.const 528 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - i32.const 304 - i32.add - local.get $l1 - i32.const 424 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - local.get $l1 - i64.load offset=520 - i64.store offset=352 - local.get $l1 - local.get $l1 - i64.load offset=416 align=1 - i64.store offset=296 - i32.const 1 - local.set $l5 - br $B5 - end - local.get $l2 - i32.const 199 - i32.ne - br_if $B3 - local.get $l4 - i32.const 255 - i32.and - i32.const 99 - i32.ne - br_if $B3 - local.get $l6 - i32.const 66 - i32.ne - br_if $B3 - i32.const 2 - local.set $l5 - local.get $l1 - i32.const 312 - i32.add - call $f14 - i32.const 255 - i32.and - local.tee $l3 - i32.const 2 - i32.eq - br_if $B4 - local.get $l1 - i32.const 360 - i32.add - local.get $l1 - i32.const 528 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - i32.const 304 - i32.add - local.get $l1 - i32.const 424 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - local.get $l1 - i64.load offset=520 align=2 - i64.store offset=352 - local.get $l1 - local.get $l1 - i64.load offset=416 align=1 - i64.store offset=296 - local.get $l3 - i32.const 0 - i32.ne - local.set $l3 - br $B5 - end - local.get $l2 - i32.const 33 - i32.ne - br_if $B3 - local.get $l4 - i32.const 255 - i32.and - i32.const 229 - i32.ne - br_if $B3 - local.get $l6 - i32.const 60 - i32.ne - br_if $B3 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 312 - i32.add - call $f24 - local.get $l1 - i32.const 424 - i32.add - local.tee $l2 - local.get $l1 - i32.const 552 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - local.get $l1 - i32.const 544 - i32.add - i64.load - i64.store offset=416 - local.get $l1 - i32.load8_u offset=520 - i32.const 1 - i32.eq - br_if $B4 - local.get $l1 - i32.const 536 - i32.add - i64.load - local.set $l17 - local.get $l1 - i32.const 528 - i32.add - i64.load - local.set $l20 - local.get $l1 - i32.load offset=524 - local.set $l8 - local.get $l1 - i32.load16_u offset=522 - local.set $l4 - local.get $l1 - i32.load8_u offset=521 - local.set $l3 - local.get $l1 - i32.const 496 - i32.add - local.get $l2 - i32.load8_u - i32.store8 - local.get $l1 - local.get $l1 - i64.load offset=416 - i64.store offset=488 - local.get $l1 - i32.const 312 - i32.add - call $f14 - i32.const 255 - i32.and - local.tee $p0 - i32.const 2 - i32.eq - br_if $B12 - local.get $l1 - i32.const 360 - i32.add - local.get $l1 - i32.const 496 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - i32.const 304 - i32.add - local.get $l1 - i32.const 392 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - local.get $l1 - i64.load offset=488 - i64.store offset=352 - local.get $l1 - local.get $l1 - i64.load offset=384 align=1 - i64.store offset=296 - local.get $p0 - i32.const 0 - i32.ne - local.set $l10 - i32.const 3 - local.set $l5 - local.get $l17 - local.set $l16 - br $B5 - end - local.get $l2 - i32.const 11 - i32.ne - br_if $B3 - local.get $l4 - i32.const 255 - i32.and - i32.const 252 - i32.ne - br_if $B3 - local.get $l6 - i32.const 88 - i32.ne - br_if $B3 - local.get $l1 - i32.const 192 - i32.add - local.get $l1 - i32.const 312 - i32.add - call $f23 - local.get $l1 - i32.load8_u offset=192 - i32.const 1 - i32.and - br_if $B4 - local.get $l1 - i32.load8_u offset=193 - local.tee $l3 - i32.const 3 - i32.and - local.tee $l2 - i32.const 3 - i32.eq - br_if $B8 - local.get $l2 - i32.const 1 - i32.sub - br_table $B10 $B9 $B11 - end - local.get $l2 - i32.const 36 - i32.ne - br_if $B3 - local.get $l4 - i32.const 255 - i32.and - i32.const 134 - i32.ne - br_if $B3 - local.get $l6 - i32.const 253 - i32.ne - br_if $B3 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 312 - i32.add - call $f24 - local.get $l1 - i32.const 424 - i32.add - local.tee $l2 - local.get $l1 - i32.const 552 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - local.get $l1 - i32.const 544 - i32.add - i64.load - i64.store offset=416 - local.get $l1 - i32.load8_u offset=520 - i32.const 1 - i32.eq - br_if $B4 - local.get $l1 - i32.const 536 - i32.add - i64.load - local.set $l16 - local.get $l1 - i32.const 528 - i32.add - i64.load - local.set $l20 - local.get $l1 - i32.load offset=524 - local.set $l8 - local.get $l1 - i32.load16_u offset=522 - local.set $l4 - local.get $l1 - i32.load8_u offset=521 - local.set $l3 - local.get $l1 - i32.const 360 - i32.add - local.get $l2 - i32.load8_u - i32.store8 - local.get $l1 - i32.const 304 - i32.add - local.get $l1 - i32.const 496 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - local.get $l1 - i64.load offset=416 - i64.store offset=352 - local.get $l1 - local.get $l1 - i64.load offset=488 align=1 - i64.store offset=296 - i32.const 5 - local.set $l5 - br $B5 - end - local.get $l2 - i32.const 107 - i32.ne - br_if $B3 - local.get $l4 - i32.const 255 - i32.and - i32.const 76 - i32.ne - br_if $B3 - local.get $l6 - i32.const 230 - i32.ne - br_if $B2 - i32.const 6 - local.set $l5 - br $B5 - end - local.get $l2 - i32.const 14 - i32.ne - br_if $B3 - local.get $l4 - i32.const 255 - i32.and - i32.const 173 - i32.ne - br_if $B3 - local.get $l6 - i32.const 135 - i32.ne - br_if $B2 - i32.const 7 - local.set $l5 - br $B5 - end - local.get $l2 - i32.const 21 - i32.ne - br_if $B3 - local.get $l4 - i32.const 255 - i32.and - i32.const 69 - i32.ne - br_if $B3 - local.get $l6 - i32.const 57 - i32.ne - br_if $B2 - i32.const 8 - local.set $l5 - br $B5 - end - local.get $l2 - i32.const 61 - i32.ne - br_if $B3 - local.get $l4 - i32.const 255 - i32.and - i32.const 214 - i32.ne - br_if $B3 - local.get $l6 - i32.const 159 - i32.ne - br_if $B3 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 312 - i32.add - call $f24 - local.get $l1 - i32.const 424 - i32.add - local.tee $l2 - local.get $l1 - i32.const 552 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - local.get $l1 - i32.const 544 - i32.add - i64.load - i64.store offset=416 - local.get $l1 - i32.load8_u offset=520 - i32.const 1 - i32.eq - br_if $B4 - local.get $l1 - i32.const 536 - i32.add - i64.load - local.set $l16 - local.get $l1 - i32.const 528 - i32.add - i64.load - local.set $l20 - local.get $l1 - i32.load offset=524 - local.set $l8 - local.get $l1 - i32.load16_u offset=522 - local.set $l4 - local.get $l1 - i32.load8_u offset=521 - local.set $l3 - local.get $l1 - i32.const 360 - i32.add - local.get $l2 - i32.load8_u - i32.store8 - local.get $l1 - i32.const 304 - i32.add - local.get $l1 - i32.const 496 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - local.get $l1 - i64.load offset=416 - i64.store offset=352 - local.get $l1 - local.get $l1 - i64.load offset=488 align=1 - i64.store offset=296 - i32.const 9 - local.set $l5 - br $B5 - end - i32.const 1 - local.set $p0 - br $B4 - end - local.get $l3 - i32.const 252 - i32.and - i32.const 2 - i32.shr_u - local.set $l5 - br $B7 - end - local.get $l1 - local.get $l3 - i32.store8 offset=525 - local.get $l1 - i32.const 1 - i32.store8 offset=524 - local.get $l1 - local.get $l1 - i32.const 312 - i32.add - i32.store offset=520 - local.get $l1 - i32.const 0 - i32.store16 offset=416 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 416 - i32.add - i32.const 2 - call $f82 - br_if $B4 - local.get $l1 - i32.load16_u offset=416 - local.tee $l3 - i32.const 255 - i32.le_u - br_if $B4 - local.get $l3 - i32.const 2 - i32.shr_u - local.set $l5 - br $B7 - end - local.get $l1 - local.get $l3 - i32.store8 offset=525 - local.get $l1 - i32.const 1 - i32.store8 offset=524 - local.get $l1 - local.get $l1 - i32.const 312 - i32.add - i32.store offset=520 - local.get $l1 - i32.const 0 - i32.store offset=416 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 416 - i32.add - i32.const 4 - call $f82 - br_if $B4 - local.get $l1 - i32.load offset=416 - local.tee $l3 - i32.const 65536 - i32.lt_u - br_if $B4 - local.get $l3 - i32.const 2 - i32.shr_u - local.set $l5 - br $B7 - end - local.get $l3 - i32.const 255 - i32.and - i32.const 3 - i32.gt_u - br_if $B4 - local.get $l1 - i32.const 184 - i32.add - local.get $l1 - i32.const 312 - i32.add - call $f15 - local.get $l1 - i32.load offset=184 - br_if $B4 - local.get $l1 - i32.load offset=188 - local.tee $l5 - i32.const 1073741824 - i32.lt_u - br_if $B4 - end - local.get $l5 - local.get $l1 - i32.load offset=316 - i32.const 33 - i32.div_u - local.tee $l2 - local.get $l2 - local.get $l5 - i32.gt_u - select - i64.extend_i32_u - i64.const 33 - i64.mul - local.tee $l18 - i64.const 32 - i64.shr_u - i32.wrap_i64 - br_if $B1 - local.get $l18 - i32.wrap_i64 - local.tee $l2 - i32.const -1 - i32.le_s - br_if $B1 - local.get $l1 - i32.const 176 - i32.add - local.get $l2 - i32.const 1 - call $f57 - local.get $l1 - i32.load offset=176 - local.tee $l6 - i32.eqz - br_if $B1 - local.get $l1 - i32.load offset=180 - local.set $l2 - local.get $l1 - i32.const 0 - i32.store offset=424 - local.get $l1 - local.get $l6 - i32.store offset=416 - local.get $l1 - local.get $l2 - i32.const 33 - i32.div_u - i32.store offset=420 - local.get $l1 - i32.const 544 - i32.add - local.set $l14 - local.get $l1 - i32.const 536 - i32.add - local.set $l15 - i32.const 0 - local.set $l3 - loop $L23 - block $B24 - block $B25 - local.get $l5 - if $I26 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 312 - i32.add - call $f24 - local.get $l1 - i32.load8_u offset=520 - i32.const 1 - i32.eq - br_if $B25 - local.get $l1 - i32.const 376 - i32.add - local.tee $l6 - local.get $l14 - i32.const 8 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - local.get $l14 - i64.load align=1 - i64.store offset=368 - local.get $l15 - i64.load - local.set $l18 - local.get $l1 - i64.load offset=528 - local.set $l22 - local.get $l1 - i32.load offset=524 - local.set $l10 - local.get $l1 - i32.load16_u offset=522 - local.set $l7 - local.get $l1 - i32.load8_u offset=521 - local.get $l1 - i32.const 312 - i32.add - call $f14 - i32.const 255 - i32.and - local.tee $l9 - i32.const 2 - i32.eq - br_if $B25 - local.get $l1 - i32.const 392 - i32.add - local.get $l6 - i32.load8_u - i32.store8 - local.get $l1 - local.get $l1 - i64.load offset=368 - i64.store offset=384 - local.set $l8 - local.get $l7 - local.set $l11 - local.get $l10 - local.set $l13 - local.get $l22 - local.set $l21 - local.get $l18 - local.set $l17 - br $B24 - end - local.get $l1 - i32.load offset=416 - local.tee $l8 - i32.eqz - br_if $B4 - local.get $l1 - i64.load offset=420 align=4 - local.set $l20 - local.get $l1 - i32.const 360 - i32.add - local.get $l1 - i32.const 344 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - i32.const 304 - i32.add - local.get $l1 - i32.const 335 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - local.get $l1 - i64.load offset=336 - i64.store offset=352 - local.get $l1 - local.get $l1 - i64.load offset=327 align=1 - i64.store offset=296 - i32.const 4 - local.set $l5 - br $B5 - end - i32.const 2 - local.set $l9 - end - local.get $l1 - i32.const 360 - i32.add - local.tee $l4 - local.get $l1 - i32.const 392 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - local.get $l1 - i64.load offset=384 - i64.store offset=352 - local.get $l9 - i32.const 2 - i32.ne - if $I27 - local.get $l1 - i32.const 496 - i32.add - local.tee $l10 - local.get $l4 - i32.load8_u - i32.store8 - local.get $l1 - local.get $l1 - i64.load offset=352 - i64.store offset=488 - block $B28 - local.get $l1 - i32.load offset=420 - local.get $l3 - i32.ne - if $I29 - local.get $l1 - i32.load offset=416 - local.set $l7 - br $B28 - end - local.get $l3 - i32.const 1 - i32.add - local.tee $l7 - local.get $l3 - i32.lt_u - br_if $B1 - local.get $l3 - i32.const 1 - i32.shl - local.tee $l2 - local.get $l7 - local.get $l2 - local.get $l7 - i32.gt_u - select - local.tee $l2 - i32.const 4 - local.get $l2 - i32.const 4 - i32.gt_u - select - i64.extend_i32_u - i64.const 33 - i64.mul - local.tee $l19 - i64.const 32 - i64.shr_u - i32.wrap_i64 - br_if $B1 - local.get $l19 - i32.wrap_i64 - local.tee $l7 - i32.const 0 - i32.lt_s - br_if $B1 - local.get $l3 - i32.const 33 - i32.mul - local.get $l12 - local.get $l3 - select - local.set $l12 - block $B30 (result i32) - local.get $l1 - i32.load offset=416 - i32.const 0 - local.get $l3 - select - local.tee $l2 - i32.eqz - if $I31 - local.get $l1 - i32.const 160 - i32.add - local.get $l7 - call $f83 - local.get $l1 - i32.load offset=160 - local.set $l4 - local.get $l1 - i32.load offset=164 - br $B30 - end - local.get $l12 - i32.eqz - if $I32 - local.get $l1 - i32.const 168 - i32.add - local.get $l7 - call $f83 - local.get $l1 - i32.load offset=168 - local.set $l4 - local.get $l1 - i32.load offset=172 - br $B30 - end - local.get $l2 - local.get $l12 - local.get $l7 - call $f87 - local.set $l4 - local.get $l7 - end - local.set $l2 - local.get $l4 - i32.eqz - br_if $B1 - local.get $l1 - local.get $l4 - local.get $l7 - local.get $l4 - select - local.tee $l7 - i32.store offset=416 - local.get $l1 - local.get $l2 - i32.const 1 - local.get $l4 - select - i32.const 33 - i32.div_u - i32.store offset=420 - end - local.get $l7 - local.get $l3 - i32.const 33 - i32.mul - i32.add - local.tee $l2 - local.get $l13 - i32.store offset=3 align=1 - local.get $l2 - local.get $l11 - i32.store16 offset=1 align=1 - local.get $l2 - local.get $l8 - i32.store8 - local.get $l10 - i32.load8_u - local.set $l4 - local.get $l1 - i64.load offset=488 - local.set $l18 - local.get $l2 - local.get $l9 - i32.store8 offset=32 - local.get $l2 - local.get $l18 - i64.store offset=23 align=1 - local.get $l2 - i32.const 31 - i32.add - local.get $l4 - i32.store8 - local.get $l2 - local.get $l21 - i64.store offset=7 align=1 - local.get $l2 - i32.const 15 - i32.add - local.get $l17 - i64.store align=1 - local.get $l1 - local.get $l1 - i32.load offset=424 - i32.const 1 - i32.add - local.tee $l3 - i32.store offset=424 - local.get $l5 - i32.const -1 - i32.add - local.set $l5 - br $L23 - end - end - local.get $l1 - i32.const 416 - i32.add - call $f46 - br $B4 - end - local.get $l1 - i32.const 16384 - i32.store offset=420 - local.get $l1 - i32.const 65796 - i32.store offset=416 - local.get $l1 - i32.const 416 - i32.add - call $f81 - local.get $l1 - local.get $l1 - i64.load offset=416 - i64.store offset=520 - local.get $l1 - i32.const 488 - i32.add - local.get $l1 - i32.const 520 - i32.add - call $f59 - i32.const 1 - local.set $l3 - block $B33 - local.get $l1 - i32.load8_u offset=488 - i32.const 1 - i32.eq - br_if $B33 - local.get $l1 - i32.load8_u offset=489 - i32.const 209 - i32.ne - br_if $B33 - local.get $l1 - i32.load8_u offset=490 - i32.const 131 - i32.ne - br_if $B33 - local.get $l1 - i32.load8_u offset=491 - i32.const 81 - i32.ne - br_if $B33 - local.get $l1 - i32.load8_u offset=492 - i32.const 43 - i32.ne - br_if $B33 - local.get $l1 - i32.const 200 - i32.add - local.get $l1 - i32.const 520 - i32.add - call $f29 - local.get $l1 - i32.load offset=200 - br_if $B33 - local.get $l1 - i32.const 216 - i32.add - i64.load - local.set $l18 - local.get $l1 - i64.load offset=208 - local.set $l16 - local.get $l1 - i32.const 520 - i32.add - call $f14 - i32.const 255 - i32.and - local.tee $p0 - i32.const 2 - i32.eq - br_if $B33 - i32.const 0 - local.set $l3 - local.get $p0 - i32.const 0 - i32.ne - local.set $l9 - end - i32.const 6 - local.set $p0 - local.get $l3 - br_if $B0 - local.get $l1 - i32.const 488 - i32.add - call $f76 - local.get $l1 - i32.const 444 - i32.add - local.get $l1 - i32.const 512 - i32.add - i64.load - i64.store align=4 - local.get $l1 - i32.const 436 - i32.add - local.get $l1 - i32.const 504 - i32.add - i64.load - i64.store align=4 - i32.const 8 - local.set $p0 - local.get $l1 - i32.const 428 - i32.add - local.get $l1 - i32.const 496 - i32.add - i64.load - i64.store align=4 - local.get $l1 - i32.const 656 - i32.add - i32.const 0 - i32.store - local.get $l1 - i32.const 648 - i32.add - i32.const 0 - i32.store - local.get $l1 - i32.const 608 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 600 - i32.add - i32.const 0 - i32.store - local.get $l1 - i32.const 592 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 584 - i32.add - i32.const 0 - i32.store - local.get $l1 - i32.const 576 - i32.add - i32.const 0 - i32.store - local.get $l1 - local.get $l1 - i64.load offset=488 - i64.store offset=420 align=4 - local.get $l1 - local.get $l18 - i64.store offset=528 - local.get $l1 - local.get $l16 - i64.store offset=520 - local.get $l1 - i64.const 0 - i64.store offset=536 - local.get $l1 - i32.const 660 - i32.add - local.get $l1 - i32.const 416 - i32.add - i32.const 36 - call $f99 - local.get $l1 - local.get $l9 - i32.const 255 - i32.and - i32.const 0 - i32.ne - i32.store8 offset=696 - local.get $l1 - i32.const 440 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 432 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 424 - i32.add - i64.const 0 - i64.store - local.get $l1 - i64.const 0 - i64.store offset=416 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 416 - i32.add - call $f32 - br $B0 - end - local.get $l1 - i32.const 280 - i32.add - local.get $l1 - i32.const 360 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - i32.const 264 - i32.add - local.get $l1 - i32.const 304 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - local.get $l1 - i64.load offset=352 - i64.store offset=272 - local.get $l1 - local.get $l1 - i64.load offset=296 - i64.store offset=256 - local.get $l20 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $l9 - local.get $l20 - i32.wrap_i64 - local.set $l11 - i32.const 0 - local.set $p0 - br $B2 - end - i32.const 0 - local.set $l9 - end - i32.const 0 - local.set $l5 - end - local.get $l1 - block $B34 (result i32) - block $B35 - block $B36 - local.get $p0 - i32.eqz - if $I37 - local.get $l1 - i32.const 248 - i32.add - local.tee $l2 - local.get $l1 - i32.const 280 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - i32.const 232 - i32.add - local.tee $p0 - local.get $l1 - i32.const 264 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - local.get $l1 - i64.load offset=272 - i64.store offset=240 - local.get $l1 - local.get $l1 - i64.load offset=256 - i64.store offset=224 - block $B38 - block $B39 - block $B40 - block $B41 - block $B42 - block $B43 - block $B44 - block $B45 - block $B46 - block $B47 - block $B48 - local.get $l5 - i32.const 1 - i32.sub - br_table $B46 $B45 $B39 $B44 $B43 $B42 $B41 $B40 $B48 $B47 - end - local.get $l1 - i32.const 512 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 504 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 496 - i32.add - i64.const 0 - i64.store - local.get $l1 - i64.const 0 - i64.store offset=488 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 488 - i32.add - call $f27 - local.get $l1 - i32.const 431 - i32.add - local.get $l16 - i64.store align=1 - local.get $l1 - i32.const 447 - i32.add - local.get $l2 - i32.load8_u - i32.store8 - local.get $l1 - local.get $l11 - i64.extend_i32_u - local.get $l9 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.store offset=423 align=1 - local.get $l1 - local.get $l8 - i32.store offset=419 align=1 - local.get $l1 - local.get $l4 - i32.store16 offset=417 align=1 - local.get $l1 - local.get $l3 - i32.store8 offset=416 - local.get $l1 - local.get $l1 - i64.load offset=240 - i64.store offset=439 align=1 - local.get $l1 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 416 - i32.add - call $f84 - i32.store8 offset=384 - local.get $l1 - i32.const 384 - i32.add - call $f64 - unreachable - end - local.get $l1 - i32.const 512 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 504 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 496 - i32.add - i64.const 0 - i64.store - local.get $l1 - i64.const 0 - i64.store offset=488 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 488 - i32.add - call $f27 - local.get $l1 - i32.const 392 - i32.add - local.get $p0 - i32.load8_u - i32.store8 - local.get $l1 - local.get $l1 - i64.load offset=224 - i64.store offset=384 - local.get $l3 - i32.const 255 - i32.and - br_if $B36 - local.get $l1 - i32.load8_u offset=696 - br_if $B35 - br $B36 - end - local.get $l1 - i32.const 512 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 504 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 496 - i32.add - i64.const 0 - i64.store - local.get $l1 - i64.const 0 - i64.store offset=488 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 488 - i32.add - call $f27 - local.get $l1 - i32.const 416 - i32.add - call $f76 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 416 - i32.add - call $f85 - local.get $l1 - i64.load offset=520 - local.tee $l19 - local.get $l11 - i64.extend_i32_u - local.get $l9 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.tee $l21 - i64.xor - local.get $l1 - i32.const 528 - i32.add - i64.load - local.tee $l17 - local.get $l16 - i64.xor - i64.or - i64.const 0 - i64.eq - br_if $B1 - local.get $l1 - i32.const 448 - i32.add - local.get $l16 - i64.store - local.get $l1 - i32.const 440 - i32.add - local.get $l21 - i64.store - local.get $l1 - i32.const 432 - i32.add - local.get $l17 - i64.store - local.get $l1 - i32.const 424 - i32.add - local.get $l19 - i64.store - local.get $l1 - i32.const 0 - i32.store8 offset=416 - local.get $l1 - i32.const 416 - i32.add - call $f61 - local.get $l1 - local.get $l16 - i64.store offset=528 - local.get $l1 - local.get $l21 - i64.store offset=520 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 488 - i32.add - call $f32 - br $B38 - end - local.get $l1 - i32.const 512 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 504 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 496 - i32.add - i64.const 0 - i64.store - local.get $l1 - i64.const 0 - i64.store offset=488 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 488 - i32.add - call $f27 - local.get $l1 - i32.const 416 - i32.add - call $f76 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 416 - i32.add - call $f85 - local.get $l1 - i32.load8_u offset=696 - i32.eqz - local.get $l3 - i32.const 255 - i32.and - i32.const 0 - i32.ne - i32.ne - br_if $B1 - local.get $l1 - local.get $l3 - i32.store8 offset=696 - local.get $l1 - i32.const 1 - i32.store8 offset=416 - local.get $l1 - local.get $l3 - i32.store8 offset=417 - local.get $l1 - i32.const 416 - i32.add - call $f61 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 488 - i32.add - call $f32 - br $B38 - end - local.get $l1 - i32.const 512 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 504 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 496 - i32.add - i64.const 0 - i64.store - local.get $l1 - i64.const 0 - i64.store offset=488 - local.get $l9 - i32.const 33 - i32.mul - local.set $l3 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 488 - i32.add - call $f27 - local.get $l1 - i32.const 439 - i32.add - local.set $l15 - local.get $l8 - local.set $p0 - loop $L49 - block $B50 - local.get $l3 - i32.eqz - br_if $B50 - local.get $p0 - i32.load offset=3 align=1 - local.set $l6 - local.get $p0 - i32.load16_u offset=1 align=1 - local.set $l10 - local.get $p0 - i32.load8_u - local.set $l7 - local.get $l1 - i32.const 376 - i32.add - local.tee $l2 - local.get $p0 - i32.const 31 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - local.get $p0 - i64.load offset=23 align=1 - i64.store offset=368 - local.get $p0 - i32.load8_u offset=32 - local.tee $l13 - i32.const 2 - i32.eq - br_if $B50 - local.get $p0 - i32.const 15 - i32.add - i64.load align=1 - local.set $l19 - local.get $p0 - i64.load offset=7 align=1 - local.set $l16 - local.get $l1 - i32.const 392 - i32.add - local.get $l2 - i32.load8_u - local.tee $l2 - i32.store8 - local.get $l1 - local.get $l1 - i64.load offset=368 - local.tee $l17 - i64.store offset=384 - local.get $l1 - i32.const 431 - i32.add - local.get $l19 - i64.store align=1 - local.get $l15 - local.get $l17 - i64.store align=1 - local.get $l15 - i32.const 8 - i32.add - local.get $l2 - i32.store8 - local.get $l1 - local.get $l16 - i64.store offset=423 align=1 - local.get $l1 - local.get $l6 - i32.store offset=419 align=1 - local.get $l1 - local.get $l10 - i32.store16 offset=417 align=1 - local.get $l1 - local.get $l7 - i32.store8 offset=416 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 416 - i32.add - local.get $l13 - i32.const 1 - i32.and - call $f86 - local.get $l3 - i32.const -33 - i32.add - local.set $l3 - local.get $p0 - i32.const 33 - i32.add - local.set $p0 - br $L49 - end - end - local.get $l1 - local.get $l11 - i32.store offset=420 - local.get $l1 - local.get $l8 - i32.store offset=416 - local.get $l1 - i32.const 416 - i32.add - call $f46 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 488 - i32.add - call $f32 - br $B38 - end - local.get $l1 - i32.const 360 - i32.add - local.tee $p0 - local.get $l2 - i32.load8_u - i32.store8 - local.get $l1 - local.get $l1 - i64.load offset=240 - i64.store offset=352 - local.get $l1 - i32.const 408 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 400 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 392 - i32.add - i64.const 0 - i64.store - local.get $l1 - i64.const 0 - i64.store offset=384 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 384 - i32.add - call $f27 - local.get $l1 - i32.const 416 - i32.add - call $f76 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 416 - i32.add - call $f85 - local.get $l1 - i32.const 488 - i32.add - call $f76 - local.get $l1 - i32.const 432 - i32.add - local.get $l16 - i64.store - local.get $l1 - i32.const 424 - i32.add - local.get $l11 - i64.extend_i32_u - local.get $l9 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.tee $l17 - i64.store - local.get $l1 - i32.const 440 - i32.add - local.get $l1 - i64.load offset=240 - i64.store - local.get $l1 - i32.const 448 - i32.add - local.get $l2 - i32.load8_u - i32.store8 - local.get $l1 - i32.const 449 - i32.add - local.get $l1 - i64.load offset=488 align=1 - i64.store align=1 - local.get $l1 - i32.const 457 - i32.add - local.get $l1 - i32.const 496 - i32.add - i64.load align=1 - i64.store align=1 - local.get $l1 - i32.const 465 - i32.add - local.get $l1 - i32.const 504 - i32.add - i64.load align=1 - i64.store align=1 - local.get $l1 - i32.const 473 - i32.add - local.get $l1 - i32.const 512 - i32.add - i64.load align=1 - i64.store align=1 - local.get $l1 - local.get $l8 - i32.store offset=420 - local.get $l1 - local.get $l4 - i32.store16 offset=418 - local.get $l1 - local.get $l3 - i32.store8 offset=417 - local.get $l1 - i32.const 3 - i32.store8 offset=416 - local.get $l1 - i32.const 416 - i32.add - call $f61 - local.get $l1 - i32.const 679 - i32.add - local.get $l16 - i64.store align=1 - local.get $l1 - i32.const 671 - i32.add - local.get $l17 - i64.store align=1 - local.get $l1 - i32.const 667 - i32.add - local.get $l8 - i32.store align=1 - local.get $l1 - i32.const 665 - i32.add - local.get $l4 - i32.store16 align=1 - local.get $l1 - i32.const 687 - i32.add - local.get $l1 - i64.load offset=352 - i64.store align=1 - local.get $l1 - i32.const 695 - i32.add - local.get $p0 - i32.load8_u - i32.store8 - local.get $l1 - local.get $l3 - i32.store8 offset=664 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 384 - i32.add - call $f32 - br $B38 - end - local.get $l1 - i32.const 440 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 432 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 424 - i32.add - i64.const 0 - i64.store - local.get $l1 - i64.const 0 - i64.store offset=416 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 416 - i32.add - call $f27 - local.get $l1 - i64.load offset=520 - local.set $l17 - local.get $l1 - local.get $l1 - i32.const 528 - i32.add - i64.load - i64.store offset=528 - local.get $l1 - local.get $l17 - i64.store offset=520 - local.get $l1 - i32.const 520 - i32.add - call $f66 - unreachable - end - local.get $l1 - i32.const 440 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 432 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 424 - i32.add - i64.const 0 - i64.store - local.get $l1 - i64.const 0 - i64.store offset=416 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 416 - i32.add - call $f27 - local.get $l1 - local.get $l1 - i32.load8_u offset=696 - i32.const 0 - i32.ne - i32.store8 offset=520 - local.get $l1 - i32.const 520 - i32.add - call $f64 - unreachable - end - local.get $l1 - i32.const 512 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 504 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 496 - i32.add - i64.const 0 - i64.store - local.get $l1 - i64.const 0 - i64.store offset=488 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 488 - i32.add - call $f27 - local.get $l1 - i32.const 440 - i32.add - local.get $l1 - i32.const 688 - i32.add - i64.load - i64.store - local.get $l1 - i32.const 432 - i32.add - local.get $l1 - i32.const 680 - i32.add - i64.load - i64.store - local.get $l1 - i32.const 424 - i32.add - local.get $l1 - i32.const 672 - i32.add - i64.load - i64.store - local.get $l1 - local.get $l1 - i64.load offset=664 - i64.store offset=416 - global.get $g0 - i32.const 16 - i32.sub - local.tee $p0 - global.set $g0 - local.get $p0 - local.get $l1 - i32.const 416 - i32.add - i32.store offset=12 - local.get $p0 - i32.const 12 - i32.add - i32.load - call $f70 - unreachable - end - local.get $l1 - i32.const 512 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 504 - i32.add - i64.const 0 - i64.store - local.get $l1 - i32.const 496 - i32.add - i64.const 0 - i64.store - local.get $l1 - i64.const 0 - i64.store offset=488 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 488 - i32.add - call $f27 - local.get $l1 - i32.const 431 - i32.add - local.get $l16 - i64.store align=1 - local.get $l1 - i32.const 447 - i32.add - local.get $l2 - i32.load8_u - i32.store8 - local.get $l1 - local.get $l11 - i64.extend_i32_u - local.get $l9 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.store offset=423 align=1 - local.get $l1 - local.get $l8 - i32.store offset=419 align=1 - local.get $l1 - local.get $l4 - i32.store16 offset=417 align=1 - local.get $l1 - local.get $l3 - i32.store8 offset=416 - local.get $l1 - local.get $l1 - i64.load offset=240 - i64.store offset=439 align=1 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 416 - i32.add - local.get $l10 - i32.const 255 - i32.and - i32.const 0 - i32.ne - call $f86 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 488 - i32.add - call $f32 - end - i32.const 8 - local.set $p0 - br $B0 - end - i32.const 6 - local.set $p0 - br $B0 - end - local.get $l1 - i32.const 376 - i32.add - local.tee $p0 - local.get $l1 - i32.const 392 - i32.add - i32.load8_u - i32.store8 - local.get $l1 - local.get $l1 - i64.load offset=384 - i64.store offset=368 - local.get $l7 - i32.const 255 - i32.and - i32.const 1 - i32.eq - if $I51 - local.get $l1 - i32.const 431 - i32.add - local.get $l18 - i64.store align=1 - local.get $l1 - i32.const 447 - i32.add - local.get $p0 - i32.load8_u - i32.store8 - local.get $l1 - local.get $l21 - i64.store offset=423 align=1 - local.get $l1 - local.get $l12 - i32.store offset=419 align=1 - local.get $l1 - local.get $l13 - i32.store16 offset=417 align=1 - local.get $l1 - local.get $l14 - i32.store8 offset=416 - local.get $l1 - local.get $l1 - i64.load offset=368 - i64.store offset=439 align=1 - local.get $l1 - i32.const 520 - i32.add - local.get $l1 - i32.const 416 - i32.add - call $f84 - br_if $B35 - end - local.get $l23 - local.get $l24 - i64.or - i64.eqz - br_if $B1 - local.get $l1 - i32.const 24 - i32.add - local.get $l22 - local.get $l26 - i64.add - local.tee $l16 - local.get $l16 - local.get $l22 - i64.lt_u - i64.extend_i32_u - local.get $l17 - local.get $l25 - i64.add - i64.add - call $f96 - local.get $l1 - i32.const 8 - i32.add - local.get $l1 - i64.load offset=24 - local.get $l1 - i32.const 32 - i32.add - i64.load - local.get $l24 - local.get $l23 - call $f95 - i32.const 1 - local.get $l1 - i64.load offset=8 - local.get $l1 - i64.load offset=520 - i64.gt_u - local.get $l1 - i32.const 16 - i32.add - i64.load - local.tee $l16 - local.get $l1 - i32.const 528 - i32.add - i64.load - local.tee $l17 - i64.gt_u - local.get $l16 - local.get $l17 - i64.eq - select - br_if $B34 - drop - end - i32.const 0 - end - i32.store8 offset=416 - local.get $l1 - i32.const 416 - i32.add - call $f65 - unreachable - end - unreachable - end - local.get $l1 - i32.const 704 - i32.add - global.set $g0 - local.get $p0) - (func $call (type $t13) (result i32) - (local $l0 i32) (local $l1 i32) - global.get $g0 - i32.const 48 - i32.sub - local.tee $l0 - global.set $g0 - local.get $l0 - i32.const 16384 - i32.store offset=36 - local.get $l0 - i32.const 65796 - i32.store offset=32 - local.get $l0 - i32.const 16384 - i32.store offset=40 - i32.const 65796 - local.get $l0 - i32.const 40 - i32.add - call $seal0.seal_value_transferred - local.get $l0 - i32.const 32 - i32.add - local.get $l0 - i32.load offset=40 - call $f77 - local.get $l0 - local.get $l0 - i64.load offset=32 - i64.store offset=40 - local.get $l0 - i32.const 8 - i32.add - local.get $l0 - i32.const 40 - i32.add - call $f29 - block $B0 - local.get $l0 - i64.load offset=8 - i32.wrap_i64 - br_if $B0 - local.get $l0 - i64.load offset=16 - local.get $l0 - i32.const 24 - i32.add - i64.load - i64.or - i64.eqz - i32.eqz - br_if $B0 - i32.const 1 - call $f79 - local.get $l0 - i32.const 48 - i32.add - global.set $g0 - i32.const 255 - i32.and - i32.const 2 - i32.shl - i32.const 65756 - i32.add - i32.load - return - end - unreachable) - (func $f81 (type $t3) (param $p0 i32) - (local $l1 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l1 - global.set $g0 - local.get $l1 - local.get $p0 - i32.load offset=4 - i32.store offset=12 - local.get $p0 - i32.load - local.get $l1 - i32.const 12 - i32.add - call $seal0.seal_input - local.get $p0 - local.get $l1 - i32.load offset=12 - call $f77 - local.get $l1 - i32.const 16 - i32.add - global.set $g0) - (func $f82 (type $t4) (param $p0 i32) (param $p1 i32) (param $p2 i32) (result i32) - (local $l3 i32) - local.get $p0 - i32.load16_u offset=4 - local.set $l3 - local.get $p0 - i32.const 0 - i32.store16 offset=4 - local.get $l3 - i32.const 1 - i32.and - i32.eqz - if $I0 - local.get $p0 - i32.load - local.get $p1 - local.get $p2 - call $f49 - return - end - local.get $p1 - local.get $l3 - i32.const 8 - i32.shr_u - i32.store8 - local.get $p0 - i32.load - local.get $p1 - i32.const 1 - i32.add - local.get $p2 - i32.const -1 - i32.add - call $f49) - (func $f83 (type $t2) (param $p0 i32) (param $p1 i32) - (local $l2 i32) - local.get $p1 - if $I0 (result i32) - local.get $p1 - i32.const 1 - call $f58 - else - i32.const 1 - end - local.set $l2 - local.get $p0 - local.get $p1 - i32.store offset=4 - local.get $p0 - local.get $l2 - i32.store) - (func $f84 (type $t5) (param $p0 i32) (param $p1 i32) (result i32) - i32.const 65752 - i32.const 0 - local.get $p0 - i32.const 88 - i32.add - local.get $p1 - call $f10 - local.tee $p0 - local.get $p0 - i32.load8_u offset=4 - i32.const 2 - i32.eq - local.tee $p0 - select - i32.const 4 - i32.add - local.get $p0 - select - i32.load8_u) - (func $f85 (type $t2) (param $p0 i32) (param $p1 i32) - block $B0 (result i32) - i32.const 1 - local.get $p0 - i32.const 144 - i32.add - local.tee $p0 - local.get $p1 - i32.eq - br_if $B0 - drop - local.get $p1 - local.get $p0 - call $f101 - i32.eqz - end - if $I1 - return - end - unreachable) - (func $f86 (type $t0) (param $p0 i32) (param $p1 i32) (param $p2 i32) - (local $l3 i32) (local $l4 i32) (local $l5 i32) (local $l6 i32) (local $l7 i32) (local $l8 i32) (local $l9 i32) - global.get $g0 - i32.const 256 - i32.sub - local.tee $l3 - global.set $g0 - local.get $l3 - i32.const 32 - i32.add - call $f76 - local.get $p0 - local.get $l3 - i32.const 32 - i32.add - call $f85 - block $B0 - block $B1 - block $B2 - block $B3 - local.get $p0 - local.get $p1 - call $f84 - local.get $p2 - i32.eq - br_if $B3 - local.get $l3 - i32.const 24 - i32.add - local.tee $l7 - local.get $p1 - i32.const 24 - i32.add - i64.load align=1 - i64.store - local.get $l3 - i32.const 16 - i32.add - local.tee $l6 - local.get $p1 - i32.const 16 - i32.add - i64.load align=1 - i64.store - local.get $l3 - i32.const 8 - i32.add - local.tee $l5 - local.get $p1 - i32.const 8 - i32.add - i64.load align=1 - i64.store - local.get $l3 - local.get $p1 - i64.load align=1 - i64.store - local.get $p0 - i32.const 88 - i32.add - local.get $l3 - call $f10 - local.tee $l4 - i32.load8_u offset=4 - i32.const 2 - i32.ne - if $I4 - local.get $l4 - local.get $p2 - i32.store8 offset=4 - local.get $l4 - i32.const 0 - i32.store8 offset=8 - br $B0 - end - local.get $l3 - i32.const 120 - i32.add - local.get $l5 - i64.load - i64.store - local.get $l3 - i32.const 128 - i32.add - local.get $l6 - i64.load - i64.store - local.get $l3 - i32.const 136 - i32.add - local.get $l7 - i64.load - i64.store - local.get $l3 - local.get $l3 - i64.load - i64.store offset=112 - local.get $p0 - i32.const 76 - i32.add - i32.load - local.tee $l7 - local.get $p0 - i32.const 80 - i32.add - i32.load - i32.eq - if $I5 - local.get $l3 - i32.const 160 - i32.add - local.tee $l6 - local.get $l3 - i32.const 120 - i32.add - i64.load - i64.store - local.get $l3 - i32.const 168 - i32.add - local.tee $l5 - local.get $l3 - i32.const 128 - i32.add - i64.load - i64.store - local.get $l3 - i32.const 176 - i32.add - local.tee $l8 - local.get $l3 - i32.const 136 - i32.add - i64.load - i64.store - local.get $l3 - i32.const 150 - i32.add - local.tee $l9 - local.get $l3 - i32.const 111 - i32.add - i32.load8_u - i32.store8 - local.get $l3 - local.get $l3 - i64.load offset=112 - i64.store offset=152 - local.get $l3 - local.get $l3 - i32.load16_u offset=109 align=1 - i32.store16 offset=148 - local.get $l3 - i32.const 184 - i32.add - local.get $p0 - i32.const 56 - i32.add - local.get $l7 - call $f21 - block $B6 - local.get $l3 - i32.load offset=184 - i32.const 1 - i32.ne - if $I7 - local.get $l3 - i32.const 48 - i32.add - local.get $l3 - i32.const 204 - i32.add - i32.load - i32.store - local.get $l3 - i32.const 40 - i32.add - local.get $l3 - i32.const 196 - i32.add - i64.load align=4 - i64.store - local.get $l3 - local.get $l3 - i64.load offset=188 align=4 - i64.store offset=32 - i32.const 40 - call $f16 - local.tee $l4 - i32.const 1 - i32.store8 - local.get $l4 - i32.const 0 - i32.store8 offset=36 - local.get $l4 - local.get $l3 - i64.load offset=152 - i64.store offset=1 align=1 - local.get $l4 - i32.const 9 - i32.add - local.get $l6 - i64.load - i64.store align=1 - local.get $l4 - i32.const 17 - i32.add - local.get $l5 - i64.load - i64.store align=1 - local.get $l4 - i32.const 25 - i32.add - local.get $l8 - i64.load - i64.store align=1 - local.get $l4 - local.get $l3 - i32.load16_u offset=148 - i32.store16 offset=33 align=1 - local.get $l4 - i32.const 35 - i32.add - local.get $l9 - i32.load8_u - i32.store8 - local.get $l3 - i32.const 32 - i32.add - local.get $l4 - call $f25 - drop - br $B6 - end - local.get $l3 - i32.const 192 - i32.add - i32.load - local.get $l3 - i32.const 196 - i32.add - i32.load - i32.const 2 - i32.shl - i32.add - i32.const 48 - i32.add - i32.load - local.set $l4 - local.get $l3 - i32.const 41 - i32.add - local.get $l6 - i64.load - i64.store align=1 - local.get $l3 - i32.const 49 - i32.add - local.get $l5 - i64.load - i64.store align=1 - local.get $l3 - i32.const 57 - i32.add - local.get $l8 - i64.load - i64.store align=1 - local.get $l3 - i32.const 65 - i32.add - local.get $l3 - i32.load16_u offset=148 - i32.store16 align=1 - local.get $l3 - i32.const 67 - i32.add - local.get $l9 - i32.load8_u - i32.store8 - local.get $l3 - i32.const 1 - i32.store8 offset=32 - local.get $l3 - local.get $l3 - i64.load offset=152 - i64.store offset=33 align=1 - local.get $l3 - i32.const 208 - i32.add - local.get $l4 - local.get $l3 - i32.const 32 - i32.add - call $f9 - end - local.get $p0 - local.get $p0 - i32.load offset=72 - i32.const 1 - i32.add - i32.store offset=72 - local.get $p0 - local.get $p0 - i32.load offset=80 - i32.const 1 - i32.add - i32.store offset=80 - br $B1 - end - local.get $p0 - i32.const 16 - i32.add - local.tee $l8 - local.get $p0 - i32.const 72 - i32.add - i32.load - local.tee $l7 - call $f20 - local.set $l4 - local.get $l3 - i32.const 41 - i32.add - local.get $l3 - i32.const 120 - i32.add - i64.load - i64.store align=1 - local.get $l3 - i32.const 49 - i32.add - local.get $l3 - i32.const 128 - i32.add - i64.load - i64.store align=1 - local.get $l3 - i32.const 57 - i32.add - local.get $l3 - i32.const 136 - i32.add - i64.load - i64.store align=1 - local.get $l3 - i32.const 65 - i32.add - local.get $l3 - i32.load16_u offset=109 align=1 - i32.store16 align=1 - local.get $l3 - i32.const 67 - i32.add - local.get $l3 - i32.const 111 - i32.add - i32.load8_u - i32.store8 - local.get $l3 - i32.const 1 - i32.store8 offset=32 - local.get $l3 - local.get $l3 - i64.load offset=112 - i64.store offset=33 align=1 - local.get $l3 - i32.const 208 - i32.add - local.get $l4 - local.get $l3 - i32.const 32 - i32.add - call $f9 - local.get $l3 - i32.load8_u offset=208 - local.tee $l4 - i32.const 2 - i32.ne - if $I8 - local.get $l4 - i32.const 1 - i32.eq - br_if $B3 - local.get $l3 - i32.const 216 - i32.add - i32.load - local.set $l6 - local.get $l7 - local.get $l3 - i32.load offset=212 - local.tee $l4 - i32.eq - if $I9 - local.get $l6 - local.get $l7 - i32.eq - br_if $B2 - end - block $B10 (result i32) - i32.const 0 - local.get $l8 - local.get $l6 - call $f26 - local.tee $l5 - i32.eqz - br_if $B10 - drop - i32.const 0 - local.get $l5 - i32.const 4 - i32.add - local.get $l5 - i32.load8_u - i32.const 1 - i32.eq - select - end - local.tee $l5 - i32.eqz - if $I11 - unreachable - end - block $B12 - local.get $l4 - local.get $l6 - i32.eq - if $I13 - local.get $l5 - local.get $l4 - i32.store - local.get $l5 - local.get $l4 - i32.store offset=4 - br $B12 - end - local.get $l5 - local.get $l4 - i32.store - block $B14 (result i32) - i32.const 0 - local.get $l8 - local.get $l4 - call $f26 - local.tee $l5 - i32.eqz - br_if $B14 - drop - i32.const 0 - local.get $l5 - i32.const 4 - i32.add - local.get $l5 - i32.load8_u - i32.const 1 - i32.eq - select - end - local.tee $l5 - i32.eqz - if $I15 - unreachable - end - local.get $l5 - local.get $l6 - i32.store offset=4 - end - local.get $p0 - i32.load offset=72 - local.get $l7 - i32.ne - br_if $B1 - local.get $p0 - local.get $l4 - local.get $l6 - local.get $l6 - local.get $l4 - i32.gt_u - select - i32.store offset=72 - br $B1 - end - unreachable - end - unreachable - end - local.get $p0 - local.get $p0 - i32.load offset=76 - i32.store offset=72 - end - local.get $p0 - local.get $p0 - i32.load offset=76 - i32.const 1 - i32.add - i32.store offset=76 - local.get $l3 - i32.const 176 - i32.add - local.tee $l6 - local.get $l3 - i32.const 24 - i32.add - i64.load - i64.store - local.get $l3 - i32.const 168 - i32.add - local.tee $l5 - local.get $l3 - i32.const 16 - i32.add - i64.load - i64.store - local.get $l3 - i32.const 160 - i32.add - local.tee $l8 - local.get $l3 - i32.const 8 - i32.add - i64.load - i64.store - local.get $l3 - local.get $l3 - i64.load - i64.store offset=152 - i32.const 12 - call $f16 - local.tee $l4 - i32.const 0 - i32.store8 offset=8 - local.get $l4 - local.get $p2 - i32.store8 offset=4 - local.get $l4 - local.get $l7 - i32.store - local.get $l3 - i32.const 232 - i32.add - local.get $l6 - i64.load - i64.store - local.get $l3 - i32.const 224 - i32.add - local.get $l5 - i64.load - i64.store - local.get $l3 - i32.const 216 - i32.add - local.get $l8 - i64.load - i64.store - local.get $l3 - local.get $l3 - i64.load offset=152 - i64.store offset=208 - local.get $l3 - i32.const 32 - i32.add - local.get $p0 - i32.const 128 - i32.add - local.get $l3 - i32.const 208 - i32.add - call $f11 - local.get $l3 - i32.load offset=32 - i32.const 1 - i32.ne - if $I16 - local.get $l3 - i32.const 208 - i32.add - local.get $l3 - i32.const 32 - i32.add - i32.const 4 - i32.or - i32.const 48 - call $f99 - local.get $l3 - i32.const 208 - i32.add - local.get $l4 - call $f17 - drop - br $B0 - end - local.get $l3 - i32.const 40 - i32.add - i32.load - local.get $l3 - i32.const 44 - i32.add - i32.load - i32.const 2 - i32.shl - i32.add - i32.const 4 - i32.add - local.tee $l7 - i32.load - local.set $p0 - local.get $l7 - local.get $l4 - i32.store - local.get $p0 - i32.eqz - br_if $B0 - local.get $p0 - call $f89 - end - local.get $l3 - i32.const 65 - i32.add - local.get $p2 - i32.store8 - local.get $l3 - i32.const 57 - i32.add - local.get $p1 - i32.const 24 - i32.add - i64.load align=1 - i64.store align=1 - local.get $l3 - i32.const 49 - i32.add - local.get $p1 - i32.const 16 - i32.add - i64.load align=1 - i64.store align=1 - local.get $l3 - i32.const 41 - i32.add - local.get $p1 - i32.const 8 - i32.add - i64.load align=1 - i64.store align=1 - local.get $l3 - i32.const 2 - i32.store8 offset=32 - local.get $l3 - local.get $p1 - i64.load align=1 - i64.store offset=33 align=1 - local.get $l3 - i32.const 32 - i32.add - call $f61 - local.get $l3 - i32.const 256 - i32.add - global.set $g0) - (func $f87 (type $t4) (param $p0 i32) (param $p1 i32) (param $p2 i32) (result i32) - (local $l3 i32) - local.get $p2 - i32.const 1 - call $f88 - local.tee $l3 - if $I0 - local.get $l3 - local.get $p0 - local.get $p2 - local.get $p1 - local.get $p1 - local.get $p2 - i32.gt_u - select - call $f99 - local.get $p0 - call $f89 - end - local.get $l3) - (func $f88 (type $t5) (param $p0 i32) (param $p1 i32) (result i32) - (local $l2 i32) (local $l3 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l2 - global.set $g0 - local.get $l2 - i32.const 65792 - i32.load - i32.store offset=12 - block $B0 - local.get $p0 - i32.const 3 - i32.add - i32.const 2 - i32.shr_u - local.tee $l3 - local.get $p1 - local.get $l2 - i32.const 12 - i32.add - call $f92 - local.tee $p0 - br_if $B0 - local.get $l2 - local.get $l3 - local.get $p1 - call $f91 - i32.const 0 - local.set $p0 - local.get $l2 - i32.load - br_if $B0 - local.get $l2 - i32.load offset=4 - local.tee $p0 - local.get $l2 - i32.load offset=12 - i32.store offset=8 - local.get $l2 - local.get $p0 - i32.store offset=12 - local.get $l3 - local.get $p1 - local.get $l2 - i32.const 12 - i32.add - call $f92 - local.set $p0 - end - i32.const 65792 - local.get $l2 - i32.load offset=12 - i32.store - local.get $l2 - i32.const 16 - i32.add - global.set $g0 - local.get $p0) - (func $f89 (type $t3) (param $p0 i32) - (local $l1 i32) (local $l2 i32) (local $l3 i32) (local $l4 i32) - local.get $p0 - if $I0 - i32.const 65792 - i32.load - local.set $l3 - local.get $p0 - i32.const 0 - i32.store - local.get $p0 - i32.const -8 - i32.add - local.tee $l2 - local.get $l2 - i32.load - local.tee $l4 - i32.const -2 - i32.and - i32.store - block $B1 - block $B2 - block $B3 - block $B4 - local.get $p0 - i32.const -4 - i32.add - i32.load - i32.const -4 - i32.and - local.tee $l1 - if $I5 - local.get $l1 - i32.load8_u - i32.const 1 - i32.and - i32.eqz - br_if $B4 - end - local.get $l4 - i32.const -4 - i32.and - local.tee $l1 - i32.eqz - br_if $B3 - i32.const 0 - local.get $l1 - local.get $l4 - i32.const 2 - i32.and - select - local.tee $l1 - i32.eqz - br_if $B3 - local.get $l1 - i32.load8_u - i32.const 1 - i32.and - br_if $B3 - local.get $p0 - local.get $l1 - i32.load offset=8 - i32.const -4 - i32.and - i32.store - local.get $l1 - local.get $l2 - i32.const 1 - i32.or - i32.store offset=8 - br $B2 - end - local.get $l2 - call $f93 - local.get $l2 - i32.load8_u - i32.const 2 - i32.and - i32.eqz - br_if $B2 - local.get $l1 - local.get $l1 - i32.load - i32.const 2 - i32.or - i32.store - br $B2 - end - local.get $p0 - local.get $l3 - i32.store - br $B1 - end - local.get $l3 - local.set $l2 - end - i32.const 65792 - local.get $l2 - i32.store - end) - (func $f90 (type $t14) (param $p0 i32) (param $p1 i32) (param $p2 i32) (param $p3 i32) (param $p4 i32) - block $B0 - local.get $p2 - local.get $p1 - i32.ge_u - if $I1 - local.get $p4 - local.get $p2 - i32.ge_u - br_if $B0 - unreachable - end - unreachable - end - local.get $p0 - local.get $p2 - local.get $p1 - i32.sub - i32.store offset=4 - local.get $p0 - local.get $p1 - local.get $p3 - i32.add - i32.store) - (func $f91 (type $t0) (param $p0 i32) (param $p1 i32) (param $p2 i32) - block $B0 (result i32) - i32.const 1 - local.get $p1 - i32.const 2 - i32.shl - local.tee $p1 - local.get $p2 - i32.const 3 - i32.shl - i32.const 512 - i32.add - local.tee $p2 - local.get $p1 - local.get $p2 - i32.gt_u - select - i32.const 65543 - i32.add - local.tee $p1 - i32.const 16 - i32.shr_u - memory.grow - local.tee $p2 - i32.const -1 - i32.eq - br_if $B0 - drop - local.get $p2 - i32.const 16 - i32.shl - local.tee $p2 - i64.const 0 - i64.store - local.get $p2 - i32.const 0 - i32.store offset=8 - local.get $p2 - local.get $p2 - local.get $p1 - i32.const -65536 - i32.and - i32.add - i32.const 2 - i32.or - i32.store - i32.const 0 - end - local.set $p1 - local.get $p0 - local.get $p2 - i32.store offset=4 - local.get $p0 - local.get $p1 - i32.store) - (func $f92 (type $t4) (param $p0 i32) (param $p1 i32) (param $p2 i32) (result i32) - (local $l3 i32) (local $l4 i32) (local $l5 i32) (local $l6 i32) (local $l7 i32) (local $l8 i32) - local.get $p1 - i32.const -1 - i32.add - local.set $l7 - i32.const 0 - local.get $p1 - i32.sub - local.set $l8 - local.get $p0 - i32.const 2 - i32.shl - local.set $l5 - local.get $p2 - i32.load - local.set $p0 - loop $L0 - block $B1 - local.get $p0 - i32.eqz - br_if $B1 - local.get $p0 - local.set $p1 - loop $L2 - block $B3 - local.get $p1 - i32.load offset=8 - local.tee $p0 - i32.const 1 - i32.and - i32.eqz - if $I4 - local.get $p1 - i32.load - i32.const -4 - i32.and - local.tee $l4 - local.get $p1 - i32.const 8 - i32.add - local.tee $l6 - i32.sub - local.get $l5 - i32.lt_u - br_if $B3 - block $B5 - local.get $l6 - i32.const 72 - i32.add - local.get $l4 - local.get $l5 - i32.sub - local.get $l8 - i32.and - local.tee $l4 - i32.gt_u - if $I6 - local.get $l6 - local.get $l7 - i32.and - br_if $B3 - local.get $p2 - local.get $p0 - i32.const -4 - i32.and - i32.store - local.get $p1 - local.get $p1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $p1 - local.set $p0 - br $B5 - end - local.get $l4 - i32.const 0 - i32.store - local.get $l4 - i32.const -8 - i32.add - local.tee $p0 - i64.const 0 - i64.store align=4 - local.get $p0 - local.get $p1 - i32.load - i32.const -4 - i32.and - i32.store - block $B7 - local.get $p1 - i32.load - local.tee $p2 - i32.const -4 - i32.and - local.tee $l3 - i32.eqz - br_if $B7 - i32.const 0 - local.get $l3 - local.get $p2 - i32.const 2 - i32.and - select - local.tee $p2 - i32.eqz - br_if $B7 - local.get $p2 - local.get $p2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $p0 - i32.or - i32.store offset=4 - end - local.get $p0 - local.get $p0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $p1 - i32.or - i32.store offset=4 - local.get $p1 - local.get $p1 - i32.load offset=8 - i32.const -2 - i32.and - i32.store offset=8 - local.get $p1 - local.get $p1 - i32.load - local.tee $p2 - i32.const 3 - i32.and - local.get $p0 - i32.or - local.tee $l3 - i32.store - local.get $p2 - i32.const 2 - i32.and - if $I8 - local.get $p1 - local.get $l3 - i32.const -3 - i32.and - i32.store - local.get $p0 - local.get $p0 - i32.load - i32.const 2 - i32.or - i32.store - end - local.get $p0 - local.get $p0 - i32.load - i32.const 1 - i32.or - i32.store - end - local.get $p0 - i32.const 8 - i32.add - local.set $l3 - br $B1 - end - local.get $p1 - local.get $p0 - i32.const -2 - i32.and - i32.store offset=8 - block $B9 (result i32) - i32.const 0 - local.get $p1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $p0 - i32.eqz - br_if $B9 - drop - i32.const 0 - local.get $p0 - local.get $p0 - i32.load8_u - i32.const 1 - i32.and - select - end - local.set $p0 - local.get $p1 - call $f93 - local.get $p1 - i32.load8_u - i32.const 2 - i32.and - if $I10 - local.get $p0 - local.get $p0 - i32.load - i32.const 2 - i32.or - i32.store - end - local.get $p2 - local.get $p0 - i32.store - local.get $p0 - local.set $p1 - br $L2 - end - end - local.get $p2 - local.get $p0 - i32.store - br $L0 - end - end - local.get $l3) - (func $f93 (type $t3) (param $p0 i32) - (local $l1 i32) (local $l2 i32) - block $B0 - local.get $p0 - i32.load - local.tee $l1 - i32.const -4 - i32.and - local.tee $l2 - i32.eqz - br_if $B0 - i32.const 0 - local.get $l2 - local.get $l1 - i32.const 2 - i32.and - select - local.tee $l1 - i32.eqz - br_if $B0 - local.get $l1 - local.get $l1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $p0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - end - local.get $p0 - local.get $p0 - i32.load offset=4 - local.tee $l1 - i32.const -4 - i32.and - local.tee $l2 - if $I1 (result i32) - local.get $l2 - local.get $l2 - i32.load - i32.const 3 - i32.and - local.get $p0 - i32.load - i32.const -4 - i32.and - i32.or - i32.store - local.get $p0 - i32.load offset=4 - else - local.get $l1 - end - i32.const 3 - i32.and - i32.store offset=4 - local.get $p0 - local.get $p0 - i32.load - i32.const 3 - i32.and - i32.store) - (func $f94 (type $t17) (param $p0 i32) (param $p1 i64) (param $p2 i64) - (local $l3 i64) - local.get $p0 - local.get $p1 - i64.const 32 - i64.shr_u - local.tee $l3 - i64.const 0 - i64.mul - local.get $p2 - i64.const 1000000 - i64.mul - i64.add - i64.const 0 - i64.add - local.get $l3 - i64.const 1000000 - i64.mul - local.get $p1 - i64.const 4294967295 - i64.and - i64.const 1000000 - i64.mul - local.tee $p1 - i64.const 32 - i64.shr_u - i64.add - local.tee $p2 - i64.const 32 - i64.shr_u - i64.add - local.get $p2 - i64.const 4294967295 - i64.and - i64.const 0 - i64.add - local.tee $p2 - i64.const 32 - i64.shr_u - i64.add - i64.store offset=8 - local.get $p0 - local.get $p1 - i64.const 4294967295 - i64.and - local.get $p2 - i64.const 32 - i64.shl - i64.or - i64.store) - (func $f95 (type $t15) (param $p0 i32) (param $p1 i64) (param $p2 i64) (param $p3 i64) (param $p4 i64) - (local $l5 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l5 - global.set $g0 - local.get $l5 - local.get $p1 - local.get $p2 - local.get $p3 - local.get $p4 - call $f104 - local.get $l5 - i64.load - local.set $p1 - local.get $p0 - local.get $l5 - i32.const 8 - i32.add - i64.load - i64.store offset=8 - local.get $p0 - local.get $p1 - i64.store - local.get $l5 - i32.const 16 - i32.add - global.set $g0) - (func $f96 (type $t17) (param $p0 i32) (param $p1 i64) (param $p2 i64) - (local $l3 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l3 - global.set $g0 - local.get $l3 - local.get $p1 - local.get $p2 - call $f94 - local.get $l3 - i64.load - local.set $p1 - local.get $p0 - local.get $l3 - i32.const 8 - i32.add - i64.load - i64.store offset=8 - local.get $p0 - local.get $p1 - i64.store - local.get $l3 - i32.const 16 - i32.add - global.set $g0) - (func $f97 (type $t16) (param $p0 i32) (param $p1 i64) (param $p2 i64) (param $p3 i32) - (local $l4 i64) - block $B0 - local.get $p3 - i32.const 64 - i32.and - i32.eqz - if $I1 - local.get $p3 - i32.eqz - br_if $B0 - local.get $p2 - local.get $p3 - i32.const 63 - i32.and - i64.extend_i32_u - local.tee $l4 - i64.shl - local.get $p1 - i32.const 0 - local.get $p3 - i32.sub - i32.const 63 - i32.and - i64.extend_i32_u - i64.shr_u - i64.or - local.set $p2 - local.get $p1 - local.get $l4 - i64.shl - local.set $p1 - br $B0 - end - local.get $p1 - local.get $p3 - i32.const 63 - i32.and - i64.extend_i32_u - i64.shl - local.set $p2 - i64.const 0 - local.set $p1 - end - local.get $p0 - local.get $p1 - i64.store - local.get $p0 - local.get $p2 - i64.store offset=8) - (func $f98 (type $t16) (param $p0 i32) (param $p1 i64) (param $p2 i64) (param $p3 i32) - (local $l4 i64) - block $B0 - local.get $p3 - i32.const 64 - i32.and - i32.eqz - if $I1 - local.get $p3 - i32.eqz - br_if $B0 - local.get $p2 - i32.const 0 - local.get $p3 - i32.sub - i32.const 63 - i32.and - i64.extend_i32_u - i64.shl - local.get $p1 - local.get $p3 - i32.const 63 - i32.and - i64.extend_i32_u - local.tee $l4 - i64.shr_u - i64.or - local.set $p1 - local.get $p2 - local.get $l4 - i64.shr_u - local.set $p2 - br $B0 - end - local.get $p2 - local.get $p3 - i32.const 63 - i32.and - i64.extend_i32_u - i64.shr_u - local.set $p1 - i64.const 0 - local.set $p2 - end - local.get $p0 - local.get $p1 - i64.store - local.get $p0 - local.get $p2 - i64.store offset=8) - (func $f99 (type $t18) (param $p0 i32) (param $p1 i32) (param $p2 i32) - (local $l3 i32) - loop $L0 (result i32) - local.get $p2 - local.get $l3 - i32.eq - if $I1 (result i32) - local.get $p0 - else - local.get $p0 - local.get $l3 - i32.add - local.get $p1 - local.get $l3 - i32.add - i32.load8_u - i32.store8 - local.get $l3 - i32.const 1 - i32.add - local.set $l3 - br $L0 - end - end - drop) - (func $f100 (type $t18) (param $p0 i32) (param $p1 i32) (param $p2 i32) - block $B0 - local.get $p1 - local.get $p0 - i32.ge_u - if $I1 - loop $L2 - local.get $p2 - i32.eqz - br_if $B0 - local.get $p0 - local.get $p1 - i32.load8_u - i32.store8 - local.get $p0 - i32.const 1 - i32.add - local.set $p0 - local.get $p1 - i32.const 1 - i32.add - local.set $p1 - local.get $p2 - i32.const -1 - i32.add - local.set $p2 - br $L2 - end - unreachable - end - local.get $p1 - i32.const -1 - i32.add - local.set $p1 - local.get $p0 - i32.const -1 - i32.add - local.set $p0 - loop $L3 - local.get $p2 - i32.eqz - br_if $B0 - local.get $p0 - local.get $p2 - i32.add - local.get $p1 - local.get $p2 - i32.add - i32.load8_u - i32.store8 - local.get $p2 - i32.const -1 - i32.add - local.set $p2 - br $L3 - end - unreachable - end) - (func $f101 (type $t19) (param $p0 i32) (param $p1 i32) (result i32) - (local $l2 i32) (local $l3 i32) (local $l4 i32) - i32.const 32 - local.set $l2 - loop $L0 - local.get $l2 - i32.eqz - if $I1 - i32.const 0 - return - end - local.get $l2 - i32.const -1 - i32.add - local.set $l2 - local.get $p1 - i32.load8_u - local.set $l3 - local.get $p0 - i32.load8_u - local.set $l4 - local.get $p0 - i32.const 1 - i32.add - local.set $p0 - local.get $p1 - i32.const 1 - i32.add - local.set $p1 - local.get $l3 - local.get $l4 - i32.eq - br_if $L0 - end - local.get $l4 - local.get $l3 - i32.sub) - (func $f102 (type $t16) (param $p0 i32) (param $p1 i64) (param $p2 i64) (param $p3 i32) - (local $l4 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l4 - global.set $g0 - local.get $l4 - local.get $p1 - local.get $p2 - local.get $p3 - call $f97 - local.get $l4 - i64.load - local.set $p1 - local.get $p0 - local.get $l4 - i32.const 8 - i32.add - i64.load - i64.store offset=8 - local.get $p0 - local.get $p1 - i64.store - local.get $l4 - i32.const 16 - i32.add - global.set $g0) - (func $f103 (type $t16) (param $p0 i32) (param $p1 i64) (param $p2 i64) (param $p3 i32) - (local $l4 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l4 - global.set $g0 - local.get $l4 - local.get $p1 - local.get $p2 - local.get $p3 - call $f98 - local.get $l4 - i64.load - local.set $p1 - local.get $p0 - local.get $l4 - i32.const 8 - i32.add - i64.load - i64.store offset=8 - local.get $p0 - local.get $p1 - i64.store - local.get $l4 - i32.const 16 - i32.add - global.set $g0) - (func $f104 (type $t15) (param $p0 i32) (param $p1 i64) (param $p2 i64) (param $p3 i64) (param $p4 i64) - (local $l5 i32) - global.get $g0 - i32.const 16 - i32.sub - local.tee $l5 - global.set $g0 - local.get $l5 - local.get $p1 - local.get $p2 - local.get $p3 - local.get $p4 - call $f105 - local.get $l5 - i64.load - local.set $p1 - local.get $p0 - local.get $l5 - i32.const 8 - i32.add - i64.load - i64.store offset=8 - local.get $p0 - local.get $p1 - i64.store - local.get $l5 - i32.const 16 - i32.add - global.set $g0) - (func $f105 (type $t20) (param $p0 i32) (param $p1 i64) (param $p2 i64) (param $p3 i64) (param $p4 i64) - (local $l5 i32) (local $l6 i32) (local $l7 i32) (local $l8 i64) (local $l9 i64) (local $l10 i64) (local $l11 i64) (local $l12 i64) - global.get $g0 - i32.const 48 - i32.sub - local.tee $l6 - global.set $g0 - block $B0 - block $B1 - block $B2 (result i64) - block $B3 - block $B4 - block $B5 - block $B6 - local.get $p2 - i64.eqz - i32.eqz - if $I7 - local.get $p3 - i64.eqz - br_if $B6 - local.get $p4 - i64.eqz - br_if $B5 - local.get $p4 - i64.clz - i32.wrap_i64 - local.get $p2 - i64.clz - i32.wrap_i64 - i32.sub - local.tee $l5 - i32.const 63 - i32.gt_u - br_if $B3 - i32.const 127 - local.get $l5 - i32.sub - local.set $l7 - local.get $l5 - i32.const 1 - i32.add - local.set $l5 - br $B1 - end - local.get $p4 - i64.eqz - i32.eqz - br_if $B3 - local.get $p3 - i64.const 0 - i64.eq - br_if $B4 - local.get $p1 - local.get $p3 - i64.div_u - br $B2 - end - local.get $p4 - i64.eqz - br_if $B4 - block $B8 - local.get $p1 - i64.eqz - i32.eqz - if $I9 - local.get $p4 - i64.popcnt - i64.const 1 - i64.eq - br_if $B8 - local.get $p4 - i64.clz - i32.wrap_i64 - local.get $p2 - i64.clz - i32.wrap_i64 - i32.sub - local.tee $l5 - i32.const 62 - i32.gt_u - br_if $B3 - i32.const 127 - local.get $l5 - i32.sub - local.set $l7 - local.get $l5 - i32.const 1 - i32.add - local.set $l5 - br $B1 - end - local.get $p2 - local.get $p4 - i64.div_u - br $B2 - end - local.get $p2 - local.get $p4 - i64.ctz - i64.shr_u - br $B2 - end - local.get $p3 - i64.popcnt - i64.const 1 - i64.ne - if $I10 - i32.const -65 - local.get $p3 - i64.clz - i32.wrap_i64 - local.get $p2 - i64.clz - i32.wrap_i64 - i32.sub - local.tee $l5 - i32.sub - local.set $l7 - local.get $l5 - i32.const 65 - i32.add - local.set $l5 - br $B1 - end - local.get $p3 - i64.const 1 - i64.eq - br_if $B0 - local.get $l6 - i32.const 32 - i32.add - local.get $p1 - local.get $p2 - local.get $p3 - i64.ctz - i32.wrap_i64 - call $f103 - local.get $l6 - i32.const 40 - i32.add - i64.load - local.set $p2 - local.get $l6 - i64.load offset=32 - local.set $p1 - br $B0 - end - unreachable - end - i64.const 0 - end - local.set $p1 - i64.const 0 - local.set $p2 - br $B0 - end - local.get $l6 - i32.const 16 - i32.add - local.get $p1 - local.get $p2 - local.get $l5 - i32.const 127 - i32.and - call $f103 - local.get $l6 - local.get $p1 - local.get $p2 - local.get $l7 - i32.const 127 - i32.and - call $f102 - local.get $l6 - i32.const 8 - i32.add - i64.load - local.set $p2 - local.get $l6 - i32.const 24 - i32.add - i64.load - local.set $l9 - local.get $l6 - i64.load - local.set $p1 - local.get $l6 - i64.load offset=16 - local.set $l8 - loop $L11 - local.get $l5 - if $I12 - local.get $l9 - i64.const 1 - i64.shl - local.get $l8 - i64.const 63 - i64.shr_u - i64.or - local.tee $l9 - local.get $l8 - i64.const 1 - i64.shl - local.get $p2 - i64.const 63 - i64.shr_u - i64.or - local.tee $l8 - i64.const -1 - i64.xor - local.tee $l10 - local.get $p3 - i64.add - local.get $l10 - i64.lt_u - i64.extend_i32_u - local.get $l9 - i64.const -1 - i64.xor - local.get $p4 - i64.add - i64.add - i64.const 63 - i64.shr_s - local.tee $l10 - local.get $p4 - i64.and - i64.sub - local.get $l8 - local.get $p3 - local.get $l10 - i64.and - local.tee $l12 - i64.lt_u - i64.extend_i32_u - i64.sub - local.set $l9 - local.get $l8 - local.get $l12 - i64.sub - local.set $l8 - local.get $p2 - i64.const 1 - i64.shl - local.get $p1 - i64.const 63 - i64.shr_u - i64.or - local.set $p2 - local.get $l5 - i32.const -1 - i32.add - local.set $l5 - local.get $p1 - i64.const 1 - i64.shl - local.get $l11 - i64.or - local.set $p1 - local.get $l10 - i64.const 1 - i64.and - local.set $l11 - br $L11 - end - end - local.get $p2 - i64.const 1 - i64.shl - local.get $p1 - i64.const 63 - i64.shr_u - i64.or - local.set $p2 - local.get $p1 - i64.const 1 - i64.shl - local.get $l11 - i64.or - local.set $p1 - end - local.get $p0 - local.get $p1 - i64.store - local.get $p0 - local.get $p2 - i64.store offset=8 - local.get $l6 - i32.const 48 - i32.add - global.set $g0) - (global $g0 (mut i32) (i32.const 65536)) - (export "deploy" (func $deploy)) - (export "call" (func $call)) - (data $d0 (i32.const 65536) "PercentageTransferManagerStorage::ChangeAllowedPercentagePercentageTransferManagerStorage::ChangePrimaryIssuancePercentageTransferManagerStorage::ModifyExemptionListPercentageTransferManagerStorage::TransferOwnership\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08")) diff --git a/pallets/contracts-old/src/benchmarking.rs b/pallets/contracts-old/src/benchmarking.rs deleted file mode 100644 index 4b50e2aa09..0000000000 --- a/pallets/contracts-old/src/benchmarking.rs +++ /dev/null @@ -1,263 +0,0 @@ -// This file is part of the Polymesh distribution (https://github.com/PolymathNetwork/Polymesh). -// Copyright (c) 2020 Polymath - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, version 3. - -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -use crate::*; - -use frame_benchmarking::benchmarks; -use frame_support::storage::IterableStorageMap; -use frame_support::weights::Weight; -use frame_system::RawOrigin; -use pallet_contracts::PristineCode; -use parity_wasm::elements::FuncBody; -use polymesh_common_utilities::{ - benchs::{AccountIdOf, UserBuilder}, - constants::ENSURED_MAX_LEN, - TestUtilsFn, -}; -use polymesh_primitives::{MetaDescription, MetaUrl, SmartExtensionType, TemplateMetadata}; -use sp_runtime::traits::Hash; - -type BaseContracts = pallet_contracts::Module; - -const MAX_URL_LENGTH: u32 = ENSURED_MAX_LEN; -const MAX_DESCRIPTION_LENGTH: u32 = ENSURED_MAX_LEN; - -// Copied from - https://github.com/PolymathNetwork/substrate/blob/v2.0.0/frame/contracts/src/benchmarking.rs#L30 -macro_rules! load_module { - ($name:expr) => {{ - let code = include_bytes!(concat!("../fixtures/", $name, ".wat")); - compile_module::(code) - }}; -} - -// Copied from - https://github.com/PolymathNetwork/substrate/blob/v2.0.0/frame/contracts/src/benchmarking.rs#L37 -pub fn compile_module(code: &[u8]) -> (Vec, ::Output) { - let code = sp_std::str::from_utf8(code).expect("Invalid utf8 in wat file."); - let binary = wat::parse_str(code).expect("Failed to compile wat file."); - let hash = T::Hashing::hash(&binary); - (binary, hash) -} - -// Copied from - https://github.com/PolymathNetwork/substrate/blob/v2.0.0/frame/contracts/src/benchmarking.rs#L54 -fn contract_with_call_body(body: FuncBody) -> (Vec, ::Output) { - use parity_wasm::elements::{Instruction::End, Instructions}; - let contract = parity_wasm::builder::ModuleBuilder::new() - // deploy function (idx 0) - .function() - .signature() - .with_params(vec![]) - .with_return_type(None) - .build() - .body() - .with_instructions(Instructions::new(vec![End])) - .build() - .build() - // call function (idx 1) - .function() - .signature() - .with_params(vec![]) - .with_return_type(None) - .build() - .with_body(body) - .build() - .export() - .field("deploy") - .internal() - .func(0) - .build() - .export() - .field("call") - .internal() - .func(1) - .build() - .build(); - let bytes = contract.to_bytes().unwrap(); - let hash = T::Hashing::hash(&bytes); - (bytes, hash) -} - -// Copied from - https://github.com/PolymathNetwork/substrate/blob/v2.0.0/frame/contracts/src/benchmarking.rs#L77 -fn expanded_contract(target_bytes: u32) -> (Vec, ::Output) { - use parity_wasm::elements::{ - BlockType, - Instruction::{self, End, I32Const, If, Return}, - Instructions, - }; - // Base size of a contract is 47 bytes and each expansion adds 6 bytes. - // We do one expansion less to account for the code section and function body - // size fields inside the binary wasm module representation which are leb128 encoded - // and therefore grow in size when the contract grows. We are not allowed to overshoot - // because of the maximum code size that is enforced by `put_code`. - let expansions = (target_bytes.saturating_sub(47) / 6).saturating_sub(1) as usize; - const EXPANSION: [Instruction; 4] = [I32Const(0), If(BlockType::NoResult), Return, End]; - let instructions = Instructions::new( - EXPANSION - .iter() - .cycle() - .take(EXPANSION.len() * expansions) - .cloned() - .chain(sp_std::iter::once(End)) - .collect(), - ); - contract_with_call_body::(FuncBody::new(Vec::new(), instructions)) -} - -pub fn emulate_blueprint_in_storage( - instantiation_fee: u32, - origin: RawOrigin, - expanded: &'static str, -) -> Result<::Output, DispatchError> { - let url = Some(MetaUrl::from( - vec![b'U'; MAX_URL_LENGTH as usize].as_slice(), - )); - let description = MetaDescription::from(vec![b'D'; MAX_DESCRIPTION_LENGTH as usize].as_slice()); - let meta_info = TemplateMetadata { - url, - se_type: SmartExtensionType::TransferManager, - usage_fee: 100u32.into(), - description, - version: 5000, - }; - let (wasm_blob, code_hash) = if expanded == "" { - expanded_contract::(BaseContracts::::current_schedule().max_code_size) - } else { - if expanded == "dummy" { - load_module!("dummy") - } else { - load_module!("ptm") - } - }; - Module::::set_put_code_flag(RawOrigin::Root.into(), true).unwrap(); - Module::::put_code( - origin.into(), - meta_info, - instantiation_fee.into(), - wasm_blob, - ) - .unwrap(); - Ok(code_hash) -} - -benchmarks! { - where_clause { where T: TestUtilsFn> } - - _{} - - put_code { - // Catalyst for the code size length - let l in 1 .. BaseContracts::::current_schedule().max_code_size; - // Catalyst for the MetaUrl length. - let u in 1 .. MAX_URL_LENGTH; - // Catalyst for the MetaDescription length. - let d in 1 .. MAX_DESCRIPTION_LENGTH; - - let url = Some(MetaUrl::from(vec![b'U'; u as usize].as_slice())); - let description = MetaDescription::from(vec![b'D'; d as usize].as_slice()); - let meta_info = TemplateMetadata { - url, - se_type: SmartExtensionType::TransferManager, - usage_fee: 100u32.into(), - description, - version: 5000 - }; - let (wasm_blob, code_hash) = expanded_contract::(l); - let user = UserBuilder::::default().generate_did().build("creator"); - Module::::set_put_code_flag(RawOrigin::Root.into(), true).unwrap(); - - }: _(user.origin, meta_info, 1000u32.into(), wasm_blob) - verify { - assert!(matches!(Module::::get_metadata_of(code_hash), meta_info), "Contracts_putCode: Meta info set incorrect"); - assert!(PristineCode::::get(code_hash).is_some(), "Contracts_putCode: Base contract doesn't get updated with given code hash"); - } - - // No catalyst. - instantiate { - let data = vec![0u8; 128]; - let max_fee = 100; - let creator = UserBuilder::::default().generate_did().build("creator"); - let code_hash = emulate_blueprint_in_storage::(max_fee, creator.origin, "dummy").unwrap(); - let deployer = UserBuilder::::default().generate_did().build("deployer"); - }: _(deployer.origin, 1_000_000u32.into(), Weight::max_value(), code_hash, data, max_fee.into()) - verify { - let (key, value) = ExtensionInfo::::iter().next().unwrap(); - let attributes = Module::::ext_details(&code_hash); - assert!(matches!(value, attributes), "Contracts_instantiate: Storage doesn't set correctly"); - } - - // No catalyst. - freeze_instantiation { - let creator = UserBuilder::::default().generate_did().build("creator"); - let code_hash = emulate_blueprint_in_storage::(100, creator.origin.clone(), "dummy").unwrap(); - }: _(creator.origin, code_hash) - verify { - assert!(Module::::get_template_details(code_hash).is_instantiation_frozen(), "Contracts_freeze_instantiation: Failed to freeze instantiation"); - } - - // No catalyst. - unfreeze_instantiation { - let creator = UserBuilder::::default().generate_did().build("creator"); - let code_hash = emulate_blueprint_in_storage::(100, creator.origin.clone(), "dummy").unwrap(); - Module::::freeze_instantiation(creator.origin.clone().into(), code_hash).unwrap(); - }: _(creator.origin, code_hash) - verify { - assert!(!Module::::get_template_details(code_hash).is_instantiation_frozen(), "Contracts_unfreeze_instantiation: Failed to unfreeze instantiation"); - } - - // No catalyst. - transfer_template_ownership { - let creator = UserBuilder::::default().generate_did().build("creator"); - let code_hash = emulate_blueprint_in_storage::(100, creator.origin.clone(), "dummy").unwrap(); - let new_owner = UserBuilder::::default().generate_did().build("newOwner"); - }: _(creator.origin, code_hash, new_owner.did()) - verify { - assert_eq!(Module::::get_template_details(code_hash).owner, new_owner.did(), "Contracts_transfer_template_ownership: Failed to transfer ownership"); - } - - // No catalyst. - change_template_fees { - let creator = UserBuilder::::default().generate_did().build("creator"); - let code_hash = emulate_blueprint_in_storage::(100, creator.origin.clone(), "").unwrap(); - }: _(creator.origin, code_hash, Some(500u32.into()), Some(650u32.into())) - verify { - assert_eq!(Module::::get_template_details(code_hash).get_instantiation_fee(), 500u32.into(), "Contracts_change_template_fees: Failed to change the instantiation fees"); - assert_eq!(Module::::get_metadata_of(code_hash).usage_fee, 650u32.into(), "Contracts_change_template_fees: Failed to change the usage fees"); - } - - change_template_meta_url { - // Catalyst for the MetaUrl length. - let u in 1 .. MAX_URL_LENGTH; - let url = Some(MetaUrl::from(vec![b'U'; u as usize].as_slice())); - let creator = UserBuilder::::default().generate_did().build("creator"); - let code_hash = emulate_blueprint_in_storage::(100, creator.origin.clone(), "").unwrap(); - }: _(creator.origin, code_hash, url.clone()) - verify { - assert_eq!(Module::::get_metadata_of(code_hash).url, url, "Contracts_change_template_meta_url: Failed to change the url of template"); - } - - // No catalyst. - update_schedule { - let schedule = Schedule { - version: 1, - .. Default::default() - }; - }: _(RawOrigin::Root, schedule) - - set_put_code_flag { - assert!(!Module::::is_put_code_enabled(), "Contracts_set_put_code_flag: Unexpected initial state"); - }: _(RawOrigin::Root, true) - verify { - assert!(Module::::is_put_code_enabled(), "Contracts_set_put_code_flag: Failed to change the flag"); - } -} diff --git a/pallets/contracts-old/src/lib.rs b/pallets/contracts-old/src/lib.rs deleted file mode 100644 index 2269b0ba56..0000000000 --- a/pallets/contracts-old/src/lib.rs +++ /dev/null @@ -1,453 +0,0 @@ -// This file is part of the Polymesh distribution (https://github.com/PolymathNetwork/Polymesh). -// Copyright (c) 2020 Polymath - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, version 3. - -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -// Ensure we're `no_std` when compiling for Wasm. -#![cfg_attr(not(feature = "std"), no_std)] - -#[cfg(feature = "runtime-benchmarks")] -pub mod benchmarking; - -use core::mem; -use frame_support::{ - decl_error, decl_module, decl_storage, - dispatch::{DispatchError, DispatchResult, DispatchResultWithPostInfo}, - ensure, - traits::Get, - weights::DispatchClass::Operational, -}; -use frame_system::ensure_root; -use pallet_base::{ensure_opt_string_limited, ensure_string_limited}; -use pallet_contracts::{weights::WeightInfo as _, BalanceOf, CodeHash, Schedule}; -use pallet_identity as identity; -pub use polymesh_common_utilities::traits::contracts::{Event, Trait, WeightInfo}; -use polymesh_common_utilities::{ - protocol_fee::{ChargeProtocolFee, ProtocolOp}, - traits::contracts::ContractsFn, - with_transaction, -}; -use polymesh_primitives::{ - ExtensionAttributes, Gas, IdentityId, MetaUrl, SmartExtensionType, TemplateDetails, - TemplateMetadata, -}; -use sp_core::crypto::UncheckedFrom; -use sp_runtime::{ - traits::{Hash, StaticLookup}, - Perbill, SaturatedConversion, -}; -use sp_std::prelude::*; - -type Identity = identity::Module; -type Contracts = pallet_contracts::Module; - -pub const INSTANTIATE_WITH_CODE_EXTRA: u64 = 50_000_000; -const INSTANTIATE_EXTRA: u64 = 500_000_000; - -decl_storage! { - trait Store for Module as ContractsWrapper - where - T::AccountId: UncheckedFrom + AsRef<[u8]> - { - /// Store the meta details of the smart extension template. - pub MetadataOfTemplate get(fn get_metadata_of): map hasher(identity) CodeHash => TemplateMetadata>; - /// Store the details of the template (Ex- owner, frozen etc). - pub TemplateInfo get(fn get_template_details): map hasher(identity) CodeHash => TemplateDetails>; - /// Details of extension get updated. - pub ExtensionInfo get(fn extension_info): map hasher(identity) T::AccountId => ExtensionAttributes>; - /// Nonce for the smart extension account id generation. - /// Using explicit nonce as in batch transaction accounts nonce doesn't get incremented. - pub ExtensionNonce get(fn extension_nonce): u64; - /// Store if `put_code` extrinsic is enabled or disabled. - pub EnablePutCode get(fn is_put_code_enabled) config(enable_put_code): bool; - } -} - -decl_error! { - pub enum Error for Module - where - T::AccountId: UncheckedFrom, - T::AccountId: AsRef<[u8]>, - { - /// Instantiation is not allowed. - InstantiationIsNotAllowed, - /// Smart extension template not exist in the storage. - TemplateNotExists, - /// When instantiation of the template is already frozen. - InstantiationAlreadyFrozen, - /// When instantiation of the template is already un-frozen. - InstantiationAlreadyUnFrozen, - /// When un-authorized personnel try to access the un-authorized extrinsic. - UnAuthorizedOrigin, - /// Given identityId is not CDD. - NewOwnerIsNotCDD, - /// Insufficient max_fee provided by the user to instantiate the SE. - InsufficientMaxFee, - /// `put_code` extrinsic is disabled. See `set_put_code_flag` extrinsic. - PutCodeIsNotAllowed, - } -} - -decl_module! { - // Wrap dispatchable functions for contracts so that we can add additional gating logic. - pub struct Module for enum Call - where - origin: T::Origin, - T::AccountId: UncheckedFrom, - T::AccountId: AsRef<[u8]>, - { - - /// Initialize the default event for this module. - fn deposit_event() = default; - - /// Error type. - type Error = Error; - - /// The minimum amount required to generate a tombstone. - const NetworkShareInInstantiationFee: Perbill = T::NetworkShareInFee::get(); - - // Simply forwards to the `update_schedule` function in the Contract module. - #[weight = ::WeightInfo::update_schedule()] - pub fn update_schedule(origin, schedule: Schedule) -> DispatchResultWithPostInfo { - Contracts::::update_schedule(origin, schedule) - } - - /// Enable or disable the extrinsic `put_code` in this module. - /// - /// ## Arguments - /// - `origin` which must be root. - /// - `is_enabled` is the new value for this flag. - /// - /// ## Errors - /// - `BadOrigin` if caller is not root. - /// - /// ## Permissions - /// None - #[weight = (::WeightInfo::set_put_code_flag(), Operational)] - pub fn set_put_code_flag(origin, is_enabled: bool) -> DispatchResult { - Self::base_set_put_code_flag(origin, is_enabled) - } - - /// Simply forwards to the `put_code` function in the Contract module. - /// - /// # Additional functionality - /// 1. Allow origin to pass some meta-details related to template code. - /// 2. Charge protocol fee for deploying the template. - /// - /// # Errors - /// - `PutCodeIsNotAllowed` if the `put_code` flag is false. See `set_put_code_flag()`. - /// - `frame_system::BadOrigin` if `origin` is not signed. - /// - `pallet_permission::Error::::UnAutorizedCaller` if `origin` does not have a valid - /// IdentityId. - /// - `TooLong` if the strings embedded in `meta_info` are too long. - /// - `pallet_contrats::Error::::CodeTooLarge` if `code` length is grater than the chain - /// setting for `pallet_contrats::max_code_size`. - /// - Before `code` is inserted, some checks are performed on it, and them could raise up - /// some errors. Please see `pallet_contracts::wasm::prepare_contract` for details. - #[weight = - ::WeightInfo::instantiate_with_code( - code.len() as u32 / 1024, - salt.len() as u32 / 1024, - ) - .saturating_add(*gas_limit) - .saturating_add(INSTANTIATE_WITH_CODE_EXTRA) - ] - pub fn instantiate_with_code( - origin, - #[compact] endowment: BalanceOf, - #[compact] gas_limit: Gas, - code: Vec, - data: Vec, - salt: Vec, - meta_info: TemplateMetadata>, - instantiation_fee: BalanceOf, - ) -> DispatchResultWithPostInfo { - ensure!(Self::is_put_code_enabled(), Error::::PutCodeIsNotAllowed); - let p_origin = Identity::::ensure_origin_call_permissions(origin.clone())?; - - // Ensure strings are limited in length. - ensure_string_limited::(&meta_info.description)?; - ensure_opt_string_limited::(meta_info.url.as_deref())?; - if let SmartExtensionType::Custom(ty) = &meta_info.se_type { - ensure_string_limited::(ty)?; - } - - // Save metadata related to the SE template - // Generate the code_hash here as well because there is no way - // to read it directly from the upstream `pallet-contracts` module. - let code_hash = T::Hashing::hash(&code); - let contract_address = Contracts::::contract_address(&p_origin.sender, &code_hash, &salt); - - // Rollback the `put_code()` if user is not able to pay the protocol-fee. - let post_info = with_transaction(|| -> DispatchResultWithPostInfo { - // Charge the protocol fee, update nonce, and instantiate the code. - - T::ProtocolFee::charge_fee(ProtocolOp::ContractsPutCode)?; - ExtensionNonce::mutate(|n| *n = *n + 1u64); - Contracts::::instantiate_with_code(origin, endowment, gas_limit, code, data, salt) - })?; - - // Update the storage. - >::insert(&code_hash, TemplateDetails { - instantiation_fee, - owner: p_origin.primary_did.clone(), - frozen: false - }); - >::insert(&code_hash, meta_info); - - // Update the usage fee for the extension instance. - >::insert(contract_address, Self::ext_details(&code_hash)); - - Ok(post_info) - } - - // Simply forwards to the `call` function in the Contract module. - #[weight = ::WeightInfo::call( - ::MaxCodeSize::get() / 1024 - ).saturating_add(*gas_limit)] - pub fn call( - origin, - dest: ::Source, - #[compact] value: BalanceOf, - #[compact] gas_limit: Gas, - data: Vec - ) -> DispatchResultWithPostInfo { - Contracts::::call(origin, dest, value, gas_limit, data) - } - - /// Simply forwards to the `instantiate` function in the Contract module. - /// - /// # Additional functionality - /// 1. Check whether instantiation of given code_hash is allowed or not. - /// 2. Charge instantiation fee. - /// - /// # Errors - /// InstantiationIsNotAllowed - It occurred when instantiation of the template is frozen. - /// InsufficientMaxFee - Provided max_fee is less than required. - #[weight = ::WeightInfo::instantiate().saturating_add(*gas_limit)] - pub fn instantiate( - origin, - #[compact] endowment: BalanceOf, - #[compact] gas_limit: Gas, - code_hash: CodeHash, - data: Vec, - salt: Vec, - max_fee: BalanceOf - ) -> DispatchResultWithPostInfo { - let sender = Identity::::ensure_origin_call_permissions(origin.clone())?.sender; - // Access the meta details of SE template - let template_details = Self::get_template_details(code_hash); - - // Check whether instantiation is allowed or not. - ensure!(!template_details.is_instantiation_frozen(), Error::::InstantiationIsNotAllowed); - - // Check instantiation fee should be <= max_fee. - let instantiation_fee = template_details.get_instantiation_fee(); - ensure!(instantiation_fee <= max_fee, Error::::InsufficientMaxFee); - - let contract_address = Contracts::::contract_address(&sender, &code_hash, &salt); - let mut post_info = with_transaction(|| { - // Update the extension nonce. - ExtensionNonce::mutate(|n| *n = *n + 1u64); - // Charge instantiation fee - let fee = (instantiation_fee.saturated_into::()).into(); - let owner_pk = Self::get_primary_key(&template_details.owner); - T::ProtocolFee::charge_extension_instantiation_fee(fee, owner_pk, T::NetworkShareInFee::get())?; - T::ProtocolFee::charge_fee(ProtocolOp::ContractsPutCode)?; - - // Generate the contract address. Generating here to avoid cloning of the vec. - // transmit the call to the base `pallet-contracts` module. - Contracts::::instantiate(origin, endowment, gas_limit, code_hash, data, salt) - })?; - if let Some(ref mut actual_weight) = post_info.actual_weight { - *actual_weight = actual_weight.saturating_add(INSTANTIATE_EXTRA); - } - - // Update the usage fee for the extension instance. - >::insert(contract_address, Self::ext_details(&code_hash)); - - // Update the actual weight of the extrinsic. - Ok(post_info) - } - - /// Allows a smart extension template owner to freeze the instantiation. - /// - /// # Arguments - /// * origin - Only owner of the template is allowed to execute the dispatchable. - /// * code_hash - Unique hash of the smart extension template. - #[weight = ::WeightInfo::freeze_instantiation()] - pub fn freeze_instantiation(origin, code_hash: CodeHash) -> DispatchResult { - // Ensure whether the extrinsic is signed & validate the `code_hash`. - let (did, template_details) = Self::ensure_signed_and_template_exists(origin, code_hash)?; - - // If instantiation is already frozen then there is no point of changing the storage value. - ensure!(!template_details.is_instantiation_frozen(), Error::::InstantiationAlreadyFrozen); - // Change the `frozen` variable to `true`. - >::mutate(&code_hash, |template_details| template_details.frozen = true); - - // Emit event. - Self::deposit_event(Event::::InstantiationFreezed(did, code_hash)); - Ok(()) - } - - /// Allows a smart extension template owner to un freeze the instantiation. - /// - /// # Arguments - /// * origin - Only owner of the template is allowed to execute the dispatchable. - /// * code_hash - Unique hash of the smart extension template. - #[weight = ::WeightInfo::unfreeze_instantiation()] - pub fn unfreeze_instantiation(origin, code_hash: CodeHash) -> DispatchResult { - // Ensure whether the extrinsic is signed & validate the `code_hash`. - let (did, template_details) = Self::ensure_signed_and_template_exists(origin, code_hash)?; - - // If instantiation is already un-frozen then there is no point of changing the storage value. - ensure!(template_details.is_instantiation_frozen(), Error::::InstantiationAlreadyUnFrozen); - // Change the `frozen` variable to `false`. - >::mutate(&code_hash, |template_details| template_details.frozen = false); - - // Emit event. - Self::deposit_event(Event::::InstantiationUnFreezed(did, code_hash)); - Ok(()) - } - - /// Transfer ownership of the template, Can only be called by the owner of template. - /// `new_owner` should posses the valid CDD claim. - /// - /// # Arguments - /// * origin Owner of the provided code_hash. - /// * code_hash Unique identifer of the template. - /// * new_owner Identity that will be the new owner of the provided code_hash. - #[weight = ::WeightInfo::transfer_template_ownership()] - pub fn transfer_template_ownership(origin, code_hash: CodeHash, new_owner: IdentityId) -> DispatchResult { - // Ensure whether the extrinsic is signed & validate the `code_hash`. - let (did, _) = Self::ensure_signed_and_template_exists(origin, code_hash)?; - - // Ensuring the `new_owner` is CDD or not. - ensure!(Identity::::has_valid_cdd(new_owner), Error::::NewOwnerIsNotCDD); - - // Change the `owner` variable value to the given did. - >::mutate(&code_hash, |template_details| template_details.owner = new_owner); - - // Emit event. - Self::deposit_event(Event::::TemplateOwnershipTransferred(did, code_hash, new_owner)); - Ok(()) - } - - /// Change the usage fee & the instantiation fee of the smart extension template - /// - /// # Arguments - /// * origin - Only owner of template is allowed to execute the dispatchable. - /// * code_hash - Unique hash of the smart extension template. - /// * new_instantiation_fee - New value of instantiation fee for the smart extension template. - /// * new_usage_fee - New value of usage fee for the smart extension template. - #[weight = ::WeightInfo::change_template_fees()] - pub fn change_template_fees(origin, code_hash: CodeHash, new_instantiation_fee: Option>, new_usage_fee: Option>) -> DispatchResult { - // Ensure whether the extrinsic is signed & validate the `code_hash`. - let (did, _) = Self::ensure_signed_and_template_exists(origin, code_hash)?; - - // Update the fees - if let Some(usage_fee) = new_usage_fee { - // Update the usage fee for a given code hash. - let old_usage_fee = >::mutate(&code_hash, |metadata| mem::replace(&mut metadata.usage_fee, usage_fee)); - // Emit event with the old & new usage fee. - Self::deposit_event(Event::::TemplateUsageFeeChanged(did, code_hash, old_usage_fee, usage_fee)); - } - if let Some(instantiation_fee) = new_instantiation_fee { - // Update the instantiation fee for a given code_hash. - let old_instantiation_fee = >::mutate(&code_hash, |template_details| mem::replace(&mut template_details.instantiation_fee, instantiation_fee)); - // Emit event with the old & new instantiation fee. - Self::deposit_event(Event::::TemplateInstantiationFeeChanged(did, code_hash, old_instantiation_fee, instantiation_fee)); - } - Ok(()) - } - - /// Change the template meta url. - /// - /// # Arguments - /// * origin - Only owner of template is allowed to execute the dispatchable. - /// * code_hash - Unique hash of the smart extension template. - /// * new_url - New meta url that need to replace with old url. - #[weight = ::WeightInfo::change_template_meta_url(new_url.as_ref().map_or(0, |u| u.0.len()) as u32 )] - pub fn change_template_meta_url(origin, code_hash: CodeHash, new_url: Option) -> DispatchResult { - // Ensure whether the extrinsic is signed & validate the `code_hash`. - let (did, _) = Self::ensure_signed_and_template_exists(origin, code_hash)?; - // Ensure URL is limited in length. - ensure_opt_string_limited::(new_url.as_deref())?; - // Update the usage fee for a given code hash. - let old_url = >::mutate(&code_hash, |metadata| mem::replace(&mut metadata.url, new_url.clone())); - // Emit event with old and new url. - Self::deposit_event(Event::::TemplateMetaUrlChanged(did, code_hash, old_url, new_url)); - Ok(()) - } - } -} - -impl Module -where - T::AccountId: UncheckedFrom, - T::AccountId: AsRef<[u8]>, -{ - // Internal function - // Perform some basic sanity checks - fn ensure_signed_and_template_exists( - origin: T::Origin, - code_hash: CodeHash, - ) -> Result<(IdentityId, TemplateDetails>), DispatchError> { - // Ensure the transaction is signed and ensure `origin` has the required permission to - // execute the dispatchable. - let did = Identity::::ensure_perms(origin)?; - // Validate whether the template exists or not for a given code_hash. - ensure!( - >::contains_key(code_hash), - Error::::TemplateNotExists - ); - - // Access the meta details of SE template - let template_details = Self::get_template_details(code_hash); - // Ensure sender's DID is the owner of the template. - ensure!( - did == template_details.owner, - Error::::UnAuthorizedOrigin - ); - // Return the DID and the template details. - Ok((did, template_details)) - } - - fn get_primary_key(id: &IdentityId) -> T::AccountId { - Identity::::get_primary_key(*id) - } - - fn ext_details(code_hash: &CodeHash) -> ExtensionAttributes> { - let meta_info = Self::get_metadata_of(code_hash); - ExtensionAttributes { - usage_fee: meta_info.usage_fee, - version: meta_info.version, - } - } - - fn base_set_put_code_flag(origin: T::Origin, is_enabled: bool) -> DispatchResult { - ensure_root(origin)?; - EnablePutCode::put(is_enabled); - Self::deposit_event(Event::::PutCodeFlagChanged(is_enabled)); - Ok(()) - } -} - -impl ContractsFn> for Module -where - T::AccountId: UncheckedFrom + AsRef<[u8]>, -{ - fn extension_info(acc: T::AccountId) -> ExtensionAttributes> { - Self::extension_info(acc) - } -} diff --git a/pallets/runtime/ci/src/runtime.rs b/pallets/runtime/ci/src/runtime.rs index fc3a72e60f..7a19a117df 100644 --- a/pallets/runtime/ci/src/runtime.rs +++ b/pallets/runtime/ci/src/runtime.rs @@ -12,7 +12,6 @@ use frame_support::{ traits::{tokens::imbalance::SplitTwoWays, KeyOwnerProofSystem}, weights::Weight, }; -//use pallet_contracts::weights::WeightInfo; use pallet_asset::checkpoint as pallet_checkpoint; use pallet_corporate_actions::ballot as pallet_corporate_ballot; use pallet_corporate_actions::distribution as pallet_capital_distribution; diff --git a/pallets/runtime/common/src/runtime.rs b/pallets/runtime/common/src/runtime.rs index 344298f5ac..310720540c 100644 --- a/pallets/runtime/common/src/runtime.rs +++ b/pallets/runtime/common/src/runtime.rs @@ -316,7 +316,6 @@ macro_rules! misc_pallet_impls { type AssetFn = Asset; type WeightInfo = polymesh_weights::pallet_asset::WeightInfo; type CPWeightInfo = polymesh_weights::pallet_checkpoint::WeightInfo; - //type ContractsFn = polymesh_contracts::Module; } impl polymesh_contracts::Config for Runtime { diff --git a/pallets/runtime/develop/src/runtime.rs b/pallets/runtime/develop/src/runtime.rs index 3e9ae2d079..f25308e868 100644 --- a/pallets/runtime/develop/src/runtime.rs +++ b/pallets/runtime/develop/src/runtime.rs @@ -2,6 +2,7 @@ use crate::constants::time::*; use codec::Encode; +use core::convert::TryFrom; use frame_support::{ construct_runtime, dispatch::DispatchResult, @@ -10,8 +11,6 @@ use frame_support::{ weights::Weight, }; use pallet_asset::checkpoint as pallet_checkpoint; -//use pallet_contracts::weights::WeightInfo; -use core::convert::TryFrom; use pallet_corporate_actions::ballot as pallet_corporate_ballot; use pallet_corporate_actions::distribution as pallet_capital_distribution; use pallet_session::historical as pallet_session_historical; diff --git a/pallets/runtime/mainnet/src/runtime.rs b/pallets/runtime/mainnet/src/runtime.rs index 5a847e1a4f..b9f2ec661a 100644 --- a/pallets/runtime/mainnet/src/runtime.rs +++ b/pallets/runtime/mainnet/src/runtime.rs @@ -7,7 +7,6 @@ use frame_support::{ traits::{tokens::imbalance::SplitTwoWays, KeyOwnerProofSystem}, weights::Weight, }; -//use pallet_contracts::weights::WeightInfo; use pallet_asset::checkpoint as pallet_checkpoint; use pallet_corporate_actions::ballot as pallet_corporate_ballot; use pallet_corporate_actions::distribution as pallet_capital_distribution; diff --git a/pallets/runtime/testnet/src/runtime.rs b/pallets/runtime/testnet/src/runtime.rs index 2e33ef3273..32f03ea20d 100644 --- a/pallets/runtime/testnet/src/runtime.rs +++ b/pallets/runtime/testnet/src/runtime.rs @@ -13,7 +13,6 @@ use frame_support::{ weights::Weight, }; use pallet_asset::checkpoint as pallet_checkpoint; -//use pallet_contracts::weights::WeightInfo; use pallet_corporate_actions::ballot as pallet_corporate_ballot; use pallet_corporate_actions::distribution as pallet_capital_distribution; use pallet_session::historical as pallet_session_historical; diff --git a/pallets/runtime/tests/src/asset_test.rs b/pallets/runtime/tests/src/asset_test.rs index f17c976c36..1da9de43fe 100644 --- a/pallets/runtime/tests/src/asset_test.rs +++ b/pallets/runtime/tests/src/asset_test.rs @@ -1,5 +1,4 @@ use crate::{ - //contract_test::{create_se_template, flipper}, ext_builder::{ExtBuilder, IdentityRecord, MockProtocolBaseFees}, pips_test::assert_balance, storage::{ @@ -58,7 +57,6 @@ use test_client::AccountKeyring; type BaseError = pallet_base::Error; type Identity = identity::Module; type Balances = balances::Module; -//type Contracts = pallet_contracts::Module; type Asset = asset::Module; type Timestamp = pallet_timestamp::Pallet; type ComplianceManager = compliance_manager::Module; @@ -175,19 +173,6 @@ fn enable_investor_count(ticker: Ticker, owner: User) { )); } -/* -fn setup_se_template(creator: User, create_instance: bool) -> AccountId { - let (code_hash, wasm) = flipper(); - - // Create SE template and instantiate with empty salt. - if create_instance { - create_se_template(creator.acc(), creator.did, 0, code_hash, wasm); - } - - Contracts::contract_address(&creator.acc(), &code_hash, &[]) -} -*/ - crate fn transfer(ticker: Ticker, from: User, to: User, amount: u128) -> DispatchResult { Asset::base_transfer( PortfolioId::default_portfolio(from.did), @@ -849,182 +834,6 @@ fn adding_removing_documents() { }); } -/* -fn add_smart_ext( - owner: User, - ticker: Ticker, - ty: SmartExtensionType, -) -> (AccountId, SmartExtension) { - let id = setup_se_template(owner, true); - let details = SmartExtension { - extension_type: ty.clone(), - extension_name: b"EXT".into(), - extension_id: id.clone(), - is_archive: false, - }; - assert_ok!(Asset::add_extension( - owner.origin(), - ticker, - details.clone(), - )); - assert_eq!(Asset::extension_details((ticker, id.clone())), details); - assert_eq!(Asset::extensions((ticker, ty)), [id.clone()]); - (id, details) -} - -#[track_caller] -fn smart_ext_test(logic: impl FnOnce(User, Ticker)) { - ExtBuilder::default() - .set_max_tms_allowed(10) - .set_contracts_put_code(true) - .build() - .execute_with(|| { - let owner = User::new(AccountKeyring::Dave); - let (ticker, token) = a_token(owner.did); - assert!(!has_ticker_record(ticker)); - assert_ok!(asset_with_ids(owner, ticker, &token, vec![cusip()])); - logic(owner, ticker) - }); -} - -#[test] -fn add_extension_limited() { - smart_ext_test(|owner, ticker| { - let id = setup_se_template(owner, true); - let add_ext = |ty: &Vec, name: &Vec| { - let details = SmartExtension { - extension_type: SmartExtensionType::Custom(ty.clone().into()), - extension_name: name.clone().into(), - extension_id: id.clone().into(), - is_archive: false, - }; - Asset::add_extension(owner.origin(), ticker.clone(), details) - }; - let id: Vec = max_len_bytes(0); - let invalid_id: Vec = max_len_bytes(1); - - assert_too_long!(add_ext(&invalid_id, &id)); - assert_too_long!(add_ext(&id, &invalid_id)); - pallet_asset::CompatibleSmartExtVersion::insert( - SmartExtensionType::Custom(id.clone().into()), - 5000, - ); - assert_ok!(add_ext(&id, &id)); - }); -} - -#[test] -fn add_extension_successfully() { - smart_ext_test(|owner, ticker| { - add_smart_ext(owner, ticker, SmartExtensionType::TransferManager); - }); -} - -#[test] -fn add_same_extension_should_fail() { - smart_ext_test(|owner, ticker| { - // Add it. - let (_, details) = add_smart_ext(owner, ticker, SmartExtensionType::TransferManager); - - // And again, unsuccessfully. - assert_noop!( - Asset::add_extension(owner.origin(), ticker, details), - AssetError::ExtensionAlreadyPresent - ); - }); -} - -#[test] -fn should_successfully_archive_extension() { - smart_ext_test(|owner, ticker| { - // Add it. - let (id, _) = add_smart_ext(owner, ticker, SmartExtensionType::Offerings); - - // Archive it. - assert_ok!(Asset::archive_extension(owner.origin(), ticker, id.clone())); - assert_eq!(Asset::extension_details((ticker, id)).is_archive, true); - }); -} - -#[test] -fn should_fail_to_archive_an_already_archived_extension() { - smart_ext_test(|owner, ticker| { - // Add it. - let (id, _) = add_smart_ext(owner, ticker, SmartExtensionType::Offerings); - - // Archive it. - let archive = || Asset::archive_extension(owner.origin(), ticker, id.clone()); - assert_ok!(archive()); - assert_eq!( - Asset::extension_details((ticker, id.clone())).is_archive, - true - ); - - // And again, unsuccessfully. - assert_noop!(archive(), AssetError::AlreadyArchived); - }); -} - -#[test] -fn should_fail_to_archive_a_non_existent_extension() { - smart_ext_test(|owner, ticker| { - // Archive that which doesn't exist. - assert_noop!( - Asset::archive_extension(owner.origin(), ticker, AccountKeyring::Bob.to_account_id()), - AssetError::NoSuchSmartExtension - ); - }); -} - -#[test] -fn should_successfully_unarchive_an_extension() { - smart_ext_test(|owner, ticker| { - // Add it. - let (id, _) = add_smart_ext(owner, ticker, SmartExtensionType::Offerings); - - // Archive it. - let is_archive = || Asset::extension_details((ticker, id.clone())).is_archive; - let archive = || { - assert_ok!(Asset::archive_extension(owner.origin(), ticker, id.clone())); - assert_eq!(is_archive(), true); - }; - archive(); - - // Unarchive it. - assert_ok!(Asset::unarchive_extension( - owner.origin(), - ticker, - id.clone() - )); - assert_eq!(is_archive(), false); - - // Roundtrip. - archive(); - }); -} - -#[test] -fn should_fail_to_unarchive_an_already_unarchived_extension() { - smart_ext_test(|owner, ticker| { - // Add it. - let (id, _) = add_smart_ext(owner, ticker, SmartExtensionType::Offerings); - - // Archive it. - assert_ok!(Asset::archive_extension(owner.origin(), ticker, id.clone())); - let is_archive = || Asset::extension_details((ticker, id.clone())).is_archive; - assert_eq!(is_archive(), true); - - // Unarchive it. - let unarchive = || Asset::unarchive_extension(owner.origin(), ticker, id.clone()); - assert_ok!(unarchive()); - assert_eq!(is_archive(), false); - - // And again, unsuccessfully. - assert_noop!(unarchive(), AssetError::AlreadyUnArchived); - }); -} -*/ - #[test] fn freeze_unfreeze_asset() { ExtBuilder::default().build().execute_with(|| { diff --git a/pallets/settlement/src/benchmarking.rs b/pallets/settlement/src/benchmarking.rs index 505cd740b7..fb113b70df 100644 --- a/pallets/settlement/src/benchmarking.rs +++ b/pallets/settlement/src/benchmarking.rs @@ -18,7 +18,6 @@ use crate::*; pub use frame_benchmarking::{account, benchmarks}; use frame_support::traits::Get; use frame_system::RawOrigin; -//use pallet_contracts::ContractAddressFor; use pallet_identity as identity; use pallet_portfolio::PortfolioAssetBalances; use polymesh_common_utilities::{ @@ -418,39 +417,6 @@ fn setup_affirm_instruction>>( (portfolios_to, from_data, to_data, tickers, legs) } -/* -#[allow(dead_code)] -fn add_smart_extension_to_ticker( - code_hash: ::Output, - origin: RawOrigin, - account: T::AccountId, - ticker: Ticker, -) { - let data = vec![ - 209, 131, 81, 43, 160, 134, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - ]; // Allow 100% as percentage ownership and allow primary issuance. - >::instantiate( - origin.clone().into(), - 0u32.into(), - Weight::max_value(), - code_hash, - data.clone(), - 0u32.into(), - ) - .expect("Settlement: Failed to instantiate the contract"); - let extension_id = - T::DetermineContractAddress::contract_address_for(&code_hash, &data, &account); - let extension_details = SmartExtension { - extension_type: SmartExtensionType::TransferManager, - extension_name: b"PTM".into(), - extension_id: extension_id.clone(), - is_archive: false, - }; - >::add_extension(origin.into(), ticker, extension_details) - .expect("Settlement: Fail to add the smart extension to a given asset"); -} -*/ - fn create_receipt_details>>( index: u32, leg: Leg, diff --git a/src/service.rs b/src/service.rs index e1ee5a929e..2de8cc0826 100644 --- a/src/service.rs +++ b/src/service.rs @@ -111,13 +111,8 @@ pub trait RuntimeApiCollection: //+ pallet_contracts_rpc_runtime_api::ContractsApi + pallet_staking_rpc_runtime_api::StakingApi + node_rpc_runtime_api::pips::PipsApi - + node_rpc_runtime_api::identity::IdentityApi< - Block, - IdentityId, - Ticker, - AccountId, - Moment, - > + pallet_protocol_fee_rpc_runtime_api::ProtocolFeeApi + + node_rpc_runtime_api::identity::IdentityApi + + pallet_protocol_fee_rpc_runtime_api::ProtocolFeeApi + node_rpc_runtime_api::asset::AssetApi + pallet_group_rpc_runtime_api::GroupApi + node_rpc_runtime_api::compliance_manager::ComplianceManagerApi From f8be7f4ff3ad74e5123138cadadb99c634c244b4 Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Fri, 13 May 2022 21:03:35 +0800 Subject: [PATCH 50/53] MESH-1758 backwards compatible calls (#1237) * Add backwards compatible extrinsics. * Add backwards compatible `add_secondary_keys_with_authorization`. * Regen TS types and call ./util/updateTypes.js. * Fix issue with polkadot's generate types. * FIXUP: Include missing change. * Fix TS bug. * Apply suggestions from code review Co-authored-by: Mazdak Farrokhzad * cargo fmt * Use ExactSizeIterator Co-authored-by: Adam Dossa Co-authored-by: Mazdak Farrokhzad --- pallets/common/src/traits/identity.rs | 63 ++- pallets/identity/src/lib.rs | 96 +++-- polymesh_schema.json | 6 +- primitives/src/secondary_key.rs | 4 +- scripts/cli/package.json | 3 +- scripts/cli/polymesh-meta.json | 2 +- .../cli/src/interfaces/augment-api-errors.ts | 12 +- .../cli/src/interfaces/augment-api-events.ts | 13 +- scripts/cli/src/interfaces/augment-api-tx.ts | 28 +- scripts/cli/src/interfaces/augment-types.ts | 33 +- scripts/cli/src/interfaces/default/types.ts | 213 ++++++--- scripts/cli/src/interfaces/definitions.ts | 4 +- scripts/cli/src/interfaces/lookup.ts | 398 +++++++++-------- scripts/cli/src/interfaces/types-lookup.ts | 408 ++++++++++-------- 14 files changed, 794 insertions(+), 489 deletions(-) diff --git a/pallets/common/src/traits/identity.rs b/pallets/common/src/traits/identity.rs index 4de919f50b..965e4fca87 100644 --- a/pallets/common/src/traits/identity.rs +++ b/pallets/common/src/traits/identity.rs @@ -33,12 +33,13 @@ use frame_support::{ Parameter, }; use polymesh_primitives::{ - secondary_key::SecondaryKey, AuthorizationData, Balance, IdentityClaim, IdentityId, - Permissions, Ticker, + secondary_key::{v1, SecondaryKey}, + AuthorizationData, Balance, IdentityClaim, IdentityId, Permissions, Signatory, Ticker, }; use scale_info::TypeInfo; use sp_core::H512; use sp_runtime::traits::{Dispatchable, IdentifyAccount, Member, Verify}; +use sp_std::convert::TryFrom; use sp_std::vec::Vec; pub type AuthorizationNonce = u64; @@ -76,6 +77,32 @@ pub struct SecondaryKeyWithAuth { pub auth_signature: H512, } +#[derive(Encode, Decode, TypeInfo)] +#[derive(Clone, Debug, Default, PartialEq, Eq)] +pub struct SecondaryKeyWithAuthV1 { + secondary_key: v1::SecondaryKey, + auth_signature: H512, +} + +impl TryFrom> for SecondaryKeyWithAuth { + type Error = (); + fn try_from(auth: SecondaryKeyWithAuthV1) -> Result { + match auth.secondary_key.signer { + Signatory::Account(key) => Ok(Self { + secondary_key: SecondaryKey { + key, + permissions: auth.secondary_key.permissions, + }, + auth_signature: auth.auth_signature, + }), + _ => { + // Unsupported `Signatory::Identity`. + Err(()) + } + } + } +} + pub trait WeightInfo { fn cdd_register_did(i: u32) -> Weight; fn invalidate_cdd_claims() -> Weight; @@ -109,16 +136,36 @@ pub trait WeightInfo { fn add_investor_uniqueness_claim_v2() -> Weight; fn revoke_claim_by_index() -> Weight; + /// Add complexity cost of Permissions to `add_secondary_keys_with_authorization` extrinsic. + fn add_secondary_keys_full_v1( + additional_keys: &[SecondaryKeyWithAuthV1], + ) -> Weight { + Self::add_secondary_keys_perms_cost( + additional_keys + .iter() + .map(|auth| &auth.secondary_key.permissions), + ) + } + /// Add complexity cost of Permissions to `add_secondary_keys_with_authorization` extrinsic. fn add_secondary_keys_full( additional_keys: &[SecondaryKeyWithAuth], ) -> Weight { - let perm_cost = additional_keys.iter().fold(0u64, |cost, key| { - cost.saturating_add(Self::permissions_cost_perms(&key.secondary_key.permissions)) - }); - perm_cost.saturating_add(Self::add_secondary_keys_with_authorization( - additional_keys.len() as u32, - )) + Self::add_secondary_keys_perms_cost( + additional_keys + .iter() + .map(|auth| &auth.secondary_key.permissions), + ) + } + + /// Add complexity cost of Permissions to `add_secondary_keys_with_authorization` extrinsic. + fn add_secondary_keys_perms_cost<'a>( + perms: impl ExactSizeIterator, + ) -> Weight { + let len_cost = Self::add_secondary_keys_with_authorization(perms.len() as u32); + perms.fold(len_cost, |cost, key| { + cost.saturating_add(Self::permissions_cost_perms(key)) + }) } /// Add complexity cost of Permissions to `add_authorization` extrinsic. diff --git a/pallets/identity/src/lib.rs b/pallets/identity/src/lib.rs index f87ce6c7f6..0092ae5454 100644 --- a/pallets/identity/src/lib.rs +++ b/pallets/identity/src/lib.rs @@ -115,6 +115,7 @@ use polymesh_common_utilities::{ protocol_fee::{ChargeProtocolFee, ProtocolOp}, traits::identity::{ AuthorizationNonce, Config, IdentityFnTrait, RawEvent, SecondaryKeyWithAuth, + SecondaryKeyWithAuthV1, }, SystematicIssuers, GC_DID, }; @@ -294,15 +295,15 @@ decl_module! { Self::base_invalidate_cdd_claims(origin, cdd, disable_from, expiry)?; } - /// Removes specified secondary keys of a DID if present. - /// - /// # Failure - /// It can only called by primary key owner. - /// - /// # Weight - /// `950_000_000 + 60_000 * keys_to_remove.len()` + /// Deprecated. Use `remove_secondary_keys` instead. #[weight = ::WeightInfo::remove_secondary_keys(keys_to_remove.len() as u32)] - pub fn remove_secondary_keys(origin, keys_to_remove: Vec) { + pub fn remove_secondary_keys_old(origin, keys_to_remove: Vec>) { + let keys_to_remove = keys_to_remove.into_iter() + .map(|key| match key { + Signatory::Account(key) => Ok(key), + _ => Err(Error::::NotASigner), + }) + .collect::, _>>()?; Self::base_remove_secondary_keys(origin, keys_to_remove)?; } @@ -381,12 +382,18 @@ decl_module! { Self::base_revoke_claim(target, claim_type, issuer, scope) } - /// Sets permissions for an specific `target_key` key. - /// - /// Only the primary key of an identity is able to set secondary key permissions. + /// Deprecated. Use `set_secondary_key_permissions` instead. #[weight = ::WeightInfo::set_secondary_key_permissions_full(&perms)] - pub fn set_secondary_key_permissions(origin, key: T::AccountId, perms: Permissions) { - Self::base_set_secondary_key_permissions(origin, key, perms)?; + pub fn set_permission_to_signer(origin, key: Signatory, perms: Permissions) { + match key { + Signatory::Account(key) => Self::base_set_secondary_key_permissions(origin, key, perms)?, + _ => Err(Error::::NotASigner)?, + } + } + + /// Placeholder for removed `legacy_set_permission_to_signer`. + #[weight = 1_000] + pub fn placeholder_legacy_set_permission_to_signer(_origin) { } /// It disables all secondary keys at `did` identity. @@ -428,24 +435,17 @@ decl_module! { Self::base_remove_authorization(origin, target, auth_id)?; } - /// It adds secondary keys to target identity `id`. - /// Keys are directly added to identity because each of them has an authorization. - /// - /// Arguments: - /// - `origin` Primary key of `id` identity. - /// - `id` Identity where new secondary keys will be added. - /// - `additional_keys` New secondary items (and their authorization data) to add to target - /// identity. - /// - /// Failure - /// - It can only called by primary key owner. - /// - Keys should be able to linked to any identity. - #[weight = ::WeightInfo::add_secondary_keys_full::(&additional_keys)] - pub fn add_secondary_keys_with_authorization( + /// Deprecated. Use `add_secondary_keys_with_authorization` instead. + #[weight = ::WeightInfo::add_secondary_keys_full_v1::(&additional_keys)] + pub fn add_secondary_keys_with_authorization_old( origin, - additional_keys: Vec>, + additional_keys: Vec>, expires_at: T::Moment ) { + let additional_keys = additional_keys.into_iter() + .map(SecondaryKeyWithAuth::::try_from) + .collect::, _>>() + .map_err(|_| Error::::NotASigner)?; Self::base_add_secondary_keys_with_authorization(origin, additional_keys, expires_at)?; } @@ -528,6 +528,46 @@ decl_module! { pub fn rotate_primary_key_to_secondary(origin, auth_id:u64, optional_cdd_auth_id: Option) -> DispatchResult { Self::base_rotate_primary_key_to_secondary(origin, auth_id, optional_cdd_auth_id) } + + /// Adds secondary keys to target identity `id`. + /// + /// Keys are directly added to identity because each of them has an authorization. + /// + /// # Arguments: + /// - `origin` which must be the primary key of the identity `id`. + /// - `id` to which new secondary keys will be added. + /// - `additional_keys` which includes secondary keys, + /// coupled with authorization data, to add to target identity. + /// + /// # Errors + /// - Can only called by primary key owner. + /// - Keys should be able to linked to any identity. + #[weight = ::WeightInfo::add_secondary_keys_full::(&additional_keys)] + pub fn add_secondary_keys_with_authorization( + origin, + additional_keys: Vec>, + expires_at: T::Moment + ) { + Self::base_add_secondary_keys_with_authorization(origin, additional_keys, expires_at)?; + } + + /// Sets permissions for an specific `target_key` key. + /// + /// Only the primary key of an identity is able to set secondary key permissions. + #[weight = ::WeightInfo::set_secondary_key_permissions_full(&perms)] + pub fn set_secondary_key_permissions(origin, key: T::AccountId, perms: Permissions) { + Self::base_set_secondary_key_permissions(origin, key, perms)?; + } + + /// Removes specified secondary keys of a DID if present. + /// + /// # Errors + /// + /// The extrinsic can only called by primary key owner. + #[weight = ::WeightInfo::remove_secondary_keys(keys_to_remove.len() as u32)] + pub fn remove_secondary_keys(origin, keys_to_remove: Vec) { + Self::base_remove_secondary_keys(origin, keys_to_remove)?; + } } } diff --git a/polymesh_schema.json b/polymesh_schema.json index fbb31944b5..fa30c23a8e 100644 --- a/polymesh_schema.json +++ b/polymesh_schema.json @@ -87,16 +87,16 @@ "Local": "u64" } }, - "AssetMetadataLockStatus": { + "AssetMetadataLockStatus": { "_enum": { "Unlocked": "", "Locked": "", "LockedUntil": "Moment" } }, - "AssetMetadataValueDetail": { + "AssetMetadataValueDetail": { "expire": "Option", - "lock_status": "AssetMetadataLockStatus" + "lock_status": "AssetMetadataLockStatus" }, "AssetMetadataDescription": "Text", "AssetMetadataSpec": { diff --git a/primitives/src/secondary_key.rs b/primitives/src/secondary_key.rs index 73427f2dbd..3400ccaf63 100644 --- a/primitives/src/secondary_key.rs +++ b/primitives/src/secondary_key.rs @@ -451,8 +451,8 @@ pub mod v1 { /// Old v1 secondary key. #[derive(Encode, Decode, TypeInfo)] - #[derive(Clone, Default, PartialEq, Eq)] - #[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] + #[derive(Clone, Debug, Default, PartialEq, Eq)] + #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct SecondaryKey { /// Signer. pub signer: Signatory, diff --git a/scripts/cli/package.json b/scripts/cli/package.json index fe95dd83d5..842af1f2e0 100644 --- a/scripts/cli/package.json +++ b/scripts/cli/package.json @@ -11,7 +11,8 @@ "start": "npm run build", "create": "npm run build && npm run test", "build": "npm run clean:some && tsc -p .", - "build:types": "npm run generate:polymesh-meta && npm run generate:defs && npm run generate:meta", + "build:types": "npm run update:types && npm run generate:polymesh-meta && npm run generate:defs && npm run generate:meta", + "update:types": "node ./util/updateTypes.js", "generate:defs": "ts-node --skip-project node_modules/.bin/polkadot-types-from-defs --package polymesh-typegen/interfaces --input ./src/interfaces --endpoint ./polymesh-meta.json", "generate:meta": "ts-node --skip-project node_modules/.bin/polkadot-types-from-chain --package polymesh-typegen/interfaces --endpoint ./polymesh-meta.json --output ./src/interfaces", "generate:polymesh-meta": "./chain_metadata.sh", diff --git a/scripts/cli/polymesh-meta.json b/scripts/cli/polymesh-meta.json index d7bd692f53..c327187420 100644 --- a/scripts/cli/polymesh-meta.json +++ b/scripts/cli/polymesh-meta.json @@ -1 +1 @@ -{"jsonrpc":"2.0","result":"0x6d6574610ed10a000c1c73705f636f72651863727970746f2c4163636f756e7449643332000004000401205b75383b2033325d0000040000032000000008000800000503000c08306672616d655f73797374656d2c4163636f756e74496e666f0814496e64657801102c4163636f756e74446174610114001401146e6f6e6365100114496e646578000124636f6e73756d657273100120526566436f756e7400012470726f766964657273100120526566436f756e7400012c73756666696369656e7473100120526566436f756e740001106461746114012c4163636f756e74446174610000100000050500141064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e6365732c4163636f756e744461746100001001106672656518011c42616c616e6365000120726573657276656418011c42616c616e636500012c6d6973635f66726f7a656e18011c42616c616e63650001286665655f66726f7a656e18011c42616c616e636500001800000507001c0c346672616d655f737570706f72741c77656967687473405065724469737061746368436c6173730404540120000c01186e6f726d616c2001045400012c6f7065726174696f6e616c200104540001246d616e6461746f727920010454000020000005060024083c7072696d69746976655f74797065731048323536000004000401205b75383b2033325d00002800000208002c102873705f72756e74696d651c67656e6572696318646967657374184469676573740410486173680124000401106c6f67733001545665633c4469676573744974656d3c486173683e3e000030000002340034102873705f72756e74696d651c67656e6572696318646967657374284469676573744974656d0410486173680124011c3c4368616e67657354726965526f6f740400240110486173680002002850726552756e74696d650800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e00060024436f6e73656e7375730800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e000400105365616c0800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e000500444368616e676573547269655369676e616c04003c01444368616e676573547269655369676e616c000700144f74686572040028011c5665633c75383e0000006452756e74696d65456e7669726f6e6d656e745570646174656400080000380000030400000008003c102873705f72756e74696d651c67656e6572696318646967657374444368616e676573547269655369676e616c000104404e6577436f6e66696775726174696f6e04004001804f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e000000004004184f7074696f6e04045401440108104e6f6e6500000010536f6d650400440000010000440c1c73705f636f7265306368616e6765735f74726965604368616e67657354726965436f6e66696775726174696f6e000008013c6469676573745f696e74657276616c10010c7533320001346469676573745f6c6576656c7310010c7533320000480000024c004c08306672616d655f73797374656d2c4576656e745265636f7264080445015004540124000c011470686173656104011450686173650001146576656e7450010445000118746f70696373650401185665633c543e0000500c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d65144576656e7400019c1853797374656d04005401706672616d655f73797374656d3a3a4576656e743c52756e74696d653e0000001c496e6469636573040070017870616c6c65745f696e64696365733a3a4576656e743c52756e74696d653e0003002042616c616e636573040074017c70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d653e000500204964656e7469747904008c017c70616c6c65745f6964656e746974793a3a4576656e743c52756e74696d653e0007004c4364645365727669636550726f76696465727304001d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365323e00080044506f6c796d657368436f6d6d69747465650400290101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365313e0009004c436f6d6d69747465654d656d6265727368697004003d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365313e000a0048546563686e6963616c436f6d6d69747465650400450101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365333e000b0070546563686e6963616c436f6d6d69747465654d656d6265727368697004004d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365333e000c004055706772616465436f6d6d69747465650400550101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365343e000d006855706772616465436f6d6d69747465654d656d6265727368697004005d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365343e000e00204d756c746953696704006501017c70616c6c65745f6d756c74697369673a3a4576656e743c52756e74696d653e000f001842726964676504007101017470616c6c65745f6272696467653a3a4576656e743c52756e74696d653e0010001c5374616b696e6704008501017870616c6c65745f7374616b696e673a3a4576656e743c52756e74696d653e001100204f6666656e63657304009501015870616c6c65745f6f6666656e6365733a3a4576656e740012001c53657373696f6e04009d01015470616c6c65745f73657373696f6e3a3a4576656e740013001c4772616e6470610400a101015470616c6c65745f6772616e6470613a3a4576656e7400150020496d4f6e6c696e650400b501018070616c6c65745f696d5f6f6e6c696e653a3a4576656e743c52756e74696d653e001700105375646f0400d901016c70616c6c65745f7375646f3a3a4576656e743c52756e74696d653e0019001441737365740400dd01017070616c6c65745f61737365743a3a4576656e743c52756e74696d653e001a004c4361706974616c446973747269627574696f6e04006902018870616c6c65745f6361706974616c5f646973747269627574696f6e3a3a4576656e74001b0028436865636b706f696e7404008102016070616c6c65745f636865636b706f696e743a3a4576656e74001c0044436f6d706c69616e63654d616e616765720400a102018070616c6c65745f636f6d706c69616e63655f6d616e616765723a3a4576656e74001d003c436f72706f72617465416374696f6e0400d502017c70616c6c65745f636f72706f726174655f616374696f6e733a3a4576656e74001e003c436f72706f7261746542616c6c6f7404000903017870616c6c65745f636f72706f726174655f62616c6c6f743a3a4576656e74001f00105069707304004103016c70616c6c65745f706970733a3a4576656e743c52756e74696d653e00210024506f7274666f6c696f04008103015c70616c6c65745f706f7274666f6c696f3a3a4576656e740022002c50726f746f636f6c46656504009103018c70616c6c65745f70726f746f636f6c5f6665653a3a4576656e743c52756e74696d653e002300245363686564756c657204009903018070616c6c65745f7363686564756c65723a3a4576656e743c52756e74696d653e00240028536574746c656d656e740400a103018470616c6c65745f736574746c656d656e743a3a4576656e743c52756e74696d653e00250028537461746973746963730400cd03016070616c6c65745f737461746973746963733a3a4576656e740026000c53746f04001504016870616c6c65745f73746f3a3a4576656e743c52756e74696d653e00270020547265617375727904003104017c70616c6c65745f74726561737572793a3a4576656e743c52756e74696d653e0028001c5574696c69747904003504015470616c6c65745f7574696c6974793a3a4576656e74002900104261736504004504014870616c6c65745f626173653a3a4576656e74002a003845787465726e616c4167656e747304004d04017470616c6c65745f65787465726e616c5f6167656e74733a3a4576656e74002b001c52656c6179657204005104017870616c6c65745f72656c617965723a3a4576656e743c52756e74696d653e002c001c5265776172647304005504017870616c6c65745f726577617264733a3a4576656e743c52756e74696d653e002d0024546573745574696c7304005904018470616c6c65745f746573745f7574696c733a3a4576656e743c52756e74696d653e00320000540c306672616d655f73797374656d1870616c6c6574144576656e740404540001184045787472696e7369635375636365737304005801304469737061746368496e666f000004b4416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e205c5b696e666f5c5d3c45787472696e7369634661696c6564080064013444697370617463684572726f7200005801304469737061746368496e666f00010490416e2065787472696e736963206661696c65642e205c5b6572726f722c20696e666f5c5d2c436f64655570646174656400020450603a636f6465602077617320757064617465642e284e65774163636f756e740400000130543a3a4163636f756e7449640003047841206e6577205c5b6163636f756e745c5d2077617320637265617465642e344b696c6c65644163636f756e740400000130543a3a4163636f756e74496400040468416e205c5b6163636f756e745c5d20776173207265617065642e2052656d61726b65640800000130543a3a4163636f756e744964000024011c543a3a48617368000504d04f6e206f6e2d636861696e2072656d61726b2068617070656e65642e205c5b6f726967696e2c2072656d61726b5f686173685c5d04704576656e7420666f72207468652053797374656d2070616c6c65742e580c346672616d655f737570706f72741c77656967687473304469737061746368496e666f00000c0118776569676874200118576569676874000114636c6173735c01344469737061746368436c617373000120706179735f6665656001105061797300005c0c346672616d655f737570706f72741c77656967687473344469737061746368436c61737300010c184e6f726d616c0000002c4f7065726174696f6e616c000100244d616e6461746f727900020000600c346672616d655f737570706f72741c7765696768747310506179730001080c596573000000084e6f0001000064082873705f72756e74696d653444697370617463684572726f72000120144f746865720000003043616e6e6f744c6f6f6b7570000100244261644f726967696e000200184d6f64756c65080114696e64657808010875380001146572726f72080108753800030044436f6e73756d657252656d61696e696e670004002c4e6f50726f76696465727300050014546f6b656e0400680128546f6b656e4572726f720006002841726974686d6574696304006c013c41726974686d657469634572726f720007000068082873705f72756e74696d6528546f6b656e4572726f7200011c1c4e6f46756e647300000020576f756c644469650001003042656c6f774d696e696d756d0002003043616e6e6f7443726561746500030030556e6b6e6f776e41737365740004001846726f7a656e0005002c556e737570706f72746564000600006c082873705f72756e74696d653c41726974686d657469634572726f7200010c24556e646572666c6f77000000204f766572666c6f77000100384469766973696f6e42795a65726f00020000700c3870616c6c65745f696e64696365731870616c6c6574144576656e7404045400010c34496e64657841737369676e65640800000130543a3a4163636f756e744964000010013c543a3a4163636f756e74496e646578000004b041206163636f756e7420696e646578207761732061737369676e65642e205c5b696e6465782c2077686f5c5d28496e6465784672656564040010013c543a3a4163636f756e74496e646578000104e441206163636f756e7420696e64657820686173206265656e2066726565642075702028756e61737369676e6564292e205c5b696e6465785c5d2c496e64657846726f7a656e080010013c543a3a4163636f756e74496e6465780000000130543a3a4163636f756e744964000204250141206163636f756e7420696e64657820686173206265656e2066726f7a656e20746f206974732063757272656e74206163636f756e742049442e205c5b696e6465782c2077686f5c5d0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909741064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e636573205261774576656e7404244163636f756e7449640100011c1c456e646f7765640c007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000018011c42616c616e63650000043101416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e205c5b6469642c206163636f756e742c20667265655f62616c616e63655d205472616e7366657218007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e74496400007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000018011c42616c616e636500008001304f7074696f6e3c4d656d6f3e000104f45472616e7366657220737563636565646564202866726f6d5f6469642c2066726f6d2c20746f5f6469642c20746f2c2076616c75652c206d656d6f292e2842616c616e636553657410007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000018011c42616c616e6365000204d4412062616c616e6365207761732073657420627920726f6f7420286469642c2077686f2c20667265652c207265736572766564292e504163636f756e7442616c616e63654275726e65640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e63650003083d01546865206163636f756e7420616e642074686520616d6f756e74206f6620756e6c6f636b65642062616c616e6365206f662074686174206163636f756e74207468617420776173206275726e65642e8c2863616c6c65722049642c2063616c6c6572206163636f756e742c20616d6f756e742920526573657276656408000001244163636f756e744964000018011c42616c616e63650004041901536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e205c5b77686f2c2076616c75655d28556e726573657276656408000001244163636f756e744964000018011c42616c616e63650005042101536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e205c5b77686f2c2076616c75655d4852657365727665526570617472696174656410000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000088011853746174757300060c4d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652ea05c5b66726f6d2c20746f2c2062616c616e63652c2064657374696e6174696f6e5f7374617475735d085c4576656e747320666f722074686973206d6f64756c652e007804184f7074696f6e040454017c0108104e6f6e6500000010536f6d6504007c00000100007c0c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f6964284964656e746974794964000004000401385b75383b20555549445f4c454e5d00008004184f7074696f6e04045401840108104e6f6e6500000010536f6d650400840000010000841064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e636573104d656d6f000004000401205b75383b2033325d00008814346672616d655f737570706f72741874726169747318746f6b656e73106d6973633442616c616e63655374617475730001081046726565000000205265736572766564000100008c1064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479205261774576656e7408244163636f756e7449640100184d6f6d656e740120014428446964437265617465640c007c01284964656e74697479496400000001244163636f756e74496400009001705665633c5365636f6e646172794b65793c4163636f756e7449643e3e00000c444964656e7469747920637265617465642e0088284449442c207072696d617279206b65792c207365636f6e64617279206b65797329485365636f6e646172794b657973416464656408007c01284964656e74697479496400009001705665633c5365636f6e646172794b65793c4163636f756e7449643e3e00010c845365636f6e64617279206b65797320616464656420746f206964656e746974792e003c284449442c206e6577206b65797329505365636f6e646172794b65797352656d6f76656408007c01284964656e7469747949640000ec01385665633c4163636f756e7449643e00020c945365636f6e64617279206b6579732072656d6f7665642066726f6d206964656e746974792e0080284449442c20746865206b657973207468617420676f742072656d6f76656429605365636f6e646172794b65794c6566744964656e7469747908007c01284964656e74697479496400000001244163636f756e74496400030c9041207365636f6e64617279206b6579206c656674207468656972206964656e746974792e0050284449442c207365636f6e64617279206b657929785365636f6e646172794b65795065726d697373696f6e735570646174656410007c01284964656e74697479496400000001244163636f756e744964000098012c5065726d697373696f6e73000098012c5065726d697373696f6e7300040c885365636f6e64617279206b6579207065726d697373696f6e7320757064617465642e000d01284449442c2075706461746564207365636f6e64617279206b65792c2070726576696f7573207065726d697373696f6e732c206e6577207065726d697373696f6e7329445072696d6172794b6579557064617465640c007c01284964656e74697479496400000001244163636f756e74496400000001244163636f756e74496400050c805072696d617279206b6579206f66206964656e74697479206368616e6765642e00a4284449442c206f6c64207072696d617279206b6579206163636f756e742049442c206e65772049442928436c61696d416464656408007c01284964656e7469747949640000f001344964656e74697479436c61696d00060c60436c61696d20616464656420746f206964656e746974792e0030284449442c20636c61696d2930436c61696d5265766f6b656408007c01284964656e7469747949640000f001344964656e74697479436c61696d00070c70436c61696d207265766f6b65642066726f6d206964656e746974792e0030284449442c20636c61696d294841737365744469645265676973746572656408007c01284964656e7469747949640000a001185469636b657200080c7041737365742773206964656e7469747920726567697374657265642e004c284173736574204449442c207469636b65722948417574686f72697a6174696f6e416464656418007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0000090101444f7074696f6e3c4163636f756e7449643e000020010c75363400000d010170417574686f72697a6174696f6e446174613c4163636f756e7449643e0000f401384f7074696f6e3c4d6f6d656e743e00090c604e657720617574686f72697a6174696f6e2061646465642e00310128617574686f72697365645f62792c207461726765745f6469642c207461726765745f6b65792c20617574685f69642c20617574686f72697a6174696f6e5f646174612c206578706972792950417574686f72697a6174696f6e5265766f6b65640c007801484f7074696f6e3c4964656e7469747949643e0000090101444f7074696f6e3c4163636f756e7449643e000020010c753634000a0ca0417574686f72697a6174696f6e207265766f6b65642062792074686520617574686f72697a65722e00b828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e52656a65637465640c007801484f7074696f6e3c4964656e7469747949643e0000090101444f7074696f6e3c4163636f756e7449643e000020010c753634000b0cd8417574686f72697a6174696f6e2072656a65637465642062792074686520757365722077686f2077617320617574686f72697a65642e00b828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e436f6e73756d65640c007801484f7074696f6e3c4964656e7469747949643e0000090101444f7074696f6e3c4163636f756e7449643e000020010c753634000c0c5c417574686f72697a6174696f6e20636f6e73756d65642e00b828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642988436464526571756972656d656e74466f725072696d6172794b657955706461746564040019010110626f6f6c000d0cc443444420726571756972656d656e7420666f72207570646174696e67207072696d617279206b6579206368616e6765642e0044286e65775f726571756972656d656e742950436464436c61696d73496e76616c69646174656408007c01284964656e74697479496400002001184d6f6d656e74000e10410143444420636c61696d732067656e65726174656420627920604964656e74697479496460202861204344442050726f7669646572292068617665206265656e20696e76616c6964617465642066726f6d24604d6f6d656e74602e0094284344442070726f7669646572204449442c2064697361626c652066726f6d2064617465294c5365636f6e646172794b65797346726f7a656e04007c01284964656e746974794964000f0cc4416c6c205365636f6e64617279206b657973206f6620746865206964656e74697479204944206172652066726f7a656e2e00142844494429545365636f6e646172794b657973556e66726f7a656e04007c01284964656e74697479496400100ccc416c6c205365636f6e64617279206b657973206f6620746865206964656e746974792049442061726520756e66726f7a656e2e00142844494429085c4576656e747320666f722074686973206d6f64756c652e00900000029400940c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579305365636f6e646172794b657904244163636f756e74496401000008010c6b65790001244163636f756e74496400012c7065726d697373696f6e7398012c5065726d697373696f6e730000980c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65792c5065726d697373696f6e7300000c011461737365749c014041737365745065726d697373696f6e7300012465787472696e736963b0015045787472696e7369635065726d697373696f6e73000124706f7274666f6c696fd40150506f7274666f6c696f5065726d697373696f6e7300009c0c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101a0010c1457686f6c650000001454686573650400a8012c42547265655365743c413e000100184578636570740400a8012c42547265655365743c413e00020000a00c4c706f6c796d6573685f7072696d697469766573187469636b6572185469636b657200000400a401405b75383b205449434b45525f4c454e5d0000a40000030c0000000800a80420425472656553657404045401a0000400ac000000ac000002a000b00c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101b4010c1457686f6c650000001454686573650400cc012c42547265655365743c413e000100184578636570740400cc012c42547265655365743c413e00020000b40c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65794450616c6c65745065726d697373696f6e73000008012c70616c6c65745f6e616d65b8012850616c6c65744e616d65000148646973706174636861626c655f6e616d6573bc0144446973706174636861626c654e616d65730000b8084c706f6c796d6573685f7072696d6974697665732850616c6c65744e616d650000040028011c5665633c75383e0000bc0c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101c0010c1457686f6c650000001454686573650400c4012c42547265655365743c413e000100184578636570740400c4012c42547265655365743c413e00020000c0084c706f6c796d6573685f7072696d69746976657340446973706174636861626c654e616d650000040028011c5665633c75383e0000c40420425472656553657404045401c0000400c8000000c8000002c000cc0420425472656553657404045401b4000400d0000000d0000002b400d40c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101d8010c1457686f6c650000001454686573650400e4012c42547265655365743c413e000100184578636570740400e4012c42547265655365743c413e00020000d80c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f69642c506f7274666f6c696f4964000008010c6469647c01284964656e7469747949640001106b696e64dc0134506f7274666f6c696f4b696e640000dc0c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f696434506f7274666f6c696f4b696e640001081c44656661756c7400000010557365720400e0013c506f7274666f6c696f4e756d62657200010000e00c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f69643c506f7274666f6c696f4e756d6265720000040020010c7536340000e40420425472656553657404045401d8000400e8000000e8000002d800ec0000020000f00c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d344964656e74697479436c61696d0000140130636c61696d5f6973737565727c01284964656e74697479496400013469737375616e63655f646174652001184d6f6d656e740001406c6173745f7570646174655f646174652001184d6f6d656e74000118657870697279f401384f7074696f6e3c4d6f6d656e743e000114636c61696df80114436c61696d0000f404184f7074696f6e04045401200108104e6f6e6500000010536f6d650400200000010000f80c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d14436c61696d00013028416363726564697465640400fc011453636f706500000024416666696c696174650400fc011453636f7065000100244275794c6f636b75700400fc011453636f70650002002853656c6c4c6f636b75700400fc011453636f706500030050437573746f6d657244756544696c6967656e63650400010101144364644964000400404b6e6f77596f7572437573746f6d65720400fc011453636f7065000500304a7572697364696374696f6e08000501012c436f756e747279436f64650000fc011453636f7065000600204578656d707465640400fc011453636f70650007001c426c6f636b65640400fc011453636f706500080048496e766573746f72556e697175656e6573730c00fc011453636f706500007c011c53636f706549640000010101144364644964000900184e6f44617461000a0050496e766573746f72556e697175656e65737356320400010101144364644964000b0000fc0c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d1453636f706500010c204964656e7469747904007c01284964656e746974794964000000185469636b65720400a001185469636b657200010018437573746f6d040028011c5665633c75383e0002000001010c4c706f6c796d6573685f7072696d697469766573186364645f6964144364644964000004000401205b75383b2033325d000005010c4c706f6c796d6573685f7072696d697469766573306a7572697364696374696f6e2c436f756e747279436f64650001e90308414600000008415800010008414c00020008445a00030008415300040008414400050008414f000600084149000700084151000800084147000900084152000a0008414d000b00084157000c00084155000d00084154000e0008415a000f0008425300100008424800110008424400120008424200130008425900140008424500150008425a00160008424a00170008424d00180008425400190008424f001a00084241001b00084257001c00084256001d00084252001e00085647001f0008494f00200008424e002100084247002200084246002300084249002400084b4800250008434d002600084341002700084356002800084b59002900084346002a00085444002b0008434c002c0008434e002d0008484b002e00084d4f002f0008435800300008434300310008434f003200084b4d00330008434700340008434400350008434b003600084352003700084349003800084852003900084355003a00084359003b0008435a003c0008444b003d0008444a003e0008444d003f0008444f00400008454300410008454700420008535600430008475100440008455200450008454500460008455400470008464b00480008464f00490008464a004a00084649004b00084652004c00084746004d00085046004e00085446004f0008474100500008474d00510008474500520008444500530008474800540008474900550008475200560008474c005700084744005800084750005900084755005a00084754005b00084747005c0008474e005d00084757005e00084759005f0008485400600008484d00610008564100620008484e00630008485500640008495300650008494e006600084944006700084952006800084951006900084945006a0008494d006b0008494c006c00084954006d00084a4d006e00084a50006f00084a45007000084a4f007100084b5a007200084b45007300084b49007400084b50007500084b52007600084b57007700084b47007800084c41007900084c56007a00084c42007b00084c53007c00084c52007d00084c59007e00084c49007f00084c54008000084c55008100084d4b008200084d47008300084d57008400084d59008500084d56008600084d4c008700084d54008800084d48008900084d51008a00084d52008b00084d55008c00085954008d00084d58008e0008464d008f00084d44009000084d43009100084d4e009200084d45009300084d53009400084d41009500084d5a009600084d4d009700084e41009800084e52009900084e50009a00084e4c009b0008414e009c00084e43009d00084e5a009e00084e49009f00084e4500a000084e4700a100084e5500a200084e4600a300084d5000a400084e4f00a500084f4d00a60008504b00a70008505700a80008505300a90008504100aa0008504700ab0008505900ac0008504500ad0008504800ae0008504e00af0008504c00b00008505400b10008505200b20008514100b30008524500b40008524f00b50008525500b60008525700b70008424c00b80008534800b900084b4e00ba00084c4300bb00084d4600bc0008504d00bd0008564300be0008575300bf0008534d00c00008535400c10008534100c20008534e00c30008525300c40008534300c50008534c00c60008534700c70008534b00c80008534900c90008534200ca0008534f00cb00085a4100cc0008475300cd0008535300ce0008455300cf00084c4b00d00008534400d10008535200d20008534a00d30008535a00d40008534500d50008434800d60008535900d70008545700d80008544a00d90008545a00da0008544800db0008544c00dc0008544700dd0008544b00de0008544f00df0008545400e00008544e00e10008545200e20008544d00e30008544300e40008545600e50008554700e60008554100e70008414500e80008474200e90008555300ea0008554d00eb0008555900ec0008555a00ed0008565500ee0008564500ef0008564e00f00008564900f10008574600f20008454800f30008594500f400085a4d00f500085a5700f60008425100f70008435700f80008535800f90000090104184f7074696f6e04045401000108104e6f6e6500000010536f6d6504000000000100000d010c4c706f6c796d6573685f7072696d69746976657334617574686f72697a6174696f6e44417574686f72697a6174696f6e4461746104244163636f756e74496401000128604174746573745072696d6172794b6579526f746174696f6e04007c01284964656e74697479496400000040526f746174655072696d6172794b6579000100385472616e736665725469636b65720400a001185469636b6572000200444164644d756c74695369675369676e657204000001244163636f756e744964000300585472616e7366657241737365744f776e6572736869700400a001185469636b6572000400304a6f696e4964656e74697479040098012c5065726d697373696f6e7300050040506f7274666f6c696f437573746f64790400d8012c506f7274666f6c696f49640006002c4265636f6d654167656e740800a001185469636b65720000110101284167656e7447726f75700007004c41646452656c61796572506179696e674b65790c000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e63650008006c526f746174655072696d6172794b6579546f5365636f6e64617279040098012c5065726d697373696f6e730009000011010c4c706f6c796d6573685f7072696d697469766573146167656e74284167656e7447726f75700001141046756c6c00000018437573746f6d04001501011041474964000100284578636570744d65746100020034506f6c796d657368563143414100030034506f6c796d65736856315049410004000015010c4c706f6c796d6573685f7072696d697469766573146167656e7410414749640000040010010c7533320000190100000500001d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449012101011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400002501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e002101083070616c6c65745f67726f757024496e7374616e6365320000000025010000027c002901084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d62657201100449012d0101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800002501013c5665633c4964656e7469747949643e00002501013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e7469747949640000240110486173680000310101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e002d01084070616c6c65745f636f6d6d697474656524496e7374616e6365310000000031010418526573756c74080454013501044501640108084f6b04003501000000000c45727204006400000100003501000004000039010864706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573284d61796265426c6f636b042c426c6f636b4e756d6265720110010810536f6d65040010012c426c6f636b4e756d626572000000104e6f6e65000100003d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449014101011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400002501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e004101083070616c6c65745f67726f757024496e7374616e636531000000004501084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d6265720110044901490101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800002501013c5665633c4964656e7469747949643e00002501013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e7469747949640000240110486173680000310101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e004901084070616c6c65745f636f6d6d697474656524496e7374616e636533000000004d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449015101011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400002501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e005101083070616c6c65745f67726f757024496e7374616e636533000000005501084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d6265720110044901590101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800002501013c5665633c4964656e7469747949643e00002501013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e7469747949640000240110486173680000310101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e005901084070616c6c65745f636f6d6d697474656524496e7374616e636534000000005d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449016101011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400002501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e006101083070616c6c65745f67726f757024496e7374616e636534000000006501083c70616c6c65745f6d756c7469736967205261774576656e7404244163636f756e744964010001303c4d756c74695369674372656174656414007c01284964656e74697479496400000001244163636f756e74496400000001244163636f756e7449640000690101645665633c5369676e61746f72793c4163636f756e7449643e3e000020010c753634000008ac4576656e7420656d6974746564206166746572206372656174696f6e206f662061206d756c74697369672e6501417267756d656e74733a2063616c6c6572204449442c206d756c746973696720616464726573732c207369676e657273202870656e64696e6720617070726f76616c292c207369676e6174757265732072657175697265642e3450726f706f73616c41646465640c007c01284964656e74697479496400000001244163636f756e744964000020010c753634000108984576656e7420656d697474656420616674657220616464696e6720612070726f706f73616c2eb4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e4050726f706f73616c457865637574656410007c01284964656e74697479496400000001244163636f756e744964000020010c753634000019010110626f6f6c000208a84576656e7420656d6974746564207768656e20612070726f706f73616c2069732065786563757465642ed4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442c20726573756c742e4c4d756c74695369675369676e657241646465640c007c01284964656e74697479496400000001244163636f756e74496400006d0101505369676e61746f72793c4163636f756e7449643e000308a04576656e7420656d6974746564207768656e2061207369676e61746f72792069732061646465642eb8417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206164646564207369676e65722e604d756c74695369675369676e6572417574686f72697a65640c007c01284964656e74697479496400000001244163636f756e74496400006d0101505369676e61746f72793c4163636f756e7449643e00040809014576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f727920697320617574686f72697a656420746f2062652061646465642ecc417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722e544d756c74695369675369676e657252656d6f7665640c007c01284964656e74697479496400000001244163636f756e74496400006d0101505369676e61746f72793c4163636f756e7449643e000508cc4576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f72792069732072656d6f7665642ec0417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2072656d6f766564207369676e65722e844d756c74695369675369676e61747572657352657175697265644368616e6765640c007c01284964656e74697479496400000001244163636f756e744964000020010c75363400060801014576656e7420656d6974746564207768656e20746865206e756d626572206f66207265717569726564207369676e617475726573206973206368616e6765642ee4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206e6577207265717569726564207369676e6174757265732e4050726f706f73616c417070726f76656410007c01284964656e74697479496400000001244163636f756e74496400006d0101505369676e61746f72793c4163636f756e7449643e000020010c753634000708b44576656e7420656d6974746564207768656e207468652070726f706f73616c2067657420617070726f7665642e0101417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e5450726f706f73616c52656a656374696f6e566f746510007c01284964656e74697479496400000001244163636f756e74496400006d0101505369676e61746f72793c4163636f756e7449643e000020010c7536340008080d014576656e7420656d6974746564207768656e206120766f7465206973206361737420696e206661766f72206f662072656a656374696e6720612070726f706f73616c2e0101417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e4050726f706f73616c52656a65637465640c007c01284964656e74697479496400000001244163636f756e744964000020010c753634000908a84576656e7420656d6974746564207768656e20612070726f706f73616c2069732072656a65637465642eb4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e5c50726f706f73616c457865637574696f6e4661696c6564040064013444697370617463684572726f72000a04e44576656e7420656d6974746564207768656e207468657265277320616e206572726f7220696e2070726f706f73616c20657865637574696f6e405363686564756c696e674661696c6564040064013444697370617463684572726f72000b04745363686564756c696e67206f662070726f706f73616c206661696c732e085c4576656e747320666f722074686973206d6f64756c652e0069010000026d01006d010c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579245369676e61746f727904244163636f756e74496401000108204964656e7469747904007c01284964656e7469747949640000001c4163636f756e7404000001244163636f756e744964000100007101083470616c6c65745f627269646765205261774576656e7408244163636f756e74496401002c426c6f636b4e756d6265720110014044436f6e74726f6c6c65724368616e67656408007c01284964656e74697479496400000001244163636f756e74496400000490436f6e6669726d6174696f6e206f662061207369676e657220736574206368616e67652e3041646d696e4368616e67656408007c01284964656e74697479496400000001244163636f756e74496400010474436f6e6669726d6174696f6e206f662041646d696e206368616e67652e3c54696d656c6f636b4368616e67656408007c01284964656e746974794964000010012c426c6f636b4e756d626572000204a0436f6e6669726d6174696f6e206f662064656661756c742074696d656c6f636b206368616e67652e1c4272696467656408007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e0003041d01436f6e6669726d6174696f6e206f6620504f4c59582075706772616465206f6e20506f6c796d6573682066726f6d20504f4c5920746f6b656e73206f6e20457468657265756d2e1846726f7a656e04007c01284964656e746974794964000404904e6f74696669636174696f6e206f6620667265657a696e6720746865206272696467652e20556e66726f7a656e04007c01284964656e746974794964000504984e6f74696669636174696f6e206f6620756e667265657a696e6720746865206272696467652e2046726f7a656e547808007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e0006049c4e6f74696669636174696f6e206f6620667265657a696e672061207472616e73616374696f6e2e28556e66726f7a656e547808007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e000704a44e6f74696669636174696f6e206f6620756e667265657a696e672061207472616e73616374696f6e2e3c4578656d70746564557064617465640c007c01284964656e74697479496400007c01284964656e746974794964000019010110626f6f6c000804c44578656d7074696f6e20737461747573206f6620616e206964656e7469747920686173206265656e20757064617465642e484272696467654c696d6974557064617465640c007c01284964656e746974794964000018011c42616c616e6365000010012c426c6f636b4e756d62657200090478427269646765206c696d697420686173206265656e20757064617465642e2854787348616e646c65640400790101985665633c284163636f756e7449642c207533322c2048616e646c65645478537461747573293e000a086101416e206576656e7420656d6974746564206166746572206120766563746f72206f66207472616e73616374696f6e732069732068616e646c65642e2054686520706172616d65746572206973206120766563746f72206f6651017475706c6573206f6620726563697069656e74206163636f756e742c20697473206e6f6e63652c20616e642074686520737461747573206f66207468652070726f636573736564207472616e73616374696f6e2e4442726964676554785363686564756c65640c007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e000010012c426c6f636b4e756d626572000b0450427269646765205478205363686564756c65642e5842726964676554785363686564756c654661696c65640c007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e000028011c5665633c75383e000c04744661696c656420746f207363686564756c65204272696467652054782e40467265657a6541646d696e416464656408007c01284964656e74697479496400000001244163636f756e744964000d048841206e657720667265657a652061646d696e20686173206265656e2061646465642e48467265657a6541646d696e52656d6f76656408007c01284964656e74697479496400000001244163636f756e744964000e04804120667265657a652061646d696e20686173206265656e2072656d6f7665642e24547852656d6f76656408007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e000f049c4e6f74696669636174696f6e206f662072656d6f76696e672061207472616e73616374696f6e2e085c4576656e747320666f722074686973206d6f64756c652e007501083470616c6c65745f627269646765204272696467655478041c4163636f756e740100001001146e6f6e636510010c753332000124726563697069656e7400011c4163636f756e74000118616d6f756e7418011c42616c616e636500011c74785f6861736824011048323536000079010000027d01007d010000040c00108101008101083470616c6c65745f6272696467653c48616e646c656454785374617475730001081c53756363657373000000144572726f72040028011c5665633c75383e000100008501083870616c6c65745f7374616b696e67205261774576656e74081c42616c616e63650118244163636f756e74496401000144244572615061796f75740c00100120457261496e646578000018011c42616c616e6365000018011c42616c616e636500000c550154686520657261207061796f757420686173206265656e207365743b207468652066697273742062616c616e6365206973207468652076616c696461746f722d7061796f75743b20746865207365636f6e64206973c07468652072656d61696e6465722066726f6d20746865206d6178696d756d20616d6f756e74206f66207265776172642ea85c5b6572615f696e6465782c2076616c696461746f725f7061796f75742c2072656d61696e6465725c5d185265776172640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e63650001043901546865207374616b657220686173206265656e207265776172646564206279207468697320616d6f756e742e205c5b73746173685f6964656e746974792c2073746173682c20616d6f756e745c5d14536c61736808000001244163636f756e744964000018011c42616c616e636500020821014f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e545c5b76616c696461746f722c20616d6f756e745c5d684f6c64536c617368696e675265706f7274446973636172646564040010013053657373696f6e496e6465780003081901416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c648c6e6f742062652070726f6365737365642e205c5b73657373696f6e5f696e6465785c5d3c5374616b696e67456c656374696f6e04008901013c456c656374696f6e436f6d70757465000404f041206e657720736574206f66207374616b6572732077617320656c656374656420776974682074686520676976656e205c5b636f6d707574655c5d2e38536f6c7574696f6e53746f72656404008901013c456c656374696f6e436f6d70757465000504150141206e657720736f6c7574696f6e20666f7220746865207570636f6d696e6720656c656374696f6e20686173206265656e2073746f7265642e205c5b636f6d707574655c5d18426f6e6465640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000610e4416e206163636f756e742068617320626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d004d014e4f54453a2054686973206576656e74206973206f6e6c7920656d6974746564207768656e2066756e64732061726520626f6e64656420766961206120646973706174636861626c652e204e6f7461626c792c210169742077696c6c206e6f7420626520656d697474656420666f72207374616b696e672072657761726473207768656e20746865792061726520616464656420746f207374616b652e20556e626f6e6465640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000704ec416e206163636f756e742068617320756e626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d244e6f6d696e617465640c007c01284964656e74697479496400000001244163636f756e7449640000ec01385665633c4163636f756e7449643e0008048855736572206861732075706461746564207468656972206e6f6d696e6174696f6e732457697468647261776e08000001244163636f756e744964000018011c42616c616e63650009085901416e206163636f756e74206861732063616c6c6564206077697468647261775f756e626f6e6465646020616e642072656d6f76656420756e626f6e64696e67206368756e6b7320776f727468206042616c616e636560ac66726f6d2074686520756e6c6f636b696e672071756575652e205c5b73746173682c20616d6f756e745c5d645065726d697373696f6e65644964656e74697479416464656408007c01284964656e74697479496400007c01284964656e746974794964000a08ec416e20444944206861732069737375656420612063616e6469646163792e2053656520746865207472616e73616374696f6e20666f722077686f2e8c4743206964656e74697479202c2056616c696461746f722773206964656e746974792e6c5065726d697373696f6e65644964656e7469747952656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000b08e854686520676976656e206d656d626572207761732072656d6f7665642e2053656520746865207472616e73616374696f6e20666f722077686f2e8c4743206964656e74697479202c2056616c696461746f722773206964656e746974792e54496e76616c6964617465644e6f6d696e61746f72730c007c01284964656e74697479496400000001244163636f756e7449640000ec01385665633c4163636f756e7449643e000c081d0152656d6f766520746865206e6f6d696e61746f72732066726f6d207468652076616c6964206e6f6d696e61746f7273207768656e2074686572652043444420657870697265642e9443616c6c65722c205374617368206163636f756e744964206f66206e6f6d696e61746f727350436f6d6d697373696f6e436170557064617465640c007c01284964656e74697479496400008d01011c50657262696c6c00008d01011c50657262696c6c000d08805768656e20636f6d6d697373696f6e206361702067657420757064617465642e58286f6c642076616c75652c206e65772076616c7565296c4d696e696d756d426f6e645468726573686f6c645570646174656408007801484f7074696f6e3c4964656e7469747949643e000018011c42616c616e6365000e04ac4d696e20626f6e64207468726573686f6c6420776173207570646174656420286e65772076616c7565292e885265776172645061796d656e745363686564756c696e67496e7465727275707465640c000001244163636f756e7449640000100120457261496e646578000064013444697370617463684572726f72000f04cc5768656e207363686564756c696e67206f6620726577617264207061796d656e74732067657420696e7465727275707465642e64536c617368696e67416c6c6f776564466f724368616e676564040091010138536c617368696e675377697463680010049055706461746520666f722077686f6d2062616c616e63652067657420736c61736865642e085c4576656e747320666f722074686973206d6f64756c652e008901083870616c6c65745f7374616b696e673c456c656374696f6e436f6d7075746500010c1c4f6e436861696e000000185369676e656400010020556e7369676e6564000200008d010c3473705f61726974686d65746963287065725f7468696e67731c50657262696c6c0000040010010c75333200009101083870616c6c65745f7374616b696e6738536c617368696e6753776974636800010c2456616c696461746f720000005456616c696461746f72416e644e6f6d696e61746f72000100104e6f6e650002000095010c3c70616c6c65745f6f6666656e6365731870616c6c6574144576656e740001041c4f6666656e63650800990101104b696e6400002801384f706171756554696d65536c6f7400000c5101546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e643501286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e4c5c5b6b696e642c2074696d65736c6f745c5d2e04304576656e747320747970652e99010000031000000008009d010c3870616c6c65745f73657373696f6e1870616c6c6574144576656e74000104284e657753657373696f6e040010013053657373696f6e496e64657800000849014e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e7420697320746865205c5b73657373696f6e5f696e6465785c5d2c206e6f74207468659c626c6f636b206e756d626572206173207468652074797065206d6967687420737567676573742e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909a1010c3870616c6c65745f6772616e6470611870616c6c6574144576656e7400010c384e6577417574686f7269746965730400a5010134417574686f726974794c697374000004d44e657720617574686f726974792073657420686173206265656e206170706c6965642e205c5b617574686f726974795f7365745c5d185061757365640001049843757272656e7420617574686f726974792073657420686173206265656e207061757365642e1c526573756d65640002049c43757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909a501000002a90100a90100000408ad012000ad010c4c73705f66696e616c6974795f6772616e6470610c617070185075626c696300000400b101013c656432353531393a3a5075626c69630000b1010c1c73705f636f72651c65643235353139185075626c6963000004000401205b75383b2033325d0000b5010c4070616c6c65745f696d5f6f6e6c696e651870616c6c6574144576656e7404045400010c4448656172746265617452656365697665640400b9010138543a3a417574686f726974794964000004010141206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f72697479496460205c5b617574686f726974795f69645c5d1c416c6c476f6f64000104d041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2c536f6d654f66666c696e650400c101016c5665633c4964656e74696669636174696f6e5475706c653c543e3e000204390141742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e652076616c696461746f722077617320666f756e6420746f206265205c5b6f66666c696e655c5d2e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909b901104070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139185075626c696300000400bd01013c737232353531393a3a5075626c69630000bd010c1c73705f636f72651c73723235353139185075626c6963000004000401205b75383b2033325d0000c101000002c50100c5010000040800c90100c901083870616c6c65745f7374616b696e67204578706f7375726508244163636f756e74496401001c42616c616e63650118000c0114746f74616ccd01011c42616c616e636500010c6f776ecd01011c42616c616e63650001186f7468657273d10101ac5665633c496e646976696475616c4578706f737572653c4163636f756e7449642c2042616c616e63653e3e0000cd010000061800d101000002d50100d501083870616c6c65745f7374616b696e6748496e646976696475616c4578706f7375726508244163636f756e74496401001c42616c616e636501180008010c77686f0001244163636f756e74496400011476616c7565cd01011c42616c616e63650000d901082c70616c6c65745f7375646f205261774576656e7404244163636f756e7449640100010c1453756469640400310101384469737061746368526573756c740000048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d284b65794368616e67656404000001244163636f756e744964000104fc546865205c5b7375646f65725c5d206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e285375646f4173446f6e650400310101384469737061746368526573756c740002048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d085c4576656e747320666f722074686973206d6f64756c652e00dd011064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473146173736574205261774576656e7408184d6f6d656e740120244163636f756e74496401000168205472616e7366657214007c01284964656e7469747949640000a001185469636b65720000d8012c506f7274666f6c696f49640000d8012c506f7274666f6c696f4964000018011c42616c616e6365000008744576656e7420666f72207472616e73666572206f6620746f6b656e732edc63616c6c6572204449442c207469636b65722c2066726f6d20706f7274666f6c696f2c20746f20706f7274666f6c696f2c2076616c75651849737375656418007c01284964656e7469747949640000a001185469636b657200007c01284964656e746974794964000018011c42616c616e63650000e101014046756e64696e67526f756e644e616d65000018011c42616c616e636500010870456d6974207768656e20746f6b656e7320676574206973737565642e750163616c6c6572204449442c207469636b65722c2062656e6566696369617279204449442c2076616c75652c2066756e64696e6720726f756e642c20746f74616c2069737375656420696e20746869732066756e64696e6720726f756e642052656465656d656410007c01284964656e7469747949640000a001185469636b657200007c01284964656e746974794964000018011c42616c616e636500020878456d6974207768656e20746f6b656e73206765742072656465656d65642e9063616c6c6572204449442c207469636b65722c202066726f6d204449442c2076616c75653041737365744372656174656418007c01284964656e7469747949640000a001185469636b6572000019010110626f6f6c0000e501012441737365745479706500007c01284964656e746974794964000019010110626f6f6c000308804576656e7420666f72206372656174696f6e206f66207468652061737365742e950163616c6c6572204449442f206f776e6572204449442c207469636b65722c2064697669736962696c6974792c20617373657420747970652c2062656e6566696369617279204449442c2064697361626c6520696e766573746f7220756e697175656e657373484964656e74696669657273557064617465640c007c01284964656e7469747949640000a001185469636b65720000ed0101505665633c41737365744964656e7469666965723e000408d44576656e7420656d6974746564207768656e20616e7920746f6b656e206964656e746966696572732061726520757064617465642e0d0163616c6c6572204449442c207469636b65722c206120766563746f72206f6620286964656e74696669657220747970652c206964656e7469666965722076616c7565294c44697669736962696c6974794368616e6765640c007c01284964656e7469747949640000a001185469636b6572000019010110626f6f6c000508844576656e7420666f72206368616e676520696e2064697669736962696c6974792e8063616c6c6572204449442c207469636b65722c2064697669736962696c697479405472616e73666572576974684461746118007c01284964656e7469747949640000a001185469636b657200007c01284964656e74697479496400007c01284964656e746974794964000018011c42616c616e6365000028011c5665633c75383e0006083501416e206164646974696f6e616c206576656e7420746f205472616e736665723b20656d6974746564207768656e20607472616e736665725f776974685f64617461602069732063616c6c65642ec863616c6c657220444944202c207469636b65722c2066726f6d204449442c20746f204449442c2076616c75652c20646174612849734973737561626c650800a001185469636b6572000019010110626f6f6c0007085069735f6973737561626c652829206f75747075749c7469636b65722c2072657475726e2076616c7565202874727565206966206973737561626c6529405469636b6572526567697374657265640c007c01284964656e7469747949640000a001185469636b65720000f401384f7074696f6e3c4d6f6d656e743e0008087c456d6974207768656e207469636b657220697320726567697374657265642eec63616c6c657220444944202f207469636b6572206f776e6572206469642c207469636b65722c207469636b6572206f776e65722c20657870697279445469636b65725472616e736665727265640c007c01284964656e7469747949640000a001185469636b657200007c01284964656e74697479496400090880456d6974207768656e207469636b6572206973207472616e736665727265642ed063616c6c657220444944202f207469636b6572207472616e7366657272656420746f204449442c207469636b65722c2066726f6d6441737365744f776e6572736869705472616e736665727265640c007c01284964656e7469747949640000a001185469636b657200007c01284964656e746974794964000a08a4456d6974207768656e20746f6b656e206f776e657273686970206973207472616e736665727265642ef463616c6c657220444944202f20746f6b656e206f776e657273686970207472616e7366657272656420746f204449442c207469636b65722c2066726f6d2c417373657446726f7a656e08007c01284964656e7469747949640000a001185469636b6572000b08a4416e206576656e7420656d6974746564207768656e20616e2061737365742069732066726f7a656e2e78506172616d657465723a2063616c6c6572204449442c207469636b65722e344173736574556e66726f7a656e08007c01284964656e7469747949640000a001185469636b6572000c08ac416e206576656e7420656d6974746564207768656e20616e20617373657420697320756e66726f7a656e2e78506172616d657465723a2063616c6c6572204449442c207469636b65722e30417373657452656e616d65640c007c01284964656e7469747949640000a001185469636b65720000fd01012441737365744e616d65000d08a4416e206576656e7420656d6974746564207768656e206120746f6b656e2069732072656e616d65642ebc506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720746f6b656e206e616d652e3c46756e64696e67526f756e645365740c007c01284964656e7469747949640000a001185469636b65720000e101014046756e64696e67526f756e644e616d65000e081101416e206576656e74206361727279696e6720746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e64206f662061207469636b65722ecc506172616d65746572733a2063616c6c6572204449442c207469636b65722c2066756e64696e6720726f756e64206e616d652e34446f63756d656e74416464656410007c01284964656e7469747949640000a001185469636b6572000001020128446f63756d656e744964000005020120446f63756d656e74000f048c41206e657720646f63756d656e7420617474616368656420746f20616e2061737365743c446f63756d656e7452656d6f7665640c007c01284964656e7469747949640000a001185469636b6572000001020128446f63756d656e744964001004804120646f63756d656e742072656d6f7665642066726f6d20616e20617373657440457874656e73696f6e52656d6f7665640c007c01284964656e7469747949640000a001185469636b657200000001244163636f756e744964001108604120657874656e73696f6e20676f742072656d6f7665642e7463616c6c6572204449442c207469636b65722c204163636f756e74496450436c61737369635469636b6572436c61696d65640c007c01284964656e7469747949640000a001185469636b657200003102013c457468657265756d4164647265737300120435014120506f6c796d61746820436c617373696320746f6b656e2077617320636c61696d656420616e64207472616e7366657272656420746f2061206e6f6e2d73797374656d61746963204449442e48436f6e74726f6c6c65725472616e7366657210007c01284964656e7469747949640000a001185469636b65720000d8012c506f7274666f6c696f4964000018011c42616c616e6365001308b44576656e7420666f72207768656e206120666f72636564207472616e736665722074616b657320706c6163652e150163616c6c6572204449442f20636f6e74726f6c6c6572204449442c207469636b65722c20506f7274666f6c696f206f6620746f6b656e20686f6c6465722c2076616c75652e54437573746f6d4173736574547970654578697374730c007c01284964656e7469747949640000e9010144437573746f6d4173736574547970654964000028011c5665633c75383e001408b04120637573746f6d206173736574207479706520616c726561647920657869737473206f6e2d636861696e2e310163616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e64437573746f6d417373657454797065526567697374657265640c007c01284964656e7469747949640000e9010144437573746f6d4173736574547970654964000028011c5665633c75383e001508b04120637573746f6d2061737365742074797065207761732072656769737465726564206f6e2d636861696e2e310163616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e5453657441737365744d6574616461746156616c756510007c01284964656e7469747949640000a001185469636b657200003502014841737365744d6574616461746156616c75650000390201a04f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c4d6f6d656e743e3e00160864536574206173736574206d657461646174612076616c75652ef02843616c6c6572204449442c207469636b65722c206d657461646174612076616c75652c206f7074696f6e616c2076616c75652064657461696c73297053657441737365744d6574616461746156616c756544657461696c730c007c01284964656e7469747949640000a001185469636b657200003d02018041737365744d6574616461746156616c756544657461696c3c4d6f6d656e743e001708dc536574206173736574206d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e8c2843616c6c6572204449442c207469636b65722c2076616c75652064657461696c732978526567697374657241737365744d657461646174614c6f63616c5479706514007c01284964656e7469747949640000a001185469636b657200004502014441737365744d657461646174614e616d6500004902015441737365744d657461646174614c6f63616c4b657900004d02014441737365744d65746164617461537065630018088c5265676973746572206173736574206d65746164617461206c6f63616c20747970652e05012843616c6c6572204449442c207469636b65722c204c6f63616c2074797065206e616d652c204c6f63616c2074797065206b65792c2074797065207370656373297c526567697374657241737365744d65746164617461476c6f62616c547970650c004502014441737365744d657461646174614e616d6500006502015841737365744d65746164617461476c6f62616c4b657900004d02014441737365744d6574616461746153706563001908905265676973746572206173736574206d6574616461746120676c6f62616c20747970652ebc28476c6f62616c2074797065206e616d652c20476c6f62616c2074797065206b65792c207479706520737065637329085c4576656e747320666f722074686973206d6f64756c652e00e1010c4c706f6c796d6573685f7072696d6974697665731461737365744046756e64696e67526f756e644e616d650000040028011c5665633c75383e0000e5010c4c706f6c796d6573685f7072696d6974697665731461737365742441737365745479706500012c30457175697479436f6d6d6f6e0000003c45717569747950726566657272656400010024436f6d6d6f646974790002002c4669786564496e636f6d6500030010524549540004001046756e6400050054526576656e7565536861726541677265656d656e74000600445374727563747572656450726f64756374000700284465726976617469766500080018437573746f6d0400e9010144437573746f6d417373657454797065496400090028537461626c65436f696e000a0000e9010c4c706f6c796d6573685f7072696d69746976657314617373657444437573746f6d41737365745479706549640000040010010c7533320000ed01000002f10100f1010c4c706f6c796d6573685f7072696d6974697665734061737365745f6964656e7469666965723c41737365744964656e7469666965720001101443555349500400f501011c5b75383b20395d0000001043494e530400f501011c5b75383b20395d000100104953494e0400a401205b75383b2031325d0002000c4c45490400f90101205b75383b2032305d00030000f501000003090000000800f901000003140000000800fd010c4c706f6c796d6573685f7072696d6974697665731461737365742441737365744e616d650000040028011c5665633c75383e000001020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7428446f63756d656e7449640000040010010c753332000005020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7420446f63756d656e74000014010c7572690902012c446f63756d656e74557269000130636f6e74656e745f686173680d020130446f63756d656e74486173680001106e616d6525020130446f63756d656e744e616d65000120646f635f74797065290201504f7074696f6e3c446f63756d656e74547970653e00012c66696c696e675f64617465f401384f7074696f6e3c4d6f6d656e743e000009020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e742c446f63756d656e745572690000040028011c5665633c75383e00000d020c4c706f6c796d6573685f7072696d69746976657334646f63756d656e745f6861736830446f63756d656e7448617368000124104e6f6e6500000010483531320400110201205b75383b2036345d00010010483338340400150201205b75383b2034385d00020010483332300400190201205b75383b2034305d000300104832353604000401205b75383b2033325d000400104832323404001d0201205b75383b2032385d00050010483139320400210201205b75383b2032345d00060010483136300400f90101205b75383b2032305d00070010483132380400990101205b75383b2031365d000800001102000003400000000800150200000330000000080019020000032800000008001d020000031c0000000800210200000318000000080025020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7430446f63756d656e744e616d650000040028011c5665633c75383e0000290204184f7074696f6e040454012d020108104e6f6e6500000010536f6d6504002d0200000100002d020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7430446f63756d656e74547970650000040028011c5665633c75383e000031020c4c706f6c796d6573685f7072696d69746976657320657468657265756d3c457468657265756d4164647265737300000400f90101205b75383b2032305d000035020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614841737365744d6574616461746156616c75650000040028011c5665633c75383e0000390204184f7074696f6e040454013d020108104e6f6e6500000010536f6d6504003d0200000100003d020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174616041737365744d6574616461746156616c756544657461696c04184d6f6d656e74012000080118657870697265f401384f7074696f6e3c4d6f6d656e743e00012c6c6f636b5f7374617475734102017c41737365744d657461646174614c6f636b5374617475733c4d6f6d656e743e000041020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615c41737365744d657461646174614c6f636b53746174757304184d6f6d656e740120010c20556e6c6f636b6564000000184c6f636b65640001002c4c6f636b6564556e74696c04002001184d6f6d656e740002000045020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614441737365744d657461646174614e616d650000040028011c5665633c75383e000049020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615441737365744d657461646174614c6f63616c4b65790000040020010c75363400004d020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614441737365744d657461646174615370656300000c010c75726c5102012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e590201804f7074696f6e3c41737365744d657461646174614465736372697074696f6e3e000120747970655f6465666102013c4f7074696f6e3c5665633c75383e3e0000510204184f7074696f6e0404540155020108104e6f6e6500000010536f6d650400550200000100005502084c706f6c796d6573685f7072696d6974697665730c55726c0000040028011c5665633c75383e0000590204184f7074696f6e040454015d020108104e6f6e6500000010536f6d6504005d0200000100005d020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174616041737365744d657461646174614465736372697074696f6e0000040028011c5665633c75383e0000610204184f7074696f6e04045401280108104e6f6e6500000010536f6d65040028000001000065020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615841737365744d65746164617461476c6f62616c4b65790000040020010c753634000069020c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e144576656e740001101c437265617465640c006d0201204576656e7444696400007102011043414964000079020130446973747269627574696f6e000010b841206361706974616c20646973747269627574696f6e2c20776974682064657461696c7320696e636c756465642c31017761732063726561746564206279207468652044494420287065726d697373696f6e6564206167656e742920666f7220746865204341206964656e746966696564206279206043414964602e00a8284167656e74204449442c20434127732049442c20646973747269627574696f6e2064657461696c73293842656e65666974436c61696d656418006d0201204576656e7444696400006d0201204576656e7444696400007102011043414964000079020130446973747269627574696f6e000018011c42616c616e636500007d02010c54617800010c51014120746f6b656e20686f6c64657227732062656e65666974206f662061206361706974616c20646973747269627574696f6e20666f722074686520676976656e206043414964602077617320636c61696d65642e0091012843616c6c6572204449442c20486f6c6465722f436c61696d616e74204449442c20434127732049442c207570646174656420646973747269627574696f6e2064657461696c732c2044494427732062656e656669742c20444944277320746178202529245265636c61696d65640c006d0201204576656e7444696400007102011043414964000018011c42616c616e636500020c9853746174732066726f6d2060707573685f62656e65666974602077617320656d69747465642e001501284167656e74204449442c20434127732049442c206d61782072657175657374656420444944732c2070726f63657373656420444944732c206661696c65642044494473291c52656d6f76656408006d0201204576656e744469640000710201104341496400030c8c41206361706974616c20646973747269627574696f6e207761732072656d6f7665642e0050284167656e74204449442c204341277320494429085c4576656e747320666f722074686973206d6f64756c652e006d020c4c706f6c796d6573685f7072696d697469766573286576656e745f6f6e6c79244576656e744f6e6c79040454017c0004007c01045400007102086070616c6c65745f636f72706f726174655f616374696f6e73104341496400000801187469636b6572a001185469636b65720001206c6f63616c5f6964750201244c6f63616c4341496400007502086070616c6c65745f636f72706f726174655f616374696f6e73244c6f63616c434149640000040010010c753332000079020c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e30446973747269627574696f6e000020011066726f6dd8012c506f7274666f6c696f496400012063757272656e6379a001185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e636500012472656d61696e696e6718011c42616c616e63650001247265636c61696d656419010110626f6f6c0001287061796d656e745f61742001184d6f6d656e74000128657870697265735f6174f401384f7074696f6e3c4d6f6d656e743e00007d020c3473705f61726974686d65746963287065725f7468696e67731c5065726d696c6c0000040010010c753332000081021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e74144576656e7400011044436865636b706f696e74437265617465641400850201404f7074696f6e3c4576656e744469643e0000a001185469636b6572000089020130436865636b706f696e744964000018011c42616c616e636500002001184d6f6d656e7400000c644120636865636b706f696e742077617320637265617465642e001d012863616c6c6572204449442c207469636b65722c20636865636b706f696e742049442c20746f74616c20737570706c792c20636865636b706f696e742074696d657374616d7029844d6178696d756d5363686564756c6573436f6d706c65786974794368616e67656408007c01284964656e746974794964000020010c75363400010c2901546865206d6178696d756d20636f6d706c657869747920666f7220616e20617262697472617279207469636b65722773207363686564756c652073657420776173206368616e6765642e0064284743204449442c20746865206e6577206d6178696d756d293c5363686564756c65437265617465640c006d0201204576656e744469640000a001185469636b657200008d02013853746f7265645363686564756c6500020c884120636865636b706f696e74207363686564756c652077617320637265617465642e00782863616c6c6572204449442c207469636b65722c207363686564756c65293c5363686564756c6552656d6f7665640c007c01284964656e7469747949640000a001185469636b657200008d02013853746f7265645363686564756c6500030c884120636865636b706f696e74207363686564756c65207761732072656d6f7665642e00782863616c6c6572204449442c207469636b65722c207363686564756c6529085c4576656e747320666f722074686973206d6f64756c652e00850204184f7074696f6e040454016d020108104e6f6e6500000010536f6d6504006d02000001000089020c4c706f6c796d6573685f7072696d6974697665732063616c656e64617230436865636b706f696e7449640000040020010c75363400008d021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e743853746f7265645363686564756c6500001001207363686564756c6591020148436865636b706f696e745363686564756c6500010869649d0201285363686564756c65496400010861742001184d6f6d656e7400012472656d61696e696e6710010c753332000091020c4c706f6c796d6573685f7072696d6974697665732063616c656e64617248436865636b706f696e745363686564756c65000008011473746172742001184d6f6d656e74000118706572696f649502013843616c656e646172506572696f64000095020c4c706f6c796d6573685f7072696d6974697665732063616c656e6461723843616c656e646172506572696f640000080110756e69749902013043616c656e646172556e6974000118616d6f756e7420010c753634000099020c4c706f6c796d6573685f7072696d6974697665732063616c656e6461723043616c656e646172556e697400011c185365636f6e64000000184d696e75746500010010486f75720002000c446179000300105765656b000400144d6f6e74680005001059656172000600009d021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e74285363686564756c6549640000040020010c7536340000a102086470616c6c65745f636f6d706c69616e63655f6d616e61676572144576656e7400012470436f6d706c69616e6365526571756972656d656e74437265617465640c007c01284964656e7469747949640000a001185469636b65720000a5020154436f6d706c69616e6365526571756972656d656e74000008cc456d6974746564207768656e206e657720636f6d706c69616e636520726571756972656d656e7420697320637265617465642eb02863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e70436f6d706c69616e6365526571756972656d656e7452656d6f7665640c007c01284964656e7469747949640000a001185469636b6572000010010c753332000108c4456d6974746564207768656e206120636f6d706c69616e636520726571756972656d656e742069732072656d6f7665642e942863616c6c6572204449442c205469636b65722c20726571756972656d656e745f6964292e5c4173736574436f6d706c69616e63655265706c616365640c007c01284964656e7469747949640000a001185469636b65720000d10201685665633c436f6d706c69616e6365526571756972656d656e743e000208b4456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206973207265706c616365642ed4506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720617373657420636f6d706c69616e63652e504173736574436f6d706c69616e6365526573657408007c01284964656e7469747949640000a001185469636b6572000308d8456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206f662061207469636b65722069732072657365742e542863616c6c6572204449442c205469636b6572292e584173736574436f6d706c69616e6365526573756d656408007c01284964656e7469747949640000a001185469636b65720004080101456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b6572206765747320726573756d652e542863616c6c6572204449442c205469636b6572292e544173736574436f6d706c69616e636550617573656408007c01284964656e7469747949640000a001185469636b65720005080101456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b65722067657473207061757365642e542863616c6c6572204449442c205469636b6572292e70436f6d706c69616e6365526571756972656d656e744368616e6765640c007c01284964656e7469747949640000a001185469636b65720000a5020154436f6d706c69616e6365526571756972656d656e74000608e0456d6974746564207768656e20636f6d706c69616e636520726571756972656d656e7420676574206d6f6469666965642f6368616e67652eb02863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e785472757374656444656661756c74436c61696d49737375657241646465640c007c01284964656e7469747949640000a001185469636b65720000c1020134547275737465644973737565720007081501456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b657220676574732061646465642ea82863616c6c6572204449442c205469636b65722c2041646465642054727573746564497373756572292e805472757374656444656661756c74436c61696d49737375657252656d6f7665640c007c01284964656e7469747949640000a001185469636b657200007c01284964656e7469747949640008081901456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b6572206765742072656d6f7665642eb02863616c6c6572204449442c205469636b65722c2052656d6f7665642054727573746564497373756572292e085c4576656e747320666f722074686973206d6f64756c652e00a5020c4c706f6c796d6573685f7072696d69746976657348636f6d706c69616e63655f6d616e6167657254436f6d706c69616e6365526571756972656d656e7400000c014473656e6465725f636f6e646974696f6e73a90201385665633c436f6e646974696f6e3e00014c72656365697665725f636f6e646974696f6e73a90201385665633c436f6e646974696f6e3e000108696410010c7533320000a902000002ad0200ad020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e24436f6e646974696f6e0000080138636f6e646974696f6e5f74797065b1020134436f6e646974696f6e5479706500011c69737375657273bd0201485665633c547275737465644973737565723e0000b1020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e34436f6e646974696f6e5479706500011424497350726573656e740400f80114436c61696d000000204973416273656e740400f80114436c61696d0001001c4973416e794f660400b50201285665633c436c61696d3e0002002049734e6f6e654f660400b50201285665633c436c61696d3e0003002849734964656e746974790400b90201385461726765744964656e7469747900040000b502000002f800b9020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e385461726765744964656e746974790001083445787465726e616c4167656e7400000020537065636966696304007c01284964656e74697479496400010000bd02000002c10200c1020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e345472757374656449737375657200000801186973737565727c01284964656e74697479496400012c747275737465645f666f72c502012854727573746564466f720000c5020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e2854727573746564466f720001080c416e790000002053706563696669630400c90201385665633c436c61696d547970653e00010000c902000002cd0200cd020c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d24436c61696d54797065000130284163637265646974656400000024416666696c69617465000100244275794c6f636b75700002002853656c6c4c6f636b757000030050437573746f6d657244756544696c6967656e6365000400404b6e6f77596f7572437573746f6d6572000500304a7572697364696374696f6e000600204578656d707465640007001c426c6f636b656400080048496e766573746f72556e697175656e657373000900184e6f54797065000a0050496e766573746f72556e697175656e6573735632000b0000d102000002a50200d502086070616c6c65745f636f72706f726174655f616374696f6e73144576656e740001245c4d617844657461696c734c656e6774684368616e67656408007c01284964656e746974794964000010010c753332000008d4546865206d6178696d756d206c656e677468206f66206064657461696c736020696e20627974657320776173206368616e6765642e50284743204449442c206e6577206c656e677468297844656661756c745461726765744964656e7469746965734368616e6765640c007c01284964656e7469747949640000a001185469636b65720000d90201405461726765744964656e746974696573000108ec54686520736574206f662064656661756c7420605461726765744964656e7469746965736020666f722061207469636b6572206368616e6765642ea4284167656e74204449442c205469636b65722c204e6577205461726765744964656e746974696573297044656661756c7457697468686f6c64696e675461784368616e6765640c007c01284964656e7469747949640000a001185469636b657200007d02010c546178000208c45468652064656661756c742077697468686f6c64696e672074617820666f722061207469636b6572206368616e6765642e74284167656e74204449442c205469636b65722c204e657720546178292e6044696457697468686f6c64696e675461784368616e67656410007c01284964656e7469747949640000a001185469636b657200007c01284964656e7469747949640000e102012c4f7074696f6e3c5461783e000308ec5468652077697468686f6c64696e672074617820737065636966696320746f20612044494420666f722061207469636b6572206368616e6765642ea0284167656e74204449442c205469636b65722c205461786564204449442c204e657720546178292e384341415472616e736665727265640c007c01284964656e7469747949640000a001185469636b657200007c01284964656e7469747949640004086c41206e65772044494420776173206d61646520746865204341412e8c284e657720434141204449442c205469636b65722c204e65772043414120444944292e2c4341496e6974696174656410006d0201204576656e74446964000071020110434149640000e502013c436f72706f72617465416374696f6e000001030124434144657461696c730005084c412043412077617320696e697469617465642ea8284167656e74204449442c2043412069642c207468652043412c207468652043412064657461696c73293443414c696e6b6564546f446f630c007c01284964656e7469747949640000710201104341496400000503013c5665633c446f63756d656e7449643e000608844120434120776173206c696e6b656420746f206120736574206f6620646f63732eac284167656e74204449442c2043412049642c204c697374206f6620646f63206964656e746966696572732924434152656d6f76656408006d0201204576656e74446964000071020110434149640007084441204341207761732072656d6f7665642e48284167656e74204449442c20434120496429445265636f7264446174654368616e6765640c006d0201204576656e74446964000071020110434149640000e502013c436f72706f72617465416374696f6e0008046c412043412773207265636f72642064617465206368616e6765642e085c4576656e747320666f722074686973206d6f64756c652e00d902086070616c6c65745f636f72706f726174655f616374696f6e73405461726765744964656e74697469657300000801286964656e7469746965732501013c5665633c4964656e7469747949643e00012474726561746d656e74dd02013c54617267657454726561746d656e740000dd02086070616c6c65745f636f72706f726174655f616374696f6e733c54617267657454726561746d656e740001081c496e636c7564650000001c4578636c75646500010000e10204184f7074696f6e040454017d020108104e6f6e6500000010536f6d6504007d020000010000e502086070616c6c65745f636f72706f726174655f616374696f6e733c436f72706f72617465416374696f6e00001801106b696e64e902011843414b696e640001246465636c5f646174652001184d6f6d656e7400012c7265636f72645f64617465ed0201484f7074696f6e3c5265636f7264446174653e00011c74617267657473d90201405461726765744964656e74697469657300015c64656661756c745f77697468686f6c64696e675f7461787d02010c54617800013c77697468686f6c64696e675f746178f90201585665633c284964656e7469747949642c20546178293e0000e902086070616c6c65745f636f72706f726174655f616374696f6e731843414b696e64000114485072656469637461626c6542656e6566697400000050556e7072656469637461626c6542656e65666974000100304973737565724e6f746963650002003852656f7267616e697a6174696f6e000300144f7468657200040000ed0204184f7074696f6e04045401f1020108104e6f6e6500000010536f6d650400f1020000010000f102086070616c6c65745f636f72706f726174655f616374696f6e73285265636f7264446174650000080110646174652001184d6f6d656e74000128636865636b706f696e74f50201304341436865636b706f696e740000f502086070616c6c65745f636f72706f726174655f616374696f6e73304341436865636b706f696e74000108245363686564756c656408009d0201285363686564756c654964000020010c753634000000204578697374696e67040089020130436865636b706f696e74496400010000f902000002fd0200fd02000004087c7d02000103086070616c6c65745f636f72706f726174655f616374696f6e7324434144657461696c730000040028011c5665633c75383e0000050300000201020009030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74144576656e740001181c4372656174656414007c01284964656e7469747949640000710201104341496400000d03013c42616c6c6f7454696d6552616e676500001103012842616c6c6f744d657461000019010110626f6f6c00000c7c4120636f72706f726174652062616c6c6f742077617320637265617465642e001501284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e642c2042616c6c6f74206d657461646174612c2052435620656e61626c65643f2920566f7465436173740c007c01284964656e7469747949640000710201104341496400003103013c5665633c42616c6c6f74566f74653e00010c984120766f746520776173206361737420696e206120636f72706f726174652062616c6c6f742e006028766f746572204449442c20434149642c20566f746573293052616e67654368616e6765640c007c01284964656e7469747949640000710201104341496400000d03013c42616c6c6f7454696d6552616e676500020cd04120636f72706f726174652062616c6c6f74206368616e676564206974732073746172742f656e6420646174652072616e67652e0098284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e64292c4d6574614368616e6765640c007c01284964656e7469747949640000710201104341496400001103012842616c6c6f744d65746100030ca04120636f72706f726174652062616c6c6f74206368616e67656420697473206d657461646174612e0088284167656e74204449442c20434127732049442c204e6577206d6574616461746129285243564368616e6765640c007c01284964656e74697479496400007102011043414964000019010110626f6f6c00040cac4120636f72706f726174652062616c6c6f74206368616e676564206974732052435620737570706f72742e0084284167656e74204449442c20434127732049442c204e657720737570706f7274291c52656d6f76656408006d0201204576656e744469640000710201104341496400050c7c4120636f72706f726174652062616c6c6f74207761732072656d6f7665642e0050284167656e74204449442c204341277320494429085c4576656e747320666f722074686973206d6f64756c652e000d030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f743c42616c6c6f7454696d6552616e6765000008011473746172742001184d6f6d656e7400010c656e642001184d6f6d656e74000011030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742842616c6c6f744d65746100000801147469746c651503012c42616c6c6f745469746c6500011c6d6f74696f6e731903012c5665633c4d6f74696f6e3e000015030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c42616c6c6f745469746c650000040028011c5665633c75383e000019030000021d03001d030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74184d6f74696f6e00000c01147469746c652103012c4d6f74696f6e5469746c65000124696e666f5f6c696e6b250301384d6f74696f6e496e666f4c696e6b00011c63686f69636573290301405665633c43686f6963655469746c653e000021030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c4d6f74696f6e5469746c650000040028011c5665633c75383e000025030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74384d6f74696f6e496e666f4c696e6b0000040028011c5665633c75383e000029030000022d03002d030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c43686f6963655469746c650000040028011c5665633c75383e0000310300000235030035030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742842616c6c6f74566f74650000080114706f77657218011c42616c616e636500012066616c6c6261636b3903012c4f7074696f6e3c7531363e0000390304184f7074696f6e040454013d030108104e6f6e6500000010536f6d6504003d0300000100003d0300000504004103082c70616c6c65745f70697073205261774576656e7408244163636f756e74496401002c426c6f636b4e756d6265720110015050486973746f726963616c506970735072756e65640c007c01284964656e746974794964000019010110626f6f6c000019010110626f6f6c00000445015072756e696e6720486973746f726963616c205049507320697320656e61626c6564206f722064697361626c6564202863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293c50726f706f73616c4372656174656420007c01284964656e74697479496400004503014c50726f706f7365723c4163636f756e7449643e00004d0301145069704964000018011c42616c616e636500005102012c4f7074696f6e3c55726c3e0000510301584f7074696f6e3c5069704465736372697074696f6e3e00003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00005903013050726f706f73616c4461746100011498412050495020776173206d61646520776974682061206042616c616e636560207374616b652e00342320506172616d65746572733a00510143616c6c6572204449442c2050726f706f7365722c205049502049442c206465706f7369742c2055524c2c206465736372697074696f6e2c206578706972792074696d652c2070726f706f73616c20646174612e5050726f706f73616c5374617465557064617465640c007c01284964656e74697479496400004d030114506970496400005d03013450726f706f73616c5374617465000204d854726967676572656420656163682074696d6520746865207374617465206f6620612070726f706f73616c20697320616d656e64656414566f74656414007c01284964656e74697479496400000001244163636f756e74496400004d0301145069704964000019010110626f6f6c000018011c42616c616e6365000304f8604163636f756e7449646020766f7465642060626f6f6c60206f6e207468652070726f706f73616c207265666572656e636564206279206050697049646024506970436c6f7365640c007c01284964656e74697479496400004d0301145069704964000019010110626f6f6c000404e850697020686173206265656e20636c6f7365642c20626f6f6c20696e6469636174657320776865746865722064617461206973207072756e656448457865637574696f6e5363686564756c65640c007c01284964656e74697479496400004d0301145069704964000010012c426c6f636b4e756d626572000504e0457865637574696f6e206f6620612050495020686173206265656e207363686564756c656420617420737065636966696320626c6f636b2e7444656661756c74456e6163746d656e74506572696f644368616e6765640c007c01284964656e746974794964000010012c426c6f636b4e756d626572000010012c426c6f636b4e756d626572000608d844656661756c7420656e6163746d656e7420706572696f642028696e20626c6f636b732920686173206265656e206368616e6765642e902863616c6c6572204449442c206f6c6420706572696f642c206e657720706572696f6429744d696e696d756d50726f706f73616c4465706f7369744368616e6765640c007c01284964656e746974794964000018011c42616c616e6365000018011c42616c616e63650007087c4d696e696d756d206465706f73697420616d6f756e74206d6f646966696564902863616c6c6572204449442c206f6c6420616d6f756e742c206e657720616d6f756e74295c50656e64696e675069704578706972794368616e6765640c007c01284964656e74697479496400003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e000808cc416d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020657870697265732e902863616c6c6572204449442c206f6c64206578706972792c206e65772065787069727929584d6178506970536b6970436f756e744368616e6765640c007c01284964656e7469747949640000080130536b6970706564436f756e740000080130536b6970706564436f756e74000908cc546865206d6178696d756d2074696d65732061205049502063616e20626520736b697070656420776173206368616e6765642e882863616c6c6572204449442c206f6c642076616c75652c206e65772076616c756529544163746976655069704c696d69744368616e6765640c007c01284964656e746974794964000010010c753332000010010c753332000a08b8546865206d6178696d756d206e756d626572206f6620616374697665205049507320776173206368616e6765642e882863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293850726f706f73616c526566756e640c007c01284964656e74697479496400004d0301145069704964000018011c42616c616e6365000b083c526566756e642070726f706f73616c482869642c20746f74616c20616d6f756e74293c536e617073686f74436c656172656408007c01284964656e746974794964000061030128536e617073686f744964000c046454686520736e617073686f742077617320636c65617265642e34536e617073686f7454616b656e0c007c01284964656e746974794964000061030128536e617073686f74496400006503014c5665633c536e617073686f747465645069703e000d046441206e657720736e617073686f74207761732074616b656e2e28506970536b69707065640c007c01284964656e74697479496400004d03011450697049640000080130536b6970706564436f756e74000e08a0412050495020696e2074686520736e617073686f742071756575652077617320736b69707065642e802867635f6469642c207069705f69642c206e65775f736b69705f636f756e742958536e617073686f74526573756c7473456e616374656414007c01284964656e7469747949640000710301484f7074696f6e3c536e617073686f7449643e0000750301685665633c2850697049642c20536b6970706564436f756e74293e00007d0301285665633c50697049643e00007d0301285665633c50697049643e000f083101526573756c74732028652e672e2c20617070726f7665642c2072656a65637465642c20616e6420736b6970706564292c207765726520656e616374656420666f7220736f6d6520504950732e51012867635f6469642c20736e617073686f745f69645f6f70742c20736b69707065645f706970735f776974685f6e65775f636f756e742c2072656a65637465645f706970732c20617070726f7665645f706970732964457865637574696f6e5363686564756c696e674661696c65640c007c01284964656e74697479496400004d0301145069704964000010012c426c6f636b4e756d6265720010040d015363686564756c696e67206f66207468652050495020666f7220657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e3c4578706972795363686564756c65640c007c01284964656e74697479496400004d0301145069704964000010012c426c6f636b4e756d626572001104985468652050495020686173206265656e207363686564756c656420666f72206578706972792e584578706972795363686564756c696e674661696c65640c007c01284964656e74697479496400004d0301145069704964000010012c426c6f636b4e756d62657200120401015363686564756c696e67206f66207468652050495020666f7220657870697279206661696c656420696e20746865207363686564756c65722070616c6c65742e64457865637574696f6e43616e63656c6c696e674661696c656404004d0301145069704964001304f043616e63656c6c696e67207468652050495020657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e085c4576656e747320666f722074686973206d6f64756c652e004503082c70616c6c65745f706970732050726f706f73657204244163636f756e7449640100010824436f6d6d756e69747904000001244163636f756e74496400000024436f6d6d6974746565040049030124436f6d6d6974746565000100004903082c70616c6c65745f7069707324436f6d6d697474656500010824546563686e6963616c0000001c55706772616465000100004d03082c70616c6c65745f706970731450697049640000040010010c7533320000510304184f7074696f6e0404540155030108104e6f6e6500000010536f6d650400550300000100005503082c70616c6c65745f70697073385069704465736372697074696f6e0000040028011c5665633c75383e00005903082c70616c6c65745f706970733050726f706f73616c4461746100010810486173680400240110483235360000002050726f706f73616c040028011c5665633c75383e000100005d03082c70616c6c65745f706970733450726f706f73616c53746174650001181c50656e64696e670000002052656a6563746564000100245363686564756c6564000200184661696c65640003002045786563757465640004001c45787069726564000500006103082c70616c6c65745f7069707328536e617073686f7449640000040010010c753332000065030000026903006903082c70616c6c65745f7069707338536e617073686f74746564506970000008010869644d03011450697049640001187765696768746d03013c28626f6f6c2c2042616c616e63652900006d030000040819011800710304184f7074696f6e0404540161030108104e6f6e6500000010536f6d6504006103000001000075030000027903007903000004084d0308007d030000024d030081031064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747324706f7274666f6c696f144576656e7400011840506f7274666f6c696f437265617465640c007c01284964656e7469747949640000e0013c506f7274666f6c696f4e756d626572000085030134506f7274666f6c696f4e616d65000018b054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c7920637265617465642e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572402a20706f7274666f6c696f206e616d6540506f7274666f6c696f44656c6574656408007c01284964656e7469747949640000e0013c506f7274666f6c696f4e756d626572000114b054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c792072656d6f7665642e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572584d6f7665644265747765656e506f7274666f6c696f7318007c01284964656e7469747949640000d8012c506f7274666f6c696f49640000d8012c506f7274666f6c696f49640000a001185469636b6572000018011c42616c616e636500008001304f7074696f6e3c4d656d6f3e000220f04120746f6b656e20616d6f756e7420686173206265656e206d6f7665642066726f6d206f6e6520706f7274666f6c696f20746f20616e6f746865722e00302320506172616d6574657273302a206f726967696e20444944482a20736f7572636520706f7274666f6c696f5c2a2064657374696e6174696f6e20706f7274666f6c696f382a206173736574207469636b6572782a2061737365742062616c616e6365207468617420776173206d6f76656440506f7274666f6c696f52656e616d65640c007c01284964656e7469747949640000e0013c506f7274666f6c696f4e756d626572000085030134506f7274666f6c696f4e616d65000318fc54686520706f7274666f6c696f206964656e746966696564207769746820606e756d6020686173206265656e2072656e616d656420746f20606e616d65602e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572402a20706f7274666f6c696f206e616d653855736572506f7274666f6c696f7308007c01284964656e7469747949640000890301945665633c28506f7274666f6c696f4e756d6265722c20506f7274666f6c696f4e616d65293e000414d4416c6c206e6f6e2d64656661756c7420706f7274666f6c696f206e756d6265727320616e64206e616d6573206f662061204449442e00302320506172616d6574657273302a206f726967696e20444944742a20766563746f72206f66206e756d6265722d6e616d6520706169727364506f7274666f6c696f437573746f6469616e4368616e6765640c007c01284964656e7469747949640000d8012c506f7274666f6c696f496400007c01284964656e746974794964000518f4437573746f6479206f66206120706f7274666f6c696f20686173206265656e20676976656e20746f206120646966666572656e74206964656e7469747900302320506172616d6574657273302a206f726967696e20444944382a20706f7274666f6c696f206964642a20706f7274666f6c696f20637573746f6469616e20646964085c4576656e747320666f722074686973206d6f64756c652e0085030c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f696434506f7274666f6c696f4e616d650000040028011c5665633c75383e000089030000028d03008d0300000408e08503009103084c70616c6c65745f70726f746f636f6c5f666565205261774576656e7404244163636f756e7449640100010c1846656553657408007c01284964656e746974794964000018011c42616c616e6365000004845468652070726f746f636f6c20666565206f6620616e206f7065726174696f6e2e38436f656666696369656e7453657408007c01284964656e746974794964000095030120506f73526174696f000104505468652066656520636f656666696369656e742e284665654368617267656408000001244163636f756e744964000018011c42616c616e63650002043046656520636861726765642e085c4576656e747320666f722074686973206d6f64756c652e009503084c706f6c796d6573685f7072696d69746976657320506f73526174696f0000080010010c753332000010010c753332000099030c4070616c6c65745f7363686564756c65721870616c6c6574144576656e7404045400010c245363686564756c65640800100138543a3a426c6f636b4e756d626572000010010c753332000004905363686564756c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d2043616e63656c65640800100138543a3a426c6f636b4e756d626572000010010c7533320001048c43616e63656c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d28446973706174636865640c009d03016c5461736b416464726573733c543a3a426c6f636b4e756d6265723e00006102013c4f7074696f6e3c5665633c75383e3e0000310101384469737061746368526573756c74000204a84469737061746368656420736f6d65207461736b2e205c5b7461736b2c2069642c20726573756c745c5d04304576656e747320747970652e9d0300000408101000a103084470616c6c65745f736574746c656d656e74205261774576656e740c184d6f6d656e7401202c426c6f636b4e756d6265720110244163636f756e7449640100014c3056656e75654372656174656410007c01284964656e7469747949640000a503011c56656e756549640000a903013056656e756544657461696c730000ad03012456656e756554797065000004ec41206e65772076656e756520686173206265656e206372656174656420286469642c2076656e75655f69642c2064657461696c732c2074797065294c56656e756544657461696c73557064617465640c007c01284964656e7469747949640000a503011c56656e756549640000a903013056656e756544657461696c730001041501416e206578697374696e672076656e756527732064657461696c7320686173206265656e207570646174656420286469642c2076656e75655f69642c2064657461696c73294056656e756554797065557064617465640c007c01284964656e7469747949640000a503011c56656e756549640000ad03012456656e756554797065000204fc416e206578697374696e672076656e75652773207479706520686173206265656e207570646174656420286469642c2076656e75655f69642c20747970652948496e737472756374696f6e437265617465641c007c01284964656e7469747949640000a503011c56656e756549640000b1030134496e737472756374696f6e49640000b503016c536574746c656d656e74547970653c426c6f636b4e756d6265723e0000f401384f7074696f6e3c4d6f6d656e743e0000f401384f7074696f6e3c4d6f6d656e743e0000b90301205665633c4c65673e0003088841206e657720696e737472756374696f6e20686173206265656e20637265617465643901286469642c2076656e75655f69642c20696e737472756374696f6e5f69642c20736574746c656d656e745f747970652c2074726164655f646174652c2076616c75655f646174652c206c656773294c496e737472756374696f6e41666669726d65640c007c01284964656e7469747949640000d8012c506f7274666f6c696f49640000b1030134496e737472756374696f6e49640004040501416e20696e737472756374696f6e20686173206265656e2061666669726d656420286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964295041666669726d6174696f6e57697468647261776e0c007c01284964656e7469747949640000d8012c506f7274666f6c696f49640000b1030134496e737472756374696f6e49640005040901416e2061666669726d6174696f6e20686173206265656e2077697468647261776e20286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964294c496e737472756374696f6e52656a656374656408007c01284964656e7469747949640000b1030134496e737472756374696f6e4964000604d8416e20696e737472756374696f6e20686173206265656e2072656a656374656420286469642c20696e737472756374696f6e5f6964293852656365697074436c61696d656418007c01284964656e7469747949640000b1030134496e737472756374696f6e49640000c10301144c65674964000020010c75363400000001244163636f756e7449640000c503013c526563656970744d657461646174610007047d0141207265636569707420686173206265656e20636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e65722c2072656365697074206d6574616461746129585265636569707456616c69646974794368616e67656410007c01284964656e74697479496400000001244163636f756e744964000020010c753634000019010110626f6f6c0008040d0141207265636569707420686173206265656e20696e76616c69646174656420286469642c207369676e65722c20726563656970745f7569642c2076616c6964697479294052656365697074556e636c61696d656414007c01284964656e7469747949640000b1030134496e737472756374696f6e49640000c10301144c65674964000020010c75363400000001244163636f756e7449640009043d0141207265636569707420686173206265656e20756e636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e6572293856656e756546696c746572696e670c007c01284964656e7469747949640000a001185469636b6572000019010110626f6f6c000a04690156656e75652066696c746572696e6720686173206265656e20656e61626c6564206f722064697361626c656420666f722061207469636b657220286469642c207469636b65722c2066696c746572696e675f656e61626c6564293456656e756573416c6c6f7765640c007c01284964656e7469747949640000a001185469636b65720000c90301305665633c56656e756549643e000b04dc56656e75657320616464656420746f20616c6c6f77206c69737420286469642c207469636b65722c207665633c76656e75655f69643e293456656e756573426c6f636b65640c007c01284964656e7469747949640000a001185469636b65720000c90301305665633c56656e756549643e000c04dc56656e75657320616464656420746f20626c6f636b206c69737420286469642c207469636b65722c207665633c76656e75655f69643e29484c65674661696c6564457865637574696f6e0c007c01284964656e7469747949640000b1030134496e737472756374696f6e49640000c10301144c65674964000d04dc457865637574696f6e206f662061206c6567206661696c656420286469642c20696e737472756374696f6e5f69642c206c65675f69642944496e737472756374696f6e4661696c656408007c01284964656e7469747949640000b1030134496e737472756374696f6e4964000e04c8496e737472756374696f6e206661696c656420657865637574696f6e20286469642c20696e737472756374696f6e5f6964294c496e737472756374696f6e457865637574656408007c01284964656e7469747949640000b1030134496e737472756374696f6e4964000f04d8496e737472756374696f6e206578656375746564207375636365737366756c6c79286469642c20696e737472756374696f6e5f6964294456656e7565556e617574686f72697a65640c007c01284964656e7469747949640000a001185469636b65720000a503011c56656e75654964001004010156656e7565206e6f742070617274206f662074686520746f6b656e277320616c6c6f77206c69737420286469642c205469636b65722c2076656e75655f696429405363686564756c696e674661696c6564040064013444697370617463684572726f72001104805363686564756c696e67206f6620696e737472756374696f6e206661696c732e58496e737472756374696f6e52657363686564756c656408007c01284964656e7469747949640000b1030134496e737472756374696f6e49640012086c496e737472756374696f6e2069732072657363686564756c65642e702863616c6c6572204449442c20696e737472756374696f6e5f696429085c4576656e747320666f722074686973206d6f64756c652e00a503084470616c6c65745f736574746c656d656e741c56656e756549640000040020010c7536340000a903084470616c6c65745f736574746c656d656e743056656e756544657461696c730000040028011c5665633c75383e0000ad03084470616c6c65745f736574746c656d656e742456656e756554797065000110144f7468657200000030446973747269627574696f6e0001000c53746f0002002045786368616e676500030000b103084470616c6c65745f736574746c656d656e7434496e737472756374696f6e49640000040020010c7536340000b503084470616c6c65745f736574746c656d656e7438536574746c656d656e7454797065042c426c6f636b4e756d626572011001084c536574746c654f6e41666669726d6174696f6e00000034536574746c654f6e426c6f636b040010012c426c6f636b4e756d62657200010000b903000002bd0300bd03084470616c6c65745f736574746c656d656e740c4c6567000010011066726f6dd8012c506f7274666f6c696f4964000108746fd8012c506f7274666f6c696f49640001146173736574a001185469636b6572000118616d6f756e7418011c42616c616e63650000c103084470616c6c65745f736574746c656d656e74144c656749640000040020010c7536340000c503084470616c6c65745f736574746c656d656e743c526563656970744d657461646174610000040028011c5665633c75383e0000c903000002a50300cd031064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732873746174697374696373144576656e740001183853746174547970657341646465640c007c01284964656e7469747949640000d1030128417373657453636f70650000d50301345665633c53746174547970653e00000c685374617420747970657320616464656420746f2061737365742e007c2843616c6c6572204449442c2041737365742c2053746174207479706573294053746174547970657352656d6f7665640c007c01284964656e7469747949640000d1030128417373657453636f70650000d50301345665633c53746174547970653e00010c78537461742074797065732072656d6f7665642066726f6d2061737365742e007c2843616c6c6572204449442c2041737365742c20537461742074797065732944417373657453746174735570646174656410007c01284964656e7469747949640000d1030128417373657453636f70650000d903012053746174547970650000e903013c5665633c537461745570646174653e00020c50417373657420737461747320757064617465642e009c2843616c6c6572204449442c2041737365742c205374617420747970652c2055706461746573296853657441737365745472616e73666572436f6d706c69616e63650c007c01284964656e7469747949640000d1030128417373657453636f70650000010401585665633c5472616e73666572436f6e646974696f6e3e00030ca0536574205472616e7366657220636f6d706c69616e63652072756c657320666f722061737365742e00a02843616c6c6572204449442c2041737365742c205472616e7366657220636f6e646974696f6e7329805472616e73666572436f6e646974696f6e4578656d7074696f6e7341646465640c007c01284964656e74697479496400000d0401685472616e73666572436f6e646974696f6e4578656d70744b65790000250101305665633c53636f706549643e00040c0901416464206053636f706549646073206578656d707420666f72207472616e7366657220636f6e646974696f6e73206d61746368696e67206578656d7074206b65792e00882843616c6c6572204449442c204578656d7074206b65792c20456e74697469657329885472616e73666572436f6e646974696f6e4578656d7074696f6e7352656d6f7665640c007c01284964656e74697479496400000d0401685472616e73666572436f6e646974696f6e4578656d70744b65790000250101305665633c53636f706549643e00050c150152656d6f7665206053636f706549646073206578656d707420666f72207472616e7366657220636f6e646974696f6e73206d61746368696e67206578656d7074206b65792e00882843616c6c6572204449442c204578656d7074206b65792c20456e74697469657329085c4576656e747320666f722074686973206d6f64756c652e00d1030c4c706f6c796d6573685f7072696d697469766573287374617469737469637328417373657453636f7065000104185469636b65720400a001185469636b657200000000d503000002d90300d9030c4c706f6c796d6573685f7072696d697469766573287374617469737469637320537461745479706500000801086f70dd030128537461744f7054797065000130636c61696d5f697373756572e103017c4f7074696f6e3c28436c61696d547970652c204964656e746974794964293e0000dd030c4c706f6c796d6573685f7072696d697469766573287374617469737469637328537461744f705479706500010814436f756e740000001c42616c616e636500010000e10304184f7074696f6e04045401e5030108104e6f6e6500000010536f6d650400e5030000010000e50300000408cd027c00e903000002ed0300ed030c4c706f6c796d6573685f7072696d6974697665732873746174697374696373285374617455706461746500000801106b657932f103012853746174326e644b657900011476616c7565fd0301304f7074696f6e3c753132383e0000f1030c4c706f6c796d6573685f7072696d69746976657328737461746973746963732853746174326e644b65790001082c4e6f436c61696d5374617400000014436c61696d0400f503012453746174436c61696d00010000f5030c4c706f6c796d6573685f7072696d69746976657328737461746973746963732453746174436c61696d00010c2841636372656469746564040019010110626f6f6c00000024416666696c69617465040019010110626f6f6c000100304a7572697364696374696f6e0400f903014c4f7074696f6e3c436f756e747279436f64653e00020000f90304184f7074696f6e0404540105010108104e6f6e6500000010536f6d65040005010000010000fd0304184f7074696f6e04045401180108104e6f6e6500000010536f6d650400180000010000010400000205040005040c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e6365445472616e73666572436f6e646974696f6e000110404d6178496e766573746f72436f756e74040020010c753634000000504d6178496e766573746f724f776e65727368697004000904012850657263656e7461676500010028436c61696d436f756e741000f503012453746174436c61696d00007c01284964656e746974794964000020010c7536340000f4012c4f7074696f6e3c7536343e00020038436c61696d4f776e6572736869701000f503012453746174436c61696d00007c01284964656e74697479496400000904012850657263656e7461676500000904012850657263656e746167650003000009040c4c706f6c796d6573685f7072696d69746976657328737461746973746963733c4861736861626c655065726d696c6c000004007d02015873705f61726974686d657469633a3a5065726d696c6c00000d040c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e6365685472616e73666572436f6e646974696f6e4578656d70744b657900000c01146173736574d1030128417373657453636f70650001086f70dd030128537461744f7054797065000128636c61696d5f74797065110401444f7074696f6e3c436c61696d547970653e0000110404184f7074696f6e04045401cd020108104e6f6e6500000010536f6d650400cd0200000100001504082870616c6c65745f73746f205261774576656e7404184d6f6d656e74012001184446756e647261697365724372656174656410007c01284964656e74697479496400001904013046756e64726169736572496400001d04013846756e647261697365724e616d6500002104014846756e647261697365723c4d6f6d656e743e0000088841206e65772066756e6472616973657220686173206265656e20637265617465642efc284167656e74204449442c2066756e647261697365722069642c2066756e64726169736572206e616d652c2066756e647261697365722064657461696c732920496e76657374656418007c01284964656e74697479496400001904013046756e6472616973657249640000a001185469636b65720000a001185469636b6572000018011c42616c616e6365000018011c42616c616e63650001089c416e20696e766573746f7220696e76657374656420696e207468652066756e647261697365722e850128496e766573746f722c2066756e647261697365725f69642c206f66666572696e6720746f6b656e2c20726169736520746f6b656e2c206f66666572696e675f746f6b656e5f616d6f756e742c2072616973655f746f6b656e5f616d6f756e74294046756e6472616973657246726f7a656e08007c01284964656e74697479496400001904013046756e64726169736572496400020874412066756e6472616973657220686173206265656e2066726f7a656e2e68284167656e74204449442c2066756e64726169736572206964294846756e64726169736572556e66726f7a656e08007c01284964656e74697479496400001904013046756e6472616973657249640003087c412066756e6472616973657220686173206265656e20756e66726f7a656e2e68284167656e74204449442c2066756e64726169736572206964296046756e6472616973657257696e646f774d6f64696669656418006d0201204576656e7444696400001904013046756e64726169736572496400002001184d6f6d656e740000f401384f7074696f6e3c4d6f6d656e743e00002001184d6f6d656e740000f401384f7074696f6e3c4d6f6d656e743e00040898412066756e647261697365722077696e646f7720686173206265656e206d6f6469666965642e0901284167656e74204449442c2066756e647261697365722069642c206f6c645f73746172742c206f6c645f656e642c206e65775f73746172742c206e65775f656e64294046756e64726169736572436c6f73656408007c01284964656e74697479496400001904013046756e64726169736572496400050878412066756e6472616973657220686173206265656e2073746f707065642e68284167656e74204449442c2066756e6472616973657220696429085c4576656e747320666f722074686973206d6f64756c652e001904082870616c6c65745f73746f3046756e6472616973657249640000040020010c75363400001d04082870616c6c65745f73746f3846756e647261697365724e616d650000040028011c5665633c75383e00002104082870616c6c65745f73746f2846756e6472616973657204184d6f6d656e740120002c011c63726561746f727c01284964656e7469747949640001486f66666572696e675f706f7274666f6c696fd8012c506f7274666f6c696f49640001386f66666572696e675f6173736574a001185469636b657200014472616973696e675f706f7274666f6c696fd8012c506f7274666f6c696f496400013472616973696e675f6173736574a001185469636b657200011474696572732504014c5665633c46756e64726169736572546965723e00012076656e75655f6964a503011c56656e7565496400011473746172742001184d6f6d656e7400010c656e64f401384f7074696f6e3c4d6f6d656e743e0001187374617475732d04014046756e647261697365725374617475730001486d696e696d756d5f696e766573746d656e7418011c42616c616e6365000025040000022904002904082870616c6c65745f73746f3846756e647261697365725469657200000c0114746f74616c18011c42616c616e6365000114707269636518011c42616c616e636500012472656d61696e696e6718011c42616c616e636500002d04082870616c6c65745f73746f4046756e64726169736572537461747573000110104c6976650000001846726f7a656e00010018436c6f7365640002002c436c6f7365644561726c79000300003104083c70616c6c65745f7472656173757279205261774576656e74041c42616c616e63650118010850547265617375727944697362757273656d656e740c007c01284964656e74697479496400007c01284964656e746974794964000018011c42616c616e63650000088844697362757273656d656e7420746f206120746172676574204964656e746974792e6428746172676574206964656e746974792c20616d6f756e74295454726561737572795265696d62757273656d656e7408007c01284964656e746974794964000018011c42616c616e63650001045c5472656173757279207265696d62757273656d656e742e085c4576656e747320666f722074686973206d6f64756c652e003504083870616c6c65745f7574696c697479144576656e7400010c404261746368496e74657272757074656408003904012c4576656e74436f756e747300003d04011c4572726f72417400000cac4261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792edc496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f72206561636820646973706174636820616e64f474686520696e646578206f6620746865206669727374206661696c696e672064697370617463682061732077656c6c20617320746865206572726f722e5442617463684f7074696d69737469634661696c656408003904012c4576656e74436f756e74730000410401305665633c4572726f7241743e00010cac4261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792ecc496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c20616e6429016120766563746f72206f6620616e79206661696c65642064697370617463686573207769746820746865697220696e646963657320616e64206173736f636961746564206572726f722e384261746368436f6d706c6574656404003904012c4576656e74436f756e7473000208c84261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722ed0496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682064697370617463682e0c5c4576656e747320666f722074686973206d6f64756c652e00304576656e747320747970652e390400000210003d040000040810640041040000023d040045041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731062617365144576656e740001043c556e65787065637465644572726f720400490401544f7074696f6e3c44697370617463684572726f723e000004e4416e20756e6578706563746564206572726f722068617070656e656420746861742073686f756c6420626520696e766573746967617465642e085c4576656e747320666f722074686973206d6f64756c652e00490404184f7074696f6e04045401640108104e6f6e6500000010536f6d6504006400000100004d041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974733c65787465726e616c5f6167656e7473144576656e740001143047726f75704372656174656410006d0201204576656e744469640000a001185469636b6572000015010110414749640000b0015045787472696e7369635065726d697373696f6e7300000c6c416e204167656e742047726f75702077617320637265617465642e00d02843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773207065726d697373696f6e73295c47726f75705065726d697373696f6e735570646174656410006d0201204576656e744469640000a001185469636b6572000015010110414749640000b0015045787472696e7369635065726d697373696f6e7300010ca4416e204167656e742047726f75702773207065726d697373696f6e732077617320757064617465642e00e02843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773206e6577207065726d697373696f6e7329284167656e7441646465640c006d0201204576656e744469640000a001185469636b65720000110101284167656e7447726f757000020c4c416e206167656e74207761732061646465642e00c42843616c6c65722f4167656e74204449442c204167656e742773207469636b65722c204167656e7427732067726f757029304167656e7452656d6f7665640c006d0201204576656e744469640000a001185469636b657200007c01284964656e74697479496400030c54416e206167656e74207761732072656d6f7665642e00a42843616c6c6572204449442c204167656e742773207469636b65722c204167656e74277320444944293047726f75704368616e67656410006d0201204576656e744469640000a001185469636b657200007c01284964656e7469747949640000110101284167656e7447726f757000040c74416e206167656e7427732067726f757020776173206368616e6765642e0015012843616c6c6572204449442c204167656e742773207469636b65722c204167656e742773204449442c20546865206e65772067726f7570206f6620746865206167656e7429085c4576656e747320666f722074686973206d6f64756c652e0051041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731c72656c61796572205261774576656e7404244163636f756e744964010001104c417574686f72697a6564506179696e674b657914006d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000020010c75363400000ccc417574686f72697a6174696f6e20676976656e20666f722060706179696e675f6b65796020746f2060757365725f6b6579602e0001012843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20496e697469616c20504f4c5958206c696d69742c204175746820494429444163636570746564506179696e674b65790c006d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e74496400010c50416363657074656420706179696e67206b65792e00882843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294052656d6f766564506179696e674b65790c006d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e74496400020c4c52656d6f76656420706179696e67206b65792e00882843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294455706461746564506f6c79784c696d697414006d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000018011c42616c616e636500030c505570646174656420706f6c7978206c696d69742e0011012843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20504f4c5958206c696d69742c206f6c642072656d61696e696e6720504f4c595829085c4576656e747320666f722074686973206d6f64756c652e005504083870616c6c65745f72657761726473205261774576656e7404244163636f756e744964010001044049746e526577617264436c61696d656408000001244163636f756e744964000018011c42616c616e63650000045c49746e207265776172642077617320636c61696d65642e085c4576656e747320666f722074686973206d6f64756c652e005904084470616c6c65745f746573745f7574696c73205261774576656e7404244163636f756e7449640100010c584d6f636b496e766573746f725549444372656174656408007c01284964656e74697479496400005d04012c496e766573746f725569640000080d0141206e6577206d6f636b65642060496e766573746f725569646020686173206265656e206372656174656420666f722074686520676976656e204964656e746974792e7428546172676574204449442c204e657720496e766573746f72556964292444696453746174757308007c01284964656e74697479496400000001244163636f756e744964000108e4456d6974732074686520604964656e7469747949646020616e642074686520604163636f756e74496460206f66207468652063616c6c65722e702843616c6c6572204449442c2043616c6c6572206163636f756e7429244364645374617475730c007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000019010110626f6f6c00020c550153686f777320746865206044494460206173736f63696174656420746f2074686520604163636f756e744964602c20616e64206120666c616720696e646963617465732069662074686174204449442068617320614076616c69642043444420636c61696d2ed828546172676574204449442c20546172676574204163636f756e742c20612076616c69642043444420636c61696d2065786973747329085c4576656e747320666f722074686973206d6f64756c652e005d040c4c706f6c796d6573685f7072696d697469766573186364645f69642c496e766573746f7255696400000400990101205b75383b2031365d0000610408306672616d655f73797374656d14506861736500010c384170706c7945787472696e736963040010010c7533320000003046696e616c697a6174696f6e00010038496e697469616c697a6174696f6e000200006504000002240069040000029d03006d0408306672616d655f73797374656d584c61737452756e74696d6555706772616465496e666f0000080130737065635f76657273696f6e7104014c636f6465633a3a436f6d706163743c7533323e000124737065635f6e616d657504016473705f72756e74696d653a3a52756e74696d65537472696e670000710400000610007504000005020079040c306672616d655f73797374656d1870616c6c65741043616c6c0404540001282866696c6c5f626c6f636b040114726174696f8d01011c50657262696c6c00000405014120646973706174636820746861742077696c6c2066696c6c2074686520626c6f636b2077656967687420757020746f2074686520676976656e20726174696f2e1872656d61726b04011872656d61726b28011c5665633c75383e000114684d616b6520736f6d65206f6e2d636861696e2072656d61726b2e002823203c7765696768743e202d20604f283129602c23203c2f7765696768743e387365745f686561705f7061676573040114706167657320010c753634000224f853657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e002823203c7765696768743e202d20604f28312960482d20312073746f726167652077726974652e602d2042617365205765696768743a20312e34303520c2b5735c2d203120777269746520746f20484541505f50414745533c2d203120646967657374206974656d2c23203c2f7765696768743e207365745f636f6465040110636f646528011c5665633c75383e0003306453657420746865206e65772072756e74696d6520636f64652e002823203c7765696768743e31012d20604f2843202b2053296020776865726520604360206c656e677468206f662060636f64656020616e642060536020636f6d706c6578697479206f66206063616e5f7365745f636f64656045012d20312063616c6c20746f206063616e5f7365745f636f6465603a20604f28532960202863616c6c73206073705f696f3a3a6d6973633a3a72756e74696d655f76657273696f6e60207768696368206973342020657870656e73697665292e842d20312073746f726167652077726974652028636f64656320604f28432960292e402d203120646967657374206974656d2e282d2031206576656e742e4d0154686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652c206275742067656e6572616c6c7920746869732069732076657279b8657870656e736976652e2057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e2c23203c2f7765696768743e5c7365745f636f64655f776974686f75745f636865636b73040110636f646528011c5665633c75383e000424190153657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e002823203c7765696768743e8c2d20604f2843296020776865726520604360206c656e677468206f662060636f646560842d20312073746f726167652077726974652028636f64656320604f28432960292e402d203120646967657374206974656d2e282d2031206576656e742e550154686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652e2057652077696c6c207472656174207468697320617320612066756c6c48626c6f636b2e2023203c2f7765696768743e5c7365745f6368616e6765735f747269655f636f6e66696704014c6368616e6765735f747269655f636f6e6669674001804f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e0005289c53657420746865206e6577206368616e676573207472696520636f6e66696775726174696f6e2e002823203c7765696768743e202d20604f28312960ac2d20312073746f72616765207772697465206f722064656c6574652028636f64656320604f28312960292ed42d20312063616c6c20746f20606465706f7369745f6c6f67603a20557365732060617070656e6460204150492c20736f204f283129602d2042617365205765696768743a20372e32313820c2b573302d204442205765696768743aa4202020202d205772697465733a204368616e67657320547269652c2053797374656d204469676573742c23203c2f7765696768743e2c7365745f73746f726167650401146974656d737d0401345665633c4b657956616c75653e0006206853657420736f6d65206974656d73206f662073746f726167652e002823203c7765696768743e902d20604f2849296020776865726520604960206c656e677468206f6620606974656d7360782d206049602073746f72616765207772697465732028604f28312960292e702d2042617365205765696768743a20302e353638202a206920c2b573642d205772697465733a204e756d626572206f66206974656d732c23203c2f7765696768743e306b696c6c5f73746f726167650401106b657973850401205665633c4b65793e000720744b696c6c20736f6d65206974656d732066726f6d2073746f726167652e002823203c7765696768743ef82d20604f28494b296020776865726520604960206c656e677468206f6620606b6579736020616e6420604b60206c656e677468206f66206f6e65206b6579602d206049602073746f726167652064656c6574696f6e732e6c2d2042617365205765696768743a202e333738202a206920c2b573642d205772697465733a204e756d626572206f66206974656d732c23203c2f7765696768743e2c6b696c6c5f70726566697808011870726566697828010c4b657900011c7375626b65797310010c75333200082c11014b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e0039012a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e6465723d0174686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e002823203c7765696768743ed82d20604f285029602077686572652060506020616d6f756e74206f66206b657973207769746820707265666978206070726566697860602d206050602073746f726167652064656c6574696f6e732e702d2042617365205765696768743a20302e383334202a205020c2b5737c2d205772697465733a204e756d626572206f66207375626b657973202b20312c23203c2f7765696768743e4472656d61726b5f776974685f6576656e7404011872656d61726b28011c5665633c75383e000918a44d616b6520736f6d65206f6e2d636861696e2072656d61726b20616e6420656d6974206576656e742e002823203c7765696768743eb42d20604f28622960207768657265206220697320746865206c656e677468206f66207468652072656d61726b2e282d2031206576656e742e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e7d040000028104008104000004082828008504000002280089040c306672616d655f73797374656d186c696d69747330426c6f636b5765696768747300000c0128626173655f626c6f636b2001185765696768740001246d61785f626c6f636b2001185765696768740001247065725f636c6173738d0401845065724469737061746368436c6173733c57656967687473506572436c6173733e00008d040c346672616d655f737570706f72741c77656967687473405065724469737061746368436c617373040454019104000c01186e6f726d616c910401045400012c6f7065726174696f6e616c91040104540001246d616e6461746f72799104010454000091040c306672616d655f73797374656d186c696d6974733c57656967687473506572436c6173730000100138626173655f65787472696e7369632001185765696768740001346d61785f65787472696e736963f401384f7074696f6e3c5765696768743e0001246d61785f746f74616cf401384f7074696f6e3c5765696768743e0001207265736572766564f401384f7074696f6e3c5765696768743e000095040c306672616d655f73797374656d186c696d6974732c426c6f636b4c656e677468000004010c6d6178990401545065724469737061746368436c6173733c7533323e000099040c346672616d655f737570706f72741c77656967687473405065724469737061746368436c6173730404540110000c01186e6f726d616c1001045400012c6f7065726174696f6e616c100104540001246d616e6461746f72791001045400009d040c346672616d655f737570706f72741c776569676874733c52756e74696d65446257656967687400000801107265616420011857656967687400011477726974652001185765696768740000a104082873705f76657273696f6e3852756e74696d6556657273696f6e00001c0124737065635f6e616d657504013452756e74696d65537472696e67000124696d706c5f6e616d657504013452756e74696d65537472696e67000144617574686f72696e675f76657273696f6e10010c753332000130737065635f76657273696f6e10010c753332000130696d706c5f76657273696f6e10010c75333200011061706973a504011c4170697356656300014c7472616e73616374696f6e5f76657273696f6e10010c7533320000a504040c436f7704045401a904000400a904000000a904000002ad0400ad0400000408b1041000b104000003080000000800b5040c306672616d655f73797374656d1870616c6c6574144572726f720404540001143c496e76616c6964537065634e616d650000081101546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e685370656356657273696f6e4e65656473546f496e63726561736500010841015468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e00020cec4661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e0009014569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e4c4e6f6e44656661756c74436f6d706f73697465000304fc537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e3c4e6f6e5a65726f526566436f756e74000404350154686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e046c4572726f7220666f72207468652053797374656d2070616c6c6574b90410346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401bd04045300000400c50401185665633c543e0000bd0400000408c1042000c1040c4473705f636f6e73656e7375735f626162650c617070185075626c696300000400bd01013c737232353531393a3a5075626c69630000c504000002bd0400c904084873705f636f6e73656e7375735f736c6f747310536c6f740000040020010c7536340000cd040c4473705f636f6e73656e7375735f626162651c64696765737473504e657874436f6e66696744657363726970746f7200010408563108010463d1040128287536342c2075363429000134616c6c6f7765645f736c6f7473d5040130416c6c6f776564536c6f747300010000d10400000408202000d504084473705f636f6e73656e7375735f6261626530416c6c6f776564536c6f747300010c305072696d617279536c6f7473000000745072696d617279416e645365636f6e64617279506c61696e536c6f74730001006c5072696d617279416e645365636f6e64617279565246536c6f747300020000d90410346672616d655f737570706f72741c73746f726167652c626f756e6465645f76656328426f756e6465645665630804540104045300000400dd0401185665633c543e0000dd040000020400e10404184f7074696f6e04045401040108104e6f6e6500000010536f6d650400040000010000e504084473705f636f6e73656e7375735f62616265584261626545706f6368436f6e66696775726174696f6e000008010463d1040128287536342c2075363429000134616c6c6f7765645f736c6f7473d5040130416c6c6f776564536c6f74730000e9040c2c70616c6c65745f626162651870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66ed040184426f783c45717569766f636174696f6e50726f6f663c543a3a4865616465723e3e00013c6b65795f6f776e65725f70726f6f66f9040140543a3a4b65794f776e657250726f6f6600001009015265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667905017468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f660d01616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c306265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66ed040184426f783c45717569766f636174696f6e50726f6f663c543a3a4865616465723e3e00013c6b65795f6f776e65725f70726f6f66f9040140543a3a4b65794f776e657250726f6f6600012009015265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667905017468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f660d01616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c306265207265706f727465642e0d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e48706c616e5f636f6e6669675f6368616e6765040118636f6e666967cd0401504e657874436f6e66696744657363726970746f720002105d01506c616e20616e2065706f636820636f6e666967206368616e67652e205468652065706f636820636f6e666967206368616e6765206973207265636f7264656420616e642077696c6c20626520656e6163746564206f6e5101746865206e6578742063616c6c20746f2060656e6163745f65706f63685f6368616e6765602e2054686520636f6e6669672077696c6c20626520616374697661746564206f6e652065706f63682061667465722e59014d756c7469706c652063616c6c7320746f2074686973206d6574686f642077696c6c207265706c61636520616e79206578697374696e6720706c616e6e656420636f6e666967206368616e6765207468617420686164546e6f74206265656e20656e6163746564207965742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632eed04084873705f636f6e73656e7375735f736c6f74734445717569766f636174696f6e50726f6f66081848656164657201f10408496401c104001001206f6666656e646572c10401084964000110736c6f74c9040110536c6f7400013066697273745f686561646572f10401184865616465720001347365636f6e645f686561646572f10401184865616465720000f104102873705f72756e74696d651c67656e65726963186865616465721848656164657208184e756d6265720110104861736801f5040014012c706172656e745f68617368240130486173683a3a4f75747075740001186e756d626572710401184e756d62657200012873746174655f726f6f74240130486173683a3a4f757470757400013c65787472696e736963735f726f6f74240130486173683a3a4f75747075740001186469676573742c01504469676573743c486173683a3a4f75747075743e0000f5040c2873705f72756e74696d65187472616974732c426c616b6554776f32353600000000f904082873705f73657373696f6e3c4d656d6265727368697050726f6f6600000c011c73657373696f6e10013053657373696f6e496e646578000128747269655f6e6f646573850401305665633c5665633c75383e3e00013c76616c696461746f725f636f756e7410013856616c696461746f72436f756e740000fd040c2c70616c6c65745f626162651870616c6c6574144572726f7204045400010c60496e76616c696445717569766f636174696f6e50726f6f660000043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c69644b65794f776e65727368697050726f6f66000104310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400020415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a09090901050c4070616c6c65745f74696d657374616d701870616c6c65741043616c6c0404540001040c73657404010c6e6f7705050124543a3a4d6f6d656e7400004054536574207468652063757272656e742074696d652e005501546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6ed470686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e0041015468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e742073706563696669656420627940604d696e696d756d506572696f64602e00d4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e002823203c7765696768743e31012d20604f2831296020284e6f7465207468617420696d706c656d656e746174696f6e73206f6620604f6e54696d657374616d7053657460206d75737420616c736f20626520604f283129602961012d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202862656361757365206f6620604469645570646174653a3a74616b656020696e402020606f6e5f66696e616c697a656029d42d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f736574602e204d75737420626520604f283129602e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e0505000006200009050000040c00181901000d050c3870616c6c65745f696e64696365731870616c6c65741043616c6c04045400011414636c61696d040114696e64657810013c543a3a4163636f756e74496e6465780000489841737369676e20616e2070726576696f75736c7920756e61737369676e656420696e6465782e00dc5061796d656e743a20604465706f736974602069732072657365727665642066726f6d207468652073656e646572206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e00f02d2060696e646578603a2074686520696e64657820746f20626520636c61696d65642e2054686973206d757374206e6f7420626520696e207573652e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e602d204f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e207472616e7366657208010c6e6577000130543a3a4163636f756e744964000114696e64657810013c543a3a4163636f756e74496e6465780001505d0141737369676e20616e20696e64657820616c7265616479206f776e6564206279207468652073656e64657220746f20616e6f74686572206163636f756e742e205468652062616c616e6365207265736572766174696f6eb86973206566666563746976656c79207472616e7366657272656420746f20746865206e6577206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0025012d2060696e646578603a2074686520696e64657820746f2062652072652d61737369676e65642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e5d012d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e642d204f6e65207472616e73666572206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743ae02020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e7429e42020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e74292c23203c2f7765696768743e1066726565040114696e64657810013c543a3a4163636f756e74496e646578000248944672656520757020616e20696e646578206f776e6564206279207468652073656e6465722e005d015061796d656e743a20416e792070726576696f7573206465706f73697420706c6163656420666f722074686520696e64657820697320756e726573657276656420696e207468652073656e646572206163636f756e742e005501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206f776e2074686520696e6465782e000d012d2060696e646578603a2074686520696e64657820746f2062652066726565642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e0084456d6974732060496e646578467265656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e602d204f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e38666f7263655f7472616e736665720c010c6e6577000130543a3a4163636f756e744964000114696e64657810013c543a3a4163636f756e74496e646578000118667265657a6519010110626f6f6c0003545501466f72636520616e20696e64657820746f20616e206163636f756e742e205468697320646f65736e277420726571756972652061206465706f7369742e2049662074686520696e64657820697320616c7265616479e868656c642c207468656e20616e79206465706f736974206973207265696d62757273656420746f206974732063757272656e74206f776e65722e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e00a42d2060696e646578603a2074686520696e64657820746f206265202872652d2961737369676e65642e5d012d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e41012d2060667265657a65603a2069662073657420746f206074727565602c2077696c6c20667265657a652074686520696e64657820736f2069742063616e6e6f74206265207472616e736665727265642e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e782d20557020746f206f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743af42020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e657229f82020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e6572292c23203c2f7765696768743e18667265657a65040114696e64657810013c543a3a4163636f756e74496e6465780004484101467265657a6520616e20696e64657820736f2069742077696c6c20616c7761797320706f696e7420746f207468652073656e646572206163636f756e742e205468697320636f6e73756d657320746865206465706f7369742e005901546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d757374206861766520616c6e6f6e2d66726f7a656e206163636f756e742060696e646578602e00ac2d2060696e646578603a2074686520696e64657820746f2062652066726f7a656e20696e20706c6163652e0088456d6974732060496e64657846726f7a656e60206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e702d20557020746f206f6e6520736c617368206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e11050c3870616c6c65745f696e64696365731870616c6c6574144572726f720404540001142c4e6f7441737369676e65640000048c54686520696e64657820776173206e6f7420616c72656164792061737369676e65642e204e6f744f776e6572000104a454686520696e6465782069732061737369676e656420746f20616e6f74686572206163636f756e742e14496e5573650002047054686520696e64657820776173206e6f7420617661696c61626c652e2c4e6f745472616e73666572000304c854686520736f7572636520616e642064657374696e6174696f6e206163636f756e747320617265206964656e746963616c2e245065726d616e656e74000404d054686520696e646578206973207065726d616e656e7420616e64206d6179206e6f742062652066726565642f6368616e6765642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a09090915050000021905001905084470616c6c65745f617574686f727368697038556e636c65456e7472794974656d0c2c426c6f636b4e756d62657201101048617368012418417574686f72010001083c496e636c7573696f6e486569676874040010012c426c6f636b4e756d62657200000014556e636c650800240110486173680000090101384f7074696f6e3c417574686f723e000100001d050c4470616c6c65745f617574686f72736869701870616c6c65741043616c6c040454000104287365745f756e636c65730401286e65775f756e636c6573210501385665633c543a3a4865616465723e0000046050726f76696465206120736574206f6620756e636c65732e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e2105000002f1040025050c4470616c6c65745f617574686f72736869701870616c6c6574144572726f7204045400011c48496e76616c6964556e636c65506172656e740000048854686520756e636c6520706172656e74206e6f7420696e2074686520636861696e2e40556e636c6573416c726561647953657400010480556e636c657320616c72656164792073657420696e2074686520626c6f636b2e34546f6f4d616e79556e636c657300020440546f6f206d616e7920756e636c65732e3047656e65736973556e636c650003045454686520756e636c652069732067656e657369732e30546f6f48696768556e636c650004047c54686520756e636c6520697320746f6f206869676820696e20636861696e2e50556e636c65416c7265616479496e636c756465640005047854686520756e636c6520697320616c726561647920696e636c756465642e204f6c64556e636c65000604b454686520756e636c652069736e277420726563656e7420656e6f75676820746f20626520696e636c756465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a09090929050000022d05002d05083c70616c6c65745f62616c616e6365732c42616c616e63654c6f636b041c42616c616e63650118000c01086964b10401384c6f636b4964656e746966696572000118616d6f756e7418011c42616c616e636500011c726561736f6e733105011c526561736f6e73000031051064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e6365731c526561736f6e7300010c0c466565000000104d6973630001000c416c6c000200003505083c70616c6c65745f62616c616e6365731043616c6c040454000118207472616e73666572080110646573743905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565cd01011c42616c616e6365000058d45472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e000501607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e1d0149742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e001501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e002823203c7765696768743e2d012d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72c82020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e65012d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e004852656c617465642066756e6374696f6e733a004d0120202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e290120202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c206361757365d0202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e842d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d41012d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429dc2d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e487472616e736665725f776974685f6d656d6f0c0110646573743905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565cd01011c42616c616e63650001106d656d6f8001304f7074696f6e3c4d656d6f3e000120fc5472616e7366657220746865206e61746976652063757272656e63792077697468207468652068656c70206f66206964656e74696669657220737472696e67ec746869732066756e6374696f6e616c6974792063616e2068656c7020746f20646966666572656e746961746520746865207472616e73666572732e002823203c7765696768743e41012d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429dc2d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e906465706f7369745f626c6f636b5f7265776172645f726573657276655f62616c616e636504011476616c7565cd01011c42616c616e6365000204dc4d6f766520736f6d6520504f4c59582066726f6d2062616c616e6365206f662073656c6620746f2062616c616e6365206f66204252522e2c7365745f62616c616e63650c010c77686f3905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263650001206e65775f66726565cd01011c42616c616e63650001306e65775f7265736572766564cd01011c42616c616e636500031890536574207468652062616c616e636573206f66206120676976656e206163636f756e742e001d01546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c0501616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e00b0546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e38666f7263655f7472616e736665720c0118736f757263653905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365000110646573743905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565cd01011c42616c616e636500041c4d0145786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d6179206265287370656369666965642e002823203c7765696768743e3d012d2053616d65206173207472616e736665722c20627574206164646974696f6e616c207265616420616e6420777269746520626563617573652074686520736f75726365206163636f756e742069738c20206e6f7420617373756d656420746f20626520696e20746865206f7665726c61792e2c23203c2f7765696768743e506275726e5f6163636f756e745f62616c616e6365040118616d6f756e7418011c42616c616e636500050429014275726e732074686520676976656e20616d6f756e74206f6620746f6b656e732066726f6d207468652063616c6c6572277320667265652c20756e6c6f636b65642062616c616e63652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e39050c2873705f72756e74696d65306d756c746961646472657373304d756c74694164647265737308244163636f756e7449640100304163636f756e74496e6465780110011408496404000001244163636f756e74496400000014496e6465780400710401304163636f756e74496e6465780001000c526177040028011c5665633c75383e0002002441646472657373333204000401205b75383b2033325d000300244164647265737332300400f90101205b75383b2032305d000400003d05083c70616c6c65745f62616c616e636573144572726f72040454000114544c69717569646974795265737472696374696f6e73000004c44163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c204f766572666c6f7700010470476f7420616e206f766572666c6f7720616674657220616464696e674c496e73756666696369656e7442616c616e63650002047442616c616e636520746f6f206c6f7720746f2073656e642076616c7565484578697374656e7469616c4465706f736974000304e856616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369744852656365697665724364644d697373696e6700040488526563656976657220646f6573206e6f74206861766520612076616c6964204344440041050c3473705f61726974686d657469632c66697865645f706f696e7424466978656455313238000004001801107531323800004505086870616c6c65745f7472616e73616374696f6e5f7061796d656e742052656c6561736573000108245631416e6369656e740000000856320001000049050000024d05004d050c346672616d655f737570706f72741c7765696768747358576569676874546f466565436f656666696369656e74041c42616c616e6365011800100134636f6566665f696e746567657218011c42616c616e6365000128636f6566665f667261638d01011c50657262696c6c0001206e6567617469766519010110626f6f6c0001186465677265650801087538000051050c4c706f6c796d6573685f7072696d697469766573206964656e74697479244469645265636f726404244163636f756e74496401000004012c7072696d6172795f6b6579090101444f7074696f6e3c4163636f756e7449643e000055050000040859055d050059050c3c70616c6c65745f6964656e746974791474797065732c436c61696d3173744b657900000801187461726765747c01284964656e746974794964000128636c61696d5f74797065cd020124436c61696d5479706500005d050c3c70616c6c65745f6964656e746974791474797065732c436c61696d326e644b657900000801186973737565727c01284964656e74697479496400011473636f7065610501344f7074696f6e3c53636f70653e0000610504184f7074696f6e04045401fc0108104e6f6e6500000010536f6d650400fc000001000065050c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579244b65795265636f726404244163636f756e7449640100010c285072696d6172794b657904007c01284964656e746974794964000000305365636f6e646172794b657908007c01284964656e746974794964000098012c5065726d697373696f6e73000100444d756c74695369675369676e65724b657904000001244163636f756e744964000200006905000004087c00006d05000004086d01200071050c4c706f6c796d6573685f7072696d69746976657334617574686f72697a6174696f6e34417574686f72697a6174696f6e08244163636f756e7449640100184d6f6d656e74012000100148617574686f72697a6174696f6e5f646174610d010170417574686f72697a6174696f6e446174613c4163636f756e7449643e000134617574686f72697a65645f62797c01284964656e746974794964000118657870697279f401384f7074696f6e3c4d6f6d656e743e00011c617574685f696420010c75363400007505000004087c20007905083c70616c6c65745f6964656e746974791c56657273696f6e00000400080108753800007d05083c70616c6c65745f6964656e746974791043616c6c040454000154406364645f72656769737465725f6469640801387461726765745f6163636f756e74000130543a3a4163636f756e7449640001387365636f6e646172795f6b65797390017c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e00002cb8526567697374657220607461726765745f6163636f756e746020776974682061206e6577204964656e746974792e002423204661696c75726545012d20606f726967696e602068617320746f206265206120616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792ef42d2045787465726e616c207365636f6e64617279206b6579732063616e206265206c696e6b656420746f206a757374206f6e65206964656e746974792e00202320576569676874c060375f3030305f3030305f303030202b203630305f303030202a207365636f6e646172795f6b6579732e6c656e28296054696e76616c69646174655f6364645f636c61696d730c010c6364647c01284964656e74697479496400013064697361626c655f66726f6d200124543a3a4d6f6d656e74000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001102101496e76616c69646174657320616e7920636c61696d2067656e6572617465642062792060636464602066726f6d206064697361626c655f66726f6d602074696d657374616d70732e009c596f752063616e20616c736f20646566696e6520616e2065787069726174696f6e2074696d652c6d0177686963682077696c6c20696e76616c696461746520616c6c20636c61696d732067656e657261746564206279207468617420606364646020616e642072656d6f766520697420617320434444206d656d6265722067726f75702e5472656d6f76655f7365636f6e646172795f6b6579730401386b6579735f746f5f72656d6f7665ec01445665633c543a3a4163636f756e7449643e00021cd452656d6f76657320737065636966696564207365636f6e64617279206b657973206f662061204449442069662070726573656e742e002423204661696c757265a049742063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722e00202320576569676874b4603935305f3030305f303030202b2036305f303030202a206b6579735f746f5f72656d6f76652e6c656e282960486163636570745f7072696d6172795f6b6579080140726f746174696f6e5f617574685f696420010c7536340001506f7074696f6e616c5f6364645f617574685f6964f4012c4f7074696f6e3c7536343e000334650143616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e6501746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f766564250174686973206368616e676520286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e005d015468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f7264756e6c696e6b656420746f20616e79206964656e746974792e005d01446966666572732066726f6d20726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727920696e20746861742069742077696c6c20756e6c696e6b20746865206f6c64207072696d617279206b6579a4696e7374656164206f66206c656176696e672069742061732061207365636f6e64617279206b65792e002c2320417267756d656e74731d012a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e42a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f7669646572986368616e67655f6364645f726571756972656d656e745f666f725f6d6b5f726f746174696f6e040134617574685f726571756972656419010110626f6f6c00041435015365742069662043444420617574686f72697a6174696f6e20697320726571756972656420666f72207570646174696e67207072696d617279206b6579206f6620616e206964656e746974792e7843616c6c61626c652076696120726f6f742028676f7665726e616e636529002c2320417267756d656e7473cc2a2060617574685f7265717569726564602043444420417574686f72697a6174696f6e207265717569726564206f72206e6f74506a6f696e5f6964656e746974795f61735f6b657904011c617574685f696420010c753634000504904a6f696e20616e206964656e746974792061732061207365636f6e64617279206b65792e546c656176655f6964656e746974795f61735f6b65790006048c4c6561766520746865207365636f6e64617279206b65792773206964656e746974792e246164645f636c61696d0c01187461726765747c01284964656e746974794964000114636c61696df80114436c61696d000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e00070cc4416464732061206e657720636c61696d207265636f7264206f7220656469747320616e206578697374696e67206f6e652e00a84f6e6c792063616c6c6564206279206469645f6973737565722773207365636f6e64617279206b65792e307265766f6b655f636c61696d0801187461726765747c01284964656e746974794964000114636c61696df80114436c61696d000804944d61726b73207468652073706563696669656420636c61696d206173207265766f6b65642e747365745f7365636f6e646172795f6b65795f7065726d697373696f6e7308010c6b6579000130543a3a4163636f756e7449640001147065726d7398012c5065726d697373696f6e7300090cc853657473207065726d697373696f6e7320666f7220616e20737065636966696320607461726765745f6b657960206b65792e0035014f6e6c7920746865207072696d617279206b6579206f6620616e206964656e746974792069732061626c6520746f20736574207365636f6e64617279206b6579207065726d697373696f6e732e54667265657a655f7365636f6e646172795f6b657973000a10c449742064697361626c657320616c6c207365636f6e64617279206b657973206174206064696460206964656e746974792e002023204572726f7273005c756e667265657a655f7365636f6e646172795f6b657973000b04dc52652d656e61626c657320616c6c207365636f6e64617279206b657973206f66207468652063616c6c65722773206964656e746974792e446164645f617574686f72697a6174696f6e0c01187461726765746d01015c5369676e61746f72793c543a3a4163636f756e7449643e000110646174610d01017c417574686f72697a6174696f6e446174613c543a3a4163636f756e7449643e000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e000c04584164647320616e20617574686f72697a6174696f6e2e5072656d6f76655f617574686f72697a6174696f6e0c01187461726765746d01015c5369676e61746f72793c543a3a4163636f756e7449643e00011c617574685f696420010c7536340001445f617574685f6973737565725f7061797319010110626f6f6c000d086452656d6f76657320616e20617574686f72697a6174696f6e2e75015f617574685f6973737565725f706179732064657465726d696e657320776865746865722074686520697373756572206f662074686520617574686f7269736174696f6e207061797320746865207472616e73616374696f6e20666565946164645f7365636f6e646172795f6b6579735f776974685f617574686f72697a6174696f6e08013c6164646974696f6e616c5f6b6579738105019c5665633c5365636f6e646172794b657957697468417574683c543a3a4163636f756e7449643e3e000128657870697265735f6174200124543a3a4d6f6d656e74000e30bc49742061646473207365636f6e64617279206b65797320746f20746172676574206964656e7469747920606964602e39014b65797320617265206469726563746c7920616464656420746f206964656e7469747920626563617573652065616368206f66207468656d2068617320616e20617574686f72697a6174696f6e2e0028417267756d656e74733ab0202020202d20606f726967696e60205072696d617279206b6579206f662060696460206964656e746974792eec202020202d2060696460204964656e74697479207768657265206e6577207365636f6e64617279206b6579732077696c6c2062652061646465642e6d01202020202d20606164646974696f6e616c5f6b65797360204e6577207365636f6e64617279206974656d732028616e6420746865697220617574686f72697a6174696f6e20646174612920746f2061646420746f2074617267657434202020206964656e746974792e001c4661696c757265b8202020202d2049742063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722ed0202020202d204b6579732073686f756c642062652061626c6520746f206c696e6b656420746f20616e79206964656e746974792e746164645f696e766573746f725f756e697175656e6573735f636c61696d1001187461726765747c01284964656e746974794964000114636c61696df80114436c61696d00011470726f6f668d05014c496e766573746f725a4b50726f6f6644617461000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e000f5009014164642060436c61696d3a3a496e766573746f72556e697175656e6573736020636c61696d20666f72206120676976656e20746172676574206964656e746974792e002823203c7765696768743e410120576569676874206f662074686520746869732065787472696e73696320697320646570656e64206f6e2074686520636f6d7075746174696f6e2074686174207573656420746f2076616c69646174652501207468652070726f6f66206f6620636c61696d2c2077686963682077696c6c206265206120636f6e7374616e7420696e646570656e64656e74206f66207573657220696e707574732e2c23203c2f7765696768743e002c2320417267756d656e7473b5012a206f726967696e202d2057686f2070726f76696465732074686520636c61696d20746f2074686520757365723f20496e207468697320636173652c20697427732074686520757365722773206163636f756e742069642061732074686520757365722070726f76696465732ee42a20746172676574202d20604964656e7469747949646020746f2077686963682074686520636c61696d20676574732061737369676e65642eb42a20636c61696d202d2060496e766573746f72556e697175656e6573736020636c61696d2064657461696c732eac2a2070726f6f66202d20546f2076616c6964617465207468652073656c66206174746573746174696f6e2e6c2a20657870697279202d20457870697279206f6620636c61696d2e002023204572726f72732d012a20604469644d757374416c7265616479457869737460205461726765742073686f756c6420616c7265616479206265656e20612070617274206f66207468652065636f73797374656d2e91012a2060436c61696d56617269616e744e6f74416c6c6f77656460205768656e206f726967696e20747279696e6720746f207061737320636c61696d2076617269616e74206f74686572207468616e2060496e766573746f72556e697175656e657373602eb9012a2060436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f77656460205768656e2069737375657220697320646966666572656e742066726f6d20746172676574206f72204344445f494420697320696e76616c696420666f7220676976656e20757365722eac2a2060496e76616c696453636f7065436c61696d205768656e2070726f6f6620697320696e76616c69642eec2a2060496e76616c6964434444496460207768656e20796f7520617265206e6f7420746865206f776e6572206f662074686174204344445f49442e4067635f6164645f6364645f636c61696d0401187461726765747c01284964656e7469747949640010044501417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c20616464732061206e65772063646420636c61696d207265636f72642e4c67635f7265766f6b655f6364645f636c61696d0401187461726765747c01284964656e7469747949640011046901417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c2072656d6f76657320616e206578697374696e672063646420636c61696d207265636f72642e806164645f696e766573746f725f756e697175656e6573735f636c61696d5f76321401187461726765747c01284964656e74697479496400011473636f7065fc011453636f7065000114636c61696df80114436c61696d00011470726f6f669d05013c53636f7065436c61696d50726f6f66000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e001200547265766f6b655f636c61696d5f62795f696e6465780c01187461726765747c01284964656e746974794964000128636c61696d5f74797065cd020124436c61696d5479706500011473636f7065610501344f7074696f6e3c53636f70653e001320f5015265766f6b6573206120737065636966696320636c61696d207573696e6720697473205b436c61696d20556e6971756520496e6465785d282f70616c6c65745f6964656e746974792f696e6465782e68746d6c23636c61696d2d756e697175652d696e6465782920636f6d706f7365642062792060746172676574602c6860636c61696d5f74797065602c20616e64206073636f7065602e000501506c65617365206e6f7465207468617420606f726967696e60206d7573742062652074686520697373756572206f66207468652074617267657420636c61696d2e002023204572726f72734d012d20605461726765744861734e6f6e5a65726f42616c616e6365417453636f7065496460207768656e20796f752074727920746f207265766f6b6520612060496e766573746f72556e697175656e6573732a602501636c61696d2c20616e64206074617267657460206964656e74697479207374696c6c206861766520616e792062616c616e6365206f6e2074686520676976656e206073636f7065602e7c726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727908011c617574685f696420010c7536340001506f7074696f6e616c5f6364645f617574685f6964f4012c4f7074696f6e3c7536343e001438650143616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e6501746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f766564290174686973206368616e67652c20286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e005d015468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f7264756e6c696e6b656420746f20616e79206964656e746974792e006101446966666572732066726f6d206163636570745f7072696d6172795f6b657920696e20746861742069742077696c6c206c6561766520746865206f6c64207072696d617279206b65792061732061207365636f6e6461727985016b6579207769746820746865207065726d697373696f6e732073706563696669656420696e2074686520636f72726573706f6e64696e6720526f746174655072696d6172794b6579546f5365636f6e6461727920617574686f72697a6174696f6ea4696e7374656164206f6620756e6c696e6b696e6720746865206f6c64207072696d617279206b65792e002c2320417267756d656e74731d012a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e42a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f76696465720c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e810500000285050085051064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479505365636f6e646172794b6579576974684175746804244163636f756e7449640100000801347365636f6e646172795f6b657994015c5365636f6e646172794b65793c4163636f756e7449643e000138617574685f7369676e6174757265890501104835313200008905083c7072696d69746976655f7479706573104835313200000400110201205b75383b2036345d00008d05104c706f6c796d6573685f7072696d69746976657354696e766573746f725f7a6b70726f6f665f646174610876314c496e766573746f725a4b50726f6f664461746100000400910501245369676e6174757265000091050c287363686e6f72726b656c107369676e245369676e61747572650000080104529505014c436f6d7072657373656452697374726574746f00010473990501185363616c6172000095050c40637572766532353531395f64616c656b2472697374726574746f4c436f6d7072657373656452697374726574746f000004000401205b75383b2033325d000099050c40637572766532353531395f64616c656b187363616c6172185363616c6172000004011462797465730401205b75383b2033325d00009d050c54636f6e666964656e7469616c5f6964656e7469747930636c61696d5f70726f6f66733c53636f7065436c61696d50726f6f6600000c016470726f6f665f73636f70655f69645f77656c6c666f726d6564a10501245369676e617475726500016c70726f6f665f73636f70655f69645f6364645f69645f6d61746368a505012c5a6b50726f6f664461746100012073636f70655f6964ad05013852697374726574746f506f696e740000a1050c54636f6e666964656e7469616c5f6964656e74697479107369676e245369676e61747572650000080104529505014c436f6d7072657373656452697374726574746f00010473990501185363616c61720000a5050c54636f6e666964656e7469616c5f6964656e7469747930636c61696d5f70726f6f66732c5a6b50726f6f664461746100000c014c6368616c6c656e67655f726573706f6e736573a90501945b5363616c61723b205a4b5f50524f4f465f444154415f4348475f524553504f4e5345535d00016073756274726163745f65787072657373696f6e735f726573ad05013852697374726574746f506f696e74000158626c696e6465645f73636f70655f6469645f68617368ad05013852697374726574746f506f696e740000a90500000302000000990500ad050c40637572766532353531395f64616c656b2472697374726574746f3852697374726574746f506f696e7400000400b105013045647761726473506f696e740000b1050c40637572766532353531395f64616c656b1c656477617264733045647761726473506f696e74000010010458b50501304669656c64456c656d656e7400010459b50501304669656c64456c656d656e740001045ab50501304669656c64456c656d656e7400010454b50501304669656c64456c656d656e740000b5051840637572766532353531395f64616c656b1c6261636b656e641873657269616c0c753634146669656c64384669656c64456c656d656e74353100000400b90501205b7536343b20355d0000b905000003050000002000bd05083c70616c6c65745f6964656e74697479144572726f7204045400018434416c72656164794c696e6b6564000004dc4f6e65207365636f6e64617279206f72207072696d617279206b65792063616e206f6e6c792062656c6f6e6720746f206f6e6520444944584d697373696e6743757272656e744964656e74697479000104ac4d697373696e672063757272656e74206964656e74697479206f6e20746865207472616e73616374696f6e30556e617574686f72697a6564000204bc5369676e61746f7279206973206e6f742070726520617574686f72697a656420627920746865206964656e7469747944496e76616c69644163636f756e744b6579000304a84163636f756e742049642063616e6e6f74206265206578747261637465642066726f6d207369676e65725c556e417574686f72697a656443646450726f76696465720004049c4f6e6c792043444420736572766963652070726f7669646572732061726520616c6c6f7765642e74496e76616c6964417574686f72697a6174696f6e46726f6d4f776e6572000504a0416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865206f776e65722e8c496e76616c6964417574686f72697a6174696f6e46726f6d43646450726f7669646572000604bc416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865204344442070726f76696465722e644e6f7443646450726f76696465724174746573746174696f6e000704b84174746573746174696f6e20776173206e6f7420627920612043444420736572766963652070726f76696465722e70417574686f72697a6174696f6e734e6f74466f7253616d6544696473000804a0417574686f72697a6174696f6e7320617265206e6f7420666f72207468652073616d65204449442e4c4469644d757374416c726561647945786973740009046c54686520444944206d75737420616c72656164792065786973742e8043757272656e744964656e7469747943616e6e6f744265466f72776172646564000a044d0143757272656e74206964656e746974792063616e6e6f7420626520666f727761726465642c206974206973206e6f742061207365636f6e64617279206b6579206f6620746172676574206964656e746974792e50417574686f72697a6174696f6e45787069726564000b049c546865206f6666636861696e20617574686f72697a6174696f6e2068617320657870697265642e385461726765744861734e6f436464000c0480546865207461726765742044494420686173206e6f2076616c6964204344442e6c417574686f72697a6174696f6e4861734265656e5265766f6b6564000d04a8417574686f72697a6174696f6e20686173206265656e206578706c696369746c79207265766f6b65642e74496e76616c6964417574686f72697a6174696f6e5369676e6174757265000e048c416e20696e76616c696420617574686f72697a6174696f6e207369676e61747572652e344b65794e6f74416c6c6f776564000f04d454686973206b6579206973206e6f7420616c6c6f77656420746f2065786563757465206120676976656e206f7065726174696f6e2e344e6f745072696d6172794b657900100461014f6e6c7920746865207072696d617279206b657920697320616c6c6f77656420746f207265766f6b6520616e204964656e74697479205369676e61746f7279206f66662d636861696e20617574686f72697a6174696f6e2e3c446964446f65734e6f7445786973740011045c5468652044494420646f6573206e6f742065786973742e40446964416c72656164794578697374730012045c5468652044494420616c7265616479206578697374732e785365636f6e646172794b657973436f6e7461696e5072696d6172794b6579001304ac546865207365636f6e64617279206b65797320636f6e7461696e20746865207072696d617279206b65792e444661696c6564546f436861726765466565001404a0436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e284e6f74415369676e6572001504d85369676e6572206973206e6f742061207365636f6e64617279206b6579206f66207468652070726f7669646564206964656e746974796c43616e6e6f744465636f64655369676e65724163636f756e744964001604150143616e6e6f7420636f6e7665727420612060543a3a4163636f756e7449646020746f2060416e795369676e61747572653a3a5369676e65723a3a4163636f756e744964602e484d756c746953696748617342616c616e636500170421014d756c74697369672063616e206e6f7420626520756e6c696e6b65642066726f6d20616e206964656e74697479207768696c65206974207374696c6c20686f6c647320504f4c595880436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f7765640018040501436f6e666964656e7469616c2053636f706520636c61696d732063616e20626520616464656420627920616e204964656e7469747920746f2069742d73656c662e44496e76616c696453636f7065436c61696d001904bc4164646974696f6e206f662061206e65772073636f706520636c61696d206765747320696e76616c6964617465642e58436c61696d56617269616e744e6f74416c6c6f776564001a04e454727920746f20616464206120636c61696d2076617269616e74207573696e6720756e2d64657369676e617465642065787472696e7369632e805461726765744861734e6f6e5a65726f42616c616e6365417453636f70654964001b04510154727920746f2064656c6574652074686520495520636c61696d206576656e207768656e20746865207573657220686173206e6f6e207a65726f2062616c616e636520617420676976656e2073636f706549642e6443444449644e6f74556e69717565466f724964656e74697479001c041d0143444449642073686f756c6420626520756e6971756520262073616d652077697468696e20616c6c2063646420636c61696d7320706f737365737365642062792061204449442e30496e76616c69644344444964001d0409014e6f6e2073797374656d61746963204344442070726f7669646572732063616e206e6f74206372656174652064656661756c74206364645f696420636c61696d732e7c436c61696d416e6450726f6f6656657273696f6e73446f4e6f744d61746368001e049c436c61696d20616e642050726f6f662076657273696f6e732061726520646966666572656e742e544163636f756e744b657949734265696e6755736564001f04d0546865206163636f756e74206b6579206973206265696e6720757365642c2069742063616e277420626520756e6c696e6b65642e48437573746f6d53636f7065546f6f4c6f6e670020086c4120637573746f6d2073636f706520697320746f6f206c6f6e672e9c49742063616e206174206d6f737420626520603332602063686172616374657273206c6f6e672e00c105000002c50500c5051064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f757038496e6163746976654d656d62657204184d6f6d656e740120000c010869647c01284964656e74697479496400013864656163746976617465645f61742001184d6f6d656e74000118657870697279f401384f7074696f6e3c4d6f6d656e743e0000c905083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001086174f401444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572732501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ecd05083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00d1050c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d651043616c6c0001a41853797374656d0400790401ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53797374656d2c2052756e74696d653e00000010426162650400e90401a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426162652c2052756e74696d653e0001002454696d657374616d700400010501b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54696d657374616d702c2052756e74696d653e0002001c496e646963657304000d0501b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496e64696365732c2052756e74696d653e00030028417574686f727368697004001d0501bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c417574686f72736869702c2052756e74696d653e0004002042616c616e6365730400350501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c42616c616e6365732c2052756e74696d653e000500204964656e7469747904007d0501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4964656e746974792c2052756e74696d653e0007004c4364645365727669636550726f7669646572730400c90501e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4364645365727669636550726f7669646572732c2052756e74696d653e00080044506f6c796d657368436f6d6d69747465650400d50501d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f6c796d657368436f6d6d69747465652c2052756e74696d653e0009004c436f6d6d69747465654d656d626572736869700400d90501e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6d6d69747465654d656d626572736869702c2052756e74696d653e000a0048546563686e6963616c436f6d6d69747465650400dd0501dd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546563686e6963616c436f6d6d69747465652c2052756e74696d653e000b0070546563686e6963616c436f6d6d69747465654d656d626572736869700400e10501050273656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546563686e6963616c436f6d6d69747465654d656d626572736869702c2052756e74696d653e000c004055706772616465436f6d6d69747465650400e50501d50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c55706772616465436f6d6d69747465652c2052756e74696d653e000d006855706772616465436f6d6d69747465654d656d626572736869700400e90501fd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c55706772616465436f6d6d69747465654d656d626572736869702c2052756e74696d653e000e00204d756c74695369670400ed0501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d756c74695369672c2052756e74696d653e000f00184272696467650400f10501ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4272696467652c2052756e74696d653e0010001c5374616b696e670400010601b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5374616b696e672c2052756e74696d653e0011001c53657373696f6e0400f50601b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53657373696f6e2c2052756e74696d653e0013001c4772616e6470610400010701b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4772616e6470612c2052756e74696d653e00150020496d4f6e6c696e6504002d0701b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496d4f6e6c696e652c2052756e74696d653e001700105375646f04004d0701a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5375646f2c2052756e74696d653e0019001441737365740400510701a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c41737365742c2052756e74696d653e001a004c4361706974616c446973747269627574696f6e0400710701e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4361706974616c446973747269627574696f6e2c2052756e74696d653e001b0028436865636b706f696e740400790701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436865636b706f696e742c2052756e74696d653e001c0044436f6d706c69616e63654d616e616765720400810701d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6d706c69616e63654d616e616765722c2052756e74696d653e001d003c436f72706f72617465416374696f6e0400850701d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f72706f72617465416374696f6e2c2052756e74696d653e001e003c436f72706f7261746542616c6c6f7404009d0701d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f72706f7261746542616c6c6f742c2052756e74696d653e001f0010506970730400a10701a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506970732c2052756e74696d653e00210024506f7274666f6c696f0400b10701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f7274666f6c696f2c2052756e74696d653e0022002c50726f746f636f6c4665650400bd0701c10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50726f746f636f6c4665652c2052756e74696d653e002300245363686564756c65720400c50701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5363686564756c65722c2052756e74696d653e00240028536574746c656d656e740400cd0701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c536574746c656d656e742c2052756e74696d653e00250028537461746973746963730400e10701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c537461746973746963732c2052756e74696d653e0026000c53746f0400f50701a10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53746f2c2052756e74696d653e0027002054726561737572790400050801b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54726561737572792c2052756e74696d653e0028001c5574696c6974790400110801b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5574696c6974792c2052756e74696d653e002900104261736504001d0801a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426173652c2052756e74696d653e002a003845787465726e616c4167656e74730400210801cd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c45787465726e616c4167656e74732c2052756e74696d653e002b001c52656c617965720400250801b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c52656c617965722c2052756e74696d653e002c001c526577617264730400290801b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c526577617264732c2052756e74696d653e002d0024546573745574696c730400310801b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546573745574696c732c2052756e74696d653e00320000d505084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279390101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f766519010110626f6f6c00011063616c6cd1050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f766519010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ed905083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001086174f401444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572732501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652edd05084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279390101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f766519010110626f6f6c00011063616c6cd1050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f766519010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ee105083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001086174f401444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572732501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ee505084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279390101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f766519010110626f6f6c00011063616c6cd1050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f766519010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ee905083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001086174f401444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572732501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652eed05083c70616c6c65745f6d756c74697369671043616c6c04045400014c3c6372656174655f6d756c746973696708011c7369676e657273690101705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000134736967735f726571756972656420010c75363400001448437265617465732061206d756c7469736967002c2320417267756d656e7473a5012a20607369676e65727360202d205369676e657273206f6620746865206d756c7469736967202854686579206e65656420746f2061636365707420617574686f72697a6174696f6e206265666f72652074686579206172652061637475616c6c79206164646564292e19012a2060736967735f726571756972656460202d204e756d626572206f66207369677320726571756972656420746f2070726f636573732061206d756c74692d7369672074782e986372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6964656e746974791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616cd1050140426f783c543a3a50726f706f73616c3e000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736519010110626f6f6c0001203d01437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e846372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6b65791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616cd1050140426f783c543a3a50726f706f73616c3e000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736519010110626f6f6c0002203d01437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e6c6372656174655f70726f706f73616c5f61735f6964656e746974791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616cd1050140426f783c543a3a50726f706f73616c3e000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736519010110626f6f6c0003206c437265617465732061206d756c74697369672070726f706f73616c002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e586372656174655f70726f706f73616c5f61735f6b65791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616cd1050140426f783c543a3a50726f706f73616c3e000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736519010110626f6f6c0004206c437265617465732061206d756c74697369672070726f706f73616c002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4c617070726f76655f61735f6964656e746974790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c753634000518e4417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea42a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e38617070726f76655f61735f6b65790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340006183101417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea42a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4872656a6563745f61735f6964656e746974790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c753634000718e052656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea02a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e3472656a6563745f61735f6b65790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340008182d0152656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea02a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e886163636570745f6d756c74697369675f7369676e65725f61735f6964656e7469747904011c617574685f696420010c7536340009100d01416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206964656e746974792e002c2320417267756d656e7473ac2a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e746163636570745f6d756c74697369675f7369676e65725f61735f6b657904011c617574685f696420010c753634000a102901416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206b657920284163636f756e744964292e002c2320417267756d656e7473ac2a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e4c6164645f6d756c74697369675f7369676e65720401187369676e65726d01015c5369676e61746f72793c543a3a4163636f756e7449643e000b102901416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e002c2320417267756d656e7473782a20607369676e657260202d205369676e61746f727920746f206164642e5872656d6f76655f6d756c74697369675f7369676e65720401187369676e65726d01015c5369676e61746f72793c543a3a4163636f756e7449643e000c103d0152656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e002c2320417267756d656e7473842a20607369676e657260202d205369676e61746f727920746f2072656d6f76652e806164645f6d756c74697369675f7369676e6572735f7669615f63726561746f720801206d756c7469736967000130543a3a4163636f756e74496400011c7369676e657273690101705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000d244501416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865246d756c74697369672e002c2320417267756d656e74739c2a20606d756c746973696760202d2041646472657373206f6620746865206d756c746920736967842a20607369676e65727360202d205369676e61746f7269657320746f206164642e00202320576569676874a4603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e2829608c72656d6f76655f6d756c74697369675f7369676e6572735f7669615f63726561746f720801206d756c7469736967000130543a3a4163636f756e74496400011c7369676e657273690101705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000e248c52656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672ef054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865206d756c74697369672e002c2320417267756d656e74739c2a20606d756c746973696760202d2041646472657373206f6620746865206d756c74697369672e902a20607369676e65727360202d205369676e61746f7269657320746f2072656d6f76652e00202320576569676874a4603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e282960506368616e67655f736967735f7265717569726564040134736967735f726571756972656420010c753634000f144d014368616e67657320746865206e756d626572206f66207369676e6174757265732072657175697265642062792061206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865406d756c746973696720697473656c662e002c2320417267756d656e7473d82a2060736967735f726571756972656460202d204e6577206e756d626572206f66207265717569726564207369676e6174757265732e5c6d616b655f6d756c74697369675f7365636f6e646172790401206d756c7469736967000130543a3a4163636f756e7449640010146901416464732061206d756c74697369672061732061207365636f6e64617279206b6579206f662063757272656e7420646964206966207468652063757272656e7420646964206973207468652063726561746f72206f6620746865246d756c74697369672e002c2320417267756d656e7473802a20606d756c746973696760202d206d756c7469207369672061646472657373546d616b655f6d756c74697369675f7072696d6172790801206d756c7469736967000130543a3a4163636f756e7449640001506f7074696f6e616c5f6364645f617574685f6964f4012c4f7074696f6e3c7536343e0011145d01416464732061206d756c746973696720617320746865207072696d617279206b6579206f66207468652063757272656e7420646964206966207468652063757272656e7420444944206973207468652063726561746f72406f6620746865206d756c74697369672e002c2320417267756d656e7473842a20606d756c74695f73696760202d206d756c746920736967206164647265737368657865637574655f7363686564756c65645f70726f706f73616c1001206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340001306d756c74697369675f6469647c01284964656e7469747949640001405f70726f706f73616c5f7765696768742001185765696768740012047101526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20666f7220657865637574696e67207363686564756c6564206d756c74697369672070726f706f73616c2e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef105083470616c6c65745f6272696467651043616c6c040454000144446368616e67655f636f6e74726f6c6c6572040128636f6e74726f6c6c6572000130543a3a4163636f756e744964000010a04368616e6765732074686520636f6e74726f6c6c6572206163636f756e742061732061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e306368616e67655f61646d696e04011461646d696e000130543a3a4163636f756e744964000110744368616e67657320746865206272696467652061646d696e206b65792e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e3c6368616e67655f74696d656c6f636b04012074696d656c6f636b100138543a3a426c6f636b4e756d626572000210704368616e676573207468652074696d656c6f636b20706572696f642e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e18667265657a650003145d01467265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c65206966206974206973206e6f7420616c72656164792066726f7a656e2e205768656e2074686549016272696467652069732066726f7a656e2c20617474656d70746564207472616e73616374696f6e732067657420706f7374706f6e656420696e7374656164206f662067657474696e672068616e646c65642e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e20756e667265657a650004101101556e667265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c652069662069742069732066726f7a656e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c6368616e67655f6272696467655f6c696d6974080118616d6f756e7418011c42616c616e63650001206475726174696f6e100138543a3a426c6f636b4e756d626572000514684368616e6765732074686520627269646765206c696d6974732e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ea42d20604469766973696f6e42795a65726f6020696620606475726174696f6e60206973207a65726f2e586368616e67655f6272696467655f6578656d707465640401206578656d70746564f505015c5665633c284964656e7469747949642c20626f6f6c293e0006109c4368616e6765732074686520627269646765206c696d6974206578656d70746564206c6973742e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e58666f7263655f68616e646c655f6272696467655f74780401246272696467655f74787501015842726964676554783c543a3a4163636f756e7449643e0007142501466f726365732068616e646c696e672061207472616e73616374696f6e20627920627970617373696e672074686520627269646765206c696d697420616e642074696d656c6f636b2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e21012d20604e6f56616c69644364646020696620606272696467655f74782e726563697069656e746020646f6573206e6f74206861766520612076616c69642043444420636c61696d2e5c62617463685f70726f706f73655f6272696467655f74780401286272696467655f747873fd05016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000824450150726f706f736573206120766563746f72206f6620627269646765207472616e73616374696f6e732e2054686520766563746f722069732070726f63657373656420756e74696c207468652066697273744d0170726f706f73616c2077686963682063617573657320616e206572726f722c20696e207768696368206361736520746865206572726f722069732072657475726e656420616e64207468652072657374206f667070726f706f73616c7320617265206e6f742070726f6365737365642e00242323204572726f7273c82d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e00202320576569676874b0603530305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829604470726f706f73655f6272696467655f74780401246272696467655f74787501015842726964676554783c543a3a4163636f756e7449643e000918490150726f706f736573206120627269646765207472616e73616374696f6e2c20776869636820616d6f756e747320746f206d616b696e672061206d756c74697369672070726f706f73616c20666f72207468655501627269646765207472616e73616374696f6e20696620746865207472616e73616374696f6e206973206e6577206f7220617070726f76696e6720616e206578697374696e672070726f706f73616c20696620746865987472616e73616374696f6e2068617320616c7265616479206265656e2070726f706f7365642e00242323204572726f7273c82d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e4068616e646c655f6272696467655f74780401246272696467655f74787501015842726964676554783c543a3a4163636f756e7449643e000a18c048616e646c657320616e20617070726f76656420627269646765207472616e73616374696f6e2070726f706f73616c2e00242323204572726f727319012d206042616443616c6c65726020696620606f726967696e60206973206e6f74206053656c663a3a636f6e74726f6c6c657260206f7220206053656c663a3a61646d696e602eec2d206054696d656c6f636b656454786020696620746865207472616e73616374696f6e20737461747573206973206054696d656c6f636b6564602e09012d206050726f706f73616c416c726561647948616e646c65646020696620746865207472616e73616374696f6e20737461747573206973206048616e646c6564602e28667265657a655f7478730401286272696467655f747873fd05016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000b2088467265657a657320676976656e20627269646765207472616e73616374696f6e732e8501496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e00202320576569676874b0603430305f3030305f303030202b20325f3030305f303030202a206272696467655f7478732e6c656e28296030756e667265657a655f7478730401286272696467655f747873fd05016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000c2090556e667265657a657320676976656e20627269646765207472616e73616374696f6e732e8501496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e00202320576569676874b0603430305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829606868616e646c655f7363686564756c65645f6272696467655f74780401246272696467655f74787501015842726964676554783c543a3a4163636f756e7449643e000d189901526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f2068616e646c652061207363686564756c65642074696d656c6f636b656420627269646765207472616e73616374696f6e2e002023204572726f7273982d20604261644f726967696e6020696620606f726967696e60206973206e6f7420726f6f742ef82d206050726f706f73616c416c726561647948616e646c656460206966207472616e73616374696f6e20737461747573206973206048616e646c6564602ebc2d206046726f7a656e547860206966207472616e73616374696f6e20737461747573206973206046726f7a656e602e406164645f667265657a655f61646d696e040130667265657a655f61646d696e000130543a3a4163636f756e744964000e104c416464206120667265657a652061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c72656d6f76655f667265657a655f61646d696e040130667265657a655f61646d696e000130543a3a4163636f756e744964000f105852656d6f7665206120667265657a652061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e2872656d6f76655f7478730401286272696467655f747873fd05016c5665633c42726964676554783c543a3a4163636f756e7449643e3e0010148452656d6f766520676976656e20627269646765207472616e73616374696f6e732e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ed02d20604e6f7446726f7a656e60206966206120747820696e20606272696467655f74787360206973206e6f742066726f7a656e2e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef505000002f90500f905000004087c190100fd050000027501000106083870616c6c65745f7374616b696e671043616c6c04045400018010626f6e640c0128636f6e74726f6c6c65723905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565cd01013042616c616e63654f663c543e00011470617965650506017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e000058610154616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c80626520746865206163636f756e74207468617420636f6e74726f6c732069742e002d016076616c756560206d757374206265206d6f7265207468616e2074686520606d696e696d756d5f62616c616e636560207370656369666965642062792060543a3a43757272656e6379602e002101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e003c456d6974732060426f6e646564602e002823203c7765696768743ed02d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e1c2d204f2831292e642d20546872656520657874726120444220656e74726965732e004d014e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e65643d01756e6c6573732074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e482d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a2d012d20526561643a20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c2043757272656e74204572612c20486973746f72792044657074682c204c6f636b73dc2d2057726974653a20426f6e6465642c2050617965652c205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e28626f6e645f65787472610401386d61785f6164646974696f6e616ccd01013042616c616e63654f663c543e000154610141646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e636520757030666f72207374616b696e672e004d01557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e6101556e6c696b65205b60626f6e64605d206f72205b60756e626f6e64605d20746869732066756e6374696f6e20646f6573206e6f7420696d706f736520616e79206c696d69746174696f6e206f6e2074686520616d6f756e7448746861742063616e2062652061646465642e005d01546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c657220616e64f469742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e003c456d6974732060426f6e646564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e1c2d204f2831292e3c2d204f6e6520444220656e7472792e302d2d2d2d2d2d2d2d2d2d2d2d284442205765696768743a11012d20526561643a2045726120456c656374696f6e205374617475732c20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c204c6f636b73a02d2057726974653a205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e18756e626f6e6404011476616c7565cd01013042616c616e63654f663c543e00028051015363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e64fc706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e2101543a3a43757272656e63793a3a6d696e696d756d5f62616c616e636528292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e0045014f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c20796f752063616e2063616c6c206077697468647261775f756e626f6e6465646020746f2061637475616c6c79206d6f7665bc7468652066756e6473206f7574206f66206d616e6167656d656e7420726561647920666f72207472616e736665722e0039014e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d41585f554e4c4f434b494e475f4348554e4b536029390163616e20636f2d657869737473206174207468652073616d652074696d652e20496e207468617420636173652c205b6043616c6c3a3a77697468647261775f756e626f6e646564605d206e656564f8746f2062652063616c6c656420666972737420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e0044456d6974732060556e626f6e646564602e009453656520616c736f205b6043616c6c3a3a77697468647261775f756e626f6e646564605d2e002823203c7765696768743e3d012d20496e646570656e64656e74206f662074686520617267756d656e74732e204c696d697465642062757420706f74656e7469616c6c79206578706c6f697461626c6520636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732e61012d20456163682063616c6c20287265717569726573207468652072656d61696e646572206f662074686520626f6e6465642062616c616e636520746f2062652061626f766520606d696e696d756d5f62616c616e636560296d01202077696c6c2063617573652061206e657720656e74727920746f20626520696e73657274656420696e746f206120766563746f722028604c65646765722e756e6c6f636b696e676029206b65707420696e2073746f726167652e4d012020546865206f6e6c792077617920746f20636c65616e207468652061666f72656d656e74696f6e65642073746f72616765206974656d20697320616c736f20757365722d636f6e74726f6c6c6564207669615820206077697468647261775f756e626f6e646564602e3c2d204f6e6520444220656e7472792e282d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a21012d20526561643a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e744572612c204c6f636b732c205c5b4f726967696e204163636f756e745c5da82d2057726974653a204c6f636b732c204c65646765722c205c5b4f726967696e204163636f756e745c5d243c2f7765696768743e4477697468647261775f756e626f6e6465640401486e756d5f736c617368696e675f7370616e7310010c75333200037c290152656d6f766520616e7920756e6c6f636b6564206368756e6b732066726f6d207468652060756e6c6f636b696e67602071756575652066726f6d206f7572206d616e6167656d656e742e0031015468697320657373656e7469616c6c7920667265657320757020746861742062616c616e636520746f206265207573656420627920746865207374617368206163636f756e7420746f20646f4877686174657665722069742077616e74732e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e0048456d697473206057697468647261776e602e006853656520616c736f205b6043616c6c3a3a756e626f6e64605d2e002823203c7765696768743e51012d20436f756c6420626520646570656e64656e74206f6e2074686520606f726967696e6020617267756d656e7420616e6420686f77206d7563682060756e6c6f636b696e6760206368756e6b732065786973742e410120497420696d706c6965732060636f6e736f6c69646174655f756e6c6f636b656460207768696368206c6f6f7073206f76657220604c65646765722e756e6c6f636b696e67602c207768696368206973f020696e6469726563746c7920757365722d636f6e74726f6c6c65642e20536565205b60756e626f6e64605d20666f72206d6f72652064657461696c2e75012d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732c20796574207468652073697a65206f6620776869636820636f756c64206265206c61726765206261736564206f6e20606c6564676572602ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e3c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0501436f6d706c6578697479204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2072656d6f76651c5570646174653a21012d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c204c6f636b732c205b4f726967696e204163636f756e745da42d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c6564676572144b696c6c3a41012d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c20426f6e6465642c20536c617368696e67205370616e732c205b4f726967696e4420204163636f756e745d2c204c6f636b734d012d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c6420205b4f726967696e204163636f756e745d2c204c6f636b73702d2057726974657320456163683a205370616e536c617368202a205309014e4f54453a2057656967687420616e6e6f746174696f6e20697320746865206b696c6c207363656e6172696f2c20776520726566756e64206f74686572776973652e2c23203c2f7765696768743e2076616c696461746504011470726566730906013856616c696461746f725072656673000444e44465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e2c2d2d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a8c2d20526561643a2045726120456c656374696f6e205374617475732c204c65646765727c2d2057726974653a204e6f6d696e61746f72732c2056616c696461746f72732c23203c2f7765696768743e206e6f6d696e61746504011c74617267657473110601a05665633c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e00054c0d014465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e004d01456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e20546869732063616e206f6e6c792062652063616c6c6564207768656e885b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743e2d012d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f662060746172676574736020284e29fc77686963682069732063617070656420617420436f6d7061637441737369676e6d656e74733a3a4c494d495420284d41585f4e4f4d494e4154494f4e53292ed42d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e242d2d2d2d2d2d2d2d2d305765696768743a204f284e29807768657265204e20697320746865206e756d626572206f662074617267657473284442205765696768743ac42d2052656164733a2045726120456c656374696f6e205374617475732c204c65646765722c2043757272656e7420457261802d205772697465733a2056616c696461746f72732c204e6f6d696e61746f72732c23203c2f7765696768743e146368696c6c000644c44465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e502d20436f6e7461696e73206f6e6520726561642ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e202d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a842d20526561643a20457261456c656374696f6e5374617475732c204c65646765727c2d2057726974653a2056616c696461746f72732c204e6f6d696e61746f72732c23203c2f7765696768743e247365745f706179656504011470617965650506017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e000740b42852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e242d2d2d2d2d2d2d2d2d382d205765696768743a204f283129302d204442205765696768743a48202020202d20526561643a204c656467657248202020202d2057726974653a2050617965652c23203c2f7765696768743e387365745f636f6e74726f6c6c6572040128636f6e74726f6c6c65723905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263650008408c2852652d297365742074686520636f6e74726f6c6c6572206f6620612073746173682e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e282d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743af02d20526561643a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c6572f42d2057726974653a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c65722c23203c2f7765696768743e4c7365745f76616c696461746f725f636f756e7404010c6e65777104010c75333200092090536574732074686520696465616c206e756d626572206f662076616c696461746f72732e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e305765696768743a204f2831295857726974653a2056616c696461746f7220436f756e742c23203c2f7765696768743e60696e6372656173655f76616c696461746f725f636f756e740401286164646974696f6e616c7104010c753332000a1ca8496e6372656d656e74732074686520696465616c206e756d626572206f662076616c696461746f72732e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e8053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e2c23203c2f7765696768743e547363616c655f76616c696461746f725f636f756e74040118666163746f721506011c50657263656e74000b1cd05363616c652075702074686520696465616c206e756d626572206f662076616c696461746f7273206279206120666163746f722e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e8053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e2c23203c2f7765696768743e686164645f7065726d697373696f6e65645f76616c696461746f720801206964656e746974797c01284964656e746974794964000138696e74656e6465645f636f756e741906012c4f7074696f6e3c7533323e000c203d01476f7665726e616e636520636f6d6d6974746565206f6e20322f3320726473206d616a6f726974792063616e20696e74726f647563652061206e657720706f74656e7469616c206964656e746974799d01746f2074686520706f6f6c206f66207065726d697373696f6e656420656e7469746965732077686f2063616e2072756e2076616c696461746f72732e205374616b696e67206d6f64756c65207573657320605065726d697373696f6e65644964656e74697479605501746f20656e737572652076616c696461746f7273206861766520636f6d706c65746564204b594220636f6d706c69616e636520616e6420636f6e736964657273207468656d20666f722076616c69646174696f6e2e002c2320417267756d656e7473e82a206f726967696e205265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e882a206964656e746974792056616c696461746f722773204964656e7469747949642e05012a20696e74656e6465645f636f756e74204e6f2e206f662076616c696461746f727320676976656e206964656e7469747920696e74656e647320746f2072756e2e7472656d6f76655f7065726d697373696f6e65645f76616c696461746f720401206964656e746974797c01284964656e746974794964000d1ca90152656d6f766520616e206964656e746974792066726f6d2074686520706f6f6c206f66202877616e6e616265292076616c696461746f72206964656e7469746965732e204566666563747320617265206b6e6f776e20696e20746865206e6578742073657373696f6e2e19015374616b696e67206d6f64756c6520636865636b7320605065726d697373696f6e65644964656e746974796020746f20656e737572652076616c696461746f7273206861766560636f6d706c65746564204b594220636f6d706c69616e6365002c2320417267756d656e7473f02a206f726967696e205265717569726564206f726967696e20666f722072656d6f76696e67206120706f74656e7469616c2076616c696461746f722e882a206964656e746974792056616c696461746f722773204964656e7469747949642e7876616c69646174655f6364645f6578706972795f6e6f6d696e61746f727304011c74617267657473ec01445665633c543a3a4163636f756e7449643e000e28a056616c696461746520746865206e6f6d696e61746f727320434444206578706972792074696d652e00f0496620616e206163636f756e742066726f6d206120676976656e20736574206f662061646472657373206973206e6f6d696e6174696e67207468656ed0636865636b2074686520434444206578706972792074696d65206f6620697420616e64206966206974206973206578706972656431017468656e20746865206163636f756e742073686f756c6420626520756e626f6e64656420616e642072656d6f7665642066726f6d20746865206e6f6d696e6174696e672070726f636573732e0024233c7765696768743e982d20446570656e6473206f6e20706173736564206c697374206f66204163636f756e7449642e29012d20446570656e6473206f6e20746865206e6f2e206f6620636c61696d206973737565727320616e206163636f756e7449642068617320666f722074686520434444206578706972792e28233c2f7765696768743e487365745f636f6d6d697373696f6e5f63617004011c6e65775f6361708d01011c50657262696c6c000f1421014368616e67657320636f6d6d697373696f6e2072617465207768696368206170706c69657320746f20616c6c2076616c696461746f72732e204f6e6c7920476f7665726e616e6365a8636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e002c2320417267756d656e74738c2a20606e65775f6361706020746865206e657720636f6d6d697373696f6e206361702e587365745f6d696e5f626f6e645f7468726573686f6c640401246e65775f76616c756518013042616c616e63654f663c543e00101401014368616e676573206d696e20626f6e642076616c756520746f206265207573656420696e2076616c696461746528292e204f6e6c7920476f7665726e616e6365a8636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e002c2320417267756d656e7473742a20606e65775f76616c75656020746865206e6577206d696e696d756d34666f7263655f6e6f5f65726173001124ac466f72636520746865726520746f206265206e6f206e6577206572617320696e646566696e6974656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e3c2d204e6f20617267756d656e74732e382d205765696768743a204f283129442d2057726974653a20466f7263654572612c23203c2f7765696768743e34666f7263655f6e65775f6572610012284901466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f6620746865206e6578742073657373696f6e2e20416674657220746869732c2069742077696c6c2062659c726573657420746f206e6f726d616c20286e6f6e2d666f7263656429206265686176696f75722e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e3c2d204e6f20617267756d656e74732e382d205765696768743a204f283129402d20577269746520466f7263654572612c23203c2f7765696768743e447365745f696e76756c6e657261626c6573040134696e76756c6e657261626c6573ec01445665633c543a3a4163636f756e7449643e001320c8536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e182d204f285629582d2057726974653a20496e76756c6e657261626c65732c23203c2f7765696768743e34666f7263655f756e7374616b650801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c7533320014280901466f72636520612063757272656e74207374616b657220746f206265636f6d6520636f6d706c6574656c7920756e7374616b65642c20696d6d6564696174656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743ee84f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2062652072656d6f766564b452656164733a20426f6e6465642c20536c617368696e67205370616e732c204163636f756e742c204c6f636b7381015772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c204163636f756e742c204c6f636b736857726974657320456163683a205370616e536c617368202a20532c23203c2f7765696768743e50666f7263655f6e65775f6572615f616c776179730015200101466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f662073657373696f6e7320696e646566696e6974656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e382d205765696768743a204f283129442d2057726974653a20466f7263654572612c23203c2f7765696768743e5463616e63656c5f64656665727265645f736c61736808010c657261100120457261496e646578000134736c6173685f696e6469636573390401205665633c7533323e0016349443616e63656c20656e6163746d656e74206f66206120646566657272656420736c6173682e00b043616e2062652063616c6c6564206279207468652060543a3a536c61736843616e63656c4f726967696e602e000101506172616d65746572733a2065726120616e6420696e6469636573206f662074686520736c617368657320666f7220746861742065726120746f206b696c6c2e002823203c7765696768743e50436f6d706c65786974793a204f2855202b205329b477697468205520756e6170706c69656420736c6173686573207765696768746564207769746820553d31303030d0616e64205320697320746865206e756d626572206f6620736c61736820696e646963657320746f2062652063616e63656c65642e642d20526561643a20556e6170706c69656420536c6173686573682d2057726974653a20556e6170706c69656420536c61736865732c23203c2f7765696768743e387061796f75745f7374616b65727308013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e6465780017640d01506179206f757420616c6c20746865207374616b65727320626568696e6420612073696e676c652076616c696461746f7220666f7220612073696e676c65206572612e0049012d206076616c696461746f725f73746173686020697320746865207374617368206163636f756e74206f66207468652076616c696461746f722e205468656972206e6f6d696e61746f72732c20757020746f2501202060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602c2077696c6c20616c736f207265636569766520746865697220726577617264732e31012d206065726160206d617920626520616e7920657261206265747765656e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e005501546865206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2e20416e79206163636f756e742063616e2063616c6c20746869732066756e6374696f6e2c206576656e206966746974206973206e6f74206f6e65206f6620746865207374616b6572732e00fc546869732063616e206f6e6c792062652063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743efc2d2054696d6520636f6d706c65786974793a206174206d6f7374204f284d61784e6f6d696e61746f72526577617264656450657256616c696461746f72292ec02d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e2c2d2d2d2d2d2d2d2d2d2d2d19014e20697320746865204e756d626572206f66207061796f75747320666f72207468652076616c696461746f722028696e636c7564696e67207468652076616c696461746f72291c5765696768743a842d205265776172642044657374696e6174696f6e205374616b65643a204f284e29c02d205265776172642044657374696e6174696f6e20436f6e74726f6c6c657220284372656174696e67293a204f284e29284442205765696768743a25012d20526561643a20457261456c656374696f6e5374617475732c2043757272656e744572612c20486973746f727944657074682c204572617356616c696461746f725265776172642c29012020202020202020457261735374616b657273436c69707065642c2045726173526577617264506f696e74732c204572617356616c696461746f725072656673202838206974656d73290d012d205265616420456163683a20426f6e6465642c204c65646765722c2050617965652c204c6f636b732c2053797374656d204163636f756e74202835206974656d7329d42d20577269746520456163683a2053797374656d204163636f756e742c204c6f636b732c204c6564676572202833206974656d73292c23203c2f7765696768743e187265626f6e6404011476616c7565cd01013042616c616e63654f663c543e001838dc5265626f6e64206120706f7274696f6e206f6620746865207374617368207363686564756c656420746f20626520756e6c6f636b65642e005101546865206469737061746368206f726967696e206d757374206265207369676e65642062792074686520636f6e74726f6c6c65722c20616e642069742063616e206265206f6e6c792063616c6c6564207768656e885b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ed02d2054696d6520636f6d706c65786974793a204f284c292c207768657265204c20697320756e6c6f636b696e67206368756e6b73902d20426f756e64656420627920604d41585f554e4c4f434b494e475f4348554e4b53602ef02d2053746f72616765206368616e6765733a2043616e277420696e6372656173652073746f726167652c206f6e6c792064656372656173652069742e3c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743afc202020202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c204c6f636b732c205b4f726967696e204163636f756e745db4202020202d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e447365745f686973746f72795f64657074680801446e65775f686973746f72795f646570746871040120457261496e6465780001485f6572615f6974656d735f64656c657465647104010c7533320019542d015365742060486973746f72794465707468602076616c75652e20546869732066756e6374696f6e2077696c6c2064656c65746520616e7920686973746f727920696e666f726d6174696f6e7c7768656e2060486973746f727944657074686020697320726564756365642e002c506172616d65746572733a0d012d20606e65775f686973746f72795f6465707468603a20546865206e657720686973746f727920646570746820796f7520776f756c64206c696b6520746f207365742e45012d20606572615f6974656d735f64656c65746564603a20546865206e756d626572206f66206974656d7320746861742077696c6c2062652064656c6574656420627920746869732064697370617463682e4101202020546869732073686f756c64207265706f727420616c6c207468652073746f72616765206974656d7320746861742077696c6c2062652064656c6574656420627920636c656172696e67206f6c64410120202065726120686973746f72792e204e656564656420746f207265706f727420616e2061636375726174652077656967687420666f72207468652064697370617463682e20547275737465642062799c20202060526f6f746020746f207265706f727420616e206163637572617465206e756d6265722e00504f726967696e206d75737420626520726f6f742e002823203c7765696768743edc2d20453a204e756d626572206f6620686973746f7279206465707468732072656d6f7665642c20692e652e203130202d3e2037203d2033382d205765696768743a204f284529302d204442205765696768743a9c202020202d2052656164733a2043757272656e74204572612c20486973746f72792044657074686c202020202d205772697465733a20486973746f72792044657074682d01202020202d20436c6561722050726566697820456163683a20457261205374616b6572732c204572615374616b657273436c69707065642c204572617356616c696461746f7250726566737d01202020202d2057726974657320456163683a204572617356616c696461746f725265776172642c2045726173526577617264506f696e74732c2045726173546f74616c5374616b652c2045726173537461727453657373696f6e496e6465782c23203c2f7765696768743e28726561705f73746173680801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c753332001a3c5d0152656d6f766520616c6c20646174612073747275637475726520636f6e6365726e696e672061207374616b65722f7374617368206f6e6365206974732062616c616e636520697320617420746865206d696e696d756d2e5d015468697320697320657373656e7469616c6c79206571756976616c656e7420746f206077697468647261775f756e626f6e64656460206578636570742069742063616e2062652063616c6c656420627920616e796f6e65f4616e6420746865207461726765742060737461736860206d7573742068617665206e6f2066756e6473206c656674206265796f6e64207468652045442e008c546869732063616e2062652063616c6c65642066726f6d20616e79206f726967696e2e00fc2d20607374617368603a20546865207374617368206163636f756e7420746f20726561702e204974732062616c616e6365206d757374206265207a65726f2e002823203c7765696768743e2101436f6d706c65786974793a204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e73206f6e20746865206163636f756e742e284442205765696768743ad42d2052656164733a205374617368204163636f756e742c20426f6e6465642c20536c617368696e67205370616e732c204c6f636b73a1012d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c205374617368204163636f756e742c204c6f636b73702d2057726974657320456163683a205370616e536c617368202a20532c23203c2f7765696768743e607375626d69745f656c656374696f6e5f736f6c7574696f6e14011c77696e6e6572731d06014c5665633c56616c696461746f72496e6465783e00011c636f6d7061637421060148436f6d7061637441737369676e6d656e747300011473636f7265ed060134456c656374696f6e53636f726500010c657261100120457261496e64657800011073697a65f1060130456c656374696f6e53697a65001bc4e05375626d697420616e20656c656374696f6e20726573756c7420746f2074686520636861696e2e2049662074686520736f6c7574696f6e3a0030312e2069732076616c69642e1101322e206861732061206265747465722073636f7265207468616e206120706f74656e7469616c6c79206578697374696e6720736f6c7574696f6e206f6e20636861696e2e00807468656e2c2069742077696c6c206265205f7075745f206f6e20636861696e2e00a84120736f6c7574696f6e20636f6e7369737473206f662074776f20706965636573206f6620646174613a00f0312e206077696e6e657273603a206120666c617420766563746f72206f6620616c6c207468652077696e6e657273206f662074686520726f756e642e4d01322e206061737369676e6d656e7473603a2074686520636f6d706163742076657273696f6e206f6620616e2061737369676e6d656e7420766563746f72207468617420656e636f6465732074686520656467652c202020776569676874732e001d01426f7468206f66207768696368206d617920626520636f6d7075746564207573696e67205f70687261676d656e5f2c206f7220616e79206f7468657220616c676f726974686d2e00a44164646974696f6e616c6c792c20746865207375626d6974746572206d7573742070726f766964653a00c42d20546865206073636f7265602074686174207468657920636c61696d20746865697220736f6c7574696f6e206861732e004901426f74682076616c696461746f727320616e64206e6f6d696e61746f72732077696c6c20626520726570726573656e74656420627920696e646963657320696e2074686520736f6c7574696f6e2e205468651901696e64696365732073686f756c6420726573706563742074686520636f72726573706f6e64696e6720747970657320285b6056616c696461746f72496e646578605d20616e642d015b604e6f6d696e61746f72496e646578605d292e204d6f72656f7665722c20746865792073686f756c642062652076616c6964207768656e207573656420746f20696e64657820696e746f4d015b60536e617073686f7456616c696461746f7273605d20616e64205b60536e617073686f744e6f6d696e61746f7273605d2e20416e7920696e76616c696420696e6465782077696c6c206361757365207468655d01736f6c7574696f6e20746f2062652072656a65637465642e2054686573652074776f2073746f72616765206974656d73206172652073657420647572696e672074686520656c656374696f6e2077696e646f7720616e64946d6179206265207573656420746f2064657465726d696e652074686520696e64696365732e005c4120736f6c7574696f6e2069732076616c69642069663a00e0302e204974206973207375626d6974746564207768656e205b60457261456c656374696f6e537461747573605d20697320604f70656e602ef4312e2049747320636c61696d65642073636f726520697320657175616c20746f207468652073636f726520636f6d7075746564206f6e2d636861696e2ea8322e2050726573656e74732074686520636f7272656374206e756d626572206f662077696e6e6572732e5101332e20416c6c20696e6465786573206d7573742062652076616c7565206163636f7264696e6720746f2074686520736e617073686f7420766563746f72732e20416c6c20656467652076616c756573206d7573745901202020616c736f20626520636f727265637420616e642073686f756c64206e6f74206f766572666c6f7720746865206772616e756c6172697479206f662074686520726174696f20747970652028692e652e203235363c2020206f722062696c6c696f6e292e0901342e20466f72206561636820656467652c20616c6c2074617267657473206172652061637475616c6c79206e6f6d696e617465642062792074686520766f7465722e68352e2048617320636f72726563742073656c662d766f7465732e00bc4120736f6c7574696f6e732073636f726520697320636f6e736973746564206f66203320706172616d65746572733a006101312e20606d696e207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d6178696d697a65642e6101322e206073756d207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d696e696d697a65642e3d01332e206073756d207b20737570706f72742e746f74616c5e32207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265982020206d696e696d697a65642028746f20656e73757265206c6573732076617269616e636529002823203c7765696768743e1501546865207472616e73616374696f6e20697320617373756d656420746f20626520746865206c6f6e6765737420706174682c20612062657474657220736f6c7574696f6e2ea020202d20496e697469616c20736f6c7574696f6e20697320616c6d6f7374207468652073616d652e410120202d20576f72736520736f6c7574696f6e20697320726574726163656420696e207072652d64697370617463682d636865636b73207768696368207365747320697473206f776e207765696768742e2c23203c2f7765696768743e847375626d69745f656c656374696f6e5f736f6c7574696f6e5f756e7369676e656414011c77696e6e6572731d06014c5665633c56616c696461746f72496e6465783e00011c636f6d7061637421060148436f6d7061637441737369676e6d656e747300011473636f7265ed060134456c656374696f6e53636f726500010c657261100120457261496e64657800011073697a65f1060130456c656374696f6e53697a65001c24bc556e7369676e65642076657273696f6e206f6620607375626d69745f656c656374696f6e5f736f6c7574696f6e602e0059014e6f746520746861742074686973206d757374207061737320746865205b6056616c6964617465556e7369676e6564605d20636865636b207768696368206f6e6c7920616c6c6f7773207472616e73616374696f6e735d0166726f6d20746865206c6f63616c206e6f646520746f20626520696e636c756465642e20496e206f7468657220776f7264732c206f6e6c792074686520626c6f636b20617574686f722063616e20696e636c7564652061647472616e73616374696f6e20696e2074686520626c6f636b2e002823203c7765696768743e84536565205b607375626d69745f656c656374696f6e5f736f6c7574696f6e605d2e2c23203c2f7765696768743e607061796f75745f7374616b6572735f62795f73797374656d08013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e646578001d04210153797374656d2076657273696f6e206f6620607061796f75745f7374616b6572732829602e204f6e6c792062652063616c6c65642062792074686520726f6f74206f726967696e2e6c6368616e67655f736c617368696e675f616c6c6f7765645f666f7204013c736c617368696e675f73776974636891010138536c617368696e67537769746368001e14690153776974636820736c617368696e6720737461747573206f6e20746865206261736973206f6620676976656e2060536c617368696e67537769746368602e2043616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473742a206f726967696e202d204163636f756e744964206f6620726f6f742e01012a20736c617368696e675f737769746368202d20537769746368207573656420746f2073657420746865207461726765747320666f7220736c617368696e672eb07570646174655f7065726d697373696f6e65645f76616c696461746f725f696e74656e6465645f636f756e740801206964656e746974797c01284964656e7469747949640001486e65775f696e74656e6465645f636f756e7410010c753332001f18d05570646174652074686520696e74656e6465642076616c696461746f7220636f756e7420666f72206120676976656e204449442e002c2320417267756d656e747331012a206f726967696e207768696368206d75737420626520746865207265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e842a206964656e7469747920746f2061646420617320612076616c696461746f722ec42a206e65775f696e74656e6465645f636f756e74204e65772076616c7565206f6620696e74656e64656420636f756e742e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e0506083870616c6c65745f7374616b696e674452657761726444657374696e6174696f6e04244163636f756e74496401000110185374616b656400000014537461736800010028436f6e74726f6c6c65720002001c4163636f756e7404000001244163636f756e744964000300000906083870616c6c65745f7374616b696e673856616c696461746f7250726566730000080128636f6d6d697373696f6e0d06011c50657262696c6c00011c626c6f636b656419010110626f6f6c00000d060000068d0100110600000239050015060c3473705f61726974686d65746963287065725f7468696e67731c50657263656e740000040008010875380000190604184f7074696f6e04045401100108104e6f6e6500000010536f6d6504001000000100001d060000023d03002106083870616c6c65745f7374616b696e6748436f6d7061637441737369676e6d656e74730000400118766f74657331250600000118766f74657332310600000118766f74657333450600000118766f74657334510600000118766f746573355d0600000118766f74657336690600000118766f74657337750600000118766f74657338810600000118766f746573398d060000011c766f746573313099060000011c766f7465733131a5060000011c766f7465733132b1060000011c766f7465733133bd060000011c766f7465733134c9060000011c766f7465733135d5060000011c766f7465733136e106000000250600000229060029060000040871042d06002d060000063d0300310600000235060035060000040c710439062d06003906000004082d063d06003d0600000641060041060c3473705f61726974686d65746963287065725f7468696e677318506572553136000004003d03010c7531360000450600000249060049060000040c71044d062d06004d0600000302000000390600510600000255060055060000040c710459062d06005906000003030000003906005d0600000261060061060000040c710465062d060065060000030400000039060069060000026d06006d060000040c710471062d0600710600000305000000390600750600000279060079060000040c71047d062d06007d0600000306000000390600810600000285060085060000040c710489062d06008906000003070000003906008d0600000291060091060000040c710495062d060095060000030800000039060099060000029d06009d060000040c7104a1062d0600a10600000309000000390600a506000002a90600a9060000040c7104ad062d0600ad060000030a000000390600b106000002b50600b5060000040c7104b9062d0600b9060000030b000000390600bd06000002c10600c1060000040c7104c5062d0600c5060000030c000000390600c906000002cd0600cd060000040c7104d1062d0600d1060000030d000000390600d506000002d90600d9060000040c7104dd062d0600dd060000030e000000390600e106000002e50600e5060000040c7104e9062d0600e9060000030f000000390600ed06000003030000001800f106083870616c6c65745f7374616b696e6730456c656374696f6e53697a65000008012876616c696461746f72732d06013856616c696461746f72496e6465780001286e6f6d696e61746f7273710401384e6f6d696e61746f72496e6465780000f5060c3870616c6c65745f73657373696f6e1870616c6c65741043616c6c040454000108207365745f6b6579730801106b657973f906011c543a3a4b65797300011470726f6f6628011c5665633c75383e000038e453657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b657973602e1d01416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722ec05468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e00d0546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e002823203c7765696768743e11012d20436f6d706c65786974793a20604f283129602e2041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468206f6698202060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642eec2d20446252656164733a20606f726967696e206163636f756e74602c2060543a3a56616c696461746f7249644f66602c20604e6578744b65797360a02d2044625772697465733a20606f726967696e206163636f756e74602c20604e6578744b65797360802d204462526561647320706572206b65792069643a20604b65794f776e657260842d20446257726974657320706572206b65792069643a20604b65794f776e6572602c23203c2f7765696768743e2870757267655f6b657973000140c852656d6f76657320616e792073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c65722e00c05468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e005501546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265205369676e656420616e6420746865206163636f756e74206d757374206265206569746865722062655d01636f6e7665727469626c6520746f20612076616c696461746f72204944207573696e672074686520636861696e2773207479706963616c2061646472657373696e672073797374656d20287468697320757375616c6c7951016d65616e73206265696e67206120636f6e74726f6c6c6572206163636f756e7429206f72206469726563746c7920636f6e7665727469626c6520696e746f20612076616c696461746f722049442028776869636894757375616c6c79206d65616e73206265696e672061207374617368206163636f756e74292e002823203c7765696768743e61012d20436f6d706c65786974793a20604f2831296020696e206e756d626572206f66206b65792074797065732e2041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468a420206f662060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642eec2d20446252656164733a2060543a3a56616c696461746f7249644f66602c20604e6578744b657973602c20606f726967696e206163636f756e7460a02d2044625772697465733a20604e6578744b657973602c20606f726967696e206163636f756e7460842d20446257726974657320706572206b65792069643a20604b65794f776e6572602c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ef9060c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d652c53657373696f6e4b657973000010011c6772616e647061ad0101d03c4772616e647061206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300011062616265c10401c43c42616265206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000124696d5f6f6e6c696e65b90101d43c496d4f6e6c696e65206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300014c617574686f726974795f646973636f76657279fd0601fc3c417574686f72697479446973636f76657279206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c69630000fd060c5873705f617574686f726974795f646973636f766572790c617070185075626c696300000400bd01013c737232353531393a3a5075626c6963000001070c3870616c6c65745f6772616e6470611870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66050701bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f66f9040140543a3a4b65794f776e657250726f6f6600001009015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66050701bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f66f9040140543a3a4b65794f776e657250726f6f6600012409015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e000d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e306e6f74655f7374616c6c656408011464656c6179100138543a3a426c6f636b4e756d62657200016c626573745f66696e616c697a65645f626c6f636b5f6e756d626572100138543a3a426c6f636b4e756d62657200021c19014e6f74652074686174207468652063757272656e7420617574686f7269747920736574206f6620746865204752414e4450412066696e616c697479206761646765742068617325017374616c6c65642e20546869732077696c6c2074726967676572206120666f7263656420617574686f7269747920736574206368616e67652061742074686520626567696e6e696e671d016f6620746865206e6578742073657373696f6e2c20746f20626520656e6163746564206064656c61796020626c6f636b7320616674657220746861742e205468652064656c6179110173686f756c64206265206869676820656e6f75676820746f20736166656c7920617373756d6520746861742074686520626c6f636b207369676e616c6c696e67207468652501666f72636564206368616e67652077696c6c206e6f742062652072652d6f726765642028652e672e203130303020626c6f636b73292e20546865204752414e44504120766f74657273250177696c6c20737461727420746865206e657720617574686f7269747920736574207573696e672074686520676976656e2066696e616c697a656420626c6f636b20617320626173652e584f6e6c792063616c6c61626c6520627920726f6f742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e0507084c73705f66696e616c6974795f6772616e6470614445717569766f636174696f6e50726f6f660804480124044e0110000801187365745f6964200114536574496400013065717569766f636174696f6e0907014845717569766f636174696f6e3c482c204e3e00000907084c73705f66696e616c6974795f6772616e6470613045717569766f636174696f6e0804480124044e011001081c507265766f746504000d070139016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265766f74653c482c204e3e2c0a417574686f726974795369676e61747572653e00000024507265636f6d6d6974040021070141016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265636f6d6d69743c482c204e3e2c0a417574686f726974795369676e61747572653e000100000d07084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401ad010456011107045301150700100130726f756e645f6e756d62657220010c7536340001206964656e74697479ad010108496400011466697273741d07011828562c2053290001187365636f6e641d07011828562c20532900001107084066696e616c6974795f6772616e6470611c507265766f74650804480124044e01100008012c7461726765745f68617368240104480001347461726765745f6e756d6265721001044e000015070c4c73705f66696e616c6974795f6772616e6470610c617070245369676e61747572650000040019070148656432353531393a3a5369676e6174757265000019070c1c73705f636f72651c65643235353139245369676e617475726500000400110201205b75383b2036345d00001d070000040811071507002107084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401ad010456012507045301150700100130726f756e645f6e756d62657220010c7536340001206964656e74697479ad010108496400011466697273742907011828562c2053290001187365636f6e642907011828562c20532900002507084066696e616c6974795f6772616e64706124507265636f6d6d69740804480124044e01100008012c7461726765745f68617368240104480001347461726765745f6e756d6265721001044e000029070000040825071507002d070c4070616c6c65745f696d5f6f6e6c696e651870616c6c65741043616c6c04045400010424686561727462656174080124686561727462656174310701644865617274626561743c543a3a426c6f636b4e756d6265723e0001247369676e6174757265450701bc3c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e61747572650000242823203c7765696768743e61012d20436f6d706c65786974793a20604f284b202b20452960207768657265204b206973206c656e677468206f6620604b6579736020286865617274626561742e76616c696461746f72735f6c656e2920616e642045206973d820206c656e677468206f6620606865617274626561742e6e6574776f726b5f73746174652e65787465726e616c5f61646472657373608820202d20604f284b29603a206465636f64696e67206f66206c656e67746820604b60ac20202d20604f284529603a206465636f64696e672f656e636f64696e67206f66206c656e6774682060456039012d20446252656164733a2070616c6c65745f73657373696f6e206056616c696461746f7273602c2070616c6c65745f73657373696f6e206043757272656e74496e646578602c20604b657973602c5820206052656365697665644865617274626561747360802d2044625772697465733a2060526563656976656448656172746265617473602c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e3107084070616c6c65745f696d5f6f6e6c696e6524486561727462656174042c426c6f636b4e756d626572011000140130626c6f636b5f6e756d62657210012c426c6f636b4e756d6265720001346e6574776f726b5f7374617465350701484f70617175654e6574776f726b537461746500013473657373696f6e5f696e64657810013053657373696f6e496e64657800013c617574686f726974795f696e64657810012441757468496e64657800013876616c696461746f72735f6c656e10010c753332000035070c1c73705f636f7265206f6666636861696e484f70617175654e6574776f726b5374617465000008011c706565725f6964390701304f706171756550656572496400014865787465726e616c5f6164647265737365733d0701505665633c4f70617175654d756c7469616464723e00003907081c73705f636f7265304f70617175655065657249640000040028011c5665633c75383e00003d0700000241070041070c1c73705f636f7265206f6666636861696e3c4f70617175654d756c7469616464720000040028011c5665633c75383e00004507104070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139245369676e61747572650000040049070148737232353531393a3a5369676e6174757265000049070c1c73705f636f72651c73723235353139245369676e617475726500000400110201205b75383b2036345d00004d07082c70616c6c65745f7375646f1043616c6c040454000110107375646f04011063616c6cd1050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000028350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e547375646f5f756e636865636b65645f77656967687408011063616c6cd1050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00011c5f776569676874200118576569676874000128350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e2d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b05375646f207573657220746f20737065636966792074686520776569676874206f66207468652063616c6c2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292ecc2d2054686520776569676874206f6620746869732063616c6c20697320646566696e6564206279207468652063616c6c65722e2c23203c2f7765696768743e1c7365745f6b657904010c6e65773905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365000224710141757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e402d204f6e65204442206368616e67652e2c23203c2f7765696768743e1c7375646f5f617308010c77686f3905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011063616c6cd1050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00032c4d0141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d406120676976656e206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e5107083070616c6c65745f61737365741043616c6c0404540001603c72656769737465725f7469636b65720401187469636b6572a001185469636b657200002405015265676973746572732061206e6577207469636b6572206f7220657874656e64732076616c6964697479206f6620616e206578697374696e67207469636b65722e11014e423a205469636b65722076616c696469747920646f6573206e6f742067657420636172727920666f7277617264207768656e2072656e6577696e67207469636b65722e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e782a20607469636b657260207469636b657220746f2072656769737465722e003423205065726d697373696f6e731c2a204173736574586163636570745f7469636b65725f7472616e7366657204011c617574685f696420010c75363400013068416363657074732061207469636b6572207472616e736665722e002d01436f6e73756d65732074686520617574686f72697a6174696f6e2060617574685f6964602028736565206070616c6c65745f6964656e746974793a3a636f6e73756d655f6175746860292e25014e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292ef82a2060617574685f69646020417574686f72697a6174696f6e204944206f66207469636b6572207472616e7366657220617574686f72697a6174696f6e2e00242323204572726f727369012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f696460206973206e6f7420612076616c6964207469636b6574207472616e7366657220617574686f72697a6174696f6e2e007c6163636570745f61737365745f6f776e6572736869705f7472616e7366657204011c617574685f696420010c753634000218ec546869732066756e6374696f6e206973207573656420746f20616363657074206120746f6b656e206f776e657273686970207472616e736665722e25014e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e2d012a2060617574685f69646020417574686f72697a6174696f6e204944206f662074686520746f6b656e206f776e657273686970207472616e7366657220617574686f72697a6174696f6e2e306372656174655f61737365741c01106e616d65fd01012441737365744e616d650001187469636b6572a001185469636b6572000124646976697369626c6519010110626f6f6c00012861737365745f74797065e501012441737365745479706500012c6964656e74696669657273ed0101505665633c41737365744964656e7469666965723e00013466756e64696e675f726f756e64550701604f7074696f6e3c46756e64696e67526f756e644e616d653e00012864697361626c655f697519010110626f6f6c0003682d01496e697469616c697a65732061206e657720736563757269747920746f6b656e2c20776974682074686520696e6974696174696e67206163636f756e7420617320697473206f776e65722e150154686520746f74616c20737570706c792077696c6c20696e697469616c6c79206265207a65726f2e20546f206d696e7420746f6b656e732c2075736520606973737565602e002c2320417267756d656e7473c5012a20606f726967696e60202d20636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e842a20606e616d6560202d20746865206e616d65206f662074686520746f6b656e2eb02a20607469636b657260202d20746865207469636b65722073796d626f6c206f662074686520746f6b656e2e2d012a2060646976697369626c6560202d206120626f6f6c65616e20746f206964656e74696679207468652064697669736962696c69747920737461747573206f662074686520746f6b656e2e802a206061737365745f7479706560202d2074686520617373657420747970652ec02a20606964656e7469666965727360202d206120766563746f72206f66206173736574206964656e746966696572732eb82a206066756e64696e675f726f756e6460202d206e616d65206f66207468652066756e64696e6720726f756e642e4d012a206064697361626c655f697560202d2077686574686572206f72206e6f7420696e766573746f7220756e697175656e65737320656e666f7263656d656e742073686f756c642062652064697361626c65642ec82020546869732063616e6e6f74206265206368616e676564206166746572206372656174696e67207468652061737365742e00242323204572726f7273fc2d2060496e76616c696441737365744964656e7469666965726020696620616e79206f6620606964656e74696669657273602061726520696e76616c69642e51012d20604d61784c656e6774684f6641737365744e616d6545786365656465646020696620606e616d65602773206c656e67746820657863656564732060543a3a41737365744e616d654d61784c656e677468602e55012d206046756e64696e67526f756e644e616d654d61784c656e67746845786365656465646020696620746865206e616d65206f66207468652066756e64696e6720726f756e64206973206c6f6e67657220746861747c60543a3a46756e64696e67526f756e644e616d654d61784c656e677468602ed42d20604173736574416c726561647943726561746564602069662061737365742077617320616c726561647920637265617465642e5d012d20605469636b6572546f6f4c6f6e676020696620607469636b6572602773206c656e6774682069732067726561746572207468616e2060636f6e6669672e6d61785f7469636b65725f6c656e6774686020636861696e28706172616d657465722ea1022d20605469636b65724e6f7441736369696020696620607469636b657260206973206e6f742079657420726567697374657265642c20616e6420636f6e7461696e73206e6f6e2d6173636969207072696e7461626c652063686172616374657273202866726f6d20636f646520333220746f2031323629206f7220616e7920636861726163746572206166746572206669727374206f6363757272656e6365206f6620605c30602e00382323205065726d697373696f6e732c2a20506f7274666f6c696f18667265657a650401187469636b6572a001185469636b657200042cbc467265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e00242323204572726f7273c02d2060416c726561647946726f7a656e6020696620607469636b65726020697320616c72656164792066726f7a656e2e003423205065726d697373696f6e731c2a20417373657420756e667265657a650401187469636b6572a001185469636b657200052cc4556e667265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722eb02a20607469636b657260202d20746865207469636b6572206f66207468652066726f7a656e20746f6b656e2e00242323204572726f7273b02d20604e6f7446726f7a656e6020696620607469636b657260206973206e6f742066726f7a656e207965742e003423205065726d697373696f6e731c2a2041737365743072656e616d655f61737365740801187469636b6572a001185469636b65720001106e616d65fd01012441737365744e616d650006345852656e616d6573206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e942a20606e616d6560202d20746865206e6577206e616d65206f662074686520746f6b656e2e00242323204572726f727311012d20604d61784c656e6774684f6641737365744e616d65457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e6060543a3a41737365744e616d654d61784c656e677468602e003423205065726d697373696f6e731c2a2041737365741469737375650801187469636b6572a001185469636b6572000118616d6f756e7418011c42616c616e636500072ca449737375652c206f72206d696e742c206e657720746f6b656e7320746f207468652063616c6c65722cac7768696368206d75737420626520616e20617574686f72697a65642065787465726e616c206167656e742e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e602a20607469636b657260206f662074686520746f6b656e2e942a2060616d6f756e7460206f6620746f6b656e73207468617420676574206973737565642e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f1872656465656d0801187469636b6572a001185469636b657200011476616c756518011c42616c616e636500083ccd0152656465656d73206578697374696e6720746f6b656e73206279207265647563696e67207468652062616c616e6365206f66207468652063616c6c657227732064656661756c7420706f7274666f6c696f20616e642074686520746f74616c20737570706c79206f662074686520746f6b656e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e942a206076616c75656020416d6f756e74206f6620746f6b656e7320746f2072656465656d2e002023204572726f727361012d2060556e617574686f72697a6564602049662063616c6c656420627920736f6d656f6e6520776974686f75742074686520617070726f7072696174652065787465726e616c206167656e74207065726d697373696f6e7359012d2060496e76616c69644772616e756c6172697479602049662074686520616d6f756e74206973206e6f7420646976697369626c652062792031305e3620666f72206e6f6e2d646976697369626c6520746f6b656e738d012d2060496e73756666696369656e74506f7274666f6c696f42616c616e636560204966207468652063616c6c657227732064656661756c7420706f7274666f6c696f20646f65736e2774206861766520656e6f75676820667265652062616c616e6365003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f386d616b655f646976697369626c650401187469636b6572a001185469636b657200092c944d616b657320616e20696e646976697369626c6520746f6b656e20646976697369626c652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e00242323204572726f7273ec2d20604173736574416c7265616479446976697369626c656020696620607469636b65726020697320616c726561647920646976697369626c652e003423205065726d697373696f6e731c2a204173736574346164645f646f63756d656e7473080110646f6373590701345665633c446f63756d656e743e0001187469636b6572a001185469636b6572000a248041646420646f63756d656e747320666f72206120676976656e20746f6b656e2e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2eb82a2060646f63736020446f63756d656e747320746f20626520617474616368656420746f20607469636b6572602e003423205065726d697373696f6e731c2a2041737365744072656d6f76655f646f63756d656e747308010c6964730503013c5665633c446f63756d656e7449643e0001187469636b6572a001185469636b6572000b248c52656d6f766520646f63756d656e747320666f72206120676976656e20746f6b656e2e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2ec82a20606964736020446f63756d656e74732069647320746f2062652072656d6f7665642066726f6d20607469636b6572602e003423205065726d697373696f6e731c2a204173736574447365745f66756e64696e675f726f756e640801187469636b6572a001185469636b65720001106e616d65e101014046756e64696e67526f756e644e616d65000c34ac5365747320746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e002c2320417267756d656e747329012a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2ee42a20606e616d6560202d207468652064657369726564206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e00242323204572726f727325012d206046756e64696e67526f756e644e616d654d61784c656e677468457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e7c60543a3a46756e64696e67526f756e644e616d654d61784c656e677468602e003423205065726d697373696f6e731c2a204173736574487570646174655f6964656e746966696572730801187469636b6572a001185469636b657200012c6964656e74696669657273ed0101505665633c41737365744964656e7469666965723e000d34785570646174657320746865206173736574206964656e746966696572732e002c2320417267756d656e747329012a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e59012a20606964656e7469666965727360202d20746865206173736574206964656e7469666965727320746f206265207570646174656420696e2074686520666f726d206f66206120766563746f72206f66207061697273cc2020206f6620604964656e746966696572547970656020616e64206041737365744964656e746966696572602076616c75652e00242323204572726f727331012d2060496e76616c696441737365744964656e7469666965726020696620606964656e746966696572736020636f6e7461696e7320616e7920696e76616c6964206964656e7469666965722e003423205065726d697373696f6e731c2a20417373657450636c61696d5f636c61737369635f7469636b65720801187469636b6572a001185469636b6572000148657468657265756d5f7369676e61747572655d07013845636473615369676e6174757265000e38fc436c61696d20612073797374656d61746963616c6c7920726573657276656420506f6c796d61746820436c61737369632028504d432920607469636b657260ac616e64207472616e7366657220697420746f2074686520606f726967696e602773206964656e746974792e003d01546f2076657269667920746861742074686520606f726967696e6020697320696e20636f6e74726f6c206f662074686520457468657265756d206163636f756e74206f6e2074686520626f6f6b732c1101616e2060657468657265756d5f7369676e61747572656020636f6e7461696e696e672074686520606f726967696e6027732044494420617320746865206d657373616765a86d7573742062652070726f7669646564206279207468617420457468657265756d206163636f756e742e002023204572726f727331012d20604e6f53756368436c61737369635469636b6572602069662074686973206973206e6f7420612073797374656d61746963616c6c7920726573657276656420504d43207469636b65722e51012d20605469636b6572416c7265616479526567697374657265646020696620746865207469636b65722077617320616c726561647920726567697374657265642c20652e672e2c20627920606f726967696e602e1d012d20605469636b6572526567697374726174696f6e457870697265646020696620746865207469636b6572277320726567697374726174696f6e2068617320657870697265642e702d20604261644f726967696e60206966206e6f74207369676e65642e19012d2060496e76616c6964457468657265756d5369676e617475726560206966207468652060657468657265756d5f7369676e617475726560206973206e6f742076616c69642e29012d20604e6f74416e4f776e6572602069662074686520657468657265756d206163636f756e74206973206e6f7420746865206f776e6572206f662074686520504d43207469636b65722e58726573657276655f636c61737369635f7469636b65720c0154636c61737369635f7469636b65725f696d706f72746507014c436c61737369635469636b6572496d706f7274000130636f6e74726163745f6469647c01284964656e746974794964000118636f6e6669676907018c5469636b6572526567697374726174696f6e436f6e6669673c543a3a4d6f6d656e743e000f34a052657365727665206120506f6c796d61746820436c61737369632028504d4329207469636b65722e0d014d7573742062652063616c6c656420627920726f6f742c20616e642061737369676e7320746865207469636b657220746f20612073797374656d61746963204449442e002c2320417267756d656e7473782a20606f726967696e60207768696368206d75737420626520726f6f742eec2a2060636c61737369635f7469636b65725f696d706f7274602073706563696669636174696f6e20666f722074686520504d43207469636b65722e5d012a2060636f6e74726163745f6469646020746f207265736572766520746865207469636b657220746f2069662060636c61737369635f7469636b65725f696d706f72742e69735f636f6e74726163746020686f6c64732ebc2a2060636f6e6669676020746f2075736520666f722065787069727920616e64207469636b6572206c656e6774682e002023204572726f727349012a20604173736574416c726561647943726561746564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b65726020776173206372656174656420617320616e2061737365742e61012a20605469636b6572546f6f4c6f6e6760206966207468652060636f6e6669676020636f6e736964657273207468652060636c61737369635f7469636b65725f696d706f72742e7469636b65726020746f6f206c6f6e672e55012a20605469636b6572416c726561647952656769737465726564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b6572602077617320616c726561647920726567697374657265642e4c636f6e74726f6c6c65725f7472616e736665720c01187469636b6572a001185469636b657200011476616c756518011c42616c616e636500013866726f6d5f706f7274666f6c696fd8012c506f7274666f6c696f496400101c4d01466f726365732061207472616e73666572206f6620746f6b656e2066726f6d206066726f6d5f706f7274666f6c696f6020746f207468652063616c6c657227732064656661756c7420706f7274666f6c696f2e002c2320417267756d656e747355012a20606f726967696e60204d75737420626520616e2065787465726e616c206167656e74207769746820617070726f707269617465207065726d697373696f6e7320666f72206120676976656e207469636b65722e982a20607469636b657260205469636b65722073796d626f6c206f66207468652061737365742ecc2a206076616c7565602020416d6f756e74206f6620746f6b656e73206e65656420746f20666f726365207472616e736665722efc2a206066726f6d5f706f7274666f6c696f602046726f6d2077686f6d20706f7274666f6c696f20746f6b656e732067657473207472616e736665727265642e6872656769737465725f637573746f6d5f61737365745f74797065040108747928011c5665633c75383e00112478526567697374657273206120637573746f6d20617373657420747970652e00d05468652070726f766964656420607479602077696c6c20626520626f756e6420746f20616e20494420696e2073746f726167652ebc5468652049442063616e207468656e206265207573656420696e20604173736574547970653a3a437573746f6d602e250153686f756c6420746865206074796020616c726561647920657869737420696e2073746f726167652c206e6f207365636f6e642049442069732061737369676e656420746f2069742e002c2320417267756d656e7473902a20606f726967696e602077686f2063616c6c6564207468652065787472696e7369632ef02a206074796020636f6e7461696e732074686520737472696e6720726570726573656e746174696f6e206f662074686520617373657420747970652e746372656174655f61737365745f776974685f637573746f6d5f747970651c01106e616d65fd01012441737365744e616d650001187469636b6572a001185469636b6572000124646976697369626c6519010110626f6f6c000144637573746f6d5f61737365745f7479706528011c5665633c75383e00012c6964656e74696669657273ed0101505665633c41737365744964656e7469666965723e00013466756e64696e675f726f756e64550701604f7074696f6e3c46756e64696e67526f756e644e616d653e00012864697361626c655f697519010110626f6f6c0012042d015574696c6974792065787472696e73696320746f20626174636820606372656174655f61737365746020616e64206072656769737465725f637573746f6d5f61737365745f74797065602e487365745f61737365745f6d657461646174611001187469636b6572a001185469636b657200010c6b65796d07014041737365744d657461646174614b657900011476616c75653502014841737365744d6574616461746156616c756500011864657461696c390201ac4f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e3e00134464536574206173736574206d657461646174612076616c75652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e542a20606b657960204d65746164617461206b65792e642a206076616c756560204d657461646174612076616c75652e09012a206064657461696c7360204f7074696f6e616c204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f727315012a206041737365744d657461646174614b657949734d697373696e676020696620746865206d657461646174612074797065206b657920646f65736e27742065786973742e25012a206041737365744d6574616461746156616c756549734c6f636b65646020696620746865206d657461646174612076616c756520666f7220606b657960206973206c6f636b65642e65012a206041737365744d6574616461746156616c75654d61784c656e67746845786365656465646020696620746865206d657461646174612076616c7565206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a204173736574687365745f61737365745f6d657461646174615f64657461696c730c01187469636b6572a001185469636b657200010c6b65796d07014041737365744d657461646174614b657900011864657461696c3d02018c41737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e00143cdc536574206173736574206d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e542a20606b657960204d65746164617461206b65792ee42a206064657461696c7360204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f727315012a206041737365744d657461646174614b657949734d697373696e676020696620746865206d657461646174612074797065206b657920646f65736e27742065786973742e25012a206041737365744d6574616461746156616c756549734c6f636b65646020696620746865206d657461646174612076616c756520666f7220606b657960206973206c6f636b65642e003423205065726d697373696f6e731c2a204167656e741c2a2041737365749472656769737465725f616e645f7365745f6c6f63616c5f61737365745f6d657461646174611401187469636b6572a001185469636b65720001106e616d654502014441737365744d657461646174614e616d65000110737065634d02014441737365744d657461646174615370656300011476616c75653502014841737365744d6574616461746156616c756500011864657461696c390201ac4f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e3e00154c9c52656769737465727320616e6420736574206c6f63616c206173736574206d657461646174612e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e642a206076616c756560204d657461646174612076616c75652e09012a206064657461696c7360204f7074696f6e616c204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f7273a1012a206041737365744d657461646174614c6f63616c4b6579416c7265616479457869737473602069662061206c6f63616c206d657461646174612074797065207769746820606e616d656020616c72656164792065786973747320666f7220607469636b6572602e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e65012a206041737365744d6574616461746156616c75654d61784c656e67746845786365656465646020696620746865206d657461646174612076616c7565206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a2041737365748872656769737465725f61737365745f6d657461646174615f6c6f63616c5f747970650c01187469636b6572a001185469636b65720001106e616d654502014441737365744d657461646174614e616d65000110737065634d02014441737365744d657461646174615370656300164090526567697374657273206173736574206d65746164617461206c6f63616c20747970652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e002023204572726f7273a1012a206041737365744d657461646174614c6f63616c4b6579416c7265616479457869737473602069662061206c6f63616c206d657461646174612074797065207769746820606e616d656020616c72656164792065786973747320666f7220607469636b6572602e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a2041737365748c72656769737465725f61737365745f6d657461646174615f676c6f62616c5f747970650801106e616d654502014441737365744d657461646174614e616d65000110737065634d02014441737365744d657461646174615370656300172c94526567697374657273206173736574206d6574616461746120676c6f62616c20747970652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e002023204572726f727371012a206041737365744d65746164617461476c6f62616c4b6579416c726561647945786973747360206966206120676c6f6261206d657461646174612074797065207769746820606e616d656020616c7265616479206578697374732e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e550704184f7074696f6e04045401e1010108104e6f6e6500000010536f6d650400e101000001000059070000020502005d070c4c706f6c796d6573685f7072696d69746976657320657468657265756d3845636473615369676e617475726500000400610701205b75383b2036355d000061070000034100000008006507083070616c6c65745f61737365744c436c61737369635469636b6572496d706f727400001001246574685f6f776e65723102013c457468657265756d416464726573730001187469636b6572a001185469636b657200012c69735f636f6e747261637419010110626f6f6c00012869735f6372656174656419010110626f6f6c00006907083070616c6c65745f6173736574605469636b6572526567697374726174696f6e436f6e6669670404550120000801446d61785f7469636b65725f6c656e677468080108753800014c726567697374726174696f6e5f6c656e677468f401244f7074696f6e3c553e00006d070c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614041737365744d657461646174614b657900010818476c6f62616c04006502015841737365744d65746164617461476c6f62616c4b6579000000144c6f63616c04004902015441737365744d657461646174614c6f63616c4b65790001000071070c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e1043616c6c04045400011428646973747269627574651c011463615f69647102011043414964000124706f7274666f6c696f7507015c4f7074696f6e3c506f7274666f6c696f4e756d6265723e00012063757272656e6379a001185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e63650001287061796d656e745f61742001184d6f6d656e74000128657870697265735f6174f401384f7074696f6e3c4d6f6d656e743e0000a82501537461727420616e64206174746163682061206361706974616c20646973747269627574696f6e2c20746f20746865204341206964656e746966696564206279206063615f6964602c6501776974682060616d6f756e74602066756e647320696e206063757272656e6379602077697468647261776e2066726f6d2060706f7274666f6c696f602062656c6f6e67696e6720746f20606f726967696e602773204449442e00290154686520646973747269627574696f6e2077696c6c20636f6d6d656e636520617420607061796d656e745f61746020616e64206578706972652061742060657870697265735f6174602cc869662070726f76696465642c206f7220696620604e6f6e65602c207468656e2074686572652773206e6f206578706972792e0025015468652066756e64732077696c6c206265206c6f636b656420696e2060706f7274666f6c696f602066726f6d207768656e206064697374726962757465602069732063616c6c65642e35015768656e2074686572652773206e6f206578706972792c20736f6d652066756e6473206d6179206265206c6f636b656420696e646566696e6974656c7920696e2060706f7274666f6c696f602c150164756520746f20636c61696d616e7473206e6f74207769746864726177696e67206f72206e6f2062656e6566697473206265696e672070757368656420746f207468656d2e2901466f7220696e646976697369626c652063757272656e636965732c20756e6c6f636b656420616d6f756e74732c206f66206c657373207468616e206f6e652077686f6c6520756e69742ca877696c6c206e6f74206265207472616e7366657261626c652066726f6d2060706f7274666f6c696f602e4d01486f77657665722c20696620776520696d6167696e6520746861742075736572732060416c6963656020616e642060426f626020626f74682061726520656e7469746c656420746f20312e3520756e6974732c5101616e64206f6e6c7920726563656976652060316020756e69747320656163682c207468656e2060302e35202b20302e35203d20316020756e69747320617265206c65667420696e2060706f7274666f6c696f602c6c7768696368206973206e6f77207472616e736665727261626c652e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e01012d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e59012d2060706f7274666f6c696f60207370656369666965732074686520706f7274666f6c696f206e756d626572206f6620746865206167656e7420746f20646973747269627574652060616d6f756e74602066726f6d2ef42d206063757272656e63796020746f20776974686472617720616e6420646973747269627574652066726f6d207468652060706f7274666f6c696f602ef82d20607065725f73686172656020616d6f756e74206f66206063757272656e63796020746f20776974686472617720616e6420646973747269627574652e25012020205370656369666965642061732061207065722d6d696c6c696f6e2c20692e652e206031202f2031305e36607468206f66206f6e65206063757272656e63796020746f6b656e2ef02d2060616d6f756e7460206f66206063757272656e63796020746f20776974686472617720616e642064697374726962757465206174206d6f73742e19012d20607061796d656e745f61746020737065636966696573207768656e2062656e6566697473206d617920666972737420626520707573686564206f7220636c61696d65642e29012d2060657870697265735f617460207370656369666965732c2069662070726f76696465642c207768656e2072656d61696e696e672062656e65666974732061726520666f726665697490202020616e64206d6179206265207265636c61696d656420627920606f726967696e602e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed02d2060446973747269627574696e67417373657460206966206063615f69642e7469636b6572203d3d2063757272656e6379602efc2d20604578706972794265666f72655061796d656e74602069662060657870697265735f61742e756e777261702829203c3d207061796d656e745f6174602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ea82d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652ee82d20605265636f72644461746541667465725374617274602069662043412773207265636f72642064617465203e207061796d656e745f61742e31012d2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f662060706f7274666f6c696f602e55012d2060496e73756666696369656e74506f7274666f6c696f42616c616e6365602069662060706f7274666f6c696f6020686173206c657373207468616e2060616d6f756e7460206f66206063757272656e6379602e01012d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e45012d206043414e6f7442656e656669746020696620746865204341206973206e6f74206f66206b696e64205072656469637461626c6542656e656669742f556e7072656469637461626c6542656e65666974003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f14636c61696d04011463615f6964710201104341496400015c0101436c61696d20612062656e65666974206f6620746865206361706974616c20646973747269627574696f6e20617474616368656420746f206063615f6964602e00a8546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5901506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e001101416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e39014d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c98746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e0030232320417267756d656e747345012d20606f726967696e60207768696368206d757374206265206120686f6c646572206f662074686520617373657420616e6420656c696769626c6520666f722074686520646973747269627574696f6e2e01012d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e002023204572726f727325012d2060486f6c646572416c7265616479506169646020696620606f726967696e602773204449442068617320616c7265616479207265636569766564206974732062656e656669742e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec42d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee42d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef42d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e35012d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e35012d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e21012d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e30707573685f62656e6566697408011463615f69647102011043414964000118686f6c6465727c01284964656e746974794964000260f8507573682062656e65666974206f6620616e206f6e676f696e6720646973747269627574696f6e20746f2074686520676976656e2060686f6c646572602e00a8546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5901506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e001101416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e39014d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c98746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e39012d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e7320746f20707573682062656e656669747320666f722e7c2d2060686f6c6465726020746f20707573682062656e656669747320746f2e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec42d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee42d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412edc2d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f74207461726765742060686f6c646572602e35012d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e35012d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e21012d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e1c7265636c61696d04011463615f6964710201104341496400032c90417373756d696e67206120646973747269627574696f6e2068617320657870697265642ce4756e6c6f636b207468652072656d61696e696e6720616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e0030232320417267756d656e747345012d20606f726967696e60207768696368206d757374206265207468652063726561746f72206f6620746865206361706974616c20646973747269627574696f6e207469656420746f206063615f6964602e1d012d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e20746f207265636c61696d20666f722e002023204572726f727319012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602e2d012d2060416c72656164795265636c61696d65646020696620746869732066756e6374696f6e2068617320616c7265616479206265656e2063616c6c6564207375636365737366756c6c792e842d20604e6f74457870697265646020696620606e6f77203c20657870697279602e4c72656d6f76655f646973747269627574696f6e04011463615f6964710201104341496400042cbc52656d6f766573206120646973747269627574696f6e2074686174206861736e27742073746172746564207965742cdc756e6c6f636b696e67207468652066756c6c20616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e49012d206063615f696460206964656e7469666965732074686520434120776974682061206e6f742d7965742d73746172746564206361706974616c20646973747269627574696f6e20746f2072656d6f76652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ebc2d2060446973747269627574696f6e537461727465646020696620607061796d656e745f6174203c3d206e6f77602e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e750704184f7074696f6e04045401e00108104e6f6e6500000010536f6d650400e0000001000079070c3070616c6c65745f617373657428636865636b706f696e741043616c6c040454000110446372656174655f636865636b706f696e740401187469636b6572a001185469636b6572000024c04372656174657320612073696e676c6520636865636b706f696e74206174207468652063757272656e742074696d652e002c2320417267756d656e74732d012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602ea02d20607469636b65726020746f206372656174652074686520636865636b706f696e7420666f722e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e0d012d2060436f756e7465724f766572666c6f77602069662074686520746f74616c20636865636b706f696e7420636f756e74657220776f756c64206f766572666c6f772e707365745f7363686564756c65735f6d61785f636f6d706c65786974790401386d61785f636f6d706c657869747920010c75363400012459015365747320746865206d617820636f6d706c6578697479206f662061207363686564756c652073657420666f7220616e20617262697472617279207469636b657220746f20606d61785f636f6d706c6578697479602eb8546865206e6577206d6178696d756d206973206e6f7420656e666f7263656420726574726f6163746976656c792cb4616e64206f6e6c79206170706c696573206f6e6365206e6577207363686564756c657320617265206d6164652e00a84d7573742062652063616c6c6564206173206120504950202872657175697265732022726f6f7422292e002c2320417267756d656e7473782d20606f726967696e602069732074686520726f6f74206f726967696e2e09012d20606d61785f636f6d706c65786974796020616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365742e3c6372656174655f7363686564756c650801187469636b6572a001185469636b65720001207363686564756c657d0701305363686564756c655370656300024ca4437265617465732061207363686564756c652067656e65726174696e6720636865636b706f696e7473d4696e20746865206675747572652061742065697468657220612066697865642074696d65206f7220617420696e74657276616c732e000901546865207363686564756c6520737461727473206f7574207769746820607374726f6e675f7265665f636f756e74287363686564756c655f696429203c2d2030602e002c2320417267756d656e747321012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e982d20607469636b65726020746f2063726561746520746865207363686564756c6520666f722eb02d20607363686564756c656020746861742077696c6c2067656e657261746520636865636b706f696e74732e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e0d012d20605363686564756c654475726174696f6e546f6f53686f72746020696620746865207363686564756c65206475726174696f6e20697320746f6f2073686f72742e21012d2060496e73756666696369656e744163636f756e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c64206e6f7420626520636861726765642e4d012d2060436f756e7465724f766572666c6f776020696620746865207363686564756c65204944206f7220746f74616c20636865636b706f696e7420636f756e7465727320776f756c64206f766572666c6f772e5d012d20604661696c6564546f436f6d707574654e657874436865636b706f696e746020696620746865206e65787420636865636b706f696e7420666f7220607363686564756c656020697320696e2074686520706173742e003423205065726d697373696f6e731c2a2041737365743c72656d6f76655f7363686564756c650801187469636b6572a001185469636b657200010869649d0201285363686564756c654964000338fc52656d6f7665732074686520636865636b706f696e74207363686564756c65206f6620616e206173736574206964656e74696669656420627920606964602e002c2320417267756d656e747321012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e9c2d20607469636b65726020746f2072656d6f766520746865207363686564756c652066726f6d2e09012d2060696460206f6620746865207363686564756c652c207768656e2069742077617320637265617465642062792060637265617465645f7363686564756c65602e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e41012d20604e6f436865636b706f696e745363686564756c6560206966206069646020646f6573206e6f74206964656e746966792061207363686564756c6520666f72207468697320607469636b6572602ef42d20605363686564756c654e6f7452656d6f7661626c656020696620606964602065786973747320627574206973206e6f742072656d6f7661626c652e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e7d070c3070616c6c65745f617373657428636865636b706f696e74305363686564756c655370656300000c01147374617274f401384f7074696f6e3c4d6f6d656e743e000118706572696f649502013843616c656e646172506572696f6400012472656d61696e696e6710010c75333200008107086470616c6c65745f636f6d706c69616e63655f6d616e616765721043616c6c040454000124686164645f636f6d706c69616e63655f726571756972656d656e740c01187469636b6572a001185469636b657200014473656e6465725f636f6e646974696f6e73a90201385665633c436f6e646974696f6e3e00014c72656365697665725f636f6e646974696f6e73a90201385665633c436f6e646974696f6e3e00002c050141646473206120636f6d706c69616e636520726571756972656d656e7420746f20616e206173736574277320636f6d706c69616e6365206279207469636b65722ef849662074686520636f6d706c69616e636520726571756972656d656e742069732061206475706c69636174652c20697420646f6573206e6f7468696e672e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574c42a2073656e6465725f636f6e646974696f6e73202d2053656e646572207472616e7366657220636f6e646974696f6e732ed42a2072656365697665725f636f6e646974696f6e73202d205265636569766572207472616e7366657220636f6e646974696f6e732e003423205065726d697373696f6e731c2a2041737365747472656d6f76655f636f6d706c69616e63655f726571756972656d656e740801187469636b6572a001185469636b6572000108696410010c753332000124f052656d6f766573206120636f6d706c69616e636520726571756972656d656e742066726f6d20616e206173736574277320636f6d706c69616e63652e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574f02a206964202d20436f6d706c69616e636520726571756972656d656e74206964207768696368206973206e65656420746f2062652072656d6f766564003423205065726d697373696f6e731c2a204173736574607265706c6163655f61737365745f636f6d706c69616e63650801187469636b6572a001185469636b657200014061737365745f636f6d706c69616e6365d10201685665633c436f6d706c69616e6365526571756972656d656e743e00023cfc5265706c6163657320616e206173736574277320636f6d706c69616e6365206279207469636b657220776974682061206e657720636f6d706c69616e63652e00fc436f6d706c69616e636520726571756972656d656e74732077696c6c20626520736f727465642028617363656e64696e6720627920696429206265666f72658c7265706c6163696e67207468652063757272656e7420726571756972656d656e74732e002c2320417267756d656e7473782a20607469636b657260202d20746865206173736574207469636b65722cbc2a206061737365745f636f6d706c69616e6365202d20746865206e657720617373657420636f6d706c69616e63652e002023204572726f7273f02a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722eb1012a20604475706c69636174654173736574436f6d706c69616e636560206966206061737365745f636f6d706c69616e63656020636f6e7461696e73206d756c7469706c6520656e74726965732077697468207468652073616d652060726571756972656d656e745f6964602e003423205065726d697373696f6e731c2a2041737365745872657365745f61737365745f636f6d706c69616e63650401187469636b6572a001185469636b65720003207452656d6f76657320616e206173736574277320636f6d706c69616e6365002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a2041737365745870617573655f61737365745f636f6d706c69616e63650401187469636b6572a001185469636b657200042011015061757365732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a2041737365745c726573756d655f61737365745f636f6d706c69616e63650401187469636b6572a001185469636b65720005201501526573756d65732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a204173736574806164645f64656661756c745f747275737465645f636c61696d5f6973737565720801187469636b6572a001185469636b6572000118697373756572c102013454727573746564497373756572000624f84164647320616e6f746865722064656661756c74207472757374656420636c61696d2069737375657220617420746865207469636b6572206c6576656c2e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742ec82a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e003423205065726d697373696f6e731c2a2041737365748c72656d6f76655f64656661756c745f747275737465645f636c61696d5f6973737565720801187469636b6572a001185469636b65720001186973737565727c01284964656e746974794964000724750152656d6f7665732074686520676976656e2060697373756572602066726f6d2074686520736574206f662064656661756c74207472757374656420636c61696d206973737565727320617420746865207469636b6572206c6576656c2e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742ec82a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e003423205065726d697373696f6e731c2a204173736574746368616e67655f636f6d706c69616e63655f726571756972656d656e740801187469636b6572a001185469636b657200011c6e65775f726571a5020154436f6d706c69616e6365526571756972656d656e74000824f04d6f6469667920616e206578697374696e6720636f6d706c69616e636520726571756972656d656e74206f66206120676976656e207469636b65722e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742e8c2a206e65775f726571202d20436f6d706c69616e636520726571756972656d656e742e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e8507086070616c6c65745f636f72706f726174655f616374696f6e731043616c6c040454000124587365745f6d61785f64657461696c735f6c656e6774680401186c656e67746810010c753332000008d053657420746865206d617820606c656e67746860206f66206064657461696c736020696e207465726d73206f662062797465732e744d6179206f6e6c792062652063616c6c6564207669612061205049502e4c7365745f64656661756c745f746172676574730801187469636b6572a001185469636b657200011c74617267657473d90201405461726765744964656e746974696573000134cc536574207468652064656661756c7420434120605461726765744964656e7469746965736020746f206074617267657473602e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ee42d20607469636b65726020666f72207768696368207468652064656661756c74206964656e74697469657320617265206368616e67696e672ecc2d20607461726765747360207468652064656661756c7420746172676574206964656e74697469657320666f7220612043412e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e31012d2060546f6f4d616e79546172676574496473602069662060746172676574732e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e003423205065726d697373696f6e731c2a2041737365746c7365745f64656661756c745f77697468686f6c64696e675f7461780801187469636b6572a001185469636b657200010c7461787d02010c5461780002303d01536574207468652064656661756c742077697468686f6c64696e672074617820666f7220616c6c204449447320616e64204341732072656c6576616e7420746f207468697320607469636b6572602e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ec82d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2e05012d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e003423205065726d697373696f6e731c2a2041737365745c7365745f6469645f77697468686f6c64696e675f7461780c01187469636b6572a001185469636b657200012474617865645f6469647c01284964656e74697479496400010c746178e102012c4f7074696f6e3c5461783e000340f4536574207468652077697468686f6c64696e6720746178206f6620607469636b65726020666f72206074617865645f6469646020746f2060746178602e810149662060536f6d652874617829602c2074686973206f7665727269646573207468652064656661756c742077697468686f6c64696e6720746178206f6620607469636b65726020746f20607461786020666f72206074617865645f646964602efc4f74686572776973652c20696620604e6f6e65602c207468652064656661756c742077697468686f6c64696e67207461782077696c6c20626520757365642e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ec82d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2ee42d206074617865645f6469646020746861742077696c6c2068617665206974732077697468686f6c64696e672074617820757064617465642e05012d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e81012d2060546f6f4d616e794469645461786573602069662060536f6d6528746178296020616e6420616464696e6720746865206f7665727269646520776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e003423205065726d697373696f6e731c2a20417373657464696e6974696174655f636f72706f726174655f616374696f6e2001187469636b6572a001185469636b65720001106b696e64e902011843414b696e640001246465636c5f646174652001184d6f6d656e7400012c7265636f72645f64617465890701584f7074696f6e3c5265636f726444617465537065633e00011c64657461696c7301030124434144657461696c7300011c74617267657473910701604f7074696f6e3c5461726765744964656e7469746965733e00015c64656661756c745f77697468686f6c64696e675f746178e102012c4f7074696f6e3c5461783e00013c77697468686f6c64696e675f746178950701784f7074696f6e3c5665633c284964656e7469747949642c20546178293e3e0004784901496e69746961746573206120434120666f7220607469636b657260206f6620606b696e64602077697468206064657461696c736020616e64206f746865722070726f766964656420617267756d656e74732e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732e8c2d20607469636b657260207468617420746865204341206973206d61646520666f722e7c2d20606b696e6460206f66204341206265696e6720696e697469617465642e982d20606465636c5f6461746560206f66204341206272696e6720696e697469616c697a65642ef02d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f6620746869732043412e610120202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e4d012d206064657461696c7360206f662074686520434120696e20667265652d7465787420666f726d2c20757020746f2061206365727461696e206e756d626572206f6620627974657320696e206c656e6774682ef42d206074617267657473602c20696620616e792c20776869636820746869732043412069732072656c6576616e742f697272656c6576616e7420746f2e49012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f7461726765747360292e5d012d206064656661756c745f77697468686f6c64696e675f746178602c20696620616e792c206973207468652064656661756c742077697468686f6c64696e672074617820746f2075736520666f7220746869732043412e69012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f77697468686f6c64696e675f74617860292e21012d206077697468686f6c64696e675f746178602c20696620616e792c2070726f7669646573207065722d4449442077697468686f6c64696e6720746178206f76657272696465732e59012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f6469645f77697468686f6c64696e675f74617860292e002023204572726f72731d012d206044657461696c73546f6f4c6f6e6760206966206064657461696c732e6c656e28296020676f6573206265796f6e6420606d61785f64657461696c735f6c656e677468602e25012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e69012d2060436f756e7465724f766572666c6f776020696e2074686520756e6c696b656c79206576656e74207468617420736f206d616e79204341732077657265206372656174656420666f72207468697320607469636b6572602cf820207468617420696e7465676572206f766572666c6f7720776f756c642068617665206f63637572656420696620696e737465616420616c6c6f7765642e75012d2060546f6f4d616e79446964546178657360206966206077697468686f6c64696e675f7461782e756e7772617028292e6c656e28296020776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e01012d20604475706c69636174654469645461786020696620612044494420697320696e636c75646564206d6f7265207468616e206f6e636520696e20607774602e55012d2060546f6f4d616e79546172676574496473602069662060746172676574732e756e7772617028292e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e01012d20604465636c44617465496e4675747572656020696620746865206465636c61726174696f6e2064617465206973206e6f7420696e2074686520706173742e51012d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e003423205065726d697373696f6e731c2a2041737365742c6c696e6b5f63615f646f6308010869647102011043414964000110646f63730503013c5665633c446f63756d656e7449643e000548ac4c696e6b2074686520676976656e204341206069646020746f2074686520676976656e2060646f6373602ef4416e792070726576696f7573206c696e6b7320666f7220746865204341206172652072656d6f76656420696e206661766f72206f662060646f6373602e00550154686520776f726b666c6f77206865726520697320746f206164642074686520646f63756d656e747320616e6420696e6974696174696e672074686520434120696e20616e79206f7264657220646573697265642ec44f6e636520626f74682065786973742c20746865792063616e206e6f77206265206c696e6b656420746f6765746865722e0030232320417267756d656e747351012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206069642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732ea82d2060696460206f662074686520434120746f206173736f636961746520776974682060646f6373602eb02d2060646f63736020746f206173736f6369617465207769746820746865204341207769746820606964602e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e19012d20604e6f53756368446f636020696620616e79206f662060646f63736020646f6573206e6f74206964656e7469667920616e206578697374696e6720646f63756d656e742e003423205065726d697373696f6e731c2a2041737365742472656d6f76655f636104011463615f696471020110434149640006489452656d6f76657320746865204341206964656e746966696564206279206063615f6964602e00c44173736f63696174656420646174612c207375636820617320646f63756d656e74206c696e6b732c2062616c6c6f74732cac616e64206361706974616c20646973747269627574696f6e732061726520616c736f2072656d6f7665642e00d4416e79207363686564756c65206173736f636961746564207769746820746865207265636f726420646174652077696c6c20736565b0607374726f6e675f7265665f636f756e74287363686564756c655f696429602064656372656d656e7465642e0030232320417267756d656e74735d012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e782d206063615f696460206f662074686520434120746f2072656d6f76652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e003423205065726d697373696f6e731c2a204173736574486368616e67655f7265636f72645f6461746508011463615f6964710201104341496400012c7265636f72645f64617465890701584f7074696f6e3c5265636f726444617465537065633e00073ce04368616e67657320746865207265636f72642064617465206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e74735d012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e742d206063615f696460206f662074686520434120746f20616c7465722eec2d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f66207468652043412e610120202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e51012d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e003423205065726d697373696f6e731c2a204173736574a0696e6974696174655f636f72706f726174655f616374696f6e5f616e645f646973747269627574651c011c63615f617267739907016c496e697469617465436f72706f72617465416374696f6e41726773000124706f7274666f6c696f7507015c4f7074696f6e3c506f7274666f6c696f4e756d6265723e00012063757272656e6379a001185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e63650001287061796d656e745f61742001184d6f6d656e74000128657870697265735f6174f401384f7074696f6e3c4d6f6d656e743e0008041d015574696c6974792065787472696e73696320746f2062617463682060696e6974696174655f636f72706f726174655f616374696f6e6020616e64206064697374726962757465600c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e890704184f7074696f6e040454018d070108104e6f6e6500000010536f6d6504008d0700000100008d07086070616c6c65745f636f72706f726174655f616374696f6e73385265636f7264446174655370656300010c245363686564756c656404002001184d6f6d656e74000000404578697374696e675363686564756c6504009d0201285363686564756c654964000100204578697374696e67040089020130436865636b706f696e74496400020000910704184f7074696f6e04045401d9020108104e6f6e6500000010536f6d650400d9020000010000950704184f7074696f6e04045401f9020108104e6f6e6500000010536f6d650400f90200000100009907086070616c6c65745f636f72706f726174655f616374696f6e736c496e697469617465436f72706f72617465416374696f6e4172677300002001187469636b6572a001185469636b65720001106b696e64e902011843414b696e640001246465636c5f646174652001184d6f6d656e7400012c7265636f72645f64617465890701584f7074696f6e3c5265636f726444617465537065633e00011c64657461696c7301030124434144657461696c7300011c74617267657473910701604f7074696f6e3c5461726765744964656e7469746965733e00015c64656661756c745f77697468686f6c64696e675f746178e102012c4f7074696f6e3c5461783e00013c77697468686f6c64696e675f746178950701784f7074696f6e3c5665633c284964656e7469747949642c20546178293e3e00009d070c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f741043616c6c040454000118346174746163685f62616c6c6f7410011463615f6964710201104341496400011472616e67650d03013c42616c6c6f7454696d6552616e67650001106d6574611103012842616c6c6f744d65746100010c72637619010110626f6f6c000068e8417474616368206120636f72706f726174652062616c6c6f7420746f20746865204341206964656e746966696564206279206063615f6964602e00ac5468652062616c6c6f742077696c6c2061646d697420766f7465732077697468696e206072616e6765602eb05468652062616c6c6f742773206d657461646174612069732070726f766964656420627920606d657461602c0501776869636820696e636c75646573207468652062616c6c6f74207469746c652c20746865206d6f74696f6e732c2074686569722063686f696365732c206574632e7853656520746865206042616c6c6f744d6574616020666f72206d6f72652e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602ed02d206063615f696460206964656e7469666965732074686520434120746f20617474616368207468652062616c6c6f7420746f2ec02d206072616e67656020737065636966696573207768656e20766f74696e672073746172747320616e6420656e64732eec2d20606d6574616020737065636966696573207468652062616c6c6f742773206d657461646174612061732061666f72656d656e74696f6e65642ee42d2060726376602073706563696669657320776865746865722052435620697320656e61626c656420666f7220746869732062616c6c6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef02d206043414e6f744e6f746963656020696620746865204341206973206e6f74206f662074686520604973737565724e6f7469636560206b696e642ebc2d206053746172744166746572456e6460206966206072616e67652e7374617274203e2072616e67652e656e64602e29012d20604e6f774166746572456e646020696620606e6f77203e2072616e67652e656e646020776865726520606e6f7760206973207468652063757272656e742074696d657374616d702ea82d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652e59012d20605265636f7264446174654166746572537461727460206966206064617465203e2072616e67652e73746172746020776865726520606461746560206973207468652043412773207265636f726420646174652eb82d2060416c726561647945786973747360206966207468657265277320612062616c6c6f7420616c72656164792e31012d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e09012d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e01012d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e10766f746508011463615f69647102011043414964000114766f7465733103013c5665633c42616c6c6f74566f74653e0001441101436173742060766f7465736020696e207468652062616c6c6f7420617474616368656420746f20746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747309012d20606f726967696e60207768696368206d7573742062652061207065726d697373696f6e6564207369676e6572207461726765746564206279207468652043412eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e21012d2060766f7465736020737065636966696573207468652062616c616e63657320746f2061737369676e20746f20656163682063686f69636520696e207468652062616c6c6f742e55012020205468652066756c6c20766f74696e6720706f776572206f6620606f726967696e60277320444944206d6179206265207573656420666f722065616368206d6f74696f6e20696e207468652062616c6c6f742e002023204572726f7273dc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742efc2d2060566f74696e674e6f7453746172746564602069662074686520766f74696e6720706572696f64206861736e277420636f6d6d656e636564207965742ed82d2060566f74696e67416c7265616479456e646564602069662074686520766f74696e6720706572696f642068617320656e6465642e5d012d206057726f6e67566f7465436f756e746020696620746865206e756d626572206f662063686f6963657320696e207468652062616c6c6f7420646f6573206e6f74206d617463682060766f7465732e6c656e2829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef42d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e21012d2060496e73756666696369656e74566f746573602069662074686520766f74696e6720706f776572207573656420666f7220616e79206d6f74696f6e20696e2060766f74657360a42020206578636565647320606f726967696e60277320444944277320766f74696e6720706f7765722e286368616e67655f656e6408011463615f6964710201104341496400010c656e642001184d6f6d656e740002300501416d656e642074686520656e642064617465206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ec42d2060656e64602073706563696669657320746865206e657720656e642064617465206f66207468652062616c6c6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e8c2d206053746172744166746572456e646020696620607374617274203e20656e64602e2c6368616e67655f6d65746108011463615f696471020110434149640001106d6574611103012842616c6c6f744d6574610003346101416d656e6420746865206d6574616461746120287469746c652c206d6f74696f6e732c206574632e29206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e902d20606d657461602073706563696669657320746865206e6577206d657461646174612e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e31012d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e09012d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e286368616e67655f72637608011463615f6964710201104341496400010c72637619010110626f6f6c00042c0501416d656e642052435620737570706f727420666f72207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ecc2d206072637660207370656369666965732069662052435620697320746f20626520737570706f72746564206f72206e6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e3472656d6f76655f62616c6c6f7404011463615f69647102011043414964000528c852656d6f7665207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ea107082c70616c6c65745f706970731043616c6c040454000144647365745f7072756e655f686973746f726963616c5f706970730401147072756e6519010110626f6f6c000014a44368616e6765207768657468657220636f6d706c65746564205049507320617265207072756e65642e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473f02a20607072756e656020737065636966696573207768657468657220636f6d706c6574656420504950732073686f756c64206265207072756e65642e607365745f6d696e5f70726f706f73616c5f6465706f73697404011c6465706f73697418011c42616c616e636500011421014368616e676520746865206d696e696d756d2070726f706f73616c206465706f73697420616d6f756e7420726571756972656420746f20737461727420612070726f706f73616c2e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473f02a20606465706f7369746020746865206e6577206d696e206465706f73697420726571756972656420746f20737461727420612070726f706f73616c707365745f64656661756c745f656e6163746d656e745f706572696f640401206475726174696f6e100138543a3a426c6f636b4e756d626572000214904368616e6765207468652064656661756c7420656e6163746d656e7420706572696f642e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e747369012a20606475726174696f6e6020746865206e65772064656661756c7420656e6163746d656e7420706572696f642069742074616b657320666f722061207363686564756c65642050495020746f2062652065786563757465642e587365745f70656e64696e675f7069705f657870697279040118657870697279390101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e00031805014368616e67652074686520616d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020697320657870697265642eb4496620606578706972796020697320604e6f6e6560207468656e2050495073206e65766572206578706972652e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e74731d012a2060657870697279602074686520626c6f636b2d74696d652069742074616b657320666f722061207374696c6c2d6050656e64696e67602050495020746f206578706972652e587365745f6d61785f7069705f736b69705f636f756e7404010c6d6178080130536b6970706564436f756e74000414d44368616e676520746865206d6178696d756d20736b697020636f756e742028606d61785f7069705f736b69705f636f756e7460292e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473ec2a20606d61786020736b697073206265666f72652061205049502063616e6e6f7420626520736b697070656420627920474320616e796d6f72652e507365745f6163746976655f7069705f6c696d69740401146c696d697410010c75333200051469014368616e676520746865206d6178696d756d206e756d626572206f66206163746976652050495073206265666f726520636f6d6d756e697479206d656d626572732063616e6e6f742070726f706f736520616e797468696e672e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473902a20606c696d697460206f6620636f6e63757272656e742061637469766520504950732e1c70726f706f736510012070726f706f73616cd1050140426f783c543a3a50726f706f73616c3e00011c6465706f73697418011c42616c616e636500010c75726c5102012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e510301584f7074696f6e3c5069704465736372697074696f6e3e000624050141206e6574776f726b206d656d6265722063726561746573206120504950206279207375626d697474696e67206120646973706174636861626c6520776869636855016368616e67657320746865206e6574776f726b20696e20736f6d657761792e2041206d696e696d756d206465706f73697420697320726571756972656420746f206f70656e2061206e65772070726f706f73616c2e002c2320417267756d656e7473c82a206070726f706f73657260206973206569746865722061207369676e696e67206b6579206f7220636f6d6d69747465652e65012020205573656420746f20756e6465727374616e6420776865746865722074686973206973206120636f6d6d69747465652070726f706f73616c20616e6420766572696669656420616761696e737420606f726967696e602e802a206070726f706f73616c60206120646973706174636861626c652063616c6c45012a20606465706f73697460206d696e696d756d206465706f7369742076616c75652c2077686963682069732069676e6f726564206966206070726f706f73657260206973206120636f6d6d69747465652ecc2a206075726c602061206c696e6b20746f2061207765627369746520666f722070726f706f73616c2064697363757373696f6e10766f74650c010869644d03011450697049640001286179655f6f725f6e617919010110626f6f6c00011c6465706f73697418011c42616c616e63650007481d01566f74652065697468657220696e206661766f722028606179655f6f725f6e617960203d3d207472756529206f7220616761696e7374206120504950207769746820606964602e4d015468652022636f6e76696e6374696f6e22206f7220737472656e677468206f662074686520766f746520697320676976656e20627920606465706f736974602c2077686963682069732072657365727665642e008c4e6f746520746861742060766f746560206973202a6e6f742a2061646469746976652ef8546861742069732c2060766f74652869642c20747275652c203530296020666f6c6c6f7765642062792060766f74652869642c20747275652c2034302960490177696c6c2066697273742072657365727665206035306020616e64207468656e20726566756e6420603530202d203130602c20656e64696e672075702077697468206034306020696e206465706f7369742e2501546f206164642061746f70206f66206578697374696e6720766f7465732c20796f75276c6c206e65656420606578697374696e675f6465706f736974202b206164646974696f6e602e002c2320417267756d656e74734c2a20606964602c2070726f706f73616c206964dc2a20606179655f6f725f6e6179602c206120626f6f6c20726570726573656e74696e6720666f72206f7220616761696e737420766f7465e82a20606465706f736974602c207468652022636f6e76696374696f6e2220776974682077686963682074686520766f7465206973206d6164652e002023204572726f7273e42a20604e6f5375636850726f706f73616c60206966206069646020646f65736e2774207265666572656e636520612076616c6964205049502ee42a20604e6f7446726f6d436f6d6d756e697479602069662070726f706f73616c20776173206d616465206279206120636f6d6d69747465652ec02a2060496e636f727265637450726f706f73616c537461746560206966205049502069736e27742070656e64696e672e2d012a2060496e73756666696369656e744465706f7369746020696620606f726967696e602063616e6e6f74207265736572766520606465706f736974202d206f6c645f6465706f736974602e68617070726f76655f636f6d6d69747465655f70726f706f73616c04010869644d030114506970496400081cd4417070726f766573207468652070656e64696e6720636f6d6d69747465652050495020676976656e2062792074686520606964602e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ee42a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c2069736e27742070656e64696e672ee02a20604e6f744279436f6d6d697474656560206966207468652070726f706f73616c2069736e2774206279206120636f6d6d69747465652e3c72656a6563745f70726f706f73616c04010869644d0301145069704964000920f852656a65637473207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e7920626f6e6465642066756e64732cb8617373756d696e67206974206861736e2774206265656e2063616e63656c6c6564206f722065786563757465642e05014e6f746520746861742070726f706f73616c73207363686564756c65642d666f722d657865637574696f6e2063616e20616c736f2062652072656a65637465642e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742e15012a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c207761732063616e63656c6c6564206f722065786563757465642e387072756e655f70726f706f73616c04010869644d0301145069704964000a2429015072756e65207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e792066756e6473206e6f7420616c726561647920726566756e6465642e6454686520504950206d6179206e6f7420626520616374697665000901546869732066756e6374696f6e20697320696e74656e64656420666f722073746f72616765206761726261676520636f6c6c656374696f6e20707572706f7365732e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ed42a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c206973206163746976652e5072657363686564756c655f657865637574696f6e08010869644d0301145069704964000114756e74696c190601584f7074696f6e3c543a3a426c6f636b4e756d6265723e000b24e0557064617465732074686520657865637574696f6e207363686564756c65206f66207468652050495020676976656e20627920606964602e002c2320417267756d656e747331012a2060756e74696c6020646566696e6573207468652066757475726520626c6f636b2077686572652074686520656e6163746d656e7420706572696f642077696c6c2066696e69736865642e4501202020604e6f6e65602076616c7565206d65616e73207468617420656e6163746d656e7420706572696f6420697320676f696e6720746f2066696e69736820696e20746865206e65787420626c6f636b2e002023204572726f727339012a206052657363686564756c654e6f74427952656c65617365436f6f7264696e61746f726020756e6c657373207472696767657265642062792072656c6561736520636f6f7264696e61746f722e21012a2060496e636f727265637450726f706f73616c53746174656020756e6c657373207468652070726f706f73616c2077617320696e2061207363686564756c65642073746174652e38636c6561725f736e617073686f74000c10e8436c656172732074686520736e617073686f7420616e6420656d69747320746865206576656e742060536e617073686f74436c6561726564602e002023204572726f72733d012a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e20736e617073686f74000d140d0154616b65732061206e657720736e617073686f74206f66207468652063757272656e74206c697374206f66206163746976652026262070656e64696e6720504950732e2901546865205049507320617265207468656e20736f7274656420696e746f2061207072696f72697479207175657565206261736564206f6e2065616368205049502773207765696768742e002023204572726f72733d012a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e58656e6163745f736e617073686f745f726573756c747304011c726573756c7473a50701705665633c2850697049642c20536e617073686f74526573756c74293e000e44d0456e616374732060726573756c74736020666f7220746865205049507320696e2074686520736e617073686f742071756575652e290154686520736e617073686f742077696c6c20626520617661696c61626c6520666f72206675727468657220656e6163746d656e747320756e74696c20697420697320636c65617265642e0055015468652060726573756c7473602061726520656e636f6465642061206c697374206f6620602869642c20726573756c7429602077686572652060726573756c7460206973206170706c69656420746f20606964602e49014e6f746520746861742074686520736e617073686f74207072696f7269747920717565756520697320656e636f646564207769746820746865202a6c6f77657374207072696f726974792066697273742a2e5501736f2060726573756c7473203d205b2869642c20417070726f7665295d602077696c6c20617070726f76652060536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20315d602e002023204572726f72730d012a20604261644f726967696e60202d20756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2e21012a206043616e6e6f74536b697050697060202d206120676976656e205049502068617320616c7265616479206265656e20736b697070656420746f6f206d616e792074696d65732e0d012a2060536e617073686f74526573756c74546f6f4c6172676560202d206f6e206c656e28726573756c747329203e206c656e28736e617073686f745f7175657565292e702a2060536e617073686f7449644d69736d6174636860202d2069663a2420206060607465787498202020e2888320286920e2888820302e2e536e617073686f7451756575652e6c656e2829292efc2020202020726573756c74735b695d2e3020e289a020536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20695d2e6964142020606060f8202020546869732069732070726f746563747320616761696e737420636c656172696e67207175657565207768696c6520474320697320766f74696e672e54657865637574655f7363686564756c65645f70697004010869644d0301145069704964000f04d8496e7465726e616c20646973706174636861626c6520746861742068616e646c657320657865637574696f6e206f662061205049502e506578706972655f7363686564756c65645f70697008010c6469647c01284964656e74697479496400010869644d0301145069704964001004dc496e7465726e616c20646973706174636861626c6520746861742068616e646c65732065787069726174696f6e206f662061205049502e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ea507000002a90700a907000004084d03ad0700ad07082c70616c6c65745f7069707338536e617073686f74526573756c7400010c1c417070726f76650000001852656a65637400010010536b697000020000b107084070616c6c65745f706f7274666f6c696f1043616c6c040454000118406372656174655f706f7274666f6c696f0401106e616d6585030134506f7274666f6c696f4e616d65000004a843726561746573206120706f7274666f6c696f20776974682074686520676976656e20606e616d65602e4064656c6574655f706f7274666f6c696f04010c6e756de0013c506f7274666f6c696f4e756d626572000120350144656c657465732061207573657220706f7274666f6c696f2e204120706f7274666f6c696f2063616e2062652064656c65746564206f6e6c7920696620697420686173206e6f2066756e64732e002023204572726f72731d012a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2ef02a2060506f7274666f6c696f4e6f74456d707479602069662074686520706f7274666f6c696f207374696c6c20686f6c647320616e79206173736574003423205065726d697373696f6e732c2a20506f7274666f6c696f506d6f76655f706f7274666f6c696f5f66756e64730c011066726f6dd8012c506f7274666f6c696f4964000108746fd8012c506f7274666f6c696f49640001146974656d73b50701585665633c4d6f7665506f7274666f6c696f4974656d3e00023c5d014d6f766573206120746f6b656e20616d6f756e742066726f6d206f6e6520706f7274666f6c696f206f6620616e206964656e7469747920746f20616e6f7468657220706f7274666f6c696f206f66207468652073616d65e06964656e746974792e204d7573742062652063616c6c65642062792074686520637573746f6469616e206f66207468652073656e6465722e110146756e64732066726f6d2064656c6574656420706f7274666f6c696f732063616e20616c736f206265207265636f7665726564207669612074686973206d6574686f642e00e0412073686f7274206d656d6f2063616e20626520616464656420746f20746f206561636820746f6b656e20616d6f756e74206d6f7665642e002023204572726f727369012a2060506f7274666f6c696f446f65734e6f74457869737460206966206f6e65206f7220626f7468206f662074686520706f7274666f6c696f73207265666572656e636520616e20696e76616c696420706f7274666f6c696f2e51012a206064657374696e6174696f6e5f69735f73616d655f706f7274666f6c696f6020696620626f74682073656e64657220616e6420726563656976657220706f7274666f6c696f20617265207468652073616d6591012a2060446966666572656e744964656e74697479506f7274666f6c696f7360206966207468652073656e64657220616e6420726563656976657220706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e74697469657349012a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f66207468652066726f6d20706f7274666f6c696f41012a2060496e73756666696369656e74506f7274666f6c696f42616c616e636560206966207468652073656e64657220646f6573206e6f74206861766520656e6f75676820667265652062616c616e6365003423205065726d697373696f6e732c2a20506f7274666f6c696f4072656e616d655f706f7274666f6c696f08010c6e756de0013c506f7274666f6c696f4e756d62657200011c746f5f6e616d6585030134506f7274666f6c696f4e616d6500031c8052656e616d65732061206e6f6e2d64656661756c7420706f7274666f6c696f2e002023204572726f72731d012a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2e003423205065726d697373696f6e732c2a20506f7274666f6c696f58717569745f706f7274666f6c696f5f637573746f647904010c706964d8012c506f7274666f6c696f4964000420bc5768656e2063616c6c65642062792074686520637573746f6469616e206f662060706f7274666f6c696f5f6964602c4901616c6c6f77732072657475726e696e672074686520637573746f6479206f662074686520706f7274666f6c696f20746f2074686520706f7274666f6c696f206f776e657220756e696c61746572616c6c792e002023204572726f72735d012a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f74207468652063757272656e7420637573746f6469616e206f662060706f7274666f6c696f5f6964602e003423205065726d697373696f6e732c2a20506f7274666f6c696f606163636570745f706f7274666f6c696f5f637573746f647904011c617574685f696420010c7536340005000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652eb507000002b90700b907084070616c6c65745f706f7274666f6c696f444d6f7665506f7274666f6c696f4974656d00000c01187469636b6572a001185469636b6572000118616d6f756e7418011c42616c616e63650001106d656d6f8001304f7074696f6e3c4d656d6f3e0000bd07084c70616c6c65745f70726f746f636f6c5f6665651043616c6c040454000108486368616e67655f636f656666696369656e7404012c636f656666696369656e7495030120506f73526174696f000010c04368616e676573207468652066656520636f656666696369656e7420666f722074686520726f6f74206f726967696e2e002023204572726f7273882a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e3c6368616e67655f626173655f6665650801086f70c107012850726f746f636f6c4f70000120626173655f66656518011c42616c616e6365000110ac4368616e67657320746865206120626173652066656520666f722074686520726f6f74206f726967696e2e002023204572726f7273882a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ec1070c64706f6c796d6573685f636f6d6d6f6e5f7574696c69746965733070726f746f636f6c5f6665652850726f746f636f6c4f700001344c417373657452656769737465725469636b65720000002841737365744973737565000100444173736574416464446f63756d656e7473000200404173736574437265617465417373657400030060436865636b706f696e744372656174655363686564756c65000400a4436f6d706c69616e63654d616e61676572416464436f6d706c69616e6365526571756972656d656e74000500584964656e746974794364645265676973746572446964000600404964656e74697479416464436c61696d000700a44964656e746974794164645365636f6e646172794b65797357697468417574686f72697a6174696f6e0008002c5069707350726f706f736500090040436f6e747261637473507574436f6465000a006c436f72706f7261746542616c6c6f7441747461636842616c6c6f74000b00744361706974616c446973747269627574696f6e44697374726962757465000c0000c5070c4070616c6c65745f7363686564756c65721870616c6c65741043616c6c040454000118207363686564756c651001107768656e100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963c90701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cd1050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00002870416e6f6e796d6f75736c79207363686564756c652061207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c738c2d2042617365205765696768743a2032322e3239202b202e313236202a205320c2b573302d204442205765696768743a48202020202d20526561643a204167656e64614c202020202d2057726974653a204167656e646139012d2057696c6c20757365206261736520776569676874206f662032352077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e1863616e63656c0801107768656e100138543a3a426c6f636b4e756d626572000114696e64657810010c7533320001289443616e63656c20616e20616e6f6e796d6f75736c79207363686564756c6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73902d2042617365205765696768743a2032322e3135202b20322e383639202a205320c2b573302d204442205765696768743a48202020202d20526561643a204167656e64616c202020202d2057726974653a204167656e64612c204c6f6f6b75703d012d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e387363686564756c655f6e616d6564140108696428011c5665633c75383e0001107768656e100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963c90701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cd1050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000228585363686564756c652061206e616d6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73882d2042617365205765696768743a2032392e36202b202e313539202a205320c2b573302d204442205765696768743a68202020202d20526561643a204167656e64612c204c6f6f6b75706c202020202d2057726974653a204167656e64612c204c6f6f6b757049012d2057696c6c20757365206261736520776569676874206f662033352077686963682073686f756c6420626520676f6f6420666f72206d6f7265207468616e203330207363686564756c65642063616c6c732c23203c2f7765696768743e3063616e63656c5f6e616d6564040108696428011c5665633c75383e0003287843616e63656c2061206e616d6564207363686564756c6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73902d2042617365205765696768743a2032342e3931202b20322e393037202a205320c2b573302d204442205765696768743a68202020202d20526561643a204167656e64612c204c6f6f6b75706c202020202d2057726974653a204167656e64612c204c6f6f6b75703d012d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e387363686564756c655f61667465721001146166746572100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963c90701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cd1050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000414a8416e6f6e796d6f75736c79207363686564756c652061207461736b20616674657220612064656c61792e002823203c7765696768743e5453616d65206173205b607363686564756c65605d2e2c23203c2f7765696768743e507363686564756c655f6e616d65645f6166746572140108696428011c5665633c75383e0001146166746572100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963c90701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cd1050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000514905363686564756c652061206e616d6564207461736b20616674657220612064656c61792e002823203c7765696768743ec453616d65206173205b607363686564756c655f6e616d6564605d2853656c663a3a7363686564756c655f6e616d6564292e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ec90704184f7074696f6e040454019d030108104e6f6e6500000010536f6d6504009d030000010000cd07084470616c6c65745f736574746c656d656e741043616c6c040454000144306372656174655f76656e75650c011c64657461696c73a903013056656e756544657461696c7300011c7369676e657273ec01445665633c543a3a4163636f756e7449643e00010c747970ad03012456656e756554797065000014585265676973746572732061206e65772076656e75652e00a42a206064657461696c7360202d2045787472612064657461696c732061626f757420612076656e75653d012a20607369676e65727360202d204172726179206f66207369676e65727320746861742061726520616c6c6f77656420746f207369676e20726563656970747320666f7220746869732076656e7565942a206074797060202d2054797065206f662076656e7565206265696e672063726561746564507570646174655f76656e75655f64657461696c730801086964a503011c56656e7565496400011c64657461696c73a903013056656e756544657461696c730001105c4564697420612076656e756527732064657461696c732e00b42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742ec02a206064657461696c7360207370656369666965732074686520757064617465642076656e75652064657461696c732e447570646174655f76656e75655f747970650801086964a503011c56656e7565496400010c747970ad03012456656e756554797065000210504564697420612076656e7565277320747970652e00b42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742eb42a206074797065602073706563696669657320746865206e65772074797065206f66207468652076656e75652e3c6164645f696e737472756374696f6e14012076656e75655f6964a503011c56656e7565496400013c736574746c656d656e745f74797065b5030178536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e00012874726164655f64617465f401444f7074696f6e3c543a3a4d6f6d656e743e00012876616c75655f64617465f401444f7074696f6e3c543a3a4d6f6d656e743e0001106c656773b90301205665633c4c65673e0003305c416464732061206e657720696e737472756374696f6e2e002c2320417267756d656e7473ec2a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e09012a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c65645d01202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e51012a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b42a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e0020232057656967687498603935305f3030305f303030202b20315f3030305f303030202a206c6567732e6c656e282960686164645f616e645f61666669726d5f696e737472756374696f6e18012076656e75655f6964a503011c56656e7565496400013c736574746c656d656e745f74797065b5030178536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e00012874726164655f64617465f401444f7074696f6e3c543a3a4d6f6d656e743e00012876616c75655f64617465f401444f7074696f6e3c543a3a4d6f6d656e743e0001106c656773b90301205665633c4c65673e000128706f7274666f6c696f73e801405665633c506f7274666f6c696f49643e0004348c4164647320616e642061666669726d732061206e657720696e737472756374696f6e2e002c2320417267756d656e7473ec2a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e09012a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c65645d01202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e51012a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b42a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e6d012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2075736520696e20746869732061666669726d6174696f6e732e003423205065726d697373696f6e732c2a20506f7274666f6c696f4861666669726d5f696e737472756374696f6e0c01086964b1030134496e737472756374696f6e4964000128706f7274666f6c696f73e801405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000524bc50726f766964652061666669726d6174696f6e20746f20616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e7473882a2060696460202d20496e737472756374696f6e20696420746f2061666669726d2e69012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2061666669726d207468697320696e737472756374696f6e2ef82a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f206265202061666669726d65642e003423205065726d697373696f6e732c2a20506f7274666f6c696f5077697468647261775f61666669726d6174696f6e0c01086964b1030134496e737472756374696f6e4964000128706f7274666f6c696f73e801405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000624c0576974686472617720616e2061666669726d6174696f6e20666f72206120676976656e20696e737472756374696f6e2e002c2320417267756d656e7473ec2a2060696460202d20496e737472756374696f6e20696420666f7220746861742061666669726d6174696f6e206765742077697468647261776e2e5d012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2077697468647261772061666669726d6174696f6e2e01012a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f20626520756e2d61666669726d65642e003423205065726d697373696f6e732c2a20506f7274666f6c696f4872656a6563745f696e737472756374696f6e0c01086964b1030134496e737472756374696f6e4964000124706f7274666f6c696fd8012c506f7274666f6c696f496400012c6e756d5f6f665f6c65677310010c7533320007248052656a6563747320616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e7473882a2060696460202d20496e737472756374696f6e20696420746f2072656a6563742ed02a2060706f7274666f6c696f60202d20506f7274666f6c696f20746f2072656a6563742074686520696e737472756374696f6e2ed02a20606e756d5f6f665f6c65677360202d204e756d626572206f66206c65677320696e2074686520696e737472756374696f6e2e003423205065726d697373696f6e732c2a20506f7274666f6c696f5061666669726d5f776974685f72656365697074731001086964b1030134496e737472756374696f6e496400013c726563656970745f64657461696c73d10701dc5665633c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e000128706f7274666f6c696f73e801405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000830cc4163636570747320616e20696e737472756374696f6e20616e6420636c61696d732061207369676e656420726563656970742e002c2320417267756d656e74737c2a2060696460202d2054617267657420696e737472756374696f6e2069642ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d42a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e8c2a20607369676e657260202d205369676e6572206f662074686520726563656970742e842a20607369676e65645f6461746160202d205369676e656420726563656970742e79012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f20616363657074207468697320696e737472756374696f6e2077697468003423205065726d697373696f6e732c2a20506f7274666f6c696f34636c61696d5f726563656970740801086964b1030134496e737472756374696f6e496400013c726563656970745f64657461696c73d50701c85265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e00092c60436c61696d732061207369676e656420726563656970742e002c2320417267756d656e7473bc2a2060696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d42a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e8c2a20607369676e657260202d205369676e6572206f662074686520726563656970742e842a20607369676e65645f6461746160202d205369676e656420726563656970742e003423205065726d697373696f6e732c2a20506f7274666f6c696f3c756e636c61696d5f72656365697074080138696e737472756374696f6e5f6964b1030134496e737472756374696f6e49640001186c65675f6964c10301144c65674964000a2098556e636c61696d7320612070726576696f75736c7920636c61696d656420726563656970742e002c2320417267756d656e7473ec2a2060696e737472756374696f6e5f696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074003423205065726d697373696f6e732c2a20506f7274666f6c696f4c7365745f76656e75655f66696c746572696e670801187469636b6572a001185469636b657200011c656e61626c656419010110626f6f6c000b20c0456e61626c6573206f722064697361626c65642076656e75652066696c746572696e6720666f72206120746f6b656e2e002c2320417267756d656e7473b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e19012a2060656e61626c656460202d20426f6f6c65616e20746861742064656369646573206966207468652066696c746572696e672073686f756c6420626520656e61626c65642e003423205065726d697373696f6e731c2a20417373657430616c6c6f775f76656e7565730801187469636b6572a001185469636b657200011876656e756573c90301305665633c56656e756549643e000c1c0d01416c6c6f7773206164646974696f6e616c2076656e75657320746f2063726561746520696e737472756374696f6e7320696e766f6c76696e6720616e2061737365742e00b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e7d012a206076656e75657360202d204172726179206f662076656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e003423205065726d697373696f6e731c2a2041737365743c646973616c6c6f775f76656e7565730801187469636b6572a001185469636b657200011876656e756573c90301305665633c56656e756549643e000d1c69015265766f6b6573207065726d697373696f6e20676976656e20746f2076656e75657320666f72206372656174696e6720696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c61722061737365742e00b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2ea5012a206076656e75657360202d204172726179206f662076656e756573207468617420617265206e6f206c6f6e67657220616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e003423205065726d697373696f6e731c2a2041737365745c6368616e67655f726563656970745f76616c696469747908012c726563656970745f75696420010c75363400012076616c696469747919010110626f6f6c000e14fc4d61726b732061207265636569707420697373756564206279207468652063616c6c657220617320636c61696d6564206f72206e6f7420636c61696d65642ec1015468697320616c6c6f77732074686520726563656970742069737375657220746f20696e76616c696461746520616e20616c7265616479206973737565642072656365697074206f7220726576616c696461746520616e20616c726561647920636c61696d656420726563656970742e00ac2a2060726563656970745f75696460202d20556e69717565204944206f662074686520726563656970742eac2a206076616c696469747960202d204e65772076616c6964697479206f662074686520726563656970742e74657865637574655f7363686564756c65645f696e737472756374696f6e0801086964b1030134496e737472756374696f6e496400012c5f6c6567735f636f756e7410010c753332000f048101526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f20657865637574652061207363686564756c656420736574746c656d656e7420696e737472756374696f6e2e5872657363686564756c655f696e737472756374696f6e0401086964b1030134496e737472756374696f6e49640010288452657363686564756c65732061206661696c656420696e737472756374696f6e2e002c2320417267756d656e7473b42a2060696460202d2054617267657420696e737472756374696f6e20696420746f2072657363686564756c652e003423205065726d697373696f6e732c2a20506f7274666f6c696f002023204572726f72733d012a2060496e737472756374696f6e4e6f744661696c656460202d20496e737472756374696f6e206e6f7420696e2061206661696c6564207374617465206f7220646f6573206e6f742065786973742e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ed107000002d50700d507084470616c6c65745f736574746c656d656e74385265636569707444657461696c7308244163636f756e7449640100444f6666436861696e5369676e617475726501d9070014012c726563656970745f75696420010c7536340001186c65675f6964c10301144c656749640001187369676e65720001244163636f756e7449640001247369676e6174757265d90701444f6666436861696e5369676e61747572650001206d65746164617461c503013c526563656970744d657461646174610000d907082873705f72756e74696d65384d756c74695369676e617475726500010c1c45643235353139040019070148656432353531393a3a5369676e61747572650000001c53723235353139040049070148737232353531393a3a5369676e61747572650001001445636473610400dd07014065636473613a3a5369676e617475726500020000dd070c1c73705f636f7265146563647361245369676e617475726500000400610701205b75383b2036355d0000e107084470616c6c65745f737461746973746963731043616c6c040454000110587365745f6163746976655f61737365745f73746174730801146173736574d1030128417373657453636f7065000128737461745f7479706573e507014842547265655365743c53746174547970653e00003c80536574207468652061637469766520617373657420737461745f74797065732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e09012d2060737461745f747970657360202d20746865206e6577207374617420747970657320746f207265706c61636520616e79206578697374696e672074797065732e002023204572726f72731d012d206053746174547970654c696d69745265616368656460202d20746f6f206d616e79207374617420747970657320656e61626c656420666f722074686520606173736574602e85012d206043616e6e6f7452656d6f76655374617454797065496e55736560202d2063616e206e6f742072656d6f7665206120737461742074797065207468617420697320696e20757365206279207472616e7366657220636f6e646974696f6e732e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365746062617463685f7570646174655f61737365745f73746174730c01146173736574d1030128417373657453636f7065000124737461745f74797065d9030120537461745479706500011876616c756573e907015042547265655365743c537461745570646174653e00013cec416c6c6f77206120747275737465642069737375657220746f20696e69742f726573796e63207469636b65722f636f6d70616e792073746174732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e902d2060737461745f7479706560202d2073746174207479706520746f207570646174652eb02d206076616c75657360202d20557064617465642076616c75657320666f722060737461745f74797065602e002023204572726f727305012d206053746174547970654d697373696e6760202d2060737461745f7479706560206973206e6f7420656e61626c656420666f722074686520606173736574602e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d204173736574747365745f61737365745f7472616e736665725f636f6d706c69616e63650801146173736574d1030128417373657453636f706500014c7472616e736665725f636f6e646974696f6e73ed07016c42547265655365743c5472616e73666572436f6e646974696f6e3e00023c90536574206173736574207472616e7366657220636f6d706c69616e63652072756c65732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e61012d20607472616e736665725f636f6e646974696f6e7360202d20746865206e6577207472616e7366657220636f6e646974696f6e20746f207265706c61636520616e79206578697374696e6720636f6e646974696f6e732e002023204572726f727355012d20605472616e73666572436f6e646974696f6e4c696d69745265616368656460202d20746f6f206d616e79207472616e7366657220636f6e64697469746f6e20656e61626c656420666f7220606173736574602e91012d206053746174547970654d697373696e6760202d2061207472616e7366657220636f6e646974696f6e2072657175697265732061207374617420747970652074686174206973206e6f7420656e61626c656420666f722074686520606173736574602e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365744c7365745f656e7469746965735f6578656d70740c012469735f6578656d707419010110626f6f6c0001286578656d70745f6b65790d0401685472616e73666572436f6e646974696f6e4578656d70744b6579000120656e746974696573f107014442547265655365743c53636f706549643e00033811015365742f756e73657420656e746974696573206578656d70742066726f6d20616e2061737365742773207472616e7366657220636f6d706c69616e63652072756c65732e002c2320417267756d656e747351012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606578656d70745f6b65792e6173736574602ee02d206069735f6578656d707460202d20656e61626c652f64697361626c65206578656d7074696f6e20666f722060656e746974696573602e1d012d20606578656d70745f6b657960202d2074686520617373657420616e642073746174207479706520746f206578656d7074207468652060656e746974696573602066726f6d2eec2d2060656e74697469657360202d2074686520656e74697469657320746f207365742f756e73657420746865206578656d7074696f6e20666f722e002023204572726f727321012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ee5070420425472656553657404045401d903000400d503000000e9070420425472656553657404045401ed03000400e903000000ed07042042547265655365740404540105040004000104000000f10704204254726565536574040454017c0004002501000000f507082870616c6c65745f73746f1043616c6c040454000118446372656174655f66756e647261697365722801486f66666572696e675f706f7274666f6c696fd8012c506f7274666f6c696f49640001386f66666572696e675f6173736574a001185469636b657200014472616973696e675f706f7274666f6c696fd8012c506f7274666f6c696f496400013472616973696e675f6173736574a001185469636b65720001147469657273f90701385665633c5072696365546965723e00012076656e75655f6964a503011c56656e756549640001147374617274f401444f7074696f6e3c543a3a4d6f6d656e743e00010c656e64f401444f7074696f6e3c543a3a4d6f6d656e743e0001486d696e696d756d5f696e766573746d656e7418011c42616c616e636500013c66756e647261697365725f6e616d651d04013846756e647261697365724e616d65000040604372656174652061206e65772066756e647261697365722e000d012a20606f66666572696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e672074686520606f66666572696e675f6173736574602ea42a20606f66666572696e675f617373657460202d204173736574206265696e67206f6666657265642e05012a206072616973696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e6720746865206072616973696e675f6173736574602e35012a206072616973696e675f617373657460202d204173736574206265696e672065786368616e67656420666f7220606f66666572696e675f617373657460206f6e20696e766573746d656e742ee82a2060746965727360202d20507269636520746965727320746f2063686172676520696e766573746f7273206f6e20696e766573746d656e742ea82a206076656e75655f696460202d2056656e756520746f2068616e646c6520736574746c656d656e742e4d012a2060737461727460202d2046756e647261697365722073746172742074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c20737461727420696d6d6564696174656c792e29012a2060656e6460202d2046756e6472616973657220656e642074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c206e65766572206578706972652ecd012a20606d696e696d756d5f696e766573746d656e7460202d204d696e696d756d20616d6f756e74206f66206072616973696e675f617373657460207468617420616e20696e766573746f72206e6565647320746f207370656e6420746f20696e7665737420696e20746869732072616973652ef02a206066756e647261697365725f6e616d6560202d2046756e64726169736572206e616d652c206f6e6c79207573656420696e20746865205549732e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f18696e766573741c0150696e766573746d656e745f706f7274666f6c696fd8012c506f7274666f6c696f496400014466756e64696e675f706f7274666f6c696fd8012c506f7274666f6c696f49640001386f66666572696e675f6173736574a001185469636b657200010869641904013046756e64726169736572496400013c70757263686173655f616d6f756e7418011c42616c616e63650001246d61785f7072696365fd03013c4f7074696f6e3c42616c616e63653e00011c72656365697074010801e84f7074696f6e3c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e0001305c496e7665737420696e20612066756e647261697365722e0041012a2060696e766573746d656e745f706f7274666f6c696f60202d20506f7274666f6c696f207468617420606f66666572696e675f6173736574602077696c6c206265206465706f736974656420696e2e01012a206066756e64696e675f706f7274666f6c696f60202d20506f7274666f6c696f20746861742077696c6c2066756e642074686520696e766573746d656e742ea02a20606f66666572696e675f617373657460202d20417373657420746f20696e7665737420696e2eac2a2060696460202d204944206f66207468652066756e6472616973657220746f20696e7665737420696e2ef42a206070757263686173655f616d6f756e7460202d20416d6f756e74206f6620606f66666572696e675f61737365746020746f2070757263686173652eb9012a20606d61785f707269636560202d204d6178696d756d20707269636520746f207061792070657220756e6974206f6620606f66666572696e675f6173736574602c20496620604e6f6e6560746865726520617265206e6f20636f6e73747261696e7473206f6e2070726963652e69012a20607265636569707460202d204f66662d636861696e207265636569707420746f2075736520696e7374656164206f66206f6e2d636861696e2062616c616e636520696e206066756e64696e675f706f7274666f6c696f602e003423205065726d697373696f6e732c2a20506f7274666f6c696f44667265657a655f66756e647261697365720801386f66666572696e675f6173736574a001185469636b657200010869641904013046756e64726169736572496400021c50467265657a6520612066756e647261697365722e00942a20606f66666572696e675f617373657460202d20417373657420746f20667265657a652ea02a2060696460202d204944206f66207468652066756e6472616973657220746f20667265657a652e003423205065726d697373696f6e731c2a2041737365744c756e667265657a655f66756e647261697365720801386f66666572696e675f6173736574a001185469636b657200010869641904013046756e64726169736572496400031c58556e667265657a6520612066756e647261697365722e009c2a20606f66666572696e675f617373657460202d20417373657420746f20756e667265657a652ea82a2060696460202d204944206f66207468652066756e6472616973657220746f20756e667265657a652e003423205065726d697373696f6e731c2a204173736574606d6f646966795f66756e647261697365725f77696e646f771001386f66666572696e675f6173736574a001185469636b657200010869641904013046756e6472616973657249640001147374617274200124543a3a4d6f6d656e7400010c656e64f401444f7074696f6e3c543a3a4d6f6d656e743e000424b44d6f64696679207468652074696d652077696e646f7720612066756e647261697365722069732061637469766500942a20606f66666572696e675f617373657460202d20417373657420746f206d6f646966792ea02a2060696460202d204944206f66207468652066756e6472616973657220746f206d6f646966792ea02a2060737461727460202d204e6577207374617274206f66207468652066756e647261697365722eb82a2060656e6460202d204e657720656e64206f66207468652066756e6472616973657220746f206d6f646966792e003423205065726d697373696f6e731c2a2041737365741073746f700801386f66666572696e675f6173736574a001185469636b657200010869641904013046756e64726169736572496400051c4853746f7020612066756e647261697365722e008c2a20606f66666572696e675f617373657460202d20417373657420746f2073746f702e982a2060696460202d204944206f66207468652066756e6472616973657220746f2073746f702e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef907000002fd0700fd07082870616c6c65745f73746f245072696365546965720000080114746f74616c18011c42616c616e6365000114707269636518011c42616c616e63650000010804184f7074696f6e04045401d5070108104e6f6e6500000010536f6d650400d50700000100000508083c70616c6c65745f74726561737572791043616c6c0404540001083064697362757273656d656e7404013462656e65666963696172696573090801785665633c42656e65666963696172793c42616c616e63654f663c543e3e3e00001851014974207472616e73666572732062616c616e6365732066726f6d20747265617375727920746f2065616368206f662062656e6566696369617269657320616e642074686520737065636966696320616d6f756e7444666f722065616368206f66207468656d2e001c23204572726f72c42a20604261644f726967696e603a204f6e6c7920726f6f742063616e2065786563757465207472616e73616374696f6e2e5d012a2060496e73756666696369656e7442616c616e6365603a2049662074726561737572792062616c616e636573206973206e6f7420656e6f75676820746f20636f76657220616c6c2062656e656669636961726965732e347265696d62757273656d656e74040118616d6f756e7418013042616c616e63654f663c543e00010c1d014974207472616e7366657273207468652073706563696669632060616d6f756e74602066726f6d20606f726967696e60206163636f756e7420696e746f2074726561737572792e0049014f6e6c79206163636f756e747320776869636820617265206173736f63696174656420746f20616e206964656e746974792063616e206d616b65206120646f6e6174696f6e20746f2074726561737572792e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e09080000020d08000d08084c706f6c796d6573685f7072696d6974697665732c42656e6566696369617279041c42616c616e636501180008010869647c01284964656e746974794964000118616d6f756e7418011c42616c616e636500001108083870616c6c65745f7574696c6974791043616c6c04045400011014626174636804011463616c6c73150801605665633c3c5420617320436f6e6669673e3a3a43616c6c3e000048c44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e00e8546869732077696c6c206578656375746520756e74696c20746865206669727374206f6e65206661696c7320616e64207468656e2073746f702e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e00202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e00bd01546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e31016576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e207468655501604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d6164654d01616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c65746564604c6576656e74206973206465706f73697465642e3062617463685f61746f6d696304011463616c6c73150801605665633c3c5420617320436f6e6669673e3a3a43616c6c3e00014cc44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e001501546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c2073746f7070696e6720617420746865206669727374206661696c7572652cc0696e207768696368206361736520746865207374617465206368616e6765732061726520726f6c6c6564206261636b2e25014f6e206661696c7572652c20616e206576656e7420604261746368496e746572727570746564286661696c7572655f6964782c206572726f722960206973206465706f73697465642e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e00202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e001501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef4546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ee4496620616e792063616c6c206661696c65642c207468656e20604261746368496e74657272757074656460206973206465706f73697465642e1501496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e4062617463685f6f7074696d697374696304011463616c6c73150801605665633c3c5420617320436f6e6669673e3a3a43616c6c3e000254c44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e000101546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c20697272657370656374697665206f66206661696c757265732e0901416e79206661696c757265732077696c6c20626520617661696c61626c6520696e2061206042617463684f7074696d69737469634661696c656460206576656e742e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e0000202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e001501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef4546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ef8496620616e792063616c6c206661696c65642c207468656e206042617463684f7074696d69737469634661696c656460206973206465706f73697465642cfc77697468206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c2061732077656c6c206173206120766563746f72286f66206572726f72732e1501496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e2072656c61795f74780c0118746172676574000130543a3a4163636f756e7449640001247369676e6174757265d9070150543a3a4f6666436861696e5369676e617475726500011063616c6c1908017c556e6971756543616c6c3c3c5420617320436f6e6669673e3a3a43616c6c3e000330a052656c617920612063616c6c20666f722061207461726765742066726f6d20616e206f726967696e00510152656c6179696e6720696e207468697320636f6e746578742072656665727320746f20746865206162696c697479206f66206f726967696e20746f206d616b6520612063616c6c206f6e20626568616c66206f661c7461726765742e00684665657320617265206368617267656420746f206f726967696e00302320506172616d6574657273842d2060746172676574603a204163636f756e7420746f2062652072656c61796564e82d20607369676e6174757265603a205369676e61747572652066726f6d2074617267657420617574686f72697a696e67207468652072656c6179c02d206063616c6c603a2043616c6c20746f2062652072656c61796564206f6e20626568616c66206f6620746172676574000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e1508000002d105001908083870616c6c65745f7574696c69747928556e6971756543616c6c04044301d105000801146e6f6e6365200148417574686f72697a6174696f6e4e6f6e636500011063616c6cd1050118426f783c433e00001d08082c70616c6c65745f626173651043616c6c0404540001000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e2108085870616c6c65745f65787465726e616c5f6167656e74731043616c6c040454000120306372656174655f67726f75700801187469636b6572a001185469636b65720001147065726d73b0015045787472696e7369635065726d697373696f6e73000048e443726561746573206120637573746f6d206167656e742067726f7570202841472920666f722074686520676976656e20607469636b6572602e00d45468652041472077696c6c206861766520746865207065726d697373696f6e7320617320676976656e20627920607065726d73602e290154686973206e6577204147206973207468656e2061737369676e656420606964203d204147496453657175656e63653a3a6765742829202b20316020617320697473206041474964602c3901776869636820796f752063616e2075736520617320604167656e7447726f75703a3a437573746f6d2869642960207768656e20616464696e67206167656e747320666f7220607469636b6572602e002c2320417267756d656e74739c2d20607469636b65726020746f206164642074686520637573746f6d2067726f757020666f722e902d20607065726d7360207468617420746865206e65772041472077696c6c20686176652e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e21012d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672e25012d2060436f756e7465724f766572666c6f776020696620604147496453657175656e63653a3a6765742829202b20316020776f756c642065786365656420607533323a3a4d4158602e003423205065726d697373696f6e731c2a2041737365741c2a204167656e74547365745f67726f75705f7065726d697373696f6e730c01187469636b6572a001185469636b6572000108696415010110414749640001147065726d73b0015045787472696e7369635065726d697373696f6e7300013c51015570646174657320746865207065726d697373696f6e73206f662074686520637573746f6d204147206964656e74696669656420627920606964602c20666f722074686520676976656e20607469636b6572602e002c2320417267756d656e7473902d20607469636b6572602074686520637573746f6d2041472062656c6f6e677320746f2ea42d206069646020666f722074686520637573746f6d2041472077697468696e20607469636b6572602e942d20607065726d736020746f207570646174652074686520637573746f6d20414720746f2e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e21012d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672ecc2d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472e003423205065726d697373696f6e731c2a2041737365741c2a204167656e743072656d6f76655f6167656e740801187469636b6572a001185469636b65720001146167656e747c01284964656e7469747949640002389c52656d6f76652074686520676976656e20606167656e74602066726f6d20607469636b6572602e002c2320417267756d656e7473a82d20607469636b6572602074686174206861732074686520606167656e746020746f2072656d6f76652e802d20606167656e7460206f6620607469636b65726020746f2072656d6f76652e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ed82d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602ee82d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e746020697320746865206c6173742066756c6c206f6e652e003423205065726d697373696f6e731c2a2041737365741c2a204167656e742061626469636174650401187469636b6572a001185469636b657200032c804162646963617465206167656e747368697020666f7220607469636b6572602e002c2320417267756d656e7473ac2d20607469636b657260206f66207768696368207468652063616c6c657220697320616e206167656e742e002023204572726f7273e42d20604e6f74416e4167656e7460206966207468652063616c6c6572206973206e6f7420616e206167656e74206f6620607469636b6572602efc2d206052656d6f76696e674c61737446756c6c4167656e7460206966207468652063616c6c657220697320746865206c6173742066756c6c206167656e742e003423205065726d697373696f6e731c2a204173736574306368616e67655f67726f75700c01187469636b6572a001185469636b65720001146167656e747c01284964656e74697479496400011467726f7570110101284167656e7447726f7570000440ec4368616e676520746865206167656e742067726f7570207468617420606167656e74602062656c6f6e677320746f20696e20607469636b6572602e002c2320417267756d656e7473802d20607469636b6572602074686174206861732074686520606167656e74602eb82d20606167656e7460206f6620607469636b65726020746f206368616e6765207468652067726f757020666f722ec82d206067726f757060207468617420606167656e74602077696c6c2062656c6f6e6720746f20696e20607469636b6572602e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ecc2d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472ed82d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602e2d012d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e7460207761732061206046756c6c60206f6e6520616e64206973206265696e672064656d6f7465642e003423205065726d697373696f6e731c2a2041737365741c2a204167656e744c6163636570745f6265636f6d655f6167656e7404011c617574685f696420010c753634000540010141636365707420616e20617574686f72697a6174696f6e20627920616e206167656e742022416c696365222077686f206973737565642060617574685f696460d8746f20616c736f206265636f6d6520616e206167656e74206f6620746865207469636b657220416c696365207370656369666965642e002c2320417267756d656e7473d02d2060617574685f696460206964656e74696679696e672074686520617574686f72697a6174696f6e20746f206163636570742e002023204572726f727345012d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e35012d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f69646020697320666f7220616e206175746820746861742068617320657870697265642e4d012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f7420666f72206120604265636f6d654167656e7460206175746820747970652e25012d2060556e617574686f72697a65644167656e74602069662022416c69636522206973206e6f74207065726d697373696f6e656420746f2070726f766964652074686520617574682e0d012d20604e6f53756368414760206966207468652067726f757020726566657272656420746f206120637573746f6d207468617420646f6573206e6f742065786973742e0d012d2060416c7265616479416e4167656e7460206966207468652063616c6c657220697320616c726561647920616e206167656e74206f6620746865207469636b65722e003423205065726d697373696f6e731c2a204167656e74646372656174655f67726f75705f616e645f6164645f617574680c01187469636b6572a001185469636b65720001147065726d73b0015045787472696e7369635065726d697373696f6e730001187461726765746d01015c5369676e61746f72793c543a3a4163636f756e7449643e000614e85574696c6974792065787472696e73696320746f20626174636820606372656174655f67726f75706020616e642020606164645f61757468602e003423205065726d697373696f6e731c2a2041737365741c2a204167656e74786372656174655f616e645f6368616e67655f637573746f6d5f67726f75700c01187469636b6572a001185469636b65720001147065726d73b0015045787472696e7369635065726d697373696f6e730001146167656e747c01284964656e74697479496400071455015574696c6974792065787472696e73696320746f20626174636820606372656174655f67726f75706020616e642020606368616e67655f67726f75706020666f7220637573746f6d2067726f757073206f6e6c792e003423205065726d697373696f6e731c2a2041737365741c2a204167656e740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e2508083870616c6c65745f72656c617965721043616c6c040454000118387365745f706179696e675f6b6579080120757365725f6b6579000130543a3a4163636f756e74496400012c706f6c79785f6c696d697418011c42616c616e6365000020bd014372656174657320616e20617574686f72697a6174696f6e20746f20616c6c6f772060757365725f6b65796020746f20616363657074207468652063616c6c65722028606f726967696e203d3d20706179696e675f6b6579602920617320746865697220737562736964697365722e002c2320417267756d656e74739c2d2060757365725f6b657960207468652075736572206b657920746f207375627369646973652ee42d2060706f6c79785f6c696d6974602074686520696e697469616c20504f4c5958206c696d697420666f72207468697320737562736964792e002023204572726f727331012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e446163636570745f706179696e675f6b657904011c617574685f696420010c753634000138944163636570747320612060706179696e675f6b65796020617574686f72697a6174696f6e2e002c2320417267756d656e7473e82d2060617574685f6964602074686520617574686f72697a6174696f6e20696420746f2061636365707420612060706179696e675f6b6579602e002023204572726f727345012d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e2d012d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f6964602074686520617574686f72697a6174696f6e2068617320657870697265642e6d012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f742061206041646452656c61796572506179696e674b65796020617574686f72697a6174696f6e2ea5012d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f206163636570742074686520617574686f72697a6174696f6e20666f72207468652060757365725f6b6579602ed9012d20604e6f74417574686f72697a6564466f72506179696e674b6579602069662074686520617574686f72697a6174696f6e20776173206372656174656420616e206964656e7469747920646966666572656e742066726f6d207468652060706179696e675f6b6579602773206964656e746974792e31012d2060557365724b65794364644d697373696e6760206966207468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e41012d2060506179696e674b65794364644d697373696e6760206966207468652060706179696e675f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e4472656d6f76655f706179696e675f6b6579080120757365725f6b6579000130543a3a4163636f756e744964000128706179696e675f6b6579000130543a3a4163636f756e74496400022cac52656d6f766573207468652060706179696e675f6b6579602066726f6d20612060757365725f6b6579602e002c2320417267756d656e7473d42d2060757365725f6b657960207468652075736572206b657920746f2072656d6f76652074686520737562736964792066726f6d2e09012d2060706179696e675f6b6579602074686520706179696e67206b6579207468617420776173207375627369646973696e67207468652060757365725f6b6579602e002023204572726f72738d012d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2072656d6f766520746865207375627369647920666f72207468652060757365725f6b6579602ef82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e31012d20604e6f74506179696e674b657960206966207468652060706179696e675f6b65796020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e487570646174655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e74496400012c706f6c79785f6c696d697418011c42616c616e6365000328b4557064617465732074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e35012d2060706f6c79785f6c696d6974602074686520616d6f756e74206f6620504f4c595820617661696c61626c6520666f72207375627369646973696e67207468652060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e50696e6372656173655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e744964000118616d6f756e7418011c42616c616e636500042cb8496e6372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e0d012d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2061646420746f207468652073756273696479206f662060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e3d012d20604f7665726c6f776020696620746865207375627369647927732072656d61696e696e6720504f4c595820776f756c642068617665206f766572666c6f7765642060753132383a3a4d4158602e5064656372656173655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e744964000118616d6f756e7418011c42616c616e636500052cb844656372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e21012d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2072656d6f76652066726f6d207468652073756273696479206f662060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e09012d20604f7665726c6f776020696620746865207375627369647920686173206c657373207468656e2060616d6f756e746020504f4c59582072656d61696e696e672e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e2908083870616c6c65745f726577617264731043616c6c04045400010840636c61696d5f69746e5f7265776172640c01387265776172645f61646472657373000130543a3a4163636f756e74496400012c69746e5f61646472657373000130543a3a4163636f756e7449640001247369676e6174757265d9070150543a3a4f6666436861696e5369676e617475726500003450436c61696d20616e2049544e207265776172642e0030232320417267756d656e7473d82a206069746e5f61646472657373602073706563696679696e672074686520617761726465642061646472657373206f6e2049544e2ed42a20607369676e6174757265602061757468656e7469636174696e672074686520636c61696d20746f20746865207265776172642e7501202020546865207369676e61747572652073686f756c6420636f6e7461696e20607265776172645f616464726573736020666f6c6c6f7765642062792074686520737566666978206022636c61696d5f69746e5f72657761726422602cb8202020616e64206d7573742068617665206265656e207369676e6564206279206069746e5f61646472657373602e002023204572726f727345012a2060496e73756666696369656e7442616c616e636560202d2049746e20726577617264732068617320696e73756666696369656e742066756e647320746f20697373756520746865207265776172642e31012a2060496e76616c69645369676e617475726560202d20607369676e6174757265602068616420616e20696e76616c6964207369676e6572206f7220696e76616c6964206d6573736167652e69012a206049746e526577617264416c7265616479436c61696d656460202d205265776172642069737375656420746f20746865206069746e5f61646472657373602068617320616c7265616479206265656e20636c61696d65642e89012a2060556e6b6e6f776e49746e4164647265737360202d206069746e5f6164647265737360206973206e6f7420696e207468652072657761726473207461626c6520616e6420686173206e6f2072657761726420746f20626520636c61696d65642e547365745f69746e5f7265776172645f73746174757308012c69746e5f61646472657373000130543a3a4163636f756e7449640001187374617475732d08013c49746e5265776172645374617475730001000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e2d08083870616c6c65745f726577617264733c49746e52657761726453746174757300010824556e636c61696d6564040018011c42616c616e63650000001c436c61696d6564000100003108084470616c6c65745f746573745f7574696c731043616c6c0404540001103072656769737465725f64696408010c7569645d04012c496e766573746f725569640001387365636f6e646172795f6b65797390017c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e0000284d0147656e6572617465732061206e657720604964656e7469747949446020666f72207468652063616c6c65722c20616e642069737375657320612073656c662d67656e6572617465642043444420636c61696d2e00f05468652063616c6c6572206163636f756e742077696c6c20626520746865207072696d617279206b6579206f662074686174206964656e746974792e5d01466f722065616368206163636f756e74206f6620607365636f6e646172795f6b657973602c2061206e657720604a6f696e4964656e746974796020617574686f72697a6174696f6e20697320637265617465642c20736f410165616368206f66207468656d2077696c6c206e65656420746f20616363657074206974206265666f7265206265636f6d652070617274206f662074686973206e657720604964656e746974794944602e002023204572726f7273d5012d2060416c72656164794c696e6b656460206966207468652063616c6c6572206163636f756e74206f7220696620616e79206f662074686520676976656e20607365636f6e646172795f6b657973602068617320616c7265616479206c696e6b656420746f20616e20604964656e746974794944604d012d20605365636f6e646172794b657973436f6e7461696e5072696d6172794b65796020696620607365636f6e646172795f6b6579736020636f6e7461696e73207468652063616c6c6572206163636f756e742ee82d2060446964416c726561647945786973747360206966206175746f2d67656e6572617465642044494420616c7265616479206578697374732e546d6f636b5f6364645f72656769737465725f6469640401387461726765745f6163636f756e74000130543a3a4163636f756e7449640001303d015265676973746572732061206e6577204964656e7469747920666f722074686520607461726765745f6163636f756e746020616e642069737375657320612043444420636c61696d20746f2069742e510154686520496e766573746f72205549442069732067656e6572617465642064657465726d696e6973746963616c6c79206279207468652068617368206f66207468652067656e6572617465642044494420616e64b07468656e2077652066697820697420746f20626520636f6d706c69616e74207769746820555549442076342e00142320536565dc2d205b52464320343132323a20555549445d2868747470733a2f2f746f6f6c732e696574662e6f72672f68746d6c2f7266633431323229002423204661696c75726549012d20606f726967696e602068617320746f20626520616e20616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792e286765745f6d795f64696400020498456d69747320616e206576656e7420776974682063616c6c65722773206964656e746974792e286765745f6364645f6f660401086f66000130543a3a4163636f756e744964000304d4456d69747320616e206576656e7420776974682063616c6c65722773206964656e7469747920616e6420434444207374617475732e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e3508084070616c6c65745f636f6d6d697474656534506f6c796d657368566f746573042c426c6f636b4e756d626572011000100114696e64657810013450726f706f73616c496e646578000110617965732501013c5665633c4964656e7469747949643e0001106e6179732501013c5665633c4964656e7469747949643e0001186578706972793901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00003908084070616c6c65745f636f6d6d69747465651c56657273696f6e00000400080108753800003d08084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e004108083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e004508084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e004908083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e004d08084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e005108083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00550800000408006d01005908000004080020005d080000040800d1050061080000040c006d0120006508083c70616c6c65745f6d756c74697369673c50726f706f73616c44657461696c73040454012000140124617070726f76616c7320010c75363400012872656a656374696f6e7320010c7536340001187374617475736908013850726f706f73616c537461747573000118657870697279f401244f7074696f6e3c543e0001286175746f5f636c6f736519010110626f6f6c00006908083c70616c6c65745f6d756c74697369673850726f706f73616c5374617475730001141c496e76616c69640000003c4163746976654f72457870697265640001004c457865637574696f6e5375636365737366756c0002003c457865637574696f6e4661696c65640003002052656a6563746564000400006d08083c70616c6c65745f6d756c74697369671c56657273696f6e00000400080108753800007108083c70616c6c65745f6d756c7469736967144572726f72040454000164284364644d697373696e67000004c4546865206d756c7469736967206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e3c50726f706f73616c4d697373696e67000104705468652070726f706f73616c20646f6573206e6f742065786973742e344465636f64696e674572726f72000204444d756c746973696720616464726573732e244e6f5369676e6572730003042c4e6f207369676e6572732e7452657175697265645369676e6174757265734f75744f66426f756e6473000404a0546f6f20666577206f7220746f6f206d616e79207265717569726564207369676e6174757265732e284e6f74415369676e6572000504344e6f742061207369676e65722e384e6f537563684d756c7469736967000604444e6f2073756368206d756c74697369672e404e6f74456e6f7567685369676e6572730007044c4e6f7420656e6f756768207369676e6572732e344e6f6e63654f766572666c6f770008044441206e6f6e6365206f766572666c6f772e30416c7265616479566f74656400090438416c726561647920766f7465642e38416c7265616479415369676e6572000a0444416c72656164792061207369676e65722e444661696c6564546f436861726765466565000b04a0436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e484964656e746974794e6f7443726561746f72000c04c04964656e746974792070726f7669646564206973206e6f7420746865206d756c746973696727732063726561746f722e404368616e67654e6f74416c6c6f776564000d0425014368616e67696e67206d756c746973696720706172616d6574657273206e6f7420616c6c6f7765642073696e6365206d756c74697369672069732061207072696d617279206b65792e745369676e6572416c72656164794c696e6b6564546f4d756c7469736967000e0411015369676e657220697320616e206163636f756e74206b6579207468617420697320616c7265616479206173736f63696174656420776974682061206d756c74697369672e745369676e6572416c72656164794c696e6b6564546f4964656e74697479000f0415015369676e657220697320616e206163636f756e74206b6579207468617420697320616c7265616479206173736f636961746564207769746820616e206964656e746974792e505369676e657253616d6541734d756c746973696700100429015369676e657220697320746865206d756c74697369672e2020546865206d756c7469736967206163636f756e742063616e27742062652061207369676e657220746f20697473656c662e584d697373696e6743757272656e744964656e746974790011045843757272656e7420444944206973206d697373696e67344e6f745072696d6172794b6579001204f45468652066756e6374696f6e2063616e206f6e6c792062652063616c6c656420627920746865207072696d617279206b6579206f6620746865206469645c50726f706f73616c416c726561647952656a65637465640013047450726f706f73616c207761732072656a6563746564206561726c6965723c50726f706f73616c457870697265640014045050726f706f73616c2068617320657870697265645c50726f706f73616c416c726561647945786563757465640015047450726f706f73616c20776173206578656375746564206561726c6965725c4d756c74697369674d697373696e674964656e746974790016049c4d756c7469736967206973206e6f7420617474616368656420746f20616e206964656e74697479404661696c6564546f5363686564756c65001704785363686564756c696e67206f6620612070726f706f73616c206661696c7338546f6f4d616e795369676e6572730018046c4d6f7265207369676e657273207468616e2072657175697265642e045c4d756c7469736967206d6f64756c65206572726f72732e7508000004080010007908083470616c6c65745f62726964676538427269646765547844657461696c042c426c6f636b4e756d626572011000100118616d6f756e7418011c42616c616e63650001187374617475737d080138427269646765547853746174757300013c657865637574696f6e5f626c6f636b10012c426c6f636b4e756d62657200011c74785f686173682401104832353600007d08083470616c6c65745f62726964676538427269646765547853746174757300011418416273656e740000001c50656e64696e67040008010875380001001846726f7a656e0002002854696d656c6f636b65640003001c48616e646c6564000400008108000004081810008508083470616c6c65745f6272696467651c56657273696f6e00000400080108753800008908083470616c6c65745f627269646765144572726f7204045400013440436f6e74726f6c6c65724e6f74536574000004a45468652062726964676520636f6e74726f6c6c65722061646472657373206973206e6f74207365742e2442616443616c6c6572000104d8546865206f726967696e206973206e6f742074686520636f6e74726f6c6c6572206f72207468652061646d696e20616464726573732e2042616441646d696e00020490546865206f726967696e206973206e6f74207468652061646d696e20616464726573732e284e6f56616c69644364640003048c54686520726563697069656e742044494420686173206e6f2076616c6964204344442e5850726f706f73616c416c726561647948616e646c6564000404390154686520627269646765207472616e73616374696f6e2070726f706f73616c2068617320616c7265616479206265656e2068616e646c656420616e64207468652066756e6473206d696e7465642e30556e617574686f72697a656400050494556e617574686f72697a656420746f20706572666f726d20616e206f7065726174696f6e2e1846726f7a656e000604745468652062726964676520697320616c72656164792066726f7a656e2e244e6f7446726f7a656e0007046454686520627269646765206973206e6f742066726f7a656e2e2046726f7a656e547800080468546865207472616e73616374696f6e2069732066726f7a656e2e484272696467654c696d697452656163686564000904e4546865206964656e746974792773206d696e74656420746f74616c2068617320726561636865642074686520627269646765206c696d69742e204f766572666c6f77000a04ac546865206964656e746974792773206d696e74656420746f74616c20686173206f766572666c6f7765642e384469766973696f6e42795a65726f000b04cc54686520626c6f636b20696e74657276616c206475726174696f6e206973207a65726f2e2043616e6e6f74206469766964652e3054696d656c6f636b65645478000c0478546865207472616e73616374696f6e2069732074696d656c6f636b65642e008d08083870616c6c65745f7374616b696e67345374616b696e674c656467657208244163636f756e74496401001c42616c616e636501180014011473746173680001244163636f756e744964000114746f74616ccd01011c42616c616e6365000118616374697665cd01011c42616c616e6365000124756e6c6f636b696e67910801645665633c556e6c6f636b4368756e6b3c42616c616e63653e3e00013c636c61696d65645f72657761726473390401345665633c457261496e6465783e000091080000029508009508083870616c6c65745f7374616b696e672c556e6c6f636b4368756e6b041c42616c616e636501180008011476616c7565cd01011c42616c616e636500010c65726171040120457261496e64657800009908083870616c6c65745f7374616b696e672c4e6f6d696e6174696f6e7304244163636f756e7449640100000c011c74617267657473ec01385665633c4163636f756e7449643e0001307375626d69747465645f696e100120457261496e6465780001287375707072657373656419010110626f6f6c00009d08083870616c6c65745f7374616b696e6734416374697665457261496e666f0000080114696e646578100120457261496e6465780001147374617274f4012c4f7074696f6e3c7536343e0000a10800000408100000a508083870616c6c65745f7374616b696e673c457261526577617264506f696e747304244163636f756e744964010000080114746f74616c10012c526577617264506f696e74000128696e646976696475616ca908018042547265654d61703c4163636f756e7449642c20526577617264506f696e743e0000a908042042547265654d617008044b010004560110000400ad08000000ad08000002750800b108083870616c6c65745f7374616b696e671c466f7263696e67000110284e6f74466f7263696e6700000020466f7263654e657700010024466f7263654e6f6e650002002c466f726365416c7761797300030000b508000002b90800b908083870616c6c65745f7374616b696e6738556e6170706c696564536c61736808244163636f756e74496401001c42616c616e636501180014012476616c696461746f720001244163636f756e74496400010c6f776e18011c42616c616e63650001186f7468657273bd0801645665633c284163636f756e7449642c2042616c616e6365293e0001247265706f7274657273ec01385665633c4163636f756e7449643e0001187061796f757418011c42616c616e63650000bd08000002c10800c10800000408001800c508000004088d011800c9080c3870616c6c65745f7374616b696e6720736c617368696e6734536c617368696e675370616e7300001001287370616e5f696e6465781001245370616e496e6465780001286c6173745f7374617274100120457261496e6465780001486c6173745f6e6f6e7a65726f5f736c617368100120457261496e6465780001147072696f72390401345665633c457261496e6465783e0000cd080c3870616c6c65745f7374616b696e6720736c617368696e67285370616e5265636f7264041c42616c616e636501180008011c736c617368656418011c42616c616e6365000120706169645f6f757418011c42616c616e63650000d108083870616c6c65745f7374616b696e6738456c656374696f6e526573756c7408244163636f756e74496401001c42616c616e63650118000c013c656c65637465645f73746173686573ec01385665633c4163636f756e7449643e0001246578706f7375726573c10101b85665633c284163636f756e7449642c204578706f737572653c4163636f756e7449642c2042616c616e63653e293e00011c636f6d707574658901013c456c656374696f6e436f6d707574650000d508083870616c6c65745f7374616b696e6738456c656374696f6e537461747573042c426c6f636b4e756d6265720110010818436c6f736564000000104f70656e040010012c426c6f636b4e756d62657200010000d908083870616c6c65745f7374616b696e67645065726d697373696f6e65644964656e7469747950726566730000080138696e74656e6465645f636f756e7410010c75333200013472756e6e696e675f636f756e7410010c7533320000dd08083870616c6c65745f7374616b696e672052656c65617365730001203456315f305f30416e6369656e740000001856325f305f300001001856335f305f300002001856345f305f300003001856355f305f300004001856365f305f300005001856365f305f310006001856375f305f3000070000e108083870616c6c65745f7374616b696e67144572726f720404540001a8344e6f74436f6e74726f6c6c6572000004644e6f74206120636f6e74726f6c6c6572206163636f756e742e204e6f745374617368000104504e6f742061207374617368206163636f756e742e34416c7265616479426f6e64656400020460537461736820697320616c726561647920626f6e6465642e34416c726561647950616972656400030474436f6e74726f6c6c657220697320616c7265616479207061697265642e30456d7074795461726765747300040460546172676574732063616e6e6f7420626520656d7074792e44496e76616c6964536c617368496e64657800050484536c617368207265636f726420696e646578206f7574206f6620626f756e64732e44496e73756666696369656e7456616c7565000604c843616e206e6f7420626f6e6420776974682076616c7565206c657373207468616e206d696e696d756d2062616c616e63652e304e6f4d6f72654368756e6b730007049043616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b732e344e6f556e6c6f636b4368756e6b000804a043616e206e6f74207265626f6e6420776974686f757420756e6c6f636b696e67206368756e6b732e3046756e646564546172676574000904c8417474656d7074696e6720746f2074617267657420612073746173682074686174207374696c6c206861732066756e64732e48496e76616c6964457261546f526577617264000a0458496e76616c69642065726120746f207265776172642e484e6f74536f72746564416e64556e69717565000b04804974656d7320617265206e6f7420736f7274656420616e6420756e697175652e38416c7265616479436c61696d6564000c0409015265776172647320666f72207468697320657261206861766520616c7265616479206265656e20636c61696d656420666f7220746869732076616c696461746f722e7c4f6666636861696e456c656374696f6e4561726c795375626d697373696f6e000d04e0546865207375626d697474656420726573756c74206973207265636569766564206f7574206f6620746865206f70656e2077696e646f772e784f6666636861696e456c656374696f6e5765616b5375626d697373696f6e000e04fc546865207375626d697474656420726573756c74206973206e6f7420617320676f6f6420617320746865206f6e652073746f726564206f6e20636861696e2e4c536e617073686f74556e617661696c61626c65000f04cc54686520736e617073686f742064617461206f66207468652063757272656e742077696e646f77206973206d697373696e672e804f6666636861696e456c656374696f6e426f67757357696e6e6572436f756e74001004ac496e636f7272656374206e756d626572206f662077696e6e65727320776572652070726573656e7465642e6c4f6666636861696e456c656374696f6e426f67757357696e6e65720011085d014f6e65206f6620746865207375626d69747465642077696e6e657273206973206e6f7420616e206163746976652063616e646964617465206f6e20636861696e2028696e646578206973206f7574206f662072616e676534696e20736e617073686f74292e704f6666636861696e456c656374696f6e426f677573436f6d7061637400120859014572726f72207768696c65206275696c64696e67207468652061737369676e6d656e7420747970652066726f6d2074686520636f6d706163742e20546869732063616e2068617070656e20696620616e20696e646578a4697320696e76616c69642c206f72206966207468652077656967687473205f6f766572666c6f775f2e784f6666636861696e456c656374696f6e426f6775734e6f6d696e61746f7200130411014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f7273206973206e6f7420616e20616374697665206e6f6d696e61746f72206f6e20636861696e2e7c4f6666636861696e456c656374696f6e426f6775734e6f6d696e6174696f6e00140449014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e206564676520746f20776869636820746865792068617665206e6f7420766f746564206f6e20636861696e2e844f6666636861696e456c656374696f6e536c61736865644e6f6d696e6174696f6e0015085d014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e2065646765207768696368206973207375626d6974746564206265666f726520746865206c617374206e6f6e2d7a65726f50736c617368206f6620746865207461726765742e744f6666636861696e456c656374696f6e426f67757353656c66566f74650016042101412073656c6620766f7465206d757374206f6e6c79206265206f726967696e617465642066726f6d20612076616c696461746f7220746f204f4e4c59207468656d73656c7665732e644f6666636861696e456c656374696f6e426f677573456467650017044101546865207375626d697474656420726573756c742068617320756e6b6e6f776e206564676573207468617420617265206e6f7420616d6f6e67207468652070726573656e7465642077696e6e6572732e684f6666636861696e456c656374696f6e426f67757353636f7265001804150154686520636c61696d65642073636f726520646f6573206e6f74206d61746368207769746820746865206f6e6520636f6d70757465642066726f6d2074686520646174612e844f6666636861696e456c656374696f6e426f677573456c656374696f6e53697a650019047454686520656c656374696f6e2073697a6520697320696e76616c69642e3843616c6c4e6f74416c6c6f776564001a0445015468652063616c6c206973206e6f7420616c6c6f7765642061742074686520676976656e2074696d652064756520746f207265737472696374696f6e73206f6620656c656374696f6e20706572696f642e58496e636f7272656374536c617368696e675370616e73001b04b0496e636f7272656374206e756d626572206f6620736c617368696e67207370616e732070726f76696465642e34416c7265616479457869737473001c04985065726d697373696f6e65642076616c696461746f7220616c7265616479206578697374732e244e6f74457869737473001d04885065726d697373696f6e65642076616c696461746f72206e6f74206578697374732e204e6f4368616e6765001e04605570646174657320776974682073616d652076616c75652e60496e76616c696456616c696461746f724964656e74697479001f04b8476976656e20706f74656e7469616c2076616c696461746f72206964656e7469747920697320696e76616c69642e68496e76616c696456616c696461746f72436f6d6d697373696f6e0020049c56616c696461746f7220707265667320617265206e6f7420696e2076616c69642072616e67652e6453746173684964656e74697479446f65734e6f744578697374002104d456616c696461746f72206f72206e6f6d696e61746f72207374617368206964656e7469747920646f6573206e6f742065786973742e7053746173684964656e746974794e6f745065726d697373696f6e6564002204b856616c696461746f72207374617368206964656e7469747920776173206e6f74207065726d697373696f6e65642e5453746173684964656e746974794e6f744344446564002304784e6f6d696e61746f7220737461736820776173206e6f742043444465642e64486974496e74656e64656456616c696461746f72436f756e74002404bc52756e6e696e672076616c696461746f7220636f756e74206869742074686520696e74656e64656420636f756e742e98496e74656e646564436f756e744973457863656564696e67436f6e73656e7375734c696d697400250435015768656e2074686520696e74656e646564206e756d626572206f662076616c696461746f727320746f2072756e206973203e3d20322f33206f66206076616c696461746f725f636f756e74602e30426f6e64546f6f536d616c6c002604dc5768656e2074686520616d6f756e7420746f20626520626f6e646564206973206c657373207468616e20604d696e696d756d426f6e64602042616453746174650027043901496e7465726e616c20737461746520686173206265636f6d6520736f6d65686f7720636f7272757074656420616e6420746865206f7065726174696f6e2063616e6e6f7420636f6e74696e75652e38546f6f4d616e795461726765747300280494546f6f206d616e79206e6f6d696e6174696f6e207461726765747320737570706c6965642e244261645461726765740029043d0141206e6f6d696e6174696f6e207461726765742077617320737570706c69656420746861742077617320626c6f636b6564206f72206f7468657277697365206e6f7420612076616c696461746f722e04744572726f7220666f7220746865207374616b696e67206d6f64756c652ee5080c2873705f7374616b696e671c6f6666656e6365384f6666656e636544657461696c7308205265706f727465720100204f6666656e64657201c501000801206f6666656e646572c50101204f6666656e6465720001247265706f7274657273ec01345665633c5265706f727465723e0000e9080000040899012800ed08000002f10800f1080000040800f90600f50800000408f9082800f9080c1c73705f636f72651863727970746f244b65795479706549640000040038011c5b75383b20345d0000fd080c3870616c6c65745f73657373696f6e1870616c6c6574144572726f7204045400011430496e76616c696450726f6f6600000460496e76616c6964206f776e6572736869702070726f6f662e5c4e6f4173736f63696174656456616c696461746f7249640001049c4e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e344475706c6963617465644b65790002046452656769737465726564206475706c6963617465206b65792e184e6f4b657973000304a44e6f206b65797320617265206173736f63696174656420776974682074686973206163636f756e742e244e6f4163636f756e7400040419014b65792073657474696e67206163636f756e74206973206e6f74206c6976652c20736f206974277320696d706f737369626c6520746f206173736f6369617465206b6579732e04744572726f7220666f72207468652073657373696f6e2070616c6c65742e0109083870616c6c65745f6772616e6470612c53746f726564537461746504044e01100110104c6976650000003050656e64696e6750617573650801307363686564756c65645f61741001044e00011464656c61791001044e000100185061757365640002003450656e64696e67526573756d650801307363686564756c65645f61741001044e00011464656c61791001044e000300000509083870616c6c65745f6772616e6470614c53746f72656450656e64696e674368616e676508044e0110144c696d697400001001307363686564756c65645f61741001044e00011464656c61791001044e0001406e6578745f617574686f7269746965730909016c426f756e646564417574686f726974794c6973743c4c696d69743e000118666f72636564190601244f7074696f6e3c4e3e0000090910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401a901045300000400a50101185665633c543e00000d090c3870616c6c65745f6772616e6470611870616c6c6574144572726f7204045400011c2c50617573654661696c65640000080501417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665a42865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e30526573756d654661696c65640001081101417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e277420706175736564a028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e344368616e676550656e64696e67000204e8417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e1c546f6f536f6f6e000304bc43616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e60496e76616c69644b65794f776e65727368697050726f6f66000404310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f660005043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400060415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909110910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401b901045300000400150901185665633c543e00001509000002b90100190910346672616d655f737570706f727418747261697473106d69736334577261707065724f7061717565040454011d0900080071040000001d0901045400001d09084070616c6c65745f696d5f6f6e6c696e6564426f756e6465644f70617175654e6574776f726b53746174650c4c506565724964456e636f64696e674c696d697400584d756c746941646472456e636f64696e674c696d697400384164647265737365734c696d6974000008011c706565725f69642109019c5765616b426f756e6465645665633c75382c20506565724964456e636f64696e674c696d69743e00014865787465726e616c5f6164647265737365732509012d015765616b426f756e6465645665633c5765616b426f756e6465645665633c75382c204d756c746941646472456e636f64696e674c696d69743e2c204164647265737365734c696d69740a3e0000210910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401080453000004002801185665633c543e0000250910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e646564566563080454012109045300000400290901185665633c543e000029090000022109002d090c4070616c6c65745f696d5f6f6e6c696e651870616c6c6574144572726f7204045400010828496e76616c69644b6579000004604e6f6e206578697374656e74207075626c6963206b65792e4c4475706c696361746564486561727462656174000104544475706c696361746564206865617274626561742e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a0909093109082c70616c6c65745f7375646f144572726f720404540001042c526571756972655375646f0000047c53656e646572206d75737420626520746865205375646f206163636f756e7404644572726f7220666f7220746865205375646f206d6f64756c653509083070616c6c65745f6173736574485469636b6572526567697374726174696f6e0404550120000801146f776e65727c01284964656e746974794964000118657870697279f401244f7074696f6e3c553e00003909083070616c6c65745f6173736574345365637572697479546f6b656e0000100130746f74616c5f737570706c7918011c42616c616e63650001246f776e65725f6469647c01284964656e746974794964000124646976697369626c6519010110626f6f6c00012861737365745f74797065e501012441737365745479706500003d0900000408a07c00410900000408a0e101004509000004087ca0004909083070616c6c65745f61737365745841737365744f776e65727368697052656c6174696f6e00010c204e6f744f776e65640000002c5469636b65724f776e65640001002841737365744f776e6564000200004d0900000408a00102005109083070616c6c65745f617373657464436c61737369635469636b6572526567697374726174696f6e00000801246574685f6f776e65723102013c457468657265756d4164647265737300012869735f6372656174656419010110626f6f6c00005509000004087c7c00590900000408a06d07005d0900000408a0450200610900000408a04902006509083070616c6c65745f61737365741c56657273696f6e00000400080108753800006909083070616c6c65745f6173736574144572726f7204045400019830556e617574686f72697a65640000046c5468652075736572206973206e6f7420617574686f72697a65642e3c416c72656164794172636869766564000104805768656e20657874656e73696f6e20616c72656164792061726368697665642e44416c7265616479556e41726368697665640002048c5768656e20657874656e73696f6e20616c726561647920756e2d61726368697665642e5c457874656e73696f6e416c726561647950726573656e74000304805768656e20657874656e73696f6e20697320616c72656164792061646465642e4c4173736574416c7265616479437265617465640004048c54686520746f6b656e2068617320616c7265616479206265656e20637265617465642e345469636b6572546f6f4c6f6e6700050490546865207469636b6572206c656e677468206973206f76657220746865206c696d69742e385469636b65724e6f7441736369690006049c546865207469636b657220686173206e6f6e2d61736369692d656e636f6465642070617274732e5c5469636b6572416c726561647952656769737465726564000704c4546865207469636b657220697320616c7265616479207265676973746572656420746f20736f6d656f6e6520656c73652e54546f74616c537570706c7941626f76654c696d69740008049054686520746f74616c20737570706c792069732061626f766520746865206c696d69742e2c4e6f537563684173736574000904384e6f207375636820746f6b656e2e34416c726561647946726f7a656e000a047054686520746f6b656e20697320616c72656164792066726f7a656e2e284e6f74416e4f776e6572000b04984e6f7420616e206f776e6572206f662074686520746f6b656e206f6e20457468657265756d2e3c42616c616e63654f766572666c6f77000c04a8416e206f766572666c6f77207768696c652063616c63756c6174696e67207468652062616c616e63652e4c546f74616c537570706c794f766572666c6f77000d04bc416e206f766572666c6f77207768696c652063616c63756c6174696e672074686520746f74616c20737570706c792e48496e76616c69644772616e756c6172697479000e045c416e20696e76616c6964206772616e756c61726974792e244e6f7446726f7a656e000f0464546865206173736574206d7573742062652066726f7a656e2e3c496e76616c69645472616e73666572001004845472616e736665722076616c69646174696f6e20636865636b206661696c65642e4c496e73756666696369656e7442616c616e6365001104945468652073656e6465722062616c616e6365206973206e6f742073756666696369656e742e544173736574416c7265616479446976697369626c650012047c54686520746f6b656e20697320616c726561647920646976697369626c652e784d6178696d756d544d457874656e73696f6e4c696d69745265616368656400130499014e756d626572206f66205472616e73666572204d616e6167657220657874656e73696f6e7320617474616368656420746f20616e20617373657420697320657175616c20746f204d61784e756d6265724f66544d457874656e73696f6e466f7241737365742e70496e636f6d70617469626c65457874656e73696f6e56657273696f6e001404dc476976656e20736d61727420657874656e73696f6e206973206e6f7420636f6d70617469626c652077697468207468652061737365742e60496e76616c6964457468657265756d5369676e617475726500150494416e20696e76616c696420457468657265756d206045636473615369676e6174757265602e4c4e6f53756368436c61737369635469636b65720016049854686520676976656e207469636b6572206973206e6f74206120636c6173736963206f6e652e645469636b6572526567697374726174696f6e457870697265640017048c526567697374726174696f6e206f66207469636b65722068617320657870697265642e5053656e64657253616d6541735265636569766572001804845472616e736665727320746f2073656c6620617265206e6f7420616c6c6f776564244e6f53756368446f630019048854686520676976656e20446f63756d656e7420646f6573206e6f742065786973742e704d61784c656e6774684f6641737365744e616d654578636565646564001a04bc4d6178696d756d206c656e677468206f66206173736574206e616d6520686173206265656e2065786365656465642e8446756e64696e67526f756e644e616d654d61784c656e6774684578636565646564001b04ec4d6178696d756d206c656e677468206f66207468652066756e64696e6720726f756e64206e616d6520686173206265656e2065786365656465642e58496e76616c696441737365744964656e746966696572001c048c536f6d65206041737365744964656e746966696572602077617320696e76616c69642e84496e766573746f72556e697175656e657373436c61696d4e6f74416c6c6f776564001d04e8496e766573746f7220556e697175656e65737320636c61696d7320617265206e6f7420616c6c6f77656420666f7220746869732061737365742e60496e76616c6964437573746f6d4173736574547970654964001e0470496e76616c69642060437573746f6d4173736574547970654964602e8841737365744d657461646174614e616d654d61784c656e6774684578636565646564001f0405014d6178696d756d206c656e677468206f6620746865206173736574206d657461646174612074797065206e616d6520686173206265656e2065786365656465642e8c41737365744d6574616461746156616c75654d61784c656e6774684578636565646564002004f44d6178696d756d206c656e677468206f6620746865206173736574206d657461646174612076616c756520686173206265656e2065786365656465642e9441737365744d65746164617461547970654465664d61784c656e67746845786365656465640021041d014d6178696d756d206c656e677468206f6620746865206173736574206d65746164617461207479706520646566696e6974696f6e20686173206265656e2065786365656465642e6441737365744d657461646174614b657949734d697373696e67002204784173736574204d65746164617461206b6579206973206d697373696e672e6841737365744d6574616461746156616c756549734c6f636b65640023047c4173736574204d657461646174612076616c7565206973206c6f636b65642e8841737365744d657461646174614c6f63616c4b6579416c7265616479457869737473002404cc4173736574204d65746164617461204c6f63616c207479706520616c72656164792065786973747320666f722061737365742e8c41737365744d65746164617461476c6f62616c4b6579416c7265616479457869737473002504a84173736574204d6574616461746120476c6f62616c207479706520616c7265616479206578697374732e006d090000040871027c0071090c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e1c56657273696f6e000004000801087538000075090c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e144572726f720404540001383043414e6f7442656e65666974000004d441206361706974616c20646973747269627574696f6e20776173206d61646520666f722061206e6f6e2d62656e656669742043412e34416c7265616479457869737473000104a84120646973747269627574696f6e20616c72656164792065786973747320666f7220746869732043412e4c4578706972794265666f72655061796d656e7400020829014120646973747269627574696f6e732070726f766964656420657870697279206461746520776173207374726963746c79206265666f726520697473207061796d656e7420646174652e2101496e206f7468657220776f7264732c2065766572797468696e6720746f206469737472696275746520776f756c6420696d6d6564696174656c7920626520666f726665697465642e44446973747269627574696e674173736574000308f043757272656e63792074686174206973206469737472696275746564206973207468652073616d65206173207468652043412773207469636b65722e690143616c6c696e67206167656e7420697320617474656d7074696e67206120666f726d206f662073746f636b2073706c69742c207768696368206973206e6f742077686174207468652065787472696e73696320697320666f722e44486f6c646572416c726561647950616964000404d454686520746f6b656e20686f6c6465722068617320616c7265616479206265656e20706169642074686569722062656e656669742e484e6f53756368446973747269627574696f6e000504c441206361706974616c20646973747269627574696f6e20646f65736e277420657869737420666f7220746869732043412e5843616e6e6f74436c61696d4265666f726553746172740006046101446973747269627574696f6e20616c6c6f746d656e742063616e6e6f7420626520636c61696d6564206173207468652063757272656e742074696d65206973206265666f72652073746172742d6f662d7061796d656e742e5843616e6e6f74436c61696d41667465724578706972790007046901446973747269627574696f6e27732065787069727920686173207061737365642e204449442063616e6e6f7420636c61696d20616e796d6f726520616e642068617320666f72666569746564207468652062656e65666974732e8042616c616e6365506572536861726550726f647563744f766572666c6f77656400080429014d756c7469706c69636174696f6e206f66207468652062616c616e636520776974682074686520706572207368617265207061796f757420616d6f756e74206f766572666c6f7765642e584e6f74446973747269627574696f6e43726561746f72000904c0444944206973206e6f7420746865206f6e652077686f20637265617465642074686520646973747269627574696f6e2e40416c72656164795265636c61696d6564000a04d44449442077686f20637265617465642074686520646973747269627574696f6e20616c726561647920646964207265636c61696d2e284e6f7445787069726564000b04f0446973747269627574696f6e20686164206e6f742065787069726564207965742c206f722074686572652773206e6f2065787069727920646174652e4c446973747269627574696f6e53746172746564000c0401014120646973747269627574696f6e20686173206265656e206163746976617465642c20617320607061796d656e745f6174203c3d206e6f776020686f6c64732e6c496e73756666696369656e7452656d61696e696e67416d6f756e74000d042d014120646973747269627574696f6e2068617320696e73756666696369656e742072656d61696e696e6720616d6f756e74206f662063757272656e637920746f20646973747269627574652e00790900000408a08902007d090000040879097c00810900000289020085090000028d0200890900000408a09d02008d090c3070616c6c65745f617373657428636865636b706f696e741c56657273696f6e000004000801087538000091090c3070616c6c65745f617373657428636865636b706f696e74144572726f72040454000114384e6f537563685363686564756c65000004cc4120636865636b706f696e74207363686564756c6520646f6573206e6f7420657869737420666f72207468652061737365742e505363686564756c654e6f7452656d6f7661626c650001041d014120636865636b706f696e74207363686564756c65206973206e6f742072656d6f7661626c6520617320607265665f636f756e74287363686564756c655f696429203e2030602e744661696c6564546f436f6d707574654e657874436865636b706f696e74000208984661696c656420746f20636f6d7075746520746865206e65787420636865636b706f696e742ed0546865207363686564756c6520646f6573206e6f74206861766520616e79207570636f6d696e6720636865636b706f696e74732e605363686564756c654475726174696f6e546f6f53686f7274000304bc546865206475726174696f6e206f662061207363686564756c6520706572696f6420697320746f6f2073686f72742e4c5363686564756c6573546f6f436f6d706c6578000408d054686520736574206f66207363686564756c65732074616b656e20746f6765746865722061726520746f6f20636f6d706c65782ef8466f72206578616d706c652c20746865792061726520746f6f206d616e792c206f722074686579206f636375727320746f6f206672657175656e746c792e0095090c4c706f6c796d6573685f7072696d69746976657348636f6d706c69616e63655f6d616e616765723c4173736574436f6d706c69616e6365000008011870617573656419010110626f6f6c000130726571756972656d656e7473d10201685665633c436f6d706c69616e6365526571756972656d656e743e00009909086470616c6c65745f636f6d706c69616e63655f6d616e616765721c56657273696f6e00000400080108753800009d09086470616c6c65745f636f6d706c69616e63655f6d616e61676572144572726f7204045400011830556e617574686f72697a65640000045c55736572206973206e6f7420617574686f72697a65642e2c4469644e6f74457869737400010434446964206e6f7420657869737478496e76616c6964436f6d706c69616e6365526571756972656d656e7449640002049c436f6d706c69616e636520726571756972656d656e7420696420646f65736e277420657869737484496e636f72726563744f7065726174696f6e4f6e547275737465644973737565720003049c4973737565722065786973742062757420747279696e6720746f2061646420697420616761696e7c4475706c6963617465436f6d706c69616e6365526571756972656d656e7473000404b0546865726520617265206475706c696361746520636f6d706c69616e636520726571756972656d656e74732e7c436f6d706c69616e6365526571756972656d656e74546f6f436f6d706c6578000504110154686520776f7273742063617365207363656e6172696f206f662074686520636f6d706c69616e636520726571756972656d656e7420697320746f6f20636f6d706c657800a10900000408a0750200a509086070616c6c65745f636f72706f726174655f616374696f6e731c56657273696f6e0000040008010875380000a909086070616c6c65745f636f72706f726174655f616374696f6e73144572726f7204045400013048417574684e6f744341415472616e73666572000004050154686520617574686f72697a6174696f6e2074797065206973206e6f7420746f207472616e73666572207468652043414120746f20616e6f74686572204449442e3844657461696c73546f6f4c6f6e67000104d8546865206064657461696c7360206f66206120434120657863656564656420746865206d617820616c6c6f776564206c656e6774682e3c4475706c69636174654469645461780002082101412077697468686f6c64696e6720746178206f7665727269646520666f72206120676976656e204449442077617320737065636966696564206d6f7265207468616e206f6e63652e050154686520636861696e207265667573656420746f206d616b6520612063686f6963652c20616e642068656e63652074686572652077617320616e206572726f722e3c546f6f4d616e794469645461786573000304c8546f6f206d616e792077697468686f6c64696e6720746178206f76657272696465732077657265207370656369666965642e40546f6f4d616e79546172676574496473000404e4546f6f206d616e79206964656e74697469657320696e20605461726765744964656e746974696573602077657265207370656369666965642e484e6f53756368436865636b706f696e74496400050405014f6e204341206372656174696f6e2c206120636865636b706f696e74204944207761732070726f766964656420776869636820646f65736e27742065786973742e204e6f537563684341000604a44120434120776974682074686520676976656e2060434149646020646964206e6f742065786973742e304e6f5265636f7264446174650007048854686520434120646964206e6f7420686176652061207265636f726420646174652e505265636f7264446174654166746572537461727400080cdc412043412773207265636f7264206461746520776173207374726963746c792061667465722074686520227374617274222074696d652c8c7768657265202273746172742220697320636f6e7465787420646570656e64656e742e8101466f72206578616d706c652c20697420636f756c6420626520746865207374617274206f6620612062616c6c6f742c206f72207468652073746172742d6f662d7061796d656e7420696e206361706974616c20646973747269627574696f6e2e5c4465636c4461746541667465725265636f726444617465000904ec412043412773206465636c61726174696f6e206461746520776173207374726963746c7920616674657220697473207265636f726420646174652e404465636c44617465496e467574757265000a04b4412043412773206465636c61726174696f6e2064617465206f636375727320696e20746865206675747572652e3c4e6f74546172676574656442794341000b046c434120646f6573206e6f742074617267657420746865204449442e00ad090000021800b1090c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74144572726f720404540001382c43414e6f744e6f74696365000004e04120636f72706f726174652062616c6c6f7420776173206d61646520666f722061206e6f6e20604973737565724e6f74696365602043412e34416c7265616479457869737473000104b84120636f72706f726174652062616c6c6f7420616c72656164792065786973747320666f7220746869732043412e304e6f5375636842616c6c6f74000204b44120636f72706f726174652062616c6c6f7420646f65736e277420657869737420666f7220746869732043412e3453746172744166746572456e6400030411014120636f72706f726174652062616c6c6f7427732073746172742074696d6520776173207374726963746c79206166746572207468652062616c6c6f74277320656e642e2c4e6f774166746572456e640004040d014120636f72706f726174652062616c6c6f74277320656e642074696d6520776173207374726963746c79206265666f7265207468652063757272656e742074696d652e5c4e756d6265724f6643686f696365734f766572666c6f770005043901496620736f6d65206d6f74696f6e20696e206120636f72706f726174652062616c6c6f7420686173206d6f72652063686f69636573207468616e20776f756c642066697420696e2060753136602e50566f74696e67416c7265616479537461727465640006040101566f74696e67207374617274656420616c72656164792e20416d656e64696e6720612062616c6c6f74206973206e6f206c6f6e67657220706f737369626c652e40566f74696e674e6f745374617274656400070468566f74696e67206861736e27742073746172746564207965742e48566f74696e67416c7265616479456e64656400080454566f74696e6720656e64656420616c72656164792e3857726f6e67566f7465436f756e74000904150150726f7669646564206c697374206f662062616c616e63657320646f6573206e6f74206d617463682074686520746f74616c206e756d626572206f662063686f696365732e44496e73756666696369656e74566f746573000a043d01566f74696e6720706f7765722075736564206279206120444944206f6e2061206d6f74696f6e2065786365656473207468617420776869636820697320617661696c61626c6520746f207468656d2e444e6f5375636852435646616c6c6261636b000b04bc546865205243562066616c6c6261636b206f6620736f6d652063686f69636520646f6573206e6f742065786973742e3052435653656c664379636c65000c04b4546865205243562066616c6c6261636b20706f696e747320746f20746865206f726967696e2063686f6963652e345243564e6f74416c6c6f776564000d048c524356206973206e6f7420616c6c6f77656420666f7220746869732062616c6c6f742e00b509084870616c6c65745f7065726d697373696f6e73144572726f7204045400010448556e617574686f72697a656443616c6c6572000004ec5468652063616c6c6572206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e00b909082c70616c6c65745f7069707330506970734d65746164617461042c426c6f636b4e756d62657201100018010869644d030114506970496400010c75726c5102012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e510301584f7074696f6e3c5069704465736372697074696f6e3e000128637265617465645f617410012c426c6f636b4e756d62657200014c7472616e73616374696f6e5f76657273696f6e10010c7533320001186578706972793901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0000bd09000004084d030000c109082c70616c6c65745f706970732c4465706f736974496e666f04244163636f756e7449640100000801146f776e65720001244163636f756e744964000118616d6f756e7418011c42616c616e63650000c509082c70616c6c65745f706970730c506970082050726f706f73616c01d105244163636f756e74496401000010010869644d030114506970496400012070726f706f73616cd105012050726f706f73616c00011473746174655d03013450726f706f73616c537461746500012070726f706f7365724503014c50726f706f7365723c4163636f756e7449643e0000c909082c70616c6c65745f7069707330566f74696e67526573756c740000100128617965735f636f756e7410010c753332000128617965735f7374616b6518011c42616c616e63650001286e6179735f636f756e7410010c7533320001286e6179735f7374616b6518011c42616c616e63650000cd09082c70616c6c65745f7069707310566f74650000080019010110626f6f6c000018011c42616c616e63650000d109082c70616c6c65745f7069707340536e617073686f744d65746164617461082c426c6f636b4e756d6265720110244163636f756e7449640100000c0128637265617465645f617410012c426c6f636b4e756d62657200011c6d6164655f62790001244163636f756e744964000108696461030128536e617073686f7449640000d509082c70616c6c65745f706970731c56657273696f6e0000040008010875380000d909082c70616c6c65745f70697073144572726f720404540001488452657363686564756c654e6f74427952656c65617365436f6f7264696e61746f7200000431014f6e6c79207468652047432072656c6561736520636f6f7264696e61746f7220697320616c6c6f77656420746f2072657363686564756c652070726f706f73616c20657865637574696f6e2e404e6f7446726f6d436f6d6d756e697479000108ec54686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2ecc5468652070726f706f73616c206d7573742062652066726f6d2074686520636f6d6d756e6974792c206275742069736e27742e384e6f744279436f6d6d6974746565000208ec54686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2eb45468652070726f706f73616c206d75737420626520627920636f6d6d756e6974792c206275742069736e27742e44546f6f4d616e794163746976655069707300030829015468652063757272656e74206e756d626572206f6620616374697665202870656e64696e67207c207363686564756c65642920504950732065786365656420746865206d6178696d756d9c616e64207468652070726f706f73616c206973206e6f74206279206120636f6d6d69747465652e40496e636f72726563744465706f7369740004049c50726f706f7365722073706563696669657320616e20696e636f7272656374206465706f7369744c496e73756666696369656e744465706f736974000504b450726f706f7365722063616e2774206166666f726420746f206c6f636b206d696e696d756d206465706f736974384e6f5375636850726f706f73616c000604705468652070726f706f73616c20646f6573206e6f742065786973742e4c4e6f7441436f6d6d69747465654d656d626572000704844e6f742070617274206f6620676f7665726e616e636520636f6d6d69747465652e60496e76616c6964467574757265426c6f636b4e756d626572000804d85768656e206120626c6f636b206e756d626572206973206c657373207468616e2063757272656e7420626c6f636b206e756d6265722e544e756d6265724f66566f74657345786365656465640009047c5768656e206e756d626572206f6620766f746573206f766572666c6f77732e685374616b65416d6f756e744f66566f7465734578636565646564000a04985768656e207374616b6520616d6f756e74206f66206120766f7465206f766572666c6f77732e584d697373696e6743757272656e744964656e74697479000b044c4d697373696e672063757272656e742044494458496e636f727265637450726f706f73616c5374617465000c049050726f706f73616c206973206e6f7420696e2074686520636f72726563742073746174653443616e6e6f74536b6970506970000d04fc5768656e20656e616374696e6720736e617073686f7420726573756c74732c20616e20756e736b69707061626c65205049502077617320736b69707065642e58536e617073686f74526573756c74546f6f4c61726765000e041501547269656420746f20656e61637420726573756c747320666f722074686520736e617073686f74207175657565206f766572666c6f77696e6720697473206c656e6774682e48536e617073686f7449644d69736d61746368000f045d01547269656420746f20656e61637420726573756c7420666f7220504950207769746820696420646966666572656e742066726f6d20746861742061742074686520706f736974696f6e20696e207468652071756575652e705363686564756c656450726f706f73616c446f65736e744578697374001004fc457865637574696f6e206f662061207363686564756c65642070726f706f73616c206661696c65642062656361757365206974206973206d697373696e672e6c50726f706f73616c4e6f74496e5363686564756c65645374617465001104fc412070726f706f73616c2074686174206973206e6f7420696e2061207363686564756c65642073746174652063616e6e6f742062652065786563757465642e00dd09000004087ce000e109000004087c850300e50900000408d8a000e909000004087cd800ed09084070616c6c65745f706f7274666f6c696f1c56657273696f6e0000040008010875380000f109084070616c6c65745f706f7274666f6c696f144572726f7204045400012454506f7274666f6c696f446f65734e6f7445786973740000047054686520706f7274666f6c696f20646f65736e27742065786973742e70496e73756666696369656e74506f7274666f6c696f42616c616e63650001049c496e73756666696369656e742062616c616e636520666f722061207472616e73616374696f6e2e6844657374696e6174696f6e497353616d65506f7274666f6c696f000204e854686520736f7572636520616e642064657374696e6174696f6e20706f7274666f6c696f732073686f756c6420626520646966666572656e742e64506f7274666f6c696f4e616d65416c7265616479496e557365000304310154686520706f7274666f6c696f20636f756c646e27742062652072656e616d65642062656361757365207468652063686f73656e206e616d6520697320616c726561647920696e207573652e945365636f6e646172794b65794e6f74417574686f72697a6564466f72506f7274666f6c696f000404fc546865207365636f6e64617279206b6579206973206e6f7420617574686f72697a656420746f206163636573732074686520706f7274666f6c696f2873292e54556e617574686f72697a6564437573746f6469616e000504f454686520706f72666f6c696f277320637573746f6479206973207769746820736f6d656f6e65206f74686572207468616e207468652063616c6c65722e60496e73756666696369656e74546f6b656e734c6f636b6564000604bc43616e206e6f7420756e6c6f636b206d6f726520746f6b656e73207468616e207768617420617265206c6f636b656444506f7274666f6c696f4e6f74456d707479000704bc54686520706f7274666f6c696f207374696c6c2068617320736f6d652061737365742062616c616e6365206c6566746c446966666572656e744964656e74697479506f7274666f6c696f73000804b454686520706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e74697469657300f509084c70616c6c65745f70726f746f636f6c5f666565144572726f7204045400010c68496e73756666696369656e744163636f756e7442616c616e6365000004b0496e73756666696369656e74206163636f756e742062616c616e636520746f2070617920746865206665652e4c556e48616e646c6564496d62616c616e636573000104884e6f742061626c6520746f2068616e646c65642074686520696d62616c616e63657368496e73756666696369656e745375627369647942616c616e6365000204b0496e73756666696369656e7420737562736964792062616c616e636520746f2070617920746865206665652e00f909000002fd0900fd0904184f7074696f6e04045401010a0108104e6f6e6500000010536f6d650400010a0000010000010a084070616c6c65745f7363686564756c65722c5363686564756c65645632101043616c6c01d1052c426c6f636b4e756d62657201103450616c6c6574734f726967696e01050a244163636f756e7449640100001401206d617962655f69646102013c4f7074696f6e3c5665633c75383e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cd105011043616c6c0001386d617962655f706572696f646963c90701944f7074696f6e3c7363686564756c653a3a506572696f643c426c6f636b4e756d6265723e3e0001186f726967696e050a013450616c6c6574734f726967696e0000050a0c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d65304f726967696e43616c6c65720001141873797374656d0400090a01746672616d655f73797374656d3a3a4f726967696e3c52756e74696d653e00000044506f6c796d657368436f6d6d697474656504000d0a01f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365313e00090048546563686e6963616c436f6d6d69747465650400110a01f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365333e000b004055706772616465436f6d6d69747465650400150a01f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365343e000d0010566f69640400190a01110173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a566f696400040000090a08306672616d655f73797374656d245261774f726967696e04244163636f756e7449640100010c10526f6f74000000185369676e656404000001244163636f756e744964000100104e6f6e65000200000d0a084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449012d01010420456e646f7273656400000000110a084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449014901010420456e646f7273656400000000150a084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449015901010420456e646f7273656400000000190a081c73705f636f726510566f6964000100001d0a084070616c6c65745f7363686564756c65722052656c656173657300010808563100000008563200010000210a0c4070616c6c65745f7363686564756c65721870616c6c6574144572726f72040454000110404661696c6564546f5363686564756c65000004644661696c656420746f207363686564756c6520612063616c6c204e6f74466f756e640001047c43616e6e6f742066696e6420746865207363686564756c65642063616c6c2e5c546172676574426c6f636b4e756d626572496e50617374000204a4476976656e2074617267657420626c6f636b206e756d62657220697320696e2074686520706173742e4852657363686564756c654e6f4368616e6765000304f052657363686564756c65206661696c6564206265636175736520697420646f6573206e6f74206368616e6765207363686564756c65642074696d652e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909250a084470616c6c65745f736574746c656d656e741456656e7565000008011c63726561746f727c01284964656e74697479496400012876656e75655f74797065ad03012456656e7565547970650000290a00000408a503b103002d0a00000408a5030000310a084470616c6c65745f736574746c656d656e742c496e737472756374696f6e08184d6f6d656e7401202c426c6f636b4e756d6265720110001c0138696e737472756374696f6e5f6964b1030134496e737472756374696f6e496400012076656e75655f6964a503011c56656e75654964000118737461747573350a0144496e737472756374696f6e53746174757300013c736574746c656d656e745f74797065b503016c536574746c656d656e74547970653c426c6f636b4e756d6265723e000128637265617465645f6174f401384f7074696f6e3c4d6f6d656e743e00012874726164655f64617465f401384f7074696f6e3c4d6f6d656e743e00012876616c75655f64617465f401384f7074696f6e3c4d6f6d656e743e0000350a084470616c6c65745f736574746c656d656e7444496e737472756374696f6e53746174757300010c1c556e6b6e6f776e0000001c50656e64696e67000100184661696c656400020000390a00000408b103c103003d0a084470616c6c65745f736574746c656d656e74244c656753746174757304244163636f756e7449640100010c4050656e64696e67546f6b656e4c6f636b00000040457865637574696f6e50656e64696e6700010050457865637574696f6e546f4265536b697070656408000001244163636f756e744964000020010c75363400020000410a00000408b103d800450a084470616c6c65745f736574746c656d656e744441666669726d6174696f6e53746174757300010c1c556e6b6e6f776e0000001c50656e64696e670001002041666669726d656400020000490a00000408d8b103004d0a00000408a0a50300510a084470616c6c65745f736574746c656d656e741c56657273696f6e0000040008010875380000550a084470616c6c65745f736574746c656d656e74144572726f7204045400016430496e76616c696456656e75650000045456656e756520646f6573206e6f742065786973742e30556e617574686f72697a6564000104a853656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e3c4e6f50656e64696e6741666669726d000204d04e6f2070656e64696e672061666669726d6174696f6e20666f72207468652070726f766964656420696e737472756374696f6e2e58496e737472756374696f6e4e6f7441666669726d656400030488496e737472756374696f6e20686173206e6f74206265656e2061666669726d65642e54496e737472756374696f6e4e6f7450656e64696e67000404b850726f766964656420696e737472756374696f6e206973206e6f742070656e64696e6720657865637574696f6e2e50496e737472756374696f6e4e6f744661696c6564000504b850726f766964656420696e737472756374696f6e206973206e6f74206661696c696e6720657865637574696f6e2e344c65674e6f7450656e64696e670006049850726f7669646564206c6567206973206e6f742070656e64696e6720657865637574696f6e2e48556e617574686f72697a65645369676e6572000704985369676e6572206973206e6f7420617574686f72697a6564206279207468652076656e75652e5452656365697074416c7265616479436c61696d6564000804545265636569707420616c726561647920757365642e44526563656970744e6f74436c61696d65640009045452656365697074206e6f742075736564207965742e44556e617574686f72697a656456656e7565000a04a456656e756520646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e484661696c6564546f4c6f636b546f6b656e73000b0421015768696c652061666669726d696e6720746865207472616e736665722c2073797374656d206661696c656420746f206c6f636b207468652061737365747320696e766f6c7665642e44496e737472756374696f6e4661696c6564000c0478496e737472756374696f6e206661696c656420746f20657865637574652e5c496e737472756374696f6e4461746573496e76616c6964000d0474496e737472756374696f6e2068617320696e76616c696420646174657370496e737472756374696f6e536574746c65426c6f636b506173736564000e04a8496e737472756374696f6e27732074617267657420736574746c6520626c6f636b20726561636865642e40496e76616c69645369676e6174757265000f04784f6666636861696e207369676e617475726520697320696e76616c69642e4853616d6553656e64657252656365697665720010048453656e64657220616e6420726563656976657220617265207468652073616d652e44506f7274666f6c696f4d69736d617463680011042501506f7274666f6c696f20696e207265636569707420646f6573206e6f74206d61746368207769746820706f7274666f6c696f732070726f76696465642062792074686520757365722e44536574746c654f6e50617374426c6f636b00120461015468652070726f766964656420736574746c656d656e7420626c6f636b206e756d62657220697320696e20746865207061737420616e642063616e6e6f74206265207573656420627920746865207363686564756c65722e4c4e6f506f7274666f6c696f50726f76696465640013043d01506f7274666f6c696f20626173656420616374696f6e732072657175697265206174206c65617374206f6e6520706f7274666f6c696f20746f2062652070726f766964656420617320696e7075742e6c556e657870656374656441666669726d6174696f6e53746174757300140445015468652063757272656e7420696e737472756374696f6e2061666669726d6174696f6e2073746174757320646f6573206e6f7420737570706f7274207468652072657175657374656420616374696f6e2e404661696c6564546f5363686564756c650015048c5363686564756c696e67206f6620616e20696e737472756374696f6e206661696c732e404c6567436f756e74546f6f536d616c6c001604a5014c65677320636f756e742073686f756c64206d61746368657320776974682074686520746f74616c206e756d626572206f66206c65677320696e20776869636820676976656e20706f7274666f6c696f20616374206173206066726f6d5f706f7274666f6c696f602e48556e6b6e6f776e496e737472756374696f6e00170474496e737472756374696f6e2073746174757320697320756e6b6e6f776e64496e737472756374696f6e486173546f6f4d616e794c656773001804c44d6178696d756d206c65677320746861742063616e20626520696e20612073696e676c6520696e737472756374696f6e2e04844572726f727320666f722074686520536574746c656d656e74206d6f64756c652e590a000004085d0af103005d0a0c4c706f6c796d6573685f7072696d697469766573287374617469737469637328537461743173744b657900000801146173736574d1030128417373657453636f7065000124737461745f74797065d903012053746174547970650000610a0c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e63655c41737365745472616e73666572436f6d706c69616e6365000008011870617573656419010110626f6f6c000130726571756972656d656e7473ed07016c42547265655365743c5472616e73666572436f6e646974696f6e3e0000650a000004080d047c00690a084470616c6c65745f737461746973746963731c56657273696f6e00000400080108753800006d0a084470616c6c65745f73746174697374696373144572726f720404540001183c496e76616c69645472616e73666572000004545472616e73666572206e6f7420616c6c6f7765642e3c53746174547970654d697373696e67000104605374617454797065206973206e6f7420656e61626c65642e8453746174547970654e656564656442795472616e73666572436f6e646974696f6e000204a05374617454797065206973206e6565646564206279205472616e73666572436f6e646974696f6e2e6443616e6e6f7452656d6f76655374617454797065496e557365000304a84120537461747479706520697320696e2075736520616e642063616e27742062652072656d6f7665642e5053746174547970654c696d697452656163686564000404f4546865206c696d6974206f662053746174547970657320616c6c6f77656420666f7220616e20617373657420686173206265656e20726561636865642e745472616e73666572436f6e646974696f6e4c696d6974526561636865640005041901546865206c696d6974206f66205472616e73666572436f6e646974696f6e7320616c6c6f77656420666f7220616e20617373657420686173206265656e20726561636865642e046453746174697374696373206d6f64756c65206572726f72732e710a00000408a0190400750a082870616c6c65745f73746f144572726f7204045400013030556e617574686f72697a6564000004a853656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e204f766572666c6f770001048c416e2061726974686d65746963206f7065726174696f6e206f766572666c6f7765642e6c496e73756666696369656e74546f6b656e7352656d61696e696e67000204804e6f7420656e6f75676820746f6b656e73206c65667420666f722073616c652e4846756e647261697365724e6f74466f756e640003045446756e64726169736572206e6f7420666f756e642e4446756e647261697365724e6f744c6976650004049c46756e64726169736572206973206569746865722066726f7a656e206f722073746f707065642e4046756e64726169736572436c6f736564000504ac46756e6472616973657220686173206265656e20636c6f7365642f73746f7070656420616c72656164792e4446756e6472616973657245787069726564000604d0496e746572616374696e67207769746820612066756e6472616973657220706173742074686520656e6420604d6f6d656e74602e30496e76616c696456656e756500070468416e20696e76616c69642076656e75652070726f76696465642e44496e76616c6964507269636554696572730008042501416e20696e646976696475616c20707269636520746965722077617320696e76616c6964206f72206120736574206f662070726963652074696572732077617320696e76616c69642e54496e76616c69644f66666572696e6757696e646f770009045d0157696e646f77202873746172742074696d652c20656e642074696d65292068617320696e76616c696420706172616d65746572732c20652e672073746172742074696d6520697320616674657220656e642074696d652e404d617850726963654578636565646564000a04bc5072696365206f662074686520696e766573746d656e7420657863656564656420746865206d61782070726963652e58496e766573746d656e74416d6f756e74546f6f4c6f77000b04e8496e766573746d656e7420616d6f756e74206973206c6f776572207468616e206d696e696d756d20696e766573746d656e7420616d6f756e742e04844572726f727320666f722074686520536574746c656d656e74206d6f64756c652e790a083c70616c6c65745f7472656173757279144572726f720404540001044c496e73756666696369656e7442616c616e63650000047850726f706f73657227732062616c616e636520697320746f6f206c6f772e04784572726f7220666f7220746865207472656173757279206d6f64756c652e7d0a083870616c6c65745f7574696c697479144572726f7204045400010c40496e76616c69645369676e6174757265000004744f6666636861696e207369676e617475726520697320696e76616c6964405461726765744364644d697373696e670001048054617267657420646f6573206e6f74206861766520612076616c69642043444430496e76616c69644e6f6e636500020c6850726f7669646564206e6f6e63652077617320696e76616c696411014966207468652070726f7669646564206e6f6e6365203c2063757272656e74206e6f6e63652c207468652063616c6c2077617320616c72656164792065786563757465645d014966207468652070726f7669646564206e6f6e6365203e2063757272656e74206e6f6e63652c207468652063616c6c287329206265666f7265207468652063757272656e74206661696c656420746f206578656375746500810a082c70616c6c65745f62617365144572726f720404540001081c546f6f4c6f6e6700000880457863656564656420612067656e65726963206c656e677468206c696d69742e1d01546865206c696d697420636f756c6420626520666f7220616e7920736f7274206f66206c69737473206f66207468696e67732c20696e636c7564696e67206120737472696e672e3c436f756e7465724f766572666c6f77000118b85468652073657175656e636520636f756e74657220666f7220736f6d657468696e67206f766572666c6f7765642e001d015768656e20746869732068617070656e7320646570656e6473206f6e20652e672e2c20746865206361706163697479206f6620746865206964656e74696669657220747970652e3901466f72206578616d706c652c207765206d69676874206861766520607075622073747275637420506970496428753332293b602c207769746820607533323a3a4d4158602063617061636974792e5901496e2070726163746963652c207468657365206572726f72732077696c6c206e657665722068617070656e20627574206e6f20636f646520706174682073686f756c6420726573756c7420696e20612070616e69632cfc736f20746865736520636f726e6572206361736573206e65656420746f20626520636f7665726564207769746820616e206572726f722076617269616e742e00850a00000408a0150100890a085870616c6c65745f65787465726e616c5f6167656e7473144572726f72040454000118204e6f537563684147000004ec416e20414720776974682074686520676976656e2060414749646020646964206e6f7420657869737420666f722074686520605469636b6572602e44556e617574686f72697a65644167656e74000104e8546865206167656e74206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e38416c7265616479416e4167656e74000204e85468652070726f766964656420606167656e746020697320616c726561647920616e206167656e7420666f722074686520605469636b6572602e284e6f74416e4167656e74000304d85468652070726f766964656420606167656e7460206973206e6f7420616e206167656e7420666f722074686520605469636b6572602e5452656d6f76696e674c61737446756c6c4167656e74000408e054686973206167656e7420697320746865206c6173742066756c6c206f6e652c20616e642069742773206265696e672072656d6f7665642c686d616b696e6720746865206173736574206f727068616e65642e845365636f6e646172794b65794e6f74417574686f72697a6564466f7241737365740005041d015468652063616c6c65722773207365636f6e64617279206b657920646f6573206e6f74206861766520746865207265717569726564206173736574207065726d697373696f6e2e008d0a083870616c6c65745f72656c617965721c53756273696479040c416363010000080128706179696e675f6b657900010c41636300012472656d61696e696e6718011c42616c616e63650000910a083870616c6c65745f72656c61796572144572726f7204045400011c44557365724b65794364644d697373696e67000004cc5468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e4c506179696e674b65794364644d697373696e67000104cc5468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e2c4e6f506179696e674b6579000204ac5468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e304e6f74506179696e674b6579000304b05468652060757365725f6b65796020686173206120646966666572656e742060706179696e675f6b6579602e644e6f74417574686f72697a6564466f72506179696e674b6579000404b8546865207369676e6572206973206e6f7420617574686f72697a656420666f722060706179696e675f6b6579602e5c4e6f74417574686f72697a6564466f72557365724b6579000504b0546865207369676e6572206973206e6f7420617574686f72697a656420666f722060757365725f6b6579602e204f766572666c6f77000604b85468652072656d61696e696e6720504f4c595820666f722060757365725f6b657960206f766572666c6f7765642e00950a083870616c6c65745f72657761726473144572726f7204045400011044556e6b6e6f776e49746e41646472657373000004cc4164647265737320776173206e6f7420666f756e6420696e20746865206c697374206f662049746e206164647265737365732e5c49746e526577617264416c7265616479436c61696d65640001047c49746e207265776172642077617320616c726561647920636c61696d65642e40496e76616c69645369676e61747572650002047c50726f7669646564207369676e61747572652077617320696e76616c69642e54556e61626c65546f436f7665727442616c616e6365000304b042616c616e63652063616e206e6f7420626520636f6e76657274656420746f2061207072696d69746976652e00990a084470616c6c65745f746573745f7574696c73144572726f72040454000100009d0a102873705f72756e74696d651c67656e657269634c756e636865636b65645f65787472696e73696348556e636865636b656445787472696e736963101c416464726573730139051043616c6c01d105245369676e617475726501d90714457874726101a10a00040028000000a10a00000420a50aa90aad0ab10ab90abd0ac50ac90a00a50a10306672616d655f73797374656d28657874656e73696f6e7348636865636b5f737065635f76657273696f6e40436865636b5370656356657273696f6e04045400000000a90a10306672616d655f73797374656d28657874656e73696f6e7340636865636b5f74785f76657273696f6e38436865636b547856657273696f6e04045400000000ad0a10306672616d655f73797374656d28657874656e73696f6e7334636865636b5f67656e6573697330436865636b47656e6573697304045400000000b10a10306672616d655f73797374656d28657874656e73696f6e733c636865636b5f6d6f7274616c69747938436865636b4d6f7274616c69747904045400000400b50a010c4572610000b50a102873705f72756e74696d651c67656e657269630c6572610c4572610001010420496d6d6f7274616c0000001c4d6f7274616c31040008000001001c4d6f7274616c32040008000002001c4d6f7274616c33040008000003001c4d6f7274616c34040008000004001c4d6f7274616c35040008000005001c4d6f7274616c36040008000006001c4d6f7274616c37040008000007001c4d6f7274616c38040008000008001c4d6f7274616c3904000800000900204d6f7274616c313004000800000a00204d6f7274616c313104000800000b00204d6f7274616c313204000800000c00204d6f7274616c313304000800000d00204d6f7274616c313404000800000e00204d6f7274616c313504000800000f00204d6f7274616c313604000800001000204d6f7274616c313704000800001100204d6f7274616c313804000800001200204d6f7274616c313904000800001300204d6f7274616c323004000800001400204d6f7274616c323104000800001500204d6f7274616c323204000800001600204d6f7274616c323304000800001700204d6f7274616c323404000800001800204d6f7274616c323504000800001900204d6f7274616c323604000800001a00204d6f7274616c323704000800001b00204d6f7274616c323804000800001c00204d6f7274616c323904000800001d00204d6f7274616c333004000800001e00204d6f7274616c333104000800001f00204d6f7274616c333204000800002000204d6f7274616c333304000800002100204d6f7274616c333404000800002200204d6f7274616c333504000800002300204d6f7274616c333604000800002400204d6f7274616c333704000800002500204d6f7274616c333804000800002600204d6f7274616c333904000800002700204d6f7274616c343004000800002800204d6f7274616c343104000800002900204d6f7274616c343204000800002a00204d6f7274616c343304000800002b00204d6f7274616c343404000800002c00204d6f7274616c343504000800002d00204d6f7274616c343604000800002e00204d6f7274616c343704000800002f00204d6f7274616c343804000800003000204d6f7274616c343904000800003100204d6f7274616c353004000800003200204d6f7274616c353104000800003300204d6f7274616c353204000800003400204d6f7274616c353304000800003500204d6f7274616c353404000800003600204d6f7274616c353504000800003700204d6f7274616c353604000800003800204d6f7274616c353704000800003900204d6f7274616c353804000800003a00204d6f7274616c353904000800003b00204d6f7274616c363004000800003c00204d6f7274616c363104000800003d00204d6f7274616c363204000800003e00204d6f7274616c363304000800003f00204d6f7274616c363404000800004000204d6f7274616c363504000800004100204d6f7274616c363604000800004200204d6f7274616c363704000800004300204d6f7274616c363804000800004400204d6f7274616c363904000800004500204d6f7274616c373004000800004600204d6f7274616c373104000800004700204d6f7274616c373204000800004800204d6f7274616c373304000800004900204d6f7274616c373404000800004a00204d6f7274616c373504000800004b00204d6f7274616c373604000800004c00204d6f7274616c373704000800004d00204d6f7274616c373804000800004e00204d6f7274616c373904000800004f00204d6f7274616c383004000800005000204d6f7274616c383104000800005100204d6f7274616c383204000800005200204d6f7274616c383304000800005300204d6f7274616c383404000800005400204d6f7274616c383504000800005500204d6f7274616c383604000800005600204d6f7274616c383704000800005700204d6f7274616c383804000800005800204d6f7274616c383904000800005900204d6f7274616c393004000800005a00204d6f7274616c393104000800005b00204d6f7274616c393204000800005c00204d6f7274616c393304000800005d00204d6f7274616c393404000800005e00204d6f7274616c393504000800005f00204d6f7274616c393604000800006000204d6f7274616c393704000800006100204d6f7274616c393804000800006200204d6f7274616c393904000800006300244d6f7274616c31303004000800006400244d6f7274616c31303104000800006500244d6f7274616c31303204000800006600244d6f7274616c31303304000800006700244d6f7274616c31303404000800006800244d6f7274616c31303504000800006900244d6f7274616c31303604000800006a00244d6f7274616c31303704000800006b00244d6f7274616c31303804000800006c00244d6f7274616c31303904000800006d00244d6f7274616c31313004000800006e00244d6f7274616c31313104000800006f00244d6f7274616c31313204000800007000244d6f7274616c31313304000800007100244d6f7274616c31313404000800007200244d6f7274616c31313504000800007300244d6f7274616c31313604000800007400244d6f7274616c31313704000800007500244d6f7274616c31313804000800007600244d6f7274616c31313904000800007700244d6f7274616c31323004000800007800244d6f7274616c31323104000800007900244d6f7274616c31323204000800007a00244d6f7274616c31323304000800007b00244d6f7274616c31323404000800007c00244d6f7274616c31323504000800007d00244d6f7274616c31323604000800007e00244d6f7274616c31323704000800007f00244d6f7274616c31323804000800008000244d6f7274616c31323904000800008100244d6f7274616c31333004000800008200244d6f7274616c31333104000800008300244d6f7274616c31333204000800008400244d6f7274616c31333304000800008500244d6f7274616c31333404000800008600244d6f7274616c31333504000800008700244d6f7274616c31333604000800008800244d6f7274616c31333704000800008900244d6f7274616c31333804000800008a00244d6f7274616c31333904000800008b00244d6f7274616c31343004000800008c00244d6f7274616c31343104000800008d00244d6f7274616c31343204000800008e00244d6f7274616c31343304000800008f00244d6f7274616c31343404000800009000244d6f7274616c31343504000800009100244d6f7274616c31343604000800009200244d6f7274616c31343704000800009300244d6f7274616c31343804000800009400244d6f7274616c31343904000800009500244d6f7274616c31353004000800009600244d6f7274616c31353104000800009700244d6f7274616c31353204000800009800244d6f7274616c31353304000800009900244d6f7274616c31353404000800009a00244d6f7274616c31353504000800009b00244d6f7274616c31353604000800009c00244d6f7274616c31353704000800009d00244d6f7274616c31353804000800009e00244d6f7274616c31353904000800009f00244d6f7274616c3136300400080000a000244d6f7274616c3136310400080000a100244d6f7274616c3136320400080000a200244d6f7274616c3136330400080000a300244d6f7274616c3136340400080000a400244d6f7274616c3136350400080000a500244d6f7274616c3136360400080000a600244d6f7274616c3136370400080000a700244d6f7274616c3136380400080000a800244d6f7274616c3136390400080000a900244d6f7274616c3137300400080000aa00244d6f7274616c3137310400080000ab00244d6f7274616c3137320400080000ac00244d6f7274616c3137330400080000ad00244d6f7274616c3137340400080000ae00244d6f7274616c3137350400080000af00244d6f7274616c3137360400080000b000244d6f7274616c3137370400080000b100244d6f7274616c3137380400080000b200244d6f7274616c3137390400080000b300244d6f7274616c3138300400080000b400244d6f7274616c3138310400080000b500244d6f7274616c3138320400080000b600244d6f7274616c3138330400080000b700244d6f7274616c3138340400080000b800244d6f7274616c3138350400080000b900244d6f7274616c3138360400080000ba00244d6f7274616c3138370400080000bb00244d6f7274616c3138380400080000bc00244d6f7274616c3138390400080000bd00244d6f7274616c3139300400080000be00244d6f7274616c3139310400080000bf00244d6f7274616c3139320400080000c000244d6f7274616c3139330400080000c100244d6f7274616c3139340400080000c200244d6f7274616c3139350400080000c300244d6f7274616c3139360400080000c400244d6f7274616c3139370400080000c500244d6f7274616c3139380400080000c600244d6f7274616c3139390400080000c700244d6f7274616c3230300400080000c800244d6f7274616c3230310400080000c900244d6f7274616c3230320400080000ca00244d6f7274616c3230330400080000cb00244d6f7274616c3230340400080000cc00244d6f7274616c3230350400080000cd00244d6f7274616c3230360400080000ce00244d6f7274616c3230370400080000cf00244d6f7274616c3230380400080000d000244d6f7274616c3230390400080000d100244d6f7274616c3231300400080000d200244d6f7274616c3231310400080000d300244d6f7274616c3231320400080000d400244d6f7274616c3231330400080000d500244d6f7274616c3231340400080000d600244d6f7274616c3231350400080000d700244d6f7274616c3231360400080000d800244d6f7274616c3231370400080000d900244d6f7274616c3231380400080000da00244d6f7274616c3231390400080000db00244d6f7274616c3232300400080000dc00244d6f7274616c3232310400080000dd00244d6f7274616c3232320400080000de00244d6f7274616c3232330400080000df00244d6f7274616c3232340400080000e000244d6f7274616c3232350400080000e100244d6f7274616c3232360400080000e200244d6f7274616c3232370400080000e300244d6f7274616c3232380400080000e400244d6f7274616c3232390400080000e500244d6f7274616c3233300400080000e600244d6f7274616c3233310400080000e700244d6f7274616c3233320400080000e800244d6f7274616c3233330400080000e900244d6f7274616c3233340400080000ea00244d6f7274616c3233350400080000eb00244d6f7274616c3233360400080000ec00244d6f7274616c3233370400080000ed00244d6f7274616c3233380400080000ee00244d6f7274616c3233390400080000ef00244d6f7274616c3234300400080000f000244d6f7274616c3234310400080000f100244d6f7274616c3234320400080000f200244d6f7274616c3234330400080000f300244d6f7274616c3234340400080000f400244d6f7274616c3234350400080000f500244d6f7274616c3234360400080000f600244d6f7274616c3234370400080000f700244d6f7274616c3234380400080000f800244d6f7274616c3234390400080000f900244d6f7274616c3235300400080000fa00244d6f7274616c3235310400080000fb00244d6f7274616c3235320400080000fc00244d6f7274616c3235330400080000fd00244d6f7274616c3235340400080000fe00244d6f7274616c3235350400080000ff0000b90a10306672616d655f73797374656d28657874656e73696f6e732c636865636b5f6e6f6e636528436865636b4e6f6e63650404540000040071040120543a3a496e6465780000bd0a0c4c706f6c796d6573685f657874656e73696f6e7330636865636b5f7765696768742c436865636b57656967687404045400000400c10a011443573c543e0000c10a10306672616d655f73797374656d28657874656e73696f6e7330636865636b5f7765696768742c436865636b57656967687404045400000000c50a086870616c6c65745f7472616e73616374696f6e5f7061796d656e74604368617267655472616e73616374696f6e5061796d656e7404045400000400cd01013042616c616e63654f663c543e0000c90a084870616c6c65745f7065726d697373696f6e734453746f726543616c6c4d6574616461746104045400000000cd0a0c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d651c52756e74696d6500000000bc1853797374656d011853797374656d401c4163636f756e7401010402000c4101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e8205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e3845787472696e736963436f756e74000010040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e2c426c6f636b57656967687401001c600000000000000000000000000000000000000000000000000488205468652063757272656e742077656967687420666f722074686520626c6f636b2e40416c6c45787472696e736963734c656e000010040004410120546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e24426c6f636b486173680101040510248000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101040510280400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d6265720100101000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801002480000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e1844696765737401002c040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e7473010048040010a0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e005901204e4f54453a20546869732073746f72616765206974656d206973206578706c696369746c7920756e626f756e6465642073696e6365206974206973206e6576657220696e74656e64656420746f2062652072656164642066726f6d2077697468696e207468652072756e74696d652e284576656e74436f756e74010010100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f70696373010104022469040400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e004d01205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e484c61737452756e74696d655570677261646500006d0404000455012053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e545570677261646564546f553332526566436f756e74010019010400044d012054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e605570677261646564546f547269706c65526566436f756e74010019010400085d012054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e73207468726565207479706573206f662060526566436f756e74602e2046616c736548202864656661756c7429206966206e6f742e38457865637574696f6e506861736500006104040004882054686520657865637574696f6e207068617365206f662074686520626c6f636b2e01790401541830426c6f636b576569676874738904850100c817a80400000000204aa9d10100008036be26000000000180914b872e010000010098f73e5d0100000100000000000000008036be26000000000180199ef1a20100000100204aa9d1010000010088526a740000008036be260000000000000004d020426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e2c426c6f636b4c656e677468950430000078000000a0000000a00004a820546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e38426c6f636b48617368436f756e741010fa000000045501204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e2044625765696768749d044080f0fa020000000000c2eb0b000000000409012054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e1c56657273696f6ea1040d0430706f6c796d6573685f64657630706f6c796d6573685f64657601000000404b4c000000000048df6acb689907609b0300000037e397fc7c91f5e40100000040fe3ad401f8959a05000000d2bc9897eed08f1503000000f78b278be53f454c02000000ed99c5acb25eedf503000000cbca25e39f14238702000000687ad44ad37f03c201000000bc9d89904f5b923f0100000037c8bb1350a9a2a801000000ab3c0572291feb8b0100000018ef58a3b67ba77001000000329342994773047f01000000001a0b29f17d01f401000000f28e8080b6e2dfd002000000bb6ba9053c5c9d78020000009f242c2c886f3fce01000000595ac34c5ea1f5fe01000000020000000484204765742074686520636861696e27732063757272656e742076657273696f6e2e28535335385072656669783d03082a0014a8205468652064657369676e61746564205353383520707265666978206f66207468697320636861696e2e0039012054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e20697331012074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f662069742061737020616e206964656e746966696572206f662074686520636861696e2e01b504001042616265011042616265402845706f6368496e64657801002020000000000000000004542043757272656e742065706f636820696e6465782e2c417574686f7269746965730100b9040400046c2043757272656e742065706f636820617574686f7269746965732e2c47656e65736973536c6f740100c90420000000000000000008f82054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e205468697320697320309020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2c43757272656e74536c6f740100c90420000000000000000004542043757272656e7420736c6f74206e756d6265722e2852616e646f6d6e65737301000480000000000000000000000000000000000000000000000000000000000000000028b8205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e002c20232053656375726974790005012054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061f8206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e7915012063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d6265727320746861742074686973150120286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e206265050120757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e0d01206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e6050656e64696e6745706f6368436f6e6669674368616e67650000cd0404000461012050656e64696e672065706f636820636f6e66696775726174696f6e206368616e676520746861742077696c6c206265206170706c696564207768656e20746865206e6578742065706f636820697320656e61637465642e384e65787452616e646f6d6e657373010004800000000000000000000000000000000000000000000000000000000000000000045c204e6578742065706f63682072616e646f6d6e6573732e3c4e657874417574686f7269746965730100b90404000460204e6578742065706f636820617574686f7269746965732e305365676d656e74496e6465780100101000000000247c2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e00f4205765206d616b6520612074726164656f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e01012057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f942060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e00ec204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e090120576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572791c2065706f63682e44556e646572436f6e737472756374696f6e0101040510d90404000415012054574f582d4e4f54453a20605365676d656e74496e6465786020697320616e20696e6372656173696e6720696e74656765722c20736f2074686973206973206f6b61792e2c496e697469616c697a65640000e10404000801012054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d65601d01206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e4c417574686f7256726652616e646f6d6e6573730100e10404001015012054686973206669656c642073686f756c6420616c7761797320626520706f70756c6174656420647572696e6720626c6f636b2070726f63657373696e6720756e6c6573731901207365636f6e6461727920706c61696e20736c6f74732061726520656e61626c65642028776869636820646f6e277420636f6e7461696e206120565246206f7574707574292e0051012049742069732073657420696e20606f6e5f696e697469616c697a65602c206265666f72652069742077696c6c20636f6e7461696e207468652076616c75652066726f6d20746865206c61737420626c6f636b2e2845706f6368537461727401009d03200000000000000000145d012054686520626c6f636b206e756d62657273207768656e20746865206c61737420616e642063757272656e742065706f6368206861766520737461727465642c20726573706563746976656c7920604e2d316020616e641420604e602e4901204e4f54453a20576520747261636b207468697320697320696e206f7264657220746f20616e6e6f746174652074686520626c6f636b206e756d626572207768656e206120676976656e20706f6f6c206f66590120656e74726f7079207761732066697865642028692e652e20697420776173206b6e6f776e20746f20636861696e206f6273657276657273292e2053696e63652065706f6368732061726520646566696e656420696e590120736c6f74732c207768696368206d617920626520736b69707065642c2074686520626c6f636b206e756d62657273206d6179206e6f74206c696e6520757020776974682074686520736c6f74206e756d626572732e204c6174656e657373010010100000000014d820486f77206c617465207468652063757272656e7420626c6f636b20697320636f6d706172656420746f2069747320706172656e742e001501205468697320656e74727920697320706f70756c617465642061732070617274206f6620626c6f636b20657865637574696f6e20616e6420697320636c65616e65642075701101206f6e20626c6f636b2066696e616c697a6174696f6e2e205175657279696e6720746869732073746f7261676520656e747279206f757473696465206f6620626c6f636bb020657865637574696f6e20636f6e746578742073686f756c6420616c77617973207969656c64207a65726f2e2c45706f6368436f6e6669670000e50404000861012054686520636f6e66696775726174696f6e20666f72207468652063757272656e742065706f63682e2053686f756c64206e6576657220626520604e6f6e656020617320697420697320696e697469616c697a656420696e242067656e657369732e3c4e65787445706f6368436f6e6669670000e5040400082d012054686520636f6e66696775726174696f6e20666f7220746865206e6578742065706f63682c20604e6f6e65602069662074686520636f6e6669672077696c6c206e6f74206368616e6765e82028796f752063616e2066616c6c6261636b20746f206045706f6368436f6e6669676020696e737465616420696e20746861742063617365292e01e904000c3445706f63684475726174696f6e20202c010000000000000cec2054686520616d6f756e74206f662074696d652c20696e20736c6f74732c207468617420656163682065706f63682073686f756c64206c6173742e1901204e4f54453a2043757272656e746c79206974206973206e6f7420706f737369626c6520746f206368616e6765207468652065706f6368206475726174696f6e20616674657221012074686520636861696e2068617320737461727465642e20417474656d7074696e6720746f20646f20736f2077696c6c20627269636b20626c6f636b2070726f64756374696f6e2e444578706563746564426c6f636b54696d652020701700000000000014050120546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e67110120626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f75740501207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f740901206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473a0207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e384d6178417574686f7269746965731010a08601000488204d6178206e756d626572206f6620617574686f72697469657320616c6c6f77656401fd04012454696d657374616d70012454696d657374616d70080c4e6f7701002020000000000000000004902043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e2444696455706461746501001901040004b420446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f0101050004344d696e696d756d506572696f642020b80b000000000000104d0120546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a5d0120706572696f6420746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c5d012067656e6572616c6c7920776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c206265a020646f75626c65207468697320706572696f64206f6e2064656661756c742073657474696e67732e00021c496e6469636573011c496e646963657304204163636f756e7473000104021009050400048820546865206c6f6f6b75702066726f6d20696e64657820746f206163636f756e742e010d050170041c4465706f736974184040420f0000000000000000000000000004ac20546865206465706f736974206e656564656420666f7220726573657276696e6720616e20696e6465782e0111050328417574686f72736869700128417574686f72736869700c18556e636c6573010015050400041c20556e636c657318417574686f720000000400046420417574686f72206f662063757272656e7420626c6f636b2e30446964536574556e636c657301001901040004bc205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e011d05000440556e636c6547656e65726174696f6e731010000000000ccc20546865206e756d626572206f6620626c6f636b73206261636b2077652073686f756c642061636365707420756e636c65732ee42054686973206d65616e7320746861742077652077696c6c206465616c207769746820756e636c652d706172656e7473207468617420617265942060556e636c6547656e65726174696f6e73202b203160206265666f726520606e6f77602e012505042042616c616e636573012042616c616e6365730834546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e144c6f636b7301010402002905040008b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e013505017404484578697374656e7469616c4465706f73697418400000000000000000000000000000000004d420546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e013d0505485472616e73616374696f6e5061796d656e7401485472616e73616374696f6e5061796d656e7408444e6578744665654d756c7469706c6965720100410540000064a7b3b6e00d0000000000000000003853746f7261676556657273696f6e01004505040000000008485472616e73616374696f6e42797465466565184064000000000000000000000000000000040d01205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e2c576569676874546f46656549055c040000000000000000000000000000000049b400000001040d012054686520706f6c796e6f6d69616c2074686174206973206170706c69656420696e206f7264657220746f20646572697665206665652066726f6d207765696768742e0006204964656e7469747901204964656e746974793c284469645265636f726473000104067c51050400045420444944202d3e206964656e7469747920696e666f2c497344696446726f7a656e010104067c1901040004e420444944202d3e20626f6f6c207468617420696e64696361746573206966207365636f6e64617279206b657973206172652066726f7a656e2e2843757272656e7444696400007c040004e02049742073746f726573207468652063757272656e74206964656e7469747920666f722063757272656e74207472616e73616374696f6e2e3043757272656e74506179657200000004000401012049742073746f726573207468652063757272656e74206761732066656520706179657220666f72207468652063757272656e74207472616e73616374696f6e18436c61696d7301010805025505f0c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a04f020285461726765742049442c20636c61696d20747970652920286973737565722c73636f706529202d3e204173736f63696174656420636c61696d73284b65795265636f726473000104050065050400044501204d61702066726f6d204163636f756e74496420746f20604b65795265636f726460207468617420686f6c647320746865206b65792773206964656e7469747920616e64207065726d697373696f6e732e1c4469644b65797301010806056905190104000401012041207265766572736520646f75626c65206d617020746f20616c6c6f772066696e64696e6720616c6c206b65797320666f7220616e206964656e746974792e444d756c7469507572706f73654e6f6e636501002020000000000000000004bc204e6f6e636520746f20656e7375726520756e6971756520616374696f6e732e207374617274732066726f6d20312e684f6666436861696e417574686f72697a6174696f6e4e6f6e6365010104067c2020000000000000000004c820417574686f72697a6174696f6e206e6f6e636520706572204964656e746974792e20496e697469616c6c7920697320302e38417574686f72697a6174696f6e7300010802056d057105040004b020416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792f6b6579206861734c417574686f72697a6174696f6e73476976656e010108060575056d0184000000000000000000000000000000000000000000000000000000000000000000044d0120416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792068617320676976656e2e2028417574686f72697a65722c20617574685f6964202d3e20617574686f72697a6564296c43646441757468466f724d61737465724b6579526f746174696f6e010019010400086501204f62736f6c657465642073746f72616765207661726961626c652073757065726365646564206279206043646441757468466f725072696d6172794b6579526f746174696f6e602e204974206973206b65707420686572659820666f722074686520707572706f7365206f662073746f72616765206d6967726174696f6e2e7043646441757468466f725072696d6172794b6579526f746174696f6e010019010400085d01204120636f6e66696720666c616720746861742c206966207365742c20696e7374727563747320616e20617574686f72697a6174696f6e2066726f6d2061204344442070726f766964657220696e206f7264657220746f9c206368616e676520746865207072696d617279206b6579206f6620616e206964656e746974792e3853746f7261676556657273696f6e01007905040004442053746f726167652076657273696f6e2e484163636f756e744b6579526566436f756e740101040200202000000000000000001cc420486f77206d616e7920227374726f6e6722207265666572656e63657320746f20746865206163636f756e74206b65792e00fc205374726f6e67207265666572656e6365732077696c6c20626c6f636b2061206b65792066726f6d206c656176696e672069742773206964656e746974792e00cc2050616c6c657473207573696e6720227374726f6e6722207265666572656e63657320746f206163636f756e74206b6579733aac202a2052656c617965723a20466f722060757365725f6b65796020616e642060706179696e675f6b65796000017d05018c0430496e697469616c504f4c59581840000000000000000000000000000000000001bd05074c4364645365727669636550726f7669646572730138496e7374616e63653247726f75700c344163746976654d656d6265727301002501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100c105040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01c905011d010001cd050844506f6c796d657368436f6d6d69747465650148496e7374616e636531436f6d6d6974746565242450726f706f73616c7301006504040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001040624d105040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e6700010406243508040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100250104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401009d03200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201003901040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01003908040004442053746f726167652076657273696f6e2e01d50501290100013d08094c436f6d6d69747465654d656d626572736869700138496e7374616e63653147726f75700c344163746976654d656d6265727301002501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100c105040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01d905013d01000141080a48546563686e6963616c436f6d6d69747465650148496e7374616e636533436f6d6d6974746565242450726f706f73616c7301006504040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001040624d105040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e6700010406243508040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100250104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401009d03200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201003901040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01003908040004442053746f726167652076657273696f6e2e01dd05014501000145080b70546563686e6963616c436f6d6d69747465654d656d626572736869700138496e7374616e63653347726f75700c344163746976654d656d6265727301002501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100c105040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01e105014d01000149080c4055706772616465436f6d6d69747465650148496e7374616e636534436f6d6d6974746565242450726f706f73616c7301006504040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001040624d105040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e6700010406243508040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100250104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401009d03200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201003901040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01003908040004442053746f726167652076657273696f6e2e01e50501550100014d080d6855706772616465436f6d6d69747465654d656d626572736869700138496e7374616e63653447726f75700c344163746976654d656d6265727301002501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100c105040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01e905015d01000151080e204d756c746953696701204d756c746953696730344d756c74695369674e6f6e6365010020200000000000000000042101204e6f6e636520746f20656e7375726520756e69717565204d756c746953696720616464726573736573206172652067656e6572617465643b207374617274732066726f6d20312e3c4d756c74695369675369676e657273010108060555086d018400000000000000000000000000000000000000000000000000000000000000000004d4205369676e657273206f662061206d756c74697369672e20286d756c74697369672c207369676e657229203d3e207369676e65722e3c4e756d6265724f665369676e65727301010406002020000000000000000004cc204e756d626572206f6620617070726f7665642f6163636570746564207369676e657273206f662061206d756c74697369672e544d756c74695369675369676e73526571756972656401010406002020000000000000000004e020436f6e6669726d6174696f6e73207265717569726564206265666f72652070726f63657373696e672061206d756c74697369672074782e384d756c74695369675478446f6e65010104060020200000000000000000043501204e756d626572206f66207472616e73616374696f6e732070726f706f73656420696e2061206d756c74697369672e20557365642061732074782069643b207374617274732066726f6d20302e2450726f706f73616c73000104055908d10504000475012050726f706f73616c732070726573656e74656420666f7220766f74696e6720746f2061206d756c746973696720286d756c74697369672c2070726f706f73616c20696429203d3e204f7074696f6e3c543a3a50726f706f73616c3e2e2c50726f706f73616c49647300010806025d0820040004942041206d617070696e67206f662070726f706f73616c7320746f207468656972204944732e14566f7465730101040561081901040004250120496e646976696475616c206d756c7469736967207369676e657220766f7465732e20286d756c7469207369672c207369676e65722c2070726f706f73616c29203d3e20766f74652e484d756c7469536967546f4964656e7469747901010406007c80000000000000000000000000000000000000000000000000000000000000000004a4204d6170732061206d756c7469736967206163636f756e7420746f20697473206964656e746974792e3850726f706f73616c44657461696c01010405590865084c00000000000000000000000000000000000000047c2044657461696c73206f662061206d756c74697369672070726f706f73616c485472616e73616374696f6e56657273696f6e010010100000000004f420546865206c617374207472616e73616374696f6e2076657273696f6e2c207573656420666f7220606f6e5f72756e74696d655f75706772616465602e3853746f7261676556657273696f6e01006d08040004442053746f726167652076657273696f6e2e01ed05016501000171080f1842726964676501184272696467652828436f6e74726f6c6c65720100008000000000000000000000000000000000000000000000000000000000000000000c410120546865206d756c7469736967206163636f756e74206f66207468652062726964676520636f6e74726f6c6c65722e205468652067656e65736973207369676e65727320616363657074207468656972450120617574686f72697a6174696f6e7320616e64206172652061626c6520746f206765742074686569722070726f706f73616c732064656c6976657265642e20546865206272696467652063726561746f729c207472616e736665727320736f6d6520504f4c5920746f207468656972206964656e746974792e3c427269646765547844657461696c73010108020275087908d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000859012044657461696c73206f6620627269646765207472616e73616374696f6e73206964656e7469666965642077697468207061697273206f662074686520726563697069656e74206163636f756e7420616e64207468656820627269646765207472616e73616374696f6e206e6f6e63652e1441646d696e010000800000000000000000000000000000000000000000000000000000000000000000043c205468652061646d696e206b65792e1846726f7a656e01001901040004bc2057686574686572206f72206e6f742074686520627269646765206f7065726174696f6e2069732066726f7a656e2e30467265657a6541646d696e7301010402001901040004090120467265657a65206272696467652061646d696e732e20205468657365206163636f756e74732063616e206f6e6c7920667265657a6520746865206272696467652e2054696d656c6f636b0100101000000000083d012054686520627269646765207472616e73616374696f6e2074696d656c6f636b20706572696f642c20696e20626c6f636b732c2073696e63652074686520616363657074616e6365206f66207468653101207472616e73616374696f6e2070726f706f73616c20647572696e67207768696368207468652061646d696e206b65792063616e20667265657a6520746865207472616e73616374696f6e2e2c4272696467654c696d69740100810850000000000000000000000000000000000000000008290120546865206d6178696d756d206e756d626572206f66206272696467656420504f4c595820706572206964656e746974792077697468696e20612073657420696e74657276616c206f66f820626c6f636b732e204669656c64733a20504f4c595820616d6f756e7420616e642074686520626c6f636b20696e74657276616c206475726174696f6e2e30506f6c797842726964676564010104067c810850000000000000000000000000000000000000000008510120416d6f756e74206f6620504f4c5958206272696467656420627920746865206964656e7469747920696e206c61737420626c6f636b20696e74657276616c2e204669656c64733a2074686520627269646765649420616d6f756e7420616e6420746865206c61737420696e74657276616c206e756d6265722e4c4272696467654c696d69744578656d70746564010104057c1901040004c0204964656e746974696573206e6f7420636f6e73747261696e65642062792074686520627269646765206c696d69742e3853746f7261676556657273696f6e01008508040004442053746f726167652076657273696f6e2e01f10501710100018908101c5374616b696e67011c5374616b696e679c30486973746f7279446570746801001010540000001c8c204e756d626572206f66206572617320746f206b65657020696e20686973746f72792e00390120496e666f726d6174696f6e206973206b65707420666f72206572617320696e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e006101204d757374206265206d6f7265207468616e20746865206e756d626572206f6620657261732064656c617965642062792073657373696f6e206f74686572776973652e20492e652e2061637469766520657261206d757374390120616c7761797320626520696e20686973746f72792e20492e652e20606163746976655f657261203e2063757272656e745f657261202d20686973746f72795f646570746860206d757374206265302067756172616e746565642e3856616c696461746f72436f756e74010010100000000004a82054686520696465616c206e756d626572206f66207374616b696e67207061727469636970616e74732e544d696e696d756d56616c696461746f72436f756e740100101000000000044101204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e34496e76756c6e657261626c65730100ec04000c590120416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e636520746865792772654d01206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f7572ac20696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e18426f6e6465640001040500000400040101204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e184c656467657200010402008d080400044501204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e14506179656501010405000506040004e42057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e2856616c696461746f72730101040500090608000004450120546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e284e6f6d696e61746f727300010405009908040004650120546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f2074686520736574206f66207374617368206b657973206f6620616c6c2076616c696461746f727320746f206e6f6d696e6174652e2843757272656e744572610000100400105c205468652063757272656e742065726120696e6465782e006501205468697320697320746865206c617465737420706c616e6e6564206572612c20646570656e64696e67206f6e20686f77207468652053657373696f6e2070616c6c657420717565756573207468652076616c696461746f7280207365742c206974206d6967687420626520616374697665206f72206e6f742e2441637469766545726100009d08040010d820546865206163746976652065726120696e666f726d6174696f6e2c20697420686f6c647320696e64657820616e642073746172742e0059012054686520616374697665206572612069732074686520657261206265696e672063757272656e746c792072657761726465642e2056616c696461746f7220736574206f66207468697320657261206d757374206265ac20657175616c20746f205b6053657373696f6e496e746572666163653a3a76616c696461746f7273605d2e5445726173537461727453657373696f6e496e6465780001040510100400103101205468652073657373696f6e20696e646578206174207768696368207468652065726120737461727420666f7220746865206c6173742060484953544f52595f44455054486020657261732e006101204e6f74653a205468697320747261636b7320746865207374617274696e672073657373696f6e2028692e652e2073657373696f6e20696e646578207768656e20657261207374617274206265696e672061637469766529f020666f7220746865206572617320696e20605b43757272656e74457261202d20484953544f52595f44455054482c2043757272656e744572615d602e2c457261735374616b6572730101080505a108c9010c0000001878204578706f73757265206f662076616c696461746f72206174206572612e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e48457261735374616b657273436c69707065640101080505a108c9010c0000002c9820436c6970706564204578706f73757265206f662076616c696461746f72206174206572612e00590120546869732069732073696d696c617220746f205b60457261735374616b657273605d20627574206e756d626572206f66206e6f6d696e61746f7273206578706f736564206973207265647563656420746f20746865dc2060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732e1d0120284e6f74653a20746865206669656c642060746f74616c6020616e6420606f776e60206f6620746865206578706f737572652072656d61696e7320756e6368616e676564292ef42054686973206973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e005d012054686973206973206b657965642066697374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e484572617356616c696461746f7250726566730101080505a10809060800001411012053696d696c617220746f2060457261735374616b657273602c207468697320686f6c64732074686520707265666572656e636573206f662076616c696461746f72732e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4c4572617356616c696461746f7252657761726400010405101804000c09012054686520746f74616c2076616c696461746f7220657261207061796f757420666f7220746865206c6173742060484953544f52595f44455054486020657261732e0021012045726173207468617420686176656e27742066696e697368656420796574206f7220686173206265656e2072656d6f76656420646f65736e27742068617665207265776172642e4045726173526577617264506f696e74730101040510a50814000000000008ac205265776172647320666f7220746865206c6173742060484953544f52595f44455054486020657261732e250120496620726577617264206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207265776172642069732072657475726e65642e3845726173546f74616c5374616b65010104051018400000000000000000000000000000000008ec2054686520746f74616c20616d6f756e74207374616b656420666f7220746865206c6173742060484953544f52595f44455054486020657261732e1d0120496620746f74616c206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207374616b652069732072657475726e65642e20466f7263654572610100b10804000454204d6f6465206f662065726120666f7263696e672e4c536c6173685265776172644672616374696f6e01008d0110000000000cf8205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e00e4205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e4c43616e63656c6564536c6173685061796f757401001840000000000000000000000000000000000815012054686520616d6f756e74206f662063757272656e637920676976656e20746f207265706f7274657273206f66206120736c617368206576656e7420776869636820776173ec2063616e63656c65642062792065787472616f7264696e6172792063697263756d7374616e6365732028652e672e20676f7665726e616e6365292e40556e6170706c696564536c61736865730101040510b508040004c420416c6c20756e6170706c69656420736c61736865732074686174206172652071756575656420666f72206c617465722e28426f6e646564457261730100690404001025012041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e00c8204d75737420636f6e7461696e7320696e666f726d6174696f6e20666f72206572617320666f72207468652072616e67653abc20605b6163746976655f657261202d20626f756e64696e675f6475726174696f6e3b206163746976655f6572615d604c56616c696461746f72536c617368496e4572610001080505a108c508040008450120416c6c20736c617368696e67206576656e7473206f6e2076616c696461746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682070726f706f7274696f6e7020616e6420736c6173682076616c7565206f6620746865206572612e4c4e6f6d696e61746f72536c617368496e4572610001080505a10818040004610120416c6c20736c617368696e67206576656e7473206f6e206e6f6d696e61746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682076616c7565206f6620746865206572612e34536c617368696e675370616e730001040500c9080400048c20536c617368696e67207370616e7320666f72207374617368206163636f756e74732e245370616e536c617368010104057508cd08800000000000000000000000000000000000000000000000000000000000000000083d01205265636f72647320696e666f726d6174696f6e2061626f757420746865206d6178696d756d20736c617368206f6620612073746173682077697468696e206120736c617368696e67207370616e2cb82061732077656c6c20617320686f77206d7563682072657761726420686173206265656e2070616964206f75742e584561726c69657374556e6170706c696564536c617368000010040004fc20546865206561726c696573742065726120666f72207768696368207765206861766520612070656e64696e672c20756e6170706c69656420736c6173682e48536e617073686f7456616c696461746f72730000ec040008650120536e617073686f74206f662076616c696461746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e48536e617073686f744e6f6d696e61746f72730000ec040008650120536e617073686f74206f66206e6f6d696e61746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e34517565756564456c65637465640000d10804000c650120546865206e6578742076616c696461746f72207365742e2041742074686520656e64206f6620616e206572612c206966207468697320697320617661696c61626c652028706f74656e7469616c6c792066726f6d20746865610120726573756c74206f6620616e206f6666636861696e20776f726b6572292c20697420697320696d6d6564696174656c7920757365642e204f74686572776973652c20746865206f6e2d636861696e20656c656374696f6e342069732065786563757465642e2c51756575656453636f72650000ed06040004b0205468652073636f7265206f66207468652063757272656e74205b60517565756564456c6563746564605d2e44457261456c656374696f6e5374617475730100d508040008490120466c616720746f20636f6e74726f6c2074686520657865637574696f6e206f6620746865206f6666636861696e20656c656374696f6e2e205768656e20604f70656e285f29602c207765206163636570746c20736f6c7574696f6e7320746f206265207375626d69747465642e54497343757272656e7453657373696f6e46696e616c010019010400084d012054727565206966207468652063757272656e74202a2a706c616e6e65642a2a2073657373696f6e2069732066696e616c2e204e6f74652074686174207468697320646f6573206e6f742074616b65206572615820666f7263696e6720696e746f206163636f756e742e505065726d697373696f6e65644964656e74697479000104057cd908040004ec20456e74697469657320746861742061726520616c6c6f77656420746f2072756e206f70657261746f722f76616c696461746f72206e6f6465732e5856616c696461746f72436f6d6d697373696f6e43617001008d0110000000000415012045766572792076616c696461746f722068617320636f6d6d697373696f6e20746861742073686f756c6420626520696e207468652072616e6765205b302c204361705d2e504d696e696d756d426f6e645468726573686f6c64010018400000000000000000000000000000000004d020546865206d696e696d756d20616d6f756e74207769746820776869636820612076616c696461746f722063616e20626f6e642e48536c617368696e67416c6c6f776564466f72010091010402003853746f7261676556657273696f6e0100dd08040610cc2054727565206966206e6574776f726b20686173206265656e20757067726164656420746f20746869732076657273696f6e2e7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e00a020546869732069732073657420746f2076362e302e3120666f72206e6577206e6574776f726b732e0101060185012c3853657373696f6e735065724572611010030000000470204e756d626572206f662073657373696f6e7320706572206572612e3c426f6e64696e674475726174696f6e10100700000004e4204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e48536c61736844656665724475726174696f6e101004000000140101204e756d626572206f662065726173207468617420736c6173686573206172652064656665727265642062792c20616674657220636f6d7075746174696f6e2e00bc20546869732073686f756c64206265206c657373207468616e2074686520626f6e64696e67206475726174696f6e2e2d012053657420746f203020696620736c61736865732073686f756c64206265206170706c69656420696d6d6564696174656c792c20776974686f7574206f70706f7274756e69747920666f723820696e74657276656e74696f6e2e44456c656374696f6e4c6f6f6b616865616410104b0000001c710120546865206e756d626572206f6620626c6f636b73206265666f72652074686520656e64206f6620746865206572612066726f6d20776869636820656c656374696f6e207375626d697373696f6e732061726520616c6c6f7765642e006d012053657474696e67207468697320746f207a65726f2077696c6c2064697361626c6520746865206f6666636861696e20636f6d7075746520616e64206f6e6c79206f6e2d636861696e207365712d70687261676d656e2077696c6c2420626520757365642e007501205468697320697320626f756e646564206279206265696e672077697468696e20746865206c6173742073657373696f6e2e2048656e63652c2073657474696e6720697420746f20612076616c7565206d6f7265207468616e207468659c206c656e677468206f6620612073657373696f6e2077696c6c20626520706f696e746c6573732e344d6178497465726174696f6e7310100a0000000c2901204d6178696d756d206e756d626572206f662062616c616e63696e6720697465726174696f6e7320746f2072756e20696e20746865206f6666636861696e207375626d697373696f6e2e00ec2049662073657420746f20302c2062616c616e63655f736f6c7574696f6e2077696c6c206e6f7420626520657865637574656420617420616c6c2e504d696e536f6c7574696f6e53636f726542756d708d011020a1070004610120546865207468726573686f6c64206f6620696d70726f76656d656e7420746861742073686f756c642062652070726f766964656420666f722061206e657720736f6c7574696f6e20746f2062652061636365707465642e804d61784e6f6d696e61746f72526577617264656450657256616c696461746f7210100008000010f820546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320726577617264656420666f7220656163682076616c696461746f722e00690120466f7220656163682076616c696461746f72206f6e6c79207468652060244d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732063616e20636c61696d2101207468656972207265776172642e2054686973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e5c4d617856616c696461746f725065724964656e746974797d0210100905000cf4204d6178696d756d206e756d626572206f662076616c696461746f727320666f722065616368207065726d697373696f6e6564206964656e746974792e005901204d6178206e756d626572206f662076616c696461746f727320636f756e74203d20604d617856616c696461746f725065724964656e74697479202a2053656c663a3a76616c696461746f725f636f756e742829602e844d61785661726961626c65496e666c6174696f6e546f74616c49737375616e636518400080c6a47e8d03000000000000000000047101204d6178696d756d20616d6f756e74206f662060543a3a63757272656e63793a3a746f74616c5f69737375616e63652829602061667465722074686174206e6f6e2d696e666c6174656420726577617264732067657420706169642e444669786564596561726c79526577617264184000c0444a547f0000000000000000000004010120546f74616c2079656172207265776172647320746861742067657473207061696420647572696e6720666978656420726577617264207363686564756c652e2c4d696e696d756d426f6e64184040420f0000000000000000000000000004f0204d696e696d756d20616d6f756e74206f6620504f4c59582074686174206d75737420626520626f6e64656420666f722061206e657720626f6e642e01e10811204f6666656e63657301204f6666656e6365730c1c5265706f7274730001040524e508040004490120546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e58436f6e63757272656e745265706f727473496e6465780101080505e90865040400042901204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e485265706f72747342794b696e64496e64657801010405990128040018110120456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e00bc20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e004901204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f66690120646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e000195010000121c53657373696f6e011c53657373696f6e1c2856616c696461746f72730100ec0400047c205468652063757272656e7420736574206f662076616c696461746f72732e3043757272656e74496e646578010010100000000004782043757272656e7420696e646578206f66207468652073657373696f6e2e345175657565644368616e67656401001901040008390120547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f7273a420686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e285175657565644b6579730100ed080400083d012054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b657973e02077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e4844697361626c656456616c696461746f7273010039040400148020496e6469636573206f662064697361626c65642076616c696461746f72732e003d01205468652076656320697320616c77617973206b65707420736f7274656420736f20746861742077652063616e2066696e642077686574686572206120676976656e2076616c696461746f722069733d012064697361626c6564207573696e672062696e617279207365617263682e204974206765747320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e73642061206e657720736574206f66206964656e7469746965732e204e6578744b6579730001040500f9060400049c20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e204b65794f776e657200010405f50800040004090120546865206f776e6572206f662061206b65792e20546865206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e01f506019d010001fd081348417574686f72697479446973636f766572790000000000141c4772616e647061011c4772616e647061181453746174650100010904000490205374617465206f66207468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e676500000509040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000010040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c656400009d030400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e3043757272656e745365744964010020200000000000000000085d0120546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c697469657329c420696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e30536574496453657373696f6e00010405201004001059012041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e00b82054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e01010701a10104384d6178417574686f7269746965731010a0860100045c204d617820417574686f72697469657320696e20757365010d091528486973746f726963616c00000000001620496d4f6e6c696e650120496d4f6e6c696e651038486561727462656174416674657201001010000000002c1d012054686520626c6f636b206e756d6265722061667465722077686963682069742773206f6b20746f2073656e64206865617274626561747320696e207468652063757272656e74242073657373696f6e2e0025012041742074686520626567696e6e696e67206f6620656163682073657373696f6e20776520736574207468697320746f20612076616c756520746861742073686f756c642066616c6c350120726f7567686c7920696e20746865206d6964646c65206f66207468652073657373696f6e206475726174696f6e2e20546865206964656120697320746f206669727374207761697420666f721901207468652076616c696461746f727320746f2070726f64756365206120626c6f636b20696e207468652063757272656e742073657373696f6e2c20736f207468617420746865a820686561727462656174206c61746572206f6e2077696c6c206e6f74206265206e65636573736172792e00390120546869732076616c75652077696c6c206f6e6c79206265207573656420617320612066616c6c6261636b206966207765206661696c20746f2067657420612070726f7065722073657373696f6e2d012070726f677265737320657374696d6174652066726f6d20604e65787453657373696f6e526f746174696f6e602c2061732074686f736520657374696d617465732073686f756c642062650101206d6f7265206163637572617465207468656e207468652076616c75652077652063616c63756c61746520666f7220604865617274626561744166746572602e104b65797301001109040004d0205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e4852656365697665644865617274626561747300010805059d0319090400083d0120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206053657373696f6e496e6465786020616e64206041757468496e6465786020746fb02060577261707065724f70617175653c426f756e6465644f70617175654e6574776f726b53746174653e602e38417574686f726564426c6f636b730101080505a10810100000000008150120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206056616c696461746f7249643c543e6020746f20746865c8206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e012d0701b5010440556e7369676e65645072696f726974792020ffffffffffffffff10f0204120636f6e66696775726174696f6e20666f722062617365207072696f72697479206f6620756e7369676e6564207472616e73616374696f6e732e0015012054686973206973206578706f73656420736f20746861742069742063616e2062652074756e656420666f7220706172746963756c61722072756e74696d652c207768656eb4206d756c7469706c652070616c6c6574732073656e6420756e7369676e6564207472616e73616374696f6e732e012d09176052616e646f6d6e657373436f6c6c656374697665466c6970016052616e646f6d6e657373436f6c6c656374697665466c6970043852616e646f6d4d6174657269616c0100650404000c610120536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e2054686973610120697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f664420746865206f6c6465737420686173682e0000000018105375646f01105375646f040c4b657901000080000000000000000000000000000000000000000000000000000000000000000004842054686520604163636f756e74496460206f6620746865207375646f206b65792e014d0701d9010001310919144173736574011441737365747c1c5469636b65727301010402a03509840000000000000000000000000000000000000000000000000000000000000000000874205469636b657220726567697374726174696f6e2064657461696c732e7c20287469636b657229202d3e205469636b6572526567697374726174696f6e305469636b6572436f6e666967010069070800000870205469636b657220726567697374726174696f6e20636f6e6669672e9420287469636b657229202d3e205469636b6572526567697374726174696f6e436f6e66696718546f6b656e7301010402a03909c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008e02044657461696c73206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e050120287469636b657229202d3e205365637572697479546f6b656e2064657461696c73205b72657475726e73205365637572697479546f6b656e207374727563745d2841737365744e616d657301010402a0fd01040008ec204173736574206e616d65206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e6020287469636b657229202d3e206041737365744e616d65602442616c616e63654f6601010802063d0918400000000000000000000000000000000008b42054686520746f74616c206173736574207469636b65722062616c616e636520706572206964656e746974792e6420287469636b65722c2044494429202d3e2042616c616e63652c4964656e7469666965727301010402a0ed01040004b82041206d6170206f662061207469636b6572206e616d6520616e64206173736574206964656e746966696572732e50437573746f6d54797065496453657175656e63650100e90110000000000cc420546865206e65787420604173736574547970653a3a437573746f6d6020494420696e207468652073657175656e63652e00d0204e756d6265727320696e207468652073657175656e63652073746172742066726f6d203120726174686572207468616e20302e2c437573746f6d547970657301010405e90128040004f8204d61707320637573746f6d20617373657420747970652069647320746f20746865207265676973746572656420737472696e6720636f6e74656e74732e48437573746f6d5479706573496e76657273650101040228e901100000000004610120496e7665727365206d6170206f662060437573746f6d5479706573602c2066726f6d207265676973746572656420737472696e6720636f6e74656e747320746f20637573746f6d2061737365742074797065206964732e3046756e64696e67526f756e6401010402a0e1010400089c20546865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e60207469636b6572202d3e2066756e64696e6720726f756e6450497373756564496e46756e64696e67526f756e640101040241091840000000000000000000000000000000000811012054686520746f74616c2062616c616e636573206f6620746f6b656e732069737375656420696e20616c6c207265636f726465642066756e64696e6720726f756e64732e8c20287469636b65722c2066756e64696e6720726f756e6429202d3e2062616c616e63651846726f7a656e01010402a01901040008e82054686520736574206f662066726f7a656e2061737365747320696d706c656d656e7465642061732061206d656d62657273686970206d61702e3c207469636b6572202d3e20626f6f6c5c41737365744f776e65727368697052656c6174696f6e7301010806024509490904000888205469636b65727320616e6420746f6b656e206f776e656420627920612075736572842028757365722c207469636b657229202d3e2041737365744f776e657273686970384173736574446f63756d656e747301010802054d090502140000000000087c20446f63756d656e747320617474616368656420746f20616e2041737365747420287469636b65722c20646f635f696429202d3e20646f63756d656e74604173736574446f63756d656e7473496453657175656e636501010402a0010210000000000880205065722d7469636b657220646f63756d656e7420494420636f756e7465722e4c20287469636b657229202d3e20646f635f696438436c61737369635469636b65727300010402a05109040004f0205469636b657220726567697374726174696f6e2064657461696c73206f6e20506f6c796d61746820436c6173736963202f20457468657265756d2e4042616c616e63654f66417453636f7065010108060655091840000000000000000000000000000000000ccc2042616c616e636573206765742073746f726564206f6e20746865206261736973206f6620746865206053636f70654964602e9d01205269676874206e6f77206974206973206f6e6c792068656c7066756c20666f722074686520554920707572706f7365732062757420696e206675747572652069742063616e206265207573656420746f20646f206d697261636c6573206f6e2d636861696e2e88202853636f706549642c204964656e74697479496429203d3e2042616c616e63652e4041676772656761746542616c616e636501010802063d091840000000000000000000000000000000000825012053746f7265206167677265676174652062616c616e6365206f662074686f7365206964656e746974696573207468617420686173207468652073616d65206053636f70654964602e7820285469636b65722c2053636f7065496429203d3e2042616c616e63652e2453636f706549644f6601010802063d097c80000000000000000000000000000000000000000000000000000000000000000008dc20547261636b73207468652053636f70654964206f6620746865206964656e7469747920666f72206120676976656e207469636b65722e8420285469636b65722c204964656e74697479496429203d3e2053636f706549642e6444697361626c65496e766573746f72556e697175656e65737301010402a0190104001031012044656369646573207768657468657220696e766573746f7220756e697175656e65737320726571756972656d656e7420697320656e666f7263656420666f7220746869732061737365742e8c206066616c736560206d65616e73207468617420697420697320656e666f726365642e0040205469636b6572203d3e20626f6f6c2e4c41737365744d6574616461746156616c7565730001080205590935020400047c204d65746174646174612076616c75657320666f7220616e2061737365742e6441737365744d6574616461746156616c756544657461696c73000108020559093d02040004a02044657461696c7320666f7220616e2061737365742773204d657461646174612076616c7565732e6c41737365744d657461646174614c6f63616c4e616d65546f4b657900010802025d09490204000488204173736574204d65746164617461204c6f63616c204e616d65202d3e204b65792e7041737365744d65746164617461476c6f62616c4e616d65546f4b657900010402450265020400048c204173736574204d6574616461746120476c6f62616c204e616d65202d3e204b65792e6c41737365744d657461646174614c6f63616c4b6579546f4e616d6500010802056109450204000488204173736574204d65746164617461204c6f63616c204b6579202d3e204e616d652e7041737365744d65746164617461476c6f62616c4b6579546f4e616d6500010405650245020400048c204173736574204d6574616461746120476c6f62616c204b6579202d3e204e616d652e5c41737365744d657461646174614c6f63616c5370656373000108020561094d0204000480204173736574204d65746164617461204c6f63616c204b65792073706563732e6041737365744d65746164617461476c6f62616c53706563730001040565024d0204000484204173736574204d6574616461746120476c6f62616c204b65792073706563732e6441737365744d657461646174614e6578744c6f63616c4b657901010402a04902200000000000000000047c204e657874204173736574204d65746164617461204c6f63616c204b65792e6841737365744d657461646174614e657874476c6f62616c4b6579010065022000000000000000000480204e657874204173736574204d6574616461746120476c6f62616c204b65792e3853746f7261676556657273696f6e01006509040004442053746f726167652076657273696f6e2e01510701dd0118784d61784e756d6265724f66544d457874656e73696f6e466f724173736574101005000000004841737365744e616d654d61784c656e677468101080000000006446756e64696e67526f756e644e616d654d61784c656e677468101080000000006841737365744d657461646174614e616d654d61784c656e677468101000010000006c41737365744d6574616461746156616c75654d61784c656e677468101000200000007441737365744d65746164617461547970654465664d61784c656e677468101000200000000169091a4c4361706974616c446973747269627574696f6e014c4361706974616c446973747269627574696f6e0c34446973747269627574696f6e73000104027102790204000c350120416c6c206361706974616c20646973747269627574696f6e732c207469656420746f207468656972207265737065637469766520636f72706f7261746520616374696f6e732028434173292e005c20284341496429203d3e20446973747269627574696f6e28486f6c64657250616964010104026d09190104000c8c2048617320616e20617373657420686f6c646572206265656e2070616964207965743f00a42028434149642c2044494429202d3e2057617320444944207061696420696e2074686520434149643f3853746f7261676556657273696f6e01007109040004442053746f726167652076657273696f6e2e017107016902000175091b28436865636b706f696e740128436865636b706f696e742c2c546f74616c537570706c79010108020579091840000000000000000000000000000000000cb420546f74616c20737570706c79206f662074686520746f6b656e2061742074686520636865636b706f696e742e00ec20287469636b65722c20636865636b706f696e74496429202d3e20746f74616c20737570706c7920617420676976656e20636865636b706f696e741c42616c616e636501010802057d091840000000000000000000000000000000000c882042616c616e6365206f66206120444944206174206120636865636b706f696e742e00050120287469636b65722c206469642c20636865636b706f696e7420494429202d3e2042616c616e6365206f66206120444944206174206120636865636b706f696e7450436865636b706f696e74496453657175656e636501010402a08902200000000000000000108c20436865636b706f696e74732049442067656e657261746f722073657175656e63652ea8204944206f6620666972737420636865636b706f696e74206973203120696e7374656164206f6620302e007c20287469636b657229202d3e206e6f2e206f6620636865636b706f696e74733842616c616e63655570646174657301010802053d098109040008bc20436865636b706f696e747320776865726520612044494427732062616c616e63652077617320757064617465642ef020287469636b65722c2064696429202d3e205b636865636b706f696e7420494420776865726520757365722062616c616e6365206368616e6765645d2854696d657374616d70730101080205790920200000000000000000185c20436865636b706f696e742074696d657374616d70732e000901204576657279207363686564756c652d6f726967696e6174656420636865636b706f696e74206d6170732069747320494420746f20697473206475652074696d652e210120457665727920636865636b706f696e74206d616e75616c6c792063726561746564206d6170732069747320494420746f207468652074696d65206f66207265636f7264696e672e00d020287469636b657229202d3e2028636865636b706f696e7420494429202d3e20636865636b706f696e742074696d657374616d70585363686564756c65734d6178436f6d706c657869747901002020000000000000000008190120546865206d6178696d756d20636f6d706c657869747920616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365749c2028692e652e20605363686564756c6573602073746f72616765206974656d2062656c6f77292e485363686564756c65496453657175656e636501010402a09d022000000000000000000cb420436865636b706f696e74207363686564756c652049442073657175656e636520666f72207469636b6572732e006020287469636b657229202d3e207363686564756c65204944245363686564756c657301010402a0850904000c8820436865636b706f696e74207363686564756c657320666f72207469636b6572732e005c20287469636b657229202d3e205b7363686564756c655d405363686564756c65526566436f756e740101080205890910100000000020010120486f77206d616e7920227374726f6e6722207265666572656e6365732061726520746865726520746f206120676976656e20605363686564756c654964603f00fc205468652070726573656e6365206f66206120227374726f6e6722207265666572656e63652c20696e207468652073656e7365206f66206052633c543e602ce020656e7461696c73207468617420746865207265666572656e636564207363686564756c652063616e6e6f742062652072656d6f7665642ed820546875732c206173206c6f6e6720617320607374726f6e675f7265665f636f756e74287363686564756c655f696429203e2030602cac206072656d6f76655f7363686564756c65287363686564756c655f696429602077696c6c206572726f722e00a820287469636b65722c207363686564756c6520494429202d3e207374726f6e672072656620636f756e74385363686564756c65506f696e747301010802058909810904000cc420416c6c2074686520636865636b706f696e7473206120676976656e207363686564756c65206f726967696e617465642e00a420287469636b65722c207363686564756c6520494429202d3e205b636865636b706f696e742049445d3853746f7261676556657273696f6e01008d09040004442053746f726167652076657273696f6e2e017907018102000191091c44436f6d706c69616e63654d616e616765720144436f6d706c69616e63654d616e616765720c404173736574436f6d706c69616e63657301010402a0950908000004e820417373657420636f6d706c69616e636520666f722061207469636b657220285469636b6572202d3e204173736574436f6d706c69616e6365294854727573746564436c61696d49737375657201010402a0bd02040004dc204c697374206f66207472757374656420636c61696d20697373756572205469636b6572202d3e20497373756572204964656e746974793853746f7261676556657273696f6e01009909040004442053746f726167652076657273696f6e2e01810701a10204584d6178436f6e646974696f6e436f6d706c657869747910103200000000019d091d3c436f72706f72617465416374696f6e013c436f72706f72617465416374696f6e24404d617844657461696c734c656e67746801001010000000001c5d012044657465726d696e657320746865206d6178696d756d206e756d626572206f6620627974657320746861742074686520667265652d666f726d206064657461696c7360206f6620612043412063616e2073746f72652e002901204e6f746520746861742074686973206973206e6f7420746865206e756d626572206f662060636861726073206f7220746865206e756d626572206f66205b6772617068656d65735d2e4101205768696c652074686973206d617920626520756e6e61747572616c20696e207465726d73206f662068756d616e20756e6465727374616e64696e67206f66206120746578742773206c656e6774682c6501206974206d6f726520636c6f73656c79207265666c656374732061637475616c2073746f7261676520636f73747320286027612760206973206368656170657220746f2073746f7265207468616e20616e20656d6f6a69292e00d0205b6772617068656d65735d3a2068747470733a2f2f656e2e77696b6970656469612e6f72672f77696b692f4772617068656d655c44656661756c745461726765744964656e74697469657301010402a0d90208000110f020546865206964656e7469746965732074617267657465642062792064656661756c7420666f722043417320666f722074686973207469636b65722c8c2065697468657220746f206265206578636c75646564206f7220696e636c756465642e007820287469636b6572203d3e20746172676574206964656e746974696573295444656661756c7457697468686f6c64696e6754617801010402a07d02100000000020ad01205468652064656661756c7420616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722074686973207469636b6572207768656e20646973747269627574696e67206469766964656e64732e00350120546f20756e6465727374616e642077697468686f6c64696e67207461782c20652e672e2c206c6574277320617373756d65207468617420796f7520686f6c642041434d45207368617265732ec42041434d45206e6f77206465636964657320746f2064697374726962757465203130302053454b20746f20416c6963652e590120416c696365206c6976657320696e2053776564656e2c20736f20536b617474657665726b6574202874686520537765646973682074617820617574686f72697479292077616e747320333025206f6620746861742e5d01205468656e2074686f736520313030202a2033302520617265207769746868656c642066726f6d20416c6963652c20616e642041434d452077696c6c2073656e64207468656d20746f20536b617474657665726b65742e006820287469636b6572203d3e202520746f2077697468686f6c64294444696457697468686f6c64696e6754617801010402a0f90204001049012054686520616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722061206365727461696e207469636b65722078204449442e6d0120496620616e20656e7472792065786973747320666f722061206365727461696e204449442c206974206f7665727269646573207468652064656661756c7420696e206044656661756c7457697468686f6c64696e67546178602e008820287469636b6572203d3e205b286469642c202520746f2077697468686f6c64295d304341496453657175656e636501010402a07502100000000008b420546865206e657874207065722d605469636b65726020434120494420696e207468652073657175656e63652e4d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652e40436f72706f72617465416374696f6e730001080205a109e5020400146c20416c6c207265636f72646564204341732074687573206661722ea4204f6e6c792067656e6572696320696e666f726d6174696f6e2069732073746f72656420686572652e7d01205370656369666963206043414b696e6460732c20652e672e2c2062656e656669747320616e6420636f72706f726174652062616c6c6f74732c206d617920757365206164646974696f6e616c206f6e2d636861696e2073746f726167652e00b420287469636b6572203d3e206c6f63616c204944203d3e2074686520636f72706f7261746520616374696f6e29244341446f634c696e6b0101040271020503040014d0204173736f63696174696f6e732066726f6d2043417320746f2060446f63756d656e74607320766961207468656972204944732e5c202843414964203d3e205b446f63756d656e7449645d29000501205468652060436f72706f72617465416374696f6e7360206d61702073746f72657320605469636b6572203d3e204c6f63616c4964203d3e20546865204341602c250120736f2077652063616e20696e66657220605469636b6572203d3e2043414964602e205468657265666f72652c20776520646f6e2774206e656564206120646f75626c65206d61702e1c44657461696c730101040271020103040008e8204173736f6369617465732064657461696c7320696e20667265652d666f726d207465787420776974682061204341206279206974732049442e50202843414964203d3e20434144657461696c73293853746f7261676556657273696f6e0100a509040004442053746f726167652076657273696f6e2e01850701d50208304d61785461726765744964731010e803000000284d6178446964576874731010e80300000001a9091e3c436f72706f7261746542616c6c6f74013c436f72706f7261746542616c6c6f7418144d65746173000104027102110304000c80204d65746164617461206f66206120636f72706f726174652062616c6c6f742e005420284341496429203d3e2042616c6c6f744d6574612854696d6552616e6765730001040271020d03040010e42054696d652064657461696c73206f66206120636f72706f726174652062616c6c6f74206173736f636961746564207769746820612043412ed0205468652074696d657374616d70732064656e6f7465207768656e20766f74696e672073746172747320616e642073746f70732e006820284341496429203d3e2042616c6c6f7454696d6552616e6765404d6f74696f6e4e756d43686f696365730101040271021d06040024c82053746f72657320686f77206d616e792063686f696365732074686572652061726520696e2065616368206d6f74696f6e2e00250120417420616c6c2074696d65732c2074686520696e76617269616e7420686f6c6473207468617420606d6f74696f6e5f63686f696365735b6964785d6020697320657175616c20746f310120606d657461732e756e7772617028292e6d6f74696f6e735b6964785d2e63686f696365732e6c656e2829602e20546861742069732c2074686973206973206a75737420612063616368652c1101207573656420746f2061766f6964206665746368696e6720616c6c20746865206d6f74696f6e732077697468207468656972206173736f6369617465642074657874732e0001012060753136602063686f696365732073686f756c64206265206d6f7265207468616e20656e6f75676820746f20666974207265616c207573652063617365732e00b020284341496429203d3e204e756d626572206f662063686f6963657320696e2065616368206d6f74696f6e2e0c5243560101040271021901040010dc2049732072616e6b65642063686f69636520766f74696e6720285243562920656e61626c656420666f7220746869732062616c6c6f743f650120466f7220616e20756e6465727374616e64696e67206f6620686f77205243562069732068616e646c65642c20736565206e6f7465206f6e206042616c6c6f74566f7465602773206066616c6c6261636b60206669656c642e003c20284341496429203d3e20626f6f6c1c526573756c7473010104027102ad0904001cb02053746f7265732074686520746f74616c20766f74652074616c6c79206f6e20656163682063686f6963652e006820524356206973206e6f74206163636f756e74656420666f722cd02061732074686572652061726520746f6f206d616e792077616e747320746f20696e74657270726574207468652067726170682c9c20616e64206265636175736520697420776f756c64206e6f7420626520656666696369656e742e008420284341496429203d3e205b63757272656e7420766f746520776569676874735d14566f74657301010802066d093103040018ac2053746f726573206561636820444944277320766f74657320696e206120676976656e2062616c6c6f742ef8205365652074686520646f63756d656e746174696f6e206f66206042616c6c6f74566f74656020666f72206e6f746573206f6e2073656d616e746963732e008420284341496429203d3e202844494429203d3e205b766f7465207765696768745d001d012055736572206d75737420656e746572203020766f746520776569676874206966207468657920646f6e27742077616e7420746f20766f746520666f7220612063686f6963652e019d070109030001b1091f2c5065726d697373696f6e730000000001b509201050697073011050697073544c5072756e65486973746f726963616c5069707301001901040004fc2044657465726d696e6573207768657468657220686973746f726963616c20504950206461746120697320706572736973746564206f722072656d6f766564584d696e696d756d50726f706f73616c4465706f7369740100184000000000000000000000000000000000041d0120546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f7220636f6d6d756e69747920504950206372656174696f6e2e5844656661756c74456e6163746d656e74506572696f6401001010000000000439012044656661756c7420656e6163746d656e7420706572696f6420746861742077696c6c2062652075736520616674657220612070726f706f73616c2069732061636365707465642062792047432e4050656e64696e6750697045787069727901003901040108f420486f77206d616e7920626c6f636b732077696c6c2069742074616b652c2061667465722061206050656e64696e67602050495020657870697265732cf420617373756d696e6720697420686173206e6f74207472616e736974696f6e656420746f20616e6f74686572206050726f706f73616c5374617465603f3c4d6178506970536b6970436f756e740100080400048901204d6178696d756d2074696d65732061205049502063616e20626520736b6970706564206265666f72652074726967676572696e67206043616e6e6f74536b69705069706020696e2060656e6163745f736e617073686f745f726573756c7473602e384163746976655069704c696d6974010010100000000008c420546865206d6178696d756d20616c6c6f776564206e756d62657220666f722060416374697665506970436f756e74602e0101204f6e636520726561636865642c206e657720504950732063616e6e6f742062652070726f706f73656420627920636f6d6d756e697479206d656d626572732e34506970496453657175656e636501004d0310000000000409012050726f706f73616c7320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f662050495073206f66662d636861696e2e48536e617073686f74496453657175656e6365010061031000000000041d0120536e617073686f747320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f6620736e617073686f7473206f66662d636861696e2e38416374697665506970436f756e74010010100000000004c820546f74616c20636f756e74206f662063757272656e742070656e64696e67206f72207363686564756c656420504950732e4050726f706f73616c4d65746164617461000104054d03b9090400049820546865206d65746164617461206f6620746865206163746976652070726f706f73616c732e204465706f736974730101080505bd09c109c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008842054686f73652077686f2068617665206c6f636b65642061206465706f7369742e8c2070726f706f73616c202869642c2070726f706f73657229202d3e206465706f7369742450726f706f73616c73000104054d03c509040008c42041637475616c2070726f706f73616c20666f72206120676976656e2069642c20696620697427732063757272656e742e602070726f706f73616c206964202d3e2070726f706f73616c3850726f706f73616c526573756c74010104054d03c909a00000000000000000000000000000000000000000000000000000000000000000000000000000000008d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e682070726f706f73616c206964202d3e20766f746520636f756e743450726f706f73616c566f7465730001080505bd09cd09040008050120566f746573207065722050726f706f73616c20616e64206163636f756e742e205573656420746f2061766f696420646f75626c6520766f74652069737375652e7c202870726f706f73616c2069642c206163636f756e7429202d3e20566f746534506970546f5363686564756c65000104054d0310040004fc204d617073205049507320746f2074686520626c6f636b20617420776869636820746865792077696c6c2062652065786563757465642c20696620616e792e244c697665517565756501006503040018cc2041206c697665207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029a0206f662070656e64696e67205049507320757020746f2074686520616374697665206c696d69742ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e00450120556e6c696b652060536e617073686f745175657565602c2074686973207175657565206973206c6976652c2067657474696e6720757064617465642077697468206561636820766f746520636173742e2d012054686520736e617073686f74206973207468657265666f726520657373656e7469616c6c79206120706f696e742d696e2d74696d6520636c6f6e65206f6620746869732071756575652e34536e617073686f74517565756501006503040014590120546865207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029206f6620504950732061742074686520706f696e74206f6620736e617073686f7474696e672ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e000901204120717565756564205049502063616e20626520736b69707065642e20446f696e6720736f2062756d70732074686520607069705f736b69705f636f756e74602e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e30536e617073686f744d6574610000d109040004bc20546865206d65746164617461206f662074686520736e617073686f742c206966207468657265206973206f6e652e30506970536b6970436f756e74010104054d0308040008d020546865206e756d626572206f662074696d65732061206365727461696e2050495020686173206265656e20736b69707065642e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e34436f6d6d69747465655069707301007d03040008d420416c6c206578697374696e672050495073207768657265207468652070726f706f736572206973206120636f6d6d69747465652e39012054686973206c6973742069732061206361636865206f6620616c6c2069647320696e206050726f706f73616c73602077697468206050726f706f7365723a3a436f6d6d6974746565285f29602e3853746f7261676556657273696f6e0100d50904000001a1070141030001d9092124506f7274666f6c696f0124506f7274666f6c696f244c4e657874506f7274666f6c696f4e756d626572010104067ce020010000000000000004cc20546865206e65787420706f7274666f6c696f2073657175656e6365206e756d626572206f6620616e206964656e746974792e28506f7274666f6c696f730101080605dd09850304000c41012054686520736574206f66206578697374696e6720706f7274666f6c696f732077697468207468656972206e616d65732e2049662061206365727461696e2070616972206f6620612044494420616e64590120706f7274666f6c696f206e756d626572206d61707320746f20604e6f6e6560207468656e2073756368206120706f7274666f6c696f20646f65736e27742065786973742e20436f6e76657273656c792c206966206135012070616972206d61707320746f2060536f6d65286e616d652960207468656e2073756368206120706f7274666f6c696f2065786973747320616e642069732063616c6c656420606e616d65602e304e616d65546f4e756d6265720101080602e109e020010000000000000008e420496e7665727365206d6170206f662060506f7274666f6c696f7360207573656420746f20656e737572652062696a6563746976697469792ca420616e6420756e697175656e657373206f66206e616d657320696e2060506f7274666f6c696f73602e4c506f7274666f6c696f4173736574436f756e7401010405d82020000000000000000004fc20486f77206d616e79206173736574732077697468206e6f6e2d7a65726f2062616c616e6365207468697320706f7274666f6c696f20636f6e7461696e732e58506f7274666f6c696f417373657442616c616e6365730101080502e5091840000000000000000000000000000000000488205468652061737365742062616c616e636573206f6620706f7274666f6c696f732e54506f7274666f6c696f4c6f636b65644173736574730101080502e50918400000000000000000000000000000000008a020416d6f756e74206f6620617373657473206c6f636b656420696e206120706f7274666f6c696f2e2d01205468657365206173736574732073686f7720757020696e20706f7274666f6c696f2062616c616e6365206275742063616e206e6f74206265207472616e7366657272656420617761792e48506f7274666f6c696f437573746f6469616e00010405d87c04000481012054686520637573746f6469616e206f66206120706172746963756c617220706f7274666f6c696f2e204e6f6e6520696d706c696573207468617420746865206964656e74697479206f776e65722069732074686520637573746f6469616e2e4c506f7274666f6c696f73496e437573746f64790101080605e909190104000c550120547261636b7320616c6c2074686520706f7274666f6c696f7320696e20637573746f6479206f66206120706172746963756c6172206964656e746974792e204f6e6c79207573656420627920746865205549732ea501205768656e206074727565602069732073746f726564206173207468652076616c756520666f72206120676976656e2060286469642c2070696429602c206974206d65616e73207468617420607069646020697320696e20637573746f6479206f662060646964602ea501206066616c7365602076616c75657320617265206e65766572206578706c696369746c792073746f72656420696e20746865206d61702c20616e642061726520696e737465616420696e6665727265642062792074686520616273656e6365206f662061206b65792e3853746f7261676556657273696f6e0100ed09040004442053746f726167652076657273696f6e2e01b1070181030001f109222c50726f746f636f6c466565012c50726f746f636f6c4665650820426173654665657301010405c10718400000000000000000000000000000000004150120546865206d617070696e67206f66206f7065726174696f6e206e616d657320746f2074686520626173652066656573206f662074686f7365206f7065726174696f6e732e2c436f656666696369656e7401009503200100000001000000041501205468652066656520636f656666696369656e74206173206120706f73697469766520726174696f6e616c20286e756d657261746f722c2064656e6f6d696e61746f72292e01bd070191030001f50923245363686564756c657201245363686564756c65720c184167656e64610101040510f9090400044d01204974656d7320746f2062652065786563757465642c20696e64657865642062792074686520626c6f636b206e756d626572207468617420746865792073686f756c64206265206578656375746564206f6e2e184c6f6f6b757000010405289d030400040101204c6f6f6b75702066726f6d206964656e7469747920746f2074686520626c6f636b206e756d62657220616e6420696e646578206f6620746865207461736b2e3853746f7261676556657273696f6e01001d0a04000c7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e0098204e6577206e6574776f726b732073746172742077697468206c6173742076657273696f6e2e01c50701990308344d6178696d756d576569676874202000806e877401000008450120546865206d6178696d756d207765696768742074686174206d6179206265207363686564756c65642070657220626c6f636b20666f7220616e7920646973706174636861626c6573206f66206c657373a4207072696f72697479207468616e20607363686564756c653a3a484152445f444541444c494e45602e504d61785363686564756c6564506572426c6f636b101032000000081d0120546865206d6178696d756d206e756d626572206f66207363686564756c65642063616c6c7320696e2074686520717565756520666f7220612073696e676c6520626c6f636b2edc204e6f74207374726963746c7920656e666f726365642c20627574207573656420666f722077656967687420657374696d6174696f6e2e01210a2428536574746c656d656e740128536574746c656d656e74442456656e7565496e666f00010405a503250a0400049820496e666f2061626f757420612076656e75652e2076656e75655f6964202d3e2076656e75651c44657461696c7301010405a503a903040008e420467265652d666f726d20746578742061626f757420612076656e75652e2076656e75655f6964202d3e206056656e756544657461696c736060204f6e6c79206e656564656420666f72207468652055492e4456656e7565496e737472756374696f6e730101080505290a350100107020496e737472756374696f6e7320756e64657220612076656e75652e60204f6e6c79206e656564656420666f72207468652055492e00842076656e75655f6964202d3e20696e737472756374696f6e5f6964202d3e2028293056656e75655369676e65727301010805052d0a1901040004e4205369676e65727320616c6c6f776564206279207468652076656e75652e202876656e75655f69642c207369676e657229202d3e20626f6f6c285573657256656e756573010104057cc9030400047101204172726179206f662076656e756573206372656174656420627920616e206964656e746974792e204f6e6c79206e656564656420666f72207468652055492e204964656e746974794964202d3e205665633c76656e75655f69643e48496e737472756374696f6e44657461696c7301010405b103310a540000000000000000000000000000000000000000000411012044657461696c732061626f757420616e20696e737472756374696f6e2e20696e737472756374696f6e5f6964202d3e20696e737472756374696f6e5f64657461696c733c496e737472756374696f6e4c6567730101080505390abd0379010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ec204c65677320756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656750496e737472756374696f6e4c65675374617475730101080505390a3d0a040004310120537461747573206f662061206c656720756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656753746174757364496e737472756374696f6e41666669726d7350656e64696e6701010405b10320200000000000000000048101204e756d626572206f662061666669726d6174696f6e732070656e64696e67206265666f726520696e737472756374696f6e2069732065786563757465642e20696e737472756374696f6e5f6964202d3e2061666669726d5f70656e64696e673c41666669726d7352656365697665640101080505410a450a040004990120547261636b732061666669726d6174696f6e7320726563656976656420666f7220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c20636f756e7465725f706172747929202d3e2041666669726d6174696f6e537461747573405573657241666669726d6174696f6e730101080505490a450a04000855012048656c70732061207573657220747261636b2074686569722070656e64696e6720696e737472756374696f6e7320616e642061666669726d6174696f6e7320286f6e6c79206e656564656420666f72205549292ed42028636f756e7465725f70617274792c20696e737472756374696f6e5f696429202d3e2041666669726d6174696f6e53746174757330526563656970747355736564010108050259081901040004150120547261636b7320726564656d7074696f6e206f662072656365697074732e20287369676e65722c20726563656970745f75696429202d3e20726563656970745f757365643856656e756546696c746572696e6701010402a01901040004fd0120547261636b73206966206120746f6b656e2068617320656e61626c65642066696c746572696e672076656e75657320746861742063616e2063726561746520696e737472756374696f6e7320696e766f6c76696e6720746865697220746f6b656e2e205469636b6572202d3e2066696c746572696e675f656e61626c65643856656e7565416c6c6f774c69737401010802054d0a1901040008c5012056656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c6172207469636b65722e204f6e6c7920757365642069662066696c746572696e6720697320656e61626c65642e7820287469636b65722c2076656e75655f696429202d3e20616c6c6f7765643056656e7565436f756e7465720100a503200000000000000000041901204e756d626572206f662076656e75657320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d6265722948496e737472756374696f6e436f756e7465720100b103200000000000000000043101204e756d626572206f6620696e737472756374696f6e7320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d626572293853746f7261676556657273696f6e0100510a040004442053746f726167652076657273696f6e2e01cd0701a1030001550a25285374617469737469637301285374617469737469637314404163746976654173736574537461747301010402d103e507040004d1012041637469766520737461747320666f722061207469636b65722f636f6d70616e792e202054686572652073686f756c642062652061206d6178206c696d6974206f6e20746865206e756d626572206f662061637469766520737461747320666f722061207469636b65722f636f6d70616e792e28417373657453746174730101080202590a18400000000000000000000000000000000004342041737365742073746174732e6041737365745472616e73666572436f6d706c69616e63657301010402d103610a080000043d01204173736574207472616e7366657220636f6d706c69616e636520666f722061207469636b65722028417373657453636f7065202d3e2041737365745472616e73666572436f6d706c69616e6365297c5472616e73666572436f6e646974696f6e4578656d7074456e7469746965730101080202650a1901040004c420456e746974696573206578656d70742066726f6d2061205472616e7366657220436f6d706c69616e63652072756c652e3853746f7261676556657273696f6e0100690a0400046c2053746f72616765206d6967726174696f6e2076657273696f6e2e01e10701cd0308404d61785374617473506572417373657410100a00000000744d61785472616e73666572436f6e646974696f6e73506572417373657410100400000000016d0a260c53746f010c53746f0c2c46756e64726169736572730001080205710a2104040008b020416c6c2066756e64726169736572732074686174206172652063757272656e746c792072756e6e696e672e9820287469636b65722c2066756e647261697365725f696429202d3e2046756e647261697365723c46756e64726169736572436f756e7401010402a01904200000000000000000049c20546f74616c2066756e6472616973657273206372656174656420666f72206120746f6b656e2e3c46756e647261697365724e616d65730101080205710a1d04040008b4204e616d6520666f72207468652046756e647261697365722e204f6e6c792075736564206f6666636861696e2eac20287469636b65722c2066756e647261697365725f696429202d3e2046756e64726169736572206e616d6501f5070115040001750a27205472656173757279000105080131040001790a281c5574696c697479011c5574696c69747904184e6f6e6365730101040500202000000000000000000001110801350400017d0a29104261736500011d0801450404184d61784c656e1010000800000001810a2a3845787465726e616c4167656e7473013845787465726e616c4167656e747314304147496453657175656e636501010402a01501100000000010b420546865206e657874207065722d605469636b65726020414720494420696e207468652073657175656e63652e004d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652c90207768696368207374617274732066726f6d20312c20726174686572207468616e20302e1c4167656e744f6601010802024509350100042901204d61707320616e206167656e742028604964656e746974794964602920746f20616c6c20616c6c20605469636b6572607320746865792062656c6f6e6720746f2c20696620616e792e3047726f75704f664167656e7400010802053d0911010400043501204d617073206167656e74732028604964656e746974794964602920666f72206120605469636b65726020746f207768617420414720746865792062656c6f6e6720746f2c20696620616e792e344e756d46756c6c4167656e747301010402a010100000000004dc204d617073206120605469636b65726020746f20746865206e756d626572206f66206046756c6c60206167656e747320666f722069742e4047726f75705065726d697373696f6e730001080205850ab00400045d0120466f7220637573746f6d20414773206f66206120605469636b6572602c206d61707320746f2077686174207065726d697373696f6e7320616e206167656e7420696e207468617420414720776f756c6420686176652e012108014d040001890a2b1c52656c61796572011c52656c61796572042453756273696469657300010402008d0a040018ec20546865207375627369647920666f7220612060757365725f6b657960206966207468657920617265206265696e6720737562736964697365642c882061732061206d61702060757365725f6b657960203d3e206053756273696479602e0009012041206b65792063616e206f6e6c792068617665206f6e65207375627369647920617420612074696d652e2020546f206368616e67652073756273696469736572731d012061206b6579206e6565647320746f2063616c6c206072656d6f76655f706179696e675f6b65796020746f2072656d6f7665207468652063757272656e7420737562736964792ca4206265666f726520746865792063616e206163636570742061206e657720737562736964697365722e0125080151040001910a2c1c52657761726473011c52657761726473042849746e5265776172647300010402002d080400040101204d6170206f66202849746e204164647265737320604163636f756e7449646029202d3e2028526577617264206049746e52657761726453746174757360292e0129080155040001950a2d24546573745574696c730124546573745574696c73000131080159040001990a329d0a042040436865636b5370656356657273696f6ea50a1038436865636b547856657273696f6ea90a1030436865636b47656e65736973ad0a2438436865636b4d6f7274616c697479b10a2428436865636b4e6f6e6365b90a35012c436865636b576569676874bd0a3501604368617267655472616e73616374696f6e5061796d656e74c50a35014453746f726543616c6c4d65746164617461c90a3501cd0a","id":"1"} +{"jsonrpc":"2.0","result":"0x6d6574610edd0a000c1c73705f636f72651863727970746f2c4163636f756e7449643332000004000401205b75383b2033325d0000040000032000000008000800000503000c08306672616d655f73797374656d2c4163636f756e74496e666f0814496e64657801102c4163636f756e74446174610114001401146e6f6e6365100114496e646578000124636f6e73756d657273100120526566436f756e7400012470726f766964657273100120526566436f756e7400012c73756666696369656e7473100120526566436f756e740001106461746114012c4163636f756e74446174610000100000050500141064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e6365732c4163636f756e744461746100001001106672656518011c42616c616e6365000120726573657276656418011c42616c616e636500012c6d6973635f66726f7a656e18011c42616c616e63650001286665655f66726f7a656e18011c42616c616e636500001800000507001c0c346672616d655f737570706f72741c77656967687473405065724469737061746368436c6173730404540120000c01186e6f726d616c2001045400012c6f7065726174696f6e616c200104540001246d616e6461746f727920010454000020000005060024083c7072696d69746976655f74797065731048323536000004000401205b75383b2033325d00002800000208002c102873705f72756e74696d651c67656e6572696318646967657374184469676573740410486173680124000401106c6f67733001545665633c4469676573744974656d3c486173683e3e000030000002340034102873705f72756e74696d651c67656e6572696318646967657374284469676573744974656d0410486173680124011c3c4368616e67657354726965526f6f740400240110486173680002002850726552756e74696d650800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e00060024436f6e73656e7375730800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e000400105365616c0800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e000500444368616e676573547269655369676e616c04003c01444368616e676573547269655369676e616c000700144f74686572040028011c5665633c75383e0000006452756e74696d65456e7669726f6e6d656e745570646174656400080000380000030400000008003c102873705f72756e74696d651c67656e6572696318646967657374444368616e676573547269655369676e616c000104404e6577436f6e66696775726174696f6e04004001804f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e000000004004184f7074696f6e04045401440108104e6f6e6500000010536f6d650400440000010000440c1c73705f636f7265306368616e6765735f74726965604368616e67657354726965436f6e66696775726174696f6e000008013c6469676573745f696e74657276616c10010c7533320001346469676573745f6c6576656c7310010c7533320000480000024c004c08306672616d655f73797374656d2c4576656e745265636f7264080445015004540124000c011470686173656104011450686173650001146576656e7450010445000118746f70696373650401185665633c543e0000500c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d65144576656e7400019c1853797374656d04005401706672616d655f73797374656d3a3a4576656e743c52756e74696d653e0000001c496e6469636573040070017870616c6c65745f696e64696365733a3a4576656e743c52756e74696d653e0003002042616c616e636573040074017c70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d653e000500204964656e7469747904008c017c70616c6c65745f6964656e746974793a3a4576656e743c52756e74696d653e0007004c4364645365727669636550726f76696465727304001d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365323e00080044506f6c796d657368436f6d6d69747465650400290101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365313e0009004c436f6d6d69747465654d656d6265727368697004003d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365313e000a0048546563686e6963616c436f6d6d69747465650400450101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365333e000b0070546563686e6963616c436f6d6d69747465654d656d6265727368697004004d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365333e000c004055706772616465436f6d6d69747465650400550101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365343e000d006855706772616465436f6d6d69747465654d656d6265727368697004005d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365343e000e00204d756c746953696704006501017c70616c6c65745f6d756c74697369673a3a4576656e743c52756e74696d653e000f001842726964676504007101017470616c6c65745f6272696467653a3a4576656e743c52756e74696d653e0010001c5374616b696e6704008501017870616c6c65745f7374616b696e673a3a4576656e743c52756e74696d653e001100204f6666656e63657304009501015870616c6c65745f6f6666656e6365733a3a4576656e740012001c53657373696f6e04009d01015470616c6c65745f73657373696f6e3a3a4576656e740013001c4772616e6470610400a101015470616c6c65745f6772616e6470613a3a4576656e7400150020496d4f6e6c696e650400b501018070616c6c65745f696d5f6f6e6c696e653a3a4576656e743c52756e74696d653e001700105375646f0400d901016c70616c6c65745f7375646f3a3a4576656e743c52756e74696d653e0019001441737365740400dd01017070616c6c65745f61737365743a3a4576656e743c52756e74696d653e001a004c4361706974616c446973747269627574696f6e04006902018870616c6c65745f6361706974616c5f646973747269627574696f6e3a3a4576656e74001b0028436865636b706f696e7404008102016070616c6c65745f636865636b706f696e743a3a4576656e74001c0044436f6d706c69616e63654d616e616765720400a102018070616c6c65745f636f6d706c69616e63655f6d616e616765723a3a4576656e74001d003c436f72706f72617465416374696f6e0400d502017c70616c6c65745f636f72706f726174655f616374696f6e733a3a4576656e74001e003c436f72706f7261746542616c6c6f7404000903017870616c6c65745f636f72706f726174655f62616c6c6f743a3a4576656e74001f00105069707304004103016c70616c6c65745f706970733a3a4576656e743c52756e74696d653e00210024506f7274666f6c696f04008103015c70616c6c65745f706f7274666f6c696f3a3a4576656e740022002c50726f746f636f6c46656504009103018c70616c6c65745f70726f746f636f6c5f6665653a3a4576656e743c52756e74696d653e002300245363686564756c657204009903018070616c6c65745f7363686564756c65723a3a4576656e743c52756e74696d653e00240028536574746c656d656e740400a103018470616c6c65745f736574746c656d656e743a3a4576656e743c52756e74696d653e00250028537461746973746963730400cd03016070616c6c65745f737461746973746963733a3a4576656e740026000c53746f04001504016870616c6c65745f73746f3a3a4576656e743c52756e74696d653e00270020547265617375727904003104017c70616c6c65745f74726561737572793a3a4576656e743c52756e74696d653e0028001c5574696c69747904003504015470616c6c65745f7574696c6974793a3a4576656e74002900104261736504004504014870616c6c65745f626173653a3a4576656e74002a003845787465726e616c4167656e747304004d04017470616c6c65745f65787465726e616c5f6167656e74733a3a4576656e74002b001c52656c6179657204005104017870616c6c65745f72656c617965723a3a4576656e743c52756e74696d653e002c001c5265776172647304005504017870616c6c65745f726577617264733a3a4576656e743c52756e74696d653e002d0024546573745574696c7304005904018470616c6c65745f746573745f7574696c733a3a4576656e743c52756e74696d653e00320000540c306672616d655f73797374656d1870616c6c6574144576656e740404540001184045787472696e7369635375636365737304005801304469737061746368496e666f000004b4416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e205c5b696e666f5c5d3c45787472696e7369634661696c6564080064013444697370617463684572726f7200005801304469737061746368496e666f00010490416e2065787472696e736963206661696c65642e205c5b6572726f722c20696e666f5c5d2c436f64655570646174656400020450603a636f6465602077617320757064617465642e284e65774163636f756e740400000130543a3a4163636f756e7449640003047841206e6577205c5b6163636f756e745c5d2077617320637265617465642e344b696c6c65644163636f756e740400000130543a3a4163636f756e74496400040468416e205c5b6163636f756e745c5d20776173207265617065642e2052656d61726b65640800000130543a3a4163636f756e744964000024011c543a3a48617368000504d04f6e206f6e2d636861696e2072656d61726b2068617070656e65642e205c5b6f726967696e2c2072656d61726b5f686173685c5d04704576656e7420666f72207468652053797374656d2070616c6c65742e580c346672616d655f737570706f72741c77656967687473304469737061746368496e666f00000c0118776569676874200118576569676874000114636c6173735c01344469737061746368436c617373000120706179735f6665656001105061797300005c0c346672616d655f737570706f72741c77656967687473344469737061746368436c61737300010c184e6f726d616c0000002c4f7065726174696f6e616c000100244d616e6461746f727900020000600c346672616d655f737570706f72741c7765696768747310506179730001080c596573000000084e6f0001000064082873705f72756e74696d653444697370617463684572726f72000120144f746865720000003043616e6e6f744c6f6f6b7570000100244261644f726967696e000200184d6f64756c65080114696e64657808010875380001146572726f72080108753800030044436f6e73756d657252656d61696e696e670004002c4e6f50726f76696465727300050014546f6b656e0400680128546f6b656e4572726f720006002841726974686d6574696304006c013c41726974686d657469634572726f720007000068082873705f72756e74696d6528546f6b656e4572726f7200011c1c4e6f46756e647300000020576f756c644469650001003042656c6f774d696e696d756d0002003043616e6e6f7443726561746500030030556e6b6e6f776e41737365740004001846726f7a656e0005002c556e737570706f72746564000600006c082873705f72756e74696d653c41726974686d657469634572726f7200010c24556e646572666c6f77000000204f766572666c6f77000100384469766973696f6e42795a65726f00020000700c3870616c6c65745f696e64696365731870616c6c6574144576656e7404045400010c34496e64657841737369676e65640800000130543a3a4163636f756e744964000010013c543a3a4163636f756e74496e646578000004b041206163636f756e7420696e646578207761732061737369676e65642e205c5b696e6465782c2077686f5c5d28496e6465784672656564040010013c543a3a4163636f756e74496e646578000104e441206163636f756e7420696e64657820686173206265656e2066726565642075702028756e61737369676e6564292e205c5b696e6465785c5d2c496e64657846726f7a656e080010013c543a3a4163636f756e74496e6465780000000130543a3a4163636f756e744964000204250141206163636f756e7420696e64657820686173206265656e2066726f7a656e20746f206974732063757272656e74206163636f756e742049442e205c5b696e6465782c2077686f5c5d0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909741064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e636573205261774576656e7404244163636f756e7449640100011c1c456e646f7765640c007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000018011c42616c616e63650000043101416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e205c5b6469642c206163636f756e742c20667265655f62616c616e63655d205472616e7366657218007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e74496400007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000018011c42616c616e636500008001304f7074696f6e3c4d656d6f3e000104f45472616e7366657220737563636565646564202866726f6d5f6469642c2066726f6d2c20746f5f6469642c20746f2c2076616c75652c206d656d6f292e2842616c616e636553657410007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000018011c42616c616e6365000204d4412062616c616e6365207761732073657420627920726f6f7420286469642c2077686f2c20667265652c207265736572766564292e504163636f756e7442616c616e63654275726e65640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e63650003083d01546865206163636f756e7420616e642074686520616d6f756e74206f6620756e6c6f636b65642062616c616e6365206f662074686174206163636f756e74207468617420776173206275726e65642e8c2863616c6c65722049642c2063616c6c6572206163636f756e742c20616d6f756e742920526573657276656408000001244163636f756e744964000018011c42616c616e63650004041901536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e205c5b77686f2c2076616c75655d28556e726573657276656408000001244163636f756e744964000018011c42616c616e63650005042101536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e205c5b77686f2c2076616c75655d4852657365727665526570617472696174656410000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000088011853746174757300060c4d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652ea05c5b66726f6d2c20746f2c2062616c616e63652c2064657374696e6174696f6e5f7374617475735d085c4576656e747320666f722074686973206d6f64756c652e007804184f7074696f6e040454017c0108104e6f6e6500000010536f6d6504007c00000100007c0c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f6964284964656e746974794964000004000401385b75383b20555549445f4c454e5d00008004184f7074696f6e04045401840108104e6f6e6500000010536f6d650400840000010000841064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e636573104d656d6f000004000401205b75383b2033325d00008814346672616d655f737570706f72741874726169747318746f6b656e73106d6973633442616c616e63655374617475730001081046726565000000205265736572766564000100008c1064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479205261774576656e7408244163636f756e7449640100184d6f6d656e740120014428446964437265617465640c007c01284964656e74697479496400000001244163636f756e74496400009001705665633c5365636f6e646172794b65793c4163636f756e7449643e3e00000c444964656e7469747920637265617465642e0088284449442c207072696d617279206b65792c207365636f6e64617279206b65797329485365636f6e646172794b657973416464656408007c01284964656e74697479496400009001705665633c5365636f6e646172794b65793c4163636f756e7449643e3e00010c845365636f6e64617279206b65797320616464656420746f206964656e746974792e003c284449442c206e6577206b65797329505365636f6e646172794b65797352656d6f76656408007c01284964656e7469747949640000ec01385665633c4163636f756e7449643e00020c945365636f6e64617279206b6579732072656d6f7665642066726f6d206964656e746974792e0080284449442c20746865206b657973207468617420676f742072656d6f76656429605365636f6e646172794b65794c6566744964656e7469747908007c01284964656e74697479496400000001244163636f756e74496400030c9041207365636f6e64617279206b6579206c656674207468656972206964656e746974792e0050284449442c207365636f6e64617279206b657929785365636f6e646172794b65795065726d697373696f6e735570646174656410007c01284964656e74697479496400000001244163636f756e744964000098012c5065726d697373696f6e73000098012c5065726d697373696f6e7300040c885365636f6e64617279206b6579207065726d697373696f6e7320757064617465642e000d01284449442c2075706461746564207365636f6e64617279206b65792c2070726576696f7573207065726d697373696f6e732c206e6577207065726d697373696f6e7329445072696d6172794b6579557064617465640c007c01284964656e74697479496400000001244163636f756e74496400000001244163636f756e74496400050c805072696d617279206b6579206f66206964656e74697479206368616e6765642e00a4284449442c206f6c64207072696d617279206b6579206163636f756e742049442c206e65772049442928436c61696d416464656408007c01284964656e7469747949640000f001344964656e74697479436c61696d00060c60436c61696d20616464656420746f206964656e746974792e0030284449442c20636c61696d2930436c61696d5265766f6b656408007c01284964656e7469747949640000f001344964656e74697479436c61696d00070c70436c61696d207265766f6b65642066726f6d206964656e746974792e0030284449442c20636c61696d294841737365744469645265676973746572656408007c01284964656e7469747949640000a001185469636b657200080c7041737365742773206964656e7469747920726567697374657265642e004c284173736574204449442c207469636b65722948417574686f72697a6174696f6e416464656418007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0000090101444f7074696f6e3c4163636f756e7449643e000020010c75363400000d010170417574686f72697a6174696f6e446174613c4163636f756e7449643e0000f401384f7074696f6e3c4d6f6d656e743e00090c604e657720617574686f72697a6174696f6e2061646465642e00310128617574686f72697365645f62792c207461726765745f6469642c207461726765745f6b65792c20617574685f69642c20617574686f72697a6174696f6e5f646174612c206578706972792950417574686f72697a6174696f6e5265766f6b65640c007801484f7074696f6e3c4964656e7469747949643e0000090101444f7074696f6e3c4163636f756e7449643e000020010c753634000a0ca0417574686f72697a6174696f6e207265766f6b65642062792074686520617574686f72697a65722e00b828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e52656a65637465640c007801484f7074696f6e3c4964656e7469747949643e0000090101444f7074696f6e3c4163636f756e7449643e000020010c753634000b0cd8417574686f72697a6174696f6e2072656a65637465642062792074686520757365722077686f2077617320617574686f72697a65642e00b828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e436f6e73756d65640c007801484f7074696f6e3c4964656e7469747949643e0000090101444f7074696f6e3c4163636f756e7449643e000020010c753634000c0c5c417574686f72697a6174696f6e20636f6e73756d65642e00b828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642988436464526571756972656d656e74466f725072696d6172794b657955706461746564040019010110626f6f6c000d0cc443444420726571756972656d656e7420666f72207570646174696e67207072696d617279206b6579206368616e6765642e0044286e65775f726571756972656d656e742950436464436c61696d73496e76616c69646174656408007c01284964656e74697479496400002001184d6f6d656e74000e10410143444420636c61696d732067656e65726174656420627920604964656e74697479496460202861204344442050726f7669646572292068617665206265656e20696e76616c6964617465642066726f6d24604d6f6d656e74602e0094284344442070726f7669646572204449442c2064697361626c652066726f6d2064617465294c5365636f6e646172794b65797346726f7a656e04007c01284964656e746974794964000f0cc4416c6c205365636f6e64617279206b657973206f6620746865206964656e74697479204944206172652066726f7a656e2e00142844494429545365636f6e646172794b657973556e66726f7a656e04007c01284964656e74697479496400100ccc416c6c205365636f6e64617279206b657973206f6620746865206964656e746974792049442061726520756e66726f7a656e2e00142844494429085c4576656e747320666f722074686973206d6f64756c652e00900000029400940c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579305365636f6e646172794b657904244163636f756e74496401000008010c6b65790001244163636f756e74496400012c7065726d697373696f6e7398012c5065726d697373696f6e730000980c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65792c5065726d697373696f6e7300000c011461737365749c014041737365745065726d697373696f6e7300012465787472696e736963b0015045787472696e7369635065726d697373696f6e73000124706f7274666f6c696fd40150506f7274666f6c696f5065726d697373696f6e7300009c0c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101a0010c1457686f6c650000001454686573650400a8012c42547265655365743c413e000100184578636570740400a8012c42547265655365743c413e00020000a00c4c706f6c796d6573685f7072696d697469766573187469636b6572185469636b657200000400a401405b75383b205449434b45525f4c454e5d0000a40000030c0000000800a80420425472656553657404045401a0000400ac000000ac000002a000b00c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101b4010c1457686f6c650000001454686573650400cc012c42547265655365743c413e000100184578636570740400cc012c42547265655365743c413e00020000b40c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65794450616c6c65745065726d697373696f6e73000008012c70616c6c65745f6e616d65b8012850616c6c65744e616d65000148646973706174636861626c655f6e616d6573bc0144446973706174636861626c654e616d65730000b8084c706f6c796d6573685f7072696d6974697665732850616c6c65744e616d650000040028011c5665633c75383e0000bc0c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101c0010c1457686f6c650000001454686573650400c4012c42547265655365743c413e000100184578636570740400c4012c42547265655365743c413e00020000c0084c706f6c796d6573685f7072696d69746976657340446973706174636861626c654e616d650000040028011c5665633c75383e0000c40420425472656553657404045401c0000400c8000000c8000002c000cc0420425472656553657404045401b4000400d0000000d0000002b400d40c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101d8010c1457686f6c650000001454686573650400e4012c42547265655365743c413e000100184578636570740400e4012c42547265655365743c413e00020000d80c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f69642c506f7274666f6c696f4964000008010c6469647c01284964656e7469747949640001106b696e64dc0134506f7274666f6c696f4b696e640000dc0c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f696434506f7274666f6c696f4b696e640001081c44656661756c7400000010557365720400e0013c506f7274666f6c696f4e756d62657200010000e00c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f69643c506f7274666f6c696f4e756d6265720000040020010c7536340000e40420425472656553657404045401d8000400e8000000e8000002d800ec0000020000f00c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d344964656e74697479436c61696d0000140130636c61696d5f6973737565727c01284964656e74697479496400013469737375616e63655f646174652001184d6f6d656e740001406c6173745f7570646174655f646174652001184d6f6d656e74000118657870697279f401384f7074696f6e3c4d6f6d656e743e000114636c61696df80114436c61696d0000f404184f7074696f6e04045401200108104e6f6e6500000010536f6d650400200000010000f80c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d14436c61696d00013028416363726564697465640400fc011453636f706500000024416666696c696174650400fc011453636f7065000100244275794c6f636b75700400fc011453636f70650002002853656c6c4c6f636b75700400fc011453636f706500030050437573746f6d657244756544696c6967656e63650400010101144364644964000400404b6e6f77596f7572437573746f6d65720400fc011453636f7065000500304a7572697364696374696f6e08000501012c436f756e747279436f64650000fc011453636f7065000600204578656d707465640400fc011453636f70650007001c426c6f636b65640400fc011453636f706500080048496e766573746f72556e697175656e6573730c00fc011453636f706500007c011c53636f706549640000010101144364644964000900184e6f44617461000a0050496e766573746f72556e697175656e65737356320400010101144364644964000b0000fc0c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d1453636f706500010c204964656e7469747904007c01284964656e746974794964000000185469636b65720400a001185469636b657200010018437573746f6d040028011c5665633c75383e0002000001010c4c706f6c796d6573685f7072696d697469766573186364645f6964144364644964000004000401205b75383b2033325d000005010c4c706f6c796d6573685f7072696d697469766573306a7572697364696374696f6e2c436f756e747279436f64650001e90308414600000008415800010008414c00020008445a00030008415300040008414400050008414f000600084149000700084151000800084147000900084152000a0008414d000b00084157000c00084155000d00084154000e0008415a000f0008425300100008424800110008424400120008424200130008425900140008424500150008425a00160008424a00170008424d00180008425400190008424f001a00084241001b00084257001c00084256001d00084252001e00085647001f0008494f00200008424e002100084247002200084246002300084249002400084b4800250008434d002600084341002700084356002800084b59002900084346002a00085444002b0008434c002c0008434e002d0008484b002e00084d4f002f0008435800300008434300310008434f003200084b4d00330008434700340008434400350008434b003600084352003700084349003800084852003900084355003a00084359003b0008435a003c0008444b003d0008444a003e0008444d003f0008444f00400008454300410008454700420008535600430008475100440008455200450008454500460008455400470008464b00480008464f00490008464a004a00084649004b00084652004c00084746004d00085046004e00085446004f0008474100500008474d00510008474500520008444500530008474800540008474900550008475200560008474c005700084744005800084750005900084755005a00084754005b00084747005c0008474e005d00084757005e00084759005f0008485400600008484d00610008564100620008484e00630008485500640008495300650008494e006600084944006700084952006800084951006900084945006a0008494d006b0008494c006c00084954006d00084a4d006e00084a50006f00084a45007000084a4f007100084b5a007200084b45007300084b49007400084b50007500084b52007600084b57007700084b47007800084c41007900084c56007a00084c42007b00084c53007c00084c52007d00084c59007e00084c49007f00084c54008000084c55008100084d4b008200084d47008300084d57008400084d59008500084d56008600084d4c008700084d54008800084d48008900084d51008a00084d52008b00084d55008c00085954008d00084d58008e0008464d008f00084d44009000084d43009100084d4e009200084d45009300084d53009400084d41009500084d5a009600084d4d009700084e41009800084e52009900084e50009a00084e4c009b0008414e009c00084e43009d00084e5a009e00084e49009f00084e4500a000084e4700a100084e5500a200084e4600a300084d5000a400084e4f00a500084f4d00a60008504b00a70008505700a80008505300a90008504100aa0008504700ab0008505900ac0008504500ad0008504800ae0008504e00af0008504c00b00008505400b10008505200b20008514100b30008524500b40008524f00b50008525500b60008525700b70008424c00b80008534800b900084b4e00ba00084c4300bb00084d4600bc0008504d00bd0008564300be0008575300bf0008534d00c00008535400c10008534100c20008534e00c30008525300c40008534300c50008534c00c60008534700c70008534b00c80008534900c90008534200ca0008534f00cb00085a4100cc0008475300cd0008535300ce0008455300cf00084c4b00d00008534400d10008535200d20008534a00d30008535a00d40008534500d50008434800d60008535900d70008545700d80008544a00d90008545a00da0008544800db0008544c00dc0008544700dd0008544b00de0008544f00df0008545400e00008544e00e10008545200e20008544d00e30008544300e40008545600e50008554700e60008554100e70008414500e80008474200e90008555300ea0008554d00eb0008555900ec0008555a00ed0008565500ee0008564500ef0008564e00f00008564900f10008574600f20008454800f30008594500f400085a4d00f500085a5700f60008425100f70008435700f80008535800f90000090104184f7074696f6e04045401000108104e6f6e6500000010536f6d6504000000000100000d010c4c706f6c796d6573685f7072696d69746976657334617574686f72697a6174696f6e44417574686f72697a6174696f6e4461746104244163636f756e74496401000128604174746573745072696d6172794b6579526f746174696f6e04007c01284964656e74697479496400000040526f746174655072696d6172794b6579000100385472616e736665725469636b65720400a001185469636b6572000200444164644d756c74695369675369676e657204000001244163636f756e744964000300585472616e7366657241737365744f776e6572736869700400a001185469636b6572000400304a6f696e4964656e74697479040098012c5065726d697373696f6e7300050040506f7274666f6c696f437573746f64790400d8012c506f7274666f6c696f49640006002c4265636f6d654167656e740800a001185469636b65720000110101284167656e7447726f75700007004c41646452656c61796572506179696e674b65790c000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e63650008006c526f746174655072696d6172794b6579546f5365636f6e64617279040098012c5065726d697373696f6e730009000011010c4c706f6c796d6573685f7072696d697469766573146167656e74284167656e7447726f75700001141046756c6c00000018437573746f6d04001501011041474964000100284578636570744d65746100020034506f6c796d657368563143414100030034506f6c796d65736856315049410004000015010c4c706f6c796d6573685f7072696d697469766573146167656e7410414749640000040010010c7533320000190100000500001d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449012101011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400002501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e002101083070616c6c65745f67726f757024496e7374616e6365320000000025010000027c002901084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d62657201100449012d0101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800002501013c5665633c4964656e7469747949643e00002501013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e7469747949640000240110486173680000310101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e002d01084070616c6c65745f636f6d6d697474656524496e7374616e6365310000000031010418526573756c74080454013501044501640108084f6b04003501000000000c45727204006400000100003501000004000039010864706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573284d61796265426c6f636b042c426c6f636b4e756d6265720110010810536f6d65040010012c426c6f636b4e756d626572000000104e6f6e65000100003d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449014101011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400002501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e004101083070616c6c65745f67726f757024496e7374616e636531000000004501084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d6265720110044901490101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800002501013c5665633c4964656e7469747949643e00002501013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e7469747949640000240110486173680000310101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e004901084070616c6c65745f636f6d6d697474656524496e7374616e636533000000004d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449015101011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400002501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e005101083070616c6c65745f67726f757024496e7374616e636533000000005501084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d6265720110044901590101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800002501013c5665633c4964656e7469747949643e00002501013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e7469747949640000240110486173680000310101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e005901084070616c6c65745f636f6d6d697474656524496e7374616e636534000000005d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449016101011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400002501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e006101083070616c6c65745f67726f757024496e7374616e636534000000006501083c70616c6c65745f6d756c7469736967205261774576656e7404244163636f756e744964010001303c4d756c74695369674372656174656414007c01284964656e74697479496400000001244163636f756e74496400000001244163636f756e7449640000690101645665633c5369676e61746f72793c4163636f756e7449643e3e000020010c753634000008ac4576656e7420656d6974746564206166746572206372656174696f6e206f662061206d756c74697369672e6501417267756d656e74733a2063616c6c6572204449442c206d756c746973696720616464726573732c207369676e657273202870656e64696e6720617070726f76616c292c207369676e6174757265732072657175697265642e3450726f706f73616c41646465640c007c01284964656e74697479496400000001244163636f756e744964000020010c753634000108984576656e7420656d697474656420616674657220616464696e6720612070726f706f73616c2eb4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e4050726f706f73616c457865637574656410007c01284964656e74697479496400000001244163636f756e744964000020010c753634000019010110626f6f6c000208a84576656e7420656d6974746564207768656e20612070726f706f73616c2069732065786563757465642ed4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442c20726573756c742e4c4d756c74695369675369676e657241646465640c007c01284964656e74697479496400000001244163636f756e74496400006d0101505369676e61746f72793c4163636f756e7449643e000308a04576656e7420656d6974746564207768656e2061207369676e61746f72792069732061646465642eb8417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206164646564207369676e65722e604d756c74695369675369676e6572417574686f72697a65640c007c01284964656e74697479496400000001244163636f756e74496400006d0101505369676e61746f72793c4163636f756e7449643e00040809014576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f727920697320617574686f72697a656420746f2062652061646465642ecc417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722e544d756c74695369675369676e657252656d6f7665640c007c01284964656e74697479496400000001244163636f756e74496400006d0101505369676e61746f72793c4163636f756e7449643e000508cc4576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f72792069732072656d6f7665642ec0417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2072656d6f766564207369676e65722e844d756c74695369675369676e61747572657352657175697265644368616e6765640c007c01284964656e74697479496400000001244163636f756e744964000020010c75363400060801014576656e7420656d6974746564207768656e20746865206e756d626572206f66207265717569726564207369676e617475726573206973206368616e6765642ee4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206e6577207265717569726564207369676e6174757265732e4050726f706f73616c417070726f76656410007c01284964656e74697479496400000001244163636f756e74496400006d0101505369676e61746f72793c4163636f756e7449643e000020010c753634000708b44576656e7420656d6974746564207768656e207468652070726f706f73616c2067657420617070726f7665642e0101417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e5450726f706f73616c52656a656374696f6e566f746510007c01284964656e74697479496400000001244163636f756e74496400006d0101505369676e61746f72793c4163636f756e7449643e000020010c7536340008080d014576656e7420656d6974746564207768656e206120766f7465206973206361737420696e206661766f72206f662072656a656374696e6720612070726f706f73616c2e0101417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e4050726f706f73616c52656a65637465640c007c01284964656e74697479496400000001244163636f756e744964000020010c753634000908a84576656e7420656d6974746564207768656e20612070726f706f73616c2069732072656a65637465642eb4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e5c50726f706f73616c457865637574696f6e4661696c6564040064013444697370617463684572726f72000a04e44576656e7420656d6974746564207768656e207468657265277320616e206572726f7220696e2070726f706f73616c20657865637574696f6e405363686564756c696e674661696c6564040064013444697370617463684572726f72000b04745363686564756c696e67206f662070726f706f73616c206661696c732e085c4576656e747320666f722074686973206d6f64756c652e0069010000026d01006d010c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579245369676e61746f727904244163636f756e74496401000108204964656e7469747904007c01284964656e7469747949640000001c4163636f756e7404000001244163636f756e744964000100007101083470616c6c65745f627269646765205261774576656e7408244163636f756e74496401002c426c6f636b4e756d6265720110014044436f6e74726f6c6c65724368616e67656408007c01284964656e74697479496400000001244163636f756e74496400000490436f6e6669726d6174696f6e206f662061207369676e657220736574206368616e67652e3041646d696e4368616e67656408007c01284964656e74697479496400000001244163636f756e74496400010474436f6e6669726d6174696f6e206f662041646d696e206368616e67652e3c54696d656c6f636b4368616e67656408007c01284964656e746974794964000010012c426c6f636b4e756d626572000204a0436f6e6669726d6174696f6e206f662064656661756c742074696d656c6f636b206368616e67652e1c4272696467656408007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e0003041d01436f6e6669726d6174696f6e206f6620504f4c59582075706772616465206f6e20506f6c796d6573682066726f6d20504f4c5920746f6b656e73206f6e20457468657265756d2e1846726f7a656e04007c01284964656e746974794964000404904e6f74696669636174696f6e206f6620667265657a696e6720746865206272696467652e20556e66726f7a656e04007c01284964656e746974794964000504984e6f74696669636174696f6e206f6620756e667265657a696e6720746865206272696467652e2046726f7a656e547808007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e0006049c4e6f74696669636174696f6e206f6620667265657a696e672061207472616e73616374696f6e2e28556e66726f7a656e547808007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e000704a44e6f74696669636174696f6e206f6620756e667265657a696e672061207472616e73616374696f6e2e3c4578656d70746564557064617465640c007c01284964656e74697479496400007c01284964656e746974794964000019010110626f6f6c000804c44578656d7074696f6e20737461747573206f6620616e206964656e7469747920686173206265656e20757064617465642e484272696467654c696d6974557064617465640c007c01284964656e746974794964000018011c42616c616e6365000010012c426c6f636b4e756d62657200090478427269646765206c696d697420686173206265656e20757064617465642e2854787348616e646c65640400790101985665633c284163636f756e7449642c207533322c2048616e646c65645478537461747573293e000a086101416e206576656e7420656d6974746564206166746572206120766563746f72206f66207472616e73616374696f6e732069732068616e646c65642e2054686520706172616d65746572206973206120766563746f72206f6651017475706c6573206f6620726563697069656e74206163636f756e742c20697473206e6f6e63652c20616e642074686520737461747573206f66207468652070726f636573736564207472616e73616374696f6e2e4442726964676554785363686564756c65640c007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e000010012c426c6f636b4e756d626572000b0450427269646765205478205363686564756c65642e5842726964676554785363686564756c654661696c65640c007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e000028011c5665633c75383e000c04744661696c656420746f207363686564756c65204272696467652054782e40467265657a6541646d696e416464656408007c01284964656e74697479496400000001244163636f756e744964000d048841206e657720667265657a652061646d696e20686173206265656e2061646465642e48467265657a6541646d696e52656d6f76656408007c01284964656e74697479496400000001244163636f756e744964000e04804120667265657a652061646d696e20686173206265656e2072656d6f7665642e24547852656d6f76656408007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e000f049c4e6f74696669636174696f6e206f662072656d6f76696e672061207472616e73616374696f6e2e085c4576656e747320666f722074686973206d6f64756c652e007501083470616c6c65745f627269646765204272696467655478041c4163636f756e740100001001146e6f6e636510010c753332000124726563697069656e7400011c4163636f756e74000118616d6f756e7418011c42616c616e636500011c74785f6861736824011048323536000079010000027d01007d010000040c00108101008101083470616c6c65745f6272696467653c48616e646c656454785374617475730001081c53756363657373000000144572726f72040028011c5665633c75383e000100008501083870616c6c65745f7374616b696e67205261774576656e74081c42616c616e63650118244163636f756e74496401000144244572615061796f75740c00100120457261496e646578000018011c42616c616e6365000018011c42616c616e636500000c550154686520657261207061796f757420686173206265656e207365743b207468652066697273742062616c616e6365206973207468652076616c696461746f722d7061796f75743b20746865207365636f6e64206973c07468652072656d61696e6465722066726f6d20746865206d6178696d756d20616d6f756e74206f66207265776172642ea85c5b6572615f696e6465782c2076616c696461746f725f7061796f75742c2072656d61696e6465725c5d185265776172640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e63650001043901546865207374616b657220686173206265656e207265776172646564206279207468697320616d6f756e742e205c5b73746173685f6964656e746974792c2073746173682c20616d6f756e745c5d14536c61736808000001244163636f756e744964000018011c42616c616e636500020821014f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e545c5b76616c696461746f722c20616d6f756e745c5d684f6c64536c617368696e675265706f7274446973636172646564040010013053657373696f6e496e6465780003081901416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c648c6e6f742062652070726f6365737365642e205c5b73657373696f6e5f696e6465785c5d3c5374616b696e67456c656374696f6e04008901013c456c656374696f6e436f6d70757465000404f041206e657720736574206f66207374616b6572732077617320656c656374656420776974682074686520676976656e205c5b636f6d707574655c5d2e38536f6c7574696f6e53746f72656404008901013c456c656374696f6e436f6d70757465000504150141206e657720736f6c7574696f6e20666f7220746865207570636f6d696e6720656c656374696f6e20686173206265656e2073746f7265642e205c5b636f6d707574655c5d18426f6e6465640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000610e4416e206163636f756e742068617320626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d004d014e4f54453a2054686973206576656e74206973206f6e6c7920656d6974746564207768656e2066756e64732061726520626f6e64656420766961206120646973706174636861626c652e204e6f7461626c792c210169742077696c6c206e6f7420626520656d697474656420666f72207374616b696e672072657761726473207768656e20746865792061726520616464656420746f207374616b652e20556e626f6e6465640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000704ec416e206163636f756e742068617320756e626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d244e6f6d696e617465640c007c01284964656e74697479496400000001244163636f756e7449640000ec01385665633c4163636f756e7449643e0008048855736572206861732075706461746564207468656972206e6f6d696e6174696f6e732457697468647261776e08000001244163636f756e744964000018011c42616c616e63650009085901416e206163636f756e74206861732063616c6c6564206077697468647261775f756e626f6e6465646020616e642072656d6f76656420756e626f6e64696e67206368756e6b7320776f727468206042616c616e636560ac66726f6d2074686520756e6c6f636b696e672071756575652e205c5b73746173682c20616d6f756e745c5d645065726d697373696f6e65644964656e74697479416464656408007c01284964656e74697479496400007c01284964656e746974794964000a08ec416e20444944206861732069737375656420612063616e6469646163792e2053656520746865207472616e73616374696f6e20666f722077686f2e8c4743206964656e74697479202c2056616c696461746f722773206964656e746974792e6c5065726d697373696f6e65644964656e7469747952656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000b08e854686520676976656e206d656d626572207761732072656d6f7665642e2053656520746865207472616e73616374696f6e20666f722077686f2e8c4743206964656e74697479202c2056616c696461746f722773206964656e746974792e54496e76616c6964617465644e6f6d696e61746f72730c007c01284964656e74697479496400000001244163636f756e7449640000ec01385665633c4163636f756e7449643e000c081d0152656d6f766520746865206e6f6d696e61746f72732066726f6d207468652076616c6964206e6f6d696e61746f7273207768656e2074686572652043444420657870697265642e9443616c6c65722c205374617368206163636f756e744964206f66206e6f6d696e61746f727350436f6d6d697373696f6e436170557064617465640c007c01284964656e74697479496400008d01011c50657262696c6c00008d01011c50657262696c6c000d08805768656e20636f6d6d697373696f6e206361702067657420757064617465642e58286f6c642076616c75652c206e65772076616c7565296c4d696e696d756d426f6e645468726573686f6c645570646174656408007801484f7074696f6e3c4964656e7469747949643e000018011c42616c616e6365000e04ac4d696e20626f6e64207468726573686f6c6420776173207570646174656420286e65772076616c7565292e885265776172645061796d656e745363686564756c696e67496e7465727275707465640c000001244163636f756e7449640000100120457261496e646578000064013444697370617463684572726f72000f04cc5768656e207363686564756c696e67206f6620726577617264207061796d656e74732067657420696e7465727275707465642e64536c617368696e67416c6c6f776564466f724368616e676564040091010138536c617368696e675377697463680010049055706461746520666f722077686f6d2062616c616e63652067657420736c61736865642e085c4576656e747320666f722074686973206d6f64756c652e008901083870616c6c65745f7374616b696e673c456c656374696f6e436f6d7075746500010c1c4f6e436861696e000000185369676e656400010020556e7369676e6564000200008d010c3473705f61726974686d65746963287065725f7468696e67731c50657262696c6c0000040010010c75333200009101083870616c6c65745f7374616b696e6738536c617368696e6753776974636800010c2456616c696461746f720000005456616c696461746f72416e644e6f6d696e61746f72000100104e6f6e650002000095010c3c70616c6c65745f6f6666656e6365731870616c6c6574144576656e740001041c4f6666656e63650800990101104b696e6400002801384f706171756554696d65536c6f7400000c5101546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e643501286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e4c5c5b6b696e642c2074696d65736c6f745c5d2e04304576656e747320747970652e99010000031000000008009d010c3870616c6c65745f73657373696f6e1870616c6c6574144576656e74000104284e657753657373696f6e040010013053657373696f6e496e64657800000849014e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e7420697320746865205c5b73657373696f6e5f696e6465785c5d2c206e6f74207468659c626c6f636b206e756d626572206173207468652074797065206d6967687420737567676573742e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909a1010c3870616c6c65745f6772616e6470611870616c6c6574144576656e7400010c384e6577417574686f7269746965730400a5010134417574686f726974794c697374000004d44e657720617574686f726974792073657420686173206265656e206170706c6965642e205c5b617574686f726974795f7365745c5d185061757365640001049843757272656e7420617574686f726974792073657420686173206265656e207061757365642e1c526573756d65640002049c43757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909a501000002a90100a90100000408ad012000ad010c4c73705f66696e616c6974795f6772616e6470610c617070185075626c696300000400b101013c656432353531393a3a5075626c69630000b1010c1c73705f636f72651c65643235353139185075626c6963000004000401205b75383b2033325d0000b5010c4070616c6c65745f696d5f6f6e6c696e651870616c6c6574144576656e7404045400010c4448656172746265617452656365697665640400b9010138543a3a417574686f726974794964000004010141206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f72697479496460205c5b617574686f726974795f69645c5d1c416c6c476f6f64000104d041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2c536f6d654f66666c696e650400c101016c5665633c4964656e74696669636174696f6e5475706c653c543e3e000204390141742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e652076616c696461746f722077617320666f756e6420746f206265205c5b6f66666c696e655c5d2e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909b901104070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139185075626c696300000400bd01013c737232353531393a3a5075626c69630000bd010c1c73705f636f72651c73723235353139185075626c6963000004000401205b75383b2033325d0000c101000002c50100c5010000040800c90100c901083870616c6c65745f7374616b696e67204578706f7375726508244163636f756e74496401001c42616c616e63650118000c0114746f74616ccd01011c42616c616e636500010c6f776ecd01011c42616c616e63650001186f7468657273d10101ac5665633c496e646976696475616c4578706f737572653c4163636f756e7449642c2042616c616e63653e3e0000cd010000061800d101000002d50100d501083870616c6c65745f7374616b696e6748496e646976696475616c4578706f7375726508244163636f756e74496401001c42616c616e636501180008010c77686f0001244163636f756e74496400011476616c7565cd01011c42616c616e63650000d901082c70616c6c65745f7375646f205261774576656e7404244163636f756e7449640100010c1453756469640400310101384469737061746368526573756c740000048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d284b65794368616e67656404000001244163636f756e744964000104fc546865205c5b7375646f65725c5d206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e285375646f4173446f6e650400310101384469737061746368526573756c740002048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d085c4576656e747320666f722074686973206d6f64756c652e00dd011064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473146173736574205261774576656e7408184d6f6d656e740120244163636f756e74496401000168205472616e7366657214007c01284964656e7469747949640000a001185469636b65720000d8012c506f7274666f6c696f49640000d8012c506f7274666f6c696f4964000018011c42616c616e6365000008744576656e7420666f72207472616e73666572206f6620746f6b656e732edc63616c6c6572204449442c207469636b65722c2066726f6d20706f7274666f6c696f2c20746f20706f7274666f6c696f2c2076616c75651849737375656418007c01284964656e7469747949640000a001185469636b657200007c01284964656e746974794964000018011c42616c616e63650000e101014046756e64696e67526f756e644e616d65000018011c42616c616e636500010870456d6974207768656e20746f6b656e7320676574206973737565642e750163616c6c6572204449442c207469636b65722c2062656e6566696369617279204449442c2076616c75652c2066756e64696e6720726f756e642c20746f74616c2069737375656420696e20746869732066756e64696e6720726f756e642052656465656d656410007c01284964656e7469747949640000a001185469636b657200007c01284964656e746974794964000018011c42616c616e636500020878456d6974207768656e20746f6b656e73206765742072656465656d65642e9063616c6c6572204449442c207469636b65722c202066726f6d204449442c2076616c75653041737365744372656174656418007c01284964656e7469747949640000a001185469636b6572000019010110626f6f6c0000e501012441737365745479706500007c01284964656e746974794964000019010110626f6f6c000308804576656e7420666f72206372656174696f6e206f66207468652061737365742e950163616c6c6572204449442f206f776e6572204449442c207469636b65722c2064697669736962696c6974792c20617373657420747970652c2062656e6566696369617279204449442c2064697361626c6520696e766573746f7220756e697175656e657373484964656e74696669657273557064617465640c007c01284964656e7469747949640000a001185469636b65720000ed0101505665633c41737365744964656e7469666965723e000408d44576656e7420656d6974746564207768656e20616e7920746f6b656e206964656e746966696572732061726520757064617465642e0d0163616c6c6572204449442c207469636b65722c206120766563746f72206f6620286964656e74696669657220747970652c206964656e7469666965722076616c7565294c44697669736962696c6974794368616e6765640c007c01284964656e7469747949640000a001185469636b6572000019010110626f6f6c000508844576656e7420666f72206368616e676520696e2064697669736962696c6974792e8063616c6c6572204449442c207469636b65722c2064697669736962696c697479405472616e73666572576974684461746118007c01284964656e7469747949640000a001185469636b657200007c01284964656e74697479496400007c01284964656e746974794964000018011c42616c616e6365000028011c5665633c75383e0006083501416e206164646974696f6e616c206576656e7420746f205472616e736665723b20656d6974746564207768656e20607472616e736665725f776974685f64617461602069732063616c6c65642ec863616c6c657220444944202c207469636b65722c2066726f6d204449442c20746f204449442c2076616c75652c20646174612849734973737561626c650800a001185469636b6572000019010110626f6f6c0007085069735f6973737561626c652829206f75747075749c7469636b65722c2072657475726e2076616c7565202874727565206966206973737561626c6529405469636b6572526567697374657265640c007c01284964656e7469747949640000a001185469636b65720000f401384f7074696f6e3c4d6f6d656e743e0008087c456d6974207768656e207469636b657220697320726567697374657265642eec63616c6c657220444944202f207469636b6572206f776e6572206469642c207469636b65722c207469636b6572206f776e65722c20657870697279445469636b65725472616e736665727265640c007c01284964656e7469747949640000a001185469636b657200007c01284964656e74697479496400090880456d6974207768656e207469636b6572206973207472616e736665727265642ed063616c6c657220444944202f207469636b6572207472616e7366657272656420746f204449442c207469636b65722c2066726f6d6441737365744f776e6572736869705472616e736665727265640c007c01284964656e7469747949640000a001185469636b657200007c01284964656e746974794964000a08a4456d6974207768656e20746f6b656e206f776e657273686970206973207472616e736665727265642ef463616c6c657220444944202f20746f6b656e206f776e657273686970207472616e7366657272656420746f204449442c207469636b65722c2066726f6d2c417373657446726f7a656e08007c01284964656e7469747949640000a001185469636b6572000b08a4416e206576656e7420656d6974746564207768656e20616e2061737365742069732066726f7a656e2e78506172616d657465723a2063616c6c6572204449442c207469636b65722e344173736574556e66726f7a656e08007c01284964656e7469747949640000a001185469636b6572000c08ac416e206576656e7420656d6974746564207768656e20616e20617373657420697320756e66726f7a656e2e78506172616d657465723a2063616c6c6572204449442c207469636b65722e30417373657452656e616d65640c007c01284964656e7469747949640000a001185469636b65720000fd01012441737365744e616d65000d08a4416e206576656e7420656d6974746564207768656e206120746f6b656e2069732072656e616d65642ebc506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720746f6b656e206e616d652e3c46756e64696e67526f756e645365740c007c01284964656e7469747949640000a001185469636b65720000e101014046756e64696e67526f756e644e616d65000e081101416e206576656e74206361727279696e6720746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e64206f662061207469636b65722ecc506172616d65746572733a2063616c6c6572204449442c207469636b65722c2066756e64696e6720726f756e64206e616d652e34446f63756d656e74416464656410007c01284964656e7469747949640000a001185469636b6572000001020128446f63756d656e744964000005020120446f63756d656e74000f048c41206e657720646f63756d656e7420617474616368656420746f20616e2061737365743c446f63756d656e7452656d6f7665640c007c01284964656e7469747949640000a001185469636b6572000001020128446f63756d656e744964001004804120646f63756d656e742072656d6f7665642066726f6d20616e20617373657440457874656e73696f6e52656d6f7665640c007c01284964656e7469747949640000a001185469636b657200000001244163636f756e744964001108604120657874656e73696f6e20676f742072656d6f7665642e7463616c6c6572204449442c207469636b65722c204163636f756e74496450436c61737369635469636b6572436c61696d65640c007c01284964656e7469747949640000a001185469636b657200003102013c457468657265756d4164647265737300120435014120506f6c796d61746820436c617373696320746f6b656e2077617320636c61696d656420616e64207472616e7366657272656420746f2061206e6f6e2d73797374656d61746963204449442e48436f6e74726f6c6c65725472616e7366657210007c01284964656e7469747949640000a001185469636b65720000d8012c506f7274666f6c696f4964000018011c42616c616e6365001308b44576656e7420666f72207768656e206120666f72636564207472616e736665722074616b657320706c6163652e150163616c6c6572204449442f20636f6e74726f6c6c6572204449442c207469636b65722c20506f7274666f6c696f206f6620746f6b656e20686f6c6465722c2076616c75652e54437573746f6d4173736574547970654578697374730c007c01284964656e7469747949640000e9010144437573746f6d4173736574547970654964000028011c5665633c75383e001408b04120637573746f6d206173736574207479706520616c726561647920657869737473206f6e2d636861696e2e310163616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e64437573746f6d417373657454797065526567697374657265640c007c01284964656e7469747949640000e9010144437573746f6d4173736574547970654964000028011c5665633c75383e001508b04120637573746f6d2061737365742074797065207761732072656769737465726564206f6e2d636861696e2e310163616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e5453657441737365744d6574616461746156616c756510007c01284964656e7469747949640000a001185469636b657200003502014841737365744d6574616461746156616c75650000390201a04f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c4d6f6d656e743e3e00160864536574206173736574206d657461646174612076616c75652ef02843616c6c6572204449442c207469636b65722c206d657461646174612076616c75652c206f7074696f6e616c2076616c75652064657461696c73297053657441737365744d6574616461746156616c756544657461696c730c007c01284964656e7469747949640000a001185469636b657200003d02018041737365744d6574616461746156616c756544657461696c3c4d6f6d656e743e001708dc536574206173736574206d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e8c2843616c6c6572204449442c207469636b65722c2076616c75652064657461696c732978526567697374657241737365744d657461646174614c6f63616c5479706514007c01284964656e7469747949640000a001185469636b657200004502014441737365744d657461646174614e616d6500004902015441737365744d657461646174614c6f63616c4b657900004d02014441737365744d65746164617461537065630018088c5265676973746572206173736574206d65746164617461206c6f63616c20747970652e05012843616c6c6572204449442c207469636b65722c204c6f63616c2074797065206e616d652c204c6f63616c2074797065206b65792c2074797065207370656373297c526567697374657241737365744d65746164617461476c6f62616c547970650c004502014441737365744d657461646174614e616d6500006502015841737365744d65746164617461476c6f62616c4b657900004d02014441737365744d6574616461746153706563001908905265676973746572206173736574206d6574616461746120676c6f62616c20747970652ebc28476c6f62616c2074797065206e616d652c20476c6f62616c2074797065206b65792c207479706520737065637329085c4576656e747320666f722074686973206d6f64756c652e00e1010c4c706f6c796d6573685f7072696d6974697665731461737365744046756e64696e67526f756e644e616d650000040028011c5665633c75383e0000e5010c4c706f6c796d6573685f7072696d6974697665731461737365742441737365745479706500012c30457175697479436f6d6d6f6e0000003c45717569747950726566657272656400010024436f6d6d6f646974790002002c4669786564496e636f6d6500030010524549540004001046756e6400050054526576656e7565536861726541677265656d656e74000600445374727563747572656450726f64756374000700284465726976617469766500080018437573746f6d0400e9010144437573746f6d417373657454797065496400090028537461626c65436f696e000a0000e9010c4c706f6c796d6573685f7072696d69746976657314617373657444437573746f6d41737365745479706549640000040010010c7533320000ed01000002f10100f1010c4c706f6c796d6573685f7072696d6974697665734061737365745f6964656e7469666965723c41737365744964656e7469666965720001141443555349500400f501011c5b75383b20395d0000001043494e530400f501011c5b75383b20395d000100104953494e0400a401205b75383b2031325d0002000c4c45490400f90101205b75383b2032305d00030010464947490400a401205b75383b2031325d00040000f501000003090000000800f901000003140000000800fd010c4c706f6c796d6573685f7072696d6974697665731461737365742441737365744e616d650000040028011c5665633c75383e000001020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7428446f63756d656e7449640000040010010c753332000005020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7420446f63756d656e74000014010c7572690902012c446f63756d656e74557269000130636f6e74656e745f686173680d020130446f63756d656e74486173680001106e616d6525020130446f63756d656e744e616d65000120646f635f74797065290201504f7074696f6e3c446f63756d656e74547970653e00012c66696c696e675f64617465f401384f7074696f6e3c4d6f6d656e743e000009020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e742c446f63756d656e745572690000040028011c5665633c75383e00000d020c4c706f6c796d6573685f7072696d69746976657334646f63756d656e745f6861736830446f63756d656e7448617368000124104e6f6e6500000010483531320400110201205b75383b2036345d00010010483338340400150201205b75383b2034385d00020010483332300400190201205b75383b2034305d000300104832353604000401205b75383b2033325d000400104832323404001d0201205b75383b2032385d00050010483139320400210201205b75383b2032345d00060010483136300400f90101205b75383b2032305d00070010483132380400990101205b75383b2031365d000800001102000003400000000800150200000330000000080019020000032800000008001d020000031c0000000800210200000318000000080025020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7430446f63756d656e744e616d650000040028011c5665633c75383e0000290204184f7074696f6e040454012d020108104e6f6e6500000010536f6d6504002d0200000100002d020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7430446f63756d656e74547970650000040028011c5665633c75383e000031020c4c706f6c796d6573685f7072696d69746976657320657468657265756d3c457468657265756d4164647265737300000400f90101205b75383b2032305d000035020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614841737365744d6574616461746156616c75650000040028011c5665633c75383e0000390204184f7074696f6e040454013d020108104e6f6e6500000010536f6d6504003d0200000100003d020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174616041737365744d6574616461746156616c756544657461696c04184d6f6d656e74012000080118657870697265f401384f7074696f6e3c4d6f6d656e743e00012c6c6f636b5f7374617475734102017c41737365744d657461646174614c6f636b5374617475733c4d6f6d656e743e000041020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615c41737365744d657461646174614c6f636b53746174757304184d6f6d656e740120010c20556e6c6f636b6564000000184c6f636b65640001002c4c6f636b6564556e74696c04002001184d6f6d656e740002000045020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614441737365744d657461646174614e616d650000040028011c5665633c75383e000049020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615441737365744d657461646174614c6f63616c4b65790000040020010c75363400004d020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614441737365744d657461646174615370656300000c010c75726c5102012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e590201804f7074696f6e3c41737365744d657461646174614465736372697074696f6e3e000120747970655f6465666102013c4f7074696f6e3c5665633c75383e3e0000510204184f7074696f6e0404540155020108104e6f6e6500000010536f6d650400550200000100005502084c706f6c796d6573685f7072696d6974697665730c55726c0000040028011c5665633c75383e0000590204184f7074696f6e040454015d020108104e6f6e6500000010536f6d6504005d0200000100005d020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174616041737365744d657461646174614465736372697074696f6e0000040028011c5665633c75383e0000610204184f7074696f6e04045401280108104e6f6e6500000010536f6d65040028000001000065020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615841737365744d65746164617461476c6f62616c4b65790000040020010c753634000069020c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e144576656e740001101c437265617465640c006d0201204576656e7444696400007102011043414964000079020130446973747269627574696f6e000010b841206361706974616c20646973747269627574696f6e2c20776974682064657461696c7320696e636c756465642c31017761732063726561746564206279207468652044494420287065726d697373696f6e6564206167656e742920666f7220746865204341206964656e746966696564206279206043414964602e00a8284167656e74204449442c20434127732049442c20646973747269627574696f6e2064657461696c73293842656e65666974436c61696d656418006d0201204576656e7444696400006d0201204576656e7444696400007102011043414964000079020130446973747269627574696f6e000018011c42616c616e636500007d02010c54617800010c51014120746f6b656e20686f6c64657227732062656e65666974206f662061206361706974616c20646973747269627574696f6e20666f722074686520676976656e206043414964602077617320636c61696d65642e0091012843616c6c6572204449442c20486f6c6465722f436c61696d616e74204449442c20434127732049442c207570646174656420646973747269627574696f6e2064657461696c732c2044494427732062656e656669742c20444944277320746178202529245265636c61696d65640c006d0201204576656e7444696400007102011043414964000018011c42616c616e636500020c9853746174732066726f6d2060707573685f62656e65666974602077617320656d69747465642e001501284167656e74204449442c20434127732049442c206d61782072657175657374656420444944732c2070726f63657373656420444944732c206661696c65642044494473291c52656d6f76656408006d0201204576656e744469640000710201104341496400030c8c41206361706974616c20646973747269627574696f6e207761732072656d6f7665642e0050284167656e74204449442c204341277320494429085c4576656e747320666f722074686973206d6f64756c652e006d020c4c706f6c796d6573685f7072696d697469766573286576656e745f6f6e6c79244576656e744f6e6c79040454017c0004007c01045400007102086070616c6c65745f636f72706f726174655f616374696f6e73104341496400000801187469636b6572a001185469636b65720001206c6f63616c5f6964750201244c6f63616c4341496400007502086070616c6c65745f636f72706f726174655f616374696f6e73244c6f63616c434149640000040010010c753332000079020c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e30446973747269627574696f6e000020011066726f6dd8012c506f7274666f6c696f496400012063757272656e6379a001185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e636500012472656d61696e696e6718011c42616c616e63650001247265636c61696d656419010110626f6f6c0001287061796d656e745f61742001184d6f6d656e74000128657870697265735f6174f401384f7074696f6e3c4d6f6d656e743e00007d020c3473705f61726974686d65746963287065725f7468696e67731c5065726d696c6c0000040010010c753332000081021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e74144576656e7400011044436865636b706f696e74437265617465641400850201404f7074696f6e3c4576656e744469643e0000a001185469636b6572000089020130436865636b706f696e744964000018011c42616c616e636500002001184d6f6d656e7400000c644120636865636b706f696e742077617320637265617465642e001d012863616c6c6572204449442c207469636b65722c20636865636b706f696e742049442c20746f74616c20737570706c792c20636865636b706f696e742074696d657374616d7029844d6178696d756d5363686564756c6573436f6d706c65786974794368616e67656408007c01284964656e746974794964000020010c75363400010c2901546865206d6178696d756d20636f6d706c657869747920666f7220616e20617262697472617279207469636b65722773207363686564756c652073657420776173206368616e6765642e0064284743204449442c20746865206e6577206d6178696d756d293c5363686564756c65437265617465640c006d0201204576656e744469640000a001185469636b657200008d02013853746f7265645363686564756c6500020c884120636865636b706f696e74207363686564756c652077617320637265617465642e00782863616c6c6572204449442c207469636b65722c207363686564756c65293c5363686564756c6552656d6f7665640c007c01284964656e7469747949640000a001185469636b657200008d02013853746f7265645363686564756c6500030c884120636865636b706f696e74207363686564756c65207761732072656d6f7665642e00782863616c6c6572204449442c207469636b65722c207363686564756c6529085c4576656e747320666f722074686973206d6f64756c652e00850204184f7074696f6e040454016d020108104e6f6e6500000010536f6d6504006d02000001000089020c4c706f6c796d6573685f7072696d6974697665732063616c656e64617230436865636b706f696e7449640000040020010c75363400008d021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e743853746f7265645363686564756c6500001001207363686564756c6591020148436865636b706f696e745363686564756c6500010869649d0201285363686564756c65496400010861742001184d6f6d656e7400012472656d61696e696e6710010c753332000091020c4c706f6c796d6573685f7072696d6974697665732063616c656e64617248436865636b706f696e745363686564756c65000008011473746172742001184d6f6d656e74000118706572696f649502013843616c656e646172506572696f64000095020c4c706f6c796d6573685f7072696d6974697665732063616c656e6461723843616c656e646172506572696f640000080110756e69749902013043616c656e646172556e6974000118616d6f756e7420010c753634000099020c4c706f6c796d6573685f7072696d6974697665732063616c656e6461723043616c656e646172556e697400011c185365636f6e64000000184d696e75746500010010486f75720002000c446179000300105765656b000400144d6f6e74680005001059656172000600009d021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e74285363686564756c6549640000040020010c7536340000a102086470616c6c65745f636f6d706c69616e63655f6d616e61676572144576656e7400012470436f6d706c69616e6365526571756972656d656e74437265617465640c007c01284964656e7469747949640000a001185469636b65720000a5020154436f6d706c69616e6365526571756972656d656e74000008cc456d6974746564207768656e206e657720636f6d706c69616e636520726571756972656d656e7420697320637265617465642eb02863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e70436f6d706c69616e6365526571756972656d656e7452656d6f7665640c007c01284964656e7469747949640000a001185469636b6572000010010c753332000108c4456d6974746564207768656e206120636f6d706c69616e636520726571756972656d656e742069732072656d6f7665642e942863616c6c6572204449442c205469636b65722c20726571756972656d656e745f6964292e5c4173736574436f6d706c69616e63655265706c616365640c007c01284964656e7469747949640000a001185469636b65720000d10201685665633c436f6d706c69616e6365526571756972656d656e743e000208b4456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206973207265706c616365642ed4506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720617373657420636f6d706c69616e63652e504173736574436f6d706c69616e6365526573657408007c01284964656e7469747949640000a001185469636b6572000308d8456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206f662061207469636b65722069732072657365742e542863616c6c6572204449442c205469636b6572292e584173736574436f6d706c69616e6365526573756d656408007c01284964656e7469747949640000a001185469636b65720004080101456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b6572206765747320726573756d652e542863616c6c6572204449442c205469636b6572292e544173736574436f6d706c69616e636550617573656408007c01284964656e7469747949640000a001185469636b65720005080101456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b65722067657473207061757365642e542863616c6c6572204449442c205469636b6572292e70436f6d706c69616e6365526571756972656d656e744368616e6765640c007c01284964656e7469747949640000a001185469636b65720000a5020154436f6d706c69616e6365526571756972656d656e74000608e0456d6974746564207768656e20636f6d706c69616e636520726571756972656d656e7420676574206d6f6469666965642f6368616e67652eb02863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e785472757374656444656661756c74436c61696d49737375657241646465640c007c01284964656e7469747949640000a001185469636b65720000c1020134547275737465644973737565720007081501456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b657220676574732061646465642ea82863616c6c6572204449442c205469636b65722c2041646465642054727573746564497373756572292e805472757374656444656661756c74436c61696d49737375657252656d6f7665640c007c01284964656e7469747949640000a001185469636b657200007c01284964656e7469747949640008081901456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b6572206765742072656d6f7665642eb02863616c6c6572204449442c205469636b65722c2052656d6f7665642054727573746564497373756572292e085c4576656e747320666f722074686973206d6f64756c652e00a5020c4c706f6c796d6573685f7072696d69746976657348636f6d706c69616e63655f6d616e6167657254436f6d706c69616e6365526571756972656d656e7400000c014473656e6465725f636f6e646974696f6e73a90201385665633c436f6e646974696f6e3e00014c72656365697665725f636f6e646974696f6e73a90201385665633c436f6e646974696f6e3e000108696410010c7533320000a902000002ad0200ad020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e24436f6e646974696f6e0000080138636f6e646974696f6e5f74797065b1020134436f6e646974696f6e5479706500011c69737375657273bd0201485665633c547275737465644973737565723e0000b1020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e34436f6e646974696f6e5479706500011424497350726573656e740400f80114436c61696d000000204973416273656e740400f80114436c61696d0001001c4973416e794f660400b50201285665633c436c61696d3e0002002049734e6f6e654f660400b50201285665633c436c61696d3e0003002849734964656e746974790400b90201385461726765744964656e7469747900040000b502000002f800b9020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e385461726765744964656e746974790001083445787465726e616c4167656e7400000020537065636966696304007c01284964656e74697479496400010000bd02000002c10200c1020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e345472757374656449737375657200000801186973737565727c01284964656e74697479496400012c747275737465645f666f72c502012854727573746564466f720000c5020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e2854727573746564466f720001080c416e790000002053706563696669630400c90201385665633c436c61696d547970653e00010000c902000002cd0200cd020c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d24436c61696d54797065000130284163637265646974656400000024416666696c69617465000100244275794c6f636b75700002002853656c6c4c6f636b757000030050437573746f6d657244756544696c6967656e6365000400404b6e6f77596f7572437573746f6d6572000500304a7572697364696374696f6e000600204578656d707465640007001c426c6f636b656400080048496e766573746f72556e697175656e657373000900184e6f54797065000a0050496e766573746f72556e697175656e6573735632000b0000d102000002a50200d502086070616c6c65745f636f72706f726174655f616374696f6e73144576656e740001245c4d617844657461696c734c656e6774684368616e67656408007c01284964656e746974794964000010010c753332000008d4546865206d6178696d756d206c656e677468206f66206064657461696c736020696e20627974657320776173206368616e6765642e50284743204449442c206e6577206c656e677468297844656661756c745461726765744964656e7469746965734368616e6765640c007c01284964656e7469747949640000a001185469636b65720000d90201405461726765744964656e746974696573000108ec54686520736574206f662064656661756c7420605461726765744964656e7469746965736020666f722061207469636b6572206368616e6765642ea4284167656e74204449442c205469636b65722c204e6577205461726765744964656e746974696573297044656661756c7457697468686f6c64696e675461784368616e6765640c007c01284964656e7469747949640000a001185469636b657200007d02010c546178000208c45468652064656661756c742077697468686f6c64696e672074617820666f722061207469636b6572206368616e6765642e74284167656e74204449442c205469636b65722c204e657720546178292e6044696457697468686f6c64696e675461784368616e67656410007c01284964656e7469747949640000a001185469636b657200007c01284964656e7469747949640000e102012c4f7074696f6e3c5461783e000308ec5468652077697468686f6c64696e672074617820737065636966696320746f20612044494420666f722061207469636b6572206368616e6765642ea0284167656e74204449442c205469636b65722c205461786564204449442c204e657720546178292e384341415472616e736665727265640c007c01284964656e7469747949640000a001185469636b657200007c01284964656e7469747949640004086c41206e65772044494420776173206d61646520746865204341412e8c284e657720434141204449442c205469636b65722c204e65772043414120444944292e2c4341496e6974696174656410006d0201204576656e74446964000071020110434149640000e502013c436f72706f72617465416374696f6e000001030124434144657461696c730005084c412043412077617320696e697469617465642ea8284167656e74204449442c2043412069642c207468652043412c207468652043412064657461696c73293443414c696e6b6564546f446f630c007c01284964656e7469747949640000710201104341496400000503013c5665633c446f63756d656e7449643e000608844120434120776173206c696e6b656420746f206120736574206f6620646f63732eac284167656e74204449442c2043412049642c204c697374206f6620646f63206964656e746966696572732924434152656d6f76656408006d0201204576656e74446964000071020110434149640007084441204341207761732072656d6f7665642e48284167656e74204449442c20434120496429445265636f7264446174654368616e6765640c006d0201204576656e74446964000071020110434149640000e502013c436f72706f72617465416374696f6e0008046c412043412773207265636f72642064617465206368616e6765642e085c4576656e747320666f722074686973206d6f64756c652e00d902086070616c6c65745f636f72706f726174655f616374696f6e73405461726765744964656e74697469657300000801286964656e7469746965732501013c5665633c4964656e7469747949643e00012474726561746d656e74dd02013c54617267657454726561746d656e740000dd02086070616c6c65745f636f72706f726174655f616374696f6e733c54617267657454726561746d656e740001081c496e636c7564650000001c4578636c75646500010000e10204184f7074696f6e040454017d020108104e6f6e6500000010536f6d6504007d020000010000e502086070616c6c65745f636f72706f726174655f616374696f6e733c436f72706f72617465416374696f6e00001801106b696e64e902011843414b696e640001246465636c5f646174652001184d6f6d656e7400012c7265636f72645f64617465ed0201484f7074696f6e3c5265636f7264446174653e00011c74617267657473d90201405461726765744964656e74697469657300015c64656661756c745f77697468686f6c64696e675f7461787d02010c54617800013c77697468686f6c64696e675f746178f90201585665633c284964656e7469747949642c20546178293e0000e902086070616c6c65745f636f72706f726174655f616374696f6e731843414b696e64000114485072656469637461626c6542656e6566697400000050556e7072656469637461626c6542656e65666974000100304973737565724e6f746963650002003852656f7267616e697a6174696f6e000300144f7468657200040000ed0204184f7074696f6e04045401f1020108104e6f6e6500000010536f6d650400f1020000010000f102086070616c6c65745f636f72706f726174655f616374696f6e73285265636f7264446174650000080110646174652001184d6f6d656e74000128636865636b706f696e74f50201304341436865636b706f696e740000f502086070616c6c65745f636f72706f726174655f616374696f6e73304341436865636b706f696e74000108245363686564756c656408009d0201285363686564756c654964000020010c753634000000204578697374696e67040089020130436865636b706f696e74496400010000f902000002fd0200fd02000004087c7d02000103086070616c6c65745f636f72706f726174655f616374696f6e7324434144657461696c730000040028011c5665633c75383e0000050300000201020009030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74144576656e740001181c4372656174656414007c01284964656e7469747949640000710201104341496400000d03013c42616c6c6f7454696d6552616e676500001103012842616c6c6f744d657461000019010110626f6f6c00000c7c4120636f72706f726174652062616c6c6f742077617320637265617465642e001501284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e642c2042616c6c6f74206d657461646174612c2052435620656e61626c65643f2920566f7465436173740c007c01284964656e7469747949640000710201104341496400003103013c5665633c42616c6c6f74566f74653e00010c984120766f746520776173206361737420696e206120636f72706f726174652062616c6c6f742e006028766f746572204449442c20434149642c20566f746573293052616e67654368616e6765640c007c01284964656e7469747949640000710201104341496400000d03013c42616c6c6f7454696d6552616e676500020cd04120636f72706f726174652062616c6c6f74206368616e676564206974732073746172742f656e6420646174652072616e67652e0098284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e64292c4d6574614368616e6765640c007c01284964656e7469747949640000710201104341496400001103012842616c6c6f744d65746100030ca04120636f72706f726174652062616c6c6f74206368616e67656420697473206d657461646174612e0088284167656e74204449442c20434127732049442c204e6577206d6574616461746129285243564368616e6765640c007c01284964656e74697479496400007102011043414964000019010110626f6f6c00040cac4120636f72706f726174652062616c6c6f74206368616e676564206974732052435620737570706f72742e0084284167656e74204449442c20434127732049442c204e657720737570706f7274291c52656d6f76656408006d0201204576656e744469640000710201104341496400050c7c4120636f72706f726174652062616c6c6f74207761732072656d6f7665642e0050284167656e74204449442c204341277320494429085c4576656e747320666f722074686973206d6f64756c652e000d030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f743c42616c6c6f7454696d6552616e6765000008011473746172742001184d6f6d656e7400010c656e642001184d6f6d656e74000011030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742842616c6c6f744d65746100000801147469746c651503012c42616c6c6f745469746c6500011c6d6f74696f6e731903012c5665633c4d6f74696f6e3e000015030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c42616c6c6f745469746c650000040028011c5665633c75383e000019030000021d03001d030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74184d6f74696f6e00000c01147469746c652103012c4d6f74696f6e5469746c65000124696e666f5f6c696e6b250301384d6f74696f6e496e666f4c696e6b00011c63686f69636573290301405665633c43686f6963655469746c653e000021030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c4d6f74696f6e5469746c650000040028011c5665633c75383e000025030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74384d6f74696f6e496e666f4c696e6b0000040028011c5665633c75383e000029030000022d03002d030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c43686f6963655469746c650000040028011c5665633c75383e0000310300000235030035030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742842616c6c6f74566f74650000080114706f77657218011c42616c616e636500012066616c6c6261636b3903012c4f7074696f6e3c7531363e0000390304184f7074696f6e040454013d030108104e6f6e6500000010536f6d6504003d0300000100003d0300000504004103082c70616c6c65745f70697073205261774576656e7408244163636f756e74496401002c426c6f636b4e756d6265720110015050486973746f726963616c506970735072756e65640c007c01284964656e746974794964000019010110626f6f6c000019010110626f6f6c00000445015072756e696e6720486973746f726963616c205049507320697320656e61626c6564206f722064697361626c6564202863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293c50726f706f73616c4372656174656420007c01284964656e74697479496400004503014c50726f706f7365723c4163636f756e7449643e00004d0301145069704964000018011c42616c616e636500005102012c4f7074696f6e3c55726c3e0000510301584f7074696f6e3c5069704465736372697074696f6e3e00003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00005903013050726f706f73616c4461746100011498412050495020776173206d61646520776974682061206042616c616e636560207374616b652e00342320506172616d65746572733a00510143616c6c6572204449442c2050726f706f7365722c205049502049442c206465706f7369742c2055524c2c206465736372697074696f6e2c206578706972792074696d652c2070726f706f73616c20646174612e5050726f706f73616c5374617465557064617465640c007c01284964656e74697479496400004d030114506970496400005d03013450726f706f73616c5374617465000204d854726967676572656420656163682074696d6520746865207374617465206f6620612070726f706f73616c20697320616d656e64656414566f74656414007c01284964656e74697479496400000001244163636f756e74496400004d0301145069704964000019010110626f6f6c000018011c42616c616e6365000304f8604163636f756e7449646020766f7465642060626f6f6c60206f6e207468652070726f706f73616c207265666572656e636564206279206050697049646024506970436c6f7365640c007c01284964656e74697479496400004d0301145069704964000019010110626f6f6c000404e850697020686173206265656e20636c6f7365642c20626f6f6c20696e6469636174657320776865746865722064617461206973207072756e656448457865637574696f6e5363686564756c65640c007c01284964656e74697479496400004d0301145069704964000010012c426c6f636b4e756d626572000504e0457865637574696f6e206f6620612050495020686173206265656e207363686564756c656420617420737065636966696320626c6f636b2e7444656661756c74456e6163746d656e74506572696f644368616e6765640c007c01284964656e746974794964000010012c426c6f636b4e756d626572000010012c426c6f636b4e756d626572000608d844656661756c7420656e6163746d656e7420706572696f642028696e20626c6f636b732920686173206265656e206368616e6765642e902863616c6c6572204449442c206f6c6420706572696f642c206e657720706572696f6429744d696e696d756d50726f706f73616c4465706f7369744368616e6765640c007c01284964656e746974794964000018011c42616c616e6365000018011c42616c616e63650007087c4d696e696d756d206465706f73697420616d6f756e74206d6f646966696564902863616c6c6572204449442c206f6c6420616d6f756e742c206e657720616d6f756e74295c50656e64696e675069704578706972794368616e6765640c007c01284964656e74697479496400003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e000808cc416d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020657870697265732e902863616c6c6572204449442c206f6c64206578706972792c206e65772065787069727929584d6178506970536b6970436f756e744368616e6765640c007c01284964656e7469747949640000080130536b6970706564436f756e740000080130536b6970706564436f756e74000908cc546865206d6178696d756d2074696d65732061205049502063616e20626520736b697070656420776173206368616e6765642e882863616c6c6572204449442c206f6c642076616c75652c206e65772076616c756529544163746976655069704c696d69744368616e6765640c007c01284964656e746974794964000010010c753332000010010c753332000a08b8546865206d6178696d756d206e756d626572206f6620616374697665205049507320776173206368616e6765642e882863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293850726f706f73616c526566756e640c007c01284964656e74697479496400004d0301145069704964000018011c42616c616e6365000b083c526566756e642070726f706f73616c482869642c20746f74616c20616d6f756e74293c536e617073686f74436c656172656408007c01284964656e746974794964000061030128536e617073686f744964000c046454686520736e617073686f742077617320636c65617265642e34536e617073686f7454616b656e0c007c01284964656e746974794964000061030128536e617073686f74496400006503014c5665633c536e617073686f747465645069703e000d046441206e657720736e617073686f74207761732074616b656e2e28506970536b69707065640c007c01284964656e74697479496400004d03011450697049640000080130536b6970706564436f756e74000e08a0412050495020696e2074686520736e617073686f742071756575652077617320736b69707065642e802867635f6469642c207069705f69642c206e65775f736b69705f636f756e742958536e617073686f74526573756c7473456e616374656414007c01284964656e7469747949640000710301484f7074696f6e3c536e617073686f7449643e0000750301685665633c2850697049642c20536b6970706564436f756e74293e00007d0301285665633c50697049643e00007d0301285665633c50697049643e000f083101526573756c74732028652e672e2c20617070726f7665642c2072656a65637465642c20616e6420736b6970706564292c207765726520656e616374656420666f7220736f6d6520504950732e51012867635f6469642c20736e617073686f745f69645f6f70742c20736b69707065645f706970735f776974685f6e65775f636f756e742c2072656a65637465645f706970732c20617070726f7665645f706970732964457865637574696f6e5363686564756c696e674661696c65640c007c01284964656e74697479496400004d0301145069704964000010012c426c6f636b4e756d6265720010040d015363686564756c696e67206f66207468652050495020666f7220657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e3c4578706972795363686564756c65640c007c01284964656e74697479496400004d0301145069704964000010012c426c6f636b4e756d626572001104985468652050495020686173206265656e207363686564756c656420666f72206578706972792e584578706972795363686564756c696e674661696c65640c007c01284964656e74697479496400004d0301145069704964000010012c426c6f636b4e756d62657200120401015363686564756c696e67206f66207468652050495020666f7220657870697279206661696c656420696e20746865207363686564756c65722070616c6c65742e64457865637574696f6e43616e63656c6c696e674661696c656404004d0301145069704964001304f043616e63656c6c696e67207468652050495020657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e085c4576656e747320666f722074686973206d6f64756c652e004503082c70616c6c65745f706970732050726f706f73657204244163636f756e7449640100010824436f6d6d756e69747904000001244163636f756e74496400000024436f6d6d6974746565040049030124436f6d6d6974746565000100004903082c70616c6c65745f7069707324436f6d6d697474656500010824546563686e6963616c0000001c55706772616465000100004d03082c70616c6c65745f706970731450697049640000040010010c7533320000510304184f7074696f6e0404540155030108104e6f6e6500000010536f6d650400550300000100005503082c70616c6c65745f70697073385069704465736372697074696f6e0000040028011c5665633c75383e00005903082c70616c6c65745f706970733050726f706f73616c4461746100010810486173680400240110483235360000002050726f706f73616c040028011c5665633c75383e000100005d03082c70616c6c65745f706970733450726f706f73616c53746174650001181c50656e64696e670000002052656a6563746564000100245363686564756c6564000200184661696c65640003002045786563757465640004001c45787069726564000500006103082c70616c6c65745f7069707328536e617073686f7449640000040010010c753332000065030000026903006903082c70616c6c65745f7069707338536e617073686f74746564506970000008010869644d03011450697049640001187765696768746d03013c28626f6f6c2c2042616c616e63652900006d030000040819011800710304184f7074696f6e0404540161030108104e6f6e6500000010536f6d6504006103000001000075030000027903007903000004084d0308007d030000024d030081031064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747324706f7274666f6c696f144576656e7400011840506f7274666f6c696f437265617465640c007c01284964656e7469747949640000e0013c506f7274666f6c696f4e756d626572000085030134506f7274666f6c696f4e616d65000018b054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c7920637265617465642e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572402a20706f7274666f6c696f206e616d6540506f7274666f6c696f44656c6574656408007c01284964656e7469747949640000e0013c506f7274666f6c696f4e756d626572000114b054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c792072656d6f7665642e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572584d6f7665644265747765656e506f7274666f6c696f7318007c01284964656e7469747949640000d8012c506f7274666f6c696f49640000d8012c506f7274666f6c696f49640000a001185469636b6572000018011c42616c616e636500008001304f7074696f6e3c4d656d6f3e000220f04120746f6b656e20616d6f756e7420686173206265656e206d6f7665642066726f6d206f6e6520706f7274666f6c696f20746f20616e6f746865722e00302320506172616d6574657273302a206f726967696e20444944482a20736f7572636520706f7274666f6c696f5c2a2064657374696e6174696f6e20706f7274666f6c696f382a206173736574207469636b6572782a2061737365742062616c616e6365207468617420776173206d6f76656440506f7274666f6c696f52656e616d65640c007c01284964656e7469747949640000e0013c506f7274666f6c696f4e756d626572000085030134506f7274666f6c696f4e616d65000318fc54686520706f7274666f6c696f206964656e746966696564207769746820606e756d6020686173206265656e2072656e616d656420746f20606e616d65602e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572402a20706f7274666f6c696f206e616d653855736572506f7274666f6c696f7308007c01284964656e7469747949640000890301945665633c28506f7274666f6c696f4e756d6265722c20506f7274666f6c696f4e616d65293e000414d4416c6c206e6f6e2d64656661756c7420706f7274666f6c696f206e756d6265727320616e64206e616d6573206f662061204449442e00302320506172616d6574657273302a206f726967696e20444944742a20766563746f72206f66206e756d6265722d6e616d6520706169727364506f7274666f6c696f437573746f6469616e4368616e6765640c007c01284964656e7469747949640000d8012c506f7274666f6c696f496400007c01284964656e746974794964000518f4437573746f6479206f66206120706f7274666f6c696f20686173206265656e20676976656e20746f206120646966666572656e74206964656e7469747900302320506172616d6574657273302a206f726967696e20444944382a20706f7274666f6c696f206964642a20706f7274666f6c696f20637573746f6469616e20646964085c4576656e747320666f722074686973206d6f64756c652e0085030c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f696434506f7274666f6c696f4e616d650000040028011c5665633c75383e000089030000028d03008d0300000408e08503009103084c70616c6c65745f70726f746f636f6c5f666565205261774576656e7404244163636f756e7449640100010c1846656553657408007c01284964656e746974794964000018011c42616c616e6365000004845468652070726f746f636f6c20666565206f6620616e206f7065726174696f6e2e38436f656666696369656e7453657408007c01284964656e746974794964000095030120506f73526174696f000104505468652066656520636f656666696369656e742e284665654368617267656408000001244163636f756e744964000018011c42616c616e63650002043046656520636861726765642e085c4576656e747320666f722074686973206d6f64756c652e009503084c706f6c796d6573685f7072696d69746976657320506f73526174696f0000080010010c753332000010010c753332000099030c4070616c6c65745f7363686564756c65721870616c6c6574144576656e7404045400010c245363686564756c65640800100138543a3a426c6f636b4e756d626572000010010c753332000004905363686564756c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d2043616e63656c65640800100138543a3a426c6f636b4e756d626572000010010c7533320001048c43616e63656c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d28446973706174636865640c009d03016c5461736b416464726573733c543a3a426c6f636b4e756d6265723e00006102013c4f7074696f6e3c5665633c75383e3e0000310101384469737061746368526573756c74000204a84469737061746368656420736f6d65207461736b2e205c5b7461736b2c2069642c20726573756c745c5d04304576656e747320747970652e9d0300000408101000a103084470616c6c65745f736574746c656d656e74205261774576656e740c184d6f6d656e7401202c426c6f636b4e756d6265720110244163636f756e7449640100014c3056656e75654372656174656410007c01284964656e7469747949640000a503011c56656e756549640000a903013056656e756544657461696c730000ad03012456656e756554797065000004ec41206e65772076656e756520686173206265656e206372656174656420286469642c2076656e75655f69642c2064657461696c732c2074797065294c56656e756544657461696c73557064617465640c007c01284964656e7469747949640000a503011c56656e756549640000a903013056656e756544657461696c730001041501416e206578697374696e672076656e756527732064657461696c7320686173206265656e207570646174656420286469642c2076656e75655f69642c2064657461696c73294056656e756554797065557064617465640c007c01284964656e7469747949640000a503011c56656e756549640000ad03012456656e756554797065000204fc416e206578697374696e672076656e75652773207479706520686173206265656e207570646174656420286469642c2076656e75655f69642c20747970652948496e737472756374696f6e437265617465641c007c01284964656e7469747949640000a503011c56656e756549640000b1030134496e737472756374696f6e49640000b503016c536574746c656d656e74547970653c426c6f636b4e756d6265723e0000f401384f7074696f6e3c4d6f6d656e743e0000f401384f7074696f6e3c4d6f6d656e743e0000b90301205665633c4c65673e0003088841206e657720696e737472756374696f6e20686173206265656e20637265617465643901286469642c2076656e75655f69642c20696e737472756374696f6e5f69642c20736574746c656d656e745f747970652c2074726164655f646174652c2076616c75655f646174652c206c656773294c496e737472756374696f6e41666669726d65640c007c01284964656e7469747949640000d8012c506f7274666f6c696f49640000b1030134496e737472756374696f6e49640004040501416e20696e737472756374696f6e20686173206265656e2061666669726d656420286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964295041666669726d6174696f6e57697468647261776e0c007c01284964656e7469747949640000d8012c506f7274666f6c696f49640000b1030134496e737472756374696f6e49640005040901416e2061666669726d6174696f6e20686173206265656e2077697468647261776e20286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964294c496e737472756374696f6e52656a656374656408007c01284964656e7469747949640000b1030134496e737472756374696f6e4964000604d8416e20696e737472756374696f6e20686173206265656e2072656a656374656420286469642c20696e737472756374696f6e5f6964293852656365697074436c61696d656418007c01284964656e7469747949640000b1030134496e737472756374696f6e49640000c10301144c65674964000020010c75363400000001244163636f756e7449640000c503013c526563656970744d657461646174610007047d0141207265636569707420686173206265656e20636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e65722c2072656365697074206d6574616461746129585265636569707456616c69646974794368616e67656410007c01284964656e74697479496400000001244163636f756e744964000020010c753634000019010110626f6f6c0008040d0141207265636569707420686173206265656e20696e76616c69646174656420286469642c207369676e65722c20726563656970745f7569642c2076616c6964697479294052656365697074556e636c61696d656414007c01284964656e7469747949640000b1030134496e737472756374696f6e49640000c10301144c65674964000020010c75363400000001244163636f756e7449640009043d0141207265636569707420686173206265656e20756e636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e6572293856656e756546696c746572696e670c007c01284964656e7469747949640000a001185469636b6572000019010110626f6f6c000a04690156656e75652066696c746572696e6720686173206265656e20656e61626c6564206f722064697361626c656420666f722061207469636b657220286469642c207469636b65722c2066696c746572696e675f656e61626c6564293456656e756573416c6c6f7765640c007c01284964656e7469747949640000a001185469636b65720000c90301305665633c56656e756549643e000b04dc56656e75657320616464656420746f20616c6c6f77206c69737420286469642c207469636b65722c207665633c76656e75655f69643e293456656e756573426c6f636b65640c007c01284964656e7469747949640000a001185469636b65720000c90301305665633c56656e756549643e000c04dc56656e75657320616464656420746f20626c6f636b206c69737420286469642c207469636b65722c207665633c76656e75655f69643e29484c65674661696c6564457865637574696f6e0c007c01284964656e7469747949640000b1030134496e737472756374696f6e49640000c10301144c65674964000d04dc457865637574696f6e206f662061206c6567206661696c656420286469642c20696e737472756374696f6e5f69642c206c65675f69642944496e737472756374696f6e4661696c656408007c01284964656e7469747949640000b1030134496e737472756374696f6e4964000e04c8496e737472756374696f6e206661696c656420657865637574696f6e20286469642c20696e737472756374696f6e5f6964294c496e737472756374696f6e457865637574656408007c01284964656e7469747949640000b1030134496e737472756374696f6e4964000f04d8496e737472756374696f6e206578656375746564207375636365737366756c6c79286469642c20696e737472756374696f6e5f6964294456656e7565556e617574686f72697a65640c007c01284964656e7469747949640000a001185469636b65720000a503011c56656e75654964001004010156656e7565206e6f742070617274206f662074686520746f6b656e277320616c6c6f77206c69737420286469642c205469636b65722c2076656e75655f696429405363686564756c696e674661696c6564040064013444697370617463684572726f72001104805363686564756c696e67206f6620696e737472756374696f6e206661696c732e58496e737472756374696f6e52657363686564756c656408007c01284964656e7469747949640000b1030134496e737472756374696f6e49640012086c496e737472756374696f6e2069732072657363686564756c65642e702863616c6c6572204449442c20696e737472756374696f6e5f696429085c4576656e747320666f722074686973206d6f64756c652e00a503084470616c6c65745f736574746c656d656e741c56656e756549640000040020010c7536340000a903084470616c6c65745f736574746c656d656e743056656e756544657461696c730000040028011c5665633c75383e0000ad03084470616c6c65745f736574746c656d656e742456656e756554797065000110144f7468657200000030446973747269627574696f6e0001000c53746f0002002045786368616e676500030000b103084470616c6c65745f736574746c656d656e7434496e737472756374696f6e49640000040020010c7536340000b503084470616c6c65745f736574746c656d656e7438536574746c656d656e7454797065042c426c6f636b4e756d626572011001084c536574746c654f6e41666669726d6174696f6e00000034536574746c654f6e426c6f636b040010012c426c6f636b4e756d62657200010000b903000002bd0300bd03084470616c6c65745f736574746c656d656e740c4c6567000010011066726f6dd8012c506f7274666f6c696f4964000108746fd8012c506f7274666f6c696f49640001146173736574a001185469636b6572000118616d6f756e7418011c42616c616e63650000c103084470616c6c65745f736574746c656d656e74144c656749640000040020010c7536340000c503084470616c6c65745f736574746c656d656e743c526563656970744d657461646174610000040028011c5665633c75383e0000c903000002a50300cd031064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732873746174697374696373144576656e740001183853746174547970657341646465640c007c01284964656e7469747949640000d1030128417373657453636f70650000d50301345665633c53746174547970653e00000c685374617420747970657320616464656420746f2061737365742e007c2843616c6c6572204449442c2041737365742c2053746174207479706573294053746174547970657352656d6f7665640c007c01284964656e7469747949640000d1030128417373657453636f70650000d50301345665633c53746174547970653e00010c78537461742074797065732072656d6f7665642066726f6d2061737365742e007c2843616c6c6572204449442c2041737365742c20537461742074797065732944417373657453746174735570646174656410007c01284964656e7469747949640000d1030128417373657453636f70650000d903012053746174547970650000e903013c5665633c537461745570646174653e00020c50417373657420737461747320757064617465642e009c2843616c6c6572204449442c2041737365742c205374617420747970652c2055706461746573296853657441737365745472616e73666572436f6d706c69616e63650c007c01284964656e7469747949640000d1030128417373657453636f70650000010401585665633c5472616e73666572436f6e646974696f6e3e00030ca0536574205472616e7366657220636f6d706c69616e63652072756c657320666f722061737365742e00a02843616c6c6572204449442c2041737365742c205472616e7366657220636f6e646974696f6e7329805472616e73666572436f6e646974696f6e4578656d7074696f6e7341646465640c007c01284964656e74697479496400000d0401685472616e73666572436f6e646974696f6e4578656d70744b65790000250101305665633c53636f706549643e00040c0901416464206053636f706549646073206578656d707420666f72207472616e7366657220636f6e646974696f6e73206d61746368696e67206578656d7074206b65792e00882843616c6c6572204449442c204578656d7074206b65792c20456e74697469657329885472616e73666572436f6e646974696f6e4578656d7074696f6e7352656d6f7665640c007c01284964656e74697479496400000d0401685472616e73666572436f6e646974696f6e4578656d70744b65790000250101305665633c53636f706549643e00050c150152656d6f7665206053636f706549646073206578656d707420666f72207472616e7366657220636f6e646974696f6e73206d61746368696e67206578656d7074206b65792e00882843616c6c6572204449442c204578656d7074206b65792c20456e74697469657329085c4576656e747320666f722074686973206d6f64756c652e00d1030c4c706f6c796d6573685f7072696d697469766573287374617469737469637328417373657453636f7065000104185469636b65720400a001185469636b657200000000d503000002d90300d9030c4c706f6c796d6573685f7072696d697469766573287374617469737469637320537461745479706500000801086f70dd030128537461744f7054797065000130636c61696d5f697373756572e103017c4f7074696f6e3c28436c61696d547970652c204964656e746974794964293e0000dd030c4c706f6c796d6573685f7072696d697469766573287374617469737469637328537461744f705479706500010814436f756e740000001c42616c616e636500010000e10304184f7074696f6e04045401e5030108104e6f6e6500000010536f6d650400e5030000010000e50300000408cd027c00e903000002ed0300ed030c4c706f6c796d6573685f7072696d6974697665732873746174697374696373285374617455706461746500000801106b657932f103012853746174326e644b657900011476616c7565fd0301304f7074696f6e3c753132383e0000f1030c4c706f6c796d6573685f7072696d69746976657328737461746973746963732853746174326e644b65790001082c4e6f436c61696d5374617400000014436c61696d0400f503012453746174436c61696d00010000f5030c4c706f6c796d6573685f7072696d69746976657328737461746973746963732453746174436c61696d00010c2841636372656469746564040019010110626f6f6c00000024416666696c69617465040019010110626f6f6c000100304a7572697364696374696f6e0400f903014c4f7074696f6e3c436f756e747279436f64653e00020000f90304184f7074696f6e0404540105010108104e6f6e6500000010536f6d65040005010000010000fd0304184f7074696f6e04045401180108104e6f6e6500000010536f6d650400180000010000010400000205040005040c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e6365445472616e73666572436f6e646974696f6e000110404d6178496e766573746f72436f756e74040020010c753634000000504d6178496e766573746f724f776e65727368697004000904012850657263656e7461676500010028436c61696d436f756e741000f503012453746174436c61696d00007c01284964656e746974794964000020010c7536340000f4012c4f7074696f6e3c7536343e00020038436c61696d4f776e6572736869701000f503012453746174436c61696d00007c01284964656e74697479496400000904012850657263656e7461676500000904012850657263656e746167650003000009040c4c706f6c796d6573685f7072696d69746976657328737461746973746963733c4861736861626c655065726d696c6c000004007d02015873705f61726974686d657469633a3a5065726d696c6c00000d040c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e6365685472616e73666572436f6e646974696f6e4578656d70744b657900000c01146173736574d1030128417373657453636f70650001086f70dd030128537461744f7054797065000128636c61696d5f74797065110401444f7074696f6e3c436c61696d547970653e0000110404184f7074696f6e04045401cd020108104e6f6e6500000010536f6d650400cd0200000100001504082870616c6c65745f73746f205261774576656e7404184d6f6d656e74012001184446756e647261697365724372656174656410007c01284964656e74697479496400001904013046756e64726169736572496400001d04013846756e647261697365724e616d6500002104014846756e647261697365723c4d6f6d656e743e0000088841206e65772066756e6472616973657220686173206265656e20637265617465642efc284167656e74204449442c2066756e647261697365722069642c2066756e64726169736572206e616d652c2066756e647261697365722064657461696c732920496e76657374656418007c01284964656e74697479496400001904013046756e6472616973657249640000a001185469636b65720000a001185469636b6572000018011c42616c616e6365000018011c42616c616e63650001089c416e20696e766573746f7220696e76657374656420696e207468652066756e647261697365722e850128496e766573746f722c2066756e647261697365725f69642c206f66666572696e6720746f6b656e2c20726169736520746f6b656e2c206f66666572696e675f746f6b656e5f616d6f756e742c2072616973655f746f6b656e5f616d6f756e74294046756e6472616973657246726f7a656e08007c01284964656e74697479496400001904013046756e64726169736572496400020874412066756e6472616973657220686173206265656e2066726f7a656e2e68284167656e74204449442c2066756e64726169736572206964294846756e64726169736572556e66726f7a656e08007c01284964656e74697479496400001904013046756e6472616973657249640003087c412066756e6472616973657220686173206265656e20756e66726f7a656e2e68284167656e74204449442c2066756e64726169736572206964296046756e6472616973657257696e646f774d6f64696669656418006d0201204576656e7444696400001904013046756e64726169736572496400002001184d6f6d656e740000f401384f7074696f6e3c4d6f6d656e743e00002001184d6f6d656e740000f401384f7074696f6e3c4d6f6d656e743e00040898412066756e647261697365722077696e646f7720686173206265656e206d6f6469666965642e0901284167656e74204449442c2066756e647261697365722069642c206f6c645f73746172742c206f6c645f656e642c206e65775f73746172742c206e65775f656e64294046756e64726169736572436c6f73656408007c01284964656e74697479496400001904013046756e64726169736572496400050878412066756e6472616973657220686173206265656e2073746f707065642e68284167656e74204449442c2066756e6472616973657220696429085c4576656e747320666f722074686973206d6f64756c652e001904082870616c6c65745f73746f3046756e6472616973657249640000040020010c75363400001d04082870616c6c65745f73746f3846756e647261697365724e616d650000040028011c5665633c75383e00002104082870616c6c65745f73746f2846756e6472616973657204184d6f6d656e740120002c011c63726561746f727c01284964656e7469747949640001486f66666572696e675f706f7274666f6c696fd8012c506f7274666f6c696f49640001386f66666572696e675f6173736574a001185469636b657200014472616973696e675f706f7274666f6c696fd8012c506f7274666f6c696f496400013472616973696e675f6173736574a001185469636b657200011474696572732504014c5665633c46756e64726169736572546965723e00012076656e75655f6964a503011c56656e7565496400011473746172742001184d6f6d656e7400010c656e64f401384f7074696f6e3c4d6f6d656e743e0001187374617475732d04014046756e647261697365725374617475730001486d696e696d756d5f696e766573746d656e7418011c42616c616e6365000025040000022904002904082870616c6c65745f73746f3846756e647261697365725469657200000c0114746f74616c18011c42616c616e6365000114707269636518011c42616c616e636500012472656d61696e696e6718011c42616c616e636500002d04082870616c6c65745f73746f4046756e64726169736572537461747573000110104c6976650000001846726f7a656e00010018436c6f7365640002002c436c6f7365644561726c79000300003104083c70616c6c65745f7472656173757279205261774576656e74081c42616c616e63650118244163636f756e7449640100010c50547265617375727944697362757273656d656e7410007c01284964656e74697479496400007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e636500000c8844697362757273656d656e7420746f206120746172676574204964656e746974792e000101287472656173757279206964656e746974792c20746172676574206964656e746974792c20746172676574207072696d617279206b65792c20616d6f756e742968547265617375727944697362757273656d656e744661696c656410007c01284964656e74697479496400007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e636500010ca444697362757273656d656e7420746f206120746172676574204964656e74697479206661696c65642e000101287472656173757279206964656e746974792c20746172676574206964656e746974792c20746172676574207072696d617279206b65792c20616d6f756e74295454726561737572795265696d62757273656d656e7408007c01284964656e746974794964000018011c42616c616e636500020c5c5472656173757279207265696d62757273656d656e742e006428736f75726365206964656e746974792c20616d6f756e7429085c4576656e747320666f722074686973206d6f64756c652e003504083870616c6c65745f7574696c697479144576656e7400010c404261746368496e74657272757074656408003904012c4576656e74436f756e747300003d04011c4572726f72417400000cac4261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792edc496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f72206561636820646973706174636820616e64f474686520696e646578206f6620746865206669727374206661696c696e672064697370617463682061732077656c6c20617320746865206572726f722e5442617463684f7074696d69737469634661696c656408003904012c4576656e74436f756e74730000410401305665633c4572726f7241743e00010cac4261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792ecc496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c20616e6429016120766563746f72206f6620616e79206661696c65642064697370617463686573207769746820746865697220696e646963657320616e64206173736f636961746564206572726f722e384261746368436f6d706c6574656404003904012c4576656e74436f756e7473000208c84261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722ed0496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682064697370617463682e0c5c4576656e747320666f722074686973206d6f64756c652e00304576656e747320747970652e390400000210003d040000040810640041040000023d040045041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731062617365144576656e740001043c556e65787065637465644572726f720400490401544f7074696f6e3c44697370617463684572726f723e000004e4416e20756e6578706563746564206572726f722068617070656e656420746861742073686f756c6420626520696e766573746967617465642e085c4576656e747320666f722074686973206d6f64756c652e00490404184f7074696f6e04045401640108104e6f6e6500000010536f6d6504006400000100004d041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974733c65787465726e616c5f6167656e7473144576656e740001143047726f75704372656174656410006d0201204576656e744469640000a001185469636b6572000015010110414749640000b0015045787472696e7369635065726d697373696f6e7300000c6c416e204167656e742047726f75702077617320637265617465642e00d02843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773207065726d697373696f6e73295c47726f75705065726d697373696f6e735570646174656410006d0201204576656e744469640000a001185469636b6572000015010110414749640000b0015045787472696e7369635065726d697373696f6e7300010ca4416e204167656e742047726f75702773207065726d697373696f6e732077617320757064617465642e00e02843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773206e6577207065726d697373696f6e7329284167656e7441646465640c006d0201204576656e744469640000a001185469636b65720000110101284167656e7447726f757000020c4c416e206167656e74207761732061646465642e00c42843616c6c65722f4167656e74204449442c204167656e742773207469636b65722c204167656e7427732067726f757029304167656e7452656d6f7665640c006d0201204576656e744469640000a001185469636b657200007c01284964656e74697479496400030c54416e206167656e74207761732072656d6f7665642e00a42843616c6c6572204449442c204167656e742773207469636b65722c204167656e74277320444944293047726f75704368616e67656410006d0201204576656e744469640000a001185469636b657200007c01284964656e7469747949640000110101284167656e7447726f757000040c74416e206167656e7427732067726f757020776173206368616e6765642e0015012843616c6c6572204449442c204167656e742773207469636b65722c204167656e742773204449442c20546865206e65772067726f7570206f6620746865206167656e7429085c4576656e747320666f722074686973206d6f64756c652e0051041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731c72656c61796572205261774576656e7404244163636f756e744964010001104c417574686f72697a6564506179696e674b657914006d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000020010c75363400000ccc417574686f72697a6174696f6e20676976656e20666f722060706179696e675f6b65796020746f2060757365725f6b6579602e0001012843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20496e697469616c20504f4c5958206c696d69742c204175746820494429444163636570746564506179696e674b65790c006d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e74496400010c50416363657074656420706179696e67206b65792e00882843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294052656d6f766564506179696e674b65790c006d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e74496400020c4c52656d6f76656420706179696e67206b65792e00882843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294455706461746564506f6c79784c696d697414006d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000018011c42616c616e636500030c505570646174656420706f6c7978206c696d69742e0011012843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20504f4c5958206c696d69742c206f6c642072656d61696e696e6720504f4c595829085c4576656e747320666f722074686973206d6f64756c652e005504083870616c6c65745f72657761726473205261774576656e7404244163636f756e744964010001044049746e526577617264436c61696d656408000001244163636f756e744964000018011c42616c616e63650000045c49746e207265776172642077617320636c61696d65642e085c4576656e747320666f722074686973206d6f64756c652e005904084470616c6c65745f746573745f7574696c73205261774576656e7404244163636f756e7449640100010c584d6f636b496e766573746f725549444372656174656408007c01284964656e74697479496400005d04012c496e766573746f725569640000080d0141206e6577206d6f636b65642060496e766573746f725569646020686173206265656e206372656174656420666f722074686520676976656e204964656e746974792e7428546172676574204449442c204e657720496e766573746f72556964292444696453746174757308007c01284964656e74697479496400000001244163636f756e744964000108e4456d6974732074686520604964656e7469747949646020616e642074686520604163636f756e74496460206f66207468652063616c6c65722e702843616c6c6572204449442c2043616c6c6572206163636f756e7429244364645374617475730c007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000019010110626f6f6c00020c550153686f777320746865206044494460206173736f63696174656420746f2074686520604163636f756e744964602c20616e64206120666c616720696e646963617465732069662074686174204449442068617320614076616c69642043444420636c61696d2ed828546172676574204449442c20546172676574204163636f756e742c20612076616c69642043444420636c61696d2065786973747329085c4576656e747320666f722074686973206d6f64756c652e005d040c4c706f6c796d6573685f7072696d697469766573186364645f69642c496e766573746f7255696400000400990101205b75383b2031365d0000610408306672616d655f73797374656d14506861736500010c384170706c7945787472696e736963040010010c7533320000003046696e616c697a6174696f6e00010038496e697469616c697a6174696f6e000200006504000002240069040000029d03006d0408306672616d655f73797374656d584c61737452756e74696d6555706772616465496e666f0000080130737065635f76657273696f6e7104014c636f6465633a3a436f6d706163743c7533323e000124737065635f6e616d657504016473705f72756e74696d653a3a52756e74696d65537472696e670000710400000610007504000005020079040c306672616d655f73797374656d1870616c6c65741043616c6c0404540001282866696c6c5f626c6f636b040114726174696f8d01011c50657262696c6c00000405014120646973706174636820746861742077696c6c2066696c6c2074686520626c6f636b2077656967687420757020746f2074686520676976656e20726174696f2e1872656d61726b04011872656d61726b28011c5665633c75383e000114684d616b6520736f6d65206f6e2d636861696e2072656d61726b2e002823203c7765696768743e202d20604f283129602c23203c2f7765696768743e387365745f686561705f7061676573040114706167657320010c753634000224f853657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e002823203c7765696768743e202d20604f28312960482d20312073746f726167652077726974652e602d2042617365205765696768743a20312e34303520c2b5735c2d203120777269746520746f20484541505f50414745533c2d203120646967657374206974656d2c23203c2f7765696768743e207365745f636f6465040110636f646528011c5665633c75383e0003306453657420746865206e65772072756e74696d6520636f64652e002823203c7765696768743e31012d20604f2843202b2053296020776865726520604360206c656e677468206f662060636f64656020616e642060536020636f6d706c6578697479206f66206063616e5f7365745f636f64656045012d20312063616c6c20746f206063616e5f7365745f636f6465603a20604f28532960202863616c6c73206073705f696f3a3a6d6973633a3a72756e74696d655f76657273696f6e60207768696368206973342020657870656e73697665292e842d20312073746f726167652077726974652028636f64656320604f28432960292e402d203120646967657374206974656d2e282d2031206576656e742e4d0154686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652c206275742067656e6572616c6c7920746869732069732076657279b8657870656e736976652e2057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e2c23203c2f7765696768743e5c7365745f636f64655f776974686f75745f636865636b73040110636f646528011c5665633c75383e000424190153657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e002823203c7765696768743e8c2d20604f2843296020776865726520604360206c656e677468206f662060636f646560842d20312073746f726167652077726974652028636f64656320604f28432960292e402d203120646967657374206974656d2e282d2031206576656e742e550154686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652e2057652077696c6c207472656174207468697320617320612066756c6c48626c6f636b2e2023203c2f7765696768743e5c7365745f6368616e6765735f747269655f636f6e66696704014c6368616e6765735f747269655f636f6e6669674001804f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e0005289c53657420746865206e6577206368616e676573207472696520636f6e66696775726174696f6e2e002823203c7765696768743e202d20604f28312960ac2d20312073746f72616765207772697465206f722064656c6574652028636f64656320604f28312960292ed42d20312063616c6c20746f20606465706f7369745f6c6f67603a20557365732060617070656e6460204150492c20736f204f283129602d2042617365205765696768743a20372e32313820c2b573302d204442205765696768743aa4202020202d205772697465733a204368616e67657320547269652c2053797374656d204469676573742c23203c2f7765696768743e2c7365745f73746f726167650401146974656d737d0401345665633c4b657956616c75653e0006206853657420736f6d65206974656d73206f662073746f726167652e002823203c7765696768743e902d20604f2849296020776865726520604960206c656e677468206f6620606974656d7360782d206049602073746f72616765207772697465732028604f28312960292e702d2042617365205765696768743a20302e353638202a206920c2b573642d205772697465733a204e756d626572206f66206974656d732c23203c2f7765696768743e306b696c6c5f73746f726167650401106b657973850401205665633c4b65793e000720744b696c6c20736f6d65206974656d732066726f6d2073746f726167652e002823203c7765696768743ef82d20604f28494b296020776865726520604960206c656e677468206f6620606b6579736020616e6420604b60206c656e677468206f66206f6e65206b6579602d206049602073746f726167652064656c6574696f6e732e6c2d2042617365205765696768743a202e333738202a206920c2b573642d205772697465733a204e756d626572206f66206974656d732c23203c2f7765696768743e2c6b696c6c5f70726566697808011870726566697828010c4b657900011c7375626b65797310010c75333200082c11014b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e0039012a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e6465723d0174686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e002823203c7765696768743ed82d20604f285029602077686572652060506020616d6f756e74206f66206b657973207769746820707265666978206070726566697860602d206050602073746f726167652064656c6574696f6e732e702d2042617365205765696768743a20302e383334202a205020c2b5737c2d205772697465733a204e756d626572206f66207375626b657973202b20312c23203c2f7765696768743e4472656d61726b5f776974685f6576656e7404011872656d61726b28011c5665633c75383e000918a44d616b6520736f6d65206f6e2d636861696e2072656d61726b20616e6420656d6974206576656e742e002823203c7765696768743eb42d20604f28622960207768657265206220697320746865206c656e677468206f66207468652072656d61726b2e282d2031206576656e742e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e7d040000028104008104000004082828008504000002280089040c306672616d655f73797374656d186c696d69747330426c6f636b5765696768747300000c0128626173655f626c6f636b2001185765696768740001246d61785f626c6f636b2001185765696768740001247065725f636c6173738d0401845065724469737061746368436c6173733c57656967687473506572436c6173733e00008d040c346672616d655f737570706f72741c77656967687473405065724469737061746368436c617373040454019104000c01186e6f726d616c910401045400012c6f7065726174696f6e616c91040104540001246d616e6461746f72799104010454000091040c306672616d655f73797374656d186c696d6974733c57656967687473506572436c6173730000100138626173655f65787472696e7369632001185765696768740001346d61785f65787472696e736963f401384f7074696f6e3c5765696768743e0001246d61785f746f74616cf401384f7074696f6e3c5765696768743e0001207265736572766564f401384f7074696f6e3c5765696768743e000095040c306672616d655f73797374656d186c696d6974732c426c6f636b4c656e677468000004010c6d6178990401545065724469737061746368436c6173733c7533323e000099040c346672616d655f737570706f72741c77656967687473405065724469737061746368436c6173730404540110000c01186e6f726d616c1001045400012c6f7065726174696f6e616c100104540001246d616e6461746f72791001045400009d040c346672616d655f737570706f72741c776569676874733c52756e74696d65446257656967687400000801107265616420011857656967687400011477726974652001185765696768740000a104082873705f76657273696f6e3852756e74696d6556657273696f6e00001c0124737065635f6e616d657504013452756e74696d65537472696e67000124696d706c5f6e616d657504013452756e74696d65537472696e67000144617574686f72696e675f76657273696f6e10010c753332000130737065635f76657273696f6e10010c753332000130696d706c5f76657273696f6e10010c75333200011061706973a504011c4170697356656300014c7472616e73616374696f6e5f76657273696f6e10010c7533320000a504040c436f7704045401a904000400a904000000a904000002ad0400ad0400000408b1041000b104000003080000000800b5040c306672616d655f73797374656d1870616c6c6574144572726f720404540001143c496e76616c6964537065634e616d650000081101546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e685370656356657273696f6e4e65656473546f496e63726561736500010841015468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e00020cec4661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e0009014569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e4c4e6f6e44656661756c74436f6d706f73697465000304fc537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e3c4e6f6e5a65726f526566436f756e74000404350154686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e046c4572726f7220666f72207468652053797374656d2070616c6c6574b90410346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401bd04045300000400c50401185665633c543e0000bd0400000408c1042000c1040c4473705f636f6e73656e7375735f626162650c617070185075626c696300000400bd01013c737232353531393a3a5075626c69630000c504000002bd0400c904084873705f636f6e73656e7375735f736c6f747310536c6f740000040020010c7536340000cd040c4473705f636f6e73656e7375735f626162651c64696765737473504e657874436f6e66696744657363726970746f7200010408563108010463d1040128287536342c2075363429000134616c6c6f7765645f736c6f7473d5040130416c6c6f776564536c6f747300010000d10400000408202000d504084473705f636f6e73656e7375735f6261626530416c6c6f776564536c6f747300010c305072696d617279536c6f7473000000745072696d617279416e645365636f6e64617279506c61696e536c6f74730001006c5072696d617279416e645365636f6e64617279565246536c6f747300020000d90410346672616d655f737570706f72741c73746f726167652c626f756e6465645f76656328426f756e6465645665630804540104045300000400dd0401185665633c543e0000dd040000020400e10404184f7074696f6e04045401040108104e6f6e6500000010536f6d650400040000010000e504084473705f636f6e73656e7375735f62616265584261626545706f6368436f6e66696775726174696f6e000008010463d1040128287536342c2075363429000134616c6c6f7765645f736c6f7473d5040130416c6c6f776564536c6f74730000e9040c2c70616c6c65745f626162651870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66ed040184426f783c45717569766f636174696f6e50726f6f663c543a3a4865616465723e3e00013c6b65795f6f776e65725f70726f6f66f9040140543a3a4b65794f776e657250726f6f6600001009015265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667905017468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f660d01616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c306265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66ed040184426f783c45717569766f636174696f6e50726f6f663c543a3a4865616465723e3e00013c6b65795f6f776e65725f70726f6f66f9040140543a3a4b65794f776e657250726f6f6600012009015265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667905017468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f660d01616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c306265207265706f727465642e0d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e48706c616e5f636f6e6669675f6368616e6765040118636f6e666967cd0401504e657874436f6e66696744657363726970746f720002105d01506c616e20616e2065706f636820636f6e666967206368616e67652e205468652065706f636820636f6e666967206368616e6765206973207265636f7264656420616e642077696c6c20626520656e6163746564206f6e5101746865206e6578742063616c6c20746f2060656e6163745f65706f63685f6368616e6765602e2054686520636f6e6669672077696c6c20626520616374697661746564206f6e652065706f63682061667465722e59014d756c7469706c652063616c6c7320746f2074686973206d6574686f642077696c6c207265706c61636520616e79206578697374696e6720706c616e6e656420636f6e666967206368616e6765207468617420686164546e6f74206265656e20656e6163746564207965742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632eed04084873705f636f6e73656e7375735f736c6f74734445717569766f636174696f6e50726f6f66081848656164657201f10408496401c104001001206f6666656e646572c10401084964000110736c6f74c9040110536c6f7400013066697273745f686561646572f10401184865616465720001347365636f6e645f686561646572f10401184865616465720000f104102873705f72756e74696d651c67656e65726963186865616465721848656164657208184e756d6265720110104861736801f5040014012c706172656e745f68617368240130486173683a3a4f75747075740001186e756d626572710401184e756d62657200012873746174655f726f6f74240130486173683a3a4f757470757400013c65787472696e736963735f726f6f74240130486173683a3a4f75747075740001186469676573742c01504469676573743c486173683a3a4f75747075743e0000f5040c2873705f72756e74696d65187472616974732c426c616b6554776f32353600000000f904082873705f73657373696f6e3c4d656d6265727368697050726f6f6600000c011c73657373696f6e10013053657373696f6e496e646578000128747269655f6e6f646573850401305665633c5665633c75383e3e00013c76616c696461746f725f636f756e7410013856616c696461746f72436f756e740000fd040c2c70616c6c65745f626162651870616c6c6574144572726f7204045400010c60496e76616c696445717569766f636174696f6e50726f6f660000043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c69644b65794f776e65727368697050726f6f66000104310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400020415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a09090901050c4070616c6c65745f74696d657374616d701870616c6c65741043616c6c0404540001040c73657404010c6e6f7705050124543a3a4d6f6d656e7400004054536574207468652063757272656e742074696d652e005501546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6ed470686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e0041015468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e742073706563696669656420627940604d696e696d756d506572696f64602e00d4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e002823203c7765696768743e31012d20604f2831296020284e6f7465207468617420696d706c656d656e746174696f6e73206f6620604f6e54696d657374616d7053657460206d75737420616c736f20626520604f283129602961012d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202862656361757365206f6620604469645570646174653a3a74616b656020696e402020606f6e5f66696e616c697a656029d42d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f736574602e204d75737420626520604f283129602e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e0505000006200009050000040c00181901000d050c3870616c6c65745f696e64696365731870616c6c65741043616c6c04045400011414636c61696d040114696e64657810013c543a3a4163636f756e74496e6465780000489841737369676e20616e2070726576696f75736c7920756e61737369676e656420696e6465782e00dc5061796d656e743a20604465706f736974602069732072657365727665642066726f6d207468652073656e646572206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e00f02d2060696e646578603a2074686520696e64657820746f20626520636c61696d65642e2054686973206d757374206e6f7420626520696e207573652e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e602d204f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e207472616e7366657208010c6e6577000130543a3a4163636f756e744964000114696e64657810013c543a3a4163636f756e74496e6465780001505d0141737369676e20616e20696e64657820616c7265616479206f776e6564206279207468652073656e64657220746f20616e6f74686572206163636f756e742e205468652062616c616e6365207265736572766174696f6eb86973206566666563746976656c79207472616e7366657272656420746f20746865206e6577206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0025012d2060696e646578603a2074686520696e64657820746f2062652072652d61737369676e65642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e5d012d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e642d204f6e65207472616e73666572206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743ae02020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e7429e42020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e74292c23203c2f7765696768743e1066726565040114696e64657810013c543a3a4163636f756e74496e646578000248944672656520757020616e20696e646578206f776e6564206279207468652073656e6465722e005d015061796d656e743a20416e792070726576696f7573206465706f73697420706c6163656420666f722074686520696e64657820697320756e726573657276656420696e207468652073656e646572206163636f756e742e005501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206f776e2074686520696e6465782e000d012d2060696e646578603a2074686520696e64657820746f2062652066726565642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e0084456d6974732060496e646578467265656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e602d204f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e38666f7263655f7472616e736665720c010c6e6577000130543a3a4163636f756e744964000114696e64657810013c543a3a4163636f756e74496e646578000118667265657a6519010110626f6f6c0003545501466f72636520616e20696e64657820746f20616e206163636f756e742e205468697320646f65736e277420726571756972652061206465706f7369742e2049662074686520696e64657820697320616c7265616479e868656c642c207468656e20616e79206465706f736974206973207265696d62757273656420746f206974732063757272656e74206f776e65722e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e00a42d2060696e646578603a2074686520696e64657820746f206265202872652d2961737369676e65642e5d012d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e41012d2060667265657a65603a2069662073657420746f206074727565602c2077696c6c20667265657a652074686520696e64657820736f2069742063616e6e6f74206265207472616e736665727265642e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e782d20557020746f206f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743af42020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e657229f82020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e6572292c23203c2f7765696768743e18667265657a65040114696e64657810013c543a3a4163636f756e74496e6465780004484101467265657a6520616e20696e64657820736f2069742077696c6c20616c7761797320706f696e7420746f207468652073656e646572206163636f756e742e205468697320636f6e73756d657320746865206465706f7369742e005901546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d757374206861766520616c6e6f6e2d66726f7a656e206163636f756e742060696e646578602e00ac2d2060696e646578603a2074686520696e64657820746f2062652066726f7a656e20696e20706c6163652e0088456d6974732060496e64657846726f7a656e60206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e702d20557020746f206f6e6520736c617368206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e11050c3870616c6c65745f696e64696365731870616c6c6574144572726f720404540001142c4e6f7441737369676e65640000048c54686520696e64657820776173206e6f7420616c72656164792061737369676e65642e204e6f744f776e6572000104a454686520696e6465782069732061737369676e656420746f20616e6f74686572206163636f756e742e14496e5573650002047054686520696e64657820776173206e6f7420617661696c61626c652e2c4e6f745472616e73666572000304c854686520736f7572636520616e642064657374696e6174696f6e206163636f756e747320617265206964656e746963616c2e245065726d616e656e74000404d054686520696e646578206973207065726d616e656e7420616e64206d6179206e6f742062652066726565642f6368616e6765642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a09090915050000021905001905084470616c6c65745f617574686f727368697038556e636c65456e7472794974656d0c2c426c6f636b4e756d62657201101048617368012418417574686f72010001083c496e636c7573696f6e486569676874040010012c426c6f636b4e756d62657200000014556e636c650800240110486173680000090101384f7074696f6e3c417574686f723e000100001d050c4470616c6c65745f617574686f72736869701870616c6c65741043616c6c040454000104287365745f756e636c65730401286e65775f756e636c6573210501385665633c543a3a4865616465723e0000046050726f76696465206120736574206f6620756e636c65732e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e2105000002f1040025050c4470616c6c65745f617574686f72736869701870616c6c6574144572726f7204045400011c48496e76616c6964556e636c65506172656e740000048854686520756e636c6520706172656e74206e6f7420696e2074686520636861696e2e40556e636c6573416c726561647953657400010480556e636c657320616c72656164792073657420696e2074686520626c6f636b2e34546f6f4d616e79556e636c657300020440546f6f206d616e7920756e636c65732e3047656e65736973556e636c650003045454686520756e636c652069732067656e657369732e30546f6f48696768556e636c650004047c54686520756e636c6520697320746f6f206869676820696e20636861696e2e50556e636c65416c7265616479496e636c756465640005047854686520756e636c6520697320616c726561647920696e636c756465642e204f6c64556e636c65000604b454686520756e636c652069736e277420726563656e7420656e6f75676820746f20626520696e636c756465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a09090929050000022d05002d05083c70616c6c65745f62616c616e6365732c42616c616e63654c6f636b041c42616c616e63650118000c01086964b10401384c6f636b4964656e746966696572000118616d6f756e7418011c42616c616e636500011c726561736f6e733105011c526561736f6e73000031051064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e6365731c526561736f6e7300010c0c466565000000104d6973630001000c416c6c000200003505083c70616c6c65745f62616c616e6365731043616c6c040454000118207472616e73666572080110646573743905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565cd01011c42616c616e6365000058d45472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e000501607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e1d0149742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e001501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e002823203c7765696768743e2d012d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72c82020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e65012d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e004852656c617465642066756e6374696f6e733a004d0120202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e290120202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c206361757365d0202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e842d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d41012d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429dc2d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e487472616e736665725f776974685f6d656d6f0c0110646573743905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565cd01011c42616c616e63650001106d656d6f8001304f7074696f6e3c4d656d6f3e000120fc5472616e7366657220746865206e61746976652063757272656e63792077697468207468652068656c70206f66206964656e74696669657220737472696e67ec746869732066756e6374696f6e616c6974792063616e2068656c7020746f20646966666572656e746961746520746865207472616e73666572732e002823203c7765696768743e41012d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429dc2d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e906465706f7369745f626c6f636b5f7265776172645f726573657276655f62616c616e636504011476616c7565cd01011c42616c616e6365000204dc4d6f766520736f6d6520504f4c59582066726f6d2062616c616e6365206f662073656c6620746f2062616c616e6365206f66204252522e2c7365745f62616c616e63650c010c77686f3905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263650001206e65775f66726565cd01011c42616c616e63650001306e65775f7265736572766564cd01011c42616c616e636500031890536574207468652062616c616e636573206f66206120676976656e206163636f756e742e001d01546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c0501616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e00b0546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e38666f7263655f7472616e736665720c0118736f757263653905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365000110646573743905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565cd01011c42616c616e636500041c4d0145786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d6179206265287370656369666965642e002823203c7765696768743e3d012d2053616d65206173207472616e736665722c20627574206164646974696f6e616c207265616420616e6420777269746520626563617573652074686520736f75726365206163636f756e742069738c20206e6f7420617373756d656420746f20626520696e20746865206f7665726c61792e2c23203c2f7765696768743e506275726e5f6163636f756e745f62616c616e6365040118616d6f756e7418011c42616c616e636500050429014275726e732074686520676976656e20616d6f756e74206f6620746f6b656e732066726f6d207468652063616c6c6572277320667265652c20756e6c6f636b65642062616c616e63652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e39050c2873705f72756e74696d65306d756c746961646472657373304d756c74694164647265737308244163636f756e7449640100304163636f756e74496e6465780110011408496404000001244163636f756e74496400000014496e6465780400710401304163636f756e74496e6465780001000c526177040028011c5665633c75383e0002002441646472657373333204000401205b75383b2033325d000300244164647265737332300400f90101205b75383b2032305d000400003d05083c70616c6c65745f62616c616e636573144572726f72040454000114544c69717569646974795265737472696374696f6e73000004c44163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c204f766572666c6f7700010470476f7420616e206f766572666c6f7720616674657220616464696e674c496e73756666696369656e7442616c616e63650002047442616c616e636520746f6f206c6f7720746f2073656e642076616c7565484578697374656e7469616c4465706f736974000304e856616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369744852656365697665724364644d697373696e6700040488526563656976657220646f6573206e6f74206861766520612076616c6964204344440041050c3473705f61726974686d657469632c66697865645f706f696e7424466978656455313238000004001801107531323800004505086870616c6c65745f7472616e73616374696f6e5f7061796d656e742052656c6561736573000108245631416e6369656e740000000856320001000049050000024d05004d050c346672616d655f737570706f72741c7765696768747358576569676874546f466565436f656666696369656e74041c42616c616e6365011800100134636f6566665f696e746567657218011c42616c616e6365000128636f6566665f667261638d01011c50657262696c6c0001206e6567617469766519010110626f6f6c0001186465677265650801087538000051050c4c706f6c796d6573685f7072696d697469766573206964656e74697479244469645265636f726404244163636f756e74496401000004012c7072696d6172795f6b6579090101444f7074696f6e3c4163636f756e7449643e000055050000040859055d050059050c3c70616c6c65745f6964656e746974791474797065732c436c61696d3173744b657900000801187461726765747c01284964656e746974794964000128636c61696d5f74797065cd020124436c61696d5479706500005d050c3c70616c6c65745f6964656e746974791474797065732c436c61696d326e644b657900000801186973737565727c01284964656e74697479496400011473636f7065610501344f7074696f6e3c53636f70653e0000610504184f7074696f6e04045401fc0108104e6f6e6500000010536f6d650400fc000001000065050c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579244b65795265636f726404244163636f756e7449640100010c285072696d6172794b657904007c01284964656e746974794964000000305365636f6e646172794b657908007c01284964656e746974794964000098012c5065726d697373696f6e73000100444d756c74695369675369676e65724b657904000001244163636f756e744964000200006905000004087c00006d05000004086d01200071050c4c706f6c796d6573685f7072696d69746976657334617574686f72697a6174696f6e34417574686f72697a6174696f6e08244163636f756e7449640100184d6f6d656e74012000100148617574686f72697a6174696f6e5f646174610d010170417574686f72697a6174696f6e446174613c4163636f756e7449643e000134617574686f72697a65645f62797c01284964656e746974794964000118657870697279f401384f7074696f6e3c4d6f6d656e743e00011c617574685f696420010c75363400007505000004087c20007905083c70616c6c65745f6964656e746974791c56657273696f6e00000400080108753800007d05083c70616c6c65745f6964656e746974791043616c6c040454000164406364645f72656769737465725f6469640801387461726765745f6163636f756e74000130543a3a4163636f756e7449640001387365636f6e646172795f6b65797390017c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e00002cb8526567697374657220607461726765745f6163636f756e746020776974682061206e6577204964656e746974792e002423204661696c75726545012d20606f726967696e602068617320746f206265206120616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792ef42d2045787465726e616c207365636f6e64617279206b6579732063616e206265206c696e6b656420746f206a757374206f6e65206964656e746974792e00202320576569676874c060375f3030305f3030305f303030202b203630305f303030202a207365636f6e646172795f6b6579732e6c656e28296054696e76616c69646174655f6364645f636c61696d730c010c6364647c01284964656e74697479496400013064697361626c655f66726f6d200124543a3a4d6f6d656e74000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001102101496e76616c69646174657320616e7920636c61696d2067656e6572617465642062792060636464602066726f6d206064697361626c655f66726f6d602074696d657374616d70732e009c596f752063616e20616c736f20646566696e6520616e2065787069726174696f6e2074696d652c6d0177686963682077696c6c20696e76616c696461746520616c6c20636c61696d732067656e657261746564206279207468617420606364646020616e642072656d6f766520697420617320434444206d656d6265722067726f75702e6472656d6f76655f7365636f6e646172795f6b6579735f6f6c640401386b6579735f746f5f72656d6f7665690101705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000204e0446570726563617465642e2020506c6561736520757365206072656d6f76655f7365636f6e646172795f6b6579736020696e73746561642e486163636570745f7072696d6172795f6b6579080140726f746174696f6e5f617574685f696420010c7536340001506f7074696f6e616c5f6364645f617574685f6964f4012c4f7074696f6e3c7536343e000334650143616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e6501746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f766564250174686973206368616e676520286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e005d015468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f7264756e6c696e6b656420746f20616e79206964656e746974792e005d01446966666572732066726f6d20726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727920696e20746861742069742077696c6c20756e6c696e6b20746865206f6c64207072696d617279206b6579a4696e7374656164206f66206c656176696e672069742061732061207365636f6e64617279206b65792e002c2320417267756d656e74731d012a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e42a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f7669646572986368616e67655f6364645f726571756972656d656e745f666f725f6d6b5f726f746174696f6e040134617574685f726571756972656419010110626f6f6c00041435015365742069662043444420617574686f72697a6174696f6e20697320726571756972656420666f72207570646174696e67207072696d617279206b6579206f6620616e206964656e746974792e7843616c6c61626c652076696120726f6f742028676f7665726e616e636529002c2320417267756d656e7473cc2a2060617574685f7265717569726564602043444420417574686f72697a6174696f6e207265717569726564206f72206e6f74506a6f696e5f6964656e746974795f61735f6b657904011c617574685f696420010c753634000504904a6f696e20616e206964656e746974792061732061207365636f6e64617279206b65792e546c656176655f6964656e746974795f61735f6b65790006048c4c6561766520746865207365636f6e64617279206b65792773206964656e746974792e246164645f636c61696d0c01187461726765747c01284964656e746974794964000114636c61696df80114436c61696d000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e00070cc4416464732061206e657720636c61696d207265636f7264206f7220656469747320616e206578697374696e67206f6e652e00a84f6e6c792063616c6c6564206279206469645f6973737565722773207365636f6e64617279206b65792e307265766f6b655f636c61696d0801187461726765747c01284964656e746974794964000114636c61696df80114436c61696d000804944d61726b73207468652073706563696669656420636c61696d206173207265766f6b65642e607365745f7065726d697373696f6e5f746f5f7369676e657208010c6b65796d01015c5369676e61746f72793c543a3a4163636f756e7449643e0001147065726d7398012c5065726d697373696f6e730009040101446570726563617465642e2020506c656173652075736520607365745f7365636f6e646172795f6b65795f7065726d697373696f6e736020696e73746561642eac706c616365686f6c6465725f6c65676163795f7365745f7065726d697373696f6e5f746f5f7369676e6572000a04e8506c616365686f6c64657220666f722072656d6f76656420606c65676163795f7365745f7065726d697373696f6e5f746f5f7369676e6572602e54667265657a655f7365636f6e646172795f6b657973000b10c449742064697361626c657320616c6c207365636f6e64617279206b657973206174206064696460206964656e746974792e002023204572726f7273005c756e667265657a655f7365636f6e646172795f6b657973000c04dc52652d656e61626c657320616c6c207365636f6e64617279206b657973206f66207468652063616c6c65722773206964656e746974792e446164645f617574686f72697a6174696f6e0c01187461726765746d01015c5369676e61746f72793c543a3a4163636f756e7449643e000110646174610d01017c417574686f72697a6174696f6e446174613c543a3a4163636f756e7449643e000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e000d04584164647320616e20617574686f72697a6174696f6e2e5072656d6f76655f617574686f72697a6174696f6e0c01187461726765746d01015c5369676e61746f72793c543a3a4163636f756e7449643e00011c617574685f696420010c7536340001445f617574685f6973737565725f7061797319010110626f6f6c000e086452656d6f76657320616e20617574686f72697a6174696f6e2e75015f617574685f6973737565725f706179732064657465726d696e657320776865746865722074686520697373756572206f662074686520617574686f7269736174696f6e207061797320746865207472616e73616374696f6e20666565a46164645f7365636f6e646172795f6b6579735f776974685f617574686f72697a6174696f6e5f6f6c6408013c6164646974696f6e616c5f6b657973810501a45665633c5365636f6e646172794b6579576974684175746856313c543a3a4163636f756e7449643e3e000128657870697265735f6174200124543a3a4d6f6d656e74000f042101446570726563617465642e2020506c656173652075736520606164645f7365636f6e646172795f6b6579735f776974685f617574686f72697a6174696f6e6020696e73746561642e746164645f696e766573746f725f756e697175656e6573735f636c61696d1001187461726765747c01284964656e746974794964000114636c61696df80114436c61696d00011470726f6f669105014c496e766573746f725a4b50726f6f6644617461000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e00105009014164642060436c61696d3a3a496e766573746f72556e697175656e6573736020636c61696d20666f72206120676976656e20746172676574206964656e746974792e002823203c7765696768743e410120576569676874206f662074686520746869732065787472696e73696320697320646570656e64206f6e2074686520636f6d7075746174696f6e2074686174207573656420746f2076616c69646174652501207468652070726f6f66206f6620636c61696d2c2077686963682077696c6c206265206120636f6e7374616e7420696e646570656e64656e74206f66207573657220696e707574732e2c23203c2f7765696768743e002c2320417267756d656e7473b5012a206f726967696e202d2057686f2070726f76696465732074686520636c61696d20746f2074686520757365723f20496e207468697320636173652c20697427732074686520757365722773206163636f756e742069642061732074686520757365722070726f76696465732ee42a20746172676574202d20604964656e7469747949646020746f2077686963682074686520636c61696d20676574732061737369676e65642eb42a20636c61696d202d2060496e766573746f72556e697175656e6573736020636c61696d2064657461696c732eac2a2070726f6f66202d20546f2076616c6964617465207468652073656c66206174746573746174696f6e2e6c2a20657870697279202d20457870697279206f6620636c61696d2e002023204572726f72732d012a20604469644d757374416c7265616479457869737460205461726765742073686f756c6420616c7265616479206265656e20612070617274206f66207468652065636f73797374656d2e91012a2060436c61696d56617269616e744e6f74416c6c6f77656460205768656e206f726967696e20747279696e6720746f207061737320636c61696d2076617269616e74206f74686572207468616e2060496e766573746f72556e697175656e657373602eb9012a2060436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f77656460205768656e2069737375657220697320646966666572656e742066726f6d20746172676574206f72204344445f494420697320696e76616c696420666f7220676976656e20757365722eac2a2060496e76616c696453636f7065436c61696d205768656e2070726f6f6620697320696e76616c69642eec2a2060496e76616c6964434444496460207768656e20796f7520617265206e6f7420746865206f776e6572206f662074686174204344445f49442e4067635f6164645f6364645f636c61696d0401187461726765747c01284964656e7469747949640011044501417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c20616464732061206e65772063646420636c61696d207265636f72642e4c67635f7265766f6b655f6364645f636c61696d0401187461726765747c01284964656e7469747949640012046901417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c2072656d6f76657320616e206578697374696e672063646420636c61696d207265636f72642e806164645f696e766573746f725f756e697175656e6573735f636c61696d5f76321401187461726765747c01284964656e74697479496400011473636f7065fc011453636f7065000114636c61696df80114436c61696d00011470726f6f66a105013c53636f7065436c61696d50726f6f66000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e001300547265766f6b655f636c61696d5f62795f696e6465780c01187461726765747c01284964656e746974794964000128636c61696d5f74797065cd020124436c61696d5479706500011473636f7065610501344f7074696f6e3c53636f70653e001420f5015265766f6b6573206120737065636966696320636c61696d207573696e6720697473205b436c61696d20556e6971756520496e6465785d282f70616c6c65745f6964656e746974792f696e6465782e68746d6c23636c61696d2d756e697175652d696e6465782920636f6d706f7365642062792060746172676574602c6860636c61696d5f74797065602c20616e64206073636f7065602e000501506c65617365206e6f7465207468617420606f726967696e60206d7573742062652074686520697373756572206f66207468652074617267657420636c61696d2e002023204572726f72734d012d20605461726765744861734e6f6e5a65726f42616c616e6365417453636f7065496460207768656e20796f752074727920746f207265766f6b6520612060496e766573746f72556e697175656e6573732a602501636c61696d2c20616e64206074617267657460206964656e74697479207374696c6c206861766520616e792062616c616e6365206f6e2074686520676976656e206073636f7065602e7c726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727908011c617574685f696420010c7536340001506f7074696f6e616c5f6364645f617574685f6964f4012c4f7074696f6e3c7536343e001538650143616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e6501746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f766564290174686973206368616e67652c20286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e005d015468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f7264756e6c696e6b656420746f20616e79206964656e746974792e006101446966666572732066726f6d206163636570745f7072696d6172795f6b657920696e20746861742069742077696c6c206c6561766520746865206f6c64207072696d617279206b65792061732061207365636f6e6461727985016b6579207769746820746865207065726d697373696f6e732073706563696669656420696e2074686520636f72726573706f6e64696e6720526f746174655072696d6172794b6579546f5365636f6e6461727920617574686f72697a6174696f6ea4696e7374656164206f6620756e6c696e6b696e6720746865206f6c64207072696d617279206b65792e002c2320417267756d656e74731d012a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e42a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f7669646572946164645f7365636f6e646172795f6b6579735f776974685f617574686f72697a6174696f6e08013c6164646974696f6e616c5f6b657973c105019c5665633c5365636f6e646172794b657957697468417574683c543a3a4163636f756e7449643e3e000128657870697265735f6174200124543a3a4d6f6d656e74001630bc49742061646473207365636f6e64617279206b65797320746f20746172676574206964656e7469747920606964602e39014b65797320617265206469726563746c7920616464656420746f206964656e7469747920626563617573652065616368206f66207468656d2068617320616e20617574686f72697a6174696f6e2e0028417267756d656e74733ab0202020202d20606f726967696e60205072696d617279206b6579206f662060696460206964656e746974792eec202020202d2060696460204964656e74697479207768657265206e6577207365636f6e64617279206b6579732077696c6c2062652061646465642e6d01202020202d20606164646974696f6e616c5f6b65797360204e6577207365636f6e64617279206974656d732028616e6420746865697220617574686f72697a6174696f6e20646174612920746f2061646420746f2074617267657434202020206964656e746974792e001c4661696c757265b8202020202d2049742063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722ed0202020202d204b6579732073686f756c642062652061626c6520746f206c696e6b656420746f20616e79206964656e746974792e747365745f7365636f6e646172795f6b65795f7065726d697373696f6e7308010c6b6579000130543a3a4163636f756e7449640001147065726d7398012c5065726d697373696f6e7300170cc853657473207065726d697373696f6e7320666f7220616e20737065636966696320607461726765745f6b657960206b65792e0035014f6e6c7920746865207072696d617279206b6579206f6620616e206964656e746974792069732061626c6520746f20736574207365636f6e64617279206b6579207065726d697373696f6e732e5472656d6f76655f7365636f6e646172795f6b6579730401386b6579735f746f5f72656d6f7665ec01445665633c543a3a4163636f756e7449643e001810d452656d6f76657320737065636966696564207365636f6e64617279206b657973206f662061204449442069662070726573656e742e002423204661696c757265a049742063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e810500000285050085051064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479585365636f6e646172794b65795769746841757468563104244163636f756e7449640100000801347365636f6e646172795f6b65798905016c76313a3a5365636f6e646172794b65793c4163636f756e7449643e000138617574685f7369676e61747572658d0501104835313200008905104c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579087631305365636f6e646172794b657904244163636f756e7449640100000801187369676e65726d0101505369676e61746f72793c4163636f756e7449643e00012c7065726d697373696f6e7398012c5065726d697373696f6e7300008d05083c7072696d69746976655f7479706573104835313200000400110201205b75383b2036345d00009105104c706f6c796d6573685f7072696d69746976657354696e766573746f725f7a6b70726f6f665f646174610876314c496e766573746f725a4b50726f6f664461746100000400950501245369676e6174757265000095050c287363686e6f72726b656c107369676e245369676e61747572650000080104529905014c436f6d7072657373656452697374726574746f000104739d0501185363616c6172000099050c40637572766532353531395f64616c656b2472697374726574746f4c436f6d7072657373656452697374726574746f000004000401205b75383b2033325d00009d050c40637572766532353531395f64616c656b187363616c6172185363616c6172000004011462797465730401205b75383b2033325d0000a1050c54636f6e666964656e7469616c5f6964656e7469747930636c61696d5f70726f6f66733c53636f7065436c61696d50726f6f6600000c016470726f6f665f73636f70655f69645f77656c6c666f726d6564a50501245369676e617475726500016c70726f6f665f73636f70655f69645f6364645f69645f6d61746368a905012c5a6b50726f6f664461746100012073636f70655f6964b105013852697374726574746f506f696e740000a5050c54636f6e666964656e7469616c5f6964656e74697479107369676e245369676e61747572650000080104529905014c436f6d7072657373656452697374726574746f000104739d0501185363616c61720000a9050c54636f6e666964656e7469616c5f6964656e7469747930636c61696d5f70726f6f66732c5a6b50726f6f664461746100000c014c6368616c6c656e67655f726573706f6e736573ad0501945b5363616c61723b205a4b5f50524f4f465f444154415f4348475f524553504f4e5345535d00016073756274726163745f65787072657373696f6e735f726573b105013852697374726574746f506f696e74000158626c696e6465645f73636f70655f6469645f68617368b105013852697374726574746f506f696e740000ad05000003020000009d0500b1050c40637572766532353531395f64616c656b2472697374726574746f3852697374726574746f506f696e7400000400b505013045647761726473506f696e740000b5050c40637572766532353531395f64616c656b1c656477617264733045647761726473506f696e74000010010458b90501304669656c64456c656d656e7400010459b90501304669656c64456c656d656e740001045ab90501304669656c64456c656d656e7400010454b90501304669656c64456c656d656e740000b9051840637572766532353531395f64616c656b1c6261636b656e641873657269616c0c753634146669656c64384669656c64456c656d656e74353100000400bd0501205b7536343b20355d0000bd05000003050000002000c105000002c50500c5051064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479505365636f6e646172794b6579576974684175746804244163636f756e7449640100000801347365636f6e646172795f6b657994015c5365636f6e646172794b65793c4163636f756e7449643e000138617574685f7369676e61747572658d050110483531320000c905083c70616c6c65745f6964656e74697479144572726f7204045400018434416c72656164794c696e6b6564000004dc4f6e65207365636f6e64617279206f72207072696d617279206b65792063616e206f6e6c792062656c6f6e6720746f206f6e6520444944584d697373696e6743757272656e744964656e74697479000104ac4d697373696e672063757272656e74206964656e74697479206f6e20746865207472616e73616374696f6e30556e617574686f72697a6564000204bc5369676e61746f7279206973206e6f742070726520617574686f72697a656420627920746865206964656e7469747944496e76616c69644163636f756e744b6579000304a84163636f756e742049642063616e6e6f74206265206578747261637465642066726f6d207369676e65725c556e417574686f72697a656443646450726f76696465720004049c4f6e6c792043444420736572766963652070726f7669646572732061726520616c6c6f7765642e74496e76616c6964417574686f72697a6174696f6e46726f6d4f776e6572000504a0416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865206f776e65722e8c496e76616c6964417574686f72697a6174696f6e46726f6d43646450726f7669646572000604bc416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865204344442070726f76696465722e644e6f7443646450726f76696465724174746573746174696f6e000704b84174746573746174696f6e20776173206e6f7420627920612043444420736572766963652070726f76696465722e70417574686f72697a6174696f6e734e6f74466f7253616d6544696473000804a0417574686f72697a6174696f6e7320617265206e6f7420666f72207468652073616d65204449442e4c4469644d757374416c726561647945786973740009046c54686520444944206d75737420616c72656164792065786973742e8043757272656e744964656e7469747943616e6e6f744265466f72776172646564000a044d0143757272656e74206964656e746974792063616e6e6f7420626520666f727761726465642c206974206973206e6f742061207365636f6e64617279206b6579206f6620746172676574206964656e746974792e50417574686f72697a6174696f6e45787069726564000b049c546865206f6666636861696e20617574686f72697a6174696f6e2068617320657870697265642e385461726765744861734e6f436464000c0480546865207461726765742044494420686173206e6f2076616c6964204344442e6c417574686f72697a6174696f6e4861734265656e5265766f6b6564000d04a8417574686f72697a6174696f6e20686173206265656e206578706c696369746c79207265766f6b65642e74496e76616c6964417574686f72697a6174696f6e5369676e6174757265000e048c416e20696e76616c696420617574686f72697a6174696f6e207369676e61747572652e344b65794e6f74416c6c6f776564000f04d454686973206b6579206973206e6f7420616c6c6f77656420746f2065786563757465206120676976656e206f7065726174696f6e2e344e6f745072696d6172794b657900100461014f6e6c7920746865207072696d617279206b657920697320616c6c6f77656420746f207265766f6b6520616e204964656e74697479205369676e61746f7279206f66662d636861696e20617574686f72697a6174696f6e2e3c446964446f65734e6f7445786973740011045c5468652044494420646f6573206e6f742065786973742e40446964416c72656164794578697374730012045c5468652044494420616c7265616479206578697374732e785365636f6e646172794b657973436f6e7461696e5072696d6172794b6579001304ac546865207365636f6e64617279206b65797320636f6e7461696e20746865207072696d617279206b65792e444661696c6564546f436861726765466565001404a0436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e284e6f74415369676e6572001504d85369676e6572206973206e6f742061207365636f6e64617279206b6579206f66207468652070726f7669646564206964656e746974796c43616e6e6f744465636f64655369676e65724163636f756e744964001604150143616e6e6f7420636f6e7665727420612060543a3a4163636f756e7449646020746f2060416e795369676e61747572653a3a5369676e65723a3a4163636f756e744964602e484d756c746953696748617342616c616e636500170421014d756c74697369672063616e206e6f7420626520756e6c696e6b65642066726f6d20616e206964656e74697479207768696c65206974207374696c6c20686f6c647320504f4c595880436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f7765640018040501436f6e666964656e7469616c2053636f706520636c61696d732063616e20626520616464656420627920616e204964656e7469747920746f2069742d73656c662e44496e76616c696453636f7065436c61696d001904bc4164646974696f6e206f662061206e65772073636f706520636c61696d206765747320696e76616c6964617465642e58436c61696d56617269616e744e6f74416c6c6f776564001a04e454727920746f20616464206120636c61696d2076617269616e74207573696e6720756e2d64657369676e617465642065787472696e7369632e805461726765744861734e6f6e5a65726f42616c616e6365417453636f70654964001b04510154727920746f2064656c6574652074686520495520636c61696d206576656e207768656e20746865207573657220686173206e6f6e207a65726f2062616c616e636520617420676976656e2073636f706549642e6443444449644e6f74556e69717565466f724964656e74697479001c041d0143444449642073686f756c6420626520756e6971756520262073616d652077697468696e20616c6c2063646420636c61696d7320706f737365737365642062792061204449442e30496e76616c69644344444964001d0409014e6f6e2073797374656d61746963204344442070726f7669646572732063616e206e6f74206372656174652064656661756c74206364645f696420636c61696d732e7c436c61696d416e6450726f6f6656657273696f6e73446f4e6f744d61746368001e049c436c61696d20616e642050726f6f662076657273696f6e732061726520646966666572656e742e544163636f756e744b657949734265696e6755736564001f04d0546865206163636f756e74206b6579206973206265696e6720757365642c2069742063616e277420626520756e6c696e6b65642e48437573746f6d53636f7065546f6f4c6f6e670020086c4120637573746f6d2073636f706520697320746f6f206c6f6e672e9c49742063616e206174206d6f737420626520603332602063686172616374657273206c6f6e672e00cd05000002d10500d1051064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f757038496e6163746976654d656d62657204184d6f6d656e740120000c010869647c01284964656e74697479496400013864656163746976617465645f61742001184d6f6d656e74000118657870697279f401384f7074696f6e3c4d6f6d656e743e0000d505083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001086174f401444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572732501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ed905083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00dd050c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d651043616c6c0001a41853797374656d0400790401ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53797374656d2c2052756e74696d653e00000010426162650400e90401a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426162652c2052756e74696d653e0001002454696d657374616d700400010501b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54696d657374616d702c2052756e74696d653e0002001c496e646963657304000d0501b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496e64696365732c2052756e74696d653e00030028417574686f727368697004001d0501bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c417574686f72736869702c2052756e74696d653e0004002042616c616e6365730400350501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c42616c616e6365732c2052756e74696d653e000500204964656e7469747904007d0501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4964656e746974792c2052756e74696d653e0007004c4364645365727669636550726f7669646572730400d50501e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4364645365727669636550726f7669646572732c2052756e74696d653e00080044506f6c796d657368436f6d6d69747465650400e10501d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f6c796d657368436f6d6d69747465652c2052756e74696d653e0009004c436f6d6d69747465654d656d626572736869700400e50501e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6d6d69747465654d656d626572736869702c2052756e74696d653e000a0048546563686e6963616c436f6d6d69747465650400e90501dd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546563686e6963616c436f6d6d69747465652c2052756e74696d653e000b0070546563686e6963616c436f6d6d69747465654d656d626572736869700400ed0501050273656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546563686e6963616c436f6d6d69747465654d656d626572736869702c2052756e74696d653e000c004055706772616465436f6d6d69747465650400f10501d50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c55706772616465436f6d6d69747465652c2052756e74696d653e000d006855706772616465436f6d6d69747465654d656d626572736869700400f50501fd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c55706772616465436f6d6d69747465654d656d626572736869702c2052756e74696d653e000e00204d756c74695369670400f90501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d756c74695369672c2052756e74696d653e000f00184272696467650400fd0501ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4272696467652c2052756e74696d653e0010001c5374616b696e6704000d0601b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5374616b696e672c2052756e74696d653e0011001c53657373696f6e0400010701b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53657373696f6e2c2052756e74696d653e0013001c4772616e64706104000d0701b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4772616e6470612c2052756e74696d653e00150020496d4f6e6c696e650400390701b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496d4f6e6c696e652c2052756e74696d653e001700105375646f0400590701a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5375646f2c2052756e74696d653e00190014417373657404005d0701a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c41737365742c2052756e74696d653e001a004c4361706974616c446973747269627574696f6e04007d0701e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4361706974616c446973747269627574696f6e2c2052756e74696d653e001b0028436865636b706f696e740400850701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436865636b706f696e742c2052756e74696d653e001c0044436f6d706c69616e63654d616e6167657204008d0701d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6d706c69616e63654d616e616765722c2052756e74696d653e001d003c436f72706f72617465416374696f6e0400910701d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f72706f72617465416374696f6e2c2052756e74696d653e001e003c436f72706f7261746542616c6c6f740400a90701d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f72706f7261746542616c6c6f742c2052756e74696d653e001f0010506970730400ad0701a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506970732c2052756e74696d653e00210024506f7274666f6c696f0400bd0701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f7274666f6c696f2c2052756e74696d653e0022002c50726f746f636f6c4665650400c90701c10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50726f746f636f6c4665652c2052756e74696d653e002300245363686564756c65720400d10701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5363686564756c65722c2052756e74696d653e00240028536574746c656d656e740400d90701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c536574746c656d656e742c2052756e74696d653e00250028537461746973746963730400ed0701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c537461746973746963732c2052756e74696d653e0026000c53746f0400010801a10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53746f2c2052756e74696d653e0027002054726561737572790400110801b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54726561737572792c2052756e74696d653e0028001c5574696c69747904001d0801b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5574696c6974792c2052756e74696d653e00290010426173650400290801a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426173652c2052756e74696d653e002a003845787465726e616c4167656e747304002d0801cd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c45787465726e616c4167656e74732c2052756e74696d653e002b001c52656c617965720400310801b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c52656c617965722c2052756e74696d653e002c001c526577617264730400350801b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c526577617264732c2052756e74696d653e002d0024546573745574696c7304003d0801b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546573745574696c732c2052756e74696d653e00320000e105084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279390101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f766519010110626f6f6c00011063616c6cdd050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f766519010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ee505083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001086174f401444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572732501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ee905084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279390101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f766519010110626f6f6c00011063616c6cdd050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f766519010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652eed05083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001086174f401444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572732501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef105084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279390101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f766519010110626f6f6c00011063616c6cdd050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f766519010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef505083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001086174f401444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572732501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef905083c70616c6c65745f6d756c74697369671043616c6c04045400014c3c6372656174655f6d756c746973696708011c7369676e657273690101705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000134736967735f726571756972656420010c75363400001448437265617465732061206d756c7469736967002c2320417267756d656e7473a5012a20607369676e65727360202d205369676e657273206f6620746865206d756c7469736967202854686579206e65656420746f2061636365707420617574686f72697a6174696f6e206265666f72652074686579206172652061637475616c6c79206164646564292e19012a2060736967735f726571756972656460202d204e756d626572206f66207369677320726571756972656420746f2070726f636573732061206d756c74692d7369672074782e986372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6964656e746974791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616cdd050140426f783c543a3a50726f706f73616c3e000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736519010110626f6f6c0001203d01437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e846372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6b65791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616cdd050140426f783c543a3a50726f706f73616c3e000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736519010110626f6f6c0002203d01437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e6c6372656174655f70726f706f73616c5f61735f6964656e746974791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616cdd050140426f783c543a3a50726f706f73616c3e000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736519010110626f6f6c0003206c437265617465732061206d756c74697369672070726f706f73616c002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e586372656174655f70726f706f73616c5f61735f6b65791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616cdd050140426f783c543a3a50726f706f73616c3e000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736519010110626f6f6c0004206c437265617465732061206d756c74697369672070726f706f73616c002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4c617070726f76655f61735f6964656e746974790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c753634000518e4417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea42a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e38617070726f76655f61735f6b65790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340006183101417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea42a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4872656a6563745f61735f6964656e746974790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c753634000718e052656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea02a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e3472656a6563745f61735f6b65790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340008182d0152656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea02a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e886163636570745f6d756c74697369675f7369676e65725f61735f6964656e7469747904011c617574685f696420010c7536340009100d01416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206964656e746974792e002c2320417267756d656e7473ac2a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e746163636570745f6d756c74697369675f7369676e65725f61735f6b657904011c617574685f696420010c753634000a102901416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206b657920284163636f756e744964292e002c2320417267756d656e7473ac2a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e4c6164645f6d756c74697369675f7369676e65720401187369676e65726d01015c5369676e61746f72793c543a3a4163636f756e7449643e000b102901416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e002c2320417267756d656e7473782a20607369676e657260202d205369676e61746f727920746f206164642e5872656d6f76655f6d756c74697369675f7369676e65720401187369676e65726d01015c5369676e61746f72793c543a3a4163636f756e7449643e000c103d0152656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e002c2320417267756d656e7473842a20607369676e657260202d205369676e61746f727920746f2072656d6f76652e806164645f6d756c74697369675f7369676e6572735f7669615f63726561746f720801206d756c7469736967000130543a3a4163636f756e74496400011c7369676e657273690101705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000d244501416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865246d756c74697369672e002c2320417267756d656e74739c2a20606d756c746973696760202d2041646472657373206f6620746865206d756c746920736967842a20607369676e65727360202d205369676e61746f7269657320746f206164642e00202320576569676874a4603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e2829608c72656d6f76655f6d756c74697369675f7369676e6572735f7669615f63726561746f720801206d756c7469736967000130543a3a4163636f756e74496400011c7369676e657273690101705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000e248c52656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672ef054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865206d756c74697369672e002c2320417267756d656e74739c2a20606d756c746973696760202d2041646472657373206f6620746865206d756c74697369672e902a20607369676e65727360202d205369676e61746f7269657320746f2072656d6f76652e00202320576569676874a4603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e282960506368616e67655f736967735f7265717569726564040134736967735f726571756972656420010c753634000f144d014368616e67657320746865206e756d626572206f66207369676e6174757265732072657175697265642062792061206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865406d756c746973696720697473656c662e002c2320417267756d656e7473d82a2060736967735f726571756972656460202d204e6577206e756d626572206f66207265717569726564207369676e6174757265732e5c6d616b655f6d756c74697369675f7365636f6e646172790401206d756c7469736967000130543a3a4163636f756e7449640010146901416464732061206d756c74697369672061732061207365636f6e64617279206b6579206f662063757272656e7420646964206966207468652063757272656e7420646964206973207468652063726561746f72206f6620746865246d756c74697369672e002c2320417267756d656e7473802a20606d756c746973696760202d206d756c7469207369672061646472657373546d616b655f6d756c74697369675f7072696d6172790801206d756c7469736967000130543a3a4163636f756e7449640001506f7074696f6e616c5f6364645f617574685f6964f4012c4f7074696f6e3c7536343e0011145d01416464732061206d756c746973696720617320746865207072696d617279206b6579206f66207468652063757272656e7420646964206966207468652063757272656e7420444944206973207468652063726561746f72406f6620746865206d756c74697369672e002c2320417267756d656e7473842a20606d756c74695f73696760202d206d756c746920736967206164647265737368657865637574655f7363686564756c65645f70726f706f73616c1001206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340001306d756c74697369675f6469647c01284964656e7469747949640001405f70726f706f73616c5f7765696768742001185765696768740012047101526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20666f7220657865637574696e67207363686564756c6564206d756c74697369672070726f706f73616c2e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652efd05083470616c6c65745f6272696467651043616c6c040454000144446368616e67655f636f6e74726f6c6c6572040128636f6e74726f6c6c6572000130543a3a4163636f756e744964000010a04368616e6765732074686520636f6e74726f6c6c6572206163636f756e742061732061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e306368616e67655f61646d696e04011461646d696e000130543a3a4163636f756e744964000110744368616e67657320746865206272696467652061646d696e206b65792e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e3c6368616e67655f74696d656c6f636b04012074696d656c6f636b100138543a3a426c6f636b4e756d626572000210704368616e676573207468652074696d656c6f636b20706572696f642e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e18667265657a650003145d01467265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c65206966206974206973206e6f7420616c72656164792066726f7a656e2e205768656e2074686549016272696467652069732066726f7a656e2c20617474656d70746564207472616e73616374696f6e732067657420706f7374706f6e656420696e7374656164206f662067657474696e672068616e646c65642e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e20756e667265657a650004101101556e667265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c652069662069742069732066726f7a656e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c6368616e67655f6272696467655f6c696d6974080118616d6f756e7418011c42616c616e63650001206475726174696f6e100138543a3a426c6f636b4e756d626572000514684368616e6765732074686520627269646765206c696d6974732e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ea42d20604469766973696f6e42795a65726f6020696620606475726174696f6e60206973207a65726f2e586368616e67655f6272696467655f6578656d707465640401206578656d707465640106015c5665633c284964656e7469747949642c20626f6f6c293e0006109c4368616e6765732074686520627269646765206c696d6974206578656d70746564206c6973742e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e58666f7263655f68616e646c655f6272696467655f74780401246272696467655f74787501015842726964676554783c543a3a4163636f756e7449643e0007142501466f726365732068616e646c696e672061207472616e73616374696f6e20627920627970617373696e672074686520627269646765206c696d697420616e642074696d656c6f636b2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e21012d20604e6f56616c69644364646020696620606272696467655f74782e726563697069656e746020646f6573206e6f74206861766520612076616c69642043444420636c61696d2e5c62617463685f70726f706f73655f6272696467655f74780401286272696467655f7478730906016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000824450150726f706f736573206120766563746f72206f6620627269646765207472616e73616374696f6e732e2054686520766563746f722069732070726f63657373656420756e74696c207468652066697273744d0170726f706f73616c2077686963682063617573657320616e206572726f722c20696e207768696368206361736520746865206572726f722069732072657475726e656420616e64207468652072657374206f667070726f706f73616c7320617265206e6f742070726f6365737365642e00242323204572726f7273c82d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e00202320576569676874b0603530305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829604470726f706f73655f6272696467655f74780401246272696467655f74787501015842726964676554783c543a3a4163636f756e7449643e000918490150726f706f736573206120627269646765207472616e73616374696f6e2c20776869636820616d6f756e747320746f206d616b696e672061206d756c74697369672070726f706f73616c20666f72207468655501627269646765207472616e73616374696f6e20696620746865207472616e73616374696f6e206973206e6577206f7220617070726f76696e6720616e206578697374696e672070726f706f73616c20696620746865987472616e73616374696f6e2068617320616c7265616479206265656e2070726f706f7365642e00242323204572726f7273c82d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e4068616e646c655f6272696467655f74780401246272696467655f74787501015842726964676554783c543a3a4163636f756e7449643e000a18c048616e646c657320616e20617070726f76656420627269646765207472616e73616374696f6e2070726f706f73616c2e00242323204572726f727319012d206042616443616c6c65726020696620606f726967696e60206973206e6f74206053656c663a3a636f6e74726f6c6c657260206f7220206053656c663a3a61646d696e602eec2d206054696d656c6f636b656454786020696620746865207472616e73616374696f6e20737461747573206973206054696d656c6f636b6564602e09012d206050726f706f73616c416c726561647948616e646c65646020696620746865207472616e73616374696f6e20737461747573206973206048616e646c6564602e28667265657a655f7478730401286272696467655f7478730906016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000b2088467265657a657320676976656e20627269646765207472616e73616374696f6e732e8501496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e00202320576569676874b0603430305f3030305f303030202b20325f3030305f303030202a206272696467655f7478732e6c656e28296030756e667265657a655f7478730401286272696467655f7478730906016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000c2090556e667265657a657320676976656e20627269646765207472616e73616374696f6e732e8501496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e00202320576569676874b0603430305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829606868616e646c655f7363686564756c65645f6272696467655f74780401246272696467655f74787501015842726964676554783c543a3a4163636f756e7449643e000d189901526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f2068616e646c652061207363686564756c65642074696d656c6f636b656420627269646765207472616e73616374696f6e2e002023204572726f7273982d20604261644f726967696e6020696620606f726967696e60206973206e6f7420726f6f742ef82d206050726f706f73616c416c726561647948616e646c656460206966207472616e73616374696f6e20737461747573206973206048616e646c6564602ebc2d206046726f7a656e547860206966207472616e73616374696f6e20737461747573206973206046726f7a656e602e406164645f667265657a655f61646d696e040130667265657a655f61646d696e000130543a3a4163636f756e744964000e104c416464206120667265657a652061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c72656d6f76655f667265657a655f61646d696e040130667265657a655f61646d696e000130543a3a4163636f756e744964000f105852656d6f7665206120667265657a652061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e2872656d6f76655f7478730401286272696467655f7478730906016c5665633c42726964676554783c543a3a4163636f756e7449643e3e0010148452656d6f766520676976656e20627269646765207472616e73616374696f6e732e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ed02d20604e6f7446726f7a656e60206966206120747820696e20606272696467655f74787360206973206e6f742066726f7a656e2e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e01060000020506000506000004087c19010009060000027501000d06083870616c6c65745f7374616b696e671043616c6c04045400018010626f6e640c0128636f6e74726f6c6c65723905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565cd01013042616c616e63654f663c543e00011470617965651106017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e000058610154616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c80626520746865206163636f756e74207468617420636f6e74726f6c732069742e002d016076616c756560206d757374206265206d6f7265207468616e2074686520606d696e696d756d5f62616c616e636560207370656369666965642062792060543a3a43757272656e6379602e002101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e003c456d6974732060426f6e646564602e002823203c7765696768743ed02d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e1c2d204f2831292e642d20546872656520657874726120444220656e74726965732e004d014e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e65643d01756e6c6573732074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e482d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a2d012d20526561643a20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c2043757272656e74204572612c20486973746f72792044657074682c204c6f636b73dc2d2057726974653a20426f6e6465642c2050617965652c205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e28626f6e645f65787472610401386d61785f6164646974696f6e616ccd01013042616c616e63654f663c543e000154610141646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e636520757030666f72207374616b696e672e004d01557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e6101556e6c696b65205b60626f6e64605d206f72205b60756e626f6e64605d20746869732066756e6374696f6e20646f6573206e6f7420696d706f736520616e79206c696d69746174696f6e206f6e2074686520616d6f756e7448746861742063616e2062652061646465642e005d01546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c657220616e64f469742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e003c456d6974732060426f6e646564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e1c2d204f2831292e3c2d204f6e6520444220656e7472792e302d2d2d2d2d2d2d2d2d2d2d2d284442205765696768743a11012d20526561643a2045726120456c656374696f6e205374617475732c20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c204c6f636b73a02d2057726974653a205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e18756e626f6e6404011476616c7565cd01013042616c616e63654f663c543e00028051015363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e64fc706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e2101543a3a43757272656e63793a3a6d696e696d756d5f62616c616e636528292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e0045014f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c20796f752063616e2063616c6c206077697468647261775f756e626f6e6465646020746f2061637475616c6c79206d6f7665bc7468652066756e6473206f7574206f66206d616e6167656d656e7420726561647920666f72207472616e736665722e0039014e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d41585f554e4c4f434b494e475f4348554e4b536029390163616e20636f2d657869737473206174207468652073616d652074696d652e20496e207468617420636173652c205b6043616c6c3a3a77697468647261775f756e626f6e646564605d206e656564f8746f2062652063616c6c656420666972737420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e0044456d6974732060556e626f6e646564602e009453656520616c736f205b6043616c6c3a3a77697468647261775f756e626f6e646564605d2e002823203c7765696768743e3d012d20496e646570656e64656e74206f662074686520617267756d656e74732e204c696d697465642062757420706f74656e7469616c6c79206578706c6f697461626c6520636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732e61012d20456163682063616c6c20287265717569726573207468652072656d61696e646572206f662074686520626f6e6465642062616c616e636520746f2062652061626f766520606d696e696d756d5f62616c616e636560296d01202077696c6c2063617573652061206e657720656e74727920746f20626520696e73657274656420696e746f206120766563746f722028604c65646765722e756e6c6f636b696e676029206b65707420696e2073746f726167652e4d012020546865206f6e6c792077617920746f20636c65616e207468652061666f72656d656e74696f6e65642073746f72616765206974656d20697320616c736f20757365722d636f6e74726f6c6c6564207669615820206077697468647261775f756e626f6e646564602e3c2d204f6e6520444220656e7472792e282d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a21012d20526561643a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e744572612c204c6f636b732c205c5b4f726967696e204163636f756e745c5da82d2057726974653a204c6f636b732c204c65646765722c205c5b4f726967696e204163636f756e745c5d243c2f7765696768743e4477697468647261775f756e626f6e6465640401486e756d5f736c617368696e675f7370616e7310010c75333200037c290152656d6f766520616e7920756e6c6f636b6564206368756e6b732066726f6d207468652060756e6c6f636b696e67602071756575652066726f6d206f7572206d616e6167656d656e742e0031015468697320657373656e7469616c6c7920667265657320757020746861742062616c616e636520746f206265207573656420627920746865207374617368206163636f756e7420746f20646f4877686174657665722069742077616e74732e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e0048456d697473206057697468647261776e602e006853656520616c736f205b6043616c6c3a3a756e626f6e64605d2e002823203c7765696768743e51012d20436f756c6420626520646570656e64656e74206f6e2074686520606f726967696e6020617267756d656e7420616e6420686f77206d7563682060756e6c6f636b696e6760206368756e6b732065786973742e410120497420696d706c6965732060636f6e736f6c69646174655f756e6c6f636b656460207768696368206c6f6f7073206f76657220604c65646765722e756e6c6f636b696e67602c207768696368206973f020696e6469726563746c7920757365722d636f6e74726f6c6c65642e20536565205b60756e626f6e64605d20666f72206d6f72652064657461696c2e75012d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732c20796574207468652073697a65206f6620776869636820636f756c64206265206c61726765206261736564206f6e20606c6564676572602ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e3c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0501436f6d706c6578697479204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2072656d6f76651c5570646174653a21012d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c204c6f636b732c205b4f726967696e204163636f756e745da42d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c6564676572144b696c6c3a41012d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c20426f6e6465642c20536c617368696e67205370616e732c205b4f726967696e4420204163636f756e745d2c204c6f636b734d012d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c6420205b4f726967696e204163636f756e745d2c204c6f636b73702d2057726974657320456163683a205370616e536c617368202a205309014e4f54453a2057656967687420616e6e6f746174696f6e20697320746865206b696c6c207363656e6172696f2c20776520726566756e64206f74686572776973652e2c23203c2f7765696768743e2076616c696461746504011470726566731506013856616c696461746f725072656673000444e44465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e2c2d2d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a8c2d20526561643a2045726120456c656374696f6e205374617475732c204c65646765727c2d2057726974653a204e6f6d696e61746f72732c2056616c696461746f72732c23203c2f7765696768743e206e6f6d696e61746504011c746172676574731d0601a05665633c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e00054c0d014465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e004d01456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e20546869732063616e206f6e6c792062652063616c6c6564207768656e885b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743e2d012d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f662060746172676574736020284e29fc77686963682069732063617070656420617420436f6d7061637441737369676e6d656e74733a3a4c494d495420284d41585f4e4f4d494e4154494f4e53292ed42d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e242d2d2d2d2d2d2d2d2d305765696768743a204f284e29807768657265204e20697320746865206e756d626572206f662074617267657473284442205765696768743ac42d2052656164733a2045726120456c656374696f6e205374617475732c204c65646765722c2043757272656e7420457261802d205772697465733a2056616c696461746f72732c204e6f6d696e61746f72732c23203c2f7765696768743e146368696c6c000644c44465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e502d20436f6e7461696e73206f6e6520726561642ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e202d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a842d20526561643a20457261456c656374696f6e5374617475732c204c65646765727c2d2057726974653a2056616c696461746f72732c204e6f6d696e61746f72732c23203c2f7765696768743e247365745f706179656504011470617965651106017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e000740b42852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e242d2d2d2d2d2d2d2d2d382d205765696768743a204f283129302d204442205765696768743a48202020202d20526561643a204c656467657248202020202d2057726974653a2050617965652c23203c2f7765696768743e387365745f636f6e74726f6c6c6572040128636f6e74726f6c6c65723905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263650008408c2852652d297365742074686520636f6e74726f6c6c6572206f6620612073746173682e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e282d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743af02d20526561643a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c6572f42d2057726974653a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c65722c23203c2f7765696768743e4c7365745f76616c696461746f725f636f756e7404010c6e65777104010c75333200092090536574732074686520696465616c206e756d626572206f662076616c696461746f72732e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e305765696768743a204f2831295857726974653a2056616c696461746f7220436f756e742c23203c2f7765696768743e60696e6372656173655f76616c696461746f725f636f756e740401286164646974696f6e616c7104010c753332000a1ca8496e6372656d656e74732074686520696465616c206e756d626572206f662076616c696461746f72732e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e8053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e2c23203c2f7765696768743e547363616c655f76616c696461746f725f636f756e74040118666163746f722106011c50657263656e74000b1cd05363616c652075702074686520696465616c206e756d626572206f662076616c696461746f7273206279206120666163746f722e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e8053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e2c23203c2f7765696768743e686164645f7065726d697373696f6e65645f76616c696461746f720801206964656e746974797c01284964656e746974794964000138696e74656e6465645f636f756e742506012c4f7074696f6e3c7533323e000c203d01476f7665726e616e636520636f6d6d6974746565206f6e20322f3320726473206d616a6f726974792063616e20696e74726f647563652061206e657720706f74656e7469616c206964656e746974799d01746f2074686520706f6f6c206f66207065726d697373696f6e656420656e7469746965732077686f2063616e2072756e2076616c696461746f72732e205374616b696e67206d6f64756c65207573657320605065726d697373696f6e65644964656e74697479605501746f20656e737572652076616c696461746f7273206861766520636f6d706c65746564204b594220636f6d706c69616e636520616e6420636f6e736964657273207468656d20666f722076616c69646174696f6e2e002c2320417267756d656e7473e82a206f726967696e205265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e882a206964656e746974792056616c696461746f722773204964656e7469747949642e05012a20696e74656e6465645f636f756e74204e6f2e206f662076616c696461746f727320676976656e206964656e7469747920696e74656e647320746f2072756e2e7472656d6f76655f7065726d697373696f6e65645f76616c696461746f720401206964656e746974797c01284964656e746974794964000d1ca90152656d6f766520616e206964656e746974792066726f6d2074686520706f6f6c206f66202877616e6e616265292076616c696461746f72206964656e7469746965732e204566666563747320617265206b6e6f776e20696e20746865206e6578742073657373696f6e2e19015374616b696e67206d6f64756c6520636865636b7320605065726d697373696f6e65644964656e746974796020746f20656e737572652076616c696461746f7273206861766560636f6d706c65746564204b594220636f6d706c69616e6365002c2320417267756d656e7473f02a206f726967696e205265717569726564206f726967696e20666f722072656d6f76696e67206120706f74656e7469616c2076616c696461746f722e882a206964656e746974792056616c696461746f722773204964656e7469747949642e7876616c69646174655f6364645f6578706972795f6e6f6d696e61746f727304011c74617267657473ec01445665633c543a3a4163636f756e7449643e000e28a056616c696461746520746865206e6f6d696e61746f727320434444206578706972792074696d652e00f0496620616e206163636f756e742066726f6d206120676976656e20736574206f662061646472657373206973206e6f6d696e6174696e67207468656ed0636865636b2074686520434444206578706972792074696d65206f6620697420616e64206966206974206973206578706972656431017468656e20746865206163636f756e742073686f756c6420626520756e626f6e64656420616e642072656d6f7665642066726f6d20746865206e6f6d696e6174696e672070726f636573732e0024233c7765696768743e982d20446570656e6473206f6e20706173736564206c697374206f66204163636f756e7449642e29012d20446570656e6473206f6e20746865206e6f2e206f6620636c61696d206973737565727320616e206163636f756e7449642068617320666f722074686520434444206578706972792e28233c2f7765696768743e487365745f636f6d6d697373696f6e5f63617004011c6e65775f6361708d01011c50657262696c6c000f1421014368616e67657320636f6d6d697373696f6e2072617465207768696368206170706c69657320746f20616c6c2076616c696461746f72732e204f6e6c7920476f7665726e616e6365a8636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e002c2320417267756d656e74738c2a20606e65775f6361706020746865206e657720636f6d6d697373696f6e206361702e587365745f6d696e5f626f6e645f7468726573686f6c640401246e65775f76616c756518013042616c616e63654f663c543e00101401014368616e676573206d696e20626f6e642076616c756520746f206265207573656420696e2076616c696461746528292e204f6e6c7920476f7665726e616e6365a8636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e002c2320417267756d656e7473742a20606e65775f76616c75656020746865206e6577206d696e696d756d34666f7263655f6e6f5f65726173001124ac466f72636520746865726520746f206265206e6f206e6577206572617320696e646566696e6974656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e3c2d204e6f20617267756d656e74732e382d205765696768743a204f283129442d2057726974653a20466f7263654572612c23203c2f7765696768743e34666f7263655f6e65775f6572610012284901466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f6620746865206e6578742073657373696f6e2e20416674657220746869732c2069742077696c6c2062659c726573657420746f206e6f726d616c20286e6f6e2d666f7263656429206265686176696f75722e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e3c2d204e6f20617267756d656e74732e382d205765696768743a204f283129402d20577269746520466f7263654572612c23203c2f7765696768743e447365745f696e76756c6e657261626c6573040134696e76756c6e657261626c6573ec01445665633c543a3a4163636f756e7449643e001320c8536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e182d204f285629582d2057726974653a20496e76756c6e657261626c65732c23203c2f7765696768743e34666f7263655f756e7374616b650801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c7533320014280901466f72636520612063757272656e74207374616b657220746f206265636f6d6520636f6d706c6574656c7920756e7374616b65642c20696d6d6564696174656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743ee84f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2062652072656d6f766564b452656164733a20426f6e6465642c20536c617368696e67205370616e732c204163636f756e742c204c6f636b7381015772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c204163636f756e742c204c6f636b736857726974657320456163683a205370616e536c617368202a20532c23203c2f7765696768743e50666f7263655f6e65775f6572615f616c776179730015200101466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f662073657373696f6e7320696e646566696e6974656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e382d205765696768743a204f283129442d2057726974653a20466f7263654572612c23203c2f7765696768743e5463616e63656c5f64656665727265645f736c61736808010c657261100120457261496e646578000134736c6173685f696e6469636573390401205665633c7533323e0016349443616e63656c20656e6163746d656e74206f66206120646566657272656420736c6173682e00b043616e2062652063616c6c6564206279207468652060543a3a536c61736843616e63656c4f726967696e602e000101506172616d65746572733a2065726120616e6420696e6469636573206f662074686520736c617368657320666f7220746861742065726120746f206b696c6c2e002823203c7765696768743e50436f6d706c65786974793a204f2855202b205329b477697468205520756e6170706c69656420736c6173686573207765696768746564207769746820553d31303030d0616e64205320697320746865206e756d626572206f6620736c61736820696e646963657320746f2062652063616e63656c65642e642d20526561643a20556e6170706c69656420536c6173686573682d2057726974653a20556e6170706c69656420536c61736865732c23203c2f7765696768743e387061796f75745f7374616b65727308013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e6465780017640d01506179206f757420616c6c20746865207374616b65727320626568696e6420612073696e676c652076616c696461746f7220666f7220612073696e676c65206572612e0049012d206076616c696461746f725f73746173686020697320746865207374617368206163636f756e74206f66207468652076616c696461746f722e205468656972206e6f6d696e61746f72732c20757020746f2501202060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602c2077696c6c20616c736f207265636569766520746865697220726577617264732e31012d206065726160206d617920626520616e7920657261206265747765656e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e005501546865206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2e20416e79206163636f756e742063616e2063616c6c20746869732066756e6374696f6e2c206576656e206966746974206973206e6f74206f6e65206f6620746865207374616b6572732e00fc546869732063616e206f6e6c792062652063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743efc2d2054696d6520636f6d706c65786974793a206174206d6f7374204f284d61784e6f6d696e61746f72526577617264656450657256616c696461746f72292ec02d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e2c2d2d2d2d2d2d2d2d2d2d2d19014e20697320746865204e756d626572206f66207061796f75747320666f72207468652076616c696461746f722028696e636c7564696e67207468652076616c696461746f72291c5765696768743a842d205265776172642044657374696e6174696f6e205374616b65643a204f284e29c02d205265776172642044657374696e6174696f6e20436f6e74726f6c6c657220284372656174696e67293a204f284e29284442205765696768743a25012d20526561643a20457261456c656374696f6e5374617475732c2043757272656e744572612c20486973746f727944657074682c204572617356616c696461746f725265776172642c29012020202020202020457261735374616b657273436c69707065642c2045726173526577617264506f696e74732c204572617356616c696461746f725072656673202838206974656d73290d012d205265616420456163683a20426f6e6465642c204c65646765722c2050617965652c204c6f636b732c2053797374656d204163636f756e74202835206974656d7329d42d20577269746520456163683a2053797374656d204163636f756e742c204c6f636b732c204c6564676572202833206974656d73292c23203c2f7765696768743e187265626f6e6404011476616c7565cd01013042616c616e63654f663c543e001838dc5265626f6e64206120706f7274696f6e206f6620746865207374617368207363686564756c656420746f20626520756e6c6f636b65642e005101546865206469737061746368206f726967696e206d757374206265207369676e65642062792074686520636f6e74726f6c6c65722c20616e642069742063616e206265206f6e6c792063616c6c6564207768656e885b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ed02d2054696d6520636f6d706c65786974793a204f284c292c207768657265204c20697320756e6c6f636b696e67206368756e6b73902d20426f756e64656420627920604d41585f554e4c4f434b494e475f4348554e4b53602ef02d2053746f72616765206368616e6765733a2043616e277420696e6372656173652073746f726167652c206f6e6c792064656372656173652069742e3c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743afc202020202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c204c6f636b732c205b4f726967696e204163636f756e745db4202020202d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e447365745f686973746f72795f64657074680801446e65775f686973746f72795f646570746871040120457261496e6465780001485f6572615f6974656d735f64656c657465647104010c7533320019542d015365742060486973746f72794465707468602076616c75652e20546869732066756e6374696f6e2077696c6c2064656c65746520616e7920686973746f727920696e666f726d6174696f6e7c7768656e2060486973746f727944657074686020697320726564756365642e002c506172616d65746572733a0d012d20606e65775f686973746f72795f6465707468603a20546865206e657720686973746f727920646570746820796f7520776f756c64206c696b6520746f207365742e45012d20606572615f6974656d735f64656c65746564603a20546865206e756d626572206f66206974656d7320746861742077696c6c2062652064656c6574656420627920746869732064697370617463682e4101202020546869732073686f756c64207265706f727420616c6c207468652073746f72616765206974656d7320746861742077696c6c2062652064656c6574656420627920636c656172696e67206f6c64410120202065726120686973746f72792e204e656564656420746f207265706f727420616e2061636375726174652077656967687420666f72207468652064697370617463682e20547275737465642062799c20202060526f6f746020746f207265706f727420616e206163637572617465206e756d6265722e00504f726967696e206d75737420626520726f6f742e002823203c7765696768743edc2d20453a204e756d626572206f6620686973746f7279206465707468732072656d6f7665642c20692e652e203130202d3e2037203d2033382d205765696768743a204f284529302d204442205765696768743a9c202020202d2052656164733a2043757272656e74204572612c20486973746f72792044657074686c202020202d205772697465733a20486973746f72792044657074682d01202020202d20436c6561722050726566697820456163683a20457261205374616b6572732c204572615374616b657273436c69707065642c204572617356616c696461746f7250726566737d01202020202d2057726974657320456163683a204572617356616c696461746f725265776172642c2045726173526577617264506f696e74732c2045726173546f74616c5374616b652c2045726173537461727453657373696f6e496e6465782c23203c2f7765696768743e28726561705f73746173680801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c753332001a3c5d0152656d6f766520616c6c20646174612073747275637475726520636f6e6365726e696e672061207374616b65722f7374617368206f6e6365206974732062616c616e636520697320617420746865206d696e696d756d2e5d015468697320697320657373656e7469616c6c79206571756976616c656e7420746f206077697468647261775f756e626f6e64656460206578636570742069742063616e2062652063616c6c656420627920616e796f6e65f4616e6420746865207461726765742060737461736860206d7573742068617665206e6f2066756e6473206c656674206265796f6e64207468652045442e008c546869732063616e2062652063616c6c65642066726f6d20616e79206f726967696e2e00fc2d20607374617368603a20546865207374617368206163636f756e7420746f20726561702e204974732062616c616e6365206d757374206265207a65726f2e002823203c7765696768743e2101436f6d706c65786974793a204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e73206f6e20746865206163636f756e742e284442205765696768743ad42d2052656164733a205374617368204163636f756e742c20426f6e6465642c20536c617368696e67205370616e732c204c6f636b73a1012d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c205374617368204163636f756e742c204c6f636b73702d2057726974657320456163683a205370616e536c617368202a20532c23203c2f7765696768743e607375626d69745f656c656374696f6e5f736f6c7574696f6e14011c77696e6e6572732906014c5665633c56616c696461746f72496e6465783e00011c636f6d706163742d060148436f6d7061637441737369676e6d656e747300011473636f7265f9060134456c656374696f6e53636f726500010c657261100120457261496e64657800011073697a65fd060130456c656374696f6e53697a65001bc4e05375626d697420616e20656c656374696f6e20726573756c7420746f2074686520636861696e2e2049662074686520736f6c7574696f6e3a0030312e2069732076616c69642e1101322e206861732061206265747465722073636f7265207468616e206120706f74656e7469616c6c79206578697374696e6720736f6c7574696f6e206f6e20636861696e2e00807468656e2c2069742077696c6c206265205f7075745f206f6e20636861696e2e00a84120736f6c7574696f6e20636f6e7369737473206f662074776f20706965636573206f6620646174613a00f0312e206077696e6e657273603a206120666c617420766563746f72206f6620616c6c207468652077696e6e657273206f662074686520726f756e642e4d01322e206061737369676e6d656e7473603a2074686520636f6d706163742076657273696f6e206f6620616e2061737369676e6d656e7420766563746f72207468617420656e636f6465732074686520656467652c202020776569676874732e001d01426f7468206f66207768696368206d617920626520636f6d7075746564207573696e67205f70687261676d656e5f2c206f7220616e79206f7468657220616c676f726974686d2e00a44164646974696f6e616c6c792c20746865207375626d6974746572206d7573742070726f766964653a00c42d20546865206073636f7265602074686174207468657920636c61696d20746865697220736f6c7574696f6e206861732e004901426f74682076616c696461746f727320616e64206e6f6d696e61746f72732077696c6c20626520726570726573656e74656420627920696e646963657320696e2074686520736f6c7574696f6e2e205468651901696e64696365732073686f756c6420726573706563742074686520636f72726573706f6e64696e6720747970657320285b6056616c696461746f72496e646578605d20616e642d015b604e6f6d696e61746f72496e646578605d292e204d6f72656f7665722c20746865792073686f756c642062652076616c6964207768656e207573656420746f20696e64657820696e746f4d015b60536e617073686f7456616c696461746f7273605d20616e64205b60536e617073686f744e6f6d696e61746f7273605d2e20416e7920696e76616c696420696e6465782077696c6c206361757365207468655d01736f6c7574696f6e20746f2062652072656a65637465642e2054686573652074776f2073746f72616765206974656d73206172652073657420647572696e672074686520656c656374696f6e2077696e646f7720616e64946d6179206265207573656420746f2064657465726d696e652074686520696e64696365732e005c4120736f6c7574696f6e2069732076616c69642069663a00e0302e204974206973207375626d6974746564207768656e205b60457261456c656374696f6e537461747573605d20697320604f70656e602ef4312e2049747320636c61696d65642073636f726520697320657175616c20746f207468652073636f726520636f6d7075746564206f6e2d636861696e2ea8322e2050726573656e74732074686520636f7272656374206e756d626572206f662077696e6e6572732e5101332e20416c6c20696e6465786573206d7573742062652076616c7565206163636f7264696e6720746f2074686520736e617073686f7420766563746f72732e20416c6c20656467652076616c756573206d7573745901202020616c736f20626520636f727265637420616e642073686f756c64206e6f74206f766572666c6f7720746865206772616e756c6172697479206f662074686520726174696f20747970652028692e652e203235363c2020206f722062696c6c696f6e292e0901342e20466f72206561636820656467652c20616c6c2074617267657473206172652061637475616c6c79206e6f6d696e617465642062792074686520766f7465722e68352e2048617320636f72726563742073656c662d766f7465732e00bc4120736f6c7574696f6e732073636f726520697320636f6e736973746564206f66203320706172616d65746572733a006101312e20606d696e207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d6178696d697a65642e6101322e206073756d207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d696e696d697a65642e3d01332e206073756d207b20737570706f72742e746f74616c5e32207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265982020206d696e696d697a65642028746f20656e73757265206c6573732076617269616e636529002823203c7765696768743e1501546865207472616e73616374696f6e20697320617373756d656420746f20626520746865206c6f6e6765737420706174682c20612062657474657220736f6c7574696f6e2ea020202d20496e697469616c20736f6c7574696f6e20697320616c6d6f7374207468652073616d652e410120202d20576f72736520736f6c7574696f6e20697320726574726163656420696e207072652d64697370617463682d636865636b73207768696368207365747320697473206f776e207765696768742e2c23203c2f7765696768743e847375626d69745f656c656374696f6e5f736f6c7574696f6e5f756e7369676e656414011c77696e6e6572732906014c5665633c56616c696461746f72496e6465783e00011c636f6d706163742d060148436f6d7061637441737369676e6d656e747300011473636f7265f9060134456c656374696f6e53636f726500010c657261100120457261496e64657800011073697a65fd060130456c656374696f6e53697a65001c24bc556e7369676e65642076657273696f6e206f6620607375626d69745f656c656374696f6e5f736f6c7574696f6e602e0059014e6f746520746861742074686973206d757374207061737320746865205b6056616c6964617465556e7369676e6564605d20636865636b207768696368206f6e6c7920616c6c6f7773207472616e73616374696f6e735d0166726f6d20746865206c6f63616c206e6f646520746f20626520696e636c756465642e20496e206f7468657220776f7264732c206f6e6c792074686520626c6f636b20617574686f722063616e20696e636c7564652061647472616e73616374696f6e20696e2074686520626c6f636b2e002823203c7765696768743e84536565205b607375626d69745f656c656374696f6e5f736f6c7574696f6e605d2e2c23203c2f7765696768743e607061796f75745f7374616b6572735f62795f73797374656d08013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e646578001d04210153797374656d2076657273696f6e206f6620607061796f75745f7374616b6572732829602e204f6e6c792062652063616c6c65642062792074686520726f6f74206f726967696e2e6c6368616e67655f736c617368696e675f616c6c6f7765645f666f7204013c736c617368696e675f73776974636891010138536c617368696e67537769746368001e14690153776974636820736c617368696e6720737461747573206f6e20746865206261736973206f6620676976656e2060536c617368696e67537769746368602e2043616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473742a206f726967696e202d204163636f756e744964206f6620726f6f742e01012a20736c617368696e675f737769746368202d20537769746368207573656420746f2073657420746865207461726765747320666f7220736c617368696e672eb07570646174655f7065726d697373696f6e65645f76616c696461746f725f696e74656e6465645f636f756e740801206964656e746974797c01284964656e7469747949640001486e65775f696e74656e6465645f636f756e7410010c753332001f18d05570646174652074686520696e74656e6465642076616c696461746f7220636f756e7420666f72206120676976656e204449442e002c2320417267756d656e747331012a206f726967696e207768696368206d75737420626520746865207265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e842a206964656e7469747920746f2061646420617320612076616c696461746f722ec42a206e65775f696e74656e6465645f636f756e74204e65772076616c7565206f6620696e74656e64656420636f756e742e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e1106083870616c6c65745f7374616b696e674452657761726444657374696e6174696f6e04244163636f756e74496401000110185374616b656400000014537461736800010028436f6e74726f6c6c65720002001c4163636f756e7404000001244163636f756e744964000300001506083870616c6c65745f7374616b696e673856616c696461746f7250726566730000080128636f6d6d697373696f6e1906011c50657262696c6c00011c626c6f636b656419010110626f6f6c000019060000068d01001d0600000239050021060c3473705f61726974686d65746963287065725f7468696e67731c50657263656e740000040008010875380000250604184f7074696f6e04045401100108104e6f6e6500000010536f6d65040010000001000029060000023d03002d06083870616c6c65745f7374616b696e6748436f6d7061637441737369676e6d656e74730000400118766f74657331310600000118766f746573323d0600000118766f74657333510600000118766f746573345d0600000118766f74657335690600000118766f74657336750600000118766f74657337810600000118766f746573388d0600000118766f7465733999060000011c766f7465733130a5060000011c766f7465733131b1060000011c766f7465733132bd060000011c766f7465733133c9060000011c766f7465733134d5060000011c766f7465733135e1060000011c766f7465733136ed060000003106000002350600350600000408710439060039060000063d03003d0600000241060041060000040c71044506390600450600000408390649060049060000064d06004d060c3473705f61726974686d65746963287065725f7468696e677318506572553136000004003d03010c7531360000510600000255060055060000040c710459063906005906000003020000004506005d0600000261060061060000040c7104650639060065060000030300000045060069060000026d06006d060000040c71047106390600710600000304000000450600750600000279060079060000040c71047d063906007d0600000305000000450600810600000285060085060000040c710489063906008906000003060000004506008d0600000291060091060000040c7104950639060095060000030700000045060099060000029d06009d060000040c7104a106390600a10600000308000000450600a506000002a90600a9060000040c7104ad06390600ad0600000309000000450600b106000002b50600b5060000040c7104b906390600b9060000030a000000450600bd06000002c10600c1060000040c7104c506390600c5060000030b000000450600c906000002cd0600cd060000040c7104d106390600d1060000030c000000450600d506000002d90600d9060000040c7104dd06390600dd060000030d000000450600e106000002e50600e5060000040c7104e906390600e9060000030e000000450600ed06000002f10600f1060000040c7104f506390600f5060000030f000000450600f906000003030000001800fd06083870616c6c65745f7374616b696e6730456c656374696f6e53697a65000008012876616c696461746f72733906013856616c696461746f72496e6465780001286e6f6d696e61746f7273710401384e6f6d696e61746f72496e646578000001070c3870616c6c65745f73657373696f6e1870616c6c65741043616c6c040454000108207365745f6b6579730801106b6579730507011c543a3a4b65797300011470726f6f6628011c5665633c75383e000038e453657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b657973602e1d01416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722ec05468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e00d0546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e002823203c7765696768743e11012d20436f6d706c65786974793a20604f283129602e2041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468206f6698202060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642eec2d20446252656164733a20606f726967696e206163636f756e74602c2060543a3a56616c696461746f7249644f66602c20604e6578744b65797360a02d2044625772697465733a20606f726967696e206163636f756e74602c20604e6578744b65797360802d204462526561647320706572206b65792069643a20604b65794f776e657260842d20446257726974657320706572206b65792069643a20604b65794f776e6572602c23203c2f7765696768743e2870757267655f6b657973000140c852656d6f76657320616e792073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c65722e00c05468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e005501546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265205369676e656420616e6420746865206163636f756e74206d757374206265206569746865722062655d01636f6e7665727469626c6520746f20612076616c696461746f72204944207573696e672074686520636861696e2773207479706963616c2061646472657373696e672073797374656d20287468697320757375616c6c7951016d65616e73206265696e67206120636f6e74726f6c6c6572206163636f756e7429206f72206469726563746c7920636f6e7665727469626c6520696e746f20612076616c696461746f722049442028776869636894757375616c6c79206d65616e73206265696e672061207374617368206163636f756e74292e002823203c7765696768743e61012d20436f6d706c65786974793a20604f2831296020696e206e756d626572206f66206b65792074797065732e2041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468a420206f662060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642eec2d20446252656164733a2060543a3a56616c696461746f7249644f66602c20604e6578744b657973602c20606f726967696e206163636f756e7460a02d2044625772697465733a20604e6578744b657973602c20606f726967696e206163636f756e7460842d20446257726974657320706572206b65792069643a20604b65794f776e6572602c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e05070c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d652c53657373696f6e4b657973000010011c6772616e647061ad0101d03c4772616e647061206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300011062616265c10401c43c42616265206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000124696d5f6f6e6c696e65b90101d43c496d4f6e6c696e65206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300014c617574686f726974795f646973636f76657279090701fc3c417574686f72697479446973636f76657279206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000009070c5873705f617574686f726974795f646973636f766572790c617070185075626c696300000400bd01013c737232353531393a3a5075626c696300000d070c3870616c6c65745f6772616e6470611870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66110701bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f66f9040140543a3a4b65794f776e657250726f6f6600001009015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66110701bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f66f9040140543a3a4b65794f776e657250726f6f6600012409015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e000d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e306e6f74655f7374616c6c656408011464656c6179100138543a3a426c6f636b4e756d62657200016c626573745f66696e616c697a65645f626c6f636b5f6e756d626572100138543a3a426c6f636b4e756d62657200021c19014e6f74652074686174207468652063757272656e7420617574686f7269747920736574206f6620746865204752414e4450412066696e616c697479206761646765742068617325017374616c6c65642e20546869732077696c6c2074726967676572206120666f7263656420617574686f7269747920736574206368616e67652061742074686520626567696e6e696e671d016f6620746865206e6578742073657373696f6e2c20746f20626520656e6163746564206064656c61796020626c6f636b7320616674657220746861742e205468652064656c6179110173686f756c64206265206869676820656e6f75676820746f20736166656c7920617373756d6520746861742074686520626c6f636b207369676e616c6c696e67207468652501666f72636564206368616e67652077696c6c206e6f742062652072652d6f726765642028652e672e203130303020626c6f636b73292e20546865204752414e44504120766f74657273250177696c6c20737461727420746865206e657720617574686f7269747920736574207573696e672074686520676976656e2066696e616c697a656420626c6f636b20617320626173652e584f6e6c792063616c6c61626c6520627920726f6f742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e1107084c73705f66696e616c6974795f6772616e6470614445717569766f636174696f6e50726f6f660804480124044e0110000801187365745f6964200114536574496400013065717569766f636174696f6e1507014845717569766f636174696f6e3c482c204e3e00001507084c73705f66696e616c6974795f6772616e6470613045717569766f636174696f6e0804480124044e011001081c507265766f7465040019070139016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265766f74653c482c204e3e2c0a417574686f726974795369676e61747572653e00000024507265636f6d6d697404002d070141016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265636f6d6d69743c482c204e3e2c0a417574686f726974795369676e61747572653e000100001907084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401ad010456011d07045301210700100130726f756e645f6e756d62657220010c7536340001206964656e74697479ad010108496400011466697273742907011828562c2053290001187365636f6e642907011828562c20532900001d07084066696e616c6974795f6772616e6470611c507265766f74650804480124044e01100008012c7461726765745f68617368240104480001347461726765745f6e756d6265721001044e000021070c4c73705f66696e616c6974795f6772616e6470610c617070245369676e61747572650000040025070148656432353531393a3a5369676e6174757265000025070c1c73705f636f72651c65643235353139245369676e617475726500000400110201205b75383b2036345d00002907000004081d072107002d07084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401ad010456013107045301210700100130726f756e645f6e756d62657220010c7536340001206964656e74697479ad010108496400011466697273743507011828562c2053290001187365636f6e643507011828562c20532900003107084066696e616c6974795f6772616e64706124507265636f6d6d69740804480124044e01100008012c7461726765745f68617368240104480001347461726765745f6e756d6265721001044e0000350700000408310721070039070c4070616c6c65745f696d5f6f6e6c696e651870616c6c65741043616c6c040454000104246865617274626561740801246865617274626561743d0701644865617274626561743c543a3a426c6f636b4e756d6265723e0001247369676e6174757265510701bc3c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e61747572650000242823203c7765696768743e61012d20436f6d706c65786974793a20604f284b202b20452960207768657265204b206973206c656e677468206f6620604b6579736020286865617274626561742e76616c696461746f72735f6c656e2920616e642045206973d820206c656e677468206f6620606865617274626561742e6e6574776f726b5f73746174652e65787465726e616c5f61646472657373608820202d20604f284b29603a206465636f64696e67206f66206c656e67746820604b60ac20202d20604f284529603a206465636f64696e672f656e636f64696e67206f66206c656e6774682060456039012d20446252656164733a2070616c6c65745f73657373696f6e206056616c696461746f7273602c2070616c6c65745f73657373696f6e206043757272656e74496e646578602c20604b657973602c5820206052656365697665644865617274626561747360802d2044625772697465733a2060526563656976656448656172746265617473602c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e3d07084070616c6c65745f696d5f6f6e6c696e6524486561727462656174042c426c6f636b4e756d626572011000140130626c6f636b5f6e756d62657210012c426c6f636b4e756d6265720001346e6574776f726b5f7374617465410701484f70617175654e6574776f726b537461746500013473657373696f6e5f696e64657810013053657373696f6e496e64657800013c617574686f726974795f696e64657810012441757468496e64657800013876616c696461746f72735f6c656e10010c753332000041070c1c73705f636f7265206f6666636861696e484f70617175654e6574776f726b5374617465000008011c706565725f6964450701304f706171756550656572496400014865787465726e616c5f616464726573736573490701505665633c4f70617175654d756c7469616464723e00004507081c73705f636f7265304f70617175655065657249640000040028011c5665633c75383e000049070000024d07004d070c1c73705f636f7265206f6666636861696e3c4f70617175654d756c7469616464720000040028011c5665633c75383e00005107104070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139245369676e61747572650000040055070148737232353531393a3a5369676e6174757265000055070c1c73705f636f72651c73723235353139245369676e617475726500000400110201205b75383b2036345d00005907082c70616c6c65745f7375646f1043616c6c040454000110107375646f04011063616c6cdd050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000028350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e547375646f5f756e636865636b65645f77656967687408011063616c6cdd050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00011c5f776569676874200118576569676874000128350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e2d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b05375646f207573657220746f20737065636966792074686520776569676874206f66207468652063616c6c2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292ecc2d2054686520776569676874206f6620746869732063616c6c20697320646566696e6564206279207468652063616c6c65722e2c23203c2f7765696768743e1c7365745f6b657904010c6e65773905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365000224710141757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e402d204f6e65204442206368616e67652e2c23203c2f7765696768743e1c7375646f5f617308010c77686f3905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011063616c6cdd050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00032c4d0141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d406120676976656e206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e5d07083070616c6c65745f61737365741043616c6c0404540001603c72656769737465725f7469636b65720401187469636b6572a001185469636b657200002405015265676973746572732061206e6577207469636b6572206f7220657874656e64732076616c6964697479206f6620616e206578697374696e67207469636b65722e11014e423a205469636b65722076616c696469747920646f6573206e6f742067657420636172727920666f7277617264207768656e2072656e6577696e67207469636b65722e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e782a20607469636b657260207469636b657220746f2072656769737465722e003423205065726d697373696f6e731c2a204173736574586163636570745f7469636b65725f7472616e7366657204011c617574685f696420010c75363400013068416363657074732061207469636b6572207472616e736665722e002d01436f6e73756d65732074686520617574686f72697a6174696f6e2060617574685f6964602028736565206070616c6c65745f6964656e746974793a3a636f6e73756d655f6175746860292e25014e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292ef82a2060617574685f69646020417574686f72697a6174696f6e204944206f66207469636b6572207472616e7366657220617574686f72697a6174696f6e2e00242323204572726f727369012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f696460206973206e6f7420612076616c6964207469636b6574207472616e7366657220617574686f72697a6174696f6e2e007c6163636570745f61737365745f6f776e6572736869705f7472616e7366657204011c617574685f696420010c753634000218ec546869732066756e6374696f6e206973207573656420746f20616363657074206120746f6b656e206f776e657273686970207472616e736665722e25014e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e2d012a2060617574685f69646020417574686f72697a6174696f6e204944206f662074686520746f6b656e206f776e657273686970207472616e7366657220617574686f72697a6174696f6e2e306372656174655f61737365741c01106e616d65fd01012441737365744e616d650001187469636b6572a001185469636b6572000124646976697369626c6519010110626f6f6c00012861737365745f74797065e501012441737365745479706500012c6964656e74696669657273ed0101505665633c41737365744964656e7469666965723e00013466756e64696e675f726f756e64610701604f7074696f6e3c46756e64696e67526f756e644e616d653e00012864697361626c655f697519010110626f6f6c0003682d01496e697469616c697a65732061206e657720736563757269747920746f6b656e2c20776974682074686520696e6974696174696e67206163636f756e7420617320697473206f776e65722e150154686520746f74616c20737570706c792077696c6c20696e697469616c6c79206265207a65726f2e20546f206d696e7420746f6b656e732c2075736520606973737565602e002c2320417267756d656e7473c5012a20606f726967696e60202d20636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e842a20606e616d6560202d20746865206e616d65206f662074686520746f6b656e2eb02a20607469636b657260202d20746865207469636b65722073796d626f6c206f662074686520746f6b656e2e2d012a2060646976697369626c6560202d206120626f6f6c65616e20746f206964656e74696679207468652064697669736962696c69747920737461747573206f662074686520746f6b656e2e802a206061737365745f7479706560202d2074686520617373657420747970652ec02a20606964656e7469666965727360202d206120766563746f72206f66206173736574206964656e746966696572732eb82a206066756e64696e675f726f756e6460202d206e616d65206f66207468652066756e64696e6720726f756e642e4d012a206064697361626c655f697560202d2077686574686572206f72206e6f7420696e766573746f7220756e697175656e65737320656e666f7263656d656e742073686f756c642062652064697361626c65642ec82020546869732063616e6e6f74206265206368616e676564206166746572206372656174696e67207468652061737365742e00242323204572726f7273fc2d2060496e76616c696441737365744964656e7469666965726020696620616e79206f6620606964656e74696669657273602061726520696e76616c69642e51012d20604d61784c656e6774684f6641737365744e616d6545786365656465646020696620606e616d65602773206c656e67746820657863656564732060543a3a41737365744e616d654d61784c656e677468602e55012d206046756e64696e67526f756e644e616d654d61784c656e67746845786365656465646020696620746865206e616d65206f66207468652066756e64696e6720726f756e64206973206c6f6e67657220746861747c60543a3a46756e64696e67526f756e644e616d654d61784c656e677468602ed42d20604173736574416c726561647943726561746564602069662061737365742077617320616c726561647920637265617465642e5d012d20605469636b6572546f6f4c6f6e676020696620607469636b6572602773206c656e6774682069732067726561746572207468616e2060636f6e6669672e6d61785f7469636b65725f6c656e6774686020636861696e28706172616d657465722ea1022d20605469636b65724e6f7441736369696020696620607469636b657260206973206e6f742079657420726567697374657265642c20616e6420636f6e7461696e73206e6f6e2d6173636969207072696e7461626c652063686172616374657273202866726f6d20636f646520333220746f2031323629206f7220616e7920636861726163746572206166746572206669727374206f6363757272656e6365206f6620605c30602e00382323205065726d697373696f6e732c2a20506f7274666f6c696f18667265657a650401187469636b6572a001185469636b657200042cbc467265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e00242323204572726f7273c02d2060416c726561647946726f7a656e6020696620607469636b65726020697320616c72656164792066726f7a656e2e003423205065726d697373696f6e731c2a20417373657420756e667265657a650401187469636b6572a001185469636b657200052cc4556e667265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722eb02a20607469636b657260202d20746865207469636b6572206f66207468652066726f7a656e20746f6b656e2e00242323204572726f7273b02d20604e6f7446726f7a656e6020696620607469636b657260206973206e6f742066726f7a656e207965742e003423205065726d697373696f6e731c2a2041737365743072656e616d655f61737365740801187469636b6572a001185469636b65720001106e616d65fd01012441737365744e616d650006345852656e616d6573206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e942a20606e616d6560202d20746865206e6577206e616d65206f662074686520746f6b656e2e00242323204572726f727311012d20604d61784c656e6774684f6641737365744e616d65457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e6060543a3a41737365744e616d654d61784c656e677468602e003423205065726d697373696f6e731c2a2041737365741469737375650801187469636b6572a001185469636b6572000118616d6f756e7418011c42616c616e636500072ca449737375652c206f72206d696e742c206e657720746f6b656e7320746f207468652063616c6c65722cac7768696368206d75737420626520616e20617574686f72697a65642065787465726e616c206167656e742e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e602a20607469636b657260206f662074686520746f6b656e2e942a2060616d6f756e7460206f6620746f6b656e73207468617420676574206973737565642e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f1872656465656d0801187469636b6572a001185469636b657200011476616c756518011c42616c616e636500083ccd0152656465656d73206578697374696e6720746f6b656e73206279207265647563696e67207468652062616c616e6365206f66207468652063616c6c657227732064656661756c7420706f7274666f6c696f20616e642074686520746f74616c20737570706c79206f662074686520746f6b656e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e942a206076616c75656020416d6f756e74206f6620746f6b656e7320746f2072656465656d2e002023204572726f727361012d2060556e617574686f72697a6564602049662063616c6c656420627920736f6d656f6e6520776974686f75742074686520617070726f7072696174652065787465726e616c206167656e74207065726d697373696f6e7359012d2060496e76616c69644772616e756c6172697479602049662074686520616d6f756e74206973206e6f7420646976697369626c652062792031305e3620666f72206e6f6e2d646976697369626c6520746f6b656e738d012d2060496e73756666696369656e74506f7274666f6c696f42616c616e636560204966207468652063616c6c657227732064656661756c7420706f7274666f6c696f20646f65736e2774206861766520656e6f75676820667265652062616c616e6365003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f386d616b655f646976697369626c650401187469636b6572a001185469636b657200092c944d616b657320616e20696e646976697369626c6520746f6b656e20646976697369626c652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e00242323204572726f7273ec2d20604173736574416c7265616479446976697369626c656020696620607469636b65726020697320616c726561647920646976697369626c652e003423205065726d697373696f6e731c2a204173736574346164645f646f63756d656e7473080110646f6373650701345665633c446f63756d656e743e0001187469636b6572a001185469636b6572000a248041646420646f63756d656e747320666f72206120676976656e20746f6b656e2e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2eb82a2060646f63736020446f63756d656e747320746f20626520617474616368656420746f20607469636b6572602e003423205065726d697373696f6e731c2a2041737365744072656d6f76655f646f63756d656e747308010c6964730503013c5665633c446f63756d656e7449643e0001187469636b6572a001185469636b6572000b248c52656d6f766520646f63756d656e747320666f72206120676976656e20746f6b656e2e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2ec82a20606964736020446f63756d656e74732069647320746f2062652072656d6f7665642066726f6d20607469636b6572602e003423205065726d697373696f6e731c2a204173736574447365745f66756e64696e675f726f756e640801187469636b6572a001185469636b65720001106e616d65e101014046756e64696e67526f756e644e616d65000c34ac5365747320746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e002c2320417267756d656e747329012a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2ee42a20606e616d6560202d207468652064657369726564206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e00242323204572726f727325012d206046756e64696e67526f756e644e616d654d61784c656e677468457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e7c60543a3a46756e64696e67526f756e644e616d654d61784c656e677468602e003423205065726d697373696f6e731c2a204173736574487570646174655f6964656e746966696572730801187469636b6572a001185469636b657200012c6964656e74696669657273ed0101505665633c41737365744964656e7469666965723e000d34785570646174657320746865206173736574206964656e746966696572732e002c2320417267756d656e747329012a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e59012a20606964656e7469666965727360202d20746865206173736574206964656e7469666965727320746f206265207570646174656420696e2074686520666f726d206f66206120766563746f72206f66207061697273cc2020206f6620604964656e746966696572547970656020616e64206041737365744964656e746966696572602076616c75652e00242323204572726f727331012d2060496e76616c696441737365744964656e7469666965726020696620606964656e746966696572736020636f6e7461696e7320616e7920696e76616c6964206964656e7469666965722e003423205065726d697373696f6e731c2a20417373657450636c61696d5f636c61737369635f7469636b65720801187469636b6572a001185469636b6572000148657468657265756d5f7369676e61747572656907013845636473615369676e6174757265000e38fc436c61696d20612073797374656d61746963616c6c7920726573657276656420506f6c796d61746820436c61737369632028504d432920607469636b657260ac616e64207472616e7366657220697420746f2074686520606f726967696e602773206964656e746974792e003d01546f2076657269667920746861742074686520606f726967696e6020697320696e20636f6e74726f6c206f662074686520457468657265756d206163636f756e74206f6e2074686520626f6f6b732c1101616e2060657468657265756d5f7369676e61747572656020636f6e7461696e696e672074686520606f726967696e6027732044494420617320746865206d657373616765a86d7573742062652070726f7669646564206279207468617420457468657265756d206163636f756e742e002023204572726f727331012d20604e6f53756368436c61737369635469636b6572602069662074686973206973206e6f7420612073797374656d61746963616c6c7920726573657276656420504d43207469636b65722e51012d20605469636b6572416c7265616479526567697374657265646020696620746865207469636b65722077617320616c726561647920726567697374657265642c20652e672e2c20627920606f726967696e602e1d012d20605469636b6572526567697374726174696f6e457870697265646020696620746865207469636b6572277320726567697374726174696f6e2068617320657870697265642e702d20604261644f726967696e60206966206e6f74207369676e65642e19012d2060496e76616c6964457468657265756d5369676e617475726560206966207468652060657468657265756d5f7369676e617475726560206973206e6f742076616c69642e29012d20604e6f74416e4f776e6572602069662074686520657468657265756d206163636f756e74206973206e6f7420746865206f776e6572206f662074686520504d43207469636b65722e58726573657276655f636c61737369635f7469636b65720c0154636c61737369635f7469636b65725f696d706f72747107014c436c61737369635469636b6572496d706f7274000130636f6e74726163745f6469647c01284964656e746974794964000118636f6e6669677507018c5469636b6572526567697374726174696f6e436f6e6669673c543a3a4d6f6d656e743e000f34a052657365727665206120506f6c796d61746820436c61737369632028504d4329207469636b65722e0d014d7573742062652063616c6c656420627920726f6f742c20616e642061737369676e7320746865207469636b657220746f20612073797374656d61746963204449442e002c2320417267756d656e7473782a20606f726967696e60207768696368206d75737420626520726f6f742eec2a2060636c61737369635f7469636b65725f696d706f7274602073706563696669636174696f6e20666f722074686520504d43207469636b65722e5d012a2060636f6e74726163745f6469646020746f207265736572766520746865207469636b657220746f2069662060636c61737369635f7469636b65725f696d706f72742e69735f636f6e74726163746020686f6c64732ebc2a2060636f6e6669676020746f2075736520666f722065787069727920616e64207469636b6572206c656e6774682e002023204572726f727349012a20604173736574416c726561647943726561746564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b65726020776173206372656174656420617320616e2061737365742e61012a20605469636b6572546f6f4c6f6e6760206966207468652060636f6e6669676020636f6e736964657273207468652060636c61737369635f7469636b65725f696d706f72742e7469636b65726020746f6f206c6f6e672e55012a20605469636b6572416c726561647952656769737465726564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b6572602077617320616c726561647920726567697374657265642e4c636f6e74726f6c6c65725f7472616e736665720c01187469636b6572a001185469636b657200011476616c756518011c42616c616e636500013866726f6d5f706f7274666f6c696fd8012c506f7274666f6c696f496400101c4d01466f726365732061207472616e73666572206f6620746f6b656e2066726f6d206066726f6d5f706f7274666f6c696f6020746f207468652063616c6c657227732064656661756c7420706f7274666f6c696f2e002c2320417267756d656e747355012a20606f726967696e60204d75737420626520616e2065787465726e616c206167656e74207769746820617070726f707269617465207065726d697373696f6e7320666f72206120676976656e207469636b65722e982a20607469636b657260205469636b65722073796d626f6c206f66207468652061737365742ecc2a206076616c7565602020416d6f756e74206f6620746f6b656e73206e65656420746f20666f726365207472616e736665722efc2a206066726f6d5f706f7274666f6c696f602046726f6d2077686f6d20706f7274666f6c696f20746f6b656e732067657473207472616e736665727265642e6872656769737465725f637573746f6d5f61737365745f74797065040108747928011c5665633c75383e00112478526567697374657273206120637573746f6d20617373657420747970652e00d05468652070726f766964656420607479602077696c6c20626520626f756e6420746f20616e20494420696e2073746f726167652ebc5468652049442063616e207468656e206265207573656420696e20604173736574547970653a3a437573746f6d602e250153686f756c6420746865206074796020616c726561647920657869737420696e2073746f726167652c206e6f207365636f6e642049442069732061737369676e656420746f2069742e002c2320417267756d656e7473902a20606f726967696e602077686f2063616c6c6564207468652065787472696e7369632ef02a206074796020636f6e7461696e732074686520737472696e6720726570726573656e746174696f6e206f662074686520617373657420747970652e746372656174655f61737365745f776974685f637573746f6d5f747970651c01106e616d65fd01012441737365744e616d650001187469636b6572a001185469636b6572000124646976697369626c6519010110626f6f6c000144637573746f6d5f61737365745f7479706528011c5665633c75383e00012c6964656e74696669657273ed0101505665633c41737365744964656e7469666965723e00013466756e64696e675f726f756e64610701604f7074696f6e3c46756e64696e67526f756e644e616d653e00012864697361626c655f697519010110626f6f6c0012042d015574696c6974792065787472696e73696320746f20626174636820606372656174655f61737365746020616e64206072656769737465725f637573746f6d5f61737365745f74797065602e487365745f61737365745f6d657461646174611001187469636b6572a001185469636b657200010c6b65797907014041737365744d657461646174614b657900011476616c75653502014841737365744d6574616461746156616c756500011864657461696c390201ac4f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e3e00134464536574206173736574206d657461646174612076616c75652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e542a20606b657960204d65746164617461206b65792e642a206076616c756560204d657461646174612076616c75652e09012a206064657461696c7360204f7074696f6e616c204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f727315012a206041737365744d657461646174614b657949734d697373696e676020696620746865206d657461646174612074797065206b657920646f65736e27742065786973742e25012a206041737365744d6574616461746156616c756549734c6f636b65646020696620746865206d657461646174612076616c756520666f7220606b657960206973206c6f636b65642e65012a206041737365744d6574616461746156616c75654d61784c656e67746845786365656465646020696620746865206d657461646174612076616c7565206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a204173736574687365745f61737365745f6d657461646174615f64657461696c730c01187469636b6572a001185469636b657200010c6b65797907014041737365744d657461646174614b657900011864657461696c3d02018c41737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e00143cdc536574206173736574206d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e542a20606b657960204d65746164617461206b65792ee42a206064657461696c7360204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f727315012a206041737365744d657461646174614b657949734d697373696e676020696620746865206d657461646174612074797065206b657920646f65736e27742065786973742e25012a206041737365744d6574616461746156616c756549734c6f636b65646020696620746865206d657461646174612076616c756520666f7220606b657960206973206c6f636b65642e003423205065726d697373696f6e731c2a204167656e741c2a2041737365749472656769737465725f616e645f7365745f6c6f63616c5f61737365745f6d657461646174611401187469636b6572a001185469636b65720001106e616d654502014441737365744d657461646174614e616d65000110737065634d02014441737365744d657461646174615370656300011476616c75653502014841737365744d6574616461746156616c756500011864657461696c390201ac4f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e3e00154c9c52656769737465727320616e6420736574206c6f63616c206173736574206d657461646174612e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e642a206076616c756560204d657461646174612076616c75652e09012a206064657461696c7360204f7074696f6e616c204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f7273a1012a206041737365744d657461646174614c6f63616c4b6579416c7265616479457869737473602069662061206c6f63616c206d657461646174612074797065207769746820606e616d656020616c72656164792065786973747320666f7220607469636b6572602e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e65012a206041737365744d6574616461746156616c75654d61784c656e67746845786365656465646020696620746865206d657461646174612076616c7565206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a2041737365748872656769737465725f61737365745f6d657461646174615f6c6f63616c5f747970650c01187469636b6572a001185469636b65720001106e616d654502014441737365744d657461646174614e616d65000110737065634d02014441737365744d657461646174615370656300164090526567697374657273206173736574206d65746164617461206c6f63616c20747970652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e002023204572726f7273a1012a206041737365744d657461646174614c6f63616c4b6579416c7265616479457869737473602069662061206c6f63616c206d657461646174612074797065207769746820606e616d656020616c72656164792065786973747320666f7220607469636b6572602e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a2041737365748c72656769737465725f61737365745f6d657461646174615f676c6f62616c5f747970650801106e616d654502014441737365744d657461646174614e616d65000110737065634d02014441737365744d657461646174615370656300172c94526567697374657273206173736574206d6574616461746120676c6f62616c20747970652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e002023204572726f727371012a206041737365744d65746164617461476c6f62616c4b6579416c726561647945786973747360206966206120676c6f6261206d657461646174612074797065207769746820606e616d656020616c7265616479206578697374732e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e610704184f7074696f6e04045401e1010108104e6f6e6500000010536f6d650400e1010000010000650700000205020069070c4c706f6c796d6573685f7072696d69746976657320657468657265756d3845636473615369676e6174757265000004006d0701205b75383b2036355d00006d070000034100000008007107083070616c6c65745f61737365744c436c61737369635469636b6572496d706f727400001001246574685f6f776e65723102013c457468657265756d416464726573730001187469636b6572a001185469636b657200012c69735f636f6e747261637419010110626f6f6c00012869735f6372656174656419010110626f6f6c00007507083070616c6c65745f6173736574605469636b6572526567697374726174696f6e436f6e6669670404550120000801446d61785f7469636b65725f6c656e677468080108753800014c726567697374726174696f6e5f6c656e677468f401244f7074696f6e3c553e000079070c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614041737365744d657461646174614b657900010818476c6f62616c04006502015841737365744d65746164617461476c6f62616c4b6579000000144c6f63616c04004902015441737365744d657461646174614c6f63616c4b6579000100007d070c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e1043616c6c04045400011428646973747269627574651c011463615f69647102011043414964000124706f7274666f6c696f8107015c4f7074696f6e3c506f7274666f6c696f4e756d6265723e00012063757272656e6379a001185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e63650001287061796d656e745f61742001184d6f6d656e74000128657870697265735f6174f401384f7074696f6e3c4d6f6d656e743e0000a82501537461727420616e64206174746163682061206361706974616c20646973747269627574696f6e2c20746f20746865204341206964656e746966696564206279206063615f6964602c6501776974682060616d6f756e74602066756e647320696e206063757272656e6379602077697468647261776e2066726f6d2060706f7274666f6c696f602062656c6f6e67696e6720746f20606f726967696e602773204449442e00290154686520646973747269627574696f6e2077696c6c20636f6d6d656e636520617420607061796d656e745f61746020616e64206578706972652061742060657870697265735f6174602cc869662070726f76696465642c206f7220696620604e6f6e65602c207468656e2074686572652773206e6f206578706972792e0025015468652066756e64732077696c6c206265206c6f636b656420696e2060706f7274666f6c696f602066726f6d207768656e206064697374726962757465602069732063616c6c65642e35015768656e2074686572652773206e6f206578706972792c20736f6d652066756e6473206d6179206265206c6f636b656420696e646566696e6974656c7920696e2060706f7274666f6c696f602c150164756520746f20636c61696d616e7473206e6f74207769746864726177696e67206f72206e6f2062656e6566697473206265696e672070757368656420746f207468656d2e2901466f7220696e646976697369626c652063757272656e636965732c20756e6c6f636b656420616d6f756e74732c206f66206c657373207468616e206f6e652077686f6c6520756e69742ca877696c6c206e6f74206265207472616e7366657261626c652066726f6d2060706f7274666f6c696f602e4d01486f77657665722c20696620776520696d6167696e6520746861742075736572732060416c6963656020616e642060426f626020626f74682061726520656e7469746c656420746f20312e3520756e6974732c5101616e64206f6e6c7920726563656976652060316020756e69747320656163682c207468656e2060302e35202b20302e35203d20316020756e69747320617265206c65667420696e2060706f7274666f6c696f602c6c7768696368206973206e6f77207472616e736665727261626c652e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e01012d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e59012d2060706f7274666f6c696f60207370656369666965732074686520706f7274666f6c696f206e756d626572206f6620746865206167656e7420746f20646973747269627574652060616d6f756e74602066726f6d2ef42d206063757272656e63796020746f20776974686472617720616e6420646973747269627574652066726f6d207468652060706f7274666f6c696f602ef82d20607065725f73686172656020616d6f756e74206f66206063757272656e63796020746f20776974686472617720616e6420646973747269627574652e25012020205370656369666965642061732061207065722d6d696c6c696f6e2c20692e652e206031202f2031305e36607468206f66206f6e65206063757272656e63796020746f6b656e2ef02d2060616d6f756e7460206f66206063757272656e63796020746f20776974686472617720616e642064697374726962757465206174206d6f73742e19012d20607061796d656e745f61746020737065636966696573207768656e2062656e6566697473206d617920666972737420626520707573686564206f7220636c61696d65642e29012d2060657870697265735f617460207370656369666965732c2069662070726f76696465642c207768656e2072656d61696e696e672062656e65666974732061726520666f726665697490202020616e64206d6179206265207265636c61696d656420627920606f726967696e602e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed02d2060446973747269627574696e67417373657460206966206063615f69642e7469636b6572203d3d2063757272656e6379602efc2d20604578706972794265666f72655061796d656e74602069662060657870697265735f61742e756e777261702829203c3d207061796d656e745f6174602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ea82d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652ee82d20605265636f72644461746541667465725374617274602069662043412773207265636f72642064617465203e207061796d656e745f61742e31012d2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f662060706f7274666f6c696f602e55012d2060496e73756666696369656e74506f7274666f6c696f42616c616e6365602069662060706f7274666f6c696f6020686173206c657373207468616e2060616d6f756e7460206f66206063757272656e6379602e01012d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e45012d206043414e6f7442656e656669746020696620746865204341206973206e6f74206f66206b696e64205072656469637461626c6542656e656669742f556e7072656469637461626c6542656e65666974003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f14636c61696d04011463615f6964710201104341496400015c0101436c61696d20612062656e65666974206f6620746865206361706974616c20646973747269627574696f6e20617474616368656420746f206063615f6964602e00a8546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5901506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e001101416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e39014d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c98746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e0030232320417267756d656e747345012d20606f726967696e60207768696368206d757374206265206120686f6c646572206f662074686520617373657420616e6420656c696769626c6520666f722074686520646973747269627574696f6e2e01012d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e002023204572726f727325012d2060486f6c646572416c7265616479506169646020696620606f726967696e602773204449442068617320616c7265616479207265636569766564206974732062656e656669742e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec42d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee42d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef42d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e35012d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e35012d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e21012d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e30707573685f62656e6566697408011463615f69647102011043414964000118686f6c6465727c01284964656e746974794964000260f8507573682062656e65666974206f6620616e206f6e676f696e6720646973747269627574696f6e20746f2074686520676976656e2060686f6c646572602e00a8546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5901506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e001101416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e39014d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c98746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e39012d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e7320746f20707573682062656e656669747320666f722e7c2d2060686f6c6465726020746f20707573682062656e656669747320746f2e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec42d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee42d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412edc2d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f74207461726765742060686f6c646572602e35012d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e35012d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e21012d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e1c7265636c61696d04011463615f6964710201104341496400032c90417373756d696e67206120646973747269627574696f6e2068617320657870697265642ce4756e6c6f636b207468652072656d61696e696e6720616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e0030232320417267756d656e747345012d20606f726967696e60207768696368206d757374206265207468652063726561746f72206f6620746865206361706974616c20646973747269627574696f6e207469656420746f206063615f6964602e1d012d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e20746f207265636c61696d20666f722e002023204572726f727319012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602e2d012d2060416c72656164795265636c61696d65646020696620746869732066756e6374696f6e2068617320616c7265616479206265656e2063616c6c6564207375636365737366756c6c792e842d20604e6f74457870697265646020696620606e6f77203c20657870697279602e4c72656d6f76655f646973747269627574696f6e04011463615f6964710201104341496400042cbc52656d6f766573206120646973747269627574696f6e2074686174206861736e27742073746172746564207965742cdc756e6c6f636b696e67207468652066756c6c20616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e49012d206063615f696460206964656e7469666965732074686520434120776974682061206e6f742d7965742d73746172746564206361706974616c20646973747269627574696f6e20746f2072656d6f76652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ebc2d2060446973747269627574696f6e537461727465646020696620607061796d656e745f6174203c3d206e6f77602e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e810704184f7074696f6e04045401e00108104e6f6e6500000010536f6d650400e0000001000085070c3070616c6c65745f617373657428636865636b706f696e741043616c6c040454000110446372656174655f636865636b706f696e740401187469636b6572a001185469636b6572000024c04372656174657320612073696e676c6520636865636b706f696e74206174207468652063757272656e742074696d652e002c2320417267756d656e74732d012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602ea02d20607469636b65726020746f206372656174652074686520636865636b706f696e7420666f722e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e0d012d2060436f756e7465724f766572666c6f77602069662074686520746f74616c20636865636b706f696e7420636f756e74657220776f756c64206f766572666c6f772e707365745f7363686564756c65735f6d61785f636f6d706c65786974790401386d61785f636f6d706c657869747920010c75363400012459015365747320746865206d617820636f6d706c6578697479206f662061207363686564756c652073657420666f7220616e20617262697472617279207469636b657220746f20606d61785f636f6d706c6578697479602eb8546865206e6577206d6178696d756d206973206e6f7420656e666f7263656420726574726f6163746976656c792cb4616e64206f6e6c79206170706c696573206f6e6365206e6577207363686564756c657320617265206d6164652e00a84d7573742062652063616c6c6564206173206120504950202872657175697265732022726f6f7422292e002c2320417267756d656e7473782d20606f726967696e602069732074686520726f6f74206f726967696e2e09012d20606d61785f636f6d706c65786974796020616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365742e3c6372656174655f7363686564756c650801187469636b6572a001185469636b65720001207363686564756c65890701305363686564756c655370656300024ca4437265617465732061207363686564756c652067656e65726174696e6720636865636b706f696e7473d4696e20746865206675747572652061742065697468657220612066697865642074696d65206f7220617420696e74657276616c732e000901546865207363686564756c6520737461727473206f7574207769746820607374726f6e675f7265665f636f756e74287363686564756c655f696429203c2d2030602e002c2320417267756d656e747321012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e982d20607469636b65726020746f2063726561746520746865207363686564756c6520666f722eb02d20607363686564756c656020746861742077696c6c2067656e657261746520636865636b706f696e74732e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e0d012d20605363686564756c654475726174696f6e546f6f53686f72746020696620746865207363686564756c65206475726174696f6e20697320746f6f2073686f72742e21012d2060496e73756666696369656e744163636f756e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c64206e6f7420626520636861726765642e4d012d2060436f756e7465724f766572666c6f776020696620746865207363686564756c65204944206f7220746f74616c20636865636b706f696e7420636f756e7465727320776f756c64206f766572666c6f772e5d012d20604661696c6564546f436f6d707574654e657874436865636b706f696e746020696620746865206e65787420636865636b706f696e7420666f7220607363686564756c656020697320696e2074686520706173742e003423205065726d697373696f6e731c2a2041737365743c72656d6f76655f7363686564756c650801187469636b6572a001185469636b657200010869649d0201285363686564756c654964000338fc52656d6f7665732074686520636865636b706f696e74207363686564756c65206f6620616e206173736574206964656e74696669656420627920606964602e002c2320417267756d656e747321012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e9c2d20607469636b65726020746f2072656d6f766520746865207363686564756c652066726f6d2e09012d2060696460206f6620746865207363686564756c652c207768656e2069742077617320637265617465642062792060637265617465645f7363686564756c65602e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e41012d20604e6f436865636b706f696e745363686564756c6560206966206069646020646f6573206e6f74206964656e746966792061207363686564756c6520666f72207468697320607469636b6572602ef42d20605363686564756c654e6f7452656d6f7661626c656020696620606964602065786973747320627574206973206e6f742072656d6f7661626c652e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e89070c3070616c6c65745f617373657428636865636b706f696e74305363686564756c655370656300000c01147374617274f401384f7074696f6e3c4d6f6d656e743e000118706572696f649502013843616c656e646172506572696f6400012472656d61696e696e6710010c75333200008d07086470616c6c65745f636f6d706c69616e63655f6d616e616765721043616c6c040454000124686164645f636f6d706c69616e63655f726571756972656d656e740c01187469636b6572a001185469636b657200014473656e6465725f636f6e646974696f6e73a90201385665633c436f6e646974696f6e3e00014c72656365697665725f636f6e646974696f6e73a90201385665633c436f6e646974696f6e3e00002c050141646473206120636f6d706c69616e636520726571756972656d656e7420746f20616e206173736574277320636f6d706c69616e6365206279207469636b65722ef849662074686520636f6d706c69616e636520726571756972656d656e742069732061206475706c69636174652c20697420646f6573206e6f7468696e672e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574c42a2073656e6465725f636f6e646974696f6e73202d2053656e646572207472616e7366657220636f6e646974696f6e732ed42a2072656365697665725f636f6e646974696f6e73202d205265636569766572207472616e7366657220636f6e646974696f6e732e003423205065726d697373696f6e731c2a2041737365747472656d6f76655f636f6d706c69616e63655f726571756972656d656e740801187469636b6572a001185469636b6572000108696410010c753332000124f052656d6f766573206120636f6d706c69616e636520726571756972656d656e742066726f6d20616e206173736574277320636f6d706c69616e63652e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574f02a206964202d20436f6d706c69616e636520726571756972656d656e74206964207768696368206973206e65656420746f2062652072656d6f766564003423205065726d697373696f6e731c2a204173736574607265706c6163655f61737365745f636f6d706c69616e63650801187469636b6572a001185469636b657200014061737365745f636f6d706c69616e6365d10201685665633c436f6d706c69616e6365526571756972656d656e743e00023cfc5265706c6163657320616e206173736574277320636f6d706c69616e6365206279207469636b657220776974682061206e657720636f6d706c69616e63652e00fc436f6d706c69616e636520726571756972656d656e74732077696c6c20626520736f727465642028617363656e64696e6720627920696429206265666f72658c7265706c6163696e67207468652063757272656e7420726571756972656d656e74732e002c2320417267756d656e7473782a20607469636b657260202d20746865206173736574207469636b65722cbc2a206061737365745f636f6d706c69616e6365202d20746865206e657720617373657420636f6d706c69616e63652e002023204572726f7273f02a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722eb1012a20604475706c69636174654173736574436f6d706c69616e636560206966206061737365745f636f6d706c69616e63656020636f6e7461696e73206d756c7469706c6520656e74726965732077697468207468652073616d652060726571756972656d656e745f6964602e003423205065726d697373696f6e731c2a2041737365745872657365745f61737365745f636f6d706c69616e63650401187469636b6572a001185469636b65720003207452656d6f76657320616e206173736574277320636f6d706c69616e6365002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a2041737365745870617573655f61737365745f636f6d706c69616e63650401187469636b6572a001185469636b657200042011015061757365732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a2041737365745c726573756d655f61737365745f636f6d706c69616e63650401187469636b6572a001185469636b65720005201501526573756d65732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a204173736574806164645f64656661756c745f747275737465645f636c61696d5f6973737565720801187469636b6572a001185469636b6572000118697373756572c102013454727573746564497373756572000624f84164647320616e6f746865722064656661756c74207472757374656420636c61696d2069737375657220617420746865207469636b6572206c6576656c2e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742ec82a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e003423205065726d697373696f6e731c2a2041737365748c72656d6f76655f64656661756c745f747275737465645f636c61696d5f6973737565720801187469636b6572a001185469636b65720001186973737565727c01284964656e746974794964000724750152656d6f7665732074686520676976656e2060697373756572602066726f6d2074686520736574206f662064656661756c74207472757374656420636c61696d206973737565727320617420746865207469636b6572206c6576656c2e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742ec82a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e003423205065726d697373696f6e731c2a204173736574746368616e67655f636f6d706c69616e63655f726571756972656d656e740801187469636b6572a001185469636b657200011c6e65775f726571a5020154436f6d706c69616e6365526571756972656d656e74000824f04d6f6469667920616e206578697374696e6720636f6d706c69616e636520726571756972656d656e74206f66206120676976656e207469636b65722e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742e8c2a206e65775f726571202d20436f6d706c69616e636520726571756972656d656e742e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e9107086070616c6c65745f636f72706f726174655f616374696f6e731043616c6c040454000124587365745f6d61785f64657461696c735f6c656e6774680401186c656e67746810010c753332000008d053657420746865206d617820606c656e67746860206f66206064657461696c736020696e207465726d73206f662062797465732e744d6179206f6e6c792062652063616c6c6564207669612061205049502e4c7365745f64656661756c745f746172676574730801187469636b6572a001185469636b657200011c74617267657473d90201405461726765744964656e746974696573000134cc536574207468652064656661756c7420434120605461726765744964656e7469746965736020746f206074617267657473602e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ee42d20607469636b65726020666f72207768696368207468652064656661756c74206964656e74697469657320617265206368616e67696e672ecc2d20607461726765747360207468652064656661756c7420746172676574206964656e74697469657320666f7220612043412e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e31012d2060546f6f4d616e79546172676574496473602069662060746172676574732e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e003423205065726d697373696f6e731c2a2041737365746c7365745f64656661756c745f77697468686f6c64696e675f7461780801187469636b6572a001185469636b657200010c7461787d02010c5461780002303d01536574207468652064656661756c742077697468686f6c64696e672074617820666f7220616c6c204449447320616e64204341732072656c6576616e7420746f207468697320607469636b6572602e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ec82d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2e05012d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e003423205065726d697373696f6e731c2a2041737365745c7365745f6469645f77697468686f6c64696e675f7461780c01187469636b6572a001185469636b657200012474617865645f6469647c01284964656e74697479496400010c746178e102012c4f7074696f6e3c5461783e000340f4536574207468652077697468686f6c64696e6720746178206f6620607469636b65726020666f72206074617865645f6469646020746f2060746178602e810149662060536f6d652874617829602c2074686973206f7665727269646573207468652064656661756c742077697468686f6c64696e6720746178206f6620607469636b65726020746f20607461786020666f72206074617865645f646964602efc4f74686572776973652c20696620604e6f6e65602c207468652064656661756c742077697468686f6c64696e67207461782077696c6c20626520757365642e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ec82d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2ee42d206074617865645f6469646020746861742077696c6c2068617665206974732077697468686f6c64696e672074617820757064617465642e05012d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e81012d2060546f6f4d616e794469645461786573602069662060536f6d6528746178296020616e6420616464696e6720746865206f7665727269646520776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e003423205065726d697373696f6e731c2a20417373657464696e6974696174655f636f72706f726174655f616374696f6e2001187469636b6572a001185469636b65720001106b696e64e902011843414b696e640001246465636c5f646174652001184d6f6d656e7400012c7265636f72645f64617465950701584f7074696f6e3c5265636f726444617465537065633e00011c64657461696c7301030124434144657461696c7300011c746172676574739d0701604f7074696f6e3c5461726765744964656e7469746965733e00015c64656661756c745f77697468686f6c64696e675f746178e102012c4f7074696f6e3c5461783e00013c77697468686f6c64696e675f746178a10701784f7074696f6e3c5665633c284964656e7469747949642c20546178293e3e0004784901496e69746961746573206120434120666f7220607469636b657260206f6620606b696e64602077697468206064657461696c736020616e64206f746865722070726f766964656420617267756d656e74732e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732e8c2d20607469636b657260207468617420746865204341206973206d61646520666f722e7c2d20606b696e6460206f66204341206265696e6720696e697469617465642e982d20606465636c5f6461746560206f66204341206272696e6720696e697469616c697a65642ef02d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f6620746869732043412e610120202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e4d012d206064657461696c7360206f662074686520434120696e20667265652d7465787420666f726d2c20757020746f2061206365727461696e206e756d626572206f6620627974657320696e206c656e6774682ef42d206074617267657473602c20696620616e792c20776869636820746869732043412069732072656c6576616e742f697272656c6576616e7420746f2e49012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f7461726765747360292e5d012d206064656661756c745f77697468686f6c64696e675f746178602c20696620616e792c206973207468652064656661756c742077697468686f6c64696e672074617820746f2075736520666f7220746869732043412e69012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f77697468686f6c64696e675f74617860292e21012d206077697468686f6c64696e675f746178602c20696620616e792c2070726f7669646573207065722d4449442077697468686f6c64696e6720746178206f76657272696465732e59012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f6469645f77697468686f6c64696e675f74617860292e002023204572726f72731d012d206044657461696c73546f6f4c6f6e6760206966206064657461696c732e6c656e28296020676f6573206265796f6e6420606d61785f64657461696c735f6c656e677468602e25012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e69012d2060436f756e7465724f766572666c6f776020696e2074686520756e6c696b656c79206576656e74207468617420736f206d616e79204341732077657265206372656174656420666f72207468697320607469636b6572602cf820207468617420696e7465676572206f766572666c6f7720776f756c642068617665206f63637572656420696620696e737465616420616c6c6f7765642e75012d2060546f6f4d616e79446964546178657360206966206077697468686f6c64696e675f7461782e756e7772617028292e6c656e28296020776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e01012d20604475706c69636174654469645461786020696620612044494420697320696e636c75646564206d6f7265207468616e206f6e636520696e20607774602e55012d2060546f6f4d616e79546172676574496473602069662060746172676574732e756e7772617028292e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e01012d20604465636c44617465496e4675747572656020696620746865206465636c61726174696f6e2064617465206973206e6f7420696e2074686520706173742e51012d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e003423205065726d697373696f6e731c2a2041737365742c6c696e6b5f63615f646f6308010869647102011043414964000110646f63730503013c5665633c446f63756d656e7449643e000548ac4c696e6b2074686520676976656e204341206069646020746f2074686520676976656e2060646f6373602ef4416e792070726576696f7573206c696e6b7320666f7220746865204341206172652072656d6f76656420696e206661766f72206f662060646f6373602e00550154686520776f726b666c6f77206865726520697320746f206164642074686520646f63756d656e747320616e6420696e6974696174696e672074686520434120696e20616e79206f7264657220646573697265642ec44f6e636520626f74682065786973742c20746865792063616e206e6f77206265206c696e6b656420746f6765746865722e0030232320417267756d656e747351012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206069642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732ea82d2060696460206f662074686520434120746f206173736f636961746520776974682060646f6373602eb02d2060646f63736020746f206173736f6369617465207769746820746865204341207769746820606964602e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e19012d20604e6f53756368446f636020696620616e79206f662060646f63736020646f6573206e6f74206964656e7469667920616e206578697374696e6720646f63756d656e742e003423205065726d697373696f6e731c2a2041737365742472656d6f76655f636104011463615f696471020110434149640006489452656d6f76657320746865204341206964656e746966696564206279206063615f6964602e00c44173736f63696174656420646174612c207375636820617320646f63756d656e74206c696e6b732c2062616c6c6f74732cac616e64206361706974616c20646973747269627574696f6e732061726520616c736f2072656d6f7665642e00d4416e79207363686564756c65206173736f636961746564207769746820746865207265636f726420646174652077696c6c20736565b0607374726f6e675f7265665f636f756e74287363686564756c655f696429602064656372656d656e7465642e0030232320417267756d656e74735d012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e782d206063615f696460206f662074686520434120746f2072656d6f76652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e003423205065726d697373696f6e731c2a204173736574486368616e67655f7265636f72645f6461746508011463615f6964710201104341496400012c7265636f72645f64617465950701584f7074696f6e3c5265636f726444617465537065633e00073ce04368616e67657320746865207265636f72642064617465206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e74735d012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e742d206063615f696460206f662074686520434120746f20616c7465722eec2d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f66207468652043412e610120202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e51012d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e003423205065726d697373696f6e731c2a204173736574a0696e6974696174655f636f72706f726174655f616374696f6e5f616e645f646973747269627574651c011c63615f61726773a507016c496e697469617465436f72706f72617465416374696f6e41726773000124706f7274666f6c696f8107015c4f7074696f6e3c506f7274666f6c696f4e756d6265723e00012063757272656e6379a001185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e63650001287061796d656e745f61742001184d6f6d656e74000128657870697265735f6174f401384f7074696f6e3c4d6f6d656e743e0008041d015574696c6974792065787472696e73696320746f2062617463682060696e6974696174655f636f72706f726174655f616374696f6e6020616e64206064697374726962757465600c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e950704184f7074696f6e0404540199070108104e6f6e6500000010536f6d650400990700000100009907086070616c6c65745f636f72706f726174655f616374696f6e73385265636f7264446174655370656300010c245363686564756c656404002001184d6f6d656e74000000404578697374696e675363686564756c6504009d0201285363686564756c654964000100204578697374696e67040089020130436865636b706f696e744964000200009d0704184f7074696f6e04045401d9020108104e6f6e6500000010536f6d650400d9020000010000a10704184f7074696f6e04045401f9020108104e6f6e6500000010536f6d650400f9020000010000a507086070616c6c65745f636f72706f726174655f616374696f6e736c496e697469617465436f72706f72617465416374696f6e4172677300002001187469636b6572a001185469636b65720001106b696e64e902011843414b696e640001246465636c5f646174652001184d6f6d656e7400012c7265636f72645f64617465950701584f7074696f6e3c5265636f726444617465537065633e00011c64657461696c7301030124434144657461696c7300011c746172676574739d0701604f7074696f6e3c5461726765744964656e7469746965733e00015c64656661756c745f77697468686f6c64696e675f746178e102012c4f7074696f6e3c5461783e00013c77697468686f6c64696e675f746178a10701784f7074696f6e3c5665633c284964656e7469747949642c20546178293e3e0000a9070c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f741043616c6c040454000118346174746163685f62616c6c6f7410011463615f6964710201104341496400011472616e67650d03013c42616c6c6f7454696d6552616e67650001106d6574611103012842616c6c6f744d65746100010c72637619010110626f6f6c000068e8417474616368206120636f72706f726174652062616c6c6f7420746f20746865204341206964656e746966696564206279206063615f6964602e00ac5468652062616c6c6f742077696c6c2061646d697420766f7465732077697468696e206072616e6765602eb05468652062616c6c6f742773206d657461646174612069732070726f766964656420627920606d657461602c0501776869636820696e636c75646573207468652062616c6c6f74207469746c652c20746865206d6f74696f6e732c2074686569722063686f696365732c206574632e7853656520746865206042616c6c6f744d6574616020666f72206d6f72652e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602ed02d206063615f696460206964656e7469666965732074686520434120746f20617474616368207468652062616c6c6f7420746f2ec02d206072616e67656020737065636966696573207768656e20766f74696e672073746172747320616e6420656e64732eec2d20606d6574616020737065636966696573207468652062616c6c6f742773206d657461646174612061732061666f72656d656e74696f6e65642ee42d2060726376602073706563696669657320776865746865722052435620697320656e61626c656420666f7220746869732062616c6c6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef02d206043414e6f744e6f746963656020696620746865204341206973206e6f74206f662074686520604973737565724e6f7469636560206b696e642ebc2d206053746172744166746572456e6460206966206072616e67652e7374617274203e2072616e67652e656e64602e29012d20604e6f774166746572456e646020696620606e6f77203e2072616e67652e656e646020776865726520606e6f7760206973207468652063757272656e742074696d657374616d702ea82d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652e59012d20605265636f7264446174654166746572537461727460206966206064617465203e2072616e67652e73746172746020776865726520606461746560206973207468652043412773207265636f726420646174652eb82d2060416c726561647945786973747360206966207468657265277320612062616c6c6f7420616c72656164792e31012d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e09012d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e01012d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e10766f746508011463615f69647102011043414964000114766f7465733103013c5665633c42616c6c6f74566f74653e0001441101436173742060766f7465736020696e207468652062616c6c6f7420617474616368656420746f20746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747309012d20606f726967696e60207768696368206d7573742062652061207065726d697373696f6e6564207369676e6572207461726765746564206279207468652043412eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e21012d2060766f7465736020737065636966696573207468652062616c616e63657320746f2061737369676e20746f20656163682063686f69636520696e207468652062616c6c6f742e55012020205468652066756c6c20766f74696e6720706f776572206f6620606f726967696e60277320444944206d6179206265207573656420666f722065616368206d6f74696f6e20696e207468652062616c6c6f742e002023204572726f7273dc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742efc2d2060566f74696e674e6f7453746172746564602069662074686520766f74696e6720706572696f64206861736e277420636f6d6d656e636564207965742ed82d2060566f74696e67416c7265616479456e646564602069662074686520766f74696e6720706572696f642068617320656e6465642e5d012d206057726f6e67566f7465436f756e746020696620746865206e756d626572206f662063686f6963657320696e207468652062616c6c6f7420646f6573206e6f74206d617463682060766f7465732e6c656e2829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef42d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e21012d2060496e73756666696369656e74566f746573602069662074686520766f74696e6720706f776572207573656420666f7220616e79206d6f74696f6e20696e2060766f74657360a42020206578636565647320606f726967696e60277320444944277320766f74696e6720706f7765722e286368616e67655f656e6408011463615f6964710201104341496400010c656e642001184d6f6d656e740002300501416d656e642074686520656e642064617465206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ec42d2060656e64602073706563696669657320746865206e657720656e642064617465206f66207468652062616c6c6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e8c2d206053746172744166746572456e646020696620607374617274203e20656e64602e2c6368616e67655f6d65746108011463615f696471020110434149640001106d6574611103012842616c6c6f744d6574610003346101416d656e6420746865206d6574616461746120287469746c652c206d6f74696f6e732c206574632e29206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e902d20606d657461602073706563696669657320746865206e6577206d657461646174612e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e31012d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e09012d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e286368616e67655f72637608011463615f6964710201104341496400010c72637619010110626f6f6c00042c0501416d656e642052435620737570706f727420666f72207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ecc2d206072637660207370656369666965732069662052435620697320746f20626520737570706f72746564206f72206e6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e3472656d6f76655f62616c6c6f7404011463615f69647102011043414964000528c852656d6f7665207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ead07082c70616c6c65745f706970731043616c6c040454000144647365745f7072756e655f686973746f726963616c5f706970730401147072756e6519010110626f6f6c000014a44368616e6765207768657468657220636f6d706c65746564205049507320617265207072756e65642e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473f02a20607072756e656020737065636966696573207768657468657220636f6d706c6574656420504950732073686f756c64206265207072756e65642e607365745f6d696e5f70726f706f73616c5f6465706f73697404011c6465706f73697418011c42616c616e636500011421014368616e676520746865206d696e696d756d2070726f706f73616c206465706f73697420616d6f756e7420726571756972656420746f20737461727420612070726f706f73616c2e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473f02a20606465706f7369746020746865206e6577206d696e206465706f73697420726571756972656420746f20737461727420612070726f706f73616c707365745f64656661756c745f656e6163746d656e745f706572696f640401206475726174696f6e100138543a3a426c6f636b4e756d626572000214904368616e6765207468652064656661756c7420656e6163746d656e7420706572696f642e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e747369012a20606475726174696f6e6020746865206e65772064656661756c7420656e6163746d656e7420706572696f642069742074616b657320666f722061207363686564756c65642050495020746f2062652065786563757465642e587365745f70656e64696e675f7069705f657870697279040118657870697279390101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e00031805014368616e67652074686520616d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020697320657870697265642eb4496620606578706972796020697320604e6f6e6560207468656e2050495073206e65766572206578706972652e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e74731d012a2060657870697279602074686520626c6f636b2d74696d652069742074616b657320666f722061207374696c6c2d6050656e64696e67602050495020746f206578706972652e587365745f6d61785f7069705f736b69705f636f756e7404010c6d6178080130536b6970706564436f756e74000414d44368616e676520746865206d6178696d756d20736b697020636f756e742028606d61785f7069705f736b69705f636f756e7460292e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473ec2a20606d61786020736b697073206265666f72652061205049502063616e6e6f7420626520736b697070656420627920474320616e796d6f72652e507365745f6163746976655f7069705f6c696d69740401146c696d697410010c75333200051469014368616e676520746865206d6178696d756d206e756d626572206f66206163746976652050495073206265666f726520636f6d6d756e697479206d656d626572732063616e6e6f742070726f706f736520616e797468696e672e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473902a20606c696d697460206f6620636f6e63757272656e742061637469766520504950732e1c70726f706f736510012070726f706f73616cdd050140426f783c543a3a50726f706f73616c3e00011c6465706f73697418011c42616c616e636500010c75726c5102012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e510301584f7074696f6e3c5069704465736372697074696f6e3e000624050141206e6574776f726b206d656d6265722063726561746573206120504950206279207375626d697474696e67206120646973706174636861626c6520776869636855016368616e67657320746865206e6574776f726b20696e20736f6d657761792e2041206d696e696d756d206465706f73697420697320726571756972656420746f206f70656e2061206e65772070726f706f73616c2e002c2320417267756d656e7473c82a206070726f706f73657260206973206569746865722061207369676e696e67206b6579206f7220636f6d6d69747465652e65012020205573656420746f20756e6465727374616e6420776865746865722074686973206973206120636f6d6d69747465652070726f706f73616c20616e6420766572696669656420616761696e737420606f726967696e602e802a206070726f706f73616c60206120646973706174636861626c652063616c6c45012a20606465706f73697460206d696e696d756d206465706f7369742076616c75652c2077686963682069732069676e6f726564206966206070726f706f73657260206973206120636f6d6d69747465652ecc2a206075726c602061206c696e6b20746f2061207765627369746520666f722070726f706f73616c2064697363757373696f6e10766f74650c010869644d03011450697049640001286179655f6f725f6e617919010110626f6f6c00011c6465706f73697418011c42616c616e63650007481d01566f74652065697468657220696e206661766f722028606179655f6f725f6e617960203d3d207472756529206f7220616761696e7374206120504950207769746820606964602e4d015468652022636f6e76696e6374696f6e22206f7220737472656e677468206f662074686520766f746520697320676976656e20627920606465706f736974602c2077686963682069732072657365727665642e008c4e6f746520746861742060766f746560206973202a6e6f742a2061646469746976652ef8546861742069732c2060766f74652869642c20747275652c203530296020666f6c6c6f7765642062792060766f74652869642c20747275652c2034302960490177696c6c2066697273742072657365727665206035306020616e64207468656e20726566756e6420603530202d203130602c20656e64696e672075702077697468206034306020696e206465706f7369742e2501546f206164642061746f70206f66206578697374696e6720766f7465732c20796f75276c6c206e65656420606578697374696e675f6465706f736974202b206164646974696f6e602e002c2320417267756d656e74734c2a20606964602c2070726f706f73616c206964dc2a20606179655f6f725f6e6179602c206120626f6f6c20726570726573656e74696e6720666f72206f7220616761696e737420766f7465e82a20606465706f736974602c207468652022636f6e76696374696f6e2220776974682077686963682074686520766f7465206973206d6164652e002023204572726f7273e42a20604e6f5375636850726f706f73616c60206966206069646020646f65736e2774207265666572656e636520612076616c6964205049502ee42a20604e6f7446726f6d436f6d6d756e697479602069662070726f706f73616c20776173206d616465206279206120636f6d6d69747465652ec02a2060496e636f727265637450726f706f73616c537461746560206966205049502069736e27742070656e64696e672e2d012a2060496e73756666696369656e744465706f7369746020696620606f726967696e602063616e6e6f74207265736572766520606465706f736974202d206f6c645f6465706f736974602e68617070726f76655f636f6d6d69747465655f70726f706f73616c04010869644d030114506970496400081cd4417070726f766573207468652070656e64696e6720636f6d6d69747465652050495020676976656e2062792074686520606964602e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ee42a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c2069736e27742070656e64696e672ee02a20604e6f744279436f6d6d697474656560206966207468652070726f706f73616c2069736e2774206279206120636f6d6d69747465652e3c72656a6563745f70726f706f73616c04010869644d0301145069704964000920f852656a65637473207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e7920626f6e6465642066756e64732cb8617373756d696e67206974206861736e2774206265656e2063616e63656c6c6564206f722065786563757465642e05014e6f746520746861742070726f706f73616c73207363686564756c65642d666f722d657865637574696f6e2063616e20616c736f2062652072656a65637465642e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742e15012a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c207761732063616e63656c6c6564206f722065786563757465642e387072756e655f70726f706f73616c04010869644d0301145069704964000a2429015072756e65207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e792066756e6473206e6f7420616c726561647920726566756e6465642e6454686520504950206d6179206e6f7420626520616374697665000901546869732066756e6374696f6e20697320696e74656e64656420666f722073746f72616765206761726261676520636f6c6c656374696f6e20707572706f7365732e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ed42a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c206973206163746976652e5072657363686564756c655f657865637574696f6e08010869644d0301145069704964000114756e74696c250601584f7074696f6e3c543a3a426c6f636b4e756d6265723e000b24e0557064617465732074686520657865637574696f6e207363686564756c65206f66207468652050495020676976656e20627920606964602e002c2320417267756d656e747331012a2060756e74696c6020646566696e6573207468652066757475726520626c6f636b2077686572652074686520656e6163746d656e7420706572696f642077696c6c2066696e69736865642e4501202020604e6f6e65602076616c7565206d65616e73207468617420656e6163746d656e7420706572696f6420697320676f696e6720746f2066696e69736820696e20746865206e65787420626c6f636b2e002023204572726f727339012a206052657363686564756c654e6f74427952656c65617365436f6f7264696e61746f726020756e6c657373207472696767657265642062792072656c6561736520636f6f7264696e61746f722e21012a2060496e636f727265637450726f706f73616c53746174656020756e6c657373207468652070726f706f73616c2077617320696e2061207363686564756c65642073746174652e38636c6561725f736e617073686f74000c10e8436c656172732074686520736e617073686f7420616e6420656d69747320746865206576656e742060536e617073686f74436c6561726564602e002023204572726f72733d012a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e20736e617073686f74000d140d0154616b65732061206e657720736e617073686f74206f66207468652063757272656e74206c697374206f66206163746976652026262070656e64696e6720504950732e2901546865205049507320617265207468656e20736f7274656420696e746f2061207072696f72697479207175657565206261736564206f6e2065616368205049502773207765696768742e002023204572726f72733d012a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e58656e6163745f736e617073686f745f726573756c747304011c726573756c7473b10701705665633c2850697049642c20536e617073686f74526573756c74293e000e44d0456e616374732060726573756c74736020666f7220746865205049507320696e2074686520736e617073686f742071756575652e290154686520736e617073686f742077696c6c20626520617661696c61626c6520666f72206675727468657220656e6163746d656e747320756e74696c20697420697320636c65617265642e0055015468652060726573756c7473602061726520656e636f6465642061206c697374206f6620602869642c20726573756c7429602077686572652060726573756c7460206973206170706c69656420746f20606964602e49014e6f746520746861742074686520736e617073686f74207072696f7269747920717565756520697320656e636f646564207769746820746865202a6c6f77657374207072696f726974792066697273742a2e5501736f2060726573756c7473203d205b2869642c20417070726f7665295d602077696c6c20617070726f76652060536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20315d602e002023204572726f72730d012a20604261644f726967696e60202d20756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2e21012a206043616e6e6f74536b697050697060202d206120676976656e205049502068617320616c7265616479206265656e20736b697070656420746f6f206d616e792074696d65732e0d012a2060536e617073686f74526573756c74546f6f4c6172676560202d206f6e206c656e28726573756c747329203e206c656e28736e617073686f745f7175657565292e702a2060536e617073686f7449644d69736d6174636860202d2069663a2420206060607465787498202020e2888320286920e2888820302e2e536e617073686f7451756575652e6c656e2829292efc2020202020726573756c74735b695d2e3020e289a020536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20695d2e6964142020606060f8202020546869732069732070726f746563747320616761696e737420636c656172696e67207175657565207768696c6520474320697320766f74696e672e54657865637574655f7363686564756c65645f70697004010869644d0301145069704964000f04d8496e7465726e616c20646973706174636861626c6520746861742068616e646c657320657865637574696f6e206f662061205049502e506578706972655f7363686564756c65645f70697008010c6469647c01284964656e74697479496400010869644d0301145069704964001004dc496e7465726e616c20646973706174636861626c6520746861742068616e646c65732065787069726174696f6e206f662061205049502e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652eb107000002b50700b507000004084d03b90700b907082c70616c6c65745f7069707338536e617073686f74526573756c7400010c1c417070726f76650000001852656a65637400010010536b697000020000bd07084070616c6c65745f706f7274666f6c696f1043616c6c040454000118406372656174655f706f7274666f6c696f0401106e616d6585030134506f7274666f6c696f4e616d65000004a843726561746573206120706f7274666f6c696f20776974682074686520676976656e20606e616d65602e4064656c6574655f706f7274666f6c696f04010c6e756de0013c506f7274666f6c696f4e756d626572000120350144656c657465732061207573657220706f7274666f6c696f2e204120706f7274666f6c696f2063616e2062652064656c65746564206f6e6c7920696620697420686173206e6f2066756e64732e002023204572726f72731d012a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2ef02a2060506f7274666f6c696f4e6f74456d707479602069662074686520706f7274666f6c696f207374696c6c20686f6c647320616e79206173736574003423205065726d697373696f6e732c2a20506f7274666f6c696f506d6f76655f706f7274666f6c696f5f66756e64730c011066726f6dd8012c506f7274666f6c696f4964000108746fd8012c506f7274666f6c696f49640001146974656d73c10701585665633c4d6f7665506f7274666f6c696f4974656d3e00023c5d014d6f766573206120746f6b656e20616d6f756e742066726f6d206f6e6520706f7274666f6c696f206f6620616e206964656e7469747920746f20616e6f7468657220706f7274666f6c696f206f66207468652073616d65e06964656e746974792e204d7573742062652063616c6c65642062792074686520637573746f6469616e206f66207468652073656e6465722e110146756e64732066726f6d2064656c6574656420706f7274666f6c696f732063616e20616c736f206265207265636f7665726564207669612074686973206d6574686f642e00e0412073686f7274206d656d6f2063616e20626520616464656420746f20746f206561636820746f6b656e20616d6f756e74206d6f7665642e002023204572726f727369012a2060506f7274666f6c696f446f65734e6f74457869737460206966206f6e65206f7220626f7468206f662074686520706f7274666f6c696f73207265666572656e636520616e20696e76616c696420706f7274666f6c696f2e51012a206064657374696e6174696f6e5f69735f73616d655f706f7274666f6c696f6020696620626f74682073656e64657220616e6420726563656976657220706f7274666f6c696f20617265207468652073616d6591012a2060446966666572656e744964656e74697479506f7274666f6c696f7360206966207468652073656e64657220616e6420726563656976657220706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e74697469657349012a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f66207468652066726f6d20706f7274666f6c696f41012a2060496e73756666696369656e74506f7274666f6c696f42616c616e636560206966207468652073656e64657220646f6573206e6f74206861766520656e6f75676820667265652062616c616e6365003423205065726d697373696f6e732c2a20506f7274666f6c696f4072656e616d655f706f7274666f6c696f08010c6e756de0013c506f7274666f6c696f4e756d62657200011c746f5f6e616d6585030134506f7274666f6c696f4e616d6500031c8052656e616d65732061206e6f6e2d64656661756c7420706f7274666f6c696f2e002023204572726f72731d012a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2e003423205065726d697373696f6e732c2a20506f7274666f6c696f58717569745f706f7274666f6c696f5f637573746f647904010c706964d8012c506f7274666f6c696f4964000420bc5768656e2063616c6c65642062792074686520637573746f6469616e206f662060706f7274666f6c696f5f6964602c4901616c6c6f77732072657475726e696e672074686520637573746f6479206f662074686520706f7274666f6c696f20746f2074686520706f7274666f6c696f206f776e657220756e696c61746572616c6c792e002023204572726f72735d012a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f74207468652063757272656e7420637573746f6469616e206f662060706f7274666f6c696f5f6964602e003423205065726d697373696f6e732c2a20506f7274666f6c696f606163636570745f706f7274666f6c696f5f637573746f647904011c617574685f696420010c7536340005000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ec107000002c50700c507084070616c6c65745f706f7274666f6c696f444d6f7665506f7274666f6c696f4974656d00000c01187469636b6572a001185469636b6572000118616d6f756e7418011c42616c616e63650001106d656d6f8001304f7074696f6e3c4d656d6f3e0000c907084c70616c6c65745f70726f746f636f6c5f6665651043616c6c040454000108486368616e67655f636f656666696369656e7404012c636f656666696369656e7495030120506f73526174696f000010c04368616e676573207468652066656520636f656666696369656e7420666f722074686520726f6f74206f726967696e2e002023204572726f7273882a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e3c6368616e67655f626173655f6665650801086f70cd07012850726f746f636f6c4f70000120626173655f66656518011c42616c616e6365000110ac4368616e67657320746865206120626173652066656520666f722074686520726f6f74206f726967696e2e002023204572726f7273882a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ecd070c64706f6c796d6573685f636f6d6d6f6e5f7574696c69746965733070726f746f636f6c5f6665652850726f746f636f6c4f700001344c417373657452656769737465725469636b65720000002841737365744973737565000100444173736574416464446f63756d656e7473000200404173736574437265617465417373657400030060436865636b706f696e744372656174655363686564756c65000400a4436f6d706c69616e63654d616e61676572416464436f6d706c69616e6365526571756972656d656e74000500584964656e746974794364645265676973746572446964000600404964656e74697479416464436c61696d000700a44964656e746974794164645365636f6e646172794b65797357697468417574686f72697a6174696f6e0008002c5069707350726f706f736500090040436f6e747261637473507574436f6465000a006c436f72706f7261746542616c6c6f7441747461636842616c6c6f74000b00744361706974616c446973747269627574696f6e44697374726962757465000c0000d1070c4070616c6c65745f7363686564756c65721870616c6c65741043616c6c040454000118207363686564756c651001107768656e100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963d50701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cdd050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00002870416e6f6e796d6f75736c79207363686564756c652061207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c738c2d2042617365205765696768743a2032322e3239202b202e313236202a205320c2b573302d204442205765696768743a48202020202d20526561643a204167656e64614c202020202d2057726974653a204167656e646139012d2057696c6c20757365206261736520776569676874206f662032352077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e1863616e63656c0801107768656e100138543a3a426c6f636b4e756d626572000114696e64657810010c7533320001289443616e63656c20616e20616e6f6e796d6f75736c79207363686564756c6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73902d2042617365205765696768743a2032322e3135202b20322e383639202a205320c2b573302d204442205765696768743a48202020202d20526561643a204167656e64616c202020202d2057726974653a204167656e64612c204c6f6f6b75703d012d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e387363686564756c655f6e616d6564140108696428011c5665633c75383e0001107768656e100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963d50701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cdd050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000228585363686564756c652061206e616d6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73882d2042617365205765696768743a2032392e36202b202e313539202a205320c2b573302d204442205765696768743a68202020202d20526561643a204167656e64612c204c6f6f6b75706c202020202d2057726974653a204167656e64612c204c6f6f6b757049012d2057696c6c20757365206261736520776569676874206f662033352077686963682073686f756c6420626520676f6f6420666f72206d6f7265207468616e203330207363686564756c65642063616c6c732c23203c2f7765696768743e3063616e63656c5f6e616d6564040108696428011c5665633c75383e0003287843616e63656c2061206e616d6564207363686564756c6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73902d2042617365205765696768743a2032342e3931202b20322e393037202a205320c2b573302d204442205765696768743a68202020202d20526561643a204167656e64612c204c6f6f6b75706c202020202d2057726974653a204167656e64612c204c6f6f6b75703d012d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e387363686564756c655f61667465721001146166746572100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963d50701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cdd050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000414a8416e6f6e796d6f75736c79207363686564756c652061207461736b20616674657220612064656c61792e002823203c7765696768743e5453616d65206173205b607363686564756c65605d2e2c23203c2f7765696768743e507363686564756c655f6e616d65645f6166746572140108696428011c5665633c75383e0001146166746572100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963d50701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cdd050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000514905363686564756c652061206e616d6564207461736b20616674657220612064656c61792e002823203c7765696768743ec453616d65206173205b607363686564756c655f6e616d6564605d2853656c663a3a7363686564756c655f6e616d6564292e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ed50704184f7074696f6e040454019d030108104e6f6e6500000010536f6d6504009d030000010000d907084470616c6c65745f736574746c656d656e741043616c6c040454000144306372656174655f76656e75650c011c64657461696c73a903013056656e756544657461696c7300011c7369676e657273ec01445665633c543a3a4163636f756e7449643e00010c747970ad03012456656e756554797065000014585265676973746572732061206e65772076656e75652e00a42a206064657461696c7360202d2045787472612064657461696c732061626f757420612076656e75653d012a20607369676e65727360202d204172726179206f66207369676e65727320746861742061726520616c6c6f77656420746f207369676e20726563656970747320666f7220746869732076656e7565942a206074797060202d2054797065206f662076656e7565206265696e672063726561746564507570646174655f76656e75655f64657461696c730801086964a503011c56656e7565496400011c64657461696c73a903013056656e756544657461696c730001105c4564697420612076656e756527732064657461696c732e00b42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742ec02a206064657461696c7360207370656369666965732074686520757064617465642076656e75652064657461696c732e447570646174655f76656e75655f747970650801086964a503011c56656e7565496400010c747970ad03012456656e756554797065000210504564697420612076656e7565277320747970652e00b42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742eb42a206074797065602073706563696669657320746865206e65772074797065206f66207468652076656e75652e3c6164645f696e737472756374696f6e14012076656e75655f6964a503011c56656e7565496400013c736574746c656d656e745f74797065b5030178536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e00012874726164655f64617465f401444f7074696f6e3c543a3a4d6f6d656e743e00012876616c75655f64617465f401444f7074696f6e3c543a3a4d6f6d656e743e0001106c656773b90301205665633c4c65673e0003305c416464732061206e657720696e737472756374696f6e2e002c2320417267756d656e7473ec2a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e09012a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c65645d01202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e51012a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b42a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e0020232057656967687498603935305f3030305f303030202b20315f3030305f303030202a206c6567732e6c656e282960686164645f616e645f61666669726d5f696e737472756374696f6e18012076656e75655f6964a503011c56656e7565496400013c736574746c656d656e745f74797065b5030178536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e00012874726164655f64617465f401444f7074696f6e3c543a3a4d6f6d656e743e00012876616c75655f64617465f401444f7074696f6e3c543a3a4d6f6d656e743e0001106c656773b90301205665633c4c65673e000128706f7274666f6c696f73e801405665633c506f7274666f6c696f49643e0004348c4164647320616e642061666669726d732061206e657720696e737472756374696f6e2e002c2320417267756d656e7473ec2a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e09012a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c65645d01202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e51012a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b42a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e6d012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2075736520696e20746869732061666669726d6174696f6e732e003423205065726d697373696f6e732c2a20506f7274666f6c696f4861666669726d5f696e737472756374696f6e0c01086964b1030134496e737472756374696f6e4964000128706f7274666f6c696f73e801405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000524bc50726f766964652061666669726d6174696f6e20746f20616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e7473882a2060696460202d20496e737472756374696f6e20696420746f2061666669726d2e69012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2061666669726d207468697320696e737472756374696f6e2ef82a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f206265202061666669726d65642e003423205065726d697373696f6e732c2a20506f7274666f6c696f5077697468647261775f61666669726d6174696f6e0c01086964b1030134496e737472756374696f6e4964000128706f7274666f6c696f73e801405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000624c0576974686472617720616e2061666669726d6174696f6e20666f72206120676976656e20696e737472756374696f6e2e002c2320417267756d656e7473ec2a2060696460202d20496e737472756374696f6e20696420666f7220746861742061666669726d6174696f6e206765742077697468647261776e2e5d012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2077697468647261772061666669726d6174696f6e2e01012a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f20626520756e2d61666669726d65642e003423205065726d697373696f6e732c2a20506f7274666f6c696f4872656a6563745f696e737472756374696f6e0c01086964b1030134496e737472756374696f6e4964000124706f7274666f6c696fd8012c506f7274666f6c696f496400012c6e756d5f6f665f6c65677310010c7533320007248052656a6563747320616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e7473882a2060696460202d20496e737472756374696f6e20696420746f2072656a6563742ed02a2060706f7274666f6c696f60202d20506f7274666f6c696f20746f2072656a6563742074686520696e737472756374696f6e2ed02a20606e756d5f6f665f6c65677360202d204e756d626572206f66206c65677320696e2074686520696e737472756374696f6e2e003423205065726d697373696f6e732c2a20506f7274666f6c696f5061666669726d5f776974685f72656365697074731001086964b1030134496e737472756374696f6e496400013c726563656970745f64657461696c73dd0701dc5665633c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e000128706f7274666f6c696f73e801405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000830cc4163636570747320616e20696e737472756374696f6e20616e6420636c61696d732061207369676e656420726563656970742e002c2320417267756d656e74737c2a2060696460202d2054617267657420696e737472756374696f6e2069642ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d42a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e8c2a20607369676e657260202d205369676e6572206f662074686520726563656970742e842a20607369676e65645f6461746160202d205369676e656420726563656970742e79012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f20616363657074207468697320696e737472756374696f6e2077697468003423205065726d697373696f6e732c2a20506f7274666f6c696f34636c61696d5f726563656970740801086964b1030134496e737472756374696f6e496400013c726563656970745f64657461696c73e10701c85265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e00092c60436c61696d732061207369676e656420726563656970742e002c2320417267756d656e7473bc2a2060696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d42a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e8c2a20607369676e657260202d205369676e6572206f662074686520726563656970742e842a20607369676e65645f6461746160202d205369676e656420726563656970742e003423205065726d697373696f6e732c2a20506f7274666f6c696f3c756e636c61696d5f72656365697074080138696e737472756374696f6e5f6964b1030134496e737472756374696f6e49640001186c65675f6964c10301144c65674964000a2098556e636c61696d7320612070726576696f75736c7920636c61696d656420726563656970742e002c2320417267756d656e7473ec2a2060696e737472756374696f6e5f696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074003423205065726d697373696f6e732c2a20506f7274666f6c696f4c7365745f76656e75655f66696c746572696e670801187469636b6572a001185469636b657200011c656e61626c656419010110626f6f6c000b20c0456e61626c6573206f722064697361626c65642076656e75652066696c746572696e6720666f72206120746f6b656e2e002c2320417267756d656e7473b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e19012a2060656e61626c656460202d20426f6f6c65616e20746861742064656369646573206966207468652066696c746572696e672073686f756c6420626520656e61626c65642e003423205065726d697373696f6e731c2a20417373657430616c6c6f775f76656e7565730801187469636b6572a001185469636b657200011876656e756573c90301305665633c56656e756549643e000c1c0d01416c6c6f7773206164646974696f6e616c2076656e75657320746f2063726561746520696e737472756374696f6e7320696e766f6c76696e6720616e2061737365742e00b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e7d012a206076656e75657360202d204172726179206f662076656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e003423205065726d697373696f6e731c2a2041737365743c646973616c6c6f775f76656e7565730801187469636b6572a001185469636b657200011876656e756573c90301305665633c56656e756549643e000d1c69015265766f6b6573207065726d697373696f6e20676976656e20746f2076656e75657320666f72206372656174696e6720696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c61722061737365742e00b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2ea5012a206076656e75657360202d204172726179206f662076656e756573207468617420617265206e6f206c6f6e67657220616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e003423205065726d697373696f6e731c2a2041737365745c6368616e67655f726563656970745f76616c696469747908012c726563656970745f75696420010c75363400012076616c696469747919010110626f6f6c000e14fc4d61726b732061207265636569707420697373756564206279207468652063616c6c657220617320636c61696d6564206f72206e6f7420636c61696d65642ec1015468697320616c6c6f77732074686520726563656970742069737375657220746f20696e76616c696461746520616e20616c7265616479206973737565642072656365697074206f7220726576616c696461746520616e20616c726561647920636c61696d656420726563656970742e00ac2a2060726563656970745f75696460202d20556e69717565204944206f662074686520726563656970742eac2a206076616c696469747960202d204e65772076616c6964697479206f662074686520726563656970742e74657865637574655f7363686564756c65645f696e737472756374696f6e0801086964b1030134496e737472756374696f6e496400012c5f6c6567735f636f756e7410010c753332000f048101526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f20657865637574652061207363686564756c656420736574746c656d656e7420696e737472756374696f6e2e5872657363686564756c655f696e737472756374696f6e0401086964b1030134496e737472756374696f6e49640010288452657363686564756c65732061206661696c656420696e737472756374696f6e2e002c2320417267756d656e7473b42a2060696460202d2054617267657420696e737472756374696f6e20696420746f2072657363686564756c652e003423205065726d697373696f6e732c2a20506f7274666f6c696f002023204572726f72733d012a2060496e737472756374696f6e4e6f744661696c656460202d20496e737472756374696f6e206e6f7420696e2061206661696c6564207374617465206f7220646f6573206e6f742065786973742e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652edd07000002e10700e107084470616c6c65745f736574746c656d656e74385265636569707444657461696c7308244163636f756e7449640100444f6666436861696e5369676e617475726501e5070014012c726563656970745f75696420010c7536340001186c65675f6964c10301144c656749640001187369676e65720001244163636f756e7449640001247369676e6174757265e50701444f6666436861696e5369676e61747572650001206d65746164617461c503013c526563656970744d657461646174610000e507082873705f72756e74696d65384d756c74695369676e617475726500010c1c45643235353139040025070148656432353531393a3a5369676e61747572650000001c53723235353139040055070148737232353531393a3a5369676e61747572650001001445636473610400e907014065636473613a3a5369676e617475726500020000e9070c1c73705f636f7265146563647361245369676e6174757265000004006d0701205b75383b2036355d0000ed07084470616c6c65745f737461746973746963731043616c6c040454000110587365745f6163746976655f61737365745f73746174730801146173736574d1030128417373657453636f7065000128737461745f7479706573f107014842547265655365743c53746174547970653e00003c80536574207468652061637469766520617373657420737461745f74797065732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e09012d2060737461745f747970657360202d20746865206e6577207374617420747970657320746f207265706c61636520616e79206578697374696e672074797065732e002023204572726f72731d012d206053746174547970654c696d69745265616368656460202d20746f6f206d616e79207374617420747970657320656e61626c656420666f722074686520606173736574602e85012d206043616e6e6f7452656d6f76655374617454797065496e55736560202d2063616e206e6f742072656d6f7665206120737461742074797065207468617420697320696e20757365206279207472616e7366657220636f6e646974696f6e732e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365746062617463685f7570646174655f61737365745f73746174730c01146173736574d1030128417373657453636f7065000124737461745f74797065d9030120537461745479706500011876616c756573f507015042547265655365743c537461745570646174653e00013cec416c6c6f77206120747275737465642069737375657220746f20696e69742f726573796e63207469636b65722f636f6d70616e792073746174732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e902d2060737461745f7479706560202d2073746174207479706520746f207570646174652eb02d206076616c75657360202d20557064617465642076616c75657320666f722060737461745f74797065602e002023204572726f727305012d206053746174547970654d697373696e6760202d2060737461745f7479706560206973206e6f7420656e61626c656420666f722074686520606173736574602e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d204173736574747365745f61737365745f7472616e736665725f636f6d706c69616e63650801146173736574d1030128417373657453636f706500014c7472616e736665725f636f6e646974696f6e73f907016c42547265655365743c5472616e73666572436f6e646974696f6e3e00023c90536574206173736574207472616e7366657220636f6d706c69616e63652072756c65732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e61012d20607472616e736665725f636f6e646974696f6e7360202d20746865206e6577207472616e7366657220636f6e646974696f6e20746f207265706c61636520616e79206578697374696e6720636f6e646974696f6e732e002023204572726f727355012d20605472616e73666572436f6e646974696f6e4c696d69745265616368656460202d20746f6f206d616e79207472616e7366657220636f6e64697469746f6e20656e61626c656420666f7220606173736574602e91012d206053746174547970654d697373696e6760202d2061207472616e7366657220636f6e646974696f6e2072657175697265732061207374617420747970652074686174206973206e6f7420656e61626c656420666f722074686520606173736574602e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365744c7365745f656e7469746965735f6578656d70740c012469735f6578656d707419010110626f6f6c0001286578656d70745f6b65790d0401685472616e73666572436f6e646974696f6e4578656d70744b6579000120656e746974696573fd07014442547265655365743c53636f706549643e00033811015365742f756e73657420656e746974696573206578656d70742066726f6d20616e2061737365742773207472616e7366657220636f6d706c69616e63652072756c65732e002c2320417267756d656e747351012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606578656d70745f6b65792e6173736574602ee02d206069735f6578656d707460202d20656e61626c652f64697361626c65206578656d7074696f6e20666f722060656e746974696573602e1d012d20606578656d70745f6b657960202d2074686520617373657420616e642073746174207479706520746f206578656d7074207468652060656e746974696573602066726f6d2eec2d2060656e74697469657360202d2074686520656e74697469657320746f207365742f756e73657420746865206578656d7074696f6e20666f722e002023204572726f727321012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef1070420425472656553657404045401d903000400d503000000f5070420425472656553657404045401ed03000400e903000000f907042042547265655365740404540105040004000104000000fd0704204254726565536574040454017c00040025010000000108082870616c6c65745f73746f1043616c6c040454000118446372656174655f66756e647261697365722801486f66666572696e675f706f7274666f6c696fd8012c506f7274666f6c696f49640001386f66666572696e675f6173736574a001185469636b657200014472616973696e675f706f7274666f6c696fd8012c506f7274666f6c696f496400013472616973696e675f6173736574a001185469636b65720001147469657273050801385665633c5072696365546965723e00012076656e75655f6964a503011c56656e756549640001147374617274f401444f7074696f6e3c543a3a4d6f6d656e743e00010c656e64f401444f7074696f6e3c543a3a4d6f6d656e743e0001486d696e696d756d5f696e766573746d656e7418011c42616c616e636500013c66756e647261697365725f6e616d651d04013846756e647261697365724e616d65000040604372656174652061206e65772066756e647261697365722e000d012a20606f66666572696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e672074686520606f66666572696e675f6173736574602ea42a20606f66666572696e675f617373657460202d204173736574206265696e67206f6666657265642e05012a206072616973696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e6720746865206072616973696e675f6173736574602e35012a206072616973696e675f617373657460202d204173736574206265696e672065786368616e67656420666f7220606f66666572696e675f617373657460206f6e20696e766573746d656e742ee82a2060746965727360202d20507269636520746965727320746f2063686172676520696e766573746f7273206f6e20696e766573746d656e742ea82a206076656e75655f696460202d2056656e756520746f2068616e646c6520736574746c656d656e742e4d012a2060737461727460202d2046756e647261697365722073746172742074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c20737461727420696d6d6564696174656c792e29012a2060656e6460202d2046756e6472616973657220656e642074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c206e65766572206578706972652ecd012a20606d696e696d756d5f696e766573746d656e7460202d204d696e696d756d20616d6f756e74206f66206072616973696e675f617373657460207468617420616e20696e766573746f72206e6565647320746f207370656e6420746f20696e7665737420696e20746869732072616973652ef02a206066756e647261697365725f6e616d6560202d2046756e64726169736572206e616d652c206f6e6c79207573656420696e20746865205549732e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f18696e766573741c0150696e766573746d656e745f706f7274666f6c696fd8012c506f7274666f6c696f496400014466756e64696e675f706f7274666f6c696fd8012c506f7274666f6c696f49640001386f66666572696e675f6173736574a001185469636b657200010869641904013046756e64726169736572496400013c70757263686173655f616d6f756e7418011c42616c616e63650001246d61785f7072696365fd03013c4f7074696f6e3c42616c616e63653e00011c726563656970740d0801e84f7074696f6e3c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e0001305c496e7665737420696e20612066756e647261697365722e0041012a2060696e766573746d656e745f706f7274666f6c696f60202d20506f7274666f6c696f207468617420606f66666572696e675f6173736574602077696c6c206265206465706f736974656420696e2e01012a206066756e64696e675f706f7274666f6c696f60202d20506f7274666f6c696f20746861742077696c6c2066756e642074686520696e766573746d656e742ea02a20606f66666572696e675f617373657460202d20417373657420746f20696e7665737420696e2eac2a2060696460202d204944206f66207468652066756e6472616973657220746f20696e7665737420696e2ef42a206070757263686173655f616d6f756e7460202d20416d6f756e74206f6620606f66666572696e675f61737365746020746f2070757263686173652eb9012a20606d61785f707269636560202d204d6178696d756d20707269636520746f207061792070657220756e6974206f6620606f66666572696e675f6173736574602c20496620604e6f6e6560746865726520617265206e6f20636f6e73747261696e7473206f6e2070726963652e69012a20607265636569707460202d204f66662d636861696e207265636569707420746f2075736520696e7374656164206f66206f6e2d636861696e2062616c616e636520696e206066756e64696e675f706f7274666f6c696f602e003423205065726d697373696f6e732c2a20506f7274666f6c696f44667265657a655f66756e647261697365720801386f66666572696e675f6173736574a001185469636b657200010869641904013046756e64726169736572496400021c50467265657a6520612066756e647261697365722e00942a20606f66666572696e675f617373657460202d20417373657420746f20667265657a652ea02a2060696460202d204944206f66207468652066756e6472616973657220746f20667265657a652e003423205065726d697373696f6e731c2a2041737365744c756e667265657a655f66756e647261697365720801386f66666572696e675f6173736574a001185469636b657200010869641904013046756e64726169736572496400031c58556e667265657a6520612066756e647261697365722e009c2a20606f66666572696e675f617373657460202d20417373657420746f20756e667265657a652ea82a2060696460202d204944206f66207468652066756e6472616973657220746f20756e667265657a652e003423205065726d697373696f6e731c2a204173736574606d6f646966795f66756e647261697365725f77696e646f771001386f66666572696e675f6173736574a001185469636b657200010869641904013046756e6472616973657249640001147374617274200124543a3a4d6f6d656e7400010c656e64f401444f7074696f6e3c543a3a4d6f6d656e743e000424b44d6f64696679207468652074696d652077696e646f7720612066756e647261697365722069732061637469766500942a20606f66666572696e675f617373657460202d20417373657420746f206d6f646966792ea02a2060696460202d204944206f66207468652066756e6472616973657220746f206d6f646966792ea02a2060737461727460202d204e6577207374617274206f66207468652066756e647261697365722eb82a2060656e6460202d204e657720656e64206f66207468652066756e6472616973657220746f206d6f646966792e003423205065726d697373696f6e731c2a2041737365741073746f700801386f66666572696e675f6173736574a001185469636b657200010869641904013046756e64726169736572496400051c4853746f7020612066756e647261697365722e008c2a20606f66666572696e675f617373657460202d20417373657420746f2073746f702e982a2060696460202d204944206f66207468652066756e6472616973657220746f2073746f702e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e05080000020908000908082870616c6c65745f73746f245072696365546965720000080114746f74616c18011c42616c616e6365000114707269636518011c42616c616e636500000d0804184f7074696f6e04045401e1070108104e6f6e6500000010536f6d650400e10700000100001108083c70616c6c65745f74726561737572791043616c6c0404540001083064697362757273656d656e7404013462656e65666963696172696573150801785665633c42656e65666963696172793c42616c616e63654f663c543e3e3e00001c51014974207472616e73666572732062616c616e6365732066726f6d20747265617375727920746f2065616368206f662062656e6566696369617269657320616e642074686520737065636966696320616d6f756e7444666f722065616368206f66207468656d2e001c23204572726f72c42a20604261644f726967696e603a204f6e6c7920726f6f742063616e2065786563757465207472616e73616374696f6e2e5d012a2060496e73756666696369656e7442616c616e6365603a2049662074726561737572792062616c616e636573206973206e6f7420656e6f75676820746f20636f76657220616c6c2062656e656669636961726965732e25012a2060496e76616c69644964656e74697479603a204966206f6e65206f66207468652062656e656669636961726965732068617320616e20696e76616c6964206964656e746974792e347265696d62757273656d656e74040118616d6f756e7418013042616c616e63654f663c543e00010c1d014974207472616e7366657273207468652073706563696669632060616d6f756e74602066726f6d20606f726967696e60206163636f756e7420696e746f2074726561737572792e0049014f6e6c79206163636f756e747320776869636820617265206173736f63696174656420746f20616e206964656e746974792063616e206d616b65206120646f6e6174696f6e20746f2074726561737572792e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e15080000021908001908084c706f6c796d6573685f7072696d6974697665732c42656e6566696369617279041c42616c616e636501180008010869647c01284964656e746974794964000118616d6f756e7418011c42616c616e636500001d08083870616c6c65745f7574696c6974791043616c6c04045400011014626174636804011463616c6c73210801605665633c3c5420617320436f6e6669673e3a3a43616c6c3e000048c44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e00e8546869732077696c6c206578656375746520756e74696c20746865206669727374206f6e65206661696c7320616e64207468656e2073746f702e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e00202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e00bd01546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e31016576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e207468655501604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d6164654d01616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c65746564604c6576656e74206973206465706f73697465642e3062617463685f61746f6d696304011463616c6c73210801605665633c3c5420617320436f6e6669673e3a3a43616c6c3e00014cc44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e001501546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c2073746f7070696e6720617420746865206669727374206661696c7572652cc0696e207768696368206361736520746865207374617465206368616e6765732061726520726f6c6c6564206261636b2e25014f6e206661696c7572652c20616e206576656e7420604261746368496e746572727570746564286661696c7572655f6964782c206572726f722960206973206465706f73697465642e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e00202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e001501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef4546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ee4496620616e792063616c6c206661696c65642c207468656e20604261746368496e74657272757074656460206973206465706f73697465642e1501496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e4062617463685f6f7074696d697374696304011463616c6c73210801605665633c3c5420617320436f6e6669673e3a3a43616c6c3e000254c44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e000101546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c20697272657370656374697665206f66206661696c757265732e0901416e79206661696c757265732077696c6c20626520617661696c61626c6520696e2061206042617463684f7074696d69737469634661696c656460206576656e742e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e0000202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e001501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef4546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ef8496620616e792063616c6c206661696c65642c207468656e206042617463684f7074696d69737469634661696c656460206973206465706f73697465642cfc77697468206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c2061732077656c6c206173206120766563746f72286f66206572726f72732e1501496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e2072656c61795f74780c0118746172676574000130543a3a4163636f756e7449640001247369676e6174757265e5070150543a3a4f6666436861696e5369676e617475726500011063616c6c2508017c556e6971756543616c6c3c3c5420617320436f6e6669673e3a3a43616c6c3e000330a052656c617920612063616c6c20666f722061207461726765742066726f6d20616e206f726967696e00510152656c6179696e6720696e207468697320636f6e746578742072656665727320746f20746865206162696c697479206f66206f726967696e20746f206d616b6520612063616c6c206f6e20626568616c66206f661c7461726765742e00684665657320617265206368617267656420746f206f726967696e00302320506172616d6574657273842d2060746172676574603a204163636f756e7420746f2062652072656c61796564e82d20607369676e6174757265603a205369676e61747572652066726f6d2074617267657420617574686f72697a696e67207468652072656c6179c02d206063616c6c603a2043616c6c20746f2062652072656c61796564206f6e20626568616c66206f6620746172676574000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e2108000002dd05002508083870616c6c65745f7574696c69747928556e6971756543616c6c04044301dd05000801146e6f6e6365200148417574686f72697a6174696f6e4e6f6e636500011063616c6cdd050118426f783c433e00002908082c70616c6c65745f626173651043616c6c0404540001000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e2d08085870616c6c65745f65787465726e616c5f6167656e74731043616c6c040454000120306372656174655f67726f75700801187469636b6572a001185469636b65720001147065726d73b0015045787472696e7369635065726d697373696f6e73000048e443726561746573206120637573746f6d206167656e742067726f7570202841472920666f722074686520676976656e20607469636b6572602e00d45468652041472077696c6c206861766520746865207065726d697373696f6e7320617320676976656e20627920607065726d73602e290154686973206e6577204147206973207468656e2061737369676e656420606964203d204147496453657175656e63653a3a6765742829202b20316020617320697473206041474964602c3901776869636820796f752063616e2075736520617320604167656e7447726f75703a3a437573746f6d2869642960207768656e20616464696e67206167656e747320666f7220607469636b6572602e002c2320417267756d656e74739c2d20607469636b65726020746f206164642074686520637573746f6d2067726f757020666f722e902d20607065726d7360207468617420746865206e65772041472077696c6c20686176652e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e21012d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672e25012d2060436f756e7465724f766572666c6f776020696620604147496453657175656e63653a3a6765742829202b20316020776f756c642065786365656420607533323a3a4d4158602e003423205065726d697373696f6e731c2a2041737365741c2a204167656e74547365745f67726f75705f7065726d697373696f6e730c01187469636b6572a001185469636b6572000108696415010110414749640001147065726d73b0015045787472696e7369635065726d697373696f6e7300013c51015570646174657320746865207065726d697373696f6e73206f662074686520637573746f6d204147206964656e74696669656420627920606964602c20666f722074686520676976656e20607469636b6572602e002c2320417267756d656e7473902d20607469636b6572602074686520637573746f6d2041472062656c6f6e677320746f2ea42d206069646020666f722074686520637573746f6d2041472077697468696e20607469636b6572602e942d20607065726d736020746f207570646174652074686520637573746f6d20414720746f2e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e21012d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672ecc2d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472e003423205065726d697373696f6e731c2a2041737365741c2a204167656e743072656d6f76655f6167656e740801187469636b6572a001185469636b65720001146167656e747c01284964656e7469747949640002389c52656d6f76652074686520676976656e20606167656e74602066726f6d20607469636b6572602e002c2320417267756d656e7473a82d20607469636b6572602074686174206861732074686520606167656e746020746f2072656d6f76652e802d20606167656e7460206f6620607469636b65726020746f2072656d6f76652e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ed82d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602ee82d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e746020697320746865206c6173742066756c6c206f6e652e003423205065726d697373696f6e731c2a2041737365741c2a204167656e742061626469636174650401187469636b6572a001185469636b657200032c804162646963617465206167656e747368697020666f7220607469636b6572602e002c2320417267756d656e7473ac2d20607469636b657260206f66207768696368207468652063616c6c657220697320616e206167656e742e002023204572726f7273e42d20604e6f74416e4167656e7460206966207468652063616c6c6572206973206e6f7420616e206167656e74206f6620607469636b6572602efc2d206052656d6f76696e674c61737446756c6c4167656e7460206966207468652063616c6c657220697320746865206c6173742066756c6c206167656e742e003423205065726d697373696f6e731c2a204173736574306368616e67655f67726f75700c01187469636b6572a001185469636b65720001146167656e747c01284964656e74697479496400011467726f7570110101284167656e7447726f7570000440ec4368616e676520746865206167656e742067726f7570207468617420606167656e74602062656c6f6e677320746f20696e20607469636b6572602e002c2320417267756d656e7473802d20607469636b6572602074686174206861732074686520606167656e74602eb82d20606167656e7460206f6620607469636b65726020746f206368616e6765207468652067726f757020666f722ec82d206067726f757060207468617420606167656e74602077696c6c2062656c6f6e6720746f20696e20607469636b6572602e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ecc2d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472ed82d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602e2d012d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e7460207761732061206046756c6c60206f6e6520616e64206973206265696e672064656d6f7465642e003423205065726d697373696f6e731c2a2041737365741c2a204167656e744c6163636570745f6265636f6d655f6167656e7404011c617574685f696420010c753634000540010141636365707420616e20617574686f72697a6174696f6e20627920616e206167656e742022416c696365222077686f206973737565642060617574685f696460d8746f20616c736f206265636f6d6520616e206167656e74206f6620746865207469636b657220416c696365207370656369666965642e002c2320417267756d656e7473d02d2060617574685f696460206964656e74696679696e672074686520617574686f72697a6174696f6e20746f206163636570742e002023204572726f727345012d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e35012d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f69646020697320666f7220616e206175746820746861742068617320657870697265642e4d012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f7420666f72206120604265636f6d654167656e7460206175746820747970652e25012d2060556e617574686f72697a65644167656e74602069662022416c69636522206973206e6f74207065726d697373696f6e656420746f2070726f766964652074686520617574682e0d012d20604e6f53756368414760206966207468652067726f757020726566657272656420746f206120637573746f6d207468617420646f6573206e6f742065786973742e0d012d2060416c7265616479416e4167656e7460206966207468652063616c6c657220697320616c726561647920616e206167656e74206f6620746865207469636b65722e003423205065726d697373696f6e731c2a204167656e74646372656174655f67726f75705f616e645f6164645f617574680c01187469636b6572a001185469636b65720001147065726d73b0015045787472696e7369635065726d697373696f6e730001187461726765746d01015c5369676e61746f72793c543a3a4163636f756e7449643e000614e85574696c6974792065787472696e73696320746f20626174636820606372656174655f67726f75706020616e642020606164645f61757468602e003423205065726d697373696f6e731c2a2041737365741c2a204167656e74786372656174655f616e645f6368616e67655f637573746f6d5f67726f75700c01187469636b6572a001185469636b65720001147065726d73b0015045787472696e7369635065726d697373696f6e730001146167656e747c01284964656e74697479496400071455015574696c6974792065787472696e73696320746f20626174636820606372656174655f67726f75706020616e642020606368616e67655f67726f75706020666f7220637573746f6d2067726f757073206f6e6c792e003423205065726d697373696f6e731c2a2041737365741c2a204167656e740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e3108083870616c6c65745f72656c617965721043616c6c040454000118387365745f706179696e675f6b6579080120757365725f6b6579000130543a3a4163636f756e74496400012c706f6c79785f6c696d697418011c42616c616e6365000020bd014372656174657320616e20617574686f72697a6174696f6e20746f20616c6c6f772060757365725f6b65796020746f20616363657074207468652063616c6c65722028606f726967696e203d3d20706179696e675f6b6579602920617320746865697220737562736964697365722e002c2320417267756d656e74739c2d2060757365725f6b657960207468652075736572206b657920746f207375627369646973652ee42d2060706f6c79785f6c696d6974602074686520696e697469616c20504f4c5958206c696d697420666f72207468697320737562736964792e002023204572726f727331012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e446163636570745f706179696e675f6b657904011c617574685f696420010c753634000138944163636570747320612060706179696e675f6b65796020617574686f72697a6174696f6e2e002c2320417267756d656e7473e82d2060617574685f6964602074686520617574686f72697a6174696f6e20696420746f2061636365707420612060706179696e675f6b6579602e002023204572726f727345012d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e2d012d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f6964602074686520617574686f72697a6174696f6e2068617320657870697265642e6d012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f742061206041646452656c61796572506179696e674b65796020617574686f72697a6174696f6e2ea5012d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f206163636570742074686520617574686f72697a6174696f6e20666f72207468652060757365725f6b6579602ed9012d20604e6f74417574686f72697a6564466f72506179696e674b6579602069662074686520617574686f72697a6174696f6e20776173206372656174656420616e206964656e7469747920646966666572656e742066726f6d207468652060706179696e675f6b6579602773206964656e746974792e31012d2060557365724b65794364644d697373696e6760206966207468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e41012d2060506179696e674b65794364644d697373696e6760206966207468652060706179696e675f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e4472656d6f76655f706179696e675f6b6579080120757365725f6b6579000130543a3a4163636f756e744964000128706179696e675f6b6579000130543a3a4163636f756e74496400022cac52656d6f766573207468652060706179696e675f6b6579602066726f6d20612060757365725f6b6579602e002c2320417267756d656e7473d42d2060757365725f6b657960207468652075736572206b657920746f2072656d6f76652074686520737562736964792066726f6d2e09012d2060706179696e675f6b6579602074686520706179696e67206b6579207468617420776173207375627369646973696e67207468652060757365725f6b6579602e002023204572726f72738d012d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2072656d6f766520746865207375627369647920666f72207468652060757365725f6b6579602ef82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e31012d20604e6f74506179696e674b657960206966207468652060706179696e675f6b65796020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e487570646174655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e74496400012c706f6c79785f6c696d697418011c42616c616e6365000328b4557064617465732074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e35012d2060706f6c79785f6c696d6974602074686520616d6f756e74206f6620504f4c595820617661696c61626c6520666f72207375627369646973696e67207468652060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e50696e6372656173655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e744964000118616d6f756e7418011c42616c616e636500042cb8496e6372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e0d012d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2061646420746f207468652073756273696479206f662060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e3d012d20604f7665726c6f776020696620746865207375627369647927732072656d61696e696e6720504f4c595820776f756c642068617665206f766572666c6f7765642060753132383a3a4d4158602e5064656372656173655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e744964000118616d6f756e7418011c42616c616e636500052cb844656372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e21012d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2072656d6f76652066726f6d207468652073756273696479206f662060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e09012d20604f7665726c6f776020696620746865207375627369647920686173206c657373207468656e2060616d6f756e746020504f4c59582072656d61696e696e672e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e3508083870616c6c65745f726577617264731043616c6c04045400010840636c61696d5f69746e5f7265776172640c01387265776172645f61646472657373000130543a3a4163636f756e74496400012c69746e5f61646472657373000130543a3a4163636f756e7449640001247369676e6174757265e5070150543a3a4f6666436861696e5369676e617475726500003450436c61696d20616e2049544e207265776172642e0030232320417267756d656e7473d82a206069746e5f61646472657373602073706563696679696e672074686520617761726465642061646472657373206f6e2049544e2ed42a20607369676e6174757265602061757468656e7469636174696e672074686520636c61696d20746f20746865207265776172642e7501202020546865207369676e61747572652073686f756c6420636f6e7461696e20607265776172645f616464726573736020666f6c6c6f7765642062792074686520737566666978206022636c61696d5f69746e5f72657761726422602cb8202020616e64206d7573742068617665206265656e207369676e6564206279206069746e5f61646472657373602e002023204572726f727345012a2060496e73756666696369656e7442616c616e636560202d2049746e20726577617264732068617320696e73756666696369656e742066756e647320746f20697373756520746865207265776172642e31012a2060496e76616c69645369676e617475726560202d20607369676e6174757265602068616420616e20696e76616c6964207369676e6572206f7220696e76616c6964206d6573736167652e69012a206049746e526577617264416c7265616479436c61696d656460202d205265776172642069737375656420746f20746865206069746e5f61646472657373602068617320616c7265616479206265656e20636c61696d65642e89012a2060556e6b6e6f776e49746e4164647265737360202d206069746e5f6164647265737360206973206e6f7420696e207468652072657761726473207461626c6520616e6420686173206e6f2072657761726420746f20626520636c61696d65642e547365745f69746e5f7265776172645f73746174757308012c69746e5f61646472657373000130543a3a4163636f756e7449640001187374617475733908013c49746e5265776172645374617475730001000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e3908083870616c6c65745f726577617264733c49746e52657761726453746174757300010824556e636c61696d6564040018011c42616c616e63650000001c436c61696d6564000100003d08084470616c6c65745f746573745f7574696c731043616c6c0404540001103072656769737465725f64696408010c7569645d04012c496e766573746f725569640001387365636f6e646172795f6b65797390017c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e0000284d0147656e6572617465732061206e657720604964656e7469747949446020666f72207468652063616c6c65722c20616e642069737375657320612073656c662d67656e6572617465642043444420636c61696d2e00f05468652063616c6c6572206163636f756e742077696c6c20626520746865207072696d617279206b6579206f662074686174206964656e746974792e5d01466f722065616368206163636f756e74206f6620607365636f6e646172795f6b657973602c2061206e657720604a6f696e4964656e746974796020617574686f72697a6174696f6e20697320637265617465642c20736f410165616368206f66207468656d2077696c6c206e65656420746f20616363657074206974206265666f7265206265636f6d652070617274206f662074686973206e657720604964656e746974794944602e002023204572726f7273d5012d2060416c72656164794c696e6b656460206966207468652063616c6c6572206163636f756e74206f7220696620616e79206f662074686520676976656e20607365636f6e646172795f6b657973602068617320616c7265616479206c696e6b656420746f20616e20604964656e746974794944604d012d20605365636f6e646172794b657973436f6e7461696e5072696d6172794b65796020696620607365636f6e646172795f6b6579736020636f6e7461696e73207468652063616c6c6572206163636f756e742ee82d2060446964416c726561647945786973747360206966206175746f2d67656e6572617465642044494420616c7265616479206578697374732e546d6f636b5f6364645f72656769737465725f6469640401387461726765745f6163636f756e74000130543a3a4163636f756e7449640001303d015265676973746572732061206e6577204964656e7469747920666f722074686520607461726765745f6163636f756e746020616e642069737375657320612043444420636c61696d20746f2069742e510154686520496e766573746f72205549442069732067656e6572617465642064657465726d696e6973746963616c6c79206279207468652068617368206f66207468652067656e6572617465642044494420616e64b07468656e2077652066697820697420746f20626520636f6d706c69616e74207769746820555549442076342e00142320536565dc2d205b52464320343132323a20555549445d2868747470733a2f2f746f6f6c732e696574662e6f72672f68746d6c2f7266633431323229002423204661696c75726549012d20606f726967696e602068617320746f20626520616e20616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792e286765745f6d795f64696400020498456d69747320616e206576656e7420776974682063616c6c65722773206964656e746974792e286765745f6364645f6f660401086f66000130543a3a4163636f756e744964000304d4456d69747320616e206576656e7420776974682063616c6c65722773206964656e7469747920616e6420434444207374617475732e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e4108084070616c6c65745f636f6d6d697474656534506f6c796d657368566f746573042c426c6f636b4e756d626572011000100114696e64657810013450726f706f73616c496e646578000110617965732501013c5665633c4964656e7469747949643e0001106e6179732501013c5665633c4964656e7469747949643e0001186578706972793901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00004508084070616c6c65745f636f6d6d69747465651c56657273696f6e00000400080108753800004908084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e004d08083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e005108084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e005508083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e005908084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e005d08083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00610800000408006d010065080000040800200069080000040800dd05006d080000040c006d0120007108083c70616c6c65745f6d756c74697369673c50726f706f73616c44657461696c73040454012000140124617070726f76616c7320010c75363400012872656a656374696f6e7320010c7536340001187374617475737508013850726f706f73616c537461747573000118657870697279f401244f7074696f6e3c543e0001286175746f5f636c6f736519010110626f6f6c00007508083c70616c6c65745f6d756c74697369673850726f706f73616c5374617475730001141c496e76616c69640000003c4163746976654f72457870697265640001004c457865637574696f6e5375636365737366756c0002003c457865637574696f6e4661696c65640003002052656a6563746564000400007908083c70616c6c65745f6d756c74697369671c56657273696f6e00000400080108753800007d08083c70616c6c65745f6d756c7469736967144572726f72040454000164284364644d697373696e67000004c4546865206d756c7469736967206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e3c50726f706f73616c4d697373696e67000104705468652070726f706f73616c20646f6573206e6f742065786973742e344465636f64696e674572726f72000204444d756c746973696720616464726573732e244e6f5369676e6572730003042c4e6f207369676e6572732e7452657175697265645369676e6174757265734f75744f66426f756e6473000404a0546f6f20666577206f7220746f6f206d616e79207265717569726564207369676e6174757265732e284e6f74415369676e6572000504344e6f742061207369676e65722e384e6f537563684d756c7469736967000604444e6f2073756368206d756c74697369672e404e6f74456e6f7567685369676e6572730007044c4e6f7420656e6f756768207369676e6572732e344e6f6e63654f766572666c6f770008044441206e6f6e6365206f766572666c6f772e30416c7265616479566f74656400090438416c726561647920766f7465642e38416c7265616479415369676e6572000a0444416c72656164792061207369676e65722e444661696c6564546f436861726765466565000b04a0436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e484964656e746974794e6f7443726561746f72000c04c04964656e746974792070726f7669646564206973206e6f7420746865206d756c746973696727732063726561746f722e404368616e67654e6f74416c6c6f776564000d0425014368616e67696e67206d756c746973696720706172616d6574657273206e6f7420616c6c6f7765642073696e6365206d756c74697369672069732061207072696d617279206b65792e745369676e6572416c72656164794c696e6b6564546f4d756c7469736967000e0411015369676e657220697320616e206163636f756e74206b6579207468617420697320616c7265616479206173736f63696174656420776974682061206d756c74697369672e745369676e6572416c72656164794c696e6b6564546f4964656e74697479000f0415015369676e657220697320616e206163636f756e74206b6579207468617420697320616c7265616479206173736f636961746564207769746820616e206964656e746974792e804d756c74697369674e6f74416c6c6f776564546f4c696e6b546f497473656c66001004bc4d756c7469736967206e6f7420616c6c6f77656420746f2061646420697473656c662061732061207369676e65722e584d697373696e6743757272656e744964656e746974790011045843757272656e7420444944206973206d697373696e67344e6f745072696d6172794b6579001204f45468652066756e6374696f6e2063616e206f6e6c792062652063616c6c656420627920746865207072696d617279206b6579206f6620746865206469645c50726f706f73616c416c726561647952656a65637465640013047450726f706f73616c207761732072656a6563746564206561726c6965723c50726f706f73616c457870697265640014045050726f706f73616c2068617320657870697265645c50726f706f73616c416c726561647945786563757465640015047450726f706f73616c20776173206578656375746564206561726c6965725c4d756c74697369674d697373696e674964656e746974790016049c4d756c7469736967206973206e6f7420617474616368656420746f20616e206964656e74697479404661696c6564546f5363686564756c65001704785363686564756c696e67206f6620612070726f706f73616c206661696c7338546f6f4d616e795369676e6572730018046c4d6f7265207369676e657273207468616e2072657175697265642e045c4d756c7469736967206d6f64756c65206572726f72732e8108000004080010008508083470616c6c65745f62726964676538427269646765547844657461696c042c426c6f636b4e756d626572011000100118616d6f756e7418011c42616c616e636500011873746174757389080138427269646765547853746174757300013c657865637574696f6e5f626c6f636b10012c426c6f636b4e756d62657200011c74785f686173682401104832353600008908083470616c6c65745f62726964676538427269646765547853746174757300011418416273656e740000001c50656e64696e67040008010875380001001846726f7a656e0002002854696d656c6f636b65640003001c48616e646c6564000400008d08000004081810009108083470616c6c65745f6272696467651c56657273696f6e00000400080108753800009508083470616c6c65745f627269646765144572726f7204045400013440436f6e74726f6c6c65724e6f74536574000004a45468652062726964676520636f6e74726f6c6c65722061646472657373206973206e6f74207365742e2442616443616c6c6572000104d8546865206f726967696e206973206e6f742074686520636f6e74726f6c6c6572206f72207468652061646d696e20616464726573732e2042616441646d696e00020490546865206f726967696e206973206e6f74207468652061646d696e20616464726573732e284e6f56616c69644364640003048c54686520726563697069656e742044494420686173206e6f2076616c6964204344442e5850726f706f73616c416c726561647948616e646c6564000404390154686520627269646765207472616e73616374696f6e2070726f706f73616c2068617320616c7265616479206265656e2068616e646c656420616e64207468652066756e6473206d696e7465642e30556e617574686f72697a656400050494556e617574686f72697a656420746f20706572666f726d20616e206f7065726174696f6e2e1846726f7a656e000604745468652062726964676520697320616c72656164792066726f7a656e2e244e6f7446726f7a656e0007046454686520627269646765206973206e6f742066726f7a656e2e2046726f7a656e547800080468546865207472616e73616374696f6e2069732066726f7a656e2e484272696467654c696d697452656163686564000904e4546865206964656e746974792773206d696e74656420746f74616c2068617320726561636865642074686520627269646765206c696d69742e204f766572666c6f77000a04ac546865206964656e746974792773206d696e74656420746f74616c20686173206f766572666c6f7765642e384469766973696f6e42795a65726f000b04cc54686520626c6f636b20696e74657276616c206475726174696f6e206973207a65726f2e2043616e6e6f74206469766964652e3054696d656c6f636b65645478000c0478546865207472616e73616374696f6e2069732074696d656c6f636b65642e009908083870616c6c65745f7374616b696e67345374616b696e674c656467657208244163636f756e74496401001c42616c616e636501180014011473746173680001244163636f756e744964000114746f74616ccd01011c42616c616e6365000118616374697665cd01011c42616c616e6365000124756e6c6f636b696e679d0801645665633c556e6c6f636b4368756e6b3c42616c616e63653e3e00013c636c61696d65645f72657761726473390401345665633c457261496e6465783e00009d08000002a10800a108083870616c6c65745f7374616b696e672c556e6c6f636b4368756e6b041c42616c616e636501180008011476616c7565cd01011c42616c616e636500010c65726171040120457261496e6465780000a508083870616c6c65745f7374616b696e672c4e6f6d696e6174696f6e7304244163636f756e7449640100000c011c74617267657473ec01385665633c4163636f756e7449643e0001307375626d69747465645f696e100120457261496e6465780001287375707072657373656419010110626f6f6c0000a908083870616c6c65745f7374616b696e6734416374697665457261496e666f0000080114696e646578100120457261496e6465780001147374617274f4012c4f7074696f6e3c7536343e0000ad0800000408100000b108083870616c6c65745f7374616b696e673c457261526577617264506f696e747304244163636f756e744964010000080114746f74616c10012c526577617264506f696e74000128696e646976696475616cb508018042547265654d61703c4163636f756e7449642c20526577617264506f696e743e0000b508042042547265654d617008044b010004560110000400b908000000b908000002810800bd08083870616c6c65745f7374616b696e671c466f7263696e67000110284e6f74466f7263696e6700000020466f7263654e657700010024466f7263654e6f6e650002002c466f726365416c7761797300030000c108000002c50800c508083870616c6c65745f7374616b696e6738556e6170706c696564536c61736808244163636f756e74496401001c42616c616e636501180014012476616c696461746f720001244163636f756e74496400010c6f776e18011c42616c616e63650001186f7468657273c90801645665633c284163636f756e7449642c2042616c616e6365293e0001247265706f7274657273ec01385665633c4163636f756e7449643e0001187061796f757418011c42616c616e63650000c908000002cd0800cd0800000408001800d108000004088d011800d5080c3870616c6c65745f7374616b696e6720736c617368696e6734536c617368696e675370616e7300001001287370616e5f696e6465781001245370616e496e6465780001286c6173745f7374617274100120457261496e6465780001486c6173745f6e6f6e7a65726f5f736c617368100120457261496e6465780001147072696f72390401345665633c457261496e6465783e0000d9080c3870616c6c65745f7374616b696e6720736c617368696e67285370616e5265636f7264041c42616c616e636501180008011c736c617368656418011c42616c616e6365000120706169645f6f757418011c42616c616e63650000dd08083870616c6c65745f7374616b696e6738456c656374696f6e526573756c7408244163636f756e74496401001c42616c616e63650118000c013c656c65637465645f73746173686573ec01385665633c4163636f756e7449643e0001246578706f7375726573c10101b85665633c284163636f756e7449642c204578706f737572653c4163636f756e7449642c2042616c616e63653e293e00011c636f6d707574658901013c456c656374696f6e436f6d707574650000e108083870616c6c65745f7374616b696e6738456c656374696f6e537461747573042c426c6f636b4e756d6265720110010818436c6f736564000000104f70656e040010012c426c6f636b4e756d62657200010000e508083870616c6c65745f7374616b696e67645065726d697373696f6e65644964656e7469747950726566730000080138696e74656e6465645f636f756e7410010c75333200013472756e6e696e675f636f756e7410010c7533320000e908083870616c6c65745f7374616b696e672052656c65617365730001203456315f305f30416e6369656e740000001856325f305f300001001856335f305f300002001856345f305f300003001856355f305f300004001856365f305f300005001856365f305f310006001856375f305f3000070000ed08083870616c6c65745f7374616b696e67144572726f720404540001a8344e6f74436f6e74726f6c6c6572000004644e6f74206120636f6e74726f6c6c6572206163636f756e742e204e6f745374617368000104504e6f742061207374617368206163636f756e742e34416c7265616479426f6e64656400020460537461736820697320616c726561647920626f6e6465642e34416c726561647950616972656400030474436f6e74726f6c6c657220697320616c7265616479207061697265642e30456d7074795461726765747300040460546172676574732063616e6e6f7420626520656d7074792e44496e76616c6964536c617368496e64657800050484536c617368207265636f726420696e646578206f7574206f6620626f756e64732e44496e73756666696369656e7456616c7565000604c843616e206e6f7420626f6e6420776974682076616c7565206c657373207468616e206d696e696d756d2062616c616e63652e304e6f4d6f72654368756e6b730007049043616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b732e344e6f556e6c6f636b4368756e6b000804a043616e206e6f74207265626f6e6420776974686f757420756e6c6f636b696e67206368756e6b732e3046756e646564546172676574000904c8417474656d7074696e6720746f2074617267657420612073746173682074686174207374696c6c206861732066756e64732e48496e76616c6964457261546f526577617264000a0458496e76616c69642065726120746f207265776172642e484e6f74536f72746564416e64556e69717565000b04804974656d7320617265206e6f7420736f7274656420616e6420756e697175652e38416c7265616479436c61696d6564000c0409015265776172647320666f72207468697320657261206861766520616c7265616479206265656e20636c61696d656420666f7220746869732076616c696461746f722e7c4f6666636861696e456c656374696f6e4561726c795375626d697373696f6e000d04e0546865207375626d697474656420726573756c74206973207265636569766564206f7574206f6620746865206f70656e2077696e646f772e784f6666636861696e456c656374696f6e5765616b5375626d697373696f6e000e04fc546865207375626d697474656420726573756c74206973206e6f7420617320676f6f6420617320746865206f6e652073746f726564206f6e20636861696e2e4c536e617073686f74556e617661696c61626c65000f04cc54686520736e617073686f742064617461206f66207468652063757272656e742077696e646f77206973206d697373696e672e804f6666636861696e456c656374696f6e426f67757357696e6e6572436f756e74001004ac496e636f7272656374206e756d626572206f662077696e6e65727320776572652070726573656e7465642e6c4f6666636861696e456c656374696f6e426f67757357696e6e65720011085d014f6e65206f6620746865207375626d69747465642077696e6e657273206973206e6f7420616e206163746976652063616e646964617465206f6e20636861696e2028696e646578206973206f7574206f662072616e676534696e20736e617073686f74292e704f6666636861696e456c656374696f6e426f677573436f6d7061637400120859014572726f72207768696c65206275696c64696e67207468652061737369676e6d656e7420747970652066726f6d2074686520636f6d706163742e20546869732063616e2068617070656e20696620616e20696e646578a4697320696e76616c69642c206f72206966207468652077656967687473205f6f766572666c6f775f2e784f6666636861696e456c656374696f6e426f6775734e6f6d696e61746f7200130411014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f7273206973206e6f7420616e20616374697665206e6f6d696e61746f72206f6e20636861696e2e7c4f6666636861696e456c656374696f6e426f6775734e6f6d696e6174696f6e00140449014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e206564676520746f20776869636820746865792068617665206e6f7420766f746564206f6e20636861696e2e844f6666636861696e456c656374696f6e536c61736865644e6f6d696e6174696f6e0015085d014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e2065646765207768696368206973207375626d6974746564206265666f726520746865206c617374206e6f6e2d7a65726f50736c617368206f6620746865207461726765742e744f6666636861696e456c656374696f6e426f67757353656c66566f74650016042101412073656c6620766f7465206d757374206f6e6c79206265206f726967696e617465642066726f6d20612076616c696461746f7220746f204f4e4c59207468656d73656c7665732e644f6666636861696e456c656374696f6e426f677573456467650017044101546865207375626d697474656420726573756c742068617320756e6b6e6f776e206564676573207468617420617265206e6f7420616d6f6e67207468652070726573656e7465642077696e6e6572732e684f6666636861696e456c656374696f6e426f67757353636f7265001804150154686520636c61696d65642073636f726520646f6573206e6f74206d61746368207769746820746865206f6e6520636f6d70757465642066726f6d2074686520646174612e844f6666636861696e456c656374696f6e426f677573456c656374696f6e53697a650019047454686520656c656374696f6e2073697a6520697320696e76616c69642e3843616c6c4e6f74416c6c6f776564001a0445015468652063616c6c206973206e6f7420616c6c6f7765642061742074686520676976656e2074696d652064756520746f207265737472696374696f6e73206f6620656c656374696f6e20706572696f642e58496e636f7272656374536c617368696e675370616e73001b04b0496e636f7272656374206e756d626572206f6620736c617368696e67207370616e732070726f76696465642e34416c7265616479457869737473001c04985065726d697373696f6e65642076616c696461746f7220616c7265616479206578697374732e244e6f74457869737473001d04885065726d697373696f6e65642076616c696461746f72206e6f74206578697374732e204e6f4368616e6765001e04605570646174657320776974682073616d652076616c75652e60496e76616c696456616c696461746f724964656e74697479001f04b8476976656e20706f74656e7469616c2076616c696461746f72206964656e7469747920697320696e76616c69642e68496e76616c696456616c696461746f72436f6d6d697373696f6e0020049c56616c696461746f7220707265667320617265206e6f7420696e2076616c69642072616e67652e6453746173684964656e74697479446f65734e6f744578697374002104d456616c696461746f72206f72206e6f6d696e61746f72207374617368206964656e7469747920646f6573206e6f742065786973742e7053746173684964656e746974794e6f745065726d697373696f6e6564002204b856616c696461746f72207374617368206964656e7469747920776173206e6f74207065726d697373696f6e65642e5453746173684964656e746974794e6f744344446564002304784e6f6d696e61746f7220737461736820776173206e6f742043444465642e64486974496e74656e64656456616c696461746f72436f756e74002404bc52756e6e696e672076616c696461746f7220636f756e74206869742074686520696e74656e64656420636f756e742e98496e74656e646564436f756e744973457863656564696e67436f6e73656e7375734c696d697400250435015768656e2074686520696e74656e646564206e756d626572206f662076616c696461746f727320746f2072756e206973203e3d20322f33206f66206076616c696461746f725f636f756e74602e30426f6e64546f6f536d616c6c002604dc5768656e2074686520616d6f756e7420746f20626520626f6e646564206973206c657373207468616e20604d696e696d756d426f6e64602042616453746174650027043901496e7465726e616c20737461746520686173206265636f6d6520736f6d65686f7720636f7272757074656420616e6420746865206f7065726174696f6e2063616e6e6f7420636f6e74696e75652e38546f6f4d616e795461726765747300280494546f6f206d616e79206e6f6d696e6174696f6e207461726765747320737570706c6965642e244261645461726765740029043d0141206e6f6d696e6174696f6e207461726765742077617320737570706c69656420746861742077617320626c6f636b6564206f72206f7468657277697365206e6f7420612076616c696461746f722e04744572726f7220666f7220746865207374616b696e67206d6f64756c652ef1080c2873705f7374616b696e671c6f6666656e6365384f6666656e636544657461696c7308205265706f727465720100204f6666656e64657201c501000801206f6666656e646572c50101204f6666656e6465720001247265706f7274657273ec01345665633c5265706f727465723e0000f5080000040899012800f908000002fd0800fd0800000408000507000109000004080509280005090c1c73705f636f72651863727970746f244b65795479706549640000040038011c5b75383b20345d000009090c3870616c6c65745f73657373696f6e1870616c6c6574144572726f7204045400011430496e76616c696450726f6f6600000460496e76616c6964206f776e6572736869702070726f6f662e5c4e6f4173736f63696174656456616c696461746f7249640001049c4e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e344475706c6963617465644b65790002046452656769737465726564206475706c6963617465206b65792e184e6f4b657973000304a44e6f206b65797320617265206173736f63696174656420776974682074686973206163636f756e742e244e6f4163636f756e7400040419014b65792073657474696e67206163636f756e74206973206e6f74206c6976652c20736f206974277320696d706f737369626c6520746f206173736f6369617465206b6579732e04744572726f7220666f72207468652073657373696f6e2070616c6c65742e0d09083870616c6c65745f6772616e6470612c53746f726564537461746504044e01100110104c6976650000003050656e64696e6750617573650801307363686564756c65645f61741001044e00011464656c61791001044e000100185061757365640002003450656e64696e67526573756d650801307363686564756c65645f61741001044e00011464656c61791001044e000300001109083870616c6c65745f6772616e6470614c53746f72656450656e64696e674368616e676508044e0110144c696d697400001001307363686564756c65645f61741001044e00011464656c61791001044e0001406e6578745f617574686f7269746965731509016c426f756e646564417574686f726974794c6973743c4c696d69743e000118666f72636564250601244f7074696f6e3c4e3e0000150910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401a901045300000400a50101185665633c543e000019090c3870616c6c65745f6772616e6470611870616c6c6574144572726f7204045400011c2c50617573654661696c65640000080501417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665a42865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e30526573756d654661696c65640001081101417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e277420706175736564a028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e344368616e676550656e64696e67000204e8417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e1c546f6f536f6f6e000304bc43616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e60496e76616c69644b65794f776e65727368697050726f6f66000404310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f660005043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400060415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a0909091d0910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401b901045300000400210901185665633c543e00002109000002b90100250910346672616d655f737570706f727418747261697473106d69736334577261707065724f70617175650404540129090008007104000000290901045400002909084070616c6c65745f696d5f6f6e6c696e6564426f756e6465644f70617175654e6574776f726b53746174650c4c506565724964456e636f64696e674c696d697400584d756c746941646472456e636f64696e674c696d697400384164647265737365734c696d6974000008011c706565725f69642d09019c5765616b426f756e6465645665633c75382c20506565724964456e636f64696e674c696d69743e00014865787465726e616c5f6164647265737365733109012d015765616b426f756e6465645665633c5765616b426f756e6465645665633c75382c204d756c746941646472456e636f64696e674c696d69743e2c204164647265737365734c696d69740a3e00002d0910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401080453000004002801185665633c543e0000310910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e646564566563080454012d09045300000400350901185665633c543e000035090000022d090039090c4070616c6c65745f696d5f6f6e6c696e651870616c6c6574144572726f7204045400010828496e76616c69644b6579000004604e6f6e206578697374656e74207075626c6963206b65792e4c4475706c696361746564486561727462656174000104544475706c696361746564206865617274626561742e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a0909093d09082c70616c6c65745f7375646f144572726f720404540001042c526571756972655375646f0000047c53656e646572206d75737420626520746865205375646f206163636f756e7404644572726f7220666f7220746865205375646f206d6f64756c654109083070616c6c65745f6173736574485469636b6572526567697374726174696f6e0404550120000801146f776e65727c01284964656e746974794964000118657870697279f401244f7074696f6e3c553e00004509083070616c6c65745f6173736574345365637572697479546f6b656e0000100130746f74616c5f737570706c7918011c42616c616e63650001246f776e65725f6469647c01284964656e746974794964000124646976697369626c6519010110626f6f6c00012861737365745f74797065e50101244173736574547970650000490900000408a07c004d0900000408a0e101005109000004087ca0005509083070616c6c65745f61737365745841737365744f776e65727368697052656c6174696f6e00010c204e6f744f776e65640000002c5469636b65724f776e65640001002841737365744f776e656400020000590900000408a00102005d09083070616c6c65745f617373657464436c61737369635469636b6572526567697374726174696f6e00000801246574685f6f776e65723102013c457468657265756d4164647265737300012869735f6372656174656419010110626f6f6c00006109000004087c7c00650900000408a0790700690900000408a04502006d0900000408a04902007109083070616c6c65745f61737365741c56657273696f6e00000400080108753800007509083070616c6c65745f6173736574144572726f7204045400019830556e617574686f72697a65640000046c5468652075736572206973206e6f7420617574686f72697a65642e3c416c72656164794172636869766564000104805768656e20657874656e73696f6e20616c72656164792061726368697665642e44416c7265616479556e41726368697665640002048c5768656e20657874656e73696f6e20616c726561647920756e2d61726368697665642e5c457874656e73696f6e416c726561647950726573656e74000304805768656e20657874656e73696f6e20697320616c72656164792061646465642e4c4173736574416c7265616479437265617465640004048c54686520746f6b656e2068617320616c7265616479206265656e20637265617465642e345469636b6572546f6f4c6f6e6700050490546865207469636b6572206c656e677468206973206f76657220746865206c696d69742e385469636b65724e6f7441736369690006049c546865207469636b657220686173206e6f6e2d61736369692d656e636f6465642070617274732e5c5469636b6572416c726561647952656769737465726564000704c4546865207469636b657220697320616c7265616479207265676973746572656420746f20736f6d656f6e6520656c73652e54546f74616c537570706c7941626f76654c696d69740008049054686520746f74616c20737570706c792069732061626f766520746865206c696d69742e2c4e6f537563684173736574000904384e6f207375636820746f6b656e2e34416c726561647946726f7a656e000a047054686520746f6b656e20697320616c72656164792066726f7a656e2e284e6f74416e4f776e6572000b04984e6f7420616e206f776e6572206f662074686520746f6b656e206f6e20457468657265756d2e3c42616c616e63654f766572666c6f77000c04a8416e206f766572666c6f77207768696c652063616c63756c6174696e67207468652062616c616e63652e4c546f74616c537570706c794f766572666c6f77000d04bc416e206f766572666c6f77207768696c652063616c63756c6174696e672074686520746f74616c20737570706c792e48496e76616c69644772616e756c6172697479000e045c416e20696e76616c6964206772616e756c61726974792e244e6f7446726f7a656e000f0464546865206173736574206d7573742062652066726f7a656e2e3c496e76616c69645472616e73666572001004845472616e736665722076616c69646174696f6e20636865636b206661696c65642e4c496e73756666696369656e7442616c616e6365001104945468652073656e6465722062616c616e6365206973206e6f742073756666696369656e742e544173736574416c7265616479446976697369626c650012047c54686520746f6b656e20697320616c726561647920646976697369626c652e784d6178696d756d544d457874656e73696f6e4c696d69745265616368656400130499014e756d626572206f66205472616e73666572204d616e6167657220657874656e73696f6e7320617474616368656420746f20616e20617373657420697320657175616c20746f204d61784e756d6265724f66544d457874656e73696f6e466f7241737365742e70496e636f6d70617469626c65457874656e73696f6e56657273696f6e001404dc476976656e20736d61727420657874656e73696f6e206973206e6f7420636f6d70617469626c652077697468207468652061737365742e60496e76616c6964457468657265756d5369676e617475726500150494416e20696e76616c696420457468657265756d206045636473615369676e6174757265602e4c4e6f53756368436c61737369635469636b65720016049854686520676976656e207469636b6572206973206e6f74206120636c6173736963206f6e652e645469636b6572526567697374726174696f6e457870697265640017048c526567697374726174696f6e206f66207469636b65722068617320657870697265642e5053656e64657253616d6541735265636569766572001804845472616e736665727320746f2073656c6620617265206e6f7420616c6c6f776564244e6f53756368446f630019048854686520676976656e20446f63756d656e7420646f6573206e6f742065786973742e704d61784c656e6774684f6641737365744e616d654578636565646564001a04bc4d6178696d756d206c656e677468206f66206173736574206e616d6520686173206265656e2065786365656465642e8446756e64696e67526f756e644e616d654d61784c656e6774684578636565646564001b04ec4d6178696d756d206c656e677468206f66207468652066756e64696e6720726f756e64206e616d6520686173206265656e2065786365656465642e58496e76616c696441737365744964656e746966696572001c048c536f6d65206041737365744964656e746966696572602077617320696e76616c69642e84496e766573746f72556e697175656e657373436c61696d4e6f74416c6c6f776564001d04e8496e766573746f7220556e697175656e65737320636c61696d7320617265206e6f7420616c6c6f77656420666f7220746869732061737365742e60496e76616c6964437573746f6d4173736574547970654964001e0470496e76616c69642060437573746f6d4173736574547970654964602e8841737365744d657461646174614e616d654d61784c656e6774684578636565646564001f0405014d6178696d756d206c656e677468206f6620746865206173736574206d657461646174612074797065206e616d6520686173206265656e2065786365656465642e8c41737365744d6574616461746156616c75654d61784c656e6774684578636565646564002004f44d6178696d756d206c656e677468206f6620746865206173736574206d657461646174612076616c756520686173206265656e2065786365656465642e9441737365744d65746164617461547970654465664d61784c656e67746845786365656465640021041d014d6178696d756d206c656e677468206f6620746865206173736574206d65746164617461207479706520646566696e6974696f6e20686173206265656e2065786365656465642e6441737365744d657461646174614b657949734d697373696e67002204784173736574204d65746164617461206b6579206973206d697373696e672e6841737365744d6574616461746156616c756549734c6f636b65640023047c4173736574204d657461646174612076616c7565206973206c6f636b65642e8841737365744d657461646174614c6f63616c4b6579416c7265616479457869737473002404cc4173736574204d65746164617461204c6f63616c207479706520616c72656164792065786973747320666f722061737365742e8c41737365744d65746164617461476c6f62616c4b6579416c7265616479457869737473002504a84173736574204d6574616461746120476c6f62616c207479706520616c7265616479206578697374732e0079090000040871027c007d090c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e1c56657273696f6e000004000801087538000081090c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e144572726f720404540001383043414e6f7442656e65666974000004d441206361706974616c20646973747269627574696f6e20776173206d61646520666f722061206e6f6e2d62656e656669742043412e34416c7265616479457869737473000104a84120646973747269627574696f6e20616c72656164792065786973747320666f7220746869732043412e4c4578706972794265666f72655061796d656e7400020829014120646973747269627574696f6e732070726f766964656420657870697279206461746520776173207374726963746c79206265666f726520697473207061796d656e7420646174652e2101496e206f7468657220776f7264732c2065766572797468696e6720746f206469737472696275746520776f756c6420696d6d6564696174656c7920626520666f726665697465642e44446973747269627574696e674173736574000308f043757272656e63792074686174206973206469737472696275746564206973207468652073616d65206173207468652043412773207469636b65722e690143616c6c696e67206167656e7420697320617474656d7074696e67206120666f726d206f662073746f636b2073706c69742c207768696368206973206e6f742077686174207468652065787472696e73696320697320666f722e44486f6c646572416c726561647950616964000404d454686520746f6b656e20686f6c6465722068617320616c7265616479206265656e20706169642074686569722062656e656669742e484e6f53756368446973747269627574696f6e000504c441206361706974616c20646973747269627574696f6e20646f65736e277420657869737420666f7220746869732043412e5843616e6e6f74436c61696d4265666f726553746172740006046101446973747269627574696f6e20616c6c6f746d656e742063616e6e6f7420626520636c61696d6564206173207468652063757272656e742074696d65206973206265666f72652073746172742d6f662d7061796d656e742e5843616e6e6f74436c61696d41667465724578706972790007046901446973747269627574696f6e27732065787069727920686173207061737365642e204449442063616e6e6f7420636c61696d20616e796d6f726520616e642068617320666f72666569746564207468652062656e65666974732e8042616c616e6365506572536861726550726f647563744f766572666c6f77656400080429014d756c7469706c69636174696f6e206f66207468652062616c616e636520776974682074686520706572207368617265207061796f757420616d6f756e74206f766572666c6f7765642e584e6f74446973747269627574696f6e43726561746f72000904c0444944206973206e6f7420746865206f6e652077686f20637265617465642074686520646973747269627574696f6e2e40416c72656164795265636c61696d6564000a04d44449442077686f20637265617465642074686520646973747269627574696f6e20616c726561647920646964207265636c61696d2e284e6f7445787069726564000b04f0446973747269627574696f6e20686164206e6f742065787069726564207965742c206f722074686572652773206e6f2065787069727920646174652e4c446973747269627574696f6e53746172746564000c0401014120646973747269627574696f6e20686173206265656e206163746976617465642c20617320607061796d656e745f6174203c3d206e6f776020686f6c64732e6c496e73756666696369656e7452656d61696e696e67416d6f756e74000d042d014120646973747269627574696f6e2068617320696e73756666696369656e742072656d61696e696e6720616d6f756e74206f662063757272656e637920746f20646973747269627574652e00850900000408a089020089090000040885097c008d0900000289020091090000028d0200950900000408a09d020099090c3070616c6c65745f617373657428636865636b706f696e741c56657273696f6e00000400080108753800009d090c3070616c6c65745f617373657428636865636b706f696e74144572726f72040454000114384e6f537563685363686564756c65000004cc4120636865636b706f696e74207363686564756c6520646f6573206e6f7420657869737420666f72207468652061737365742e505363686564756c654e6f7452656d6f7661626c650001041d014120636865636b706f696e74207363686564756c65206973206e6f742072656d6f7661626c6520617320607265665f636f756e74287363686564756c655f696429203e2030602e744661696c6564546f436f6d707574654e657874436865636b706f696e74000208984661696c656420746f20636f6d7075746520746865206e65787420636865636b706f696e742ed0546865207363686564756c6520646f6573206e6f74206861766520616e79207570636f6d696e6720636865636b706f696e74732e605363686564756c654475726174696f6e546f6f53686f7274000304bc546865206475726174696f6e206f662061207363686564756c6520706572696f6420697320746f6f2073686f72742e4c5363686564756c6573546f6f436f6d706c6578000408d054686520736574206f66207363686564756c65732074616b656e20746f6765746865722061726520746f6f20636f6d706c65782ef8466f72206578616d706c652c20746865792061726520746f6f206d616e792c206f722074686579206f636375727320746f6f206672657175656e746c792e00a1090c4c706f6c796d6573685f7072696d69746976657348636f6d706c69616e63655f6d616e616765723c4173736574436f6d706c69616e6365000008011870617573656419010110626f6f6c000130726571756972656d656e7473d10201685665633c436f6d706c69616e6365526571756972656d656e743e0000a509086470616c6c65745f636f6d706c69616e63655f6d616e616765721c56657273696f6e0000040008010875380000a909086470616c6c65745f636f6d706c69616e63655f6d616e61676572144572726f7204045400011830556e617574686f72697a65640000045c55736572206973206e6f7420617574686f72697a65642e2c4469644e6f74457869737400010434446964206e6f7420657869737478496e76616c6964436f6d706c69616e6365526571756972656d656e7449640002049c436f6d706c69616e636520726571756972656d656e7420696420646f65736e277420657869737484496e636f72726563744f7065726174696f6e4f6e547275737465644973737565720003049c4973737565722065786973742062757420747279696e6720746f2061646420697420616761696e7c4475706c6963617465436f6d706c69616e6365526571756972656d656e7473000404b0546865726520617265206475706c696361746520636f6d706c69616e636520726571756972656d656e74732e7c436f6d706c69616e6365526571756972656d656e74546f6f436f6d706c6578000504110154686520776f7273742063617365207363656e6172696f206f662074686520636f6d706c69616e636520726571756972656d656e7420697320746f6f20636f6d706c657800ad0900000408a0750200b109086070616c6c65745f636f72706f726174655f616374696f6e731c56657273696f6e0000040008010875380000b509086070616c6c65745f636f72706f726174655f616374696f6e73144572726f7204045400013048417574684e6f744341415472616e73666572000004050154686520617574686f72697a6174696f6e2074797065206973206e6f7420746f207472616e73666572207468652043414120746f20616e6f74686572204449442e3844657461696c73546f6f4c6f6e67000104d8546865206064657461696c7360206f66206120434120657863656564656420746865206d617820616c6c6f776564206c656e6774682e3c4475706c69636174654469645461780002082101412077697468686f6c64696e6720746178206f7665727269646520666f72206120676976656e204449442077617320737065636966696564206d6f7265207468616e206f6e63652e050154686520636861696e207265667573656420746f206d616b6520612063686f6963652c20616e642068656e63652074686572652077617320616e206572726f722e3c546f6f4d616e794469645461786573000304c8546f6f206d616e792077697468686f6c64696e6720746178206f76657272696465732077657265207370656369666965642e40546f6f4d616e79546172676574496473000404e4546f6f206d616e79206964656e74697469657320696e20605461726765744964656e746974696573602077657265207370656369666965642e484e6f53756368436865636b706f696e74496400050405014f6e204341206372656174696f6e2c206120636865636b706f696e74204944207761732070726f766964656420776869636820646f65736e27742065786973742e204e6f537563684341000604a44120434120776974682074686520676976656e2060434149646020646964206e6f742065786973742e304e6f5265636f7264446174650007048854686520434120646964206e6f7420686176652061207265636f726420646174652e505265636f7264446174654166746572537461727400080cdc412043412773207265636f7264206461746520776173207374726963746c792061667465722074686520227374617274222074696d652c8c7768657265202273746172742220697320636f6e7465787420646570656e64656e742e8101466f72206578616d706c652c20697420636f756c6420626520746865207374617274206f6620612062616c6c6f742c206f72207468652073746172742d6f662d7061796d656e7420696e206361706974616c20646973747269627574696f6e2e5c4465636c4461746541667465725265636f726444617465000904ec412043412773206465636c61726174696f6e206461746520776173207374726963746c7920616674657220697473207265636f726420646174652e404465636c44617465496e467574757265000a04b4412043412773206465636c61726174696f6e2064617465206f636375727320696e20746865206675747572652e3c4e6f74546172676574656442794341000b046c434120646f6573206e6f742074617267657420746865204449442e00b9090000021800bd090c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74144572726f720404540001382c43414e6f744e6f74696365000004e04120636f72706f726174652062616c6c6f7420776173206d61646520666f722061206e6f6e20604973737565724e6f74696365602043412e34416c7265616479457869737473000104b84120636f72706f726174652062616c6c6f7420616c72656164792065786973747320666f7220746869732043412e304e6f5375636842616c6c6f74000204b44120636f72706f726174652062616c6c6f7420646f65736e277420657869737420666f7220746869732043412e3453746172744166746572456e6400030411014120636f72706f726174652062616c6c6f7427732073746172742074696d6520776173207374726963746c79206166746572207468652062616c6c6f74277320656e642e2c4e6f774166746572456e640004040d014120636f72706f726174652062616c6c6f74277320656e642074696d6520776173207374726963746c79206265666f7265207468652063757272656e742074696d652e5c4e756d6265724f6643686f696365734f766572666c6f770005043901496620736f6d65206d6f74696f6e20696e206120636f72706f726174652062616c6c6f7420686173206d6f72652063686f69636573207468616e20776f756c642066697420696e2060753136602e50566f74696e67416c7265616479537461727465640006040101566f74696e67207374617274656420616c72656164792e20416d656e64696e6720612062616c6c6f74206973206e6f206c6f6e67657220706f737369626c652e40566f74696e674e6f745374617274656400070468566f74696e67206861736e27742073746172746564207965742e48566f74696e67416c7265616479456e64656400080454566f74696e6720656e64656420616c72656164792e3857726f6e67566f7465436f756e74000904150150726f7669646564206c697374206f662062616c616e63657320646f6573206e6f74206d617463682074686520746f74616c206e756d626572206f662063686f696365732e44496e73756666696369656e74566f746573000a043d01566f74696e6720706f7765722075736564206279206120444944206f6e2061206d6f74696f6e2065786365656473207468617420776869636820697320617661696c61626c6520746f207468656d2e444e6f5375636852435646616c6c6261636b000b04bc546865205243562066616c6c6261636b206f6620736f6d652063686f69636520646f6573206e6f742065786973742e3052435653656c664379636c65000c04b4546865205243562066616c6c6261636b20706f696e747320746f20746865206f726967696e2063686f6963652e345243564e6f74416c6c6f776564000d048c524356206973206e6f7420616c6c6f77656420666f7220746869732062616c6c6f742e00c109084870616c6c65745f7065726d697373696f6e73144572726f7204045400010448556e617574686f72697a656443616c6c6572000004ec5468652063616c6c6572206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e00c509082c70616c6c65745f7069707330506970734d65746164617461042c426c6f636b4e756d62657201100018010869644d030114506970496400010c75726c5102012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e510301584f7074696f6e3c5069704465736372697074696f6e3e000128637265617465645f617410012c426c6f636b4e756d62657200014c7472616e73616374696f6e5f76657273696f6e10010c7533320001186578706972793901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0000c909000004084d030000cd09082c70616c6c65745f706970732c4465706f736974496e666f04244163636f756e7449640100000801146f776e65720001244163636f756e744964000118616d6f756e7418011c42616c616e63650000d109082c70616c6c65745f706970730c506970082050726f706f73616c01dd05244163636f756e74496401000010010869644d030114506970496400012070726f706f73616cdd05012050726f706f73616c00011473746174655d03013450726f706f73616c537461746500012070726f706f7365724503014c50726f706f7365723c4163636f756e7449643e0000d509082c70616c6c65745f7069707330566f74696e67526573756c740000100128617965735f636f756e7410010c753332000128617965735f7374616b6518011c42616c616e63650001286e6179735f636f756e7410010c7533320001286e6179735f7374616b6518011c42616c616e63650000d909082c70616c6c65745f7069707310566f74650000080019010110626f6f6c000018011c42616c616e63650000dd09082c70616c6c65745f7069707340536e617073686f744d65746164617461082c426c6f636b4e756d6265720110244163636f756e7449640100000c0128637265617465645f617410012c426c6f636b4e756d62657200011c6d6164655f62790001244163636f756e744964000108696461030128536e617073686f7449640000e109082c70616c6c65745f706970731c56657273696f6e0000040008010875380000e509082c70616c6c65745f70697073144572726f720404540001488452657363686564756c654e6f74427952656c65617365436f6f7264696e61746f7200000431014f6e6c79207468652047432072656c6561736520636f6f7264696e61746f7220697320616c6c6f77656420746f2072657363686564756c652070726f706f73616c20657865637574696f6e2e404e6f7446726f6d436f6d6d756e697479000108ec54686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2ecc5468652070726f706f73616c206d7573742062652066726f6d2074686520636f6d6d756e6974792c206275742069736e27742e384e6f744279436f6d6d6974746565000208ec54686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2eb45468652070726f706f73616c206d75737420626520627920636f6d6d756e6974792c206275742069736e27742e44546f6f4d616e794163746976655069707300030829015468652063757272656e74206e756d626572206f6620616374697665202870656e64696e67207c207363686564756c65642920504950732065786365656420746865206d6178696d756d9c616e64207468652070726f706f73616c206973206e6f74206279206120636f6d6d69747465652e40496e636f72726563744465706f7369740004049c50726f706f7365722073706563696669657320616e20696e636f7272656374206465706f7369744c496e73756666696369656e744465706f736974000504b450726f706f7365722063616e2774206166666f726420746f206c6f636b206d696e696d756d206465706f736974384e6f5375636850726f706f73616c000604705468652070726f706f73616c20646f6573206e6f742065786973742e4c4e6f7441436f6d6d69747465654d656d626572000704844e6f742070617274206f6620676f7665726e616e636520636f6d6d69747465652e60496e76616c6964467574757265426c6f636b4e756d626572000804d85768656e206120626c6f636b206e756d626572206973206c657373207468616e2063757272656e7420626c6f636b206e756d6265722e544e756d6265724f66566f74657345786365656465640009047c5768656e206e756d626572206f6620766f746573206f766572666c6f77732e685374616b65416d6f756e744f66566f7465734578636565646564000a04985768656e207374616b6520616d6f756e74206f66206120766f7465206f766572666c6f77732e584d697373696e6743757272656e744964656e74697479000b044c4d697373696e672063757272656e742044494458496e636f727265637450726f706f73616c5374617465000c049050726f706f73616c206973206e6f7420696e2074686520636f72726563742073746174653443616e6e6f74536b6970506970000d04fc5768656e20656e616374696e6720736e617073686f7420726573756c74732c20616e20756e736b69707061626c65205049502077617320736b69707065642e58536e617073686f74526573756c74546f6f4c61726765000e041501547269656420746f20656e61637420726573756c747320666f722074686520736e617073686f74207175657565206f766572666c6f77696e6720697473206c656e6774682e48536e617073686f7449644d69736d61746368000f045d01547269656420746f20656e61637420726573756c7420666f7220504950207769746820696420646966666572656e742066726f6d20746861742061742074686520706f736974696f6e20696e207468652071756575652e705363686564756c656450726f706f73616c446f65736e744578697374001004fc457865637574696f6e206f662061207363686564756c65642070726f706f73616c206661696c65642062656361757365206974206973206d697373696e672e6c50726f706f73616c4e6f74496e5363686564756c65645374617465001104fc412070726f706f73616c2074686174206973206e6f7420696e2061207363686564756c65642073746174652063616e6e6f742062652065786563757465642e00e909000004087ce000ed09000004087c850300f10900000408d8a000f509000004087cd800f909084070616c6c65745f706f7274666f6c696f1c56657273696f6e0000040008010875380000fd09084070616c6c65745f706f7274666f6c696f144572726f7204045400012454506f7274666f6c696f446f65734e6f7445786973740000047054686520706f7274666f6c696f20646f65736e27742065786973742e70496e73756666696369656e74506f7274666f6c696f42616c616e63650001049c496e73756666696369656e742062616c616e636520666f722061207472616e73616374696f6e2e6844657374696e6174696f6e497353616d65506f7274666f6c696f000204e854686520736f7572636520616e642064657374696e6174696f6e20706f7274666f6c696f732073686f756c6420626520646966666572656e742e64506f7274666f6c696f4e616d65416c7265616479496e557365000304310154686520706f7274666f6c696f20636f756c646e27742062652072656e616d65642062656361757365207468652063686f73656e206e616d6520697320616c726561647920696e207573652e945365636f6e646172794b65794e6f74417574686f72697a6564466f72506f7274666f6c696f000404fc546865207365636f6e64617279206b6579206973206e6f7420617574686f72697a656420746f206163636573732074686520706f7274666f6c696f2873292e54556e617574686f72697a6564437573746f6469616e000504f454686520706f72666f6c696f277320637573746f6479206973207769746820736f6d656f6e65206f74686572207468616e207468652063616c6c65722e60496e73756666696369656e74546f6b656e734c6f636b6564000604bc43616e206e6f7420756e6c6f636b206d6f726520746f6b656e73207468616e207768617420617265206c6f636b656444506f7274666f6c696f4e6f74456d707479000704bc54686520706f7274666f6c696f207374696c6c2068617320736f6d652061737365742062616c616e6365206c6566746c446966666572656e744964656e74697479506f7274666f6c696f73000804b454686520706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e74697469657300010a084c70616c6c65745f70726f746f636f6c5f666565144572726f7204045400010c68496e73756666696369656e744163636f756e7442616c616e6365000004b0496e73756666696369656e74206163636f756e742062616c616e636520746f2070617920746865206665652e4c556e48616e646c6564496d62616c616e636573000104884e6f742061626c6520746f2068616e646c65642074686520696d62616c616e63657368496e73756666696369656e745375627369647942616c616e6365000204b0496e73756666696369656e7420737562736964792062616c616e636520746f2070617920746865206665652e00050a000002090a00090a04184f7074696f6e040454010d0a0108104e6f6e6500000010536f6d6504000d0a00000100000d0a084070616c6c65745f7363686564756c65722c5363686564756c65645632101043616c6c01dd052c426c6f636b4e756d62657201103450616c6c6574734f726967696e01110a244163636f756e7449640100001401206d617962655f69646102013c4f7074696f6e3c5665633c75383e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cdd05011043616c6c0001386d617962655f706572696f646963d50701944f7074696f6e3c7363686564756c653a3a506572696f643c426c6f636b4e756d6265723e3e0001186f726967696e110a013450616c6c6574734f726967696e0000110a0c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d65304f726967696e43616c6c65720001141873797374656d0400150a01746672616d655f73797374656d3a3a4f726967696e3c52756e74696d653e00000044506f6c796d657368436f6d6d69747465650400190a01f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365313e00090048546563686e6963616c436f6d6d697474656504001d0a01f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365333e000b004055706772616465436f6d6d69747465650400210a01f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365343e000d0010566f69640400250a01110173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a566f696400040000150a08306672616d655f73797374656d245261774f726967696e04244163636f756e7449640100010c10526f6f74000000185369676e656404000001244163636f756e744964000100104e6f6e6500020000190a084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449012d01010420456e646f72736564000000001d0a084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449014901010420456e646f7273656400000000210a084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449015901010420456e646f7273656400000000250a081c73705f636f726510566f696400010000290a084070616c6c65745f7363686564756c65722052656c6561736573000108085631000000085632000100002d0a0c4070616c6c65745f7363686564756c65721870616c6c6574144572726f72040454000110404661696c6564546f5363686564756c65000004644661696c656420746f207363686564756c6520612063616c6c204e6f74466f756e640001047c43616e6e6f742066696e6420746865207363686564756c65642063616c6c2e5c546172676574426c6f636b4e756d626572496e50617374000204a4476976656e2074617267657420626c6f636b206e756d62657220697320696e2074686520706173742e4852657363686564756c654e6f4368616e6765000304f052657363686564756c65206661696c6564206265636175736520697420646f6573206e6f74206368616e6765207363686564756c65642074696d652e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909310a084470616c6c65745f736574746c656d656e741456656e7565000008011c63726561746f727c01284964656e74697479496400012876656e75655f74797065ad03012456656e7565547970650000350a00000408a503b10300390a00000408a50300003d0a084470616c6c65745f736574746c656d656e742c496e737472756374696f6e08184d6f6d656e7401202c426c6f636b4e756d6265720110001c0138696e737472756374696f6e5f6964b1030134496e737472756374696f6e496400012076656e75655f6964a503011c56656e75654964000118737461747573410a0144496e737472756374696f6e53746174757300013c736574746c656d656e745f74797065b503016c536574746c656d656e74547970653c426c6f636b4e756d6265723e000128637265617465645f6174f401384f7074696f6e3c4d6f6d656e743e00012874726164655f64617465f401384f7074696f6e3c4d6f6d656e743e00012876616c75655f64617465f401384f7074696f6e3c4d6f6d656e743e0000410a084470616c6c65745f736574746c656d656e7444496e737472756374696f6e53746174757300010c1c556e6b6e6f776e0000001c50656e64696e67000100184661696c656400020000450a00000408b103c10300490a084470616c6c65745f736574746c656d656e74244c656753746174757304244163636f756e7449640100010c4050656e64696e67546f6b656e4c6f636b00000040457865637574696f6e50656e64696e6700010050457865637574696f6e546f4265536b697070656408000001244163636f756e744964000020010c753634000200004d0a00000408b103d800510a084470616c6c65745f736574746c656d656e744441666669726d6174696f6e53746174757300010c1c556e6b6e6f776e0000001c50656e64696e670001002041666669726d656400020000550a00000408d8b10300590a00000408a0a503005d0a084470616c6c65745f736574746c656d656e741c56657273696f6e0000040008010875380000610a084470616c6c65745f736574746c656d656e74144572726f7204045400016430496e76616c696456656e75650000045456656e756520646f6573206e6f742065786973742e30556e617574686f72697a6564000104a853656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e3c4e6f50656e64696e6741666669726d000204d04e6f2070656e64696e672061666669726d6174696f6e20666f72207468652070726f766964656420696e737472756374696f6e2e58496e737472756374696f6e4e6f7441666669726d656400030488496e737472756374696f6e20686173206e6f74206265656e2061666669726d65642e54496e737472756374696f6e4e6f7450656e64696e67000404b850726f766964656420696e737472756374696f6e206973206e6f742070656e64696e6720657865637574696f6e2e50496e737472756374696f6e4e6f744661696c6564000504b850726f766964656420696e737472756374696f6e206973206e6f74206661696c696e6720657865637574696f6e2e344c65674e6f7450656e64696e670006049850726f7669646564206c6567206973206e6f742070656e64696e6720657865637574696f6e2e48556e617574686f72697a65645369676e6572000704985369676e6572206973206e6f7420617574686f72697a6564206279207468652076656e75652e5452656365697074416c7265616479436c61696d6564000804545265636569707420616c726561647920757365642e44526563656970744e6f74436c61696d65640009045452656365697074206e6f742075736564207965742e44556e617574686f72697a656456656e7565000a04a456656e756520646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e484661696c6564546f4c6f636b546f6b656e73000b0421015768696c652061666669726d696e6720746865207472616e736665722c2073797374656d206661696c656420746f206c6f636b207468652061737365747320696e766f6c7665642e44496e737472756374696f6e4661696c6564000c0478496e737472756374696f6e206661696c656420746f20657865637574652e5c496e737472756374696f6e4461746573496e76616c6964000d0474496e737472756374696f6e2068617320696e76616c696420646174657370496e737472756374696f6e536574746c65426c6f636b506173736564000e04a8496e737472756374696f6e27732074617267657420736574746c6520626c6f636b20726561636865642e40496e76616c69645369676e6174757265000f04784f6666636861696e207369676e617475726520697320696e76616c69642e4853616d6553656e64657252656365697665720010048453656e64657220616e6420726563656976657220617265207468652073616d652e44506f7274666f6c696f4d69736d617463680011042501506f7274666f6c696f20696e207265636569707420646f6573206e6f74206d61746368207769746820706f7274666f6c696f732070726f76696465642062792074686520757365722e44536574746c654f6e50617374426c6f636b00120461015468652070726f766964656420736574746c656d656e7420626c6f636b206e756d62657220697320696e20746865207061737420616e642063616e6e6f74206265207573656420627920746865207363686564756c65722e4c4e6f506f7274666f6c696f50726f76696465640013043d01506f7274666f6c696f20626173656420616374696f6e732072657175697265206174206c65617374206f6e6520706f7274666f6c696f20746f2062652070726f766964656420617320696e7075742e6c556e657870656374656441666669726d6174696f6e53746174757300140445015468652063757272656e7420696e737472756374696f6e2061666669726d6174696f6e2073746174757320646f6573206e6f7420737570706f7274207468652072657175657374656420616374696f6e2e404661696c6564546f5363686564756c650015048c5363686564756c696e67206f6620616e20696e737472756374696f6e206661696c732e404c6567436f756e74546f6f536d616c6c001604a5014c65677320636f756e742073686f756c64206d61746368657320776974682074686520746f74616c206e756d626572206f66206c65677320696e20776869636820676976656e20706f7274666f6c696f20616374206173206066726f6d5f706f7274666f6c696f602e48556e6b6e6f776e496e737472756374696f6e00170474496e737472756374696f6e2073746174757320697320756e6b6e6f776e64496e737472756374696f6e486173546f6f4d616e794c656773001804c44d6178696d756d206c65677320746861742063616e20626520696e20612073696e676c6520696e737472756374696f6e2e04844572726f727320666f722074686520536574746c656d656e74206d6f64756c652e650a00000408690af10300690a0c4c706f6c796d6573685f7072696d697469766573287374617469737469637328537461743173744b657900000801146173736574d1030128417373657453636f7065000124737461745f74797065d9030120537461745479706500006d0a0c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e63655c41737365745472616e73666572436f6d706c69616e6365000008011870617573656419010110626f6f6c000130726571756972656d656e7473f907016c42547265655365743c5472616e73666572436f6e646974696f6e3e0000710a000004080d047c00750a084470616c6c65745f737461746973746963731c56657273696f6e0000040008010875380000790a084470616c6c65745f73746174697374696373144572726f720404540001183c496e76616c69645472616e73666572000004545472616e73666572206e6f7420616c6c6f7765642e3c53746174547970654d697373696e67000104605374617454797065206973206e6f7420656e61626c65642e8453746174547970654e656564656442795472616e73666572436f6e646974696f6e000204a05374617454797065206973206e6565646564206279205472616e73666572436f6e646974696f6e2e6443616e6e6f7452656d6f76655374617454797065496e557365000304a84120537461747479706520697320696e2075736520616e642063616e27742062652072656d6f7665642e5053746174547970654c696d697452656163686564000404f4546865206c696d6974206f662053746174547970657320616c6c6f77656420666f7220616e20617373657420686173206265656e20726561636865642e745472616e73666572436f6e646974696f6e4c696d6974526561636865640005041901546865206c696d6974206f66205472616e73666572436f6e646974696f6e7320616c6c6f77656420666f7220616e20617373657420686173206265656e20726561636865642e046453746174697374696373206d6f64756c65206572726f72732e7d0a00000408a0190400810a082870616c6c65745f73746f144572726f7204045400013030556e617574686f72697a6564000004a853656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e204f766572666c6f770001048c416e2061726974686d65746963206f7065726174696f6e206f766572666c6f7765642e6c496e73756666696369656e74546f6b656e7352656d61696e696e67000204804e6f7420656e6f75676820746f6b656e73206c65667420666f722073616c652e4846756e647261697365724e6f74466f756e640003045446756e64726169736572206e6f7420666f756e642e4446756e647261697365724e6f744c6976650004049c46756e64726169736572206973206569746865722066726f7a656e206f722073746f707065642e4046756e64726169736572436c6f736564000504ac46756e6472616973657220686173206265656e20636c6f7365642f73746f7070656420616c72656164792e4446756e6472616973657245787069726564000604d0496e746572616374696e67207769746820612066756e6472616973657220706173742074686520656e6420604d6f6d656e74602e30496e76616c696456656e756500070468416e20696e76616c69642076656e75652070726f76696465642e44496e76616c6964507269636554696572730008042501416e20696e646976696475616c20707269636520746965722077617320696e76616c6964206f72206120736574206f662070726963652074696572732077617320696e76616c69642e54496e76616c69644f66666572696e6757696e646f770009045d0157696e646f77202873746172742074696d652c20656e642074696d65292068617320696e76616c696420706172616d65746572732c20652e672073746172742074696d6520697320616674657220656e642074696d652e404d617850726963654578636565646564000a04bc5072696365206f662074686520696e766573746d656e7420657863656564656420746865206d61782070726963652e58496e766573746d656e74416d6f756e74546f6f4c6f77000b04e8496e766573746d656e7420616d6f756e74206973206c6f776572207468616e206d696e696d756d20696e766573746d656e7420616d6f756e742e04844572726f727320666f722074686520536574746c656d656e74206d6f64756c652e850a083c70616c6c65745f7472656173757279144572726f720404540001084c496e73756666696369656e7442616c616e63650000047850726f706f73657227732062616c616e636520697320746f6f206c6f772e3c496e76616c69644964656e7469747900010488496e76616c6964206964656e7469747920666f722064697362757273656d656e742e04784572726f7220666f7220746865207472656173757279206d6f64756c652e890a083870616c6c65745f7574696c697479144572726f7204045400010c40496e76616c69645369676e6174757265000004744f6666636861696e207369676e617475726520697320696e76616c6964405461726765744364644d697373696e670001048054617267657420646f6573206e6f74206861766520612076616c69642043444430496e76616c69644e6f6e636500020c6850726f7669646564206e6f6e63652077617320696e76616c696411014966207468652070726f7669646564206e6f6e6365203c2063757272656e74206e6f6e63652c207468652063616c6c2077617320616c72656164792065786563757465645d014966207468652070726f7669646564206e6f6e6365203e2063757272656e74206e6f6e63652c207468652063616c6c287329206265666f7265207468652063757272656e74206661696c656420746f2065786563757465008d0a082c70616c6c65745f62617365144572726f720404540001081c546f6f4c6f6e6700000880457863656564656420612067656e65726963206c656e677468206c696d69742e1d01546865206c696d697420636f756c6420626520666f7220616e7920736f7274206f66206c69737473206f66207468696e67732c20696e636c7564696e67206120737472696e672e3c436f756e7465724f766572666c6f77000118b85468652073657175656e636520636f756e74657220666f7220736f6d657468696e67206f766572666c6f7765642e001d015768656e20746869732068617070656e7320646570656e6473206f6e20652e672e2c20746865206361706163697479206f6620746865206964656e74696669657220747970652e3901466f72206578616d706c652c207765206d69676874206861766520607075622073747275637420506970496428753332293b602c207769746820607533323a3a4d4158602063617061636974792e5901496e2070726163746963652c207468657365206572726f72732077696c6c206e657665722068617070656e20627574206e6f20636f646520706174682073686f756c6420726573756c7420696e20612070616e69632cfc736f20746865736520636f726e6572206361736573206e65656420746f20626520636f7665726564207769746820616e206572726f722076617269616e742e00910a00000408a0150100950a085870616c6c65745f65787465726e616c5f6167656e7473144572726f72040454000118204e6f537563684147000004ec416e20414720776974682074686520676976656e2060414749646020646964206e6f7420657869737420666f722074686520605469636b6572602e44556e617574686f72697a65644167656e74000104e8546865206167656e74206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e38416c7265616479416e4167656e74000204e85468652070726f766964656420606167656e746020697320616c726561647920616e206167656e7420666f722074686520605469636b6572602e284e6f74416e4167656e74000304d85468652070726f766964656420606167656e7460206973206e6f7420616e206167656e7420666f722074686520605469636b6572602e5452656d6f76696e674c61737446756c6c4167656e74000408e054686973206167656e7420697320746865206c6173742066756c6c206f6e652c20616e642069742773206265696e672072656d6f7665642c686d616b696e6720746865206173736574206f727068616e65642e845365636f6e646172794b65794e6f74417574686f72697a6564466f7241737365740005041d015468652063616c6c65722773207365636f6e64617279206b657920646f6573206e6f74206861766520746865207265717569726564206173736574207065726d697373696f6e2e00990a083870616c6c65745f72656c617965721c53756273696479040c416363010000080128706179696e675f6b657900010c41636300012472656d61696e696e6718011c42616c616e636500009d0a083870616c6c65745f72656c61796572144572726f7204045400011c44557365724b65794364644d697373696e67000004cc5468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e4c506179696e674b65794364644d697373696e67000104cc5468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e2c4e6f506179696e674b6579000204ac5468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e304e6f74506179696e674b6579000304b05468652060757365725f6b65796020686173206120646966666572656e742060706179696e675f6b6579602e644e6f74417574686f72697a6564466f72506179696e674b6579000404b8546865207369676e6572206973206e6f7420617574686f72697a656420666f722060706179696e675f6b6579602e5c4e6f74417574686f72697a6564466f72557365724b6579000504b0546865207369676e6572206973206e6f7420617574686f72697a656420666f722060757365725f6b6579602e204f766572666c6f77000604b85468652072656d61696e696e6720504f4c595820666f722060757365725f6b657960206f766572666c6f7765642e00a10a083870616c6c65745f72657761726473144572726f7204045400011044556e6b6e6f776e49746e41646472657373000004cc4164647265737320776173206e6f7420666f756e6420696e20746865206c697374206f662049746e206164647265737365732e5c49746e526577617264416c7265616479436c61696d65640001047c49746e207265776172642077617320616c726561647920636c61696d65642e40496e76616c69645369676e61747572650002047c50726f7669646564207369676e61747572652077617320696e76616c69642e54556e61626c65546f436f7665727442616c616e6365000304b042616c616e63652063616e206e6f7420626520636f6e76657274656420746f2061207072696d69746976652e00a50a084470616c6c65745f746573745f7574696c73144572726f7204045400010000a90a102873705f72756e74696d651c67656e657269634c756e636865636b65645f65787472696e73696348556e636865636b656445787472696e736963101c416464726573730139051043616c6c01dd05245369676e617475726501e50714457874726101ad0a00040028000000ad0a00000420b10ab50ab90abd0ac50ac90ad10ad50a00b10a10306672616d655f73797374656d28657874656e73696f6e7348636865636b5f737065635f76657273696f6e40436865636b5370656356657273696f6e04045400000000b50a10306672616d655f73797374656d28657874656e73696f6e7340636865636b5f74785f76657273696f6e38436865636b547856657273696f6e04045400000000b90a10306672616d655f73797374656d28657874656e73696f6e7334636865636b5f67656e6573697330436865636b47656e6573697304045400000000bd0a10306672616d655f73797374656d28657874656e73696f6e733c636865636b5f6d6f7274616c69747938436865636b4d6f7274616c69747904045400000400c10a010c4572610000c10a102873705f72756e74696d651c67656e657269630c6572610c4572610001010420496d6d6f7274616c0000001c4d6f7274616c31040008000001001c4d6f7274616c32040008000002001c4d6f7274616c33040008000003001c4d6f7274616c34040008000004001c4d6f7274616c35040008000005001c4d6f7274616c36040008000006001c4d6f7274616c37040008000007001c4d6f7274616c38040008000008001c4d6f7274616c3904000800000900204d6f7274616c313004000800000a00204d6f7274616c313104000800000b00204d6f7274616c313204000800000c00204d6f7274616c313304000800000d00204d6f7274616c313404000800000e00204d6f7274616c313504000800000f00204d6f7274616c313604000800001000204d6f7274616c313704000800001100204d6f7274616c313804000800001200204d6f7274616c313904000800001300204d6f7274616c323004000800001400204d6f7274616c323104000800001500204d6f7274616c323204000800001600204d6f7274616c323304000800001700204d6f7274616c323404000800001800204d6f7274616c323504000800001900204d6f7274616c323604000800001a00204d6f7274616c323704000800001b00204d6f7274616c323804000800001c00204d6f7274616c323904000800001d00204d6f7274616c333004000800001e00204d6f7274616c333104000800001f00204d6f7274616c333204000800002000204d6f7274616c333304000800002100204d6f7274616c333404000800002200204d6f7274616c333504000800002300204d6f7274616c333604000800002400204d6f7274616c333704000800002500204d6f7274616c333804000800002600204d6f7274616c333904000800002700204d6f7274616c343004000800002800204d6f7274616c343104000800002900204d6f7274616c343204000800002a00204d6f7274616c343304000800002b00204d6f7274616c343404000800002c00204d6f7274616c343504000800002d00204d6f7274616c343604000800002e00204d6f7274616c343704000800002f00204d6f7274616c343804000800003000204d6f7274616c343904000800003100204d6f7274616c353004000800003200204d6f7274616c353104000800003300204d6f7274616c353204000800003400204d6f7274616c353304000800003500204d6f7274616c353404000800003600204d6f7274616c353504000800003700204d6f7274616c353604000800003800204d6f7274616c353704000800003900204d6f7274616c353804000800003a00204d6f7274616c353904000800003b00204d6f7274616c363004000800003c00204d6f7274616c363104000800003d00204d6f7274616c363204000800003e00204d6f7274616c363304000800003f00204d6f7274616c363404000800004000204d6f7274616c363504000800004100204d6f7274616c363604000800004200204d6f7274616c363704000800004300204d6f7274616c363804000800004400204d6f7274616c363904000800004500204d6f7274616c373004000800004600204d6f7274616c373104000800004700204d6f7274616c373204000800004800204d6f7274616c373304000800004900204d6f7274616c373404000800004a00204d6f7274616c373504000800004b00204d6f7274616c373604000800004c00204d6f7274616c373704000800004d00204d6f7274616c373804000800004e00204d6f7274616c373904000800004f00204d6f7274616c383004000800005000204d6f7274616c383104000800005100204d6f7274616c383204000800005200204d6f7274616c383304000800005300204d6f7274616c383404000800005400204d6f7274616c383504000800005500204d6f7274616c383604000800005600204d6f7274616c383704000800005700204d6f7274616c383804000800005800204d6f7274616c383904000800005900204d6f7274616c393004000800005a00204d6f7274616c393104000800005b00204d6f7274616c393204000800005c00204d6f7274616c393304000800005d00204d6f7274616c393404000800005e00204d6f7274616c393504000800005f00204d6f7274616c393604000800006000204d6f7274616c393704000800006100204d6f7274616c393804000800006200204d6f7274616c393904000800006300244d6f7274616c31303004000800006400244d6f7274616c31303104000800006500244d6f7274616c31303204000800006600244d6f7274616c31303304000800006700244d6f7274616c31303404000800006800244d6f7274616c31303504000800006900244d6f7274616c31303604000800006a00244d6f7274616c31303704000800006b00244d6f7274616c31303804000800006c00244d6f7274616c31303904000800006d00244d6f7274616c31313004000800006e00244d6f7274616c31313104000800006f00244d6f7274616c31313204000800007000244d6f7274616c31313304000800007100244d6f7274616c31313404000800007200244d6f7274616c31313504000800007300244d6f7274616c31313604000800007400244d6f7274616c31313704000800007500244d6f7274616c31313804000800007600244d6f7274616c31313904000800007700244d6f7274616c31323004000800007800244d6f7274616c31323104000800007900244d6f7274616c31323204000800007a00244d6f7274616c31323304000800007b00244d6f7274616c31323404000800007c00244d6f7274616c31323504000800007d00244d6f7274616c31323604000800007e00244d6f7274616c31323704000800007f00244d6f7274616c31323804000800008000244d6f7274616c31323904000800008100244d6f7274616c31333004000800008200244d6f7274616c31333104000800008300244d6f7274616c31333204000800008400244d6f7274616c31333304000800008500244d6f7274616c31333404000800008600244d6f7274616c31333504000800008700244d6f7274616c31333604000800008800244d6f7274616c31333704000800008900244d6f7274616c31333804000800008a00244d6f7274616c31333904000800008b00244d6f7274616c31343004000800008c00244d6f7274616c31343104000800008d00244d6f7274616c31343204000800008e00244d6f7274616c31343304000800008f00244d6f7274616c31343404000800009000244d6f7274616c31343504000800009100244d6f7274616c31343604000800009200244d6f7274616c31343704000800009300244d6f7274616c31343804000800009400244d6f7274616c31343904000800009500244d6f7274616c31353004000800009600244d6f7274616c31353104000800009700244d6f7274616c31353204000800009800244d6f7274616c31353304000800009900244d6f7274616c31353404000800009a00244d6f7274616c31353504000800009b00244d6f7274616c31353604000800009c00244d6f7274616c31353704000800009d00244d6f7274616c31353804000800009e00244d6f7274616c31353904000800009f00244d6f7274616c3136300400080000a000244d6f7274616c3136310400080000a100244d6f7274616c3136320400080000a200244d6f7274616c3136330400080000a300244d6f7274616c3136340400080000a400244d6f7274616c3136350400080000a500244d6f7274616c3136360400080000a600244d6f7274616c3136370400080000a700244d6f7274616c3136380400080000a800244d6f7274616c3136390400080000a900244d6f7274616c3137300400080000aa00244d6f7274616c3137310400080000ab00244d6f7274616c3137320400080000ac00244d6f7274616c3137330400080000ad00244d6f7274616c3137340400080000ae00244d6f7274616c3137350400080000af00244d6f7274616c3137360400080000b000244d6f7274616c3137370400080000b100244d6f7274616c3137380400080000b200244d6f7274616c3137390400080000b300244d6f7274616c3138300400080000b400244d6f7274616c3138310400080000b500244d6f7274616c3138320400080000b600244d6f7274616c3138330400080000b700244d6f7274616c3138340400080000b800244d6f7274616c3138350400080000b900244d6f7274616c3138360400080000ba00244d6f7274616c3138370400080000bb00244d6f7274616c3138380400080000bc00244d6f7274616c3138390400080000bd00244d6f7274616c3139300400080000be00244d6f7274616c3139310400080000bf00244d6f7274616c3139320400080000c000244d6f7274616c3139330400080000c100244d6f7274616c3139340400080000c200244d6f7274616c3139350400080000c300244d6f7274616c3139360400080000c400244d6f7274616c3139370400080000c500244d6f7274616c3139380400080000c600244d6f7274616c3139390400080000c700244d6f7274616c3230300400080000c800244d6f7274616c3230310400080000c900244d6f7274616c3230320400080000ca00244d6f7274616c3230330400080000cb00244d6f7274616c3230340400080000cc00244d6f7274616c3230350400080000cd00244d6f7274616c3230360400080000ce00244d6f7274616c3230370400080000cf00244d6f7274616c3230380400080000d000244d6f7274616c3230390400080000d100244d6f7274616c3231300400080000d200244d6f7274616c3231310400080000d300244d6f7274616c3231320400080000d400244d6f7274616c3231330400080000d500244d6f7274616c3231340400080000d600244d6f7274616c3231350400080000d700244d6f7274616c3231360400080000d800244d6f7274616c3231370400080000d900244d6f7274616c3231380400080000da00244d6f7274616c3231390400080000db00244d6f7274616c3232300400080000dc00244d6f7274616c3232310400080000dd00244d6f7274616c3232320400080000de00244d6f7274616c3232330400080000df00244d6f7274616c3232340400080000e000244d6f7274616c3232350400080000e100244d6f7274616c3232360400080000e200244d6f7274616c3232370400080000e300244d6f7274616c3232380400080000e400244d6f7274616c3232390400080000e500244d6f7274616c3233300400080000e600244d6f7274616c3233310400080000e700244d6f7274616c3233320400080000e800244d6f7274616c3233330400080000e900244d6f7274616c3233340400080000ea00244d6f7274616c3233350400080000eb00244d6f7274616c3233360400080000ec00244d6f7274616c3233370400080000ed00244d6f7274616c3233380400080000ee00244d6f7274616c3233390400080000ef00244d6f7274616c3234300400080000f000244d6f7274616c3234310400080000f100244d6f7274616c3234320400080000f200244d6f7274616c3234330400080000f300244d6f7274616c3234340400080000f400244d6f7274616c3234350400080000f500244d6f7274616c3234360400080000f600244d6f7274616c3234370400080000f700244d6f7274616c3234380400080000f800244d6f7274616c3234390400080000f900244d6f7274616c3235300400080000fa00244d6f7274616c3235310400080000fb00244d6f7274616c3235320400080000fc00244d6f7274616c3235330400080000fd00244d6f7274616c3235340400080000fe00244d6f7274616c3235350400080000ff0000c50a10306672616d655f73797374656d28657874656e73696f6e732c636865636b5f6e6f6e636528436865636b4e6f6e63650404540000040071040120543a3a496e6465780000c90a0c4c706f6c796d6573685f657874656e73696f6e7330636865636b5f7765696768742c436865636b57656967687404045400000400cd0a011443573c543e0000cd0a10306672616d655f73797374656d28657874656e73696f6e7330636865636b5f7765696768742c436865636b57656967687404045400000000d10a086870616c6c65745f7472616e73616374696f6e5f7061796d656e74604368617267655472616e73616374696f6e5061796d656e7404045400000400cd01013042616c616e63654f663c543e0000d50a084870616c6c65745f7065726d697373696f6e734453746f726543616c6c4d6574616461746104045400000000d90a0c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d651c52756e74696d6500000000bc1853797374656d011853797374656d401c4163636f756e7401010402000c4101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e8205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e3845787472696e736963436f756e74000010040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e2c426c6f636b57656967687401001c600000000000000000000000000000000000000000000000000488205468652063757272656e742077656967687420666f722074686520626c6f636b2e40416c6c45787472696e736963734c656e000010040004410120546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e24426c6f636b486173680101040510248000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101040510280400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d6265720100101000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801002480000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e1844696765737401002c040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e7473010048040010a0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e005901204e4f54453a20546869732073746f72616765206974656d206973206578706c696369746c7920756e626f756e6465642073696e6365206974206973206e6576657220696e74656e64656420746f2062652072656164642066726f6d2077697468696e207468652072756e74696d652e284576656e74436f756e74010010100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f70696373010104022469040400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e004d01205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e484c61737452756e74696d655570677261646500006d0404000455012053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e545570677261646564546f553332526566436f756e74010019010400044d012054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e605570677261646564546f547269706c65526566436f756e74010019010400085d012054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e73207468726565207479706573206f662060526566436f756e74602e2046616c736548202864656661756c7429206966206e6f742e38457865637574696f6e506861736500006104040004882054686520657865637574696f6e207068617365206f662074686520626c6f636b2e01790401541830426c6f636b576569676874738904850100c817a80400000000204aa9d10100008036be26000000000180914b872e010000010098f73e5d0100000100000000000000008036be26000000000180199ef1a20100000100204aa9d1010000010088526a740000008036be260000000000000004d020426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e2c426c6f636b4c656e677468950430000078000000a0000000a00004a820546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e38426c6f636b48617368436f756e741010fa000000045501204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e2044625765696768749d044080f0fa020000000000c2eb0b000000000409012054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e1c56657273696f6ea1040d0430706f6c796d6573685f64657630706f6c796d6573685f64657601000000404b4c000000000048df6acb689907609b0300000037e397fc7c91f5e40100000040fe3ad401f8959a05000000d2bc9897eed08f1503000000f78b278be53f454c02000000ed99c5acb25eedf503000000cbca25e39f14238702000000687ad44ad37f03c201000000bc9d89904f5b923f0100000037c8bb1350a9a2a801000000ab3c0572291feb8b0100000018ef58a3b67ba77001000000329342994773047f01000000001a0b29f17d01f401000000f28e8080b6e2dfd002000000bb6ba9053c5c9d78020000009f242c2c886f3fce01000000595ac34c5ea1f5fe01000000020000000484204765742074686520636861696e27732063757272656e742076657273696f6e2e28535335385072656669783d03082a0014a8205468652064657369676e61746564205353383520707265666978206f66207468697320636861696e2e0039012054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e20697331012074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f662069742061737020616e206964656e746966696572206f662074686520636861696e2e01b504001042616265011042616265402845706f6368496e64657801002020000000000000000004542043757272656e742065706f636820696e6465782e2c417574686f7269746965730100b9040400046c2043757272656e742065706f636820617574686f7269746965732e2c47656e65736973536c6f740100c90420000000000000000008f82054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e205468697320697320309020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2c43757272656e74536c6f740100c90420000000000000000004542043757272656e7420736c6f74206e756d6265722e2852616e646f6d6e65737301000480000000000000000000000000000000000000000000000000000000000000000028b8205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e002c20232053656375726974790005012054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061f8206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e7915012063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d6265727320746861742074686973150120286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e206265050120757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e0d01206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e6050656e64696e6745706f6368436f6e6669674368616e67650000cd0404000461012050656e64696e672065706f636820636f6e66696775726174696f6e206368616e676520746861742077696c6c206265206170706c696564207768656e20746865206e6578742065706f636820697320656e61637465642e384e65787452616e646f6d6e657373010004800000000000000000000000000000000000000000000000000000000000000000045c204e6578742065706f63682072616e646f6d6e6573732e3c4e657874417574686f7269746965730100b90404000460204e6578742065706f636820617574686f7269746965732e305365676d656e74496e6465780100101000000000247c2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e00f4205765206d616b6520612074726164656f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e01012057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f942060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e00ec204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e090120576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572791c2065706f63682e44556e646572436f6e737472756374696f6e0101040510d90404000415012054574f582d4e4f54453a20605365676d656e74496e6465786020697320616e20696e6372656173696e6720696e74656765722c20736f2074686973206973206f6b61792e2c496e697469616c697a65640000e10404000801012054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d65601d01206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e4c417574686f7256726652616e646f6d6e6573730100e10404001015012054686973206669656c642073686f756c6420616c7761797320626520706f70756c6174656420647572696e6720626c6f636b2070726f63657373696e6720756e6c6573731901207365636f6e6461727920706c61696e20736c6f74732061726520656e61626c65642028776869636820646f6e277420636f6e7461696e206120565246206f7574707574292e0051012049742069732073657420696e20606f6e5f696e697469616c697a65602c206265666f72652069742077696c6c20636f6e7461696e207468652076616c75652066726f6d20746865206c61737420626c6f636b2e2845706f6368537461727401009d03200000000000000000145d012054686520626c6f636b206e756d62657273207768656e20746865206c61737420616e642063757272656e742065706f6368206861766520737461727465642c20726573706563746976656c7920604e2d316020616e641420604e602e4901204e4f54453a20576520747261636b207468697320697320696e206f7264657220746f20616e6e6f746174652074686520626c6f636b206e756d626572207768656e206120676976656e20706f6f6c206f66590120656e74726f7079207761732066697865642028692e652e20697420776173206b6e6f776e20746f20636861696e206f6273657276657273292e2053696e63652065706f6368732061726520646566696e656420696e590120736c6f74732c207768696368206d617920626520736b69707065642c2074686520626c6f636b206e756d62657273206d6179206e6f74206c696e6520757020776974682074686520736c6f74206e756d626572732e204c6174656e657373010010100000000014d820486f77206c617465207468652063757272656e7420626c6f636b20697320636f6d706172656420746f2069747320706172656e742e001501205468697320656e74727920697320706f70756c617465642061732070617274206f6620626c6f636b20657865637574696f6e20616e6420697320636c65616e65642075701101206f6e20626c6f636b2066696e616c697a6174696f6e2e205175657279696e6720746869732073746f7261676520656e747279206f757473696465206f6620626c6f636bb020657865637574696f6e20636f6e746578742073686f756c6420616c77617973207969656c64207a65726f2e2c45706f6368436f6e6669670000e50404000861012054686520636f6e66696775726174696f6e20666f72207468652063757272656e742065706f63682e2053686f756c64206e6576657220626520604e6f6e656020617320697420697320696e697469616c697a656420696e242067656e657369732e3c4e65787445706f6368436f6e6669670000e5040400082d012054686520636f6e66696775726174696f6e20666f7220746865206e6578742065706f63682c20604e6f6e65602069662074686520636f6e6669672077696c6c206e6f74206368616e6765e82028796f752063616e2066616c6c6261636b20746f206045706f6368436f6e6669676020696e737465616420696e20746861742063617365292e01e904000c3445706f63684475726174696f6e20202c010000000000000cec2054686520616d6f756e74206f662074696d652c20696e20736c6f74732c207468617420656163682065706f63682073686f756c64206c6173742e1901204e4f54453a2043757272656e746c79206974206973206e6f7420706f737369626c6520746f206368616e6765207468652065706f6368206475726174696f6e20616674657221012074686520636861696e2068617320737461727465642e20417474656d7074696e6720746f20646f20736f2077696c6c20627269636b20626c6f636b2070726f64756374696f6e2e444578706563746564426c6f636b54696d652020701700000000000014050120546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e67110120626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f75740501207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f740901206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473a0207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e384d6178417574686f7269746965731010a08601000488204d6178206e756d626572206f6620617574686f72697469657320616c6c6f77656401fd04012454696d657374616d70012454696d657374616d70080c4e6f7701002020000000000000000004902043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e2444696455706461746501001901040004b420446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f0101050004344d696e696d756d506572696f642020b80b000000000000104d0120546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a5d0120706572696f6420746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c5d012067656e6572616c6c7920776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c206265a020646f75626c65207468697320706572696f64206f6e2064656661756c742073657474696e67732e00021c496e6469636573011c496e646963657304204163636f756e7473000104021009050400048820546865206c6f6f6b75702066726f6d20696e64657820746f206163636f756e742e010d050170041c4465706f736974184040420f0000000000000000000000000004ac20546865206465706f736974206e656564656420666f7220726573657276696e6720616e20696e6465782e0111050328417574686f72736869700128417574686f72736869700c18556e636c6573010015050400041c20556e636c657318417574686f720000000400046420417574686f72206f662063757272656e7420626c6f636b2e30446964536574556e636c657301001901040004bc205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e011d05000440556e636c6547656e65726174696f6e731010000000000ccc20546865206e756d626572206f6620626c6f636b73206261636b2077652073686f756c642061636365707420756e636c65732ee42054686973206d65616e7320746861742077652077696c6c206465616c207769746820756e636c652d706172656e7473207468617420617265942060556e636c6547656e65726174696f6e73202b203160206265666f726520606e6f77602e012505042042616c616e636573012042616c616e6365730834546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e144c6f636b7301010402002905040008b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e013505017404484578697374656e7469616c4465706f73697418400000000000000000000000000000000004d420546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e013d0505485472616e73616374696f6e5061796d656e7401485472616e73616374696f6e5061796d656e7408444e6578744665654d756c7469706c6965720100410540000064a7b3b6e00d0000000000000000003853746f7261676556657273696f6e01004505040000000008485472616e73616374696f6e42797465466565184064000000000000000000000000000000040d01205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e2c576569676874546f46656549055c040000000000000000000000000000000049b400000001040d012054686520706f6c796e6f6d69616c2074686174206973206170706c69656420696e206f7264657220746f20646572697665206665652066726f6d207765696768742e0006204964656e7469747901204964656e746974793c284469645265636f726473000104067c51050400045420444944202d3e206964656e7469747920696e666f2c497344696446726f7a656e010104067c1901040004e420444944202d3e20626f6f6c207468617420696e64696361746573206966207365636f6e64617279206b657973206172652066726f7a656e2e2843757272656e7444696400007c040004e02049742073746f726573207468652063757272656e74206964656e7469747920666f722063757272656e74207472616e73616374696f6e2e3043757272656e74506179657200000004000401012049742073746f726573207468652063757272656e74206761732066656520706179657220666f72207468652063757272656e74207472616e73616374696f6e18436c61696d7301010805025505f0c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a04f020285461726765742049442c20636c61696d20747970652920286973737565722c73636f706529202d3e204173736f63696174656420636c61696d73284b65795265636f726473000104050065050400044501204d61702066726f6d204163636f756e74496420746f20604b65795265636f726460207468617420686f6c647320746865206b65792773206964656e7469747920616e64207065726d697373696f6e732e1c4469644b65797301010806056905190104000401012041207265766572736520646f75626c65206d617020746f20616c6c6f772066696e64696e6720616c6c206b65797320666f7220616e206964656e746974792e444d756c7469507572706f73654e6f6e636501002020000000000000000004bc204e6f6e636520746f20656e7375726520756e6971756520616374696f6e732e207374617274732066726f6d20312e684f6666436861696e417574686f72697a6174696f6e4e6f6e6365010104067c2020000000000000000004c820417574686f72697a6174696f6e206e6f6e636520706572204964656e746974792e20496e697469616c6c7920697320302e38417574686f72697a6174696f6e7300010802056d057105040004b020416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792f6b6579206861734c417574686f72697a6174696f6e73476976656e010108060575056d0184000000000000000000000000000000000000000000000000000000000000000000044d0120416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792068617320676976656e2e2028417574686f72697a65722c20617574685f6964202d3e20617574686f72697a6564296c43646441757468466f724d61737465724b6579526f746174696f6e010019010400086501204f62736f6c657465642073746f72616765207661726961626c652073757065726365646564206279206043646441757468466f725072696d6172794b6579526f746174696f6e602e204974206973206b65707420686572659820666f722074686520707572706f7365206f662073746f72616765206d6967726174696f6e2e7043646441757468466f725072696d6172794b6579526f746174696f6e010019010400085d01204120636f6e66696720666c616720746861742c206966207365742c20696e7374727563747320616e20617574686f72697a6174696f6e2066726f6d2061204344442070726f766964657220696e206f7264657220746f9c206368616e676520746865207072696d617279206b6579206f6620616e206964656e746974792e3853746f7261676556657273696f6e01007905040004442053746f726167652076657273696f6e2e484163636f756e744b6579526566436f756e740101040200202000000000000000001cc420486f77206d616e7920227374726f6e6722207265666572656e63657320746f20746865206163636f756e74206b65792e00fc205374726f6e67207265666572656e6365732077696c6c20626c6f636b2061206b65792066726f6d206c656176696e672069742773206964656e746974792e00cc2050616c6c657473207573696e6720227374726f6e6722207265666572656e63657320746f206163636f756e74206b6579733aac202a2052656c617965723a20466f722060757365725f6b65796020616e642060706179696e675f6b65796000017d05018c0430496e697469616c504f4c59581840000000000000000000000000000000000001c905074c4364645365727669636550726f7669646572730138496e7374616e63653247726f75700c344163746976654d656d6265727301002501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100cd05040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01d505011d010001d9050844506f6c796d657368436f6d6d69747465650148496e7374616e636531436f6d6d6974746565242450726f706f73616c7301006504040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001040624dd05040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e6700010406244108040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100250104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401009d03200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201003901040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01004508040004442053746f726167652076657273696f6e2e01e10501290100014908094c436f6d6d69747465654d656d626572736869700138496e7374616e63653147726f75700c344163746976654d656d6265727301002501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100cd05040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01e505013d0100014d080a48546563686e6963616c436f6d6d69747465650148496e7374616e636533436f6d6d6974746565242450726f706f73616c7301006504040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001040624dd05040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e6700010406244108040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100250104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401009d03200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201003901040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01004508040004442053746f726167652076657273696f6e2e01e905014501000151080b70546563686e6963616c436f6d6d69747465654d656d626572736869700138496e7374616e63653347726f75700c344163746976654d656d6265727301002501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100cd05040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01ed05014d01000155080c4055706772616465436f6d6d69747465650148496e7374616e636534436f6d6d6974746565242450726f706f73616c7301006504040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001040624dd05040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e6700010406244108040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100250104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401009d03200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201003901040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01004508040004442053746f726167652076657273696f6e2e01f105015501000159080d6855706772616465436f6d6d69747465654d656d626572736869700138496e7374616e63653447726f75700c344163746976654d656d6265727301002501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100cd05040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01f505015d0100015d080e204d756c746953696701204d756c746953696730344d756c74695369674e6f6e6365010020200000000000000000042101204e6f6e636520746f20656e7375726520756e69717565204d756c746953696720616464726573736573206172652067656e6572617465643b207374617274732066726f6d20312e3c4d756c74695369675369676e657273010108060561086d018400000000000000000000000000000000000000000000000000000000000000000004d4205369676e657273206f662061206d756c74697369672e20286d756c74697369672c207369676e657229203d3e207369676e65722e3c4e756d6265724f665369676e65727301010406002020000000000000000004cc204e756d626572206f6620617070726f7665642f6163636570746564207369676e657273206f662061206d756c74697369672e544d756c74695369675369676e73526571756972656401010406002020000000000000000004e020436f6e6669726d6174696f6e73207265717569726564206265666f72652070726f63657373696e672061206d756c74697369672074782e384d756c74695369675478446f6e65010104060020200000000000000000043501204e756d626572206f66207472616e73616374696f6e732070726f706f73656420696e2061206d756c74697369672e20557365642061732074782069643b207374617274732066726f6d20302e2450726f706f73616c73000104056508dd0504000475012050726f706f73616c732070726573656e74656420666f7220766f74696e6720746f2061206d756c746973696720286d756c74697369672c2070726f706f73616c20696429203d3e204f7074696f6e3c543a3a50726f706f73616c3e2e2c50726f706f73616c4964730001080602690820040004942041206d617070696e67206f662070726f706f73616c7320746f207468656972204944732e14566f746573010104056d081901040004250120496e646976696475616c206d756c7469736967207369676e657220766f7465732e20286d756c7469207369672c207369676e65722c2070726f706f73616c29203d3e20766f74652e484d756c7469536967546f4964656e7469747901010406007c80000000000000000000000000000000000000000000000000000000000000000004a4204d6170732061206d756c7469736967206163636f756e7420746f20697473206964656e746974792e3850726f706f73616c44657461696c01010405650871084c00000000000000000000000000000000000000047c2044657461696c73206f662061206d756c74697369672070726f706f73616c485472616e73616374696f6e56657273696f6e010010100000000004f420546865206c617374207472616e73616374696f6e2076657273696f6e2c207573656420666f7220606f6e5f72756e74696d655f75706772616465602e3853746f7261676556657273696f6e01007908040004442053746f726167652076657273696f6e2e01f90501650100017d080f1842726964676501184272696467652828436f6e74726f6c6c65720100008000000000000000000000000000000000000000000000000000000000000000000c410120546865206d756c7469736967206163636f756e74206f66207468652062726964676520636f6e74726f6c6c65722e205468652067656e65736973207369676e65727320616363657074207468656972450120617574686f72697a6174696f6e7320616e64206172652061626c6520746f206765742074686569722070726f706f73616c732064656c6976657265642e20546865206272696467652063726561746f729c207472616e736665727320736f6d6520504f4c5920746f207468656972206964656e746974792e3c427269646765547844657461696c73010108020281088508d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000859012044657461696c73206f6620627269646765207472616e73616374696f6e73206964656e7469666965642077697468207061697273206f662074686520726563697069656e74206163636f756e7420616e64207468656820627269646765207472616e73616374696f6e206e6f6e63652e1441646d696e010000800000000000000000000000000000000000000000000000000000000000000000043c205468652061646d696e206b65792e1846726f7a656e01001901040004bc2057686574686572206f72206e6f742074686520627269646765206f7065726174696f6e2069732066726f7a656e2e30467265657a6541646d696e7301010402001901040004090120467265657a65206272696467652061646d696e732e20205468657365206163636f756e74732063616e206f6e6c7920667265657a6520746865206272696467652e2054696d656c6f636b0100101000000000083d012054686520627269646765207472616e73616374696f6e2074696d656c6f636b20706572696f642c20696e20626c6f636b732c2073696e63652074686520616363657074616e6365206f66207468653101207472616e73616374696f6e2070726f706f73616c20647572696e67207768696368207468652061646d696e206b65792063616e20667265657a6520746865207472616e73616374696f6e2e2c4272696467654c696d697401008d0850000000000000000000000000000000000000000008290120546865206d6178696d756d206e756d626572206f66206272696467656420504f4c595820706572206964656e746974792077697468696e20612073657420696e74657276616c206f66f820626c6f636b732e204669656c64733a20504f4c595820616d6f756e7420616e642074686520626c6f636b20696e74657276616c206475726174696f6e2e30506f6c797842726964676564010104067c8d0850000000000000000000000000000000000000000008510120416d6f756e74206f6620504f4c5958206272696467656420627920746865206964656e7469747920696e206c61737420626c6f636b20696e74657276616c2e204669656c64733a2074686520627269646765649420616d6f756e7420616e6420746865206c61737420696e74657276616c206e756d6265722e4c4272696467654c696d69744578656d70746564010104057c1901040004c0204964656e746974696573206e6f7420636f6e73747261696e65642062792074686520627269646765206c696d69742e3853746f7261676556657273696f6e01009108040004442053746f726167652076657273696f6e2e01fd0501710100019508101c5374616b696e67011c5374616b696e679c30486973746f7279446570746801001010540000001c8c204e756d626572206f66206572617320746f206b65657020696e20686973746f72792e00390120496e666f726d6174696f6e206973206b65707420666f72206572617320696e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e006101204d757374206265206d6f7265207468616e20746865206e756d626572206f6620657261732064656c617965642062792073657373696f6e206f74686572776973652e20492e652e2061637469766520657261206d757374390120616c7761797320626520696e20686973746f72792e20492e652e20606163746976655f657261203e2063757272656e745f657261202d20686973746f72795f646570746860206d757374206265302067756172616e746565642e3856616c696461746f72436f756e74010010100000000004a82054686520696465616c206e756d626572206f66207374616b696e67207061727469636970616e74732e544d696e696d756d56616c696461746f72436f756e740100101000000000044101204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e34496e76756c6e657261626c65730100ec04000c590120416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e636520746865792772654d01206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f7572ac20696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e18426f6e6465640001040500000400040101204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e184c6564676572000104020099080400044501204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e14506179656501010405001106040004e42057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e2856616c696461746f72730101040500150608000004450120546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e284e6f6d696e61746f72730001040500a508040004650120546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f2074686520736574206f66207374617368206b657973206f6620616c6c2076616c696461746f727320746f206e6f6d696e6174652e2843757272656e744572610000100400105c205468652063757272656e742065726120696e6465782e006501205468697320697320746865206c617465737420706c616e6e6564206572612c20646570656e64696e67206f6e20686f77207468652053657373696f6e2070616c6c657420717565756573207468652076616c696461746f7280207365742c206974206d6967687420626520616374697665206f72206e6f742e244163746976654572610000a908040010d820546865206163746976652065726120696e666f726d6174696f6e2c20697420686f6c647320696e64657820616e642073746172742e0059012054686520616374697665206572612069732074686520657261206265696e672063757272656e746c792072657761726465642e2056616c696461746f7220736574206f66207468697320657261206d757374206265ac20657175616c20746f205b6053657373696f6e496e746572666163653a3a76616c696461746f7273605d2e5445726173537461727453657373696f6e496e6465780001040510100400103101205468652073657373696f6e20696e646578206174207768696368207468652065726120737461727420666f7220746865206c6173742060484953544f52595f44455054486020657261732e006101204e6f74653a205468697320747261636b7320746865207374617274696e672073657373696f6e2028692e652e2073657373696f6e20696e646578207768656e20657261207374617274206265696e672061637469766529f020666f7220746865206572617320696e20605b43757272656e74457261202d20484953544f52595f44455054482c2043757272656e744572615d602e2c457261735374616b6572730101080505ad08c9010c0000001878204578706f73757265206f662076616c696461746f72206174206572612e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e48457261735374616b657273436c69707065640101080505ad08c9010c0000002c9820436c6970706564204578706f73757265206f662076616c696461746f72206174206572612e00590120546869732069732073696d696c617220746f205b60457261735374616b657273605d20627574206e756d626572206f66206e6f6d696e61746f7273206578706f736564206973207265647563656420746f20746865dc2060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732e1d0120284e6f74653a20746865206669656c642060746f74616c6020616e6420606f776e60206f6620746865206578706f737572652072656d61696e7320756e6368616e676564292ef42054686973206973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e005d012054686973206973206b657965642066697374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e484572617356616c696461746f7250726566730101080505ad0815060800001411012053696d696c617220746f2060457261735374616b657273602c207468697320686f6c64732074686520707265666572656e636573206f662076616c696461746f72732e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4c4572617356616c696461746f7252657761726400010405101804000c09012054686520746f74616c2076616c696461746f7220657261207061796f757420666f7220746865206c6173742060484953544f52595f44455054486020657261732e0021012045726173207468617420686176656e27742066696e697368656420796574206f7220686173206265656e2072656d6f76656420646f65736e27742068617665207265776172642e4045726173526577617264506f696e74730101040510b10814000000000008ac205265776172647320666f7220746865206c6173742060484953544f52595f44455054486020657261732e250120496620726577617264206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207265776172642069732072657475726e65642e3845726173546f74616c5374616b65010104051018400000000000000000000000000000000008ec2054686520746f74616c20616d6f756e74207374616b656420666f7220746865206c6173742060484953544f52595f44455054486020657261732e1d0120496620746f74616c206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207374616b652069732072657475726e65642e20466f7263654572610100bd0804000454204d6f6465206f662065726120666f7263696e672e4c536c6173685265776172644672616374696f6e01008d0110000000000cf8205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e00e4205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e4c43616e63656c6564536c6173685061796f757401001840000000000000000000000000000000000815012054686520616d6f756e74206f662063757272656e637920676976656e20746f207265706f7274657273206f66206120736c617368206576656e7420776869636820776173ec2063616e63656c65642062792065787472616f7264696e6172792063697263756d7374616e6365732028652e672e20676f7665726e616e6365292e40556e6170706c696564536c61736865730101040510c108040004c420416c6c20756e6170706c69656420736c61736865732074686174206172652071756575656420666f72206c617465722e28426f6e646564457261730100690404001025012041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e00c8204d75737420636f6e7461696e7320696e666f726d6174696f6e20666f72206572617320666f72207468652072616e67653abc20605b6163746976655f657261202d20626f756e64696e675f6475726174696f6e3b206163746976655f6572615d604c56616c696461746f72536c617368496e4572610001080505ad08d108040008450120416c6c20736c617368696e67206576656e7473206f6e2076616c696461746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682070726f706f7274696f6e7020616e6420736c6173682076616c7565206f6620746865206572612e4c4e6f6d696e61746f72536c617368496e4572610001080505ad0818040004610120416c6c20736c617368696e67206576656e7473206f6e206e6f6d696e61746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682076616c7565206f6620746865206572612e34536c617368696e675370616e730001040500d5080400048c20536c617368696e67207370616e7320666f72207374617368206163636f756e74732e245370616e536c617368010104058108d908800000000000000000000000000000000000000000000000000000000000000000083d01205265636f72647320696e666f726d6174696f6e2061626f757420746865206d6178696d756d20736c617368206f6620612073746173682077697468696e206120736c617368696e67207370616e2cb82061732077656c6c20617320686f77206d7563682072657761726420686173206265656e2070616964206f75742e584561726c69657374556e6170706c696564536c617368000010040004fc20546865206561726c696573742065726120666f72207768696368207765206861766520612070656e64696e672c20756e6170706c69656420736c6173682e48536e617073686f7456616c696461746f72730000ec040008650120536e617073686f74206f662076616c696461746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e48536e617073686f744e6f6d696e61746f72730000ec040008650120536e617073686f74206f66206e6f6d696e61746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e34517565756564456c65637465640000dd0804000c650120546865206e6578742076616c696461746f72207365742e2041742074686520656e64206f6620616e206572612c206966207468697320697320617661696c61626c652028706f74656e7469616c6c792066726f6d20746865610120726573756c74206f6620616e206f6666636861696e20776f726b6572292c20697420697320696d6d6564696174656c7920757365642e204f74686572776973652c20746865206f6e2d636861696e20656c656374696f6e342069732065786563757465642e2c51756575656453636f72650000f906040004b0205468652073636f7265206f66207468652063757272656e74205b60517565756564456c6563746564605d2e44457261456c656374696f6e5374617475730100e108040008490120466c616720746f20636f6e74726f6c2074686520657865637574696f6e206f6620746865206f6666636861696e20656c656374696f6e2e205768656e20604f70656e285f29602c207765206163636570746c20736f6c7574696f6e7320746f206265207375626d69747465642e54497343757272656e7453657373696f6e46696e616c010019010400084d012054727565206966207468652063757272656e74202a2a706c616e6e65642a2a2073657373696f6e2069732066696e616c2e204e6f74652074686174207468697320646f6573206e6f742074616b65206572615820666f7263696e6720696e746f206163636f756e742e505065726d697373696f6e65644964656e74697479000104057ce508040004ec20456e74697469657320746861742061726520616c6c6f77656420746f2072756e206f70657261746f722f76616c696461746f72206e6f6465732e5856616c696461746f72436f6d6d697373696f6e43617001008d0110000000000415012045766572792076616c696461746f722068617320636f6d6d697373696f6e20746861742073686f756c6420626520696e207468652072616e6765205b302c204361705d2e504d696e696d756d426f6e645468726573686f6c64010018400000000000000000000000000000000004d020546865206d696e696d756d20616d6f756e74207769746820776869636820612076616c696461746f722063616e20626f6e642e48536c617368696e67416c6c6f776564466f72010091010402003853746f7261676556657273696f6e0100e908040610cc2054727565206966206e6574776f726b20686173206265656e20757067726164656420746f20746869732076657273696f6e2e7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e00a020546869732069732073657420746f2076362e302e3120666f72206e6577206e6574776f726b732e010d060185012c3853657373696f6e735065724572611010030000000470204e756d626572206f662073657373696f6e7320706572206572612e3c426f6e64696e674475726174696f6e10100700000004e4204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e48536c61736844656665724475726174696f6e101004000000140101204e756d626572206f662065726173207468617420736c6173686573206172652064656665727265642062792c20616674657220636f6d7075746174696f6e2e00bc20546869732073686f756c64206265206c657373207468616e2074686520626f6e64696e67206475726174696f6e2e2d012053657420746f203020696620736c61736865732073686f756c64206265206170706c69656420696d6d6564696174656c792c20776974686f7574206f70706f7274756e69747920666f723820696e74657276656e74696f6e2e44456c656374696f6e4c6f6f6b616865616410104b0000001c710120546865206e756d626572206f6620626c6f636b73206265666f72652074686520656e64206f6620746865206572612066726f6d20776869636820656c656374696f6e207375626d697373696f6e732061726520616c6c6f7765642e006d012053657474696e67207468697320746f207a65726f2077696c6c2064697361626c6520746865206f6666636861696e20636f6d7075746520616e64206f6e6c79206f6e2d636861696e207365712d70687261676d656e2077696c6c2420626520757365642e007501205468697320697320626f756e646564206279206265696e672077697468696e20746865206c6173742073657373696f6e2e2048656e63652c2073657474696e6720697420746f20612076616c7565206d6f7265207468616e207468659c206c656e677468206f6620612073657373696f6e2077696c6c20626520706f696e746c6573732e344d6178497465726174696f6e7310100a0000000c2901204d6178696d756d206e756d626572206f662062616c616e63696e6720697465726174696f6e7320746f2072756e20696e20746865206f6666636861696e207375626d697373696f6e2e00ec2049662073657420746f20302c2062616c616e63655f736f6c7574696f6e2077696c6c206e6f7420626520657865637574656420617420616c6c2e504d696e536f6c7574696f6e53636f726542756d708d011020a1070004610120546865207468726573686f6c64206f6620696d70726f76656d656e7420746861742073686f756c642062652070726f766964656420666f722061206e657720736f6c7574696f6e20746f2062652061636365707465642e804d61784e6f6d696e61746f72526577617264656450657256616c696461746f7210100008000010f820546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320726577617264656420666f7220656163682076616c696461746f722e00690120466f7220656163682076616c696461746f72206f6e6c79207468652060244d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732063616e20636c61696d2101207468656972207265776172642e2054686973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e5c4d617856616c696461746f725065724964656e746974797d0210100905000cf4204d6178696d756d206e756d626572206f662076616c696461746f727320666f722065616368207065726d697373696f6e6564206964656e746974792e005901204d6178206e756d626572206f662076616c696461746f727320636f756e74203d20604d617856616c696461746f725065724964656e74697479202a2053656c663a3a76616c696461746f725f636f756e742829602e844d61785661726961626c65496e666c6174696f6e546f74616c49737375616e636518400080c6a47e8d03000000000000000000047101204d6178696d756d20616d6f756e74206f662060543a3a63757272656e63793a3a746f74616c5f69737375616e63652829602061667465722074686174206e6f6e2d696e666c6174656420726577617264732067657420706169642e444669786564596561726c79526577617264184000c0444a547f0000000000000000000004010120546f74616c2079656172207265776172647320746861742067657473207061696420647572696e6720666978656420726577617264207363686564756c652e2c4d696e696d756d426f6e64184040420f0000000000000000000000000004f0204d696e696d756d20616d6f756e74206f6620504f4c59582074686174206d75737420626520626f6e64656420666f722061206e657720626f6e642e01ed0811204f6666656e63657301204f6666656e6365730c1c5265706f7274730001040524f108040004490120546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e58436f6e63757272656e745265706f727473496e6465780101080505f50865040400042901204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e485265706f72747342794b696e64496e64657801010405990128040018110120456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e00bc20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e004901204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f66690120646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e000195010000121c53657373696f6e011c53657373696f6e1c2856616c696461746f72730100ec0400047c205468652063757272656e7420736574206f662076616c696461746f72732e3043757272656e74496e646578010010100000000004782043757272656e7420696e646578206f66207468652073657373696f6e2e345175657565644368616e67656401001901040008390120547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f7273a420686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e285175657565644b6579730100f9080400083d012054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b657973e02077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e4844697361626c656456616c696461746f7273010039040400148020496e6469636573206f662064697361626c65642076616c696461746f72732e003d01205468652076656320697320616c77617973206b65707420736f7274656420736f20746861742077652063616e2066696e642077686574686572206120676976656e2076616c696461746f722069733d012064697361626c6564207573696e672062696e617279207365617263682e204974206765747320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e73642061206e657720736574206f66206964656e7469746965732e204e6578744b657973000104050005070400049c20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e204b65794f776e657200010405010900040004090120546865206f776e6572206f662061206b65792e20546865206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e010107019d01000109091348417574686f72697479446973636f766572790000000000141c4772616e647061011c4772616e6470611814537461746501000d0904000490205374617465206f66207468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e676500001109040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000010040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c656400009d030400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e3043757272656e745365744964010020200000000000000000085d0120546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c697469657329c420696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e30536574496453657373696f6e00010405201004001059012041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e00b82054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e010d0701a10104384d6178417574686f7269746965731010a0860100045c204d617820417574686f72697469657320696e207573650119091528486973746f726963616c00000000001620496d4f6e6c696e650120496d4f6e6c696e651038486561727462656174416674657201001010000000002c1d012054686520626c6f636b206e756d6265722061667465722077686963682069742773206f6b20746f2073656e64206865617274626561747320696e207468652063757272656e74242073657373696f6e2e0025012041742074686520626567696e6e696e67206f6620656163682073657373696f6e20776520736574207468697320746f20612076616c756520746861742073686f756c642066616c6c350120726f7567686c7920696e20746865206d6964646c65206f66207468652073657373696f6e206475726174696f6e2e20546865206964656120697320746f206669727374207761697420666f721901207468652076616c696461746f727320746f2070726f64756365206120626c6f636b20696e207468652063757272656e742073657373696f6e2c20736f207468617420746865a820686561727462656174206c61746572206f6e2077696c6c206e6f74206265206e65636573736172792e00390120546869732076616c75652077696c6c206f6e6c79206265207573656420617320612066616c6c6261636b206966207765206661696c20746f2067657420612070726f7065722073657373696f6e2d012070726f677265737320657374696d6174652066726f6d20604e65787453657373696f6e526f746174696f6e602c2061732074686f736520657374696d617465732073686f756c642062650101206d6f7265206163637572617465207468656e207468652076616c75652077652063616c63756c61746520666f7220604865617274626561744166746572602e104b65797301001d09040004d0205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e4852656365697665644865617274626561747300010805059d0325090400083d0120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206053657373696f6e496e6465786020616e64206041757468496e6465786020746fb02060577261707065724f70617175653c426f756e6465644f70617175654e6574776f726b53746174653e602e38417574686f726564426c6f636b730101080505ad0810100000000008150120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206056616c696461746f7249643c543e6020746f20746865c8206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e01390701b5010440556e7369676e65645072696f726974792020ffffffffffffffff10f0204120636f6e66696775726174696f6e20666f722062617365207072696f72697479206f6620756e7369676e6564207472616e73616374696f6e732e0015012054686973206973206578706f73656420736f20746861742069742063616e2062652074756e656420666f7220706172746963756c61722072756e74696d652c207768656eb4206d756c7469706c652070616c6c6574732073656e6420756e7369676e6564207472616e73616374696f6e732e013909176052616e646f6d6e657373436f6c6c656374697665466c6970016052616e646f6d6e657373436f6c6c656374697665466c6970043852616e646f6d4d6174657269616c0100650404000c610120536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e2054686973610120697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f664420746865206f6c6465737420686173682e0000000018105375646f01105375646f040c4b657901000080000000000000000000000000000000000000000000000000000000000000000004842054686520604163636f756e74496460206f6620746865207375646f206b65792e01590701d90100013d0919144173736574011441737365747c1c5469636b65727301010402a04109840000000000000000000000000000000000000000000000000000000000000000000874205469636b657220726567697374726174696f6e2064657461696c732e7c20287469636b657229202d3e205469636b6572526567697374726174696f6e305469636b6572436f6e666967010075070800000870205469636b657220726567697374726174696f6e20636f6e6669672e9420287469636b657229202d3e205469636b6572526567697374726174696f6e436f6e66696718546f6b656e7301010402a04509c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008e02044657461696c73206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e050120287469636b657229202d3e205365637572697479546f6b656e2064657461696c73205b72657475726e73205365637572697479546f6b656e207374727563745d2841737365744e616d657301010402a0fd01040008ec204173736574206e616d65206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e6020287469636b657229202d3e206041737365744e616d65602442616c616e63654f660101080206490918400000000000000000000000000000000008b42054686520746f74616c206173736574207469636b65722062616c616e636520706572206964656e746974792e6420287469636b65722c2044494429202d3e2042616c616e63652c4964656e7469666965727301010402a0ed01040004b82041206d6170206f662061207469636b6572206e616d6520616e64206173736574206964656e746966696572732e50437573746f6d54797065496453657175656e63650100e90110000000000cc420546865206e65787420604173736574547970653a3a437573746f6d6020494420696e207468652073657175656e63652e00d0204e756d6265727320696e207468652073657175656e63652073746172742066726f6d203120726174686572207468616e20302e2c437573746f6d547970657301010405e90128040004f8204d61707320637573746f6d20617373657420747970652069647320746f20746865207265676973746572656420737472696e6720636f6e74656e74732e48437573746f6d5479706573496e76657273650101040228e901100000000004610120496e7665727365206d6170206f662060437573746f6d5479706573602c2066726f6d207265676973746572656420737472696e6720636f6e74656e747320746f20637573746f6d2061737365742074797065206964732e3046756e64696e67526f756e6401010402a0e1010400089c20546865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e60207469636b6572202d3e2066756e64696e6720726f756e6450497373756564496e46756e64696e67526f756e64010104024d091840000000000000000000000000000000000811012054686520746f74616c2062616c616e636573206f6620746f6b656e732069737375656420696e20616c6c207265636f726465642066756e64696e6720726f756e64732e8c20287469636b65722c2066756e64696e6720726f756e6429202d3e2062616c616e63651846726f7a656e01010402a01901040008e82054686520736574206f662066726f7a656e2061737365747320696d706c656d656e7465642061732061206d656d62657273686970206d61702e3c207469636b6572202d3e20626f6f6c5c41737365744f776e65727368697052656c6174696f6e7301010806025109550904000888205469636b65727320616e6420746f6b656e206f776e656420627920612075736572842028757365722c207469636b657229202d3e2041737365744f776e657273686970384173736574446f63756d656e7473010108020559090502140000000000087c20446f63756d656e747320617474616368656420746f20616e2041737365747420287469636b65722c20646f635f696429202d3e20646f63756d656e74604173736574446f63756d656e7473496453657175656e636501010402a0010210000000000880205065722d7469636b657220646f63756d656e7420494420636f756e7465722e4c20287469636b657229202d3e20646f635f696438436c61737369635469636b65727300010402a05d09040004f0205469636b657220726567697374726174696f6e2064657461696c73206f6e20506f6c796d61746820436c6173736963202f20457468657265756d2e4042616c616e63654f66417453636f7065010108060661091840000000000000000000000000000000000ccc2042616c616e636573206765742073746f726564206f6e20746865206261736973206f6620746865206053636f70654964602e9d01205269676874206e6f77206974206973206f6e6c792068656c7066756c20666f722074686520554920707572706f7365732062757420696e206675747572652069742063616e206265207573656420746f20646f206d697261636c6573206f6e2d636861696e2e88202853636f706549642c204964656e74697479496429203d3e2042616c616e63652e4041676772656761746542616c616e6365010108020649091840000000000000000000000000000000000825012053746f7265206167677265676174652062616c616e6365206f662074686f7365206964656e746974696573207468617420686173207468652073616d65206053636f70654964602e7820285469636b65722c2053636f7065496429203d3e2042616c616e63652e2453636f706549644f66010108020649097c80000000000000000000000000000000000000000000000000000000000000000008dc20547261636b73207468652053636f70654964206f6620746865206964656e7469747920666f72206120676976656e207469636b65722e8420285469636b65722c204964656e74697479496429203d3e2053636f706549642e6444697361626c65496e766573746f72556e697175656e65737301010402a0190104001031012044656369646573207768657468657220696e766573746f7220756e697175656e65737320726571756972656d656e7420697320656e666f7263656420666f7220746869732061737365742e8c206066616c736560206d65616e73207468617420697420697320656e666f726365642e0040205469636b6572203d3e20626f6f6c2e4c41737365744d6574616461746156616c7565730001080205650935020400047c204d65746174646174612076616c75657320666f7220616e2061737365742e6441737365744d6574616461746156616c756544657461696c73000108020565093d02040004a02044657461696c7320666f7220616e2061737365742773204d657461646174612076616c7565732e6c41737365744d657461646174614c6f63616c4e616d65546f4b657900010802026909490204000488204173736574204d65746164617461204c6f63616c204e616d65202d3e204b65792e7041737365744d65746164617461476c6f62616c4e616d65546f4b657900010402450265020400048c204173736574204d6574616461746120476c6f62616c204e616d65202d3e204b65792e6c41737365744d657461646174614c6f63616c4b6579546f4e616d6500010802056d09450204000488204173736574204d65746164617461204c6f63616c204b6579202d3e204e616d652e7041737365744d65746164617461476c6f62616c4b6579546f4e616d6500010405650245020400048c204173736574204d6574616461746120476c6f62616c204b6579202d3e204e616d652e5c41737365744d657461646174614c6f63616c537065637300010802056d094d0204000480204173736574204d65746164617461204c6f63616c204b65792073706563732e6041737365744d65746164617461476c6f62616c53706563730001040565024d0204000484204173736574204d6574616461746120476c6f62616c204b65792073706563732e6441737365744d657461646174614e6578744c6f63616c4b657901010402a04902200000000000000000047c204e657874204173736574204d65746164617461204c6f63616c204b65792e6841737365744d657461646174614e657874476c6f62616c4b6579010065022000000000000000000480204e657874204173736574204d6574616461746120476c6f62616c204b65792e3853746f7261676556657273696f6e01007109040004442053746f726167652076657273696f6e2e015d0701dd0118784d61784e756d6265724f66544d457874656e73696f6e466f724173736574101005000000004841737365744e616d654d61784c656e677468101080000000006446756e64696e67526f756e644e616d654d61784c656e677468101080000000006841737365744d657461646174614e616d654d61784c656e677468101000010000006c41737365744d6574616461746156616c75654d61784c656e677468101000200000007441737365744d65746164617461547970654465664d61784c656e677468101000200000000175091a4c4361706974616c446973747269627574696f6e014c4361706974616c446973747269627574696f6e0c34446973747269627574696f6e73000104027102790204000c350120416c6c206361706974616c20646973747269627574696f6e732c207469656420746f207468656972207265737065637469766520636f72706f7261746520616374696f6e732028434173292e005c20284341496429203d3e20446973747269627574696f6e28486f6c64657250616964010104027909190104000c8c2048617320616e20617373657420686f6c646572206265656e2070616964207965743f00a42028434149642c2044494429202d3e2057617320444944207061696420696e2074686520434149643f3853746f7261676556657273696f6e01007d09040004442053746f726167652076657273696f6e2e017d07016902000181091b28436865636b706f696e740128436865636b706f696e742c2c546f74616c537570706c79010108020585091840000000000000000000000000000000000cb420546f74616c20737570706c79206f662074686520746f6b656e2061742074686520636865636b706f696e742e00ec20287469636b65722c20636865636b706f696e74496429202d3e20746f74616c20737570706c7920617420676976656e20636865636b706f696e741c42616c616e6365010108020589091840000000000000000000000000000000000c882042616c616e6365206f66206120444944206174206120636865636b706f696e742e00050120287469636b65722c206469642c20636865636b706f696e7420494429202d3e2042616c616e6365206f66206120444944206174206120636865636b706f696e7450436865636b706f696e74496453657175656e636501010402a08902200000000000000000108c20436865636b706f696e74732049442067656e657261746f722073657175656e63652ea8204944206f6620666972737420636865636b706f696e74206973203120696e7374656164206f6620302e007c20287469636b657229202d3e206e6f2e206f6620636865636b706f696e74733842616c616e636555706461746573010108020549098d09040008bc20436865636b706f696e747320776865726520612044494427732062616c616e63652077617320757064617465642ef020287469636b65722c2064696429202d3e205b636865636b706f696e7420494420776865726520757365722062616c616e6365206368616e6765645d2854696d657374616d70730101080205850920200000000000000000185c20436865636b706f696e742074696d657374616d70732e000901204576657279207363686564756c652d6f726967696e6174656420636865636b706f696e74206d6170732069747320494420746f20697473206475652074696d652e210120457665727920636865636b706f696e74206d616e75616c6c792063726561746564206d6170732069747320494420746f207468652074696d65206f66207265636f7264696e672e00d020287469636b657229202d3e2028636865636b706f696e7420494429202d3e20636865636b706f696e742074696d657374616d70585363686564756c65734d6178436f6d706c657869747901002020000000000000000008190120546865206d6178696d756d20636f6d706c657869747920616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365749c2028692e652e20605363686564756c6573602073746f72616765206974656d2062656c6f77292e485363686564756c65496453657175656e636501010402a09d022000000000000000000cb420436865636b706f696e74207363686564756c652049442073657175656e636520666f72207469636b6572732e006020287469636b657229202d3e207363686564756c65204944245363686564756c657301010402a0910904000c8820436865636b706f696e74207363686564756c657320666f72207469636b6572732e005c20287469636b657229202d3e205b7363686564756c655d405363686564756c65526566436f756e740101080205950910100000000020010120486f77206d616e7920227374726f6e6722207265666572656e6365732061726520746865726520746f206120676976656e20605363686564756c654964603f00fc205468652070726573656e6365206f66206120227374726f6e6722207265666572656e63652c20696e207468652073656e7365206f66206052633c543e602ce020656e7461696c73207468617420746865207265666572656e636564207363686564756c652063616e6e6f742062652072656d6f7665642ed820546875732c206173206c6f6e6720617320607374726f6e675f7265665f636f756e74287363686564756c655f696429203e2030602cac206072656d6f76655f7363686564756c65287363686564756c655f696429602077696c6c206572726f722e00a820287469636b65722c207363686564756c6520494429202d3e207374726f6e672072656620636f756e74385363686564756c65506f696e7473010108020595098d0904000cc420416c6c2074686520636865636b706f696e7473206120676976656e207363686564756c65206f726967696e617465642e00a420287469636b65722c207363686564756c6520494429202d3e205b636865636b706f696e742049445d3853746f7261676556657273696f6e01009909040004442053746f726167652076657273696f6e2e01850701810200019d091c44436f6d706c69616e63654d616e616765720144436f6d706c69616e63654d616e616765720c404173736574436f6d706c69616e63657301010402a0a10908000004e820417373657420636f6d706c69616e636520666f722061207469636b657220285469636b6572202d3e204173736574436f6d706c69616e6365294854727573746564436c61696d49737375657201010402a0bd02040004dc204c697374206f66207472757374656420636c61696d20697373756572205469636b6572202d3e20497373756572204964656e746974793853746f7261676556657273696f6e0100a509040004442053746f726167652076657273696f6e2e018d0701a10204584d6178436f6e646974696f6e436f6d706c65786974791010320000000001a9091d3c436f72706f72617465416374696f6e013c436f72706f72617465416374696f6e24404d617844657461696c734c656e67746801001010000000001c5d012044657465726d696e657320746865206d6178696d756d206e756d626572206f6620627974657320746861742074686520667265652d666f726d206064657461696c7360206f6620612043412063616e2073746f72652e002901204e6f746520746861742074686973206973206e6f7420746865206e756d626572206f662060636861726073206f7220746865206e756d626572206f66205b6772617068656d65735d2e4101205768696c652074686973206d617920626520756e6e61747572616c20696e207465726d73206f662068756d616e20756e6465727374616e64696e67206f66206120746578742773206c656e6774682c6501206974206d6f726520636c6f73656c79207265666c656374732061637475616c2073746f7261676520636f73747320286027612760206973206368656170657220746f2073746f7265207468616e20616e20656d6f6a69292e00d0205b6772617068656d65735d3a2068747470733a2f2f656e2e77696b6970656469612e6f72672f77696b692f4772617068656d655c44656661756c745461726765744964656e74697469657301010402a0d90208000110f020546865206964656e7469746965732074617267657465642062792064656661756c7420666f722043417320666f722074686973207469636b65722c8c2065697468657220746f206265206578636c75646564206f7220696e636c756465642e007820287469636b6572203d3e20746172676574206964656e746974696573295444656661756c7457697468686f6c64696e6754617801010402a07d02100000000020ad01205468652064656661756c7420616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722074686973207469636b6572207768656e20646973747269627574696e67206469766964656e64732e00350120546f20756e6465727374616e642077697468686f6c64696e67207461782c20652e672e2c206c6574277320617373756d65207468617420796f7520686f6c642041434d45207368617265732ec42041434d45206e6f77206465636964657320746f2064697374726962757465203130302053454b20746f20416c6963652e590120416c696365206c6976657320696e2053776564656e2c20736f20536b617474657665726b6574202874686520537765646973682074617820617574686f72697479292077616e747320333025206f6620746861742e5d01205468656e2074686f736520313030202a2033302520617265207769746868656c642066726f6d20416c6963652c20616e642041434d452077696c6c2073656e64207468656d20746f20536b617474657665726b65742e006820287469636b6572203d3e202520746f2077697468686f6c64294444696457697468686f6c64696e6754617801010402a0f90204001049012054686520616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722061206365727461696e207469636b65722078204449442e6d0120496620616e20656e7472792065786973747320666f722061206365727461696e204449442c206974206f7665727269646573207468652064656661756c7420696e206044656661756c7457697468686f6c64696e67546178602e008820287469636b6572203d3e205b286469642c202520746f2077697468686f6c64295d304341496453657175656e636501010402a07502100000000008b420546865206e657874207065722d605469636b65726020434120494420696e207468652073657175656e63652e4d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652e40436f72706f72617465416374696f6e730001080205ad09e5020400146c20416c6c207265636f72646564204341732074687573206661722ea4204f6e6c792067656e6572696320696e666f726d6174696f6e2069732073746f72656420686572652e7d01205370656369666963206043414b696e6460732c20652e672e2c2062656e656669747320616e6420636f72706f726174652062616c6c6f74732c206d617920757365206164646974696f6e616c206f6e2d636861696e2073746f726167652e00b420287469636b6572203d3e206c6f63616c204944203d3e2074686520636f72706f7261746520616374696f6e29244341446f634c696e6b0101040271020503040014d0204173736f63696174696f6e732066726f6d2043417320746f2060446f63756d656e74607320766961207468656972204944732e5c202843414964203d3e205b446f63756d656e7449645d29000501205468652060436f72706f72617465416374696f6e7360206d61702073746f72657320605469636b6572203d3e204c6f63616c4964203d3e20546865204341602c250120736f2077652063616e20696e66657220605469636b6572203d3e2043414964602e205468657265666f72652c20776520646f6e2774206e656564206120646f75626c65206d61702e1c44657461696c730101040271020103040008e8204173736f6369617465732064657461696c7320696e20667265652d666f726d207465787420776974682061204341206279206974732049442e50202843414964203d3e20434144657461696c73293853746f7261676556657273696f6e0100b109040004442053746f726167652076657273696f6e2e01910701d50208304d61785461726765744964731010e803000000284d6178446964576874731010e80300000001b5091e3c436f72706f7261746542616c6c6f74013c436f72706f7261746542616c6c6f7418144d65746173000104027102110304000c80204d65746164617461206f66206120636f72706f726174652062616c6c6f742e005420284341496429203d3e2042616c6c6f744d6574612854696d6552616e6765730001040271020d03040010e42054696d652064657461696c73206f66206120636f72706f726174652062616c6c6f74206173736f636961746564207769746820612043412ed0205468652074696d657374616d70732064656e6f7465207768656e20766f74696e672073746172747320616e642073746f70732e006820284341496429203d3e2042616c6c6f7454696d6552616e6765404d6f74696f6e4e756d43686f696365730101040271022906040024c82053746f72657320686f77206d616e792063686f696365732074686572652061726520696e2065616368206d6f74696f6e2e00250120417420616c6c2074696d65732c2074686520696e76617269616e7420686f6c6473207468617420606d6f74696f6e5f63686f696365735b6964785d6020697320657175616c20746f310120606d657461732e756e7772617028292e6d6f74696f6e735b6964785d2e63686f696365732e6c656e2829602e20546861742069732c2074686973206973206a75737420612063616368652c1101207573656420746f2061766f6964206665746368696e6720616c6c20746865206d6f74696f6e732077697468207468656972206173736f6369617465642074657874732e0001012060753136602063686f696365732073686f756c64206265206d6f7265207468616e20656e6f75676820746f20666974207265616c207573652063617365732e00b020284341496429203d3e204e756d626572206f662063686f6963657320696e2065616368206d6f74696f6e2e0c5243560101040271021901040010dc2049732072616e6b65642063686f69636520766f74696e6720285243562920656e61626c656420666f7220746869732062616c6c6f743f650120466f7220616e20756e6465727374616e64696e67206f6620686f77205243562069732068616e646c65642c20736565206e6f7465206f6e206042616c6c6f74566f7465602773206066616c6c6261636b60206669656c642e003c20284341496429203d3e20626f6f6c1c526573756c7473010104027102b90904001cb02053746f7265732074686520746f74616c20766f74652074616c6c79206f6e20656163682063686f6963652e006820524356206973206e6f74206163636f756e74656420666f722cd02061732074686572652061726520746f6f206d616e792077616e747320746f20696e74657270726574207468652067726170682c9c20616e64206265636175736520697420776f756c64206e6f7420626520656666696369656e742e008420284341496429203d3e205b63757272656e7420766f746520776569676874735d14566f746573010108020679093103040018ac2053746f726573206561636820444944277320766f74657320696e206120676976656e2062616c6c6f742ef8205365652074686520646f63756d656e746174696f6e206f66206042616c6c6f74566f74656020666f72206e6f746573206f6e2073656d616e746963732e008420284341496429203d3e202844494429203d3e205b766f7465207765696768745d001d012055736572206d75737420656e746572203020766f746520776569676874206966207468657920646f6e27742077616e7420746f20766f746520666f7220612063686f6963652e01a9070109030001bd091f2c5065726d697373696f6e730000000001c109201050697073011050697073544c5072756e65486973746f726963616c5069707301001901040004fc2044657465726d696e6573207768657468657220686973746f726963616c20504950206461746120697320706572736973746564206f722072656d6f766564584d696e696d756d50726f706f73616c4465706f7369740100184000000000000000000000000000000000041d0120546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f7220636f6d6d756e69747920504950206372656174696f6e2e5844656661756c74456e6163746d656e74506572696f6401001010000000000439012044656661756c7420656e6163746d656e7420706572696f6420746861742077696c6c2062652075736520616674657220612070726f706f73616c2069732061636365707465642062792047432e4050656e64696e6750697045787069727901003901040108f420486f77206d616e7920626c6f636b732077696c6c2069742074616b652c2061667465722061206050656e64696e67602050495020657870697265732cf420617373756d696e6720697420686173206e6f74207472616e736974696f6e656420746f20616e6f74686572206050726f706f73616c5374617465603f3c4d6178506970536b6970436f756e740100080400048901204d6178696d756d2074696d65732061205049502063616e20626520736b6970706564206265666f72652074726967676572696e67206043616e6e6f74536b69705069706020696e2060656e6163745f736e617073686f745f726573756c7473602e384163746976655069704c696d6974010010100000000008c420546865206d6178696d756d20616c6c6f776564206e756d62657220666f722060416374697665506970436f756e74602e0101204f6e636520726561636865642c206e657720504950732063616e6e6f742062652070726f706f73656420627920636f6d6d756e697479206d656d626572732e34506970496453657175656e636501004d0310000000000409012050726f706f73616c7320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f662050495073206f66662d636861696e2e48536e617073686f74496453657175656e6365010061031000000000041d0120536e617073686f747320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f6620736e617073686f7473206f66662d636861696e2e38416374697665506970436f756e74010010100000000004c820546f74616c20636f756e74206f662063757272656e742070656e64696e67206f72207363686564756c656420504950732e4050726f706f73616c4d65746164617461000104054d03c5090400049820546865206d65746164617461206f6620746865206163746976652070726f706f73616c732e204465706f736974730101080505c909cd09c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008842054686f73652077686f2068617665206c6f636b65642061206465706f7369742e8c2070726f706f73616c202869642c2070726f706f73657229202d3e206465706f7369742450726f706f73616c73000104054d03d109040008c42041637475616c2070726f706f73616c20666f72206120676976656e2069642c20696620697427732063757272656e742e602070726f706f73616c206964202d3e2070726f706f73616c3850726f706f73616c526573756c74010104054d03d509a00000000000000000000000000000000000000000000000000000000000000000000000000000000008d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e682070726f706f73616c206964202d3e20766f746520636f756e743450726f706f73616c566f7465730001080505c909d909040008050120566f746573207065722050726f706f73616c20616e64206163636f756e742e205573656420746f2061766f696420646f75626c6520766f74652069737375652e7c202870726f706f73616c2069642c206163636f756e7429202d3e20566f746534506970546f5363686564756c65000104054d0310040004fc204d617073205049507320746f2074686520626c6f636b20617420776869636820746865792077696c6c2062652065786563757465642c20696620616e792e244c697665517565756501006503040018cc2041206c697665207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029a0206f662070656e64696e67205049507320757020746f2074686520616374697665206c696d69742ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e00450120556e6c696b652060536e617073686f745175657565602c2074686973207175657565206973206c6976652c2067657474696e6720757064617465642077697468206561636820766f746520636173742e2d012054686520736e617073686f74206973207468657265666f726520657373656e7469616c6c79206120706f696e742d696e2d74696d6520636c6f6e65206f6620746869732071756575652e34536e617073686f74517565756501006503040014590120546865207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029206f6620504950732061742074686520706f696e74206f6620736e617073686f7474696e672ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e000901204120717565756564205049502063616e20626520736b69707065642e20446f696e6720736f2062756d70732074686520607069705f736b69705f636f756e74602e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e30536e617073686f744d6574610000dd09040004bc20546865206d65746164617461206f662074686520736e617073686f742c206966207468657265206973206f6e652e30506970536b6970436f756e74010104054d0308040008d020546865206e756d626572206f662074696d65732061206365727461696e2050495020686173206265656e20736b69707065642e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e34436f6d6d69747465655069707301007d03040008d420416c6c206578697374696e672050495073207768657265207468652070726f706f736572206973206120636f6d6d69747465652e39012054686973206c6973742069732061206361636865206f6620616c6c2069647320696e206050726f706f73616c73602077697468206050726f706f7365723a3a436f6d6d6974746565285f29602e3853746f7261676556657273696f6e0100e10904000001ad070141030001e5092124506f7274666f6c696f0124506f7274666f6c696f244c4e657874506f7274666f6c696f4e756d626572010104067ce020010000000000000004cc20546865206e65787420706f7274666f6c696f2073657175656e6365206e756d626572206f6620616e206964656e746974792e28506f7274666f6c696f730101080605e909850304000c41012054686520736574206f66206578697374696e6720706f7274666f6c696f732077697468207468656972206e616d65732e2049662061206365727461696e2070616972206f6620612044494420616e64590120706f7274666f6c696f206e756d626572206d61707320746f20604e6f6e6560207468656e2073756368206120706f7274666f6c696f20646f65736e27742065786973742e20436f6e76657273656c792c206966206135012070616972206d61707320746f2060536f6d65286e616d652960207468656e2073756368206120706f7274666f6c696f2065786973747320616e642069732063616c6c656420606e616d65602e304e616d65546f4e756d6265720101080602ed09e020010000000000000008e420496e7665727365206d6170206f662060506f7274666f6c696f7360207573656420746f20656e737572652062696a6563746976697469792ca420616e6420756e697175656e657373206f66206e616d657320696e2060506f7274666f6c696f73602e4c506f7274666f6c696f4173736574436f756e7401010405d82020000000000000000004fc20486f77206d616e79206173736574732077697468206e6f6e2d7a65726f2062616c616e6365207468697320706f7274666f6c696f20636f6e7461696e732e58506f7274666f6c696f417373657442616c616e6365730101080502f1091840000000000000000000000000000000000488205468652061737365742062616c616e636573206f6620706f7274666f6c696f732e54506f7274666f6c696f4c6f636b65644173736574730101080502f10918400000000000000000000000000000000008a020416d6f756e74206f6620617373657473206c6f636b656420696e206120706f7274666f6c696f2e2d01205468657365206173736574732073686f7720757020696e20706f7274666f6c696f2062616c616e6365206275742063616e206e6f74206265207472616e7366657272656420617761792e48506f7274666f6c696f437573746f6469616e00010405d87c04000481012054686520637573746f6469616e206f66206120706172746963756c617220706f7274666f6c696f2e204e6f6e6520696d706c696573207468617420746865206964656e74697479206f776e65722069732074686520637573746f6469616e2e4c506f7274666f6c696f73496e437573746f64790101080605f509190104000c550120547261636b7320616c6c2074686520706f7274666f6c696f7320696e20637573746f6479206f66206120706172746963756c6172206964656e746974792e204f6e6c79207573656420627920746865205549732ea501205768656e206074727565602069732073746f726564206173207468652076616c756520666f72206120676976656e2060286469642c2070696429602c206974206d65616e73207468617420607069646020697320696e20637573746f6479206f662060646964602ea501206066616c7365602076616c75657320617265206e65766572206578706c696369746c792073746f72656420696e20746865206d61702c20616e642061726520696e737465616420696e6665727265642062792074686520616273656e6365206f662061206b65792e3853746f7261676556657273696f6e0100f909040004442053746f726167652076657273696f6e2e01bd070181030001fd09222c50726f746f636f6c466565012c50726f746f636f6c4665650820426173654665657301010405cd0718400000000000000000000000000000000004150120546865206d617070696e67206f66206f7065726174696f6e206e616d657320746f2074686520626173652066656573206f662074686f7365206f7065726174696f6e732e2c436f656666696369656e7401009503200100000001000000041501205468652066656520636f656666696369656e74206173206120706f73697469766520726174696f6e616c20286e756d657261746f722c2064656e6f6d696e61746f72292e01c9070191030001010a23245363686564756c657201245363686564756c65720c184167656e64610101040510050a0400044d01204974656d7320746f2062652065786563757465642c20696e64657865642062792074686520626c6f636b206e756d626572207468617420746865792073686f756c64206265206578656375746564206f6e2e184c6f6f6b757000010405289d030400040101204c6f6f6b75702066726f6d206964656e7469747920746f2074686520626c6f636b206e756d62657220616e6420696e646578206f6620746865207461736b2e3853746f7261676556657273696f6e0100290a04000c7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e0098204e6577206e6574776f726b732073746172742077697468206c6173742076657273696f6e2e01d10701990308344d6178696d756d576569676874202000806e877401000008450120546865206d6178696d756d207765696768742074686174206d6179206265207363686564756c65642070657220626c6f636b20666f7220616e7920646973706174636861626c6573206f66206c657373a4207072696f72697479207468616e20607363686564756c653a3a484152445f444541444c494e45602e504d61785363686564756c6564506572426c6f636b101032000000081d0120546865206d6178696d756d206e756d626572206f66207363686564756c65642063616c6c7320696e2074686520717565756520666f7220612073696e676c6520626c6f636b2edc204e6f74207374726963746c7920656e666f726365642c20627574207573656420666f722077656967687420657374696d6174696f6e2e012d0a2428536574746c656d656e740128536574746c656d656e74442456656e7565496e666f00010405a503310a0400049820496e666f2061626f757420612076656e75652e2076656e75655f6964202d3e2076656e75651c44657461696c7301010405a503a903040008e420467265652d666f726d20746578742061626f757420612076656e75652e2076656e75655f6964202d3e206056656e756544657461696c736060204f6e6c79206e656564656420666f72207468652055492e4456656e7565496e737472756374696f6e730101080505350a350100107020496e737472756374696f6e7320756e64657220612076656e75652e60204f6e6c79206e656564656420666f72207468652055492e00842076656e75655f6964202d3e20696e737472756374696f6e5f6964202d3e2028293056656e75655369676e6572730101080505390a1901040004e4205369676e65727320616c6c6f776564206279207468652076656e75652e202876656e75655f69642c207369676e657229202d3e20626f6f6c285573657256656e756573010104057cc9030400047101204172726179206f662076656e756573206372656174656420627920616e206964656e746974792e204f6e6c79206e656564656420666f72207468652055492e204964656e746974794964202d3e205665633c76656e75655f69643e48496e737472756374696f6e44657461696c7301010405b1033d0a540000000000000000000000000000000000000000000411012044657461696c732061626f757420616e20696e737472756374696f6e2e20696e737472756374696f6e5f6964202d3e20696e737472756374696f6e5f64657461696c733c496e737472756374696f6e4c6567730101080505450abd0379010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ec204c65677320756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656750496e737472756374696f6e4c65675374617475730101080505450a490a040004310120537461747573206f662061206c656720756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656753746174757364496e737472756374696f6e41666669726d7350656e64696e6701010405b10320200000000000000000048101204e756d626572206f662061666669726d6174696f6e732070656e64696e67206265666f726520696e737472756374696f6e2069732065786563757465642e20696e737472756374696f6e5f6964202d3e2061666669726d5f70656e64696e673c41666669726d73526563656976656401010805054d0a510a040004990120547261636b732061666669726d6174696f6e7320726563656976656420666f7220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c20636f756e7465725f706172747929202d3e2041666669726d6174696f6e537461747573405573657241666669726d6174696f6e730101080505550a510a04000855012048656c70732061207573657220747261636b2074686569722070656e64696e6720696e737472756374696f6e7320616e642061666669726d6174696f6e7320286f6e6c79206e656564656420666f72205549292ed42028636f756e7465725f70617274792c20696e737472756374696f6e5f696429202d3e2041666669726d6174696f6e53746174757330526563656970747355736564010108050265081901040004150120547261636b7320726564656d7074696f6e206f662072656365697074732e20287369676e65722c20726563656970745f75696429202d3e20726563656970745f757365643856656e756546696c746572696e6701010402a01901040004fd0120547261636b73206966206120746f6b656e2068617320656e61626c65642066696c746572696e672076656e75657320746861742063616e2063726561746520696e737472756374696f6e7320696e766f6c76696e6720746865697220746f6b656e2e205469636b6572202d3e2066696c746572696e675f656e61626c65643856656e7565416c6c6f774c6973740101080205590a1901040008c5012056656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c6172207469636b65722e204f6e6c7920757365642069662066696c746572696e6720697320656e61626c65642e7820287469636b65722c2076656e75655f696429202d3e20616c6c6f7765643056656e7565436f756e7465720100a503200000000000000000041901204e756d626572206f662076656e75657320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d6265722948496e737472756374696f6e436f756e7465720100b103200000000000000000043101204e756d626572206f6620696e737472756374696f6e7320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d626572293853746f7261676556657273696f6e01005d0a040004442053746f726167652076657273696f6e2e01d90701a1030001610a25285374617469737469637301285374617469737469637314404163746976654173736574537461747301010402d103f107040004d1012041637469766520737461747320666f722061207469636b65722f636f6d70616e792e202054686572652073686f756c642062652061206d6178206c696d6974206f6e20746865206e756d626572206f662061637469766520737461747320666f722061207469636b65722f636f6d70616e792e28417373657453746174730101080202650a18400000000000000000000000000000000004342041737365742073746174732e6041737365745472616e73666572436f6d706c69616e63657301010402d1036d0a080000043d01204173736574207472616e7366657220636f6d706c69616e636520666f722061207469636b65722028417373657453636f7065202d3e2041737365745472616e73666572436f6d706c69616e6365297c5472616e73666572436f6e646974696f6e4578656d7074456e7469746965730101080202710a1901040004c420456e746974696573206578656d70742066726f6d2061205472616e7366657220436f6d706c69616e63652072756c652e3853746f7261676556657273696f6e0100750a0400046c2053746f72616765206d6967726174696f6e2076657273696f6e2e01ed0701cd0308404d61785374617473506572417373657410100a00000000744d61785472616e73666572436f6e646974696f6e7350657241737365741010040000000001790a260c53746f010c53746f0c2c46756e647261697365727300010802057d0a2104040008b020416c6c2066756e64726169736572732074686174206172652063757272656e746c792072756e6e696e672e9820287469636b65722c2066756e647261697365725f696429202d3e2046756e647261697365723c46756e64726169736572436f756e7401010402a01904200000000000000000049c20546f74616c2066756e6472616973657273206372656174656420666f72206120746f6b656e2e3c46756e647261697365724e616d657301010802057d0a1d04040008b4204e616d6520666f72207468652046756e647261697365722e204f6e6c792075736564206f6666636861696e2eac20287469636b65722c2066756e647261697365725f696429202d3e2046756e64726169736572206e616d650101080115040001810a27205472656173757279000111080131040001850a281c5574696c697479011c5574696c69747904184e6f6e63657301010405002020000000000000000000011d080135040001890a2910426173650001290801450404184d61784c656e10100008000000018d0a2a3845787465726e616c4167656e7473013845787465726e616c4167656e747314304147496453657175656e636501010402a01501100000000010b420546865206e657874207065722d605469636b65726020414720494420696e207468652073657175656e63652e004d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652c90207768696368207374617274732066726f6d20312c20726174686572207468616e20302e1c4167656e744f6601010802025109350100042901204d61707320616e206167656e742028604964656e746974794964602920746f20616c6c20616c6c20605469636b6572607320746865792062656c6f6e6720746f2c20696620616e792e3047726f75704f664167656e740001080205490911010400043501204d617073206167656e74732028604964656e746974794964602920666f72206120605469636b65726020746f207768617420414720746865792062656c6f6e6720746f2c20696620616e792e344e756d46756c6c4167656e747301010402a010100000000004dc204d617073206120605469636b65726020746f20746865206e756d626572206f66206046756c6c60206167656e747320666f722069742e4047726f75705065726d697373696f6e730001080205910ab00400045d0120466f7220637573746f6d20414773206f66206120605469636b6572602c206d61707320746f2077686174207065726d697373696f6e7320616e206167656e7420696e207468617420414720776f756c6420686176652e012d08014d040001950a2b1c52656c61796572011c52656c6179657204245375627369646965730001040200990a040018ec20546865207375627369647920666f7220612060757365725f6b657960206966207468657920617265206265696e6720737562736964697365642c882061732061206d61702060757365725f6b657960203d3e206053756273696479602e0009012041206b65792063616e206f6e6c792068617665206f6e65207375627369647920617420612074696d652e2020546f206368616e67652073756273696469736572731d012061206b6579206e6565647320746f2063616c6c206072656d6f76655f706179696e675f6b65796020746f2072656d6f7665207468652063757272656e7420737562736964792ca4206265666f726520746865792063616e206163636570742061206e657720737562736964697365722e01310801510400019d0a2c1c52657761726473011c52657761726473042849746e52657761726473000104020039080400040101204d6170206f66202849746e204164647265737320604163636f756e7449646029202d3e2028526577617264206049746e52657761726453746174757360292e0135080155040001a10a2d24546573745574696c730124546573745574696c7300013d080159040001a50a32a90a042040436865636b5370656356657273696f6eb10a1038436865636b547856657273696f6eb50a1030436865636b47656e65736973b90a2438436865636b4d6f7274616c697479bd0a2428436865636b4e6f6e6365c50a35012c436865636b576569676874c90a3501604368617267655472616e73616374696f6e5061796d656e74d10a35014453746f726543616c6c4d65746164617461d50a3501d90a","id":"1"} diff --git a/scripts/cli/src/interfaces/augment-api-errors.ts b/scripts/cli/src/interfaces/augment-api-errors.ts index b9678a0241..774aa11e01 100644 --- a/scripts/cli/src/interfaces/augment-api-errors.ts +++ b/scripts/cli/src/interfaces/augment-api-errors.ts @@ -915,6 +915,10 @@ declare module '@polkadot/api-base/types/errors' { * Multisig is not attached to an identity **/ MultisigMissingIdentity: AugmentedError; + /** + * Multisig not allowed to add itself as a signer. + **/ + MultisigNotAllowedToLinkToItself: AugmentedError; /** * A nonce overflow. **/ @@ -967,10 +971,6 @@ declare module '@polkadot/api-base/types/errors' { * Signer is an account key that is already associated with a multisig. **/ SignerAlreadyLinkedToMultisig: AugmentedError; - /** - * Signer is the multisig. The multisig account can't be a signer to itself. - **/ - SignerSameAsMultisig: AugmentedError; /** * More signers than required. **/ @@ -1777,6 +1777,10 @@ declare module '@polkadot/api-base/types/errors' { * Proposer's balance is too low. **/ InsufficientBalance: AugmentedError; + /** + * Invalid identity for disbursement. + **/ + InvalidIdentity: AugmentedError; /** * Generic error **/ diff --git a/scripts/cli/src/interfaces/augment-api-events.ts b/scripts/cli/src/interfaces/augment-api-events.ts index ef674f4c8f..aeccdac07f 100644 --- a/scripts/cli/src/interfaces/augment-api-events.ts +++ b/scripts/cli/src/interfaces/augment-api-events.ts @@ -1540,11 +1540,20 @@ declare module '@polkadot/api-base/types/events' { treasury: { /** * Disbursement to a target Identity. - * (target identity, amount) + * + * (treasury identity, target identity, target primary key, amount) **/ - TreasuryDisbursement: AugmentedEvent; + TreasuryDisbursement: AugmentedEvent; + /** + * Disbursement to a target Identity failed. + * + * (treasury identity, target identity, target primary key, amount) + **/ + TreasuryDisbursementFailed: AugmentedEvent; /** * Treasury reimbursement. + * + * (source identity, amount) **/ TreasuryReimbursement: AugmentedEvent; /** diff --git a/scripts/cli/src/interfaces/augment-api-tx.ts b/scripts/cli/src/interfaces/augment-api-tx.ts index 25c945ba68..565c86c8f0 100644 --- a/scripts/cli/src/interfaces/augment-api-tx.ts +++ b/scripts/cli/src/interfaces/augment-api-tx.ts @@ -5,7 +5,7 @@ import type { ApiTypes } from '@polkadot/api-base/types'; import type { Bytes, Compact, Option, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec'; import type { AnyNumber, ITuple } from '@polkadot/types-codec/types'; import type { AccountId32, Call, H256, MultiAddress, Perbill, Percent, Permill } from '@polkadot/types/interfaces/runtime'; -import type { BTreeSetIdentityId, BTreeSetStatType, BTreeSetStatUpdate, BTreeSetTransferCondition, ConfidentialIdentityClaimProofsScopeClaimProof, PalletAssetCheckpointScheduleSpec, PalletAssetClassicTickerImport, PalletAssetTickerRegistrationConfig, PalletBridgeBridgeTx, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsCaId, PalletCorporateActionsCaKind, PalletCorporateActionsInitiateCorporateActionArgs, PalletCorporateActionsRecordDateSpec, PalletCorporateActionsTargetIdentities, PalletImOnlineHeartbeat, PalletImOnlineSr25519AppSr25519Signature, PalletPipsSnapshotResult, PalletPortfolioMovePortfolioItem, PalletRewardsItnRewardStatus, PalletSettlementLeg, PalletSettlementReceiptDetails, PalletSettlementSettlementType, PalletSettlementVenueType, PalletStakingCompactAssignments, PalletStakingElectionSize, PalletStakingRewardDestination, PalletStakingSlashingSwitch, PalletStakingValidatorPrefs, PalletStoPriceTier, PalletUtilityUniqueCall, PolymeshCommonUtilitiesBalancesMemo, PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth, PolymeshCommonUtilitiesMaybeBlock, PolymeshCommonUtilitiesProtocolFeeProtocolOp, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetAssetType, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAssetMetadataAssetMetadataKey, PolymeshPrimitivesAssetMetadataAssetMetadataSpec, PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail, PolymeshPrimitivesAuthorizationAuthorizationData, PolymeshPrimitivesBeneficiary, PolymeshPrimitivesCddIdInvestorUid, PolymeshPrimitivesComplianceManagerComplianceRequirement, PolymeshPrimitivesCondition, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesEthereumEcdsaSignature, PolymeshPrimitivesIdentityClaimClaim, PolymeshPrimitivesIdentityClaimClaimType, PolymeshPrimitivesIdentityClaimScope, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKey, PolymeshPrimitivesSecondaryKeyPermissions, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesStatisticsAssetScope, PolymeshPrimitivesStatisticsStatType, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesTicker, PolymeshPrimitivesTransferComplianceTransferConditionExemptKey, PolymeshRuntimeDevelopRuntimeSessionKeys, SpConsensusBabeDigestsNextConfigDescriptor, SpConsensusSlotsEquivocationProof, SpCoreChangesTrieChangesTrieConfiguration, SpFinalityGrandpaEquivocationProof, SpRuntimeHeader, SpRuntimeMultiSignature, SpSessionMembershipProof } from '@polkadot/types/lookup'; +import type { BTreeSetIdentityId, BTreeSetStatType, BTreeSetStatUpdate, BTreeSetTransferCondition, ConfidentialIdentityClaimProofsScopeClaimProof, PalletAssetCheckpointScheduleSpec, PalletAssetClassicTickerImport, PalletAssetTickerRegistrationConfig, PalletBridgeBridgeTx, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsCaId, PalletCorporateActionsCaKind, PalletCorporateActionsInitiateCorporateActionArgs, PalletCorporateActionsRecordDateSpec, PalletCorporateActionsTargetIdentities, PalletImOnlineHeartbeat, PalletImOnlineSr25519AppSr25519Signature, PalletPipsSnapshotResult, PalletPortfolioMovePortfolioItem, PalletRewardsItnRewardStatus, PalletSettlementLeg, PalletSettlementReceiptDetails, PalletSettlementSettlementType, PalletSettlementVenueType, PalletStakingCompactAssignments, PalletStakingElectionSize, PalletStakingRewardDestination, PalletStakingSlashingSwitch, PalletStakingValidatorPrefs, PalletStoPriceTier, PalletUtilityUniqueCall, PolymeshCommonUtilitiesBalancesMemo, PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth, PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuthV1, PolymeshCommonUtilitiesMaybeBlock, PolymeshCommonUtilitiesProtocolFeeProtocolOp, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetAssetType, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAssetMetadataAssetMetadataKey, PolymeshPrimitivesAssetMetadataAssetMetadataSpec, PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail, PolymeshPrimitivesAuthorizationAuthorizationData, PolymeshPrimitivesBeneficiary, PolymeshPrimitivesCddIdInvestorUid, PolymeshPrimitivesComplianceManagerComplianceRequirement, PolymeshPrimitivesCondition, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesEthereumEcdsaSignature, PolymeshPrimitivesIdentityClaimClaim, PolymeshPrimitivesIdentityClaimClaimType, PolymeshPrimitivesIdentityClaimScope, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKey, PolymeshPrimitivesSecondaryKeyPermissions, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesStatisticsAssetScope, PolymeshPrimitivesStatisticsStatType, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesTicker, PolymeshPrimitivesTransferComplianceTransferConditionExemptKey, PolymeshRuntimeDevelopRuntimeSessionKeys, SpConsensusBabeDigestsNextConfigDescriptor, SpConsensusSlotsEquivocationProof, SpCoreChangesTrieChangesTrieConfiguration, SpFinalityGrandpaEquivocationProof, SpRuntimeHeader, SpRuntimeMultiSignature, SpSessionMembershipProof } from '@polkadot/types/lookup'; declare module '@polkadot/api-base/types/submittable' { export interface AugmentedSubmittables { @@ -101,11 +101,11 @@ declare module '@polkadot/api-base/types/submittable' { * ## Permissions * * Portfolio **/ - createAsset: AugmentedSubmittable<(name: Bytes | string | Uint8Array, ticker: PolymeshPrimitivesTicker | string | Uint8Array, divisible: bool | boolean | Uint8Array, assetType: PolymeshPrimitivesAssetAssetType | { EquityCommon: any } | { EquityPreferred: any } | { Commodity: any } | { FixedIncome: any } | { REIT: any } | { Fund: any } | { RevenueShareAgreement: any } | { StructuredProduct: any } | { Derivative: any } | { Custom: any } | { StableCoin: any } | string | Uint8Array, identifiers: Vec | (PolymeshPrimitivesAssetIdentifier | { CUSIP: any } | { CINS: any } | { ISIN: any } | { LEI: any } | string | Uint8Array)[], fundingRound: Option | null | object | string | Uint8Array, disableIu: bool | boolean | Uint8Array) => SubmittableExtrinsic, [Bytes, PolymeshPrimitivesTicker, bool, PolymeshPrimitivesAssetAssetType, Vec, Option, bool]>; + createAsset: AugmentedSubmittable<(name: Bytes | string | Uint8Array, ticker: PolymeshPrimitivesTicker | string | Uint8Array, divisible: bool | boolean | Uint8Array, assetType: PolymeshPrimitivesAssetAssetType | { EquityCommon: any } | { EquityPreferred: any } | { Commodity: any } | { FixedIncome: any } | { REIT: any } | { Fund: any } | { RevenueShareAgreement: any } | { StructuredProduct: any } | { Derivative: any } | { Custom: any } | { StableCoin: any } | string | Uint8Array, identifiers: Vec | (PolymeshPrimitivesAssetIdentifier | { CUSIP: any } | { CINS: any } | { ISIN: any } | { LEI: any } | { FIGI: any } | string | Uint8Array)[], fundingRound: Option | null | object | string | Uint8Array, disableIu: bool | boolean | Uint8Array) => SubmittableExtrinsic, [Bytes, PolymeshPrimitivesTicker, bool, PolymeshPrimitivesAssetAssetType, Vec, Option, bool]>; /** * Utility extrinsic to batch `create_asset` and `register_custom_asset_type`. **/ - createAssetWithCustomType: AugmentedSubmittable<(name: Bytes | string | Uint8Array, ticker: PolymeshPrimitivesTicker | string | Uint8Array, divisible: bool | boolean | Uint8Array, customAssetType: Bytes | string | Uint8Array, identifiers: Vec | (PolymeshPrimitivesAssetIdentifier | { CUSIP: any } | { CINS: any } | { ISIN: any } | { LEI: any } | string | Uint8Array)[], fundingRound: Option | null | object | string | Uint8Array, disableIu: bool | boolean | Uint8Array) => SubmittableExtrinsic, [Bytes, PolymeshPrimitivesTicker, bool, Bytes, Vec, Option, bool]>; + createAssetWithCustomType: AugmentedSubmittable<(name: Bytes | string | Uint8Array, ticker: PolymeshPrimitivesTicker | string | Uint8Array, divisible: bool | boolean | Uint8Array, customAssetType: Bytes | string | Uint8Array, identifiers: Vec | (PolymeshPrimitivesAssetIdentifier | { CUSIP: any } | { CINS: any } | { ISIN: any } | { LEI: any } | { FIGI: any } | string | Uint8Array)[], fundingRound: Option | null | object | string | Uint8Array, disableIu: bool | boolean | Uint8Array) => SubmittableExtrinsic, [Bytes, PolymeshPrimitivesTicker, bool, Bytes, Vec, Option, bool]>; /** * Freezes transfers and minting of a given token. * @@ -372,7 +372,7 @@ declare module '@polkadot/api-base/types/submittable' { * # Permissions * * Asset **/ - updateIdentifiers: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, identifiers: Vec | (PolymeshPrimitivesAssetIdentifier | { CUSIP: any } | { CINS: any } | { ISIN: any } | { LEI: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, Vec]>; + updateIdentifiers: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, identifiers: Vec | (PolymeshPrimitivesAssetIdentifier | { CUSIP: any } | { CINS: any } | { ISIN: any } | { LEI: any } | { FIGI: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, Vec]>; /** * Generic tx **/ @@ -1636,6 +1636,10 @@ declare module '@polkadot/api-base/types/submittable' { * - Keys should be able to linked to any identity. **/ addSecondaryKeysWithAuthorization: AugmentedSubmittable<(additionalKeys: Vec | (PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth | { secondaryKey?: any; authSignature?: any } | string | Uint8Array)[], expiresAt: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Vec, u64]>; + /** + * Deprecated. Please use `add_secondary_keys_with_authorization` instead. + **/ + addSecondaryKeysWithAuthorizationOld: AugmentedSubmittable<(additionalKeys: Vec | (PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuthV1 | { secondaryKey?: any; authSignature?: any } | string | Uint8Array)[], expiresAt: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Vec, u64]>; /** * Register `target_account` with a new Identity. * @@ -1688,6 +1692,10 @@ declare module '@polkadot/api-base/types/submittable' { * Leave the secondary key's identity. **/ leaveIdentityAsKey: AugmentedSubmittable<() => SubmittableExtrinsic, []>; + /** + * Placeholder for removed `legacy_set_permission_to_signer`. + **/ + placeholderLegacySetPermissionToSigner: AugmentedSubmittable<() => SubmittableExtrinsic, []>; /** * Removes an authorization. * _auth_issuer_pays determines whether the issuer of the authorisation pays the transaction fee @@ -1698,11 +1706,12 @@ declare module '@polkadot/api-base/types/submittable' { * * # Failure * It can only called by primary key owner. - * - * # Weight - * `950_000_000 + 60_000 * keys_to_remove.len()` **/ removeSecondaryKeys: AugmentedSubmittable<(keysToRemove: Vec | (AccountId32 | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; + /** + * Deprecated. Please use `remove_secondary_keys` instead. + **/ + removeSecondaryKeysOld: AugmentedSubmittable<(keysToRemove: Vec | (PolymeshPrimitivesSecondaryKeySignatory | { Identity: any } | { Account: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** * Marks the specified claim as revoked. **/ @@ -1735,6 +1744,10 @@ declare module '@polkadot/api-base/types/submittable' { * * `cdd_auth_id` Authorization from a CDD service provider **/ rotatePrimaryKeyToSecondary: AugmentedSubmittable<(authId: u64 | AnyNumber | Uint8Array, optionalCddAuthId: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [u64, Option]>; + /** + * Deprecated. Please use `set_secondary_key_permissions` instead. + **/ + setPermissionToSigner: AugmentedSubmittable<(key: PolymeshPrimitivesSecondaryKeySignatory | { Identity: any } | { Account: any } | string | Uint8Array, perms: PolymeshPrimitivesSecondaryKeyPermissions | { asset?: any; extrinsic?: any; portfolio?: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesSecondaryKeyPermissions]>; /** * Sets permissions for an specific `target_key` key. * @@ -3910,6 +3923,7 @@ declare module '@polkadot/api-base/types/submittable' { * # Error * * `BadOrigin`: Only root can execute transaction. * * `InsufficientBalance`: If treasury balances is not enough to cover all beneficiaries. + * * `InvalidIdentity`: If one of the beneficiaries has an invalid identity. **/ disbursement: AugmentedSubmittable<(beneficiaries: Vec | (PolymeshPrimitivesBeneficiary | { id?: any; amount?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** diff --git a/scripts/cli/src/interfaces/augment-types.ts b/scripts/cli/src/interfaces/augment-types.ts index e5bf3ba6c5..14294b8ca4 100644 --- a/scripts/cli/src/interfaces/augment-types.ts +++ b/scripts/cli/src/interfaces/augment-types.ts @@ -59,7 +59,7 @@ import type { ClassDetails, ClassId, ClassMetadata, DepositBalance, DepositBalan import type { Multisig, Timepoint } from '@polkadot/types/interfaces/utility'; import type { VestingInfo } from '@polkadot/types/interfaces/vesting'; import type { AssetInstance, AssetInstanceV0, AssetInstanceV1, AssetInstanceV2, BodyId, BodyPart, DoubleEncodedCall, Fungibility, FungibilityV0, FungibilityV1, FungibilityV2, InboundStatus, InstructionV2, InteriorMultiLocation, Junction, JunctionV0, JunctionV1, JunctionV2, Junctions, JunctionsV1, JunctionsV2, MultiAsset, MultiAssetFilter, MultiAssetFilterV1, MultiAssetFilterV2, MultiAssetV0, MultiAssetV1, MultiAssetV2, MultiAssets, MultiAssetsV1, MultiAssetsV2, MultiLocation, MultiLocationV0, MultiLocationV1, MultiLocationV2, NetworkId, OriginKindV0, OriginKindV1, OriginKindV2, OutboundStatus, Outcome, QueryId, QueryStatus, QueueConfigData, Response, ResponseV0, ResponseV1, ResponseV2, ResponseV2Error, ResponseV2Result, VersionMigrationStage, VersionedMultiAsset, VersionedMultiAssets, VersionedMultiLocation, VersionedResponse, VersionedXcm, WeightLimitV2, WildFungibility, WildFungibilityV0, WildFungibilityV1, WildFungibilityV2, WildMultiAsset, WildMultiAssetV1, WildMultiAssetV2, Xcm, XcmAssetId, XcmError, XcmErrorV0, XcmErrorV1, XcmErrorV2, XcmOrder, XcmOrderV0, XcmOrderV1, XcmOrderV2, XcmOrigin, XcmOriginKind, XcmV0, XcmV1, XcmV2, XcmVersion, XcmpMessageFormat } from '@polkadot/types/interfaces/xcm'; -import type { AGId, AffirmationStatus, AgentGroup, AssetCompliance, AssetComplianceResult, AssetDidResult, AssetIdentifier, AssetName, AssetOwnershipRelation, AssetPermissions, AssetType, Authorization, AuthorizationData, AuthorizationNonce, AuthorizationType, BallotMeta, BallotTimeRange, BallotTitle, BallotVote, Beneficiary, BridgeTx, BridgeTxDetail, BridgeTxStatus, CACheckpoint, CADetails, CAId, CAKind, CalendarPeriod, CalendarUnit, CanTransferResult, CappedFee, CddId, CddStatus, CheckpointId, CheckpointSchedule, ChoiceTitle, Claim, Claim1stKey, Claim2ndKey, ClaimType, ClassicTickerImport, ClassicTickerRegistration, Committee, ComplianceRequirement, ComplianceRequirementResult, Condition, ConditionResult, ConditionType, CorporateAction, Counter, CountryCode, CustomAssetTypeId, DepositInfo, DidRecord, DidRecords, DidRecordsSuccess, DidStatus, DispatchableName, DispatchableNames, Distribution, Document, DocumentHash, DocumentId, DocumentName, DocumentType, DocumentUri, ErrorAt, EventCounts, EventDid, ExtVersion, ExtensionAttributes, ExtrinsicPermissions, FundingRoundName, Fundraiser, FundraiserId, FundraiserName, FundraiserStatus, FundraiserTier, GranularCanTransferResult, HandledTxStatus, IdentityClaim, IdentityId, IdentityRole, InactiveMember, Instruction, InstructionId, InstructionStatus, InvestorUid, InvestorZKProofData, ItnRewardStatus, KeyIdentityData, Leg, LegId, LegStatus, LegacyPalletPermissions, LegacyPermissions, LocalCAId, MaybeBlock, Memo, MetaDescription, MetaUrl, MetaVersion, Motion, MotionInfoLink, MotionTitle, MovePortfolioItem, OffChainSignature, PalletName, PalletPermissions, Percentage, PermissionedIdentityPrefs, Permissions, Pip, PipDescription, PipId, PipsMetadata, PolymeshVotes, PortfolioId, PortfolioKind, PortfolioName, PortfolioNumber, PortfolioPermissions, PortfolioValidityResult, PosRatio, PreAuthorizedKeyInfo, PriceTier, ProposalData, ProposalDetails, ProposalState, ProposalStatus, Proposer, ProtocolOp, Receipt, ReceiptDetails, ReceiptMetadata, RecordDate, RecordDateSpec, RestrictionResult, RistrettoPoint, Scalar, ScheduleId, ScheduleSpec, Scope, ScopeClaimProof, ScopeId, SecondaryKey, SecondaryKeyWithAuth, SecurityToken, SettlementType, Signatory, SkippedCount, SlashingSwitch, SmartExtension, SmartExtensionName, SmartExtensionType, SnapshotId, SnapshotMetadata, SnapshotResult, SnapshottedPip, StoredSchedule, Subsidy, TargetIdAuthorization, TargetIdentities, TargetIdentity, TargetTreatment, Tax, TemplateDetails, TemplateMetadata, Ticker, TickerRegistration, TickerRegistrationConfig, TransferManager, TransferManagerResult, TrustedFor, TrustedIssuer, UniqueCall, Url, Venue, VenueDetails, VenueId, VenueType, Version, VoteByPip, VoteCount, VoteCountProposalFound, VotingResult, ZkProofData } from 'polymesh-typegen/interfaces/default'; +import type { AGId, AffirmationStatus, AgentGroup, AssetCompliance, AssetComplianceResult, AssetDidResult, AssetIdentifier, AssetMetadataDescription, AssetMetadataGlobalKey, AssetMetadataKey, AssetMetadataLocalKey, AssetMetadataLockStatus, AssetMetadataName, AssetMetadataSpec, AssetMetadataValue, AssetMetadataValueDetail, AssetName, AssetOwnershipRelation, AssetPermissions, AssetScope, AssetTransferCompliance, AssetType, Authorization, AuthorizationData, AuthorizationNonce, AuthorizationType, BallotMeta, BallotTimeRange, BallotTitle, BallotVote, Beneficiary, BridgeTx, BridgeTxDetail, BridgeTxStatus, CACheckpoint, CADetails, CAId, CAKind, CalendarPeriod, CalendarUnit, CanTransferResult, CappedFee, CddId, CddStatus, CheckpointId, CheckpointSchedule, ChoiceTitle, Claim, Claim1stKey, Claim2ndKey, ClaimType, ClassicTickerImport, ClassicTickerRegistration, Committee, ComplianceRequirement, ComplianceRequirementResult, CompressedRistretto, Condition, ConditionResult, ConditionType, CorporateAction, CountryCode, CustomAssetTypeId, DepositInfo, DidRecord, DidStatus, DispatchableName, DispatchableNames, Distribution, Document, DocumentHash, DocumentId, DocumentName, DocumentType, DocumentUri, ErrorAt, EventCounts, EventDid, ExtVersion, ExtensionAttributes, ExtrinsicPermissions, FundingRoundName, Fundraiser, FundraiserId, FundraiserName, FundraiserStatus, FundraiserTier, GranularCanTransferResult, HandledTxStatus, IdentityClaim, IdentityId, IdentityRole, InactiveMember, Instruction, InstructionId, InstructionStatus, InvestorUid, InvestorZKProofData, ItnRewardStatus, KeyIdentityData, KeyRecord, Leg, LegId, LegStatus, LocalCAId, MaybeBlock, Memo, MetaDescription, MetaUrl, MetaVersion, Motion, MotionInfoLink, MotionTitle, MovePortfolioItem, OffChainSignature, PalletName, PalletPermissions, Percentage, PermissionedIdentityPrefs, Permissions, Pip, PipDescription, PipId, PipsMetadata, PolymeshVotes, PortfolioId, PortfolioKind, PortfolioName, PortfolioNumber, PortfolioPermissions, PortfolioValidityResult, PosRatio, PreAuthorizedKeyInfo, PriceTier, ProposalData, ProposalDetails, ProposalState, ProposalStatus, Proposer, ProtocolOp, Receipt, ReceiptDetails, ReceiptMetadata, RecordDate, RecordDateSpec, RestrictionResult, RistrettoPoint, RpcDidRecords, RpcDidRecordsSuccess, Scalar, ScheduleId, ScheduleSpec, Scope, ScopeClaimProof, ScopeId, SecondaryKey, SecondaryKeyWithAuth, SecurityToken, SettlementType, Signatory, SkippedCount, SlashingSwitch, SmartExtension, SmartExtensionName, SmartExtensionType, SnapshotId, SnapshotMetadata, SnapshotResult, SnapshottedPip, Stat1stKey, Stat2ndKey, StatClaim, StatOpType, StatType, StatUpdate, StoredSchedule, Subsidy, TargetIdAuthorization, TargetIdentities, TargetIdentity, TargetTreatment, Tax, TemplateDetails, TemplateMetadata, Ticker, TickerRegistration, TickerRegistrationConfig, TransferCondition, TransferConditionExemptKey, TransferConditionResult, TrustedFor, TrustedIssuer, UniqueCall, Url, Venue, VenueDetails, VenueId, VenueType, Version, VoteByPip, VoteCount, VoteCountProposalFound, VotingResult, ZkProofData } from 'polymesh-typegen/interfaces/default'; declare module '@polkadot/types/types/registry' { export interface InterfaceTypes { @@ -115,10 +115,21 @@ declare module '@polkadot/types/types/registry' { AssetInstanceV1: AssetInstanceV1; AssetInstanceV2: AssetInstanceV2; AssetMetadata: AssetMetadata; + AssetMetadataDescription: AssetMetadataDescription; + AssetMetadataGlobalKey: AssetMetadataGlobalKey; + AssetMetadataKey: AssetMetadataKey; + AssetMetadataLocalKey: AssetMetadataLocalKey; + AssetMetadataLockStatus: AssetMetadataLockStatus; + AssetMetadataName: AssetMetadataName; + AssetMetadataSpec: AssetMetadataSpec; + AssetMetadataValue: AssetMetadataValue; + AssetMetadataValueDetail: AssetMetadataValueDetail; AssetName: AssetName; AssetOptions: AssetOptions; AssetOwnershipRelation: AssetOwnershipRelation; AssetPermissions: AssetPermissions; + AssetScope: AssetScope; + AssetTransferCompliance: AssetTransferCompliance; AssetType: AssetType; AssignmentId: AssignmentId; AssignmentKind: AssignmentKind; @@ -257,6 +268,7 @@ declare module '@polkadot/types/types/registry' { CompactScoreCompact: CompactScoreCompact; ComplianceRequirement: ComplianceRequirement; ComplianceRequirementResult: ComplianceRequirementResult; + CompressedRistretto: CompressedRistretto; Condition: Condition; ConditionResult: ConditionResult; ConditionType: ConditionType; @@ -334,7 +346,6 @@ declare module '@polkadot/types/types/registry' { CoreIndex: CoreIndex; CoreOccupied: CoreOccupied; CorporateAction: CorporateAction; - Counter: Counter; CountryCode: CountryCode; CrateVersion: CrateVersion; CreatedBlock: CreatedBlock; @@ -352,8 +363,6 @@ declare module '@polkadot/types/types/registry' { DepositInfo: DepositInfo; DestroyWitness: DestroyWitness; DidRecord: DidRecord; - DidRecords: DidRecords; - DidRecordsSuccess: DidRecordsSuccess; DidStatus: DidStatus; Digest: Digest; DigestItem: DigestItem; @@ -637,6 +646,7 @@ declare module '@polkadot/types/types/registry' { Key: Key; KeyIdentityData: KeyIdentityData; KeyOwnerProof: KeyOwnerProof; + KeyRecord: KeyRecord; Keys: Keys; KeyType: KeyType; KeyTypeId: KeyTypeId; @@ -649,8 +659,6 @@ declare module '@polkadot/types/types/registry' { LeasePeriod: LeasePeriod; LeasePeriodOf: LeasePeriodOf; Leg: Leg; - LegacyPalletPermissions: LegacyPalletPermissions; - LegacyPermissions: LegacyPermissions; LegacyTransaction: LegacyTransaction; LegId: LegId; LegStatus: LegStatus; @@ -945,6 +953,8 @@ declare module '@polkadot/types/types/registry' { RistrettoPoint: RistrettoPoint; RoundSnapshot: RoundSnapshot; RoundState: RoundState; + RpcDidRecords: RpcDidRecords; + RpcDidRecordsSuccess: RpcDidRecordsSuccess; RpcMethods: RpcMethods; RuntimeDbWeight: RuntimeDbWeight; RuntimeDispatchInfo: RuntimeDispatchInfo; @@ -1083,8 +1093,14 @@ declare module '@polkadot/types/types/registry' { StakingLedger: StakingLedger; StakingLedgerTo223: StakingLedgerTo223; StakingLedgerTo240: StakingLedgerTo240; + Stat1stKey: Stat1stKey; + Stat2ndKey: Stat2ndKey; + StatClaim: StatClaim; Statement: Statement; StatementKind: StatementKind; + StatOpType: StatOpType; + StatType: StatType; + StatUpdate: StatUpdate; StorageChangeSet: StorageChangeSet; StorageData: StorageData; StorageDeposit: StorageDeposit; @@ -1162,8 +1178,9 @@ declare module '@polkadot/types/types/registry' { TransactionV1: TransactionV1; TransactionV2: TransactionV2; TransactionValidityError: TransactionValidityError; - TransferManager: TransferManager; - TransferManagerResult: TransferManagerResult; + TransferCondition: TransferCondition; + TransferConditionExemptKey: TransferConditionExemptKey; + TransferConditionResult: TransferConditionResult; TransientValidationData: TransientValidationData; TreasuryProposal: TreasuryProposal; TrieId: TrieId; diff --git a/scripts/cli/src/interfaces/default/types.ts b/scripts/cli/src/interfaces/default/types.ts index 9b41820204..b1ee528b6f 100644 --- a/scripts/cli/src/interfaces/default/types.ts +++ b/scripts/cli/src/interfaces/default/types.ts @@ -1,10 +1,10 @@ // Auto-generated via `yarn polkadot-types-from-defs`, do not edit /* eslint-disable */ -import type { Bytes, Enum, Option, Struct, Text, U8aFixed, Vec, bool, u16, u32, u64, u8 } from '@polkadot/types-codec'; +import type { Bytes, Enum, Option, Struct, Text, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec'; import type { ITuple } from '@polkadot/types-codec/types'; import type { MultiSignature, Signature } from '@polkadot/types/interfaces/extrinsics'; -import type { AccountId, Balance, BlockNumber, Call, H256, Hash, MultiAddress, Perbill, Permill, Weight } from '@polkadot/types/interfaces/runtime'; +import type { AccountId, Balance, BlockNumber, Call, H256, H512, Hash, MultiAddress, Perbill, Permill, Weight } from '@polkadot/types/interfaces/runtime'; import type { AccountInfoWithDualRefCount, DispatchError } from '@polkadot/types/interfaces/system'; /** @name AccountInfo */ @@ -70,6 +70,52 @@ export interface AssetIdentifier extends Enum { readonly type: 'Cusip' | 'Cins' | 'Isin' | 'Lei'; } +/** @name AssetMetadataDescription */ +export interface AssetMetadataDescription extends Text {} + +/** @name AssetMetadataGlobalKey */ +export interface AssetMetadataGlobalKey extends u64 {} + +/** @name AssetMetadataKey */ +export interface AssetMetadataKey extends Enum { + readonly isGlobal: boolean; + readonly asGlobal: u64; + readonly isLocal: boolean; + readonly asLocal: u64; + readonly type: 'Global' | 'Local'; +} + +/** @name AssetMetadataLocalKey */ +export interface AssetMetadataLocalKey extends u64 {} + +/** @name AssetMetadataLockStatus */ +export interface AssetMetadataLockStatus extends Enum { + readonly isUnlocked: boolean; + readonly isLocked: boolean; + readonly isLockedUntil: boolean; + readonly asLockedUntil: Moment; + readonly type: 'Unlocked' | 'Locked' | 'LockedUntil'; +} + +/** @name AssetMetadataName */ +export interface AssetMetadataName extends Text {} + +/** @name AssetMetadataSpec */ +export interface AssetMetadataSpec extends Struct { + readonly url: Option; + readonly description: Option; + readonly type_def: Option; +} + +/** @name AssetMetadataValue */ +export interface AssetMetadataValue extends Bytes {} + +/** @name AssetMetadataValueDetail */ +export interface AssetMetadataValueDetail extends Struct { + readonly expire: Option; + readonly lock_status: AssetMetadataLockStatus; +} + /** @name AssetName */ export interface AssetName extends Text {} @@ -91,6 +137,19 @@ export interface AssetPermissions extends Enum { readonly type: 'Whole' | 'These' | 'Except'; } +/** @name AssetScope */ +export interface AssetScope extends Enum { + readonly isTicker: boolean; + readonly asTicker: Ticker; + readonly type: 'Ticker'; +} + +/** @name AssetTransferCompliance */ +export interface AssetTransferCompliance extends Struct { + readonly paused: bool; + readonly requirements: Vec; +} + /** @name AssetType */ export interface AssetType extends Enum { readonly isEquityCommon: boolean; @@ -387,6 +446,9 @@ export interface ComplianceRequirementResult extends Struct { readonly result: bool; } +/** @name CompressedRistretto */ +export interface CompressedRistretto extends U8aFixed {} + /** @name Condition */ export interface Condition extends Struct { readonly condition_type: ConditionType; @@ -424,9 +486,6 @@ export interface CorporateAction extends Struct { readonly withholding_tax: Vec>; } -/** @name Counter */ -export interface Counter extends u64 {} - /** @name CountryCode */ export interface CountryCode extends Enum { readonly isAf: boolean; @@ -693,23 +752,7 @@ export interface DepositInfo extends Struct { /** @name DidRecord */ export interface DidRecord extends Struct { - readonly primary_key: AccountId; - readonly secondary_keys: Vec; -} - -/** @name DidRecords */ -export interface DidRecords extends Enum { - readonly isSuccess: boolean; - readonly asSuccess: DidRecordsSuccess; - readonly isIdNotFound: boolean; - readonly asIdNotFound: Bytes; - readonly type: 'Success' | 'IdNotFound'; -} - -/** @name DidRecordsSuccess */ -export interface DidRecordsSuccess extends Struct { - readonly primary_key: AccountId; - readonly secondary_keys: Vec; + readonly primary_key: Option; } /** @name DidStatus */ @@ -874,7 +917,7 @@ export interface GranularCanTransferResult extends Struct { readonly sender_insufficient_balance: bool; readonly portfolio_validity_result: PortfolioValidityResult; readonly asset_frozen: bool; - readonly statistics_result: Vec; + readonly transfer_condition_result: Vec; readonly compliance_result: AssetComplianceResult; readonly result: bool; } @@ -947,7 +990,10 @@ export interface InstructionStatus extends Enum { export interface InvestorUid extends U8aFixed {} /** @name InvestorZKProofData */ -export interface InvestorZKProofData extends U8aFixed {} +export interface InvestorZKProofData extends Struct { + readonly r: CompressedRistretto; + readonly s: Scalar; +} /** @name ItnRewardStatus */ export interface ItnRewardStatus extends Enum { @@ -963,6 +1009,17 @@ export interface KeyIdentityData extends Struct { readonly permissions: Option; } +/** @name KeyRecord */ +export interface KeyRecord extends Enum { + readonly isPrimaryKey: boolean; + readonly asPrimaryKey: IdentityId; + readonly isSecondaryKey: boolean; + readonly asSecondaryKey: ITuple<[IdentityId, Permissions]>; + readonly isMultiSigSignerKey: boolean; + readonly asMultiSigSignerKey: AccountId; + readonly type: 'PrimaryKey' | 'SecondaryKey' | 'MultiSigSignerKey'; +} + /** @name Leg */ export interface Leg extends Struct { readonly from: PortfolioId; @@ -971,20 +1028,6 @@ export interface Leg extends Struct { readonly amount: Balance; } -/** @name LegacyPalletPermissions */ -export interface LegacyPalletPermissions extends Struct { - readonly pallet_name: PalletName; - readonly total: bool; - readonly dispatchable_names: Vec; -} - -/** @name LegacyPermissions */ -export interface LegacyPermissions extends Struct { - readonly asset: Option>; - readonly extrinsic: Option>; - readonly portfolio: Option>; -} - /** @name LegId */ export interface LegId extends u64 {} @@ -1275,6 +1318,21 @@ export interface RestrictionResult extends Enum { /** @name RistrettoPoint */ export interface RistrettoPoint extends U8aFixed {} +/** @name RpcDidRecords */ +export interface RpcDidRecords extends Enum { + readonly isSuccess: boolean; + readonly asSuccess: RpcDidRecordsSuccess; + readonly isIdNotFound: boolean; + readonly asIdNotFound: Bytes; + readonly type: 'Success' | 'IdNotFound'; +} + +/** @name RpcDidRecordsSuccess */ +export interface RpcDidRecordsSuccess extends Struct { + readonly primary_key: AccountId; + readonly secondary_keys: Vec; +} + /** @name Scalar */ export interface Scalar extends U8aFixed {} @@ -1311,14 +1369,14 @@ export interface ScopeId extends U8aFixed {} /** @name SecondaryKey */ export interface SecondaryKey extends Struct { - readonly signer: Signatory; + readonly key: AccountId; readonly permissions: Permissions; } /** @name SecondaryKeyWithAuth */ export interface SecondaryKeyWithAuth extends Struct { readonly secondary_key: SecondaryKey; - readonly auth_signature: Signature; + readonly auth_signature: H512; } /** @name SecurityToken */ @@ -1402,6 +1460,50 @@ export interface SnapshottedPip extends Struct { readonly weight: ITuple<[bool, Balance]>; } +/** @name Stat1stKey */ +export interface Stat1stKey extends Struct { + readonly asset: AssetScope; + readonly stat_type: StatType; +} + +/** @name Stat2ndKey */ +export interface Stat2ndKey extends Enum { + readonly isNoClaimStat: boolean; + readonly isClaim: boolean; + readonly asClaim: StatClaim; + readonly type: 'NoClaimStat' | 'Claim'; +} + +/** @name StatClaim */ +export interface StatClaim extends Enum { + readonly isAccredited: boolean; + readonly asAccredited: bool; + readonly isAffiliate: boolean; + readonly asAffiliate: bool; + readonly isJurisdiction: boolean; + readonly asJurisdiction: Option; + readonly type: 'Accredited' | 'Affiliate' | 'Jurisdiction'; +} + +/** @name StatOpType */ +export interface StatOpType extends Enum { + readonly isCount: boolean; + readonly isBalance: boolean; + readonly type: 'Count' | 'Balance'; +} + +/** @name StatType */ +export interface StatType extends Struct { + readonly op: StatOpType; + readonly claim_issuer: Option>; +} + +/** @name StatUpdate */ +export interface StatUpdate extends Struct { + readonly key2: Stat2ndKey; + readonly value: Option; +} + /** @name StoredSchedule */ export interface StoredSchedule extends Struct { readonly schedule: CheckpointSchedule; @@ -1478,18 +1580,29 @@ export interface TickerRegistrationConfig extends Struct { readonly registration_length: Option; } -/** @name TransferManager */ -export interface TransferManager extends Enum { - readonly isCountTransferManager: boolean; - readonly asCountTransferManager: Counter; - readonly isPercentageTransferManager: boolean; - readonly asPercentageTransferManager: Percentage; - readonly type: 'CountTransferManager' | 'PercentageTransferManager'; +/** @name TransferCondition */ +export interface TransferCondition extends Enum { + readonly isMaxInvestorCount: boolean; + readonly asMaxInvestorCount: u64; + readonly isMaxInvestorOwnership: boolean; + readonly asMaxInvestorOwnership: Percentage; + readonly isClaimCount: boolean; + readonly asClaimCount: ITuple<[StatClaim, IdentityId, u64, Option]>; + readonly isClaimOwnership: boolean; + readonly asClaimOwnership: ITuple<[StatClaim, IdentityId, Percentage, Percentage]>; + readonly type: 'MaxInvestorCount' | 'MaxInvestorOwnership' | 'ClaimCount' | 'ClaimOwnership'; +} + +/** @name TransferConditionExemptKey */ +export interface TransferConditionExemptKey extends Struct { + readonly asset: AssetScope; + readonly op: StatOpType; + readonly claim_type: Option; } -/** @name TransferManagerResult */ -export interface TransferManagerResult extends Struct { - readonly tm: TransferManager; +/** @name TransferConditionResult */ +export interface TransferConditionResult extends Struct { + readonly condition: TransferCondition; readonly result: bool; } diff --git a/scripts/cli/src/interfaces/definitions.ts b/scripts/cli/src/interfaces/definitions.ts index ce3c5e8177..0aaf090edd 100644 --- a/scripts/cli/src/interfaces/definitions.ts +++ b/scripts/cli/src/interfaces/definitions.ts @@ -1,3 +1,3 @@ export default { -types: {"Address":"MultiAddress","LookupSource":"MultiAddress","AccountInfo":"AccountInfoWithDualRefCount","IdentityId":"[u8; 32]","EventDid":"IdentityId","EventCounts":"Vec","ErrorAt":"(u32, DispatchError)","InvestorUid":"[u8; 16]","Ticker":"[u8; 12]","CddId":"[u8; 32]","ScopeId":"[u8; 32]","PosRatio":"(u32, u32)","DocumentId":"u32","DocumentName":"Text","DocumentUri":"Text","DocumentHash":{"_enum":{"None":"","H512":"[u8; 64]","H384":"[u8; 48]","H320":"[u8; 40]","H256":"[u8; 32]","H224":"[u8; 28]","H192":"[u8; 24]","H160":"[u8; 20]","H128":"[u8; 16]"}},"DocumentType":"Text","Document":{"uri":"DocumentUri","content_hash":"DocumentHash","name":"DocumentName","doc_type":"Option","filing_date":"Option"},"Version":"u8","CustomAssetTypeId":"u32","AssetType":{"_enum":{"EquityCommon":"","EquityPreferred":"","Commodity":"","FixedIncome":"","REIT":"","Fund":"","RevenueShareAgreement":"","StructuredProduct":"","Derivative":"","Custom":"CustomAssetTypeId","StableCoin":""}},"AssetIdentifier":{"_enum":{"CUSIP":"[u8; 9]","CINS":"[u8; 9]","ISIN":"[u8; 12]","LEI":"[u8; 20]"}},"AssetOwnershipRelation":{"_enum":{"NotOwned":"","TickerOwned":"","AssetOwned":""}},"AssetName":"Text","FundingRoundName":"Text","VenueDetails":"Text","SecurityToken":{"total_supply":"Balance","owner_did":"IdentityId","divisible":"bool","asset_type":"AssetType"},"PalletName":"Text","DispatchableName":"Text","AssetPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"PortfolioPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"DispatchableNames":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"PalletPermissions":{"pallet_name":"PalletName","dispatchable_names":"DispatchableNames"},"ExtrinsicPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"Permissions":{"asset":"AssetPermissions","extrinsic":"ExtrinsicPermissions","portfolio":"PortfolioPermissions"},"LegacyPalletPermissions":{"pallet_name":"PalletName","total":"bool","dispatchable_names":"Vec"},"LegacyPermissions":{"asset":"Option>","extrinsic":"Option>","portfolio":"Option>"},"Signatory":{"_enum":{"Identity":"IdentityId","Account":"AccountId"}},"SecondaryKey":{"signer":"Signatory","permissions":"Permissions"},"SecondaryKeyWithAuth":{"secondary_key":"SecondaryKey","auth_signature":"Signature"},"Subsidy":{"paying_key":"AccountId","remaining":"Balance"},"IdentityRole":{"_enum":["Issuer","SimpleTokenIssuer","Validator","ClaimIssuer","Investor","NodeRunner","PM","CDDAMLClaimIssuer","AccreditedInvestorClaimIssuer","VerifiedIdentityClaimIssuer"]},"PreAuthorizedKeyInfo":{"target_id":"IdentityId","secondary_key":"SecondaryKey"},"DidRecord":{"primary_key":"AccountId","secondary_keys":"Vec"},"KeyIdentityData":{"identity":"IdentityId","permissions":"Option"},"CountryCode":{"_enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","VG","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","HK","MO","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VI","WF","EH","YE","ZM","ZW","BQ","CW","SX"]},"Scope":{"_enum":{"Identity":"IdentityId","Ticker":"Ticker","Custom":"Vec"}},"InvestorZKProofData":"[u8; 64]","Scalar":"[u8; 32]","RistrettoPoint":"[u8; 32]","ZkProofData":{"challenge_responses":"[Scalar; 2]","subtract_expressions_res":"RistrettoPoint","blinded_scope_did_hash":"RistrettoPoint"},"ScopeClaimProof":{"proof_scope_id_wellformed":"Signature","proof_scope_id_cdd_id_match":"ZkProofData","scope_id":"RistrettoPoint"},"Claim":{"_enum":{"Accredited":"Scope","Affiliate":"Scope","BuyLockup":"Scope","SellLockup":"Scope","CustomerDueDiligence":"CddId","KnowYourCustomer":"Scope","Jurisdiction":"(CountryCode, Scope)","Exempted":"Scope","Blocked":"Scope","InvestorUniqueness":"(Scope, ScopeId, CddId)","NoData":"","InvestorUniquenessV2":"(CddId)"}},"ClaimType":{"_enum":{"Accredited":"","Affiliate":"","BuyLockup":"","SellLockup":"","CustomerDueDiligence":"","KnowYourCustomer":"","Jurisdiction":"","Exempted":"","Blocked":"","InvestorUniqueness":"","NoData":"","InvestorUniquenessV2":""}},"IdentityClaim":{"claim_issuer":"IdentityId","issuance_date":"Moment","last_update_date":"Moment","expiry":"Option","claim":"Claim"},"ComplianceRequirement":{"sender_conditions":"Vec","receiver_conditions":"Vec","id":"u32"},"ComplianceRequirementResult":{"sender_conditions":"Vec","receiver_conditions":"Vec","id":"u32","result":"bool"},"ConditionType":{"_enum":{"IsPresent":"Claim","IsAbsent":"Claim","IsAnyOf":"Vec","IsNoneOf":"Vec","IsIdentity":"TargetIdentity"}},"TrustedFor":{"_enum":{"Any":"","Specific":"Vec"}},"TrustedIssuer":{"issuer":"IdentityId","trusted_for":"TrustedFor"},"Condition":{"condition_type":"ConditionType","issuers":"Vec"},"ConditionResult":{"condition":"Condition","result":"bool"},"TargetIdAuthorization":{"target_id":"IdentityId","nonce":"u64","expires_at":"Moment"},"TickerRegistration":{"owner":"IdentityId","expiry":"Option"},"TickerRegistrationConfig":{"max_ticker_length":"u8","registration_length":"Option"},"ClassicTickerRegistration":{"eth_owner":"EthereumAddress","is_created":"bool"},"ClassicTickerImport":{"eth_owner":"EthereumAddress","ticker":"Ticker","is_contract":"bool","is_created":"bool"},"EthereumAddress":"[u8; 20]","EcdsaSignature":"[u8; 65]","MotionTitle":"Text","MotionInfoLink":"Text","ChoiceTitle":"Text","Motion":{"title":"MotionTitle","info_link":"MotionInfoLink","choices":"Vec"},"BallotTitle":"Text","BallotMeta":{"title":"BallotTitle","motions":"Vec"},"BallotTimeRange":{"start":"Moment","end":"Moment"},"BallotVote":{"power":"Balance","fallback":"Option"},"MaybeBlock":{"_enum":{"Some":"BlockNumber","None":""}},"Url":"Text","PipDescription":"Text","PipsMetadata":{"id":"PipId","url":"Option","description":"Option","created_at":"BlockNumber","transaction_version":"u32","expiry":"MaybeBlock"},"Proposer":{"_enum":{"Community":"AccountId","Committee":"Committee"}},"Committee":{"_enum":{"Technical":"","Upgrade":""}},"SkippedCount":"u8","SnapshottedPip":{"id":"PipId","weight":"(bool, Balance)"},"SnapshotId":"u32","SnapshotMetadata":{"created_at":"BlockNumber","made_by":"AccountId","id":"SnapshotId"},"SnapshotResult":{"_enum":{"Approve":"","Reject":"","Skip":""}},"Beneficiary":{"id":"IdentityId","amount":"Balance"},"DepositInfo":{"owner":"AccountId","amount":"Balance"},"PolymeshVotes":{"index":"u32","ayes":"Vec","nays":"Vec","expiry":"MaybeBlock"},"PipId":"u32","ProposalState":{"_enum":["Pending","Rejected","Scheduled","Failed","Executed","Expired"]},"Pip":{"id":"PipId","proposal":"Call","state":"ProposalState","proposer":"Proposer"},"ProposalData":{"_enum":{"Hash":"Hash","Proposal":"Vec"}},"OffChainSignature":"MultiSignature","Authorization":{"authorization_data":"AuthorizationData","authorized_by":"IdentityId","expiry":"Option","auth_id":"u64"},"AuthorizationData":{"_enum":{"AttestPrimaryKeyRotation":"IdentityId","RotatePrimaryKey":"","TransferTicker":"Ticker","AddMultiSigSigner":"AccountId","TransferAssetOwnership":"Ticker","JoinIdentity":"Permissions","PortfolioCustody":"PortfolioId","BecomeAgent":"(Ticker, AgentGroup)","AddRelayerPayingKey":"(AccountId, AccountId, Balance)","RotatePrimaryKeyToSecondary":"Permissions"}},"SmartExtensionType":{"_enum":{"TransferManager":"","Offerings":"","SmartWallet":"","Custom":"Vec"}},"SmartExtensionName":"Text","SmartExtension":{"extension_type":"SmartExtensionType","extension_name":"SmartExtensionName","extension_id":"AccountId","is_archive":"bool"},"MetaUrl":"Text","MetaDescription":"Text","MetaVersion":"u32","ExtVersion":"u32","TemplateMetadata":{"url":"Option","se_type":"SmartExtensionType","usage_fee":"Balance","description":"MetaDescription","version":"MetaVersion"},"TemplateDetails":{"instantiation_fee":"Balance","owner":"IdentityId","frozen":"bool"},"AuthorizationNonce":"u64","Counter":"u64","Percentage":"Permill","TransferManager":{"_enum":{"CountTransferManager":"Counter","PercentageTransferManager":"Percentage"}},"RestrictionResult":{"_enum":["Valid","Invalid","ForceValid"]},"Memo":"[u8;32]","BridgeTx":{"nonce":"u32","recipient":"AccountId","amount":"Balance","tx_hash":"H256"},"AssetCompliance":{"paused":"bool","requirements":"Vec"},"AssetComplianceResult":{"paused":"bool","requirements":"Vec","result":"bool"},"Claim1stKey":{"target":"IdentityId","claim_type":"ClaimType"},"Claim2ndKey":{"issuer":"IdentityId","scope":"Option"},"InactiveMember":{"id":"IdentityId","deactivated_at":"Moment","expiry":"Option"},"VotingResult":{"ayes_count":"u32","ayes_stake":"Balance","nays_count":"u32","nays_stake":"Balance"},"ProtocolOp":{"_enum":["AssetRegisterTicker","AssetIssue","AssetAddDocuments","AssetCreateAsset","CheckpointCreateSchedule","ComplianceManagerAddComplianceRequirement","IdentityCddRegisterDid","IdentityAddClaim","IdentityAddSecondaryKeysWithAuthorization","PipsPropose","ContractsPutCode","CorporateBallotAttachBallot","CapitalDistributionDistribute"]},"CddStatus":{"_enum":{"Ok":"IdentityId","Err":"Vec"}},"AssetDidResult":{"_enum":{"Ok":"IdentityId","Err":"Vec"}},"DidRecordsSuccess":{"primary_key":"AccountId","secondary_keys":"Vec"},"DidRecords":{"_enum":{"Success":"DidRecordsSuccess","IdNotFound":"Vec"}},"VoteCountProposalFound":{"ayes":"u64","nays":"u64"},"VoteCount":{"_enum":{"ProposalFound":"VoteCountProposalFound","ProposalNotFound":""}},"Vote":"(bool, Balance)","VoteByPip":{"pip":"PipId","vote":"Vote"},"BridgeTxDetail":{"amount":"Balance","status":"BridgeTxStatus","execution_block":"BlockNumber","tx_hash":"H256"},"BridgeTxStatus":{"_enum":{"Absent":"","Pending":"u8","Frozen":"","Timelocked":"","Handled":""}},"HandledTxStatus":{"_enum":{"Success":"","Error":"Text"}},"CappedFee":"u64","CanTransferResult":{"_enum":{"Ok":"u8","Err":"Vec"}},"AuthorizationType":{"_enum":{"AttestPrimaryKeyRotation":"","RotatePrimaryKey":"","TransferTicker":"","AddMultiSigSigner":"","TransferAssetOwnership":"","JoinIdentity":"","PortfolioCustody":"","BecomeAgent":"","AddRelayerPayingKey":"","RotatePrimaryKeyToSecondary":""}},"ProposalDetails":{"approvals":"u64","rejections":"u64","status":"ProposalStatus","expiry":"Option","auto_close":"bool"},"ProposalStatus":{"_enum":{"Invalid":"","ActiveOrExpired":"","ExecutionSuccessful":"","ExecutionFailed":"","Rejected":""}},"DidStatus":{"_enum":{"Unknown":"","Exists":"","CddVerified":""}},"PortfolioName":"Text","PortfolioNumber":"u64","PortfolioKind":{"_enum":{"Default":"","User":"PortfolioNumber"}},"PortfolioId":{"did":"IdentityId","kind":"PortfolioKind"},"Moment":"u64","CalendarUnit":{"_enum":["Second","Minute","Hour","Day","Week","Month","Year"]},"CalendarPeriod":{"unit":"CalendarUnit","amount":"u64"},"CheckpointSchedule":{"start":"Moment","period":"CalendarPeriod"},"CheckpointId":"u64","ScheduleId":"u64","StoredSchedule":{"schedule":"CheckpointSchedule","id":"ScheduleId","at":"Moment","remaining":"u32"},"ScheduleSpec":{"start":"Option","period":"CalendarPeriod","remaining":"u32"},"InstructionStatus":{"_enum":{"Unknown":"","Pending":"","Failed":""}},"LegStatus":{"_enum":{"PendingTokenLock":"","ExecutionPending":"","ExecutionToBeSkipped":"(AccountId, u64)"}},"AffirmationStatus":{"_enum":{"Unknown":"","Pending":"","Affirmed":""}},"SettlementType":{"_enum":{"SettleOnAffirmation":"","SettleOnBlock":"BlockNumber"}},"LegId":"u64","InstructionId":"u64","Instruction":{"instruction_id":"InstructionId","venue_id":"VenueId","status":"InstructionStatus","settlement_type":"SettlementType","created_at":"Option","trade_date":"Option","value_date":"Option"},"Leg":{"from":"PortfolioId","to":"PortfolioId","asset":"Ticker","amount":"Balance"},"Venue":{"creator":"IdentityId","venue_type":"VenueType"},"Receipt":{"receipt_uid":"u64","from":"PortfolioId","to":"PortfolioId","asset":"Ticker","amount":"Balance"},"ReceiptMetadata":"Text","ReceiptDetails":{"receipt_uid":"u64","leg_id":"LegId","signer":"AccountId","signature":"OffChainSignature","metadata":"ReceiptMetadata"},"UniqueCall":{"nonce":"u64","call":"Call"},"MovePortfolioItem":{"ticker":"Ticker","amount":"Balance","memo":"Option"},"WeightToFeeCoefficient":{"coeffInteger":"Balance","coeffFrac":"Perbill","negative":"bool","degree":"u8"},"WeightPerClass":{"baseExtrinsic":"Weight","maxExtrinsic":"Option","maxTotal":"Option","reserved":"Option"},"TargetIdentity":{"_enum":{"ExternalAgent":"","Specific":"IdentityId"}},"FundraiserId":"u64","FundraiserName":"Text","FundraiserStatus":{"_enum":["Live","Frozen","Closed","ClosedEarly"]},"FundraiserTier":{"total":"Balance","price":"Balance","remaining":"Balance"},"Fundraiser":{"creator":"IdentityId","offering_portfolio":"PortfolioId","offering_asset":"Ticker","raising_portfolio":"PortfolioId","raising_asset":"Ticker","tiers":"Vec","venue_id":"VenueId","start":"Moment","end":"Option","status":"FundraiserStatus","minimum_investment":"Balance"},"VenueId":"u64","VenueType":{"_enum":["Other","Distribution","Sto","Exchange"]},"ExtensionAttributes":{"usage_fee":"Balance","version":"MetaVersion"},"Tax":"Permill","TargetIdentities":{"identities":"Vec","treatment":"TargetTreatment"},"TargetTreatment":{"_enum":["Include","Exclude"]},"CAKind":{"_enum":["PredictableBenefit","UnpredictableBenefit","IssuerNotice","Reorganization","Other"]},"CADetails":"Text","CACheckpoint":{"_enum":{"Scheduled":"(ScheduleId, u64)","Existing":"CheckpointId"}},"RecordDate":{"date":"Moment","checkpoint":"CACheckpoint"},"RecordDateSpec":{"_enum":{"Scheduled":"Moment","ExistingSchedule":"ScheduleId","Existing":"CheckpointId"}},"CorporateAction":{"kind":"CAKind","decl_date":"Moment","record_date":"Option","targets":"TargetIdentities","default_withholding_tax":"Tax","withholding_tax":"Vec<(IdentityId, Tax)>"},"LocalCAId":"u32","CAId":{"ticker":"Ticker","local_id":"LocalCAId"},"Distribution":{"from":"PortfolioId","currency":"Ticker","per_share":"Balance","amount":"Balance","remaining":"Balance","reclaimed":"bool","payment_at":"Moment","expires_at":"Option"},"SlashingSwitch":{"_enum":["Validator","ValidatorAndNominator","None"]},"PriceTier":{"total":"Balance","price":"Balance"},"PermissionedIdentityPrefs":{"intended_count":"u32","running_count":"u32"},"GranularCanTransferResult":{"invalid_granularity":"bool","self_transfer":"bool","invalid_receiver_cdd":"bool","invalid_sender_cdd":"bool","missing_scope_claim":"bool","receiver_custodian_error":"bool","sender_custodian_error":"bool","sender_insufficient_balance":"bool","portfolio_validity_result":"PortfolioValidityResult","asset_frozen":"bool","statistics_result":"Vec","compliance_result":"AssetComplianceResult","result":"bool"},"PortfolioValidityResult":{"receiver_is_same_portfolio":"bool","sender_portfolio_does_not_exist":"bool","receiver_portfolio_does_not_exist":"bool","sender_insufficient_balance":"bool","result":"bool"},"TransferManagerResult":{"tm":"TransferManager","result":"bool"},"AGId":"u32","AgentGroup":{"_enum":{"Full":"","Custom":"AGId","ExceptMeta":"","PolymeshV1CAA":"","PolymeshV1PIA":""}},"ItnRewardStatus":{"_enum":{"Unclaimed":"Balance","Claimed":""}}} -} +types: {"Address":"MultiAddress","LookupSource":"MultiAddress","AccountInfo":"AccountInfoWithDualRefCount","IdentityId":"[u8; 32]","EventDid":"IdentityId","EventCounts":"Vec","ErrorAt":"(u32, DispatchError)","InvestorUid":"[u8; 16]","Ticker":"[u8; 12]","CddId":"[u8; 32]","ScopeId":"[u8; 32]","PosRatio":"(u32, u32)","DocumentId":"u32","DocumentName":"Text","DocumentUri":"Text","DocumentHash":{"_enum":{"None":"","H512":"[u8; 64]","H384":"[u8; 48]","H320":"[u8; 40]","H256":"[u8; 32]","H224":"[u8; 28]","H192":"[u8; 24]","H160":"[u8; 20]","H128":"[u8; 16]"}},"DocumentType":"Text","Document":{"uri":"DocumentUri","content_hash":"DocumentHash","name":"DocumentName","doc_type":"Option","filing_date":"Option"},"Version":"u8","CustomAssetTypeId":"u32","AssetType":{"_enum":{"EquityCommon":"","EquityPreferred":"","Commodity":"","FixedIncome":"","REIT":"","Fund":"","RevenueShareAgreement":"","StructuredProduct":"","Derivative":"","Custom":"CustomAssetTypeId","StableCoin":""}},"AssetIdentifier":{"_enum":{"CUSIP":"[u8; 9]","CINS":"[u8; 9]","ISIN":"[u8; 12]","LEI":"[u8; 20]"}},"AssetOwnershipRelation":{"_enum":{"NotOwned":"","TickerOwned":"","AssetOwned":""}},"AssetName":"Text","FundingRoundName":"Text","VenueDetails":"Text","SecurityToken":{"total_supply":"Balance","owner_did":"IdentityId","divisible":"bool","asset_type":"AssetType"},"AssetMetadataName":"Text","AssetMetadataValue":"Vec","AssetMetadataLocalKey":"u64","AssetMetadataGlobalKey":"u64","AssetMetadataKey":{"_enum":{"Global":"u64","Local":"u64"}},"AssetMetadataLockStatus":{"_enum":{"Unlocked":"","Locked":"","LockedUntil":"Moment"}},"AssetMetadataValueDetail":{"expire":"Option","lock_status":"AssetMetadataLockStatus"},"AssetMetadataDescription":"Text","AssetMetadataSpec":{"url":"Option","description":"Option","type_def":"Option>"},"PalletName":"Text","DispatchableName":"Text","AssetPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"PortfolioPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"DispatchableNames":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"PalletPermissions":{"pallet_name":"PalletName","dispatchable_names":"DispatchableNames"},"ExtrinsicPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"Permissions":{"asset":"AssetPermissions","extrinsic":"ExtrinsicPermissions","portfolio":"PortfolioPermissions"},"Signatory":{"_enum":{"Identity":"IdentityId","Account":"AccountId"}},"SecondaryKey":{"key":"AccountId","permissions":"Permissions"},"SecondaryKeyWithAuth":{"secondary_key":"SecondaryKey","auth_signature":"H512"},"Subsidy":{"paying_key":"AccountId","remaining":"Balance"},"IdentityRole":{"_enum":["Issuer","SimpleTokenIssuer","Validator","ClaimIssuer","Investor","NodeRunner","PM","CDDAMLClaimIssuer","AccreditedInvestorClaimIssuer","VerifiedIdentityClaimIssuer"]},"PreAuthorizedKeyInfo":{"target_id":"IdentityId","secondary_key":"SecondaryKey"},"DidRecord":{"primary_key":"Option"},"KeyRecord":{"_enum":{"PrimaryKey":"IdentityId","SecondaryKey":"(IdentityId, Permissions)","MultiSigSignerKey":"AccountId"}},"KeyIdentityData":{"identity":"IdentityId","permissions":"Option"},"CountryCode":{"_enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","VG","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","HK","MO","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VI","WF","EH","YE","ZM","ZW","BQ","CW","SX"]},"Scope":{"_enum":{"Identity":"IdentityId","Ticker":"Ticker","Custom":"Vec"}},"InvestorZKProofData":{"r":"CompressedRistretto","s":"Scalar"},"CompressedRistretto":"[u8; 32]","Scalar":"[u8; 32]","RistrettoPoint":"[u8; 32]","ZkProofData":{"challenge_responses":"[Scalar; 2]","subtract_expressions_res":"RistrettoPoint","blinded_scope_did_hash":"RistrettoPoint"},"ScopeClaimProof":{"proof_scope_id_wellformed":"Signature","proof_scope_id_cdd_id_match":"ZkProofData","scope_id":"RistrettoPoint"},"Claim":{"_enum":{"Accredited":"Scope","Affiliate":"Scope","BuyLockup":"Scope","SellLockup":"Scope","CustomerDueDiligence":"CddId","KnowYourCustomer":"Scope","Jurisdiction":"(CountryCode, Scope)","Exempted":"Scope","Blocked":"Scope","InvestorUniqueness":"(Scope, ScopeId, CddId)","NoData":"","InvestorUniquenessV2":"(CddId)"}},"ClaimType":{"_enum":{"Accredited":"","Affiliate":"","BuyLockup":"","SellLockup":"","CustomerDueDiligence":"","KnowYourCustomer":"","Jurisdiction":"","Exempted":"","Blocked":"","InvestorUniqueness":"","NoData":"","InvestorUniquenessV2":""}},"IdentityClaim":{"claim_issuer":"IdentityId","issuance_date":"Moment","last_update_date":"Moment","expiry":"Option","claim":"Claim"},"ComplianceRequirement":{"sender_conditions":"Vec","receiver_conditions":"Vec","id":"u32"},"ComplianceRequirementResult":{"sender_conditions":"Vec","receiver_conditions":"Vec","id":"u32","result":"bool"},"ConditionType":{"_enum":{"IsPresent":"Claim","IsAbsent":"Claim","IsAnyOf":"Vec","IsNoneOf":"Vec","IsIdentity":"TargetIdentity"}},"TrustedFor":{"_enum":{"Any":"","Specific":"Vec"}},"TrustedIssuer":{"issuer":"IdentityId","trusted_for":"TrustedFor"},"Condition":{"condition_type":"ConditionType","issuers":"Vec"},"ConditionResult":{"condition":"Condition","result":"bool"},"TargetIdAuthorization":{"target_id":"IdentityId","nonce":"u64","expires_at":"Moment"},"TickerRegistration":{"owner":"IdentityId","expiry":"Option"},"TickerRegistrationConfig":{"max_ticker_length":"u8","registration_length":"Option"},"ClassicTickerRegistration":{"eth_owner":"EthereumAddress","is_created":"bool"},"ClassicTickerImport":{"eth_owner":"EthereumAddress","ticker":"Ticker","is_contract":"bool","is_created":"bool"},"EthereumAddress":"[u8; 20]","EcdsaSignature":"[u8; 65]","MotionTitle":"Text","MotionInfoLink":"Text","ChoiceTitle":"Text","Motion":{"title":"MotionTitle","info_link":"MotionInfoLink","choices":"Vec"},"BallotTitle":"Text","BallotMeta":{"title":"BallotTitle","motions":"Vec"},"BallotTimeRange":{"start":"Moment","end":"Moment"},"BallotVote":{"power":"Balance","fallback":"Option"},"MaybeBlock":{"_enum":{"Some":"BlockNumber","None":""}},"Url":"Text","PipDescription":"Text","PipsMetadata":{"id":"PipId","url":"Option","description":"Option","created_at":"BlockNumber","transaction_version":"u32","expiry":"MaybeBlock"},"Proposer":{"_enum":{"Community":"AccountId","Committee":"Committee"}},"Committee":{"_enum":{"Technical":"","Upgrade":""}},"SkippedCount":"u8","SnapshottedPip":{"id":"PipId","weight":"(bool, Balance)"},"SnapshotId":"u32","SnapshotMetadata":{"created_at":"BlockNumber","made_by":"AccountId","id":"SnapshotId"},"SnapshotResult":{"_enum":{"Approve":"","Reject":"","Skip":""}},"Beneficiary":{"id":"IdentityId","amount":"Balance"},"DepositInfo":{"owner":"AccountId","amount":"Balance"},"PolymeshVotes":{"index":"u32","ayes":"Vec","nays":"Vec","expiry":"MaybeBlock"},"PipId":"u32","ProposalState":{"_enum":["Pending","Rejected","Scheduled","Failed","Executed","Expired"]},"Pip":{"id":"PipId","proposal":"Call","state":"ProposalState","proposer":"Proposer"},"ProposalData":{"_enum":{"Hash":"Hash","Proposal":"Vec"}},"OffChainSignature":"MultiSignature","Authorization":{"authorization_data":"AuthorizationData","authorized_by":"IdentityId","expiry":"Option","auth_id":"u64"},"AuthorizationData":{"_enum":{"AttestPrimaryKeyRotation":"IdentityId","RotatePrimaryKey":"","TransferTicker":"Ticker","AddMultiSigSigner":"AccountId","TransferAssetOwnership":"Ticker","JoinIdentity":"Permissions","PortfolioCustody":"PortfolioId","BecomeAgent":"(Ticker, AgentGroup)","AddRelayerPayingKey":"(AccountId, AccountId, Balance)","RotatePrimaryKeyToSecondary":"Permissions"}},"SmartExtensionType":{"_enum":{"TransferManager":"","Offerings":"","SmartWallet":"","Custom":"Vec"}},"SmartExtensionName":"Text","SmartExtension":{"extension_type":"SmartExtensionType","extension_name":"SmartExtensionName","extension_id":"AccountId","is_archive":"bool"},"MetaUrl":"Text","MetaDescription":"Text","MetaVersion":"u32","ExtVersion":"u32","TemplateMetadata":{"url":"Option","se_type":"SmartExtensionType","usage_fee":"Balance","description":"MetaDescription","version":"MetaVersion"},"TemplateDetails":{"instantiation_fee":"Balance","owner":"IdentityId","frozen":"bool"},"AuthorizationNonce":"u64","Percentage":"Permill","RestrictionResult":{"_enum":["Valid","Invalid","ForceValid"]},"Memo":"[u8; 32]","BridgeTx":{"nonce":"u32","recipient":"AccountId","amount":"Balance","tx_hash":"H256"},"AssetScope":{"_enum":{"Ticker":"Ticker"}},"StatOpType":{"_enum":["Count","Balance"]},"StatType":{"op":"StatOpType","claim_issuer":"Option<(ClaimType, IdentityId)>"},"StatClaim":{"_enum":{"Accredited":"bool","Affiliate":"bool","Jurisdiction":"Option"}},"Stat1stKey":{"asset":"AssetScope","stat_type":"StatType"},"Stat2ndKey":{"_enum":{"NoClaimStat":"","Claim":"StatClaim"}},"StatUpdate":{"key2":"Stat2ndKey","value":"Option"},"TransferCondition":{"_enum":{"MaxInvestorCount":"u64","MaxInvestorOwnership":"Percentage","ClaimCount":"(StatClaim, IdentityId, u64, Option)","ClaimOwnership":"(StatClaim, IdentityId, Percentage, Percentage)"}},"AssetTransferCompliance":{"paused":"bool","requirements":"Vec"},"TransferConditionExemptKey":{"asset":"AssetScope","op":"StatOpType","claim_type":"Option"},"AssetCompliance":{"paused":"bool","requirements":"Vec"},"AssetComplianceResult":{"paused":"bool","requirements":"Vec","result":"bool"},"Claim1stKey":{"target":"IdentityId","claim_type":"ClaimType"},"Claim2ndKey":{"issuer":"IdentityId","scope":"Option"},"InactiveMember":{"id":"IdentityId","deactivated_at":"Moment","expiry":"Option"},"VotingResult":{"ayes_count":"u32","ayes_stake":"Balance","nays_count":"u32","nays_stake":"Balance"},"ProtocolOp":{"_enum":["AssetRegisterTicker","AssetIssue","AssetAddDocuments","AssetCreateAsset","CheckpointCreateSchedule","ComplianceManagerAddComplianceRequirement","IdentityCddRegisterDid","IdentityAddClaim","IdentityAddSecondaryKeysWithAuthorization","PipsPropose","ContractsPutCode","CorporateBallotAttachBallot","CapitalDistributionDistribute"]},"CddStatus":{"_enum":{"Ok":"IdentityId","Err":"Vec"}},"AssetDidResult":{"_enum":{"Ok":"IdentityId","Err":"Vec"}},"RpcDidRecordsSuccess":{"primary_key":"AccountId","secondary_keys":"Vec"},"RpcDidRecords":{"_enum":{"Success":"RpcDidRecordsSuccess","IdNotFound":"Vec"}},"VoteCountProposalFound":{"ayes":"u64","nays":"u64"},"VoteCount":{"_enum":{"ProposalFound":"VoteCountProposalFound","ProposalNotFound":""}},"Vote":"(bool, Balance)","VoteByPip":{"pip":"PipId","vote":"Vote"},"BridgeTxDetail":{"amount":"Balance","status":"BridgeTxStatus","execution_block":"BlockNumber","tx_hash":"H256"},"BridgeTxStatus":{"_enum":{"Absent":"","Pending":"u8","Frozen":"","Timelocked":"","Handled":""}},"HandledTxStatus":{"_enum":{"Success":"","Error":"Text"}},"CappedFee":"u64","CanTransferResult":{"_enum":{"Ok":"u8","Err":"Vec"}},"AuthorizationType":{"_enum":{"AttestPrimaryKeyRotation":"","RotatePrimaryKey":"","TransferTicker":"","AddMultiSigSigner":"","TransferAssetOwnership":"","JoinIdentity":"","PortfolioCustody":"","BecomeAgent":"","AddRelayerPayingKey":"","RotatePrimaryKeyToSecondary":""}},"ProposalDetails":{"approvals":"u64","rejections":"u64","status":"ProposalStatus","expiry":"Option","auto_close":"bool"},"ProposalStatus":{"_enum":{"Invalid":"","ActiveOrExpired":"","ExecutionSuccessful":"","ExecutionFailed":"","Rejected":""}},"DidStatus":{"_enum":{"Unknown":"","Exists":"","CddVerified":""}},"PortfolioName":"Text","PortfolioNumber":"u64","PortfolioKind":{"_enum":{"Default":"","User":"PortfolioNumber"}},"PortfolioId":{"did":"IdentityId","kind":"PortfolioKind"},"Moment":"u64","CalendarUnit":{"_enum":["Second","Minute","Hour","Day","Week","Month","Year"]},"CalendarPeriod":{"unit":"CalendarUnit","amount":"u64"},"CheckpointSchedule":{"start":"Moment","period":"CalendarPeriod"},"CheckpointId":"u64","ScheduleId":"u64","StoredSchedule":{"schedule":"CheckpointSchedule","id":"ScheduleId","at":"Moment","remaining":"u32"},"ScheduleSpec":{"start":"Option","period":"CalendarPeriod","remaining":"u32"},"InstructionStatus":{"_enum":{"Unknown":"","Pending":"","Failed":""}},"LegStatus":{"_enum":{"PendingTokenLock":"","ExecutionPending":"","ExecutionToBeSkipped":"(AccountId, u64)"}},"AffirmationStatus":{"_enum":{"Unknown":"","Pending":"","Affirmed":""}},"SettlementType":{"_enum":{"SettleOnAffirmation":"","SettleOnBlock":"BlockNumber"}},"LegId":"u64","InstructionId":"u64","Instruction":{"instruction_id":"InstructionId","venue_id":"VenueId","status":"InstructionStatus","settlement_type":"SettlementType","created_at":"Option","trade_date":"Option","value_date":"Option"},"Leg":{"from":"PortfolioId","to":"PortfolioId","asset":"Ticker","amount":"Balance"},"Venue":{"creator":"IdentityId","venue_type":"VenueType"},"Receipt":{"receipt_uid":"u64","from":"PortfolioId","to":"PortfolioId","asset":"Ticker","amount":"Balance"},"ReceiptMetadata":"Text","ReceiptDetails":{"receipt_uid":"u64","leg_id":"LegId","signer":"AccountId","signature":"OffChainSignature","metadata":"ReceiptMetadata"},"UniqueCall":{"nonce":"u64","call":"Call"},"MovePortfolioItem":{"ticker":"Ticker","amount":"Balance","memo":"Option"},"WeightToFeeCoefficient":{"coeffInteger":"Balance","coeffFrac":"Perbill","negative":"bool","degree":"u8"},"WeightPerClass":{"baseExtrinsic":"Weight","maxExtrinsic":"Option","maxTotal":"Option","reserved":"Option"},"TargetIdentity":{"_enum":{"ExternalAgent":"","Specific":"IdentityId"}},"FundraiserId":"u64","FundraiserName":"Text","FundraiserStatus":{"_enum":["Live","Frozen","Closed","ClosedEarly"]},"FundraiserTier":{"total":"Balance","price":"Balance","remaining":"Balance"},"Fundraiser":{"creator":"IdentityId","offering_portfolio":"PortfolioId","offering_asset":"Ticker","raising_portfolio":"PortfolioId","raising_asset":"Ticker","tiers":"Vec","venue_id":"VenueId","start":"Moment","end":"Option","status":"FundraiserStatus","minimum_investment":"Balance"},"VenueId":"u64","VenueType":{"_enum":["Other","Distribution","Sto","Exchange"]},"ExtensionAttributes":{"usage_fee":"Balance","version":"MetaVersion"},"Tax":"Permill","TargetIdentities":{"identities":"Vec","treatment":"TargetTreatment"},"TargetTreatment":{"_enum":["Include","Exclude"]},"CAKind":{"_enum":["PredictableBenefit","UnpredictableBenefit","IssuerNotice","Reorganization","Other"]},"CADetails":"Text","CACheckpoint":{"_enum":{"Scheduled":"(ScheduleId, u64)","Existing":"CheckpointId"}},"RecordDate":{"date":"Moment","checkpoint":"CACheckpoint"},"RecordDateSpec":{"_enum":{"Scheduled":"Moment","ExistingSchedule":"ScheduleId","Existing":"CheckpointId"}},"CorporateAction":{"kind":"CAKind","decl_date":"Moment","record_date":"Option","targets":"TargetIdentities","default_withholding_tax":"Tax","withholding_tax":"Vec<(IdentityId, Tax)>"},"LocalCAId":"u32","CAId":{"ticker":"Ticker","local_id":"LocalCAId"},"Distribution":{"from":"PortfolioId","currency":"Ticker","per_share":"Balance","amount":"Balance","remaining":"Balance","reclaimed":"bool","payment_at":"Moment","expires_at":"Option"},"SlashingSwitch":{"_enum":["Validator","ValidatorAndNominator","None"]},"PriceTier":{"total":"Balance","price":"Balance"},"PermissionedIdentityPrefs":{"intended_count":"u32","running_count":"u32"},"GranularCanTransferResult":{"invalid_granularity":"bool","self_transfer":"bool","invalid_receiver_cdd":"bool","invalid_sender_cdd":"bool","missing_scope_claim":"bool","receiver_custodian_error":"bool","sender_custodian_error":"bool","sender_insufficient_balance":"bool","portfolio_validity_result":"PortfolioValidityResult","asset_frozen":"bool","transfer_condition_result":"Vec","compliance_result":"AssetComplianceResult","result":"bool"},"PortfolioValidityResult":{"receiver_is_same_portfolio":"bool","sender_portfolio_does_not_exist":"bool","receiver_portfolio_does_not_exist":"bool","sender_insufficient_balance":"bool","result":"bool"},"TransferConditionResult":{"condition":"TransferCondition","result":"bool"},"AGId":"u32","AgentGroup":{"_enum":{"Full":"","Custom":"AGId","ExceptMeta":"","PolymeshV1CAA":"","PolymeshV1PIA":""}},"ItnRewardStatus":{"_enum":{"Unclaimed":"Balance","Claimed":""}}} +} \ No newline at end of file diff --git a/scripts/cli/src/interfaces/lookup.ts b/scripts/cli/src/interfaces/lookup.ts index f1698df2eb..2ea2ca9f2b 100644 --- a/scripts/cli/src/interfaces/lookup.ts +++ b/scripts/cli/src/interfaces/lookup.ts @@ -762,7 +762,8 @@ export default { CUSIP: '[u8;9]', CINS: '[u8;9]', ISIN: '[u8;12]', - LEI: '[u8;20]' + LEI: '[u8;20]', + FIGI: '[u8;12]' } }, /** @@ -1347,11 +1348,12 @@ export default { _enum: ['Live', 'Frozen', 'Closed', 'ClosedEarly'] }, /** - * Lookup268: pallet_treasury::RawEvent + * Lookup268: pallet_treasury::RawEvent **/ PalletTreasuryRawEvent: { _enum: { - TreasuryDisbursement: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId,u128)', + TreasuryDisbursement: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId,AccountId32,u128)', + TreasuryDisbursementFailed: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityId,AccountId32,u128)', TreasuryReimbursement: '(PolymeshPrimitivesIdentityId,u128)' } }, @@ -1816,8 +1818,8 @@ export default { disableFrom: 'u64', expiry: 'Option', }, - remove_secondary_keys: { - keysToRemove: 'Vec', + remove_secondary_keys_old: { + keysToRemove: 'Vec', }, accept_primary_key: { rotationAuthId: 'u64', @@ -1839,10 +1841,11 @@ export default { target: 'PolymeshPrimitivesIdentityId', claim: 'PolymeshPrimitivesIdentityClaimClaim', }, - set_secondary_key_permissions: { - key: 'AccountId32', + set_permission_to_signer: { + key: 'PolymeshPrimitivesSecondaryKeySignatory', perms: 'PolymeshPrimitivesSecondaryKeyPermissions', }, + placeholder_legacy_set_permission_to_signer: 'Null', freeze_secondary_keys: 'Null', unfreeze_secondary_keys: 'Null', add_authorization: { @@ -1855,8 +1858,8 @@ export default { authId: 'u64', authIssuerPays: 'bool', }, - add_secondary_keys_with_authorization: { - additionalKeys: 'Vec', + add_secondary_keys_with_authorization_old: { + additionalKeys: 'Vec', expiresAt: 'u64', }, add_investor_uniqueness_claim: { @@ -1885,40 +1888,58 @@ export default { }, rotate_primary_key_to_secondary: { authId: 'u64', - optionalCddAuthId: 'Option' + optionalCddAuthId: 'Option', + }, + add_secondary_keys_with_authorization: { + additionalKeys: 'Vec', + expiresAt: 'u64', + }, + set_secondary_key_permissions: { + key: 'AccountId32', + perms: 'PolymeshPrimitivesSecondaryKeyPermissions', + }, + remove_secondary_keys: { + keysToRemove: 'Vec' } } }, /** - * Lookup353: polymesh_common_utilities::traits::identity::SecondaryKeyWithAuth + * Lookup353: polymesh_common_utilities::traits::identity::SecondaryKeyWithAuthV1 **/ - PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth: { - secondaryKey: 'PolymeshPrimitivesSecondaryKey', + PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuthV1: { + secondaryKey: 'PolymeshPrimitivesSecondaryKeyV1SecondaryKey', authSignature: 'H512' }, /** - * Lookup355: polymesh_primitives::investor_zkproof_data::v1::InvestorZKProofData + * Lookup354: polymesh_primitives::secondary_key::v1::SecondaryKey + **/ + PolymeshPrimitivesSecondaryKeyV1SecondaryKey: { + signer: 'PolymeshPrimitivesSecondaryKeySignatory', + permissions: 'PolymeshPrimitivesSecondaryKeyPermissions' + }, + /** + * Lookup356: polymesh_primitives::investor_zkproof_data::v1::InvestorZKProofData **/ PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData: 'SchnorrkelSignSignature', /** - * Lookup356: schnorrkel::sign::Signature + * Lookup357: schnorrkel::sign::Signature **/ SchnorrkelSignSignature: { r: 'Curve25519DalekRistrettoCompressedRistretto', s: 'Curve25519DalekScalar' }, /** - * Lookup357: curve25519_dalek::ristretto::CompressedRistretto + * Lookup358: curve25519_dalek::ristretto::CompressedRistretto **/ Curve25519DalekRistrettoCompressedRistretto: '[u8;32]', /** - * Lookup358: curve25519_dalek::scalar::Scalar + * Lookup359: curve25519_dalek::scalar::Scalar **/ Curve25519DalekScalar: { bytes: '[u8;32]' }, /** - * Lookup359: confidential_identity::claim_proofs::ScopeClaimProof + * Lookup360: confidential_identity::claim_proofs::ScopeClaimProof **/ ConfidentialIdentityClaimProofsScopeClaimProof: { proofScopeIdWellformed: 'ConfidentialIdentitySignSignature', @@ -1926,26 +1947,26 @@ export default { scopeId: 'Curve25519DalekRistrettoRistrettoPoint' }, /** - * Lookup360: confidential_identity::sign::Signature + * Lookup361: confidential_identity::sign::Signature **/ ConfidentialIdentitySignSignature: { r: 'Curve25519DalekRistrettoCompressedRistretto', s: 'Curve25519DalekScalar' }, /** - * Lookup361: confidential_identity::claim_proofs::ZkProofData + * Lookup362: confidential_identity::claim_proofs::ZkProofData **/ ConfidentialIdentityClaimProofsZkProofData: { - challengeResponses: '[Lookup358;2]', + challengeResponses: '[Lookup359;2]', subtractExpressionsRes: 'Curve25519DalekRistrettoRistrettoPoint', blindedScopeDidHash: 'Curve25519DalekRistrettoRistrettoPoint' }, /** - * Lookup363: curve25519_dalek::ristretto::RistrettoPoint + * Lookup364: curve25519_dalek::ristretto::RistrettoPoint **/ Curve25519DalekRistrettoRistrettoPoint: 'Curve25519DalekEdwardsEdwardsPoint', /** - * Lookup364: curve25519_dalek::edwards::EdwardsPoint + * Lookup365: curve25519_dalek::edwards::EdwardsPoint **/ Curve25519DalekEdwardsEdwardsPoint: { x: 'Curve25519DalekBackendSerialU64FieldFieldElement51', @@ -1954,17 +1975,24 @@ export default { t: 'Curve25519DalekBackendSerialU64FieldFieldElement51' }, /** - * Lookup365: curve25519_dalek::backend::serial::u64::field::FieldElement51 + * Lookup366: curve25519_dalek::backend::serial::u64::field::FieldElement51 **/ Curve25519DalekBackendSerialU64FieldFieldElement51: '[u64;5]', /** - * Lookup367: pallet_identity::Error + * Lookup369: polymesh_common_utilities::traits::identity::SecondaryKeyWithAuth + **/ + PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth: { + secondaryKey: 'PolymeshPrimitivesSecondaryKey', + authSignature: 'H512' + }, + /** + * Lookup370: pallet_identity::Error **/ PalletIdentityError: { _enum: ['AlreadyLinked', 'MissingCurrentIdentity', 'Unauthorized', 'InvalidAccountKey', 'UnAuthorizedCddProvider', 'InvalidAuthorizationFromOwner', 'InvalidAuthorizationFromCddProvider', 'NotCddProviderAttestation', 'AuthorizationsNotForSameDids', 'DidMustAlreadyExist', 'CurrentIdentityCannotBeForwarded', 'AuthorizationExpired', 'TargetHasNoCdd', 'AuthorizationHasBeenRevoked', 'InvalidAuthorizationSignature', 'KeyNotAllowed', 'NotPrimaryKey', 'DidDoesNotExist', 'DidAlreadyExists', 'SecondaryKeysContainPrimaryKey', 'FailedToChargeFee', 'NotASigner', 'CannotDecodeSignerAccountId', 'MultiSigHasBalance', 'ConfidentialScopeClaimNotAllowed', 'InvalidScopeClaim', 'ClaimVariantNotAllowed', 'TargetHasNonZeroBalanceAtScopeId', 'CDDIdNotUniqueForIdentity', 'InvalidCDDId', 'ClaimAndProofVersionsDoNotMatch', 'AccountKeyIsBeingUsed', 'CustomScopeTooLong'] }, /** - * Lookup369: polymesh_common_utilities::traits::group::InactiveMember + * Lookup372: polymesh_common_utilities::traits::group::InactiveMember **/ PolymeshCommonUtilitiesGroupInactiveMember: { id: 'PolymeshPrimitivesIdentityId', @@ -1972,7 +2000,7 @@ export default { expiry: 'Option' }, /** - * Lookup370: pallet_group::Call + * Lookup373: pallet_group::Call **/ PalletGroupCall: { _enum: { @@ -2001,13 +2029,13 @@ export default { } }, /** - * Lookup371: pallet_group::Error + * Lookup374: pallet_group::Error **/ PalletGroupError: { _enum: ['OnlyPrimaryKeyAllowed', 'DuplicateMember', 'NoSuchMember', 'LastMemberCannotQuit', 'MissingCurrentIdentity', 'ActiveMembersLimitExceeded', 'ActiveMembersLimitOverflow'] }, /** - * Lookup373: pallet_committee::Call + * Lookup376: pallet_committee::Call **/ PalletCommitteeCall: { _enum: { @@ -2033,7 +2061,7 @@ export default { } }, /** - * Lookup379: pallet_multisig::Call + * Lookup382: pallet_multisig::Call **/ PalletMultisigCall: { _enum: { @@ -2120,7 +2148,7 @@ export default { } }, /** - * Lookup380: pallet_bridge::Call + * Lookup383: pallet_bridge::Call **/ PalletBridgeCall: { _enum: { @@ -2175,7 +2203,7 @@ export default { } }, /** - * Lookup384: pallet_staking::Call + * Lookup387: pallet_staking::Call **/ PalletStakingCall: { _enum: { @@ -2297,7 +2325,7 @@ export default { } }, /** - * Lookup385: pallet_staking::RewardDestination + * Lookup388: pallet_staking::RewardDestination **/ PalletStakingRewardDestination: { _enum: { @@ -2308,14 +2336,14 @@ export default { } }, /** - * Lookup386: pallet_staking::ValidatorPrefs + * Lookup389: pallet_staking::ValidatorPrefs **/ PalletStakingValidatorPrefs: { commission: 'Compact', blocked: 'bool' }, /** - * Lookup392: pallet_staking::CompactAssignments + * Lookup395: pallet_staking::CompactAssignments **/ PalletStakingCompactAssignments: { votes1: 'Vec<(Compact,Compact)>', @@ -2336,14 +2364,14 @@ export default { votes16: 'Vec<(Compact,[(Compact,Compact);15],Compact)>' }, /** - * Lookup444: pallet_staking::ElectionSize + * Lookup447: pallet_staking::ElectionSize **/ PalletStakingElectionSize: { validators: 'Compact', nominators: 'Compact' }, /** - * Lookup445: pallet_session::pallet::Call + * Lookup448: pallet_session::pallet::Call **/ PalletSessionCall: { _enum: { @@ -2358,7 +2386,7 @@ export default { } }, /** - * Lookup446: polymesh_runtime_develop::runtime::SessionKeys + * Lookup449: polymesh_runtime_develop::runtime::SessionKeys **/ PolymeshRuntimeDevelopRuntimeSessionKeys: { grandpa: 'SpFinalityGrandpaAppPublic', @@ -2367,11 +2395,11 @@ export default { authorityDiscovery: 'SpAuthorityDiscoveryAppPublic' }, /** - * Lookup447: sp_authority_discovery::app::Public + * Lookup450: sp_authority_discovery::app::Public **/ SpAuthorityDiscoveryAppPublic: 'SpCoreSr25519Public', /** - * Lookup448: pallet_grandpa::pallet::Call + * Lookup451: pallet_grandpa::pallet::Call **/ PalletGrandpaCall: { _enum: { @@ -2390,14 +2418,14 @@ export default { } }, /** - * Lookup449: sp_finality_grandpa::EquivocationProof + * Lookup452: sp_finality_grandpa::EquivocationProof **/ SpFinalityGrandpaEquivocationProof: { setId: 'u64', equivocation: 'SpFinalityGrandpaEquivocation' }, /** - * Lookup450: sp_finality_grandpa::Equivocation + * Lookup453: sp_finality_grandpa::Equivocation **/ SpFinalityGrandpaEquivocation: { _enum: { @@ -2406,7 +2434,7 @@ export default { } }, /** - * Lookup451: finality_grandpa::Equivocation, sp_finality_grandpa::app::Signature> + * Lookup454: finality_grandpa::Equivocation, sp_finality_grandpa::app::Signature> **/ FinalityGrandpaEquivocationPrevote: { roundNumber: 'u64', @@ -2415,22 +2443,22 @@ export default { second: '(FinalityGrandpaPrevote,SpFinalityGrandpaAppSignature)' }, /** - * Lookup452: finality_grandpa::Prevote + * Lookup455: finality_grandpa::Prevote **/ FinalityGrandpaPrevote: { targetHash: 'H256', targetNumber: 'u32' }, /** - * Lookup453: sp_finality_grandpa::app::Signature + * Lookup456: sp_finality_grandpa::app::Signature **/ SpFinalityGrandpaAppSignature: 'SpCoreEd25519Signature', /** - * Lookup454: sp_core::ed25519::Signature + * Lookup457: sp_core::ed25519::Signature **/ SpCoreEd25519Signature: '[u8;64]', /** - * Lookup456: finality_grandpa::Equivocation, sp_finality_grandpa::app::Signature> + * Lookup459: finality_grandpa::Equivocation, sp_finality_grandpa::app::Signature> **/ FinalityGrandpaEquivocationPrecommit: { roundNumber: 'u64', @@ -2439,14 +2467,14 @@ export default { second: '(FinalityGrandpaPrecommit,SpFinalityGrandpaAppSignature)' }, /** - * Lookup457: finality_grandpa::Precommit + * Lookup460: finality_grandpa::Precommit **/ FinalityGrandpaPrecommit: { targetHash: 'H256', targetNumber: 'u32' }, /** - * Lookup459: pallet_im_online::pallet::Call + * Lookup462: pallet_im_online::pallet::Call **/ PalletImOnlineCall: { _enum: { @@ -2457,7 +2485,7 @@ export default { } }, /** - * Lookup460: pallet_im_online::Heartbeat + * Lookup463: pallet_im_online::Heartbeat **/ PalletImOnlineHeartbeat: { blockNumber: 'u32', @@ -2467,22 +2495,22 @@ export default { validatorsLen: 'u32' }, /** - * Lookup461: sp_core::offchain::OpaqueNetworkState + * Lookup464: sp_core::offchain::OpaqueNetworkState **/ SpCoreOffchainOpaqueNetworkState: { peerId: 'Bytes', externalAddresses: 'Vec' }, /** - * Lookup465: pallet_im_online::sr25519::app_sr25519::Signature + * Lookup468: pallet_im_online::sr25519::app_sr25519::Signature **/ PalletImOnlineSr25519AppSr25519Signature: 'SpCoreSr25519Signature', /** - * Lookup466: sp_core::sr25519::Signature + * Lookup469: sp_core::sr25519::Signature **/ SpCoreSr25519Signature: '[u8;64]', /** - * Lookup467: pallet_sudo::Call + * Lookup470: pallet_sudo::Call **/ PalletSudoCall: { _enum: { @@ -2506,7 +2534,7 @@ export default { } }, /** - * Lookup468: pallet_asset::Call + * Lookup471: pallet_asset::Call **/ PalletAssetCall: { _enum: { @@ -2621,11 +2649,11 @@ export default { } }, /** - * Lookup471: polymesh_primitives::ethereum::EcdsaSignature + * Lookup474: polymesh_primitives::ethereum::EcdsaSignature **/ PolymeshPrimitivesEthereumEcdsaSignature: '[u8;65]', /** - * Lookup473: pallet_asset::ClassicTickerImport + * Lookup476: pallet_asset::ClassicTickerImport **/ PalletAssetClassicTickerImport: { ethOwner: 'PolymeshPrimitivesEthereumEthereumAddress', @@ -2634,14 +2662,14 @@ export default { isCreated: 'bool' }, /** - * Lookup474: pallet_asset::TickerRegistrationConfig + * Lookup477: pallet_asset::TickerRegistrationConfig **/ PalletAssetTickerRegistrationConfig: { maxTickerLength: 'u8', registrationLength: 'Option' }, /** - * Lookup475: polymesh_primitives::asset_metadata::AssetMetadataKey + * Lookup478: polymesh_primitives::asset_metadata::AssetMetadataKey **/ PolymeshPrimitivesAssetMetadataAssetMetadataKey: { _enum: { @@ -2650,7 +2678,7 @@ export default { } }, /** - * Lookup476: pallet_corporate_actions::distribution::Call + * Lookup479: pallet_corporate_actions::distribution::Call **/ PalletCorporateActionsDistributionCall: { _enum: { @@ -2679,7 +2707,7 @@ export default { } }, /** - * Lookup478: pallet_asset::checkpoint::Call + * Lookup481: pallet_asset::checkpoint::Call **/ PalletAssetCheckpointCall: { _enum: { @@ -2700,7 +2728,7 @@ export default { } }, /** - * Lookup479: pallet_asset::checkpoint::ScheduleSpec + * Lookup482: pallet_asset::checkpoint::ScheduleSpec **/ PalletAssetCheckpointScheduleSpec: { start: 'Option', @@ -2708,7 +2736,7 @@ export default { remaining: 'u32' }, /** - * Lookup480: pallet_compliance_manager::Call + * Lookup483: pallet_compliance_manager::Call **/ PalletComplianceManagerCall: { _enum: { @@ -2749,7 +2777,7 @@ export default { } }, /** - * Lookup481: pallet_corporate_actions::Call + * Lookup484: pallet_corporate_actions::Call **/ PalletCorporateActionsCall: { _enum: { @@ -2802,7 +2830,7 @@ export default { } }, /** - * Lookup483: pallet_corporate_actions::RecordDateSpec + * Lookup486: pallet_corporate_actions::RecordDateSpec **/ PalletCorporateActionsRecordDateSpec: { _enum: { @@ -2812,7 +2840,7 @@ export default { } }, /** - * Lookup486: pallet_corporate_actions::InitiateCorporateActionArgs + * Lookup489: pallet_corporate_actions::InitiateCorporateActionArgs **/ PalletCorporateActionsInitiateCorporateActionArgs: { ticker: 'PolymeshPrimitivesTicker', @@ -2825,7 +2853,7 @@ export default { withholdingTax: 'Option>' }, /** - * Lookup487: pallet_corporate_actions::ballot::Call + * Lookup490: pallet_corporate_actions::ballot::Call **/ PalletCorporateActionsBallotCall: { _enum: { @@ -2857,7 +2885,7 @@ export default { } }, /** - * Lookup488: pallet_pips::Call + * Lookup491: pallet_pips::Call **/ PalletPipsCall: { _enum: { @@ -2918,13 +2946,13 @@ export default { } }, /** - * Lookup491: pallet_pips::SnapshotResult + * Lookup494: pallet_pips::SnapshotResult **/ PalletPipsSnapshotResult: { _enum: ['Approve', 'Reject', 'Skip'] }, /** - * Lookup492: pallet_portfolio::Call + * Lookup495: pallet_portfolio::Call **/ PalletPortfolioCall: { _enum: { @@ -2952,7 +2980,7 @@ export default { } }, /** - * Lookup494: pallet_portfolio::MovePortfolioItem + * Lookup497: pallet_portfolio::MovePortfolioItem **/ PalletPortfolioMovePortfolioItem: { ticker: 'PolymeshPrimitivesTicker', @@ -2960,7 +2988,7 @@ export default { memo: 'Option' }, /** - * Lookup495: pallet_protocol_fee::Call + * Lookup498: pallet_protocol_fee::Call **/ PalletProtocolFeeCall: { _enum: { @@ -2974,13 +3002,13 @@ export default { } }, /** - * Lookup496: polymesh_common_utilities::protocol_fee::ProtocolOp + * Lookup499: polymesh_common_utilities::protocol_fee::ProtocolOp **/ PolymeshCommonUtilitiesProtocolFeeProtocolOp: { _enum: ['AssetRegisterTicker', 'AssetIssue', 'AssetAddDocuments', 'AssetCreateAsset', 'CheckpointCreateSchedule', 'ComplianceManagerAddComplianceRequirement', 'IdentityCddRegisterDid', 'IdentityAddClaim', 'IdentityAddSecondaryKeysWithAuthorization', 'PipsPropose', 'ContractsPutCode', 'CorporateBallotAttachBallot', 'CapitalDistributionDistribute'] }, /** - * Lookup497: pallet_scheduler::pallet::Call + * Lookup500: pallet_scheduler::pallet::Call **/ PalletSchedulerCall: { _enum: { @@ -3020,7 +3048,7 @@ export default { } }, /** - * Lookup499: pallet_settlement::Call + * Lookup502: pallet_settlement::Call **/ PalletSettlementCall: { _enum: { @@ -3107,7 +3135,7 @@ export default { } }, /** - * Lookup501: pallet_settlement::ReceiptDetails + * Lookup504: pallet_settlement::ReceiptDetails **/ PalletSettlementReceiptDetails: { receiptUid: 'u64', @@ -3117,7 +3145,7 @@ export default { metadata: 'Bytes' }, /** - * Lookup502: sp_runtime::MultiSignature + * Lookup505: sp_runtime::MultiSignature **/ SpRuntimeMultiSignature: { _enum: { @@ -3127,11 +3155,11 @@ export default { } }, /** - * Lookup503: sp_core::ecdsa::Signature + * Lookup506: sp_core::ecdsa::Signature **/ SpCoreEcdsaSignature: '[u8;65]', /** - * Lookup504: pallet_statistics::Call + * Lookup507: pallet_statistics::Call **/ PalletStatisticsCall: { _enum: { @@ -3156,23 +3184,23 @@ export default { } }, /** - * Lookup505: BTreeSet + * Lookup508: BTreeSet **/ BTreeSetStatType: 'Vec', /** - * Lookup506: BTreeSet + * Lookup509: BTreeSet **/ BTreeSetStatUpdate: 'Vec', /** - * Lookup507: BTreeSet + * Lookup510: BTreeSet **/ BTreeSetTransferCondition: 'Vec', /** - * Lookup508: BTreeSet + * Lookup511: BTreeSet **/ BTreeSetIdentityId: 'Vec', /** - * Lookup509: pallet_sto::Call + * Lookup512: pallet_sto::Call **/ PalletStoCall: { _enum: { @@ -3218,14 +3246,14 @@ export default { } }, /** - * Lookup511: pallet_sto::PriceTier + * Lookup514: pallet_sto::PriceTier **/ PalletStoPriceTier: { total: 'u128', price: 'u128' }, /** - * Lookup513: pallet_treasury::Call + * Lookup516: pallet_treasury::Call **/ PalletTreasuryCall: { _enum: { @@ -3238,14 +3266,14 @@ export default { } }, /** - * Lookup515: polymesh_primitives::Beneficiary + * Lookup518: polymesh_primitives::Beneficiary **/ PolymeshPrimitivesBeneficiary: { id: 'PolymeshPrimitivesIdentityId', amount: 'u128' }, /** - * Lookup516: pallet_utility::Call + * Lookup519: pallet_utility::Call **/ PalletUtilityCall: { _enum: { @@ -3266,18 +3294,18 @@ export default { } }, /** - * Lookup518: pallet_utility::UniqueCall + * Lookup521: pallet_utility::UniqueCall **/ PalletUtilityUniqueCall: { nonce: 'u64', call: 'Call' }, /** - * Lookup519: pallet_base::Call + * Lookup522: pallet_base::Call **/ PalletBaseCall: 'Null', /** - * Lookup520: pallet_external_agents::Call + * Lookup523: pallet_external_agents::Call **/ PalletExternalAgentsCall: { _enum: { @@ -3318,7 +3346,7 @@ export default { } }, /** - * Lookup521: pallet_relayer::Call + * Lookup524: pallet_relayer::Call **/ PalletRelayerCall: { _enum: { @@ -3348,7 +3376,7 @@ export default { } }, /** - * Lookup522: pallet_rewards::Call + * Lookup525: pallet_rewards::Call **/ PalletRewardsCall: { _enum: { @@ -3364,7 +3392,7 @@ export default { } }, /** - * Lookup523: pallet_rewards::ItnRewardStatus + * Lookup526: pallet_rewards::ItnRewardStatus **/ PalletRewardsItnRewardStatus: { _enum: { @@ -3373,7 +3401,7 @@ export default { } }, /** - * Lookup524: pallet_test_utils::Call + * Lookup527: pallet_test_utils::Call **/ PalletTestUtilsCall: { _enum: { @@ -3391,7 +3419,7 @@ export default { } }, /** - * Lookup525: pallet_committee::PolymeshVotes + * Lookup528: pallet_committee::PolymeshVotes **/ PalletCommitteePolymeshVotes: { index: 'u32', @@ -3400,13 +3428,13 @@ export default { expiry: 'PolymeshCommonUtilitiesMaybeBlock' }, /** - * Lookup527: pallet_committee::Error + * Lookup530: pallet_committee::Error **/ PalletCommitteeError: { _enum: ['DuplicateVote', 'NotAMember', 'NoSuchProposal', 'ProposalExpired', 'DuplicateProposal', 'MismatchedVotingIndex', 'InvalidProportion', 'FirstVoteReject', 'ProposalsLimitReached'] }, /** - * Lookup537: pallet_multisig::ProposalDetails + * Lookup540: pallet_multisig::ProposalDetails **/ PalletMultisigProposalDetails: { approvals: 'u64', @@ -3416,19 +3444,19 @@ export default { autoClose: 'bool' }, /** - * Lookup538: pallet_multisig::ProposalStatus + * Lookup541: pallet_multisig::ProposalStatus **/ PalletMultisigProposalStatus: { _enum: ['Invalid', 'ActiveOrExpired', 'ExecutionSuccessful', 'ExecutionFailed', 'Rejected'] }, /** - * Lookup540: pallet_multisig::Error + * Lookup543: pallet_multisig::Error **/ PalletMultisigError: { - _enum: ['CddMissing', 'ProposalMissing', 'DecodingError', 'NoSigners', 'RequiredSignaturesOutOfBounds', 'NotASigner', 'NoSuchMultisig', 'NotEnoughSigners', 'NonceOverflow', 'AlreadyVoted', 'AlreadyASigner', 'FailedToChargeFee', 'IdentityNotCreator', 'ChangeNotAllowed', 'SignerAlreadyLinkedToMultisig', 'SignerAlreadyLinkedToIdentity', 'SignerSameAsMultisig', 'MissingCurrentIdentity', 'NotPrimaryKey', 'ProposalAlreadyRejected', 'ProposalExpired', 'ProposalAlreadyExecuted', 'MultisigMissingIdentity', 'FailedToSchedule', 'TooManySigners'] + _enum: ['CddMissing', 'ProposalMissing', 'DecodingError', 'NoSigners', 'RequiredSignaturesOutOfBounds', 'NotASigner', 'NoSuchMultisig', 'NotEnoughSigners', 'NonceOverflow', 'AlreadyVoted', 'AlreadyASigner', 'FailedToChargeFee', 'IdentityNotCreator', 'ChangeNotAllowed', 'SignerAlreadyLinkedToMultisig', 'SignerAlreadyLinkedToIdentity', 'MultisigNotAllowedToLinkToItself', 'MissingCurrentIdentity', 'NotPrimaryKey', 'ProposalAlreadyRejected', 'ProposalExpired', 'ProposalAlreadyExecuted', 'MultisigMissingIdentity', 'FailedToSchedule', 'TooManySigners'] }, /** - * Lookup542: pallet_bridge::BridgeTxDetail + * Lookup545: pallet_bridge::BridgeTxDetail **/ PalletBridgeBridgeTxDetail: { amount: 'u128', @@ -3437,7 +3465,7 @@ export default { txHash: 'H256' }, /** - * Lookup543: pallet_bridge::BridgeTxStatus + * Lookup546: pallet_bridge::BridgeTxStatus **/ PalletBridgeBridgeTxStatus: { _enum: { @@ -3449,13 +3477,13 @@ export default { } }, /** - * Lookup546: pallet_bridge::Error + * Lookup549: pallet_bridge::Error **/ PalletBridgeError: { _enum: ['ControllerNotSet', 'BadCaller', 'BadAdmin', 'NoValidCdd', 'ProposalAlreadyHandled', 'Unauthorized', 'Frozen', 'NotFrozen', 'FrozenTx', 'BridgeLimitReached', 'Overflow', 'DivisionByZero', 'TimelockedTx'] }, /** - * Lookup547: pallet_staking::StakingLedger + * Lookup550: pallet_staking::StakingLedger **/ PalletStakingStakingLedger: { stash: 'AccountId32', @@ -3465,14 +3493,14 @@ export default { claimedRewards: 'Vec' }, /** - * Lookup549: pallet_staking::UnlockChunk + * Lookup552: pallet_staking::UnlockChunk **/ PalletStakingUnlockChunk: { value: 'Compact', era: 'Compact' }, /** - * Lookup550: pallet_staking::Nominations + * Lookup553: pallet_staking::Nominations **/ PalletStakingNominations: { targets: 'Vec', @@ -3480,27 +3508,27 @@ export default { suppressed: 'bool' }, /** - * Lookup551: pallet_staking::ActiveEraInfo + * Lookup554: pallet_staking::ActiveEraInfo **/ PalletStakingActiveEraInfo: { index: 'u32', start: 'Option' }, /** - * Lookup553: pallet_staking::EraRewardPoints + * Lookup556: pallet_staking::EraRewardPoints **/ PalletStakingEraRewardPoints: { total: 'u32', individual: 'BTreeMap' }, /** - * Lookup556: pallet_staking::Forcing + * Lookup559: pallet_staking::Forcing **/ PalletStakingForcing: { _enum: ['NotForcing', 'ForceNew', 'ForceNone', 'ForceAlways'] }, /** - * Lookup558: pallet_staking::UnappliedSlash + * Lookup561: pallet_staking::UnappliedSlash **/ PalletStakingUnappliedSlash: { validator: 'AccountId32', @@ -3510,7 +3538,7 @@ export default { payout: 'u128' }, /** - * Lookup562: pallet_staking::slashing::SlashingSpans + * Lookup565: pallet_staking::slashing::SlashingSpans **/ PalletStakingSlashingSlashingSpans: { spanIndex: 'u32', @@ -3519,14 +3547,14 @@ export default { prior: 'Vec' }, /** - * Lookup563: pallet_staking::slashing::SpanRecord + * Lookup566: pallet_staking::slashing::SpanRecord **/ PalletStakingSlashingSpanRecord: { slashed: 'u128', paidOut: 'u128' }, /** - * Lookup564: pallet_staking::ElectionResult + * Lookup567: pallet_staking::ElectionResult **/ PalletStakingElectionResult: { electedStashes: 'Vec', @@ -3534,7 +3562,7 @@ export default { compute: 'PalletStakingElectionCompute' }, /** - * Lookup565: pallet_staking::ElectionStatus + * Lookup568: pallet_staking::ElectionStatus **/ PalletStakingElectionStatus: { _enum: { @@ -3543,43 +3571,43 @@ export default { } }, /** - * Lookup566: pallet_staking::PermissionedIdentityPrefs + * Lookup569: pallet_staking::PermissionedIdentityPrefs **/ PalletStakingPermissionedIdentityPrefs: { intendedCount: 'u32', runningCount: 'u32' }, /** - * Lookup567: pallet_staking::Releases + * Lookup570: pallet_staking::Releases **/ PalletStakingReleases: { _enum: ['V1_0_0Ancient', 'V2_0_0', 'V3_0_0', 'V4_0_0', 'V5_0_0', 'V6_0_0', 'V6_0_1', 'V7_0_0'] }, /** - * Lookup568: pallet_staking::Error + * Lookup571: pallet_staking::Error **/ PalletStakingError: { _enum: ['NotController', 'NotStash', 'AlreadyBonded', 'AlreadyPaired', 'EmptyTargets', 'InvalidSlashIndex', 'InsufficientValue', 'NoMoreChunks', 'NoUnlockChunk', 'FundedTarget', 'InvalidEraToReward', 'NotSortedAndUnique', 'AlreadyClaimed', 'OffchainElectionEarlySubmission', 'OffchainElectionWeakSubmission', 'SnapshotUnavailable', 'OffchainElectionBogusWinnerCount', 'OffchainElectionBogusWinner', 'OffchainElectionBogusCompact', 'OffchainElectionBogusNominator', 'OffchainElectionBogusNomination', 'OffchainElectionSlashedNomination', 'OffchainElectionBogusSelfVote', 'OffchainElectionBogusEdge', 'OffchainElectionBogusScore', 'OffchainElectionBogusElectionSize', 'CallNotAllowed', 'IncorrectSlashingSpans', 'AlreadyExists', 'NotExists', 'NoChange', 'InvalidValidatorIdentity', 'InvalidValidatorCommission', 'StashIdentityDoesNotExist', 'StashIdentityNotPermissioned', 'StashIdentityNotCDDed', 'HitIntendedValidatorCount', 'IntendedCountIsExceedingConsensusLimit', 'BondTooSmall', 'BadState', 'TooManyTargets', 'BadTarget'] }, /** - * Lookup569: sp_staking::offence::OffenceDetails + * Lookup572: sp_staking::offence::OffenceDetails **/ SpStakingOffenceOffenceDetails: { offender: '(AccountId32,PalletStakingExposure)', reporters: 'Vec' }, /** - * Lookup574: sp_core::crypto::KeyTypeId + * Lookup577: sp_core::crypto::KeyTypeId **/ SpCoreCryptoKeyTypeId: '[u8;4]', /** - * Lookup575: pallet_session::pallet::Error + * Lookup578: pallet_session::pallet::Error **/ PalletSessionError: { _enum: ['InvalidProof', 'NoAssociatedValidatorId', 'DuplicatedKey', 'NoKeys', 'NoAccount'] }, /** - * Lookup576: pallet_grandpa::StoredState + * Lookup579: pallet_grandpa::StoredState **/ PalletGrandpaStoredState: { _enum: { @@ -3596,7 +3624,7 @@ export default { } }, /** - * Lookup577: pallet_grandpa::StoredPendingChange + * Lookup580: pallet_grandpa::StoredPendingChange **/ PalletGrandpaStoredPendingChange: { scheduledAt: 'u32', @@ -3605,39 +3633,39 @@ export default { forced: 'Option' }, /** - * Lookup579: pallet_grandpa::pallet::Error + * Lookup582: pallet_grandpa::pallet::Error **/ PalletGrandpaError: { _enum: ['PauseFailed', 'ResumeFailed', 'ChangePending', 'TooSoon', 'InvalidKeyOwnershipProof', 'InvalidEquivocationProof', 'DuplicateOffenceReport'] }, /** - * Lookup583: pallet_im_online::BoundedOpaqueNetworkState + * Lookup586: pallet_im_online::BoundedOpaqueNetworkState **/ PalletImOnlineBoundedOpaqueNetworkState: { peerId: 'Bytes', externalAddresses: 'Vec' }, /** - * Lookup587: pallet_im_online::pallet::Error + * Lookup590: pallet_im_online::pallet::Error **/ PalletImOnlineError: { _enum: ['InvalidKey', 'DuplicatedHeartbeat'] }, /** - * Lookup588: pallet_sudo::Error + * Lookup591: pallet_sudo::Error **/ PalletSudoError: { _enum: ['RequireSudo'] }, /** - * Lookup589: pallet_asset::TickerRegistration + * Lookup592: pallet_asset::TickerRegistration **/ PalletAssetTickerRegistration: { owner: 'PolymeshPrimitivesIdentityId', expiry: 'Option' }, /** - * Lookup590: pallet_asset::SecurityToken + * Lookup593: pallet_asset::SecurityToken **/ PalletAssetSecurityToken: { totalSupply: 'u128', @@ -3646,69 +3674,69 @@ export default { assetType: 'PolymeshPrimitivesAssetAssetType' }, /** - * Lookup594: pallet_asset::AssetOwnershipRelation + * Lookup597: pallet_asset::AssetOwnershipRelation **/ PalletAssetAssetOwnershipRelation: { _enum: ['NotOwned', 'TickerOwned', 'AssetOwned'] }, /** - * Lookup596: pallet_asset::ClassicTickerRegistration + * Lookup599: pallet_asset::ClassicTickerRegistration **/ PalletAssetClassicTickerRegistration: { ethOwner: 'PolymeshPrimitivesEthereumEthereumAddress', isCreated: 'bool' }, /** - * Lookup602: pallet_asset::Error + * Lookup605: pallet_asset::Error **/ PalletAssetError: { _enum: ['Unauthorized', 'AlreadyArchived', 'AlreadyUnArchived', 'ExtensionAlreadyPresent', 'AssetAlreadyCreated', 'TickerTooLong', 'TickerNotAscii', 'TickerAlreadyRegistered', 'TotalSupplyAboveLimit', 'NoSuchAsset', 'AlreadyFrozen', 'NotAnOwner', 'BalanceOverflow', 'TotalSupplyOverflow', 'InvalidGranularity', 'NotFrozen', 'InvalidTransfer', 'InsufficientBalance', 'AssetAlreadyDivisible', 'MaximumTMExtensionLimitReached', 'IncompatibleExtensionVersion', 'InvalidEthereumSignature', 'NoSuchClassicTicker', 'TickerRegistrationExpired', 'SenderSameAsReceiver', 'NoSuchDoc', 'MaxLengthOfAssetNameExceeded', 'FundingRoundNameMaxLengthExceeded', 'InvalidAssetIdentifier', 'InvestorUniquenessClaimNotAllowed', 'InvalidCustomAssetTypeId', 'AssetMetadataNameMaxLengthExceeded', 'AssetMetadataValueMaxLengthExceeded', 'AssetMetadataTypeDefMaxLengthExceeded', 'AssetMetadataKeyIsMissing', 'AssetMetadataValueIsLocked', 'AssetMetadataLocalKeyAlreadyExists', 'AssetMetadataGlobalKeyAlreadyExists'] }, /** - * Lookup605: pallet_corporate_actions::distribution::Error + * Lookup608: pallet_corporate_actions::distribution::Error **/ PalletCorporateActionsDistributionError: { _enum: ['CANotBenefit', 'AlreadyExists', 'ExpiryBeforePayment', 'DistributingAsset', 'HolderAlreadyPaid', 'NoSuchDistribution', 'CannotClaimBeforeStart', 'CannotClaimAfterExpiry', 'BalancePerShareProductOverflowed', 'NotDistributionCreator', 'AlreadyReclaimed', 'NotExpired', 'DistributionStarted', 'InsufficientRemainingAmount'] }, /** - * Lookup612: pallet_asset::checkpoint::Error + * Lookup615: pallet_asset::checkpoint::Error **/ PalletAssetCheckpointError: { _enum: ['NoSuchSchedule', 'ScheduleNotRemovable', 'FailedToComputeNextCheckpoint', 'ScheduleDurationTooShort', 'SchedulesTooComplex'] }, /** - * Lookup613: polymesh_primitives::compliance_manager::AssetCompliance + * Lookup616: polymesh_primitives::compliance_manager::AssetCompliance **/ PolymeshPrimitivesComplianceManagerAssetCompliance: { paused: 'bool', requirements: 'Vec' }, /** - * Lookup615: pallet_compliance_manager::Error + * Lookup618: pallet_compliance_manager::Error **/ PalletComplianceManagerError: { _enum: ['Unauthorized', 'DidNotExist', 'InvalidComplianceRequirementId', 'IncorrectOperationOnTrustedIssuer', 'DuplicateComplianceRequirements', 'ComplianceRequirementTooComplex'] }, /** - * Lookup618: pallet_corporate_actions::Error + * Lookup621: pallet_corporate_actions::Error **/ PalletCorporateActionsError: { _enum: ['AuthNotCAATransfer', 'DetailsTooLong', 'DuplicateDidTax', 'TooManyDidTaxes', 'TooManyTargetIds', 'NoSuchCheckpointId', 'NoSuchCA', 'NoRecordDate', 'RecordDateAfterStart', 'DeclDateAfterRecordDate', 'DeclDateInFuture', 'NotTargetedByCA'] }, /** - * Lookup620: pallet_corporate_actions::ballot::Error + * Lookup623: pallet_corporate_actions::ballot::Error **/ PalletCorporateActionsBallotError: { _enum: ['CANotNotice', 'AlreadyExists', 'NoSuchBallot', 'StartAfterEnd', 'NowAfterEnd', 'NumberOfChoicesOverflow', 'VotingAlreadyStarted', 'VotingNotStarted', 'VotingAlreadyEnded', 'WrongVoteCount', 'InsufficientVotes', 'NoSuchRCVFallback', 'RCVSelfCycle', 'RCVNotAllowed'] }, /** - * Lookup621: pallet_permissions::Error + * Lookup624: pallet_permissions::Error **/ PalletPermissionsError: { _enum: ['UnauthorizedCaller'] }, /** - * Lookup622: pallet_pips::PipsMetadata + * Lookup625: pallet_pips::PipsMetadata **/ PalletPipsPipsMetadata: { id: 'u32', @@ -3719,14 +3747,14 @@ export default { expiry: 'PolymeshCommonUtilitiesMaybeBlock' }, /** - * Lookup624: pallet_pips::DepositInfo + * Lookup627: pallet_pips::DepositInfo **/ PalletPipsDepositInfo: { owner: 'AccountId32', amount: 'u128' }, /** - * Lookup625: pallet_pips::Pip + * Lookup628: pallet_pips::Pip **/ PalletPipsPip: { id: 'u32', @@ -3735,7 +3763,7 @@ export default { proposer: 'PalletPipsProposer' }, /** - * Lookup626: pallet_pips::VotingResult + * Lookup629: pallet_pips::VotingResult **/ PalletPipsVotingResult: { ayesCount: 'u32', @@ -3744,11 +3772,11 @@ export default { naysStake: 'u128' }, /** - * Lookup627: pallet_pips::Vote + * Lookup630: pallet_pips::Vote **/ PalletPipsVote: '(bool,u128)', /** - * Lookup628: pallet_pips::SnapshotMetadata + * Lookup631: pallet_pips::SnapshotMetadata **/ PalletPipsSnapshotMetadata: { createdAt: 'u32', @@ -3756,25 +3784,25 @@ export default { id: 'u32' }, /** - * Lookup630: pallet_pips::Error + * Lookup633: pallet_pips::Error **/ PalletPipsError: { _enum: ['RescheduleNotByReleaseCoordinator', 'NotFromCommunity', 'NotByCommittee', 'TooManyActivePips', 'IncorrectDeposit', 'InsufficientDeposit', 'NoSuchProposal', 'NotACommitteeMember', 'InvalidFutureBlockNumber', 'NumberOfVotesExceeded', 'StakeAmountOfVotesExceeded', 'MissingCurrentIdentity', 'IncorrectProposalState', 'CannotSkipPip', 'SnapshotResultTooLarge', 'SnapshotIdMismatch', 'ScheduledProposalDoesntExist', 'ProposalNotInScheduledState'] }, /** - * Lookup636: pallet_portfolio::Error + * Lookup639: pallet_portfolio::Error **/ PalletPortfolioError: { _enum: ['PortfolioDoesNotExist', 'InsufficientPortfolioBalance', 'DestinationIsSamePortfolio', 'PortfolioNameAlreadyInUse', 'SecondaryKeyNotAuthorizedForPortfolio', 'UnauthorizedCustodian', 'InsufficientTokensLocked', 'PortfolioNotEmpty', 'DifferentIdentityPortfolios'] }, /** - * Lookup637: pallet_protocol_fee::Error + * Lookup640: pallet_protocol_fee::Error **/ PalletProtocolFeeError: { _enum: ['InsufficientAccountBalance', 'UnHandledImbalances', 'InsufficientSubsidyBalance'] }, /** - * Lookup640: pallet_scheduler::ScheduledV2 + * Lookup643: pallet_scheduler::ScheduledV2 **/ PalletSchedulerScheduledV2: { maybeId: 'Option', @@ -3784,7 +3812,7 @@ export default { origin: 'PolymeshRuntimeDevelopRuntimeOriginCaller' }, /** - * Lookup641: polymesh_runtime_develop::runtime::OriginCaller + * Lookup644: polymesh_runtime_develop::runtime::OriginCaller **/ PolymeshRuntimeDevelopRuntimeOriginCaller: { _enum: { @@ -3805,7 +3833,7 @@ export default { } }, /** - * Lookup642: frame_system::RawOrigin + * Lookup645: frame_system::RawOrigin **/ FrameSystemRawOrigin: { _enum: { @@ -3815,48 +3843,48 @@ export default { } }, /** - * Lookup643: pallet_committee::RawOrigin + * Lookup646: pallet_committee::RawOrigin **/ PalletCommitteeRawOriginInstance1: { _enum: ['Endorsed'] }, /** - * Lookup644: pallet_committee::RawOrigin + * Lookup647: pallet_committee::RawOrigin **/ PalletCommitteeRawOriginInstance3: { _enum: ['Endorsed'] }, /** - * Lookup645: pallet_committee::RawOrigin + * Lookup648: pallet_committee::RawOrigin **/ PalletCommitteeRawOriginInstance4: { _enum: ['Endorsed'] }, /** - * Lookup646: sp_core::Void + * Lookup649: sp_core::Void **/ SpCoreVoid: 'Null', /** - * Lookup647: pallet_scheduler::Releases + * Lookup650: pallet_scheduler::Releases **/ PalletSchedulerReleases: { _enum: ['V1', 'V2'] }, /** - * Lookup648: pallet_scheduler::pallet::Error + * Lookup651: pallet_scheduler::pallet::Error **/ PalletSchedulerError: { _enum: ['FailedToSchedule', 'NotFound', 'TargetBlockNumberInPast', 'RescheduleNoChange'] }, /** - * Lookup649: pallet_settlement::Venue + * Lookup652: pallet_settlement::Venue **/ PalletSettlementVenue: { creator: 'PolymeshPrimitivesIdentityId', venueType: 'PalletSettlementVenueType' }, /** - * Lookup652: pallet_settlement::Instruction + * Lookup655: pallet_settlement::Instruction **/ PalletSettlementInstruction: { instructionId: 'u64', @@ -3868,13 +3896,13 @@ export default { valueDate: 'Option' }, /** - * Lookup653: pallet_settlement::InstructionStatus + * Lookup656: pallet_settlement::InstructionStatus **/ PalletSettlementInstructionStatus: { _enum: ['Unknown', 'Pending', 'Failed'] }, /** - * Lookup655: pallet_settlement::LegStatus + * Lookup658: pallet_settlement::LegStatus **/ PalletSettlementLegStatus: { _enum: { @@ -3884,124 +3912,124 @@ export default { } }, /** - * Lookup657: pallet_settlement::AffirmationStatus + * Lookup660: pallet_settlement::AffirmationStatus **/ PalletSettlementAffirmationStatus: { _enum: ['Unknown', 'Pending', 'Affirmed'] }, /** - * Lookup661: pallet_settlement::Error + * Lookup664: pallet_settlement::Error **/ PalletSettlementError: { _enum: ['InvalidVenue', 'Unauthorized', 'NoPendingAffirm', 'InstructionNotAffirmed', 'InstructionNotPending', 'InstructionNotFailed', 'LegNotPending', 'UnauthorizedSigner', 'ReceiptAlreadyClaimed', 'ReceiptNotClaimed', 'UnauthorizedVenue', 'FailedToLockTokens', 'InstructionFailed', 'InstructionDatesInvalid', 'InstructionSettleBlockPassed', 'InvalidSignature', 'SameSenderReceiver', 'PortfolioMismatch', 'SettleOnPastBlock', 'NoPortfolioProvided', 'UnexpectedAffirmationStatus', 'FailedToSchedule', 'LegCountTooSmall', 'UnknownInstruction', 'InstructionHasTooManyLegs'] }, /** - * Lookup663: polymesh_primitives::statistics::Stat1stKey + * Lookup666: polymesh_primitives::statistics::Stat1stKey **/ PolymeshPrimitivesStatisticsStat1stKey: { asset: 'PolymeshPrimitivesStatisticsAssetScope', statType: 'PolymeshPrimitivesStatisticsStatType' }, /** - * Lookup664: polymesh_primitives::transfer_compliance::AssetTransferCompliance + * Lookup667: polymesh_primitives::transfer_compliance::AssetTransferCompliance **/ PolymeshPrimitivesTransferComplianceAssetTransferCompliance: { paused: 'bool', requirements: 'BTreeSetTransferCondition' }, /** - * Lookup667: pallet_statistics::Error + * Lookup670: pallet_statistics::Error **/ PalletStatisticsError: { _enum: ['InvalidTransfer', 'StatTypeMissing', 'StatTypeNeededByTransferCondition', 'CannotRemoveStatTypeInUse', 'StatTypeLimitReached', 'TransferConditionLimitReached'] }, /** - * Lookup669: pallet_sto::Error + * Lookup672: pallet_sto::Error **/ PalletStoError: { _enum: ['Unauthorized', 'Overflow', 'InsufficientTokensRemaining', 'FundraiserNotFound', 'FundraiserNotLive', 'FundraiserClosed', 'FundraiserExpired', 'InvalidVenue', 'InvalidPriceTiers', 'InvalidOfferingWindow', 'MaxPriceExceeded', 'InvestmentAmountTooLow'] }, /** - * Lookup670: pallet_treasury::Error + * Lookup673: pallet_treasury::Error **/ PalletTreasuryError: { - _enum: ['InsufficientBalance'] + _enum: ['InsufficientBalance', 'InvalidIdentity'] }, /** - * Lookup671: pallet_utility::Error + * Lookup674: pallet_utility::Error **/ PalletUtilityError: { _enum: ['InvalidSignature', 'TargetCddMissing', 'InvalidNonce'] }, /** - * Lookup672: pallet_base::Error + * Lookup675: pallet_base::Error **/ PalletBaseError: { _enum: ['TooLong', 'CounterOverflow'] }, /** - * Lookup674: pallet_external_agents::Error + * Lookup677: pallet_external_agents::Error **/ PalletExternalAgentsError: { _enum: ['NoSuchAG', 'UnauthorizedAgent', 'AlreadyAnAgent', 'NotAnAgent', 'RemovingLastFullAgent', 'SecondaryKeyNotAuthorizedForAsset'] }, /** - * Lookup675: pallet_relayer::Subsidy + * Lookup678: pallet_relayer::Subsidy **/ PalletRelayerSubsidy: { payingKey: 'AccountId32', remaining: 'u128' }, /** - * Lookup676: pallet_relayer::Error + * Lookup679: pallet_relayer::Error **/ PalletRelayerError: { _enum: ['UserKeyCddMissing', 'PayingKeyCddMissing', 'NoPayingKey', 'NotPayingKey', 'NotAuthorizedForPayingKey', 'NotAuthorizedForUserKey', 'Overflow'] }, /** - * Lookup677: pallet_rewards::Error + * Lookup680: pallet_rewards::Error **/ PalletRewardsError: { _enum: ['UnknownItnAddress', 'ItnRewardAlreadyClaimed', 'InvalidSignature', 'UnableToCovertBalance'] }, /** - * Lookup678: pallet_test_utils::Error + * Lookup681: pallet_test_utils::Error **/ PalletTestUtilsError: 'Null', /** - * Lookup681: frame_system::extensions::check_spec_version::CheckSpecVersion + * Lookup684: frame_system::extensions::check_spec_version::CheckSpecVersion **/ FrameSystemExtensionsCheckSpecVersion: 'Null', /** - * Lookup682: frame_system::extensions::check_tx_version::CheckTxVersion + * Lookup685: frame_system::extensions::check_tx_version::CheckTxVersion **/ FrameSystemExtensionsCheckTxVersion: 'Null', /** - * Lookup683: frame_system::extensions::check_genesis::CheckGenesis + * Lookup686: frame_system::extensions::check_genesis::CheckGenesis **/ FrameSystemExtensionsCheckGenesis: 'Null', /** - * Lookup686: frame_system::extensions::check_nonce::CheckNonce + * Lookup689: frame_system::extensions::check_nonce::CheckNonce **/ FrameSystemExtensionsCheckNonce: 'Compact', /** - * Lookup687: polymesh_extensions::check_weight::CheckWeight + * Lookup690: polymesh_extensions::check_weight::CheckWeight **/ PolymeshExtensionsCheckWeight: 'FrameSystemExtensionsCheckWeight', /** - * Lookup688: frame_system::extensions::check_weight::CheckWeight + * Lookup691: frame_system::extensions::check_weight::CheckWeight **/ FrameSystemExtensionsCheckWeight: 'Null', /** - * Lookup689: pallet_transaction_payment::ChargeTransactionPayment + * Lookup692: pallet_transaction_payment::ChargeTransactionPayment **/ PalletTransactionPaymentChargeTransactionPayment: 'Compact', /** - * Lookup690: pallet_permissions::StoreCallMetadata + * Lookup693: pallet_permissions::StoreCallMetadata **/ PalletPermissionsStoreCallMetadata: 'Null', /** - * Lookup691: polymesh_runtime_develop::runtime::Runtime + * Lookup694: polymesh_runtime_develop::runtime::Runtime **/ PolymeshRuntimeDevelopRuntime: 'Null' }; diff --git a/scripts/cli/src/interfaces/types-lookup.ts b/scripts/cli/src/interfaces/types-lookup.ts index 0bbd780654..83a39ded9e 100644 --- a/scripts/cli/src/interfaces/types-lookup.ts +++ b/scripts/cli/src/interfaces/types-lookup.ts @@ -1137,7 +1137,9 @@ declare module '@polkadot/types/lookup' { readonly asIsin: U8aFixed; readonly isLei: boolean; readonly asLei: U8aFixed; - readonly type: 'Cusip' | 'Cins' | 'Isin' | 'Lei'; + readonly isFigi: boolean; + readonly asFigi: U8aFixed; + readonly type: 'Cusip' | 'Cins' | 'Isin' | 'Lei' | 'Figi'; } /** @name PolymeshPrimitivesDocument (129) */ @@ -1808,10 +1810,12 @@ declare module '@polkadot/types/lookup' { /** @name PalletTreasuryRawEvent (268) */ export interface PalletTreasuryRawEvent extends Enum { readonly isTreasuryDisbursement: boolean; - readonly asTreasuryDisbursement: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId, u128]>; + readonly asTreasuryDisbursement: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId, AccountId32, u128]>; + readonly isTreasuryDisbursementFailed: boolean; + readonly asTreasuryDisbursementFailed: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId, AccountId32, u128]>; readonly isTreasuryReimbursement: boolean; readonly asTreasuryReimbursement: ITuple<[PolymeshPrimitivesIdentityId, u128]>; - readonly type: 'TreasuryDisbursement' | 'TreasuryReimbursement'; + readonly type: 'TreasuryDisbursement' | 'TreasuryDisbursementFailed' | 'TreasuryReimbursement'; } /** @name PalletUtilityEvent (269) */ @@ -2286,9 +2290,9 @@ declare module '@polkadot/types/lookup' { readonly disableFrom: u64; readonly expiry: Option; } & Struct; - readonly isRemoveSecondaryKeys: boolean; - readonly asRemoveSecondaryKeys: { - readonly keysToRemove: Vec; + readonly isRemoveSecondaryKeysOld: boolean; + readonly asRemoveSecondaryKeysOld: { + readonly keysToRemove: Vec; } & Struct; readonly isAcceptPrimaryKey: boolean; readonly asAcceptPrimaryKey: { @@ -2315,11 +2319,12 @@ declare module '@polkadot/types/lookup' { readonly target: PolymeshPrimitivesIdentityId; readonly claim: PolymeshPrimitivesIdentityClaimClaim; } & Struct; - readonly isSetSecondaryKeyPermissions: boolean; - readonly asSetSecondaryKeyPermissions: { - readonly key: AccountId32; + readonly isSetPermissionToSigner: boolean; + readonly asSetPermissionToSigner: { + readonly key: PolymeshPrimitivesSecondaryKeySignatory; readonly perms: PolymeshPrimitivesSecondaryKeyPermissions; } & Struct; + readonly isPlaceholderLegacySetPermissionToSigner: boolean; readonly isFreezeSecondaryKeys: boolean; readonly isUnfreezeSecondaryKeys: boolean; readonly isAddAuthorization: boolean; @@ -2334,9 +2339,9 @@ declare module '@polkadot/types/lookup' { readonly authId: u64; readonly authIssuerPays: bool; } & Struct; - readonly isAddSecondaryKeysWithAuthorization: boolean; - readonly asAddSecondaryKeysWithAuthorization: { - readonly additionalKeys: Vec; + readonly isAddSecondaryKeysWithAuthorizationOld: boolean; + readonly asAddSecondaryKeysWithAuthorizationOld: { + readonly additionalKeys: Vec; readonly expiresAt: u64; } & Struct; readonly isAddInvestorUniquenessClaim: boolean; @@ -2373,56 +2378,76 @@ declare module '@polkadot/types/lookup' { readonly authId: u64; readonly optionalCddAuthId: Option; } & Struct; - readonly type: 'CddRegisterDid' | 'InvalidateCddClaims' | 'RemoveSecondaryKeys' | 'AcceptPrimaryKey' | 'ChangeCddRequirementForMkRotation' | 'JoinIdentityAsKey' | 'LeaveIdentityAsKey' | 'AddClaim' | 'RevokeClaim' | 'SetSecondaryKeyPermissions' | 'FreezeSecondaryKeys' | 'UnfreezeSecondaryKeys' | 'AddAuthorization' | 'RemoveAuthorization' | 'AddSecondaryKeysWithAuthorization' | 'AddInvestorUniquenessClaim' | 'GcAddCddClaim' | 'GcRevokeCddClaim' | 'AddInvestorUniquenessClaimV2' | 'RevokeClaimByIndex' | 'RotatePrimaryKeyToSecondary'; + readonly isAddSecondaryKeysWithAuthorization: boolean; + readonly asAddSecondaryKeysWithAuthorization: { + readonly additionalKeys: Vec; + readonly expiresAt: u64; + } & Struct; + readonly isSetSecondaryKeyPermissions: boolean; + readonly asSetSecondaryKeyPermissions: { + readonly key: AccountId32; + readonly perms: PolymeshPrimitivesSecondaryKeyPermissions; + } & Struct; + readonly isRemoveSecondaryKeys: boolean; + readonly asRemoveSecondaryKeys: { + readonly keysToRemove: Vec; + } & Struct; + readonly type: 'CddRegisterDid' | 'InvalidateCddClaims' | 'RemoveSecondaryKeysOld' | 'AcceptPrimaryKey' | 'ChangeCddRequirementForMkRotation' | 'JoinIdentityAsKey' | 'LeaveIdentityAsKey' | 'AddClaim' | 'RevokeClaim' | 'SetPermissionToSigner' | 'PlaceholderLegacySetPermissionToSigner' | 'FreezeSecondaryKeys' | 'UnfreezeSecondaryKeys' | 'AddAuthorization' | 'RemoveAuthorization' | 'AddSecondaryKeysWithAuthorizationOld' | 'AddInvestorUniquenessClaim' | 'GcAddCddClaim' | 'GcRevokeCddClaim' | 'AddInvestorUniquenessClaimV2' | 'RevokeClaimByIndex' | 'RotatePrimaryKeyToSecondary' | 'AddSecondaryKeysWithAuthorization' | 'SetSecondaryKeyPermissions' | 'RemoveSecondaryKeys'; } - /** @name PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth (353) */ - export interface PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth extends Struct { - readonly secondaryKey: PolymeshPrimitivesSecondaryKey; + /** @name PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuthV1 (353) */ + export interface PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuthV1 extends Struct { + readonly secondaryKey: PolymeshPrimitivesSecondaryKeyV1SecondaryKey; readonly authSignature: H512; } - /** @name PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData (355) */ + /** @name PolymeshPrimitivesSecondaryKeyV1SecondaryKey (354) */ + export interface PolymeshPrimitivesSecondaryKeyV1SecondaryKey extends Struct { + readonly signer: PolymeshPrimitivesSecondaryKeySignatory; + readonly permissions: PolymeshPrimitivesSecondaryKeyPermissions; + } + + /** @name PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData (356) */ export interface PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData extends SchnorrkelSignSignature {} - /** @name SchnorrkelSignSignature (356) */ + /** @name SchnorrkelSignSignature (357) */ export interface SchnorrkelSignSignature extends Struct { readonly r: Curve25519DalekRistrettoCompressedRistretto; readonly s: Curve25519DalekScalar; } - /** @name Curve25519DalekRistrettoCompressedRistretto (357) */ + /** @name Curve25519DalekRistrettoCompressedRistretto (358) */ export interface Curve25519DalekRistrettoCompressedRistretto extends U8aFixed {} - /** @name Curve25519DalekScalar (358) */ + /** @name Curve25519DalekScalar (359) */ export interface Curve25519DalekScalar extends Struct { readonly bytes: U8aFixed; } - /** @name ConfidentialIdentityClaimProofsScopeClaimProof (359) */ + /** @name ConfidentialIdentityClaimProofsScopeClaimProof (360) */ export interface ConfidentialIdentityClaimProofsScopeClaimProof extends Struct { readonly proofScopeIdWellformed: ConfidentialIdentitySignSignature; readonly proofScopeIdCddIdMatch: ConfidentialIdentityClaimProofsZkProofData; readonly scopeId: Curve25519DalekRistrettoRistrettoPoint; } - /** @name ConfidentialIdentitySignSignature (360) */ + /** @name ConfidentialIdentitySignSignature (361) */ export interface ConfidentialIdentitySignSignature extends Struct { readonly r: Curve25519DalekRistrettoCompressedRistretto; readonly s: Curve25519DalekScalar; } - /** @name ConfidentialIdentityClaimProofsZkProofData (361) */ + /** @name ConfidentialIdentityClaimProofsZkProofData (362) */ export interface ConfidentialIdentityClaimProofsZkProofData extends Struct { readonly challengeResponses: Vec; readonly subtractExpressionsRes: Curve25519DalekRistrettoRistrettoPoint; readonly blindedScopeDidHash: Curve25519DalekRistrettoRistrettoPoint; } - /** @name Curve25519DalekRistrettoRistrettoPoint (363) */ + /** @name Curve25519DalekRistrettoRistrettoPoint (364) */ export interface Curve25519DalekRistrettoRistrettoPoint extends Curve25519DalekEdwardsEdwardsPoint {} - /** @name Curve25519DalekEdwardsEdwardsPoint (364) */ + /** @name Curve25519DalekEdwardsEdwardsPoint (365) */ export interface Curve25519DalekEdwardsEdwardsPoint extends Struct { readonly x: Curve25519DalekBackendSerialU64FieldFieldElement51; readonly y: Curve25519DalekBackendSerialU64FieldFieldElement51; @@ -2430,10 +2455,16 @@ declare module '@polkadot/types/lookup' { readonly t: Curve25519DalekBackendSerialU64FieldFieldElement51; } - /** @name Curve25519DalekBackendSerialU64FieldFieldElement51 (365) */ + /** @name Curve25519DalekBackendSerialU64FieldFieldElement51 (366) */ export interface Curve25519DalekBackendSerialU64FieldFieldElement51 extends Vec {} - /** @name PalletIdentityError (367) */ + /** @name PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth (369) */ + export interface PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth extends Struct { + readonly secondaryKey: PolymeshPrimitivesSecondaryKey; + readonly authSignature: H512; + } + + /** @name PalletIdentityError (370) */ export interface PalletIdentityError extends Enum { readonly isAlreadyLinked: boolean; readonly isMissingCurrentIdentity: boolean; @@ -2471,14 +2502,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'AlreadyLinked' | 'MissingCurrentIdentity' | 'Unauthorized' | 'InvalidAccountKey' | 'UnAuthorizedCddProvider' | 'InvalidAuthorizationFromOwner' | 'InvalidAuthorizationFromCddProvider' | 'NotCddProviderAttestation' | 'AuthorizationsNotForSameDids' | 'DidMustAlreadyExist' | 'CurrentIdentityCannotBeForwarded' | 'AuthorizationExpired' | 'TargetHasNoCdd' | 'AuthorizationHasBeenRevoked' | 'InvalidAuthorizationSignature' | 'KeyNotAllowed' | 'NotPrimaryKey' | 'DidDoesNotExist' | 'DidAlreadyExists' | 'SecondaryKeysContainPrimaryKey' | 'FailedToChargeFee' | 'NotASigner' | 'CannotDecodeSignerAccountId' | 'MultiSigHasBalance' | 'ConfidentialScopeClaimNotAllowed' | 'InvalidScopeClaim' | 'ClaimVariantNotAllowed' | 'TargetHasNonZeroBalanceAtScopeId' | 'CddIdNotUniqueForIdentity' | 'InvalidCDDId' | 'ClaimAndProofVersionsDoNotMatch' | 'AccountKeyIsBeingUsed' | 'CustomScopeTooLong'; } - /** @name PolymeshCommonUtilitiesGroupInactiveMember (369) */ + /** @name PolymeshCommonUtilitiesGroupInactiveMember (372) */ export interface PolymeshCommonUtilitiesGroupInactiveMember extends Struct { readonly id: PolymeshPrimitivesIdentityId; readonly deactivatedAt: u64; readonly expiry: Option; } - /** @name PalletGroupCall (370) */ + /** @name PalletGroupCall (373) */ export interface PalletGroupCall extends Enum { readonly isSetActiveMembersLimit: boolean; readonly asSetActiveMembersLimit: { @@ -2511,7 +2542,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetActiveMembersLimit' | 'DisableMember' | 'AddMember' | 'RemoveMember' | 'SwapMember' | 'ResetMembers' | 'AbdicateMembership'; } - /** @name PalletGroupError (371) */ + /** @name PalletGroupError (374) */ export interface PalletGroupError extends Enum { readonly isOnlyPrimaryKeyAllowed: boolean; readonly isDuplicateMember: boolean; @@ -2523,7 +2554,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'OnlyPrimaryKeyAllowed' | 'DuplicateMember' | 'NoSuchMember' | 'LastMemberCannotQuit' | 'MissingCurrentIdentity' | 'ActiveMembersLimitExceeded' | 'ActiveMembersLimitOverflow'; } - /** @name PalletCommitteeCall (373) */ + /** @name PalletCommitteeCall (376) */ export interface PalletCommitteeCall extends Enum { readonly isSetVoteThreshold: boolean; readonly asSetVoteThreshold: { @@ -2552,7 +2583,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetVoteThreshold' | 'SetReleaseCoordinator' | 'SetExpiresAfter' | 'VoteOrPropose' | 'Vote'; } - /** @name PalletMultisigCall (379) */ + /** @name PalletMultisigCall (382) */ export interface PalletMultisigCall extends Enum { readonly isCreateMultisig: boolean; readonly asCreateMultisig: { @@ -2656,7 +2687,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'CreateMultisig' | 'CreateOrApproveProposalAsIdentity' | 'CreateOrApproveProposalAsKey' | 'CreateProposalAsIdentity' | 'CreateProposalAsKey' | 'ApproveAsIdentity' | 'ApproveAsKey' | 'RejectAsIdentity' | 'RejectAsKey' | 'AcceptMultisigSignerAsIdentity' | 'AcceptMultisigSignerAsKey' | 'AddMultisigSigner' | 'RemoveMultisigSigner' | 'AddMultisigSignersViaCreator' | 'RemoveMultisigSignersViaCreator' | 'ChangeSigsRequired' | 'MakeMultisigSecondary' | 'MakeMultisigPrimary' | 'ExecuteScheduledProposal'; } - /** @name PalletBridgeCall (380) */ + /** @name PalletBridgeCall (383) */ export interface PalletBridgeCall extends Enum { readonly isChangeController: boolean; readonly asChangeController: { @@ -2724,7 +2755,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'ChangeController' | 'ChangeAdmin' | 'ChangeTimelock' | 'Freeze' | 'Unfreeze' | 'ChangeBridgeLimit' | 'ChangeBridgeExempted' | 'ForceHandleBridgeTx' | 'BatchProposeBridgeTx' | 'ProposeBridgeTx' | 'HandleBridgeTx' | 'FreezeTxs' | 'UnfreezeTxs' | 'HandleScheduledBridgeTx' | 'AddFreezeAdmin' | 'RemoveFreezeAdmin' | 'RemoveTxs'; } - /** @name PalletStakingCall (384) */ + /** @name PalletStakingCall (387) */ export interface PalletStakingCall extends Enum { readonly isBond: boolean; readonly asBond: { @@ -2863,7 +2894,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Bond' | 'BondExtra' | 'Unbond' | 'WithdrawUnbonded' | 'Validate' | 'Nominate' | 'Chill' | 'SetPayee' | 'SetController' | 'SetValidatorCount' | 'IncreaseValidatorCount' | 'ScaleValidatorCount' | 'AddPermissionedValidator' | 'RemovePermissionedValidator' | 'ValidateCddExpiryNominators' | 'SetCommissionCap' | 'SetMinBondThreshold' | 'ForceNoEras' | 'ForceNewEra' | 'SetInvulnerables' | 'ForceUnstake' | 'ForceNewEraAlways' | 'CancelDeferredSlash' | 'PayoutStakers' | 'Rebond' | 'SetHistoryDepth' | 'ReapStash' | 'SubmitElectionSolution' | 'SubmitElectionSolutionUnsigned' | 'PayoutStakersBySystem' | 'ChangeSlashingAllowedFor' | 'UpdatePermissionedValidatorIntendedCount'; } - /** @name PalletStakingRewardDestination (385) */ + /** @name PalletStakingRewardDestination (388) */ export interface PalletStakingRewardDestination extends Enum { readonly isStaked: boolean; readonly isStash: boolean; @@ -2873,13 +2904,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Staked' | 'Stash' | 'Controller' | 'Account'; } - /** @name PalletStakingValidatorPrefs (386) */ + /** @name PalletStakingValidatorPrefs (389) */ export interface PalletStakingValidatorPrefs extends Struct { readonly commission: Compact; readonly blocked: bool; } - /** @name PalletStakingCompactAssignments (392) */ + /** @name PalletStakingCompactAssignments (395) */ export interface PalletStakingCompactAssignments extends Struct { readonly votes1: Vec, Compact]>>; readonly votes2: Vec, ITuple<[Compact, Compact]>, Compact]>>; @@ -2899,13 +2930,13 @@ declare module '@polkadot/types/lookup' { readonly votes16: Vec, Vec, Compact]>>, Compact]>>; } - /** @name PalletStakingElectionSize (444) */ + /** @name PalletStakingElectionSize (447) */ export interface PalletStakingElectionSize extends Struct { readonly validators: Compact; readonly nominators: Compact; } - /** @name PalletSessionCall (445) */ + /** @name PalletSessionCall (448) */ export interface PalletSessionCall extends Enum { readonly isSetKeys: boolean; readonly asSetKeys: { @@ -2916,7 +2947,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetKeys' | 'PurgeKeys'; } - /** @name PolymeshRuntimeDevelopRuntimeSessionKeys (446) */ + /** @name PolymeshRuntimeDevelopRuntimeSessionKeys (449) */ export interface PolymeshRuntimeDevelopRuntimeSessionKeys extends Struct { readonly grandpa: SpFinalityGrandpaAppPublic; readonly babe: SpConsensusBabeAppPublic; @@ -2924,10 +2955,10 @@ declare module '@polkadot/types/lookup' { readonly authorityDiscovery: SpAuthorityDiscoveryAppPublic; } - /** @name SpAuthorityDiscoveryAppPublic (447) */ + /** @name SpAuthorityDiscoveryAppPublic (450) */ export interface SpAuthorityDiscoveryAppPublic extends SpCoreSr25519Public {} - /** @name PalletGrandpaCall (448) */ + /** @name PalletGrandpaCall (451) */ export interface PalletGrandpaCall extends Enum { readonly isReportEquivocation: boolean; readonly asReportEquivocation: { @@ -2947,13 +2978,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'ReportEquivocation' | 'ReportEquivocationUnsigned' | 'NoteStalled'; } - /** @name SpFinalityGrandpaEquivocationProof (449) */ + /** @name SpFinalityGrandpaEquivocationProof (452) */ export interface SpFinalityGrandpaEquivocationProof extends Struct { readonly setId: u64; readonly equivocation: SpFinalityGrandpaEquivocation; } - /** @name SpFinalityGrandpaEquivocation (450) */ + /** @name SpFinalityGrandpaEquivocation (453) */ export interface SpFinalityGrandpaEquivocation extends Enum { readonly isPrevote: boolean; readonly asPrevote: FinalityGrandpaEquivocationPrevote; @@ -2962,7 +2993,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Prevote' | 'Precommit'; } - /** @name FinalityGrandpaEquivocationPrevote (451) */ + /** @name FinalityGrandpaEquivocationPrevote (454) */ export interface FinalityGrandpaEquivocationPrevote extends Struct { readonly roundNumber: u64; readonly identity: SpFinalityGrandpaAppPublic; @@ -2970,19 +3001,19 @@ declare module '@polkadot/types/lookup' { readonly second: ITuple<[FinalityGrandpaPrevote, SpFinalityGrandpaAppSignature]>; } - /** @name FinalityGrandpaPrevote (452) */ + /** @name FinalityGrandpaPrevote (455) */ export interface FinalityGrandpaPrevote extends Struct { readonly targetHash: H256; readonly targetNumber: u32; } - /** @name SpFinalityGrandpaAppSignature (453) */ + /** @name SpFinalityGrandpaAppSignature (456) */ export interface SpFinalityGrandpaAppSignature extends SpCoreEd25519Signature {} - /** @name SpCoreEd25519Signature (454) */ + /** @name SpCoreEd25519Signature (457) */ export interface SpCoreEd25519Signature extends U8aFixed {} - /** @name FinalityGrandpaEquivocationPrecommit (456) */ + /** @name FinalityGrandpaEquivocationPrecommit (459) */ export interface FinalityGrandpaEquivocationPrecommit extends Struct { readonly roundNumber: u64; readonly identity: SpFinalityGrandpaAppPublic; @@ -2990,13 +3021,13 @@ declare module '@polkadot/types/lookup' { readonly second: ITuple<[FinalityGrandpaPrecommit, SpFinalityGrandpaAppSignature]>; } - /** @name FinalityGrandpaPrecommit (457) */ + /** @name FinalityGrandpaPrecommit (460) */ export interface FinalityGrandpaPrecommit extends Struct { readonly targetHash: H256; readonly targetNumber: u32; } - /** @name PalletImOnlineCall (459) */ + /** @name PalletImOnlineCall (462) */ export interface PalletImOnlineCall extends Enum { readonly isHeartbeat: boolean; readonly asHeartbeat: { @@ -3006,7 +3037,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Heartbeat'; } - /** @name PalletImOnlineHeartbeat (460) */ + /** @name PalletImOnlineHeartbeat (463) */ export interface PalletImOnlineHeartbeat extends Struct { readonly blockNumber: u32; readonly networkState: SpCoreOffchainOpaqueNetworkState; @@ -3015,19 +3046,19 @@ declare module '@polkadot/types/lookup' { readonly validatorsLen: u32; } - /** @name SpCoreOffchainOpaqueNetworkState (461) */ + /** @name SpCoreOffchainOpaqueNetworkState (464) */ export interface SpCoreOffchainOpaqueNetworkState extends Struct { readonly peerId: Bytes; readonly externalAddresses: Vec; } - /** @name PalletImOnlineSr25519AppSr25519Signature (465) */ + /** @name PalletImOnlineSr25519AppSr25519Signature (468) */ export interface PalletImOnlineSr25519AppSr25519Signature extends SpCoreSr25519Signature {} - /** @name SpCoreSr25519Signature (466) */ + /** @name SpCoreSr25519Signature (469) */ export interface SpCoreSr25519Signature extends U8aFixed {} - /** @name PalletSudoCall (467) */ + /** @name PalletSudoCall (470) */ export interface PalletSudoCall extends Enum { readonly isSudo: boolean; readonly asSudo: { @@ -3050,7 +3081,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Sudo' | 'SudoUncheckedWeight' | 'SetKey' | 'SudoAs'; } - /** @name PalletAssetCall (468) */ + /** @name PalletAssetCall (471) */ export interface PalletAssetCall extends Enum { readonly isRegisterTicker: boolean; readonly asRegisterTicker: { @@ -3187,10 +3218,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'RegisterTicker' | 'AcceptTickerTransfer' | 'AcceptAssetOwnershipTransfer' | 'CreateAsset' | 'Freeze' | 'Unfreeze' | 'RenameAsset' | 'Issue' | 'Redeem' | 'MakeDivisible' | 'AddDocuments' | 'RemoveDocuments' | 'SetFundingRound' | 'UpdateIdentifiers' | 'ClaimClassicTicker' | 'ReserveClassicTicker' | 'ControllerTransfer' | 'RegisterCustomAssetType' | 'CreateAssetWithCustomType' | 'SetAssetMetadata' | 'SetAssetMetadataDetails' | 'RegisterAndSetLocalAssetMetadata' | 'RegisterAssetMetadataLocalType' | 'RegisterAssetMetadataGlobalType'; } - /** @name PolymeshPrimitivesEthereumEcdsaSignature (471) */ + /** @name PolymeshPrimitivesEthereumEcdsaSignature (474) */ export interface PolymeshPrimitivesEthereumEcdsaSignature extends U8aFixed {} - /** @name PalletAssetClassicTickerImport (473) */ + /** @name PalletAssetClassicTickerImport (476) */ export interface PalletAssetClassicTickerImport extends Struct { readonly ethOwner: PolymeshPrimitivesEthereumEthereumAddress; readonly ticker: PolymeshPrimitivesTicker; @@ -3198,13 +3229,13 @@ declare module '@polkadot/types/lookup' { readonly isCreated: bool; } - /** @name PalletAssetTickerRegistrationConfig (474) */ + /** @name PalletAssetTickerRegistrationConfig (477) */ export interface PalletAssetTickerRegistrationConfig extends Struct { readonly maxTickerLength: u8; readonly registrationLength: Option; } - /** @name PolymeshPrimitivesAssetMetadataAssetMetadataKey (475) */ + /** @name PolymeshPrimitivesAssetMetadataAssetMetadataKey (478) */ export interface PolymeshPrimitivesAssetMetadataAssetMetadataKey extends Enum { readonly isGlobal: boolean; readonly asGlobal: u64; @@ -3213,7 +3244,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Global' | 'Local'; } - /** @name PalletCorporateActionsDistributionCall (476) */ + /** @name PalletCorporateActionsDistributionCall (479) */ export interface PalletCorporateActionsDistributionCall extends Enum { readonly isDistribute: boolean; readonly asDistribute: { @@ -3245,7 +3276,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Distribute' | 'Claim' | 'PushBenefit' | 'Reclaim' | 'RemoveDistribution'; } - /** @name PalletAssetCheckpointCall (478) */ + /** @name PalletAssetCheckpointCall (481) */ export interface PalletAssetCheckpointCall extends Enum { readonly isCreateCheckpoint: boolean; readonly asCreateCheckpoint: { @@ -3268,14 +3299,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'CreateCheckpoint' | 'SetSchedulesMaxComplexity' | 'CreateSchedule' | 'RemoveSchedule'; } - /** @name PalletAssetCheckpointScheduleSpec (479) */ + /** @name PalletAssetCheckpointScheduleSpec (482) */ export interface PalletAssetCheckpointScheduleSpec extends Struct { readonly start: Option; readonly period: PolymeshPrimitivesCalendarCalendarPeriod; readonly remaining: u32; } - /** @name PalletComplianceManagerCall (480) */ + /** @name PalletComplianceManagerCall (483) */ export interface PalletComplianceManagerCall extends Enum { readonly isAddComplianceRequirement: boolean; readonly asAddComplianceRequirement: { @@ -3323,7 +3354,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'AddComplianceRequirement' | 'RemoveComplianceRequirement' | 'ReplaceAssetCompliance' | 'ResetAssetCompliance' | 'PauseAssetCompliance' | 'ResumeAssetCompliance' | 'AddDefaultTrustedClaimIssuer' | 'RemoveDefaultTrustedClaimIssuer' | 'ChangeComplianceRequirement'; } - /** @name PalletCorporateActionsCall (481) */ + /** @name PalletCorporateActionsCall (484) */ export interface PalletCorporateActionsCall extends Enum { readonly isSetMaxDetailsLength: boolean; readonly asSetMaxDetailsLength: { @@ -3383,7 +3414,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetMaxDetailsLength' | 'SetDefaultTargets' | 'SetDefaultWithholdingTax' | 'SetDidWithholdingTax' | 'InitiateCorporateAction' | 'LinkCaDoc' | 'RemoveCa' | 'ChangeRecordDate' | 'InitiateCorporateActionAndDistribute'; } - /** @name PalletCorporateActionsRecordDateSpec (483) */ + /** @name PalletCorporateActionsRecordDateSpec (486) */ export interface PalletCorporateActionsRecordDateSpec extends Enum { readonly isScheduled: boolean; readonly asScheduled: u64; @@ -3394,7 +3425,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Scheduled' | 'ExistingSchedule' | 'Existing'; } - /** @name PalletCorporateActionsInitiateCorporateActionArgs (486) */ + /** @name PalletCorporateActionsInitiateCorporateActionArgs (489) */ export interface PalletCorporateActionsInitiateCorporateActionArgs extends Struct { readonly ticker: PolymeshPrimitivesTicker; readonly kind: PalletCorporateActionsCaKind; @@ -3406,7 +3437,7 @@ declare module '@polkadot/types/lookup' { readonly withholdingTax: Option>>; } - /** @name PalletCorporateActionsBallotCall (487) */ + /** @name PalletCorporateActionsBallotCall (490) */ export interface PalletCorporateActionsBallotCall extends Enum { readonly isAttachBallot: boolean; readonly asAttachBallot: { @@ -3442,7 +3473,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'AttachBallot' | 'Vote' | 'ChangeEnd' | 'ChangeMeta' | 'ChangeRcv' | 'RemoveBallot'; } - /** @name PalletPipsCall (488) */ + /** @name PalletPipsCall (491) */ export interface PalletPipsCall extends Enum { readonly isSetPruneHistoricalPips: boolean; readonly asSetPruneHistoricalPips: { @@ -3516,7 +3547,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetPruneHistoricalPips' | 'SetMinProposalDeposit' | 'SetDefaultEnactmentPeriod' | 'SetPendingPipExpiry' | 'SetMaxPipSkipCount' | 'SetActivePipLimit' | 'Propose' | 'Vote' | 'ApproveCommitteeProposal' | 'RejectProposal' | 'PruneProposal' | 'RescheduleExecution' | 'ClearSnapshot' | 'Snapshot' | 'EnactSnapshotResults' | 'ExecuteScheduledPip' | 'ExpireScheduledPip'; } - /** @name PalletPipsSnapshotResult (491) */ + /** @name PalletPipsSnapshotResult (494) */ export interface PalletPipsSnapshotResult extends Enum { readonly isApprove: boolean; readonly isReject: boolean; @@ -3524,7 +3555,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Approve' | 'Reject' | 'Skip'; } - /** @name PalletPortfolioCall (492) */ + /** @name PalletPortfolioCall (495) */ export interface PalletPortfolioCall extends Enum { readonly isCreatePortfolio: boolean; readonly asCreatePortfolio: { @@ -3556,14 +3587,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'CreatePortfolio' | 'DeletePortfolio' | 'MovePortfolioFunds' | 'RenamePortfolio' | 'QuitPortfolioCustody' | 'AcceptPortfolioCustody'; } - /** @name PalletPortfolioMovePortfolioItem (494) */ + /** @name PalletPortfolioMovePortfolioItem (497) */ export interface PalletPortfolioMovePortfolioItem extends Struct { readonly ticker: PolymeshPrimitivesTicker; readonly amount: u128; readonly memo: Option; } - /** @name PalletProtocolFeeCall (495) */ + /** @name PalletProtocolFeeCall (498) */ export interface PalletProtocolFeeCall extends Enum { readonly isChangeCoefficient: boolean; readonly asChangeCoefficient: { @@ -3577,7 +3608,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'ChangeCoefficient' | 'ChangeBaseFee'; } - /** @name PolymeshCommonUtilitiesProtocolFeeProtocolOp (496) */ + /** @name PolymeshCommonUtilitiesProtocolFeeProtocolOp (499) */ export interface PolymeshCommonUtilitiesProtocolFeeProtocolOp extends Enum { readonly isAssetRegisterTicker: boolean; readonly isAssetIssue: boolean; @@ -3595,7 +3626,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'AssetRegisterTicker' | 'AssetIssue' | 'AssetAddDocuments' | 'AssetCreateAsset' | 'CheckpointCreateSchedule' | 'ComplianceManagerAddComplianceRequirement' | 'IdentityCddRegisterDid' | 'IdentityAddClaim' | 'IdentityAddSecondaryKeysWithAuthorization' | 'PipsPropose' | 'ContractsPutCode' | 'CorporateBallotAttachBallot' | 'CapitalDistributionDistribute'; } - /** @name PalletSchedulerCall (497) */ + /** @name PalletSchedulerCall (500) */ export interface PalletSchedulerCall extends Enum { readonly isSchedule: boolean; readonly asSchedule: { @@ -3639,7 +3670,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Schedule' | 'Cancel' | 'ScheduleNamed' | 'CancelNamed' | 'ScheduleAfter' | 'ScheduleNamedAfter'; } - /** @name PalletSettlementCall (499) */ + /** @name PalletSettlementCall (502) */ export interface PalletSettlementCall extends Enum { readonly isCreateVenue: boolean; readonly asCreateVenue: { @@ -3741,7 +3772,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'CreateVenue' | 'UpdateVenueDetails' | 'UpdateVenueType' | 'AddInstruction' | 'AddAndAffirmInstruction' | 'AffirmInstruction' | 'WithdrawAffirmation' | 'RejectInstruction' | 'AffirmWithReceipts' | 'ClaimReceipt' | 'UnclaimReceipt' | 'SetVenueFiltering' | 'AllowVenues' | 'DisallowVenues' | 'ChangeReceiptValidity' | 'ExecuteScheduledInstruction' | 'RescheduleInstruction'; } - /** @name PalletSettlementReceiptDetails (501) */ + /** @name PalletSettlementReceiptDetails (504) */ export interface PalletSettlementReceiptDetails extends Struct { readonly receiptUid: u64; readonly legId: u64; @@ -3750,7 +3781,7 @@ declare module '@polkadot/types/lookup' { readonly metadata: Bytes; } - /** @name SpRuntimeMultiSignature (502) */ + /** @name SpRuntimeMultiSignature (505) */ export interface SpRuntimeMultiSignature extends Enum { readonly isEd25519: boolean; readonly asEd25519: SpCoreEd25519Signature; @@ -3761,10 +3792,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa'; } - /** @name SpCoreEcdsaSignature (503) */ + /** @name SpCoreEcdsaSignature (506) */ export interface SpCoreEcdsaSignature extends U8aFixed {} - /** @name PalletStatisticsCall (504) */ + /** @name PalletStatisticsCall (507) */ export interface PalletStatisticsCall extends Enum { readonly isSetActiveAssetStats: boolean; readonly asSetActiveAssetStats: { @@ -3791,19 +3822,19 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetActiveAssetStats' | 'BatchUpdateAssetStats' | 'SetAssetTransferCompliance' | 'SetEntitiesExempt'; } - /** @name BTreeSetStatType (505) */ + /** @name BTreeSetStatType (508) */ export interface BTreeSetStatType extends Vec {} - /** @name BTreeSetStatUpdate (506) */ + /** @name BTreeSetStatUpdate (509) */ export interface BTreeSetStatUpdate extends Vec {} - /** @name BTreeSetTransferCondition (507) */ + /** @name BTreeSetTransferCondition (510) */ export interface BTreeSetTransferCondition extends Vec {} - /** @name BTreeSetIdentityId (508) */ + /** @name BTreeSetIdentityId (511) */ export interface BTreeSetIdentityId extends Vec {} - /** @name PalletStoCall (509) */ + /** @name PalletStoCall (512) */ export interface PalletStoCall extends Enum { readonly isCreateFundraiser: boolean; readonly asCreateFundraiser: { @@ -3853,13 +3884,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'CreateFundraiser' | 'Invest' | 'FreezeFundraiser' | 'UnfreezeFundraiser' | 'ModifyFundraiserWindow' | 'Stop'; } - /** @name PalletStoPriceTier (511) */ + /** @name PalletStoPriceTier (514) */ export interface PalletStoPriceTier extends Struct { readonly total: u128; readonly price: u128; } - /** @name PalletTreasuryCall (513) */ + /** @name PalletTreasuryCall (516) */ export interface PalletTreasuryCall extends Enum { readonly isDisbursement: boolean; readonly asDisbursement: { @@ -3872,13 +3903,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Disbursement' | 'Reimbursement'; } - /** @name PolymeshPrimitivesBeneficiary (515) */ + /** @name PolymeshPrimitivesBeneficiary (518) */ export interface PolymeshPrimitivesBeneficiary extends Struct { readonly id: PolymeshPrimitivesIdentityId; readonly amount: u128; } - /** @name PalletUtilityCall (516) */ + /** @name PalletUtilityCall (519) */ export interface PalletUtilityCall extends Enum { readonly isBatch: boolean; readonly asBatch: { @@ -3901,16 +3932,16 @@ declare module '@polkadot/types/lookup' { readonly type: 'Batch' | 'BatchAtomic' | 'BatchOptimistic' | 'RelayTx'; } - /** @name PalletUtilityUniqueCall (518) */ + /** @name PalletUtilityUniqueCall (521) */ export interface PalletUtilityUniqueCall extends Struct { readonly nonce: u64; readonly call: Call; } - /** @name PalletBaseCall (519) */ + /** @name PalletBaseCall (522) */ export type PalletBaseCall = Null; - /** @name PalletExternalAgentsCall (520) */ + /** @name PalletExternalAgentsCall (523) */ export interface PalletExternalAgentsCall extends Enum { readonly isCreateGroup: boolean; readonly asCreateGroup: { @@ -3957,7 +3988,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'CreateGroup' | 'SetGroupPermissions' | 'RemoveAgent' | 'Abdicate' | 'ChangeGroup' | 'AcceptBecomeAgent' | 'CreateGroupAndAddAuth' | 'CreateAndChangeCustomGroup'; } - /** @name PalletRelayerCall (521) */ + /** @name PalletRelayerCall (524) */ export interface PalletRelayerCall extends Enum { readonly isSetPayingKey: boolean; readonly asSetPayingKey: { @@ -3991,7 +4022,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetPayingKey' | 'AcceptPayingKey' | 'RemovePayingKey' | 'UpdatePolyxLimit' | 'IncreasePolyxLimit' | 'DecreasePolyxLimit'; } - /** @name PalletRewardsCall (522) */ + /** @name PalletRewardsCall (525) */ export interface PalletRewardsCall extends Enum { readonly isClaimItnReward: boolean; readonly asClaimItnReward: { @@ -4007,7 +4038,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'ClaimItnReward' | 'SetItnRewardStatus'; } - /** @name PalletRewardsItnRewardStatus (523) */ + /** @name PalletRewardsItnRewardStatus (526) */ export interface PalletRewardsItnRewardStatus extends Enum { readonly isUnclaimed: boolean; readonly asUnclaimed: u128; @@ -4015,7 +4046,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unclaimed' | 'Claimed'; } - /** @name PalletTestUtilsCall (524) */ + /** @name PalletTestUtilsCall (527) */ export interface PalletTestUtilsCall extends Enum { readonly isRegisterDid: boolean; readonly asRegisterDid: { @@ -4034,7 +4065,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'RegisterDid' | 'MockCddRegisterDid' | 'GetMyDid' | 'GetCddOf'; } - /** @name PalletCommitteePolymeshVotes (525) */ + /** @name PalletCommitteePolymeshVotes (528) */ export interface PalletCommitteePolymeshVotes extends Struct { readonly index: u32; readonly ayes: Vec; @@ -4042,7 +4073,7 @@ declare module '@polkadot/types/lookup' { readonly expiry: PolymeshCommonUtilitiesMaybeBlock; } - /** @name PalletCommitteeError (527) */ + /** @name PalletCommitteeError (530) */ export interface PalletCommitteeError extends Enum { readonly isDuplicateVote: boolean; readonly isNotAMember: boolean; @@ -4056,7 +4087,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'DuplicateVote' | 'NotAMember' | 'NoSuchProposal' | 'ProposalExpired' | 'DuplicateProposal' | 'MismatchedVotingIndex' | 'InvalidProportion' | 'FirstVoteReject' | 'ProposalsLimitReached'; } - /** @name PalletMultisigProposalDetails (537) */ + /** @name PalletMultisigProposalDetails (540) */ export interface PalletMultisigProposalDetails extends Struct { readonly approvals: u64; readonly rejections: u64; @@ -4065,7 +4096,7 @@ declare module '@polkadot/types/lookup' { readonly autoClose: bool; } - /** @name PalletMultisigProposalStatus (538) */ + /** @name PalletMultisigProposalStatus (541) */ export interface PalletMultisigProposalStatus extends Enum { readonly isInvalid: boolean; readonly isActiveOrExpired: boolean; @@ -4075,7 +4106,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Invalid' | 'ActiveOrExpired' | 'ExecutionSuccessful' | 'ExecutionFailed' | 'Rejected'; } - /** @name PalletMultisigError (540) */ + /** @name PalletMultisigError (543) */ export interface PalletMultisigError extends Enum { readonly isCddMissing: boolean; readonly isProposalMissing: boolean; @@ -4093,7 +4124,7 @@ declare module '@polkadot/types/lookup' { readonly isChangeNotAllowed: boolean; readonly isSignerAlreadyLinkedToMultisig: boolean; readonly isSignerAlreadyLinkedToIdentity: boolean; - readonly isSignerSameAsMultisig: boolean; + readonly isMultisigNotAllowedToLinkToItself: boolean; readonly isMissingCurrentIdentity: boolean; readonly isNotPrimaryKey: boolean; readonly isProposalAlreadyRejected: boolean; @@ -4102,10 +4133,10 @@ declare module '@polkadot/types/lookup' { readonly isMultisigMissingIdentity: boolean; readonly isFailedToSchedule: boolean; readonly isTooManySigners: boolean; - readonly type: 'CddMissing' | 'ProposalMissing' | 'DecodingError' | 'NoSigners' | 'RequiredSignaturesOutOfBounds' | 'NotASigner' | 'NoSuchMultisig' | 'NotEnoughSigners' | 'NonceOverflow' | 'AlreadyVoted' | 'AlreadyASigner' | 'FailedToChargeFee' | 'IdentityNotCreator' | 'ChangeNotAllowed' | 'SignerAlreadyLinkedToMultisig' | 'SignerAlreadyLinkedToIdentity' | 'SignerSameAsMultisig' | 'MissingCurrentIdentity' | 'NotPrimaryKey' | 'ProposalAlreadyRejected' | 'ProposalExpired' | 'ProposalAlreadyExecuted' | 'MultisigMissingIdentity' | 'FailedToSchedule' | 'TooManySigners'; + readonly type: 'CddMissing' | 'ProposalMissing' | 'DecodingError' | 'NoSigners' | 'RequiredSignaturesOutOfBounds' | 'NotASigner' | 'NoSuchMultisig' | 'NotEnoughSigners' | 'NonceOverflow' | 'AlreadyVoted' | 'AlreadyASigner' | 'FailedToChargeFee' | 'IdentityNotCreator' | 'ChangeNotAllowed' | 'SignerAlreadyLinkedToMultisig' | 'SignerAlreadyLinkedToIdentity' | 'MultisigNotAllowedToLinkToItself' | 'MissingCurrentIdentity' | 'NotPrimaryKey' | 'ProposalAlreadyRejected' | 'ProposalExpired' | 'ProposalAlreadyExecuted' | 'MultisigMissingIdentity' | 'FailedToSchedule' | 'TooManySigners'; } - /** @name PalletBridgeBridgeTxDetail (542) */ + /** @name PalletBridgeBridgeTxDetail (545) */ export interface PalletBridgeBridgeTxDetail extends Struct { readonly amount: u128; readonly status: PalletBridgeBridgeTxStatus; @@ -4113,7 +4144,7 @@ declare module '@polkadot/types/lookup' { readonly txHash: H256; } - /** @name PalletBridgeBridgeTxStatus (543) */ + /** @name PalletBridgeBridgeTxStatus (546) */ export interface PalletBridgeBridgeTxStatus extends Enum { readonly isAbsent: boolean; readonly isPending: boolean; @@ -4124,7 +4155,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Absent' | 'Pending' | 'Frozen' | 'Timelocked' | 'Handled'; } - /** @name PalletBridgeError (546) */ + /** @name PalletBridgeError (549) */ export interface PalletBridgeError extends Enum { readonly isControllerNotSet: boolean; readonly isBadCaller: boolean; @@ -4142,7 +4173,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'ControllerNotSet' | 'BadCaller' | 'BadAdmin' | 'NoValidCdd' | 'ProposalAlreadyHandled' | 'Unauthorized' | 'Frozen' | 'NotFrozen' | 'FrozenTx' | 'BridgeLimitReached' | 'Overflow' | 'DivisionByZero' | 'TimelockedTx'; } - /** @name PalletStakingStakingLedger (547) */ + /** @name PalletStakingStakingLedger (550) */ export interface PalletStakingStakingLedger extends Struct { readonly stash: AccountId32; readonly total: Compact; @@ -4151,32 +4182,32 @@ declare module '@polkadot/types/lookup' { readonly claimedRewards: Vec; } - /** @name PalletStakingUnlockChunk (549) */ + /** @name PalletStakingUnlockChunk (552) */ export interface PalletStakingUnlockChunk extends Struct { readonly value: Compact; readonly era: Compact; } - /** @name PalletStakingNominations (550) */ + /** @name PalletStakingNominations (553) */ export interface PalletStakingNominations extends Struct { readonly targets: Vec; readonly submittedIn: u32; readonly suppressed: bool; } - /** @name PalletStakingActiveEraInfo (551) */ + /** @name PalletStakingActiveEraInfo (554) */ export interface PalletStakingActiveEraInfo extends Struct { readonly index: u32; readonly start: Option; } - /** @name PalletStakingEraRewardPoints (553) */ + /** @name PalletStakingEraRewardPoints (556) */ export interface PalletStakingEraRewardPoints extends Struct { readonly total: u32; readonly individual: BTreeMap; } - /** @name PalletStakingForcing (556) */ + /** @name PalletStakingForcing (559) */ export interface PalletStakingForcing extends Enum { readonly isNotForcing: boolean; readonly isForceNew: boolean; @@ -4185,7 +4216,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'NotForcing' | 'ForceNew' | 'ForceNone' | 'ForceAlways'; } - /** @name PalletStakingUnappliedSlash (558) */ + /** @name PalletStakingUnappliedSlash (561) */ export interface PalletStakingUnappliedSlash extends Struct { readonly validator: AccountId32; readonly own: u128; @@ -4194,7 +4225,7 @@ declare module '@polkadot/types/lookup' { readonly payout: u128; } - /** @name PalletStakingSlashingSlashingSpans (562) */ + /** @name PalletStakingSlashingSlashingSpans (565) */ export interface PalletStakingSlashingSlashingSpans extends Struct { readonly spanIndex: u32; readonly lastStart: u32; @@ -4202,20 +4233,20 @@ declare module '@polkadot/types/lookup' { readonly prior: Vec; } - /** @name PalletStakingSlashingSpanRecord (563) */ + /** @name PalletStakingSlashingSpanRecord (566) */ export interface PalletStakingSlashingSpanRecord extends Struct { readonly slashed: u128; readonly paidOut: u128; } - /** @name PalletStakingElectionResult (564) */ + /** @name PalletStakingElectionResult (567) */ export interface PalletStakingElectionResult extends Struct { readonly electedStashes: Vec; readonly exposures: Vec>; readonly compute: PalletStakingElectionCompute; } - /** @name PalletStakingElectionStatus (565) */ + /** @name PalletStakingElectionStatus (568) */ export interface PalletStakingElectionStatus extends Enum { readonly isClosed: boolean; readonly isOpen: boolean; @@ -4223,13 +4254,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Closed' | 'Open'; } - /** @name PalletStakingPermissionedIdentityPrefs (566) */ + /** @name PalletStakingPermissionedIdentityPrefs (569) */ export interface PalletStakingPermissionedIdentityPrefs extends Struct { readonly intendedCount: u32; readonly runningCount: u32; } - /** @name PalletStakingReleases (567) */ + /** @name PalletStakingReleases (570) */ export interface PalletStakingReleases extends Enum { readonly isV100Ancient: boolean; readonly isV200: boolean; @@ -4242,7 +4273,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'V100Ancient' | 'V200' | 'V300' | 'V400' | 'V500' | 'V600' | 'V601' | 'V700'; } - /** @name PalletStakingError (568) */ + /** @name PalletStakingError (571) */ export interface PalletStakingError extends Enum { readonly isNotController: boolean; readonly isNotStash: boolean; @@ -4289,16 +4320,16 @@ declare module '@polkadot/types/lookup' { readonly type: 'NotController' | 'NotStash' | 'AlreadyBonded' | 'AlreadyPaired' | 'EmptyTargets' | 'InvalidSlashIndex' | 'InsufficientValue' | 'NoMoreChunks' | 'NoUnlockChunk' | 'FundedTarget' | 'InvalidEraToReward' | 'NotSortedAndUnique' | 'AlreadyClaimed' | 'OffchainElectionEarlySubmission' | 'OffchainElectionWeakSubmission' | 'SnapshotUnavailable' | 'OffchainElectionBogusWinnerCount' | 'OffchainElectionBogusWinner' | 'OffchainElectionBogusCompact' | 'OffchainElectionBogusNominator' | 'OffchainElectionBogusNomination' | 'OffchainElectionSlashedNomination' | 'OffchainElectionBogusSelfVote' | 'OffchainElectionBogusEdge' | 'OffchainElectionBogusScore' | 'OffchainElectionBogusElectionSize' | 'CallNotAllowed' | 'IncorrectSlashingSpans' | 'AlreadyExists' | 'NotExists' | 'NoChange' | 'InvalidValidatorIdentity' | 'InvalidValidatorCommission' | 'StashIdentityDoesNotExist' | 'StashIdentityNotPermissioned' | 'StashIdentityNotCDDed' | 'HitIntendedValidatorCount' | 'IntendedCountIsExceedingConsensusLimit' | 'BondTooSmall' | 'BadState' | 'TooManyTargets' | 'BadTarget'; } - /** @name SpStakingOffenceOffenceDetails (569) */ + /** @name SpStakingOffenceOffenceDetails (572) */ export interface SpStakingOffenceOffenceDetails extends Struct { readonly offender: ITuple<[AccountId32, PalletStakingExposure]>; readonly reporters: Vec; } - /** @name SpCoreCryptoKeyTypeId (574) */ + /** @name SpCoreCryptoKeyTypeId (577) */ export interface SpCoreCryptoKeyTypeId extends U8aFixed {} - /** @name PalletSessionError (575) */ + /** @name PalletSessionError (578) */ export interface PalletSessionError extends Enum { readonly isInvalidProof: boolean; readonly isNoAssociatedValidatorId: boolean; @@ -4308,7 +4339,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'InvalidProof' | 'NoAssociatedValidatorId' | 'DuplicatedKey' | 'NoKeys' | 'NoAccount'; } - /** @name PalletGrandpaStoredState (576) */ + /** @name PalletGrandpaStoredState (579) */ export interface PalletGrandpaStoredState extends Enum { readonly isLive: boolean; readonly isPendingPause: boolean; @@ -4325,7 +4356,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Live' | 'PendingPause' | 'Paused' | 'PendingResume'; } - /** @name PalletGrandpaStoredPendingChange (577) */ + /** @name PalletGrandpaStoredPendingChange (580) */ export interface PalletGrandpaStoredPendingChange extends Struct { readonly scheduledAt: u32; readonly delay: u32; @@ -4333,7 +4364,7 @@ declare module '@polkadot/types/lookup' { readonly forced: Option; } - /** @name PalletGrandpaError (579) */ + /** @name PalletGrandpaError (582) */ export interface PalletGrandpaError extends Enum { readonly isPauseFailed: boolean; readonly isResumeFailed: boolean; @@ -4345,32 +4376,32 @@ declare module '@polkadot/types/lookup' { readonly type: 'PauseFailed' | 'ResumeFailed' | 'ChangePending' | 'TooSoon' | 'InvalidKeyOwnershipProof' | 'InvalidEquivocationProof' | 'DuplicateOffenceReport'; } - /** @name PalletImOnlineBoundedOpaqueNetworkState (583) */ + /** @name PalletImOnlineBoundedOpaqueNetworkState (586) */ export interface PalletImOnlineBoundedOpaqueNetworkState extends Struct { readonly peerId: Bytes; readonly externalAddresses: Vec; } - /** @name PalletImOnlineError (587) */ + /** @name PalletImOnlineError (590) */ export interface PalletImOnlineError extends Enum { readonly isInvalidKey: boolean; readonly isDuplicatedHeartbeat: boolean; readonly type: 'InvalidKey' | 'DuplicatedHeartbeat'; } - /** @name PalletSudoError (588) */ + /** @name PalletSudoError (591) */ export interface PalletSudoError extends Enum { readonly isRequireSudo: boolean; readonly type: 'RequireSudo'; } - /** @name PalletAssetTickerRegistration (589) */ + /** @name PalletAssetTickerRegistration (592) */ export interface PalletAssetTickerRegistration extends Struct { readonly owner: PolymeshPrimitivesIdentityId; readonly expiry: Option; } - /** @name PalletAssetSecurityToken (590) */ + /** @name PalletAssetSecurityToken (593) */ export interface PalletAssetSecurityToken extends Struct { readonly totalSupply: u128; readonly ownerDid: PolymeshPrimitivesIdentityId; @@ -4378,7 +4409,7 @@ declare module '@polkadot/types/lookup' { readonly assetType: PolymeshPrimitivesAssetAssetType; } - /** @name PalletAssetAssetOwnershipRelation (594) */ + /** @name PalletAssetAssetOwnershipRelation (597) */ export interface PalletAssetAssetOwnershipRelation extends Enum { readonly isNotOwned: boolean; readonly isTickerOwned: boolean; @@ -4386,13 +4417,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'NotOwned' | 'TickerOwned' | 'AssetOwned'; } - /** @name PalletAssetClassicTickerRegistration (596) */ + /** @name PalletAssetClassicTickerRegistration (599) */ export interface PalletAssetClassicTickerRegistration extends Struct { readonly ethOwner: PolymeshPrimitivesEthereumEthereumAddress; readonly isCreated: bool; } - /** @name PalletAssetError (602) */ + /** @name PalletAssetError (605) */ export interface PalletAssetError extends Enum { readonly isUnauthorized: boolean; readonly isAlreadyArchived: boolean; @@ -4435,7 +4466,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unauthorized' | 'AlreadyArchived' | 'AlreadyUnArchived' | 'ExtensionAlreadyPresent' | 'AssetAlreadyCreated' | 'TickerTooLong' | 'TickerNotAscii' | 'TickerAlreadyRegistered' | 'TotalSupplyAboveLimit' | 'NoSuchAsset' | 'AlreadyFrozen' | 'NotAnOwner' | 'BalanceOverflow' | 'TotalSupplyOverflow' | 'InvalidGranularity' | 'NotFrozen' | 'InvalidTransfer' | 'InsufficientBalance' | 'AssetAlreadyDivisible' | 'MaximumTMExtensionLimitReached' | 'IncompatibleExtensionVersion' | 'InvalidEthereumSignature' | 'NoSuchClassicTicker' | 'TickerRegistrationExpired' | 'SenderSameAsReceiver' | 'NoSuchDoc' | 'MaxLengthOfAssetNameExceeded' | 'FundingRoundNameMaxLengthExceeded' | 'InvalidAssetIdentifier' | 'InvestorUniquenessClaimNotAllowed' | 'InvalidCustomAssetTypeId' | 'AssetMetadataNameMaxLengthExceeded' | 'AssetMetadataValueMaxLengthExceeded' | 'AssetMetadataTypeDefMaxLengthExceeded' | 'AssetMetadataKeyIsMissing' | 'AssetMetadataValueIsLocked' | 'AssetMetadataLocalKeyAlreadyExists' | 'AssetMetadataGlobalKeyAlreadyExists'; } - /** @name PalletCorporateActionsDistributionError (605) */ + /** @name PalletCorporateActionsDistributionError (608) */ export interface PalletCorporateActionsDistributionError extends Enum { readonly isCaNotBenefit: boolean; readonly isAlreadyExists: boolean; @@ -4454,7 +4485,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'CaNotBenefit' | 'AlreadyExists' | 'ExpiryBeforePayment' | 'DistributingAsset' | 'HolderAlreadyPaid' | 'NoSuchDistribution' | 'CannotClaimBeforeStart' | 'CannotClaimAfterExpiry' | 'BalancePerShareProductOverflowed' | 'NotDistributionCreator' | 'AlreadyReclaimed' | 'NotExpired' | 'DistributionStarted' | 'InsufficientRemainingAmount'; } - /** @name PalletAssetCheckpointError (612) */ + /** @name PalletAssetCheckpointError (615) */ export interface PalletAssetCheckpointError extends Enum { readonly isNoSuchSchedule: boolean; readonly isScheduleNotRemovable: boolean; @@ -4464,13 +4495,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'NoSuchSchedule' | 'ScheduleNotRemovable' | 'FailedToComputeNextCheckpoint' | 'ScheduleDurationTooShort' | 'SchedulesTooComplex'; } - /** @name PolymeshPrimitivesComplianceManagerAssetCompliance (613) */ + /** @name PolymeshPrimitivesComplianceManagerAssetCompliance (616) */ export interface PolymeshPrimitivesComplianceManagerAssetCompliance extends Struct { readonly paused: bool; readonly requirements: Vec; } - /** @name PalletComplianceManagerError (615) */ + /** @name PalletComplianceManagerError (618) */ export interface PalletComplianceManagerError extends Enum { readonly isUnauthorized: boolean; readonly isDidNotExist: boolean; @@ -4481,7 +4512,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unauthorized' | 'DidNotExist' | 'InvalidComplianceRequirementId' | 'IncorrectOperationOnTrustedIssuer' | 'DuplicateComplianceRequirements' | 'ComplianceRequirementTooComplex'; } - /** @name PalletCorporateActionsError (618) */ + /** @name PalletCorporateActionsError (621) */ export interface PalletCorporateActionsError extends Enum { readonly isAuthNotCAATransfer: boolean; readonly isDetailsTooLong: boolean; @@ -4498,7 +4529,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'AuthNotCAATransfer' | 'DetailsTooLong' | 'DuplicateDidTax' | 'TooManyDidTaxes' | 'TooManyTargetIds' | 'NoSuchCheckpointId' | 'NoSuchCA' | 'NoRecordDate' | 'RecordDateAfterStart' | 'DeclDateAfterRecordDate' | 'DeclDateInFuture' | 'NotTargetedByCA'; } - /** @name PalletCorporateActionsBallotError (620) */ + /** @name PalletCorporateActionsBallotError (623) */ export interface PalletCorporateActionsBallotError extends Enum { readonly isCaNotNotice: boolean; readonly isAlreadyExists: boolean; @@ -4517,13 +4548,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'CaNotNotice' | 'AlreadyExists' | 'NoSuchBallot' | 'StartAfterEnd' | 'NowAfterEnd' | 'NumberOfChoicesOverflow' | 'VotingAlreadyStarted' | 'VotingNotStarted' | 'VotingAlreadyEnded' | 'WrongVoteCount' | 'InsufficientVotes' | 'NoSuchRCVFallback' | 'RcvSelfCycle' | 'RcvNotAllowed'; } - /** @name PalletPermissionsError (621) */ + /** @name PalletPermissionsError (624) */ export interface PalletPermissionsError extends Enum { readonly isUnauthorizedCaller: boolean; readonly type: 'UnauthorizedCaller'; } - /** @name PalletPipsPipsMetadata (622) */ + /** @name PalletPipsPipsMetadata (625) */ export interface PalletPipsPipsMetadata extends Struct { readonly id: u32; readonly url: Option; @@ -4533,13 +4564,13 @@ declare module '@polkadot/types/lookup' { readonly expiry: PolymeshCommonUtilitiesMaybeBlock; } - /** @name PalletPipsDepositInfo (624) */ + /** @name PalletPipsDepositInfo (627) */ export interface PalletPipsDepositInfo extends Struct { readonly owner: AccountId32; readonly amount: u128; } - /** @name PalletPipsPip (625) */ + /** @name PalletPipsPip (628) */ export interface PalletPipsPip extends Struct { readonly id: u32; readonly proposal: Call; @@ -4547,7 +4578,7 @@ declare module '@polkadot/types/lookup' { readonly proposer: PalletPipsProposer; } - /** @name PalletPipsVotingResult (626) */ + /** @name PalletPipsVotingResult (629) */ export interface PalletPipsVotingResult extends Struct { readonly ayesCount: u32; readonly ayesStake: u128; @@ -4555,17 +4586,17 @@ declare module '@polkadot/types/lookup' { readonly naysStake: u128; } - /** @name PalletPipsVote (627) */ + /** @name PalletPipsVote (630) */ export interface PalletPipsVote extends ITuple<[bool, u128]> {} - /** @name PalletPipsSnapshotMetadata (628) */ + /** @name PalletPipsSnapshotMetadata (631) */ export interface PalletPipsSnapshotMetadata extends Struct { readonly createdAt: u32; readonly madeBy: AccountId32; readonly id: u32; } - /** @name PalletPipsError (630) */ + /** @name PalletPipsError (633) */ export interface PalletPipsError extends Enum { readonly isRescheduleNotByReleaseCoordinator: boolean; readonly isNotFromCommunity: boolean; @@ -4588,7 +4619,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'RescheduleNotByReleaseCoordinator' | 'NotFromCommunity' | 'NotByCommittee' | 'TooManyActivePips' | 'IncorrectDeposit' | 'InsufficientDeposit' | 'NoSuchProposal' | 'NotACommitteeMember' | 'InvalidFutureBlockNumber' | 'NumberOfVotesExceeded' | 'StakeAmountOfVotesExceeded' | 'MissingCurrentIdentity' | 'IncorrectProposalState' | 'CannotSkipPip' | 'SnapshotResultTooLarge' | 'SnapshotIdMismatch' | 'ScheduledProposalDoesntExist' | 'ProposalNotInScheduledState'; } - /** @name PalletPortfolioError (636) */ + /** @name PalletPortfolioError (639) */ export interface PalletPortfolioError extends Enum { readonly isPortfolioDoesNotExist: boolean; readonly isInsufficientPortfolioBalance: boolean; @@ -4602,7 +4633,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'PortfolioDoesNotExist' | 'InsufficientPortfolioBalance' | 'DestinationIsSamePortfolio' | 'PortfolioNameAlreadyInUse' | 'SecondaryKeyNotAuthorizedForPortfolio' | 'UnauthorizedCustodian' | 'InsufficientTokensLocked' | 'PortfolioNotEmpty' | 'DifferentIdentityPortfolios'; } - /** @name PalletProtocolFeeError (637) */ + /** @name PalletProtocolFeeError (640) */ export interface PalletProtocolFeeError extends Enum { readonly isInsufficientAccountBalance: boolean; readonly isUnHandledImbalances: boolean; @@ -4610,7 +4641,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'InsufficientAccountBalance' | 'UnHandledImbalances' | 'InsufficientSubsidyBalance'; } - /** @name PalletSchedulerScheduledV2 (640) */ + /** @name PalletSchedulerScheduledV2 (643) */ export interface PalletSchedulerScheduledV2 extends Struct { readonly maybeId: Option; readonly priority: u8; @@ -4619,7 +4650,7 @@ declare module '@polkadot/types/lookup' { readonly origin: PolymeshRuntimeDevelopRuntimeOriginCaller; } - /** @name PolymeshRuntimeDevelopRuntimeOriginCaller (641) */ + /** @name PolymeshRuntimeDevelopRuntimeOriginCaller (644) */ export interface PolymeshRuntimeDevelopRuntimeOriginCaller extends Enum { readonly isSystem: boolean; readonly asSystem: FrameSystemRawOrigin; @@ -4633,7 +4664,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'System' | 'Void' | 'PolymeshCommittee' | 'TechnicalCommittee' | 'UpgradeCommittee'; } - /** @name FrameSystemRawOrigin (642) */ + /** @name FrameSystemRawOrigin (645) */ export interface FrameSystemRawOrigin extends Enum { readonly isRoot: boolean; readonly isSigned: boolean; @@ -4642,35 +4673,35 @@ declare module '@polkadot/types/lookup' { readonly type: 'Root' | 'Signed' | 'None'; } - /** @name PalletCommitteeRawOriginInstance1 (643) */ + /** @name PalletCommitteeRawOriginInstance1 (646) */ export interface PalletCommitteeRawOriginInstance1 extends Enum { readonly isEndorsed: boolean; readonly type: 'Endorsed'; } - /** @name PalletCommitteeRawOriginInstance3 (644) */ + /** @name PalletCommitteeRawOriginInstance3 (647) */ export interface PalletCommitteeRawOriginInstance3 extends Enum { readonly isEndorsed: boolean; readonly type: 'Endorsed'; } - /** @name PalletCommitteeRawOriginInstance4 (645) */ + /** @name PalletCommitteeRawOriginInstance4 (648) */ export interface PalletCommitteeRawOriginInstance4 extends Enum { readonly isEndorsed: boolean; readonly type: 'Endorsed'; } - /** @name SpCoreVoid (646) */ + /** @name SpCoreVoid (649) */ export type SpCoreVoid = Null; - /** @name PalletSchedulerReleases (647) */ + /** @name PalletSchedulerReleases (650) */ export interface PalletSchedulerReleases extends Enum { readonly isV1: boolean; readonly isV2: boolean; readonly type: 'V1' | 'V2'; } - /** @name PalletSchedulerError (648) */ + /** @name PalletSchedulerError (651) */ export interface PalletSchedulerError extends Enum { readonly isFailedToSchedule: boolean; readonly isNotFound: boolean; @@ -4679,13 +4710,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange'; } - /** @name PalletSettlementVenue (649) */ + /** @name PalletSettlementVenue (652) */ export interface PalletSettlementVenue extends Struct { readonly creator: PolymeshPrimitivesIdentityId; readonly venueType: PalletSettlementVenueType; } - /** @name PalletSettlementInstruction (652) */ + /** @name PalletSettlementInstruction (655) */ export interface PalletSettlementInstruction extends Struct { readonly instructionId: u64; readonly venueId: u64; @@ -4696,7 +4727,7 @@ declare module '@polkadot/types/lookup' { readonly valueDate: Option; } - /** @name PalletSettlementInstructionStatus (653) */ + /** @name PalletSettlementInstructionStatus (656) */ export interface PalletSettlementInstructionStatus extends Enum { readonly isUnknown: boolean; readonly isPending: boolean; @@ -4704,7 +4735,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unknown' | 'Pending' | 'Failed'; } - /** @name PalletSettlementLegStatus (655) */ + /** @name PalletSettlementLegStatus (658) */ export interface PalletSettlementLegStatus extends Enum { readonly isPendingTokenLock: boolean; readonly isExecutionPending: boolean; @@ -4713,7 +4744,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'PendingTokenLock' | 'ExecutionPending' | 'ExecutionToBeSkipped'; } - /** @name PalletSettlementAffirmationStatus (657) */ + /** @name PalletSettlementAffirmationStatus (660) */ export interface PalletSettlementAffirmationStatus extends Enum { readonly isUnknown: boolean; readonly isPending: boolean; @@ -4721,7 +4752,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unknown' | 'Pending' | 'Affirmed'; } - /** @name PalletSettlementError (661) */ + /** @name PalletSettlementError (664) */ export interface PalletSettlementError extends Enum { readonly isInvalidVenue: boolean; readonly isUnauthorized: boolean; @@ -4751,19 +4782,19 @@ declare module '@polkadot/types/lookup' { readonly type: 'InvalidVenue' | 'Unauthorized' | 'NoPendingAffirm' | 'InstructionNotAffirmed' | 'InstructionNotPending' | 'InstructionNotFailed' | 'LegNotPending' | 'UnauthorizedSigner' | 'ReceiptAlreadyClaimed' | 'ReceiptNotClaimed' | 'UnauthorizedVenue' | 'FailedToLockTokens' | 'InstructionFailed' | 'InstructionDatesInvalid' | 'InstructionSettleBlockPassed' | 'InvalidSignature' | 'SameSenderReceiver' | 'PortfolioMismatch' | 'SettleOnPastBlock' | 'NoPortfolioProvided' | 'UnexpectedAffirmationStatus' | 'FailedToSchedule' | 'LegCountTooSmall' | 'UnknownInstruction' | 'InstructionHasTooManyLegs'; } - /** @name PolymeshPrimitivesStatisticsStat1stKey (663) */ + /** @name PolymeshPrimitivesStatisticsStat1stKey (666) */ export interface PolymeshPrimitivesStatisticsStat1stKey extends Struct { readonly asset: PolymeshPrimitivesStatisticsAssetScope; readonly statType: PolymeshPrimitivesStatisticsStatType; } - /** @name PolymeshPrimitivesTransferComplianceAssetTransferCompliance (664) */ + /** @name PolymeshPrimitivesTransferComplianceAssetTransferCompliance (667) */ export interface PolymeshPrimitivesTransferComplianceAssetTransferCompliance extends Struct { readonly paused: bool; readonly requirements: BTreeSetTransferCondition; } - /** @name PalletStatisticsError (667) */ + /** @name PalletStatisticsError (670) */ export interface PalletStatisticsError extends Enum { readonly isInvalidTransfer: boolean; readonly isStatTypeMissing: boolean; @@ -4774,7 +4805,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'InvalidTransfer' | 'StatTypeMissing' | 'StatTypeNeededByTransferCondition' | 'CannotRemoveStatTypeInUse' | 'StatTypeLimitReached' | 'TransferConditionLimitReached'; } - /** @name PalletStoError (669) */ + /** @name PalletStoError (672) */ export interface PalletStoError extends Enum { readonly isUnauthorized: boolean; readonly isOverflow: boolean; @@ -4791,13 +4822,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unauthorized' | 'Overflow' | 'InsufficientTokensRemaining' | 'FundraiserNotFound' | 'FundraiserNotLive' | 'FundraiserClosed' | 'FundraiserExpired' | 'InvalidVenue' | 'InvalidPriceTiers' | 'InvalidOfferingWindow' | 'MaxPriceExceeded' | 'InvestmentAmountTooLow'; } - /** @name PalletTreasuryError (670) */ + /** @name PalletTreasuryError (673) */ export interface PalletTreasuryError extends Enum { readonly isInsufficientBalance: boolean; - readonly type: 'InsufficientBalance'; + readonly isInvalidIdentity: boolean; + readonly type: 'InsufficientBalance' | 'InvalidIdentity'; } - /** @name PalletUtilityError (671) */ + /** @name PalletUtilityError (674) */ export interface PalletUtilityError extends Enum { readonly isInvalidSignature: boolean; readonly isTargetCddMissing: boolean; @@ -4805,14 +4837,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'InvalidSignature' | 'TargetCddMissing' | 'InvalidNonce'; } - /** @name PalletBaseError (672) */ + /** @name PalletBaseError (675) */ export interface PalletBaseError extends Enum { readonly isTooLong: boolean; readonly isCounterOverflow: boolean; readonly type: 'TooLong' | 'CounterOverflow'; } - /** @name PalletExternalAgentsError (674) */ + /** @name PalletExternalAgentsError (677) */ export interface PalletExternalAgentsError extends Enum { readonly isNoSuchAG: boolean; readonly isUnauthorizedAgent: boolean; @@ -4823,13 +4855,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'NoSuchAG' | 'UnauthorizedAgent' | 'AlreadyAnAgent' | 'NotAnAgent' | 'RemovingLastFullAgent' | 'SecondaryKeyNotAuthorizedForAsset'; } - /** @name PalletRelayerSubsidy (675) */ + /** @name PalletRelayerSubsidy (678) */ export interface PalletRelayerSubsidy extends Struct { readonly payingKey: AccountId32; readonly remaining: u128; } - /** @name PalletRelayerError (676) */ + /** @name PalletRelayerError (679) */ export interface PalletRelayerError extends Enum { readonly isUserKeyCddMissing: boolean; readonly isPayingKeyCddMissing: boolean; @@ -4841,7 +4873,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'UserKeyCddMissing' | 'PayingKeyCddMissing' | 'NoPayingKey' | 'NotPayingKey' | 'NotAuthorizedForPayingKey' | 'NotAuthorizedForUserKey' | 'Overflow'; } - /** @name PalletRewardsError (677) */ + /** @name PalletRewardsError (680) */ export interface PalletRewardsError extends Enum { readonly isUnknownItnAddress: boolean; readonly isItnRewardAlreadyClaimed: boolean; @@ -4850,34 +4882,34 @@ declare module '@polkadot/types/lookup' { readonly type: 'UnknownItnAddress' | 'ItnRewardAlreadyClaimed' | 'InvalidSignature' | 'UnableToCovertBalance'; } - /** @name PalletTestUtilsError (678) */ + /** @name PalletTestUtilsError (681) */ export type PalletTestUtilsError = Null; - /** @name FrameSystemExtensionsCheckSpecVersion (681) */ + /** @name FrameSystemExtensionsCheckSpecVersion (684) */ export type FrameSystemExtensionsCheckSpecVersion = Null; - /** @name FrameSystemExtensionsCheckTxVersion (682) */ + /** @name FrameSystemExtensionsCheckTxVersion (685) */ export type FrameSystemExtensionsCheckTxVersion = Null; - /** @name FrameSystemExtensionsCheckGenesis (683) */ + /** @name FrameSystemExtensionsCheckGenesis (686) */ export type FrameSystemExtensionsCheckGenesis = Null; - /** @name FrameSystemExtensionsCheckNonce (686) */ + /** @name FrameSystemExtensionsCheckNonce (689) */ export interface FrameSystemExtensionsCheckNonce extends Compact {} - /** @name PolymeshExtensionsCheckWeight (687) */ + /** @name PolymeshExtensionsCheckWeight (690) */ export interface PolymeshExtensionsCheckWeight extends FrameSystemExtensionsCheckWeight {} - /** @name FrameSystemExtensionsCheckWeight (688) */ + /** @name FrameSystemExtensionsCheckWeight (691) */ export type FrameSystemExtensionsCheckWeight = Null; - /** @name PalletTransactionPaymentChargeTransactionPayment (689) */ + /** @name PalletTransactionPaymentChargeTransactionPayment (692) */ export interface PalletTransactionPaymentChargeTransactionPayment extends Compact {} - /** @name PalletPermissionsStoreCallMetadata (690) */ + /** @name PalletPermissionsStoreCallMetadata (693) */ export type PalletPermissionsStoreCallMetadata = Null; - /** @name PolymeshRuntimeDevelopRuntime (691) */ + /** @name PolymeshRuntimeDevelopRuntime (694) */ export type PolymeshRuntimeDevelopRuntime = Null; } // declare module From 661f84abce11eafb7f1f2060494dc829e3720628 Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Sat, 14 May 2022 00:29:22 +0800 Subject: [PATCH 51/53] Fix dependabot alerts (#1242) * Bump async. * Update TS deps. in event-listener. --- scripts/cli/package-lock.json | 36 +- scripts/event-listener/package.json | 2 +- scripts/event-listener/yarn.lock | 1441 ++++++++++++++------------- 3 files changed, 776 insertions(+), 703 deletions(-) diff --git a/scripts/cli/package-lock.json b/scripts/cli/package-lock.json index 38e212444a..83454cf0b2 100644 --- a/scripts/cli/package-lock.json +++ b/scripts/cli/package-lock.json @@ -1261,9 +1261,9 @@ } }, "node_modules/@pm2/io/node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dependencies": { "lodash": "^4.17.14" } @@ -1289,9 +1289,9 @@ } }, "node_modules/@pm2/js-api/node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dependencies": { "lodash": "^4.17.14" } @@ -8183,9 +8183,9 @@ } }, "node_modules/vizion/node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dependencies": { "lodash": "^4.17.14" } @@ -9434,9 +9434,9 @@ }, "dependencies": { "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "requires": { "lodash": "^4.17.14" } @@ -9461,9 +9461,9 @@ }, "dependencies": { "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "requires": { "lodash": "^4.17.14" } @@ -14691,9 +14691,9 @@ }, "dependencies": { "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "requires": { "lodash": "^4.17.14" } diff --git a/scripts/event-listener/package.json b/scripts/event-listener/package.json index 64ff3b43c8..8e7d80ede3 100644 --- a/scripts/event-listener/package.json +++ b/scripts/event-listener/package.json @@ -11,7 +11,7 @@ "author": "", "license": "ISC", "dependencies": { - "@polkadot/api": "0.81.1", + "@polkadot/api": "7.11.1", "bn.js": "^4.11.8", "bs58": "^4.0.1", "inquirer": "^6.3.1", diff --git a/scripts/event-listener/yarn.lock b/scripts/event-listener/yarn.lock index 054803c09f..2ba561b5cd 100644 --- a/scripts/event-listener/yarn.lock +++ b/scripts/event-listener/yarn.lock @@ -2,279 +2,374 @@ # yarn lockfile v1 -"@babel/runtime@^7.3.1", "@babel/runtime@^7.4.5": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.5.tgz#582bb531f5f9dc67d2fcb682979894f75e253f12" - dependencies: - regenerator-runtime "^0.13.2" - -"@polkadot/api-derive@^0.81.1": - version "0.81.1" - resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-0.81.1.tgz#0b29de12c024fffab196a7f9c0a48ea80311a418" - dependencies: - "@babel/runtime" "^7.4.5" - "@polkadot/api" "^0.81.1" - "@polkadot/types" "^0.81.1" - "@types/memoizee" "^0.4.2" - memoizee "^0.4.14" - -"@polkadot/api@0.81.1", "@polkadot/api@^0.81.1": - version "0.81.1" - resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-0.81.1.tgz#bc4feefd6d3aa2c69093a9f8a79bbc581ea72f2b" - dependencies: - "@babel/runtime" "^7.4.5" - "@polkadot/api-derive" "^0.81.1" - "@polkadot/extrinsics" "^0.81.1" - "@polkadot/rpc-provider" "^0.81.1" - "@polkadot/rpc-rx" "^0.81.1" - "@polkadot/storage" "^0.81.1" - "@polkadot/types" "^0.81.1" - "@polkadot/util-crypto" "^0.93.1" - -"@polkadot/extrinsics@^0.81.1": - version "0.81.1" - resolved "https://registry.yarnpkg.com/@polkadot/extrinsics/-/extrinsics-0.81.1.tgz#5834c929151d201e8e0edc044131ed01f20c85f9" - dependencies: - "@babel/runtime" "^7.4.5" - "@polkadot/types" "^0.81.1" - "@polkadot/util" "^0.93.1" - -"@polkadot/jsonrpc@^0.81.1": - version "0.81.1" - resolved "https://registry.yarnpkg.com/@polkadot/jsonrpc/-/jsonrpc-0.81.1.tgz#804bac1c698859220085d8bc3cb37725519b0dee" - dependencies: - "@babel/runtime" "^7.4.5" - -"@polkadot/rpc-core@^0.81.1": - version "0.81.1" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-0.81.1.tgz#85421218378090c507590a84afae89576cf786be" - dependencies: - "@babel/runtime" "^7.4.5" - "@polkadot/jsonrpc" "^0.81.1" - "@polkadot/rpc-provider" "^0.81.1" - "@polkadot/types" "^0.81.1" - "@polkadot/util" "^0.93.1" - -"@polkadot/rpc-provider@^0.81.1": - version "0.81.1" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-0.81.1.tgz#1605c858d3732dd28415d209ff9162dace49df6f" - dependencies: - "@babel/runtime" "^7.4.5" - "@polkadot/storage" "^0.81.1" - "@polkadot/util" "^0.93.1" - "@polkadot/util-crypto" "^0.93.1" - "@types/nock" "^10.0.3" - eventemitter3 "^3.1.0" - isomorphic-fetch "^2.2.1" - websocket "^1.0.28" - -"@polkadot/rpc-rx@^0.81.1": - version "0.81.1" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-rx/-/rpc-rx-0.81.1.tgz#08610053e7a68e15881d0def3f4d793d4821ef0a" - dependencies: - "@babel/runtime" "^7.4.5" - "@polkadot/rpc-core" "^0.81.1" - "@polkadot/rpc-provider" "^0.81.1" - "@types/memoizee" "^0.4.2" - "@types/rx" "^4.1.1" - memoizee "^0.4.14" - rxjs "^6.5.2" - -"@polkadot/storage@^0.81.1": - version "0.81.1" - resolved "https://registry.yarnpkg.com/@polkadot/storage/-/storage-0.81.1.tgz#ffb5b7f63fcb35043c5cad52b7f6ff3c9e0e6070" - dependencies: - "@babel/runtime" "^7.4.5" - "@polkadot/types" "^0.81.1" - "@polkadot/util" "^0.93.1" - "@polkadot/util-crypto" "^0.93.1" - -"@polkadot/types@^0.81.1": - version "0.81.1" - resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-0.81.1.tgz#63505692224e047dd7b4631e7dbbd0b095f9149c" - dependencies: - "@babel/runtime" "^7.4.5" - "@polkadot/util" "^0.93.1" - "@polkadot/util-crypto" "^0.93.1" - -"@polkadot/util-crypto@^0.93.1": - version "0.93.1" - resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-0.93.1.tgz#5cd2506f601cd80b28f0556bb8dd3187857059a4" - dependencies: - "@babel/runtime" "^7.4.5" - "@polkadot/util" "^0.93.1" - "@polkadot/wasm-crypto" "^0.11.1" - "@types/bip39" "^2.4.2" - "@types/pbkdf2" "^3.0.0" - "@types/secp256k1" "^3.5.0" - "@types/xxhashjs" "^0.2.1" - bip39 "^2.5.0" - blakejs "^1.1.0" - js-sha3 "^0.8.0" - secp256k1 "^3.7.0" - tweetnacl "^1.0.1" - xxhashjs "^0.2.2" - -"@polkadot/util@^0.93.1": - version "0.93.1" - resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-0.93.1.tgz#d07d633b35e02640da1361259750c061022d4e05" - dependencies: - "@babel/runtime" "^7.4.5" - "@types/bn.js" "^4.11.5" - "@types/deasync" "^0.1.0" - bn.js "^4.11.8" - camelcase "^5.3.1" - chalk "^2.4.2" - ip-regex "^4.1.0" - moment "^2.24.0" - -"@polkadot/wasm-crypto@^0.11.1": - version "0.11.1" - resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto/-/wasm-crypto-0.11.1.tgz#5f5544659a81b5706e757577f880001de21cd298" - -"@types/bip39@^2.4.2": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@types/bip39/-/bip39-2.4.2.tgz#f5d6617212be496bb998d3969f657f77a10c5287" +"@babel/runtime@^7.17.2", "@babel/runtime@^7.17.8": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" + integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== dependencies: - "@types/node" "*" + regenerator-runtime "^0.13.4" -"@types/bn.js@^4.11.4", "@types/bn.js@^4.11.5": - version "4.11.5" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.5.tgz#40e36197433f78f807524ec623afcf0169ac81dc" +"@noble/hashes@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.0.0.tgz#d5e38bfbdaba174805a4e649f13be9a9ed3351ae" + integrity sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg== + +"@noble/secp256k1@1.5.5": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.5.5.tgz#315ab5745509d1a8c8e90d0bdf59823ccf9bcfc3" + integrity sha512-sZ1W6gQzYnu45wPrWx8D3kwI2/U29VYTx9OjbDAd7jwRItJ0cSTMPRL/C8AWZFn9kWFLQGqEXVEE86w4Z8LpIQ== + +"@polkadot/api-augment@7.11.1": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-augment/-/api-augment-7.11.1.tgz#9866afe3281ae8371c8c645e73e848bac1f6fcd3" + integrity sha512-CqtmRZsr7va45r/wnsH+NZMqPyUQv46fmiHxt5gq6NC4p0ziDEVVDDHLlABx5RhQzCvdiBAccZ/X8DyMCFFGEA== + dependencies: + "@babel/runtime" "^7.17.2" + "@polkadot/api-base" "7.11.1" + "@polkadot/rpc-augment" "7.11.1" + "@polkadot/types" "7.11.1" + "@polkadot/types-augment" "7.11.1" + "@polkadot/types-codec" "7.11.1" + "@polkadot/util" "^8.4.1" + +"@polkadot/api-base@7.11.1": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-base/-/api-base-7.11.1.tgz#fb27a7c33808a8f6542b322ffb3c6702a9e15ea8" + integrity sha512-MATI9tm0x3rRlipLMevWzJ4cGvMyrUGyOfwjMg3Z67U7atZgZ93LzowjzDcvSgFVM14d1tBOVWBKkCKnk7C6Zg== + dependencies: + "@babel/runtime" "^7.17.2" + "@polkadot/rpc-core" "7.11.1" + "@polkadot/types" "7.11.1" + "@polkadot/util" "^8.4.1" + rxjs "^7.5.4" + +"@polkadot/api-derive@7.11.1": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-7.11.1.tgz#ede6119577b08d6c94767551dc6ad17c6be64149" + integrity sha512-py7pqs5mLaKPNDvRZ7BcUC7obsbLIuzJT/kZFiGzJXmaObSzU2lJkGD7fV34QlpmGP+Bqb4KtlhtY+Tnq33C0w== + dependencies: + "@babel/runtime" "^7.17.2" + "@polkadot/api" "7.11.1" + "@polkadot/api-augment" "7.11.1" + "@polkadot/api-base" "7.11.1" + "@polkadot/rpc-core" "7.11.1" + "@polkadot/types" "7.11.1" + "@polkadot/types-codec" "7.11.1" + "@polkadot/util" "^8.4.1" + "@polkadot/util-crypto" "^8.4.1" + rxjs "^7.5.4" + +"@polkadot/api@7.11.1": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-7.11.1.tgz#0aeb86319a14a9a2a071476e6a47ee3d6b8e116c" + integrity sha512-VTrhVuSJrWhIww1ofYPd7EhJd1UwKntfdPNRuy/abfb6GPzYCglKV6Sze3CsbI2KawC5oo1K7Ffrdf/lJy81kg== + dependencies: + "@babel/runtime" "^7.17.2" + "@polkadot/api-augment" "7.11.1" + "@polkadot/api-base" "7.11.1" + "@polkadot/api-derive" "7.11.1" + "@polkadot/keyring" "^8.4.1" + "@polkadot/rpc-augment" "7.11.1" + "@polkadot/rpc-core" "7.11.1" + "@polkadot/rpc-provider" "7.11.1" + "@polkadot/types" "7.11.1" + "@polkadot/types-augment" "7.11.1" + "@polkadot/types-codec" "7.11.1" + "@polkadot/types-create" "7.11.1" + "@polkadot/types-known" "7.11.1" + "@polkadot/util" "^8.4.1" + "@polkadot/util-crypto" "^8.4.1" + eventemitter3 "^4.0.7" + rxjs "^7.5.4" + +"@polkadot/keyring@^8.4.1": + version "8.7.1" + resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-8.7.1.tgz#07cf6d6ee351dcf70fbf965b1d6d96c5025ae1b8" + integrity sha512-t6ZgQVC+nQT7XwbWtEhkDpiAzxKVJw8Xd/gWdww6xIrawHu7jo3SGB4QNdPgkf8TvDHYAAJiupzVQYAlOIq3GA== + dependencies: + "@babel/runtime" "^7.17.8" + "@polkadot/util" "8.7.1" + "@polkadot/util-crypto" "8.7.1" + +"@polkadot/networks@8.7.1", "@polkadot/networks@^8.4.1": + version "8.7.1" + resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-8.7.1.tgz#26c2ec6158c985bb77c510d98a3ab1c7e049f89c" + integrity sha512-8xAmhDW0ry5EKcEjp6VTuwoTm0DdDo/zHsmx88P6sVL87gupuFsL+B6TrsYLl8GcaqxujwrOlKB+CKTUg7qFKg== + dependencies: + "@babel/runtime" "^7.17.8" + "@polkadot/util" "8.7.1" + "@substrate/ss58-registry" "^1.17.0" + +"@polkadot/rpc-augment@7.11.1": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-augment/-/rpc-augment-7.11.1.tgz#c77bbdae20e3933ddd2d8eea243a215e35a6861f" + integrity sha512-cP/g6dM5Rmdeno+sOi/PBvAEycRoi/UI1MOKb0lVhlFJayw/uyGOhHtPKOnLh2fyDJ/q66HO3pu6aem3ORFwhQ== + dependencies: + "@babel/runtime" "^7.17.2" + "@polkadot/rpc-core" "7.11.1" + "@polkadot/types" "7.11.1" + "@polkadot/types-codec" "7.11.1" + "@polkadot/util" "^8.4.1" + +"@polkadot/rpc-core@7.11.1": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-7.11.1.tgz#079f2c70e09015d01bfec92f06993a5538399072" + integrity sha512-Bp71BwOSPT4/xmYWn9e9/ikGKYYmltbceVwa0MJiuKI0Xd5YntjtJVov17Fqlt+eddkLGt74750paykvHDJWWQ== + dependencies: + "@babel/runtime" "^7.17.2" + "@polkadot/rpc-augment" "7.11.1" + "@polkadot/rpc-provider" "7.11.1" + "@polkadot/types" "7.11.1" + "@polkadot/util" "^8.4.1" + rxjs "^7.5.4" + +"@polkadot/rpc-provider@7.11.1": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-7.11.1.tgz#f0cf70c4fa3b69fb96aafbed07f8d5725db9cca8" + integrity sha512-07Mg+r9swMjNISDK8ntDI5gFZU8rtHeoB27/qQwZzcWugogva8rNhaInBikZPKlF7yxM6l2VMaQnOziKUNsnRw== + dependencies: + "@babel/runtime" "^7.17.2" + "@polkadot/keyring" "^8.4.1" + "@polkadot/types" "7.11.1" + "@polkadot/types-support" "7.11.1" + "@polkadot/util" "^8.4.1" + "@polkadot/util-crypto" "^8.4.1" + "@polkadot/x-fetch" "^8.4.1" + "@polkadot/x-global" "^8.4.1" + "@polkadot/x-ws" "^8.4.1" + eventemitter3 "^4.0.7" + mock-socket "^9.1.2" + nock "^13.2.4" + +"@polkadot/types-augment@7.11.1": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-augment/-/types-augment-7.11.1.tgz#2c56779dbd1cff509609db912fcc2575e0983828" + integrity sha512-jCnZ/eMkLaqSKl5q4JwBxslhAaJSSNHt04reZRs1i2jlC2UVgiFN1Rr5GJmHYAwDPoFcge/rAm6bckfhXUIdOw== + dependencies: + "@babel/runtime" "^7.17.2" + "@polkadot/types" "7.11.1" + "@polkadot/types-codec" "7.11.1" + "@polkadot/util" "^8.4.1" + +"@polkadot/types-codec@7.11.1": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-codec/-/types-codec-7.11.1.tgz#4cfcd8ab81f6ba510a984c08eb11861b33acab38" + integrity sha512-rDM/FYcnou2Chy+urd7U41lcjM6jWUEUydyP9NuTOSAamCGtH0eKw52GURKTsKTT5r8wJdPMKv/yNxs1i+l5Lw== + dependencies: + "@babel/runtime" "^7.17.2" + "@polkadot/util" "^8.4.1" + +"@polkadot/types-create@7.11.1": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-create/-/types-create-7.11.1.tgz#878b5bdf278ca9456195980aa91957979a4e9342" + integrity sha512-nVYaJC/IDsM4WM9WGjAI7qQ9scPSlBqqzwqLdvXCJeq3trOTt68x39DD0zp0hzJ/7MeXjPToDDWjpAF0B9mWSQ== + dependencies: + "@babel/runtime" "^7.17.2" + "@polkadot/types-codec" "7.11.1" + "@polkadot/util" "^8.4.1" + +"@polkadot/types-known@7.11.1": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-7.11.1.tgz#55c42aae31813360ea54e438a761b0c48392f148" + integrity sha512-BBqQxG7I+wUjeLby1u5p9aSoZ5Vy0oCwmm/aKN64JH9vBEz1OOA0pRdcCooGCG/884Wb5pRpacWTepQMQkOTLw== + dependencies: + "@babel/runtime" "^7.17.2" + "@polkadot/networks" "^8.4.1" + "@polkadot/types" "7.11.1" + "@polkadot/types-codec" "7.11.1" + "@polkadot/types-create" "7.11.1" + "@polkadot/util" "^8.4.1" + +"@polkadot/types-support@7.11.1": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-support/-/types-support-7.11.1.tgz#509d942c8a9c0670a20b77fc1c98c97b7151b75e" + integrity sha512-pJmDUHK7DOO6mjpntxq9Lq0tjvqwc15FrrrNbuENgRiOueRqcAlzv+V80wdzoIBUwINgKphtpzu+rdQIYsVVQg== + dependencies: + "@babel/runtime" "^7.17.2" + "@polkadot/util" "^8.4.1" + +"@polkadot/types@7.11.1": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-7.11.1.tgz#aefdd0efa98b43ebf516947a845e12fc5d63e9ae" + integrity sha512-jxVrxIbsSfH9xK1Q3vaCfJmbkm0OlvoXz0GxdP5RJ7dQnxlNYWQUXanFkKebbRL8gSEs1wSRVccil/TSH65Nvg== + dependencies: + "@babel/runtime" "^7.17.2" + "@polkadot/keyring" "^8.4.1" + "@polkadot/types-augment" "7.11.1" + "@polkadot/types-codec" "7.11.1" + "@polkadot/types-create" "7.11.1" + "@polkadot/util" "^8.4.1" + "@polkadot/util-crypto" "^8.4.1" + rxjs "^7.5.4" + +"@polkadot/util-crypto@8.7.1", "@polkadot/util-crypto@^8.4.1": + version "8.7.1" + resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-8.7.1.tgz#f9fcca2895b5f160ce1c2faa0aa3054cc7aa4655" + integrity sha512-TaSuJ2aNrB5sYK7YXszkEv24nYJKRFqjF2OrggoMg6uYxUAECvTkldFnhtgeizMweRMxJIBu6bMHlSIutbWgjw== + dependencies: + "@babel/runtime" "^7.17.8" + "@noble/hashes" "1.0.0" + "@noble/secp256k1" "1.5.5" + "@polkadot/networks" "8.7.1" + "@polkadot/util" "8.7.1" + "@polkadot/wasm-crypto" "^5.1.1" + "@polkadot/x-bigint" "8.7.1" + "@polkadot/x-randomvalues" "8.7.1" + "@scure/base" "1.0.0" + ed2curve "^0.3.0" + tweetnacl "^1.0.3" + +"@polkadot/util@8.7.1", "@polkadot/util@^8.4.1": + version "8.7.1" + resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-8.7.1.tgz#27fe93bf7b8345276f10cfe9c0380510cd4584f6" + integrity sha512-XjY1bTo7V6OvOCe4yn8H2vifeuBciCy0gq0k5P1tlGUQLI/Yt0hvDmxcA0FEPtqg8CL+rYRG7WXGPVNjkrNvyQ== + dependencies: + "@babel/runtime" "^7.17.8" + "@polkadot/x-bigint" "8.7.1" + "@polkadot/x-global" "8.7.1" + "@polkadot/x-textdecoder" "8.7.1" + "@polkadot/x-textencoder" "8.7.1" + "@types/bn.js" "^5.1.0" + bn.js "^5.2.0" + ip-regex "^4.3.0" + +"@polkadot/wasm-crypto-asmjs@^5.1.1": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-5.1.1.tgz#6648e9c6f627501f61aef570e110022f2be1eff2" + integrity sha512-1WBwc2G3pZMKW1T01uXzKE30Sg22MXmF3RbbZiWWk3H2d/Er4jZQRpjumxO5YGWan+xOb7HQQdwnrUnrPgbDhg== dependencies: - "@types/node" "*" - -"@types/deasync@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@types/deasync/-/deasync-0.1.0.tgz#b2bd6c3fcde3cf67b8be4c2f70136ba8f157b45a" + "@babel/runtime" "^7.17.8" -"@types/memoizee@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@types/memoizee/-/memoizee-0.4.2.tgz#a500158999a8144a9b46cf9a9fb49b15f1853573" - -"@types/nock@^10.0.3": - version "10.0.3" - resolved "https://registry.yarnpkg.com/@types/nock/-/nock-10.0.3.tgz#dab1d18ffbccfbf2db811dab9584304eeb6e1c4c" +"@polkadot/wasm-crypto-wasm@^5.1.1": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-5.1.1.tgz#dc371755a05fe93f87a2754a2bcf1ff42e4bb541" + integrity sha512-F9PZ30J2S8vUNl2oY7Myow5Xsx5z5uNVpnNlJwlmY8IXBvyucvyQ4HSdhJsrbs4W1BfFc0mHghxgp0FbBCnf/Q== dependencies: - "@types/node" "*" + "@babel/runtime" "^7.17.8" -"@types/node@*": - version "12.0.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.8.tgz#551466be11b2adc3f3d47156758f610bd9f6b1d8" - -"@types/node@^10.12.18": - version "10.14.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.9.tgz#2e8d678039d27943ce53a1913386133227fd9066" - -"@types/pbkdf2@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.0.0.tgz#5d9ca5f12a78a08cc89ad72883ad4a30af359229" +"@polkadot/wasm-crypto@^5.1.1": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto/-/wasm-crypto-5.1.1.tgz#d1f8a0da631028ba904c374c1e8496ab3ba4636b" + integrity sha512-JCcAVfH8DhYuEyd4oX1ouByxhou0TvpErKn8kHjtzt7+tRoFi0nzWlmK4z49vszsV3JJgXxV81i10C0BYlwTcQ== dependencies: - "@types/node" "*" + "@babel/runtime" "^7.17.8" + "@polkadot/wasm-crypto-asmjs" "^5.1.1" + "@polkadot/wasm-crypto-wasm" "^5.1.1" -"@types/rx-core-binding@*": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@types/rx-core-binding/-/rx-core-binding-4.0.4.tgz#d969d32f15a62b89e2862c17b3ee78fe329818d3" +"@polkadot/x-bigint@8.7.1": + version "8.7.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-bigint/-/x-bigint-8.7.1.tgz#a496225def32e98c430c76b91c1579f48acf501a" + integrity sha512-ClkhgdB/KqcAKk3zA6Qw8wBL6Wz67pYTPkrAtImpvoPJmR+l4RARauv+MH34JXMUNlNb3aUwqN6lq2Z1zN+mJg== dependencies: - "@types/rx-core" "*" + "@babel/runtime" "^7.17.8" + "@polkadot/x-global" "8.7.1" -"@types/rx-core@*": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/rx-core/-/rx-core-4.0.3.tgz#0b3354b1238cedbe2b74f6326f139dbc7a591d60" - -"@types/rx-lite-aggregates@*": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/rx-lite-aggregates/-/rx-lite-aggregates-4.0.3.tgz#6efb2b7f3d5f07183a1cb2bd4b1371d7073384c2" +"@polkadot/x-fetch@^8.4.1": + version "8.7.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-fetch/-/x-fetch-8.7.1.tgz#dc866e7aa87c39b2e64c87f734b8fbaf1b9190e1" + integrity sha512-ygNparcalYFGbspXtdtZOHvNXZBkNgmNO+um9C0JYq74K5OY9/be93uyfJKJ8JcRJtOqBfVDsJpbiRkuJ1PRfg== dependencies: - "@types/rx-lite" "*" + "@babel/runtime" "^7.17.8" + "@polkadot/x-global" "8.7.1" + "@types/node-fetch" "^2.6.1" + node-fetch "^2.6.7" -"@types/rx-lite-async@*": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/rx-lite-async/-/rx-lite-async-4.0.2.tgz#27fbf0caeff029f41e2d2aae638b05e91ceb600c" +"@polkadot/x-global@8.7.1", "@polkadot/x-global@^8.4.1": + version "8.7.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-global/-/x-global-8.7.1.tgz#b972044125a4fe059f4aef7c15a4e22d18179095" + integrity sha512-WOgUor16IihgNVdiTVGAWksYLUAlqjmODmIK1cuWrLOZtV1VBomWcb3obkO9sh5P6iWziAvCB/i+L0vnTN9ZCA== dependencies: - "@types/rx-lite" "*" + "@babel/runtime" "^7.17.8" -"@types/rx-lite-backpressure@*": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/rx-lite-backpressure/-/rx-lite-backpressure-4.0.3.tgz#05abb19bdf87cc740196c355e5d0b37bb50b5d56" +"@polkadot/x-randomvalues@8.7.1": + version "8.7.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-randomvalues/-/x-randomvalues-8.7.1.tgz#b7cc358c2a6d20f7e7798d45d1d5c7ac8c9ab4f2" + integrity sha512-njt17MlfN6yNyNEti7fL12lr5qM6A1aSGkWKVuqzc7XwSBesifJuW4km5u6r2gwhXjH2eHDv9SoQ7WXu8vrrkg== dependencies: - "@types/rx-lite" "*" + "@babel/runtime" "^7.17.8" + "@polkadot/x-global" "8.7.1" -"@types/rx-lite-coincidence@*": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/rx-lite-coincidence/-/rx-lite-coincidence-4.0.3.tgz#80bd69acc4054a15cdc1638e2dc8843498cd85c0" +"@polkadot/x-textdecoder@8.7.1": + version "8.7.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-textdecoder/-/x-textdecoder-8.7.1.tgz#b706ef98d5a033d02c633009fb8dab4a4f9d7d55" + integrity sha512-ia0Ie2zi4VdQdNVD2GE2FZzBMfX//hEL4w546RMJfZM2LqDS674LofHmcyrsv5zscLnnRyCxZC1+J2dt+6MDIA== dependencies: - "@types/rx-lite" "*" + "@babel/runtime" "^7.17.8" + "@polkadot/x-global" "8.7.1" -"@types/rx-lite-experimental@*": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/rx-lite-experimental/-/rx-lite-experimental-4.0.1.tgz#c532f5cbdf3f2c15da16ded8930d1b2984023cbd" +"@polkadot/x-textencoder@8.7.1": + version "8.7.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-8.7.1.tgz#7820e30081e8e0a607c1c27b9e3486d82d1a723e" + integrity sha512-XDO0A27Xy+eJCKSxENroB8Dcnl+UclGG4ZBei+P/BqZ9rsjskUyd2Vsl6peMXAcsxwOE7g0uTvujoGM8jpKOXw== dependencies: - "@types/rx-lite" "*" + "@babel/runtime" "^7.17.8" + "@polkadot/x-global" "8.7.1" -"@types/rx-lite-joinpatterns@*": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/rx-lite-joinpatterns/-/rx-lite-joinpatterns-4.0.1.tgz#f70fe370518a8432f29158cc92ffb56b4e4afc3e" +"@polkadot/x-ws@^8.4.1": + version "8.7.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-ws/-/x-ws-8.7.1.tgz#501c63c575e04bba68bdc32448e2c9b692f0411e" + integrity sha512-Mt0tcNzGXyKnN3DQ06alkv+JLtTfXWu6zSypFrrKHSQe3u79xMQ1nSicmpT3gWLhIa8YF+8CYJXMrqaXgCnDhw== dependencies: - "@types/rx-lite" "*" + "@babel/runtime" "^7.17.8" + "@polkadot/x-global" "8.7.1" + "@types/websocket" "^1.0.5" + websocket "^1.0.34" -"@types/rx-lite-testing@*": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/rx-lite-testing/-/rx-lite-testing-4.0.1.tgz#21b19d11f4dfd6ffef5a9d1648e9c8879bfe21e9" - dependencies: - "@types/rx-lite-virtualtime" "*" +"@scure/base@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.0.0.tgz#109fb595021de285f05a7db6806f2f48296fcee7" + integrity sha512-gIVaYhUsy+9s58m/ETjSJVKHhKTBMmcRb9cEV5/5dwvfDlfORjKrFsDeDHWRrm6RjcPvCLZFwGJjAjLj1gg4HA== -"@types/rx-lite-time@*": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/rx-lite-time/-/rx-lite-time-4.0.3.tgz#0eda65474570237598f3448b845d2696f2dbb1c4" +"@substrate/ss58-registry@^1.17.0": + version "1.18.0" + resolved "https://registry.yarnpkg.com/@substrate/ss58-registry/-/ss58-registry-1.18.0.tgz#0744480e880ae8e557327557a2a7fc95577292ec" + integrity sha512-nAA1qsorxgdDnx5ie/FL90nM2riTNn72wIq8jtWsR8trsk1uTIHJgQQjEgviFCtMg4Ws9bEjo8DkWBgVGdPFmw== + +"@types/bn.js@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" + integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== dependencies: - "@types/rx-lite" "*" + "@types/node" "*" -"@types/rx-lite-virtualtime@*": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/rx-lite-virtualtime/-/rx-lite-virtualtime-4.0.3.tgz#4b30cacd0fe2e53af29f04f7438584c7d3959537" +"@types/node-fetch@^2.6.1": + version "2.6.1" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.1.tgz#8f127c50481db65886800ef496f20bbf15518975" + integrity sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA== dependencies: - "@types/rx-lite" "*" + "@types/node" "*" + form-data "^3.0.0" -"@types/rx-lite@*": - version "4.0.6" - resolved "https://registry.yarnpkg.com/@types/rx-lite/-/rx-lite-4.0.6.tgz#3c02921c4244074234f26b772241bcc20c18c253" +"@types/node@*": + version "17.0.33" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.33.tgz#3c1879b276dc63e73030bb91165e62a4509cd506" + integrity sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ== + +"@types/pbkdf2@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" + integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== dependencies: - "@types/rx-core" "*" - "@types/rx-core-binding" "*" + "@types/node" "*" -"@types/rx@^4.1.1": - version "4.1.1" - resolved "https://registry.yarnpkg.com/@types/rx/-/rx-4.1.1.tgz#598fc94a56baed975f194574e0f572fd8e627a48" - dependencies: - "@types/rx-core" "*" - "@types/rx-core-binding" "*" - "@types/rx-lite" "*" - "@types/rx-lite-aggregates" "*" - "@types/rx-lite-async" "*" - "@types/rx-lite-backpressure" "*" - "@types/rx-lite-coincidence" "*" - "@types/rx-lite-experimental" "*" - "@types/rx-lite-joinpatterns" "*" - "@types/rx-lite-testing" "*" - "@types/rx-lite-time" "*" - "@types/rx-lite-virtualtime" "*" - -"@types/secp256k1@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-3.5.0.tgz#0f3baf16b07488c6da2633a63b4160bcf8d0fd5b" +"@types/secp256k1@^4.0.1": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" + integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== dependencies: "@types/node" "*" -"@types/xxhashjs@^0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@types/xxhashjs/-/xxhashjs-0.2.1.tgz#6cd06b2eca5228765ff45960cf2c2a557ddf109a" +"@types/websocket@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.5.tgz#3fb80ed8e07f88e51961211cd3682a3a4a81569c" + integrity sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ== dependencies: "@types/node" "*" ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== ansi-regex@^3.0.0: version "3.0.1" @@ -282,63 +377,58 @@ ansi-regex@^3.0.0: integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" -base-x@^3.0.2: - version "3.0.7" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.7.tgz#1c5a7fafe8f66b4114063e8da102799d4e7c408f" - integrity sha512-zAKJGuQPihXW22fkrfOclUUZXM2g92z5GzlSMHxhO6r6Qj+Nm0ccaGNBzDZojzwOMkpjAv4J0fOv1U4go+a4iw== - dependencies: - safe-buffer "^5.0.1" - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - dependencies: - file-uri-to-path "1.0.0" +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -bip39@^2.5.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.6.0.tgz#9e3a720b42ec8b3fbe4038f1e445317b6a99321c" - dependencies: - create-hash "^1.1.0" - pbkdf2 "^3.0.9" - randombytes "^2.0.1" - safe-buffer "^5.0.1" - unorm "^1.3.3" - -bip66@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" +base-x@^3.0.2: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== dependencies: safe-buffer "^5.0.1" blakejs@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== bn.js@4.11.6: version "4.11.6" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU= + +bn.js@^4.11.8, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -bn.js@4.11.8, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" +bn.js@^5.1.2, bn.js@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== -brorand@^1.0.1: +brorand@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= -browserify-aes@^1.0.6: +browserify-aes@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== dependencies: buffer-xor "^1.0.3" cipher-base "^1.0.0" @@ -347,28 +437,38 @@ browserify-aes@^1.0.6: inherits "^2.0.1" safe-buffer "^5.0.1" -bs58@^4.0.1: +bs58@^4.0.0, bs58@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= dependencies: base-x "^3.0.2" -buffer-to-arraybuffer@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" +bufferutil@^4.0.1: + version "4.0.6" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.6.tgz#ebd6c67c7922a0e902f053e5d8be5ec850e48433" + integrity sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw== + dependencies: + node-gyp-build "^4.3.0" chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" @@ -377,10 +477,12 @@ chalk@^2.4.2: chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" @@ -388,26 +490,38 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= dependencies: restore-cursor "^2.0.0" cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== dependencies: cipher-base "^1.0.1" inherits "^2.0.1" @@ -415,9 +529,10 @@ create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.4: +create-hmac@^1.1.4, create-hmac@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== dependencies: cipher-base "^1.0.3" create-hash "^1.1.0" @@ -426,13 +541,10 @@ create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -cuint@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" - -d@1: +d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== dependencies: es5-ext "^0.10.50" type "^1.0.1" @@ -440,147 +552,144 @@ d@1: debug@^2.2.0: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - -decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= - dependencies: - mimic-response "^1.0.0" - -define-properties@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" +debug@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: - object-keys "^1.0.12" + ms "2.1.2" -dom-walk@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -drbg.js@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" +ed2curve@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/ed2curve/-/ed2curve-0.3.0.tgz#322b575152a45305429d546b071823a93129a05d" + integrity sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ== dependencies: - browserify-aes "^1.0.6" - create-hash "^1.1.2" - create-hmac "^1.1.4" + tweetnacl "1.x.x" -elliptic@^6.4.0, elliptic@^6.4.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" +elliptic@^6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" + bn.js "^4.11.9" + brorand "^1.1.0" hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - -encoding@^0.1.11: - version "0.1.12" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" - dependencies: - iconv-lite "~0.4.13" - -es-abstract@^1.5.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" - dependencies: - es-to-primitive "^1.2.0" - function-bind "^1.1.1" - has "^1.0.3" - is-callable "^1.1.4" - is-regex "^1.0.4" - object-keys "^1.0.12" - -es-to-primitive@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" -es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: - version "0.10.50" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.50.tgz#6d0e23a0abdb27018e5ac4fd09b412bc5517a778" +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.61" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.61.tgz#311de37949ef86b6b0dcea894d1ffedb909d3269" + integrity sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA== dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.1" - next-tick "^1.0.0" + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" -es6-iterator@^2.0.3, es6-iterator@~2.0.3: +es6-iterator@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= dependencies: d "1" es5-ext "^0.10.35" es6-symbol "^3.1.1" -es6-symbol@^3.1.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - dependencies: - d "1" - es5-ext "~0.10.14" - -es6-weak-map@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== dependencies: - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - es6-symbol "^3.1.1" + d "^1.0.1" + ext "^1.1.2" escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +ethereum-bloom-filters@^1.0.6: + version "1.0.10" + resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" + integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== + dependencies: + js-sha3 "^0.8.0" + +ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== + dependencies: + "@types/pbkdf2" "^3.0.0" + "@types/secp256k1" "^4.0.1" + blakejs "^1.1.0" + browserify-aes "^1.2.0" + bs58check "^2.1.2" + create-hash "^1.2.0" + create-hmac "^1.1.7" + hash.js "^1.1.7" + keccak "^3.0.0" + pbkdf2 "^3.0.17" + randombytes "^2.1.0" + safe-buffer "^5.1.2" + scrypt-js "^3.0.0" + secp256k1 "^4.0.1" + setimmediate "^1.0.5" -eth-lib@0.2.8: - version "0.2.8" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" +ethereumjs-util@^7.1.0: + version "7.1.4" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz#a6885bcdd92045b06f596c7626c3e89ab3312458" + integrity sha512-p6KmuPCX4mZIqsQzXfmSx9Y0l2hqf+VkAiwSisW3UKUFdk8ZkAt+AYaor83z2nSi6CU2zSsXMlD80hAbNEGM0A== dependencies: - bn.js "^4.11.6" - elliptic "^6.4.0" - xhr-request-promise "^0.1.2" + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + rlp "^2.2.4" -ethjs-unit@^0.1.6: +ethjs-unit@0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" + integrity sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk= dependencies: bn.js "4.11.6" number-to-bn "1.7.0" -event-emitter@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - dependencies: - d "1" - es5-ext "~0.10.14" - -eventemitter3@^3.1.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" +eventemitter3@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== dependencies: md5.js "^1.3.4" safe-buffer "^5.1.1" +ext@^1.1.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52" + integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg== + dependencies: + type "^2.5.0" + external-editor@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== dependencies: chardet "^0.7.0" iconv-lite "^0.4.24" @@ -589,79 +698,66 @@ external-editor@^3.0.3: figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= dependencies: escape-string-regexp "^1.0.5" -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - dependencies: - is-callable "^1.1.3" - -function-bind@^1.0.2, function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - -global@~4.3.0: - version "4.3.2" - resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== dependencies: - min-document "^2.19.0" - process "~0.5.1" + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - -has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - -has@^1.0.1, has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - dependencies: - function-bind "^1.1.1" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" -hash.js@^1.0.0, hash.js@^1.0.3: +hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== dependencies: inherits "^2.0.3" minimalistic-assert "^1.0.1" -hmac-drbg@^1.0.0: +hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= dependencies: hash.js "^1.0.3" minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -iconv-lite@^0.4.24, iconv-lite@~0.4.13: +iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" -inherits@^2.0.1, inherits@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" +inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== inquirer@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7" + version "6.5.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" + integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== dependencies: ansi-escapes "^3.2.0" chalk "^2.4.2" @@ -669,7 +765,7 @@ inquirer@^6.3.1: cli-width "^2.0.0" external-editor "^3.0.3" figures "^2.0.0" - lodash "^4.17.11" + lodash "^4.17.12" mute-stream "0.0.7" run-async "^2.2.0" rxjs "^6.4.0" @@ -677,190 +773,167 @@ inquirer@^6.3.1: strip-ansi "^5.1.0" through "^2.3.6" -ip-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.1.0.tgz#5ad62f685a14edb421abebc2fff8db94df67b455" - -is-callable@^1.1.3, is-callable@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - -is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" +ip-regex@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" + integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - -is-function@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= is-hex-prefixed@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" - -is-promise@^2.1, is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - dependencies: - has "^1.0.1" - -is-stream@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - -is-symbol@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" - dependencies: - has-symbols "^1.0.0" + integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - -isomorphic-fetch@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" - dependencies: - node-fetch "^1.0.1" - whatwg-fetch ">=0.10.0" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= js-sha3@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -lodash@^4.17.11: +keccak@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" + integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +lodash.set@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" + integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= + +lodash@^4.17.12: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -lru-queue@0.1: - version "0.1.0" - resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" - dependencies: - es5-ext "~0.10.2" - md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== dependencies: hash-base "^3.0.0" inherits "^2.0.1" safe-buffer "^5.1.2" -memoizee@^0.4.14: - version "0.4.14" - resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57" +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: - d "1" - es5-ext "^0.10.45" - es6-weak-map "^2.0.2" - event-emitter "^0.3.5" - is-promise "^2.1" - lru-queue "0.1" - next-tick "1" - timers-ext "^0.1.5" + mime-db "1.52.0" mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - -mimic-response@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - dependencies: - dom-walk "^0.1.0" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: +minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -moment@^2.24.0: - version "2.29.2" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.2.tgz#00910c60b20843bcba52d37d58c628b47b1f20e4" - integrity sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg== +mock-socket@^9.1.2: + version "9.1.3" + resolved "https://registry.yarnpkg.com/mock-socket/-/mock-socket-9.1.3.tgz#bcb106c6b345001fa7619466fcf2f8f5a156b10f" + integrity sha512-uz8lx8c5wuJYJ21f5UtovqpV0+KJuVwE7cVOLNhrl2QW/CvmstOLRfjXnLSbfFHZtJtiaSGQu0oCJA8SmRcK6A== ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -nan@^2.11.0, nan@^2.14.0: - version "2.14.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== -next-tick@1, next-tick@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" +nock@^13.2.4: + version "13.2.4" + resolved "https://registry.yarnpkg.com/nock/-/nock-13.2.4.tgz#43a309d93143ee5cdcca91358614e7bde56d20e1" + integrity sha512-8GPznwxcPNCH/h8B+XZcKjYPXnUV5clOKCjAqyjsiqA++MpNx9E9+t8YPp0MbThO+KauRo7aZJ1WuIZmOrT2Ug== + dependencies: + debug "^4.1.0" + json-stringify-safe "^5.0.1" + lodash.set "^4.3.2" + propagate "^2.0.0" -node-fetch@^1.0.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-fetch@^2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: - encoding "^0.1.11" - is-stream "^1.0.1" + whatwg-url "^5.0.0" + +node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz#42e99687ce87ddeaf3a10b99dc06abc11021f3f4" + integrity sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ== number-to-bn@1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" + integrity sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA= dependencies: bn.js "4.11.6" strip-hex-prefix "1.0.0" -object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - -object-keys@^1.0.12: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - -once@^1.3.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= dependencies: mimic-fn "^1.0.0" os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -parse-headers@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.2.tgz#9545e8a4c1ae5eaea7d24992bca890281ed26e34" - dependencies: - for-each "^0.3.3" - string.prototype.trim "^1.1.2" - -pbkdf2@^3.0.9: - version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" +pbkdf2@^3.0.17: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -868,31 +941,36 @@ pbkdf2@^3.0.9: safe-buffer "^5.0.1" sha.js "^2.4.8" -process@~0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" - -query-string@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" - dependencies: - decode-uri-component "^0.2.0" - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" +propagate@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/propagate/-/propagate-2.0.1.tgz#40cdedab18085c792334e64f0ac17256d38f9a45" + integrity sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag== -randombytes@^2.0.1, randombytes@^2.1.0: +randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" -regenerator-runtime@^0.13.2: - version "0.13.2" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" +readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +regenerator-runtime@^0.13.4: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= dependencies: onetime "^2.0.0" signal-exit "^3.0.2" @@ -900,232 +978,227 @@ restore-cursor@^2.0.0: ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== dependencies: hash-base "^3.0.0" inherits "^2.0.1" -run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" +rlp@^2.2.4: + version "2.2.7" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" + integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== dependencies: - is-promise "^2.1.0" + bn.js "^5.2.0" -rxjs@^6.4.0, rxjs@^6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" +run-async@^2.2.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +rxjs@^6.4.0: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== dependencies: tslib "^1.9.0" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" +rxjs@^7.5.4: + version "7.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" + integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== + dependencies: + tslib "^2.1.0" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +scrypt-js@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== -secp256k1@^3.7.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.7.1.tgz#12e473e0e9a7c2f2d4d4818e722ad0e14cc1e2f1" +secp256k1@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== dependencies: - bindings "^1.5.0" - bip66 "^1.1.5" - bn.js "^4.11.8" - create-hash "^1.2.0" - drbg.js "^1.0.1" - elliptic "^6.4.1" - nan "^2.14.0" - safe-buffer "^5.1.2" + elliptic "^6.5.4" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - -simple-concat@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" - integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== - -simple-get@^2.7.0: - version "2.8.2" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.2.tgz#5708fb0919d440657326cd5fe7d2599d07705019" - integrity sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw== - dependencies: - decompress-response "^3.3.0" - once "^1.3.1" - simple-concat "^1.0.0" - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== string-width@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== dependencies: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string.prototype.trim@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.0" - function-bind "^1.0.2" + safe-buffer "~5.2.0" strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= dependencies: ansi-regex "^3.0.0" strip-ansi@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: ansi-regex "^4.1.0" strip-hex-prefix@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" + integrity sha1-DF8VX+8RUTczd96du1iNoFUA428= dependencies: is-hex-prefixed "1.0.0" supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - -timed-out@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - -timers-ext@^0.1.5: - version "0.1.7" - resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" - dependencies: - es5-ext "~0.10.46" - next-tick "1" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: os-tmpdir "~1.0.2" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= + tslib@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tweetnacl@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.1.tgz#2594d42da73cd036bd0d2a54683dd35a6b55ca17" +tslib@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + +tweetnacl@1.x.x, tweetnacl@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== type@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/type/-/type-1.0.1.tgz#084c9a17fcc9151a2cdb1459905c2e45e4bb7d61" + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.6.0.tgz#3ca6099af5981d36ca86b78442973694278a219f" + integrity sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ== typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== dependencies: is-typedarray "^1.0.0" -unorm@^1.3.3: - version "1.5.0" - resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.5.0.tgz#01fa9b76f1c60f7916834605c032aa8962c3f00a" +utf-8-validate@^5.0.2: + version "5.0.9" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.9.tgz#ba16a822fbeedff1a58918f2a6a6b36387493ea3" + integrity sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q== + dependencies: + node-gyp-build "^4.3.0" -url-set-query@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" +utf8@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== -utf8@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.1.tgz#2e01db02f7d8d0944f77104f1609eb0c304cf768" +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= web3-utils@^1.0.0-beta.55: - version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.55.tgz#beb40926b7c04208b752d36a9bc959d27a04b308" - dependencies: - "@babel/runtime" "^7.3.1" - "@types/bn.js" "^4.11.4" - "@types/node" "^10.12.18" - bn.js "4.11.8" - eth-lib "0.2.8" - ethjs-unit "^0.1.6" - lodash "^4.17.11" + version "1.7.3" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.7.3.tgz#b214d05f124530d8694ad364509ac454d05f207c" + integrity sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg== + dependencies: + bn.js "^4.11.9" + ethereum-bloom-filters "^1.0.6" + ethereumjs-util "^7.1.0" + ethjs-unit "0.1.6" number-to-bn "1.7.0" randombytes "^2.1.0" - utf8 "2.1.1" + utf8 "3.0.0" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= -websocket@^1.0.28: - version "1.0.28" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.28.tgz#9e5f6fdc8a3fe01d4422647ef93abdd8d45a78d3" +websocket@^1.0.34: + version "1.0.34" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" + integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== dependencies: + bufferutil "^4.0.1" debug "^2.2.0" - nan "^2.11.0" + es5-ext "^0.10.50" typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" yaeti "^0.0.6" -whatwg-fetch@>=0.10.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -xhr-request-promise@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.2.tgz#343c44d1ee7726b8648069682d0f840c83b4261d" - dependencies: - xhr-request "^1.0.1" - -xhr-request@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" - dependencies: - buffer-to-arraybuffer "^0.0.5" - object-assign "^4.1.1" - query-string "^5.0.1" - simple-get "^2.7.0" - timed-out "^4.0.1" - url-set-query "^1.0.0" - xhr "^2.0.4" - -xhr@^2.0.4: - version "2.5.0" - resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.5.0.tgz#bed8d1676d5ca36108667692b74b316c496e49dd" - dependencies: - global "~4.3.0" - is-function "^1.0.1" - parse-headers "^2.0.0" - xtend "^4.0.0" - -xtend@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - -xxhashjs@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8" +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= dependencies: - cuint "^0.2.2" + tr46 "~0.0.3" + webidl-conversions "^3.0.0" yaeti@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= From 0ec8819ac75c0741706423b3861231942132d8d9 Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Mon, 16 May 2022 15:32:35 +0200 Subject: [PATCH 52/53] MESH-1824: Empty perms default + MESH-1825: Contracts RPC (#1239) * mesh-1824: make empty perms the default * mesh-1825: enable rpc for contracts * mesh-1825: address review comments * Fix comment. Co-authored-by: Robert Gabriel Jakabosky Co-authored-by: Robert Gabriel Jakabosky --- Cargo.lock | 44 ++++++ Cargo.toml | 9 +- node-rpc/Cargo.toml | 2 +- node-rpc/src/lib.rs | 10 +- pallets/contracts/src/benchmarking.rs | 6 +- pallets/contracts/src/lib.rs | 141 ++++++++++++++++++-- pallets/runtime/ci/Cargo.toml | 7 +- pallets/runtime/common/src/runtime.rs | 35 +++-- pallets/runtime/develop/Cargo.toml | 7 +- pallets/runtime/mainnet/Cargo.toml | 7 +- pallets/runtime/testnet/Cargo.toml | 7 +- pallets/runtime/tests/Cargo.toml | 4 +- pallets/runtime/tests/src/contracts_test.rs | 2 +- src/service.rs | 4 +- 14 files changed, 229 insertions(+), 56 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 17294fd236..fd163595da 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4579,6 +4579,38 @@ dependencies = [ "syn", ] +[[package]] +name = "pallet-contracts-rpc" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +dependencies = [ + "jsonrpc-core", + "jsonrpc-core-client", + "jsonrpc-derive", + "pallet-contracts-primitives", + "pallet-contracts-rpc-runtime-api", + "parity-scale-codec 2.3.1", + "serde", + "sp-api", + "sp-blockchain", + "sp-core", + "sp-rpc", + "sp-runtime", +] + +[[package]] +name = "pallet-contracts-rpc-runtime-api" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +dependencies = [ + "pallet-contracts-primitives", + "parity-scale-codec 2.3.1", + "scale-info", + "sp-api", + "sp-runtime", + "sp-std", +] + [[package]] name = "pallet-corporate-actions" version = "0.1.0" @@ -5847,6 +5879,7 @@ dependencies = [ "pallet-balances 0.1.0", "pallet-bridge", "pallet-committee", + "pallet-contracts-rpc-runtime-api", "pallet-corporate-actions", "pallet-external-agents", "pallet-group", @@ -6005,6 +6038,7 @@ version = "0.1.0" dependencies = [ "jsonrpc-core", "node-rpc", + "pallet-contracts-rpc", "pallet-group-rpc", "pallet-protocol-fee-rpc", "pallet-staking-rpc", @@ -6095,6 +6129,8 @@ dependencies = [ "pallet-committee", "pallet-compliance-manager", "pallet-contracts", + "pallet-contracts-primitives", + "pallet-contracts-rpc-runtime-api", "pallet-corporate-actions", "pallet-external-agents", "pallet-grandpa", @@ -6212,6 +6248,8 @@ dependencies = [ "pallet-committee", "pallet-compliance-manager", "pallet-contracts", + "pallet-contracts-primitives", + "pallet-contracts-rpc-runtime-api", "pallet-corporate-actions", "pallet-external-agents", "pallet-grandpa", @@ -6293,6 +6331,8 @@ dependencies = [ "pallet-committee", "pallet-compliance-manager", "pallet-contracts", + "pallet-contracts-primitives", + "pallet-contracts-rpc-runtime-api", "pallet-corporate-actions", "pallet-external-agents", "pallet-grandpa", @@ -6375,6 +6415,8 @@ dependencies = [ "pallet-committee", "pallet-compliance-manager", "pallet-contracts", + "pallet-contracts-primitives", + "pallet-contracts-rpc-runtime-api", "pallet-corporate-actions", "pallet-external-agents", "pallet-grandpa", @@ -6465,6 +6507,8 @@ dependencies = [ "pallet-committee", "pallet-compliance-manager", "pallet-contracts", + "pallet-contracts-primitives", + "pallet-contracts-rpc-runtime-api", "pallet-corporate-actions", "pallet-external-agents", "pallet-grandpa", diff --git a/Cargo.toml b/Cargo.toml index 9f7ac62878..0d40936f6e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,8 +24,8 @@ pallet-babe = { git = "https://github.com/PolymathNetwork/substrate", branch = " pallet-balances = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } pallet-contracts = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } pallet-contracts-primitives = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -#pallet-contracts-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -#pallet-contracts-rpc-runtime-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +pallet-contracts-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +pallet-contracts-rpc-runtime-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } pallet-grandpa = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } pallet-im-online = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } pallet-indices = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } @@ -122,7 +122,7 @@ members = [ "pallets/committee", "pallets/common", "pallets/compliance-manager", - #"pallets/contracts", + "pallets/contracts", "pallets/corporate-actions", "pallets/external-agents", "pallets/group", @@ -212,8 +212,7 @@ frame-support = "4.0.0-dev" frame-system = "4.0.0-dev" frame-system-rpc-runtime-api = "4.0.0-dev" grandpa = { package = "sc-finality-grandpa", version = "0.10.0-dev" } -#pallet-contracts = "4.0.0-dev" -#pallet-contracts-rpc-runtime-api = "4.0.0-dev" +pallet-contracts-rpc-runtime-api = "4.0.0-dev" pallet-babe = "4.0.0-dev" pallet-im-online = "4.0.0-dev" pallet-indices = "4.0.0-dev" diff --git a/node-rpc/Cargo.toml b/node-rpc/Cargo.toml index 5929a02223..6f96fa08b5 100644 --- a/node-rpc/Cargo.toml +++ b/node-rpc/Cargo.toml @@ -11,7 +11,7 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] polymesh-primitives = { path = "../primitives", default-features = false } -#pallet-contracts-rpc = { version = "4.0.0-dev" } +pallet-contracts-rpc = { version = "4.0.0-dev" } pallet-group-rpc = { path = "../pallets/group/rpc" } pallet-staking-rpc = { path = "../pallets/staking/rpc" } pallet-protocol-fee-rpc = { path = "../pallets/protocol-fee/rpc" } diff --git a/node-rpc/src/lib.rs b/node-rpc/src/lib.rs index 491cf3b81e..b714258ba9 100644 --- a/node-rpc/src/lib.rs +++ b/node-rpc/src/lib.rs @@ -30,7 +30,9 @@ #![warn(missing_docs)] -use polymesh_primitives::{AccountId, Block, BlockNumber, Hash, IdentityId, Index, Moment, Ticker}; +use polymesh_primitives::{ + AccountId, Balance, Block, BlockNumber, Hash, IdentityId, Index, Moment, Ticker, +}; use sc_client_api::AuxStore; use sc_consensus_babe::{Config, Epoch}; use sc_consensus_epochs::SharedEpochChanges; @@ -117,7 +119,7 @@ where + Send + 'static, C::Api: substrate_frame_rpc_system::AccountNonceApi, - //C::Api: pallet_contracts_rpc::ContractsRuntimeApi, + C::Api: pallet_contracts_rpc::ContractsRuntimeApi, C::Api: node_rpc::transaction_payment::TransactionPaymentRuntimeApi, C::Api: pallet_staking_rpc::StakingRuntimeApi, C::Api: node_rpc::pips::PipsRuntimeApi, @@ -141,7 +143,7 @@ where pips::{Pips, PipsApi}, transaction_payment::{TransactionPayment, TransactionPaymentApi}, }; - //use pallet_contracts_rpc::{Contracts, ContractsApi}; + use pallet_contracts_rpc::{Contracts, ContractsApi}; use pallet_group_rpc::{Group, GroupApi}; use pallet_protocol_fee_rpc::{ProtocolFee, ProtocolFeeApi}; use pallet_staking_rpc::{Staking, StakingApi}; @@ -181,7 +183,7 @@ where // Making synchronous calls in light client freezes the browser currently, // more context: https://github.com/PolymathNetwork/substrate/pull/3480 // These RPCs should use an asynchronous caller instead. - //io.extend_with(ContractsApi::to_delegate(Contracts::new(client.clone()))); + io.extend_with(ContractsApi::to_delegate(Contracts::new(client.clone()))); io.extend_with(TransactionPaymentApi::to_delegate(TransactionPayment::new( client.clone(), ))); diff --git a/pallets/contracts/src/benchmarking.rs b/pallets/contracts/src/benchmarking.rs index 7ced540b74..69b7fffe77 100644 --- a/pallets/contracts/src/benchmarking.rs +++ b/pallets/contracts/src/benchmarking.rs @@ -60,7 +60,7 @@ fn free_balance(acc: &T::AccountId) -> Balance { /// Returns the address of the new contract. fn instantiate(user: &User, wasm: WasmModule, salt: Vec) -> T::AccountId { let callee = Base::::contract_address(&user.account(), &wasm.hash, &salt); - Pallet::::instantiate_with_code( + Pallet::::instantiate_with_code_perms( user.origin().into(), Base::::subsistence_threshold(), // endowment Weight::MAX, // gas limit @@ -201,7 +201,7 @@ benchmarks! { // Pre-instantiate a contract so that one with the hash exists. let _ = instantiate::(&user, wasm, salt()); - }: _(user.origin(), ENDOWMENT, Weight::MAX, hash, vec![], other_salt, Permissions::empty()) + }: instantiate(user.origin(), ENDOWMENT, Weight::MAX, hash, vec![], other_salt) verify { // Ensure contract has the full value. assert_eq!(free_balance::(&addr), ENDOWMENT); @@ -232,7 +232,7 @@ benchmarks! { // Construct the contract code + get addr. let wasm = WasmModule::::sized(c); let addr = Base::::contract_address(&user.account(), &wasm.hash, &salt); - }: _(user.origin(), ENDOWMENT, Weight::MAX, wasm.code, vec![], salt, Permissions::empty()) + }: _(user.origin(), ENDOWMENT, Weight::MAX, wasm.code, vec![], salt) verify { // Ensure contract has the full value. assert_eq!(free_balance::(&addr), ENDOWMENT); diff --git a/pallets/contracts/src/lib.rs b/pallets/contracts/src/lib.rs index 8ace67cc3f..bba2198be6 100644 --- a/pallets/contracts/src/lib.rs +++ b/pallets/contracts/src/lib.rs @@ -63,7 +63,7 @@ use frame_support::{ use frame_system::RawOrigin; use pallet_contracts::chain_extension as ce; use pallet_contracts::Config as BConfig; -use pallet_contracts_primitives::{Code, ContractResult}; +use pallet_contracts_primitives::{Code, ContractInstantiateResult, ContractResult}; use pallet_identity::PermissionedCallOriginData; use pallet_identity::WeightInfo as _; use pallet_permissions::with_call_metadata; @@ -73,6 +73,7 @@ use polymesh_primitives::{Balance, IdentityId, Permissions}; use sp_core::crypto::UncheckedFrom; use sp_core::Bytes; use sp_runtime::traits::Hash; +use sp_std::borrow::Cow; use sp_std::vec::Vec; type Identity = pallet_identity::Module; @@ -229,6 +230,38 @@ decl_module! { Self::base_call(origin, contract, value, gas_limit, data) } + /// Instantiates a smart contract defining it with the given `code` and `salt`. + /// + /// The contract will be attached as a secondary key, + /// with empty permissions, to `origin`'s identity. + /// + /// The contract is transferred `endowment` amount of POLYX. + /// This is distinct from the `gas_limit`, + /// which controls how much gas the deployment code may at most consume. + /// + /// # Arguments + /// - `endowment` amount of POLYX to transfer to the contract. + /// - `gas_limit` for how much gas the `deploy` code in the contract may at most consume. + /// - `code` with the WASM binary defining the smart contract. + /// - `salt` used for contract address derivation. + /// By varying this, the same `code` can be used under the same identity. + /// + /// # Errors + /// - All the errors in `pallet_contracts::Call::instantiate_with_code` can also happen here. + /// - CDD/Permissions are checked, unlike in `pallet_contracts`. + /// - Errors that arise when adding a new secondary key can also occur here. + #[weight = Module::::weight_instantiate_with_code(&code, &salt, &Permissions::empty())] + pub fn instantiate_with_code( + origin, + endowment: Balance, + gas_limit: Weight, + code: Vec, + data: Vec, + salt: Vec + ) -> DispatchResultWithPostInfo { + Self::base_instantiate_with_code(origin, endowment, gas_limit, code, data, salt, Permissions::empty()) + } + /// Instantiates a smart contract defining it with the given `code` and `salt`. /// /// The contract will be attached as a secondary key, @@ -244,13 +277,14 @@ decl_module! { /// - `code` with the WASM binary defining the smart contract. /// - `salt` used for contract address derivation. /// By varying this, the same `code` can be used under the same identity. + /// - `perms` that the new secondary key will have. /// /// # Errors /// - All the errors in `pallet_contracts::Call::instantiate_with_code` can also happen here. /// - CDD/Permissions are checked, unlike in `pallet_contracts`. /// - Errors that arise when adding a new secondary key can also occur here. #[weight = Module::::weight_instantiate_with_code(&code, &salt, &perms)] - pub fn instantiate_with_code( + pub fn instantiate_with_code_perms( origin, endowment: Balance, gas_limit: Weight, @@ -262,6 +296,41 @@ decl_module! { Self::base_instantiate_with_code(origin, endowment, gas_limit, code, data, salt, perms) } + /// Instantiates a smart contract defining using the given `code_hash` and `salt`. + /// + /// Unlike `instantiate_with_code`, + /// this assumes that at least one contract with the same WASM code has already been uploaded. + /// + /// The contract will be attached as a secondary key, + /// with empty permissions, to `origin`'s identity. + /// + /// The contract is transferred `endowment` amount of POLYX. + /// This is distinct from the `gas_limit`, + /// which controls how much gas the deployment code may at most consume. + /// + /// # Arguments + /// - `endowment` amount of POLYX to transfer to the contract. + /// - `gas_limit` for how much gas the `deploy` code in the contract may at most consume. + /// - `code_hash` of an already uploaded WASM binary. + /// - `salt` used for contract address derivation. + /// By varying this, the same `code` can be used under the same identity. + /// + /// # Errors + /// - All the errors in `pallet_contracts::Call::instantiate` can also happen here. + /// - CDD/Permissions are checked, unlike in `pallet_contracts`. + /// - Errors that arise when adding a new secondary key can also occur here. + #[weight = Module::::weight_instantiate_with_hash(&salt, &Permissions::empty())] + pub fn instantiate( + origin, + endowment: Balance, + gas_limit: Weight, + code_hash: CodeHash, + data: Vec, + salt: Vec + ) -> DispatchResultWithPostInfo { + Self::base_instantiate_with_hash(origin, endowment, gas_limit, code_hash, data, salt, Permissions::empty()) + } + /// Instantiates a smart contract defining using the given `code_hash` and `salt`. /// /// Unlike `instantiate_with_code`, @@ -280,13 +349,14 @@ decl_module! { /// - `code_hash` of an already uploaded WASM binary. /// - `salt` used for contract address derivation. /// By varying this, the same `code` can be used under the same identity. + /// - `perms` that the new secondary key will have. /// /// # Errors /// - All the errors in `pallet_contracts::Call::instantiate` can also happen here. /// - CDD/Permissions are checked, unlike in `pallet_contracts`. /// - Errors that arise when adding a new secondary key can also occur here. #[weight = Module::::weight_instantiate_with_hash(&salt, &perms)] - pub fn instantiate_with_hash( + pub fn instantiate_with_hash_perms( origin, endowment: Balance, gas_limit: Weight, @@ -336,7 +406,6 @@ impl Module { // Compute the base weight of roughly `base_instantiate`. Self::weight_instantiate_with_code(&code, &salt, &perms), gas_limit, - T::Hashing::hash(&code), Code::Upload(Bytes(code)), inst_data, salt, @@ -367,7 +436,6 @@ impl Module { // Compute the base weight of roughly `base_instantiate`. Self::weight_instantiate_with_hash(&salt, &perms), gas_limit, - code_hash, Code::Existing(code_hash), inst_data, salt, @@ -394,7 +462,6 @@ impl Module { endowment: Balance, base_weight: Weight, gas_limit: Weight, - code_hash: CodeHash, code: Code>, inst_data: Vec, salt: Vec, @@ -409,7 +476,7 @@ impl Module { with_transaction(|| { // Roll back `prepare_instantiate` if contract was not instantiated. - Self::prepare_instantiate(did, &sender, &code_hash, &salt, perms)?; + Self::prepare_instantiate(did, &sender, &Self::code_hash(&code), &salt, perms)?; // Now we can finally instantiate the contract. Self::handle_error( @@ -427,6 +494,50 @@ impl Module { }) } + /// Logic used by RPC to instantiate a contract `code`. + /// + /// N.B. on pre-instantiation errors, required and consumed gases will be zeroed. + pub fn rpc_instantiate( + sender: T::AccountId, + endowment: Balance, + gas_limit: u64, + code: Code>, + data: Vec, + salt: Vec, + ) -> ContractInstantiateResult { + match (|| { + // Ensure we have perms + we'll need DID. + let did = + pallet_permissions::Module::::ensure_call_permissions(&sender)?.primary_did; + + // Add a secondary key. Deployment contract code might need this. + let code_hash = Self::code_hash(&code); + Self::prepare_instantiate(did, &sender, &code_hash, &salt, Permissions::empty())?; + + Ok(FrameContracts::::bare_instantiate( + sender, endowment, gas_limit, code, data, salt, false, + )) + })() { + Ok(r) => r, + Err(e) => ContractResult { + debug_message: Vec::new(), + result: Err(e), + // Never entered contract execution, + // so no gas related to the limit has yet been consumed. + gas_consumed: 0, + gas_required: 0, + }, + } + } + + /// Computes the code hash of `code`. + fn code_hash(code: &Code>) -> Cow<'_, CodeHash> { + match &code { + Code::Existing(h) => Cow::Borrowed(h), + Code::Upload(c) => Cow::Owned(T::Hashing::hash(c)), + } + } + /// Prepare instantiation of a contract by trying to add it as a secondary key. fn prepare_instantiate( did: IdentityId, @@ -561,9 +672,23 @@ where code: decode!(), data: decode!(), salt: decode!(), + }), + on!(0, 2) => CommonCall::Contracts(Call::instantiate_with_code_perms { + endowment: decode!(), + gas_limit: decode!(), + code: decode!(), + data: decode!(), + salt: decode!(), perms: decode!(), }), - on!(0, 2) => CommonCall::Contracts(Call::instantiate_with_hash { + on!(0, 3) => CommonCall::Contracts(Call::instantiate { + endowment: decode!(), + gas_limit: decode!(), + code_hash: decode!(), + data: decode!(), + salt: decode!(), + }), + on!(0, 4) => CommonCall::Contracts(Call::instantiate_with_hash_perms { endowment: decode!(), gas_limit: decode!(), code_hash: decode!(), diff --git a/pallets/runtime/ci/Cargo.toml b/pallets/runtime/ci/Cargo.toml index 2c6ce8eb1a..49070a45bb 100644 --- a/pallets/runtime/ci/Cargo.toml +++ b/pallets/runtime/ci/Cargo.toml @@ -49,7 +49,7 @@ pallet-test-utils = { path = "../../test-utils", default-features = false } node-rpc-runtime-api = { path = "../../../rpc/runtime-api", default-features = false } pallet-staking-rpc-runtime-api = { package = "pallet-staking-rpc-runtime-api", path = "../../staking/rpc/runtime-api", default-features = false } pallet-protocol-fee-rpc-runtime-api = { package = "pallet-protocol-fee-rpc-runtime-api", path = "../../protocol-fee/rpc/runtime-api", default-features = false } -#pallet-contracts-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } +pallet-contracts-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } # Crypto cryptography_core = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, branch = "confidential-identity-v1" } @@ -81,7 +81,7 @@ sp-arithmetic = { version = "4.0.0-dev", default-features = false } pallet-authorship = { version = "4.0.0-dev", default-features = false } pallet-contracts = { version = "4.0.0-dev", default-features = false } -#pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false} +pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false} pallet-executive = { package = "frame-executive", version = "4.0.0-dev", default-features = false } pallet-grandpa = { version = "4.0.0-dev", default-features = false } pallet-im-online = { version = "4.0.0-dev", default-features = false } @@ -129,8 +129,7 @@ std = [ "pallet-bridge/std", "pallet-committee/std", "pallet-compliance-manager/std", - #"pallet-contracts-primitives/std", - #"pallet-contracts-rpc-runtime-api/std", + "pallet-contracts-rpc-runtime-api/std", "pallet-contracts/std", "pallet-executive/std", "pallet-external-agents/std", diff --git a/pallets/runtime/common/src/runtime.rs b/pallets/runtime/common/src/runtime.rs index 310720540c..a50a0d0cc6 100644 --- a/pallets/runtime/common/src/runtime.rs +++ b/pallets/runtime/common/src/runtime.rs @@ -725,34 +725,41 @@ macro_rules! runtime_apis { } } - /* - impl pallet_contracts_rpc_runtime_api::ContractsApi - for Runtime - { + impl pallet_contracts_rpc_runtime_api::ContractsApi< + Block, + polymesh_primitives::AccountId, + Balance, + BlockNumber, + polymesh_primitives::Hash, + > for Runtime { fn call( origin: polymesh_primitives::AccountId, dest: polymesh_primitives::AccountId, value: Balance, gas_limit: u64, input_data: Vec, - ) -> ContractExecResult { - BaseContracts::bare_call(origin, dest.into(), value, gas_limit, input_data) + ) -> pallet_contracts_primitives::ContractExecResult { + Contracts::bare_call(origin, dest, value, gas_limit, input_data, false) + } + + fn instantiate( + sender: polymesh_primitives::AccountId, + endowment: Balance, + gas_limit: u64, + code: pallet_contracts_primitives::Code, + data: Vec, + salt: Vec, + ) -> pallet_contracts_primitives::ContractInstantiateResult { + PolymeshContracts::rpc_instantiate(sender, endowment, gas_limit, code, data, salt) } fn get_storage( address: polymesh_primitives::AccountId, key: [u8; 32], ) -> pallet_contracts_primitives::GetStorageResult { - BaseContracts::get_storage(address, key) - } - - fn rent_projection( - address: polymesh_primitives::AccountId, - ) -> pallet_contracts_primitives::RentProjectionResult { - BaseContracts::rent_projection(address) + Contracts::get_storage(address, key) } } - */ impl node_rpc_runtime_api::transaction_payment::TransactionPaymentApi< Block, diff --git a/pallets/runtime/develop/Cargo.toml b/pallets/runtime/develop/Cargo.toml index 6c7f09180a..8e896b1ba9 100644 --- a/pallets/runtime/develop/Cargo.toml +++ b/pallets/runtime/develop/Cargo.toml @@ -70,7 +70,7 @@ sp-arithmetic = { version = "4.0.0-dev", default-features = false } # pallet-authorship = { version = "4.0.0-dev", default-features = false } pallet-contracts = { version = "4.0.0-dev", default-features = false } -#pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false } +pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false } pallet-executive = { package = "frame-executive", version = "4.0.0-dev", default-features = false } pallet-grandpa = { version = "4.0.0-dev", default-features = false } pallet-im-online = { version = "4.0.0-dev", default-features = false } @@ -93,7 +93,7 @@ cryptography_core = { git = "https://github.com/PolymathNetwork/cryptography.git frame-system-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } pallet-group-rpc-runtime-api = { path = "../../group/rpc/runtime-api", default-features = false } pallet-protocol-fee-rpc-runtime-api = { path = "../../protocol-fee/rpc/runtime-api", default-features = false } -#pallet-contracts-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } +pallet-contracts-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } pallet-staking-rpc-runtime-api = { path = "../../staking/rpc/runtime-api", default-features = false } node-rpc-runtime-api = { path = "../../../rpc/runtime-api", default-features = false } @@ -137,8 +137,7 @@ std = [ "pallet-bridge/std", "pallet-committee/std", "pallet-compliance-manager/std", - #"pallet-contracts-primitives/std", - #"pallet-contracts-rpc-runtime-api/std", + "pallet-contracts-rpc-runtime-api/std", "pallet-contracts/std", "pallet-corporate-actions/std", "pallet-executive/std", diff --git a/pallets/runtime/mainnet/Cargo.toml b/pallets/runtime/mainnet/Cargo.toml index ad1233ad23..1216949963 100644 --- a/pallets/runtime/mainnet/Cargo.toml +++ b/pallets/runtime/mainnet/Cargo.toml @@ -48,7 +48,7 @@ polymesh-contracts = { path = "../../contracts", default-features = false } node-rpc-runtime-api = { path = "../../../rpc/runtime-api", default-features = false } pallet-staking-rpc-runtime-api = { package = "pallet-staking-rpc-runtime-api", path = "../../staking/rpc/runtime-api", default-features = false } pallet-protocol-fee-rpc-runtime-api = { package = "pallet-protocol-fee-rpc-runtime-api", path = "../../protocol-fee/rpc/runtime-api", default-features = false } -#pallet-contracts-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } +pallet-contracts-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } # Others log = "0.4.8" @@ -66,7 +66,7 @@ pallet-authority-discovery = { version = "4.0.0-dev", default-features = false } pallet-authorship = { version = "4.0.0-dev", default-features = false } pallet-babe = { version = "4.0.0-dev", default-features = false } pallet-contracts = { version = "4.0.0-dev", default-features = false } -#pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false} +pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false} pallet-executive = { package = "frame-executive", version = "4.0.0-dev", default-features = false } pallet-grandpa = { version = "4.0.0-dev", default-features = false } pallet-im-online = { version = "4.0.0-dev", default-features = false } @@ -128,8 +128,7 @@ std = [ "pallet-bridge/std", "pallet-committee/std", "pallet-compliance-manager/std", - #"pallet-contracts-primitives/std", - #"pallet-contracts-rpc-runtime-api/std", + "pallet-contracts-rpc-runtime-api/std", "pallet-contracts/std", "pallet-executive/std", "pallet-external-agents/std", diff --git a/pallets/runtime/testnet/Cargo.toml b/pallets/runtime/testnet/Cargo.toml index 9ba58958ae..37e84bd07d 100644 --- a/pallets/runtime/testnet/Cargo.toml +++ b/pallets/runtime/testnet/Cargo.toml @@ -49,7 +49,7 @@ polymesh-contracts = { path = "../../contracts", default-features = false } node-rpc-runtime-api = { path = "../../../rpc/runtime-api", default-features = false } pallet-staking-rpc-runtime-api = { package = "pallet-staking-rpc-runtime-api", path = "../../staking/rpc/runtime-api", default-features = false } pallet-protocol-fee-rpc-runtime-api = { package = "pallet-protocol-fee-rpc-runtime-api", path = "../../protocol-fee/rpc/runtime-api", default-features = false } -#pallet-contracts-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } +pallet-contracts-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } # Crypto cryptography_core = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, branch = "confidential-identity-v1" } @@ -81,7 +81,7 @@ sp-arithmetic = { version = "4.0.0-dev", default-features = false } pallet-authorship = { version = "4.0.0-dev", default-features = false } pallet-contracts = { version = "4.0.0-dev", default-features = false } -#pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false} +pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false} pallet-executive = { package = "frame-executive", version = "4.0.0-dev", default-features = false } pallet-grandpa = { version = "4.0.0-dev", default-features = false } pallet-im-online = { version = "4.0.0-dev", default-features = false } @@ -129,8 +129,7 @@ std = [ "pallet-bridge/std", "pallet-committee/std", "pallet-compliance-manager/std", - #"pallet-contracts-primitives/std", - #"pallet-contracts-rpc-runtime-api/std", + "pallet-contracts-rpc-runtime-api/std", "pallet-contracts/std", "pallet-executive/std", "pallet-external-agents/std", diff --git a/pallets/runtime/tests/Cargo.toml b/pallets/runtime/tests/Cargo.toml index dcd2efb00a..8d9bd6bc46 100644 --- a/pallets/runtime/tests/Cargo.toml +++ b/pallets/runtime/tests/Cargo.toml @@ -69,8 +69,8 @@ pallet-authority-discovery = { version = "4.0.0-dev", default-features = false } pallet-authorship = { version = "4.0.0-dev", default-features = false } pallet-babe = { version = "4.0.0-dev", default-features = false } pallet-contracts = { version = "4.0.0-dev", default-features = false } -#pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false } -#pallet-contracts-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } +pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false } +pallet-contracts-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } pallet-executive = { package = "frame-executive", version = "4.0.0-dev", default-features = false } pallet-grandpa = { version = "4.0.0-dev", default-features = false } pallet-im-online = { version = "4.0.0-dev", default-features = false } diff --git a/pallets/runtime/tests/src/contracts_test.rs b/pallets/runtime/tests/src/contracts_test.rs index b7433253a0..3991583a95 100644 --- a/pallets/runtime/tests/src/contracts_test.rs +++ b/pallets/runtime/tests/src/contracts_test.rs @@ -65,7 +65,7 @@ fn misc_polymesh_extensions() { ..Permissions::empty() }; let instantiate = || { - Contracts::instantiate_with_code( + Contracts::instantiate_with_code_perms( owner.origin(), FrameContracts::subsistence_threshold(), GAS_LIMIT, diff --git a/src/service.rs b/src/service.rs index 2de8cc0826..4ea4abe556 100644 --- a/src/service.rs +++ b/src/service.rs @@ -108,7 +108,7 @@ pub trait RuntimeApiCollection: + sp_offchain::OffchainWorkerApi + sp_session::SessionKeys + sp_authority_discovery::AuthorityDiscoveryApi - //+ pallet_contracts_rpc_runtime_api::ContractsApi + + pallet_contracts_rpc_runtime_api::ContractsApi + pallet_staking_rpc_runtime_api::StakingApi + node_rpc_runtime_api::pips::PipsApi + node_rpc_runtime_api::identity::IdentityApi @@ -134,7 +134,7 @@ where + sp_offchain::OffchainWorkerApi + sp_session::SessionKeys + sp_authority_discovery::AuthorityDiscoveryApi - //+ pallet_contracts_rpc_runtime_api::ContractsApi + + pallet_contracts_rpc_runtime_api::ContractsApi + pallet_staking_rpc_runtime_api::StakingApi + node_rpc_runtime_api::pips::PipsApi + node_rpc_runtime_api::identity::IdentityApi From fa2fbcf127c17a8e205358de51be482b9e343c50 Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Tue, 17 May 2022 17:12:19 +0800 Subject: [PATCH 53/53] MESH-1815 Substrate monthly-2022-05 (#1241) * Update to Substrate monthly-2022-05 * Add `storage_deposit_limit` to contracts pallet. * Remove unused REPORTING key type logic. * Wrap substrate `AccountId` to implment Default trait. * Remove unused 'light' logic from node-rpc. * More monthly-2022-05 changes. * monthly-2022-05 staking changes. * Fix tests. * Fix contracts benchmarks. * Fix staking benchmarks. * Fix wasm/benchmark build. * Fix node build. * cargo fmt * Use Rust nightly 2022-05-10. * Remove stabilized feature. * Fix non-benchmark build. * Fix benchmark scripts. * Fix CI tests build. * cargo fmt * Fix staking benchmarks. * Cleanup. * Fix Polkadot.js error handling. * Bump coverage resource class. * Fix contracts code/salt weights. * Use official blake2 crate. * Update confidential_identity dep. * Fix Substrate migrations (System, Contracts). * The Contracts migration isn't needed. Since this is our first release with `pallet_contracts`, no migrations are needed. * Fixup contracts deps. * Fix merge conflicts. * Fix Contracts weights. Need to include `gas_limit` for maximum weight. * Fix warning during benchmark build. * Add `upload_code` and `remove_code` extrinsics. * Improve weights template. * Generate weights for contracts pallet. --- .circleci/config.yml | 16 +- .maintain/benchmarks_1.sh | 20 +- .maintain/benchmarks_2.sh | 22 +- .maintain/benchmarks_3.sh | 22 +- .maintain/frame-weight-template.hbs | 55 +- Cargo.lock | 2962 +++++++++++------ Cargo.toml | 198 +- README.md | 2 +- bin/bench/Cargo.toml | 20 +- bin/bench/src/main.rs | 14 +- bin/crypto-cli/Cargo.toml | 4 +- bin/executor/Cargo.toml | 20 +- bin/executor/tests/common.rs | 4 +- bin/testing/Cargo.toml | 14 +- bin/testing/src/client.rs | 8 +- bin/testing/src/genesis.rs | 14 +- migration-tests/Cargo.toml | 4 +- .../remote-externalities/Cargo.toml | 6 +- node-rpc/Cargo.toml | 8 +- node-rpc/src/lib.rs | 42 - pallets/asset/Cargo.toml | 18 +- pallets/asset/src/lib.rs | 2 +- pallets/balances/Cargo.toml | 18 +- pallets/base/Cargo.toml | 22 +- pallets/bridge/Cargo.toml | 12 +- pallets/bridge/src/lib.rs | 2 +- pallets/committee/Cargo.toml | 16 +- pallets/common/Cargo.toml | 18 +- pallets/common/src/lib.rs | 6 +- pallets/compliance-manager/Cargo.toml | 16 +- pallets/contracts/Cargo.toml | 14 +- pallets/contracts/src/benchmarking.rs | 76 +- pallets/contracts/src/lib.rs | 175 +- pallets/corporate-actions/Cargo.toml | 18 +- pallets/corporate-actions/src/lib.rs | 1 - pallets/external-agents/Cargo.toml | 8 +- pallets/group/Cargo.toml | 16 +- pallets/group/rpc/Cargo.toml | 10 +- pallets/group/rpc/runtime-api/Cargo.toml | 8 +- pallets/identity/Cargo.toml | 16 +- pallets/identity/src/lib.rs | 7 +- pallets/multisig/Cargo.toml | 14 +- pallets/permissions/Cargo.toml | 10 +- pallets/permissions/src/lib.rs | 2 +- pallets/pips/Cargo.toml | 16 +- pallets/pips/src/lib.rs | 1 - pallets/portfolio/Cargo.toml | 10 +- pallets/protocol-fee/Cargo.toml | 14 +- pallets/protocol-fee/rpc/Cargo.toml | 6 +- .../protocol-fee/rpc/runtime-api/Cargo.toml | 6 +- pallets/relayer/Cargo.toml | 10 +- pallets/rewards/Cargo.toml | 12 +- pallets/rewards/src/lib.rs | 2 +- pallets/runtime/build_tool/Cargo.toml | 4 +- pallets/runtime/ci/Cargo.toml | 22 +- pallets/runtime/ci/src/runtime.rs | 18 +- pallets/runtime/common/Cargo.toml | 12 +- pallets/runtime/common/src/impls.rs | 4 +- pallets/runtime/common/src/lib.rs | 6 +- pallets/runtime/common/src/runtime.rs | 68 +- pallets/runtime/develop/Cargo.toml | 30 +- pallets/runtime/develop/src/runtime.rs | 18 +- pallets/runtime/extensions/Cargo.toml | 10 +- .../runtime/extensions/src/check_weight.rs | 2 +- pallets/runtime/mainnet/Cargo.toml | 22 +- pallets/runtime/mainnet/src/runtime.rs | 16 +- pallets/runtime/testnet/Cargo.toml | 22 +- pallets/runtime/testnet/src/runtime.rs | 18 +- pallets/runtime/tests/Cargo.toml | 35 +- pallets/runtime/tests/exec_macro/Cargo.toml | 2 +- pallets/runtime/tests/src/bridge.rs | 7 +- pallets/runtime/tests/src/contracts_test.rs | 5 +- pallets/runtime/tests/src/lib.rs | 1 - pallets/runtime/tests/src/pips_test.rs | 10 +- pallets/runtime/tests/src/relayer_test.rs | 4 +- pallets/runtime/tests/src/staking/mock.rs | 122 +- pallets/runtime/tests/src/staking/mod.rs | 32 +- pallets/runtime/tests/src/storage.rs | 9 +- .../tests/src/transaction_payment_test.rs | 12 +- pallets/runtime/tests/src/utility_test.rs | 15 +- pallets/settlement/Cargo.toml | 16 +- pallets/settlement/src/lib.rs | 41 +- pallets/staking/Cargo.toml | 20 +- pallets/staking/rpc/Cargo.toml | 6 +- pallets/staking/rpc/runtime-api/Cargo.toml | 4 +- pallets/staking/src/lib.rs | 41 +- pallets/staking/src/offchain_election.rs | 3 +- pallets/staking/src/testing_utils.rs | 6 +- pallets/statistics/Cargo.toml | 18 +- pallets/sto/Cargo.toml | 16 +- pallets/sudo/Cargo.toml | 14 +- pallets/sudo/src/mock.rs | 1 + pallets/test-utils/Cargo.toml | 8 +- pallets/transaction-payment/Cargo.toml | 12 +- pallets/transaction-payment/src/lib.rs | 9 +- pallets/treasury/Cargo.toml | 16 +- pallets/utility/Cargo.toml | 14 +- pallets/utility/src/lib.rs | 17 +- pallets/weights/Cargo.toml | 5 +- pallets/weights/src/frame_system.rs | 5 - pallets/weights/src/lib.rs | 1 + pallets/weights/src/pallet_preimage.rs | 134 + pallets/weights/src/pallet_scheduler.rs | 111 + pallets/weights/src/polymesh_contracts.rs | 161 +- primitives/Cargo.toml | 29 +- primitives/asset-metadata/Cargo.toml | 4 +- primitives/src/asset_metadata.rs | 2 +- primitives/src/investor_zkproof_data/v1.rs | 4 +- primitives/src/lib.rs | 46 +- primitives_derive/Cargo.toml | 2 +- primitives_derive/src/lib.rs | 2 - rpc/Cargo.toml | 12 +- rpc/runtime-api/Cargo.toml | 8 +- rpc/runtime-api/src/identity.rs | 4 +- rust-toolchain | 2 +- scripts/bd.sh | 2 +- scripts/bench.sh | 2 +- scripts/cli/package-lock.json | 1494 +++++---- scripts/cli/package.json | 8 +- scripts/cli/polymesh-meta.json | 2 +- .../cli/src/interfaces/augment-api-consts.ts | 55 +- .../cli/src/interfaces/augment-api-errors.ts | 205 +- .../cli/src/interfaces/augment-api-events.ts | 95 +- .../cli/src/interfaces/augment-api-query.ts | 97 +- scripts/cli/src/interfaces/augment-api-rpc.ts | 4 +- scripts/cli/src/interfaces/augment-api-tx.ts | 236 +- scripts/cli/src/interfaces/augment-types.ts | 7 +- scripts/cli/src/interfaces/lookup.ts | 1168 ++++--- scripts/cli/src/interfaces/registry.ts | 378 +++ scripts/cli/src/interfaces/types-lookup.ts | 1180 ++++--- scripts/cli/src/util/init.ts | 6 +- src/chain_spec.rs | 10 +- src/cli.rs | 19 +- src/command.rs | 104 +- src/service.rs | 52 +- utils/permissions/Cargo.toml | 2 +- 136 files changed, 6746 insertions(+), 3737 deletions(-) create mode 100644 pallets/weights/src/pallet_preimage.rs create mode 100644 scripts/cli/src/interfaces/registry.ts diff --git a/.circleci/config.yml b/.circleci/config.yml index 043e4074e2..cc9e698ef9 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 jobs: lint: docker: - - image: polymathnet/rust:debian-nightly-2021-12-14 + - image: polymathnet/rust:debian-nightly-2022-05-10 resource_class: medium environment: VERBOSE: "1" @@ -13,7 +13,7 @@ jobs: command: ./scripts/rustfmt.sh build: docker: - - image: polymathnet/rust:debian-nightly-2021-12-14 + - image: polymathnet/rust:debian-nightly-2022-05-10 resource_class: xlarge environment: - VERBOSE: "1" @@ -96,11 +96,11 @@ jobs: at: . - run: name: Run benchmarks - command: ./polymesh benchmark -p=* -e=* -r 1 -s 1 --execution native --db-cache 512 --heap-pages=2048 + command: ./polymesh benchmark pallet -p=* -e=* -r 1 -s 1 --execution native --db-cache 512 --heap-pages=2048 no_output_timeout: 1h migration-tests: docker: - - image: polymathnet/rust:debian-nightly-2021-12-14 + - image: polymathnet/rust:debian-nightly-2022-05-10 resource_class: large environment: - VERBOSE: "1" @@ -126,7 +126,7 @@ jobs: - "./target" test: docker: - - image: polymathnet/rust:debian-nightly-2021-12-14 + - image: polymathnet/rust:debian-nightly-2022-05-10 resource_class: large environment: - VERBOSE: "1" @@ -162,7 +162,7 @@ jobs: coverage: docker: - image: cimg/rust:1.60.0 - resource_class: large + resource_class: xlarge environment: - VERBOSE: "1" steps: @@ -189,7 +189,7 @@ jobs: - "~/.cargo" cli: docker: - - image: polymathnet/rust:debian-nightly-2021-12-14 + - image: polymathnet/rust:debian-nightly-2022-05-10 resource_class: xlarge environment: VERBOSE: "1" @@ -228,7 +228,7 @@ jobs: - "./scripts/cli/node_modules" clippy: docker: - - image: polymathnet/rust:debian-nightly-2021-12-14 + - image: polymathnet/rust:debian-nightly-2022-05-10 resource_class: large environment: VERBOSE: "1" diff --git a/.maintain/benchmarks_1.sh b/.maintain/benchmarks_1.sh index 6e07fad328..6f12dcdf2e 100755 --- a/.maintain/benchmarks_1.sh +++ b/.maintain/benchmarks_1.sh @@ -1,10 +1,10 @@ -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_session -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_multisig -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_corporate_ballot -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_babe -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_timestamp -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_scheduler -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_indices -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_corporate_actions -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_asset -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_test_utils -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt \ No newline at end of file +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_session -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_multisig -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_corporate_ballot -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_babe -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_timestamp -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_scheduler -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_indices -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_corporate_actions -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_asset -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_test_utils -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt diff --git a/.maintain/benchmarks_2.sh b/.maintain/benchmarks_2.sh index 32eb8b1c31..97757b9fbb 100755 --- a/.maintain/benchmarks_2.sh +++ b/.maintain/benchmarks_2.sh @@ -1,11 +1,11 @@ -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_im_online -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_compliance_manager -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_sto -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_relayer -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_identity -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_committee -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_statistics -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_protocol_fee -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_group -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_checkpoint -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=frame_system -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt \ No newline at end of file +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_im_online -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_compliance_manager -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_sto -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_relayer -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_identity -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_committee -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_statistics -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_protocol_fee -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_group -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_checkpoint -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=frame_system -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt diff --git a/.maintain/benchmarks_3.sh b/.maintain/benchmarks_3.sh index 3f0a4926ec..749140e696 100755 --- a/.maintain/benchmarks_3.sh +++ b/.maintain/benchmarks_3.sh @@ -1,11 +1,11 @@ -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_staking -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_portfolio -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_grandpa -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_capital_distribution -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_utility -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_settlement -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_pips -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_external_agents -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_balances -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_treasury -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt -./target/release/polymesh benchmark -s 100 -r 5 -p=pallet_rewards -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt \ No newline at end of file +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_staking -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_portfolio -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_grandpa -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_capital_distribution -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_utility -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_settlement -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_pips -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_external_agents -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_balances -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_treasury -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt +./target/release/polymesh benchmark pallet -s 100 -r 5 -p=pallet_rewards -e=* --heap-pages 4096 --db-cache 512 --execution wasm --wasm-execution compiled --output ./pallets/weights/src/ --template ./.maintain/frame-weight-template.hbs --raw >> data.txt 2>> log.txt diff --git a/.maintain/frame-weight-template.hbs b/.maintain/frame-weight-template.hbs index 11a9d0ca63..b37875046f 100644 --- a/.maintain/frame-weight-template.hbs +++ b/.maintain/frame-weight-template.hbs @@ -18,7 +18,7 @@ //! Autogenerated weights for {{pallet}} //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION {{version}} -//! DATE: {{date}}, STEPS: {{cmd.steps}}, REPEAT: {{cmd.repeat}}, LOW RANGE: {{cmd.lowest_range_values}}, HIGH RANGE: {{cmd.highest_range_values}} +//! DATE: {{date}}, STEPS: `{{cmd.steps}}`, REPEAT: {{cmd.repeat}}, LOW RANGE: `{{cmd.lowest_range_values}}`, HIGH RANGE: `{{cmd.highest_range_values}}` //! EXECUTION: {{cmd.execution}}, WASM-EXECUTION: {{cmd.wasm_execution}}, CHAIN: {{cmd.chain}}, DB CACHE: {{cmd.db_cache}} // Executed Command: @@ -34,29 +34,32 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; /// Weights for {{pallet}} using the Substrate node and recommended hardware. pub struct WeightInfo; impl {{pallet}}::WeightInfo for WeightInfo { - {{~#each benchmarks as |benchmark|}} - fn {{benchmark.name~}} - ( - {{~#each benchmark.components as |c| ~}} - {{~#if (not c.is_used)}}_{{/if}}{{c.name}}: u32, {{/each~}} - ) -> Weight { - ({{underscore benchmark.base_weight}} as Weight) - {{~#each benchmark.component_weight as |cw|}} - // Standard Error: {{underscore cw.error}} - .saturating_add(({{underscore cw.slope}} as Weight).saturating_mul({{cw.name}} as Weight)) - {{~/each}} - {{~#if (ne benchmark.base_reads "0")}} - .saturating_add(DbWeight::get().reads({{benchmark.base_reads}} as Weight)) - {{~/if}} - {{~#each benchmark.component_reads as |cr|}} - .saturating_add(DbWeight::get().reads(({{cr.slope}} as Weight).saturating_mul({{cr.name}} as Weight))) - {{~/each}} - {{~#if (ne benchmark.base_writes "0")}} - .saturating_add(DbWeight::get().writes({{benchmark.base_writes}} as Weight)) - {{~/if}} - {{~#each benchmark.component_writes as |cw|}} - .saturating_add(DbWeight::get().writes(({{cw.slope}} as Weight).saturating_mul({{cw.name}} as Weight))) - {{~/each}} - } - {{~/each}} + {{#each benchmarks as |benchmark|}} + {{#each benchmark.comments as |comment|}} + // {{comment}} + {{/each}} + fn {{benchmark.name~}} + ( + {{~#each benchmark.components as |c| ~}} + {{~#if (not c.is_used)}}_{{/if}}{{c.name}}: u32, {{/each~}} + ) -> Weight { + ({{underscore benchmark.base_weight}} as Weight) + {{#each benchmark.component_weight as |cw|}} + // Standard Error: {{underscore cw.error}} + .saturating_add(({{underscore cw.slope}} as Weight).saturating_mul({{cw.name}} as Weight)) + {{/each}} + {{#if (ne benchmark.base_reads "0")}} + .saturating_add(DbWeight::get().reads({{benchmark.base_reads}} as Weight)) + {{/if}} + {{#each benchmark.component_reads as |cr|}} + .saturating_add(DbWeight::get().reads(({{cr.slope}} as Weight).saturating_mul({{cr.name}} as Weight))) + {{/each}} + {{#if (ne benchmark.base_writes "0")}} + .saturating_add(DbWeight::get().writes({{benchmark.base_writes}} as Weight)) + {{/if}} + {{#each benchmark.component_writes as |cw|}} + .saturating_add(DbWeight::get().writes(({{cw.slope}} as Weight).saturating_mul({{cw.name}} as Weight))) + {{/each}} + } + {{/each}} } diff --git a/Cargo.lock b/Cargo.lock index fd163595da..2958b4dff5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12,22 +12,13 @@ dependencies = [ "regex", ] -[[package]] -name = "addr2line" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e61f2b7f93d2c7d2b08263acaa4a363b3e276806c68af6134c44f523bf1aacd" -dependencies = [ - "gimli 0.25.0", -] - [[package]] name = "addr2line" version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" dependencies = [ - "gimli 0.26.1", + "gimli", ] [[package]] @@ -53,7 +44,7 @@ checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" dependencies = [ "cfg-if 1.0.0", "cipher", - "cpufeatures 0.2.2", + "cpufeatures", "opaque-debug 0.3.0", ] @@ -102,9 +93,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.56" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4361135be9122e0870de935d7c439aef945b9f9ddd4199a553b5270b49c82a27" +checksum = "08f9b8508dccb7687a1d6c4ce66b2b0ecef467c94667de27d8d7fe1f8d2a9cdc" [[package]] name = "approx" @@ -152,7 +143,7 @@ checksum = "e22d1f4b888c298a027c99dc9048015fac177587de20fc30232a057dfbe24a21" name = "asset-metadata" version = "0.1.0" dependencies = [ - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-primitives", "scale-info", ] @@ -212,7 +203,7 @@ dependencies = [ "parking", "polling", "slab", - "socket2 0.4.4", + "socket2", "waker-fn", "winapi 0.3.9", ] @@ -237,9 +228,9 @@ dependencies = [ [[package]] name = "async-process" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83137067e3a2a6a06d67168e49e68a0957d215410473a740cea95a2425c0b7c6" +checksum = "cf2c06e30a24e8c78a3987d07f0930edf76ef35e027e7bdb063fccafdad1f60c" dependencies = [ "async-io", "blocking", @@ -274,7 +265,7 @@ dependencies = [ "memchr", "num_cpus", "once_cell", - "pin-project-lite 0.2.8", + "pin-project-lite 0.2.9", "pin-utils", "slab", "wasm-bindgen-futures", @@ -282,15 +273,16 @@ dependencies = [ [[package]] name = "async-std-resolver" -version = "0.20.4" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbf3e776afdf3a2477ef4854b85ba0dff3bd85792f685fb3c68948b4d304e4f0" +checksum = "0f2f8a4a203be3325981310ab243a28e6e4ea55b6519bffce05d41ab60e09ad8" dependencies = [ "async-std", "async-trait", "futures-io", "futures-util", "pin-utils", + "socket2", "trust-dns-resolver", ] @@ -321,7 +313,7 @@ dependencies = [ "futures-sink", "futures-util", "memchr", - "pin-project-lite 0.2.8", + "pin-project-lite 0.2.9", ] [[package]] @@ -334,7 +326,7 @@ dependencies = [ "futures-sink", "futures-util", "memchr", - "pin-project-lite 0.2.8", + "pin-project-lite 0.2.9", ] [[package]] @@ -375,20 +367,26 @@ version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11a17d453482a265fd5f8479f2a3f405566e6ca627837aaddb85af8b1ab8ef61" dependencies = [ - "addr2line 0.17.0", + "addr2line", "cc", "cfg-if 1.0.0", "libc", "miniz_oxide", - "object 0.28.3", + "object 0.28.4", "rustc-demangle", ] [[package]] name = "base-x" -version = "0.2.8" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc19a4937b4fbd3fe3379793130e42060d10627a360f2127802b10b87e7baf74" + +[[package]] +name = "base16ct" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" +checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" [[package]] name = "base58" @@ -408,6 +406,26 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +[[package]] +name = "beefy-primitives" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" +dependencies = [ + "parity-scale-codec 3.1.2", + "scale-info", + "sp-api", + "sp-application-crypto", + "sp-core", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "bimap" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc0455254eb5c6964c4545d8bac815e1a1be4f3afe0ae695ea539c12d728d44b" + [[package]] name = "bincode" version = "1.3.3" @@ -454,24 +472,23 @@ dependencies = [ [[package]] name = "bitvec" -version = "0.20.4" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" +checksum = "1489fcb93a5bb47da0462ca93ad252ad6af2145cce58d10d46a83931ba9f016b" dependencies = [ "funty", - "radium 0.6.2", + "radium 0.7.0", "tap", "wyz", ] [[package]] name = "blake2" -version = "0.9.1" -source = "git+https://github.com/PolymathNetwork/hashes?branch=master#237feb84842994875159500f9e5e62d6a511d030" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9cf849ee05b2ee5fba5e36f97ff8ec2533916700fc0758d40d92136a42f3388" dependencies = [ - "crypto-mac 0.8.0", - "digest 0.9.0", - "opaque-debug 0.3.0", + "digest 0.10.3", ] [[package]] @@ -543,6 +560,15 @@ dependencies = [ "generic-array 0.14.5", ] +[[package]] +name = "block-buffer" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" +dependencies = [ + "generic-array 0.14.5", +] + [[package]] name = "block-padding" version = "0.1.5" @@ -602,17 +628,17 @@ dependencies = [ [[package]] name = "bulletproofs" version = "2.0.1" -source = "git+https://github.com/PolymathNetwork/bulletproofs.git?branch=bump-dalek#6cd831b7004e5b7e168d715bd6c99801bbc6b771" +source = "git+https://github.com/PolymathNetwork/bulletproofs.git?branch=bump-dalek#a8651f673610f1dc9122db4d8b7d0a451bab1608" dependencies = [ "byteorder", "curve25519-dalek 3.2.0", "digest 0.9.0", - "merlin 2.0.1", - "rand 0.7.3", - "rand_core 0.5.1", + "merlin 3.0.0", + "rand 0.8.5", + "rand_core 0.6.3", "serde", "serde_derive", - "sha3", + "sha3 0.9.1", "subtle", "thiserror", "zeroize", @@ -660,15 +686,20 @@ dependencies = [ [[package]] name = "bytes" -version = "0.5.6" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" +checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" [[package]] -name = "bytes" -version = "1.1.0" +name = "bzip2-sys" +version = "0.1.11+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] [[package]] name = "cache-padded" @@ -678,9 +709,9 @@ checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" [[package]] name = "camino" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f3132262930b0522068049f5870a856ab8affc80c70d08b6ecb785771a6fc23" +checksum = "07fd178c5af4d59e83498ef15cf3f154e1a6f9d091270cb86283c65ef44e9ef0" dependencies = [ "serde", ] @@ -696,27 +727,13 @@ dependencies = [ [[package]] name = "cargo_metadata" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714a157da7991e23d90686b9524b9e12e0407a108647f52e9328f4b3d51ac7f" -dependencies = [ - "cargo-platform", - "semver 0.11.0", - "semver-parser 0.10.2", - "serde", - "serde_json", -] - -[[package]] -name = "cargo_metadata" -version = "0.13.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "081e3f0755c1f380c2d010481b6fa2e02973586d5f2b24eebb7a2a1d98b143d8" +checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" dependencies = [ "camino", "cargo-platform", - "semver 0.11.0", - "semver-parser 0.10.2", + "semver 1.0.9", "serde", "serde_json", ] @@ -762,21 +779,21 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chacha20" -version = "0.7.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee7ad89dc1128635074c268ee661f90c3f7e83d9fd12910608c36b47d6c3412" +checksum = "01b72a433d0cf2aef113ba70f62634c56fddb0f244e6377185c56a7cadbd8f91" dependencies = [ "cfg-if 1.0.0", "cipher", - "cpufeatures 0.1.5", + "cpufeatures", "zeroize", ] [[package]] name = "chacha20poly1305" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1580317203210c517b6d44794abfbe600698276db18127e37ad3e69bf5e848e5" +checksum = "3b84ed6d1d5f7aa9bdde921a5090e0ca4d934d250ea3b402a5fab3a994e28a2a" dependencies = [ "aead", "chacha20", @@ -835,13 +852,48 @@ version = "2.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ - "ansi_term", + "bitflags", + "textwrap 0.11.0", + "unicode-width", +] + +[[package]] +name = "clap" +version = "3.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2dbdf4bdacb33466e854ce889eee8dfd5729abf7ccd7664d0a2d60cd384440b" +dependencies = [ "atty", "bitflags", + "clap_derive", + "clap_lex", + "indexmap", + "lazy_static", "strsim", - "textwrap", - "unicode-width", - "vec_map", + "termcolor", + "textwrap 0.15.0", +] + +[[package]] +name = "clap_derive" +version = "3.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25320346e922cffe59c0bbc5410c8d8784509efb321488971081313cb1e1a33c" +dependencies = [ + "heck 0.4.0", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a37c35f1112dad5e6e0b1adaff798507497a18fceeb30cceb3bae7d1427b9213" +dependencies = [ + "os_str_bytes", ] [[package]] @@ -865,7 +917,7 @@ dependencies = [ [[package]] name = "confidential_identity" version = "1.0.0" -source = "git+https://github.com/PolymathNetwork/cryptography.git?branch=confidential-identity-v1#5f2a100bc0b21bb59fcd1e32079e7ec74c305a5a" +source = "git+https://github.com/PolymathNetwork/cryptography.git?branch=confidential-identity-v1#6e6ca687cabb8d1203893a294d605e4ea2c15be5" dependencies = [ "blake2", "byteorder", @@ -873,13 +925,13 @@ dependencies = [ "curve25519-dalek 3.2.0", "failure", "lazy_static", - "merlin 2.0.1", - "rand 0.7.3", - "rand_core 0.5.1", + "merlin 3.0.0", + "rand 0.8.5", + "rand_core 0.6.3", "schnorrkel 0.10.1", "serde", "serde_json", - "sha3", + "sha3 0.9.1", "sp-io", "sp-std", "zeroize", @@ -888,7 +940,7 @@ dependencies = [ [[package]] name = "confidential_identity" version = "1.1.2" -source = "git+https://github.com/PolymathNetwork/cryptography.git?branch=confidential-identity-v2#b7bf985355bbd7e5dda4507b7c8c8b9e824b7d72" +source = "git+https://github.com/PolymathNetwork/cryptography.git?branch=confidential-identity-v2#d2d978ba023fb142ade19d4474385dcfc8b3d6fd" dependencies = [ "blake2", "byteorder", @@ -896,19 +948,25 @@ dependencies = [ "cryptography_core 1.0.0 (git+https://github.com/PolymathNetwork/cryptography.git?branch=confidential-identity-v2)", "curve25519-dalek 3.2.0", "failure", - "parity-scale-codec 2.3.1", - "rand 0.7.3", - "rand_core 0.5.1", + "parity-scale-codec 3.1.2", + "rand 0.8.5", + "rand_core 0.6.3", "scale-info", "serde", "serde_bytes", "serde_json", - "sha3", + "sha3 0.9.1", "sp-io", "sp-std", "zeroize", ] +[[package]] +name = "const-oid" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" + [[package]] name = "constant_time_eq" version = "0.1.5" @@ -938,21 +996,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" [[package]] -name = "cpp_demangle" -version = "0.3.5" +name = "core2" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710f" +checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" dependencies = [ - "cfg-if 1.0.0", + "memchr", ] [[package]] -name = "cpufeatures" -version = "0.1.5" +name = "cpp_demangle" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66c99696f6c9dd7f35d486b9d04d7e6e202aa3e8c40d553f2fdf5e7e0c6a71ef" +checksum = "eeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710f" dependencies = [ - "libc", + "cfg-if 1.0.0", ] [[package]] @@ -966,24 +1024,24 @@ dependencies = [ [[package]] name = "cranelift-bforest" -version = "0.77.0" +version = "0.82.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15013642ddda44eebcf61365b2052a23fd8b7314f90ba44aa059ec02643c5139" +checksum = "38faa2a16616c8e78a18d37b4726b98bfd2de192f2fdc8a39ddf568a408a0f75" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.77.0" +version = "0.82.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298f2a7ed5fdcb062d8e78b7496b0f4b95265d20245f2d0ca88f846dd192a3a3" +checksum = "26f192472a3ba23860afd07d2b0217dc628f21fcc72617aa1336d98e1671f33b" dependencies = [ "cranelift-bforest", "cranelift-codegen-meta", "cranelift-codegen-shared", "cranelift-entity", - "gimli 0.25.0", + "gimli", "log", "regalloc", "smallvec", @@ -992,34 +1050,33 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.77.0" +version = "0.82.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cf504261ac62dfaf4ffb3f41d88fd885e81aba947c1241275043885bc5f0bac" +checksum = "0f32ddb89e9b89d3d9b36a5b7d7ea3261c98235a76ac95ba46826b8ec40b1a24" dependencies = [ "cranelift-codegen-shared", - "cranelift-entity", ] [[package]] name = "cranelift-codegen-shared" -version = "0.77.0" +version = "0.82.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd2a72db4301dbe7e5a4499035eedc1e82720009fb60603e20504d8691fa9cd" +checksum = "01fd0d9f288cc1b42d9333b7a776b17e278fc888c28e6a0f09b5573d45a150bc" [[package]] name = "cranelift-entity" -version = "0.77.0" +version = "0.82.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48868faa07cacf948dc4a1773648813c0e453ff9467e800ff10f6a78c021b546" +checksum = "9e3bfe172b83167604601faf9dc60453e0d0a93415b57a9c4d1a7ae6849185cf" dependencies = [ "serde", ] [[package]] name = "cranelift-frontend" -version = "0.77.0" +version = "0.82.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "351c9d13b4ecd1a536215ec2fd1c3ee9ee8bc31af172abf1e45ed0adb7a931df" +checksum = "a006e3e32d80ce0e4ba7f1f9ddf66066d052a8c884a110b91d05404d6ce26dce" dependencies = [ "cranelift-codegen", "log", @@ -1029,9 +1086,9 @@ dependencies = [ [[package]] name = "cranelift-native" -version = "0.77.0" +version = "0.82.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6df8b556663d7611b137b24db7f6c8d9a8a27d7f29c7ea7835795152c94c1b75" +checksum = "501241b0cdf903412ec9075385ac9f2b1eb18a89044d1538e97fab603231f70c" dependencies = [ "cranelift-codegen", "libc", @@ -1040,9 +1097,9 @@ dependencies = [ [[package]] name = "cranelift-wasm" -version = "0.77.0" +version = "0.82.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a69816d90db694fa79aa39b89dda7208a4ac74b6f2b8f3c4da26ee1c8bdfc5e" +checksum = "16d9e4211bbc3268042a96dd4de5bd979cda22434991d035f5f8eacba987fad2" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -1071,7 +1128,7 @@ checksum = "1604dafd25fba2fe2d5895a9da139f8dc9b319a5fe5354ca137cbbce4e178d10" dependencies = [ "atty", "cast", - "clap", + "clap 2.34.0", "criterion-plot", "csv", "itertools", @@ -1150,16 +1207,38 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +[[package]] +name = "crypto-bigint" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c6a1d5fa1de37e071642dfa44ec552ca5b299adb128fab16138e24b548fd21" +dependencies = [ + "generic-array 0.14.5", + "rand_core 0.6.3", + "subtle", + "zeroize", +] + [[package]] name = "crypto-cli" version = "1.0.0" dependencies = [ "confidential_identity 1.0.0", "hex", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-primitives", ] +[[package]] +name = "crypto-common" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8" +dependencies = [ + "generic-array 0.14.5", + "typenum", +] + [[package]] name = "crypto-mac" version = "0.8.0" @@ -1183,19 +1262,19 @@ dependencies = [ [[package]] name = "cryptography_core" version = "1.0.0" -source = "git+https://github.com/PolymathNetwork/cryptography.git?branch=confidential-identity-v1#5f2a100bc0b21bb59fcd1e32079e7ec74c305a5a" +source = "git+https://github.com/PolymathNetwork/cryptography.git?branch=confidential-identity-v1#6e6ca687cabb8d1203893a294d605e4ea2c15be5" dependencies = [ "bulletproofs", "byteorder", "criterion", "curve25519-dalek 3.2.0", "failure", - "merlin 2.0.1", - "parity-scale-codec 2.3.1", - "rand 0.7.3", - "rand_core 0.5.1", + "merlin 3.0.0", + "parity-scale-codec 3.1.2", + "rand 0.8.5", + "rand_core 0.6.3", "serde", - "sha3", + "sha3 0.9.1", "sp-std", "zeroize", ] @@ -1203,7 +1282,7 @@ dependencies = [ [[package]] name = "cryptography_core" version = "1.0.0" -source = "git+https://github.com/PolymathNetwork/cryptography.git?branch=confidential-identity-v2#b7bf985355bbd7e5dda4507b7c8c8b9e824b7d72" +source = "git+https://github.com/PolymathNetwork/cryptography.git?branch=confidential-identity-v2#d2d978ba023fb142ade19d4474385dcfc8b3d6fd" dependencies = [ "blake2", "bulletproofs", @@ -1211,12 +1290,12 @@ dependencies = [ "criterion", "curve25519-dalek 3.2.0", "failure", - "merlin 2.0.1", - "parity-scale-codec 2.3.1", - "rand 0.7.3", - "rand_core 0.5.1", + "merlin 3.0.0", + "parity-scale-codec 3.1.2", + "rand 0.8.5", + "rand_core 0.6.3", "serde", - "sha3", + "sha3 0.9.1", "sp-std", "zeroize", ] @@ -1276,7 +1355,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1a816186fa68d9e426e3cb4ae4dff1fcd8e4a2c34b781bf7a822574a0d0aac8" dependencies = [ - "sct", + "sct 0.6.1", ] [[package]] @@ -1325,18 +1404,31 @@ dependencies = [ [[package]] name = "curve25519-dalek" version = "3.2.0" -source = "git+https://github.com/PolymathNetwork/curve25519-dalek?branch=master#9929ed12cdb08759162c972b5851552be0ee364b" +source = "git+https://github.com/PolymathNetwork/curve25519-dalek?branch=master#bc3078e882261caf31b73a0d735078f930a1c4df" dependencies = [ "byteorder", "digest 0.9.0", "packed_simd_2", - "rand_core 0.5.1", + "rand_core 0.6.3", "scale-info", "serde", "subtle", "zeroize", ] +[[package]] +name = "curve25519-dalek" +version = "4.0.0-pre.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4033478fbf70d6acf2655ac70da91ee65852d69daf7a67bf7a2f518fb47aafcf" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.6.3", + "subtle", + "zeroize", +] + [[package]] name = "data-encoding" version = "2.3.2" @@ -1363,6 +1455,15 @@ dependencies = [ "syn", ] +[[package]] +name = "der" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c" +dependencies = [ + "const-oid", +] + [[package]] name = "derive_more" version = "0.99.17" @@ -1394,11 +1495,22 @@ dependencies = [ "generic-array 0.14.5", ] +[[package]] +name = "digest" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" +dependencies = [ + "block-buffer 0.10.2", + "crypto-common", + "subtle", +] + [[package]] name = "directories" -version = "3.0.2" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e69600ff1703123957937708eb27f7a564e48885c537782722ed0ba3189ce1d7" +checksum = "f51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210" dependencies = [ "dirs-sys", ] @@ -1413,6 +1525,17 @@ dependencies = [ "dirs-sys-next", ] +[[package]] +name = "dirs" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" +dependencies = [ + "libc", + "redox_users 0.3.5", + "winapi 0.3.9", +] + [[package]] name = "dirs-sys" version = "0.3.7" @@ -1420,7 +1543,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" dependencies = [ "libc", - "redox_users", + "redox_users 0.4.3", "winapi 0.3.9", ] @@ -1431,7 +1554,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" dependencies = [ "libc", - "redox_users", + "redox_users 0.4.3", "winapi 0.3.9", ] @@ -1457,13 +1580,19 @@ version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" +[[package]] +name = "dtoa" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5caaa75cbd2b960ff1e5392d2cfb1f44717fffe12fc1f32b7b5d1267f99732a6" + [[package]] name = "dtoa-short" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bde03329ae10e79ede66c9ce4dc930aa8599043b0743008548680f25b91502d6" dependencies = [ - "dtoa", + "dtoa 0.4.8", ] [[package]] @@ -1493,11 +1622,23 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21e50f3adc76d6a43f5ed73b698a87d0760ca74617f60f7c3b879003536fdd28" +[[package]] +name = "ecdsa" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0d69ae62e0ce582d56380743515fefaf1a8c70cec685d9677636d7e30ae9dc9" +dependencies = [ + "der", + "elliptic-curve", + "rfc6979", + "signature", +] + [[package]] name = "ed25519" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d5c4b5e5959dc2c2b89918d8e2cc40fcdd623cef026ed09d2f0ee05199dc8e4" +checksum = "1e9c280362032ea4203659fc489832d0204ef09f247a0506f170dafcac08c369" dependencies = [ "signature", ] @@ -1528,11 +1669,35 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +[[package]] +name = "elliptic-curve" +version = "0.11.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25b477563c2bfed38a3b7a60964c49e058b2510ad3f12ba3483fd8f62c2306d6" +dependencies = [ + "base16ct", + "crypto-bigint", + "der", + "ff", + "generic-array 0.14.5", + "group", + "rand_core 0.6.3", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + [[package]] name = "enum-as-inner" -version = "0.3.4" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "570d109b813e904becc80d8d5da38376818a143348413f7149f1340fe04754d4" +checksum = "21cdad81446a7f7dc43f6a77409efeb9733d2fa65553efef6018ef257c959b73" dependencies = [ "heck 0.4.0", "proc-macro2", @@ -1660,6 +1825,16 @@ dependencies = [ "libc", ] +[[package]] +name = "ff" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "131655483be284720a17d74ff97592b8e76576dc25563148601df2d7c9080924" +dependencies = [ + "rand_core 0.6.3", + "subtle", +] + [[package]] name = "file-per-thread-logger" version = "0.1.5" @@ -1672,16 +1847,16 @@ dependencies = [ [[package]] name = "finality-grandpa" -version = "0.14.4" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8ac3ff5224ef91f3c97e03eb1de2db82743427e91aaa5ac635f454f0b164f5a" +checksum = "d9def033d8505edf199f6a5d07aa7e6d2d6185b164293b77f0efd108f4f3e11d" dependencies = [ "either", "futures 0.3.21", - "futures-timer 3.0.2", + "futures-timer", "log", "num-traits", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "parking_lot 0.11.2", "scale-info", ] @@ -1700,9 +1875,9 @@ dependencies = [ [[package]] name = "fixedbitset" -version = "0.2.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" +checksum = "279fb028e20b3c4c320317955b77c5e0c9701f05a1d309905d6fc702cdc5053e" [[package]] name = "flate2" @@ -1726,9 +1901,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", ] [[package]] @@ -1744,16 +1919,18 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "frame-support", "frame-system", "linregress", "log", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "paste", "scale-info", + "serde", "sp-api", + "sp-application-crypto", "sp-io", "sp-runtime", "sp-runtime-interface", @@ -1764,37 +1941,88 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "Inflector", "chrono", + "clap 3.1.18", "frame-benchmarking", "frame-support", + "frame-system", "handlebars", + "hash-db", + "hex", + "itertools", + "kvdb", + "lazy_static", "linked-hash-map", "log", - "parity-scale-codec 2.3.1", + "memory-db", + "parity-scale-codec 3.1.2", + "prettytable-rs", + "rand 0.8.5", + "rand_pcg 0.3.1", + "sc-block-builder", "sc-cli", + "sc-client-api", "sc-client-db", "sc-executor", "sc-service", + "sc-sysinfo", "serde", + "serde_json", + "serde_nanos", + "sp-api", + "sp-blockchain", "sp-core", + "sp-database", "sp-externalities", + "sp-inherents", "sp-keystore", "sp-runtime", "sp-state-machine", - "structopt", -] + "sp-storage", + "sp-trie", + "tempfile", + "thiserror", + "thousands", +] + +[[package]] +name = "frame-election-provider-solution-type" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" +dependencies = [ + "proc-macro-crate 1.1.3", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "frame-election-provider-support" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" +dependencies = [ + "frame-election-provider-solution-type", + "frame-support", + "frame-system", + "parity-scale-codec 3.1.2", + "scale-info", + "sp-arithmetic", + "sp-npos-elections", + "sp-runtime", + "sp-std", +] [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "frame-support", "frame-system", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "sp-core", "sp-io", @@ -1805,12 +2033,12 @@ dependencies = [ [[package]] name = "frame-metadata" -version = "14.2.0" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ed5e5c346de62ca5c184b4325a6600d1eaca210666e4606fe4e449574978d0" +checksum = "df6bb8542ef006ef0de09a5c4420787d79823c0ed7924225822362fd2bf2ff2d" dependencies = [ "cfg-if 1.0.0", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "serde", ] @@ -1818,21 +2046,23 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "bitflags", "frame-metadata", "frame-support-procedural", "impl-trait-for-tuples", + "k256", "log", "once_cell", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "paste", "scale-info", "serde", "smallvec", "sp-arithmetic", "sp-core", + "sp-core-hashing-proc-macro", "sp-inherents", "sp-io", "sp-runtime", @@ -1846,7 +2076,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -1858,7 +2088,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.3", @@ -1870,7 +2100,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "proc-macro2", "quote", @@ -1880,11 +2110,11 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "frame-support", "log", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "serde", "sp-core", @@ -1897,12 +2127,12 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "sp-core", "sp-runtime", @@ -1912,9 +2142,9 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "sp-api", ] @@ -1964,9 +2194,9 @@ checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" [[package]] name = "funty" -version = "1.1.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futf" @@ -2044,7 +2274,7 @@ dependencies = [ "futures-io", "memchr", "parking", - "pin-project-lite 0.2.8", + "pin-project-lite 0.2.9", "waker-fn", ] @@ -2061,13 +2291,13 @@ dependencies = [ [[package]] name = "futures-rustls" -version = "0.21.1" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a1387e07917c711fb4ee4f48ea0adb04a3c9739e53ef85bf43ae1edc2937a8b" +checksum = "e01fe9932a224b72b45336d96040aa86386d674a31d0af27d800ea7bc8ca97fe" dependencies = [ "futures-io", - "rustls", - "webpki", + "rustls 0.20.5", + "webpki 0.22.0", ] [[package]] @@ -2082,12 +2312,6 @@ version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" -[[package]] -name = "futures-timer" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1de7508b218029b0f01662ed8f61b1c964b3ae99d6f25462d0f55a595109df6" - [[package]] name = "futures-timer" version = "3.0.2" @@ -2108,7 +2332,7 @@ dependencies = [ "futures-sink", "futures-task", "memchr", - "pin-project-lite 0.2.8", + "pin-project-lite 0.2.9", "pin-utils", "slab", ] @@ -2170,8 +2394,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" dependencies = [ "cfg-if 1.0.0", + "js-sys", "libc", "wasi 0.10.0+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] @@ -2186,21 +2412,15 @@ dependencies = [ [[package]] name = "gimli" -version = "0.25.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0a01e0497841a3b2db4f8afa483cce65f7e96a3498bd6c541734792aeac8fe7" +checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" dependencies = [ "fallible-iterator", "indexmap", "stable_deref_trait", ] -[[package]] -name = "gimli" -version = "0.26.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" - [[package]] name = "glob" version = "0.2.11" @@ -2238,6 +2458,36 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "group" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5ac374b108929de78460075f3dc439fa66df9d8fc77e8f12caa5165fcf0c89" +dependencies = [ + "ff", + "rand_core 0.6.3", + "subtle", +] + +[[package]] +name = "h2" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37a82c6d637fc9515a4694bbf1cb2457b79d81ce52b3108bdeea58b07dd34a57" +dependencies = [ + "bytes 1.1.0", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util 0.7.2", + "tracing", +] + [[package]] name = "half" version = "1.8.2" @@ -2246,9 +2496,9 @@ checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" [[package]] name = "handlebars" -version = "3.5.5" +version = "4.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4498fc115fa7d34de968184e473529abb40eeb6be8bc5f7faba3d08c316cb3e3" +checksum = "99d6a30320f094710245150395bc763ad23128d6a1ebbad7594dc4164b62c56b" dependencies = [ "log", "pest", @@ -2282,6 +2532,15 @@ dependencies = [ "ahash", ] +[[package]] +name = "hashbrown" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db0d4cf898abf0081f964436dc980e96670a0f36863e4b83aaacdb65c9d7ccc3" +dependencies = [ + "ahash", +] + [[package]] name = "heck" version = "0.3.3" @@ -2401,13 +2660,13 @@ dependencies = [ [[package]] name = "http" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f4c6746584866f0feabcc69893c5b51beef3831656a968ed7ae254cdc4fd03" +checksum = "ff8670570af52249509a86f5e3e18a08c60b177071826898fde8997cf5f6bfbb" dependencies = [ "bytes 1.1.0", "fnv", - "itoa 1.0.1", + "itoa 1.0.2", ] [[package]] @@ -2418,14 +2677,14 @@ checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6" dependencies = [ "bytes 1.1.0", "http", - "pin-project-lite 0.2.8", + "pin-project-lite 0.2.9", ] [[package]] name = "httparse" -version = "1.7.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6330e8a36bd8c859f3fa6d9382911fbb7147ec39807f63b923933a247240b9ba" +checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c" [[package]] name = "httpdate" @@ -2458,13 +2717,14 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", + "h2", "http", "http-body", "httparse", "httpdate", - "itoa 1.0.1", - "pin-project-lite 0.2.8", - "socket2 0.4.4", + "itoa 1.0.2", + "pin-project-lite 0.2.9", + "socket2", "tokio", "tower-service", "tracing", @@ -2481,11 +2741,11 @@ dependencies = [ "futures-util", "hyper", "log", - "rustls", + "rustls 0.19.1", "rustls-native-certs", "tokio", "tokio-rustls", - "webpki", + "webpki 0.21.4", ] [[package]] @@ -2512,48 +2772,39 @@ dependencies = [ [[package]] name = "if-addrs" -version = "0.6.7" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2273e421f7c4f0fc99e1934fe4776f59d8df2972f4199d703fc0da9f2a9f73de" +checksum = "cbc0fa01ffc752e9dbc72818cdb072cd028b86be5e09dd04c5a643704fe101a9" dependencies = [ - "if-addrs-sys", "libc", "winapi 0.3.9", ] -[[package]] -name = "if-addrs-sys" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de74b9dd780476e837e5eb5ab7c88b49ed304126e412030a0adba99c8efe79ea" -dependencies = [ - "cc", - "libc", -] - [[package]] name = "if-watch" -version = "0.2.2" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8ab7f67bad3240049cb24fb9cb0b4c2c6af4c245840917fbbdededeee91179" +checksum = "ae8f4a3c3d4c89351ca83e120c1c00b27df945d38e05695668c9d4b4f7bc52f3" dependencies = [ "async-io", + "core-foundation", + "fnv", "futures 0.3.21", - "futures-lite", "if-addrs", "ipnet", - "libc", "log", - "winapi 0.3.9", + "rtnetlink", + "system-configuration", + "windows", ] [[package]] name = "impl-codec" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" dependencies = [ - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", ] [[package]] @@ -2583,7 +2834,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f647032dfaa1f8b6dc29bd3edb7bbef4861b8b8007ebb118d6db284fd59f6ee" dependencies = [ "autocfg", - "hashbrown", + "hashbrown 0.11.2", "serde", ] @@ -2625,14 +2876,10 @@ dependencies = [ ] [[package]] -name = "intervalier" -version = "0.4.0" +name = "io-lifetimes" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64fa110ec7b8f493f416eed552740d10e7030ad5f63b2308f82c9608ec2df275" -dependencies = [ - "futures 0.3.21", - "futures-timer 2.0.2", -] +checksum = "ec58677acfea8a15352d42fc87d11d63596ade9239e0a7c9352914417515dbe6" [[package]] name = "iovec" @@ -2651,11 +2898,11 @@ checksum = "aa2f047c0a98b2f299aa5d6d7088443570faae494e9ae1305e48be000c9e0eb1" [[package]] name = "ipconfig" -version = "0.2.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7e2f18aece9709094573a9f24f483c4f65caa4298e2f7ae1b71cc65d853fad7" +checksum = "723519edce41262b05d4143ceb95050e4c614f483e78e9fd9e39a8275a84ad98" dependencies = [ - "socket2 0.3.19", + "socket2", "widestring", "winapi 0.3.9", "winreg", @@ -2684,9 +2931,9 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] name = "itoa" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" +checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" [[package]] name = "jobserver" @@ -2819,7 +3066,7 @@ dependencies = [ "log", "tokio", "tokio-stream", - "tokio-util", + "tokio-util 0.6.10", "unicase", ] @@ -2838,6 +3085,18 @@ dependencies = [ "slab", ] +[[package]] +name = "k256" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19c3a5e0a0b8450278feda242592512e09f61c72e018b8cd5c859482802daf2d" +dependencies = [ + "cfg-if 1.0.0", + "ecdsa", + "elliptic-curve", + "sec1", +] + [[package]] name = "keccak" version = "0.1.0" @@ -2865,9 +3124,9 @@ dependencies = [ [[package]] name = "kvdb" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45a3f58dc069ec0e205a27f5b45920722a46faed802a0541538241af6228f512" +checksum = "a301d8ecb7989d4a6e2c57a49baca77d353bdbf879909debe3f375fe25d61f86" dependencies = [ "parity-util-mem", "smallvec", @@ -2875,20 +3134,20 @@ dependencies = [ [[package]] name = "kvdb-memorydb" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3b6b85fc643f5acd0bffb2cc8a6d150209379267af0d41db72170021841f9f5" +checksum = "ece7e668abd21387aeb6628130a6f4c802787f014fa46bc83221448322250357" dependencies = [ "kvdb", "parity-util-mem", - "parking_lot 0.11.2", + "parking_lot 0.12.0", ] [[package]] name = "kvdb-rocksdb" -version = "0.14.0" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b1b6ea8f2536f504b645ad78419c8246550e19d2c3419a167080ce08edee35a" +checksum = "ca7fbdfd71cd663dceb0faf3367a99f8cf724514933e9867cec4995b6027cbc1" dependencies = [ "fs-swap", "kvdb", @@ -2896,7 +3155,7 @@ dependencies = [ "num_cpus", "owning_ref", "parity-util-mem", - "parking_lot 0.11.2", + "parking_lot 0.12.0", "regex", "rocksdb", "smallvec", @@ -2925,9 +3184,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.124" +version = "0.2.125" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21a41fed9d98f27ab1c6d161da622a4fa35e8a54a8adc24bbf3ddd0ef70b0e50" +checksum = "5916d2ae698f6de9bfb891ad7a8d65c09d232dc58cc4ac433c7da3b2fd84bc2b" [[package]] name = "libloading" @@ -2963,14 +3222,18 @@ checksum = "33a33a362ce288760ec6a508b94caaec573ae7d3bbbd91b87aa0bad4456839db" [[package]] name = "libp2p" -version = "0.39.1" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9004c06878ef8f3b4b4067e69a140d87ed20bf777287f82223e49713b36ee433" +checksum = "475ce2ac4a9727e53a519f6ee05b38abfcba8f0d39c4d24f103d184e36fd5b0f" dependencies = [ "atomic", "bytes 1.1.0", "futures 0.3.21", + "futures-timer", + "getrandom 0.2.6", + "instant", "lazy_static", + "libp2p-autonat", "libp2p-core", "libp2p-deflate", "libp2p-dns", @@ -2979,12 +3242,14 @@ dependencies = [ "libp2p-identify", "libp2p-kad", "libp2p-mdns", + "libp2p-metrics", "libp2p-mplex", "libp2p-noise", "libp2p-ping", "libp2p-plaintext", "libp2p-pnet", "libp2p-relay", + "libp2p-rendezvous", "libp2p-request-response", "libp2p-swarm", "libp2p-swarm-derive", @@ -2994,17 +3259,36 @@ dependencies = [ "libp2p-websocket", "libp2p-yamux", "multiaddr", - "parking_lot 0.11.2", + "parking_lot 0.12.0", "pin-project 1.0.10", + "rand 0.7.3", "smallvec", - "wasm-timer", +] + +[[package]] +name = "libp2p-autonat" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a13b690e65046af6a09c0b27bd9508fa1cab0efce889de74b0b643b9d2a98f9a" +dependencies = [ + "async-trait", + "futures 0.3.21", + "futures-timer", + "instant", + "libp2p-core", + "libp2p-request-response", + "libp2p-swarm", + "log", + "prost", + "prost-build", + "rand 0.8.5", ] [[package]] name = "libp2p-core" -version = "0.29.0" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af9b4abdeaa420593a297c8592f63fad4234f4b88dc9343b8fd8e736c35faa59" +checksum = "db5b02602099fb75cb2d16f9ea860a320d6eb82ce41e95ab680912c454805cd5" dependencies = [ "asn1_der", "bs58", @@ -3012,21 +3296,22 @@ dependencies = [ "either", "fnv", "futures 0.3.21", - "futures-timer 3.0.2", + "futures-timer", + "instant", "lazy_static", - "libsecp256k1 0.5.0", + "libsecp256k1 0.7.0", "log", "multiaddr", - "multihash 0.14.0", + "multihash 0.16.2", "multistream-select", - "parking_lot 0.11.2", + "parking_lot 0.12.0", "pin-project 1.0.10", "prost", "prost-build", - "rand 0.7.3", + "rand 0.8.5", "ring", "rw-stream-sink", - "sha2 0.9.9", + "sha2 0.10.2", "smallvec", "thiserror", "unsigned-varint 0.7.1", @@ -3036,9 +3321,9 @@ dependencies = [ [[package]] name = "libp2p-deflate" -version = "0.29.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66097fccc0b7f8579f90a03ea76ba6196332ea049fd07fd969490a06819dcdc8" +checksum = "6b1d37f042f748e224f04785d0e987ae09a2aa518d6401d82d412dad83e360ed" dependencies = [ "flate2", "futures 0.3.21", @@ -3047,9 +3332,9 @@ dependencies = [ [[package]] name = "libp2p-dns" -version = "0.29.0" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58ff08b3196b85a17f202d80589e93b1660a574af67275706657fdc762e42c32" +checksum = "066e33e854e10b5c93fc650458bf2179c7e0d143db260b0963e44a94859817f1" dependencies = [ "async-std-resolver", "futures 0.3.21", @@ -3061,9 +3346,9 @@ dependencies = [ [[package]] name = "libp2p-floodsub" -version = "0.30.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "404eca8720967179dac7a5b4275eb91f904a53859c69ca8d018560ad6beb214f" +checksum = "733d3ea6ebe7a7a85df2bc86678b93f24b015fae5fe3b3acc4c400e795a55d2d" dependencies = [ "cuckoofilter", "fnv", @@ -3079,9 +3364,9 @@ dependencies = [ [[package]] name = "libp2p-gossipsub" -version = "0.32.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1cc48709bcbc3a3321f08a73560b4bbb4166a7d56f6fdb615bc775f4f91058e" +checksum = "a90c989a7c0969c2ab63e898da9bc735e3be53fb4f376e9c045ce516bcc9f928" dependencies = [ "asynchronous-codec 0.6.0", "base64 0.13.0", @@ -3090,14 +3375,16 @@ dependencies = [ "fnv", "futures 0.3.21", "hex_fmt", + "instant", "libp2p-core", "libp2p-swarm", "log", + "prometheus-client", "prost", "prost-build", "rand 0.7.3", "regex", - "sha2 0.9.9", + "sha2 0.10.2", "smallvec", "unsigned-varint 0.7.1", "wasm-timer", @@ -3105,25 +3392,26 @@ dependencies = [ [[package]] name = "libp2p-identify" -version = "0.30.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7b61f6cf07664fb97016c318c4d4512b3dd4cc07238607f3f0163245f99008e" +checksum = "c5ef5a5b57904c7c33d6713ef918d239dc6b7553458f3475d87f8a18e9c651c8" dependencies = [ "futures 0.3.21", + "futures-timer", "libp2p-core", "libp2p-swarm", "log", + "lru", "prost", "prost-build", "smallvec", - "wasm-timer", ] [[package]] name = "libp2p-kad" -version = "0.31.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50ed78489c87924235665a0ab345b298ee34dff0f7ad62c0ba6608b2144fb75e" +checksum = "564e6bd64d177446399ed835b9451a8825b07929d6daa6a94e6405592974725e" dependencies = [ "arrayvec 0.5.2", "asynchronous-codec 0.6.0", @@ -3131,25 +3419,27 @@ dependencies = [ "either", "fnv", "futures 0.3.21", + "futures-timer", + "instant", "libp2p-core", "libp2p-swarm", "log", "prost", "prost-build", "rand 0.7.3", - "sha2 0.9.9", + "sha2 0.10.2", "smallvec", + "thiserror", "uint", "unsigned-varint 0.7.1", "void", - "wasm-timer", ] [[package]] name = "libp2p-mdns" -version = "0.31.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a29e6cbc2a24b8471b6567e580a0e8e7b70a6d0f0ea2be0844d1e842d7d4fa33" +checksum = "611ae873c8e280ccfab0d57c7a13cac5644f364529e233114ff07863946058b0" dependencies = [ "async-io", "data-encoding", @@ -3162,15 +3452,31 @@ dependencies = [ "log", "rand 0.8.5", "smallvec", - "socket2 0.4.4", + "socket2", "void", ] +[[package]] +name = "libp2p-metrics" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985be799bb3796e0c136c768208c3c06604a38430571906a13dcfeda225a3b9d" +dependencies = [ + "libp2p-core", + "libp2p-gossipsub", + "libp2p-identify", + "libp2p-kad", + "libp2p-ping", + "libp2p-relay", + "libp2p-swarm", + "prometheus-client", +] + [[package]] name = "libp2p-mplex" -version = "0.29.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "313d9ea526c68df4425f580024e67a9d3ffd49f2c33de5154b1f5019816f7a99" +checksum = "442eb0c9fff0bf22a34f015724b4143ce01877e079ed0963c722d94c07c72160" dependencies = [ "asynchronous-codec 0.6.0", "bytes 1.1.0", @@ -3178,7 +3484,7 @@ dependencies = [ "libp2p-core", "log", "nohash-hasher", - "parking_lot 0.11.2", + "parking_lot 0.12.0", "rand 0.7.3", "smallvec", "unsigned-varint 0.7.1", @@ -3186,9 +3492,9 @@ dependencies = [ [[package]] name = "libp2p-noise" -version = "0.32.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f1db7212f342b6ba7c981cc40e31f76e9e56cb48e65fa4c142ecaca5839523e" +checksum = "9dd7e0c94051cda67123be68cf6b65211ba3dde7277be9068412de3e7ffd63ef" dependencies = [ "bytes 1.1.0", "curve25519-dalek 3.2.0", @@ -3199,7 +3505,7 @@ dependencies = [ "prost", "prost-build", "rand 0.8.5", - "sha2 0.9.9", + "sha2 0.10.2", "snow", "static_assertions", "x25519-dalek", @@ -3208,24 +3514,25 @@ dependencies = [ [[package]] name = "libp2p-ping" -version = "0.30.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2482cfd9eb0b7a0baaf3e7b329dc4f2785181a161b1a47b7192f8d758f54a439" +checksum = "bf57a3c2e821331dda9fe612d4654d676ab6e33d18d9434a18cced72630df6ad" dependencies = [ "futures 0.3.21", + "futures-timer", + "instant", "libp2p-core", "libp2p-swarm", "log", "rand 0.7.3", "void", - "wasm-timer", ] [[package]] name = "libp2p-plaintext" -version = "0.29.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13b4783e5423870b9a5c199f65a7a3bc66d86ab56b2b9beebf3c338d889cf8e4" +checksum = "962c0fb0e7212fb96a69b87f2d09bcefd317935239bdc79cda900e7a8897a3fe" dependencies = [ "asynchronous-codec 0.6.0", "bytes 1.1.0", @@ -3240,82 +3547,110 @@ dependencies = [ [[package]] name = "libp2p-pnet" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07cb4dd4b917e5b40ddefe49b96b07adcd8d342e0317011d175b7b2bb1dcc974" +checksum = "0f1a458bbda880107b5b36fcb9b5a1ef0c329685da0e203ed692a8ebe64cc92c" dependencies = [ "futures 0.3.21", "log", "pin-project 1.0.10", "rand 0.7.3", "salsa20", - "sha3", + "sha3 0.9.1", ] [[package]] name = "libp2p-relay" -version = "0.3.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0133f6cfd81cdc16e716de2982e012c62e6b9d4f12e41967b3ee361051c622aa" +checksum = "3aa754cb7bccef51ebc3c458c6bbcef89d83b578a9925438389be841527d408f" dependencies = [ "asynchronous-codec 0.6.0", "bytes 1.1.0", + "either", "futures 0.3.21", - "futures-timer 3.0.2", + "futures-timer", + "instant", "libp2p-core", "libp2p-swarm", "log", "pin-project 1.0.10", "prost", "prost-build", - "rand 0.7.3", + "rand 0.8.5", "smallvec", + "static_assertions", + "thiserror", + "unsigned-varint 0.7.1", + "void", +] + +[[package]] +name = "libp2p-rendezvous" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd0baab894c5b84da510b915d53264d566c3c35889f09931fe9edbd2a773bee" +dependencies = [ + "asynchronous-codec 0.6.0", + "bimap", + "futures 0.3.21", + "futures-timer", + "instant", + "libp2p-core", + "libp2p-swarm", + "log", + "prost", + "prost-build", + "rand 0.8.5", + "sha2 0.10.2", + "thiserror", "unsigned-varint 0.7.1", "void", - "wasm-timer", ] [[package]] name = "libp2p-request-response" -version = "0.12.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06cdae44b6821466123af93cbcdec7c9e6ba9534a8af9cdc296446d39416d241" +checksum = "b5e6a6fc6c9ad95661f46989473b34bd2993d14a4de497ff3b2668a910d4b869" dependencies = [ "async-trait", "bytes 1.1.0", "futures 0.3.21", + "instant", "libp2p-core", "libp2p-swarm", "log", - "lru", - "minicbor", "rand 0.7.3", "smallvec", "unsigned-varint 0.7.1", - "wasm-timer", ] [[package]] name = "libp2p-swarm" -version = "0.30.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7083861341e1555467863b4cd802bea1e8c4787c0f7b5110097d0f1f3248f9a9" +checksum = "8f0c69ad9e8f7c5fc50ad5ad9c7c8b57f33716532a2b623197f69f93e374d14c" dependencies = [ "either", + "fnv", "futures 0.3.21", + "futures-timer", + "instant", "libp2p-core", "log", + "pin-project 1.0.10", "rand 0.7.3", "smallvec", + "thiserror", "void", - "wasm-timer", ] [[package]] name = "libp2p-swarm-derive" -version = "0.24.0" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab8cb308d4fc854869f5abb54fdab0833d2cf670d407c745849dc47e6e08d79c" +checksum = "daf2fe8c80b43561355f4d51875273b5b6dfbac37952e8f64b1270769305c9d7" dependencies = [ "quote", "syn", @@ -3323,26 +3658,26 @@ dependencies = [ [[package]] name = "libp2p-tcp" -version = "0.29.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79edd26b6b4bb5feee210dcda562dca186940dfecb0024b979c3f50824b3bf28" +checksum = "193447aa729c85aac2376828df76d171c1a589c9e6b58fcc7f9d9a020734122c" dependencies = [ "async-io", "futures 0.3.21", - "futures-timer 3.0.2", + "futures-timer", "if-watch", "ipnet", "libc", "libp2p-core", "log", - "socket2 0.4.4", + "socket2", ] [[package]] name = "libp2p-uds" -version = "0.29.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280e793440dd4e9f273d714f4497325c72cddb0fe85a49f9a03c88f41dd20182" +checksum = "24bdab114f7f2701757d6541266e1131b429bbae382008f207f2114ee4222dcb" dependencies = [ "async-std", "futures 0.3.21", @@ -3352,9 +3687,9 @@ dependencies = [ [[package]] name = "libp2p-wasm-ext" -version = "0.29.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f553b7140fad3d7a76f50497b0ea591e26737d9607428a75509fc191e4d1b1f6" +checksum = "4f6ea0f84a967ef59a16083f222c18115ae2e91db69809dce275df62e101b279" dependencies = [ "futures 0.3.21", "js-sys", @@ -3366,9 +3701,9 @@ dependencies = [ [[package]] name = "libp2p-websocket" -version = "0.30.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddf99dcbf5063e9d59087f61b1e85c686ceab2f5abedb472d32288065c0e5e27" +checksum = "c932834c3754501c368d1bf3d0fb458487a642b90fc25df082a3a2f3d3b32e37" dependencies = [ "either", "futures 0.3.21", @@ -3384,42 +3719,45 @@ dependencies = [ [[package]] name = "libp2p-yamux" -version = "0.33.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "214cc0dd9c37cbed27f0bb1eba0c41bbafdb93a8be5e9d6ae1e6b4b42cd044bf" +checksum = "be902ebd89193cd020e89e89107726a38cfc0d16d18f613f4a37d046e92c7517" dependencies = [ "futures 0.3.21", "libp2p-core", - "parking_lot 0.11.2", + "parking_lot 0.12.0", "thiserror", "yamux", ] [[package]] name = "librocksdb-sys" -version = "6.20.3" +version = "0.6.1+6.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c309a9d2470844aceb9a4a098cf5286154d20596868b75a6b36357d2bb9ca25d" +checksum = "81bc587013734dadb7cf23468e531aa120788b87243648be42e2d3a072186291" dependencies = [ "bindgen", + "bzip2-sys", "cc", "glob 0.3.0", "libc", + "libz-sys", + "tikv-jemalloc-sys", ] [[package]] name = "libsecp256k1" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd1137239ab33b41aa9637a88a28249e5e70c40a42ccc92db7f12cc356c1fcd7" +checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" dependencies = [ "arrayref", "base64 0.12.3", "digest 0.9.0", "hmac-drbg", - "libsecp256k1-core", - "libsecp256k1-gen-ecmult", - "libsecp256k1-gen-genmult", + "libsecp256k1-core 0.2.2", + "libsecp256k1-gen-ecmult 0.2.1", + "libsecp256k1-gen-genmult 0.2.1", "rand 0.7.3", "serde", "sha2 0.9.9", @@ -3428,18 +3766,18 @@ dependencies = [ [[package]] name = "libsecp256k1" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" +checksum = "b0452aac8bab02242429380e9b2f94ea20cea2b37e2c1777a1358799bbe97f37" dependencies = [ "arrayref", - "base64 0.12.3", + "base64 0.13.0", "digest 0.9.0", "hmac-drbg", - "libsecp256k1-core", - "libsecp256k1-gen-ecmult", - "libsecp256k1-gen-genmult", - "rand 0.7.3", + "libsecp256k1-core 0.3.0", + "libsecp256k1-gen-ecmult 0.3.0", + "libsecp256k1-gen-genmult 0.3.0", + "rand 0.8.5", "serde", "sha2 0.9.9", "typenum", @@ -3456,13 +3794,33 @@ dependencies = [ "subtle", ] +[[package]] +name = "libsecp256k1-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + [[package]] name = "libsecp256k1-gen-ecmult" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" dependencies = [ - "libsecp256k1-core", + "libsecp256k1-core 0.2.2", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809" +dependencies = [ + "libsecp256k1-core 0.3.0", ] [[package]] @@ -3471,14 +3829,23 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" dependencies = [ - "libsecp256k1-core", + "libsecp256k1-core 0.2.2", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c" +dependencies = [ + "libsecp256k1-core 0.3.0", ] [[package]] name = "libz-sys" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f35facd4a5673cb5a48822be2be1d4236c1c99cb4113cab7061ac720d5bf859" +checksum = "92e7e15d7610cce1d9752e137625f14e61a28cd45929b6e12e47b50fe154ee2e" dependencies = [ "cc", "pkg-config", @@ -3510,6 +3877,12 @@ dependencies = [ "statrs", ] +[[package]] +name = "linux-raw-sys" +version = "0.0.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5284f00d480e1c39af34e72f8ad60b94f47007e3481cd3b731c1d67190ddc7b7" + [[package]] name = "lock_api" version = "0.4.7" @@ -3522,9 +3895,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.16" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" dependencies = [ "cfg-if 1.0.0", "value-bag", @@ -3532,11 +3905,11 @@ dependencies = [ [[package]] name = "lru" -version = "0.6.6" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ea2d928b485416e8908cff2d97d621db22b27f7b3b6729e438bcf42c671ba91" +checksum = "32613e41de4c47ab04970c348ca7ae7382cf116625755af070b008a15516a889" dependencies = [ - "hashbrown", + "hashbrown 0.11.2", ] [[package]] @@ -3635,9 +4008,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memmap2" @@ -3648,6 +4021,15 @@ dependencies = [ "libc", ] +[[package]] +name = "memmap2" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "057a3db23999c867821a7a59feb06a578fcb03685e983dff90daf9e7d24ac08f" +dependencies = [ + "libc", +] + [[package]] name = "memoffset" version = "0.6.5" @@ -3659,12 +4041,12 @@ dependencies = [ [[package]] name = "memory-db" -version = "0.27.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de006e09d04fc301a5f7e817b75aa49801c4479a8af753764416b085337ddcc5" +checksum = "6566c70c1016f525ced45d7b7f97730a2bafb037c788211d0c186ef5b2189f0a" dependencies = [ "hash-db", - "hashbrown", + "hashbrown 0.12.1", "parity-util-mem", ] @@ -3698,26 +4080,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "minicbor" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51aa5bb0ca22415daca596a227b507f880ad1b2318a87fa9325312a5d285ca0d" -dependencies = [ - "minicbor-derive", -] - -[[package]] -name = "minicbor-derive" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54999f917cd092b13904737e26631aa2b2b88d625db68e4bab461dcd8006c788" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "minimal-lexical" version = "0.2.1" @@ -3746,7 +4108,7 @@ dependencies = [ "kernel32-sys", "libc", "log", - "miow 0.2.2", + "miow", "net2", "slab", "winapi 0.2.8", @@ -3754,16 +4116,14 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9" +checksum = "713d550d9b44d89174e066b7a6217ae06234c10cb47819a88290d2b353c31799" dependencies = [ "libc", "log", - "miow 0.3.7", - "ntapi", "wasi 0.11.0+wasi-snapshot-preview1", - "winapi 0.3.9", + "windows-sys", ] [[package]] @@ -3790,15 +4150,6 @@ dependencies = [ "ws2_32-sys", ] -[[package]] -name = "miow" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" -dependencies = [ - "winapi 0.3.9", -] - [[package]] name = "more-asserts" version = "0.2.2" @@ -3807,15 +4158,15 @@ checksum = "7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389" [[package]] name = "multiaddr" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48ee4ea82141951ac6379f964f71b20876d43712bea8faf6dd1a375e08a46499" +checksum = "3c580bfdd8803cce319b047d239559a22f809094aaea4ac13902a1fdcfcd4261" dependencies = [ "arrayref", "bs58", "byteorder", "data-encoding", - "multihash 0.14.0", + "multihash 0.16.2", "percent-encoding 2.1.0", "serde", "static_assertions", @@ -3845,22 +4196,22 @@ dependencies = [ "blake3", "digest 0.9.0", "generic-array 0.14.5", - "multihash-derive", + "multihash-derive 0.7.2", "sha2 0.9.9", - "sha3", + "sha3 0.9.1", "unsigned-varint 0.5.1", ] [[package]] name = "multihash" -version = "0.14.0" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "752a61cd890ff691b4411423d23816d5866dd5621e4d1c5687a53b94b5a979d8" +checksum = "e3db354f401db558759dfc1e568d010a5d4146f4d3f637be1275ec4a3cf09689" dependencies = [ - "digest 0.9.0", - "generic-array 0.14.5", - "multihash-derive", - "sha2 0.9.9", + "core2", + "digest 0.10.3", + "multihash-derive 0.8.0", + "sha2 0.10.2", "unsigned-varint 0.7.1", ] @@ -3878,6 +4229,20 @@ dependencies = [ "synstructure", ] +[[package]] +name = "multihash-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc076939022111618a5026d3be019fd8b366e76314538ff9a1b59ffbcbf98bcd" +dependencies = [ + "proc-macro-crate 1.1.3", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", + "synstructure", +] + [[package]] name = "multimap" version = "0.8.3" @@ -3886,9 +4251,9 @@ checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" [[package]] name = "multistream-select" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56a336acba8bc87c8876f6425407dbbe6c417bf478b22015f8fb0994ef3bc0ab" +checksum = "363a84be6453a70e63513660f4894ef815daf88e3356bffcda9ca27d810ce83b" dependencies = [ "bytes 1.1.0", "futures 0.3.21", @@ -3929,9 +4294,9 @@ dependencies = [ [[package]] name = "names" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10a8690bf09abf659851e58cd666c3d37ac6af07c2bd7a9e332cfba471715775" +checksum = "e7d66043b25d4a6cccb23619d10c19c25304b355a7dccd4a8e11423dd2382146" dependencies = [ "rand 0.8.5", ] @@ -3947,16 +4312,95 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "netlink-packet-core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "345b8ab5bd4e71a2986663e88c56856699d060e78e152e6e9d7966fcd5491297" +dependencies = [ + "anyhow", + "byteorder", + "libc", + "netlink-packet-utils", +] + +[[package]] +name = "netlink-packet-route" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "733ea73609acfd7fa7ddadfb7bf709b0471668c456ad9513685af543a06342b2" +dependencies = [ + "anyhow", + "bitflags", + "byteorder", + "libc", + "netlink-packet-core", + "netlink-packet-utils", +] + +[[package]] +name = "netlink-packet-utils" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25af9cf0dc55498b7bd94a1508af7a78706aa0ab715a73c5169273e03c84845e" +dependencies = [ + "anyhow", + "byteorder", + "paste", + "thiserror", +] + +[[package]] +name = "netlink-proto" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef8785b8141e8432aa45fceb922a7e876d7da3fad37fa7e7ec702ace3aa0826b" +dependencies = [ + "bytes 1.1.0", + "futures 0.3.21", + "log", + "netlink-packet-core", + "netlink-sys", + "tokio", +] + +[[package]] +name = "netlink-sys" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e4c9f9547a08241bee7b6558b9b98e1f290d187de8b7cfca2bbb4937bcaa8f8" +dependencies = [ + "async-io", + "bytes 1.1.0", + "futures 0.3.21", + "libc", + "log", +] + [[package]] name = "new_debug_unreachable" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" +[[package]] +name = "nix" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624faf" +dependencies = [ + "bitflags", + "cc", + "cfg-if 1.0.0", + "libc", + "memoffset", +] + [[package]] name = "node-bench" version = "0.9.0" dependencies = [ + "clap 3.1.18", "derive_more", "fs_extra", "futures 0.3.21", @@ -3987,7 +4431,6 @@ dependencies = [ "sp-tracing", "sp-transaction-pool", "sp-trie", - "structopt", "tempfile", ] @@ -4008,7 +4451,7 @@ dependencies = [ "pallet-timestamp", "pallet-transaction-payment", "pallet-treasury 4.0.0-dev", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-primitives", "polymesh-runtime-testnet", "sc-executor", @@ -4020,7 +4463,7 @@ dependencies = [ "sp-state-machine", "sp-trie", "substrate-test-client", - "trie-root", + "trie-root 0.16.0", "wabt", ] @@ -4039,7 +4482,7 @@ dependencies = [ "pallet-pips", "pallet-portfolio", "pallet-transaction-payment", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-primitives", "serde", "sp-api", @@ -4061,7 +4504,7 @@ dependencies = [ "pallet-pips", "pallet-portfolio", "pallet-transaction-payment", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-primitives", "serde", "serde_json", @@ -4090,7 +4533,7 @@ dependencies = [ "pallet-timestamp", "pallet-transaction-payment", "pallet-treasury 4.0.0-dev", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "polymesh-runtime-testnet", @@ -4137,15 +4580,6 @@ dependencies = [ "minimal-lexical", ] -[[package]] -name = "ntapi" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" -dependencies = [ - "winapi 0.3.9", -] - [[package]] name = "num-bigint" version = "0.2.6" @@ -4159,9 +4593,9 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26873667bbbb7c5182d4a37c1add32cdf09f841af72da53318fdb81543c15085" +checksum = "97fbc387afefefd5e9e39493299f3069e14a140dd34dc19b4c1c1a8fddb6a790" dependencies = [ "num-traits", ] @@ -4178,9 +4612,9 @@ dependencies = [ [[package]] name = "num-integer" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ "autocfg", "num-traits", @@ -4211,9 +4645,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" dependencies = [ "autocfg", "libm 0.2.2", @@ -4231,9 +4665,9 @@ dependencies = [ [[package]] name = "object" -version = "0.26.2" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39f37e50073ccad23b6d09bcb5b263f4e76d3bb6038e4a3c08e52162ffa8abc2" +checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" dependencies = [ "crc32fast", "indexmap", @@ -4242,9 +4676,9 @@ dependencies = [ [[package]] name = "object" -version = "0.28.3" +version = "0.28.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40bec70ba014595f99f7aa110b84331ffe1ee9aece7fe6f387cc7e3ecda4d456" +checksum = "e42c982f2d955fac81dd7e1d0e1426a7d702acd9c98d19ab01083a6a0328c424" dependencies = [ "memchr", ] @@ -4279,6 +4713,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +[[package]] +name = "os_str_bytes" +version = "6.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "029d8d0b2f198229de29dca79676f2738ff952edf3fde542eb8bf94d8c21b435" + [[package]] name = "owning_ref" version = "0.4.1" @@ -4317,7 +4757,7 @@ dependencies = [ "pallet-session", "pallet-statistics", "pallet-timestamp", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "polymesh-primitives-derive", @@ -4338,12 +4778,12 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "frame-support", "frame-system", "pallet-session", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "sp-application-crypto", "sp-authority-discovery", @@ -4354,12 +4794,12 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "frame-support", "frame-system", "impl-trait-for-tuples", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "sp-authorship", "sp-runtime", @@ -4369,7 +4809,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "frame-benchmarking", "frame-support", @@ -4378,7 +4818,7 @@ dependencies = [ "pallet-authorship", "pallet-session", "pallet-timestamp", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "sp-application-crypto", "sp-consensus-babe", @@ -4401,7 +4841,7 @@ dependencies = [ "pallet-permissions", "pallet-timestamp", "pallet-transaction-payment", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "scale-info", @@ -4419,13 +4859,13 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "log", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "sp-runtime", "sp-std", @@ -4437,7 +4877,7 @@ version = "0.1.0" dependencies = [ "frame-support", "frame-system", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "scale-info", @@ -4464,7 +4904,7 @@ dependencies = [ "pallet-identity", "pallet-multisig", "pallet-scheduler", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "scale-info", @@ -4484,7 +4924,7 @@ dependencies = [ "pallet-identity", "pallet-permissions", "pallet-timestamp", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "scale-info", @@ -4513,7 +4953,7 @@ dependencies = [ "pallet-identity", "pallet-permissions", "pallet-timestamp", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "scale-info", @@ -4530,20 +4970,18 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "bitflags", "frame-benchmarking", "frame-support", "frame-system", - "libsecp256k1 0.6.0", "log", "pallet-contracts-primitives", "pallet-contracts-proc-macro", - "parity-scale-codec 2.3.1", - "pwasm-utils", - "rand 0.7.3", - "rand_pcg", + "parity-scale-codec 3.1.2", + "rand 0.8.5", + "rand_pcg 0.3.1", "scale-info", "serde", "smallvec", @@ -4552,19 +4990,21 @@ dependencies = [ "sp-runtime", "sp-sandbox", "sp-std", + "wasm-instrument", "wasmi-validation", ] [[package]] name = "pallet-contracts-primitives" -version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "6.0.0" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "bitflags", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "serde", "sp-core", + "sp-rpc", "sp-runtime", "sp-std", ] @@ -4572,7 +5012,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "proc-macro2", "quote", @@ -4582,14 +5022,14 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", "pallet-contracts-primitives", "pallet-contracts-rpc-runtime-api", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "serde", "sp-api", "sp-blockchain", @@ -4601,10 +5041,10 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "pallet-contracts-primitives", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "sp-api", "sp-runtime", @@ -4627,7 +5067,7 @@ dependencies = [ "pallet-portfolio", "pallet-session", "pallet-timestamp", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "polymesh-primitives-derive", @@ -4653,7 +5093,7 @@ dependencies = [ "pallet-base", "pallet-identity", "pallet-permissions", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "polymesh-primitives-derive", @@ -4666,7 +5106,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "frame-benchmarking", "frame-support", @@ -4674,7 +5114,7 @@ dependencies = [ "log", "pallet-authorship", "pallet-session", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "sp-application-crypto", "sp-core", @@ -4695,7 +5135,7 @@ dependencies = [ "frame-system", "pallet-identity", "pallet-timestamp", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "scale-info", @@ -4717,7 +5157,7 @@ dependencies = [ "jsonrpc-core-client", "jsonrpc-derive", "pallet-group-rpc-runtime-api", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-primitives", "serde", "sp-api", @@ -4731,7 +5171,7 @@ dependencies = [ name = "pallet-group-rpc-runtime-api" version = "2.0.0" dependencies = [ - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "serde", @@ -4757,7 +5197,7 @@ dependencies = [ "pallet-base", "pallet-permissions", "pallet-timestamp", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "scale-info", @@ -4775,14 +5215,14 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "log", "pallet-authorship", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "sp-application-crypto", "sp-core", @@ -4795,12 +5235,12 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "sp-core", "sp-io", @@ -4820,7 +5260,7 @@ dependencies = [ "pallet-identity", "pallet-permissions", "pallet-timestamp", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "scale-info", @@ -4834,13 +5274,13 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "frame-support", "frame-system", "log", "pallet-balances 4.0.0-dev", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "serde", "sp-runtime", @@ -4855,7 +5295,7 @@ dependencies = [ "frame-benchmarking", "frame-support", "frame-system", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "scale-info", @@ -4879,7 +5319,7 @@ dependencies = [ "pallet-permissions", "pallet-timestamp", "pallet-treasury 0.1.0", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "polymesh-primitives-derive", @@ -4908,7 +5348,7 @@ dependencies = [ "pallet-base", "pallet-identity", "pallet-permissions", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "scale-info", @@ -4917,6 +5357,22 @@ dependencies = [ "sp-std", ] +[[package]] +name = "pallet-preimage" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec 3.1.2", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + [[package]] name = "pallet-protocol-fee" version = "0.1.0" @@ -4925,7 +5381,7 @@ dependencies = [ "frame-support", "frame-system", "pallet-identity", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "scale-info", @@ -4944,7 +5400,7 @@ dependencies = [ "jsonrpc-core-client", "jsonrpc-derive", "pallet-protocol-fee-rpc-runtime-api", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "serde", "sp-api", @@ -4957,7 +5413,7 @@ name = "pallet-protocol-fee-rpc-runtime-api" version = "0.1.0" dependencies = [ "frame-support", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "serde", "serde_json", @@ -4968,11 +5424,11 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "frame-support", "frame-system", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "safe-mix", "scale-info", "sp-runtime", @@ -4987,7 +5443,7 @@ dependencies = [ "frame-support", "frame-system", "pallet-identity", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "scale-info", @@ -5004,7 +5460,7 @@ dependencies = [ "frame-system", "pallet-identity", "pallet-staking", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "scale-info", @@ -5017,13 +5473,13 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "log", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "sp-io", "sp-runtime", @@ -5033,14 +5489,14 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "frame-support", "frame-system", "impl-trait-for-tuples", "log", "pallet-timestamp", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "sp-core", "sp-io", @@ -5070,7 +5526,7 @@ dependencies = [ "pallet-scheduler", "pallet-statistics", "pallet-timestamp", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "polymesh-primitives-derive", @@ -5090,6 +5546,7 @@ name = "pallet-staking" version = "2.0.0" dependencies = [ "frame-benchmarking", + "frame-election-provider-support", "frame-support", "frame-system", "log", @@ -5098,7 +5555,7 @@ dependencies = [ "pallet-identity", "pallet-session", "pallet-staking-reward-curve", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "rand_chacha 0.2.2", @@ -5118,7 +5575,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -5134,7 +5591,7 @@ dependencies = [ "jsonrpc-core-client", "jsonrpc-derive", "pallet-staking-rpc-runtime-api", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "serde", "sp-api", "sp-blockchain", @@ -5164,7 +5621,7 @@ dependencies = [ "pallet-identity", "pallet-session", "pallet-timestamp", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "scale-info", @@ -5196,7 +5653,7 @@ dependencies = [ "pallet-portfolio", "pallet-settlement", "pallet-timestamp", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "polymesh-primitives-derive", @@ -5217,7 +5674,7 @@ version = "2.0.0" dependencies = [ "frame-support", "frame-system", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "serde", "sp-core", @@ -5236,7 +5693,7 @@ dependencies = [ "frame-system", "pallet-identity", "pallet-permissions", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "scale-info", @@ -5248,13 +5705,13 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "log", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "sp-inherents", "sp-io", @@ -5270,7 +5727,7 @@ dependencies = [ "frame-support", "frame-system", "pallet-timestamp", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "scale-info", @@ -5292,7 +5749,7 @@ dependencies = [ "pallet-balances 0.1.0", "pallet-identity", "pallet-permissions", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "scale-info", @@ -5309,13 +5766,13 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "frame-support", "frame-system", "impl-trait-for-tuples", "pallet-balances 4.0.0-dev", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "serde", "sp-runtime", @@ -5333,7 +5790,7 @@ dependencies = [ "hex-literal 0.2.2", "pallet-balances 0.1.0", "pallet-permissions", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "scale-info", @@ -5356,16 +5813,16 @@ dependencies = [ "hex", "libc", "log", - "memmap2", + "memmap2 0.2.3", "parking_lot 0.11.2", "rand 0.8.5", ] [[package]] name = "parity-db" -version = "0.3.11" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3e7f385d61562f5834282b90aa50b41f38a35cf64d5209b8b05487b50553dbe" +checksum = "55a7901b85874402471e131de3332dde0e51f38432c69a3853627c8e25433048" dependencies = [ "blake2-rfc", "crc32fast", @@ -5374,7 +5831,7 @@ dependencies = [ "libc", "log", "lz4", - "memmap2", + "memmap2 0.2.3", "parking_lot 0.11.2", "rand 0.8.5", "snap", @@ -5395,15 +5852,15 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "2.3.1" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" +checksum = "e8b44461635bbb1a0300f100a841e571e7d919c81c73075ef5d152ffdb521066" dependencies = [ "arrayvec 0.7.2", - "bitvec 0.20.4", + "bitvec 1.0.0", "byte-slice-cast 1.2.1", "impl-trait-for-tuples", - "parity-scale-codec-derive 2.3.1", + "parity-scale-codec-derive 3.1.2", "serde", ] @@ -5421,9 +5878,9 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "2.3.1" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" +checksum = "c45ed1f39709f5a89338fab50e59816b2e8815f5bb58276e7ddf9afd495f73f8" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -5453,15 +5910,15 @@ dependencies = [ [[package]] name = "parity-util-mem" -version = "0.10.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f4cb4e169446179cbc6b8b6320cc9fca49bd2e94e8db25f25f200a8ea774770" +checksum = "c32561d248d352148124f036cac253a644685a21dc9fea383eb4907d7bd35a8f" dependencies = [ "cfg-if 1.0.0", - "hashbrown", + "hashbrown 0.12.1", "impl-trait-for-tuples", "parity-util-mem-derive", - "parking_lot 0.11.2", + "parking_lot 0.12.0", "primitive-types", "smallvec", "winapi 0.3.9", @@ -5535,7 +5992,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58" dependencies = [ "lock_api", - "parking_lot_core 0.9.2", + "parking_lot_core 0.9.3", ] [[package]] @@ -5547,20 +6004,20 @@ dependencies = [ "cfg-if 1.0.0", "instant", "libc", - "redox_syscall", + "redox_syscall 0.2.13", "smallvec", "winapi 0.3.9", ] [[package]] name = "parking_lot_core" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "995f667a6c822200b0433ac218e05582f0e2efa1b922a3fd2fbaadc5f87bab37" +checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall", + "redox_syscall 0.2.13", "smallvec", "windows-sys", ] @@ -5661,9 +6118,9 @@ dependencies = [ [[package]] name = "petgraph" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7" +checksum = "4a13a2fa9d0b63e5f22328828741e523766fff0ee9e779316902290dff3f824f" dependencies = [ "fixedbitset", "indexmap", @@ -5790,9 +6247,9 @@ checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" [[package]] name = "pin-project-lite" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" [[package]] name = "pin-utils" @@ -5853,7 +6310,7 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "048aeb476be11a4b6ca432ca569e375810de9294ae78f4774e78ea98a9246ede" dependencies = [ - "cpufeatures 0.2.2", + "cpufeatures", "opaque-debug 0.3.0", "universal-hash", ] @@ -5863,6 +6320,7 @@ name = "polymesh" version = "5.0.0" dependencies = [ "chrono", + "clap 3.1.18", "ed25519-dalek", "frame-benchmarking", "frame-benchmarking-cli", @@ -5898,7 +6356,7 @@ dependencies = [ "pallet-staking", "pallet-staking-rpc-runtime-api", "pallet-sudo", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-node-rpc", "polymesh-primitives", @@ -5920,7 +6378,6 @@ dependencies = [ "sc-consensus-uncles", "sc-executor", "sc-finality-grandpa", - "sc-light", "sc-network", "sc-rpc", "sc-service", @@ -5939,13 +6396,13 @@ dependencies = [ "sp-consensus-slots", "sp-core", "sp-inherents", + "sp-keyring", "sp-offchain", "sp-runtime", "sp-session", "sp-timestamp", "sp-transaction-pool", "sp-transaction-storage-proof", - "structopt", "substrate-prometheus-endpoint", "vergen", ] @@ -5954,7 +6411,7 @@ dependencies = [ name = "polymesh-build-tool" version = "0.1.0" dependencies = [ - "substrate-wasm-builder 4.0.0", + "substrate-wasm-builder", ] [[package]] @@ -5967,7 +6424,7 @@ dependencies = [ "lazy_static", "pallet-session", "pallet-timestamp", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-primitives", "polymesh-primitives-derive", "scale-info", @@ -5996,7 +6453,7 @@ dependencies = [ "pallet-contracts-primitives", "pallet-identity", "pallet-permissions", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "pwasm-utils", @@ -6024,7 +6481,7 @@ dependencies = [ "frame-system", "pallet-permissions", "pallet-transaction-payment", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "scale-info", @@ -6042,7 +6499,7 @@ dependencies = [ "pallet-group-rpc", "pallet-protocol-fee-rpc", "pallet-staking-rpc", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-primitives", "sc-chain-spec", "sc-client-api", @@ -6079,10 +6536,10 @@ dependencies = [ "frame-system", "hex", "libsecp256k1 0.6.0", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-primitives-derive", - "rand 0.7.3", - "rand_core 0.5.1", + "rand 0.8.5", + "rand_core 0.6.3", "rustc-hex", "scale-info", "schnorrkel 0.10.1", @@ -6144,6 +6601,7 @@ dependencies = [ "pallet-permissions", "pallet-pips", "pallet-portfolio", + "pallet-preimage", "pallet-protocol-fee", "pallet-protocol-fee-rpc-runtime-api", "pallet-randomness-collective-flip", @@ -6163,7 +6621,7 @@ dependencies = [ "pallet-transaction-payment", "pallet-treasury 0.1.0", "pallet-utility", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-build-tool", "polymesh-common-utilities", "polymesh-contracts", @@ -6212,7 +6670,7 @@ dependencies = [ "pallet-relayer", "pallet-test-utils", "pallet-timestamp", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-common-utilities", "polymesh-primitives", "rand 0.7.3", @@ -6235,6 +6693,7 @@ dependencies = [ "frame-system", "frame-system-benchmarking", "frame-system-rpc-runtime-api", + "getrandom 0.2.6", "hex-literal 0.3.4", "log", "node-rpc-runtime-api", @@ -6263,6 +6722,7 @@ dependencies = [ "pallet-permissions", "pallet-pips", "pallet-portfolio", + "pallet-preimage", "pallet-protocol-fee", "pallet-protocol-fee-rpc-runtime-api", "pallet-randomness-collective-flip", @@ -6282,7 +6742,7 @@ dependencies = [ "pallet-transaction-payment", "pallet-treasury 0.1.0", "pallet-utility", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-build-tool", "polymesh-common-utilities", "polymesh-contracts", @@ -6346,6 +6806,7 @@ dependencies = [ "pallet-permissions", "pallet-pips", "pallet-portfolio", + "pallet-preimage", "pallet-protocol-fee", "pallet-protocol-fee-rpc-runtime-api", "pallet-randomness-collective-flip", @@ -6364,7 +6825,7 @@ dependencies = [ "pallet-transaction-payment", "pallet-treasury 0.1.0", "pallet-utility", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-build-tool", "polymesh-common-utilities", "polymesh-contracts", @@ -6430,6 +6891,7 @@ dependencies = [ "pallet-permissions", "pallet-pips", "pallet-portfolio", + "pallet-preimage", "pallet-protocol-fee", "pallet-protocol-fee-rpc-runtime-api", "pallet-randomness-collective-flip", @@ -6449,7 +6911,7 @@ dependencies = [ "pallet-transaction-payment", "pallet-treasury 0.1.0", "pallet-utility", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "polymesh-build-tool", "polymesh-common-utilities", "polymesh-contracts", @@ -6487,6 +6949,7 @@ dependencies = [ "cryptography_core 1.0.0 (git+https://github.com/PolymathNetwork/cryptography.git?branch=confidential-identity-v1)", "env_logger 0.7.1", "frame-benchmarking", + "frame-election-provider-support", "frame-executive", "frame-support", "frame-system", @@ -6522,6 +6985,7 @@ dependencies = [ "pallet-permissions", "pallet-pips", "pallet-portfolio", + "pallet-preimage", "pallet-protocol-fee", "pallet-protocol-fee-rpc-runtime-api", "pallet-randomness-collective-flip", @@ -6541,8 +7005,8 @@ dependencies = [ "pallet-transaction-payment", "pallet-treasury 0.1.0", "pallet-utility", - "parity-scale-codec 2.3.1", - "parking_lot 0.11.2", + "parity-scale-codec 3.1.2", + "parking_lot 0.12.0", "polymesh-common-utilities", "polymesh-contracts", "polymesh-exec-macro", @@ -6599,6 +7063,7 @@ dependencies = [ "pallet-multisig", "pallet-pips", "pallet-portfolio", + "pallet-preimage", "pallet-protocol-fee", "pallet-relayer", "pallet-rewards", @@ -6624,7 +7089,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" dependencies = [ "cfg-if 1.0.0", - "cpufeatures 0.2.2", + "cpufeatures", "opaque-debug 0.3.0", "universal-hash", ] @@ -6641,11 +7106,25 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" +[[package]] +name = "prettytable-rs" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fd04b170004fa2daccf418a7f8253aaf033c27760b5f225889024cf66d7ac2e" +dependencies = [ + "atty", + "csv", + "encode_unicode", + "lazy_static", + "term", + "unicode-width", +] + [[package]] name = "primitive-types" -version = "0.10.1" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" +checksum = "e28720988bff275df1f51b171e1b2a18c30d194c4d2b61defdacecd625a5d94a" dependencies = [ "fixed-hash", "impl-codec", @@ -6705,18 +7184,18 @@ checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" [[package]] name = "proc-macro2" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec757218438d5fda206afc041538b2f6d889286160d649a86a24d37e1235afd1" +checksum = "9027b48e9d4c9175fa2218adf3557f91c1137021739951d4932f5f8268ac48aa" dependencies = [ "unicode-xid", ] [[package]] name = "prometheus" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5986aa8d62380092d2f50f8b1cdba9cb9b6731ffd4b25b51fd126b6c3e05b99c" +checksum = "b7f64969ffd5dd8f39bd57a68ac53c163a095ed9d0fb707146da1b27025a3504" dependencies = [ "cfg-if 1.0.0", "fnv", @@ -6726,11 +7205,34 @@ dependencies = [ "thiserror", ] +[[package]] +name = "prometheus-client" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9a896938cc6018c64f279888b8c7559d3725210d5db9a3a1ee6bc7188d51d34" +dependencies = [ + "dtoa 1.0.2", + "itoa 1.0.2", + "owning_ref", + "prometheus-client-derive-text-encode", +] + +[[package]] +name = "prometheus-client-derive-text-encode" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8e12d01b9d66ad9eb4529c57666b6263fc1993cb30261d83ead658fdd932652" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "prost" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de5e2533f59d08fcf364fd374ebda0692a70bd6d7e66ef97f306f45c6c5d8020" +checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" dependencies = [ "bytes 1.1.0", "prost-derive", @@ -6738,27 +7240,29 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "355f634b43cdd80724ee7848f95770e7e70eefa6dcf14fea676216573b8fd603" +checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5" dependencies = [ "bytes 1.1.0", "heck 0.3.3", "itertools", + "lazy_static", "log", "multimap", "petgraph", "prost", "prost-types", + "regex", "tempfile", "which", ] [[package]] name = "prost-derive" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "600d2f334aa05acb02a755e217ef1ab6dea4d51b58b7846588b747edec04efba" +checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" dependencies = [ "anyhow", "itertools", @@ -6769,9 +7273,9 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "603bbd6394701d13f3f25aada59c7de9d35a6a5887cfc156181234a44002771b" +checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a" dependencies = [ "bytes 1.1.0", "prost", @@ -6837,9 +7341,9 @@ checksum = "def50a86306165861203e7f84ecffbbdfdea79f0e51039b33de1e952358c47ac" [[package]] name = "radium" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" [[package]] name = "rand" @@ -6852,7 +7356,7 @@ dependencies = [ "rand_chacha 0.2.2", "rand_core 0.5.1", "rand_hc", - "rand_pcg", + "rand_pcg 0.2.1", ] [[package]] @@ -6932,6 +7436,15 @@ dependencies = [ "rand_core 0.5.1", ] +[[package]] +name = "rand_pcg" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e" +dependencies = [ + "rand_core 0.6.3", +] + [[package]] name = "rawpointer" version = "0.2.1" @@ -6940,9 +7453,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" [[package]] name = "rayon" -version = "1.5.2" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd249e82c21598a9a426a4e00dd7adc1d640b22445ec8545feef801d1a74c221" +checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" dependencies = [ "autocfg", "crossbeam-deque", @@ -6952,9 +7465,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.9.2" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f51245e1e62e1f1629cbfec37b5793bbabcaeb90f30e94d2ba03564687353e4" +checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -6962,6 +7475,12 @@ dependencies = [ "num_cpus", ] +[[package]] +name = "redox_syscall" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" + [[package]] name = "redox_syscall" version = "0.2.13" @@ -6971,6 +7490,17 @@ dependencies = [ "bitflags", ] +[[package]] +name = "redox_users" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" +dependencies = [ + "getrandom 0.1.16", + "redox_syscall 0.1.57", + "rust-argon2", +] + [[package]] name = "redox_users" version = "0.4.3" @@ -6978,24 +7508,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ "getrandom 0.2.6", - "redox_syscall", + "redox_syscall 0.2.13", "thiserror", ] [[package]] name = "ref-cast" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "300f2a835d808734ee295d45007adacb9ebb29dd3ae2424acfa17930cae541da" +checksum = "685d58625b6c2b83e4cc88a27c4bf65adb7b6b16dbdc413e515c9405b47432ab" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c38e3aecd2b21cb3959637b883bb3714bc7e43f0268b9a29d3743ee3e55cdd2" +checksum = "a043824e29c94169374ac5183ac0ed43f5724dc4556b19568007486bd840fa1f" dependencies = [ "proc-macro2", "quote", @@ -7004,9 +7534,9 @@ dependencies = [ [[package]] name = "regalloc" -version = "0.0.31" +version = "0.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "571f7f397d61c4755285cd37853fe8e03271c243424a907415909379659381c5" +checksum = "62446b1d3ebf980bdc68837700af1d77b37bc430e524bf95319c6eada2a4cc02" dependencies = [ "log", "rustc-hash", @@ -7076,6 +7606,17 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c31b5c4033f8fdde8700e4657be2c497e7288f01515be52168c631e2e4d4086" +[[package]] +name = "rfc6979" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96ef608575f6392792f9ecf7890c00086591d29a83910939d430753f7c050525" +dependencies = [ + "crypto-bigint", + "hmac 0.11.0", + "zeroize", +] + [[package]] name = "ring" version = "0.16.20" @@ -7093,9 +7634,9 @@ dependencies = [ [[package]] name = "rocksdb" -version = "0.17.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a62eca5cacf2c8261128631bed9f045598d40bfbe4b29f5163f0f802f8f44a7" +checksum = "620f4129485ff1a7128d184bc687470c21c7951b64779ebc9cfdad3dcd920290" dependencies = [ "libc", "librocksdb-sys", @@ -7111,6 +7652,33 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "rtnetlink" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f54290e54521dac3de4149d83ddf9f62a359b3cc93bcb494a794a41e6f4744b" +dependencies = [ + "async-global-executor", + "futures 0.3.21", + "log", + "netlink-packet-route", + "netlink-proto", + "nix", + "thiserror", +] + +[[package]] +name = "rust-argon2" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" +dependencies = [ + "base64 0.13.0", + "blake2b_simd", + "constant_time_eq", + "crossbeam-utils", +] + [[package]] name = "rustc-demangle" version = "0.1.21" @@ -7140,20 +7708,25 @@ dependencies = [ [[package]] name = "rustc_version" -version = "0.3.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 0.11.0", + "semver 1.0.9", ] [[package]] -name = "rustc_version" -version = "0.4.0" +name = "rustix" +version = "0.33.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "938a344304321a9da4973b9ff4f9f8db9caf4597dfd9dda6a60b523340a0fff0" dependencies = [ - "semver 1.0.7", + "bitflags", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys", + "winapi 0.3.9", ] [[package]] @@ -7165,8 +7738,20 @@ dependencies = [ "base64 0.13.0", "log", "ring", - "sct", - "webpki", + "sct 0.6.1", + "webpki 0.21.4", +] + +[[package]] +name = "rustls" +version = "0.20.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a024a432ae760ab3bff924ad91ce1cfa52cb57ed16e1ef32d0d249cfee1a6c13" +dependencies = [ + "log", + "ring", + "sct 0.7.0", + "webpki 0.22.0", ] [[package]] @@ -7176,11 +7761,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a07b7c1885bd8ed3831c289b7870b13ef46fe0e856d288c30d9cc17d75a2092" dependencies = [ "openssl-probe", - "rustls", + "rustls 0.19.1", "schannel", "security-framework", ] +[[package]] +name = "rustversion" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f" + [[package]] name = "rw-stream-sink" version = "0.2.1" @@ -7194,9 +7785,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" +checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695" [[package]] name = "safe-mix" @@ -7209,9 +7800,9 @@ dependencies = [ [[package]] name = "salsa20" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecbd2eb639fd7cab5804a0837fe373cc2172d15437e804c054a9fb885cb923b0" +checksum = "0c0fbb5f676da676c260ba276a8f43a8dc67cf02d1438423aeb1c677a7212686" dependencies = [ "cipher", ] @@ -7227,8 +7818,8 @@ dependencies = [ [[package]] name = "sc-allocator" -version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "4.1.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "log", "sp-core", @@ -7239,16 +7830,15 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "async-trait", - "derive_more", "futures 0.3.21", - "futures-timer 3.0.2", + "futures-timer", "ip_network", "libp2p", "log", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "prost", "prost-build", "rand 0.7.3", @@ -7261,17 +7851,18 @@ dependencies = [ "sp-keystore", "sp-runtime", "substrate-prometheus-endpoint", + "thiserror", ] [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "futures 0.3.21", - "futures-timer 3.0.2", + "futures-timer", "log", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "sc-block-builder", "sc-client-api", "sc-proposer-metrics", @@ -7289,9 +7880,9 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "sc-client-api", "sp-api", "sp-block-builder", @@ -7305,10 +7896,11 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "impl-trait-for-tuples", - "parity-scale-codec 2.3.1", + "memmap2 0.5.3", + "parity-scale-codec 3.1.2", "sc-chain-spec-derive", "sc-network", "sc-telemetry", @@ -7321,7 +7913,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -7332,20 +7924,22 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "chrono", + "clap 3.1.18", "fdlimit", "futures 0.3.21", "hex", "libp2p", "log", "names", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "rand 0.7.3", "regex", "rpassword", "sc-client-api", + "sc-client-db", "sc-keystore", "sc-network", "sc-service", @@ -7361,7 +7955,6 @@ dependencies = [ "sp-panic-handler", "sp-runtime", "sp-version", - "structopt", "thiserror", "tiny-bip39", "tokio", @@ -7370,14 +7963,14 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "fnv", "futures 0.3.21", "hash-db", "log", - "parity-scale-codec 2.3.1", - "parking_lot 0.11.2", + "parity-scale-codec 3.1.2", + "parking_lot 0.12.0", "sc-executor", "sc-transaction-pool-api", "sc-utils", @@ -7398,7 +7991,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "hash-db", "kvdb", @@ -7406,9 +7999,9 @@ dependencies = [ "kvdb-rocksdb", "linked-hash-map", "log", - "parity-db 0.3.11", - "parity-scale-codec 2.3.1", - "parking_lot 0.11.2", + "parity-db 0.3.13", + "parity-scale-codec 3.1.2", + "parking_lot 0.12.0", "sc-client-api", "sc-state-db", "sp-arithmetic", @@ -7423,14 +8016,14 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "async-trait", "futures 0.3.21", - "futures-timer 3.0.2", + "futures-timer", "libp2p", "log", - "parking_lot 0.11.2", + "parking_lot 0.12.0", "sc-client-api", "sc-utils", "serde", @@ -7447,10 +8040,9 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "async-trait", - "derive_more", "fork-tree", "futures 0.3.21", "log", @@ -7458,8 +8050,8 @@ dependencies = [ "num-bigint", "num-rational 0.2.4", "num-traits", - "parity-scale-codec 2.3.1", - "parking_lot 0.11.2", + "parity-scale-codec 3.1.2", + "parking_lot 0.12.0", "rand 0.7.3", "retain_mut", "sc-client-api", @@ -7485,14 +8077,14 @@ dependencies = [ "sp-runtime", "sp-version", "substrate-prometheus-endpoint", + "thiserror", ] [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ - "derive_more", "futures 0.3.21", "jsonrpc-core", "jsonrpc-core-client", @@ -7509,15 +8101,16 @@ dependencies = [ "sp-core", "sp-keystore", "sp-runtime", + "thiserror", ] [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "fork-tree", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "sc-client-api", "sc-consensus", "sp-blockchain", @@ -7527,17 +8120,16 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "async-trait", "futures 0.3.21", - "futures-timer 3.0.2", + "futures-timer", "log", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "sc-client-api", "sc-consensus", "sc-telemetry", - "sp-api", "sp-arithmetic", "sp-blockchain", "sp-consensus", @@ -7553,7 +8145,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "sc-client-api", "sp-authorship", @@ -7564,18 +8156,18 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "lazy_static", - "libsecp256k1 0.6.0", - "log", - "parity-scale-codec 2.3.1", - "parking_lot 0.11.2", + "lru", + "parity-scale-codec 3.1.2", + "parking_lot 0.12.0", "sc-executor-common", "sc-executor-wasmi", "sc-executor-wasmtime", "sp-api", "sp-core", + "sp-core-hashing-proc-macro", "sp-externalities", "sp-io", "sp-panic-handler", @@ -7584,39 +8176,38 @@ dependencies = [ "sp-trie", "sp-version", "sp-wasm-interface", + "tracing", "wasmi", ] [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ - "derive_more", "environmental", - "parity-scale-codec 2.3.1", - "pwasm-utils", + "parity-scale-codec 3.1.2", "sc-allocator", - "sp-core", "sp-maybe-compressed-blob", + "sp-sandbox", "sp-serializer", "sp-wasm-interface", "thiserror", + "wasm-instrument", "wasmi", ] [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "log", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "sc-allocator", "sc-executor-common", - "scoped-tls", - "sp-core", "sp-runtime-interface", + "sp-sandbox", "sp-wasm-interface", "wasmi", ] @@ -7624,17 +8215,17 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "cfg-if 1.0.0", "libc", "log", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "parity-wasm 0.42.2", "sc-allocator", "sc-executor-common", - "sp-core", "sp-runtime-interface", + "sp-sandbox", "sp-wasm-interface", "wasmtime", ] @@ -7642,20 +8233,22 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ + "ahash", "async-trait", - "derive_more", "dyn-clone", "finality-grandpa", "fork-tree", "futures 0.3.21", - "futures-timer 3.0.2", + "futures-timer", + "hex", "log", - "parity-scale-codec 2.3.1", - "parking_lot 0.11.2", + "parity-scale-codec 3.1.2", + "parking_lot 0.12.0", "rand 0.8.5", "sc-block-builder", + "sc-chain-spec", "sc-client-api", "sc-consensus", "sc-keystore", @@ -7674,14 +8267,14 @@ dependencies = [ "sp-keystore", "sp-runtime", "substrate-prometheus-endpoint", + "thiserror", ] [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ - "derive_more", "finality-grandpa", "futures 0.3.21", "jsonrpc-core", @@ -7689,7 +8282,7 @@ dependencies = [ "jsonrpc-derive", "jsonrpc-pubsub", "log", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "sc-client-api", "sc-finality-grandpa", "sc-rpc", @@ -7698,16 +8291,17 @@ dependencies = [ "sp-blockchain", "sp-core", "sp-runtime", + "thiserror", ] [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "ansi_term", "futures 0.3.21", - "futures-timer 3.0.2", + "futures-timer", "log", "parity-util-mem", "sc-client-api", @@ -7720,53 +8314,33 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "async-trait", - "derive_more", "hex", - "parking_lot 0.11.2", + "parking_lot 0.12.0", "serde_json", "sp-application-crypto", "sp-core", "sp-keystore", -] - -[[package]] -name = "sc-light" -version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" -dependencies = [ - "hash-db", - "parity-scale-codec 2.3.1", - "parking_lot 0.11.2", - "sc-client-api", - "sc-executor", - "sp-api", - "sp-blockchain", - "sp-core", - "sp-externalities", - "sp-runtime", - "sp-state-machine", + "thiserror", ] [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ - "async-std", "async-trait", "asynchronous-codec 0.5.0", "bitflags", "bytes 1.1.0", "cid", - "derive_more", "either", "fnv", "fork-tree", "futures 0.3.21", - "futures-timer 3.0.2", + "futures-timer", "hex", "ip_network", "libp2p", @@ -7774,8 +8348,8 @@ dependencies = [ "linked_hash_set", "log", "lru", - "parity-scale-codec 2.3.1", - "parking_lot 0.11.2", + "parity-scale-codec 3.1.2", + "parking_lot 0.12.0", "pin-project 1.0.10", "prost", "prost-build", @@ -7804,10 +8378,11 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ + "ahash", "futures 0.3.21", - "futures-timer 3.0.2", + "futures-timer", "libp2p", "log", "lru", @@ -7820,20 +8395,19 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "bytes 1.1.0", "fnv", "futures 0.3.21", - "futures-timer 3.0.2", + "futures-timer", "hex", "hyper", "hyper-rustls", - "log", "num_cpus", "once_cell", - "parity-scale-codec 2.3.1", - "parking_lot 0.11.2", + "parity-scale-codec 3.1.2", + "parking_lot 0.12.0", "rand 0.7.3", "sc-client-api", "sc-network", @@ -7843,12 +8417,13 @@ dependencies = [ "sp-offchain", "sp-runtime", "threadpool", + "tracing", ] [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "futures 0.3.21", "libp2p", @@ -7860,8 +8435,8 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -7870,15 +8445,15 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "futures 0.3.21", "hash-db", "jsonrpc-core", "jsonrpc-pubsub", "log", - "parity-scale-codec 2.3.1", - "parking_lot 0.11.2", + "parity-scale-codec 3.1.2", + "parking_lot 0.12.0", "sc-block-builder", "sc-chain-spec", "sc-client-api", @@ -7901,7 +8476,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -7909,10 +8484,11 @@ dependencies = [ "jsonrpc-derive", "jsonrpc-pubsub", "log", - "parity-scale-codec 2.3.1", - "parking_lot 0.11.2", + "parity-scale-codec 3.1.2", + "parking_lot 0.12.0", "sc-chain-spec", "sc-transaction-pool-api", + "scale-info", "serde", "serde_json", "sp-core", @@ -7926,7 +8502,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -7943,20 +8519,20 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "async-trait", "directories", "exit-future", "futures 0.3.21", - "futures-timer 3.0.2", + "futures-timer", "hash-db", "jsonrpc-core", "jsonrpc-pubsub", "log", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "parity-util-mem", - "parking_lot 0.11.2", + "parking_lot 0.12.0", "pin-project 1.0.10", "rand 0.7.3", "sc-block-builder", @@ -7971,6 +8547,7 @@ dependencies = [ "sc-offchain", "sc-rpc", "sc-rpc-server", + "sc-sysinfo", "sc-telemetry", "sc-tracing", "sc-transaction-pool", @@ -8007,13 +8584,13 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "log", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "parity-util-mem", "parity-util-mem-derive", - "parking_lot 0.11.2", + "parking_lot 0.12.0", "sc-client-api", "sp-core", ] @@ -8021,18 +8598,17 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "sc-chain-spec", "sc-client-api", "sc-consensus-babe", "sc-consensus-epochs", "sc-finality-grandpa", - "sc-rpc-api", "serde", "serde_json", "sp-blockchain", @@ -8040,16 +8616,35 @@ dependencies = [ "thiserror", ] +[[package]] +name = "sc-sysinfo" +version = "6.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" +dependencies = [ + "futures 0.3.21", + "libc", + "log", + "rand 0.7.3", + "rand_pcg 0.2.1", + "regex", + "sc-telemetry", + "serde", + "serde_json", + "sp-core", + "sp-io", + "sp-std", +] + [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "chrono", "futures 0.3.21", "libp2p", "log", - "parking_lot 0.11.2", + "parking_lot 0.12.0", "pin-project 1.0.10", "rand 0.7.3", "serde", @@ -8061,7 +8656,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "ansi_term", "atty", @@ -8070,7 +8665,7 @@ dependencies = [ "libc", "log", "once_cell", - "parking_lot 0.11.2", + "parking_lot 0.12.0", "regex", "rustc-hash", "sc-client-api", @@ -8092,7 +8687,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -8103,15 +8698,15 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "futures 0.3.21", - "intervalier", + "futures-timer", "linked-hash-map", "log", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "parity-util-mem", - "parking_lot 0.11.2", + "parking_lot 0.12.0", "retain_mut", "sc-client-api", "sc-transaction-pool-api", @@ -8130,9 +8725,8 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ - "derive_more", "futures 0.3.21", "log", "serde", @@ -8144,33 +8738,35 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "futures 0.3.21", - "futures-timer 3.0.2", + "futures-timer", "lazy_static", + "log", + "parking_lot 0.12.0", "prometheus", ] [[package]] name = "scale-info" -version = "1.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c55b744399c25532d63a0d2789b109df8d46fc93752d46b0782991a931a782f" +checksum = "8980cafbe98a7ee7a9cc16b32ebce542c77883f512d83fbf2ddc8f6a85ea74c9" dependencies = [ - "bitvec 0.20.4", + "bitvec 1.0.0", "cfg-if 1.0.0", "derive_more", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info-derive", "serde", ] [[package]] name = "scale-info-derive" -version = "1.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baeb2780690380592f86205aa4ee49815feb2acad8c2f59e6dd207148c3f1fcd" +checksum = "4260c630e8a8a33429d1688eff2f163f24c65a4e1b1578ef6b565061336e4b6f" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -8209,7 +8805,7 @@ dependencies = [ [[package]] name = "schnorrkel" version = "0.10.1" -source = "git+https://github.com/PolymathNetwork/schnorrkel?branch=rebase-head#8dcebaa8098d286f04404137006dc6395ff8f598" +source = "git+https://github.com/PolymathNetwork/schnorrkel?branch=rebase-head#8badbc3657ea40d33ef4d9b7d75e41c460cf6146" dependencies = [ "arrayref", "arrayvec 0.5.2", @@ -8225,12 +8821,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "scoped-tls" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" - [[package]] name = "scopeguard" version = "1.1.0" @@ -8263,6 +8853,46 @@ dependencies = [ "untrusted", ] +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "sec1" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08da66b8b0965a5555b6bd6639e68ccba85e1e2506f5fbb089e93f8a04e1a2d1" +dependencies = [ + "der", + "generic-array 0.14.5", + "subtle", + "zeroize", +] + +[[package]] +name = "secp256k1" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c42e6f1735c5f00f51e43e28d6634141f2bcad10931b2609ddd74a86d751260" +dependencies = [ + "secp256k1-sys", +] + +[[package]] +name = "secp256k1-sys" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "957da2573cde917463ece3570eab4a0b3f19de6f1646cde62e6fd3868f566036" +dependencies = [ + "cc", +] + [[package]] name = "secrecy" version = "0.8.0" @@ -8321,7 +8951,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537" dependencies = [ - "semver-parser 0.7.0", + "semver-parser", ] [[package]] @@ -8330,54 +8960,38 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" dependencies = [ - "semver-parser 0.7.0", + "semver-parser", ] [[package]] name = "semver" -version = "0.11.0" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +checksum = "8cb243bdfdb5936c8dc3c45762a19d12ab4550cdc753bc247637d4ec35a040fd" dependencies = [ - "semver-parser 0.10.2", "serde", ] -[[package]] -name = "semver" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d65bd28f48be7196d222d95b9243287f48d27aca604e08497513019ff0502cc4" - [[package]] name = "semver-parser" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -[[package]] -name = "semver-parser" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" -dependencies = [ - "pest", -] - [[package]] name = "serde" -version = "1.0.136" +version = "1.0.137" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" +checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1" dependencies = [ "serde_derive", ] [[package]] name = "serde_bytes" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16ae07dd2f88a366f15bd0632ba725227018c69a1c8550a927324f8eb8368bb9" +checksum = "212e73464ebcde48d723aa02eb270ba62eff38a9b732df31f33f1b4e145f3a54" dependencies = [ "serde", ] @@ -8394,9 +9008,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.136" +version = "1.0.137" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" +checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be" dependencies = [ "proc-macro2", "quote", @@ -8405,15 +9019,24 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.79" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" +checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c" dependencies = [ - "itoa 1.0.1", + "itoa 1.0.2", "ryu", "serde", ] +[[package]] +name = "serde_nanos" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e44969a61f5d316be20a42ff97816efb3b407a924d06824c3d8a49fa8450de0e" +dependencies = [ + "serde", +] + [[package]] name = "servo_arc" version = "0.1.1" @@ -8444,7 +9067,7 @@ checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" dependencies = [ "block-buffer 0.9.0", "cfg-if 1.0.0", - "cpufeatures 0.2.2", + "cpufeatures", "digest 0.9.0", "opaque-debug 0.3.0", ] @@ -8469,11 +9092,22 @@ checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ "block-buffer 0.9.0", "cfg-if 1.0.0", - "cpufeatures 0.2.2", + "cpufeatures", "digest 0.9.0", "opaque-debug 0.3.0", ] +[[package]] +name = "sha2" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.3", +] + [[package]] name = "sha3" version = "0.9.1" @@ -8486,6 +9120,16 @@ dependencies = [ "opaque-debug 0.3.0", ] +[[package]] +name = "sha3" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "881bf8156c87b6301fc5ca6b27f11eeb2761224c7081e69b409d5a1951a70c86" +dependencies = [ + "digest 0.10.3", + "keccak", +] + [[package]] name = "sharded-slab" version = "0.1.4" @@ -8522,9 +9166,13 @@ dependencies = [ [[package]] name = "signature" -version = "1.5.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f054c6c1a6e95179d6f23ed974060dcefb2d9388bb7256900badad682c499de4" +checksum = "02658e48d89f2bec991f9a78e69cfa4c316f8d6a6c4ec12fae1aeb263d486788" +dependencies = [ + "digest 0.9.0", + "rand_core 0.6.3", +] [[package]] name = "simba" @@ -8564,31 +9212,19 @@ checksum = "45456094d1983e2ee2a18fdfebce3189fa451699d0502cb8e3b49dba5ba41451" [[package]] name = "snow" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6142f7c25e94f6fd25a32c3348ec230df9109b463f59c8c7acc4bd34936babb7" +checksum = "774d05a3edae07ce6d68ea6984f3c05e9bba8927e3dd591e3b479e5b03213d0d" dependencies = [ "aes-gcm", "blake2", "chacha20poly1305", - "rand 0.8.5", + "curve25519-dalek 4.0.0-pre.1", "rand_core 0.6.3", "ring", - "rustc_version 0.3.3", - "sha2 0.9.9", + "rustc_version 0.4.0", + "sha2 0.10.2", "subtle", - "x25519-dalek", -] - -[[package]] -name = "socket2" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "winapi 0.3.9", ] [[package]] @@ -8603,28 +9239,28 @@ dependencies = [ [[package]] name = "soketto" -version = "0.4.2" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5c71ed3d54db0a699f4948e1bb3e45b450fa31fe602621dee6680361d569c88" +checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" dependencies = [ - "base64 0.12.3", - "bytes 0.5.6", + "base64 0.13.0", + "bytes 1.1.0", "flate2", "futures 0.3.21", "httparse", "log", - "rand 0.7.3", + "rand 0.8.5", "sha-1 0.9.8", ] [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "hash-db", "log", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "sp-api-proc-macro", "sp-core", "sp-runtime", @@ -8637,9 +9273,9 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ - "blake2-rfc", + "blake2", "proc-macro-crate 1.1.3", "proc-macro2", "quote", @@ -8648,10 +9284,10 @@ dependencies = [ [[package]] name = "sp-application-crypto" -version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "6.0.0" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "serde", "sp-core", @@ -8661,12 +9297,12 @@ dependencies = [ [[package]] name = "sp-arithmetic" -version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "5.0.0" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "integer-sqrt", "num-traits", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "serde", "sp-debug-derive", @@ -8677,9 +9313,9 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "sp-api", "sp-application-crypto", @@ -8690,10 +9326,10 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "async-trait", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "sp-inherents", "sp-runtime", "sp-std", @@ -8702,9 +9338,9 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "sp-api", "sp-inherents", "sp-runtime", @@ -8714,13 +9350,13 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "futures 0.3.21", "log", "lru", - "parity-scale-codec 2.3.1", - "parking_lot 0.11.2", + "parity-scale-codec 3.1.2", + "parking_lot 0.12.0", "sp-api", "sp-consensus", "sp-database", @@ -8732,13 +9368,13 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "async-trait", "futures 0.3.21", - "futures-timer 3.0.2", + "futures-timer", "log", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "sp-core", "sp-inherents", "sp-runtime", @@ -8751,10 +9387,10 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "async-trait", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "sp-api", "sp-application-crypto", @@ -8769,11 +9405,11 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "async-trait", "merlin 2.0.1", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "serde", "sp-api", @@ -8792,20 +9428,23 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", + "serde", "sp-arithmetic", "sp-runtime", + "sp-std", + "sp-timestamp", ] [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "schnorrkel 0.9.1", "sp-core", "sp-runtime", @@ -8814,8 +9453,8 @@ dependencies = [ [[package]] name = "sp-core" -version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "6.0.0" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "base58", "bitflags", @@ -8829,21 +9468,22 @@ dependencies = [ "hex", "impl-serde", "lazy_static", - "libsecp256k1 0.6.0", + "libsecp256k1 0.7.0", "log", "merlin 2.0.1", "num-traits", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "parity-util-mem", - "parking_lot 0.11.2", + "parking_lot 0.12.0", "primitive-types", "rand 0.7.3", "regex", "scale-info", "schnorrkel 0.9.1", + "secp256k1", "secrecy", "serde", - "sha2 0.9.9", + "sp-core-hashing", "sp-debug-derive", "sp-externalities", "sp-runtime-interface", @@ -8853,25 +9493,48 @@ dependencies = [ "substrate-bip39", "thiserror", "tiny-bip39", - "tiny-keccak", - "twox-hash", "wasmi", "zeroize", ] +[[package]] +name = "sp-core-hashing" +version = "4.0.0" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" +dependencies = [ + "blake2", + "byteorder", + "digest 0.10.3", + "sha2 0.10.2", + "sha3 0.10.1", + "sp-std", + "twox-hash", +] + +[[package]] +name = "sp-core-hashing-proc-macro" +version = "5.0.0" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" +dependencies = [ + "proc-macro2", + "quote", + "sp-core-hashing", + "syn", +] + [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "kvdb", - "parking_lot 0.11.2", + "parking_lot 0.12.0", ] [[package]] name = "sp-debug-derive" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "4.0.0" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "proc-macro2", "quote", @@ -8880,11 +9543,11 @@ dependencies = [ [[package]] name = "sp-externalities" -version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "0.12.0" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "environmental", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "sp-std", "sp-storage", ] @@ -8892,11 +9555,11 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "finality-grandpa", "log", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "serde", "sp-api", @@ -8910,11 +9573,11 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "async-trait", "impl-trait-for-tuples", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "sp-core", "sp-runtime", "sp-std", @@ -8923,15 +9586,16 @@ dependencies = [ [[package]] name = "sp-io" -version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "6.0.0" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "futures 0.3.21", "hash-db", - "libsecp256k1 0.6.0", + "libsecp256k1 0.7.0", "log", - "parity-scale-codec 2.3.1", - "parking_lot 0.11.2", + "parity-scale-codec 3.1.2", + "parking_lot 0.12.0", + "secp256k1", "sp-core", "sp-externalities", "sp-keystore", @@ -8947,8 +9611,8 @@ dependencies = [ [[package]] name = "sp-keyring" -version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "6.0.0" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "lazy_static", "sp-core", @@ -8958,59 +9622,48 @@ dependencies = [ [[package]] name = "sp-keystore" -version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "0.12.0" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "async-trait", - "derive_more", "futures 0.3.21", "merlin 2.0.1", - "parity-scale-codec 2.3.1", - "parking_lot 0.11.2", + "parity-scale-codec 3.1.2", + "parking_lot 0.12.0", "schnorrkel 0.9.1", "serde", "sp-core", "sp-externalities", + "thiserror", ] [[package]] name = "sp-maybe-compressed-blob" -version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "4.1.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ + "thiserror", "zstd", ] [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "serde", "sp-arithmetic", "sp-core", - "sp-npos-elections-solution-type", "sp-runtime", "sp-std", ] -[[package]] -name = "sp-npos-elections-solution-type" -version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" -dependencies = [ - "proc-macro-crate 1.1.3", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "sp-api", "sp-core", @@ -9019,16 +9672,18 @@ dependencies = [ [[package]] name = "sp-panic-handler" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "4.0.0" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "backtrace", + "lazy_static", + "regex", ] [[package]] name = "sp-rpc" -version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "6.0.0" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "rustc-hash", "serde", @@ -9037,14 +9692,14 @@ dependencies = [ [[package]] name = "sp-runtime" -version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "6.0.0" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "either", "hash256-std-hasher", "impl-trait-for-tuples", "log", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "parity-util-mem", "paste", "rand 0.7.3", @@ -9059,11 +9714,11 @@ dependencies = [ [[package]] name = "sp-runtime-interface" -version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "6.0.0" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "impl-trait-for-tuples", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "primitive-types", "sp-externalities", "sp-runtime-interface-proc-macro", @@ -9076,8 +9731,8 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" -version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "5.0.0" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "Inflector", "proc-macro-crate 1.1.3", @@ -9089,10 +9744,10 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "log", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "sp-core", "sp-io", "sp-std", @@ -9102,8 +9757,8 @@ dependencies = [ [[package]] name = "sp-serializer" -version = "3.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "4.0.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "serde", "serde_json", @@ -9112,9 +9767,9 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "sp-api", "sp-core", @@ -9126,9 +9781,9 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "sp-runtime", "sp-std", @@ -9136,14 +9791,14 @@ dependencies = [ [[package]] name = "sp-state-machine" -version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "0.12.0" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "hash-db", "log", "num-traits", - "parity-scale-codec 2.3.1", - "parking_lot 0.11.2", + "parity-scale-codec 3.1.2", + "parking_lot 0.12.0", "rand 0.7.3", "smallvec", "sp-core", @@ -9153,22 +9808,21 @@ dependencies = [ "sp-trie", "thiserror", "tracing", - "trie-db", - "trie-root", + "trie-root 0.17.0", ] [[package]] name = "sp-std" -version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "4.0.0" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" [[package]] name = "sp-storage" -version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "6.0.0" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "impl-serde", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "ref-cast", "serde", "sp-debug-derive", @@ -9178,7 +9832,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "log", "sp-core", @@ -9191,12 +9845,12 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "async-trait", - "futures-timer 3.0.2", + "futures-timer", "log", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "sp-api", "sp-inherents", "sp-runtime", @@ -9206,10 +9860,10 @@ dependencies = [ [[package]] name = "sp-tracing" -version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "5.0.0" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "sp-std", "tracing", "tracing-core", @@ -9219,7 +9873,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "sp-api", "sp-runtime", @@ -9228,11 +9882,11 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "async-trait", "log", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "sp-core", "sp-inherents", @@ -9243,29 +9897,31 @@ dependencies = [ [[package]] name = "sp-trie" -version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "6.0.0" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "hash-db", "memory-db", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "scale-info", "sp-core", "sp-std", + "thiserror", "trie-db", - "trie-root", + "trie-root 0.17.0", ] [[package]] name = "sp-version" -version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "5.0.0" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "impl-serde", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "parity-wasm 0.42.2", "scale-info", "serde", + "sp-core-hashing-proc-macro", "sp-runtime", "sp-std", "sp-version-proc-macro", @@ -9275,9 +9931,9 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "proc-macro2", "quote", "syn", @@ -9285,13 +9941,15 @@ dependencies = [ [[package]] name = "sp-wasm-interface" -version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "6.0.0" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "impl-trait-for-tuples", - "parity-scale-codec 2.3.1", + "log", + "parity-scale-codec 3.1.2", "sp-std", "wasmi", + "wasmtime", ] [[package]] @@ -9302,9 +9960,9 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "ss58-registry" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b84a70894df7a73666e0694f44b41a9571625e9546fb58a0818a565d2c7e084" +checksum = "ceb8b72a924ccfe7882d0e26144c114503760a4d1248bb5cd06c8ab2d55404cc" dependencies = [ "Inflector", "num-format", @@ -9368,52 +10026,29 @@ dependencies = [ [[package]] name = "strsim" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" - -[[package]] -name = "structopt" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6b5c64445ba8094a6ab0c3cd2ad323e07171012d9c98b0b15651daf1787a10" -dependencies = [ - "clap", - "lazy_static", - "structopt-derive", -] - -[[package]] -name = "structopt-derive" -version = "0.4.18" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" -dependencies = [ - "heck 0.3.3", - "proc-macro-error", - "proc-macro2", - "quote", - "syn", -] +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "strum" -version = "0.20.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7318c509b5ba57f18533982607f24070a55d353e90d4cae30c467cdb2ad5ac5c" +checksum = "cae14b91c7d11c9a851d3fbc80a963198998c2a64eec840477fa92d8ce9b70bb" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.20.1" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee8bc6b87a5112aeeab1f4a9f7ab634fe6cbefc4850006df31267f4cfb9e3149" +checksum = "5bb0dc7ee9c15cea6199cde9a127fa16a4c5819af85395457ad72d68edc85a38" dependencies = [ "heck 0.3.3", "proc-macro2", "quote", + "rustversion", "syn", ] @@ -9433,7 +10068,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -9441,7 +10076,7 @@ dependencies = [ "jsonrpc-core-client", "jsonrpc-derive", "log", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "sc-client-api", "sc-rpc-api", "sc-transaction-pool-api", @@ -9454,32 +10089,30 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" -version = "0.9.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +version = "0.10.0-dev" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ - "async-std", - "derive_more", "futures-util", "hyper", "log", "prometheus", + "thiserror", "tokio", ] [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "async-trait", "futures 0.3.21", "hex", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "sc-client-api", "sc-client-db", "sc-consensus", "sc-executor", - "sc-light", "sc-offchain", "sc-service", "serde", @@ -9496,8 +10129,9 @@ dependencies = [ [[package]] name = "substrate-test-runtime" version = "2.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ + "beefy-primitives", "cfg-if 1.0.0", "frame-support", "frame-system", @@ -9506,7 +10140,7 @@ dependencies = [ "memory-db", "pallet-babe", "pallet-timestamp", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "parity-util-mem", "sc-service", "scale-info", @@ -9531,21 +10165,20 @@ dependencies = [ "sp-transaction-pool", "sp-trie", "sp-version", - "substrate-wasm-builder 5.0.0-dev", + "substrate-wasm-builder", "trie-db", ] [[package]] name = "substrate-test-runtime-client" version = "2.0.0" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "futures 0.3.21", - "parity-scale-codec 2.3.1", + "parity-scale-codec 3.1.2", "sc-block-builder", "sc-client-api", "sc-consensus", - "sc-light", "sp-api", "sp-blockchain", "sp-consensus", @@ -9558,7 +10191,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "futures 0.3.21", "substrate-test-utils-derive", @@ -9568,7 +10201,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -9576,31 +10209,16 @@ dependencies = [ "syn", ] -[[package]] -name = "substrate-wasm-builder" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93a3d51ad6abbc408b03ea962062bfcc959b438a318d7d4bedd181e1effd0610" -dependencies = [ - "ansi_term", - "atty", - "build-helper", - "cargo_metadata 0.12.3", - "tempfile", - "toml", - "walkdir", - "wasm-gc-api", -] - [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-develop#c430d99d1c8fb601e3e0838821ad19c71b2402c6" +source = "git+https://github.com/PolymathNetwork/substrate?branch=polymesh-monthly-2022-05#b945faee0e9d86916cc5799b3c377905e17379ab" dependencies = [ "ansi_term", "build-helper", - "cargo_metadata 0.13.1", + "cargo_metadata", "sp-maybe-compressed-blob", + "strum", "tempfile", "toml", "walkdir", @@ -9615,9 +10233,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.91" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b683b2b825c8eef438b77c36a06dc262294da3d5a5813fac20da149241dcd44d" +checksum = "a07e33e919ebcd69113d5be0e4d70c5707004ff45188910106854f38b960df4a" dependencies = [ "proc-macro2", "quote", @@ -9636,6 +10254,27 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "system-configuration" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75182f12f490e953596550b65ee31bda7c8e043d9386174b353bda50838c3fd" +dependencies = [ + "bitflags", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "tap" version = "1.0.1" @@ -9657,7 +10296,7 @@ dependencies = [ "cfg-if 1.0.0", "fastrand", "libc", - "redox_syscall", + "redox_syscall 0.2.13", "remove_dir_all", "winapi 0.3.9", ] @@ -9673,6 +10312,17 @@ dependencies = [ "utf-8", ] +[[package]] +name = "term" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd106a334b7657c10b7c540a0106114feadeb4dc314513e97df481d5d966f42" +dependencies = [ + "byteorder", + "dirs", + "winapi 0.3.9", +] + [[package]] name = "termcolor" version = "1.1.3" @@ -9691,6 +10341,12 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "textwrap" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" + [[package]] name = "thin-slice" version = "0.1.1" @@ -9699,24 +10355,30 @@ checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" [[package]] name = "thiserror" -version = "1.0.30" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" +checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.30" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" +checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" dependencies = [ "proc-macro2", "quote", "syn", ] +[[package]] +name = "thousands" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bf63baf9f5039dadc247375c29eb13706706cfde997d0330d05aa63a77d8820" + [[package]] name = "thread_local" version = "1.1.4" @@ -9735,6 +10397,17 @@ dependencies = [ "num_cpus", ] +[[package]] +name = "tikv-jemalloc-sys" +version = "0.4.3+5.2.1-patched.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1792ccb507d955b46af42c123ea8863668fae24d03721e40cad6a41773dbb49" +dependencies = [ + "cc", + "fs_extra", + "libc", +] + [[package]] name = "time" version = "0.1.44" @@ -9786,9 +10459,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ "tinyvec_macros", ] @@ -9801,19 +10474,20 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.17.0" +version = "1.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee" +checksum = "4903bf0427cf68dddd5aa6a93220756f8be0c34fcfa9f5e6191e103e15a31395" dependencies = [ "bytes 1.1.0", "libc", "memchr", - "mio 0.8.2", + "mio 0.8.3", "num_cpus", "once_cell", - "pin-project-lite 0.2.8", + "parking_lot 0.12.0", + "pin-project-lite 0.2.9", "signal-hook-registry", - "socket2 0.4.4", + "socket2", "tokio-macros", "winapi 0.3.9", ] @@ -9835,9 +10509,9 @@ version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6" dependencies = [ - "rustls", + "rustls 0.19.1", "tokio", - "webpki", + "webpki 0.21.4", ] [[package]] @@ -9847,22 +10521,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50145484efff8818b5ccd256697f36863f587da82cf8b409c53adf1e840798e3" dependencies = [ "futures-core", - "pin-project-lite 0.2.8", + "pin-project-lite 0.2.9", "tokio", ] [[package]] name = "tokio-util" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" dependencies = [ "bytes 1.1.0", "futures-core", "futures-sink", "log", - "pin-project-lite 0.2.8", + "pin-project-lite 0.2.9", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f988a1a1adc2fb21f9c12aa96441da33a1728193ae0b95d2be22dbd17fcb4e5c" +dependencies = [ + "bytes 1.1.0", + "futures-core", + "futures-sink", + "pin-project-lite 0.2.9", "tokio", + "tracing", ] [[package]] @@ -9887,16 +10575,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d0ecdcb44a79f0fe9844f0c4f33a342cbcbb5117de8001e6ba0dc2351327d09" dependencies = [ "cfg-if 1.0.0", - "pin-project-lite 0.2.8", + "pin-project-lite 0.2.9", "tracing-attributes", "tracing-core", ] [[package]] name = "tracing-attributes" -version = "0.1.20" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e65ce065b4b5c53e73bb28912318cb8c9e9ad3921f1d669eb0e68b4c8143a2b" +checksum = "cc6b8ad3567499f98a1db7a752b07a7c8c7c7c34c332ec00effb2b0027974b7c" dependencies = [ "proc-macro2", "quote", @@ -9925,12 +10613,14 @@ dependencies = [ [[package]] name = "tracing-log" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6923477a48e41c1951f1999ef8bb5a3023eb723ceadafe78ffb65dc366761e3" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" dependencies = [ + "ahash", "lazy_static", "log", + "lru", "tracing-core", ] @@ -9969,12 +10659,12 @@ dependencies = [ [[package]] name = "trie-db" -version = "0.22.6" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eac131e334e81b6b3be07399482042838adcd7957aa0010231d0813e39e02fa" +checksum = "d32d034c0d3db64b43c31de38e945f15b40cd4ca6d2dcfc26d4798ce8de4ab83" dependencies = [ "hash-db", - "hashbrown", + "hashbrown 0.12.1", "log", "rustc-hex", "smallvec", @@ -9989,11 +10679,20 @@ dependencies = [ "hash-db", ] +[[package]] +name = "trie-root" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a36c5ca3911ed3c9a5416ee6c679042064b93fc637ded67e25f92e68d783891" +dependencies = [ + "hash-db", +] + [[package]] name = "trust-dns-proto" -version = "0.20.4" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca94d4e9feb6a181c690c4040d7a24ef34018d8313ac5044a61d21222ae24e31" +checksum = "9c31f240f59877c3d4bb3b3ea0ec5a6a0cff07323580ff8c7a605cd7d08b255d" dependencies = [ "async-trait", "cfg-if 1.0.0", @@ -10015,9 +10714,9 @@ dependencies = [ [[package]] name = "trust-dns-resolver" -version = "0.20.4" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecae383baad9995efaa34ce8e57d12c3f305e545887472a492b838f4b5cfb77a" +checksum = "e4ba72c2ea84515690c9fcef4c6c660bb9df3036ed1051686de84605b74fd558" dependencies = [ "cfg-if 1.0.0", "futures-util", @@ -10025,7 +10724,7 @@ dependencies = [ "lazy_static", "log", "lru-cache", - "parking_lot 0.11.2", + "parking_lot 0.12.0", "resolv-conf", "smallvec", "thiserror", @@ -10046,11 +10745,12 @@ checksum = "5e66dcbec4290c69dd03c57e76c2469ea5c7ce109c6dd4351c13055cf71ea055" [[package]] name = "twox-hash" -version = "1.6.2" +version = "1.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee73e6e4924fe940354b8d4d98cad5231175d615cd855b758adc658c0aac6a0" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ "cfg-if 1.0.0", + "digest 0.10.3", "rand 0.8.5", "static_assertions", ] @@ -10110,9 +10810,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" [[package]] name = "unicode-normalization" @@ -10137,9 +10837,9 @@ checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" [[package]] name = "unicode-xid" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04" [[package]] name = "universal-hash" @@ -10224,9 +10924,9 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "value-bag" -version = "1.0.0-alpha.8" +version = "1.0.0-alpha.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79923f7731dc61ebfba3633098bf3ac533bbd35ccd8c57e7088d9a5eebe0263f" +checksum = "2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55" dependencies = [ "ctor", "version_check", @@ -10238,12 +10938,6 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" -[[package]] -name = "vec_map" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" - [[package]] name = "vergen" version = "3.2.0" @@ -10412,6 +11106,15 @@ dependencies = [ "rustc-demangle", ] +[[package]] +name = "wasm-instrument" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "962e5b0401bbb6c887f54e69b8c496ea36f704df65db73e81fd5ff8dc3e63a9f" +dependencies = [ + "parity-wasm 0.42.2", +] + [[package]] name = "wasm-timer" version = "0.2.5" @@ -10455,31 +11158,30 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.80.2" +version = "0.83.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "449167e2832691a1bff24cde28d2804e90e09586a448c8e76984792c44334a6b" +checksum = "718ed7c55c2add6548cca3ddd6383d738cd73b892df400e96b9aa876f0141d7a" [[package]] name = "wasmtime" -version = "0.30.0" +version = "0.35.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899b1e5261e3d3420860dacfb952871ace9d7ba9f953b314f67aaf9f8e2a4d89" +checksum = "21ffb4705016d5ca91e18a72ed6822dab50e6d5ddd7045461b17ef19071cdef1" dependencies = [ "anyhow", "backtrace", "bincode", "cfg-if 1.0.0", - "cpp_demangle", "indexmap", "lazy_static", "libc", "log", - "object 0.26.2", + "object 0.27.1", + "once_cell", "paste", "psm", "rayon", "region", - "rustc-demangle", "serde", "target-lexicon", "wasmparser", @@ -10493,18 +11195,17 @@ dependencies = [ [[package]] name = "wasmtime-cache" -version = "0.30.0" +version = "0.35.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2493b81d7a9935f7af15e06beec806f256bc974a90a843685f3d61f2fc97058" +checksum = "85c6ab24291fa7cb3a181f5669f6c72599b7ef781669759b45c7828c5999d0c0" dependencies = [ "anyhow", "base64 0.13.0", "bincode", "directories-next", - "errno", "file-per-thread-logger", - "libc", "log", + "rustix", "serde", "sha2 0.9.9", "toml", @@ -10514,9 +11215,9 @@ dependencies = [ [[package]] name = "wasmtime-cranelift" -version = "0.30.0" +version = "0.35.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99706bacdf5143f7f967d417f0437cce83a724cf4518cb1a3ff40e519d793021" +checksum = "f04c810078a491b7bc4866ebe045f714d2b95e6b539e1f64009a4a7606be11de" dependencies = [ "anyhow", "cranelift-codegen", @@ -10524,9 +11225,10 @@ dependencies = [ "cranelift-frontend", "cranelift-native", "cranelift-wasm", - "gimli 0.25.0", + "gimli", + "log", "more-asserts", - "object 0.26.2", + "object 0.27.1", "target-lexicon", "thiserror", "wasmparser", @@ -10535,18 +11237,17 @@ dependencies = [ [[package]] name = "wasmtime-environ" -version = "0.30.0" +version = "0.35.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac42cb562a2f98163857605f02581d719a410c5abe93606128c59a10e84de85b" +checksum = "61448266ea164b1ac406363cdcfac81c7c44db4d94c7a81c8620ac6c5c6cdf59" dependencies = [ "anyhow", - "cfg-if 1.0.0", "cranelift-entity", - "gimli 0.25.0", + "gimli", "indexmap", "log", "more-asserts", - "object 0.26.2", + "object 0.27.1", "serde", "target-lexicon", "thiserror", @@ -10556,41 +11257,52 @@ dependencies = [ [[package]] name = "wasmtime-jit" -version = "0.30.0" +version = "0.35.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24f46dd757225f29a419be415ea6fb8558df9b0194f07e3a6a9c99d0e14dd534" +checksum = "156b4623c6b0d4b8c24afb846c20525922f538ef464cc024abab7ea8de2109a2" dependencies = [ - "addr2line 0.16.0", + "addr2line", "anyhow", "bincode", "cfg-if 1.0.0", - "gimli 0.25.0", - "libc", + "cpp_demangle", + "gimli", "log", - "more-asserts", - "object 0.26.2", + "object 0.27.1", "region", + "rustc-demangle", + "rustix", "serde", "target-lexicon", "thiserror", - "wasmparser", "wasmtime-environ", + "wasmtime-jit-debug", "wasmtime-runtime", "winapi 0.3.9", ] +[[package]] +name = "wasmtime-jit-debug" +version = "0.35.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5dc31f811760a6c76b2672c404866fd19b75e5fb3b0075a3e377a6846490654" +dependencies = [ + "lazy_static", + "object 0.27.1", + "rustix", +] + [[package]] name = "wasmtime-runtime" -version = "0.30.0" +version = "0.35.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0122215a44923f395487048cb0a1d60b5b32c73aab15cf9364b798dbaff0996f" +checksum = "f907beaff69d4d920fa4688411ee4cc75c0f01859e424677f9e426e2ef749864" dependencies = [ "anyhow", "backtrace", "cc", "cfg-if 1.0.0", "indexmap", - "lazy_static", "libc", "log", "mach", @@ -10598,16 +11310,18 @@ dependencies = [ "more-asserts", "rand 0.8.5", "region", + "rustix", "thiserror", "wasmtime-environ", + "wasmtime-jit-debug", "winapi 0.3.9", ] [[package]] name = "wasmtime-types" -version = "0.30.0" +version = "0.35.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9b01caf8a204ef634ebac99700e77ba716d3ebbb68a1abbc2ceb6b16dbec9e4" +checksum = "514ef0e5fd197b9609dc9eb74beba0c84d5a12b2417cbae55534633329ba4852" dependencies = [ "cranelift-entity", "serde", @@ -10655,13 +11369,23 @@ dependencies = [ "untrusted", ] +[[package]] +name = "webpki" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "webpki-roots" -version = "0.21.1" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aabe153544e473b775453675851ecc86863d2a81d786d741f6b76778f2a48940" +checksum = "44d8de8415c823c8abd270ad483c6feeac771fad964890779f9a8cb24fbbc1bf" dependencies = [ - "webpki", + "webpki 0.22.0", ] [[package]] @@ -10686,9 +11410,9 @@ dependencies = [ [[package]] name = "widestring" -version = "0.4.3" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c" +checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" [[package]] name = "winapi" @@ -10733,54 +11457,97 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac7fef12f4b59cd0a29339406cc9203ab44e440ddff6b3f5a41455349fa9cf3" +dependencies = [ + "windows_aarch64_msvc 0.29.0", + "windows_i686_gnu 0.29.0", + "windows_i686_msvc 0.29.0", + "windows_x86_64_gnu 0.29.0", + "windows_x86_64_msvc 0.29.0", +] + [[package]] name = "windows-sys" -version = "0.34.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5acdd78cb4ba54c0045ac14f62d8f94a03d10047904ae2a40afa1e99d8f70825" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" dependencies = [ - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_msvc", + "windows_aarch64_msvc 0.36.1", + "windows_i686_gnu 0.36.1", + "windows_i686_msvc 0.36.1", + "windows_x86_64_gnu 0.36.1", + "windows_x86_64_msvc 0.36.1", ] [[package]] name = "windows_aarch64_msvc" -version = "0.34.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881d" +checksum = "c3d027175d00b01e0cbeb97d6ab6ebe03b12330a35786cbaca5252b1c4bf5d9b" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" [[package]] name = "windows_i686_gnu" -version = "0.34.0" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8793f59f7b8e8b01eda1a652b2697d87b93097198ae85f823b969ca5b89bba58" + +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" [[package]] name = "windows_i686_msvc" -version = "0.34.0" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8602f6c418b67024be2996c512f5f995de3ba417f4c75af68401ab8756796ae4" + +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" [[package]] name = "windows_x86_64_gnu" -version = "0.34.0" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3d615f419543e0bd7d2b3323af0d86ff19cbc4f816e6453f36a2c2ce889c354" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" [[package]] name = "windows_x86_64_msvc" -version = "0.34.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9" +checksum = "11d95421d9ed3672c280884da53201a5c46b7b2765ca6faf34b0d71cf34a3561" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" [[package]] name = "winreg" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9" +checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" dependencies = [ "winapi 0.3.9", ] @@ -10797,9 +11564,12 @@ dependencies = [ [[package]] name = "wyz" -version = "0.2.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" +checksum = "30b31594f29d27036c383b53b59ed3476874d518f0efb151b27a4c275141390e" +dependencies = [ + "tap", +] [[package]] name = "x25519-dalek" @@ -10814,23 +11584,23 @@ dependencies = [ [[package]] name = "yamux" -version = "0.9.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7d9028f208dd5e63c614be69f115c1b53cacc1111437d4c765185856666c107" +checksum = "0c0608f53c1dc0bad505d03a34bbd49fbf2ad7b51eb036123e896365532745a1" dependencies = [ "futures 0.3.21", "log", "nohash-hasher", - "parking_lot 0.11.2", + "parking_lot 0.12.0", "rand 0.8.5", "static_assertions", ] [[package]] name = "zeroize" -version = "1.5.4" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb5728b8afd3f280a869ce1d4c554ffaed35f45c231fc41bfbd0381bef50317" +checksum = "d68d9dcec5f9b43a30d38c49f91dfedfaac384cb8f085faca366c26207dd1619" dependencies = [ "zeroize_derive", ] @@ -10849,18 +11619,18 @@ dependencies = [ [[package]] name = "zstd" -version = "0.9.2+zstd.1.5.1" +version = "0.10.2+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2390ea1bf6c038c39674f22d95f0564725fc06034a47129179810b2fc58caa54" +checksum = "5f4a6bd64f22b5e3e94b4e238669ff9f10815c27a5180108b849d24174a83847" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "4.1.3+zstd.1.5.1" +version = "4.1.6+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e99d81b99fb3c2c2c794e3fe56c305c63d5173a16a46b5850b07c935ffc7db79" +checksum = "94b61c51bb270702d6167b8ce67340d2754b088d0c091b06e593aa772c3ee9bb" dependencies = [ "libc", "zstd-sys", @@ -10868,9 +11638,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "1.6.2+zstd.1.5.1" +version = "1.6.3+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2daf2f248d9ea44454bfcb2516534e8b8ad2fc91bf818a1885495fc42bc8ac9f" +checksum = "fc49afa5c8d634e75761feda8c592051e7eeb4683ba827211eb0d731d3402ea8" dependencies = [ "cc", "libc", diff --git a/Cargo.toml b/Cargo.toml index 0d40936f6e..15a533b46e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ name = "polymesh" version = "5.0.0" authors = ["Polymath"] build = "build.rs" -edition = "2018" +edition = "2021" [[bin]] name = "polymesh" @@ -11,99 +11,99 @@ path = "src/main.rs" # Path build to use our Substrate version from github, `branch = "develop"`. [patch.crates-io] -frame-benchmarking = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -frame-benchmarking-cli = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -frame-executive = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -frame-support = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -frame-system = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -frame-system-benchmarking = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -frame-system-rpc-runtime-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -pallet-authority-discovery = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -pallet-authorship = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -pallet-babe = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -pallet-balances = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -pallet-contracts = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -pallet-contracts-primitives = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -pallet-contracts-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -pallet-contracts-rpc-runtime-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -pallet-grandpa = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -pallet-im-online = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -pallet-indices = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -pallet-offences = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -pallet-randomness-collective-flip = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -pallet-scheduler = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -pallet-session = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -pallet-staking-reward-curve = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -pallet-timestamp = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -pallet-treasury = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-authority-discovery = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-basic-authorship = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-block-builder = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-chain-spec = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-cli = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-client-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-client-db = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-consensus = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-consensus-babe = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-consensus-babe-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-consensus-epochs = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-consensus-slots = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-consensus-uncles = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-executor = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-finality-grandpa = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-finality-grandpa-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-keystore = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-light = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-network = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-rpc-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-service = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-telemetry = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-transaction-pool = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-transaction-pool-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sc-sync-state-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-application-crypto = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-arithmetic = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-authority-discovery = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-authorship = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-block-builder = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-blockchain = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-consensus = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-consensus-babe = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-consensus-slots = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-core = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-externalities = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-finality-grandpa = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-inherents = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-io = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-keystore = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-keyring = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-npos-elections = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-offchain = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-runtime = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-runtime-interface = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-serializer = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-session = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-staking = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-state-machine = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-std = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-storage = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-timestamp = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-tracing = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-transaction-pool = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-transaction-storage-proof = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-trie = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -sp-version = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -substrate-frame-rpc-system = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -substrate-prometheus-endpoint = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -substrate-test-runtime-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -substrate-test-utils = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -substrate-test-utils-derive = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } -substrate-wasm-builder = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +frame-benchmarking = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +frame-benchmarking-cli = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +frame-executive = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +frame-support = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +frame-election-provider-support = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +frame-system = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +frame-system-benchmarking = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +frame-system-rpc-runtime-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +pallet-authority-discovery = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +pallet-authorship = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +pallet-babe = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +pallet-balances = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +pallet-contracts = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +pallet-contracts-primitives = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +pallet-contracts-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +pallet-contracts-rpc-runtime-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +pallet-grandpa = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +pallet-im-online = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +pallet-indices = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +pallet-offences = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +pallet-preimage = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +pallet-randomness-collective-flip = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +pallet-scheduler = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +pallet-session = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +pallet-staking-reward-curve = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +pallet-timestamp = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +pallet-treasury = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-authority-discovery = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-basic-authorship = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-block-builder = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-chain-spec = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-cli = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-client-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-client-db = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-consensus = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-consensus-babe = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-consensus-babe-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-consensus-epochs = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-consensus-slots = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-consensus-uncles = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-executor = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-finality-grandpa = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-finality-grandpa-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-keystore = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-network = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-rpc-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-service = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-telemetry = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-transaction-pool = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-transaction-pool-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sc-sync-state-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-api = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-application-crypto = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-arithmetic = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-authority-discovery = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-authorship = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-block-builder = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-blockchain = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-consensus = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-consensus-babe = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-consensus-slots = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-core = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-externalities = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-finality-grandpa = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-inherents = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-io = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-keystore = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-keyring = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-npos-elections = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-offchain = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-rpc = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-runtime = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-runtime-interface = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-serializer = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-session = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-staking = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-state-machine = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-std = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-storage = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-timestamp = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-tracing = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-transaction-pool = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-transaction-storage-proof = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-trie = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +sp-version = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +substrate-frame-rpc-system = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +substrate-prometheus-endpoint = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +substrate-test-runtime-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +substrate-test-utils = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +substrate-test-utils-derive = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } +substrate-wasm-builder = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } -blake2 = { git = "https://github.com/PolymathNetwork/hashes", branch = "master" } schnorrkel = { git = "https://github.com/PolymathNetwork/schnorrkel", branch = "rebase-head" } curve25519-dalek = { git = "https://github.com/PolymathNetwork/curve25519-dalek", branch = "master" } @@ -203,11 +203,11 @@ jsonrpc-core = { version = "18.0", features = ["arbitrary_precision"] } log = "0.4.8" serde = { version = "1.0.104", default-features = false } serde_json = { version = "1.0", features = ["arbitrary_precision"] } -structopt = "0.3.15" +clap = { version = "3.1.6", features = ["derive"] } rustc-hex = "2.1.0" # Substrate -codec = { version = "2.0.0", package = "parity-scale-codec" } +codec = { version = "3.0.0", package = "parity-scale-codec" } frame-support = "4.0.0-dev" frame-system = "4.0.0-dev" frame-system-rpc-runtime-api = "4.0.0-dev" @@ -217,7 +217,7 @@ pallet-babe = "4.0.0-dev" pallet-im-online = "4.0.0-dev" pallet-indices = "4.0.0-dev" pallet-session = "4.0.0-dev" -prometheus-endpoint = { package = "substrate-prometheus-endpoint", version = "0.9.0" } +prometheus-endpoint = { package = "substrate-prometheus-endpoint", version = "0.10.0-dev" } sc-authority-discovery = "0.10.0-dev" sc-basic-authorship = "0.10.0-dev" sc-chain-spec = "4.0.0-dev" @@ -229,7 +229,6 @@ sc-consensus-babe = "0.10.0-dev" sc-consensus-slots = "0.10.0-dev" sc-consensus-uncles = "0.10.0-dev" sc-executor = { version = "0.10.0-dev", features = ["wasmtime"] } -sc-light = "4.0.0-dev" sc-network = "0.10.0-dev" sc-rpc = "4.0.0-dev" sc-service = { version = "0.10.0-dev", features = ["wasmtime"] } @@ -244,11 +243,12 @@ sp-blockchain = "4.0.0-dev" sp-consensus = "0.10.0-dev" sp-consensus-babe = "0.10.0-dev" sp-consensus-slots = "0.10.0-dev" -sp-core = "4.0.0-dev" +sp-keyring = { version = "6.0.0" } +sp-core = "6.0.0" sp-inherents = "4.0.0-dev" sp-transaction-storage-proof = "4.0.0-dev" sp-offchain = "4.0.0-dev" -sp-runtime = "4.0.0-dev" +sp-runtime = "6.0.0" sp-timestamp = "4.0.0-dev" sp-session = "4.0.0-dev" sp-transaction-pool = { version = "4.0.0-dev" } diff --git a/README.md b/README.md index f6f86f0d08..247311e7aa 100644 --- a/README.md +++ b/README.md @@ -192,7 +192,7 @@ extrinsic to be benchmarked, for example: ```bash cargo run --release --features runtime-benchmarks -- \ - benchmark -p="*" -e="*" + benchmark pallet -p="*" -e="*" ``` Note that the CLI binary should be built in release mode and that the feature flag diff --git a/bin/bench/Cargo.toml b/bin/bench/Cargo.toml index 4d6600f313..225d760e53 100644 --- a/bin/bench/Cargo.toml +++ b/bin/bench/Cargo.toml @@ -4,7 +4,7 @@ name = "node-bench" version = "0.9.0" authors = ["Parity Technologies "] description = "Substrate node integration benchmarks." -edition = "2018" +edition = "2021" license = "GPL-3.0-or-later WITH Classpath-exception-2.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -15,30 +15,30 @@ node-runtime = { package = "polymesh-runtime-testnet", path = "../../pallets/run node-testing = { path = "../testing" } sc-cli = { version = "0.10.0-dev", features = ["wasmtime"] } sc-client-api = { version = "4.0.0-dev" } -sp-runtime = { version = "4.0.0-dev" } -sp-state-machine = { version = "0.10.0-dev" } +sp-runtime = { version = "6.0.0" } +sp-state-machine = { version = "0.12.0" } log = "0.4.8" serde = "1.0.101" serde_json = "1.0.41" -structopt = "0.3" +clap = { version = "3.1.6", features = ["derive"] } derive_more = "0.99.2" -kvdb = "0.10" -kvdb-rocksdb = "0.14.0" -sp-trie = { version = "4.0.0-dev" } -sp-core = { version = "4.0.0-dev" } +kvdb = "0.11" +kvdb-rocksdb = "0.15.0" +sp-trie = { version = "6.0.0" } +sp-core = { version = "6.0.0" } sp-consensus = { version = "0.10.0-dev" } sp-transaction-pool = { version = "4.0.0-dev" } sc-basic-authorship = { version = "0.10.0-dev" } sp-inherents = { version = "4.0.0-dev" } sp-timestamp = { version = "4.0.0-dev" } -sp-tracing = { version = "4.0.0-dev" } +sp-tracing = { version = "5.0.0" } hash-db = "0.15.2" tempfile = "3.1.0" fs_extra = "1" hex = "0.4.0" rand = { version = "0.7.2", features = ["small_rng"] } lazy_static = "1.4.0" -parity-util-mem = { version = "0.10.0", default-features = false, features = ["primitive-types"] } +parity-util-mem = { version = "0.11.0", default-features = false, features = ["primitive-types"] } parity-db = { version = "0.2.4" } sc-transaction-pool = { version = "4.0.0-dev" } futures = { version = "0.3.4", features = ["thread-pool"] } diff --git a/bin/bench/src/main.rs b/bin/bench/src/main.rs index 0c97c46eac..f2cbabebbc 100644 --- a/bin/bench/src/main.rs +++ b/bin/bench/src/main.rs @@ -28,7 +28,7 @@ mod tempdb; mod trie; mod txpool; -use structopt::StructOpt; +use clap::Parser; use node_testing::bench::{BlockType, DatabaseType as BenchDataBaseType, KeyTypes, Profile}; @@ -42,19 +42,19 @@ use crate::{ txpool::PoolBenchmarkDescription, }; -#[derive(Debug, StructOpt)] -#[structopt(name = "node-bench", about = "Node integration benchmarks")] +#[derive(Debug, Parser)] +#[clap(name = "node-bench", about = "Node integration benchmarks")] struct Opt { /// Show list of all available benchmarks. /// /// Will output ("name", "path"). Benchmarks can then be filtered by path. - #[structopt(short, long)] + #[clap(short, long)] list: bool, /// Machine readable json output. /// /// This also suppresses all regular output (except to stderr) - #[structopt(short, long)] + #[clap(short, long)] json: bool, /// Filter benchmarks. @@ -63,7 +63,7 @@ struct Opt { filter: Option, /// Number of transactions for block import with `custom` size. - #[structopt(long)] + #[clap(long)] transactions: Option, /// Mode @@ -72,7 +72,7 @@ struct Opt { /// /// "profile" mode adds pauses between measurable runs, /// so that actual interval can be selected in the profiler of choice. - #[structopt(short, long, default_value = "regular")] + #[clap(short, long, default_value = "regular")] mode: BenchmarkMode, } diff --git a/bin/crypto-cli/Cargo.toml b/bin/crypto-cli/Cargo.toml index 8258895f14..e45057d3be 100644 --- a/bin/crypto-cli/Cargo.toml +++ b/bin/crypto-cli/Cargo.toml @@ -3,10 +3,10 @@ name = "crypto-cli" version = "1.0.0" authors = ["Polymath"] description = "Test utilities for Substrate node." -edition = "2018" +edition = "2021" [dependencies] polymesh-primitives = { path = "../../primitives" } confidential_identity = { git = "https://github.com/PolymathNetwork/cryptography.git", branch = "confidential-identity-v1" } -codec = { version = "2.0.0", package = "parity-scale-codec" } +codec = { version = "3.0.0", package = "parity-scale-codec" } hex = "0.4.0" diff --git a/bin/executor/Cargo.toml b/bin/executor/Cargo.toml index 1f326a1abd..3f1e968bc7 100644 --- a/bin/executor/Cargo.toml +++ b/bin/executor/Cargo.toml @@ -3,7 +3,7 @@ name = "node-executor" version = "2.0.0" authors = ["Parity Technologies "] description = "Substrate node implementation in Rust." -edition = "2018" +edition = "2021" license = "Apache-2.0" homepage = "https://substrate.dev" repository = "https://github.com/PolymathNetwork/substrate/" @@ -12,14 +12,14 @@ repository = "https://github.com/PolymathNetwork/substrate/" targets = ["x86_64-unknown-linux-gnu"] [dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0" } +codec = { package = "parity-scale-codec", version = "3.0.0" } node-primitives = { package = "polymesh-primitives", path = "../../primitives" } node-runtime = { package = "polymesh-runtime-testnet", path = "../../pallets/runtime/testnet" } sc-executor = { version = "0.10.0-dev", features = ["wasmtime"] } -sp-core = { version = "4.0.0-dev" } -sp-io = { version = "4.0.0-dev" } -sp-state-machine = { version = "0.10.0-dev" } -sp-trie = { version = "4.0.0-dev" } +sp-core = { version = "6.0.0" } +sp-io = { version = "6.0.0" } +sp-state-machine = { version = "0.12.0" } +sp-trie = { version = "6.0.0" } trie-root = "0.16.0" frame-benchmarking = { version = "4.0.0-dev" } @@ -38,10 +38,10 @@ pallet-indices = { version = "4.0.0-dev" } pallet-session = { version = "4.0.0-dev" } pallet-timestamp = { version = "4.0.0-dev" } pallet-treasury = { version = "4.0.0-dev" } -sp-application-crypto = { version = "4.0.0-dev" } -sp-runtime = { version = "4.0.0-dev" } -sp-externalities = { version = "0.10.0-dev" } -substrate-test-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +sp-application-crypto = { version = "6.0.0" } +sp-runtime = { version = "6.0.0" } +sp-externalities = { version = "0.12.0" } +substrate-test-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } wabt = "0.10.0" [features] diff --git a/bin/executor/tests/common.rs b/bin/executor/tests/common.rs index 22a59a85c2..7429920862 100644 --- a/bin/executor/tests/common.rs +++ b/bin/executor/tests/common.rs @@ -126,10 +126,10 @@ pub fn executor_call< executor().call::(&mut t, &runtime_code, method, data, use_native, native_call) } -pub fn new_test_ext(code: &[u8], support_changes_trie: bool) -> TestExternalities { +pub fn new_test_ext(code: &[u8]) -> TestExternalities { let mut ext = TestExternalities::new_with_code( code, - node_testing::genesis::config(support_changes_trie, Some(code)) + node_testing::genesis::config(Some(code)) .build_storage() .unwrap(), ); diff --git a/bin/testing/Cargo.toml b/bin/testing/Cargo.toml index b04dd99505..393217a22f 100644 --- a/bin/testing/Cargo.toml +++ b/bin/testing/Cargo.toml @@ -4,7 +4,7 @@ name = "node-testing" version = "2.0.0" authors = ["Parity Technologies "] description = "Test utilities for Substrate node." -edition = "2018" +edition = "2021" license = "GPL-3.0-or-later WITH Classpath-exception-2.0" homepage = "https://substrate.dev" repository = "https://github.com/PolymathNetwork/substrate/" @@ -26,20 +26,20 @@ node-executor = { path = "../executor", features = ["wasmtime"] } sc-service = { version = "0.10.0-dev", features = ["test-helpers", "db", "wasmtime"] } sc-client-db = { version = "0.10.0-dev", features = ["kvdb-rocksdb", "parity-db"] } sc-client-api = { version = "4.0.0-dev" } -codec = { package = "parity-scale-codec", version = "2.0.0" } +codec = { package = "parity-scale-codec", version = "3.0.0" } #pallet-contracts = { version = "4.0.0-dev" } pallet-grandpa = { version = "4.0.0-dev" } pallet-indices = { version = "4.0.0-dev" } -sp-keyring = { version = "4.0.0-dev" } -sp-core = { version = "4.0.0-dev" } -sp-io = { version = "4.0.0-dev" } +sp-keyring = { version = "6.0.0" } +sp-core = { version = "6.0.0" } +sp-io = { version = "6.0.0" } frame-support = { version = "4.0.0-dev" } pallet-session = { version = "4.0.0-dev" } -sp-runtime = { version = "4.0.0-dev" } +sp-runtime = { version = "6.0.0" } sc-executor = { version = "0.10.0-dev", features = ["wasmtime"] } sp-consensus = { version = "0.10.0-dev" } frame-system = { version = "4.0.0-dev" } -substrate-test-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +substrate-test-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } pallet-timestamp = { version = "4.0.0-dev" } pallet-treasury = { version = "4.0.0-dev" } wabt = "0.10.0" diff --git a/bin/testing/src/client.rs b/bin/testing/src/client.rs index 51766960f1..2717436a30 100644 --- a/bin/testing/src/client.rs +++ b/bin/testing/src/client.rs @@ -42,15 +42,11 @@ pub type Transaction = sc_client_api::backend::TransactionFor Storage { - crate::genesis::config(self.support_changes_trie) - .build_storage() - .unwrap() + crate::genesis::config().build_storage().unwrap() } } diff --git a/bin/testing/src/genesis.rs b/bin/testing/src/genesis.rs index a226cbb603..dc6685fe74 100644 --- a/bin/testing/src/genesis.rs +++ b/bin/testing/src/genesis.rs @@ -30,8 +30,8 @@ use sp_runtime::{ Perbill, }; /// Create genesis runtime configuration for tests. -pub fn config(support_changes_trie: bool) -> GenesisConfig { - config_endowed(support_changes_trie, Default::default()) +pub fn config() -> GenesisConfig { + config_endowed(Default::default()) } type AccountPublic = ::Signer; @@ -51,7 +51,7 @@ where /// Create genesis runtime configuration for tests with some extra /// endowed accounts. -pub fn config_endowed(support_changes_trie: bool, extra_endowed: Vec) -> GenesisConfig { +pub fn config_endowed(extra_endowed: Vec) -> GenesisConfig { let mut endowed = vec![ (alice(), 111 * DOLLARS), (bob(), 100 * DOLLARS), @@ -69,14 +69,6 @@ pub fn config_endowed(support_changes_trie: bool, extra_endowed: Vec) GenesisConfig { frame_system: Some(SystemConfig { - changes_trie_config: if support_changes_trie { - Some(ChangesTrieConfiguration { - digest_interval: 2, - digest_levels: 2, - }) - } else { - None - }, code: node_runtime::WASM_BINARY.to_vec(), }), pallet_indices: Some(IndicesConfig { indices: vec![] }), diff --git a/migration-tests/Cargo.toml b/migration-tests/Cargo.toml index ed977ccb30..e216ffcd2d 100644 --- a/migration-tests/Cargo.toml +++ b/migration-tests/Cargo.toml @@ -2,7 +2,7 @@ name = "migration-tests" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] futures = "0.3" @@ -16,7 +16,7 @@ sp-state-machine-old = { package = "sp-state-machine", git = "https://github.com # New migration helpers remote-externalities = { path = "remote-externalities" } frame-support = { version = "4.0.0-dev" } -sp-core = { version = "4.0.0-dev" } +sp-core = { version = "6.0.0" } # Old pallets polymesh-runtime-old = { package = "polymesh-runtime-testnet", git = "https://github.com/PolymathNetwork/Polymesh", rev = "14951c75b778d5ee75c8ecdc02b70b6eb6d7b172" } diff --git a/migration-tests/remote-externalities/Cargo.toml b/migration-tests/remote-externalities/Cargo.toml index 4bfa5331ec..e768dc275e 100644 --- a/migration-tests/remote-externalities/Cargo.toml +++ b/migration-tests/remote-externalities/Cargo.toml @@ -2,7 +2,7 @@ name = "remote-externalities" version = "0.1.0" authors = ["kianenigma "] -edition = "2018" +edition = "2021" [dependencies] jsonrpc-core-client = { version = "15.1.0", features = ["http"] } @@ -16,8 +16,8 @@ log = "0.4.11" bincode = "1.3.1" tokio = "0.1.22" -sp-io = { version = "4.0.0-dev" } -sp-core = { version = "4.0.0-dev" } +sp-io = { version = "6.0.0" } +sp-core = { version = "6.0.0" } [dev-dependencies] async-std = { version = "1.6.5", features = ["attributes"] } diff --git a/node-rpc/Cargo.toml b/node-rpc/Cargo.toml index 6f96fa08b5..9e05c2b970 100644 --- a/node-rpc/Cargo.toml +++ b/node-rpc/Cargo.toml @@ -2,7 +2,7 @@ name = "polymesh-node-rpc" version = "0.1.0" authors = ["Parity Technologies "] -edition = "2018" +edition = "2021" license = "Apache-2.0" repository = "https://github.com/PolymathNetwork/substrate" @@ -19,15 +19,15 @@ node-rpc = { path = "../rpc" } jsonrpc-core = { version = "18.0.0", features = ["arbitrary_precision"] } -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false } sp-blockchain = { version = "4.0.0-dev" } -sp-runtime = { version = "4.0.0-dev" } +sp-runtime = { version = "6.0.0" } sp-api = { version = "4.0.0-dev" } sc-client-api = { version = "4.0.0-dev" } sp-consensus = { version = "0.10.0-dev" } sp-consensus-babe = { version = "0.10.0-dev" } sp-block-builder = { version = "4.0.0-dev" } -sp-keystore = { version = "0.10.0-dev" } +sp-keystore = { version = "0.12.0" } sc-rpc = { version = "4.0.0-dev" } sc-rpc-api = { version = "0.10.0-dev" } diff --git a/node-rpc/src/lib.rs b/node-rpc/src/lib.rs index b714258ba9..cdbf5f00f2 100644 --- a/node-rpc/src/lib.rs +++ b/node-rpc/src/lib.rs @@ -49,18 +49,6 @@ use sp_consensus_babe::BabeApi; use sp_keystore::SyncCryptoStorePtr; use std::sync::Arc; -/// Light client extra dependencies. -pub struct LightDeps { - /// The client instance to use. - pub client: Arc, - /// Transaction pool instance. - pub pool: Arc

, - /// Remote access to the blockchain (async). - pub remote_blockchain: Arc>, - /// Fetcher instance. - pub fetcher: Arc, -} - /// Extra dependencies for BABE. pub struct BabeDeps { /// BABE protocol config. @@ -213,7 +201,6 @@ where client.clone(), shared_authority_set, shared_epoch_changes, - deny_unsafe, )?, )); io.extend_with(StakingApi::to_delegate(Staking::new(client.clone()))); @@ -230,32 +217,3 @@ where Ok(io) } - -/// Instantiate all Light RPC extensions. -pub fn create_light(deps: LightDeps) -> jsonrpc_core::IoHandler -where - C: sp_blockchain::HeaderBackend, - C: ProvideRuntimeApi, - C: Send + Sync + 'static, - F: sc_client_api::light::Fetcher + 'static, - P: TransactionPool + 'static, - M: jsonrpc_core::Metadata + Default, - C::Api: substrate_frame_rpc_system::AccountNonceApi - + node_rpc::transaction_payment::TransactionPaymentRuntimeApi, - UE: codec::Codec + 'static, -{ - use substrate_frame_rpc_system::{LightSystem, SystemApi}; - - let LightDeps { - client, - pool, - remote_blockchain, - fetcher, - } = deps; - let mut io = jsonrpc_core::IoHandler::default(); - io.extend_with(SystemApi::::to_delegate( - LightSystem::new(client, remote_blockchain, fetcher, pool), - )); - - io -} diff --git a/pallets/asset/Cargo.toml b/pallets/asset/Cargo.toml index cf2dda47c1..4df160094c 100644 --- a/pallets/asset/Cargo.toml +++ b/pallets/asset/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-asset" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] # Common @@ -30,14 +30,14 @@ hex-literal = "0.2.1" arrayvec = { version = "0.7.1", default-features = false } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-arithmetic = { version = "4.0.0-dev", default-features = false } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-version = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-arithmetic = { version = "5.0.0", default-features = false } +sp-core = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } +sp-io = { version = "6.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } +sp-version = { version = "5.0.0", default-features = false } sp-api = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } frame-support = { version = "4.0.0-dev", default-features = false } diff --git a/pallets/asset/src/lib.rs b/pallets/asset/src/lib.rs index afeff404e2..4d79b4f70a 100644 --- a/pallets/asset/src/lib.rs +++ b/pallets/asset/src/lib.rs @@ -76,7 +76,7 @@ #![cfg_attr(not(feature = "std"), no_std)] #![recursion_limit = "256"] -#![feature(bool_to_option, const_option)] +#![feature(const_option)] #[cfg(feature = "runtime-benchmarks")] pub mod benchmarking; diff --git a/pallets/balances/Cargo.toml b/pallets/balances/Cargo.toml index 3acece4ec0..d746e46cc5 100644 --- a/pallets/balances/Cargo.toml +++ b/pallets/balances/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-balances" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] pallet-permissions = { path = "../permissions", default-features = false } @@ -14,13 +14,13 @@ log = "0.4.8" serde = { version = "1.0.104", default-features = false } serde_derive = { version = "1.0.104", optional = true, default-features = false} -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-version = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-core = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } +sp-io = { version = "6.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } +sp-version = { version = "5.0.0", default-features = false } sp-api = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } frame-support = { version = "4.0.0-dev", default-features = false } @@ -28,7 +28,7 @@ frame-support = { version = "4.0.0-dev", default-features = false } pallet-timestamp = { version = "4.0.0-dev", default-features = false } # Only for test in STD -substrate-test-runtime-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop", optional = true} +substrate-test-runtime-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05", optional = true} # Benchmarking frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } diff --git a/pallets/base/Cargo.toml b/pallets/base/Cargo.toml index d665f310a2..181ef94652 100644 --- a/pallets/base/Cargo.toml +++ b/pallets/base/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-base" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] polymesh-primitives = { path = "../../primitives", default-features = false } @@ -13,15 +13,15 @@ serde = { version = "1.0.104", default-features = false } serde_derive = { version = "1.0.104", optional = true, default-features = false } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-core = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-develop" } -sp-std = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-develop" } -sp-io = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-develop" } -sp-runtime = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-develop" } -sp-version = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-develop" } -sp-api = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-develop" } -frame-system = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-develop" } -frame-support = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-develop" } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-core = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-monthly-2022-05" } +sp-std = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-monthly-2022-05" } +sp-io = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-monthly-2022-05" } +sp-runtime = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-monthly-2022-05" } +sp-version = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-monthly-2022-05" } +sp-api = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-monthly-2022-05" } +frame-system = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-monthly-2022-05" } +frame-support = { git = "https://github.com/PolymathNetwork/substrate", default-features = false, branch = "polymesh-monthly-2022-05" } [features] diff --git a/pallets/bridge/Cargo.toml b/pallets/bridge/Cargo.toml index 73ef751431..59d43866ca 100644 --- a/pallets/bridge/Cargo.toml +++ b/pallets/bridge/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-bridge" version = "1.0.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] polymesh-common-utilities = { path = "../common", default-features = false } @@ -14,11 +14,11 @@ pallet-identity = { path = "../identity", default-features = false } pallet-multisig = { path = "../multisig", default-features = false } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-core = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } frame-support = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } pallet-scheduler = { version = "4.0.0-dev", default-features = false } diff --git a/pallets/bridge/src/lib.rs b/pallets/bridge/src/lib.rs index 9a70235559..2f94cf20bc 100644 --- a/pallets/bridge/src/lib.rs +++ b/pallets/bridge/src/lib.rs @@ -129,7 +129,7 @@ use sp_core::H256; use sp_runtime::traits::{Saturating, Zero}; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; -use sp_std::{convert::TryFrom, fmt::Debug, prelude::*}; +use sp_std::{convert::TryFrom, fmt::Debug, prelude::*, vec}; type Identity = pallet_identity::Module; type System = frame_system::Pallet; diff --git a/pallets/committee/Cargo.toml b/pallets/committee/Cargo.toml index d39f509833..fdd971a421 100644 --- a/pallets/committee/Cargo.toml +++ b/pallets/committee/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-committee" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] polymesh-common-utilities = { path = "../common", default-features = false } @@ -15,13 +15,13 @@ serde = { version = "1.0.104", default-features = false } serde_derive = { version = "1.0.104", optional = true, default-features = false } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-version = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-core = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } +sp-io = { version = "6.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } +sp-version = { version = "5.0.0", default-features = false } sp-api = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } diff --git a/pallets/common/Cargo.toml b/pallets/common/Cargo.toml index 687bca2bcc..23cb2a7830 100644 --- a/pallets/common/Cargo.toml +++ b/pallets/common/Cargo.toml @@ -2,7 +2,7 @@ name = "polymesh-common-utilities" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] polymesh-primitives = { path = "../../primitives", default-features = false } @@ -13,19 +13,19 @@ serde = { version = "1.0.112", default-features = false } serde_derive = { version = "1.0.112", optional = true, default-features = false} # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } frame-support = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } pallet-session = { version = "4.0.0-dev", default-features = false } #pallet-contracts = { version = "4.0.0-dev", default-features = false } pallet-timestamp = { version = "4.0.0-dev", default-features = false } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } sp-api = { version = "4.0.0-dev", default-features = false } -sp-arithmetic = { version = "4.0.0-dev", default-features = false } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } +sp-arithmetic = { version = "5.0.0", default-features = false } +sp-core = { version = "6.0.0", default-features = false } +sp-io = { version = "6.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } # Benchmarks frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } @@ -33,7 +33,7 @@ schnorrkel = { version = "0.10.1", default-features = false, optional = true } [dev-dependencies] lazy_static = { version = "1.4.0", default-features = false } -substrate-test-runtime-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop" } +substrate-test-runtime-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05" } [features] default = ["std", "equalize"] diff --git a/pallets/common/src/lib.rs b/pallets/common/src/lib.rs index a56381081c..a28005650a 100644 --- a/pallets/common/src/lib.rs +++ b/pallets/common/src/lib.rs @@ -41,7 +41,7 @@ use polymesh_primitives::IdentityId; use scale_info::TypeInfo; #[cfg(feature = "std")] use serde::{Deserialize, Serialize}; -use sp_runtime::DispatchResult; +use sp_runtime::{DispatchError, DispatchResult}; /// It defines the valid issuers for Systematic Claims. /// @@ -139,7 +139,9 @@ pub const GC_DID: IdentityId = SystematicIssuers::Committee.as_id(); /// committing on `Ok(_)` and rolling back on `Err(_)`, returning the result. /// /// Transactions can be arbitrarily nested with commits happening to the parent. -pub fn with_transaction(tx: impl FnOnce() -> Result) -> Result { +pub fn with_transaction>( + tx: impl FnOnce() -> Result, +) -> Result { use frame_support::storage::{with_transaction, TransactionOutcome}; with_transaction(|| match tx() { r @ Ok(_) => TransactionOutcome::Commit(r), diff --git a/pallets/compliance-manager/Cargo.toml b/pallets/compliance-manager/Cargo.toml index 0bd2a603b6..b508fe8257 100644 --- a/pallets/compliance-manager/Cargo.toml +++ b/pallets/compliance-manager/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-compliance-manager" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] # Common @@ -24,13 +24,13 @@ serde_derive = { version = "1.0.104", optional = true, default-features = false} either = { version = "1.6.1", default-features = false } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-version = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-core = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } +sp-io = { version = "6.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } +sp-version = { version = "5.0.0", default-features = false } sp-api = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } diff --git a/pallets/contracts/Cargo.toml b/pallets/contracts/Cargo.toml index ad64452cc9..db69868e00 100644 --- a/pallets/contracts/Cargo.toml +++ b/pallets/contracts/Cargo.toml @@ -2,21 +2,21 @@ name = "polymesh-contracts" version = "0.1.0" authors = ["Polymath Inc."] -edition = "2018" +edition = "2021" [dependencies] serde = { version = "1.0.104", default-features = false } pwasm-utils = { version = "0.18.2", default-features = false } -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } frame-system = { version = "4.0.0-dev", default-features = false } frame-support = { version = "4.0.0-dev", default-features = false } pallet-contracts = { version = "4.0.0-dev", default-features = false } -pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } +pallet-contracts-primitives = { version = "6.0.0", default-features = false } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-core = { version = "6.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } # Polymesh specific pallet-asset = { path = "../asset", default-features = false } diff --git a/pallets/contracts/src/benchmarking.rs b/pallets/contracts/src/benchmarking.rs index 69b7fffe77..98a060a40f 100644 --- a/pallets/contracts/src/benchmarking.rs +++ b/pallets/contracts/src/benchmarking.rs @@ -17,12 +17,13 @@ use crate::*; use codec::Encode; use frame_benchmarking::benchmarks; -use frame_support::traits::tokens::currency::Currency; +use frame_support::traits::{tokens::currency::Currency, ReservableCurrency}; use pallet_asset::Pallet as Asset; use pallet_contracts::benchmarking::code::{ - body, max_pages, DataSegment, ImportedFunction, ImportedMemory, ModuleDefinition, WasmModule, + body, max_pages, DataSegment, ImportedFunction, ImportedMemory, Location, ModuleDefinition, + WasmModule, }; -use pallet_contracts::Pallet as Base; +use pallet_contracts::Pallet as FrameContracts; use polymesh_common_utilities::{ benchs::{user, AccountIdOf, User}, constants::currency::POLY, @@ -56,14 +57,23 @@ fn free_balance(acc: &T::AccountId) -> Balance { T::Currency::free_balance(&acc) } +/// Returns the reserved balance of `acc`. +fn reserved_balance(acc: &T::AccountId) -> Balance +where + T::Currency: ReservableCurrency, +{ + T::Currency::reserved_balance(&acc) +} + /// The `user` instantiates `wasm.code` as the contract with `salt`. /// Returns the address of the new contract. fn instantiate(user: &User, wasm: WasmModule, salt: Vec) -> T::AccountId { - let callee = Base::::contract_address(&user.account(), &wasm.hash, &salt); + let callee = FrameContracts::::contract_address(&user.account(), &wasm.hash, &salt); Pallet::::instantiate_with_code_perms( user.origin().into(), - Base::::subsistence_threshold(), // endowment - Weight::MAX, // gas limit + ENDOWMENT, // endowment + Weight::MAX, // gas limit + None, wasm.code, vec![], // data salt, @@ -108,7 +118,11 @@ fn prepare_input(n: u32) -> Vec { } benchmarks! { - where_clause { where T: pallet_asset::Config, T: TestUtilsFn> } + where_clause { where + T: pallet_asset::Config, + ::Currency: ReservableCurrency, + T: TestUtilsFn>, + } prepare_instantiate_full { let n in 1 .. T::MaxLen::get().saturating_sub(prepare_input(0).len() as u32); @@ -127,7 +141,7 @@ benchmarks! { // Instantiate the contract. let callee = instantiate::(&user, wasm, salt()); - }: call(user.origin(), callee.clone(), 0, Weight::MAX, vec![]) + }: call(user.origin(), callee.clone(), 0, Weight::MAX, None, vec![]) chain_extension_full { let n in 1 .. T::MaxLen::get() as u32; @@ -146,7 +160,7 @@ benchmarks! { // Instantiate the contract. let callee = instantiate::(&user, wasm, salt()); - }: call(user.origin(), callee.clone(), 0, Weight::MAX, vec![]) + }: call(user.origin(), callee.clone(), 0, Weight::MAX, None, vec![]) chain_extension_early_exit { // Construct a user doing everything. @@ -157,7 +171,7 @@ benchmarks! { // Instantiate the contract. let callee = instantiate::(&user, wasm, salt()); - }: call(user.origin(), callee.clone(), 0, Weight::MAX, vec![]) + }: call(user.origin(), callee.clone(), 0, Weight::MAX, None, vec![]) basic_runtime_call { let n in 1 .. T::MaxLen::get() as u32; @@ -179,7 +193,7 @@ benchmarks! { // Arguments to pass to contract call. let data = vec![42u8; 1024]; - }: _(user.origin(), callee.clone(), ENDOWMENT, Weight::MAX, data) + }: _(user.origin(), callee.clone(), ENDOWMENT, Weight::MAX, None, data) verify { // Contract should have received the value. assert_eq!(free_balance::(&callee), before + ENDOWMENT); @@ -197,11 +211,11 @@ benchmarks! { // Have the user instantiate a dummy contract. let wasm = WasmModule::::dummy(); let hash = wasm.hash.clone(); - let addr = Base::::contract_address(&user.account(), &hash, &other_salt); + let addr = FrameContracts::::contract_address(&user.account(), &hash, &other_salt); // Pre-instantiate a contract so that one with the hash exists. let _ = instantiate::(&user, wasm, salt()); - }: instantiate(user.origin(), ENDOWMENT, Weight::MAX, hash, vec![], other_salt) + }: instantiate(user.origin(), ENDOWMENT, Weight::MAX, None, hash, vec![], other_salt) verify { // Ensure contract has the full value. assert_eq!(free_balance::(&addr), ENDOWMENT); @@ -230,11 +244,41 @@ benchmarks! { let user = funded_user::(); // Construct the contract code + get addr. - let wasm = WasmModule::::sized(c); - let addr = Base::::contract_address(&user.account(), &wasm.hash, &salt); - }: _(user.origin(), ENDOWMENT, Weight::MAX, wasm.code, vec![], salt) + let wasm = WasmModule::::sized(c, Location::Deploy); + let addr = FrameContracts::::contract_address(&user.account(), &wasm.hash, &salt); + }: _(user.origin(), ENDOWMENT, Weight::MAX, None, wasm.code, vec![], salt) verify { // Ensure contract has the full value. assert_eq!(free_balance::(&addr), ENDOWMENT); } + + upload_code { + let c in 0 .. Perbill::from_percent(50).mul_ceil(T::Schedule::get().limits.code_len); + // Construct a user doing everything. + let user = funded_user::(); + + let WasmModule { code, hash, .. } = WasmModule::::sized(c, Location::Call); + }: _(user.origin(), code, None) + verify { + // Uploading code reserves some balance in the callers account. + assert!(reserved_balance::(&user.account) > 0u32.into()); + //assert!(>::code_exists(&hash)); + } + + remove_code { + // Construct a user doing everything. + let user = funded_user::(); + + // Upload a dummy contract. + let WasmModule { code, hash, .. } = WasmModule::::dummy(); + let uploaded = >::bare_upload_code(user.account(), code, None)?; + assert_eq!(uploaded.code_hash, hash); + assert_eq!(uploaded.deposit, reserved_balance::(&user.account())); + //assert!(>::code_exists(&hash)); + }: _(user.origin(), hash) + verify { + // Removing the code should have unreserved the deposit. + assert_eq!(reserved_balance::(&user.account), 0u32.into()); + //assert!(>::code_removed(&hash)); + } } diff --git a/pallets/contracts/src/lib.rs b/pallets/contracts/src/lib.rs index bba2198be6..8c9a6e3cce 100644 --- a/pallets/contracts/src/lib.rs +++ b/pallets/contracts/src/lib.rs @@ -82,6 +82,8 @@ type CodeHash = ::Hash; pub trait WeightInfo { fn call() -> Weight; + fn upload_code(code_len: u32) -> Weight; + fn remove_code() -> Weight; /// Computes the cost of instantiating where `code_len` /// and `salt_len` are specified in kilobytes. @@ -91,7 +93,7 @@ pub trait WeightInfo { /// /// Permissions are not accounted for here. fn instantiate_with_code_bytes(code: &[u8], salt: &[u8]) -> Weight { - Self::instantiate_with_code(code.len() as u32 / 1024, salt.len() as u32 / 1024) + Self::instantiate_with_code(code.len() as u32, salt.len() as u32) } /// Computes the cost of instantiating where `salt_len` is specified in kilobytes. @@ -101,7 +103,7 @@ pub trait WeightInfo { /// /// Permissions are not accounted for here. fn instantiate_with_hash_bytes(salt: &[u8]) -> Weight { - Self::instantiate_with_hash((salt.len() / 1024) as u32) + Self::instantiate_with_hash((salt.len()) as u32) } /// Computes the cost just for executing the chain extension, @@ -213,7 +215,9 @@ decl_module! { /// - `contract` to call. /// - `value` in POLYX to transfer to the contract. /// - `gas_limit` that limits how much gas execution can consume, erroring above it. - /// - `data` to be interpreted by the smart contract call. + /// - `storage_deposit_limit` The maximum amount of balance that can be charged from the + /// caller to pay for the storage consumed. + /// - `data` The input data to pass to the contract. /// /// # Errors /// - All the errors in `pallet_contracts::Call::call` can also happen here. @@ -225,9 +229,10 @@ decl_module! { contract: T::AccountId, value: Balance, gas_limit: Weight, + storage_deposit_limit: Option, data: Vec, ) -> DispatchResultWithPostInfo { - Self::base_call(origin, contract, value, gas_limit, data) + Self::base_call(origin, contract, value, gas_limit, storage_deposit_limit, data) } /// Instantiates a smart contract defining it with the given `code` and `salt`. @@ -242,7 +247,10 @@ decl_module! { /// # Arguments /// - `endowment` amount of POLYX to transfer to the contract. /// - `gas_limit` for how much gas the `deploy` code in the contract may at most consume. + /// - `storage_deposit_limit` The maximum amount of balance that can be charged/reserved + /// from the caller to pay for the storage consumed. /// - `code` with the WASM binary defining the smart contract. + /// - `data` The input data to pass to the contract constructor. /// - `salt` used for contract address derivation. /// By varying this, the same `code` can be used under the same identity. /// @@ -250,22 +258,26 @@ decl_module! { /// - All the errors in `pallet_contracts::Call::instantiate_with_code` can also happen here. /// - CDD/Permissions are checked, unlike in `pallet_contracts`. /// - Errors that arise when adding a new secondary key can also occur here. - #[weight = Module::::weight_instantiate_with_code(&code, &salt, &Permissions::empty())] + #[weight = Module::::weight_instantiate_with_code(&code, &salt, &Permissions::empty()).saturating_add(*gas_limit)] pub fn instantiate_with_code( origin, endowment: Balance, gas_limit: Weight, + storage_deposit_limit: Option, code: Vec, data: Vec, salt: Vec ) -> DispatchResultWithPostInfo { - Self::base_instantiate_with_code(origin, endowment, gas_limit, code, data, salt, Permissions::empty()) + Self::base_instantiate_with_code(origin, endowment, gas_limit, storage_deposit_limit, code, data, salt, Permissions::empty()) } - /// Instantiates a smart contract defining it with the given `code` and `salt`. + /// Instantiates a smart contract defining using the given `code_hash` and `salt`. + /// + /// Unlike `instantiate_with_code`, + /// this assumes that at least one contract with the same WASM code has already been uploaded. /// /// The contract will be attached as a secondary key, - /// with `perms` as its permissions, to `origin`'s identity. + /// with empty permissions, to `origin`'s identity. /// /// The contract is transferred `endowment` amount of POLYX. /// This is distinct from the `gas_limit`, @@ -274,35 +286,71 @@ decl_module! { /// # Arguments /// - `endowment` amount of POLYX to transfer to the contract. /// - `gas_limit` for how much gas the `deploy` code in the contract may at most consume. - /// - `code` with the WASM binary defining the smart contract. + /// - `storage_deposit_limit` The maximum amount of balance that can be charged/reserved + /// from the caller to pay for the storage consumed. + /// - `code_hash` of an already uploaded WASM binary. + /// - `data` The input data to pass to the contract constructor. /// - `salt` used for contract address derivation. /// By varying this, the same `code` can be used under the same identity. - /// - `perms` that the new secondary key will have. /// /// # Errors - /// - All the errors in `pallet_contracts::Call::instantiate_with_code` can also happen here. + /// - All the errors in `pallet_contracts::Call::instantiate` can also happen here. /// - CDD/Permissions are checked, unlike in `pallet_contracts`. /// - Errors that arise when adding a new secondary key can also occur here. - #[weight = Module::::weight_instantiate_with_code(&code, &salt, &perms)] - pub fn instantiate_with_code_perms( + #[weight = Module::::weight_instantiate_with_hash(&salt, &Permissions::empty()).saturating_add(*gas_limit)] + pub fn instantiate( origin, endowment: Balance, gas_limit: Weight, - code: Vec, + storage_deposit_limit: Option, + code_hash: CodeHash, data: Vec, - salt: Vec, - perms: Permissions + salt: Vec ) -> DispatchResultWithPostInfo { - Self::base_instantiate_with_code(origin, endowment, gas_limit, code, data, salt, perms) + Self::base_instantiate_with_hash(origin, endowment, gas_limit, storage_deposit_limit, code_hash, data, salt, Permissions::empty()) } - /// Instantiates a smart contract defining using the given `code_hash` and `salt`. + /// Upload new `code` without instantiating a contract from it. /// - /// Unlike `instantiate_with_code`, - /// this assumes that at least one contract with the same WASM code has already been uploaded. + /// If the code does not already exist a deposit is reserved from the caller + /// and unreserved only when [`Self::remove_code`] is called. The size of the reserve + /// depends on the instrumented size of the the supplied `code`. + /// + /// If the code already exists in storage it will still return `Ok` and upgrades + /// the in storage version to the current + /// [`InstructionWeights::version`](InstructionWeights). + /// + /// # Note + /// + /// Anyone can instantiate a contract from any uploaded code and thus prevent its removal. + /// To avoid this situation a constructor could employ access control so that it can + /// only be instantiated by permissioned entities. The same is true when uploading + /// through [`Self::instantiate_with_code`]. + #[weight = ::WeightInfo::upload_code(code.len() as u32)] + pub fn upload_code( + origin, + code: Vec, + storage_deposit_limit: Option, + ) -> DispatchResult { + Self::base_upload_code(origin, code, storage_deposit_limit) + } + + /// Remove the code stored under `code_hash` and refund the deposit to its owner. + /// + /// A code can only be removed by its original uploader (its owner) and only if it is + /// not used by any contract. + #[weight = ::WeightInfo::remove_code()] + pub fn remove_code( + origin, + code_hash: CodeHash, + ) -> DispatchResultWithPostInfo { + Self::base_remove_code(origin, code_hash) + } + + /// Instantiates a smart contract defining it with the given `code` and `salt`. /// /// The contract will be attached as a secondary key, - /// with empty permissions, to `origin`'s identity. + /// with `perms` as its permissions, to `origin`'s identity. /// /// The contract is transferred `endowment` amount of POLYX. /// This is distinct from the `gas_limit`, @@ -311,24 +359,30 @@ decl_module! { /// # Arguments /// - `endowment` amount of POLYX to transfer to the contract. /// - `gas_limit` for how much gas the `deploy` code in the contract may at most consume. - /// - `code_hash` of an already uploaded WASM binary. + /// - `storage_deposit_limit` The maximum amount of balance that can be charged/reserved + /// from the caller to pay for the storage consumed. + /// - `code` with the WASM binary defining the smart contract. + /// - `data` The input data to pass to the contract constructor. /// - `salt` used for contract address derivation. /// By varying this, the same `code` can be used under the same identity. + /// - `perms` that the new secondary key will have. /// /// # Errors - /// - All the errors in `pallet_contracts::Call::instantiate` can also happen here. + /// - All the errors in `pallet_contracts::Call::instantiate_with_code` can also happen here. /// - CDD/Permissions are checked, unlike in `pallet_contracts`. /// - Errors that arise when adding a new secondary key can also occur here. - #[weight = Module::::weight_instantiate_with_hash(&salt, &Permissions::empty())] - pub fn instantiate( + #[weight = Module::::weight_instantiate_with_code(&code, &salt, &perms).saturating_add(*gas_limit)] + pub fn instantiate_with_code_perms( origin, endowment: Balance, gas_limit: Weight, - code_hash: CodeHash, + storage_deposit_limit: Option, + code: Vec, data: Vec, - salt: Vec + salt: Vec, + perms: Permissions ) -> DispatchResultWithPostInfo { - Self::base_instantiate_with_hash(origin, endowment, gas_limit, code_hash, data, salt, Permissions::empty()) + Self::base_instantiate_with_code(origin, endowment, gas_limit, storage_deposit_limit, code, data, salt, perms) } /// Instantiates a smart contract defining using the given `code_hash` and `salt`. @@ -346,7 +400,10 @@ decl_module! { /// # Arguments /// - `endowment` amount of POLYX to transfer to the contract. /// - `gas_limit` for how much gas the `deploy` code in the contract may at most consume. + /// - `storage_deposit_limit` The maximum amount of balance that can be charged/reserved + /// from the caller to pay for the storage consumed. /// - `code_hash` of an already uploaded WASM binary. + /// - `data` The input data to pass to the contract constructor. /// - `salt` used for contract address derivation. /// By varying this, the same `code` can be used under the same identity. /// - `perms` that the new secondary key will have. @@ -355,17 +412,18 @@ decl_module! { /// - All the errors in `pallet_contracts::Call::instantiate` can also happen here. /// - CDD/Permissions are checked, unlike in `pallet_contracts`. /// - Errors that arise when adding a new secondary key can also occur here. - #[weight = Module::::weight_instantiate_with_hash(&salt, &perms)] + #[weight = Module::::weight_instantiate_with_hash(&salt, &perms).saturating_add(*gas_limit)] pub fn instantiate_with_hash_perms( origin, endowment: Balance, gas_limit: Weight, + storage_deposit_limit: Option, code_hash: CodeHash, data: Vec, salt: Vec, perms: Permissions ) -> DispatchResultWithPostInfo { - Self::base_instantiate_with_hash(origin, endowment, gas_limit, code_hash, data, salt, perms) + Self::base_instantiate_with_hash(origin, endowment, gas_limit, storage_deposit_limit, code_hash, data, salt, perms) } } } @@ -378,6 +436,7 @@ impl Module { contract: T::AccountId, value: Balance, gas_limit: Weight, + storage_deposit_limit: Option, data: Vec, ) -> DispatchResultWithPostInfo { // Ensure contract caller has perms. @@ -386,7 +445,15 @@ impl Module { // Execute contract. Self::handle_error( ::WeightInfo::call(), - FrameContracts::::bare_call(sender, contract, value, gas_limit, data, false), + FrameContracts::::bare_call( + sender, + contract, + value, + gas_limit, + storage_deposit_limit, + data, + false, + ), ) } @@ -395,6 +462,7 @@ impl Module { origin: T::Origin, endowment: Balance, gas_limit: Weight, + storage_deposit_limit: Option, code: Vec, inst_data: Vec, salt: Vec, @@ -406,6 +474,7 @@ impl Module { // Compute the base weight of roughly `base_instantiate`. Self::weight_instantiate_with_code(&code, &salt, &perms), gas_limit, + storage_deposit_limit, Code::Upload(Bytes(code)), inst_data, salt, @@ -425,6 +494,7 @@ impl Module { origin: T::Origin, endowment: Balance, gas_limit: Weight, + storage_deposit_limit: Option, code_hash: CodeHash, inst_data: Vec, salt: Vec, @@ -436,6 +506,7 @@ impl Module { // Compute the base weight of roughly `base_instantiate`. Self::weight_instantiate_with_hash(&salt, &perms), gas_limit, + storage_deposit_limit, Code::Existing(code_hash), inst_data, salt, @@ -450,6 +521,26 @@ impl Module { ) } + /// Upload new code without instantiating a contract from it. + fn base_upload_code( + origin: T::Origin, + code: Vec, + storage_deposit_limit: Option, + ) -> DispatchResult { + // Ensure contract caller has perms. + let sender = Identity::::ensure_origin_call_permissions(origin)?.sender; + FrameContracts::::bare_upload_code(sender, code, storage_deposit_limit.map(Into::into)) + .map(|_| ()) + } + + /// Remove the code stored under `code_hash` and refund the deposit to its owner. + fn base_remove_code(origin: T::Origin, code_hash: CodeHash) -> DispatchResultWithPostInfo { + // Ensure contract caller has perms. + Identity::::ensure_origin_call_permissions(origin.clone())?; + // Remove the contract code if the caller is the owner and the code is unused. + FrameContracts::::remove_code(origin, code_hash) + } + /// General logic for contract instantiation both when the code or code hash is given. /// /// The interesting parameters here are: @@ -462,6 +553,7 @@ impl Module { endowment: Balance, base_weight: Weight, gas_limit: Weight, + storage_deposit_limit: Option, code: Code>, inst_data: Vec, salt: Vec, @@ -485,6 +577,7 @@ impl Module { sender.clone(), endowment, gas_limit, + storage_deposit_limit, code, inst_data, salt, @@ -501,10 +594,11 @@ impl Module { sender: T::AccountId, endowment: Balance, gas_limit: u64, + storage_deposit_limit: Option, code: Code>, data: Vec, salt: Vec, - ) -> ContractInstantiateResult { + ) -> ContractInstantiateResult { match (|| { // Ensure we have perms + we'll need DID. let did = @@ -515,7 +609,14 @@ impl Module { Self::prepare_instantiate(did, &sender, &code_hash, &salt, Permissions::empty())?; Ok(FrameContracts::::bare_instantiate( - sender, endowment, gas_limit, code, data, salt, false, + sender, + endowment, + gas_limit, + storage_deposit_limit, + code, + data, + salt, + false, )) })() { Ok(r) => r, @@ -526,6 +627,7 @@ impl Module { // so no gas related to the limit has yet been consumed. gas_consumed: 0, gas_required: 0, + storage_deposit: Default::default(), }, } } @@ -562,7 +664,7 @@ impl Module { /// accounting for the consumed gas. fn handle_error( base_weight: Weight, - result: ContractResult>, + result: ContractResult, Balance>, ) -> DispatchResultWithPostInfo { let post_info = Some(result.gas_consumed.saturating_add(base_weight)).into(); match result.result { @@ -664,11 +766,13 @@ where contract: decode!(), value: decode!(), gas_limit: decode!(), + storage_deposit_limit: decode!(), data: decode!(), }), on!(0, 1) => CommonCall::Contracts(Call::instantiate_with_code { endowment: decode!(), gas_limit: decode!(), + storage_deposit_limit: decode!(), code: decode!(), data: decode!(), salt: decode!(), @@ -676,6 +780,7 @@ where on!(0, 2) => CommonCall::Contracts(Call::instantiate_with_code_perms { endowment: decode!(), gas_limit: decode!(), + storage_deposit_limit: decode!(), code: decode!(), data: decode!(), salt: decode!(), @@ -684,6 +789,7 @@ where on!(0, 3) => CommonCall::Contracts(Call::instantiate { endowment: decode!(), gas_limit: decode!(), + storage_deposit_limit: decode!(), code_hash: decode!(), data: decode!(), salt: decode!(), @@ -691,6 +797,7 @@ where on!(0, 4) => CommonCall::Contracts(Call::instantiate_with_hash_perms { endowment: decode!(), gas_limit: decode!(), + storage_deposit_limit: decode!(), code_hash: decode!(), data: decode!(), salt: decode!(), diff --git a/pallets/corporate-actions/Cargo.toml b/pallets/corporate-actions/Cargo.toml index 23ef8c1109..72333d2749 100644 --- a/pallets/corporate-actions/Cargo.toml +++ b/pallets/corporate-actions/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-corporate-actions" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] # Common @@ -23,14 +23,14 @@ serde = { version = "1.0.104", default-features = false } serde_derive = { version = "1.0.104", optional = true, default-features = false } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-arithmetic = { version = "4.0.0-dev", default-features = false } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-version = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-arithmetic = { version = "5.0.0", default-features = false } +sp-core = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } +sp-io = { version = "6.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } +sp-version = { version = "5.0.0", default-features = false } sp-api = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } frame-support = { version = "4.0.0-dev", default-features = false } diff --git a/pallets/corporate-actions/src/lib.rs b/pallets/corporate-actions/src/lib.rs index b0ae198cc5..c5be4ebdd1 100644 --- a/pallets/corporate-actions/src/lib.rs +++ b/pallets/corporate-actions/src/lib.rs @@ -84,7 +84,6 @@ //! - `remove_ca(origin, id)` removes the CA identified by `id`. #![cfg_attr(not(feature = "std"), no_std)] -#![feature(bool_to_option)] #![feature(crate_visibility_modifier)] #![feature(const_option)] diff --git a/pallets/external-agents/Cargo.toml b/pallets/external-agents/Cargo.toml index aec9fb0e3f..1fa4543637 100644 --- a/pallets/external-agents/Cargo.toml +++ b/pallets/external-agents/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-external-agents" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] # Common @@ -20,11 +20,11 @@ serde = { version = "1.0.104", default-features = false } serde_derive = { version = "1.0.104", optional = true, default-features = false } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } frame-system = { version = "4.0.0-dev", default-features = false } frame-support = { version = "4.0.0-dev", default-features = false } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-std = { version = "4.0.0-dev", default-features = false } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-std = { version = "4.0.0", default-features = false } # Only in STD frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } diff --git a/pallets/group/Cargo.toml b/pallets/group/Cargo.toml index 1d854b2f61..b9effabc5b 100644 --- a/pallets/group/Cargo.toml +++ b/pallets/group/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-group" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] polymesh-common-utilities = { path = "../common", default-features = false} @@ -14,13 +14,13 @@ serde = { version = "1.0.104", default-features = false } serde_derive = { version = "1.0.104", optional = true, default-features = false } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-version = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-core = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } +sp-io = { version = "6.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } +sp-version = { version = "5.0.0", default-features = false } sp-api = { version = "4.0.0-dev", default-features = false } pallet-timestamp = { version = "4.0.0-dev", default-features = false } diff --git a/pallets/group/rpc/Cargo.toml b/pallets/group/rpc/Cargo.toml index a8074d9ed9..b93462e523 100644 --- a/pallets/group/rpc/Cargo.toml +++ b/pallets/group/rpc/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-group-rpc" version = "2.0.0" authors = ["Anonymous"] -edition = "2018" +edition = "2021" [dependencies] # Common @@ -20,11 +20,11 @@ jsonrpc-core-client = { version = "18.0.0", features = ["arbitrary_precision"] } jsonrpc-derive = "18.0.0" # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0" } -sp-runtime = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0" } +sp-runtime = { version = "6.0.0", default-features = false } sp-blockchain = { version = "4.0.0-dev", default_features = false} -sp-std = {version = "4.0.0-dev", default_features = false } +sp-std = {version = "4.0.0", default_features = false } sp-api = {version = "4.0.0-dev", default_features = false } [dev-dependencies] -substrate-test-runtime-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop"} +substrate-test-runtime-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05"} diff --git a/pallets/group/rpc/runtime-api/Cargo.toml b/pallets/group/rpc/runtime-api/Cargo.toml index 8602afa83f..8fbbf90556 100644 --- a/pallets/group/rpc/runtime-api/Cargo.toml +++ b/pallets/group/rpc/runtime-api/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-group-rpc-runtime-api" version = "2.0.0" authors = ["Anonymous"] -edition = "2018" +edition = "2021" [dependencies] # Common @@ -13,10 +13,10 @@ polymesh-common-utilities = { path = "../../../common", default-features = false serde = { version = "1.0.104", optional = true, features = ["derive"] } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } sp-api = { version = "4.0.0-dev", default_features = false } -sp-std = { version = "4.0.0-dev", default_features = false } -sp-runtime = { version = "4.0.0-dev", default_features = false } +sp-std = { version = "4.0.0", default_features = false } +sp-runtime = { version = "6.0.0", default_features = false } [dev-dependencies] serde_json = "1.0.41" diff --git a/pallets/identity/Cargo.toml b/pallets/identity/Cargo.toml index cba4b65891..0a26a5a1ef 100644 --- a/pallets/identity/Cargo.toml +++ b/pallets/identity/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-identity" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] pallet-balances = { path = "../balances", default-features = false } @@ -23,17 +23,17 @@ confidential_identity_v1 = { package = "confidential_identity", git = "https://g schnorrkel = { version = "0.10.1", default-features = false, optional = true } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } frame-support = { version = "4.0.0-dev", default-features = false } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } frame-system = { version = "4.0.0-dev", default-features = false } pallet-timestamp = { version = "4.0.0-dev", default-features = false } sp-api = { version = "4.0.0-dev", default-features = false } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } -sp-version = { version = "4.0.0-dev", default-features = false } +sp-core = { version = "6.0.0", default-features = false } +sp-io = { version = "6.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } +sp-version = { version = "5.0.0", default-features = false } # Only Benchmarking frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } diff --git a/pallets/identity/src/lib.rs b/pallets/identity/src/lib.rs index 0092ae5454..6fcacf7faa 100644 --- a/pallets/identity/src/lib.rs +++ b/pallets/identity/src/lib.rs @@ -79,12 +79,7 @@ #![cfg_attr(not(feature = "std"), no_std)] #![recursion_limit = "256"] -#![feature( - const_option, - bool_to_option, - option_result_contains, - crate_visibility_modifier -)] +#![feature(const_option, option_result_contains, crate_visibility_modifier)] mod auth; mod claims; diff --git a/pallets/multisig/Cargo.toml b/pallets/multisig/Cargo.toml index 920d1fc9a5..a9603d08a6 100644 --- a/pallets/multisig/Cargo.toml +++ b/pallets/multisig/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-multisig" version = "0.1.0" authors = ["Polymath Inc."] -edition = "2018" +edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -17,12 +17,12 @@ log = "0.4.8" serde = { version = "1.0.104", default-features = false } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-version = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-runtime = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } +sp-core = { version = "6.0.0", default-features = false } +sp-version = { version = "5.0.0", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } frame-support = { version = "4.0.0-dev", default-features = false } diff --git a/pallets/permissions/Cargo.toml b/pallets/permissions/Cargo.toml index 89719ab671..f2ab4cde79 100644 --- a/pallets/permissions/Cargo.toml +++ b/pallets/permissions/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-permissions" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] # Common @@ -13,12 +13,12 @@ polymesh-primitives = { path = "../../primitives", default-features = false } serde = { version = "1.0.104", default-features = false } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } frame-system = { version = "4.0.0-dev", default-features = false } frame-support = { version = "4.0.0-dev", default-features = false } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-runtime = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } # Only for benchmarking frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } diff --git a/pallets/permissions/src/lib.rs b/pallets/permissions/src/lib.rs index 5d252f0da2..fe2edb14be 100644 --- a/pallets/permissions/src/lib.rs +++ b/pallets/permissions/src/lib.rs @@ -158,7 +158,7 @@ where } fn post_dispatch( - _: Self::Pre, + _: Option, _: &DispatchInfoOf, _: &PostDispatchInfoOf, _: usize, diff --git a/pallets/pips/Cargo.toml b/pallets/pips/Cargo.toml index cf9aade7c3..64b60b80a6 100644 --- a/pallets/pips/Cargo.toml +++ b/pallets/pips/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-pips" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] polymesh-common-utilities = { path = "../common", default-features = false } @@ -22,13 +22,13 @@ serde = { version = "1.0.104", default-features = false } serde_derive = { version = "1.0.104", optional = true, default-features = false } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-version = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-core = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } +sp-io = { version = "6.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } +sp-version = { version = "5.0.0", default-features = false } sp-api = { version = "4.0.0-dev", default-features = false } frame-system = { package = "frame-system", version = "4.0.0-dev", default-features = false } diff --git a/pallets/pips/src/lib.rs b/pallets/pips/src/lib.rs index 4f04e0adfc..2958a97a40 100644 --- a/pallets/pips/src/lib.rs +++ b/pallets/pips/src/lib.rs @@ -84,7 +84,6 @@ #![cfg_attr(not(feature = "std"), no_std)] #![feature(const_option)] -#![feature(bool_to_option)] #![feature(associated_type_bounds)] #[cfg(feature = "runtime-benchmarks")] diff --git a/pallets/portfolio/Cargo.toml b/pallets/portfolio/Cargo.toml index 6379347c1a..cc052326d6 100644 --- a/pallets/portfolio/Cargo.toml +++ b/pallets/portfolio/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-portfolio" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] # Common @@ -19,12 +19,12 @@ pallet-permissions = { path = "../permissions", default-features = false } serde = { version = "1.0.104", default-features = false } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } frame-support = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-arithmetic = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-arithmetic = { version = "5.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } # Only in STD frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } diff --git a/pallets/protocol-fee/Cargo.toml b/pallets/protocol-fee/Cargo.toml index 331439370d..9146023d48 100644 --- a/pallets/protocol-fee/Cargo.toml +++ b/pallets/protocol-fee/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-protocol-fee" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] polymesh-primitives = { path = "../../primitives", default-features = false } @@ -13,14 +13,14 @@ pallet-identity = { path = "../identity", default-features = false } serde = { version = "1.0.104", default-features = false } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } frame-support = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-core = { version = "6.0.0", default-features = false } +sp-io = { version = "6.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } # benchmark-only frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } diff --git a/pallets/protocol-fee/rpc/Cargo.toml b/pallets/protocol-fee/rpc/Cargo.toml index 7813ea948b..8a63d6f63c 100644 --- a/pallets/protocol-fee/rpc/Cargo.toml +++ b/pallets/protocol-fee/rpc/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-protocol-fee-rpc" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] polymesh-common-utilities = { path = "../../common", default-features = false } @@ -15,7 +15,7 @@ jsonrpc-core-client = { version = "18.0.0", features = ["arbitrary_precision"] } jsonrpc-derive = "18.0.0" # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0" } -sp-runtime = { version = "4.0.0-dev", default_features = false } +codec = { package = "parity-scale-codec", version = "3.0.0" } +sp-runtime = { version = "6.0.0", default_features = false } sp-blockchain = { version = "4.0.0-dev", default_features = false} sp-api = { version = "4.0.0-dev", default_features = false} diff --git a/pallets/protocol-fee/rpc/runtime-api/Cargo.toml b/pallets/protocol-fee/rpc/runtime-api/Cargo.toml index 16130323e5..090e077f40 100644 --- a/pallets/protocol-fee/rpc/runtime-api/Cargo.toml +++ b/pallets/protocol-fee/rpc/runtime-api/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-protocol-fee-rpc-runtime-api" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] polymesh-common-utilities = { path = "../../../common", default-features = false } @@ -11,9 +11,9 @@ polymesh-common-utilities = { path = "../../../common", default-features = false serde = { version = "1.0.104", optional = true, features = ["derive"] } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } sp-api = { version = "4.0.0-dev", default_features = false} -sp-runtime = { version = "4.0.0-dev", default_features = false} +sp-runtime = { version = "6.0.0", default_features = false} frame-support = { version = "4.0.0-dev", default-features = false } [dev-dependencies] diff --git a/pallets/relayer/Cargo.toml b/pallets/relayer/Cargo.toml index c6ec330bde..2f45344ab8 100644 --- a/pallets/relayer/Cargo.toml +++ b/pallets/relayer/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-relayer" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] pallet-identity = { path = "../identity", default-features = false} @@ -10,12 +10,12 @@ polymesh-common-utilities = { path = "../common", default-features = false } polymesh-primitives = { path = "../../primitives", default-features = false} # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-runtime = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +sp-runtime = { version = "6.0.0", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } frame-support = { version = "4.0.0-dev", default-features = false } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-std = { version = "4.0.0-dev", default-features = false } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-std = { version = "4.0.0", default-features = false } # Only Benchmarking frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } diff --git a/pallets/rewards/Cargo.toml b/pallets/rewards/Cargo.toml index 430db08ca8..1bb91fe85b 100644 --- a/pallets/rewards/Cargo.toml +++ b/pallets/rewards/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-rewards" version = "1.0.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] polymesh-common-utilities = { path = "../common", default-features = false } @@ -12,11 +12,11 @@ pallet-identity = { path = "../identity", default-features = false } pallet-staking = { path = "../staking", default-features = false } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-core = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } frame-support = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } diff --git a/pallets/rewards/src/lib.rs b/pallets/rewards/src/lib.rs index ee3837a063..a253eb5b9a 100644 --- a/pallets/rewards/src/lib.rs +++ b/pallets/rewards/src/lib.rs @@ -58,7 +58,7 @@ use sp_runtime::{ transaction_validity::ValidTransaction, DispatchError, }; -use sp_std::{convert::TryInto, prelude::*}; +use sp_std::{convert::TryInto, prelude::*, vec}; #[cfg(feature = "runtime-benchmarks")] pub mod benchmarking; diff --git a/pallets/runtime/build_tool/Cargo.toml b/pallets/runtime/build_tool/Cargo.toml index c5c678caff..4f89505a81 100644 --- a/pallets/runtime/build_tool/Cargo.toml +++ b/pallets/runtime/build_tool/Cargo.toml @@ -2,12 +2,12 @@ name = "polymesh-build-tool" version = "0.1.0" authors = ["miguel "] -edition = "2018" +edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -substrate-wasm-builder = { version = "4.0.0-dev", default-features = false} +substrate-wasm-builder = { version = "5.0.0-dev", default-features = false} [features] default = ["std"] diff --git a/pallets/runtime/ci/Cargo.toml b/pallets/runtime/ci/Cargo.toml index 49070a45bb..589663ce20 100644 --- a/pallets/runtime/ci/Cargo.toml +++ b/pallets/runtime/ci/Cargo.toml @@ -2,7 +2,7 @@ name = "polymesh-runtime-ci" version = "0.1.0" authors = ["Polymath Inc."] -edition = "2018" +edition = "2021" build = "build.rs" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -61,13 +61,13 @@ serde = { version = "1.0.104", default-features = false } serde_derive = { version = "1.0.104", optional = true } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-version = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-core = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } +sp-io = { version = "6.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } +sp-version = { version = "5.0.0", default-features = false } sp-api = { version = "4.0.0-dev", default-features = false } sp-inherents = { version = "4.0.0-dev", default-features = false } sp-offchain = { version = "4.0.0-dev", default-features = false } @@ -77,16 +77,17 @@ sp-session = { version = "4.0.0-dev", default-features = false } sp-authority-discovery = { version = "4.0.0-dev", default-features = false } sp-transaction-pool = { version = "4.0.0-dev", default-features = false } sp-block-builder = { version = "4.0.0-dev", default-features = false } -sp-arithmetic = { version = "4.0.0-dev", default-features = false } +sp-arithmetic = { version = "5.0.0", default-features = false } pallet-authorship = { version = "4.0.0-dev", default-features = false } pallet-contracts = { version = "4.0.0-dev", default-features = false } -pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false} +pallet-contracts-primitives = { version = "6.0.0", default-features = false} pallet-executive = { package = "frame-executive", version = "4.0.0-dev", default-features = false } pallet-grandpa = { version = "4.0.0-dev", default-features = false } pallet-im-online = { version = "4.0.0-dev", default-features = false } pallet-indices = { version = "4.0.0-dev", default-features = false } pallet-offences = { version = "4.0.0-dev", default-features = false } +pallet-preimage = { version = "4.0.0-dev", default-features = false } pallet-session = { version = "4.0.0-dev", default-features = false } pallet-timestamp = { version = "4.0.0-dev", default-features = false } pallet-babe = { version = "4.0.0-dev", default-features = false } @@ -142,6 +143,7 @@ std = [ "pallet-multisig/std", "pallet-offences/std", "pallet-permissions/std", + "pallet-preimage/std", "pallet-pips/std", "pallet-portfolio/std", "pallet-protocol-fee-rpc-runtime-api/std", diff --git a/pallets/runtime/ci/src/runtime.rs b/pallets/runtime/ci/src/runtime.rs index 7a19a117df..0167006654 100644 --- a/pallets/runtime/ci/src/runtime.rs +++ b/pallets/runtime/ci/src/runtime.rs @@ -27,7 +27,6 @@ use polymesh_runtime_common::{ runtime::{GovernanceCommittee, BENCHMARK_MAX_INCREASE, VMO}, AvailableBlockRatio, MaximumBlockWeight, NegativeImbalance, }; -use sp_core::u32_trait::{_1, _4}; use sp_runtime::transaction_validity::TransactionPriority; use sp_runtime::{ create_runtime_str, @@ -62,6 +61,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 3, + state_version: 1, }; parameter_types! { @@ -134,15 +134,12 @@ parameter_types! { // Scheduler: pub MaximumSchedulerWeight: Weight = Perbill::from_percent(80) * MaximumBlockWeight::get(); pub const MaxScheduledPerBlock: u32 = 50; + pub const NoPreimagePostponement: Option = Some(10); // Identity: pub const InitialPOLYX: Balance = 0; // Contracts: - pub ContractDeposit: Balance = polymesh_runtime_common::deposit( - 1, - >::contract_info_size(), - ); pub Schedule: pallet_contracts::Schedule = Default::default(); pub DeletionWeightLimit: Weight = 500_000_000_000; pub DeletionQueueDepth: u32 = 1024; @@ -153,10 +150,10 @@ parameter_types! { pub type DealWithFees = SplitTwoWays< Balance, NegativeImbalance, - _4, - Treasury, // 4 parts (80%) goes to the treasury. - _1, + Treasury, // 4 parts (80%) goes to the treasury. Author, // 1 part (20%) goes to the block author. + 4, + 1, >; // Staking: @@ -303,7 +300,7 @@ impl pallet_test_utils::Config for Runtime { type WeightInfo = polymesh_weights::pallet_test_utils::WeightInfo; } -pub type AllModulesExported = AllPallets; +pub type AllModulesExported = AllPalletsWithSystem; construct_runtime!( pub enum Runtime where @@ -391,6 +388,9 @@ construct_runtime!( Contracts: pallet_contracts::{Pallet, Storage, Event}, PolymeshContracts: polymesh_contracts::{Pallet, Call, Storage, Event}, + // Preimage register. Used by `pallet_scheduler`. + Preimage: pallet_preimage::{Pallet, Call, Storage, Event}, + TestUtils: pallet_test_utils::{Pallet, Call, Storage, Event } = 50, } ); diff --git a/pallets/runtime/common/Cargo.toml b/pallets/runtime/common/Cargo.toml index 29d04f67f0..709b38da06 100644 --- a/pallets/runtime/common/Cargo.toml +++ b/pallets/runtime/common/Cargo.toml @@ -2,7 +2,7 @@ name = "polymesh-runtime-common" version = "1.0.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] polymesh-common-utilities = { path = "../../common", default-features = false } @@ -29,11 +29,11 @@ rand = { version = "0.7.3", default-features = false } smallvec = "1.4.0" # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +sp-core = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } +sp-io = { version = "6.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } frame-support = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } diff --git a/pallets/runtime/common/src/impls.rs b/pallets/runtime/common/src/impls.rs index cda70721f9..d5792e21ad 100644 --- a/pallets/runtime/common/src/impls.rs +++ b/pallets/runtime/common/src/impls.rs @@ -50,7 +50,9 @@ where ::AccountId: Into, { fn on_nonzero_unbalanced(amount: NegativeImbalance) { - >::resolve_creating(&>::author(), amount); + if let Some(author) = authorship::Pallet::::author() { + >::resolve_creating(&author, amount); + } } } diff --git a/pallets/runtime/common/src/lib.rs b/pallets/runtime/common/src/lib.rs index 8bb242fe32..a0f5a32905 100644 --- a/pallets/runtime/common/src/lib.rs +++ b/pallets/runtime/common/src/lib.rs @@ -96,10 +96,10 @@ parameter_types! { pub const SignedClaimHandicap: u32 = 2; /// The balance every contract needs to deposit to stay alive indefinitely. pub const DepositPerContract: u128 = 10 * CENTS; - /// The balance a contract needs to deposit per storage byte to stay alive indefinitely. - pub const DepositPerStorageByte: u128 = deposit(0, 1); /// The balance a contract needs to deposit per storage item to stay alive indefinitely. - pub const DepositPerStorageItem: u128 = deposit(1, 0); + pub const DepositPerItem: u128 = deposit(1, 0); + /// The balance a contract needs to deposit per storage byte to stay alive indefinitely. + pub const DepositPerByte: u128 = deposit(0, 1); /// The maximum nesting level of a call/instantiate stack. pub const ContractsMaxDepth: u32 = 32; /// The maximum size of a storage value and event payload in bytes. diff --git a/pallets/runtime/common/src/runtime.rs b/pallets/runtime/common/src/runtime.rs index a50a0d0cc6..6fa104716e 100644 --- a/pallets/runtime/common/src/runtime.rs +++ b/pallets/runtime/common/src/runtime.rs @@ -84,6 +84,7 @@ macro_rules! misc_pallet_impls { type AccountData = polymesh_common_utilities::traits::balances::AccountData; type SystemWeightInfo = polymesh_weights::frame_system::WeightInfo; type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; } impl pallet_base::Config for Runtime { @@ -334,14 +335,16 @@ macro_rules! misc_pallet_impls { // which won't swap the current identity, // so we need `Nothing` to basically disable that feature. type CallFilter = frame_support::traits::Nothing; + type DepositPerItem = polymesh_runtime_common::DepositPerItem; + type DepositPerByte = polymesh_runtime_common::DepositPerByte; type CallStack = [pallet_contracts::Frame; 31]; type WeightPrice = pallet_transaction_payment::Pallet; type WeightInfo = pallet_contracts::weights::SubstrateWeight; type ChainExtension = polymesh_contracts::Pallet; type Schedule = Schedule; - type ContractDeposit = ContractDeposit; type DeletionQueueDepth = DeletionQueueDepth; type DeletionWeightLimit = DeletionWeightLimit; + type AddressGenerator = pallet_contracts::DefaultAddressGenerator; } impl From> for Call { fn from(call: polymesh_contracts::CommonCall) -> Self { @@ -393,6 +396,24 @@ macro_rules! misc_pallet_impls { type MaxScheduledPerBlock = MaxScheduledPerBlock; type WeightInfo = polymesh_weights::pallet_scheduler::WeightInfo; type OriginPrivilegeCmp = frame_support::traits::EqualPrivilegeOnly; + type PreimageProvider = Preimage; + type NoPreimagePostponement = NoPreimagePostponement; + } + + parameter_types! { + pub const PreimageMaxSize: u32 = 4096 * 1024; + pub const PreimageBaseDeposit: Balance = polymesh_runtime_common::deposit(2, 64); + pub const PreimageByteDeposit: Balance = polymesh_runtime_common::deposit(0, 1); + } + + impl pallet_preimage::Config for Runtime { + type WeightInfo = polymesh_weights::pallet_preimage::WeightInfo; + type Event = Event; + type Currency = Balances; + type ManagerOrigin = polymesh_primitives::EnsureRoot; + type MaxSize = PreimageMaxSize; + type BaseDeposit = PreimageBaseDeposit; + type ByteDeposit = PreimageByteDeposit; } impl pallet_offences::Config for Runtime { @@ -527,7 +548,6 @@ macro_rules! runtime_apis { ($($extra:item)*) => { use node_rpc_runtime_api::asset as rpc_api_asset; use sp_inherents::{CheckInherentsResult, InherentData}; - //use pallet_contracts_primitives::ContractExecResult; use pallet_identity::types::{AssetDidResult, CddStatus, RpcDidRecords, DidStatus, KeyIdentityData}; use pallet_pips::{Vote, VoteCount}; use pallet_protocol_fee_rpc_runtime_api::CappedFee; @@ -566,9 +586,29 @@ macro_rules! runtime_apis { Block, frame_system::ChainContext, Runtime, - AllPallets, + AllPalletsWithSystem, + MigrationV4toV5, >; + // Trait needed for frame-system migration. + impl frame_system::migrations::V2ToV3 for Runtime { + type Pallet = frame_system::Pallet; + type AccountId = polymesh_primitives::AccountId; + type Index = polymesh_primitives::Index; + type AccountData = polymesh_common_utilities::traits::balances::AccountData; + } + + // Polymesh V4 -> V5 runtime migrations. + pub struct MigrationV4toV5; + impl frame_support::traits::OnRuntimeUpgrade for MigrationV4toV5 { + fn on_runtime_upgrade() -> Weight { + // System migration. + frame_system::migrations::migrate_from_dual_to_triple_ref_count::() + // Scheduler migration. + .saturating_add(Scheduler::migrate_v2_to_v3()) + } + } + sp_api::impl_runtime_apis! { impl sp_api::Core for Runtime { fn version() -> RuntimeVersion { @@ -737,20 +777,30 @@ macro_rules! runtime_apis { dest: polymesh_primitives::AccountId, value: Balance, gas_limit: u64, + storage_deposit_limit: Option, input_data: Vec, - ) -> pallet_contracts_primitives::ContractExecResult { - Contracts::bare_call(origin, dest, value, gas_limit, input_data, false) + ) -> pallet_contracts_primitives::ContractExecResult { + Contracts::bare_call(origin, dest, value, gas_limit, storage_deposit_limit, input_data, false) } fn instantiate( - sender: polymesh_primitives::AccountId, - endowment: Balance, + origin: polymesh_primitives::AccountId, + value: Balance, gas_limit: u64, + storage_deposit_limit: Option, code: pallet_contracts_primitives::Code, data: Vec, salt: Vec, - ) -> pallet_contracts_primitives::ContractInstantiateResult { - PolymeshContracts::rpc_instantiate(sender, endowment, gas_limit, code, data, salt) + ) -> pallet_contracts_primitives::ContractInstantiateResult { + PolymeshContracts::rpc_instantiate(origin, value, gas_limit, storage_deposit_limit, code, data, salt) + } + + fn upload_code( + origin: polymesh_primitives::AccountId, + code: Vec, + storage_deposit_limit: Option, + ) -> pallet_contracts_primitives::CodeUploadResult { + Contracts::bare_upload_code(origin, code, storage_deposit_limit) } fn get_storage( diff --git a/pallets/runtime/develop/Cargo.toml b/pallets/runtime/develop/Cargo.toml index 8e896b1ba9..93548da382 100644 --- a/pallets/runtime/develop/Cargo.toml +++ b/pallets/runtime/develop/Cargo.toml @@ -2,7 +2,7 @@ name = "polymesh-runtime-develop" version = "0.1.0" authors = ["Polymath Inc."] -edition = "2018" +edition = "2021" build = "build.rs" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -50,13 +50,13 @@ serde = { version = "1.0.104", default-features = false } log = "0.4.8" # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-version = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-core = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } +sp-io = { version = "6.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } +sp-version = { version = "5.0.0", default-features = false } sp-api = { version = "4.0.0-dev", default-features = false } sp-inherents = { version = "4.0.0-dev", default-features = false } sp-offchain = { version = "4.0.0-dev", default-features = false } @@ -66,16 +66,17 @@ sp-session = { version = "4.0.0-dev", default-features = false } sp-authority-discovery = { version = "4.0.0-dev", default-features = false } sp-transaction-pool = { version = "4.0.0-dev", default-features = false } sp-block-builder = { version = "4.0.0-dev", default-features = false } -sp-arithmetic = { version = "4.0.0-dev", default-features = false } +sp-arithmetic = { version = "5.0.0", default-features = false } # pallet-authorship = { version = "4.0.0-dev", default-features = false } pallet-contracts = { version = "4.0.0-dev", default-features = false } -pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false } +pallet-contracts-primitives = { version = "6.0.0", default-features = false } pallet-executive = { package = "frame-executive", version = "4.0.0-dev", default-features = false } pallet-grandpa = { version = "4.0.0-dev", default-features = false } pallet-im-online = { version = "4.0.0-dev", default-features = false } pallet-indices = { version = "4.0.0-dev", default-features = false } pallet-offences = { version = "4.0.0-dev", default-features = false } +pallet-preimage = { version = "4.0.0-dev", default-features = false } pallet-session = { version = "4.0.0-dev", default-features = false } pallet-timestamp = { version = "4.0.0-dev", default-features = false } pallet-babe = { version = "4.0.0-dev", default-features = false } @@ -102,6 +103,9 @@ frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional frame-system-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } hex-literal = { version = "0.3.1", optional = true } +# Import 'getrandom' here to enable feature `getrandom/js` for wasm builds. +getrandom = { version = "0.2.6", default-features = false, optional = true } + [build-dependencies] polymesh-build-tool = { path = "../build_tool", default-features = false } @@ -123,7 +127,6 @@ std = [ "codec/std", "frame-benchmarking/std", "frame-support/std", - "frame-system-benchmarking/std", "frame-system-rpc-runtime-api/std", "frame-system/std", "node-rpc-runtime-api/std", @@ -151,6 +154,7 @@ std = [ "pallet-multisig/std", "pallet-offences/std", "pallet-permissions/std", + "pallet-preimage/std", "pallet-pips/std", "pallet-portfolio/std", "pallet-protocol-fee-rpc-runtime-api/std", @@ -194,13 +198,15 @@ std = [ "polymesh-extensions/std", ] runtime-benchmarks = [ - "frame-benchmarking", + "getrandom/js", + "frame-benchmarking/runtime-benchmarks", "frame-support/runtime-benchmarks", "frame-system-benchmarking", "frame-system/runtime-benchmarks", "pallet-babe/runtime-benchmarks", "pallet-indices/runtime-benchmarks", "pallet-grandpa/runtime-benchmarks", + "pallet-preimage/runtime-benchmarks", "pallet-scheduler/runtime-benchmarks", "hex-literal", "pallet-asset/runtime-benchmarks", diff --git a/pallets/runtime/develop/src/runtime.rs b/pallets/runtime/develop/src/runtime.rs index f25308e868..eb1826c0ac 100644 --- a/pallets/runtime/develop/src/runtime.rs +++ b/pallets/runtime/develop/src/runtime.rs @@ -25,7 +25,6 @@ use polymesh_runtime_common::{ runtime::{GovernanceCommittee, BENCHMARK_MAX_INCREASE, VMO}, AvailableBlockRatio, MaximumBlockWeight, NegativeImbalance, }; -use sp_core::u32_trait::{_1, _4}; use sp_runtime::transaction_validity::TransactionPriority; use sp_runtime::{ create_runtime_str, @@ -60,6 +59,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 3, + state_version: 1, }; parameter_types! { @@ -130,15 +130,12 @@ parameter_types! { // Scheduler: pub MaximumSchedulerWeight: Weight = Perbill::from_percent(80) * MaximumBlockWeight::get(); pub const MaxScheduledPerBlock: u32 = 50; + pub const NoPreimagePostponement: Option = Some(10); // Identity: pub const InitialPOLYX: Balance = 0 * POLY; // Contracts: - pub ContractDeposit: Balance = polymesh_runtime_common::deposit( - 1, - >::contract_info_size(), - ); pub Schedule: pallet_contracts::Schedule = Default::default(); pub DeletionWeightLimit: Weight = 500_000_000_000; pub DeletionQueueDepth: u32 = 1024; @@ -149,10 +146,10 @@ parameter_types! { pub type DealWithFees = SplitTwoWays< Balance, NegativeImbalance, - _4, - Treasury, // 4 parts (80%) goes to the treasury. - _1, + Treasury, // 4 parts (80%) goes to the treasury. Author, // 1 part (20%) goes to the block author. + 4, + 1, >; // Staking: @@ -397,6 +394,9 @@ construct_runtime!( Contracts: pallet_contracts::{Pallet, Storage, Event}, PolymeshContracts: polymesh_contracts::{Pallet, Call, Storage, Event}, + // Preimage register. Used by `pallet_scheduler`. + Preimage: pallet_preimage::{Pallet, Call, Storage, Event}, + TestUtils: pallet_test_utils::{Pallet, Call, Storage, Event } = 50, } ); @@ -459,6 +459,7 @@ polymesh_runtime_common::runtime_apis! { add_benchmark!(params, batches, pallet_group, CddServiceProviders); add_benchmark!(params, batches, pallet_statistics, Statistics); add_benchmark!(params, batches, pallet_permissions, Permissions); + add_benchmark!(params, batches, pallet_preimage, Preimage); add_benchmark!(params, batches, pallet_babe, Babe); add_benchmark!(params, batches, pallet_indices, Indices); add_benchmark!(params, batches, pallet_session, SessionBench); @@ -509,6 +510,7 @@ polymesh_runtime_common::runtime_apis! { list_benchmark!(list, extra, pallet_group, CddServiceProviders); list_benchmark!(list, extra, pallet_statistics, Statistics); list_benchmark!(list, extra, pallet_permissions, Permissions); + list_benchmark!(list, extra, pallet_preimage, Preimage); list_benchmark!(list, extra, pallet_babe, Babe); list_benchmark!(list, extra, pallet_indices, Indices); list_benchmark!(list, extra, pallet_session, SessionBench::); diff --git a/pallets/runtime/extensions/Cargo.toml b/pallets/runtime/extensions/Cargo.toml index 8613bcd642..2f7efaec35 100644 --- a/pallets/runtime/extensions/Cargo.toml +++ b/pallets/runtime/extensions/Cargo.toml @@ -2,7 +2,7 @@ name = "polymesh-extensions" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -16,10 +16,10 @@ pallet-permissions = { path = "../../permissions", default-features = false } # Substrate frame-system = { version = "4.0.0-dev", default-features = false } frame-support = { version = "4.0.0-dev", default-features = false } -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-runtime = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } [features] default = ["std"] diff --git a/pallets/runtime/extensions/src/check_weight.rs b/pallets/runtime/extensions/src/check_weight.rs index 0f5f8b91c7..48841909ba 100644 --- a/pallets/runtime/extensions/src/check_weight.rs +++ b/pallets/runtime/extensions/src/check_weight.rs @@ -107,7 +107,7 @@ where } fn post_dispatch( - pre: Self::Pre, + pre: Option, info: &DispatchInfoOf, post_info: &PostDispatchInfoOf, len: usize, diff --git a/pallets/runtime/mainnet/Cargo.toml b/pallets/runtime/mainnet/Cargo.toml index 1216949963..47619ff312 100644 --- a/pallets/runtime/mainnet/Cargo.toml +++ b/pallets/runtime/mainnet/Cargo.toml @@ -2,7 +2,7 @@ name = "polymesh-runtime-mainnet" version = "0.1.0" authors = ["Polymath Inc."] -edition = "2018" +edition = "2021" build = "build.rs" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -58,7 +58,7 @@ serde_derive = { version = "1.0.104", optional = true } smallvec = "1.4.0" # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } frame-support = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } frame-system-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } @@ -66,33 +66,34 @@ pallet-authority-discovery = { version = "4.0.0-dev", default-features = false } pallet-authorship = { version = "4.0.0-dev", default-features = false } pallet-babe = { version = "4.0.0-dev", default-features = false } pallet-contracts = { version = "4.0.0-dev", default-features = false } -pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false} +pallet-contracts-primitives = { version = "6.0.0", default-features = false} pallet-executive = { package = "frame-executive", version = "4.0.0-dev", default-features = false } pallet-grandpa = { version = "4.0.0-dev", default-features = false } pallet-im-online = { version = "4.0.0-dev", default-features = false } pallet-indices = { version = "4.0.0-dev", default-features = false } pallet-offences = { version = "4.0.0-dev", default-features = false } +pallet-preimage = { version = "4.0.0-dev", default-features = false } pallet-randomness-collective-flip = { version = "4.0.0-dev", default-features = false } pallet-scheduler = { version = "4.0.0-dev", default-features = false } pallet-session = { version = "4.0.0-dev", default-features = false } pallet-staking-reward-curve = { version = "4.0.0-dev", default-features = false } pallet-timestamp = { version = "4.0.0-dev", default-features = false } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } sp-api = { version = "4.0.0-dev", default-features = false } -sp-arithmetic = { version = "4.0.0-dev", default-features = false } +sp-arithmetic = { version = "5.0.0", default-features = false } sp-authority-discovery = { version = "4.0.0-dev", default-features = false } sp-block-builder = { version = "4.0.0-dev", default-features = false } sp-consensus-babe = { version = "0.10.0-dev", default-features = false } -sp-core = { version = "4.0.0-dev", default-features = false } +sp-core = { version = "6.0.0", default-features = false } sp-inherents = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "6.0.0", default-features = false } sp-offchain = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } sp-session = { version = "4.0.0-dev", default-features = false } sp-staking = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0", default-features = false } sp-transaction-pool = { version = "4.0.0-dev", default-features = false } -sp-version = { version = "4.0.0-dev", default-features = false } +sp-version = { version = "5.0.0", default-features = false } # Crypto cryptography_core = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, branch = "confidential-identity-v1" } @@ -141,6 +142,7 @@ std = [ "pallet-multisig/std", "pallet-offences/std", "pallet-permissions/std", + "pallet-preimage/std", "pallet-pips/std", "pallet-portfolio/std", "pallet-protocol-fee-rpc-runtime-api/std", diff --git a/pallets/runtime/mainnet/src/runtime.rs b/pallets/runtime/mainnet/src/runtime.rs index b9f2ec661a..b7b744a7f7 100644 --- a/pallets/runtime/mainnet/src/runtime.rs +++ b/pallets/runtime/mainnet/src/runtime.rs @@ -22,7 +22,6 @@ use polymesh_runtime_common::{ runtime::{GovernanceCommittee, BENCHMARK_MAX_INCREASE, VMO}, AvailableBlockRatio, MaximumBlockWeight, NegativeImbalance, }; -use sp_core::u32_trait::{_1, _4}; use sp_runtime::transaction_validity::TransactionPriority; use sp_runtime::{ create_runtime_str, @@ -57,6 +56,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 3, + state_version: 1, }; parameter_types! { @@ -119,15 +119,12 @@ parameter_types! { // Scheduler: pub MaximumSchedulerWeight: Weight = Perbill::from_percent(80) * MaximumBlockWeight::get(); pub const MaxScheduledPerBlock: u32 = 50; + pub const NoPreimagePostponement: Option = Some(10); // Identity: pub const InitialPOLYX: Balance = 0; // Contracts: - pub ContractDeposit: Balance = polymesh_runtime_common::deposit( - 1, - >::contract_info_size(), - ); pub Schedule: pallet_contracts::Schedule = Default::default(); pub DeletionWeightLimit: Weight = 500_000_000_000; pub DeletionQueueDepth: u32 = 1024; @@ -138,10 +135,10 @@ parameter_types! { pub type DealWithFees = SplitTwoWays< Balance, NegativeImbalance, - _4, - Treasury, // 4 parts (80%) goes to the treasury. - _1, + Treasury, // 4 parts (80%) goes to the treasury. Author, // 1 part (20%) goes to the block author. + 4, + 1, >; // Staking: @@ -361,6 +358,9 @@ construct_runtime!( // Contracts Contracts: pallet_contracts::{Pallet, Storage, Event}, PolymeshContracts: polymesh_contracts::{Pallet, Call, Storage, Event}, + + // Preimage register. Used by `pallet_scheduler`. + Preimage: pallet_preimage::{Pallet, Call, Storage, Event}, } ); diff --git a/pallets/runtime/testnet/Cargo.toml b/pallets/runtime/testnet/Cargo.toml index 37e84bd07d..ffd9004190 100644 --- a/pallets/runtime/testnet/Cargo.toml +++ b/pallets/runtime/testnet/Cargo.toml @@ -2,7 +2,7 @@ name = "polymesh-runtime-testnet" version = "0.1.0" authors = ["Polymath Inc."] -edition = "2018" +edition = "2021" build = "build.rs" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -61,13 +61,13 @@ serde = { version = "1.0.104", default-features = false } serde_derive = { version = "1.0.104", optional = true } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-version = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-core = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } +sp-io = { version = "6.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } +sp-version = { version = "5.0.0", default-features = false } sp-api = { version = "4.0.0-dev", default-features = false } sp-inherents = { version = "4.0.0-dev", default-features = false } sp-offchain = { version = "4.0.0-dev", default-features = false } @@ -77,16 +77,17 @@ sp-session = { version = "4.0.0-dev", default-features = false } sp-authority-discovery = { version = "4.0.0-dev", default-features = false } sp-transaction-pool = { version = "4.0.0-dev", default-features = false } sp-block-builder = { version = "4.0.0-dev", default-features = false } -sp-arithmetic = { version = "4.0.0-dev", default-features = false } +sp-arithmetic = { version = "5.0.0", default-features = false } pallet-authorship = { version = "4.0.0-dev", default-features = false } pallet-contracts = { version = "4.0.0-dev", default-features = false } -pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false} +pallet-contracts-primitives = { version = "6.0.0", default-features = false} pallet-executive = { package = "frame-executive", version = "4.0.0-dev", default-features = false } pallet-grandpa = { version = "4.0.0-dev", default-features = false } pallet-im-online = { version = "4.0.0-dev", default-features = false } pallet-indices = { version = "4.0.0-dev", default-features = false } pallet-offences = { version = "4.0.0-dev", default-features = false } +pallet-preimage = { version = "4.0.0-dev", default-features = false } pallet-session = { version = "4.0.0-dev", default-features = false } pallet-timestamp = { version = "4.0.0-dev", default-features = false } pallet-babe = { version = "4.0.0-dev", default-features = false } @@ -142,6 +143,7 @@ std = [ "pallet-multisig/std", "pallet-offences/std", "pallet-permissions/std", + "pallet-preimage/std", "pallet-pips/std", "pallet-portfolio/std", "pallet-protocol-fee-rpc-runtime-api/std", diff --git a/pallets/runtime/testnet/src/runtime.rs b/pallets/runtime/testnet/src/runtime.rs index 32f03ea20d..4851046c72 100644 --- a/pallets/runtime/testnet/src/runtime.rs +++ b/pallets/runtime/testnet/src/runtime.rs @@ -27,7 +27,6 @@ use polymesh_runtime_common::{ runtime::{GovernanceCommittee, BENCHMARK_MAX_INCREASE, VMO}, AvailableBlockRatio, MaximumBlockWeight, NegativeImbalance, }; -use sp_core::u32_trait::{_1, _4}; use sp_runtime::transaction_validity::TransactionPriority; use sp_runtime::{ create_runtime_str, @@ -62,6 +61,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 3, + state_version: 1, }; parameter_types! { @@ -134,15 +134,12 @@ parameter_types! { // Scheduler: pub MaximumSchedulerWeight: Weight = Perbill::from_percent(80) * MaximumBlockWeight::get(); pub const MaxScheduledPerBlock: u32 = 50; + pub const NoPreimagePostponement: Option = Some(10); // Identity: pub const InitialPOLYX: Balance = 100_000 * POLY; // Contracts: - pub ContractDeposit: Balance = polymesh_runtime_common::deposit( - 1, - >::contract_info_size(), - ); pub Schedule: pallet_contracts::Schedule = Default::default(); pub DeletionWeightLimit: Weight = 500_000_000_000; pub DeletionQueueDepth: u32 = 1024; @@ -153,10 +150,10 @@ parameter_types! { pub type DealWithFees = SplitTwoWays< Balance, NegativeImbalance, - _4, - Treasury, // 4 parts (80%) goes to the treasury. - _1, + Treasury, // 4 parts (80%) goes to the treasury. Author, // 1 part (20%) goes to the block author. + 4, + 1, >; // Staking: @@ -303,7 +300,7 @@ impl pallet_test_utils::Config for Runtime { type WeightInfo = polymesh_weights::pallet_test_utils::WeightInfo; } -pub type AllModulesExported = AllPallets; +pub type AllModulesExported = AllPalletsWithSystem; construct_runtime!( pub enum Runtime where @@ -392,6 +389,9 @@ construct_runtime!( Contracts: pallet_contracts::{Pallet, Storage, Event}, PolymeshContracts: polymesh_contracts::{Pallet, Call, Storage, Event}, + // Preimage register. Used by `pallet_scheduler`. + Preimage: pallet_preimage::{Pallet, Call, Storage, Event}, + TestUtils: pallet_test_utils::{Pallet, Call, Storage, Event } = 50, } ); diff --git a/pallets/runtime/tests/Cargo.toml b/pallets/runtime/tests/Cargo.toml index 8d9bd6bc46..1eeceb1562 100644 --- a/pallets/runtime/tests/Cargo.toml +++ b/pallets/runtime/tests/Cargo.toml @@ -2,7 +2,7 @@ name = "polymesh-runtime-tests" version = "1.0.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] confidential_identity = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, branch = "confidential-identity-v1" } @@ -53,63 +53,67 @@ chrono = "0.4" hex-literal = "0.3.0" smallvec = "1.4.1" lazy_static = "1.4.0" -parking_lot = "0.11.1" +parking_lot = "0.12.0" env_logger = "0.7" serde_json = '1.0.48' log = "0.4.8" # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } frame-benchmarking = { version = "4.0.0-dev", optional = true } frame-support = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } frame-system-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } +frame-election-provider-support = { version = "4.0.0-dev", default-features = false } ink_primitives = { git = "https://github.com/paritytech/ink", tag = "v2.1.0", default-features = false } pallet-authority-discovery = { version = "4.0.0-dev", default-features = false } pallet-authorship = { version = "4.0.0-dev", default-features = false } pallet-babe = { version = "4.0.0-dev", default-features = false } pallet-contracts = { version = "4.0.0-dev", default-features = false } -pallet-contracts-primitives = { version = "4.0.0-dev", default-features = false } +pallet-contracts-primitives = { version = "6.0.0", default-features = false } pallet-contracts-rpc-runtime-api = { version = "4.0.0-dev", default-features = false } pallet-executive = { package = "frame-executive", version = "4.0.0-dev", default-features = false } pallet-grandpa = { version = "4.0.0-dev", default-features = false } pallet-im-online = { version = "4.0.0-dev", default-features = false } pallet-indices = { version = "4.0.0-dev", default-features = false } pallet-offences = { version = "4.0.0-dev", default-features = false } +pallet-preimage = { version = "4.0.0-dev", default-features = false } pallet-randomness-collective-flip = { version = "4.0.0-dev", default-features = false } pallet-scheduler = { version = "4.0.0-dev", default-features = false } pallet-session = { version = "4.0.0-dev", default-features = false, features = ["historical"] } pallet-staking-reward-curve = { version = "4.0.0-dev", default-features = false } pallet-timestamp = { version = "4.0.0-dev", default-features = false } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } sp-api = { version = "4.0.0-dev", default-features = false } -sp-arithmetic = { version = "4.0.0-dev", default-features = false } +sp-arithmetic = { version = "5.0.0", default-features = false } sp-authority-discovery = { version = "4.0.0-dev", default-features = false } sp-block-builder = { version = "4.0.0-dev", default-features = false } sp-consensus-babe = { version = "0.10.0-dev", default-features = false } -sp-core = { version = "4.0.0-dev", default-features = false } +sp-core = { version = "6.0.0", default-features = false } sp-inherents = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "6.0.0", default-features = false } sp-npos-elections = { version = "4.0.0-dev", default-features = false } sp-offchain = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } sp-session = { version = "4.0.0-dev", default-features = false } sp-staking = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0", default-features = false } sp-transaction-pool = { version = "4.0.0-dev", default-features = false } -sp-version = { version = "4.0.0-dev", default-features = false } +sp-version = { version = "5.0.0", default-features = false } -test_client = { package = "substrate-test-runtime-client", git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop", optional = true } +test_client = { package = "substrate-test-runtime-client", git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05", optional = true } substrate-test-utils = { version = "4.0.0-dev", optional = true } [dev-dependencies] libsecp256k1 = { version = "0.6", default-features = false } wat = "1.0" -sp-tracing = { version = "4.0.0-dev", default-features = false } +sp-tracing = { version = "5.0.0", default-features = false } [features] default = ["std", "equalize"] +default_identity = [ "polymesh-common-utilities/default_identity" ] + equalize = [] only-staking = [] @@ -126,9 +130,9 @@ std = [ "avx2_backend", "cryptography_core/std", "confidential_identity/std", - "frame-benchmarking/std", "frame-support/std", "frame-system/std", + "frame-election-provider-support/std", "ink_primitives/std", "pallet-asset/std", "pallet-authorship/std", @@ -147,6 +151,7 @@ std = [ "pallet-identity/std", "pallet-multisig/std", "pallet-permissions/std", + "pallet-preimage/std", "pallet-pips/std", "pallet-portfolio/std", "pallet-relayer/std", @@ -176,5 +181,5 @@ std = [ "test_client", ] runtime-benchmarks = [ - "frame-benchmarking", + "frame-benchmarking/runtime-benchmarks", ] diff --git a/pallets/runtime/tests/exec_macro/Cargo.toml b/pallets/runtime/tests/exec_macro/Cargo.toml index f97394852c..9e7d1f465b 100644 --- a/pallets/runtime/tests/exec_macro/Cargo.toml +++ b/pallets/runtime/tests/exec_macro/Cargo.toml @@ -2,7 +2,7 @@ name = "polymesh-exec-macro" version = "1.0.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [lib] proc-macro = true diff --git a/pallets/runtime/tests/src/bridge.rs b/pallets/runtime/tests/src/bridge.rs index 57f5ed6802..3aa6f21d00 100644 --- a/pallets/runtime/tests/src/bridge.rs +++ b/pallets/runtime/tests/src/bridge.rs @@ -28,7 +28,8 @@ type BridgeTxDetail = GBridgeTxDetail; const AMOUNT: u128 = 1_000_000_000; const AMOUNT_OVER_LIMIT: u128 = 1_000_000_000_000_000_000_000; -const WEIGHT_EXPECTED: u64 = 950000000; +const WEIGHT_EXPECTED_1: u64 = 766606000; +const WEIGHT_EXPECTED_2: u64 = 1556059000; const MIN_SIGNS_REQUIRED: u64 = 2; fn test_with_controller(test: &dyn Fn(&[AccountId])) { @@ -229,7 +230,7 @@ fn do_admin_freeze_and_unfreeze_bridge(signers: &[AccountId]) { // Weight calculation when bridge is freezed. ensure_tx_status(alice.clone(), 1, BridgeTxStatus::Timelocked); - assert_eq!(next_block(), WEIGHT_EXPECTED); + assert_eq!(next_block(), WEIGHT_EXPECTED_1); // Unfreeze the bridge. assert_ok!(Bridge::unfreeze(admin)); @@ -246,7 +247,7 @@ fn do_admin_freeze_and_unfreeze_bridge(signers: &[AccountId]) { execution_block - System::block_number() - 1, starting_alices_balance ), - WEIGHT_EXPECTED + WEIGHT_EXPECTED_2 ); // Now the tokens are issued. diff --git a/pallets/runtime/tests/src/contracts_test.rs b/pallets/runtime/tests/src/contracts_test.rs index 3991583a95..2f241a7726 100644 --- a/pallets/runtime/tests/src/contracts_test.rs +++ b/pallets/runtime/tests/src/contracts_test.rs @@ -67,8 +67,9 @@ fn misc_polymesh_extensions() { let instantiate = || { Contracts::instantiate_with_code_perms( owner.origin(), - FrameContracts::subsistence_threshold(), + Balances::minimum_balance(), GAS_LIMIT, + None, code.clone(), vec![], salt.clone(), @@ -76,7 +77,7 @@ fn misc_polymesh_extensions() { ) }; let derive_key = |key, salt| FrameContracts::contract_address(&key, &hash, salt); - let call = |key, data| Contracts::call(user.origin(), key, 0, GAS_LIMIT, data); + let call = |key, data| Contracts::call(user.origin(), key, 0, GAS_LIMIT, None, data); let assert_has_secondary_key = |key: AccountId| { let data = Identity::get_key_identity_data(key).unwrap(); assert_eq!(data.identity, owner.did); diff --git a/pallets/runtime/tests/src/lib.rs b/pallets/runtime/tests/src/lib.rs index effed98f7a..38ca847828 100644 --- a/pallets/runtime/tests/src/lib.rs +++ b/pallets/runtime/tests/src/lib.rs @@ -1,6 +1,5 @@ #![allow(dead_code)] #![feature(crate_visibility_modifier)] -#![feature(bool_to_option)] #![feature(assert_matches)] #![cfg(test)] diff --git a/pallets/runtime/tests/src/pips_test.rs b/pallets/runtime/tests/src/pips_test.rs index 1ef53f63b2..6b30f3ce58 100644 --- a/pallets/runtime/tests/src/pips_test.rs +++ b/pallets/runtime/tests/src/pips_test.rs @@ -1004,8 +1004,8 @@ fn scheduled_proposal(proposer: User, member: User, deposit: u128) -> PipId { vec![(next_id, SnapshotResult::Approve)] )); assert_event_exists!( - EventTest::Scheduler(pallet_scheduler::Event::Scheduled(b, ..)), - *b == System::block_number() + Pips::default_enactment_period() + EventTest::Scheduler(pallet_scheduler::Event::Scheduled { when, .. }), + *when == System::block_number() + Pips::default_enactment_period() ); assert_state(next_id, false, ProposalState::Scheduled); assert_eq!(Pips::active_pip_count(), active); @@ -1361,7 +1361,7 @@ fn reject_proposal_will_unschedule() { assert_ok!(Pips::reject_proposal(gc_vmo(), id)); assert_eq!(Pips::pip_to_schedule(id), None); assert_event_exists!( - EventTest::Scheduler(pallet_scheduler::Event::Canceled(when, ..)), + EventTest::Scheduler(pallet_scheduler::Event::Canceled { when, .. }), *when == scheduled_at ); }; @@ -1499,7 +1499,9 @@ fn reschedule_execution_works() { // Regression test for . assert_eq!(Pips::active_pip_count(), 1); // Rescheduling currently works by cancelling + then scheduling again. Verify this. - assert_event_exists!(EventTest::Scheduler(pallet_scheduler::Event::Canceled(..))); + assert_event_exists!(EventTest::Scheduler( + pallet_scheduler::Event::Canceled { .. } + )); assert_eq!(Pips::pip_to_schedule(id).unwrap(), next); assert_eq!(Agenda::get(scheduled_at), vec![None]); assert_matches!(&*Agenda::get(next), [Some(_)]); diff --git a/pallets/runtime/tests/src/relayer_test.rs b/pallets/runtime/tests/src/relayer_test.rs index 5517c5e29e..9c841623cb 100644 --- a/pallets/runtime/tests/src/relayer_test.rs +++ b/pallets/runtime/tests/src/relayer_test.rs @@ -434,7 +434,7 @@ fn do_user_remove_paying_key_transaction_fee_test() { // 3. Call `post_dispatch`. assert!(ChargeTransactionPayment::post_dispatch( - pre, + Some(pre), &call_info, &post_info_from_weight(5), len, @@ -524,7 +524,7 @@ fn do_relayer_transaction_and_protocol_fees_test() { // 3. Call `post_dispatch`. assert!(ChargeTransactionPayment::post_dispatch( - pre, + Some(pre), &call_info, &post_info_from_weight(50), len, diff --git a/pallets/runtime/tests/src/staking/mock.rs b/pallets/runtime/tests/src/staking/mock.rs index c442191ea2..87f60e9c56 100644 --- a/pallets/runtime/tests/src/staking/mock.rs +++ b/pallets/runtime/tests/src/staking/mock.rs @@ -19,6 +19,7 @@ use crate::storage::create_cdd_id; use chrono::prelude::Utc; +use frame_election_provider_support::NposSolution; use frame_support::{ assert_ok, dispatch::DispatchResult, @@ -54,24 +55,20 @@ use polymesh_primitives::{ }; use sp_core::H256; use sp_npos_elections::{ - reduce, to_supports, ElectionScore, EvaluateSupport, ExtendedBalance, NposSolution, - StakedAssignment, + reduce, to_supports, ElectionScore, EvaluateSupport, ExtendedBalance, StakedAssignment, }; use sp_runtime::{ curve::PiecewiseLinear, testing::{Header, TestSignature, TestXt, UintAuthorityId}, - traits::{Convert, IdentityLookup, SaturatedConversion, Zero}, + traits::{IdentityLookup, Zero}, transaction_validity::{InvalidTransaction, TransactionValidity, ValidTransaction}, KeyTypeId, Perbill, Permill, }; use sp_staking::{ - offence::{OffenceDetails, OnOffenceHandler}, + offence::{DisableStrategy, OffenceDetails, OnOffenceHandler}, SessionIndex, }; -use std::{ - cell::RefCell, - collections::{BTreeMap, HashSet}, -}; +use std::{cell::RefCell, collections::BTreeMap}; pub const INIT_TIMESTAMP: u64 = 30_000; pub const BLOCK_TIME: u64 = 1000; @@ -82,23 +79,6 @@ pub(crate) type AccountIndex = u64; pub(crate) type BlockNumber = u64; pub(crate) type Balance = u128; -/// Simple structure that exposes how u64 currency can be represented as... u64. -pub struct CurrencyToVoteHandler; -impl Convert for CurrencyToVoteHandler { - fn convert(x: Balance) -> u64 { - x.saturated_into() - } -} -impl Convert for CurrencyToVoteHandler { - fn convert(x: u128) -> Balance { - x - } -} - -thread_local! { - static SESSION: RefCell<(Vec, HashSet)> = RefCell::new(Default::default()); -} - /// Another session handler struct to test on_disabled. pub struct OtherSessionHandler; impl OneSessionHandler for OtherSessionHandler { @@ -111,23 +91,14 @@ impl OneSessionHandler for OtherSessionHandler { { } - fn on_new_session<'a, I: 'a>(_: bool, validators: I, _: I) + fn on_new_session<'a, I: 'a>(_: bool, _: I, _: I) where I: Iterator, AccountId: 'a, { - SESSION.with(|x| { - *x.borrow_mut() = (validators.map(|x| x.0.clone()).collect(), HashSet::new()) - }); } - fn on_disabled(validator_index: u32) { - SESSION.with(|d| { - let mut d = d.borrow_mut(); - let value = d.0[validator_index as usize]; - d.1.insert(value); - }) - } + fn on_disabled(_validator_index: u32) {} } impl sp_runtime::BoundToRuntimeAppPublic for OtherSessionHandler { @@ -136,7 +107,12 @@ impl sp_runtime::BoundToRuntimeAppPublic for OtherSessionHandler { pub fn is_disabled(controller: AccountId) -> bool { let stash = Staking::ledger(&controller).unwrap().stash; - SESSION.with(|d| d.borrow().1.contains(&stash)) + let validator_index = match Session::validators().iter().position(|v| *v == stash) { + Some(index) => index as u32, + None => return false, + }; + + Session::disabled_validators().contains(&validator_index) } type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; @@ -155,9 +131,11 @@ frame_support::construct_runtime!( Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, Staking: staking::{Pallet, Call, Config, Storage, Event, ValidateUnsigned}, Session: pallet_session::{Pallet, Call, Storage, Event, Config}, + Historical: pallet_session::historical::{Pallet}, Identity: pallet_identity::{Pallet, Call, Storage, Event, Config}, CddServiceProviders: pallet_group::::{Pallet, Call, Storage, Event, Config}, ProtocolFee: pallet_protocol_fee::{Pallet, Call, Storage, Event, Config}, + Preimage: pallet_preimage::{Pallet, Call, Storage, Event}, Scheduler: pallet_scheduler::{Pallet, Call, Storage, Event}, Treasury: pallet_treasury::{Pallet, Call, Event}, PolymeshCommittee: pallet_committee::::{Pallet, Call, Storage, Origin, Event, Config}, @@ -220,6 +198,7 @@ impl frame_system::Config for Test { type SystemWeightInfo = (); type OnSetCode = (); type SS58Prefix = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; } impl pallet_base::Config for Test { @@ -351,6 +330,7 @@ parameter_types! { pub const InitialPOLYX: Balance = 0; pub MaximumSchedulerWeight: Weight = Perbill::from_percent(80) * MaximumBlockWeight::get(); pub const MaxScheduledPerBlock: u32 = 50; + pub const NoPreimagePostponement: Option = Some(10); } impl pallet_scheduler::Config for Test { @@ -363,6 +343,24 @@ impl pallet_scheduler::Config for Test { type MaxScheduledPerBlock = MaxScheduledPerBlock; type WeightInfo = (); type OriginPrivilegeCmp = frame_support::traits::EqualPrivilegeOnly; + type PreimageProvider = Preimage; + type NoPreimagePostponement = NoPreimagePostponement; +} + +parameter_types! { + pub const PreimageMaxSize: u32 = 4096 * 1024; + pub const PreimageBaseDeposit: Balance = polymesh_runtime_common::deposit(2, 64); + pub const PreimageByteDeposit: Balance = polymesh_runtime_common::deposit(0, 1); +} + +impl pallet_preimage::Config for Test { + type WeightInfo = polymesh_weights::pallet_preimage::WeightInfo; + type Event = Event; + type Currency = Balances; + type ManagerOrigin = EnsureRoot; + type MaxSize = PreimageMaxSize; + type BaseDeposit = PreimageBaseDeposit; + type ByteDeposit = PreimageByteDeposit; } impl pallet_test_utils::Config for Test { @@ -901,7 +899,7 @@ impl ExtBuilder { ]; } let _ = pallet_staking::GenesisConfig:: { - stakers, + stakers: stakers.clone(), validator_count: self.validator_count, minimum_validator_count: self.minimum_validator_count, invulnerables: self.invulnerables, @@ -912,26 +910,23 @@ impl ExtBuilder { .assimilate_storage(&mut storage); let _ = pallet_session::GenesisConfig:: { - keys: validators - .iter() - .map(|x| { - ( - *x, - *x, - SessionKeys { - other: UintAuthorityId(*x as u64), - }, - ) - }) - .collect(), + keys: if self.has_stakers { + // set the keys for the first session. + stakers + .into_iter() + .map(|(_, id, ..)| (id, id, SessionKeys { other: id.into() })) + .collect() + } else { + // set some dummy validators in genesis. + validators + .into_iter() + .map(|id| (id, id, SessionKeys { other: id.into() })) + .collect() + }, } .assimilate_storage(&mut storage); let mut ext = sp_io::TestExternalities::from(storage); - ext.execute_with(|| { - let validators = Session::validators(); - SESSION.with(|x| *x.borrow_mut() = (validators.clone(), HashSet::new())); - }); if self.initialize_first_session { // We consider all test to start after timestamp is initialized This must be ensured by @@ -1130,6 +1125,11 @@ pub fn bond_validator_with_intended_count( Origin::signed(ctrl), ValidatorPrefs::default() )); + assert_ok!(Session::set_keys( + Origin::signed(ctrl), + SessionKeys { other: ctrl.into() }, + vec![] + )); } pub fn bond(stash: AccountId, ctrl: AccountId, val: Balance) { @@ -1295,7 +1295,12 @@ pub(crate) fn on_offence_in_era( let bonded_eras = staking::BondedEras::get(); for &(bonded_era, start_session) in bonded_eras.iter() { if bonded_era == era { - let _ = Staking::on_offence(offenders, slash_fraction, start_session); + let _ = Staking::on_offence( + offenders, + slash_fraction, + start_session, + DisableStrategy::WhenSlashed, + ); return; } else if bonded_era > era { break; @@ -1307,6 +1312,7 @@ pub(crate) fn on_offence_in_era( offenders, slash_fraction, Staking::eras_start_session_index(era).unwrap(), + DisableStrategy::WhenSlashed, ); } else { panic!("cannot slash in era {}", era); @@ -1413,11 +1419,7 @@ pub(crate) fn horrible_phragmen_with_post_processing( let support = to_supports::(&staked_assignment); let score = support.evaluate(); - assert!(sp_npos_elections::is_score_better::( - better_score, - score, - MinSolutionScoreBump::get(), - )); + assert!(better_score.strict_threshold_better(score, MinSolutionScoreBump::get())); score }; diff --git a/pallets/runtime/tests/src/staking/mod.rs b/pallets/runtime/tests/src/staking/mod.rs index 281f72ed48..b8088b9abe 100644 --- a/pallets/runtime/tests/src/staking/mod.rs +++ b/pallets/runtime/tests/src/staking/mod.rs @@ -114,7 +114,7 @@ use sp_runtime::{ Perbill, }; use sp_staking::{ - offence::{OffenceDetails, OnOffenceHandler}, + offence::{DisableStrategy, OffenceDetails, OnOffenceHandler}, SessionIndex, }; @@ -456,6 +456,11 @@ fn staking_should_work() { Origin::signed(4), ValidatorPrefs::default() )); + assert_ok!(Session::set_keys( + Origin::signed(4), + SessionKeys { other: 4.into() }, + vec![] + )); // No effects will be seen so far. assert_eq_uvec!(validator_controllers(), vec![20, 10]); @@ -1966,6 +1971,11 @@ fn switching_roles() { Origin::signed(6), ValidatorPrefs::default() )); + assert_ok!(Session::set_keys( + Origin::signed(6), + SessionKeys { other: 6.into() }, + vec![] + )); mock::start_active_era(1); @@ -1978,6 +1988,11 @@ fn switching_roles() { Origin::signed(2), ValidatorPrefs::default() )); + assert_ok!(Session::set_keys( + Origin::signed(2), + SessionKeys { other: 2.into() }, + vec![] + )); // new stakes: // 10: 1000 self vote // 20: 1000 self vote + 250 vote @@ -2121,6 +2136,11 @@ fn bond_with_little_staked_value_bounded() { Origin::signed(2), ValidatorPrefs::default() )); + assert_ok!(Session::set_keys( + Origin::signed(2), + SessionKeys { other: 2.into() }, + vec![] + )); // 1 era worth of reward. BUT, we set the timestamp after on_initialize, so outdated by // one block. @@ -2303,7 +2323,7 @@ fn reward_from_authorship_event_handler_works() { ExtBuilder::default().build_and_execute(|| { use pallet_authorship::EventHandler; - assert_eq!(>::author(), 11); + assert_eq!(>::author(), Some(11)); >::note_author(11); >::note_uncle(21, 1); @@ -4305,7 +4325,7 @@ mod offchain_phragmen { run_to_block(12); let (compact, winners, mut score) = prepare_submission_with(true, true, 2, |_| {}); - score[0] += 1; + score.minimal_stake += 1; assert_noop!( submit_solution(Origin::signed(10), winners, compact, score,), @@ -4924,7 +4944,7 @@ fn offences_weight_calculated_correctly() { ExtBuilder::default().nominate(true).build_and_execute(|| { // On offence with zero offenders: 4 Reads, 1 Write let zero_offence_weight = ::DbWeight::get().reads_writes(4, 1); - assert_eq!(Staking::on_offence(&[], &[Perbill::from_percent(50)], 0), zero_offence_weight); + assert_eq!(Staking::on_offence(&[], &[Perbill::from_percent(50)], 0, DisableStrategy::WhenSlashed), zero_offence_weight); // On Offence with N offenders, Unapplied: 4 Reads, 1 Write + 4 Reads, 5 Writes let n_offence_unapplied_weight = ::DbWeight::get().reads_writes(4, 1) @@ -4937,7 +4957,7 @@ fn offences_weight_calculated_correctly() { reporters: vec![], } ).collect(); - assert_eq!(Staking::on_offence(&offenders, &[Perbill::from_percent(50)], 0), n_offence_unapplied_weight); + assert_eq!(Staking::on_offence(&offenders, &[Perbill::from_percent(50)], 0, DisableStrategy::WhenSlashed), n_offence_unapplied_weight); // On Offence with one offenders, Applied let one_offender = [ @@ -4955,7 +4975,7 @@ fn offences_weight_calculated_correctly() { // `reward_cost` * reporters (1) + ::DbWeight::get().reads_writes(2, 2); - assert_eq!(Staking::on_offence(&one_offender, &[Perbill::from_percent(50)], 0), one_offence_unapplied_weight); + assert_eq!(Staking::on_offence(&one_offender, &[Perbill::from_percent(50)], 0, DisableStrategy::WhenSlashed), one_offence_unapplied_weight); }); } diff --git a/pallets/runtime/tests/src/storage.rs b/pallets/runtime/tests/src/storage.rs index 7976ccfa0f..73c8ee7093 100644 --- a/pallets/runtime/tests/src/storage.rs +++ b/pallets/runtime/tests/src/storage.rs @@ -125,6 +125,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 7, + state_version: 1, }; impl_opaque_keys! { @@ -269,6 +270,9 @@ frame_support::construct_runtime!( // Contracts Contracts: pallet_contracts::{Pallet, Storage, Event} = 19, PolymeshContracts: polymesh_contracts::{Pallet, Call, Storage, Event} = 20, + + // Preimage register. Used by `pallet_scheduler`. + Preimage: pallet_preimage::{Pallet, Call, Storage, Event} = 55, } ); @@ -422,6 +426,7 @@ parameter_types! { pub MaximumSchedulerWeight: Weight = Perbill::from_percent(80) * MaximumBlockWeight::get(); pub const MaxScheduledPerBlock: u32 = 50; + pub const NoPreimagePostponement: Option = Some(10); pub const InitialPOLYX: Balance = 41; pub const SignedClaimHandicap: u64 = 2; @@ -433,10 +438,6 @@ parameter_types! { pub const MaxDepth: u32 = 100; pub const MaxValueSize: u32 = 16_384; - pub ContractDeposit: Balance = polymesh_runtime_common::deposit( - 1, - >::contract_info_size(), - ); pub Schedule: pallet_contracts::Schedule = Default::default(); pub DeletionWeightLimit: Weight = 500_000_000_000; pub DeletionQueueDepth: u32 = 1024; diff --git a/pallets/runtime/tests/src/transaction_payment_test.rs b/pallets/runtime/tests/src/transaction_payment_test.rs index 8cd54c2a26..f0dd219712 100644 --- a/pallets/runtime/tests/src/transaction_payment_test.rs +++ b/pallets/runtime/tests/src/transaction_payment_test.rs @@ -84,7 +84,7 @@ fn signed_extension_transaction_payment_work() { assert_eq!(Balances::free_balance(&bob), 1999969001); assert!(ChargeTransactionPayment::::post_dispatch( - pre, + Some(pre), &info_from_weight(5), &default_post_info(), len, @@ -99,7 +99,7 @@ fn signed_extension_transaction_payment_work() { assert_eq!(Balances::free_balance(&alice), 999969001); assert!(ChargeTransactionPayment::::post_dispatch( - pre, + Some(pre), &info_from_weight(100), &post_info_from_weight(50), len, @@ -128,7 +128,7 @@ fn signed_extension_transaction_payment_multiplied_refund_works() { assert_eq!(Balances::free_balance(&user), 999969001); assert!(ChargeTransactionPayment::::post_dispatch( - pre, + Some(pre), &info_from_weight(100), &post_info_from_weight(50), len, @@ -398,7 +398,7 @@ fn actual_weight_higher_than_max_refunds_nothing() { assert_eq!(Balances::free_balance(&user), 999969001); ChargeTransactionPayment::::post_dispatch( - pre, + Some(pre), &info_from_weight(100), &post_info_from_weight(101), len, @@ -431,7 +431,7 @@ fn zero_transfer_on_free_transaction() { .unwrap(); assert_eq!(Balances::total_balance(&user), bal_init); assert!(ChargeTransactionPayment::::post_dispatch( - pre, + Some(pre), &dispatch_info, &default_post_info(), len, @@ -465,7 +465,7 @@ fn refund_consistent_with_actual_weight() { .unwrap(); ChargeTransactionPayment::::post_dispatch( - pre, + Some(pre), &info, &post_info, len, diff --git a/pallets/runtime/tests/src/utility_test.rs b/pallets/runtime/tests/src/utility_test.rs index c93710c9e8..ffd3154c22 100644 --- a/pallets/runtime/tests/src/utility_test.rs +++ b/pallets/runtime/tests/src/utility_test.rs @@ -29,11 +29,11 @@ fn transfer(to: AccountId, amount: u128) -> Call { }) } -const ERROR: DispatchError = DispatchError::Module { +const ERROR: DispatchError = DispatchError::Module(sp_runtime::ModuleError { index: 4, - error: 2, + error: [2, 0, 0, 0], message: None, -}; +}); fn assert_event(event: Event) { assert_eq!( @@ -215,7 +215,7 @@ fn _relay_unhappy_cases() { Utility::relay_tx( origin.clone(), bob.clone(), - Signature::default().into(), + Signature([0; 64]).into(), transaction.clone() ), Error::InvalidSignature @@ -242,12 +242,7 @@ fn _relay_unhappy_cases() { ); assert_noop!( - Utility::relay_tx( - origin.clone(), - bob, - Signature::default().into(), - transaction - ), + Utility::relay_tx(origin.clone(), bob, Signature([0; 64]).into(), transaction), Error::InvalidNonce ); } diff --git a/pallets/settlement/Cargo.toml b/pallets/settlement/Cargo.toml index 9dfd599eb3..43d6ac2618 100644 --- a/pallets/settlement/Cargo.toml +++ b/pallets/settlement/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-settlement" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] polymesh-common-utilities = { path = "../common", default-features = false } @@ -20,16 +20,16 @@ pallet-statistics = { path = "../statistics", default-features = false } serde = { version = "1.0.104", default-features = false } serde_derive = { version = "1.0.104", optional = true, default-features = false } -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } hex-literal = "0.2.1" hex = { version = "0.4.2", optional = true } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-version = { version = "4.0.0-dev", default-features = false } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-core = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } +sp-io = { version = "6.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } +sp-version = { version = "5.0.0", default-features = false } sp-api = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } frame-support = { version = "4.0.0-dev", default-features = false } diff --git a/pallets/settlement/src/lib.rs b/pallets/settlement/src/lib.rs index 105012fcab..0881c5ab71 100644 --- a/pallets/settlement/src/lib.rs +++ b/pallets/settlement/src/lib.rs @@ -1143,26 +1143,29 @@ impl Module { } } - match with_transaction(|| { - Self::unchecked_release_locks(id, &legs); - - for (leg_id, leg_details) in legs.iter().filter(|(leg_id, _)| { - let status = Self::instruction_leg_status(id, leg_id); - status == LegStatus::ExecutionPending - }) { - if >::base_transfer( - leg_details.from, - leg_details.to, - &leg_details.asset, - leg_details.amount, - ) - .is_err() - { - return Err(leg_id); + use frame_support::storage::{with_transaction, TransactionOutcome}; + match with_transaction( + || -> TransactionOutcome, DispatchError>> { + Self::unchecked_release_locks(id, &legs); + + for (leg_id, leg_details) in legs.iter().filter(|(leg_id, _)| { + let status = Self::instruction_leg_status(id, leg_id); + status == LegStatus::ExecutionPending + }) { + if >::base_transfer( + leg_details.from, + leg_details.to, + &leg_details.asset, + leg_details.amount, + ) + .is_err() + { + return TransactionOutcome::Rollback(Ok(Err(*leg_id))); + } } - } - Ok(()) - }) { + TransactionOutcome::Commit(Ok(Ok(()))) + }, + )? { Ok(_) => { Self::deposit_event(RawEvent::InstructionExecuted(SettlementDID.as_id(), id)); } diff --git a/pallets/staking/Cargo.toml b/pallets/staking/Cargo.toml index 30c771fd81..12fb710dc5 100644 --- a/pallets/staking/Cargo.toml +++ b/pallets/staking/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-staking" version = "2.0.0" authors = ["Parity Technologies "] -edition = "2018" +edition = "2021" [dependencies] polymesh-primitives = { path = "../../primitives", default-features = false } @@ -15,16 +15,17 @@ serde = { version = "1.0.104", optional = true } log = "0.4.8" # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false} -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-arithmetic = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-core = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } +sp-io = { version = "6.0.0", default-features = false} +sp-runtime = { version = "6.0.0", default-features = false } +sp-arithmetic = { version = "5.0.0", default-features = false } sp-staking = { version = "4.0.0-dev", default-features = false } frame-support = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } +frame-election-provider-support = { version = "4.0.0-dev", default-features = false } sp-npos-elections = { version = "4.0.0-dev", default-features = false} pallet-session = { features = ["historical"], version = "4.0.0-dev", default-features = false } @@ -37,7 +38,7 @@ rand_chacha = { version = "0.2", default-features = false, optional = true } [dev-dependencies] pallet-staking-reward-curve = { version = "4.0.0-dev", default-features = false } -sp-tracing = "4.0.0-dev" +sp-tracing = "5.0.0" [features] default = ["std"] @@ -51,6 +52,7 @@ std = [ "sp-npos-elections/std", "sp-io/std", "frame-support/std", + "frame-election-provider-support/std", "sp-runtime/std", "sp-staking/std", "pallet-session/std", diff --git a/pallets/staking/rpc/Cargo.toml b/pallets/staking/rpc/Cargo.toml index edea8b0e85..79ef2ed949 100644 --- a/pallets/staking/rpc/Cargo.toml +++ b/pallets/staking/rpc/Cargo.toml @@ -2,15 +2,15 @@ name = "pallet-staking-rpc" version = "2.0.0" authors = ["Anonymous"] -edition = "2018" +edition = "2021" [dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0" } +codec = { package = "parity-scale-codec", version = "3.0.0" } serde = { version = "1.0.104", features = ["derive"] } jsonrpc-core = { version = "18.0.0", features = ["arbitrary_precision"] } jsonrpc-core-client = { version = "18.0.0", features = ["arbitrary_precision"] } jsonrpc-derive = "18.0.0" -sp-runtime = { version = "4.0.0-dev", default_features = false } +sp-runtime = { version = "6.0.0", default_features = false } sp-blockchain = { version = "4.0.0-dev", default_features = false} sp-api = { version = "4.0.0-dev", default_features = false} diff --git a/pallets/staking/rpc/runtime-api/Cargo.toml b/pallets/staking/rpc/runtime-api/Cargo.toml index d799944011..1d17e84b83 100644 --- a/pallets/staking/rpc/runtime-api/Cargo.toml +++ b/pallets/staking/rpc/runtime-api/Cargo.toml @@ -2,11 +2,11 @@ name = "pallet-staking-rpc-runtime-api" version = "2.0.0" authors = ["Anonymous"] -edition = "2018" +edition = "2021" [dependencies] sp-api = { version = "4.0.0-dev", default_features = false} -sp-runtime = { version = "4.0.0-dev", default_features = false} +sp-runtime = { version = "6.0.0", default_features = false} frame-support = { version = "4.0.0-dev", default-features = false } [dev-dependencies] diff --git a/pallets/staking/src/lib.rs b/pallets/staking/src/lib.rs index 5b18ea8cfb..c470843b34 100644 --- a/pallets/staking/src/lib.rs +++ b/pallets/staking/src/lib.rs @@ -296,7 +296,7 @@ pub mod inflation; pub mod weights; use core::fmt; -use crate::_npos::{NposSolution, EvaluateSupport}; +use crate::_feps::NposSolution; use codec::{Decode, Encode, HasCompact}; use frame_support::{ decl_error, decl_event, decl_module, decl_storage, @@ -326,10 +326,14 @@ use pallet_session::historical; use polymesh_common_utilities::{identity::Config as IdentityConfig, Context, GC_DID}; use polymesh_primitives::IdentityId; use scale_info::TypeInfo; +use frame_election_provider_support::{ + generate_solution_type, +}; use sp_npos_elections::{ - generate_solution_type, is_score_better, seq_phragmen, to_support_map, + seq_phragmen, to_support_map, Assignment, ElectionResult as PrimitiveElectionResult, ElectionScore, - ExtendedBalance, PerThing128, Supports, SupportMap, VoteWeight, + EvaluateSupport, ExtendedBalance, + PerThing128, Supports, SupportMap, VoteWeight, }; use sp_runtime::{ curve::PiecewiseLinear, @@ -341,12 +345,13 @@ use sp_runtime::{ InvalidTransaction, TransactionPriority, TransactionSource, TransactionValidity, TransactionValidityError, ValidTransaction, }, + ModuleError, DispatchError, PerU16, Perbill, Percent, Permill, RuntimeDebug, }; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; use sp_staking::{ - offence::{Offence, OffenceDetails, OffenceError, OnOffenceHandler, ReportOffence}, + offence::{DisableStrategy, Offence, OffenceDetails, OffenceError, OnOffenceHandler, ReportOffence}, SessionIndex, }; use sp_std::{ @@ -404,11 +409,12 @@ generate_solution_type!( pub struct CompactAssignments::< VoterIndex = NominatorIndex, TargetIndex = ValidatorIndex, - Accuracy = OffchainAccuracy + Accuracy = OffchainAccuracy, + MaxVoters = frame_support::traits::ConstU32::<10_000> >(16) ); -pub const MAX_NOMINATIONS: u32 = ::LIMIT as u32; +pub const MAX_NOMINATIONS: u32 = ::LIMIT as u32; /// Accuracy used for on-chain election. pub type ChainAccuracy = Perbill; @@ -851,7 +857,7 @@ impl SessionInterface<::AccountId> for T w } fn prune_historical_up_to(up_to: SessionIndex) { - >::prune_up_to(up_to); + >::prune_up_to(up_to); } } @@ -2955,7 +2961,7 @@ impl Module { // assume the given score is valid. Is it better than what we have on-chain, if we have any? if let Some(queued_score) = Self::queued_score() { ensure!( - is_score_better(score, queued_score, T::MinSolutionScoreBump::get()), + score.strict_threshold_better(queued_score, T::MinSolutionScoreBump::get()), Error::::OffchainElectionWeakSubmission.with_weight(T::DbWeight::get().reads(3)), ) } @@ -3483,7 +3489,7 @@ impl Module { ); None } else { - seq_phragmen::<_, Accuracy>( + seq_phragmen( Self::validator_count() as usize, all_validators, all_nominators, @@ -3762,11 +3768,13 @@ where fn note_author(author: T::AccountId) { Self::reward_by_ids(vec![(author, 20)]) } - fn note_uncle(author: T::AccountId, _age: T::BlockNumber) { - Self::reward_by_ids(vec![ - (>::author(), 2), - (author, 1) - ]) + fn note_uncle(uncle_author: T::AccountId, _age: T::BlockNumber) { + // defensive-only: block author must exist. + if let Some(block_author) =>::author() { + Self::reward_by_ids(vec![(block_author, 2), (uncle_author, 1)]) + } else { + crate::log!(warn, "block author not set, this should never happen"); + } } } @@ -3819,6 +3827,7 @@ for Module where offenders: &[OffenceDetails>], slash_fraction: &[Perbill], slash_session: SessionIndex, + _disable_strategy: DisableStrategy, ) -> u64 { // Polymesh-Note: // When slashing is off or allowed for none, set slash fraction to zero. @@ -4001,7 +4010,7 @@ impl frame_support::unsigned::ValidateUnsigned for Module { ValidTransaction::with_tag_prefix("StakingOffchain") // The higher the score[0], the better a solution is. - .priority(T::UnsignedPriority::get().saturating_add(score[0].saturated_into())) + .priority(T::UnsignedPriority::get().saturating_add(score.minimal_stake.saturated_into())) // Defensive only. A single solution can exist in the pool per era. Each validator // will run OCW at most once per era, hence there should never exist more than one // transaction anyhow. @@ -4051,7 +4060,7 @@ fn is_sorted_and_unique(list: &[u32]) -> bool { fn to_invalid(error_with_post_info: DispatchErrorWithPostInfo) -> InvalidTransaction { let error = error_with_post_info.error; let error_number = match error { - DispatchError::Module { error, ..} => error, + DispatchError::Module(ModuleError { error, .. }) => error[0], _ => 0, }; InvalidTransaction::Custom(error_number) diff --git a/pallets/staking/src/offchain_election.rs b/pallets/staking/src/offchain_election.rs index 813f371168..3273f56201 100644 --- a/pallets/staking/src/offchain_election.rs +++ b/pallets/staking/src/offchain_election.rs @@ -17,7 +17,7 @@ //! Helpers for offchain worker election. -use crate::_npos::{NposSolution, EvaluateSupport}; +use crate::_feps::NposSolution; use crate::{ Call, CompactAssignments, Config, ElectionSize, Module, NominatorIndex, Nominators, OffchainAccuracy, ValidatorIndex, @@ -26,6 +26,7 @@ use codec::Decode; use frame_support::{traits::Get, weights::Weight, IterableStorageMap}; use frame_system::offchain::SubmitTransaction; use sp_npos_elections::{ + EvaluateSupport, reduce, to_supports, Assignment, ElectionResult, ElectionScore, ExtendedBalance, }; use sp_runtime::{ diff --git a/pallets/staking/src/testing_utils.rs b/pallets/staking/src/testing_utils.rs index 4197b463f6..c66c0ac96d 100644 --- a/pallets/staking/src/testing_utils.rs +++ b/pallets/staking/src/testing_utils.rs @@ -404,7 +404,11 @@ pub fn get_single_winner_solution( votes1: vec![(nom_index, val_index)], ..Default::default() }; - let score = [stake, stake, stake * stake]; + let score = ElectionScore { + minimal_stake: stake, + sum_stake: stake, + sum_stake_squared: stake * stake + }; let size = ElectionSize { validators: snapshot_validators.len() as ValidatorIndex, nominators: snapshot_nominators.len() as NominatorIndex, diff --git a/pallets/statistics/Cargo.toml b/pallets/statistics/Cargo.toml index 3deff62526..82d9104f3e 100644 --- a/pallets/statistics/Cargo.toml +++ b/pallets/statistics/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-statistics" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] polymesh-primitives = { path = "../../primitives", default-features = false } @@ -16,14 +16,14 @@ serde = { version = "1.0.112", default-features = false } serde_derive = { version = "1.0.112", optional = true, default-features = false} # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +sp-core = { version = "6.0.0", default-features = false } +sp-io = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } sp-api = { version = "4.0.0-dev", default-features = false } -sp-arithmetic = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } +sp-arithmetic = { version = "5.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } frame-support = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } @@ -31,7 +31,7 @@ pallet-timestamp = { version = "4.0.0-dev", default-features = false } pallet-session = { version = "4.0.0-dev", default-features = false } # Only in STD -substrate-test-runtime-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-develop", optional = true} +substrate-test-runtime-client = { git = "https://github.com/PolymathNetwork/substrate", branch = "polymesh-monthly-2022-05", optional = true} # Only in Benchmarks frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } diff --git a/pallets/sto/Cargo.toml b/pallets/sto/Cargo.toml index 7d0bec04fc..67b2cb1ad9 100644 --- a/pallets/sto/Cargo.toml +++ b/pallets/sto/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-sto" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] pallet-asset = { path = "../asset", default-features = false } @@ -21,13 +21,13 @@ polymesh-primitives-derive = { path = "../../primitives_derive", default-feature serde = { version = "1.0.104", default-features = false } serde_derive = { version = "1.0.104", optional = true, default-features = false } -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-version = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-core = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } +sp-io = { version = "6.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } +sp-version = { version = "5.0.0", default-features = false } sp-api = { version = "4.0.0-dev", default-features = false } pallet-timestamp = { version = "4.0.0-dev", default-features = false } diff --git a/pallets/sudo/Cargo.toml b/pallets/sudo/Cargo.toml index e3618fa093..f969200409 100644 --- a/pallets/sudo/Cargo.toml +++ b/pallets/sudo/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-sudo" version = "2.0.0" authors = ["Parity Technologies "] -edition = "2018" +edition = "2021" license = "Apache-2.0" homepage = "https://substrate.dev" repository = "https://github.com/PolymathNetwork/substrate/" @@ -14,16 +14,16 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] serde = { version = "1.0.104", optional = true } -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-std = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false} -sp-runtime = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-std = { version = "4.0.0", default-features = false } +sp-io = { version = "6.0.0", default-features = false} +sp-runtime = { version = "6.0.0", default-features = false } frame-support = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } [dev-dependencies] -sp-core = { version = "4.0.0-dev", default-features = false } +sp-core = { version = "6.0.0", default-features = false } [features] default = ["std"] diff --git a/pallets/sudo/src/mock.rs b/pallets/sudo/src/mock.rs index eb8b39c2d2..bfa59aad8e 100644 --- a/pallets/sudo/src/mock.rs +++ b/pallets/sudo/src/mock.rs @@ -120,6 +120,7 @@ impl frame_system::Config for Test { type SystemWeightInfo = (); type OnSetCode = (); type SS58Prefix = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; } impl sudo::Config for Test { diff --git a/pallets/test-utils/Cargo.toml b/pallets/test-utils/Cargo.toml index d997e4b0b8..7cea23cc09 100644 --- a/pallets/test-utils/Cargo.toml +++ b/pallets/test-utils/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-test-utils" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] polymesh-primitives = { path = "../../primitives", default-features = false } @@ -19,9 +19,9 @@ serde_derive = { version = "1.0.104", optional = true, default-features = false confidential_identity = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, branch = "confidential-identity-v1" } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "4.0.0-dev", default-features = false } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +sp-std = { version = "4.0.0", default-features = false } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } frame-system = { version = "4.0.0-dev", default-features = false } frame-support = { version = "4.0.0-dev", default-features = false } frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } diff --git a/pallets/transaction-payment/Cargo.toml b/pallets/transaction-payment/Cargo.toml index 0859a42cbe..81e0b1a2e6 100644 --- a/pallets/transaction-payment/Cargo.toml +++ b/pallets/transaction-payment/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-transaction-payment" version = "2.0.0" authors = ["Parity Technologies "] -edition = "2018" +edition = "2021" [dependencies] # Our deps @@ -13,12 +13,12 @@ polymesh-common-utilities = { path = "../common", default-features = false } serde = { version = "1.0.104", default-features = false, optional = true } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-std = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-std = { version = "4.0.0", default-features = false } sp-api = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } +sp-io = { version = "6.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } frame-support = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } pallet-timestamp = { version = "4.0.0-dev", default-features = false } diff --git a/pallets/transaction-payment/src/lib.rs b/pallets/transaction-payment/src/lib.rs index 031d459be0..c2eccc157f 100644 --- a/pallets/transaction-payment/src/lib.rs +++ b/pallets/transaction-payment/src/lib.rs @@ -320,7 +320,7 @@ decl_module! { use sp_std::convert::TryInto; assert!( ::max_value() >= - Multiplier::checked_from_integer( + Multiplier::checked_from_integer::( T::BlockWeights::get().max_block.try_into().unwrap() ).unwrap(), ); @@ -685,13 +685,16 @@ where } fn post_dispatch( - pre: Self::Pre, + pre: Option, info: &DispatchInfoOf, post_info: &PostDispatchInfoOf, len: usize, _result: &DispatchResult, ) -> Result<(), TransactionValidityError> { - let (tip, who, imbalance, subsidiser) = pre; + let (tip, who, imbalance, subsidiser) = match pre { + Some(pre) => pre, + None => return Ok(()), + }; let actual_fee = Module::::compute_actual_fee(len as u32, info, post_info, tip); // Fee returned to original payer. diff --git a/pallets/treasury/Cargo.toml b/pallets/treasury/Cargo.toml index 094d0b7606..49ec4de4df 100644 --- a/pallets/treasury/Cargo.toml +++ b/pallets/treasury/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-treasury" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] polymesh-common-utilities = { path = "../common", default-features = false } @@ -16,13 +16,13 @@ serde = { version = "1.0.104", default-features = false } serde_derive = { version = "1.0.104", optional = true, default-features = false } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-version = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-core = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } +sp-io = { version = "6.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } +sp-version = { version = "5.0.0", default-features = false } sp-api = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } diff --git a/pallets/utility/Cargo.toml b/pallets/utility/Cargo.toml index 1cf5a233be..24d8a01593 100644 --- a/pallets/utility/Cargo.toml +++ b/pallets/utility/Cargo.toml @@ -2,7 +2,7 @@ name = "pallet-utility" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] # General @@ -14,15 +14,15 @@ polymesh-common-utilities = { path = "../common", default-features = false } polymesh-primitives = { path = "../../primitives", default-features = false } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false } frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true } frame-support = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } -scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } +scale-info = { version = "2.0", default-features = false, features = ["derive"] } +sp-core = { version = "6.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } +sp-io = { version = "6.0.0", default-features = false } # Only for benchmarks hex-literal = "0.2.1" diff --git a/pallets/utility/src/lib.rs b/pallets/utility/src/lib.rs index 85a27e68ed..aeaafd026c 100644 --- a/pallets/utility/src/lib.rs +++ b/pallets/utility/src/lib.rs @@ -52,6 +52,7 @@ pub mod benchmarking; use codec::{Decode, Encode}; +use frame_support::storage::{with_transaction, TransactionOutcome}; use frame_support::{ decl_error, decl_event, decl_module, decl_storage, dispatch::{DispatchErrorWithPostInfo, DispatchResultWithPostInfo, PostDispatchInfo}, @@ -66,7 +67,6 @@ use pallet_permissions::with_call_metadata; use polymesh_common_utilities::{ balances::{CheckCdd, Config as BalancesConfig}, identity::{AuthorizationNonce, Config as IdentityConfig}, - with_transaction, }; use scale_info::TypeInfo; use sp_runtime::{traits::Dispatchable, traits::Verify, DispatchError, RuntimeDebug}; @@ -211,19 +211,16 @@ decl_module! { let is_root = Self::ensure_root_or_signed(origin.clone())?; // Run batch inside a transaction - Self::deposit_event(match with_transaction(|| { - // Run batch + Self::deposit_event(with_transaction(|| -> TransactionOutcome> { + // Run batch. match Self::run_batch(origin.clone(), is_root, calls, true) { - Event::BatchCompleted(counts) => Ok(Event::BatchCompleted(counts)), + ev @ Event::BatchCompleted(_) => TransactionOutcome::Commit(Ok(ev)), ev => { - // Batch didn't complete. Abort transaction - Err(ev) + // Batch didn't complete. Rollback transaction. + TransactionOutcome::Rollback(Ok(ev)) } } - }) { - Ok(ev) => ev, - Err(ev) => ev - }); + })?); } /// Dispatch multiple calls from the sender's origin. diff --git a/pallets/weights/Cargo.toml b/pallets/weights/Cargo.toml index 2a3f9d0430..c0013d57aa 100644 --- a/pallets/weights/Cargo.toml +++ b/pallets/weights/Cargo.toml @@ -2,7 +2,7 @@ name = "polymesh-weights" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] # substrate pallets @@ -13,9 +13,10 @@ pallet-babe = { version = "4.0.0-dev", default-features = false } pallet-im-online = { version = "4.0.0-dev", default-features = false } pallet-indices = { version = "4.0.0-dev", default-features = false } pallet-grandpa = { version = "4.0.0-dev", default-features = false } +pallet-preimage = { version = "4.0.0-dev", default-features = false } pallet-scheduler = { version = "4.0.0-dev", default-features = false } pallet-session = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } +sp-std = { version = "4.0.0", default-features = false } # our pallets pallet-asset = { path = "../asset", default-features = false } diff --git a/pallets/weights/src/frame_system.rs b/pallets/weights/src/frame_system.rs index 3a7e184b65..fa4e6816e9 100644 --- a/pallets/weights/src/frame_system.rs +++ b/pallets/weights/src/frame_system.rs @@ -61,11 +61,6 @@ impl frame_system::WeightInfo for WeightInfo { fn set_heap_pages() -> Weight { (2_017_000 as Weight).saturating_add(DbWeight::get().writes(1 as Weight)) } - fn set_changes_trie_config() -> Weight { - (12_502_000 as Weight) - .saturating_add(DbWeight::get().reads(1 as Weight)) - .saturating_add(DbWeight::get().writes(2 as Weight)) - } fn set_storage(i: u32) -> Weight { (4_121_000 as Weight) // Standard Error: 2_000 diff --git a/pallets/weights/src/lib.rs b/pallets/weights/src/lib.rs index cf20fab8e2..2a3a5354c0 100644 --- a/pallets/weights/src/lib.rs +++ b/pallets/weights/src/lib.rs @@ -36,6 +36,7 @@ pub mod pallet_indices; pub mod pallet_multisig; pub mod pallet_pips; pub mod pallet_portfolio; +pub mod pallet_preimage; pub mod pallet_protocol_fee; pub mod pallet_relayer; pub mod pallet_rewards; diff --git a/pallets/weights/src/pallet_preimage.rs b/pallets/weights/src/pallet_preimage.rs new file mode 100644 index 0000000000..3477116685 --- /dev/null +++ b/pallets/weights/src/pallet_preimage.rs @@ -0,0 +1,134 @@ +// This file is part of Substrate. + +// Copyright (C) 2022 Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! Autogenerated weights for pallet_preimage +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2022-01-31, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024 + +// Executed Command: +// ./target/production/substrate +// benchmark +// --chain=dev +// --steps=50 +// --repeat=20 +// --pallet=pallet_preimage +// --extrinsic=* +// --execution=wasm +// --wasm-execution=compiled +// --heap-pages=4096 +// --output=./frame/preimage/src/weights.rs +// --template=.maintain/frame-weight-template.hbs +// --header=HEADER-APACHE2 +// --raw + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; + +/// Weights for pallet_scheduler using the Substrate node and recommended hardware. +pub struct WeightInfo; +impl pallet_preimage::WeightInfo for WeightInfo { + // Storage: Preimage PreimageFor (r:1 w:1) + // Storage: Preimage StatusFor (r:1 w:1) + fn note_preimage(s: u32, ) -> Weight { + (0 as Weight) + // Standard Error: 0 + .saturating_add((2_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(DbWeight::get().reads(2 as Weight)) + .saturating_add(DbWeight::get().writes(2 as Weight)) + } + // Storage: Preimage PreimageFor (r:1 w:1) + // Storage: Preimage StatusFor (r:1 w:0) + fn note_requested_preimage(s: u32, ) -> Weight { + (0 as Weight) + // Standard Error: 0 + .saturating_add((2_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(DbWeight::get().reads(2 as Weight)) + .saturating_add(DbWeight::get().writes(1 as Weight)) + } + // Storage: Preimage PreimageFor (r:1 w:1) + // Storage: Preimage StatusFor (r:1 w:0) + fn note_no_deposit_preimage(s: u32, ) -> Weight { + (0 as Weight) + // Standard Error: 0 + .saturating_add((2_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(DbWeight::get().reads(2 as Weight)) + .saturating_add(DbWeight::get().writes(1 as Weight)) + } + // Storage: Preimage StatusFor (r:1 w:1) + // Storage: Preimage PreimageFor (r:0 w:1) + fn unnote_preimage() -> Weight { + (39_239_000 as Weight) + .saturating_add(DbWeight::get().reads(1 as Weight)) + .saturating_add(DbWeight::get().writes(2 as Weight)) + } + // Storage: Preimage StatusFor (r:1 w:1) + // Storage: Preimage PreimageFor (r:0 w:1) + fn unnote_no_deposit_preimage() -> Weight { + (24_905_000 as Weight) + .saturating_add(DbWeight::get().reads(1 as Weight)) + .saturating_add(DbWeight::get().writes(2 as Weight)) + } + // Storage: Preimage StatusFor (r:1 w:1) + fn request_preimage() -> Weight { + (37_451_000 as Weight) + .saturating_add(DbWeight::get().reads(1 as Weight)) + .saturating_add(DbWeight::get().writes(1 as Weight)) + } + // Storage: Preimage StatusFor (r:1 w:1) + fn request_no_deposit_preimage() -> Weight { + (23_397_000 as Weight) + .saturating_add(DbWeight::get().reads(1 as Weight)) + .saturating_add(DbWeight::get().writes(1 as Weight)) + } + // Storage: Preimage StatusFor (r:1 w:1) + fn request_unnoted_preimage() -> Weight { + (13_407_000 as Weight) + .saturating_add(DbWeight::get().reads(1 as Weight)) + .saturating_add(DbWeight::get().writes(1 as Weight)) + } + // Storage: Preimage StatusFor (r:1 w:1) + fn request_requested_preimage() -> Weight { + (4_202_000 as Weight) + .saturating_add(DbWeight::get().reads(1 as Weight)) + .saturating_add(DbWeight::get().writes(1 as Weight)) + } + // Storage: Preimage StatusFor (r:1 w:1) + // Storage: Preimage PreimageFor (r:0 w:1) + fn unrequest_preimage() -> Weight { + (24_858_000 as Weight) + .saturating_add(DbWeight::get().reads(1 as Weight)) + .saturating_add(DbWeight::get().writes(2 as Weight)) + } + // Storage: Preimage StatusFor (r:1 w:1) + // Storage: Preimage PreimageFor (r:0 w:1) + fn unrequest_unnoted_preimage() -> Weight { + (13_763_000 as Weight) + .saturating_add(DbWeight::get().reads(1 as Weight)) + .saturating_add(DbWeight::get().writes(2 as Weight)) + } + // Storage: Preimage StatusFor (r:1 w:1) + fn unrequest_multi_referenced_preimage() -> Weight { + (4_262_000 as Weight) + .saturating_add(DbWeight::get().reads(1 as Weight)) + .saturating_add(DbWeight::get().writes(1 as Weight)) + } +} diff --git a/pallets/weights/src/pallet_scheduler.rs b/pallets/weights/src/pallet_scheduler.rs index 1f3fe6ae12..7a656a4d31 100644 --- a/pallets/weights/src/pallet_scheduler.rs +++ b/pallets/weights/src/pallet_scheduler.rs @@ -52,6 +52,117 @@ use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; /// Weights for pallet_scheduler using the Substrate node and recommended hardware. pub struct WeightInfo; impl pallet_scheduler::WeightInfo for WeightInfo { + // Storage: Scheduler Agenda (r:2 w:2) + // Storage: Preimage PreimageFor (r:1 w:1) + // Storage: Preimage StatusFor (r:1 w:1) + // Storage: Scheduler Lookup (r:0 w:1) + fn on_initialize_periodic_named_resolved(s: u32) -> Weight { + (11_587_000 as Weight) + // Standard Error: 17_000 + .saturating_add((17_428_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(DbWeight::get().reads(1 as Weight)) + .saturating_add(DbWeight::get().reads((3 as Weight).saturating_mul(s as Weight))) + .saturating_add(DbWeight::get().writes(1 as Weight)) + .saturating_add(DbWeight::get().writes((4 as Weight).saturating_mul(s as Weight))) + } + // Storage: Scheduler Agenda (r:1 w:1) + // Storage: Preimage PreimageFor (r:1 w:1) + // Storage: Preimage StatusFor (r:1 w:1) + // Storage: Scheduler Lookup (r:0 w:1) + fn on_initialize_named_resolved(s: u32) -> Weight { + (8_965_000 as Weight) + // Standard Error: 11_000 + .saturating_add((13_410_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(DbWeight::get().reads(1 as Weight)) + .saturating_add(DbWeight::get().reads((2 as Weight).saturating_mul(s as Weight))) + .saturating_add(DbWeight::get().writes(1 as Weight)) + .saturating_add(DbWeight::get().writes((3 as Weight).saturating_mul(s as Weight))) + } + // Storage: Scheduler Agenda (r:2 w:2) + // Storage: Preimage PreimageFor (r:1 w:1) + // Storage: Preimage StatusFor (r:1 w:1) + fn on_initialize_periodic_resolved(s: u32) -> Weight { + (8_654_000 as Weight) + // Standard Error: 17_000 + .saturating_add((14_990_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(DbWeight::get().reads(1 as Weight)) + .saturating_add(DbWeight::get().reads((3 as Weight).saturating_mul(s as Weight))) + .saturating_add(DbWeight::get().writes(1 as Weight)) + .saturating_add(DbWeight::get().writes((3 as Weight).saturating_mul(s as Weight))) + } + // Storage: Scheduler Agenda (r:1 w:1) + // Storage: Preimage PreimageFor (r:1 w:1) + // Storage: Preimage StatusFor (r:1 w:1) + fn on_initialize_resolved(s: u32) -> Weight { + (9_303_000 as Weight) + // Standard Error: 10_000 + .saturating_add((12_244_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(DbWeight::get().reads(1 as Weight)) + .saturating_add(DbWeight::get().reads((2 as Weight).saturating_mul(s as Weight))) + .saturating_add(DbWeight::get().writes(1 as Weight)) + .saturating_add(DbWeight::get().writes((2 as Weight).saturating_mul(s as Weight))) + } + // Storage: Scheduler Agenda (r:2 w:2) + // Storage: Preimage PreimageFor (r:1 w:0) + // Storage: Scheduler Lookup (r:0 w:1) + fn on_initialize_named_aborted(s: u32) -> Weight { + (7_506_000 as Weight) + // Standard Error: 3_000 + .saturating_add((5_208_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(DbWeight::get().reads(2 as Weight)) + .saturating_add(DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) + .saturating_add(DbWeight::get().writes(2 as Weight)) + .saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) + } + // Storage: Scheduler Agenda (r:2 w:2) + // Storage: Preimage PreimageFor (r:1 w:0) + fn on_initialize_aborted(s: u32) -> Weight { + (8_046_000 as Weight) + // Standard Error: 3_000 + .saturating_add((2_914_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(DbWeight::get().reads(2 as Weight)) + .saturating_add(DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) + .saturating_add(DbWeight::get().writes(2 as Weight)) + } + // Storage: Scheduler Agenda (r:2 w:2) + // Storage: Scheduler Lookup (r:0 w:1) + fn on_initialize_periodic_named(s: u32) -> Weight { + (13_704_000 as Weight) + // Standard Error: 4_000 + .saturating_add((8_186_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(DbWeight::get().reads(1 as Weight)) + .saturating_add(DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) + .saturating_add(DbWeight::get().writes(1 as Weight)) + .saturating_add(DbWeight::get().writes((2 as Weight).saturating_mul(s as Weight))) + } + // Storage: Scheduler Agenda (r:2 w:2) + fn on_initialize_periodic(s: u32) -> Weight { + (12_668_000 as Weight) + // Standard Error: 5_000 + .saturating_add((5_868_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(DbWeight::get().reads(1 as Weight)) + .saturating_add(DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) + .saturating_add(DbWeight::get().writes(1 as Weight)) + .saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) + } + // Storage: Scheduler Agenda (r:1 w:1) + // Storage: Scheduler Lookup (r:0 w:1) + fn on_initialize_named(s: u32) -> Weight { + (13_946_000 as Weight) + // Standard Error: 4_000 + .saturating_add((4_367_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(DbWeight::get().reads(1 as Weight)) + .saturating_add(DbWeight::get().writes(1 as Weight)) + .saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) + } + // Storage: Scheduler Agenda (r:1 w:1) + fn on_initialize(s: u32) -> Weight { + (13_151_000 as Weight) + // Standard Error: 4_000 + .saturating_add((3_455_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(DbWeight::get().reads(1 as Weight)) + .saturating_add(DbWeight::get().writes(1 as Weight)) + } fn schedule(s: u32) -> Weight { (30_395_000 as Weight) // Standard Error: 8_000 diff --git a/pallets/weights/src/polymesh_contracts.rs b/pallets/weights/src/polymesh_contracts.rs index 529f4fd897..527ffd562a 100644 --- a/pallets/weights/src/polymesh_contracts.rs +++ b/pallets/weights/src/polymesh_contracts.rs @@ -1,48 +1,84 @@ -//! Autogenerated weights for `polymesh_contracts` +// This file is part of Substrate. + +// Copyright (C) 2021 Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! Autogenerated weights for polymesh_contracts //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-25, STEPS: `200`, REPEAT: 10, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 128 +//! DATE: 2022-05-16, STEPS: `100`, REPEAT: 5, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 512 // Executed Command: // ./target/release/polymesh // benchmark +// pallet +// -s +// 100 +// -r +// 5 // -p=polymesh_contracts // -e=* -// -s=200 -// -r -// 10 +// --heap-pages +// 4096 +// --db-cache +// 512 // --execution -// Wasm +// wasm // --wasm-execution -// Compiled +// compiled // --output -// polymesh_contracts.rs +// ./pallets/weights/src/ +// --template +// ./.maintain/frame-weight-template.hbs #![allow(unused_parens)] #![allow(unused_imports)] use polymesh_runtime_common::{RocksDbWeight as DbWeight, Weight}; -/// Weight functions for `polymesh_contracts`. +/// Weights for polymesh_contracts using the Substrate node and recommended hardware. pub struct WeightInfo; impl polymesh_contracts::WeightInfo for WeightInfo { - // Storage: Identity KeyRecords (r:1 w:0) + // Storage: Identity KeyRecords (r:2 w:0) + // Storage: System Account (r:1 w:0) // Storage: Contracts ContractInfoOf (r:1 w:1) // Storage: Contracts CodeStorage (r:1 w:0) // Storage: Timestamp Now (r:1 w:0) + // Storage: unknown [0x3a7472616e73616374696f6e5f6c6576656c3a] (r:1 w:1) + // Storage: Identity IsDidFrozen (r:1 w:0) + // Storage: Instance2Group ActiveMembers (r:1 w:0) + // Storage: Instance2Group InactiveMembers (r:1 w:0) + // Storage: Identity Claims (r:2 w:0) fn prepare_instantiate_full(n: u32) -> Weight { - (273_154_000 as Weight) - // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(DbWeight::get().reads(4 as Weight)) - .saturating_add(DbWeight::get().writes(1 as Weight)) + (546_824_000 as Weight) + // Standard Error: 4_000 + .saturating_add((107_000 as Weight).saturating_mul(n as Weight)) + .saturating_add(DbWeight::get().reads(12 as Weight)) + .saturating_add(DbWeight::get().writes(2 as Weight)) } // Storage: Identity KeyRecords (r:2 w:0) + // Storage: System Account (r:1 w:0) // Storage: Contracts ContractInfoOf (r:1 w:1) // Storage: Contracts CodeStorage (r:1 w:0) // Storage: Timestamp Now (r:1 w:0) + // Storage: unknown [0x3a7472616e73616374696f6e5f6c6576656c3a] (r:1 w:1) // Storage: Identity IsDidFrozen (r:1 w:0) + // Storage: Instance2Group ActiveMembers (r:1 w:0) + // Storage: Instance2Group InactiveMembers (r:1 w:0) + // Storage: Identity Claims (r:2 w:0) // Storage: Identity CurrentDid (r:1 w:1) // Storage: Permissions CurrentPalletName (r:1 w:1) // Storage: Permissions CurrentDispatchableName (r:1 w:1) @@ -50,83 +86,116 @@ impl polymesh_contracts::WeightInfo for WeightInfo { // Storage: Asset CustomTypeIdSequence (r:1 w:1) // Storage: Asset CustomTypes (r:0 w:1) fn chain_extension_full(n: u32) -> Weight { - (338_423_000 as Weight) - // Standard Error: 0 - .saturating_add((12_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(DbWeight::get().reads(11 as Weight)) - .saturating_add(DbWeight::get().writes(7 as Weight)) + (859_188_000 as Weight) + // Standard Error: 3_000 + .saturating_add((15_000 as Weight).saturating_mul(n as Weight)) + .saturating_add(DbWeight::get().reads(17 as Weight)) + .saturating_add(DbWeight::get().writes(8 as Weight)) } - // Storage: Identity KeyRecords (r:1 w:0) + // Storage: Identity KeyRecords (r:2 w:0) + // Storage: System Account (r:1 w:0) // Storage: Contracts ContractInfoOf (r:1 w:1) // Storage: Contracts CodeStorage (r:1 w:0) // Storage: Timestamp Now (r:1 w:0) + // Storage: unknown [0x3a7472616e73616374696f6e5f6c6576656c3a] (r:1 w:1) + // Storage: Identity IsDidFrozen (r:1 w:0) + // Storage: Instance2Group ActiveMembers (r:1 w:0) + // Storage: Instance2Group InactiveMembers (r:1 w:0) + // Storage: Identity Claims (r:2 w:0) fn chain_extension_early_exit() -> Weight { - (155_987_000 as Weight) - .saturating_add(DbWeight::get().reads(4 as Weight)) - .saturating_add(DbWeight::get().writes(1 as Weight)) + (482_664_000 as Weight) + .saturating_add(DbWeight::get().reads(12 as Weight)) + .saturating_add(DbWeight::get().writes(2 as Weight)) } // Storage: Identity KeyRecords (r:1 w:0) // Storage: Asset CustomTypesInverse (r:1 w:1) // Storage: Asset CustomTypeIdSequence (r:1 w:1) // Storage: Asset CustomTypes (r:0 w:1) fn basic_runtime_call(n: u32) -> Weight { - (34_352_000 as Weight) + (82_563_000 as Weight) // Standard Error: 0 - .saturating_add((6_000 as Weight).saturating_mul(n as Weight)) + .saturating_add((12_000 as Weight).saturating_mul(n as Weight)) .saturating_add(DbWeight::get().reads(3 as Weight)) .saturating_add(DbWeight::get().writes(3 as Weight)) } // Storage: Identity KeyRecords (r:2 w:0) + // Storage: System Account (r:2 w:2) // Storage: Contracts ContractInfoOf (r:1 w:1) // Storage: Contracts CodeStorage (r:1 w:0) // Storage: Timestamp Now (r:1 w:0) + // Storage: unknown [0x3a7472616e73616374696f6e5f6c6576656c3a] (r:1 w:1) // Storage: Identity IsDidFrozen (r:1 w:0) // Storage: Instance2Group ActiveMembers (r:1 w:0) // Storage: Instance2Group InactiveMembers (r:1 w:0) // Storage: Identity Claims (r:2 w:0) - // Storage: System Account (r:2 w:2) fn call() -> Weight { - (196_050_000 as Weight) - .saturating_add(DbWeight::get().reads(12 as Weight)) - .saturating_add(DbWeight::get().writes(3 as Weight)) + (552_614_000 as Weight) + .saturating_add(DbWeight::get().reads(13 as Weight)) + .saturating_add(DbWeight::get().writes(4 as Weight)) } // Storage: Identity KeyRecords (r:2 w:1) + // Storage: unknown [0x3a7472616e73616374696f6e5f6c6576656c3a] (r:1 w:1) // Storage: Contracts CodeStorage (r:1 w:1) - // Storage: Contracts AccountCounter (r:1 w:1) + // Storage: System Account (r:2 w:2) + // Storage: Contracts Nonce (r:1 w:1) // Storage: Contracts ContractInfoOf (r:1 w:1) // Storage: Timestamp Now (r:1 w:0) // Storage: Identity IsDidFrozen (r:1 w:0) // Storage: Instance2Group ActiveMembers (r:1 w:0) // Storage: Instance2Group InactiveMembers (r:1 w:0) // Storage: Identity Claims (r:2 w:0) - // Storage: System Account (r:2 w:2) + // Storage: Contracts OwnerInfoOf (r:1 w:1) // Storage: Identity DidKeys (r:0 w:1) fn instantiate_with_hash(s: u32) -> Weight { - (264_925_000 as Weight) + (851_926_000 as Weight) // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(DbWeight::get().reads(13 as Weight)) - .saturating_add(DbWeight::get().writes(7 as Weight)) + .saturating_add((6_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(DbWeight::get().reads(15 as Weight)) + .saturating_add(DbWeight::get().writes(9 as Weight)) } // Storage: Identity KeyRecords (r:2 w:1) - // Storage: Contracts AccountCounter (r:1 w:1) + // Storage: unknown [0x3a7472616e73616374696f6e5f6c6576656c3a] (r:1 w:1) + // Storage: Contracts CodeStorage (r:1 w:1) + // Storage: System Account (r:2 w:2) + // Storage: Contracts Nonce (r:1 w:1) // Storage: Contracts ContractInfoOf (r:1 w:1) // Storage: Timestamp Now (r:1 w:0) // Storage: Identity IsDidFrozen (r:1 w:0) // Storage: Instance2Group ActiveMembers (r:1 w:0) // Storage: Instance2Group InactiveMembers (r:1 w:0) // Storage: Identity Claims (r:2 w:0) - // Storage: System Account (r:2 w:2) - // Storage: Contracts CodeStorage (r:1 w:1) - // Storage: Contracts PristineCode (r:0 w:1) // Storage: Identity DidKeys (r:0 w:1) + // Storage: Contracts PristineCode (r:0 w:1) + // Storage: Contracts OwnerInfoOf (r:0 w:1) fn instantiate_with_code(c: u32, s: u32) -> Weight { - (338_327_000 as Weight) + (1_161_103_000 as Weight) // Standard Error: 0 - .saturating_add((185_000 as Weight).saturating_mul(c as Weight)) + .saturating_add((406_000 as Weight).saturating_mul(c as Weight)) // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(DbWeight::get().reads(13 as Weight)) - .saturating_add(DbWeight::get().writes(8 as Weight)) + .saturating_add((6_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(DbWeight::get().reads(14 as Weight)) + .saturating_add(DbWeight::get().writes(10 as Weight)) + } + // Storage: Identity KeyRecords (r:1 w:0) + // Storage: Contracts CodeStorage (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: Contracts PristineCode (r:0 w:1) + // Storage: Contracts OwnerInfoOf (r:0 w:1) + fn upload_code(c: u32) -> Weight { + (184_633_000 as Weight) + // Standard Error: 0 + .saturating_add((142_000 as Weight).saturating_mul(c as Weight)) + .saturating_add(DbWeight::get().reads(3 as Weight)) + .saturating_add(DbWeight::get().writes(4 as Weight)) + } + // Storage: Identity KeyRecords (r:1 w:0) + // Storage: Contracts OwnerInfoOf (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: Contracts CodeStorage (r:0 w:1) + // Storage: Contracts PristineCode (r:0 w:1) + fn remove_code() -> Weight { + (106_681_000 as Weight) + .saturating_add(DbWeight::get().reads(3 as Weight)) + .saturating_add(DbWeight::get().writes(4 as Weight)) } } diff --git a/primitives/Cargo.toml b/primitives/Cargo.toml index 2023359848..87108480bf 100644 --- a/primitives/Cargo.toml +++ b/primitives/Cargo.toml @@ -2,13 +2,13 @@ name = "polymesh-primitives" version = "2.0.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] chrono = {version = "0.4.18", default-features = false } serde = { version = "1.0.104", optional = true, default-features = false, features = ["derive"] } -rand_core = { version = "0.5", default-features = false } -rand = { version = "0.7.3", default-features = false, optional = true } +rand_core = { version = "0.6", default-features = false } +rand = { version = "0.8", default-features = false, optional = true } rustc-hex = { version = "2.1.0", default-features = false } either = { version = "1.6.1", default-features = false } @@ -16,25 +16,25 @@ either = { version = "1.6.1", default-features = false } polymesh-primitives-derive = { path = "../primitives_derive", default-features = false } # Crypto -blake2 = { version = "0.9", default-features = false } +blake2 = { version = "0.10.2", default-features = false } confidential_identity = { git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, branch = "confidential-identity-v2" } confidential_identity_v1 = { package = "confidential_identity", git = "https://github.com/PolymathNetwork/cryptography.git", default-features = false, branch = "confidential-identity-v1" } schnorrkel = { version = "0.10.1", default-features = false } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } frame-support = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } -scale-info = { version = "1.0", default-features = false, features = ["derive", "decode"] } -sp-application-crypto = { version = "4.0.0-dev", default-features = false, optional = true } -sp-arithmetic = { version = "4.0.0-dev", default-features = false } -sp-core = { version = "4.0.0-dev", default-features = false } -sp-io = { version = "4.0.0-dev", default-features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } -sp-runtime-interface = { version = "4.0.0-dev", default-features = false } -sp-std = { version = "4.0.0-dev", default-features = false } -sp-version = { version = "4.0.0-dev", default-features = false } +scale-info = { version = "2.0", default-features = false, features = ["derive", "decode"] } +sp-application-crypto = { version = "6.0.0", default-features = false, optional = true } +sp-arithmetic = { version = "5.0.0", default-features = false } +sp-core = { version = "6.0.0", default-features = false } +sp-io = { version = "6.0.0", default-features = false } +sp-runtime = { version = "6.0.0", default-features = false } +sp-runtime-interface = { version = "6.0.0", default-features = false } +sp-std = { version = "4.0.0", default-features = false } +sp-version = { version = "5.0.0", default-features = false } libsecp256k1 = { version = "0.6", default-features = false, features = ["hmac", "static-context"] } [dev-dependencies] @@ -75,6 +75,7 @@ std = [ # Rng "rand/std", + "rand/std_rng", "rand_core/std", ] diff --git a/primitives/asset-metadata/Cargo.toml b/primitives/asset-metadata/Cargo.toml index c568e06403..33ded5aa3b 100644 --- a/primitives/asset-metadata/Cargo.toml +++ b/primitives/asset-metadata/Cargo.toml @@ -8,8 +8,8 @@ edition = "2021" polymesh-primitives = { path = "../", default-features = false } # SCALE -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -scale-info = { version = "1.0", default-features = false, features = ["derive", "decode"] } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.0", default-features = false, features = ["derive", "decode"] } [features] default = ["std"] diff --git a/primitives/src/asset_metadata.rs b/primitives/src/asset_metadata.rs index d559f1795a..5c9fce10a8 100644 --- a/primitives/src/asset_metadata.rs +++ b/primitives/src/asset_metadata.rs @@ -162,7 +162,7 @@ impl AssetMetadataSpec { pub fn decode_type_def(&self) -> Result, codec::Error> { self.type_def .as_ref() - .map(|d| AssetMetadataTypeDef::decode_all(&d[..])) + .map(|d| AssetMetadataTypeDef::decode_all(&mut &d[..])) .transpose() } diff --git a/primitives/src/investor_zkproof_data/v1.rs b/primitives/src/investor_zkproof_data/v1.rs index 71b6ba4f0b..af04e4b217 100644 --- a/primitives/src/investor_zkproof_data/v1.rs +++ b/primitives/src/investor_zkproof_data/v1.rs @@ -57,8 +57,8 @@ impl InvestorZKProofData { /// Returns the message used for testing the proof. pub fn make_message(investor_did: &IdentityId, scope: &[u8]) -> [u8; 32] { Blake2s::default() - .chain(investor_did) - .chain(scope) + .chain_update(investor_did) + .chain_update(scope) .finalize() .into() } diff --git a/primitives/src/lib.rs b/primitives/src/lib.rs index bda0ff1c39..5a2f4c5a8b 100644 --- a/primitives/src/lib.rs +++ b/primitives/src/lib.rs @@ -17,7 +17,6 @@ #![warn(missing_docs)] #![cfg_attr(not(feature = "std"), no_std)] -#![feature(bool_to_option)] use blake2::{Blake2b, Digest}; use codec::{Decode, Encode}; @@ -25,8 +24,6 @@ use confidential_identity_v1::Scalar as ScalarV1; use frame_support::weights::Weight; use polymesh_primitives_derive::VecU8StrongTyped; use scale_info::TypeInfo; -#[cfg(feature = "std")] -use sp_runtime::traits::Verify; use sp_runtime::{generic, traits::BlakeTwo256, MultiSignature}; #[cfg(feature = "std")] use sp_runtime::{Deserialize, Serialize}; @@ -61,38 +58,6 @@ pub type Index = u32; /// Alias for Gas. pub type Gas = Weight; -/// App-specific crypto used for reporting equivocation/misbehavior in BABE and -/// GRANDPA. Any rewards for misbehavior reporting will be paid out to this -/// account. -#[cfg(feature = "std")] -pub mod report { - use super::{Signature, Verify}; - use frame_system::offchain::AppCrypto; - use sp_core::crypto::{key_types, KeyTypeId}; - - /// Key type for the reporting module. Used for reporting BABE and GRANDPA - /// equivocations. - pub const KEY_TYPE: KeyTypeId = key_types::REPORTING; - - mod app { - use sp_application_crypto::{app_crypto, sr25519}; - app_crypto!(sr25519, super::KEY_TYPE); - } - - /// Identity of the equivocation/misbehavior reporter. - pub type ReporterId = app::Public; - - /// An `AppCrypto` type to allow submitting signed transactions using the reporting - /// application key as signer. - pub struct ReporterAppCrypto; - - impl AppCrypto<::Signer, Signature> for ReporterAppCrypto { - type RuntimeAppPublic = ReporterId; - type GenericSignature = sp_core::sr25519::Signature; - type GenericPublic = sp_core::sr25519::Public; - } -} - /// A positive coefficient: a pair of a numerator and a denominator. Defaults to `(1, 1)`. #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] #[derive(Encode, Decode, TypeInfo)] @@ -113,13 +78,10 @@ impl From<(u32, u32)> for PosRatio { /// It creates a scalar from the blake2_512 hash of `data` parameter. pub fn scalar_blake2_from_bytes(data: impl AsRef<[u8]>) -> ScalarV1 { - let mut hash = [0u8; 64]; - hash.copy_from_slice( - Blake2b::default() - .chain(data.as_ref()) - .finalize() - .as_slice(), - ); + let hash = Blake2b::default() + .chain_update(data.as_ref()) + .finalize() + .into(); ScalarV1::from_bytes_mod_order_wide(&hash) } diff --git a/primitives_derive/Cargo.toml b/primitives_derive/Cargo.toml index b9a30ef287..7c36bd5455 100644 --- a/primitives_derive/Cargo.toml +++ b/primitives_derive/Cargo.toml @@ -2,7 +2,7 @@ name = "polymesh-primitives-derive" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [lib] proc-macro = true diff --git a/primitives_derive/src/lib.rs b/primitives_derive/src/lib.rs index 5915c28c01..7804dcfbf8 100644 --- a/primitives_derive/src/lib.rs +++ b/primitives_derive/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(bool_to_option)] - extern crate proc_macro; extern crate syn; diff --git a/rpc/Cargo.toml b/rpc/Cargo.toml index 5f7ff109d4..0a5fc89031 100644 --- a/rpc/Cargo.toml +++ b/rpc/Cargo.toml @@ -2,7 +2,7 @@ name = "node-rpc" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] node-rpc-runtime-api = { path = "./runtime-api", default-features = false } @@ -16,13 +16,13 @@ pallet-identity = { path = "../pallets/identity", default-features = false } pallet-transaction-payment = { path = "../pallets/transaction-payment", default-features = false } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0" } -sp-core = {version = "4.0.0-dev", default_features = false } -sp-std = {version = "4.0.0-dev", default_features = false } -sp-runtime = { version = "4.0.0-dev", default-features = false } +codec = { package = "parity-scale-codec", version = "3.0.0" } +sp-core = {version = "6.0.0", default_features = false } +sp-std = {version = "4.0.0", default_features = false } +sp-runtime = { version = "6.0.0", default-features = false } sp-api = { version = "4.0.0-dev", default-features = false } sp-blockchain = { version = "4.0.0-dev" } -sp-rpc = { version = "4.0.0-dev" } +sp-rpc = { version = "6.0.0" } frame-support = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } diff --git a/rpc/runtime-api/Cargo.toml b/rpc/runtime-api/Cargo.toml index d3a7904c0f..aef32a6c11 100644 --- a/rpc/runtime-api/Cargo.toml +++ b/rpc/runtime-api/Cargo.toml @@ -2,7 +2,7 @@ name = "node-rpc-runtime-api" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] # Our pallets @@ -17,10 +17,10 @@ pallet-transaction-payment = { path = "../../pallets/transaction-payment", defau serde = { version = "1.0.104", optional = true, features = ["derive"] } # Substrate -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } sp-api = { version = "4.0.0-dev", default_features = false } -sp-std = { version = "4.0.0-dev", default_features = false } -sp-runtime = { version = "4.0.0-dev", default_features = false } +sp-std = { version = "4.0.0", default_features = false } +sp-runtime = { version = "6.0.0", default_features = false } frame-support = { version = "4.0.0-dev", default-features = false } frame-system = { version = "4.0.0-dev", default-features = false } diff --git a/rpc/runtime-api/src/identity.rs b/rpc/runtime-api/src/identity.rs index 87631948f6..8a340a67ea 100644 --- a/rpc/runtime-api/src/identity.rs +++ b/rpc/runtime-api/src/identity.rs @@ -1,6 +1,6 @@ use codec::Codec; use pallet_identity::types::{ - v1, AssetDidResult, CddStatus, DidStatus, KeyIdentityData, RpcDidRecords, + AssetDidResult, CddStatus, DidStatus, KeyIdentityData, RpcDidRecords, }; use polymesh_primitives::{Authorization, AuthorizationType, Signatory}; use sp_std::prelude::*; @@ -28,7 +28,7 @@ sp_api::decl_runtime_apis! { /// /// Old v1 call for `Signatory` based secondary keys. #[changed_in(2)] - fn get_did_records(did: IdentityId) -> v1::RpcDidRecords; + fn get_did_records(did: IdentityId) -> pallet_identity::types::v1::RpcDidRecords; /// Retrieve list of a authorization for a given signatory fn get_filtered_authorizations( diff --git a/rust-toolchain b/rust-toolchain index 2668ca9dc0..a8bce15e99 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1 +1 @@ -nightly-2021-12-14 +nightly-2022-05-10 diff --git a/scripts/bd.sh b/scripts/bd.sh index b4e8e092f7..c91f85740d 100755 --- a/scripts/bd.sh +++ b/scripts/bd.sh @@ -12,4 +12,4 @@ if [[ -z "${extrinsic}" ]]; then fi cargo build --release --features=runtime-benchmarks,running-ci && \ -./target/release/polymesh benchmark -p=${pallet} -e=${extrinsic} -r=1 -s=1 +./target/release/polymesh benchmark pallet -p=${pallet} -e=${extrinsic} -r=1 -s=1 diff --git a/scripts/bench.sh b/scripts/bench.sh index 5d3b26d221..5065e39e6b 100755 --- a/scripts/bench.sh +++ b/scripts/bench.sh @@ -7,4 +7,4 @@ if [[ -z "${pallet}" ]]; then fi cargo build --release --features=runtime-benchmarks && \ -./target/release/polymesh benchmark -p=${pallet} -e=* -s 200 -r 10 --execution Wasm --wasm-execution Compiled --output ${pallet}.rs +./target/release/polymesh benchmark pallet -p=${pallet} -e=* -s 200 -r 10 --execution Wasm --wasm-execution Compiled --output ${pallet}.rs diff --git a/scripts/cli/package-lock.json b/scripts/cli/package-lock.json index 83454cf0b2..f870d03cc6 100644 --- a/scripts/cli/package-lock.json +++ b/scripts/cli/package-lock.json @@ -10,9 +10,9 @@ "license": "UNLICENSED", "dependencies": { "@babel/plugin-proposal-class-properties": "^7.16.7", - "@polkadot/api": "7.11.1", - "@polkadot/util": "^8.3.3", - "@polkadot/util-crypto": "^8.3.3", + "@polkadot/api": "8.3.2", + "@polkadot/util": "^9.1.1", + "@polkadot/util-crypto": "^9.1.1", "chai": "4.2.0", "chalk": "4.1.0", "clear": "0.1.0", @@ -36,7 +36,7 @@ }, "devDependencies": { "@babel/plugin-transform-modules-commonjs": "7.14.5", - "@polkadot/typegen": "7.11.1", + "@polkadot/typegen": "8.3.2", "@types/chai": "4.2.15", "@types/clear": "0.1.1", "@types/figlet": "1.2.1", @@ -75,32 +75,32 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", - "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.17.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.5.tgz", - "integrity": "sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz", + "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==", "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helpers": "^7.17.2", - "@babel/parser": "^7.17.3", + "@babel/generator": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.10", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0", + "@babel/traverse": "^7.17.10", + "@babel/types": "^7.17.10", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", + "json5": "^2.2.1", "semver": "^6.3.0" }, "engines": { @@ -112,13 +112,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", - "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", + "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.17.10", + "@jridgewell/gen-mapping": "^0.1.0", + "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" @@ -136,13 +136,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", + "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", "dependencies": { - "@babel/compat-data": "^7.16.4", + "@babel/compat-data": "^7.17.10", "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "browserslist": "^4.20.2", "semver": "^6.3.0" }, "engines": { @@ -184,24 +184,12 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", "dependencies": { - "@babel/helper-get-function-arity": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", - "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -241,13 +229,13 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz", - "integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", "dependencies": { "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", "@babel/helper-split-export-declaration": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "@babel/template": "^7.16.7", @@ -293,11 +281,11 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -331,12 +319,12 @@ } }, "node_modules/@babel/helpers": { - "version": "7.17.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", - "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", "dependencies": { "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.0", + "@babel/traverse": "^7.17.9", "@babel/types": "^7.17.0" }, "engines": { @@ -413,9 +401,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", - "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz", + "integrity": "sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==", "bin": { "parser": "bin/babel-parser.js" }, @@ -619,9 +607,9 @@ } }, "node_modules/@babel/register": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.17.0.tgz", - "integrity": "sha512-UNZsMAZ7uKoGHo1HlEXfteEOYssf64n/PNLHGqOKq/bgYcu/4LrQWAHJwSCb3BRZK8Hi5gkJdRcwrGTO2wtRCg==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.17.7.tgz", + "integrity": "sha512-fg56SwvXRifootQEDQAu1mKdjh5uthPzdO0N6t358FktfL4XjAVXuH58ULoiW8mesxiOgNIrxiImqEwv0+hRRA==", "dev": true, "dependencies": { "clone-deep": "^4.0.1", @@ -638,9 +626,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.17.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.2.tgz", - "integrity": "sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", + "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -662,18 +650,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.10.tgz", + "integrity": "sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==", "dependencies": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", + "@babel/generator": "^7.17.10", "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", + "@babel/parser": "^7.17.10", + "@babel/types": "^7.17.10", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -682,9 +670,9 @@ } }, "node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz", + "integrity": "sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==", "dependencies": { "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" @@ -1046,6 +1034,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", @@ -1054,6 +1054,14 @@ "node": ">=6.0.0" } }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.11", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", @@ -1074,9 +1082,9 @@ "integrity": "sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg==" }, "node_modules/@noble/secp256k1": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.5.2.tgz", - "integrity": "sha512-5mzA40W2q55VCRuC9XzmkiEnODdY0c5a7qsK2QcOfI5/MuVQyBaWGQyE6YOEF7kDwp+tDVWGsCDVJUME+wsWWw==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.5.5.tgz", + "integrity": "sha512-sZ1W6gQzYnu45wPrWx8D3kwI2/U29VYTx9OjbDAd7jwRItJ0cSTMPRL/C8AWZFn9kWFLQGqEXVEE86w4Z8LpIQ==", "funding": [ { "type": "individual", @@ -1310,161 +1318,162 @@ } }, "node_modules/@polkadot/api": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-7.11.1.tgz", - "integrity": "sha512-VTrhVuSJrWhIww1ofYPd7EhJd1UwKntfdPNRuy/abfb6GPzYCglKV6Sze3CsbI2KawC5oo1K7Ffrdf/lJy81kg==", - "dependencies": { - "@babel/runtime": "^7.17.2", - "@polkadot/api-augment": "7.11.1", - "@polkadot/api-base": "7.11.1", - "@polkadot/api-derive": "7.11.1", - "@polkadot/keyring": "^8.4.1", - "@polkadot/rpc-augment": "7.11.1", - "@polkadot/rpc-core": "7.11.1", - "@polkadot/rpc-provider": "7.11.1", - "@polkadot/types": "7.11.1", - "@polkadot/types-augment": "7.11.1", - "@polkadot/types-codec": "7.11.1", - "@polkadot/types-create": "7.11.1", - "@polkadot/types-known": "7.11.1", - "@polkadot/util": "^8.4.1", - "@polkadot/util-crypto": "^8.4.1", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-8.3.2.tgz", + "integrity": "sha512-hq0OEMHptGL57n+MRaFzcwupy0ewTriDeqefTeAHC6iKmfFg2tRqb4FmsSAMJF4vWKBCpWW5q/YIUFR162V1cA==", + "dependencies": { + "@babel/runtime": "^7.17.9", + "@polkadot/api-augment": "8.3.2", + "@polkadot/api-base": "8.3.2", + "@polkadot/api-derive": "8.3.2", + "@polkadot/keyring": "^9.1.1", + "@polkadot/rpc-augment": "8.3.2", + "@polkadot/rpc-core": "8.3.2", + "@polkadot/rpc-provider": "8.3.2", + "@polkadot/types": "8.3.2", + "@polkadot/types-augment": "8.3.2", + "@polkadot/types-codec": "8.3.2", + "@polkadot/types-create": "8.3.2", + "@polkadot/types-known": "8.3.2", + "@polkadot/util": "^9.1.1", + "@polkadot/util-crypto": "^9.1.1", "eventemitter3": "^4.0.7", - "rxjs": "^7.5.4" + "rxjs": "^7.5.5" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/api-augment": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-7.11.1.tgz", - "integrity": "sha512-CqtmRZsr7va45r/wnsH+NZMqPyUQv46fmiHxt5gq6NC4p0ziDEVVDDHLlABx5RhQzCvdiBAccZ/X8DyMCFFGEA==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-8.3.2.tgz", + "integrity": "sha512-xGy4D2FwiIN1betUSGn5GkK0C4D1ILV9hbB02XTK20a1W6UMY7/pcp6ne+eHkHf96a/hN8HHVwhlMHJqoYNRVQ==", "dependencies": { - "@babel/runtime": "^7.17.2", - "@polkadot/api-base": "7.11.1", - "@polkadot/rpc-augment": "7.11.1", - "@polkadot/types": "7.11.1", - "@polkadot/types-augment": "7.11.1", - "@polkadot/types-codec": "7.11.1", - "@polkadot/util": "^8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/api-base": "8.3.2", + "@polkadot/rpc-augment": "8.3.2", + "@polkadot/types": "8.3.2", + "@polkadot/types-augment": "8.3.2", + "@polkadot/types-codec": "8.3.2", + "@polkadot/util": "^9.1.1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/api-base": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-base/-/api-base-7.11.1.tgz", - "integrity": "sha512-MATI9tm0x3rRlipLMevWzJ4cGvMyrUGyOfwjMg3Z67U7atZgZ93LzowjzDcvSgFVM14d1tBOVWBKkCKnk7C6Zg==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/api-base/-/api-base-8.3.2.tgz", + "integrity": "sha512-f8wuzL6NDbB7IkWNdRF+AVJ1vuv/RypDkb5Cc8tYwQupBuUvvM1ZtKylB5B7M/Hm2NOMxAwE6sBV+hp3BdyOtA==", "dependencies": { - "@babel/runtime": "^7.17.2", - "@polkadot/rpc-core": "7.11.1", - "@polkadot/types": "7.11.1", - "@polkadot/util": "^8.4.1", - "rxjs": "^7.5.4" + "@babel/runtime": "^7.17.9", + "@polkadot/rpc-core": "8.3.2", + "@polkadot/types": "8.3.2", + "@polkadot/util": "^9.1.1", + "rxjs": "^7.5.5" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/api-derive": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-7.11.1.tgz", - "integrity": "sha512-py7pqs5mLaKPNDvRZ7BcUC7obsbLIuzJT/kZFiGzJXmaObSzU2lJkGD7fV34QlpmGP+Bqb4KtlhtY+Tnq33C0w==", - "dependencies": { - "@babel/runtime": "^7.17.2", - "@polkadot/api": "7.11.1", - "@polkadot/api-augment": "7.11.1", - "@polkadot/api-base": "7.11.1", - "@polkadot/rpc-core": "7.11.1", - "@polkadot/types": "7.11.1", - "@polkadot/types-codec": "7.11.1", - "@polkadot/util": "^8.4.1", - "@polkadot/util-crypto": "^8.4.1", - "rxjs": "^7.5.4" + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-8.3.2.tgz", + "integrity": "sha512-9wZLVTwhR4wDpuBIiPz3QPJtZMj9nPble3DDg6OthLNsvqQFEO1sexJonzbLcq9883JWIXF8xpE+RuW6z+GssA==", + "dependencies": { + "@babel/runtime": "^7.17.9", + "@polkadot/api": "8.3.2", + "@polkadot/api-augment": "8.3.2", + "@polkadot/api-base": "8.3.2", + "@polkadot/rpc-core": "8.3.2", + "@polkadot/types": "8.3.2", + "@polkadot/types-codec": "8.3.2", + "@polkadot/util": "^9.1.1", + "@polkadot/util-crypto": "^9.1.1", + "rxjs": "^7.5.5" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/keyring": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-8.4.1.tgz", - "integrity": "sha512-0qfS7qikUxhe6LEdCOcMRdCxEa26inJ5aSUWaf5dXy+dgy9VJiov6uXAbXdAd1UHpDvr9hvw94FX+hXsJ7Vsyw==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-9.1.1.tgz", + "integrity": "sha512-qjnO1795v7wDvU2hW0H+z7bMPNV3xcVnIjozt3/+Y5Lphu3Tohh3WNgf9uNKIUTwbWxTF4wWsiUM1ajY4CRuMA==", "dependencies": { - "@babel/runtime": "^7.17.2", - "@polkadot/util": "8.4.1", - "@polkadot/util-crypto": "8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/util": "9.1.1", + "@polkadot/util-crypto": "9.1.1" }, "engines": { "node": ">=14.0.0" }, "peerDependencies": { - "@polkadot/util": "8.4.1", - "@polkadot/util-crypto": "8.4.1" + "@polkadot/util": "9.1.1", + "@polkadot/util-crypto": "9.1.1" } }, "node_modules/@polkadot/networks": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-8.4.1.tgz", - "integrity": "sha512-YFY3fPLbc1Uz9zsX4TOzjY/FF09nABMgrMkvqddrVbSgo71NvoBv3Gqw3mKV/7bX1Gzk1ODfvTzamdpsKEWSnA==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-9.1.1.tgz", + "integrity": "sha512-L/jk8vDr4shzGEVOqOimmXySLpbrN8+qlk+BR3A6rFa4N+XjtcGvnnt+so+rXwJOu7U4/ir6qPU2Iq63XbQTMA==", "dependencies": { - "@babel/runtime": "^7.17.2", - "@polkadot/util": "8.4.1", - "@substrate/ss58-registry": "^1.14.0" + "@babel/runtime": "^7.17.9", + "@polkadot/util": "9.1.1", + "@substrate/ss58-registry": "^1.17.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/rpc-augment": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-7.11.1.tgz", - "integrity": "sha512-cP/g6dM5Rmdeno+sOi/PBvAEycRoi/UI1MOKb0lVhlFJayw/uyGOhHtPKOnLh2fyDJ/q66HO3pu6aem3ORFwhQ==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-8.3.2.tgz", + "integrity": "sha512-3uuetbuu4KXoPSixEq/ux7v0Uko4b5oK9GygHf94DhnHlL2p8ziJiiQbKx95AYkR3wxTcBMEZLgocrckvDcEnA==", "dependencies": { - "@babel/runtime": "^7.17.2", - "@polkadot/rpc-core": "7.11.1", - "@polkadot/types": "7.11.1", - "@polkadot/types-codec": "7.11.1", - "@polkadot/util": "^8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/rpc-core": "8.3.2", + "@polkadot/types": "8.3.2", + "@polkadot/types-codec": "8.3.2", + "@polkadot/util": "^9.1.1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/rpc-core": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-7.11.1.tgz", - "integrity": "sha512-Bp71BwOSPT4/xmYWn9e9/ikGKYYmltbceVwa0MJiuKI0Xd5YntjtJVov17Fqlt+eddkLGt74750paykvHDJWWQ==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-8.3.2.tgz", + "integrity": "sha512-dfLYFTj1ehBbAdMuJ8EvOcOzHVjbFtmGRS3eMmm6S2uVjYbsBe8TJRks5k3InIzJsn1myeqQ5sU1eEPVpr5NdA==", "dependencies": { - "@babel/runtime": "^7.17.2", - "@polkadot/rpc-augment": "7.11.1", - "@polkadot/rpc-provider": "7.11.1", - "@polkadot/types": "7.11.1", - "@polkadot/util": "^8.4.1", - "rxjs": "^7.5.4" + "@babel/runtime": "^7.17.9", + "@polkadot/rpc-augment": "8.3.2", + "@polkadot/rpc-provider": "8.3.2", + "@polkadot/types": "8.3.2", + "@polkadot/util": "^9.1.1", + "rxjs": "^7.5.5" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/rpc-provider": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-7.11.1.tgz", - "integrity": "sha512-07Mg+r9swMjNISDK8ntDI5gFZU8rtHeoB27/qQwZzcWugogva8rNhaInBikZPKlF7yxM6l2VMaQnOziKUNsnRw==", - "dependencies": { - "@babel/runtime": "^7.17.2", - "@polkadot/keyring": "^8.4.1", - "@polkadot/types": "7.11.1", - "@polkadot/types-support": "7.11.1", - "@polkadot/util": "^8.4.1", - "@polkadot/util-crypto": "^8.4.1", - "@polkadot/x-fetch": "^8.4.1", - "@polkadot/x-global": "^8.4.1", - "@polkadot/x-ws": "^8.4.1", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-8.3.2.tgz", + "integrity": "sha512-k3VIGThgQeGzaSSccKhKtDNIZRQMe6sZ1gQHvirBo8Law51yiOGpqHmq3x7faECG68oGlCvQBRHVKLz47k0EuA==", + "dependencies": { + "@babel/runtime": "^7.17.9", + "@polkadot/keyring": "^9.1.1", + "@polkadot/types": "8.3.2", + "@polkadot/types-support": "8.3.2", + "@polkadot/util": "^9.1.1", + "@polkadot/util-crypto": "^9.1.1", + "@polkadot/x-fetch": "^9.1.1", + "@polkadot/x-global": "^9.1.1", + "@polkadot/x-ws": "^9.1.1", + "@substrate/connect": "0.7.4", "eventemitter3": "^4.0.7", - "mock-socket": "^9.1.2", + "mock-socket": "^9.1.3", "nock": "^13.2.4" }, "engines": { @@ -1472,28 +1481,28 @@ } }, "node_modules/@polkadot/typegen": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/typegen/-/typegen-7.11.1.tgz", - "integrity": "sha512-pdxBOEU6VoMd2xjexQPfHSb0PC1DU/zXs/Zq+Z4tT+PPWkr9TtfbcZWpGmg6xFyWChcmurvwCI/VTnurBUFC0A==", - "dev": true, - "dependencies": { - "@babel/core": "^7.17.5", - "@babel/register": "^7.17.0", - "@babel/runtime": "^7.17.2", - "@polkadot/api": "7.11.1", - "@polkadot/api-augment": "7.11.1", - "@polkadot/rpc-augment": "7.11.1", - "@polkadot/rpc-provider": "7.11.1", - "@polkadot/types": "7.11.1", - "@polkadot/types-augment": "7.11.1", - "@polkadot/types-codec": "7.11.1", - "@polkadot/types-create": "7.11.1", - "@polkadot/types-support": "7.11.1", - "@polkadot/util": "^8.4.1", - "@polkadot/x-ws": "^8.4.1", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/typegen/-/typegen-8.3.2.tgz", + "integrity": "sha512-h9H10/xmfzD4knS3P5qPQcUJr+BG+eGyLx2f6ULUqMX9jTaS0qCa8THfw/k+9KWE79/2XJpJQwNTwjGbmk8WKg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.17.10", + "@babel/register": "^7.17.7", + "@babel/runtime": "^7.17.9", + "@polkadot/api": "8.3.2", + "@polkadot/api-augment": "8.3.2", + "@polkadot/rpc-augment": "8.3.2", + "@polkadot/rpc-provider": "8.3.2", + "@polkadot/types": "8.3.2", + "@polkadot/types-augment": "8.3.2", + "@polkadot/types-codec": "8.3.2", + "@polkadot/types-create": "8.3.2", + "@polkadot/types-support": "8.3.2", + "@polkadot/util": "^9.1.1", + "@polkadot/x-ws": "^9.1.1", "handlebars": "^4.7.7", "websocket": "^1.0.34", - "yargs": "^17.3.1" + "yargs": "^17.4.1" }, "bin": { "polkadot-types-chain-info": "scripts/polkadot-types-chain-info.cjs", @@ -1507,100 +1516,100 @@ } }, "node_modules/@polkadot/types": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-7.11.1.tgz", - "integrity": "sha512-jxVrxIbsSfH9xK1Q3vaCfJmbkm0OlvoXz0GxdP5RJ7dQnxlNYWQUXanFkKebbRL8gSEs1wSRVccil/TSH65Nvg==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-8.3.2.tgz", + "integrity": "sha512-YF1Kc/sk2IbMS6ZdpV0yu3eHnDNbv+KjUVW1nutGpgpmmDNDL5kDjyrowV4k7zgxvPDOWnn8kjfbsgzxHdkWlQ==", "dependencies": { - "@babel/runtime": "^7.17.2", - "@polkadot/keyring": "^8.4.1", - "@polkadot/types-augment": "7.11.1", - "@polkadot/types-codec": "7.11.1", - "@polkadot/types-create": "7.11.1", - "@polkadot/util": "^8.4.1", - "@polkadot/util-crypto": "^8.4.1", - "rxjs": "^7.5.4" + "@babel/runtime": "^7.17.9", + "@polkadot/keyring": "^9.1.1", + "@polkadot/types-augment": "8.3.2", + "@polkadot/types-codec": "8.3.2", + "@polkadot/types-create": "8.3.2", + "@polkadot/util": "^9.1.1", + "@polkadot/util-crypto": "^9.1.1", + "rxjs": "^7.5.5" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/types-augment": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-7.11.1.tgz", - "integrity": "sha512-jCnZ/eMkLaqSKl5q4JwBxslhAaJSSNHt04reZRs1i2jlC2UVgiFN1Rr5GJmHYAwDPoFcge/rAm6bckfhXUIdOw==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-8.3.2.tgz", + "integrity": "sha512-zT2iYLzkXej/tbfq3BEjDZ6TtWxdCuNasVMo9sizuZhqq4GOg3fuQWF1c2rga2OCZhMR20Y4zOgthsvNEUMykQ==", "dependencies": { - "@babel/runtime": "^7.17.2", - "@polkadot/types": "7.11.1", - "@polkadot/types-codec": "7.11.1", - "@polkadot/util": "^8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/types": "8.3.2", + "@polkadot/types-codec": "8.3.2", + "@polkadot/util": "^9.1.1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/types-codec": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-7.11.1.tgz", - "integrity": "sha512-rDM/FYcnou2Chy+urd7U41lcjM6jWUEUydyP9NuTOSAamCGtH0eKw52GURKTsKTT5r8wJdPMKv/yNxs1i+l5Lw==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-8.3.2.tgz", + "integrity": "sha512-cuh3tASVo+7QBVr6/yelrwm63I+CWZuOCetknHZ8A0MTy7u6VCvKcXlN6qdKiGmOou2qgBWfUNlvjwkS+LJGHA==", "dependencies": { - "@babel/runtime": "^7.17.2", - "@polkadot/util": "^8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/util": "^9.1.1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/types-create": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-7.11.1.tgz", - "integrity": "sha512-nVYaJC/IDsM4WM9WGjAI7qQ9scPSlBqqzwqLdvXCJeq3trOTt68x39DD0zp0hzJ/7MeXjPToDDWjpAF0B9mWSQ==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-8.3.2.tgz", + "integrity": "sha512-AUsftFgsDWF5bhy9WGxlFXaseqPAPna6uM5EHUPSl6eca+2ORuIkT12/tvnqkjPrRzs2RnE/Mkc+/IgNQEY3jQ==", "dependencies": { - "@babel/runtime": "^7.17.2", - "@polkadot/types-codec": "7.11.1", - "@polkadot/util": "^8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/types-codec": "8.3.2", + "@polkadot/util": "^9.1.1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/types-known": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-7.11.1.tgz", - "integrity": "sha512-BBqQxG7I+wUjeLby1u5p9aSoZ5Vy0oCwmm/aKN64JH9vBEz1OOA0pRdcCooGCG/884Wb5pRpacWTepQMQkOTLw==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-8.3.2.tgz", + "integrity": "sha512-Ry5kiAbWQKQNgctgwHkdaK8AD9N7NK4NblySn2S20aM3DtV48gBqp7fP6obCvJLoQIGQ0LNvfMqkRDPXid6JSw==", "dependencies": { - "@babel/runtime": "^7.17.2", - "@polkadot/networks": "^8.4.1", - "@polkadot/types": "7.11.1", - "@polkadot/types-codec": "7.11.1", - "@polkadot/types-create": "7.11.1", - "@polkadot/util": "^8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/networks": "^9.1.1", + "@polkadot/types": "8.3.2", + "@polkadot/types-codec": "8.3.2", + "@polkadot/types-create": "8.3.2", + "@polkadot/util": "^9.1.1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/types-support": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-7.11.1.tgz", - "integrity": "sha512-pJmDUHK7DOO6mjpntxq9Lq0tjvqwc15FrrrNbuENgRiOueRqcAlzv+V80wdzoIBUwINgKphtpzu+rdQIYsVVQg==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-8.3.2.tgz", + "integrity": "sha512-SBz6bpJMu3pkQ5gVsbHBFedAoR9yJt2LOFCgefkWUQ0AmQSRzvfGmmmlSVjexTT9ZozuOgOl/VFRsQjVSzkZYg==", "dependencies": { - "@babel/runtime": "^7.17.2", - "@polkadot/util": "^8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/util": "^9.1.1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/util": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-8.4.1.tgz", - "integrity": "sha512-8+wqHgFbFWI5TfrvtcL888w0nWvFpbTTYIcbpEw+zYGp3n1YZTAMMP26bXWAaQX5AttxynJRij7JP3ySxYY1fg==", - "dependencies": { - "@babel/runtime": "^7.17.2", - "@polkadot/x-bigint": "8.4.1", - "@polkadot/x-global": "8.4.1", - "@polkadot/x-textdecoder": "8.4.1", - "@polkadot/x-textencoder": "8.4.1", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-9.1.1.tgz", + "integrity": "sha512-eJzyrM0+b+DLo1hD+y4Al1DOEdF0UEUVnWqWZNIx2fuKsgG72gFosJM0EOjbVoxq8B1Hx3KOCNc0fl3Mpc9oYQ==", + "dependencies": { + "@babel/runtime": "^7.17.9", + "@polkadot/x-bigint": "9.1.1", + "@polkadot/x-global": "9.1.1", + "@polkadot/x-textdecoder": "9.1.1", + "@polkadot/x-textencoder": "9.1.1", "@types/bn.js": "^5.1.0", "bn.js": "^5.2.0", "ip-regex": "^4.3.0" @@ -1610,18 +1619,18 @@ } }, "node_modules/@polkadot/util-crypto": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-8.4.1.tgz", - "integrity": "sha512-mWjp83aIWw+EhKN9RkUDmubXibo25q5yHJl4BGm2gT71yTZcABB7q1SGfpDqLH9AB3eXJiutqhC4L3SH7YZ+6Q==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-9.1.1.tgz", + "integrity": "sha512-FiQ4u8q1QZNdE2MUMb3JupbSMei9Ww6Czo/QYPguy73Tp6OH3G9OX8abBgTUwS/gX/CFcbHajhb3oi95v0IgVg==", "dependencies": { - "@babel/runtime": "^7.17.2", + "@babel/runtime": "^7.17.9", "@noble/hashes": "1.0.0", - "@noble/secp256k1": "1.5.2", - "@polkadot/networks": "8.4.1", - "@polkadot/util": "8.4.1", - "@polkadot/wasm-crypto": "^4.5.1", - "@polkadot/x-bigint": "8.4.1", - "@polkadot/x-randomvalues": "8.4.1", + "@noble/secp256k1": "1.5.5", + "@polkadot/networks": "9.1.1", + "@polkadot/util": "9.1.1", + "@polkadot/wasm-crypto": "^6.0.1", + "@polkadot/x-bigint": "9.1.1", + "@polkadot/x-randomvalues": "9.1.1", "@scure/base": "1.0.0", "ed2curve": "^0.3.0", "tweetnacl": "^1.0.3" @@ -1630,17 +1639,17 @@ "node": ">=14.0.0" }, "peerDependencies": { - "@polkadot/util": "8.4.1" + "@polkadot/util": "9.1.1" } }, "node_modules/@polkadot/wasm-crypto": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-4.5.1.tgz", - "integrity": "sha512-Cr21ais3Kq3aedIHZ3J1tjgeD/+K8FCiwEawr0oRywNBSJR8wyuZMePs4swR/6xm8wbBkpqoBVHz/UQHqqQJmA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-6.0.1.tgz", + "integrity": "sha512-nW5DDrciHGbZbj0Xh7w0Bnh5exSJUw96Zux7RuGfXuoXXHZBcf0QiB4E2dcVh3d/NkF7PkB99FlkdQxQp4M0Rg==", "dependencies": { - "@babel/runtime": "^7.16.3", - "@polkadot/wasm-crypto-asmjs": "^4.5.1", - "@polkadot/wasm-crypto-wasm": "^4.5.1" + "@babel/runtime": "^7.17.9", + "@polkadot/wasm-crypto-asmjs": "^6.0.1", + "@polkadot/wasm-crypto-wasm": "^6.0.1" }, "engines": { "node": ">=14.0.0" @@ -1651,47 +1660,53 @@ } }, "node_modules/@polkadot/wasm-crypto-asmjs": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-4.5.1.tgz", - "integrity": "sha512-DOdRiWhxVvmqTvp+E9z1j+Yr0zDOGsDvqnT/eNw0Dl1FVUOImsEa7FKns/urASmcxCVEE1jtUWSnij29jrORMQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-6.0.1.tgz", + "integrity": "sha512-cSGsHBLfPW2nHztgZd+gisCoScA02jbAzwjop/b8xumQ2kq7yAed/K9G1lOQiofEKRetIJeqBzJyk0etopRORw==", "dependencies": { - "@babel/runtime": "^7.16.3" + "@babel/runtime": "^7.17.9" }, "engines": { "node": ">=14.0.0" + }, + "peerDependencies": { + "@polkadot/util": "*" } }, "node_modules/@polkadot/wasm-crypto-wasm": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-4.5.1.tgz", - "integrity": "sha512-hPwke85HxpgG/RAlwdCE8u5w7bThvWg399mlB+XjogXMxOUWBZSgq2XYbgzROUXx27inK9nStF4Pnc4zJnqs9A==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-6.0.1.tgz", + "integrity": "sha512-0r/QgOjIyw4U0mLk6Tm97Di92uxcSPjTo7dK6tdXo1PwYouhzO5IJnL/jNgma8dm5hQoBhk7rcErmkh8c1kLFQ==", "dependencies": { - "@babel/runtime": "^7.16.3" + "@babel/runtime": "^7.17.9" }, "engines": { "node": ">=14.0.0" + }, + "peerDependencies": { + "@polkadot/util": "*" } }, "node_modules/@polkadot/x-bigint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-8.4.1.tgz", - "integrity": "sha512-QVP0UMoM0nBD998s3ESeaoSiVMEnHK3x0CCqocKO4l7ADNw8lfWdDG7Bb0+ymNaFYGz2KgEWxkN0VhNEnXzo0w==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-9.1.1.tgz", + "integrity": "sha512-1At5Gut4Wzep59vKTATCMWwm6EG0h+vq/qftou5kvt8u0QI2+YGJ5LAXzHk3n0/OOn8cvuAzS2kYQ4duE7YA+g==", "dependencies": { - "@babel/runtime": "^7.17.2", - "@polkadot/x-global": "8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/x-global": "9.1.1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/x-fetch": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-8.4.1.tgz", - "integrity": "sha512-DPkgXZYt1B4xCzEw/3hxRc4/lR+NEr/b/GYijSPM8UsVoEKqHWTx2qCXrxvmKh1WD9reQ+oUACPVjRcBz5bs+g==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-9.1.1.tgz", + "integrity": "sha512-hoV/73i8znFCTOaDElGPQAF0AcOV9C7QAq7oJkkfaTqLaRbn2rKg7ZiwLzbFo/8YYGq3QTRcO4gzd5UD2NXZ0Q==", "dependencies": { - "@babel/runtime": "^7.17.2", - "@polkadot/x-global": "8.4.1", - "@types/node-fetch": "^2.5.12", + "@babel/runtime": "^7.17.9", + "@polkadot/x-global": "9.1.1", + "@types/node-fetch": "^2.6.1", "node-fetch": "^2.6.7" }, "engines": { @@ -1699,59 +1714,59 @@ } }, "node_modules/@polkadot/x-global": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.4.1.tgz", - "integrity": "sha512-MQs89LKQrJwiXjV7dY2kDOPNaiWrwaQ/Fzg93ycB2xMCclRV1jRFRhnhTPJ8Ao79lhCCoazd7pXIyFgfifxdqg==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-9.1.1.tgz", + "integrity": "sha512-2aP6edHMPE14mQUFA8ipiB74PKoS6/wFWjTSbGqVOkGN0B7/kvX0/bW2fb6jPcfQlutPeqGN6dZnraoqzTzv6w==", "dependencies": { - "@babel/runtime": "^7.17.2" + "@babel/runtime": "^7.17.9" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/x-randomvalues": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-8.4.1.tgz", - "integrity": "sha512-1dRIFIib4RzyVo0k5oMLuxqSuZEV6UVvvN+jJw9G/9P1ggZtHjM1KwoFcyHgvpk2RWTB9eJZFemwSvQTpdmSJw==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-9.1.1.tgz", + "integrity": "sha512-so99yggz5QoCHaVLxekIPK7Ia8Aynv0pPmTroGpWUrR1Gjj5l1dU7lN3sfyA7MBij4uGYiI3sSma5KmlRYawiQ==", "dependencies": { - "@babel/runtime": "^7.17.2", - "@polkadot/x-global": "8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/x-global": "9.1.1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/x-textdecoder": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-8.4.1.tgz", - "integrity": "sha512-qbSXyR2KvE1bO6QGsxWU3Yrx5e70rX2lwv0MHG++MyyNaDoBM3hjx14lF911bYRWXR6MW4eZ+0Nakn0oM5uSKw==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-9.1.1.tgz", + "integrity": "sha512-0eQPesYOfpdetHMIzTUiXcMOPzjX2hzgdSC9Q64iGWoRKwly1clUQ9SPlwEmkRF7ulPcq1pZv2kgHdKNj+lL8g==", "dependencies": { - "@babel/runtime": "^7.17.2", - "@polkadot/x-global": "8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/x-global": "9.1.1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/x-textencoder": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-8.4.1.tgz", - "integrity": "sha512-1UYuckNOk6NUk70Y/SGbK8oyGbqPlrny1x2OWoK/BT3/tyL2xKVV5TlXDOiFrX1PChbskXye5M8blCTYikFiJg==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-9.1.1.tgz", + "integrity": "sha512-DyemF56si5xgXLS+l9yl3YivC2cLFlGSUarKyrP+MRVAqVKlLc9h3KXDxwnVxNeLVTg2gxSLpxo6pGqLydtFaQ==", "dependencies": { - "@babel/runtime": "^7.17.2", - "@polkadot/x-global": "8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/x-global": "9.1.1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@polkadot/x-ws": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-8.4.1.tgz", - "integrity": "sha512-u9rsJdVrBkSARy8BhJPho1yMMBSiI/Z/W8ZQRr1I28/QOwl02VYktFpFWWrhkBHsL9JlZ0wfnyKBPXrw8Wp2Vw==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-9.1.1.tgz", + "integrity": "sha512-jojrlEbeabRRCj0449IDg7BTOOntinMDZJJkABnPG3WnTtHa82TZQmrrdE51PIolGwFW6qDamh9IQcfI/Ir7Yw==", "dependencies": { - "@babel/runtime": "^7.17.2", - "@polkadot/x-global": "8.4.1", + "@babel/runtime": "^7.17.9", + "@polkadot/x-global": "9.1.1", "@types/websocket": "^1.0.5", "websocket": "^1.0.34" }, @@ -1797,10 +1812,63 @@ "@sinonjs/commons": "^1.7.0" } }, + "node_modules/@substrate/connect": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@substrate/connect/-/connect-0.7.4.tgz", + "integrity": "sha512-sq5c2Z9073zyF7QOU/DLaIWI0LuECEpCovRpN8MXBieCeHnqGS2xZrPzsvvIP3LNrb/iPb5uMCyFZ4DaQa+0Bw==", + "dependencies": { + "@substrate/connect-extension-protocol": "^1.0.0", + "@substrate/smoldot-light": "0.6.15", + "eventemitter3": "^4.0.7" + } + }, + "node_modules/@substrate/connect-extension-protocol": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@substrate/connect-extension-protocol/-/connect-extension-protocol-1.0.0.tgz", + "integrity": "sha512-nFVuKdp71hMd/MGlllAOh+a2hAqt8m6J2G0aSsS/RcALZexxF9jodbFc62ni8RDtJboeOfXAHhenYOANvJKPIg==" + }, + "node_modules/@substrate/smoldot-light": { + "version": "0.6.15", + "resolved": "https://registry.npmjs.org/@substrate/smoldot-light/-/smoldot-light-0.6.15.tgz", + "integrity": "sha512-c2tJCSp9Litsn/p8wY1FfEqIkJI8Peh89BU7T43bruWRO2SSgLVh0cIVbOCY4en90tIOX4W0CueRWFBRQz7BjQ==", + "dependencies": { + "buffer": "^6.0.1", + "pako": "^2.0.4", + "websocket": "^1.0.32" + } + }, + "node_modules/@substrate/smoldot-light/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@substrate/smoldot-light/node_modules/pako": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.4.tgz", + "integrity": "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg==" + }, "node_modules/@substrate/ss58-registry": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@substrate/ss58-registry/-/ss58-registry-1.15.0.tgz", - "integrity": "sha512-UU5uN8HEp0NM22od6kHWLltX0McQPgPX6O3gj7fSf1mMExsCS5fzW88gv1WaVaT8Q+umvGgnIAF7+Tvp8fqTFw==" + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/@substrate/ss58-registry/-/ss58-registry-1.18.0.tgz", + "integrity": "sha512-nAA1qsorxgdDnx5ie/FL90nM2riTNn72wIq8jtWsR8trsk1uTIHJgQQjEgviFCtMg4Ws9bEjo8DkWBgVGdPFmw==" }, "node_modules/@szmarczak/http-timer": { "version": "1.1.2", @@ -2491,14 +2559,24 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.0.tgz", - "integrity": "sha512-bnpOoa+DownbciXj0jVGENf8VYQnE2LNWomhYuCsMmmx9Jd9lwq0WXODuwpSsp8AVdKM2/HorrzxAfbKvWTByQ==", + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], "dependencies": { - "caniuse-lite": "^1.0.30001313", - "electron-to-chromium": "^1.4.76", + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", "escalade": "^3.1.1", - "node-releases": "^2.0.2", + "node-releases": "^2.0.3", "picocolors": "^1.0.0" }, "bin": { @@ -2506,10 +2584,6 @@ }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" } }, "node_modules/bs-logger": { @@ -2655,13 +2729,19 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001314", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001314.tgz", - "integrity": "sha512-0zaSO+TnCHtHJIbpLroX7nsD+vYuOVjl3uzFbJO1wMVbuveJA0RK2WcQA9ZUIOiO0/ArMiMgHJLxfEZhQiC0kw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } + "version": "1.0.30001340", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001340.tgz", + "integrity": "sha512-jUNz+a9blQTQVu4uFcn17uAD8IDizPzQkIKh3LCJfg9BkyIqExYYdyc/ZSlWUSKb8iYiXxKsxbv4zYSvkqjrxw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] }, "node_modules/chai": { "version": "4.2.0", @@ -3454,9 +3534,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.79", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.79.tgz", - "integrity": "sha512-nWfAxof87mGHkbORCwVRPst4FlSVdprOKS6dBMrcwn3sjwf8iHXEhsu1+FU5Psd7Ps3KKeBufAdfsPK5BmbSUg==" + "version": "1.4.137", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", + "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==" }, "node_modules/emitter-listener": { "version": "1.1.2", @@ -3522,9 +3602,9 @@ } }, "node_modules/es5-ext": { - "version": "0.10.57", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.57.tgz", - "integrity": "sha512-L7cCNoPwTkAp7IBHxrKLsh7NKiVFkcdxlP9vbVw9QUvb7gF0Mz9bEBN0WY9xqdTjGF907EMT/iG013vnbqwu1Q==", + "version": "0.10.61", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz", + "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==", "hasInstallScript": true, "dependencies": { "es6-iterator": "^2.0.3", @@ -5550,12 +5630,9 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dependencies": { - "minimist": "^1.2.5" - }, + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "bin": { "json5": "lib/cli.js" }, @@ -5847,9 +5924,9 @@ } }, "node_modules/mock-socket": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.1.2.tgz", - "integrity": "sha512-XKZkCnQ9ISOlTnaPg4LYYSMj7+6i78HyadYzLA5JM4465ibLdjappZD9Csnqc3Tfzep/eEK/LCJ29BTaLHoB1A==", + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.1.3.tgz", + "integrity": "sha512-uz8lx8c5wuJYJ21f5UtovqpV0+KJuVwE7cVOLNhrl2QW/CvmstOLRfjXnLSbfFHZtJtiaSGQu0oCJA8SmRcK6A==", "engines": { "node": ">= 8" } @@ -5992,9 +6069,9 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", + "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==" }, "node_modules/nodejs-fs-utils": { "version": "1.2.6", @@ -7391,14 +7468,6 @@ "node": ">= 6" } }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -8478,9 +8547,9 @@ } }, "node_modules/yargs": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", - "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", + "version": "17.5.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.0.tgz", + "integrity": "sha512-3sLxVhbAB5OC8qvVRebCLWuouhwh/rswsiDYx3WGxajUk/l4G20SKfrKKFeNIHboUFt2JFgv2yfn+5cgOr/t5A==", "dev": true, "dependencies": { "cliui": "^7.0.2", @@ -8541,40 +8610,40 @@ } }, "@babel/compat-data": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", - "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==" + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==" }, "@babel/core": { - "version": "7.17.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.5.tgz", - "integrity": "sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz", + "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==", "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helpers": "^7.17.2", - "@babel/parser": "^7.17.3", + "@babel/generator": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.10", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0", + "@babel/traverse": "^7.17.10", + "@babel/types": "^7.17.10", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", + "json5": "^2.2.1", "semver": "^6.3.0" } }, "@babel/generator": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", - "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", + "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.17.10", + "@jridgewell/gen-mapping": "^0.1.0", + "jsesc": "^2.5.1" } }, "@babel/helper-annotate-as-pure": { @@ -8586,13 +8655,13 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", + "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", "requires": { - "@babel/compat-data": "^7.16.4", + "@babel/compat-data": "^7.17.10", "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "browserslist": "^4.20.2", "semver": "^6.3.0" } }, @@ -8619,21 +8688,12 @@ } }, "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", "requires": { - "@babel/helper-get-function-arity": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", - "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" } }, "@babel/helper-hoist-variables": { @@ -8661,13 +8721,13 @@ } }, "@babel/helper-module-transforms": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz", - "integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", "requires": { "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", "@babel/helper-split-export-declaration": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "@babel/template": "^7.16.7", @@ -8701,11 +8761,11 @@ } }, "@babel/helper-simple-access": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" } }, "@babel/helper-split-export-declaration": { @@ -8727,12 +8787,12 @@ "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==" }, "@babel/helpers": { - "version": "7.17.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", - "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", "requires": { "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.0", + "@babel/traverse": "^7.17.9", "@babel/types": "^7.17.0" } }, @@ -8793,9 +8853,9 @@ } }, "@babel/parser": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", - "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==" + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz", + "integrity": "sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==" }, "@babel/plugin-proposal-class-properties": { "version": "7.16.7", @@ -8936,9 +8996,9 @@ } }, "@babel/register": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.17.0.tgz", - "integrity": "sha512-UNZsMAZ7uKoGHo1HlEXfteEOYssf64n/PNLHGqOKq/bgYcu/4LrQWAHJwSCb3BRZK8Hi5gkJdRcwrGTO2wtRCg==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.17.7.tgz", + "integrity": "sha512-fg56SwvXRifootQEDQAu1mKdjh5uthPzdO0N6t358FktfL4XjAVXuH58ULoiW8mesxiOgNIrxiImqEwv0+hRRA==", "dev": true, "requires": { "clone-deep": "^4.0.1", @@ -8949,9 +9009,9 @@ } }, "@babel/runtime": { - "version": "7.17.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.2.tgz", - "integrity": "sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", + "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", "requires": { "regenerator-runtime": "^0.13.4" } @@ -8967,26 +9027,26 @@ } }, "@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.10.tgz", + "integrity": "sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==", "requires": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", + "@babel/generator": "^7.17.10", "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", + "@babel/parser": "^7.17.10", + "@babel/types": "^7.17.10", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz", + "integrity": "sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==", "requires": { "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" @@ -9272,11 +9332,25 @@ "chalk": "^4.0.0" } }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "@jridgewell/resolve-uri": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==" }, + "@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==" + }, "@jridgewell/sourcemap-codec": { "version": "1.4.11", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", @@ -9297,9 +9371,9 @@ "integrity": "sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg==" }, "@noble/secp256k1": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.5.2.tgz", - "integrity": "sha512-5mzA40W2q55VCRuC9XzmkiEnODdY0c5a7qsK2QcOfI5/MuVQyBaWGQyE6YOEF7kDwp+tDVWGsCDVJUME+wsWWw==" + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.5.5.tgz", + "integrity": "sha512-sZ1W6gQzYnu45wPrWx8D3kwI2/U29VYTx9OjbDAd7jwRItJ0cSTMPRL/C8AWZFn9kWFLQGqEXVEE86w4Z8LpIQ==" }, "@nodelib/fs.scandir": { "version": "2.1.5", @@ -9484,349 +9558,350 @@ } }, "@polkadot/api": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-7.11.1.tgz", - "integrity": "sha512-VTrhVuSJrWhIww1ofYPd7EhJd1UwKntfdPNRuy/abfb6GPzYCglKV6Sze3CsbI2KawC5oo1K7Ffrdf/lJy81kg==", - "requires": { - "@babel/runtime": "^7.17.2", - "@polkadot/api-augment": "7.11.1", - "@polkadot/api-base": "7.11.1", - "@polkadot/api-derive": "7.11.1", - "@polkadot/keyring": "^8.4.1", - "@polkadot/rpc-augment": "7.11.1", - "@polkadot/rpc-core": "7.11.1", - "@polkadot/rpc-provider": "7.11.1", - "@polkadot/types": "7.11.1", - "@polkadot/types-augment": "7.11.1", - "@polkadot/types-codec": "7.11.1", - "@polkadot/types-create": "7.11.1", - "@polkadot/types-known": "7.11.1", - "@polkadot/util": "^8.4.1", - "@polkadot/util-crypto": "^8.4.1", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-8.3.2.tgz", + "integrity": "sha512-hq0OEMHptGL57n+MRaFzcwupy0ewTriDeqefTeAHC6iKmfFg2tRqb4FmsSAMJF4vWKBCpWW5q/YIUFR162V1cA==", + "requires": { + "@babel/runtime": "^7.17.9", + "@polkadot/api-augment": "8.3.2", + "@polkadot/api-base": "8.3.2", + "@polkadot/api-derive": "8.3.2", + "@polkadot/keyring": "^9.1.1", + "@polkadot/rpc-augment": "8.3.2", + "@polkadot/rpc-core": "8.3.2", + "@polkadot/rpc-provider": "8.3.2", + "@polkadot/types": "8.3.2", + "@polkadot/types-augment": "8.3.2", + "@polkadot/types-codec": "8.3.2", + "@polkadot/types-create": "8.3.2", + "@polkadot/types-known": "8.3.2", + "@polkadot/util": "^9.1.1", + "@polkadot/util-crypto": "^9.1.1", "eventemitter3": "^4.0.7", - "rxjs": "^7.5.4" + "rxjs": "^7.5.5" } }, "@polkadot/api-augment": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-7.11.1.tgz", - "integrity": "sha512-CqtmRZsr7va45r/wnsH+NZMqPyUQv46fmiHxt5gq6NC4p0ziDEVVDDHLlABx5RhQzCvdiBAccZ/X8DyMCFFGEA==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-8.3.2.tgz", + "integrity": "sha512-xGy4D2FwiIN1betUSGn5GkK0C4D1ILV9hbB02XTK20a1W6UMY7/pcp6ne+eHkHf96a/hN8HHVwhlMHJqoYNRVQ==", "requires": { - "@babel/runtime": "^7.17.2", - "@polkadot/api-base": "7.11.1", - "@polkadot/rpc-augment": "7.11.1", - "@polkadot/types": "7.11.1", - "@polkadot/types-augment": "7.11.1", - "@polkadot/types-codec": "7.11.1", - "@polkadot/util": "^8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/api-base": "8.3.2", + "@polkadot/rpc-augment": "8.3.2", + "@polkadot/types": "8.3.2", + "@polkadot/types-augment": "8.3.2", + "@polkadot/types-codec": "8.3.2", + "@polkadot/util": "^9.1.1" } }, "@polkadot/api-base": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-base/-/api-base-7.11.1.tgz", - "integrity": "sha512-MATI9tm0x3rRlipLMevWzJ4cGvMyrUGyOfwjMg3Z67U7atZgZ93LzowjzDcvSgFVM14d1tBOVWBKkCKnk7C6Zg==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/api-base/-/api-base-8.3.2.tgz", + "integrity": "sha512-f8wuzL6NDbB7IkWNdRF+AVJ1vuv/RypDkb5Cc8tYwQupBuUvvM1ZtKylB5B7M/Hm2NOMxAwE6sBV+hp3BdyOtA==", "requires": { - "@babel/runtime": "^7.17.2", - "@polkadot/rpc-core": "7.11.1", - "@polkadot/types": "7.11.1", - "@polkadot/util": "^8.4.1", - "rxjs": "^7.5.4" + "@babel/runtime": "^7.17.9", + "@polkadot/rpc-core": "8.3.2", + "@polkadot/types": "8.3.2", + "@polkadot/util": "^9.1.1", + "rxjs": "^7.5.5" } }, "@polkadot/api-derive": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-7.11.1.tgz", - "integrity": "sha512-py7pqs5mLaKPNDvRZ7BcUC7obsbLIuzJT/kZFiGzJXmaObSzU2lJkGD7fV34QlpmGP+Bqb4KtlhtY+Tnq33C0w==", - "requires": { - "@babel/runtime": "^7.17.2", - "@polkadot/api": "7.11.1", - "@polkadot/api-augment": "7.11.1", - "@polkadot/api-base": "7.11.1", - "@polkadot/rpc-core": "7.11.1", - "@polkadot/types": "7.11.1", - "@polkadot/types-codec": "7.11.1", - "@polkadot/util": "^8.4.1", - "@polkadot/util-crypto": "^8.4.1", - "rxjs": "^7.5.4" + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-8.3.2.tgz", + "integrity": "sha512-9wZLVTwhR4wDpuBIiPz3QPJtZMj9nPble3DDg6OthLNsvqQFEO1sexJonzbLcq9883JWIXF8xpE+RuW6z+GssA==", + "requires": { + "@babel/runtime": "^7.17.9", + "@polkadot/api": "8.3.2", + "@polkadot/api-augment": "8.3.2", + "@polkadot/api-base": "8.3.2", + "@polkadot/rpc-core": "8.3.2", + "@polkadot/types": "8.3.2", + "@polkadot/types-codec": "8.3.2", + "@polkadot/util": "^9.1.1", + "@polkadot/util-crypto": "^9.1.1", + "rxjs": "^7.5.5" } }, "@polkadot/keyring": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-8.4.1.tgz", - "integrity": "sha512-0qfS7qikUxhe6LEdCOcMRdCxEa26inJ5aSUWaf5dXy+dgy9VJiov6uXAbXdAd1UHpDvr9hvw94FX+hXsJ7Vsyw==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-9.1.1.tgz", + "integrity": "sha512-qjnO1795v7wDvU2hW0H+z7bMPNV3xcVnIjozt3/+Y5Lphu3Tohh3WNgf9uNKIUTwbWxTF4wWsiUM1ajY4CRuMA==", "requires": { - "@babel/runtime": "^7.17.2", - "@polkadot/util": "8.4.1", - "@polkadot/util-crypto": "8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/util": "9.1.1", + "@polkadot/util-crypto": "9.1.1" } }, "@polkadot/networks": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-8.4.1.tgz", - "integrity": "sha512-YFY3fPLbc1Uz9zsX4TOzjY/FF09nABMgrMkvqddrVbSgo71NvoBv3Gqw3mKV/7bX1Gzk1ODfvTzamdpsKEWSnA==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-9.1.1.tgz", + "integrity": "sha512-L/jk8vDr4shzGEVOqOimmXySLpbrN8+qlk+BR3A6rFa4N+XjtcGvnnt+so+rXwJOu7U4/ir6qPU2Iq63XbQTMA==", "requires": { - "@babel/runtime": "^7.17.2", - "@polkadot/util": "8.4.1", - "@substrate/ss58-registry": "^1.14.0" + "@babel/runtime": "^7.17.9", + "@polkadot/util": "9.1.1", + "@substrate/ss58-registry": "^1.17.0" } }, "@polkadot/rpc-augment": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-7.11.1.tgz", - "integrity": "sha512-cP/g6dM5Rmdeno+sOi/PBvAEycRoi/UI1MOKb0lVhlFJayw/uyGOhHtPKOnLh2fyDJ/q66HO3pu6aem3ORFwhQ==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-8.3.2.tgz", + "integrity": "sha512-3uuetbuu4KXoPSixEq/ux7v0Uko4b5oK9GygHf94DhnHlL2p8ziJiiQbKx95AYkR3wxTcBMEZLgocrckvDcEnA==", "requires": { - "@babel/runtime": "^7.17.2", - "@polkadot/rpc-core": "7.11.1", - "@polkadot/types": "7.11.1", - "@polkadot/types-codec": "7.11.1", - "@polkadot/util": "^8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/rpc-core": "8.3.2", + "@polkadot/types": "8.3.2", + "@polkadot/types-codec": "8.3.2", + "@polkadot/util": "^9.1.1" } }, "@polkadot/rpc-core": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-7.11.1.tgz", - "integrity": "sha512-Bp71BwOSPT4/xmYWn9e9/ikGKYYmltbceVwa0MJiuKI0Xd5YntjtJVov17Fqlt+eddkLGt74750paykvHDJWWQ==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-8.3.2.tgz", + "integrity": "sha512-dfLYFTj1ehBbAdMuJ8EvOcOzHVjbFtmGRS3eMmm6S2uVjYbsBe8TJRks5k3InIzJsn1myeqQ5sU1eEPVpr5NdA==", "requires": { - "@babel/runtime": "^7.17.2", - "@polkadot/rpc-augment": "7.11.1", - "@polkadot/rpc-provider": "7.11.1", - "@polkadot/types": "7.11.1", - "@polkadot/util": "^8.4.1", - "rxjs": "^7.5.4" + "@babel/runtime": "^7.17.9", + "@polkadot/rpc-augment": "8.3.2", + "@polkadot/rpc-provider": "8.3.2", + "@polkadot/types": "8.3.2", + "@polkadot/util": "^9.1.1", + "rxjs": "^7.5.5" } }, "@polkadot/rpc-provider": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-7.11.1.tgz", - "integrity": "sha512-07Mg+r9swMjNISDK8ntDI5gFZU8rtHeoB27/qQwZzcWugogva8rNhaInBikZPKlF7yxM6l2VMaQnOziKUNsnRw==", - "requires": { - "@babel/runtime": "^7.17.2", - "@polkadot/keyring": "^8.4.1", - "@polkadot/types": "7.11.1", - "@polkadot/types-support": "7.11.1", - "@polkadot/util": "^8.4.1", - "@polkadot/util-crypto": "^8.4.1", - "@polkadot/x-fetch": "^8.4.1", - "@polkadot/x-global": "^8.4.1", - "@polkadot/x-ws": "^8.4.1", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-8.3.2.tgz", + "integrity": "sha512-k3VIGThgQeGzaSSccKhKtDNIZRQMe6sZ1gQHvirBo8Law51yiOGpqHmq3x7faECG68oGlCvQBRHVKLz47k0EuA==", + "requires": { + "@babel/runtime": "^7.17.9", + "@polkadot/keyring": "^9.1.1", + "@polkadot/types": "8.3.2", + "@polkadot/types-support": "8.3.2", + "@polkadot/util": "^9.1.1", + "@polkadot/util-crypto": "^9.1.1", + "@polkadot/x-fetch": "^9.1.1", + "@polkadot/x-global": "^9.1.1", + "@polkadot/x-ws": "^9.1.1", + "@substrate/connect": "0.7.4", "eventemitter3": "^4.0.7", - "mock-socket": "^9.1.2", + "mock-socket": "^9.1.3", "nock": "^13.2.4" } }, "@polkadot/typegen": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/typegen/-/typegen-7.11.1.tgz", - "integrity": "sha512-pdxBOEU6VoMd2xjexQPfHSb0PC1DU/zXs/Zq+Z4tT+PPWkr9TtfbcZWpGmg6xFyWChcmurvwCI/VTnurBUFC0A==", - "dev": true, - "requires": { - "@babel/core": "^7.17.5", - "@babel/register": "^7.17.0", - "@babel/runtime": "^7.17.2", - "@polkadot/api": "7.11.1", - "@polkadot/api-augment": "7.11.1", - "@polkadot/rpc-augment": "7.11.1", - "@polkadot/rpc-provider": "7.11.1", - "@polkadot/types": "7.11.1", - "@polkadot/types-augment": "7.11.1", - "@polkadot/types-codec": "7.11.1", - "@polkadot/types-create": "7.11.1", - "@polkadot/types-support": "7.11.1", - "@polkadot/util": "^8.4.1", - "@polkadot/x-ws": "^8.4.1", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/typegen/-/typegen-8.3.2.tgz", + "integrity": "sha512-h9H10/xmfzD4knS3P5qPQcUJr+BG+eGyLx2f6ULUqMX9jTaS0qCa8THfw/k+9KWE79/2XJpJQwNTwjGbmk8WKg==", + "dev": true, + "requires": { + "@babel/core": "^7.17.10", + "@babel/register": "^7.17.7", + "@babel/runtime": "^7.17.9", + "@polkadot/api": "8.3.2", + "@polkadot/api-augment": "8.3.2", + "@polkadot/rpc-augment": "8.3.2", + "@polkadot/rpc-provider": "8.3.2", + "@polkadot/types": "8.3.2", + "@polkadot/types-augment": "8.3.2", + "@polkadot/types-codec": "8.3.2", + "@polkadot/types-create": "8.3.2", + "@polkadot/types-support": "8.3.2", + "@polkadot/util": "^9.1.1", + "@polkadot/x-ws": "^9.1.1", "handlebars": "^4.7.7", "websocket": "^1.0.34", - "yargs": "^17.3.1" + "yargs": "^17.4.1" } }, "@polkadot/types": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-7.11.1.tgz", - "integrity": "sha512-jxVrxIbsSfH9xK1Q3vaCfJmbkm0OlvoXz0GxdP5RJ7dQnxlNYWQUXanFkKebbRL8gSEs1wSRVccil/TSH65Nvg==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-8.3.2.tgz", + "integrity": "sha512-YF1Kc/sk2IbMS6ZdpV0yu3eHnDNbv+KjUVW1nutGpgpmmDNDL5kDjyrowV4k7zgxvPDOWnn8kjfbsgzxHdkWlQ==", "requires": { - "@babel/runtime": "^7.17.2", - "@polkadot/keyring": "^8.4.1", - "@polkadot/types-augment": "7.11.1", - "@polkadot/types-codec": "7.11.1", - "@polkadot/types-create": "7.11.1", - "@polkadot/util": "^8.4.1", - "@polkadot/util-crypto": "^8.4.1", - "rxjs": "^7.5.4" + "@babel/runtime": "^7.17.9", + "@polkadot/keyring": "^9.1.1", + "@polkadot/types-augment": "8.3.2", + "@polkadot/types-codec": "8.3.2", + "@polkadot/types-create": "8.3.2", + "@polkadot/util": "^9.1.1", + "@polkadot/util-crypto": "^9.1.1", + "rxjs": "^7.5.5" } }, "@polkadot/types-augment": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-7.11.1.tgz", - "integrity": "sha512-jCnZ/eMkLaqSKl5q4JwBxslhAaJSSNHt04reZRs1i2jlC2UVgiFN1Rr5GJmHYAwDPoFcge/rAm6bckfhXUIdOw==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-8.3.2.tgz", + "integrity": "sha512-zT2iYLzkXej/tbfq3BEjDZ6TtWxdCuNasVMo9sizuZhqq4GOg3fuQWF1c2rga2OCZhMR20Y4zOgthsvNEUMykQ==", "requires": { - "@babel/runtime": "^7.17.2", - "@polkadot/types": "7.11.1", - "@polkadot/types-codec": "7.11.1", - "@polkadot/util": "^8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/types": "8.3.2", + "@polkadot/types-codec": "8.3.2", + "@polkadot/util": "^9.1.1" } }, "@polkadot/types-codec": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-7.11.1.tgz", - "integrity": "sha512-rDM/FYcnou2Chy+urd7U41lcjM6jWUEUydyP9NuTOSAamCGtH0eKw52GURKTsKTT5r8wJdPMKv/yNxs1i+l5Lw==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-8.3.2.tgz", + "integrity": "sha512-cuh3tASVo+7QBVr6/yelrwm63I+CWZuOCetknHZ8A0MTy7u6VCvKcXlN6qdKiGmOou2qgBWfUNlvjwkS+LJGHA==", "requires": { - "@babel/runtime": "^7.17.2", - "@polkadot/util": "^8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/util": "^9.1.1" } }, "@polkadot/types-create": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-7.11.1.tgz", - "integrity": "sha512-nVYaJC/IDsM4WM9WGjAI7qQ9scPSlBqqzwqLdvXCJeq3trOTt68x39DD0zp0hzJ/7MeXjPToDDWjpAF0B9mWSQ==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-8.3.2.tgz", + "integrity": "sha512-AUsftFgsDWF5bhy9WGxlFXaseqPAPna6uM5EHUPSl6eca+2ORuIkT12/tvnqkjPrRzs2RnE/Mkc+/IgNQEY3jQ==", "requires": { - "@babel/runtime": "^7.17.2", - "@polkadot/types-codec": "7.11.1", - "@polkadot/util": "^8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/types-codec": "8.3.2", + "@polkadot/util": "^9.1.1" } }, "@polkadot/types-known": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-7.11.1.tgz", - "integrity": "sha512-BBqQxG7I+wUjeLby1u5p9aSoZ5Vy0oCwmm/aKN64JH9vBEz1OOA0pRdcCooGCG/884Wb5pRpacWTepQMQkOTLw==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-8.3.2.tgz", + "integrity": "sha512-Ry5kiAbWQKQNgctgwHkdaK8AD9N7NK4NblySn2S20aM3DtV48gBqp7fP6obCvJLoQIGQ0LNvfMqkRDPXid6JSw==", "requires": { - "@babel/runtime": "^7.17.2", - "@polkadot/networks": "^8.4.1", - "@polkadot/types": "7.11.1", - "@polkadot/types-codec": "7.11.1", - "@polkadot/types-create": "7.11.1", - "@polkadot/util": "^8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/networks": "^9.1.1", + "@polkadot/types": "8.3.2", + "@polkadot/types-codec": "8.3.2", + "@polkadot/types-create": "8.3.2", + "@polkadot/util": "^9.1.1" } }, "@polkadot/types-support": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-7.11.1.tgz", - "integrity": "sha512-pJmDUHK7DOO6mjpntxq9Lq0tjvqwc15FrrrNbuENgRiOueRqcAlzv+V80wdzoIBUwINgKphtpzu+rdQIYsVVQg==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-8.3.2.tgz", + "integrity": "sha512-SBz6bpJMu3pkQ5gVsbHBFedAoR9yJt2LOFCgefkWUQ0AmQSRzvfGmmmlSVjexTT9ZozuOgOl/VFRsQjVSzkZYg==", "requires": { - "@babel/runtime": "^7.17.2", - "@polkadot/util": "^8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/util": "^9.1.1" } }, "@polkadot/util": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-8.4.1.tgz", - "integrity": "sha512-8+wqHgFbFWI5TfrvtcL888w0nWvFpbTTYIcbpEw+zYGp3n1YZTAMMP26bXWAaQX5AttxynJRij7JP3ySxYY1fg==", - "requires": { - "@babel/runtime": "^7.17.2", - "@polkadot/x-bigint": "8.4.1", - "@polkadot/x-global": "8.4.1", - "@polkadot/x-textdecoder": "8.4.1", - "@polkadot/x-textencoder": "8.4.1", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-9.1.1.tgz", + "integrity": "sha512-eJzyrM0+b+DLo1hD+y4Al1DOEdF0UEUVnWqWZNIx2fuKsgG72gFosJM0EOjbVoxq8B1Hx3KOCNc0fl3Mpc9oYQ==", + "requires": { + "@babel/runtime": "^7.17.9", + "@polkadot/x-bigint": "9.1.1", + "@polkadot/x-global": "9.1.1", + "@polkadot/x-textdecoder": "9.1.1", + "@polkadot/x-textencoder": "9.1.1", "@types/bn.js": "^5.1.0", "bn.js": "^5.2.0", "ip-regex": "^4.3.0" } }, "@polkadot/util-crypto": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-8.4.1.tgz", - "integrity": "sha512-mWjp83aIWw+EhKN9RkUDmubXibo25q5yHJl4BGm2gT71yTZcABB7q1SGfpDqLH9AB3eXJiutqhC4L3SH7YZ+6Q==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-9.1.1.tgz", + "integrity": "sha512-FiQ4u8q1QZNdE2MUMb3JupbSMei9Ww6Czo/QYPguy73Tp6OH3G9OX8abBgTUwS/gX/CFcbHajhb3oi95v0IgVg==", "requires": { - "@babel/runtime": "^7.17.2", + "@babel/runtime": "^7.17.9", "@noble/hashes": "1.0.0", - "@noble/secp256k1": "1.5.2", - "@polkadot/networks": "8.4.1", - "@polkadot/util": "8.4.1", - "@polkadot/wasm-crypto": "^4.5.1", - "@polkadot/x-bigint": "8.4.1", - "@polkadot/x-randomvalues": "8.4.1", + "@noble/secp256k1": "1.5.5", + "@polkadot/networks": "9.1.1", + "@polkadot/util": "9.1.1", + "@polkadot/wasm-crypto": "^6.0.1", + "@polkadot/x-bigint": "9.1.1", + "@polkadot/x-randomvalues": "9.1.1", "@scure/base": "1.0.0", "ed2curve": "^0.3.0", "tweetnacl": "^1.0.3" } }, "@polkadot/wasm-crypto": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-4.5.1.tgz", - "integrity": "sha512-Cr21ais3Kq3aedIHZ3J1tjgeD/+K8FCiwEawr0oRywNBSJR8wyuZMePs4swR/6xm8wbBkpqoBVHz/UQHqqQJmA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-6.0.1.tgz", + "integrity": "sha512-nW5DDrciHGbZbj0Xh7w0Bnh5exSJUw96Zux7RuGfXuoXXHZBcf0QiB4E2dcVh3d/NkF7PkB99FlkdQxQp4M0Rg==", "requires": { - "@babel/runtime": "^7.16.3", - "@polkadot/wasm-crypto-asmjs": "^4.5.1", - "@polkadot/wasm-crypto-wasm": "^4.5.1" + "@babel/runtime": "^7.17.9", + "@polkadot/wasm-crypto-asmjs": "^6.0.1", + "@polkadot/wasm-crypto-wasm": "^6.0.1" } }, "@polkadot/wasm-crypto-asmjs": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-4.5.1.tgz", - "integrity": "sha512-DOdRiWhxVvmqTvp+E9z1j+Yr0zDOGsDvqnT/eNw0Dl1FVUOImsEa7FKns/urASmcxCVEE1jtUWSnij29jrORMQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-6.0.1.tgz", + "integrity": "sha512-cSGsHBLfPW2nHztgZd+gisCoScA02jbAzwjop/b8xumQ2kq7yAed/K9G1lOQiofEKRetIJeqBzJyk0etopRORw==", "requires": { - "@babel/runtime": "^7.16.3" + "@babel/runtime": "^7.17.9" } }, "@polkadot/wasm-crypto-wasm": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-4.5.1.tgz", - "integrity": "sha512-hPwke85HxpgG/RAlwdCE8u5w7bThvWg399mlB+XjogXMxOUWBZSgq2XYbgzROUXx27inK9nStF4Pnc4zJnqs9A==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-6.0.1.tgz", + "integrity": "sha512-0r/QgOjIyw4U0mLk6Tm97Di92uxcSPjTo7dK6tdXo1PwYouhzO5IJnL/jNgma8dm5hQoBhk7rcErmkh8c1kLFQ==", "requires": { - "@babel/runtime": "^7.16.3" + "@babel/runtime": "^7.17.9" } }, "@polkadot/x-bigint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-8.4.1.tgz", - "integrity": "sha512-QVP0UMoM0nBD998s3ESeaoSiVMEnHK3x0CCqocKO4l7ADNw8lfWdDG7Bb0+ymNaFYGz2KgEWxkN0VhNEnXzo0w==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-9.1.1.tgz", + "integrity": "sha512-1At5Gut4Wzep59vKTATCMWwm6EG0h+vq/qftou5kvt8u0QI2+YGJ5LAXzHk3n0/OOn8cvuAzS2kYQ4duE7YA+g==", "requires": { - "@babel/runtime": "^7.17.2", - "@polkadot/x-global": "8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/x-global": "9.1.1" } }, "@polkadot/x-fetch": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-8.4.1.tgz", - "integrity": "sha512-DPkgXZYt1B4xCzEw/3hxRc4/lR+NEr/b/GYijSPM8UsVoEKqHWTx2qCXrxvmKh1WD9reQ+oUACPVjRcBz5bs+g==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-9.1.1.tgz", + "integrity": "sha512-hoV/73i8znFCTOaDElGPQAF0AcOV9C7QAq7oJkkfaTqLaRbn2rKg7ZiwLzbFo/8YYGq3QTRcO4gzd5UD2NXZ0Q==", "requires": { - "@babel/runtime": "^7.17.2", - "@polkadot/x-global": "8.4.1", - "@types/node-fetch": "^2.5.12", + "@babel/runtime": "^7.17.9", + "@polkadot/x-global": "9.1.1", + "@types/node-fetch": "^2.6.1", "node-fetch": "^2.6.7" } }, "@polkadot/x-global": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.4.1.tgz", - "integrity": "sha512-MQs89LKQrJwiXjV7dY2kDOPNaiWrwaQ/Fzg93ycB2xMCclRV1jRFRhnhTPJ8Ao79lhCCoazd7pXIyFgfifxdqg==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-9.1.1.tgz", + "integrity": "sha512-2aP6edHMPE14mQUFA8ipiB74PKoS6/wFWjTSbGqVOkGN0B7/kvX0/bW2fb6jPcfQlutPeqGN6dZnraoqzTzv6w==", "requires": { - "@babel/runtime": "^7.17.2" + "@babel/runtime": "^7.17.9" } }, "@polkadot/x-randomvalues": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-8.4.1.tgz", - "integrity": "sha512-1dRIFIib4RzyVo0k5oMLuxqSuZEV6UVvvN+jJw9G/9P1ggZtHjM1KwoFcyHgvpk2RWTB9eJZFemwSvQTpdmSJw==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-9.1.1.tgz", + "integrity": "sha512-so99yggz5QoCHaVLxekIPK7Ia8Aynv0pPmTroGpWUrR1Gjj5l1dU7lN3sfyA7MBij4uGYiI3sSma5KmlRYawiQ==", "requires": { - "@babel/runtime": "^7.17.2", - "@polkadot/x-global": "8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/x-global": "9.1.1" } }, "@polkadot/x-textdecoder": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-8.4.1.tgz", - "integrity": "sha512-qbSXyR2KvE1bO6QGsxWU3Yrx5e70rX2lwv0MHG++MyyNaDoBM3hjx14lF911bYRWXR6MW4eZ+0Nakn0oM5uSKw==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-9.1.1.tgz", + "integrity": "sha512-0eQPesYOfpdetHMIzTUiXcMOPzjX2hzgdSC9Q64iGWoRKwly1clUQ9SPlwEmkRF7ulPcq1pZv2kgHdKNj+lL8g==", "requires": { - "@babel/runtime": "^7.17.2", - "@polkadot/x-global": "8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/x-global": "9.1.1" } }, "@polkadot/x-textencoder": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-8.4.1.tgz", - "integrity": "sha512-1UYuckNOk6NUk70Y/SGbK8oyGbqPlrny1x2OWoK/BT3/tyL2xKVV5TlXDOiFrX1PChbskXye5M8blCTYikFiJg==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-9.1.1.tgz", + "integrity": "sha512-DyemF56si5xgXLS+l9yl3YivC2cLFlGSUarKyrP+MRVAqVKlLc9h3KXDxwnVxNeLVTg2gxSLpxo6pGqLydtFaQ==", "requires": { - "@babel/runtime": "^7.17.2", - "@polkadot/x-global": "8.4.1" + "@babel/runtime": "^7.17.9", + "@polkadot/x-global": "9.1.1" } }, "@polkadot/x-ws": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-8.4.1.tgz", - "integrity": "sha512-u9rsJdVrBkSARy8BhJPho1yMMBSiI/Z/W8ZQRr1I28/QOwl02VYktFpFWWrhkBHsL9JlZ0wfnyKBPXrw8Wp2Vw==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-9.1.1.tgz", + "integrity": "sha512-jojrlEbeabRRCj0449IDg7BTOOntinMDZJJkABnPG3WnTtHa82TZQmrrdE51PIolGwFW6qDamh9IQcfI/Ir7Yw==", "requires": { - "@babel/runtime": "^7.17.2", - "@polkadot/x-global": "8.4.1", + "@babel/runtime": "^7.17.9", + "@polkadot/x-global": "9.1.1", "@types/websocket": "^1.0.5", "websocket": "^1.0.34" } @@ -9860,10 +9935,51 @@ "@sinonjs/commons": "^1.7.0" } }, + "@substrate/connect": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@substrate/connect/-/connect-0.7.4.tgz", + "integrity": "sha512-sq5c2Z9073zyF7QOU/DLaIWI0LuECEpCovRpN8MXBieCeHnqGS2xZrPzsvvIP3LNrb/iPb5uMCyFZ4DaQa+0Bw==", + "requires": { + "@substrate/connect-extension-protocol": "^1.0.0", + "@substrate/smoldot-light": "0.6.15", + "eventemitter3": "^4.0.7" + } + }, + "@substrate/connect-extension-protocol": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@substrate/connect-extension-protocol/-/connect-extension-protocol-1.0.0.tgz", + "integrity": "sha512-nFVuKdp71hMd/MGlllAOh+a2hAqt8m6J2G0aSsS/RcALZexxF9jodbFc62ni8RDtJboeOfXAHhenYOANvJKPIg==" + }, + "@substrate/smoldot-light": { + "version": "0.6.15", + "resolved": "https://registry.npmjs.org/@substrate/smoldot-light/-/smoldot-light-0.6.15.tgz", + "integrity": "sha512-c2tJCSp9Litsn/p8wY1FfEqIkJI8Peh89BU7T43bruWRO2SSgLVh0cIVbOCY4en90tIOX4W0CueRWFBRQz7BjQ==", + "requires": { + "buffer": "^6.0.1", + "pako": "^2.0.4", + "websocket": "^1.0.32" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "pako": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.4.tgz", + "integrity": "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg==" + } + } + }, "@substrate/ss58-registry": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@substrate/ss58-registry/-/ss58-registry-1.15.0.tgz", - "integrity": "sha512-UU5uN8HEp0NM22od6kHWLltX0McQPgPX6O3gj7fSf1mMExsCS5fzW88gv1WaVaT8Q+umvGgnIAF7+Tvp8fqTFw==" + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/@substrate/ss58-registry/-/ss58-registry-1.18.0.tgz", + "integrity": "sha512-nAA1qsorxgdDnx5ie/FL90nM2riTNn72wIq8jtWsR8trsk1uTIHJgQQjEgviFCtMg4Ws9bEjo8DkWBgVGdPFmw==" }, "@szmarczak/http-timer": { "version": "1.1.2", @@ -10438,14 +10554,14 @@ "dev": true }, "browserslist": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.0.tgz", - "integrity": "sha512-bnpOoa+DownbciXj0jVGENf8VYQnE2LNWomhYuCsMmmx9Jd9lwq0WXODuwpSsp8AVdKM2/HorrzxAfbKvWTByQ==", + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", "requires": { - "caniuse-lite": "^1.0.30001313", - "electron-to-chromium": "^1.4.76", + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", "escalade": "^3.1.1", - "node-releases": "^2.0.2", + "node-releases": "^2.0.3", "picocolors": "^1.0.0" } }, @@ -10549,9 +10665,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001314", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001314.tgz", - "integrity": "sha512-0zaSO+TnCHtHJIbpLroX7nsD+vYuOVjl3uzFbJO1wMVbuveJA0RK2WcQA9ZUIOiO0/ArMiMgHJLxfEZhQiC0kw==" + "version": "1.0.30001340", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001340.tgz", + "integrity": "sha512-jUNz+a9blQTQVu4uFcn17uAD8IDizPzQkIKh3LCJfg9BkyIqExYYdyc/ZSlWUSKb8iYiXxKsxbv4zYSvkqjrxw==" }, "chai": { "version": "4.2.0", @@ -11157,9 +11273,9 @@ } }, "electron-to-chromium": { - "version": "1.4.79", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.79.tgz", - "integrity": "sha512-nWfAxof87mGHkbORCwVRPst4FlSVdprOKS6dBMrcwn3sjwf8iHXEhsu1+FU5Psd7Ps3KKeBufAdfsPK5BmbSUg==" + "version": "1.4.137", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", + "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==" }, "emitter-listener": { "version": "1.1.2", @@ -11213,9 +11329,9 @@ } }, "es5-ext": { - "version": "0.10.57", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.57.tgz", - "integrity": "sha512-L7cCNoPwTkAp7IBHxrKLsh7NKiVFkcdxlP9vbVw9QUvb7gF0Mz9bEBN0WY9xqdTjGF907EMT/iG013vnbqwu1Q==", + "version": "0.10.61", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz", + "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==", "requires": { "es6-iterator": "^2.0.3", "es6-symbol": "^3.1.3", @@ -12753,12 +12869,9 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "requires": { - "minimist": "^1.2.5" - } + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" }, "jsonfile": { "version": "4.0.0", @@ -12980,9 +13093,9 @@ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" }, "mock-socket": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.1.2.tgz", - "integrity": "sha512-XKZkCnQ9ISOlTnaPg4LYYSMj7+6i78HyadYzLA5JM4465ibLdjappZD9Csnqc3Tfzep/eEK/LCJ29BTaLHoB1A==" + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.1.3.tgz", + "integrity": "sha512-uz8lx8c5wuJYJ21f5UtovqpV0+KJuVwE7cVOLNhrl2QW/CvmstOLRfjXnLSbfFHZtJtiaSGQu0oCJA8SmRcK6A==" }, "module-details-from-path": { "version": "1.0.3", @@ -13098,9 +13211,9 @@ "dev": true }, "node-releases": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", + "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==" }, "nodejs-fs-utils": { "version": "1.2.6", @@ -14134,11 +14247,6 @@ "socks": "^2.3.3" } }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -14923,9 +15031,9 @@ } }, "yargs": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", - "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", + "version": "17.5.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.0.tgz", + "integrity": "sha512-3sLxVhbAB5OC8qvVRebCLWuouhwh/rswsiDYx3WGxajUk/l4G20SKfrKKFeNIHboUFt2JFgv2yfn+5cgOr/t5A==", "dev": true, "requires": { "cliui": "^7.0.2", diff --git a/scripts/cli/package.json b/scripts/cli/package.json index 842af1f2e0..7f79f04617 100644 --- a/scripts/cli/package.json +++ b/scripts/cli/package.json @@ -53,9 +53,9 @@ "license": "UNLICENSED", "dependencies": { "@babel/plugin-proposal-class-properties": "^7.16.7", - "@polkadot/api": "7.11.1", - "@polkadot/util": "^8.3.3", - "@polkadot/util-crypto": "^8.3.3", + "@polkadot/api": "8.3.2", + "@polkadot/util": "^9.1.1", + "@polkadot/util-crypto": "^9.1.1", "chai": "4.2.0", "chalk": "4.1.0", "clear": "0.1.0", @@ -76,7 +76,7 @@ }, "devDependencies": { "@babel/plugin-transform-modules-commonjs": "7.14.5", - "@polkadot/typegen": "7.11.1", + "@polkadot/typegen": "8.3.2", "@types/chai": "4.2.15", "@types/clear": "0.1.1", "@types/figlet": "1.2.1", diff --git a/scripts/cli/polymesh-meta.json b/scripts/cli/polymesh-meta.json index c327187420..3a5a8e60a4 100644 --- a/scripts/cli/polymesh-meta.json +++ b/scripts/cli/polymesh-meta.json @@ -1 +1 @@ -{"jsonrpc":"2.0","result":"0x6d6574610edd0a000c1c73705f636f72651863727970746f2c4163636f756e7449643332000004000401205b75383b2033325d0000040000032000000008000800000503000c08306672616d655f73797374656d2c4163636f756e74496e666f0814496e64657801102c4163636f756e74446174610114001401146e6f6e6365100114496e646578000124636f6e73756d657273100120526566436f756e7400012470726f766964657273100120526566436f756e7400012c73756666696369656e7473100120526566436f756e740001106461746114012c4163636f756e74446174610000100000050500141064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e6365732c4163636f756e744461746100001001106672656518011c42616c616e6365000120726573657276656418011c42616c616e636500012c6d6973635f66726f7a656e18011c42616c616e63650001286665655f66726f7a656e18011c42616c616e636500001800000507001c0c346672616d655f737570706f72741c77656967687473405065724469737061746368436c6173730404540120000c01186e6f726d616c2001045400012c6f7065726174696f6e616c200104540001246d616e6461746f727920010454000020000005060024083c7072696d69746976655f74797065731048323536000004000401205b75383b2033325d00002800000208002c102873705f72756e74696d651c67656e6572696318646967657374184469676573740410486173680124000401106c6f67733001545665633c4469676573744974656d3c486173683e3e000030000002340034102873705f72756e74696d651c67656e6572696318646967657374284469676573744974656d0410486173680124011c3c4368616e67657354726965526f6f740400240110486173680002002850726552756e74696d650800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e00060024436f6e73656e7375730800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e000400105365616c0800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e000500444368616e676573547269655369676e616c04003c01444368616e676573547269655369676e616c000700144f74686572040028011c5665633c75383e0000006452756e74696d65456e7669726f6e6d656e745570646174656400080000380000030400000008003c102873705f72756e74696d651c67656e6572696318646967657374444368616e676573547269655369676e616c000104404e6577436f6e66696775726174696f6e04004001804f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e000000004004184f7074696f6e04045401440108104e6f6e6500000010536f6d650400440000010000440c1c73705f636f7265306368616e6765735f74726965604368616e67657354726965436f6e66696775726174696f6e000008013c6469676573745f696e74657276616c10010c7533320001346469676573745f6c6576656c7310010c7533320000480000024c004c08306672616d655f73797374656d2c4576656e745265636f7264080445015004540124000c011470686173656104011450686173650001146576656e7450010445000118746f70696373650401185665633c543e0000500c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d65144576656e7400019c1853797374656d04005401706672616d655f73797374656d3a3a4576656e743c52756e74696d653e0000001c496e6469636573040070017870616c6c65745f696e64696365733a3a4576656e743c52756e74696d653e0003002042616c616e636573040074017c70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d653e000500204964656e7469747904008c017c70616c6c65745f6964656e746974793a3a4576656e743c52756e74696d653e0007004c4364645365727669636550726f76696465727304001d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365323e00080044506f6c796d657368436f6d6d69747465650400290101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365313e0009004c436f6d6d69747465654d656d6265727368697004003d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365313e000a0048546563686e6963616c436f6d6d69747465650400450101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365333e000b0070546563686e6963616c436f6d6d69747465654d656d6265727368697004004d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365333e000c004055706772616465436f6d6d69747465650400550101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365343e000d006855706772616465436f6d6d69747465654d656d6265727368697004005d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365343e000e00204d756c746953696704006501017c70616c6c65745f6d756c74697369673a3a4576656e743c52756e74696d653e000f001842726964676504007101017470616c6c65745f6272696467653a3a4576656e743c52756e74696d653e0010001c5374616b696e6704008501017870616c6c65745f7374616b696e673a3a4576656e743c52756e74696d653e001100204f6666656e63657304009501015870616c6c65745f6f6666656e6365733a3a4576656e740012001c53657373696f6e04009d01015470616c6c65745f73657373696f6e3a3a4576656e740013001c4772616e6470610400a101015470616c6c65745f6772616e6470613a3a4576656e7400150020496d4f6e6c696e650400b501018070616c6c65745f696d5f6f6e6c696e653a3a4576656e743c52756e74696d653e001700105375646f0400d901016c70616c6c65745f7375646f3a3a4576656e743c52756e74696d653e0019001441737365740400dd01017070616c6c65745f61737365743a3a4576656e743c52756e74696d653e001a004c4361706974616c446973747269627574696f6e04006902018870616c6c65745f6361706974616c5f646973747269627574696f6e3a3a4576656e74001b0028436865636b706f696e7404008102016070616c6c65745f636865636b706f696e743a3a4576656e74001c0044436f6d706c69616e63654d616e616765720400a102018070616c6c65745f636f6d706c69616e63655f6d616e616765723a3a4576656e74001d003c436f72706f72617465416374696f6e0400d502017c70616c6c65745f636f72706f726174655f616374696f6e733a3a4576656e74001e003c436f72706f7261746542616c6c6f7404000903017870616c6c65745f636f72706f726174655f62616c6c6f743a3a4576656e74001f00105069707304004103016c70616c6c65745f706970733a3a4576656e743c52756e74696d653e00210024506f7274666f6c696f04008103015c70616c6c65745f706f7274666f6c696f3a3a4576656e740022002c50726f746f636f6c46656504009103018c70616c6c65745f70726f746f636f6c5f6665653a3a4576656e743c52756e74696d653e002300245363686564756c657204009903018070616c6c65745f7363686564756c65723a3a4576656e743c52756e74696d653e00240028536574746c656d656e740400a103018470616c6c65745f736574746c656d656e743a3a4576656e743c52756e74696d653e00250028537461746973746963730400cd03016070616c6c65745f737461746973746963733a3a4576656e740026000c53746f04001504016870616c6c65745f73746f3a3a4576656e743c52756e74696d653e00270020547265617375727904003104017c70616c6c65745f74726561737572793a3a4576656e743c52756e74696d653e0028001c5574696c69747904003504015470616c6c65745f7574696c6974793a3a4576656e74002900104261736504004504014870616c6c65745f626173653a3a4576656e74002a003845787465726e616c4167656e747304004d04017470616c6c65745f65787465726e616c5f6167656e74733a3a4576656e74002b001c52656c6179657204005104017870616c6c65745f72656c617965723a3a4576656e743c52756e74696d653e002c001c5265776172647304005504017870616c6c65745f726577617264733a3a4576656e743c52756e74696d653e002d0024546573745574696c7304005904018470616c6c65745f746573745f7574696c733a3a4576656e743c52756e74696d653e00320000540c306672616d655f73797374656d1870616c6c6574144576656e740404540001184045787472696e7369635375636365737304005801304469737061746368496e666f000004b4416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e205c5b696e666f5c5d3c45787472696e7369634661696c6564080064013444697370617463684572726f7200005801304469737061746368496e666f00010490416e2065787472696e736963206661696c65642e205c5b6572726f722c20696e666f5c5d2c436f64655570646174656400020450603a636f6465602077617320757064617465642e284e65774163636f756e740400000130543a3a4163636f756e7449640003047841206e6577205c5b6163636f756e745c5d2077617320637265617465642e344b696c6c65644163636f756e740400000130543a3a4163636f756e74496400040468416e205c5b6163636f756e745c5d20776173207265617065642e2052656d61726b65640800000130543a3a4163636f756e744964000024011c543a3a48617368000504d04f6e206f6e2d636861696e2072656d61726b2068617070656e65642e205c5b6f726967696e2c2072656d61726b5f686173685c5d04704576656e7420666f72207468652053797374656d2070616c6c65742e580c346672616d655f737570706f72741c77656967687473304469737061746368496e666f00000c0118776569676874200118576569676874000114636c6173735c01344469737061746368436c617373000120706179735f6665656001105061797300005c0c346672616d655f737570706f72741c77656967687473344469737061746368436c61737300010c184e6f726d616c0000002c4f7065726174696f6e616c000100244d616e6461746f727900020000600c346672616d655f737570706f72741c7765696768747310506179730001080c596573000000084e6f0001000064082873705f72756e74696d653444697370617463684572726f72000120144f746865720000003043616e6e6f744c6f6f6b7570000100244261644f726967696e000200184d6f64756c65080114696e64657808010875380001146572726f72080108753800030044436f6e73756d657252656d61696e696e670004002c4e6f50726f76696465727300050014546f6b656e0400680128546f6b656e4572726f720006002841726974686d6574696304006c013c41726974686d657469634572726f720007000068082873705f72756e74696d6528546f6b656e4572726f7200011c1c4e6f46756e647300000020576f756c644469650001003042656c6f774d696e696d756d0002003043616e6e6f7443726561746500030030556e6b6e6f776e41737365740004001846726f7a656e0005002c556e737570706f72746564000600006c082873705f72756e74696d653c41726974686d657469634572726f7200010c24556e646572666c6f77000000204f766572666c6f77000100384469766973696f6e42795a65726f00020000700c3870616c6c65745f696e64696365731870616c6c6574144576656e7404045400010c34496e64657841737369676e65640800000130543a3a4163636f756e744964000010013c543a3a4163636f756e74496e646578000004b041206163636f756e7420696e646578207761732061737369676e65642e205c5b696e6465782c2077686f5c5d28496e6465784672656564040010013c543a3a4163636f756e74496e646578000104e441206163636f756e7420696e64657820686173206265656e2066726565642075702028756e61737369676e6564292e205c5b696e6465785c5d2c496e64657846726f7a656e080010013c543a3a4163636f756e74496e6465780000000130543a3a4163636f756e744964000204250141206163636f756e7420696e64657820686173206265656e2066726f7a656e20746f206974732063757272656e74206163636f756e742049442e205c5b696e6465782c2077686f5c5d0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909741064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e636573205261774576656e7404244163636f756e7449640100011c1c456e646f7765640c007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000018011c42616c616e63650000043101416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e205c5b6469642c206163636f756e742c20667265655f62616c616e63655d205472616e7366657218007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e74496400007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000018011c42616c616e636500008001304f7074696f6e3c4d656d6f3e000104f45472616e7366657220737563636565646564202866726f6d5f6469642c2066726f6d2c20746f5f6469642c20746f2c2076616c75652c206d656d6f292e2842616c616e636553657410007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000018011c42616c616e6365000204d4412062616c616e6365207761732073657420627920726f6f7420286469642c2077686f2c20667265652c207265736572766564292e504163636f756e7442616c616e63654275726e65640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e63650003083d01546865206163636f756e7420616e642074686520616d6f756e74206f6620756e6c6f636b65642062616c616e6365206f662074686174206163636f756e74207468617420776173206275726e65642e8c2863616c6c65722049642c2063616c6c6572206163636f756e742c20616d6f756e742920526573657276656408000001244163636f756e744964000018011c42616c616e63650004041901536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e205c5b77686f2c2076616c75655d28556e726573657276656408000001244163636f756e744964000018011c42616c616e63650005042101536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e205c5b77686f2c2076616c75655d4852657365727665526570617472696174656410000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000088011853746174757300060c4d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652ea05c5b66726f6d2c20746f2c2062616c616e63652c2064657374696e6174696f6e5f7374617475735d085c4576656e747320666f722074686973206d6f64756c652e007804184f7074696f6e040454017c0108104e6f6e6500000010536f6d6504007c00000100007c0c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f6964284964656e746974794964000004000401385b75383b20555549445f4c454e5d00008004184f7074696f6e04045401840108104e6f6e6500000010536f6d650400840000010000841064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e636573104d656d6f000004000401205b75383b2033325d00008814346672616d655f737570706f72741874726169747318746f6b656e73106d6973633442616c616e63655374617475730001081046726565000000205265736572766564000100008c1064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479205261774576656e7408244163636f756e7449640100184d6f6d656e740120014428446964437265617465640c007c01284964656e74697479496400000001244163636f756e74496400009001705665633c5365636f6e646172794b65793c4163636f756e7449643e3e00000c444964656e7469747920637265617465642e0088284449442c207072696d617279206b65792c207365636f6e64617279206b65797329485365636f6e646172794b657973416464656408007c01284964656e74697479496400009001705665633c5365636f6e646172794b65793c4163636f756e7449643e3e00010c845365636f6e64617279206b65797320616464656420746f206964656e746974792e003c284449442c206e6577206b65797329505365636f6e646172794b65797352656d6f76656408007c01284964656e7469747949640000ec01385665633c4163636f756e7449643e00020c945365636f6e64617279206b6579732072656d6f7665642066726f6d206964656e746974792e0080284449442c20746865206b657973207468617420676f742072656d6f76656429605365636f6e646172794b65794c6566744964656e7469747908007c01284964656e74697479496400000001244163636f756e74496400030c9041207365636f6e64617279206b6579206c656674207468656972206964656e746974792e0050284449442c207365636f6e64617279206b657929785365636f6e646172794b65795065726d697373696f6e735570646174656410007c01284964656e74697479496400000001244163636f756e744964000098012c5065726d697373696f6e73000098012c5065726d697373696f6e7300040c885365636f6e64617279206b6579207065726d697373696f6e7320757064617465642e000d01284449442c2075706461746564207365636f6e64617279206b65792c2070726576696f7573207065726d697373696f6e732c206e6577207065726d697373696f6e7329445072696d6172794b6579557064617465640c007c01284964656e74697479496400000001244163636f756e74496400000001244163636f756e74496400050c805072696d617279206b6579206f66206964656e74697479206368616e6765642e00a4284449442c206f6c64207072696d617279206b6579206163636f756e742049442c206e65772049442928436c61696d416464656408007c01284964656e7469747949640000f001344964656e74697479436c61696d00060c60436c61696d20616464656420746f206964656e746974792e0030284449442c20636c61696d2930436c61696d5265766f6b656408007c01284964656e7469747949640000f001344964656e74697479436c61696d00070c70436c61696d207265766f6b65642066726f6d206964656e746974792e0030284449442c20636c61696d294841737365744469645265676973746572656408007c01284964656e7469747949640000a001185469636b657200080c7041737365742773206964656e7469747920726567697374657265642e004c284173736574204449442c207469636b65722948417574686f72697a6174696f6e416464656418007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0000090101444f7074696f6e3c4163636f756e7449643e000020010c75363400000d010170417574686f72697a6174696f6e446174613c4163636f756e7449643e0000f401384f7074696f6e3c4d6f6d656e743e00090c604e657720617574686f72697a6174696f6e2061646465642e00310128617574686f72697365645f62792c207461726765745f6469642c207461726765745f6b65792c20617574685f69642c20617574686f72697a6174696f6e5f646174612c206578706972792950417574686f72697a6174696f6e5265766f6b65640c007801484f7074696f6e3c4964656e7469747949643e0000090101444f7074696f6e3c4163636f756e7449643e000020010c753634000a0ca0417574686f72697a6174696f6e207265766f6b65642062792074686520617574686f72697a65722e00b828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e52656a65637465640c007801484f7074696f6e3c4964656e7469747949643e0000090101444f7074696f6e3c4163636f756e7449643e000020010c753634000b0cd8417574686f72697a6174696f6e2072656a65637465642062792074686520757365722077686f2077617320617574686f72697a65642e00b828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e436f6e73756d65640c007801484f7074696f6e3c4964656e7469747949643e0000090101444f7074696f6e3c4163636f756e7449643e000020010c753634000c0c5c417574686f72697a6174696f6e20636f6e73756d65642e00b828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642988436464526571756972656d656e74466f725072696d6172794b657955706461746564040019010110626f6f6c000d0cc443444420726571756972656d656e7420666f72207570646174696e67207072696d617279206b6579206368616e6765642e0044286e65775f726571756972656d656e742950436464436c61696d73496e76616c69646174656408007c01284964656e74697479496400002001184d6f6d656e74000e10410143444420636c61696d732067656e65726174656420627920604964656e74697479496460202861204344442050726f7669646572292068617665206265656e20696e76616c6964617465642066726f6d24604d6f6d656e74602e0094284344442070726f7669646572204449442c2064697361626c652066726f6d2064617465294c5365636f6e646172794b65797346726f7a656e04007c01284964656e746974794964000f0cc4416c6c205365636f6e64617279206b657973206f6620746865206964656e74697479204944206172652066726f7a656e2e00142844494429545365636f6e646172794b657973556e66726f7a656e04007c01284964656e74697479496400100ccc416c6c205365636f6e64617279206b657973206f6620746865206964656e746974792049442061726520756e66726f7a656e2e00142844494429085c4576656e747320666f722074686973206d6f64756c652e00900000029400940c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579305365636f6e646172794b657904244163636f756e74496401000008010c6b65790001244163636f756e74496400012c7065726d697373696f6e7398012c5065726d697373696f6e730000980c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65792c5065726d697373696f6e7300000c011461737365749c014041737365745065726d697373696f6e7300012465787472696e736963b0015045787472696e7369635065726d697373696f6e73000124706f7274666f6c696fd40150506f7274666f6c696f5065726d697373696f6e7300009c0c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101a0010c1457686f6c650000001454686573650400a8012c42547265655365743c413e000100184578636570740400a8012c42547265655365743c413e00020000a00c4c706f6c796d6573685f7072696d697469766573187469636b6572185469636b657200000400a401405b75383b205449434b45525f4c454e5d0000a40000030c0000000800a80420425472656553657404045401a0000400ac000000ac000002a000b00c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101b4010c1457686f6c650000001454686573650400cc012c42547265655365743c413e000100184578636570740400cc012c42547265655365743c413e00020000b40c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65794450616c6c65745065726d697373696f6e73000008012c70616c6c65745f6e616d65b8012850616c6c65744e616d65000148646973706174636861626c655f6e616d6573bc0144446973706174636861626c654e616d65730000b8084c706f6c796d6573685f7072696d6974697665732850616c6c65744e616d650000040028011c5665633c75383e0000bc0c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101c0010c1457686f6c650000001454686573650400c4012c42547265655365743c413e000100184578636570740400c4012c42547265655365743c413e00020000c0084c706f6c796d6573685f7072696d69746976657340446973706174636861626c654e616d650000040028011c5665633c75383e0000c40420425472656553657404045401c0000400c8000000c8000002c000cc0420425472656553657404045401b4000400d0000000d0000002b400d40c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101d8010c1457686f6c650000001454686573650400e4012c42547265655365743c413e000100184578636570740400e4012c42547265655365743c413e00020000d80c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f69642c506f7274666f6c696f4964000008010c6469647c01284964656e7469747949640001106b696e64dc0134506f7274666f6c696f4b696e640000dc0c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f696434506f7274666f6c696f4b696e640001081c44656661756c7400000010557365720400e0013c506f7274666f6c696f4e756d62657200010000e00c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f69643c506f7274666f6c696f4e756d6265720000040020010c7536340000e40420425472656553657404045401d8000400e8000000e8000002d800ec0000020000f00c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d344964656e74697479436c61696d0000140130636c61696d5f6973737565727c01284964656e74697479496400013469737375616e63655f646174652001184d6f6d656e740001406c6173745f7570646174655f646174652001184d6f6d656e74000118657870697279f401384f7074696f6e3c4d6f6d656e743e000114636c61696df80114436c61696d0000f404184f7074696f6e04045401200108104e6f6e6500000010536f6d650400200000010000f80c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d14436c61696d00013028416363726564697465640400fc011453636f706500000024416666696c696174650400fc011453636f7065000100244275794c6f636b75700400fc011453636f70650002002853656c6c4c6f636b75700400fc011453636f706500030050437573746f6d657244756544696c6967656e63650400010101144364644964000400404b6e6f77596f7572437573746f6d65720400fc011453636f7065000500304a7572697364696374696f6e08000501012c436f756e747279436f64650000fc011453636f7065000600204578656d707465640400fc011453636f70650007001c426c6f636b65640400fc011453636f706500080048496e766573746f72556e697175656e6573730c00fc011453636f706500007c011c53636f706549640000010101144364644964000900184e6f44617461000a0050496e766573746f72556e697175656e65737356320400010101144364644964000b0000fc0c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d1453636f706500010c204964656e7469747904007c01284964656e746974794964000000185469636b65720400a001185469636b657200010018437573746f6d040028011c5665633c75383e0002000001010c4c706f6c796d6573685f7072696d697469766573186364645f6964144364644964000004000401205b75383b2033325d000005010c4c706f6c796d6573685f7072696d697469766573306a7572697364696374696f6e2c436f756e747279436f64650001e90308414600000008415800010008414c00020008445a00030008415300040008414400050008414f000600084149000700084151000800084147000900084152000a0008414d000b00084157000c00084155000d00084154000e0008415a000f0008425300100008424800110008424400120008424200130008425900140008424500150008425a00160008424a00170008424d00180008425400190008424f001a00084241001b00084257001c00084256001d00084252001e00085647001f0008494f00200008424e002100084247002200084246002300084249002400084b4800250008434d002600084341002700084356002800084b59002900084346002a00085444002b0008434c002c0008434e002d0008484b002e00084d4f002f0008435800300008434300310008434f003200084b4d00330008434700340008434400350008434b003600084352003700084349003800084852003900084355003a00084359003b0008435a003c0008444b003d0008444a003e0008444d003f0008444f00400008454300410008454700420008535600430008475100440008455200450008454500460008455400470008464b00480008464f00490008464a004a00084649004b00084652004c00084746004d00085046004e00085446004f0008474100500008474d00510008474500520008444500530008474800540008474900550008475200560008474c005700084744005800084750005900084755005a00084754005b00084747005c0008474e005d00084757005e00084759005f0008485400600008484d00610008564100620008484e00630008485500640008495300650008494e006600084944006700084952006800084951006900084945006a0008494d006b0008494c006c00084954006d00084a4d006e00084a50006f00084a45007000084a4f007100084b5a007200084b45007300084b49007400084b50007500084b52007600084b57007700084b47007800084c41007900084c56007a00084c42007b00084c53007c00084c52007d00084c59007e00084c49007f00084c54008000084c55008100084d4b008200084d47008300084d57008400084d59008500084d56008600084d4c008700084d54008800084d48008900084d51008a00084d52008b00084d55008c00085954008d00084d58008e0008464d008f00084d44009000084d43009100084d4e009200084d45009300084d53009400084d41009500084d5a009600084d4d009700084e41009800084e52009900084e50009a00084e4c009b0008414e009c00084e43009d00084e5a009e00084e49009f00084e4500a000084e4700a100084e5500a200084e4600a300084d5000a400084e4f00a500084f4d00a60008504b00a70008505700a80008505300a90008504100aa0008504700ab0008505900ac0008504500ad0008504800ae0008504e00af0008504c00b00008505400b10008505200b20008514100b30008524500b40008524f00b50008525500b60008525700b70008424c00b80008534800b900084b4e00ba00084c4300bb00084d4600bc0008504d00bd0008564300be0008575300bf0008534d00c00008535400c10008534100c20008534e00c30008525300c40008534300c50008534c00c60008534700c70008534b00c80008534900c90008534200ca0008534f00cb00085a4100cc0008475300cd0008535300ce0008455300cf00084c4b00d00008534400d10008535200d20008534a00d30008535a00d40008534500d50008434800d60008535900d70008545700d80008544a00d90008545a00da0008544800db0008544c00dc0008544700dd0008544b00de0008544f00df0008545400e00008544e00e10008545200e20008544d00e30008544300e40008545600e50008554700e60008554100e70008414500e80008474200e90008555300ea0008554d00eb0008555900ec0008555a00ed0008565500ee0008564500ef0008564e00f00008564900f10008574600f20008454800f30008594500f400085a4d00f500085a5700f60008425100f70008435700f80008535800f90000090104184f7074696f6e04045401000108104e6f6e6500000010536f6d6504000000000100000d010c4c706f6c796d6573685f7072696d69746976657334617574686f72697a6174696f6e44417574686f72697a6174696f6e4461746104244163636f756e74496401000128604174746573745072696d6172794b6579526f746174696f6e04007c01284964656e74697479496400000040526f746174655072696d6172794b6579000100385472616e736665725469636b65720400a001185469636b6572000200444164644d756c74695369675369676e657204000001244163636f756e744964000300585472616e7366657241737365744f776e6572736869700400a001185469636b6572000400304a6f696e4964656e74697479040098012c5065726d697373696f6e7300050040506f7274666f6c696f437573746f64790400d8012c506f7274666f6c696f49640006002c4265636f6d654167656e740800a001185469636b65720000110101284167656e7447726f75700007004c41646452656c61796572506179696e674b65790c000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e63650008006c526f746174655072696d6172794b6579546f5365636f6e64617279040098012c5065726d697373696f6e730009000011010c4c706f6c796d6573685f7072696d697469766573146167656e74284167656e7447726f75700001141046756c6c00000018437573746f6d04001501011041474964000100284578636570744d65746100020034506f6c796d657368563143414100030034506f6c796d65736856315049410004000015010c4c706f6c796d6573685f7072696d697469766573146167656e7410414749640000040010010c7533320000190100000500001d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449012101011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400002501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e002101083070616c6c65745f67726f757024496e7374616e6365320000000025010000027c002901084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d62657201100449012d0101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800002501013c5665633c4964656e7469747949643e00002501013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e7469747949640000240110486173680000310101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e002d01084070616c6c65745f636f6d6d697474656524496e7374616e6365310000000031010418526573756c74080454013501044501640108084f6b04003501000000000c45727204006400000100003501000004000039010864706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573284d61796265426c6f636b042c426c6f636b4e756d6265720110010810536f6d65040010012c426c6f636b4e756d626572000000104e6f6e65000100003d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449014101011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400002501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e004101083070616c6c65745f67726f757024496e7374616e636531000000004501084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d6265720110044901490101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800002501013c5665633c4964656e7469747949643e00002501013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e7469747949640000240110486173680000310101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e004901084070616c6c65745f636f6d6d697474656524496e7374616e636533000000004d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449015101011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400002501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e005101083070616c6c65745f67726f757024496e7374616e636533000000005501084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d6265720110044901590101282050726f706f7365640c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007c01284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000019010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007c01284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800002501013c5665633c4964656e7469747949643e00002501013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007c01284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007c01284964656e7469747949640000240110486173680000310101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007c01284964656e74697479496400007801484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007c01284964656e74697479496400003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007c01284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e005901084070616c6c65745f636f6d6d697474656524496e7374616e636534000000005d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401500449016101011c2c4d656d626572416464656408007c01284964656e74697479496400007c01284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007c01284964656e74697479496400007c01284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007c01284964656e74697479496400007c01284964656e74697479496400007c01284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007c01284964656e74697479496400002501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007c01284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e006101083070616c6c65745f67726f757024496e7374616e636534000000006501083c70616c6c65745f6d756c7469736967205261774576656e7404244163636f756e744964010001303c4d756c74695369674372656174656414007c01284964656e74697479496400000001244163636f756e74496400000001244163636f756e7449640000690101645665633c5369676e61746f72793c4163636f756e7449643e3e000020010c753634000008ac4576656e7420656d6974746564206166746572206372656174696f6e206f662061206d756c74697369672e6501417267756d656e74733a2063616c6c6572204449442c206d756c746973696720616464726573732c207369676e657273202870656e64696e6720617070726f76616c292c207369676e6174757265732072657175697265642e3450726f706f73616c41646465640c007c01284964656e74697479496400000001244163636f756e744964000020010c753634000108984576656e7420656d697474656420616674657220616464696e6720612070726f706f73616c2eb4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e4050726f706f73616c457865637574656410007c01284964656e74697479496400000001244163636f756e744964000020010c753634000019010110626f6f6c000208a84576656e7420656d6974746564207768656e20612070726f706f73616c2069732065786563757465642ed4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442c20726573756c742e4c4d756c74695369675369676e657241646465640c007c01284964656e74697479496400000001244163636f756e74496400006d0101505369676e61746f72793c4163636f756e7449643e000308a04576656e7420656d6974746564207768656e2061207369676e61746f72792069732061646465642eb8417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206164646564207369676e65722e604d756c74695369675369676e6572417574686f72697a65640c007c01284964656e74697479496400000001244163636f756e74496400006d0101505369676e61746f72793c4163636f756e7449643e00040809014576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f727920697320617574686f72697a656420746f2062652061646465642ecc417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722e544d756c74695369675369676e657252656d6f7665640c007c01284964656e74697479496400000001244163636f756e74496400006d0101505369676e61746f72793c4163636f756e7449643e000508cc4576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f72792069732072656d6f7665642ec0417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2072656d6f766564207369676e65722e844d756c74695369675369676e61747572657352657175697265644368616e6765640c007c01284964656e74697479496400000001244163636f756e744964000020010c75363400060801014576656e7420656d6974746564207768656e20746865206e756d626572206f66207265717569726564207369676e617475726573206973206368616e6765642ee4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206e6577207265717569726564207369676e6174757265732e4050726f706f73616c417070726f76656410007c01284964656e74697479496400000001244163636f756e74496400006d0101505369676e61746f72793c4163636f756e7449643e000020010c753634000708b44576656e7420656d6974746564207768656e207468652070726f706f73616c2067657420617070726f7665642e0101417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e5450726f706f73616c52656a656374696f6e566f746510007c01284964656e74697479496400000001244163636f756e74496400006d0101505369676e61746f72793c4163636f756e7449643e000020010c7536340008080d014576656e7420656d6974746564207768656e206120766f7465206973206361737420696e206661766f72206f662072656a656374696e6720612070726f706f73616c2e0101417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e4050726f706f73616c52656a65637465640c007c01284964656e74697479496400000001244163636f756e744964000020010c753634000908a84576656e7420656d6974746564207768656e20612070726f706f73616c2069732072656a65637465642eb4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e5c50726f706f73616c457865637574696f6e4661696c6564040064013444697370617463684572726f72000a04e44576656e7420656d6974746564207768656e207468657265277320616e206572726f7220696e2070726f706f73616c20657865637574696f6e405363686564756c696e674661696c6564040064013444697370617463684572726f72000b04745363686564756c696e67206f662070726f706f73616c206661696c732e085c4576656e747320666f722074686973206d6f64756c652e0069010000026d01006d010c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579245369676e61746f727904244163636f756e74496401000108204964656e7469747904007c01284964656e7469747949640000001c4163636f756e7404000001244163636f756e744964000100007101083470616c6c65745f627269646765205261774576656e7408244163636f756e74496401002c426c6f636b4e756d6265720110014044436f6e74726f6c6c65724368616e67656408007c01284964656e74697479496400000001244163636f756e74496400000490436f6e6669726d6174696f6e206f662061207369676e657220736574206368616e67652e3041646d696e4368616e67656408007c01284964656e74697479496400000001244163636f756e74496400010474436f6e6669726d6174696f6e206f662041646d696e206368616e67652e3c54696d656c6f636b4368616e67656408007c01284964656e746974794964000010012c426c6f636b4e756d626572000204a0436f6e6669726d6174696f6e206f662064656661756c742074696d656c6f636b206368616e67652e1c4272696467656408007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e0003041d01436f6e6669726d6174696f6e206f6620504f4c59582075706772616465206f6e20506f6c796d6573682066726f6d20504f4c5920746f6b656e73206f6e20457468657265756d2e1846726f7a656e04007c01284964656e746974794964000404904e6f74696669636174696f6e206f6620667265657a696e6720746865206272696467652e20556e66726f7a656e04007c01284964656e746974794964000504984e6f74696669636174696f6e206f6620756e667265657a696e6720746865206272696467652e2046726f7a656e547808007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e0006049c4e6f74696669636174696f6e206f6620667265657a696e672061207472616e73616374696f6e2e28556e66726f7a656e547808007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e000704a44e6f74696669636174696f6e206f6620756e667265657a696e672061207472616e73616374696f6e2e3c4578656d70746564557064617465640c007c01284964656e74697479496400007c01284964656e746974794964000019010110626f6f6c000804c44578656d7074696f6e20737461747573206f6620616e206964656e7469747920686173206265656e20757064617465642e484272696467654c696d6974557064617465640c007c01284964656e746974794964000018011c42616c616e6365000010012c426c6f636b4e756d62657200090478427269646765206c696d697420686173206265656e20757064617465642e2854787348616e646c65640400790101985665633c284163636f756e7449642c207533322c2048616e646c65645478537461747573293e000a086101416e206576656e7420656d6974746564206166746572206120766563746f72206f66207472616e73616374696f6e732069732068616e646c65642e2054686520706172616d65746572206973206120766563746f72206f6651017475706c6573206f6620726563697069656e74206163636f756e742c20697473206e6f6e63652c20616e642074686520737461747573206f66207468652070726f636573736564207472616e73616374696f6e2e4442726964676554785363686564756c65640c007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e000010012c426c6f636b4e756d626572000b0450427269646765205478205363686564756c65642e5842726964676554785363686564756c654661696c65640c007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e000028011c5665633c75383e000c04744661696c656420746f207363686564756c65204272696467652054782e40467265657a6541646d696e416464656408007c01284964656e74697479496400000001244163636f756e744964000d048841206e657720667265657a652061646d696e20686173206265656e2061646465642e48467265657a6541646d696e52656d6f76656408007c01284964656e74697479496400000001244163636f756e744964000e04804120667265657a652061646d696e20686173206265656e2072656d6f7665642e24547852656d6f76656408007c01284964656e74697479496400007501014c42726964676554783c4163636f756e7449643e000f049c4e6f74696669636174696f6e206f662072656d6f76696e672061207472616e73616374696f6e2e085c4576656e747320666f722074686973206d6f64756c652e007501083470616c6c65745f627269646765204272696467655478041c4163636f756e740100001001146e6f6e636510010c753332000124726563697069656e7400011c4163636f756e74000118616d6f756e7418011c42616c616e636500011c74785f6861736824011048323536000079010000027d01007d010000040c00108101008101083470616c6c65745f6272696467653c48616e646c656454785374617475730001081c53756363657373000000144572726f72040028011c5665633c75383e000100008501083870616c6c65745f7374616b696e67205261774576656e74081c42616c616e63650118244163636f756e74496401000144244572615061796f75740c00100120457261496e646578000018011c42616c616e6365000018011c42616c616e636500000c550154686520657261207061796f757420686173206265656e207365743b207468652066697273742062616c616e6365206973207468652076616c696461746f722d7061796f75743b20746865207365636f6e64206973c07468652072656d61696e6465722066726f6d20746865206d6178696d756d20616d6f756e74206f66207265776172642ea85c5b6572615f696e6465782c2076616c696461746f725f7061796f75742c2072656d61696e6465725c5d185265776172640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e63650001043901546865207374616b657220686173206265656e207265776172646564206279207468697320616d6f756e742e205c5b73746173685f6964656e746974792c2073746173682c20616d6f756e745c5d14536c61736808000001244163636f756e744964000018011c42616c616e636500020821014f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e545c5b76616c696461746f722c20616d6f756e745c5d684f6c64536c617368696e675265706f7274446973636172646564040010013053657373696f6e496e6465780003081901416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c648c6e6f742062652070726f6365737365642e205c5b73657373696f6e5f696e6465785c5d3c5374616b696e67456c656374696f6e04008901013c456c656374696f6e436f6d70757465000404f041206e657720736574206f66207374616b6572732077617320656c656374656420776974682074686520676976656e205c5b636f6d707574655c5d2e38536f6c7574696f6e53746f72656404008901013c456c656374696f6e436f6d70757465000504150141206e657720736f6c7574696f6e20666f7220746865207570636f6d696e6720656c656374696f6e20686173206265656e2073746f7265642e205c5b636f6d707574655c5d18426f6e6465640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000610e4416e206163636f756e742068617320626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d004d014e4f54453a2054686973206576656e74206973206f6e6c7920656d6974746564207768656e2066756e64732061726520626f6e64656420766961206120646973706174636861626c652e204e6f7461626c792c210169742077696c6c206e6f7420626520656d697474656420666f72207374616b696e672072657761726473207768656e20746865792061726520616464656420746f207374616b652e20556e626f6e6465640c007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000704ec416e206163636f756e742068617320756e626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d244e6f6d696e617465640c007c01284964656e74697479496400000001244163636f756e7449640000ec01385665633c4163636f756e7449643e0008048855736572206861732075706461746564207468656972206e6f6d696e6174696f6e732457697468647261776e08000001244163636f756e744964000018011c42616c616e63650009085901416e206163636f756e74206861732063616c6c6564206077697468647261775f756e626f6e6465646020616e642072656d6f76656420756e626f6e64696e67206368756e6b7320776f727468206042616c616e636560ac66726f6d2074686520756e6c6f636b696e672071756575652e205c5b73746173682c20616d6f756e745c5d645065726d697373696f6e65644964656e74697479416464656408007c01284964656e74697479496400007c01284964656e746974794964000a08ec416e20444944206861732069737375656420612063616e6469646163792e2053656520746865207472616e73616374696f6e20666f722077686f2e8c4743206964656e74697479202c2056616c696461746f722773206964656e746974792e6c5065726d697373696f6e65644964656e7469747952656d6f76656408007c01284964656e74697479496400007c01284964656e746974794964000b08e854686520676976656e206d656d626572207761732072656d6f7665642e2053656520746865207472616e73616374696f6e20666f722077686f2e8c4743206964656e74697479202c2056616c696461746f722773206964656e746974792e54496e76616c6964617465644e6f6d696e61746f72730c007c01284964656e74697479496400000001244163636f756e7449640000ec01385665633c4163636f756e7449643e000c081d0152656d6f766520746865206e6f6d696e61746f72732066726f6d207468652076616c6964206e6f6d696e61746f7273207768656e2074686572652043444420657870697265642e9443616c6c65722c205374617368206163636f756e744964206f66206e6f6d696e61746f727350436f6d6d697373696f6e436170557064617465640c007c01284964656e74697479496400008d01011c50657262696c6c00008d01011c50657262696c6c000d08805768656e20636f6d6d697373696f6e206361702067657420757064617465642e58286f6c642076616c75652c206e65772076616c7565296c4d696e696d756d426f6e645468726573686f6c645570646174656408007801484f7074696f6e3c4964656e7469747949643e000018011c42616c616e6365000e04ac4d696e20626f6e64207468726573686f6c6420776173207570646174656420286e65772076616c7565292e885265776172645061796d656e745363686564756c696e67496e7465727275707465640c000001244163636f756e7449640000100120457261496e646578000064013444697370617463684572726f72000f04cc5768656e207363686564756c696e67206f6620726577617264207061796d656e74732067657420696e7465727275707465642e64536c617368696e67416c6c6f776564466f724368616e676564040091010138536c617368696e675377697463680010049055706461746520666f722077686f6d2062616c616e63652067657420736c61736865642e085c4576656e747320666f722074686973206d6f64756c652e008901083870616c6c65745f7374616b696e673c456c656374696f6e436f6d7075746500010c1c4f6e436861696e000000185369676e656400010020556e7369676e6564000200008d010c3473705f61726974686d65746963287065725f7468696e67731c50657262696c6c0000040010010c75333200009101083870616c6c65745f7374616b696e6738536c617368696e6753776974636800010c2456616c696461746f720000005456616c696461746f72416e644e6f6d696e61746f72000100104e6f6e650002000095010c3c70616c6c65745f6f6666656e6365731870616c6c6574144576656e740001041c4f6666656e63650800990101104b696e6400002801384f706171756554696d65536c6f7400000c5101546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e643501286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e4c5c5b6b696e642c2074696d65736c6f745c5d2e04304576656e747320747970652e99010000031000000008009d010c3870616c6c65745f73657373696f6e1870616c6c6574144576656e74000104284e657753657373696f6e040010013053657373696f6e496e64657800000849014e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e7420697320746865205c5b73657373696f6e5f696e6465785c5d2c206e6f74207468659c626c6f636b206e756d626572206173207468652074797065206d6967687420737567676573742e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909a1010c3870616c6c65745f6772616e6470611870616c6c6574144576656e7400010c384e6577417574686f7269746965730400a5010134417574686f726974794c697374000004d44e657720617574686f726974792073657420686173206265656e206170706c6965642e205c5b617574686f726974795f7365745c5d185061757365640001049843757272656e7420617574686f726974792073657420686173206265656e207061757365642e1c526573756d65640002049c43757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909a501000002a90100a90100000408ad012000ad010c4c73705f66696e616c6974795f6772616e6470610c617070185075626c696300000400b101013c656432353531393a3a5075626c69630000b1010c1c73705f636f72651c65643235353139185075626c6963000004000401205b75383b2033325d0000b5010c4070616c6c65745f696d5f6f6e6c696e651870616c6c6574144576656e7404045400010c4448656172746265617452656365697665640400b9010138543a3a417574686f726974794964000004010141206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f72697479496460205c5b617574686f726974795f69645c5d1c416c6c476f6f64000104d041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2c536f6d654f66666c696e650400c101016c5665633c4964656e74696669636174696f6e5475706c653c543e3e000204390141742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e652076616c696461746f722077617320666f756e6420746f206265205c5b6f66666c696e655c5d2e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909b901104070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139185075626c696300000400bd01013c737232353531393a3a5075626c69630000bd010c1c73705f636f72651c73723235353139185075626c6963000004000401205b75383b2033325d0000c101000002c50100c5010000040800c90100c901083870616c6c65745f7374616b696e67204578706f7375726508244163636f756e74496401001c42616c616e63650118000c0114746f74616ccd01011c42616c616e636500010c6f776ecd01011c42616c616e63650001186f7468657273d10101ac5665633c496e646976696475616c4578706f737572653c4163636f756e7449642c2042616c616e63653e3e0000cd010000061800d101000002d50100d501083870616c6c65745f7374616b696e6748496e646976696475616c4578706f7375726508244163636f756e74496401001c42616c616e636501180008010c77686f0001244163636f756e74496400011476616c7565cd01011c42616c616e63650000d901082c70616c6c65745f7375646f205261774576656e7404244163636f756e7449640100010c1453756469640400310101384469737061746368526573756c740000048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d284b65794368616e67656404000001244163636f756e744964000104fc546865205c5b7375646f65725c5d206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e285375646f4173446f6e650400310101384469737061746368526573756c740002048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d085c4576656e747320666f722074686973206d6f64756c652e00dd011064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473146173736574205261774576656e7408184d6f6d656e740120244163636f756e74496401000168205472616e7366657214007c01284964656e7469747949640000a001185469636b65720000d8012c506f7274666f6c696f49640000d8012c506f7274666f6c696f4964000018011c42616c616e6365000008744576656e7420666f72207472616e73666572206f6620746f6b656e732edc63616c6c6572204449442c207469636b65722c2066726f6d20706f7274666f6c696f2c20746f20706f7274666f6c696f2c2076616c75651849737375656418007c01284964656e7469747949640000a001185469636b657200007c01284964656e746974794964000018011c42616c616e63650000e101014046756e64696e67526f756e644e616d65000018011c42616c616e636500010870456d6974207768656e20746f6b656e7320676574206973737565642e750163616c6c6572204449442c207469636b65722c2062656e6566696369617279204449442c2076616c75652c2066756e64696e6720726f756e642c20746f74616c2069737375656420696e20746869732066756e64696e6720726f756e642052656465656d656410007c01284964656e7469747949640000a001185469636b657200007c01284964656e746974794964000018011c42616c616e636500020878456d6974207768656e20746f6b656e73206765742072656465656d65642e9063616c6c6572204449442c207469636b65722c202066726f6d204449442c2076616c75653041737365744372656174656418007c01284964656e7469747949640000a001185469636b6572000019010110626f6f6c0000e501012441737365745479706500007c01284964656e746974794964000019010110626f6f6c000308804576656e7420666f72206372656174696f6e206f66207468652061737365742e950163616c6c6572204449442f206f776e6572204449442c207469636b65722c2064697669736962696c6974792c20617373657420747970652c2062656e6566696369617279204449442c2064697361626c6520696e766573746f7220756e697175656e657373484964656e74696669657273557064617465640c007c01284964656e7469747949640000a001185469636b65720000ed0101505665633c41737365744964656e7469666965723e000408d44576656e7420656d6974746564207768656e20616e7920746f6b656e206964656e746966696572732061726520757064617465642e0d0163616c6c6572204449442c207469636b65722c206120766563746f72206f6620286964656e74696669657220747970652c206964656e7469666965722076616c7565294c44697669736962696c6974794368616e6765640c007c01284964656e7469747949640000a001185469636b6572000019010110626f6f6c000508844576656e7420666f72206368616e676520696e2064697669736962696c6974792e8063616c6c6572204449442c207469636b65722c2064697669736962696c697479405472616e73666572576974684461746118007c01284964656e7469747949640000a001185469636b657200007c01284964656e74697479496400007c01284964656e746974794964000018011c42616c616e6365000028011c5665633c75383e0006083501416e206164646974696f6e616c206576656e7420746f205472616e736665723b20656d6974746564207768656e20607472616e736665725f776974685f64617461602069732063616c6c65642ec863616c6c657220444944202c207469636b65722c2066726f6d204449442c20746f204449442c2076616c75652c20646174612849734973737561626c650800a001185469636b6572000019010110626f6f6c0007085069735f6973737561626c652829206f75747075749c7469636b65722c2072657475726e2076616c7565202874727565206966206973737561626c6529405469636b6572526567697374657265640c007c01284964656e7469747949640000a001185469636b65720000f401384f7074696f6e3c4d6f6d656e743e0008087c456d6974207768656e207469636b657220697320726567697374657265642eec63616c6c657220444944202f207469636b6572206f776e6572206469642c207469636b65722c207469636b6572206f776e65722c20657870697279445469636b65725472616e736665727265640c007c01284964656e7469747949640000a001185469636b657200007c01284964656e74697479496400090880456d6974207768656e207469636b6572206973207472616e736665727265642ed063616c6c657220444944202f207469636b6572207472616e7366657272656420746f204449442c207469636b65722c2066726f6d6441737365744f776e6572736869705472616e736665727265640c007c01284964656e7469747949640000a001185469636b657200007c01284964656e746974794964000a08a4456d6974207768656e20746f6b656e206f776e657273686970206973207472616e736665727265642ef463616c6c657220444944202f20746f6b656e206f776e657273686970207472616e7366657272656420746f204449442c207469636b65722c2066726f6d2c417373657446726f7a656e08007c01284964656e7469747949640000a001185469636b6572000b08a4416e206576656e7420656d6974746564207768656e20616e2061737365742069732066726f7a656e2e78506172616d657465723a2063616c6c6572204449442c207469636b65722e344173736574556e66726f7a656e08007c01284964656e7469747949640000a001185469636b6572000c08ac416e206576656e7420656d6974746564207768656e20616e20617373657420697320756e66726f7a656e2e78506172616d657465723a2063616c6c6572204449442c207469636b65722e30417373657452656e616d65640c007c01284964656e7469747949640000a001185469636b65720000fd01012441737365744e616d65000d08a4416e206576656e7420656d6974746564207768656e206120746f6b656e2069732072656e616d65642ebc506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720746f6b656e206e616d652e3c46756e64696e67526f756e645365740c007c01284964656e7469747949640000a001185469636b65720000e101014046756e64696e67526f756e644e616d65000e081101416e206576656e74206361727279696e6720746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e64206f662061207469636b65722ecc506172616d65746572733a2063616c6c6572204449442c207469636b65722c2066756e64696e6720726f756e64206e616d652e34446f63756d656e74416464656410007c01284964656e7469747949640000a001185469636b6572000001020128446f63756d656e744964000005020120446f63756d656e74000f048c41206e657720646f63756d656e7420617474616368656420746f20616e2061737365743c446f63756d656e7452656d6f7665640c007c01284964656e7469747949640000a001185469636b6572000001020128446f63756d656e744964001004804120646f63756d656e742072656d6f7665642066726f6d20616e20617373657440457874656e73696f6e52656d6f7665640c007c01284964656e7469747949640000a001185469636b657200000001244163636f756e744964001108604120657874656e73696f6e20676f742072656d6f7665642e7463616c6c6572204449442c207469636b65722c204163636f756e74496450436c61737369635469636b6572436c61696d65640c007c01284964656e7469747949640000a001185469636b657200003102013c457468657265756d4164647265737300120435014120506f6c796d61746820436c617373696320746f6b656e2077617320636c61696d656420616e64207472616e7366657272656420746f2061206e6f6e2d73797374656d61746963204449442e48436f6e74726f6c6c65725472616e7366657210007c01284964656e7469747949640000a001185469636b65720000d8012c506f7274666f6c696f4964000018011c42616c616e6365001308b44576656e7420666f72207768656e206120666f72636564207472616e736665722074616b657320706c6163652e150163616c6c6572204449442f20636f6e74726f6c6c6572204449442c207469636b65722c20506f7274666f6c696f206f6620746f6b656e20686f6c6465722c2076616c75652e54437573746f6d4173736574547970654578697374730c007c01284964656e7469747949640000e9010144437573746f6d4173736574547970654964000028011c5665633c75383e001408b04120637573746f6d206173736574207479706520616c726561647920657869737473206f6e2d636861696e2e310163616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e64437573746f6d417373657454797065526567697374657265640c007c01284964656e7469747949640000e9010144437573746f6d4173736574547970654964000028011c5665633c75383e001508b04120637573746f6d2061737365742074797065207761732072656769737465726564206f6e2d636861696e2e310163616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e5453657441737365744d6574616461746156616c756510007c01284964656e7469747949640000a001185469636b657200003502014841737365744d6574616461746156616c75650000390201a04f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c4d6f6d656e743e3e00160864536574206173736574206d657461646174612076616c75652ef02843616c6c6572204449442c207469636b65722c206d657461646174612076616c75652c206f7074696f6e616c2076616c75652064657461696c73297053657441737365744d6574616461746156616c756544657461696c730c007c01284964656e7469747949640000a001185469636b657200003d02018041737365744d6574616461746156616c756544657461696c3c4d6f6d656e743e001708dc536574206173736574206d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e8c2843616c6c6572204449442c207469636b65722c2076616c75652064657461696c732978526567697374657241737365744d657461646174614c6f63616c5479706514007c01284964656e7469747949640000a001185469636b657200004502014441737365744d657461646174614e616d6500004902015441737365744d657461646174614c6f63616c4b657900004d02014441737365744d65746164617461537065630018088c5265676973746572206173736574206d65746164617461206c6f63616c20747970652e05012843616c6c6572204449442c207469636b65722c204c6f63616c2074797065206e616d652c204c6f63616c2074797065206b65792c2074797065207370656373297c526567697374657241737365744d65746164617461476c6f62616c547970650c004502014441737365744d657461646174614e616d6500006502015841737365744d65746164617461476c6f62616c4b657900004d02014441737365744d6574616461746153706563001908905265676973746572206173736574206d6574616461746120676c6f62616c20747970652ebc28476c6f62616c2074797065206e616d652c20476c6f62616c2074797065206b65792c207479706520737065637329085c4576656e747320666f722074686973206d6f64756c652e00e1010c4c706f6c796d6573685f7072696d6974697665731461737365744046756e64696e67526f756e644e616d650000040028011c5665633c75383e0000e5010c4c706f6c796d6573685f7072696d6974697665731461737365742441737365745479706500012c30457175697479436f6d6d6f6e0000003c45717569747950726566657272656400010024436f6d6d6f646974790002002c4669786564496e636f6d6500030010524549540004001046756e6400050054526576656e7565536861726541677265656d656e74000600445374727563747572656450726f64756374000700284465726976617469766500080018437573746f6d0400e9010144437573746f6d417373657454797065496400090028537461626c65436f696e000a0000e9010c4c706f6c796d6573685f7072696d69746976657314617373657444437573746f6d41737365745479706549640000040010010c7533320000ed01000002f10100f1010c4c706f6c796d6573685f7072696d6974697665734061737365745f6964656e7469666965723c41737365744964656e7469666965720001141443555349500400f501011c5b75383b20395d0000001043494e530400f501011c5b75383b20395d000100104953494e0400a401205b75383b2031325d0002000c4c45490400f90101205b75383b2032305d00030010464947490400a401205b75383b2031325d00040000f501000003090000000800f901000003140000000800fd010c4c706f6c796d6573685f7072696d6974697665731461737365742441737365744e616d650000040028011c5665633c75383e000001020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7428446f63756d656e7449640000040010010c753332000005020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7420446f63756d656e74000014010c7572690902012c446f63756d656e74557269000130636f6e74656e745f686173680d020130446f63756d656e74486173680001106e616d6525020130446f63756d656e744e616d65000120646f635f74797065290201504f7074696f6e3c446f63756d656e74547970653e00012c66696c696e675f64617465f401384f7074696f6e3c4d6f6d656e743e000009020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e742c446f63756d656e745572690000040028011c5665633c75383e00000d020c4c706f6c796d6573685f7072696d69746976657334646f63756d656e745f6861736830446f63756d656e7448617368000124104e6f6e6500000010483531320400110201205b75383b2036345d00010010483338340400150201205b75383b2034385d00020010483332300400190201205b75383b2034305d000300104832353604000401205b75383b2033325d000400104832323404001d0201205b75383b2032385d00050010483139320400210201205b75383b2032345d00060010483136300400f90101205b75383b2032305d00070010483132380400990101205b75383b2031365d000800001102000003400000000800150200000330000000080019020000032800000008001d020000031c0000000800210200000318000000080025020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7430446f63756d656e744e616d650000040028011c5665633c75383e0000290204184f7074696f6e040454012d020108104e6f6e6500000010536f6d6504002d0200000100002d020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7430446f63756d656e74547970650000040028011c5665633c75383e000031020c4c706f6c796d6573685f7072696d69746976657320657468657265756d3c457468657265756d4164647265737300000400f90101205b75383b2032305d000035020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614841737365744d6574616461746156616c75650000040028011c5665633c75383e0000390204184f7074696f6e040454013d020108104e6f6e6500000010536f6d6504003d0200000100003d020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174616041737365744d6574616461746156616c756544657461696c04184d6f6d656e74012000080118657870697265f401384f7074696f6e3c4d6f6d656e743e00012c6c6f636b5f7374617475734102017c41737365744d657461646174614c6f636b5374617475733c4d6f6d656e743e000041020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615c41737365744d657461646174614c6f636b53746174757304184d6f6d656e740120010c20556e6c6f636b6564000000184c6f636b65640001002c4c6f636b6564556e74696c04002001184d6f6d656e740002000045020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614441737365744d657461646174614e616d650000040028011c5665633c75383e000049020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615441737365744d657461646174614c6f63616c4b65790000040020010c75363400004d020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614441737365744d657461646174615370656300000c010c75726c5102012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e590201804f7074696f6e3c41737365744d657461646174614465736372697074696f6e3e000120747970655f6465666102013c4f7074696f6e3c5665633c75383e3e0000510204184f7074696f6e0404540155020108104e6f6e6500000010536f6d650400550200000100005502084c706f6c796d6573685f7072696d6974697665730c55726c0000040028011c5665633c75383e0000590204184f7074696f6e040454015d020108104e6f6e6500000010536f6d6504005d0200000100005d020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174616041737365744d657461646174614465736372697074696f6e0000040028011c5665633c75383e0000610204184f7074696f6e04045401280108104e6f6e6500000010536f6d65040028000001000065020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615841737365744d65746164617461476c6f62616c4b65790000040020010c753634000069020c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e144576656e740001101c437265617465640c006d0201204576656e7444696400007102011043414964000079020130446973747269627574696f6e000010b841206361706974616c20646973747269627574696f6e2c20776974682064657461696c7320696e636c756465642c31017761732063726561746564206279207468652044494420287065726d697373696f6e6564206167656e742920666f7220746865204341206964656e746966696564206279206043414964602e00a8284167656e74204449442c20434127732049442c20646973747269627574696f6e2064657461696c73293842656e65666974436c61696d656418006d0201204576656e7444696400006d0201204576656e7444696400007102011043414964000079020130446973747269627574696f6e000018011c42616c616e636500007d02010c54617800010c51014120746f6b656e20686f6c64657227732062656e65666974206f662061206361706974616c20646973747269627574696f6e20666f722074686520676976656e206043414964602077617320636c61696d65642e0091012843616c6c6572204449442c20486f6c6465722f436c61696d616e74204449442c20434127732049442c207570646174656420646973747269627574696f6e2064657461696c732c2044494427732062656e656669742c20444944277320746178202529245265636c61696d65640c006d0201204576656e7444696400007102011043414964000018011c42616c616e636500020c9853746174732066726f6d2060707573685f62656e65666974602077617320656d69747465642e001501284167656e74204449442c20434127732049442c206d61782072657175657374656420444944732c2070726f63657373656420444944732c206661696c65642044494473291c52656d6f76656408006d0201204576656e744469640000710201104341496400030c8c41206361706974616c20646973747269627574696f6e207761732072656d6f7665642e0050284167656e74204449442c204341277320494429085c4576656e747320666f722074686973206d6f64756c652e006d020c4c706f6c796d6573685f7072696d697469766573286576656e745f6f6e6c79244576656e744f6e6c79040454017c0004007c01045400007102086070616c6c65745f636f72706f726174655f616374696f6e73104341496400000801187469636b6572a001185469636b65720001206c6f63616c5f6964750201244c6f63616c4341496400007502086070616c6c65745f636f72706f726174655f616374696f6e73244c6f63616c434149640000040010010c753332000079020c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e30446973747269627574696f6e000020011066726f6dd8012c506f7274666f6c696f496400012063757272656e6379a001185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e636500012472656d61696e696e6718011c42616c616e63650001247265636c61696d656419010110626f6f6c0001287061796d656e745f61742001184d6f6d656e74000128657870697265735f6174f401384f7074696f6e3c4d6f6d656e743e00007d020c3473705f61726974686d65746963287065725f7468696e67731c5065726d696c6c0000040010010c753332000081021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e74144576656e7400011044436865636b706f696e74437265617465641400850201404f7074696f6e3c4576656e744469643e0000a001185469636b6572000089020130436865636b706f696e744964000018011c42616c616e636500002001184d6f6d656e7400000c644120636865636b706f696e742077617320637265617465642e001d012863616c6c6572204449442c207469636b65722c20636865636b706f696e742049442c20746f74616c20737570706c792c20636865636b706f696e742074696d657374616d7029844d6178696d756d5363686564756c6573436f6d706c65786974794368616e67656408007c01284964656e746974794964000020010c75363400010c2901546865206d6178696d756d20636f6d706c657869747920666f7220616e20617262697472617279207469636b65722773207363686564756c652073657420776173206368616e6765642e0064284743204449442c20746865206e6577206d6178696d756d293c5363686564756c65437265617465640c006d0201204576656e744469640000a001185469636b657200008d02013853746f7265645363686564756c6500020c884120636865636b706f696e74207363686564756c652077617320637265617465642e00782863616c6c6572204449442c207469636b65722c207363686564756c65293c5363686564756c6552656d6f7665640c007c01284964656e7469747949640000a001185469636b657200008d02013853746f7265645363686564756c6500030c884120636865636b706f696e74207363686564756c65207761732072656d6f7665642e00782863616c6c6572204449442c207469636b65722c207363686564756c6529085c4576656e747320666f722074686973206d6f64756c652e00850204184f7074696f6e040454016d020108104e6f6e6500000010536f6d6504006d02000001000089020c4c706f6c796d6573685f7072696d6974697665732063616c656e64617230436865636b706f696e7449640000040020010c75363400008d021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e743853746f7265645363686564756c6500001001207363686564756c6591020148436865636b706f696e745363686564756c6500010869649d0201285363686564756c65496400010861742001184d6f6d656e7400012472656d61696e696e6710010c753332000091020c4c706f6c796d6573685f7072696d6974697665732063616c656e64617248436865636b706f696e745363686564756c65000008011473746172742001184d6f6d656e74000118706572696f649502013843616c656e646172506572696f64000095020c4c706f6c796d6573685f7072696d6974697665732063616c656e6461723843616c656e646172506572696f640000080110756e69749902013043616c656e646172556e6974000118616d6f756e7420010c753634000099020c4c706f6c796d6573685f7072696d6974697665732063616c656e6461723043616c656e646172556e697400011c185365636f6e64000000184d696e75746500010010486f75720002000c446179000300105765656b000400144d6f6e74680005001059656172000600009d021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e74285363686564756c6549640000040020010c7536340000a102086470616c6c65745f636f6d706c69616e63655f6d616e61676572144576656e7400012470436f6d706c69616e6365526571756972656d656e74437265617465640c007c01284964656e7469747949640000a001185469636b65720000a5020154436f6d706c69616e6365526571756972656d656e74000008cc456d6974746564207768656e206e657720636f6d706c69616e636520726571756972656d656e7420697320637265617465642eb02863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e70436f6d706c69616e6365526571756972656d656e7452656d6f7665640c007c01284964656e7469747949640000a001185469636b6572000010010c753332000108c4456d6974746564207768656e206120636f6d706c69616e636520726571756972656d656e742069732072656d6f7665642e942863616c6c6572204449442c205469636b65722c20726571756972656d656e745f6964292e5c4173736574436f6d706c69616e63655265706c616365640c007c01284964656e7469747949640000a001185469636b65720000d10201685665633c436f6d706c69616e6365526571756972656d656e743e000208b4456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206973207265706c616365642ed4506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720617373657420636f6d706c69616e63652e504173736574436f6d706c69616e6365526573657408007c01284964656e7469747949640000a001185469636b6572000308d8456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206f662061207469636b65722069732072657365742e542863616c6c6572204449442c205469636b6572292e584173736574436f6d706c69616e6365526573756d656408007c01284964656e7469747949640000a001185469636b65720004080101456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b6572206765747320726573756d652e542863616c6c6572204449442c205469636b6572292e544173736574436f6d706c69616e636550617573656408007c01284964656e7469747949640000a001185469636b65720005080101456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b65722067657473207061757365642e542863616c6c6572204449442c205469636b6572292e70436f6d706c69616e6365526571756972656d656e744368616e6765640c007c01284964656e7469747949640000a001185469636b65720000a5020154436f6d706c69616e6365526571756972656d656e74000608e0456d6974746564207768656e20636f6d706c69616e636520726571756972656d656e7420676574206d6f6469666965642f6368616e67652eb02863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e785472757374656444656661756c74436c61696d49737375657241646465640c007c01284964656e7469747949640000a001185469636b65720000c1020134547275737465644973737565720007081501456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b657220676574732061646465642ea82863616c6c6572204449442c205469636b65722c2041646465642054727573746564497373756572292e805472757374656444656661756c74436c61696d49737375657252656d6f7665640c007c01284964656e7469747949640000a001185469636b657200007c01284964656e7469747949640008081901456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b6572206765742072656d6f7665642eb02863616c6c6572204449442c205469636b65722c2052656d6f7665642054727573746564497373756572292e085c4576656e747320666f722074686973206d6f64756c652e00a5020c4c706f6c796d6573685f7072696d69746976657348636f6d706c69616e63655f6d616e6167657254436f6d706c69616e6365526571756972656d656e7400000c014473656e6465725f636f6e646974696f6e73a90201385665633c436f6e646974696f6e3e00014c72656365697665725f636f6e646974696f6e73a90201385665633c436f6e646974696f6e3e000108696410010c7533320000a902000002ad0200ad020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e24436f6e646974696f6e0000080138636f6e646974696f6e5f74797065b1020134436f6e646974696f6e5479706500011c69737375657273bd0201485665633c547275737465644973737565723e0000b1020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e34436f6e646974696f6e5479706500011424497350726573656e740400f80114436c61696d000000204973416273656e740400f80114436c61696d0001001c4973416e794f660400b50201285665633c436c61696d3e0002002049734e6f6e654f660400b50201285665633c436c61696d3e0003002849734964656e746974790400b90201385461726765744964656e7469747900040000b502000002f800b9020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e385461726765744964656e746974790001083445787465726e616c4167656e7400000020537065636966696304007c01284964656e74697479496400010000bd02000002c10200c1020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e345472757374656449737375657200000801186973737565727c01284964656e74697479496400012c747275737465645f666f72c502012854727573746564466f720000c5020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e2854727573746564466f720001080c416e790000002053706563696669630400c90201385665633c436c61696d547970653e00010000c902000002cd0200cd020c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d24436c61696d54797065000130284163637265646974656400000024416666696c69617465000100244275794c6f636b75700002002853656c6c4c6f636b757000030050437573746f6d657244756544696c6967656e6365000400404b6e6f77596f7572437573746f6d6572000500304a7572697364696374696f6e000600204578656d707465640007001c426c6f636b656400080048496e766573746f72556e697175656e657373000900184e6f54797065000a0050496e766573746f72556e697175656e6573735632000b0000d102000002a50200d502086070616c6c65745f636f72706f726174655f616374696f6e73144576656e740001245c4d617844657461696c734c656e6774684368616e67656408007c01284964656e746974794964000010010c753332000008d4546865206d6178696d756d206c656e677468206f66206064657461696c736020696e20627974657320776173206368616e6765642e50284743204449442c206e6577206c656e677468297844656661756c745461726765744964656e7469746965734368616e6765640c007c01284964656e7469747949640000a001185469636b65720000d90201405461726765744964656e746974696573000108ec54686520736574206f662064656661756c7420605461726765744964656e7469746965736020666f722061207469636b6572206368616e6765642ea4284167656e74204449442c205469636b65722c204e6577205461726765744964656e746974696573297044656661756c7457697468686f6c64696e675461784368616e6765640c007c01284964656e7469747949640000a001185469636b657200007d02010c546178000208c45468652064656661756c742077697468686f6c64696e672074617820666f722061207469636b6572206368616e6765642e74284167656e74204449442c205469636b65722c204e657720546178292e6044696457697468686f6c64696e675461784368616e67656410007c01284964656e7469747949640000a001185469636b657200007c01284964656e7469747949640000e102012c4f7074696f6e3c5461783e000308ec5468652077697468686f6c64696e672074617820737065636966696320746f20612044494420666f722061207469636b6572206368616e6765642ea0284167656e74204449442c205469636b65722c205461786564204449442c204e657720546178292e384341415472616e736665727265640c007c01284964656e7469747949640000a001185469636b657200007c01284964656e7469747949640004086c41206e65772044494420776173206d61646520746865204341412e8c284e657720434141204449442c205469636b65722c204e65772043414120444944292e2c4341496e6974696174656410006d0201204576656e74446964000071020110434149640000e502013c436f72706f72617465416374696f6e000001030124434144657461696c730005084c412043412077617320696e697469617465642ea8284167656e74204449442c2043412069642c207468652043412c207468652043412064657461696c73293443414c696e6b6564546f446f630c007c01284964656e7469747949640000710201104341496400000503013c5665633c446f63756d656e7449643e000608844120434120776173206c696e6b656420746f206120736574206f6620646f63732eac284167656e74204449442c2043412049642c204c697374206f6620646f63206964656e746966696572732924434152656d6f76656408006d0201204576656e74446964000071020110434149640007084441204341207761732072656d6f7665642e48284167656e74204449442c20434120496429445265636f7264446174654368616e6765640c006d0201204576656e74446964000071020110434149640000e502013c436f72706f72617465416374696f6e0008046c412043412773207265636f72642064617465206368616e6765642e085c4576656e747320666f722074686973206d6f64756c652e00d902086070616c6c65745f636f72706f726174655f616374696f6e73405461726765744964656e74697469657300000801286964656e7469746965732501013c5665633c4964656e7469747949643e00012474726561746d656e74dd02013c54617267657454726561746d656e740000dd02086070616c6c65745f636f72706f726174655f616374696f6e733c54617267657454726561746d656e740001081c496e636c7564650000001c4578636c75646500010000e10204184f7074696f6e040454017d020108104e6f6e6500000010536f6d6504007d020000010000e502086070616c6c65745f636f72706f726174655f616374696f6e733c436f72706f72617465416374696f6e00001801106b696e64e902011843414b696e640001246465636c5f646174652001184d6f6d656e7400012c7265636f72645f64617465ed0201484f7074696f6e3c5265636f7264446174653e00011c74617267657473d90201405461726765744964656e74697469657300015c64656661756c745f77697468686f6c64696e675f7461787d02010c54617800013c77697468686f6c64696e675f746178f90201585665633c284964656e7469747949642c20546178293e0000e902086070616c6c65745f636f72706f726174655f616374696f6e731843414b696e64000114485072656469637461626c6542656e6566697400000050556e7072656469637461626c6542656e65666974000100304973737565724e6f746963650002003852656f7267616e697a6174696f6e000300144f7468657200040000ed0204184f7074696f6e04045401f1020108104e6f6e6500000010536f6d650400f1020000010000f102086070616c6c65745f636f72706f726174655f616374696f6e73285265636f7264446174650000080110646174652001184d6f6d656e74000128636865636b706f696e74f50201304341436865636b706f696e740000f502086070616c6c65745f636f72706f726174655f616374696f6e73304341436865636b706f696e74000108245363686564756c656408009d0201285363686564756c654964000020010c753634000000204578697374696e67040089020130436865636b706f696e74496400010000f902000002fd0200fd02000004087c7d02000103086070616c6c65745f636f72706f726174655f616374696f6e7324434144657461696c730000040028011c5665633c75383e0000050300000201020009030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74144576656e740001181c4372656174656414007c01284964656e7469747949640000710201104341496400000d03013c42616c6c6f7454696d6552616e676500001103012842616c6c6f744d657461000019010110626f6f6c00000c7c4120636f72706f726174652062616c6c6f742077617320637265617465642e001501284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e642c2042616c6c6f74206d657461646174612c2052435620656e61626c65643f2920566f7465436173740c007c01284964656e7469747949640000710201104341496400003103013c5665633c42616c6c6f74566f74653e00010c984120766f746520776173206361737420696e206120636f72706f726174652062616c6c6f742e006028766f746572204449442c20434149642c20566f746573293052616e67654368616e6765640c007c01284964656e7469747949640000710201104341496400000d03013c42616c6c6f7454696d6552616e676500020cd04120636f72706f726174652062616c6c6f74206368616e676564206974732073746172742f656e6420646174652072616e67652e0098284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e64292c4d6574614368616e6765640c007c01284964656e7469747949640000710201104341496400001103012842616c6c6f744d65746100030ca04120636f72706f726174652062616c6c6f74206368616e67656420697473206d657461646174612e0088284167656e74204449442c20434127732049442c204e6577206d6574616461746129285243564368616e6765640c007c01284964656e74697479496400007102011043414964000019010110626f6f6c00040cac4120636f72706f726174652062616c6c6f74206368616e676564206974732052435620737570706f72742e0084284167656e74204449442c20434127732049442c204e657720737570706f7274291c52656d6f76656408006d0201204576656e744469640000710201104341496400050c7c4120636f72706f726174652062616c6c6f74207761732072656d6f7665642e0050284167656e74204449442c204341277320494429085c4576656e747320666f722074686973206d6f64756c652e000d030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f743c42616c6c6f7454696d6552616e6765000008011473746172742001184d6f6d656e7400010c656e642001184d6f6d656e74000011030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742842616c6c6f744d65746100000801147469746c651503012c42616c6c6f745469746c6500011c6d6f74696f6e731903012c5665633c4d6f74696f6e3e000015030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c42616c6c6f745469746c650000040028011c5665633c75383e000019030000021d03001d030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74184d6f74696f6e00000c01147469746c652103012c4d6f74696f6e5469746c65000124696e666f5f6c696e6b250301384d6f74696f6e496e666f4c696e6b00011c63686f69636573290301405665633c43686f6963655469746c653e000021030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c4d6f74696f6e5469746c650000040028011c5665633c75383e000025030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74384d6f74696f6e496e666f4c696e6b0000040028011c5665633c75383e000029030000022d03002d030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c43686f6963655469746c650000040028011c5665633c75383e0000310300000235030035030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742842616c6c6f74566f74650000080114706f77657218011c42616c616e636500012066616c6c6261636b3903012c4f7074696f6e3c7531363e0000390304184f7074696f6e040454013d030108104e6f6e6500000010536f6d6504003d0300000100003d0300000504004103082c70616c6c65745f70697073205261774576656e7408244163636f756e74496401002c426c6f636b4e756d6265720110015050486973746f726963616c506970735072756e65640c007c01284964656e746974794964000019010110626f6f6c000019010110626f6f6c00000445015072756e696e6720486973746f726963616c205049507320697320656e61626c6564206f722064697361626c6564202863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293c50726f706f73616c4372656174656420007c01284964656e74697479496400004503014c50726f706f7365723c4163636f756e7449643e00004d0301145069704964000018011c42616c616e636500005102012c4f7074696f6e3c55726c3e0000510301584f7074696f6e3c5069704465736372697074696f6e3e00003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00005903013050726f706f73616c4461746100011498412050495020776173206d61646520776974682061206042616c616e636560207374616b652e00342320506172616d65746572733a00510143616c6c6572204449442c2050726f706f7365722c205049502049442c206465706f7369742c2055524c2c206465736372697074696f6e2c206578706972792074696d652c2070726f706f73616c20646174612e5050726f706f73616c5374617465557064617465640c007c01284964656e74697479496400004d030114506970496400005d03013450726f706f73616c5374617465000204d854726967676572656420656163682074696d6520746865207374617465206f6620612070726f706f73616c20697320616d656e64656414566f74656414007c01284964656e74697479496400000001244163636f756e74496400004d0301145069704964000019010110626f6f6c000018011c42616c616e6365000304f8604163636f756e7449646020766f7465642060626f6f6c60206f6e207468652070726f706f73616c207265666572656e636564206279206050697049646024506970436c6f7365640c007c01284964656e74697479496400004d0301145069704964000019010110626f6f6c000404e850697020686173206265656e20636c6f7365642c20626f6f6c20696e6469636174657320776865746865722064617461206973207072756e656448457865637574696f6e5363686564756c65640c007c01284964656e74697479496400004d0301145069704964000010012c426c6f636b4e756d626572000504e0457865637574696f6e206f6620612050495020686173206265656e207363686564756c656420617420737065636966696320626c6f636b2e7444656661756c74456e6163746d656e74506572696f644368616e6765640c007c01284964656e746974794964000010012c426c6f636b4e756d626572000010012c426c6f636b4e756d626572000608d844656661756c7420656e6163746d656e7420706572696f642028696e20626c6f636b732920686173206265656e206368616e6765642e902863616c6c6572204449442c206f6c6420706572696f642c206e657720706572696f6429744d696e696d756d50726f706f73616c4465706f7369744368616e6765640c007c01284964656e746974794964000018011c42616c616e6365000018011c42616c616e63650007087c4d696e696d756d206465706f73697420616d6f756e74206d6f646966696564902863616c6c6572204449442c206f6c6420616d6f756e742c206e657720616d6f756e74295c50656e64696e675069704578706972794368616e6765640c007c01284964656e74697479496400003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00003901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e000808cc416d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020657870697265732e902863616c6c6572204449442c206f6c64206578706972792c206e65772065787069727929584d6178506970536b6970436f756e744368616e6765640c007c01284964656e7469747949640000080130536b6970706564436f756e740000080130536b6970706564436f756e74000908cc546865206d6178696d756d2074696d65732061205049502063616e20626520736b697070656420776173206368616e6765642e882863616c6c6572204449442c206f6c642076616c75652c206e65772076616c756529544163746976655069704c696d69744368616e6765640c007c01284964656e746974794964000010010c753332000010010c753332000a08b8546865206d6178696d756d206e756d626572206f6620616374697665205049507320776173206368616e6765642e882863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293850726f706f73616c526566756e640c007c01284964656e74697479496400004d0301145069704964000018011c42616c616e6365000b083c526566756e642070726f706f73616c482869642c20746f74616c20616d6f756e74293c536e617073686f74436c656172656408007c01284964656e746974794964000061030128536e617073686f744964000c046454686520736e617073686f742077617320636c65617265642e34536e617073686f7454616b656e0c007c01284964656e746974794964000061030128536e617073686f74496400006503014c5665633c536e617073686f747465645069703e000d046441206e657720736e617073686f74207761732074616b656e2e28506970536b69707065640c007c01284964656e74697479496400004d03011450697049640000080130536b6970706564436f756e74000e08a0412050495020696e2074686520736e617073686f742071756575652077617320736b69707065642e802867635f6469642c207069705f69642c206e65775f736b69705f636f756e742958536e617073686f74526573756c7473456e616374656414007c01284964656e7469747949640000710301484f7074696f6e3c536e617073686f7449643e0000750301685665633c2850697049642c20536b6970706564436f756e74293e00007d0301285665633c50697049643e00007d0301285665633c50697049643e000f083101526573756c74732028652e672e2c20617070726f7665642c2072656a65637465642c20616e6420736b6970706564292c207765726520656e616374656420666f7220736f6d6520504950732e51012867635f6469642c20736e617073686f745f69645f6f70742c20736b69707065645f706970735f776974685f6e65775f636f756e742c2072656a65637465645f706970732c20617070726f7665645f706970732964457865637574696f6e5363686564756c696e674661696c65640c007c01284964656e74697479496400004d0301145069704964000010012c426c6f636b4e756d6265720010040d015363686564756c696e67206f66207468652050495020666f7220657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e3c4578706972795363686564756c65640c007c01284964656e74697479496400004d0301145069704964000010012c426c6f636b4e756d626572001104985468652050495020686173206265656e207363686564756c656420666f72206578706972792e584578706972795363686564756c696e674661696c65640c007c01284964656e74697479496400004d0301145069704964000010012c426c6f636b4e756d62657200120401015363686564756c696e67206f66207468652050495020666f7220657870697279206661696c656420696e20746865207363686564756c65722070616c6c65742e64457865637574696f6e43616e63656c6c696e674661696c656404004d0301145069704964001304f043616e63656c6c696e67207468652050495020657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e085c4576656e747320666f722074686973206d6f64756c652e004503082c70616c6c65745f706970732050726f706f73657204244163636f756e7449640100010824436f6d6d756e69747904000001244163636f756e74496400000024436f6d6d6974746565040049030124436f6d6d6974746565000100004903082c70616c6c65745f7069707324436f6d6d697474656500010824546563686e6963616c0000001c55706772616465000100004d03082c70616c6c65745f706970731450697049640000040010010c7533320000510304184f7074696f6e0404540155030108104e6f6e6500000010536f6d650400550300000100005503082c70616c6c65745f70697073385069704465736372697074696f6e0000040028011c5665633c75383e00005903082c70616c6c65745f706970733050726f706f73616c4461746100010810486173680400240110483235360000002050726f706f73616c040028011c5665633c75383e000100005d03082c70616c6c65745f706970733450726f706f73616c53746174650001181c50656e64696e670000002052656a6563746564000100245363686564756c6564000200184661696c65640003002045786563757465640004001c45787069726564000500006103082c70616c6c65745f7069707328536e617073686f7449640000040010010c753332000065030000026903006903082c70616c6c65745f7069707338536e617073686f74746564506970000008010869644d03011450697049640001187765696768746d03013c28626f6f6c2c2042616c616e63652900006d030000040819011800710304184f7074696f6e0404540161030108104e6f6e6500000010536f6d6504006103000001000075030000027903007903000004084d0308007d030000024d030081031064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747324706f7274666f6c696f144576656e7400011840506f7274666f6c696f437265617465640c007c01284964656e7469747949640000e0013c506f7274666f6c696f4e756d626572000085030134506f7274666f6c696f4e616d65000018b054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c7920637265617465642e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572402a20706f7274666f6c696f206e616d6540506f7274666f6c696f44656c6574656408007c01284964656e7469747949640000e0013c506f7274666f6c696f4e756d626572000114b054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c792072656d6f7665642e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572584d6f7665644265747765656e506f7274666f6c696f7318007c01284964656e7469747949640000d8012c506f7274666f6c696f49640000d8012c506f7274666f6c696f49640000a001185469636b6572000018011c42616c616e636500008001304f7074696f6e3c4d656d6f3e000220f04120746f6b656e20616d6f756e7420686173206265656e206d6f7665642066726f6d206f6e6520706f7274666f6c696f20746f20616e6f746865722e00302320506172616d6574657273302a206f726967696e20444944482a20736f7572636520706f7274666f6c696f5c2a2064657374696e6174696f6e20706f7274666f6c696f382a206173736574207469636b6572782a2061737365742062616c616e6365207468617420776173206d6f76656440506f7274666f6c696f52656e616d65640c007c01284964656e7469747949640000e0013c506f7274666f6c696f4e756d626572000085030134506f7274666f6c696f4e616d65000318fc54686520706f7274666f6c696f206964656e746966696564207769746820606e756d6020686173206265656e2072656e616d656420746f20606e616d65602e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572402a20706f7274666f6c696f206e616d653855736572506f7274666f6c696f7308007c01284964656e7469747949640000890301945665633c28506f7274666f6c696f4e756d6265722c20506f7274666f6c696f4e616d65293e000414d4416c6c206e6f6e2d64656661756c7420706f7274666f6c696f206e756d6265727320616e64206e616d6573206f662061204449442e00302320506172616d6574657273302a206f726967696e20444944742a20766563746f72206f66206e756d6265722d6e616d6520706169727364506f7274666f6c696f437573746f6469616e4368616e6765640c007c01284964656e7469747949640000d8012c506f7274666f6c696f496400007c01284964656e746974794964000518f4437573746f6479206f66206120706f7274666f6c696f20686173206265656e20676976656e20746f206120646966666572656e74206964656e7469747900302320506172616d6574657273302a206f726967696e20444944382a20706f7274666f6c696f206964642a20706f7274666f6c696f20637573746f6469616e20646964085c4576656e747320666f722074686973206d6f64756c652e0085030c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f696434506f7274666f6c696f4e616d650000040028011c5665633c75383e000089030000028d03008d0300000408e08503009103084c70616c6c65745f70726f746f636f6c5f666565205261774576656e7404244163636f756e7449640100010c1846656553657408007c01284964656e746974794964000018011c42616c616e6365000004845468652070726f746f636f6c20666565206f6620616e206f7065726174696f6e2e38436f656666696369656e7453657408007c01284964656e746974794964000095030120506f73526174696f000104505468652066656520636f656666696369656e742e284665654368617267656408000001244163636f756e744964000018011c42616c616e63650002043046656520636861726765642e085c4576656e747320666f722074686973206d6f64756c652e009503084c706f6c796d6573685f7072696d69746976657320506f73526174696f0000080010010c753332000010010c753332000099030c4070616c6c65745f7363686564756c65721870616c6c6574144576656e7404045400010c245363686564756c65640800100138543a3a426c6f636b4e756d626572000010010c753332000004905363686564756c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d2043616e63656c65640800100138543a3a426c6f636b4e756d626572000010010c7533320001048c43616e63656c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d28446973706174636865640c009d03016c5461736b416464726573733c543a3a426c6f636b4e756d6265723e00006102013c4f7074696f6e3c5665633c75383e3e0000310101384469737061746368526573756c74000204a84469737061746368656420736f6d65207461736b2e205c5b7461736b2c2069642c20726573756c745c5d04304576656e747320747970652e9d0300000408101000a103084470616c6c65745f736574746c656d656e74205261774576656e740c184d6f6d656e7401202c426c6f636b4e756d6265720110244163636f756e7449640100014c3056656e75654372656174656410007c01284964656e7469747949640000a503011c56656e756549640000a903013056656e756544657461696c730000ad03012456656e756554797065000004ec41206e65772076656e756520686173206265656e206372656174656420286469642c2076656e75655f69642c2064657461696c732c2074797065294c56656e756544657461696c73557064617465640c007c01284964656e7469747949640000a503011c56656e756549640000a903013056656e756544657461696c730001041501416e206578697374696e672076656e756527732064657461696c7320686173206265656e207570646174656420286469642c2076656e75655f69642c2064657461696c73294056656e756554797065557064617465640c007c01284964656e7469747949640000a503011c56656e756549640000ad03012456656e756554797065000204fc416e206578697374696e672076656e75652773207479706520686173206265656e207570646174656420286469642c2076656e75655f69642c20747970652948496e737472756374696f6e437265617465641c007c01284964656e7469747949640000a503011c56656e756549640000b1030134496e737472756374696f6e49640000b503016c536574746c656d656e74547970653c426c6f636b4e756d6265723e0000f401384f7074696f6e3c4d6f6d656e743e0000f401384f7074696f6e3c4d6f6d656e743e0000b90301205665633c4c65673e0003088841206e657720696e737472756374696f6e20686173206265656e20637265617465643901286469642c2076656e75655f69642c20696e737472756374696f6e5f69642c20736574746c656d656e745f747970652c2074726164655f646174652c2076616c75655f646174652c206c656773294c496e737472756374696f6e41666669726d65640c007c01284964656e7469747949640000d8012c506f7274666f6c696f49640000b1030134496e737472756374696f6e49640004040501416e20696e737472756374696f6e20686173206265656e2061666669726d656420286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964295041666669726d6174696f6e57697468647261776e0c007c01284964656e7469747949640000d8012c506f7274666f6c696f49640000b1030134496e737472756374696f6e49640005040901416e2061666669726d6174696f6e20686173206265656e2077697468647261776e20286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964294c496e737472756374696f6e52656a656374656408007c01284964656e7469747949640000b1030134496e737472756374696f6e4964000604d8416e20696e737472756374696f6e20686173206265656e2072656a656374656420286469642c20696e737472756374696f6e5f6964293852656365697074436c61696d656418007c01284964656e7469747949640000b1030134496e737472756374696f6e49640000c10301144c65674964000020010c75363400000001244163636f756e7449640000c503013c526563656970744d657461646174610007047d0141207265636569707420686173206265656e20636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e65722c2072656365697074206d6574616461746129585265636569707456616c69646974794368616e67656410007c01284964656e74697479496400000001244163636f756e744964000020010c753634000019010110626f6f6c0008040d0141207265636569707420686173206265656e20696e76616c69646174656420286469642c207369676e65722c20726563656970745f7569642c2076616c6964697479294052656365697074556e636c61696d656414007c01284964656e7469747949640000b1030134496e737472756374696f6e49640000c10301144c65674964000020010c75363400000001244163636f756e7449640009043d0141207265636569707420686173206265656e20756e636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e6572293856656e756546696c746572696e670c007c01284964656e7469747949640000a001185469636b6572000019010110626f6f6c000a04690156656e75652066696c746572696e6720686173206265656e20656e61626c6564206f722064697361626c656420666f722061207469636b657220286469642c207469636b65722c2066696c746572696e675f656e61626c6564293456656e756573416c6c6f7765640c007c01284964656e7469747949640000a001185469636b65720000c90301305665633c56656e756549643e000b04dc56656e75657320616464656420746f20616c6c6f77206c69737420286469642c207469636b65722c207665633c76656e75655f69643e293456656e756573426c6f636b65640c007c01284964656e7469747949640000a001185469636b65720000c90301305665633c56656e756549643e000c04dc56656e75657320616464656420746f20626c6f636b206c69737420286469642c207469636b65722c207665633c76656e75655f69643e29484c65674661696c6564457865637574696f6e0c007c01284964656e7469747949640000b1030134496e737472756374696f6e49640000c10301144c65674964000d04dc457865637574696f6e206f662061206c6567206661696c656420286469642c20696e737472756374696f6e5f69642c206c65675f69642944496e737472756374696f6e4661696c656408007c01284964656e7469747949640000b1030134496e737472756374696f6e4964000e04c8496e737472756374696f6e206661696c656420657865637574696f6e20286469642c20696e737472756374696f6e5f6964294c496e737472756374696f6e457865637574656408007c01284964656e7469747949640000b1030134496e737472756374696f6e4964000f04d8496e737472756374696f6e206578656375746564207375636365737366756c6c79286469642c20696e737472756374696f6e5f6964294456656e7565556e617574686f72697a65640c007c01284964656e7469747949640000a001185469636b65720000a503011c56656e75654964001004010156656e7565206e6f742070617274206f662074686520746f6b656e277320616c6c6f77206c69737420286469642c205469636b65722c2076656e75655f696429405363686564756c696e674661696c6564040064013444697370617463684572726f72001104805363686564756c696e67206f6620696e737472756374696f6e206661696c732e58496e737472756374696f6e52657363686564756c656408007c01284964656e7469747949640000b1030134496e737472756374696f6e49640012086c496e737472756374696f6e2069732072657363686564756c65642e702863616c6c6572204449442c20696e737472756374696f6e5f696429085c4576656e747320666f722074686973206d6f64756c652e00a503084470616c6c65745f736574746c656d656e741c56656e756549640000040020010c7536340000a903084470616c6c65745f736574746c656d656e743056656e756544657461696c730000040028011c5665633c75383e0000ad03084470616c6c65745f736574746c656d656e742456656e756554797065000110144f7468657200000030446973747269627574696f6e0001000c53746f0002002045786368616e676500030000b103084470616c6c65745f736574746c656d656e7434496e737472756374696f6e49640000040020010c7536340000b503084470616c6c65745f736574746c656d656e7438536574746c656d656e7454797065042c426c6f636b4e756d626572011001084c536574746c654f6e41666669726d6174696f6e00000034536574746c654f6e426c6f636b040010012c426c6f636b4e756d62657200010000b903000002bd0300bd03084470616c6c65745f736574746c656d656e740c4c6567000010011066726f6dd8012c506f7274666f6c696f4964000108746fd8012c506f7274666f6c696f49640001146173736574a001185469636b6572000118616d6f756e7418011c42616c616e63650000c103084470616c6c65745f736574746c656d656e74144c656749640000040020010c7536340000c503084470616c6c65745f736574746c656d656e743c526563656970744d657461646174610000040028011c5665633c75383e0000c903000002a50300cd031064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732873746174697374696373144576656e740001183853746174547970657341646465640c007c01284964656e7469747949640000d1030128417373657453636f70650000d50301345665633c53746174547970653e00000c685374617420747970657320616464656420746f2061737365742e007c2843616c6c6572204449442c2041737365742c2053746174207479706573294053746174547970657352656d6f7665640c007c01284964656e7469747949640000d1030128417373657453636f70650000d50301345665633c53746174547970653e00010c78537461742074797065732072656d6f7665642066726f6d2061737365742e007c2843616c6c6572204449442c2041737365742c20537461742074797065732944417373657453746174735570646174656410007c01284964656e7469747949640000d1030128417373657453636f70650000d903012053746174547970650000e903013c5665633c537461745570646174653e00020c50417373657420737461747320757064617465642e009c2843616c6c6572204449442c2041737365742c205374617420747970652c2055706461746573296853657441737365745472616e73666572436f6d706c69616e63650c007c01284964656e7469747949640000d1030128417373657453636f70650000010401585665633c5472616e73666572436f6e646974696f6e3e00030ca0536574205472616e7366657220636f6d706c69616e63652072756c657320666f722061737365742e00a02843616c6c6572204449442c2041737365742c205472616e7366657220636f6e646974696f6e7329805472616e73666572436f6e646974696f6e4578656d7074696f6e7341646465640c007c01284964656e74697479496400000d0401685472616e73666572436f6e646974696f6e4578656d70744b65790000250101305665633c53636f706549643e00040c0901416464206053636f706549646073206578656d707420666f72207472616e7366657220636f6e646974696f6e73206d61746368696e67206578656d7074206b65792e00882843616c6c6572204449442c204578656d7074206b65792c20456e74697469657329885472616e73666572436f6e646974696f6e4578656d7074696f6e7352656d6f7665640c007c01284964656e74697479496400000d0401685472616e73666572436f6e646974696f6e4578656d70744b65790000250101305665633c53636f706549643e00050c150152656d6f7665206053636f706549646073206578656d707420666f72207472616e7366657220636f6e646974696f6e73206d61746368696e67206578656d7074206b65792e00882843616c6c6572204449442c204578656d7074206b65792c20456e74697469657329085c4576656e747320666f722074686973206d6f64756c652e00d1030c4c706f6c796d6573685f7072696d697469766573287374617469737469637328417373657453636f7065000104185469636b65720400a001185469636b657200000000d503000002d90300d9030c4c706f6c796d6573685f7072696d697469766573287374617469737469637320537461745479706500000801086f70dd030128537461744f7054797065000130636c61696d5f697373756572e103017c4f7074696f6e3c28436c61696d547970652c204964656e746974794964293e0000dd030c4c706f6c796d6573685f7072696d697469766573287374617469737469637328537461744f705479706500010814436f756e740000001c42616c616e636500010000e10304184f7074696f6e04045401e5030108104e6f6e6500000010536f6d650400e5030000010000e50300000408cd027c00e903000002ed0300ed030c4c706f6c796d6573685f7072696d6974697665732873746174697374696373285374617455706461746500000801106b657932f103012853746174326e644b657900011476616c7565fd0301304f7074696f6e3c753132383e0000f1030c4c706f6c796d6573685f7072696d69746976657328737461746973746963732853746174326e644b65790001082c4e6f436c61696d5374617400000014436c61696d0400f503012453746174436c61696d00010000f5030c4c706f6c796d6573685f7072696d69746976657328737461746973746963732453746174436c61696d00010c2841636372656469746564040019010110626f6f6c00000024416666696c69617465040019010110626f6f6c000100304a7572697364696374696f6e0400f903014c4f7074696f6e3c436f756e747279436f64653e00020000f90304184f7074696f6e0404540105010108104e6f6e6500000010536f6d65040005010000010000fd0304184f7074696f6e04045401180108104e6f6e6500000010536f6d650400180000010000010400000205040005040c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e6365445472616e73666572436f6e646974696f6e000110404d6178496e766573746f72436f756e74040020010c753634000000504d6178496e766573746f724f776e65727368697004000904012850657263656e7461676500010028436c61696d436f756e741000f503012453746174436c61696d00007c01284964656e746974794964000020010c7536340000f4012c4f7074696f6e3c7536343e00020038436c61696d4f776e6572736869701000f503012453746174436c61696d00007c01284964656e74697479496400000904012850657263656e7461676500000904012850657263656e746167650003000009040c4c706f6c796d6573685f7072696d69746976657328737461746973746963733c4861736861626c655065726d696c6c000004007d02015873705f61726974686d657469633a3a5065726d696c6c00000d040c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e6365685472616e73666572436f6e646974696f6e4578656d70744b657900000c01146173736574d1030128417373657453636f70650001086f70dd030128537461744f7054797065000128636c61696d5f74797065110401444f7074696f6e3c436c61696d547970653e0000110404184f7074696f6e04045401cd020108104e6f6e6500000010536f6d650400cd0200000100001504082870616c6c65745f73746f205261774576656e7404184d6f6d656e74012001184446756e647261697365724372656174656410007c01284964656e74697479496400001904013046756e64726169736572496400001d04013846756e647261697365724e616d6500002104014846756e647261697365723c4d6f6d656e743e0000088841206e65772066756e6472616973657220686173206265656e20637265617465642efc284167656e74204449442c2066756e647261697365722069642c2066756e64726169736572206e616d652c2066756e647261697365722064657461696c732920496e76657374656418007c01284964656e74697479496400001904013046756e6472616973657249640000a001185469636b65720000a001185469636b6572000018011c42616c616e6365000018011c42616c616e63650001089c416e20696e766573746f7220696e76657374656420696e207468652066756e647261697365722e850128496e766573746f722c2066756e647261697365725f69642c206f66666572696e6720746f6b656e2c20726169736520746f6b656e2c206f66666572696e675f746f6b656e5f616d6f756e742c2072616973655f746f6b656e5f616d6f756e74294046756e6472616973657246726f7a656e08007c01284964656e74697479496400001904013046756e64726169736572496400020874412066756e6472616973657220686173206265656e2066726f7a656e2e68284167656e74204449442c2066756e64726169736572206964294846756e64726169736572556e66726f7a656e08007c01284964656e74697479496400001904013046756e6472616973657249640003087c412066756e6472616973657220686173206265656e20756e66726f7a656e2e68284167656e74204449442c2066756e64726169736572206964296046756e6472616973657257696e646f774d6f64696669656418006d0201204576656e7444696400001904013046756e64726169736572496400002001184d6f6d656e740000f401384f7074696f6e3c4d6f6d656e743e00002001184d6f6d656e740000f401384f7074696f6e3c4d6f6d656e743e00040898412066756e647261697365722077696e646f7720686173206265656e206d6f6469666965642e0901284167656e74204449442c2066756e647261697365722069642c206f6c645f73746172742c206f6c645f656e642c206e65775f73746172742c206e65775f656e64294046756e64726169736572436c6f73656408007c01284964656e74697479496400001904013046756e64726169736572496400050878412066756e6472616973657220686173206265656e2073746f707065642e68284167656e74204449442c2066756e6472616973657220696429085c4576656e747320666f722074686973206d6f64756c652e001904082870616c6c65745f73746f3046756e6472616973657249640000040020010c75363400001d04082870616c6c65745f73746f3846756e647261697365724e616d650000040028011c5665633c75383e00002104082870616c6c65745f73746f2846756e6472616973657204184d6f6d656e740120002c011c63726561746f727c01284964656e7469747949640001486f66666572696e675f706f7274666f6c696fd8012c506f7274666f6c696f49640001386f66666572696e675f6173736574a001185469636b657200014472616973696e675f706f7274666f6c696fd8012c506f7274666f6c696f496400013472616973696e675f6173736574a001185469636b657200011474696572732504014c5665633c46756e64726169736572546965723e00012076656e75655f6964a503011c56656e7565496400011473746172742001184d6f6d656e7400010c656e64f401384f7074696f6e3c4d6f6d656e743e0001187374617475732d04014046756e647261697365725374617475730001486d696e696d756d5f696e766573746d656e7418011c42616c616e6365000025040000022904002904082870616c6c65745f73746f3846756e647261697365725469657200000c0114746f74616c18011c42616c616e6365000114707269636518011c42616c616e636500012472656d61696e696e6718011c42616c616e636500002d04082870616c6c65745f73746f4046756e64726169736572537461747573000110104c6976650000001846726f7a656e00010018436c6f7365640002002c436c6f7365644561726c79000300003104083c70616c6c65745f7472656173757279205261774576656e74081c42616c616e63650118244163636f756e7449640100010c50547265617375727944697362757273656d656e7410007c01284964656e74697479496400007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e636500000c8844697362757273656d656e7420746f206120746172676574204964656e746974792e000101287472656173757279206964656e746974792c20746172676574206964656e746974792c20746172676574207072696d617279206b65792c20616d6f756e742968547265617375727944697362757273656d656e744661696c656410007c01284964656e74697479496400007c01284964656e74697479496400000001244163636f756e744964000018011c42616c616e636500010ca444697362757273656d656e7420746f206120746172676574204964656e74697479206661696c65642e000101287472656173757279206964656e746974792c20746172676574206964656e746974792c20746172676574207072696d617279206b65792c20616d6f756e74295454726561737572795265696d62757273656d656e7408007c01284964656e746974794964000018011c42616c616e636500020c5c5472656173757279207265696d62757273656d656e742e006428736f75726365206964656e746974792c20616d6f756e7429085c4576656e747320666f722074686973206d6f64756c652e003504083870616c6c65745f7574696c697479144576656e7400010c404261746368496e74657272757074656408003904012c4576656e74436f756e747300003d04011c4572726f72417400000cac4261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792edc496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f72206561636820646973706174636820616e64f474686520696e646578206f6620746865206669727374206661696c696e672064697370617463682061732077656c6c20617320746865206572726f722e5442617463684f7074696d69737469634661696c656408003904012c4576656e74436f756e74730000410401305665633c4572726f7241743e00010cac4261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792ecc496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c20616e6429016120766563746f72206f6620616e79206661696c65642064697370617463686573207769746820746865697220696e646963657320616e64206173736f636961746564206572726f722e384261746368436f6d706c6574656404003904012c4576656e74436f756e7473000208c84261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722ed0496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682064697370617463682e0c5c4576656e747320666f722074686973206d6f64756c652e00304576656e747320747970652e390400000210003d040000040810640041040000023d040045041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731062617365144576656e740001043c556e65787065637465644572726f720400490401544f7074696f6e3c44697370617463684572726f723e000004e4416e20756e6578706563746564206572726f722068617070656e656420746861742073686f756c6420626520696e766573746967617465642e085c4576656e747320666f722074686973206d6f64756c652e00490404184f7074696f6e04045401640108104e6f6e6500000010536f6d6504006400000100004d041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974733c65787465726e616c5f6167656e7473144576656e740001143047726f75704372656174656410006d0201204576656e744469640000a001185469636b6572000015010110414749640000b0015045787472696e7369635065726d697373696f6e7300000c6c416e204167656e742047726f75702077617320637265617465642e00d02843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773207065726d697373696f6e73295c47726f75705065726d697373696f6e735570646174656410006d0201204576656e744469640000a001185469636b6572000015010110414749640000b0015045787472696e7369635065726d697373696f6e7300010ca4416e204167656e742047726f75702773207065726d697373696f6e732077617320757064617465642e00e02843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773206e6577207065726d697373696f6e7329284167656e7441646465640c006d0201204576656e744469640000a001185469636b65720000110101284167656e7447726f757000020c4c416e206167656e74207761732061646465642e00c42843616c6c65722f4167656e74204449442c204167656e742773207469636b65722c204167656e7427732067726f757029304167656e7452656d6f7665640c006d0201204576656e744469640000a001185469636b657200007c01284964656e74697479496400030c54416e206167656e74207761732072656d6f7665642e00a42843616c6c6572204449442c204167656e742773207469636b65722c204167656e74277320444944293047726f75704368616e67656410006d0201204576656e744469640000a001185469636b657200007c01284964656e7469747949640000110101284167656e7447726f757000040c74416e206167656e7427732067726f757020776173206368616e6765642e0015012843616c6c6572204449442c204167656e742773207469636b65722c204167656e742773204449442c20546865206e65772067726f7570206f6620746865206167656e7429085c4576656e747320666f722074686973206d6f64756c652e0051041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731c72656c61796572205261774576656e7404244163636f756e744964010001104c417574686f72697a6564506179696e674b657914006d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000020010c75363400000ccc417574686f72697a6174696f6e20676976656e20666f722060706179696e675f6b65796020746f2060757365725f6b6579602e0001012843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20496e697469616c20504f4c5958206c696d69742c204175746820494429444163636570746564506179696e674b65790c006d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e74496400010c50416363657074656420706179696e67206b65792e00882843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294052656d6f766564506179696e674b65790c006d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e74496400020c4c52656d6f76656420706179696e67206b65792e00882843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294455706461746564506f6c79784c696d697414006d0201204576656e7444696400000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000018011c42616c616e636500030c505570646174656420706f6c7978206c696d69742e0011012843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20504f4c5958206c696d69742c206f6c642072656d61696e696e6720504f4c595829085c4576656e747320666f722074686973206d6f64756c652e005504083870616c6c65745f72657761726473205261774576656e7404244163636f756e744964010001044049746e526577617264436c61696d656408000001244163636f756e744964000018011c42616c616e63650000045c49746e207265776172642077617320636c61696d65642e085c4576656e747320666f722074686973206d6f64756c652e005904084470616c6c65745f746573745f7574696c73205261774576656e7404244163636f756e7449640100010c584d6f636b496e766573746f725549444372656174656408007c01284964656e74697479496400005d04012c496e766573746f725569640000080d0141206e6577206d6f636b65642060496e766573746f725569646020686173206265656e206372656174656420666f722074686520676976656e204964656e746974792e7428546172676574204449442c204e657720496e766573746f72556964292444696453746174757308007c01284964656e74697479496400000001244163636f756e744964000108e4456d6974732074686520604964656e7469747949646020616e642074686520604163636f756e74496460206f66207468652063616c6c65722e702843616c6c6572204449442c2043616c6c6572206163636f756e7429244364645374617475730c007801484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000019010110626f6f6c00020c550153686f777320746865206044494460206173736f63696174656420746f2074686520604163636f756e744964602c20616e64206120666c616720696e646963617465732069662074686174204449442068617320614076616c69642043444420636c61696d2ed828546172676574204449442c20546172676574204163636f756e742c20612076616c69642043444420636c61696d2065786973747329085c4576656e747320666f722074686973206d6f64756c652e005d040c4c706f6c796d6573685f7072696d697469766573186364645f69642c496e766573746f7255696400000400990101205b75383b2031365d0000610408306672616d655f73797374656d14506861736500010c384170706c7945787472696e736963040010010c7533320000003046696e616c697a6174696f6e00010038496e697469616c697a6174696f6e000200006504000002240069040000029d03006d0408306672616d655f73797374656d584c61737452756e74696d6555706772616465496e666f0000080130737065635f76657273696f6e7104014c636f6465633a3a436f6d706163743c7533323e000124737065635f6e616d657504016473705f72756e74696d653a3a52756e74696d65537472696e670000710400000610007504000005020079040c306672616d655f73797374656d1870616c6c65741043616c6c0404540001282866696c6c5f626c6f636b040114726174696f8d01011c50657262696c6c00000405014120646973706174636820746861742077696c6c2066696c6c2074686520626c6f636b2077656967687420757020746f2074686520676976656e20726174696f2e1872656d61726b04011872656d61726b28011c5665633c75383e000114684d616b6520736f6d65206f6e2d636861696e2072656d61726b2e002823203c7765696768743e202d20604f283129602c23203c2f7765696768743e387365745f686561705f7061676573040114706167657320010c753634000224f853657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e002823203c7765696768743e202d20604f28312960482d20312073746f726167652077726974652e602d2042617365205765696768743a20312e34303520c2b5735c2d203120777269746520746f20484541505f50414745533c2d203120646967657374206974656d2c23203c2f7765696768743e207365745f636f6465040110636f646528011c5665633c75383e0003306453657420746865206e65772072756e74696d6520636f64652e002823203c7765696768743e31012d20604f2843202b2053296020776865726520604360206c656e677468206f662060636f64656020616e642060536020636f6d706c6578697479206f66206063616e5f7365745f636f64656045012d20312063616c6c20746f206063616e5f7365745f636f6465603a20604f28532960202863616c6c73206073705f696f3a3a6d6973633a3a72756e74696d655f76657273696f6e60207768696368206973342020657870656e73697665292e842d20312073746f726167652077726974652028636f64656320604f28432960292e402d203120646967657374206974656d2e282d2031206576656e742e4d0154686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652c206275742067656e6572616c6c7920746869732069732076657279b8657870656e736976652e2057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e2c23203c2f7765696768743e5c7365745f636f64655f776974686f75745f636865636b73040110636f646528011c5665633c75383e000424190153657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e002823203c7765696768743e8c2d20604f2843296020776865726520604360206c656e677468206f662060636f646560842d20312073746f726167652077726974652028636f64656320604f28432960292e402d203120646967657374206974656d2e282d2031206576656e742e550154686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652e2057652077696c6c207472656174207468697320617320612066756c6c48626c6f636b2e2023203c2f7765696768743e5c7365745f6368616e6765735f747269655f636f6e66696704014c6368616e6765735f747269655f636f6e6669674001804f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e0005289c53657420746865206e6577206368616e676573207472696520636f6e66696775726174696f6e2e002823203c7765696768743e202d20604f28312960ac2d20312073746f72616765207772697465206f722064656c6574652028636f64656320604f28312960292ed42d20312063616c6c20746f20606465706f7369745f6c6f67603a20557365732060617070656e6460204150492c20736f204f283129602d2042617365205765696768743a20372e32313820c2b573302d204442205765696768743aa4202020202d205772697465733a204368616e67657320547269652c2053797374656d204469676573742c23203c2f7765696768743e2c7365745f73746f726167650401146974656d737d0401345665633c4b657956616c75653e0006206853657420736f6d65206974656d73206f662073746f726167652e002823203c7765696768743e902d20604f2849296020776865726520604960206c656e677468206f6620606974656d7360782d206049602073746f72616765207772697465732028604f28312960292e702d2042617365205765696768743a20302e353638202a206920c2b573642d205772697465733a204e756d626572206f66206974656d732c23203c2f7765696768743e306b696c6c5f73746f726167650401106b657973850401205665633c4b65793e000720744b696c6c20736f6d65206974656d732066726f6d2073746f726167652e002823203c7765696768743ef82d20604f28494b296020776865726520604960206c656e677468206f6620606b6579736020616e6420604b60206c656e677468206f66206f6e65206b6579602d206049602073746f726167652064656c6574696f6e732e6c2d2042617365205765696768743a202e333738202a206920c2b573642d205772697465733a204e756d626572206f66206974656d732c23203c2f7765696768743e2c6b696c6c5f70726566697808011870726566697828010c4b657900011c7375626b65797310010c75333200082c11014b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e0039012a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e6465723d0174686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e002823203c7765696768743ed82d20604f285029602077686572652060506020616d6f756e74206f66206b657973207769746820707265666978206070726566697860602d206050602073746f726167652064656c6574696f6e732e702d2042617365205765696768743a20302e383334202a205020c2b5737c2d205772697465733a204e756d626572206f66207375626b657973202b20312c23203c2f7765696768743e4472656d61726b5f776974685f6576656e7404011872656d61726b28011c5665633c75383e000918a44d616b6520736f6d65206f6e2d636861696e2072656d61726b20616e6420656d6974206576656e742e002823203c7765696768743eb42d20604f28622960207768657265206220697320746865206c656e677468206f66207468652072656d61726b2e282d2031206576656e742e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e7d040000028104008104000004082828008504000002280089040c306672616d655f73797374656d186c696d69747330426c6f636b5765696768747300000c0128626173655f626c6f636b2001185765696768740001246d61785f626c6f636b2001185765696768740001247065725f636c6173738d0401845065724469737061746368436c6173733c57656967687473506572436c6173733e00008d040c346672616d655f737570706f72741c77656967687473405065724469737061746368436c617373040454019104000c01186e6f726d616c910401045400012c6f7065726174696f6e616c91040104540001246d616e6461746f72799104010454000091040c306672616d655f73797374656d186c696d6974733c57656967687473506572436c6173730000100138626173655f65787472696e7369632001185765696768740001346d61785f65787472696e736963f401384f7074696f6e3c5765696768743e0001246d61785f746f74616cf401384f7074696f6e3c5765696768743e0001207265736572766564f401384f7074696f6e3c5765696768743e000095040c306672616d655f73797374656d186c696d6974732c426c6f636b4c656e677468000004010c6d6178990401545065724469737061746368436c6173733c7533323e000099040c346672616d655f737570706f72741c77656967687473405065724469737061746368436c6173730404540110000c01186e6f726d616c1001045400012c6f7065726174696f6e616c100104540001246d616e6461746f72791001045400009d040c346672616d655f737570706f72741c776569676874733c52756e74696d65446257656967687400000801107265616420011857656967687400011477726974652001185765696768740000a104082873705f76657273696f6e3852756e74696d6556657273696f6e00001c0124737065635f6e616d657504013452756e74696d65537472696e67000124696d706c5f6e616d657504013452756e74696d65537472696e67000144617574686f72696e675f76657273696f6e10010c753332000130737065635f76657273696f6e10010c753332000130696d706c5f76657273696f6e10010c75333200011061706973a504011c4170697356656300014c7472616e73616374696f6e5f76657273696f6e10010c7533320000a504040c436f7704045401a904000400a904000000a904000002ad0400ad0400000408b1041000b104000003080000000800b5040c306672616d655f73797374656d1870616c6c6574144572726f720404540001143c496e76616c6964537065634e616d650000081101546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e685370656356657273696f6e4e65656473546f496e63726561736500010841015468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e00020cec4661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e0009014569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e4c4e6f6e44656661756c74436f6d706f73697465000304fc537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e3c4e6f6e5a65726f526566436f756e74000404350154686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e046c4572726f7220666f72207468652053797374656d2070616c6c6574b90410346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401bd04045300000400c50401185665633c543e0000bd0400000408c1042000c1040c4473705f636f6e73656e7375735f626162650c617070185075626c696300000400bd01013c737232353531393a3a5075626c69630000c504000002bd0400c904084873705f636f6e73656e7375735f736c6f747310536c6f740000040020010c7536340000cd040c4473705f636f6e73656e7375735f626162651c64696765737473504e657874436f6e66696744657363726970746f7200010408563108010463d1040128287536342c2075363429000134616c6c6f7765645f736c6f7473d5040130416c6c6f776564536c6f747300010000d10400000408202000d504084473705f636f6e73656e7375735f6261626530416c6c6f776564536c6f747300010c305072696d617279536c6f7473000000745072696d617279416e645365636f6e64617279506c61696e536c6f74730001006c5072696d617279416e645365636f6e64617279565246536c6f747300020000d90410346672616d655f737570706f72741c73746f726167652c626f756e6465645f76656328426f756e6465645665630804540104045300000400dd0401185665633c543e0000dd040000020400e10404184f7074696f6e04045401040108104e6f6e6500000010536f6d650400040000010000e504084473705f636f6e73656e7375735f62616265584261626545706f6368436f6e66696775726174696f6e000008010463d1040128287536342c2075363429000134616c6c6f7765645f736c6f7473d5040130416c6c6f776564536c6f74730000e9040c2c70616c6c65745f626162651870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66ed040184426f783c45717569766f636174696f6e50726f6f663c543a3a4865616465723e3e00013c6b65795f6f776e65725f70726f6f66f9040140543a3a4b65794f776e657250726f6f6600001009015265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667905017468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f660d01616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c306265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66ed040184426f783c45717569766f636174696f6e50726f6f663c543a3a4865616465723e3e00013c6b65795f6f776e65725f70726f6f66f9040140543a3a4b65794f776e657250726f6f6600012009015265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667905017468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f660d01616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c306265207265706f727465642e0d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e48706c616e5f636f6e6669675f6368616e6765040118636f6e666967cd0401504e657874436f6e66696744657363726970746f720002105d01506c616e20616e2065706f636820636f6e666967206368616e67652e205468652065706f636820636f6e666967206368616e6765206973207265636f7264656420616e642077696c6c20626520656e6163746564206f6e5101746865206e6578742063616c6c20746f2060656e6163745f65706f63685f6368616e6765602e2054686520636f6e6669672077696c6c20626520616374697661746564206f6e652065706f63682061667465722e59014d756c7469706c652063616c6c7320746f2074686973206d6574686f642077696c6c207265706c61636520616e79206578697374696e6720706c616e6e656420636f6e666967206368616e6765207468617420686164546e6f74206265656e20656e6163746564207965742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632eed04084873705f636f6e73656e7375735f736c6f74734445717569766f636174696f6e50726f6f66081848656164657201f10408496401c104001001206f6666656e646572c10401084964000110736c6f74c9040110536c6f7400013066697273745f686561646572f10401184865616465720001347365636f6e645f686561646572f10401184865616465720000f104102873705f72756e74696d651c67656e65726963186865616465721848656164657208184e756d6265720110104861736801f5040014012c706172656e745f68617368240130486173683a3a4f75747075740001186e756d626572710401184e756d62657200012873746174655f726f6f74240130486173683a3a4f757470757400013c65787472696e736963735f726f6f74240130486173683a3a4f75747075740001186469676573742c01504469676573743c486173683a3a4f75747075743e0000f5040c2873705f72756e74696d65187472616974732c426c616b6554776f32353600000000f904082873705f73657373696f6e3c4d656d6265727368697050726f6f6600000c011c73657373696f6e10013053657373696f6e496e646578000128747269655f6e6f646573850401305665633c5665633c75383e3e00013c76616c696461746f725f636f756e7410013856616c696461746f72436f756e740000fd040c2c70616c6c65745f626162651870616c6c6574144572726f7204045400010c60496e76616c696445717569766f636174696f6e50726f6f660000043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c69644b65794f776e65727368697050726f6f66000104310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400020415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a09090901050c4070616c6c65745f74696d657374616d701870616c6c65741043616c6c0404540001040c73657404010c6e6f7705050124543a3a4d6f6d656e7400004054536574207468652063757272656e742074696d652e005501546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6ed470686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e0041015468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e742073706563696669656420627940604d696e696d756d506572696f64602e00d4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e002823203c7765696768743e31012d20604f2831296020284e6f7465207468617420696d706c656d656e746174696f6e73206f6620604f6e54696d657374616d7053657460206d75737420616c736f20626520604f283129602961012d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202862656361757365206f6620604469645570646174653a3a74616b656020696e402020606f6e5f66696e616c697a656029d42d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f736574602e204d75737420626520604f283129602e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e0505000006200009050000040c00181901000d050c3870616c6c65745f696e64696365731870616c6c65741043616c6c04045400011414636c61696d040114696e64657810013c543a3a4163636f756e74496e6465780000489841737369676e20616e2070726576696f75736c7920756e61737369676e656420696e6465782e00dc5061796d656e743a20604465706f736974602069732072657365727665642066726f6d207468652073656e646572206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e00f02d2060696e646578603a2074686520696e64657820746f20626520636c61696d65642e2054686973206d757374206e6f7420626520696e207573652e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e602d204f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e207472616e7366657208010c6e6577000130543a3a4163636f756e744964000114696e64657810013c543a3a4163636f756e74496e6465780001505d0141737369676e20616e20696e64657820616c7265616479206f776e6564206279207468652073656e64657220746f20616e6f74686572206163636f756e742e205468652062616c616e6365207265736572766174696f6eb86973206566666563746976656c79207472616e7366657272656420746f20746865206e6577206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0025012d2060696e646578603a2074686520696e64657820746f2062652072652d61737369676e65642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e5d012d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e642d204f6e65207472616e73666572206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743ae02020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e7429e42020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e74292c23203c2f7765696768743e1066726565040114696e64657810013c543a3a4163636f756e74496e646578000248944672656520757020616e20696e646578206f776e6564206279207468652073656e6465722e005d015061796d656e743a20416e792070726576696f7573206465706f73697420706c6163656420666f722074686520696e64657820697320756e726573657276656420696e207468652073656e646572206163636f756e742e005501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206f776e2074686520696e6465782e000d012d2060696e646578603a2074686520696e64657820746f2062652066726565642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e0084456d6974732060496e646578467265656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e602d204f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e38666f7263655f7472616e736665720c010c6e6577000130543a3a4163636f756e744964000114696e64657810013c543a3a4163636f756e74496e646578000118667265657a6519010110626f6f6c0003545501466f72636520616e20696e64657820746f20616e206163636f756e742e205468697320646f65736e277420726571756972652061206465706f7369742e2049662074686520696e64657820697320616c7265616479e868656c642c207468656e20616e79206465706f736974206973207265696d62757273656420746f206974732063757272656e74206f776e65722e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e00a42d2060696e646578603a2074686520696e64657820746f206265202872652d2961737369676e65642e5d012d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e41012d2060667265657a65603a2069662073657420746f206074727565602c2077696c6c20667265657a652074686520696e64657820736f2069742063616e6e6f74206265207472616e736665727265642e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e782d20557020746f206f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743af42020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e657229f82020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e6572292c23203c2f7765696768743e18667265657a65040114696e64657810013c543a3a4163636f756e74496e6465780004484101467265657a6520616e20696e64657820736f2069742077696c6c20616c7761797320706f696e7420746f207468652073656e646572206163636f756e742e205468697320636f6e73756d657320746865206465706f7369742e005901546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d757374206861766520616c6e6f6e2d66726f7a656e206163636f756e742060696e646578602e00ac2d2060696e646578603a2074686520696e64657820746f2062652066726f7a656e20696e20706c6163652e0088456d6974732060496e64657846726f7a656e60206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e702d20557020746f206f6e6520736c617368206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e11050c3870616c6c65745f696e64696365731870616c6c6574144572726f720404540001142c4e6f7441737369676e65640000048c54686520696e64657820776173206e6f7420616c72656164792061737369676e65642e204e6f744f776e6572000104a454686520696e6465782069732061737369676e656420746f20616e6f74686572206163636f756e742e14496e5573650002047054686520696e64657820776173206e6f7420617661696c61626c652e2c4e6f745472616e73666572000304c854686520736f7572636520616e642064657374696e6174696f6e206163636f756e747320617265206964656e746963616c2e245065726d616e656e74000404d054686520696e646578206973207065726d616e656e7420616e64206d6179206e6f742062652066726565642f6368616e6765642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a09090915050000021905001905084470616c6c65745f617574686f727368697038556e636c65456e7472794974656d0c2c426c6f636b4e756d62657201101048617368012418417574686f72010001083c496e636c7573696f6e486569676874040010012c426c6f636b4e756d62657200000014556e636c650800240110486173680000090101384f7074696f6e3c417574686f723e000100001d050c4470616c6c65745f617574686f72736869701870616c6c65741043616c6c040454000104287365745f756e636c65730401286e65775f756e636c6573210501385665633c543a3a4865616465723e0000046050726f76696465206120736574206f6620756e636c65732e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e2105000002f1040025050c4470616c6c65745f617574686f72736869701870616c6c6574144572726f7204045400011c48496e76616c6964556e636c65506172656e740000048854686520756e636c6520706172656e74206e6f7420696e2074686520636861696e2e40556e636c6573416c726561647953657400010480556e636c657320616c72656164792073657420696e2074686520626c6f636b2e34546f6f4d616e79556e636c657300020440546f6f206d616e7920756e636c65732e3047656e65736973556e636c650003045454686520756e636c652069732067656e657369732e30546f6f48696768556e636c650004047c54686520756e636c6520697320746f6f206869676820696e20636861696e2e50556e636c65416c7265616479496e636c756465640005047854686520756e636c6520697320616c726561647920696e636c756465642e204f6c64556e636c65000604b454686520756e636c652069736e277420726563656e7420656e6f75676820746f20626520696e636c756465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a09090929050000022d05002d05083c70616c6c65745f62616c616e6365732c42616c616e63654c6f636b041c42616c616e63650118000c01086964b10401384c6f636b4964656e746966696572000118616d6f756e7418011c42616c616e636500011c726561736f6e733105011c526561736f6e73000031051064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e6365731c526561736f6e7300010c0c466565000000104d6973630001000c416c6c000200003505083c70616c6c65745f62616c616e6365731043616c6c040454000118207472616e73666572080110646573743905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565cd01011c42616c616e6365000058d45472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e000501607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e1d0149742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e001501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e002823203c7765696768743e2d012d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72c82020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e65012d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e004852656c617465642066756e6374696f6e733a004d0120202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e290120202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c206361757365d0202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e842d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d41012d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429dc2d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e487472616e736665725f776974685f6d656d6f0c0110646573743905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565cd01011c42616c616e63650001106d656d6f8001304f7074696f6e3c4d656d6f3e000120fc5472616e7366657220746865206e61746976652063757272656e63792077697468207468652068656c70206f66206964656e74696669657220737472696e67ec746869732066756e6374696f6e616c6974792063616e2068656c7020746f20646966666572656e746961746520746865207472616e73666572732e002823203c7765696768743e41012d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429dc2d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e906465706f7369745f626c6f636b5f7265776172645f726573657276655f62616c616e636504011476616c7565cd01011c42616c616e6365000204dc4d6f766520736f6d6520504f4c59582066726f6d2062616c616e6365206f662073656c6620746f2062616c616e6365206f66204252522e2c7365745f62616c616e63650c010c77686f3905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263650001206e65775f66726565cd01011c42616c616e63650001306e65775f7265736572766564cd01011c42616c616e636500031890536574207468652062616c616e636573206f66206120676976656e206163636f756e742e001d01546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c0501616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e00b0546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e38666f7263655f7472616e736665720c0118736f757263653905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365000110646573743905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565cd01011c42616c616e636500041c4d0145786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d6179206265287370656369666965642e002823203c7765696768743e3d012d2053616d65206173207472616e736665722c20627574206164646974696f6e616c207265616420616e6420777269746520626563617573652074686520736f75726365206163636f756e742069738c20206e6f7420617373756d656420746f20626520696e20746865206f7665726c61792e2c23203c2f7765696768743e506275726e5f6163636f756e745f62616c616e6365040118616d6f756e7418011c42616c616e636500050429014275726e732074686520676976656e20616d6f756e74206f6620746f6b656e732066726f6d207468652063616c6c6572277320667265652c20756e6c6f636b65642062616c616e63652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e39050c2873705f72756e74696d65306d756c746961646472657373304d756c74694164647265737308244163636f756e7449640100304163636f756e74496e6465780110011408496404000001244163636f756e74496400000014496e6465780400710401304163636f756e74496e6465780001000c526177040028011c5665633c75383e0002002441646472657373333204000401205b75383b2033325d000300244164647265737332300400f90101205b75383b2032305d000400003d05083c70616c6c65745f62616c616e636573144572726f72040454000114544c69717569646974795265737472696374696f6e73000004c44163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c204f766572666c6f7700010470476f7420616e206f766572666c6f7720616674657220616464696e674c496e73756666696369656e7442616c616e63650002047442616c616e636520746f6f206c6f7720746f2073656e642076616c7565484578697374656e7469616c4465706f736974000304e856616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369744852656365697665724364644d697373696e6700040488526563656976657220646f6573206e6f74206861766520612076616c6964204344440041050c3473705f61726974686d657469632c66697865645f706f696e7424466978656455313238000004001801107531323800004505086870616c6c65745f7472616e73616374696f6e5f7061796d656e742052656c6561736573000108245631416e6369656e740000000856320001000049050000024d05004d050c346672616d655f737570706f72741c7765696768747358576569676874546f466565436f656666696369656e74041c42616c616e6365011800100134636f6566665f696e746567657218011c42616c616e6365000128636f6566665f667261638d01011c50657262696c6c0001206e6567617469766519010110626f6f6c0001186465677265650801087538000051050c4c706f6c796d6573685f7072696d697469766573206964656e74697479244469645265636f726404244163636f756e74496401000004012c7072696d6172795f6b6579090101444f7074696f6e3c4163636f756e7449643e000055050000040859055d050059050c3c70616c6c65745f6964656e746974791474797065732c436c61696d3173744b657900000801187461726765747c01284964656e746974794964000128636c61696d5f74797065cd020124436c61696d5479706500005d050c3c70616c6c65745f6964656e746974791474797065732c436c61696d326e644b657900000801186973737565727c01284964656e74697479496400011473636f7065610501344f7074696f6e3c53636f70653e0000610504184f7074696f6e04045401fc0108104e6f6e6500000010536f6d650400fc000001000065050c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579244b65795265636f726404244163636f756e7449640100010c285072696d6172794b657904007c01284964656e746974794964000000305365636f6e646172794b657908007c01284964656e746974794964000098012c5065726d697373696f6e73000100444d756c74695369675369676e65724b657904000001244163636f756e744964000200006905000004087c00006d05000004086d01200071050c4c706f6c796d6573685f7072696d69746976657334617574686f72697a6174696f6e34417574686f72697a6174696f6e08244163636f756e7449640100184d6f6d656e74012000100148617574686f72697a6174696f6e5f646174610d010170417574686f72697a6174696f6e446174613c4163636f756e7449643e000134617574686f72697a65645f62797c01284964656e746974794964000118657870697279f401384f7074696f6e3c4d6f6d656e743e00011c617574685f696420010c75363400007505000004087c20007905083c70616c6c65745f6964656e746974791c56657273696f6e00000400080108753800007d05083c70616c6c65745f6964656e746974791043616c6c040454000164406364645f72656769737465725f6469640801387461726765745f6163636f756e74000130543a3a4163636f756e7449640001387365636f6e646172795f6b65797390017c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e00002cb8526567697374657220607461726765745f6163636f756e746020776974682061206e6577204964656e746974792e002423204661696c75726545012d20606f726967696e602068617320746f206265206120616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792ef42d2045787465726e616c207365636f6e64617279206b6579732063616e206265206c696e6b656420746f206a757374206f6e65206964656e746974792e00202320576569676874c060375f3030305f3030305f303030202b203630305f303030202a207365636f6e646172795f6b6579732e6c656e28296054696e76616c69646174655f6364645f636c61696d730c010c6364647c01284964656e74697479496400013064697361626c655f66726f6d200124543a3a4d6f6d656e74000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001102101496e76616c69646174657320616e7920636c61696d2067656e6572617465642062792060636464602066726f6d206064697361626c655f66726f6d602074696d657374616d70732e009c596f752063616e20616c736f20646566696e6520616e2065787069726174696f6e2074696d652c6d0177686963682077696c6c20696e76616c696461746520616c6c20636c61696d732067656e657261746564206279207468617420606364646020616e642072656d6f766520697420617320434444206d656d6265722067726f75702e6472656d6f76655f7365636f6e646172795f6b6579735f6f6c640401386b6579735f746f5f72656d6f7665690101705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000204e0446570726563617465642e2020506c6561736520757365206072656d6f76655f7365636f6e646172795f6b6579736020696e73746561642e486163636570745f7072696d6172795f6b6579080140726f746174696f6e5f617574685f696420010c7536340001506f7074696f6e616c5f6364645f617574685f6964f4012c4f7074696f6e3c7536343e000334650143616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e6501746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f766564250174686973206368616e676520286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e005d015468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f7264756e6c696e6b656420746f20616e79206964656e746974792e005d01446966666572732066726f6d20726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727920696e20746861742069742077696c6c20756e6c696e6b20746865206f6c64207072696d617279206b6579a4696e7374656164206f66206c656176696e672069742061732061207365636f6e64617279206b65792e002c2320417267756d656e74731d012a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e42a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f7669646572986368616e67655f6364645f726571756972656d656e745f666f725f6d6b5f726f746174696f6e040134617574685f726571756972656419010110626f6f6c00041435015365742069662043444420617574686f72697a6174696f6e20697320726571756972656420666f72207570646174696e67207072696d617279206b6579206f6620616e206964656e746974792e7843616c6c61626c652076696120726f6f742028676f7665726e616e636529002c2320417267756d656e7473cc2a2060617574685f7265717569726564602043444420417574686f72697a6174696f6e207265717569726564206f72206e6f74506a6f696e5f6964656e746974795f61735f6b657904011c617574685f696420010c753634000504904a6f696e20616e206964656e746974792061732061207365636f6e64617279206b65792e546c656176655f6964656e746974795f61735f6b65790006048c4c6561766520746865207365636f6e64617279206b65792773206964656e746974792e246164645f636c61696d0c01187461726765747c01284964656e746974794964000114636c61696df80114436c61696d000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e00070cc4416464732061206e657720636c61696d207265636f7264206f7220656469747320616e206578697374696e67206f6e652e00a84f6e6c792063616c6c6564206279206469645f6973737565722773207365636f6e64617279206b65792e307265766f6b655f636c61696d0801187461726765747c01284964656e746974794964000114636c61696df80114436c61696d000804944d61726b73207468652073706563696669656420636c61696d206173207265766f6b65642e607365745f7065726d697373696f6e5f746f5f7369676e657208010c6b65796d01015c5369676e61746f72793c543a3a4163636f756e7449643e0001147065726d7398012c5065726d697373696f6e730009040101446570726563617465642e2020506c656173652075736520607365745f7365636f6e646172795f6b65795f7065726d697373696f6e736020696e73746561642eac706c616365686f6c6465725f6c65676163795f7365745f7065726d697373696f6e5f746f5f7369676e6572000a04e8506c616365686f6c64657220666f722072656d6f76656420606c65676163795f7365745f7065726d697373696f6e5f746f5f7369676e6572602e54667265657a655f7365636f6e646172795f6b657973000b10c449742064697361626c657320616c6c207365636f6e64617279206b657973206174206064696460206964656e746974792e002023204572726f7273005c756e667265657a655f7365636f6e646172795f6b657973000c04dc52652d656e61626c657320616c6c207365636f6e64617279206b657973206f66207468652063616c6c65722773206964656e746974792e446164645f617574686f72697a6174696f6e0c01187461726765746d01015c5369676e61746f72793c543a3a4163636f756e7449643e000110646174610d01017c417574686f72697a6174696f6e446174613c543a3a4163636f756e7449643e000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e000d04584164647320616e20617574686f72697a6174696f6e2e5072656d6f76655f617574686f72697a6174696f6e0c01187461726765746d01015c5369676e61746f72793c543a3a4163636f756e7449643e00011c617574685f696420010c7536340001445f617574685f6973737565725f7061797319010110626f6f6c000e086452656d6f76657320616e20617574686f72697a6174696f6e2e75015f617574685f6973737565725f706179732064657465726d696e657320776865746865722074686520697373756572206f662074686520617574686f7269736174696f6e207061797320746865207472616e73616374696f6e20666565a46164645f7365636f6e646172795f6b6579735f776974685f617574686f72697a6174696f6e5f6f6c6408013c6164646974696f6e616c5f6b657973810501a45665633c5365636f6e646172794b6579576974684175746856313c543a3a4163636f756e7449643e3e000128657870697265735f6174200124543a3a4d6f6d656e74000f042101446570726563617465642e2020506c656173652075736520606164645f7365636f6e646172795f6b6579735f776974685f617574686f72697a6174696f6e6020696e73746561642e746164645f696e766573746f725f756e697175656e6573735f636c61696d1001187461726765747c01284964656e746974794964000114636c61696df80114436c61696d00011470726f6f669105014c496e766573746f725a4b50726f6f6644617461000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e00105009014164642060436c61696d3a3a496e766573746f72556e697175656e6573736020636c61696d20666f72206120676976656e20746172676574206964656e746974792e002823203c7765696768743e410120576569676874206f662074686520746869732065787472696e73696320697320646570656e64206f6e2074686520636f6d7075746174696f6e2074686174207573656420746f2076616c69646174652501207468652070726f6f66206f6620636c61696d2c2077686963682077696c6c206265206120636f6e7374616e7420696e646570656e64656e74206f66207573657220696e707574732e2c23203c2f7765696768743e002c2320417267756d656e7473b5012a206f726967696e202d2057686f2070726f76696465732074686520636c61696d20746f2074686520757365723f20496e207468697320636173652c20697427732074686520757365722773206163636f756e742069642061732074686520757365722070726f76696465732ee42a20746172676574202d20604964656e7469747949646020746f2077686963682074686520636c61696d20676574732061737369676e65642eb42a20636c61696d202d2060496e766573746f72556e697175656e6573736020636c61696d2064657461696c732eac2a2070726f6f66202d20546f2076616c6964617465207468652073656c66206174746573746174696f6e2e6c2a20657870697279202d20457870697279206f6620636c61696d2e002023204572726f72732d012a20604469644d757374416c7265616479457869737460205461726765742073686f756c6420616c7265616479206265656e20612070617274206f66207468652065636f73797374656d2e91012a2060436c61696d56617269616e744e6f74416c6c6f77656460205768656e206f726967696e20747279696e6720746f207061737320636c61696d2076617269616e74206f74686572207468616e2060496e766573746f72556e697175656e657373602eb9012a2060436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f77656460205768656e2069737375657220697320646966666572656e742066726f6d20746172676574206f72204344445f494420697320696e76616c696420666f7220676976656e20757365722eac2a2060496e76616c696453636f7065436c61696d205768656e2070726f6f6620697320696e76616c69642eec2a2060496e76616c6964434444496460207768656e20796f7520617265206e6f7420746865206f776e6572206f662074686174204344445f49442e4067635f6164645f6364645f636c61696d0401187461726765747c01284964656e7469747949640011044501417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c20616464732061206e65772063646420636c61696d207265636f72642e4c67635f7265766f6b655f6364645f636c61696d0401187461726765747c01284964656e7469747949640012046901417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c2072656d6f76657320616e206578697374696e672063646420636c61696d207265636f72642e806164645f696e766573746f725f756e697175656e6573735f636c61696d5f76321401187461726765747c01284964656e74697479496400011473636f7065fc011453636f7065000114636c61696df80114436c61696d00011470726f6f66a105013c53636f7065436c61696d50726f6f66000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e001300547265766f6b655f636c61696d5f62795f696e6465780c01187461726765747c01284964656e746974794964000128636c61696d5f74797065cd020124436c61696d5479706500011473636f7065610501344f7074696f6e3c53636f70653e001420f5015265766f6b6573206120737065636966696320636c61696d207573696e6720697473205b436c61696d20556e6971756520496e6465785d282f70616c6c65745f6964656e746974792f696e6465782e68746d6c23636c61696d2d756e697175652d696e6465782920636f6d706f7365642062792060746172676574602c6860636c61696d5f74797065602c20616e64206073636f7065602e000501506c65617365206e6f7465207468617420606f726967696e60206d7573742062652074686520697373756572206f66207468652074617267657420636c61696d2e002023204572726f72734d012d20605461726765744861734e6f6e5a65726f42616c616e6365417453636f7065496460207768656e20796f752074727920746f207265766f6b6520612060496e766573746f72556e697175656e6573732a602501636c61696d2c20616e64206074617267657460206964656e74697479207374696c6c206861766520616e792062616c616e6365206f6e2074686520676976656e206073636f7065602e7c726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727908011c617574685f696420010c7536340001506f7074696f6e616c5f6364645f617574685f6964f4012c4f7074696f6e3c7536343e001538650143616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e6501746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f766564290174686973206368616e67652c20286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e005d015468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f7264756e6c696e6b656420746f20616e79206964656e746974792e006101446966666572732066726f6d206163636570745f7072696d6172795f6b657920696e20746861742069742077696c6c206c6561766520746865206f6c64207072696d617279206b65792061732061207365636f6e6461727985016b6579207769746820746865207065726d697373696f6e732073706563696669656420696e2074686520636f72726573706f6e64696e6720526f746174655072696d6172794b6579546f5365636f6e6461727920617574686f72697a6174696f6ea4696e7374656164206f6620756e6c696e6b696e6720746865206f6c64207072696d617279206b65792e002c2320417267756d656e74731d012a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e42a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f7669646572946164645f7365636f6e646172795f6b6579735f776974685f617574686f72697a6174696f6e08013c6164646974696f6e616c5f6b657973c105019c5665633c5365636f6e646172794b657957697468417574683c543a3a4163636f756e7449643e3e000128657870697265735f6174200124543a3a4d6f6d656e74001630bc49742061646473207365636f6e64617279206b65797320746f20746172676574206964656e7469747920606964602e39014b65797320617265206469726563746c7920616464656420746f206964656e7469747920626563617573652065616368206f66207468656d2068617320616e20617574686f72697a6174696f6e2e0028417267756d656e74733ab0202020202d20606f726967696e60205072696d617279206b6579206f662060696460206964656e746974792eec202020202d2060696460204964656e74697479207768657265206e6577207365636f6e64617279206b6579732077696c6c2062652061646465642e6d01202020202d20606164646974696f6e616c5f6b65797360204e6577207365636f6e64617279206974656d732028616e6420746865697220617574686f72697a6174696f6e20646174612920746f2061646420746f2074617267657434202020206964656e746974792e001c4661696c757265b8202020202d2049742063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722ed0202020202d204b6579732073686f756c642062652061626c6520746f206c696e6b656420746f20616e79206964656e746974792e747365745f7365636f6e646172795f6b65795f7065726d697373696f6e7308010c6b6579000130543a3a4163636f756e7449640001147065726d7398012c5065726d697373696f6e7300170cc853657473207065726d697373696f6e7320666f7220616e20737065636966696320607461726765745f6b657960206b65792e0035014f6e6c7920746865207072696d617279206b6579206f6620616e206964656e746974792069732061626c6520746f20736574207365636f6e64617279206b6579207065726d697373696f6e732e5472656d6f76655f7365636f6e646172795f6b6579730401386b6579735f746f5f72656d6f7665ec01445665633c543a3a4163636f756e7449643e001810d452656d6f76657320737065636966696564207365636f6e64617279206b657973206f662061204449442069662070726573656e742e002423204661696c757265a049742063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e810500000285050085051064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479585365636f6e646172794b65795769746841757468563104244163636f756e7449640100000801347365636f6e646172795f6b65798905016c76313a3a5365636f6e646172794b65793c4163636f756e7449643e000138617574685f7369676e61747572658d0501104835313200008905104c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579087631305365636f6e646172794b657904244163636f756e7449640100000801187369676e65726d0101505369676e61746f72793c4163636f756e7449643e00012c7065726d697373696f6e7398012c5065726d697373696f6e7300008d05083c7072696d69746976655f7479706573104835313200000400110201205b75383b2036345d00009105104c706f6c796d6573685f7072696d69746976657354696e766573746f725f7a6b70726f6f665f646174610876314c496e766573746f725a4b50726f6f664461746100000400950501245369676e6174757265000095050c287363686e6f72726b656c107369676e245369676e61747572650000080104529905014c436f6d7072657373656452697374726574746f000104739d0501185363616c6172000099050c40637572766532353531395f64616c656b2472697374726574746f4c436f6d7072657373656452697374726574746f000004000401205b75383b2033325d00009d050c40637572766532353531395f64616c656b187363616c6172185363616c6172000004011462797465730401205b75383b2033325d0000a1050c54636f6e666964656e7469616c5f6964656e7469747930636c61696d5f70726f6f66733c53636f7065436c61696d50726f6f6600000c016470726f6f665f73636f70655f69645f77656c6c666f726d6564a50501245369676e617475726500016c70726f6f665f73636f70655f69645f6364645f69645f6d61746368a905012c5a6b50726f6f664461746100012073636f70655f6964b105013852697374726574746f506f696e740000a5050c54636f6e666964656e7469616c5f6964656e74697479107369676e245369676e61747572650000080104529905014c436f6d7072657373656452697374726574746f000104739d0501185363616c61720000a9050c54636f6e666964656e7469616c5f6964656e7469747930636c61696d5f70726f6f66732c5a6b50726f6f664461746100000c014c6368616c6c656e67655f726573706f6e736573ad0501945b5363616c61723b205a4b5f50524f4f465f444154415f4348475f524553504f4e5345535d00016073756274726163745f65787072657373696f6e735f726573b105013852697374726574746f506f696e74000158626c696e6465645f73636f70655f6469645f68617368b105013852697374726574746f506f696e740000ad05000003020000009d0500b1050c40637572766532353531395f64616c656b2472697374726574746f3852697374726574746f506f696e7400000400b505013045647761726473506f696e740000b5050c40637572766532353531395f64616c656b1c656477617264733045647761726473506f696e74000010010458b90501304669656c64456c656d656e7400010459b90501304669656c64456c656d656e740001045ab90501304669656c64456c656d656e7400010454b90501304669656c64456c656d656e740000b9051840637572766532353531395f64616c656b1c6261636b656e641873657269616c0c753634146669656c64384669656c64456c656d656e74353100000400bd0501205b7536343b20355d0000bd05000003050000002000c105000002c50500c5051064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479505365636f6e646172794b6579576974684175746804244163636f756e7449640100000801347365636f6e646172795f6b657994015c5365636f6e646172794b65793c4163636f756e7449643e000138617574685f7369676e61747572658d050110483531320000c905083c70616c6c65745f6964656e74697479144572726f7204045400018434416c72656164794c696e6b6564000004dc4f6e65207365636f6e64617279206f72207072696d617279206b65792063616e206f6e6c792062656c6f6e6720746f206f6e6520444944584d697373696e6743757272656e744964656e74697479000104ac4d697373696e672063757272656e74206964656e74697479206f6e20746865207472616e73616374696f6e30556e617574686f72697a6564000204bc5369676e61746f7279206973206e6f742070726520617574686f72697a656420627920746865206964656e7469747944496e76616c69644163636f756e744b6579000304a84163636f756e742049642063616e6e6f74206265206578747261637465642066726f6d207369676e65725c556e417574686f72697a656443646450726f76696465720004049c4f6e6c792043444420736572766963652070726f7669646572732061726520616c6c6f7765642e74496e76616c6964417574686f72697a6174696f6e46726f6d4f776e6572000504a0416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865206f776e65722e8c496e76616c6964417574686f72697a6174696f6e46726f6d43646450726f7669646572000604bc416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865204344442070726f76696465722e644e6f7443646450726f76696465724174746573746174696f6e000704b84174746573746174696f6e20776173206e6f7420627920612043444420736572766963652070726f76696465722e70417574686f72697a6174696f6e734e6f74466f7253616d6544696473000804a0417574686f72697a6174696f6e7320617265206e6f7420666f72207468652073616d65204449442e4c4469644d757374416c726561647945786973740009046c54686520444944206d75737420616c72656164792065786973742e8043757272656e744964656e7469747943616e6e6f744265466f72776172646564000a044d0143757272656e74206964656e746974792063616e6e6f7420626520666f727761726465642c206974206973206e6f742061207365636f6e64617279206b6579206f6620746172676574206964656e746974792e50417574686f72697a6174696f6e45787069726564000b049c546865206f6666636861696e20617574686f72697a6174696f6e2068617320657870697265642e385461726765744861734e6f436464000c0480546865207461726765742044494420686173206e6f2076616c6964204344442e6c417574686f72697a6174696f6e4861734265656e5265766f6b6564000d04a8417574686f72697a6174696f6e20686173206265656e206578706c696369746c79207265766f6b65642e74496e76616c6964417574686f72697a6174696f6e5369676e6174757265000e048c416e20696e76616c696420617574686f72697a6174696f6e207369676e61747572652e344b65794e6f74416c6c6f776564000f04d454686973206b6579206973206e6f7420616c6c6f77656420746f2065786563757465206120676976656e206f7065726174696f6e2e344e6f745072696d6172794b657900100461014f6e6c7920746865207072696d617279206b657920697320616c6c6f77656420746f207265766f6b6520616e204964656e74697479205369676e61746f7279206f66662d636861696e20617574686f72697a6174696f6e2e3c446964446f65734e6f7445786973740011045c5468652044494420646f6573206e6f742065786973742e40446964416c72656164794578697374730012045c5468652044494420616c7265616479206578697374732e785365636f6e646172794b657973436f6e7461696e5072696d6172794b6579001304ac546865207365636f6e64617279206b65797320636f6e7461696e20746865207072696d617279206b65792e444661696c6564546f436861726765466565001404a0436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e284e6f74415369676e6572001504d85369676e6572206973206e6f742061207365636f6e64617279206b6579206f66207468652070726f7669646564206964656e746974796c43616e6e6f744465636f64655369676e65724163636f756e744964001604150143616e6e6f7420636f6e7665727420612060543a3a4163636f756e7449646020746f2060416e795369676e61747572653a3a5369676e65723a3a4163636f756e744964602e484d756c746953696748617342616c616e636500170421014d756c74697369672063616e206e6f7420626520756e6c696e6b65642066726f6d20616e206964656e74697479207768696c65206974207374696c6c20686f6c647320504f4c595880436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f7765640018040501436f6e666964656e7469616c2053636f706520636c61696d732063616e20626520616464656420627920616e204964656e7469747920746f2069742d73656c662e44496e76616c696453636f7065436c61696d001904bc4164646974696f6e206f662061206e65772073636f706520636c61696d206765747320696e76616c6964617465642e58436c61696d56617269616e744e6f74416c6c6f776564001a04e454727920746f20616464206120636c61696d2076617269616e74207573696e6720756e2d64657369676e617465642065787472696e7369632e805461726765744861734e6f6e5a65726f42616c616e6365417453636f70654964001b04510154727920746f2064656c6574652074686520495520636c61696d206576656e207768656e20746865207573657220686173206e6f6e207a65726f2062616c616e636520617420676976656e2073636f706549642e6443444449644e6f74556e69717565466f724964656e74697479001c041d0143444449642073686f756c6420626520756e6971756520262073616d652077697468696e20616c6c2063646420636c61696d7320706f737365737365642062792061204449442e30496e76616c69644344444964001d0409014e6f6e2073797374656d61746963204344442070726f7669646572732063616e206e6f74206372656174652064656661756c74206364645f696420636c61696d732e7c436c61696d416e6450726f6f6656657273696f6e73446f4e6f744d61746368001e049c436c61696d20616e642050726f6f662076657273696f6e732061726520646966666572656e742e544163636f756e744b657949734265696e6755736564001f04d0546865206163636f756e74206b6579206973206265696e6720757365642c2069742063616e277420626520756e6c696e6b65642e48437573746f6d53636f7065546f6f4c6f6e670020086c4120637573746f6d2073636f706520697320746f6f206c6f6e672e9c49742063616e206174206d6f737420626520603332602063686172616374657273206c6f6e672e00cd05000002d10500d1051064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f757038496e6163746976654d656d62657204184d6f6d656e740120000c010869647c01284964656e74697479496400013864656163746976617465645f61742001184d6f6d656e74000118657870697279f401384f7074696f6e3c4d6f6d656e743e0000d505083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001086174f401444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572732501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ed905083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00dd050c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d651043616c6c0001a41853797374656d0400790401ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53797374656d2c2052756e74696d653e00000010426162650400e90401a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426162652c2052756e74696d653e0001002454696d657374616d700400010501b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54696d657374616d702c2052756e74696d653e0002001c496e646963657304000d0501b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496e64696365732c2052756e74696d653e00030028417574686f727368697004001d0501bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c417574686f72736869702c2052756e74696d653e0004002042616c616e6365730400350501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c42616c616e6365732c2052756e74696d653e000500204964656e7469747904007d0501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4964656e746974792c2052756e74696d653e0007004c4364645365727669636550726f7669646572730400d50501e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4364645365727669636550726f7669646572732c2052756e74696d653e00080044506f6c796d657368436f6d6d69747465650400e10501d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f6c796d657368436f6d6d69747465652c2052756e74696d653e0009004c436f6d6d69747465654d656d626572736869700400e50501e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6d6d69747465654d656d626572736869702c2052756e74696d653e000a0048546563686e6963616c436f6d6d69747465650400e90501dd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546563686e6963616c436f6d6d69747465652c2052756e74696d653e000b0070546563686e6963616c436f6d6d69747465654d656d626572736869700400ed0501050273656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546563686e6963616c436f6d6d69747465654d656d626572736869702c2052756e74696d653e000c004055706772616465436f6d6d69747465650400f10501d50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c55706772616465436f6d6d69747465652c2052756e74696d653e000d006855706772616465436f6d6d69747465654d656d626572736869700400f50501fd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c55706772616465436f6d6d69747465654d656d626572736869702c2052756e74696d653e000e00204d756c74695369670400f90501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d756c74695369672c2052756e74696d653e000f00184272696467650400fd0501ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4272696467652c2052756e74696d653e0010001c5374616b696e6704000d0601b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5374616b696e672c2052756e74696d653e0011001c53657373696f6e0400010701b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53657373696f6e2c2052756e74696d653e0013001c4772616e64706104000d0701b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4772616e6470612c2052756e74696d653e00150020496d4f6e6c696e650400390701b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496d4f6e6c696e652c2052756e74696d653e001700105375646f0400590701a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5375646f2c2052756e74696d653e00190014417373657404005d0701a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c41737365742c2052756e74696d653e001a004c4361706974616c446973747269627574696f6e04007d0701e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4361706974616c446973747269627574696f6e2c2052756e74696d653e001b0028436865636b706f696e740400850701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436865636b706f696e742c2052756e74696d653e001c0044436f6d706c69616e63654d616e6167657204008d0701d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6d706c69616e63654d616e616765722c2052756e74696d653e001d003c436f72706f72617465416374696f6e0400910701d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f72706f72617465416374696f6e2c2052756e74696d653e001e003c436f72706f7261746542616c6c6f740400a90701d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f72706f7261746542616c6c6f742c2052756e74696d653e001f0010506970730400ad0701a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506970732c2052756e74696d653e00210024506f7274666f6c696f0400bd0701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f7274666f6c696f2c2052756e74696d653e0022002c50726f746f636f6c4665650400c90701c10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50726f746f636f6c4665652c2052756e74696d653e002300245363686564756c65720400d10701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5363686564756c65722c2052756e74696d653e00240028536574746c656d656e740400d90701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c536574746c656d656e742c2052756e74696d653e00250028537461746973746963730400ed0701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c537461746973746963732c2052756e74696d653e0026000c53746f0400010801a10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53746f2c2052756e74696d653e0027002054726561737572790400110801b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54726561737572792c2052756e74696d653e0028001c5574696c69747904001d0801b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5574696c6974792c2052756e74696d653e00290010426173650400290801a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426173652c2052756e74696d653e002a003845787465726e616c4167656e747304002d0801cd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c45787465726e616c4167656e74732c2052756e74696d653e002b001c52656c617965720400310801b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c52656c617965722c2052756e74696d653e002c001c526577617264730400350801b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c526577617264732c2052756e74696d653e002d0024546573745574696c7304003d0801b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546573745574696c732c2052756e74696d653e00320000e105084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279390101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f766519010110626f6f6c00011063616c6cdd050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f766519010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ee505083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001086174f401444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572732501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ee905084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279390101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f766519010110626f6f6c00011063616c6cdd050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f766519010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652eed05083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001086174f401444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572732501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef105084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647c01284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279390101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f766519010110626f6f6c00011063616c6cdd050198426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c24011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f766519010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef505083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7c01284964656e746974794964000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001086174f401444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7c01284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7c01284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657c01284964656e74697479496400010c6164647c01284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572732501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef905083c70616c6c65745f6d756c74697369671043616c6c04045400014c3c6372656174655f6d756c746973696708011c7369676e657273690101705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000134736967735f726571756972656420010c75363400001448437265617465732061206d756c7469736967002c2320417267756d656e7473a5012a20607369676e65727360202d205369676e657273206f6620746865206d756c7469736967202854686579206e65656420746f2061636365707420617574686f72697a6174696f6e206265666f72652074686579206172652061637475616c6c79206164646564292e19012a2060736967735f726571756972656460202d204e756d626572206f66207369677320726571756972656420746f2070726f636573732061206d756c74692d7369672074782e986372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6964656e746974791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616cdd050140426f783c543a3a50726f706f73616c3e000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736519010110626f6f6c0001203d01437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e846372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6b65791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616cdd050140426f783c543a3a50726f706f73616c3e000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736519010110626f6f6c0002203d01437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e6c6372656174655f70726f706f73616c5f61735f6964656e746974791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616cdd050140426f783c543a3a50726f706f73616c3e000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736519010110626f6f6c0003206c437265617465732061206d756c74697369672070726f706f73616c002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e586372656174655f70726f706f73616c5f61735f6b65791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616cdd050140426f783c543a3a50726f706f73616c3e000118657870697279f401444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736519010110626f6f6c0004206c437265617465732061206d756c74697369672070726f706f73616c002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4c617070726f76655f61735f6964656e746974790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c753634000518e4417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea42a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e38617070726f76655f61735f6b65790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340006183101417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea42a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4872656a6563745f61735f6964656e746974790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c753634000718e052656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea02a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e3472656a6563745f61735f6b65790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340008182d0152656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea02a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e886163636570745f6d756c74697369675f7369676e65725f61735f6964656e7469747904011c617574685f696420010c7536340009100d01416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206964656e746974792e002c2320417267756d656e7473ac2a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e746163636570745f6d756c74697369675f7369676e65725f61735f6b657904011c617574685f696420010c753634000a102901416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206b657920284163636f756e744964292e002c2320417267756d656e7473ac2a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e4c6164645f6d756c74697369675f7369676e65720401187369676e65726d01015c5369676e61746f72793c543a3a4163636f756e7449643e000b102901416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e002c2320417267756d656e7473782a20607369676e657260202d205369676e61746f727920746f206164642e5872656d6f76655f6d756c74697369675f7369676e65720401187369676e65726d01015c5369676e61746f72793c543a3a4163636f756e7449643e000c103d0152656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e002c2320417267756d656e7473842a20607369676e657260202d205369676e61746f727920746f2072656d6f76652e806164645f6d756c74697369675f7369676e6572735f7669615f63726561746f720801206d756c7469736967000130543a3a4163636f756e74496400011c7369676e657273690101705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000d244501416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865246d756c74697369672e002c2320417267756d656e74739c2a20606d756c746973696760202d2041646472657373206f6620746865206d756c746920736967842a20607369676e65727360202d205369676e61746f7269657320746f206164642e00202320576569676874a4603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e2829608c72656d6f76655f6d756c74697369675f7369676e6572735f7669615f63726561746f720801206d756c7469736967000130543a3a4163636f756e74496400011c7369676e657273690101705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000e248c52656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672ef054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865206d756c74697369672e002c2320417267756d656e74739c2a20606d756c746973696760202d2041646472657373206f6620746865206d756c74697369672e902a20607369676e65727360202d205369676e61746f7269657320746f2072656d6f76652e00202320576569676874a4603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e282960506368616e67655f736967735f7265717569726564040134736967735f726571756972656420010c753634000f144d014368616e67657320746865206e756d626572206f66207369676e6174757265732072657175697265642062792061206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865406d756c746973696720697473656c662e002c2320417267756d656e7473d82a2060736967735f726571756972656460202d204e6577206e756d626572206f66207265717569726564207369676e6174757265732e5c6d616b655f6d756c74697369675f7365636f6e646172790401206d756c7469736967000130543a3a4163636f756e7449640010146901416464732061206d756c74697369672061732061207365636f6e64617279206b6579206f662063757272656e7420646964206966207468652063757272656e7420646964206973207468652063726561746f72206f6620746865246d756c74697369672e002c2320417267756d656e7473802a20606d756c746973696760202d206d756c7469207369672061646472657373546d616b655f6d756c74697369675f7072696d6172790801206d756c7469736967000130543a3a4163636f756e7449640001506f7074696f6e616c5f6364645f617574685f6964f4012c4f7074696f6e3c7536343e0011145d01416464732061206d756c746973696720617320746865207072696d617279206b6579206f66207468652063757272656e7420646964206966207468652063757272656e7420444944206973207468652063726561746f72406f6620746865206d756c74697369672e002c2320417267756d656e7473842a20606d756c74695f73696760202d206d756c746920736967206164647265737368657865637574655f7363686564756c65645f70726f706f73616c1001206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696420010c7536340001306d756c74697369675f6469647c01284964656e7469747949640001405f70726f706f73616c5f7765696768742001185765696768740012047101526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20666f7220657865637574696e67207363686564756c6564206d756c74697369672070726f706f73616c2e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652efd05083470616c6c65745f6272696467651043616c6c040454000144446368616e67655f636f6e74726f6c6c6572040128636f6e74726f6c6c6572000130543a3a4163636f756e744964000010a04368616e6765732074686520636f6e74726f6c6c6572206163636f756e742061732061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e306368616e67655f61646d696e04011461646d696e000130543a3a4163636f756e744964000110744368616e67657320746865206272696467652061646d696e206b65792e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e3c6368616e67655f74696d656c6f636b04012074696d656c6f636b100138543a3a426c6f636b4e756d626572000210704368616e676573207468652074696d656c6f636b20706572696f642e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e18667265657a650003145d01467265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c65206966206974206973206e6f7420616c72656164792066726f7a656e2e205768656e2074686549016272696467652069732066726f7a656e2c20617474656d70746564207472616e73616374696f6e732067657420706f7374706f6e656420696e7374656164206f662067657474696e672068616e646c65642e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e20756e667265657a650004101101556e667265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c652069662069742069732066726f7a656e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c6368616e67655f6272696467655f6c696d6974080118616d6f756e7418011c42616c616e63650001206475726174696f6e100138543a3a426c6f636b4e756d626572000514684368616e6765732074686520627269646765206c696d6974732e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ea42d20604469766973696f6e42795a65726f6020696620606475726174696f6e60206973207a65726f2e586368616e67655f6272696467655f6578656d707465640401206578656d707465640106015c5665633c284964656e7469747949642c20626f6f6c293e0006109c4368616e6765732074686520627269646765206c696d6974206578656d70746564206c6973742e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e58666f7263655f68616e646c655f6272696467655f74780401246272696467655f74787501015842726964676554783c543a3a4163636f756e7449643e0007142501466f726365732068616e646c696e672061207472616e73616374696f6e20627920627970617373696e672074686520627269646765206c696d697420616e642074696d656c6f636b2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e21012d20604e6f56616c69644364646020696620606272696467655f74782e726563697069656e746020646f6573206e6f74206861766520612076616c69642043444420636c61696d2e5c62617463685f70726f706f73655f6272696467655f74780401286272696467655f7478730906016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000824450150726f706f736573206120766563746f72206f6620627269646765207472616e73616374696f6e732e2054686520766563746f722069732070726f63657373656420756e74696c207468652066697273744d0170726f706f73616c2077686963682063617573657320616e206572726f722c20696e207768696368206361736520746865206572726f722069732072657475726e656420616e64207468652072657374206f667070726f706f73616c7320617265206e6f742070726f6365737365642e00242323204572726f7273c82d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e00202320576569676874b0603530305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829604470726f706f73655f6272696467655f74780401246272696467655f74787501015842726964676554783c543a3a4163636f756e7449643e000918490150726f706f736573206120627269646765207472616e73616374696f6e2c20776869636820616d6f756e747320746f206d616b696e672061206d756c74697369672070726f706f73616c20666f72207468655501627269646765207472616e73616374696f6e20696620746865207472616e73616374696f6e206973206e6577206f7220617070726f76696e6720616e206578697374696e672070726f706f73616c20696620746865987472616e73616374696f6e2068617320616c7265616479206265656e2070726f706f7365642e00242323204572726f7273c82d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e4068616e646c655f6272696467655f74780401246272696467655f74787501015842726964676554783c543a3a4163636f756e7449643e000a18c048616e646c657320616e20617070726f76656420627269646765207472616e73616374696f6e2070726f706f73616c2e00242323204572726f727319012d206042616443616c6c65726020696620606f726967696e60206973206e6f74206053656c663a3a636f6e74726f6c6c657260206f7220206053656c663a3a61646d696e602eec2d206054696d656c6f636b656454786020696620746865207472616e73616374696f6e20737461747573206973206054696d656c6f636b6564602e09012d206050726f706f73616c416c726561647948616e646c65646020696620746865207472616e73616374696f6e20737461747573206973206048616e646c6564602e28667265657a655f7478730401286272696467655f7478730906016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000b2088467265657a657320676976656e20627269646765207472616e73616374696f6e732e8501496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e00202320576569676874b0603430305f3030305f303030202b20325f3030305f303030202a206272696467655f7478732e6c656e28296030756e667265657a655f7478730401286272696467655f7478730906016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000c2090556e667265657a657320676976656e20627269646765207472616e73616374696f6e732e8501496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e00202320576569676874b0603430305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829606868616e646c655f7363686564756c65645f6272696467655f74780401246272696467655f74787501015842726964676554783c543a3a4163636f756e7449643e000d189901526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f2068616e646c652061207363686564756c65642074696d656c6f636b656420627269646765207472616e73616374696f6e2e002023204572726f7273982d20604261644f726967696e6020696620606f726967696e60206973206e6f7420726f6f742ef82d206050726f706f73616c416c726561647948616e646c656460206966207472616e73616374696f6e20737461747573206973206048616e646c6564602ebc2d206046726f7a656e547860206966207472616e73616374696f6e20737461747573206973206046726f7a656e602e406164645f667265657a655f61646d696e040130667265657a655f61646d696e000130543a3a4163636f756e744964000e104c416464206120667265657a652061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c72656d6f76655f667265657a655f61646d696e040130667265657a655f61646d696e000130543a3a4163636f756e744964000f105852656d6f7665206120667265657a652061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e2872656d6f76655f7478730401286272696467655f7478730906016c5665633c42726964676554783c543a3a4163636f756e7449643e3e0010148452656d6f766520676976656e20627269646765207472616e73616374696f6e732e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ed02d20604e6f7446726f7a656e60206966206120747820696e20606272696467655f74787360206973206e6f742066726f7a656e2e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e01060000020506000506000004087c19010009060000027501000d06083870616c6c65745f7374616b696e671043616c6c04045400018010626f6e640c0128636f6e74726f6c6c65723905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565cd01013042616c616e63654f663c543e00011470617965651106017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e000058610154616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c80626520746865206163636f756e74207468617420636f6e74726f6c732069742e002d016076616c756560206d757374206265206d6f7265207468616e2074686520606d696e696d756d5f62616c616e636560207370656369666965642062792060543a3a43757272656e6379602e002101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e003c456d6974732060426f6e646564602e002823203c7765696768743ed02d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e1c2d204f2831292e642d20546872656520657874726120444220656e74726965732e004d014e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e65643d01756e6c6573732074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e482d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a2d012d20526561643a20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c2043757272656e74204572612c20486973746f72792044657074682c204c6f636b73dc2d2057726974653a20426f6e6465642c2050617965652c205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e28626f6e645f65787472610401386d61785f6164646974696f6e616ccd01013042616c616e63654f663c543e000154610141646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e636520757030666f72207374616b696e672e004d01557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e6101556e6c696b65205b60626f6e64605d206f72205b60756e626f6e64605d20746869732066756e6374696f6e20646f6573206e6f7420696d706f736520616e79206c696d69746174696f6e206f6e2074686520616d6f756e7448746861742063616e2062652061646465642e005d01546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c657220616e64f469742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e003c456d6974732060426f6e646564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e1c2d204f2831292e3c2d204f6e6520444220656e7472792e302d2d2d2d2d2d2d2d2d2d2d2d284442205765696768743a11012d20526561643a2045726120456c656374696f6e205374617475732c20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c204c6f636b73a02d2057726974653a205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e18756e626f6e6404011476616c7565cd01013042616c616e63654f663c543e00028051015363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e64fc706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e2101543a3a43757272656e63793a3a6d696e696d756d5f62616c616e636528292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e0045014f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c20796f752063616e2063616c6c206077697468647261775f756e626f6e6465646020746f2061637475616c6c79206d6f7665bc7468652066756e6473206f7574206f66206d616e6167656d656e7420726561647920666f72207472616e736665722e0039014e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d41585f554e4c4f434b494e475f4348554e4b536029390163616e20636f2d657869737473206174207468652073616d652074696d652e20496e207468617420636173652c205b6043616c6c3a3a77697468647261775f756e626f6e646564605d206e656564f8746f2062652063616c6c656420666972737420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e0044456d6974732060556e626f6e646564602e009453656520616c736f205b6043616c6c3a3a77697468647261775f756e626f6e646564605d2e002823203c7765696768743e3d012d20496e646570656e64656e74206f662074686520617267756d656e74732e204c696d697465642062757420706f74656e7469616c6c79206578706c6f697461626c6520636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732e61012d20456163682063616c6c20287265717569726573207468652072656d61696e646572206f662074686520626f6e6465642062616c616e636520746f2062652061626f766520606d696e696d756d5f62616c616e636560296d01202077696c6c2063617573652061206e657720656e74727920746f20626520696e73657274656420696e746f206120766563746f722028604c65646765722e756e6c6f636b696e676029206b65707420696e2073746f726167652e4d012020546865206f6e6c792077617920746f20636c65616e207468652061666f72656d656e74696f6e65642073746f72616765206974656d20697320616c736f20757365722d636f6e74726f6c6c6564207669615820206077697468647261775f756e626f6e646564602e3c2d204f6e6520444220656e7472792e282d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a21012d20526561643a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e744572612c204c6f636b732c205c5b4f726967696e204163636f756e745c5da82d2057726974653a204c6f636b732c204c65646765722c205c5b4f726967696e204163636f756e745c5d243c2f7765696768743e4477697468647261775f756e626f6e6465640401486e756d5f736c617368696e675f7370616e7310010c75333200037c290152656d6f766520616e7920756e6c6f636b6564206368756e6b732066726f6d207468652060756e6c6f636b696e67602071756575652066726f6d206f7572206d616e6167656d656e742e0031015468697320657373656e7469616c6c7920667265657320757020746861742062616c616e636520746f206265207573656420627920746865207374617368206163636f756e7420746f20646f4877686174657665722069742077616e74732e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e0048456d697473206057697468647261776e602e006853656520616c736f205b6043616c6c3a3a756e626f6e64605d2e002823203c7765696768743e51012d20436f756c6420626520646570656e64656e74206f6e2074686520606f726967696e6020617267756d656e7420616e6420686f77206d7563682060756e6c6f636b696e6760206368756e6b732065786973742e410120497420696d706c6965732060636f6e736f6c69646174655f756e6c6f636b656460207768696368206c6f6f7073206f76657220604c65646765722e756e6c6f636b696e67602c207768696368206973f020696e6469726563746c7920757365722d636f6e74726f6c6c65642e20536565205b60756e626f6e64605d20666f72206d6f72652064657461696c2e75012d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732c20796574207468652073697a65206f6620776869636820636f756c64206265206c61726765206261736564206f6e20606c6564676572602ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e3c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0501436f6d706c6578697479204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2072656d6f76651c5570646174653a21012d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c204c6f636b732c205b4f726967696e204163636f756e745da42d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c6564676572144b696c6c3a41012d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c20426f6e6465642c20536c617368696e67205370616e732c205b4f726967696e4420204163636f756e745d2c204c6f636b734d012d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c6420205b4f726967696e204163636f756e745d2c204c6f636b73702d2057726974657320456163683a205370616e536c617368202a205309014e4f54453a2057656967687420616e6e6f746174696f6e20697320746865206b696c6c207363656e6172696f2c20776520726566756e64206f74686572776973652e2c23203c2f7765696768743e2076616c696461746504011470726566731506013856616c696461746f725072656673000444e44465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e2c2d2d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a8c2d20526561643a2045726120456c656374696f6e205374617475732c204c65646765727c2d2057726974653a204e6f6d696e61746f72732c2056616c696461746f72732c23203c2f7765696768743e206e6f6d696e61746504011c746172676574731d0601a05665633c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e00054c0d014465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e004d01456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e20546869732063616e206f6e6c792062652063616c6c6564207768656e885b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743e2d012d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f662060746172676574736020284e29fc77686963682069732063617070656420617420436f6d7061637441737369676e6d656e74733a3a4c494d495420284d41585f4e4f4d494e4154494f4e53292ed42d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e242d2d2d2d2d2d2d2d2d305765696768743a204f284e29807768657265204e20697320746865206e756d626572206f662074617267657473284442205765696768743ac42d2052656164733a2045726120456c656374696f6e205374617475732c204c65646765722c2043757272656e7420457261802d205772697465733a2056616c696461746f72732c204e6f6d696e61746f72732c23203c2f7765696768743e146368696c6c000644c44465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e502d20436f6e7461696e73206f6e6520726561642ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e202d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a842d20526561643a20457261456c656374696f6e5374617475732c204c65646765727c2d2057726974653a2056616c696461746f72732c204e6f6d696e61746f72732c23203c2f7765696768743e247365745f706179656504011470617965651106017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e000740b42852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e242d2d2d2d2d2d2d2d2d382d205765696768743a204f283129302d204442205765696768743a48202020202d20526561643a204c656467657248202020202d2057726974653a2050617965652c23203c2f7765696768743e387365745f636f6e74726f6c6c6572040128636f6e74726f6c6c65723905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263650008408c2852652d297365742074686520636f6e74726f6c6c6572206f6620612073746173682e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e282d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743af02d20526561643a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c6572f42d2057726974653a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c65722c23203c2f7765696768743e4c7365745f76616c696461746f725f636f756e7404010c6e65777104010c75333200092090536574732074686520696465616c206e756d626572206f662076616c696461746f72732e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e305765696768743a204f2831295857726974653a2056616c696461746f7220436f756e742c23203c2f7765696768743e60696e6372656173655f76616c696461746f725f636f756e740401286164646974696f6e616c7104010c753332000a1ca8496e6372656d656e74732074686520696465616c206e756d626572206f662076616c696461746f72732e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e8053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e2c23203c2f7765696768743e547363616c655f76616c696461746f725f636f756e74040118666163746f722106011c50657263656e74000b1cd05363616c652075702074686520696465616c206e756d626572206f662076616c696461746f7273206279206120666163746f722e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e8053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e2c23203c2f7765696768743e686164645f7065726d697373696f6e65645f76616c696461746f720801206964656e746974797c01284964656e746974794964000138696e74656e6465645f636f756e742506012c4f7074696f6e3c7533323e000c203d01476f7665726e616e636520636f6d6d6974746565206f6e20322f3320726473206d616a6f726974792063616e20696e74726f647563652061206e657720706f74656e7469616c206964656e746974799d01746f2074686520706f6f6c206f66207065726d697373696f6e656420656e7469746965732077686f2063616e2072756e2076616c696461746f72732e205374616b696e67206d6f64756c65207573657320605065726d697373696f6e65644964656e74697479605501746f20656e737572652076616c696461746f7273206861766520636f6d706c65746564204b594220636f6d706c69616e636520616e6420636f6e736964657273207468656d20666f722076616c69646174696f6e2e002c2320417267756d656e7473e82a206f726967696e205265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e882a206964656e746974792056616c696461746f722773204964656e7469747949642e05012a20696e74656e6465645f636f756e74204e6f2e206f662076616c696461746f727320676976656e206964656e7469747920696e74656e647320746f2072756e2e7472656d6f76655f7065726d697373696f6e65645f76616c696461746f720401206964656e746974797c01284964656e746974794964000d1ca90152656d6f766520616e206964656e746974792066726f6d2074686520706f6f6c206f66202877616e6e616265292076616c696461746f72206964656e7469746965732e204566666563747320617265206b6e6f776e20696e20746865206e6578742073657373696f6e2e19015374616b696e67206d6f64756c6520636865636b7320605065726d697373696f6e65644964656e746974796020746f20656e737572652076616c696461746f7273206861766560636f6d706c65746564204b594220636f6d706c69616e6365002c2320417267756d656e7473f02a206f726967696e205265717569726564206f726967696e20666f722072656d6f76696e67206120706f74656e7469616c2076616c696461746f722e882a206964656e746974792056616c696461746f722773204964656e7469747949642e7876616c69646174655f6364645f6578706972795f6e6f6d696e61746f727304011c74617267657473ec01445665633c543a3a4163636f756e7449643e000e28a056616c696461746520746865206e6f6d696e61746f727320434444206578706972792074696d652e00f0496620616e206163636f756e742066726f6d206120676976656e20736574206f662061646472657373206973206e6f6d696e6174696e67207468656ed0636865636b2074686520434444206578706972792074696d65206f6620697420616e64206966206974206973206578706972656431017468656e20746865206163636f756e742073686f756c6420626520756e626f6e64656420616e642072656d6f7665642066726f6d20746865206e6f6d696e6174696e672070726f636573732e0024233c7765696768743e982d20446570656e6473206f6e20706173736564206c697374206f66204163636f756e7449642e29012d20446570656e6473206f6e20746865206e6f2e206f6620636c61696d206973737565727320616e206163636f756e7449642068617320666f722074686520434444206578706972792e28233c2f7765696768743e487365745f636f6d6d697373696f6e5f63617004011c6e65775f6361708d01011c50657262696c6c000f1421014368616e67657320636f6d6d697373696f6e2072617465207768696368206170706c69657320746f20616c6c2076616c696461746f72732e204f6e6c7920476f7665726e616e6365a8636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e002c2320417267756d656e74738c2a20606e65775f6361706020746865206e657720636f6d6d697373696f6e206361702e587365745f6d696e5f626f6e645f7468726573686f6c640401246e65775f76616c756518013042616c616e63654f663c543e00101401014368616e676573206d696e20626f6e642076616c756520746f206265207573656420696e2076616c696461746528292e204f6e6c7920476f7665726e616e6365a8636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e002c2320417267756d656e7473742a20606e65775f76616c75656020746865206e6577206d696e696d756d34666f7263655f6e6f5f65726173001124ac466f72636520746865726520746f206265206e6f206e6577206572617320696e646566696e6974656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e3c2d204e6f20617267756d656e74732e382d205765696768743a204f283129442d2057726974653a20466f7263654572612c23203c2f7765696768743e34666f7263655f6e65775f6572610012284901466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f6620746865206e6578742073657373696f6e2e20416674657220746869732c2069742077696c6c2062659c726573657420746f206e6f726d616c20286e6f6e2d666f7263656429206265686176696f75722e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e3c2d204e6f20617267756d656e74732e382d205765696768743a204f283129402d20577269746520466f7263654572612c23203c2f7765696768743e447365745f696e76756c6e657261626c6573040134696e76756c6e657261626c6573ec01445665633c543a3a4163636f756e7449643e001320c8536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e182d204f285629582d2057726974653a20496e76756c6e657261626c65732c23203c2f7765696768743e34666f7263655f756e7374616b650801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c7533320014280901466f72636520612063757272656e74207374616b657220746f206265636f6d6520636f6d706c6574656c7920756e7374616b65642c20696d6d6564696174656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743ee84f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2062652072656d6f766564b452656164733a20426f6e6465642c20536c617368696e67205370616e732c204163636f756e742c204c6f636b7381015772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c204163636f756e742c204c6f636b736857726974657320456163683a205370616e536c617368202a20532c23203c2f7765696768743e50666f7263655f6e65775f6572615f616c776179730015200101466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f662073657373696f6e7320696e646566696e6974656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e382d205765696768743a204f283129442d2057726974653a20466f7263654572612c23203c2f7765696768743e5463616e63656c5f64656665727265645f736c61736808010c657261100120457261496e646578000134736c6173685f696e6469636573390401205665633c7533323e0016349443616e63656c20656e6163746d656e74206f66206120646566657272656420736c6173682e00b043616e2062652063616c6c6564206279207468652060543a3a536c61736843616e63656c4f726967696e602e000101506172616d65746572733a2065726120616e6420696e6469636573206f662074686520736c617368657320666f7220746861742065726120746f206b696c6c2e002823203c7765696768743e50436f6d706c65786974793a204f2855202b205329b477697468205520756e6170706c69656420736c6173686573207765696768746564207769746820553d31303030d0616e64205320697320746865206e756d626572206f6620736c61736820696e646963657320746f2062652063616e63656c65642e642d20526561643a20556e6170706c69656420536c6173686573682d2057726974653a20556e6170706c69656420536c61736865732c23203c2f7765696768743e387061796f75745f7374616b65727308013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e6465780017640d01506179206f757420616c6c20746865207374616b65727320626568696e6420612073696e676c652076616c696461746f7220666f7220612073696e676c65206572612e0049012d206076616c696461746f725f73746173686020697320746865207374617368206163636f756e74206f66207468652076616c696461746f722e205468656972206e6f6d696e61746f72732c20757020746f2501202060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602c2077696c6c20616c736f207265636569766520746865697220726577617264732e31012d206065726160206d617920626520616e7920657261206265747765656e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e005501546865206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2e20416e79206163636f756e742063616e2063616c6c20746869732066756e6374696f6e2c206576656e206966746974206973206e6f74206f6e65206f6620746865207374616b6572732e00fc546869732063616e206f6e6c792062652063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743efc2d2054696d6520636f6d706c65786974793a206174206d6f7374204f284d61784e6f6d696e61746f72526577617264656450657256616c696461746f72292ec02d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e2c2d2d2d2d2d2d2d2d2d2d2d19014e20697320746865204e756d626572206f66207061796f75747320666f72207468652076616c696461746f722028696e636c7564696e67207468652076616c696461746f72291c5765696768743a842d205265776172642044657374696e6174696f6e205374616b65643a204f284e29c02d205265776172642044657374696e6174696f6e20436f6e74726f6c6c657220284372656174696e67293a204f284e29284442205765696768743a25012d20526561643a20457261456c656374696f6e5374617475732c2043757272656e744572612c20486973746f727944657074682c204572617356616c696461746f725265776172642c29012020202020202020457261735374616b657273436c69707065642c2045726173526577617264506f696e74732c204572617356616c696461746f725072656673202838206974656d73290d012d205265616420456163683a20426f6e6465642c204c65646765722c2050617965652c204c6f636b732c2053797374656d204163636f756e74202835206974656d7329d42d20577269746520456163683a2053797374656d204163636f756e742c204c6f636b732c204c6564676572202833206974656d73292c23203c2f7765696768743e187265626f6e6404011476616c7565cd01013042616c616e63654f663c543e001838dc5265626f6e64206120706f7274696f6e206f6620746865207374617368207363686564756c656420746f20626520756e6c6f636b65642e005101546865206469737061746368206f726967696e206d757374206265207369676e65642062792074686520636f6e74726f6c6c65722c20616e642069742063616e206265206f6e6c792063616c6c6564207768656e885b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ed02d2054696d6520636f6d706c65786974793a204f284c292c207768657265204c20697320756e6c6f636b696e67206368756e6b73902d20426f756e64656420627920604d41585f554e4c4f434b494e475f4348554e4b53602ef02d2053746f72616765206368616e6765733a2043616e277420696e6372656173652073746f726167652c206f6e6c792064656372656173652069742e3c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743afc202020202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c204c6f636b732c205b4f726967696e204163636f756e745db4202020202d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e447365745f686973746f72795f64657074680801446e65775f686973746f72795f646570746871040120457261496e6465780001485f6572615f6974656d735f64656c657465647104010c7533320019542d015365742060486973746f72794465707468602076616c75652e20546869732066756e6374696f6e2077696c6c2064656c65746520616e7920686973746f727920696e666f726d6174696f6e7c7768656e2060486973746f727944657074686020697320726564756365642e002c506172616d65746572733a0d012d20606e65775f686973746f72795f6465707468603a20546865206e657720686973746f727920646570746820796f7520776f756c64206c696b6520746f207365742e45012d20606572615f6974656d735f64656c65746564603a20546865206e756d626572206f66206974656d7320746861742077696c6c2062652064656c6574656420627920746869732064697370617463682e4101202020546869732073686f756c64207265706f727420616c6c207468652073746f72616765206974656d7320746861742077696c6c2062652064656c6574656420627920636c656172696e67206f6c64410120202065726120686973746f72792e204e656564656420746f207265706f727420616e2061636375726174652077656967687420666f72207468652064697370617463682e20547275737465642062799c20202060526f6f746020746f207265706f727420616e206163637572617465206e756d6265722e00504f726967696e206d75737420626520726f6f742e002823203c7765696768743edc2d20453a204e756d626572206f6620686973746f7279206465707468732072656d6f7665642c20692e652e203130202d3e2037203d2033382d205765696768743a204f284529302d204442205765696768743a9c202020202d2052656164733a2043757272656e74204572612c20486973746f72792044657074686c202020202d205772697465733a20486973746f72792044657074682d01202020202d20436c6561722050726566697820456163683a20457261205374616b6572732c204572615374616b657273436c69707065642c204572617356616c696461746f7250726566737d01202020202d2057726974657320456163683a204572617356616c696461746f725265776172642c2045726173526577617264506f696e74732c2045726173546f74616c5374616b652c2045726173537461727453657373696f6e496e6465782c23203c2f7765696768743e28726561705f73746173680801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c753332001a3c5d0152656d6f766520616c6c20646174612073747275637475726520636f6e6365726e696e672061207374616b65722f7374617368206f6e6365206974732062616c616e636520697320617420746865206d696e696d756d2e5d015468697320697320657373656e7469616c6c79206571756976616c656e7420746f206077697468647261775f756e626f6e64656460206578636570742069742063616e2062652063616c6c656420627920616e796f6e65f4616e6420746865207461726765742060737461736860206d7573742068617665206e6f2066756e6473206c656674206265796f6e64207468652045442e008c546869732063616e2062652063616c6c65642066726f6d20616e79206f726967696e2e00fc2d20607374617368603a20546865207374617368206163636f756e7420746f20726561702e204974732062616c616e6365206d757374206265207a65726f2e002823203c7765696768743e2101436f6d706c65786974793a204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e73206f6e20746865206163636f756e742e284442205765696768743ad42d2052656164733a205374617368204163636f756e742c20426f6e6465642c20536c617368696e67205370616e732c204c6f636b73a1012d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c205374617368204163636f756e742c204c6f636b73702d2057726974657320456163683a205370616e536c617368202a20532c23203c2f7765696768743e607375626d69745f656c656374696f6e5f736f6c7574696f6e14011c77696e6e6572732906014c5665633c56616c696461746f72496e6465783e00011c636f6d706163742d060148436f6d7061637441737369676e6d656e747300011473636f7265f9060134456c656374696f6e53636f726500010c657261100120457261496e64657800011073697a65fd060130456c656374696f6e53697a65001bc4e05375626d697420616e20656c656374696f6e20726573756c7420746f2074686520636861696e2e2049662074686520736f6c7574696f6e3a0030312e2069732076616c69642e1101322e206861732061206265747465722073636f7265207468616e206120706f74656e7469616c6c79206578697374696e6720736f6c7574696f6e206f6e20636861696e2e00807468656e2c2069742077696c6c206265205f7075745f206f6e20636861696e2e00a84120736f6c7574696f6e20636f6e7369737473206f662074776f20706965636573206f6620646174613a00f0312e206077696e6e657273603a206120666c617420766563746f72206f6620616c6c207468652077696e6e657273206f662074686520726f756e642e4d01322e206061737369676e6d656e7473603a2074686520636f6d706163742076657273696f6e206f6620616e2061737369676e6d656e7420766563746f72207468617420656e636f6465732074686520656467652c202020776569676874732e001d01426f7468206f66207768696368206d617920626520636f6d7075746564207573696e67205f70687261676d656e5f2c206f7220616e79206f7468657220616c676f726974686d2e00a44164646974696f6e616c6c792c20746865207375626d6974746572206d7573742070726f766964653a00c42d20546865206073636f7265602074686174207468657920636c61696d20746865697220736f6c7574696f6e206861732e004901426f74682076616c696461746f727320616e64206e6f6d696e61746f72732077696c6c20626520726570726573656e74656420627920696e646963657320696e2074686520736f6c7574696f6e2e205468651901696e64696365732073686f756c6420726573706563742074686520636f72726573706f6e64696e6720747970657320285b6056616c696461746f72496e646578605d20616e642d015b604e6f6d696e61746f72496e646578605d292e204d6f72656f7665722c20746865792073686f756c642062652076616c6964207768656e207573656420746f20696e64657820696e746f4d015b60536e617073686f7456616c696461746f7273605d20616e64205b60536e617073686f744e6f6d696e61746f7273605d2e20416e7920696e76616c696420696e6465782077696c6c206361757365207468655d01736f6c7574696f6e20746f2062652072656a65637465642e2054686573652074776f2073746f72616765206974656d73206172652073657420647572696e672074686520656c656374696f6e2077696e646f7720616e64946d6179206265207573656420746f2064657465726d696e652074686520696e64696365732e005c4120736f6c7574696f6e2069732076616c69642069663a00e0302e204974206973207375626d6974746564207768656e205b60457261456c656374696f6e537461747573605d20697320604f70656e602ef4312e2049747320636c61696d65642073636f726520697320657175616c20746f207468652073636f726520636f6d7075746564206f6e2d636861696e2ea8322e2050726573656e74732074686520636f7272656374206e756d626572206f662077696e6e6572732e5101332e20416c6c20696e6465786573206d7573742062652076616c7565206163636f7264696e6720746f2074686520736e617073686f7420766563746f72732e20416c6c20656467652076616c756573206d7573745901202020616c736f20626520636f727265637420616e642073686f756c64206e6f74206f766572666c6f7720746865206772616e756c6172697479206f662074686520726174696f20747970652028692e652e203235363c2020206f722062696c6c696f6e292e0901342e20466f72206561636820656467652c20616c6c2074617267657473206172652061637475616c6c79206e6f6d696e617465642062792074686520766f7465722e68352e2048617320636f72726563742073656c662d766f7465732e00bc4120736f6c7574696f6e732073636f726520697320636f6e736973746564206f66203320706172616d65746572733a006101312e20606d696e207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d6178696d697a65642e6101322e206073756d207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d696e696d697a65642e3d01332e206073756d207b20737570706f72742e746f74616c5e32207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265982020206d696e696d697a65642028746f20656e73757265206c6573732076617269616e636529002823203c7765696768743e1501546865207472616e73616374696f6e20697320617373756d656420746f20626520746865206c6f6e6765737420706174682c20612062657474657220736f6c7574696f6e2ea020202d20496e697469616c20736f6c7574696f6e20697320616c6d6f7374207468652073616d652e410120202d20576f72736520736f6c7574696f6e20697320726574726163656420696e207072652d64697370617463682d636865636b73207768696368207365747320697473206f776e207765696768742e2c23203c2f7765696768743e847375626d69745f656c656374696f6e5f736f6c7574696f6e5f756e7369676e656414011c77696e6e6572732906014c5665633c56616c696461746f72496e6465783e00011c636f6d706163742d060148436f6d7061637441737369676e6d656e747300011473636f7265f9060134456c656374696f6e53636f726500010c657261100120457261496e64657800011073697a65fd060130456c656374696f6e53697a65001c24bc556e7369676e65642076657273696f6e206f6620607375626d69745f656c656374696f6e5f736f6c7574696f6e602e0059014e6f746520746861742074686973206d757374207061737320746865205b6056616c6964617465556e7369676e6564605d20636865636b207768696368206f6e6c7920616c6c6f7773207472616e73616374696f6e735d0166726f6d20746865206c6f63616c206e6f646520746f20626520696e636c756465642e20496e206f7468657220776f7264732c206f6e6c792074686520626c6f636b20617574686f722063616e20696e636c7564652061647472616e73616374696f6e20696e2074686520626c6f636b2e002823203c7765696768743e84536565205b607375626d69745f656c656374696f6e5f736f6c7574696f6e605d2e2c23203c2f7765696768743e607061796f75745f7374616b6572735f62795f73797374656d08013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e646578001d04210153797374656d2076657273696f6e206f6620607061796f75745f7374616b6572732829602e204f6e6c792062652063616c6c65642062792074686520726f6f74206f726967696e2e6c6368616e67655f736c617368696e675f616c6c6f7765645f666f7204013c736c617368696e675f73776974636891010138536c617368696e67537769746368001e14690153776974636820736c617368696e6720737461747573206f6e20746865206261736973206f6620676976656e2060536c617368696e67537769746368602e2043616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473742a206f726967696e202d204163636f756e744964206f6620726f6f742e01012a20736c617368696e675f737769746368202d20537769746368207573656420746f2073657420746865207461726765747320666f7220736c617368696e672eb07570646174655f7065726d697373696f6e65645f76616c696461746f725f696e74656e6465645f636f756e740801206964656e746974797c01284964656e7469747949640001486e65775f696e74656e6465645f636f756e7410010c753332001f18d05570646174652074686520696e74656e6465642076616c696461746f7220636f756e7420666f72206120676976656e204449442e002c2320417267756d656e747331012a206f726967696e207768696368206d75737420626520746865207265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e842a206964656e7469747920746f2061646420617320612076616c696461746f722ec42a206e65775f696e74656e6465645f636f756e74204e65772076616c7565206f6620696e74656e64656420636f756e742e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e1106083870616c6c65745f7374616b696e674452657761726444657374696e6174696f6e04244163636f756e74496401000110185374616b656400000014537461736800010028436f6e74726f6c6c65720002001c4163636f756e7404000001244163636f756e744964000300001506083870616c6c65745f7374616b696e673856616c696461746f7250726566730000080128636f6d6d697373696f6e1906011c50657262696c6c00011c626c6f636b656419010110626f6f6c000019060000068d01001d0600000239050021060c3473705f61726974686d65746963287065725f7468696e67731c50657263656e740000040008010875380000250604184f7074696f6e04045401100108104e6f6e6500000010536f6d65040010000001000029060000023d03002d06083870616c6c65745f7374616b696e6748436f6d7061637441737369676e6d656e74730000400118766f74657331310600000118766f746573323d0600000118766f74657333510600000118766f746573345d0600000118766f74657335690600000118766f74657336750600000118766f74657337810600000118766f746573388d0600000118766f7465733999060000011c766f7465733130a5060000011c766f7465733131b1060000011c766f7465733132bd060000011c766f7465733133c9060000011c766f7465733134d5060000011c766f7465733135e1060000011c766f7465733136ed060000003106000002350600350600000408710439060039060000063d03003d0600000241060041060000040c71044506390600450600000408390649060049060000064d06004d060c3473705f61726974686d65746963287065725f7468696e677318506572553136000004003d03010c7531360000510600000255060055060000040c710459063906005906000003020000004506005d0600000261060061060000040c7104650639060065060000030300000045060069060000026d06006d060000040c71047106390600710600000304000000450600750600000279060079060000040c71047d063906007d0600000305000000450600810600000285060085060000040c710489063906008906000003060000004506008d0600000291060091060000040c7104950639060095060000030700000045060099060000029d06009d060000040c7104a106390600a10600000308000000450600a506000002a90600a9060000040c7104ad06390600ad0600000309000000450600b106000002b50600b5060000040c7104b906390600b9060000030a000000450600bd06000002c10600c1060000040c7104c506390600c5060000030b000000450600c906000002cd0600cd060000040c7104d106390600d1060000030c000000450600d506000002d90600d9060000040c7104dd06390600dd060000030d000000450600e106000002e50600e5060000040c7104e906390600e9060000030e000000450600ed06000002f10600f1060000040c7104f506390600f5060000030f000000450600f906000003030000001800fd06083870616c6c65745f7374616b696e6730456c656374696f6e53697a65000008012876616c696461746f72733906013856616c696461746f72496e6465780001286e6f6d696e61746f7273710401384e6f6d696e61746f72496e646578000001070c3870616c6c65745f73657373696f6e1870616c6c65741043616c6c040454000108207365745f6b6579730801106b6579730507011c543a3a4b65797300011470726f6f6628011c5665633c75383e000038e453657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b657973602e1d01416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722ec05468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e00d0546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e002823203c7765696768743e11012d20436f6d706c65786974793a20604f283129602e2041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468206f6698202060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642eec2d20446252656164733a20606f726967696e206163636f756e74602c2060543a3a56616c696461746f7249644f66602c20604e6578744b65797360a02d2044625772697465733a20606f726967696e206163636f756e74602c20604e6578744b65797360802d204462526561647320706572206b65792069643a20604b65794f776e657260842d20446257726974657320706572206b65792069643a20604b65794f776e6572602c23203c2f7765696768743e2870757267655f6b657973000140c852656d6f76657320616e792073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c65722e00c05468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e005501546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265205369676e656420616e6420746865206163636f756e74206d757374206265206569746865722062655d01636f6e7665727469626c6520746f20612076616c696461746f72204944207573696e672074686520636861696e2773207479706963616c2061646472657373696e672073797374656d20287468697320757375616c6c7951016d65616e73206265696e67206120636f6e74726f6c6c6572206163636f756e7429206f72206469726563746c7920636f6e7665727469626c6520696e746f20612076616c696461746f722049442028776869636894757375616c6c79206d65616e73206265696e672061207374617368206163636f756e74292e002823203c7765696768743e61012d20436f6d706c65786974793a20604f2831296020696e206e756d626572206f66206b65792074797065732e2041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468a420206f662060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642eec2d20446252656164733a2060543a3a56616c696461746f7249644f66602c20604e6578744b657973602c20606f726967696e206163636f756e7460a02d2044625772697465733a20604e6578744b657973602c20606f726967696e206163636f756e7460842d20446257726974657320706572206b65792069643a20604b65794f776e6572602c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e05070c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d652c53657373696f6e4b657973000010011c6772616e647061ad0101d03c4772616e647061206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300011062616265c10401c43c42616265206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000124696d5f6f6e6c696e65b90101d43c496d4f6e6c696e65206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300014c617574686f726974795f646973636f76657279090701fc3c417574686f72697479446973636f76657279206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000009070c5873705f617574686f726974795f646973636f766572790c617070185075626c696300000400bd01013c737232353531393a3a5075626c696300000d070c3870616c6c65745f6772616e6470611870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66110701bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f66f9040140543a3a4b65794f776e657250726f6f6600001009015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66110701bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f66f9040140543a3a4b65794f776e657250726f6f6600012409015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e000d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e306e6f74655f7374616c6c656408011464656c6179100138543a3a426c6f636b4e756d62657200016c626573745f66696e616c697a65645f626c6f636b5f6e756d626572100138543a3a426c6f636b4e756d62657200021c19014e6f74652074686174207468652063757272656e7420617574686f7269747920736574206f6620746865204752414e4450412066696e616c697479206761646765742068617325017374616c6c65642e20546869732077696c6c2074726967676572206120666f7263656420617574686f7269747920736574206368616e67652061742074686520626567696e6e696e671d016f6620746865206e6578742073657373696f6e2c20746f20626520656e6163746564206064656c61796020626c6f636b7320616674657220746861742e205468652064656c6179110173686f756c64206265206869676820656e6f75676820746f20736166656c7920617373756d6520746861742074686520626c6f636b207369676e616c6c696e67207468652501666f72636564206368616e67652077696c6c206e6f742062652072652d6f726765642028652e672e203130303020626c6f636b73292e20546865204752414e44504120766f74657273250177696c6c20737461727420746865206e657720617574686f7269747920736574207573696e672074686520676976656e2066696e616c697a656420626c6f636b20617320626173652e584f6e6c792063616c6c61626c6520627920726f6f742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e1107084c73705f66696e616c6974795f6772616e6470614445717569766f636174696f6e50726f6f660804480124044e0110000801187365745f6964200114536574496400013065717569766f636174696f6e1507014845717569766f636174696f6e3c482c204e3e00001507084c73705f66696e616c6974795f6772616e6470613045717569766f636174696f6e0804480124044e011001081c507265766f7465040019070139016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265766f74653c482c204e3e2c0a417574686f726974795369676e61747572653e00000024507265636f6d6d697404002d070141016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265636f6d6d69743c482c204e3e2c0a417574686f726974795369676e61747572653e000100001907084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401ad010456011d07045301210700100130726f756e645f6e756d62657220010c7536340001206964656e74697479ad010108496400011466697273742907011828562c2053290001187365636f6e642907011828562c20532900001d07084066696e616c6974795f6772616e6470611c507265766f74650804480124044e01100008012c7461726765745f68617368240104480001347461726765745f6e756d6265721001044e000021070c4c73705f66696e616c6974795f6772616e6470610c617070245369676e61747572650000040025070148656432353531393a3a5369676e6174757265000025070c1c73705f636f72651c65643235353139245369676e617475726500000400110201205b75383b2036345d00002907000004081d072107002d07084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401ad010456013107045301210700100130726f756e645f6e756d62657220010c7536340001206964656e74697479ad010108496400011466697273743507011828562c2053290001187365636f6e643507011828562c20532900003107084066696e616c6974795f6772616e64706124507265636f6d6d69740804480124044e01100008012c7461726765745f68617368240104480001347461726765745f6e756d6265721001044e0000350700000408310721070039070c4070616c6c65745f696d5f6f6e6c696e651870616c6c65741043616c6c040454000104246865617274626561740801246865617274626561743d0701644865617274626561743c543a3a426c6f636b4e756d6265723e0001247369676e6174757265510701bc3c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e61747572650000242823203c7765696768743e61012d20436f6d706c65786974793a20604f284b202b20452960207768657265204b206973206c656e677468206f6620604b6579736020286865617274626561742e76616c696461746f72735f6c656e2920616e642045206973d820206c656e677468206f6620606865617274626561742e6e6574776f726b5f73746174652e65787465726e616c5f61646472657373608820202d20604f284b29603a206465636f64696e67206f66206c656e67746820604b60ac20202d20604f284529603a206465636f64696e672f656e636f64696e67206f66206c656e6774682060456039012d20446252656164733a2070616c6c65745f73657373696f6e206056616c696461746f7273602c2070616c6c65745f73657373696f6e206043757272656e74496e646578602c20604b657973602c5820206052656365697665644865617274626561747360802d2044625772697465733a2060526563656976656448656172746265617473602c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e3d07084070616c6c65745f696d5f6f6e6c696e6524486561727462656174042c426c6f636b4e756d626572011000140130626c6f636b5f6e756d62657210012c426c6f636b4e756d6265720001346e6574776f726b5f7374617465410701484f70617175654e6574776f726b537461746500013473657373696f6e5f696e64657810013053657373696f6e496e64657800013c617574686f726974795f696e64657810012441757468496e64657800013876616c696461746f72735f6c656e10010c753332000041070c1c73705f636f7265206f6666636861696e484f70617175654e6574776f726b5374617465000008011c706565725f6964450701304f706171756550656572496400014865787465726e616c5f616464726573736573490701505665633c4f70617175654d756c7469616464723e00004507081c73705f636f7265304f70617175655065657249640000040028011c5665633c75383e000049070000024d07004d070c1c73705f636f7265206f6666636861696e3c4f70617175654d756c7469616464720000040028011c5665633c75383e00005107104070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139245369676e61747572650000040055070148737232353531393a3a5369676e6174757265000055070c1c73705f636f72651c73723235353139245369676e617475726500000400110201205b75383b2036345d00005907082c70616c6c65745f7375646f1043616c6c040454000110107375646f04011063616c6cdd050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000028350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e547375646f5f756e636865636b65645f77656967687408011063616c6cdd050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00011c5f776569676874200118576569676874000128350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e2d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b05375646f207573657220746f20737065636966792074686520776569676874206f66207468652063616c6c2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292ecc2d2054686520776569676874206f6620746869732063616c6c20697320646566696e6564206279207468652063616c6c65722e2c23203c2f7765696768743e1c7365745f6b657904010c6e65773905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365000224710141757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e402d204f6e65204442206368616e67652e2c23203c2f7765696768743e1c7375646f5f617308010c77686f3905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011063616c6cdd050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00032c4d0141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d406120676976656e206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e5d07083070616c6c65745f61737365741043616c6c0404540001603c72656769737465725f7469636b65720401187469636b6572a001185469636b657200002405015265676973746572732061206e6577207469636b6572206f7220657874656e64732076616c6964697479206f6620616e206578697374696e67207469636b65722e11014e423a205469636b65722076616c696469747920646f6573206e6f742067657420636172727920666f7277617264207768656e2072656e6577696e67207469636b65722e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e782a20607469636b657260207469636b657220746f2072656769737465722e003423205065726d697373696f6e731c2a204173736574586163636570745f7469636b65725f7472616e7366657204011c617574685f696420010c75363400013068416363657074732061207469636b6572207472616e736665722e002d01436f6e73756d65732074686520617574686f72697a6174696f6e2060617574685f6964602028736565206070616c6c65745f6964656e746974793a3a636f6e73756d655f6175746860292e25014e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292ef82a2060617574685f69646020417574686f72697a6174696f6e204944206f66207469636b6572207472616e7366657220617574686f72697a6174696f6e2e00242323204572726f727369012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f696460206973206e6f7420612076616c6964207469636b6574207472616e7366657220617574686f72697a6174696f6e2e007c6163636570745f61737365745f6f776e6572736869705f7472616e7366657204011c617574685f696420010c753634000218ec546869732066756e6374696f6e206973207573656420746f20616363657074206120746f6b656e206f776e657273686970207472616e736665722e25014e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e2d012a2060617574685f69646020417574686f72697a6174696f6e204944206f662074686520746f6b656e206f776e657273686970207472616e7366657220617574686f72697a6174696f6e2e306372656174655f61737365741c01106e616d65fd01012441737365744e616d650001187469636b6572a001185469636b6572000124646976697369626c6519010110626f6f6c00012861737365745f74797065e501012441737365745479706500012c6964656e74696669657273ed0101505665633c41737365744964656e7469666965723e00013466756e64696e675f726f756e64610701604f7074696f6e3c46756e64696e67526f756e644e616d653e00012864697361626c655f697519010110626f6f6c0003682d01496e697469616c697a65732061206e657720736563757269747920746f6b656e2c20776974682074686520696e6974696174696e67206163636f756e7420617320697473206f776e65722e150154686520746f74616c20737570706c792077696c6c20696e697469616c6c79206265207a65726f2e20546f206d696e7420746f6b656e732c2075736520606973737565602e002c2320417267756d656e7473c5012a20606f726967696e60202d20636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e842a20606e616d6560202d20746865206e616d65206f662074686520746f6b656e2eb02a20607469636b657260202d20746865207469636b65722073796d626f6c206f662074686520746f6b656e2e2d012a2060646976697369626c6560202d206120626f6f6c65616e20746f206964656e74696679207468652064697669736962696c69747920737461747573206f662074686520746f6b656e2e802a206061737365745f7479706560202d2074686520617373657420747970652ec02a20606964656e7469666965727360202d206120766563746f72206f66206173736574206964656e746966696572732eb82a206066756e64696e675f726f756e6460202d206e616d65206f66207468652066756e64696e6720726f756e642e4d012a206064697361626c655f697560202d2077686574686572206f72206e6f7420696e766573746f7220756e697175656e65737320656e666f7263656d656e742073686f756c642062652064697361626c65642ec82020546869732063616e6e6f74206265206368616e676564206166746572206372656174696e67207468652061737365742e00242323204572726f7273fc2d2060496e76616c696441737365744964656e7469666965726020696620616e79206f6620606964656e74696669657273602061726520696e76616c69642e51012d20604d61784c656e6774684f6641737365744e616d6545786365656465646020696620606e616d65602773206c656e67746820657863656564732060543a3a41737365744e616d654d61784c656e677468602e55012d206046756e64696e67526f756e644e616d654d61784c656e67746845786365656465646020696620746865206e616d65206f66207468652066756e64696e6720726f756e64206973206c6f6e67657220746861747c60543a3a46756e64696e67526f756e644e616d654d61784c656e677468602ed42d20604173736574416c726561647943726561746564602069662061737365742077617320616c726561647920637265617465642e5d012d20605469636b6572546f6f4c6f6e676020696620607469636b6572602773206c656e6774682069732067726561746572207468616e2060636f6e6669672e6d61785f7469636b65725f6c656e6774686020636861696e28706172616d657465722ea1022d20605469636b65724e6f7441736369696020696620607469636b657260206973206e6f742079657420726567697374657265642c20616e6420636f6e7461696e73206e6f6e2d6173636969207072696e7461626c652063686172616374657273202866726f6d20636f646520333220746f2031323629206f7220616e7920636861726163746572206166746572206669727374206f6363757272656e6365206f6620605c30602e00382323205065726d697373696f6e732c2a20506f7274666f6c696f18667265657a650401187469636b6572a001185469636b657200042cbc467265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e00242323204572726f7273c02d2060416c726561647946726f7a656e6020696620607469636b65726020697320616c72656164792066726f7a656e2e003423205065726d697373696f6e731c2a20417373657420756e667265657a650401187469636b6572a001185469636b657200052cc4556e667265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722eb02a20607469636b657260202d20746865207469636b6572206f66207468652066726f7a656e20746f6b656e2e00242323204572726f7273b02d20604e6f7446726f7a656e6020696620607469636b657260206973206e6f742066726f7a656e207965742e003423205065726d697373696f6e731c2a2041737365743072656e616d655f61737365740801187469636b6572a001185469636b65720001106e616d65fd01012441737365744e616d650006345852656e616d6573206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e942a20606e616d6560202d20746865206e6577206e616d65206f662074686520746f6b656e2e00242323204572726f727311012d20604d61784c656e6774684f6641737365744e616d65457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e6060543a3a41737365744e616d654d61784c656e677468602e003423205065726d697373696f6e731c2a2041737365741469737375650801187469636b6572a001185469636b6572000118616d6f756e7418011c42616c616e636500072ca449737375652c206f72206d696e742c206e657720746f6b656e7320746f207468652063616c6c65722cac7768696368206d75737420626520616e20617574686f72697a65642065787465726e616c206167656e742e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e602a20607469636b657260206f662074686520746f6b656e2e942a2060616d6f756e7460206f6620746f6b656e73207468617420676574206973737565642e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f1872656465656d0801187469636b6572a001185469636b657200011476616c756518011c42616c616e636500083ccd0152656465656d73206578697374696e6720746f6b656e73206279207265647563696e67207468652062616c616e6365206f66207468652063616c6c657227732064656661756c7420706f7274666f6c696f20616e642074686520746f74616c20737570706c79206f662074686520746f6b656e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e942a206076616c75656020416d6f756e74206f6620746f6b656e7320746f2072656465656d2e002023204572726f727361012d2060556e617574686f72697a6564602049662063616c6c656420627920736f6d656f6e6520776974686f75742074686520617070726f7072696174652065787465726e616c206167656e74207065726d697373696f6e7359012d2060496e76616c69644772616e756c6172697479602049662074686520616d6f756e74206973206e6f7420646976697369626c652062792031305e3620666f72206e6f6e2d646976697369626c6520746f6b656e738d012d2060496e73756666696369656e74506f7274666f6c696f42616c616e636560204966207468652063616c6c657227732064656661756c7420706f7274666f6c696f20646f65736e2774206861766520656e6f75676820667265652062616c616e6365003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f386d616b655f646976697369626c650401187469636b6572a001185469636b657200092c944d616b657320616e20696e646976697369626c6520746f6b656e20646976697369626c652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e00242323204572726f7273ec2d20604173736574416c7265616479446976697369626c656020696620607469636b65726020697320616c726561647920646976697369626c652e003423205065726d697373696f6e731c2a204173736574346164645f646f63756d656e7473080110646f6373650701345665633c446f63756d656e743e0001187469636b6572a001185469636b6572000a248041646420646f63756d656e747320666f72206120676976656e20746f6b656e2e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2eb82a2060646f63736020446f63756d656e747320746f20626520617474616368656420746f20607469636b6572602e003423205065726d697373696f6e731c2a2041737365744072656d6f76655f646f63756d656e747308010c6964730503013c5665633c446f63756d656e7449643e0001187469636b6572a001185469636b6572000b248c52656d6f766520646f63756d656e747320666f72206120676976656e20746f6b656e2e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2ec82a20606964736020446f63756d656e74732069647320746f2062652072656d6f7665642066726f6d20607469636b6572602e003423205065726d697373696f6e731c2a204173736574447365745f66756e64696e675f726f756e640801187469636b6572a001185469636b65720001106e616d65e101014046756e64696e67526f756e644e616d65000c34ac5365747320746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e002c2320417267756d656e747329012a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2ee42a20606e616d6560202d207468652064657369726564206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e00242323204572726f727325012d206046756e64696e67526f756e644e616d654d61784c656e677468457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e7c60543a3a46756e64696e67526f756e644e616d654d61784c656e677468602e003423205065726d697373696f6e731c2a204173736574487570646174655f6964656e746966696572730801187469636b6572a001185469636b657200012c6964656e74696669657273ed0101505665633c41737365744964656e7469666965723e000d34785570646174657320746865206173736574206964656e746966696572732e002c2320417267756d656e747329012a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e59012a20606964656e7469666965727360202d20746865206173736574206964656e7469666965727320746f206265207570646174656420696e2074686520666f726d206f66206120766563746f72206f66207061697273cc2020206f6620604964656e746966696572547970656020616e64206041737365744964656e746966696572602076616c75652e00242323204572726f727331012d2060496e76616c696441737365744964656e7469666965726020696620606964656e746966696572736020636f6e7461696e7320616e7920696e76616c6964206964656e7469666965722e003423205065726d697373696f6e731c2a20417373657450636c61696d5f636c61737369635f7469636b65720801187469636b6572a001185469636b6572000148657468657265756d5f7369676e61747572656907013845636473615369676e6174757265000e38fc436c61696d20612073797374656d61746963616c6c7920726573657276656420506f6c796d61746820436c61737369632028504d432920607469636b657260ac616e64207472616e7366657220697420746f2074686520606f726967696e602773206964656e746974792e003d01546f2076657269667920746861742074686520606f726967696e6020697320696e20636f6e74726f6c206f662074686520457468657265756d206163636f756e74206f6e2074686520626f6f6b732c1101616e2060657468657265756d5f7369676e61747572656020636f6e7461696e696e672074686520606f726967696e6027732044494420617320746865206d657373616765a86d7573742062652070726f7669646564206279207468617420457468657265756d206163636f756e742e002023204572726f727331012d20604e6f53756368436c61737369635469636b6572602069662074686973206973206e6f7420612073797374656d61746963616c6c7920726573657276656420504d43207469636b65722e51012d20605469636b6572416c7265616479526567697374657265646020696620746865207469636b65722077617320616c726561647920726567697374657265642c20652e672e2c20627920606f726967696e602e1d012d20605469636b6572526567697374726174696f6e457870697265646020696620746865207469636b6572277320726567697374726174696f6e2068617320657870697265642e702d20604261644f726967696e60206966206e6f74207369676e65642e19012d2060496e76616c6964457468657265756d5369676e617475726560206966207468652060657468657265756d5f7369676e617475726560206973206e6f742076616c69642e29012d20604e6f74416e4f776e6572602069662074686520657468657265756d206163636f756e74206973206e6f7420746865206f776e6572206f662074686520504d43207469636b65722e58726573657276655f636c61737369635f7469636b65720c0154636c61737369635f7469636b65725f696d706f72747107014c436c61737369635469636b6572496d706f7274000130636f6e74726163745f6469647c01284964656e746974794964000118636f6e6669677507018c5469636b6572526567697374726174696f6e436f6e6669673c543a3a4d6f6d656e743e000f34a052657365727665206120506f6c796d61746820436c61737369632028504d4329207469636b65722e0d014d7573742062652063616c6c656420627920726f6f742c20616e642061737369676e7320746865207469636b657220746f20612073797374656d61746963204449442e002c2320417267756d656e7473782a20606f726967696e60207768696368206d75737420626520726f6f742eec2a2060636c61737369635f7469636b65725f696d706f7274602073706563696669636174696f6e20666f722074686520504d43207469636b65722e5d012a2060636f6e74726163745f6469646020746f207265736572766520746865207469636b657220746f2069662060636c61737369635f7469636b65725f696d706f72742e69735f636f6e74726163746020686f6c64732ebc2a2060636f6e6669676020746f2075736520666f722065787069727920616e64207469636b6572206c656e6774682e002023204572726f727349012a20604173736574416c726561647943726561746564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b65726020776173206372656174656420617320616e2061737365742e61012a20605469636b6572546f6f4c6f6e6760206966207468652060636f6e6669676020636f6e736964657273207468652060636c61737369635f7469636b65725f696d706f72742e7469636b65726020746f6f206c6f6e672e55012a20605469636b6572416c726561647952656769737465726564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b6572602077617320616c726561647920726567697374657265642e4c636f6e74726f6c6c65725f7472616e736665720c01187469636b6572a001185469636b657200011476616c756518011c42616c616e636500013866726f6d5f706f7274666f6c696fd8012c506f7274666f6c696f496400101c4d01466f726365732061207472616e73666572206f6620746f6b656e2066726f6d206066726f6d5f706f7274666f6c696f6020746f207468652063616c6c657227732064656661756c7420706f7274666f6c696f2e002c2320417267756d656e747355012a20606f726967696e60204d75737420626520616e2065787465726e616c206167656e74207769746820617070726f707269617465207065726d697373696f6e7320666f72206120676976656e207469636b65722e982a20607469636b657260205469636b65722073796d626f6c206f66207468652061737365742ecc2a206076616c7565602020416d6f756e74206f6620746f6b656e73206e65656420746f20666f726365207472616e736665722efc2a206066726f6d5f706f7274666f6c696f602046726f6d2077686f6d20706f7274666f6c696f20746f6b656e732067657473207472616e736665727265642e6872656769737465725f637573746f6d5f61737365745f74797065040108747928011c5665633c75383e00112478526567697374657273206120637573746f6d20617373657420747970652e00d05468652070726f766964656420607479602077696c6c20626520626f756e6420746f20616e20494420696e2073746f726167652ebc5468652049442063616e207468656e206265207573656420696e20604173736574547970653a3a437573746f6d602e250153686f756c6420746865206074796020616c726561647920657869737420696e2073746f726167652c206e6f207365636f6e642049442069732061737369676e656420746f2069742e002c2320417267756d656e7473902a20606f726967696e602077686f2063616c6c6564207468652065787472696e7369632ef02a206074796020636f6e7461696e732074686520737472696e6720726570726573656e746174696f6e206f662074686520617373657420747970652e746372656174655f61737365745f776974685f637573746f6d5f747970651c01106e616d65fd01012441737365744e616d650001187469636b6572a001185469636b6572000124646976697369626c6519010110626f6f6c000144637573746f6d5f61737365745f7479706528011c5665633c75383e00012c6964656e74696669657273ed0101505665633c41737365744964656e7469666965723e00013466756e64696e675f726f756e64610701604f7074696f6e3c46756e64696e67526f756e644e616d653e00012864697361626c655f697519010110626f6f6c0012042d015574696c6974792065787472696e73696320746f20626174636820606372656174655f61737365746020616e64206072656769737465725f637573746f6d5f61737365745f74797065602e487365745f61737365745f6d657461646174611001187469636b6572a001185469636b657200010c6b65797907014041737365744d657461646174614b657900011476616c75653502014841737365744d6574616461746156616c756500011864657461696c390201ac4f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e3e00134464536574206173736574206d657461646174612076616c75652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e542a20606b657960204d65746164617461206b65792e642a206076616c756560204d657461646174612076616c75652e09012a206064657461696c7360204f7074696f6e616c204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f727315012a206041737365744d657461646174614b657949734d697373696e676020696620746865206d657461646174612074797065206b657920646f65736e27742065786973742e25012a206041737365744d6574616461746156616c756549734c6f636b65646020696620746865206d657461646174612076616c756520666f7220606b657960206973206c6f636b65642e65012a206041737365744d6574616461746156616c75654d61784c656e67746845786365656465646020696620746865206d657461646174612076616c7565206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a204173736574687365745f61737365745f6d657461646174615f64657461696c730c01187469636b6572a001185469636b657200010c6b65797907014041737365744d657461646174614b657900011864657461696c3d02018c41737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e00143cdc536574206173736574206d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e542a20606b657960204d65746164617461206b65792ee42a206064657461696c7360204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f727315012a206041737365744d657461646174614b657949734d697373696e676020696620746865206d657461646174612074797065206b657920646f65736e27742065786973742e25012a206041737365744d6574616461746156616c756549734c6f636b65646020696620746865206d657461646174612076616c756520666f7220606b657960206973206c6f636b65642e003423205065726d697373696f6e731c2a204167656e741c2a2041737365749472656769737465725f616e645f7365745f6c6f63616c5f61737365745f6d657461646174611401187469636b6572a001185469636b65720001106e616d654502014441737365744d657461646174614e616d65000110737065634d02014441737365744d657461646174615370656300011476616c75653502014841737365744d6574616461746156616c756500011864657461696c390201ac4f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e3e00154c9c52656769737465727320616e6420736574206c6f63616c206173736574206d657461646174612e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e642a206076616c756560204d657461646174612076616c75652e09012a206064657461696c7360204f7074696f6e616c204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f7273a1012a206041737365744d657461646174614c6f63616c4b6579416c7265616479457869737473602069662061206c6f63616c206d657461646174612074797065207769746820606e616d656020616c72656164792065786973747320666f7220607469636b6572602e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e65012a206041737365744d6574616461746156616c75654d61784c656e67746845786365656465646020696620746865206d657461646174612076616c7565206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a2041737365748872656769737465725f61737365745f6d657461646174615f6c6f63616c5f747970650c01187469636b6572a001185469636b65720001106e616d654502014441737365744d657461646174614e616d65000110737065634d02014441737365744d657461646174615370656300164090526567697374657273206173736574206d65746164617461206c6f63616c20747970652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e002023204572726f7273a1012a206041737365744d657461646174614c6f63616c4b6579416c7265616479457869737473602069662061206c6f63616c206d657461646174612074797065207769746820606e616d656020616c72656164792065786973747320666f7220607469636b6572602e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a2041737365748c72656769737465725f61737365745f6d657461646174615f676c6f62616c5f747970650801106e616d654502014441737365744d657461646174614e616d65000110737065634d02014441737365744d657461646174615370656300172c94526567697374657273206173736574206d6574616461746120676c6f62616c20747970652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e002023204572726f727371012a206041737365744d65746164617461476c6f62616c4b6579416c726561647945786973747360206966206120676c6f6261206d657461646174612074797065207769746820606e616d656020616c7265616479206578697374732e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e610704184f7074696f6e04045401e1010108104e6f6e6500000010536f6d650400e1010000010000650700000205020069070c4c706f6c796d6573685f7072696d69746976657320657468657265756d3845636473615369676e6174757265000004006d0701205b75383b2036355d00006d070000034100000008007107083070616c6c65745f61737365744c436c61737369635469636b6572496d706f727400001001246574685f6f776e65723102013c457468657265756d416464726573730001187469636b6572a001185469636b657200012c69735f636f6e747261637419010110626f6f6c00012869735f6372656174656419010110626f6f6c00007507083070616c6c65745f6173736574605469636b6572526567697374726174696f6e436f6e6669670404550120000801446d61785f7469636b65725f6c656e677468080108753800014c726567697374726174696f6e5f6c656e677468f401244f7074696f6e3c553e000079070c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614041737365744d657461646174614b657900010818476c6f62616c04006502015841737365744d65746164617461476c6f62616c4b6579000000144c6f63616c04004902015441737365744d657461646174614c6f63616c4b6579000100007d070c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e1043616c6c04045400011428646973747269627574651c011463615f69647102011043414964000124706f7274666f6c696f8107015c4f7074696f6e3c506f7274666f6c696f4e756d6265723e00012063757272656e6379a001185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e63650001287061796d656e745f61742001184d6f6d656e74000128657870697265735f6174f401384f7074696f6e3c4d6f6d656e743e0000a82501537461727420616e64206174746163682061206361706974616c20646973747269627574696f6e2c20746f20746865204341206964656e746966696564206279206063615f6964602c6501776974682060616d6f756e74602066756e647320696e206063757272656e6379602077697468647261776e2066726f6d2060706f7274666f6c696f602062656c6f6e67696e6720746f20606f726967696e602773204449442e00290154686520646973747269627574696f6e2077696c6c20636f6d6d656e636520617420607061796d656e745f61746020616e64206578706972652061742060657870697265735f6174602cc869662070726f76696465642c206f7220696620604e6f6e65602c207468656e2074686572652773206e6f206578706972792e0025015468652066756e64732077696c6c206265206c6f636b656420696e2060706f7274666f6c696f602066726f6d207768656e206064697374726962757465602069732063616c6c65642e35015768656e2074686572652773206e6f206578706972792c20736f6d652066756e6473206d6179206265206c6f636b656420696e646566696e6974656c7920696e2060706f7274666f6c696f602c150164756520746f20636c61696d616e7473206e6f74207769746864726177696e67206f72206e6f2062656e6566697473206265696e672070757368656420746f207468656d2e2901466f7220696e646976697369626c652063757272656e636965732c20756e6c6f636b656420616d6f756e74732c206f66206c657373207468616e206f6e652077686f6c6520756e69742ca877696c6c206e6f74206265207472616e7366657261626c652066726f6d2060706f7274666f6c696f602e4d01486f77657665722c20696620776520696d6167696e6520746861742075736572732060416c6963656020616e642060426f626020626f74682061726520656e7469746c656420746f20312e3520756e6974732c5101616e64206f6e6c7920726563656976652060316020756e69747320656163682c207468656e2060302e35202b20302e35203d20316020756e69747320617265206c65667420696e2060706f7274666f6c696f602c6c7768696368206973206e6f77207472616e736665727261626c652e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e01012d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e59012d2060706f7274666f6c696f60207370656369666965732074686520706f7274666f6c696f206e756d626572206f6620746865206167656e7420746f20646973747269627574652060616d6f756e74602066726f6d2ef42d206063757272656e63796020746f20776974686472617720616e6420646973747269627574652066726f6d207468652060706f7274666f6c696f602ef82d20607065725f73686172656020616d6f756e74206f66206063757272656e63796020746f20776974686472617720616e6420646973747269627574652e25012020205370656369666965642061732061207065722d6d696c6c696f6e2c20692e652e206031202f2031305e36607468206f66206f6e65206063757272656e63796020746f6b656e2ef02d2060616d6f756e7460206f66206063757272656e63796020746f20776974686472617720616e642064697374726962757465206174206d6f73742e19012d20607061796d656e745f61746020737065636966696573207768656e2062656e6566697473206d617920666972737420626520707573686564206f7220636c61696d65642e29012d2060657870697265735f617460207370656369666965732c2069662070726f76696465642c207768656e2072656d61696e696e672062656e65666974732061726520666f726665697490202020616e64206d6179206265207265636c61696d656420627920606f726967696e602e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed02d2060446973747269627574696e67417373657460206966206063615f69642e7469636b6572203d3d2063757272656e6379602efc2d20604578706972794265666f72655061796d656e74602069662060657870697265735f61742e756e777261702829203c3d207061796d656e745f6174602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ea82d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652ee82d20605265636f72644461746541667465725374617274602069662043412773207265636f72642064617465203e207061796d656e745f61742e31012d2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f662060706f7274666f6c696f602e55012d2060496e73756666696369656e74506f7274666f6c696f42616c616e6365602069662060706f7274666f6c696f6020686173206c657373207468616e2060616d6f756e7460206f66206063757272656e6379602e01012d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e45012d206043414e6f7442656e656669746020696620746865204341206973206e6f74206f66206b696e64205072656469637461626c6542656e656669742f556e7072656469637461626c6542656e65666974003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f14636c61696d04011463615f6964710201104341496400015c0101436c61696d20612062656e65666974206f6620746865206361706974616c20646973747269627574696f6e20617474616368656420746f206063615f6964602e00a8546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5901506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e001101416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e39014d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c98746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e0030232320417267756d656e747345012d20606f726967696e60207768696368206d757374206265206120686f6c646572206f662074686520617373657420616e6420656c696769626c6520666f722074686520646973747269627574696f6e2e01012d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e002023204572726f727325012d2060486f6c646572416c7265616479506169646020696620606f726967696e602773204449442068617320616c7265616479207265636569766564206974732062656e656669742e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec42d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee42d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef42d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e35012d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e35012d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e21012d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e30707573685f62656e6566697408011463615f69647102011043414964000118686f6c6465727c01284964656e746974794964000260f8507573682062656e65666974206f6620616e206f6e676f696e6720646973747269627574696f6e20746f2074686520676976656e2060686f6c646572602e00a8546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5901506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e001101416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e39014d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c98746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e39012d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e7320746f20707573682062656e656669747320666f722e7c2d2060686f6c6465726020746f20707573682062656e656669747320746f2e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec42d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee42d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412edc2d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f74207461726765742060686f6c646572602e35012d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e35012d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e21012d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e1c7265636c61696d04011463615f6964710201104341496400032c90417373756d696e67206120646973747269627574696f6e2068617320657870697265642ce4756e6c6f636b207468652072656d61696e696e6720616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e0030232320417267756d656e747345012d20606f726967696e60207768696368206d757374206265207468652063726561746f72206f6620746865206361706974616c20646973747269627574696f6e207469656420746f206063615f6964602e1d012d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e20746f207265636c61696d20666f722e002023204572726f727319012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602e2d012d2060416c72656164795265636c61696d65646020696620746869732066756e6374696f6e2068617320616c7265616479206265656e2063616c6c6564207375636365737366756c6c792e842d20604e6f74457870697265646020696620606e6f77203c20657870697279602e4c72656d6f76655f646973747269627574696f6e04011463615f6964710201104341496400042cbc52656d6f766573206120646973747269627574696f6e2074686174206861736e27742073746172746564207965742cdc756e6c6f636b696e67207468652066756c6c20616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e49012d206063615f696460206964656e7469666965732074686520434120776974682061206e6f742d7965742d73746172746564206361706974616c20646973747269627574696f6e20746f2072656d6f76652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ebc2d2060446973747269627574696f6e537461727465646020696620607061796d656e745f6174203c3d206e6f77602e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e810704184f7074696f6e04045401e00108104e6f6e6500000010536f6d650400e0000001000085070c3070616c6c65745f617373657428636865636b706f696e741043616c6c040454000110446372656174655f636865636b706f696e740401187469636b6572a001185469636b6572000024c04372656174657320612073696e676c6520636865636b706f696e74206174207468652063757272656e742074696d652e002c2320417267756d656e74732d012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602ea02d20607469636b65726020746f206372656174652074686520636865636b706f696e7420666f722e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e0d012d2060436f756e7465724f766572666c6f77602069662074686520746f74616c20636865636b706f696e7420636f756e74657220776f756c64206f766572666c6f772e707365745f7363686564756c65735f6d61785f636f6d706c65786974790401386d61785f636f6d706c657869747920010c75363400012459015365747320746865206d617820636f6d706c6578697479206f662061207363686564756c652073657420666f7220616e20617262697472617279207469636b657220746f20606d61785f636f6d706c6578697479602eb8546865206e6577206d6178696d756d206973206e6f7420656e666f7263656420726574726f6163746976656c792cb4616e64206f6e6c79206170706c696573206f6e6365206e6577207363686564756c657320617265206d6164652e00a84d7573742062652063616c6c6564206173206120504950202872657175697265732022726f6f7422292e002c2320417267756d656e7473782d20606f726967696e602069732074686520726f6f74206f726967696e2e09012d20606d61785f636f6d706c65786974796020616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365742e3c6372656174655f7363686564756c650801187469636b6572a001185469636b65720001207363686564756c65890701305363686564756c655370656300024ca4437265617465732061207363686564756c652067656e65726174696e6720636865636b706f696e7473d4696e20746865206675747572652061742065697468657220612066697865642074696d65206f7220617420696e74657276616c732e000901546865207363686564756c6520737461727473206f7574207769746820607374726f6e675f7265665f636f756e74287363686564756c655f696429203c2d2030602e002c2320417267756d656e747321012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e982d20607469636b65726020746f2063726561746520746865207363686564756c6520666f722eb02d20607363686564756c656020746861742077696c6c2067656e657261746520636865636b706f696e74732e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e0d012d20605363686564756c654475726174696f6e546f6f53686f72746020696620746865207363686564756c65206475726174696f6e20697320746f6f2073686f72742e21012d2060496e73756666696369656e744163636f756e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c64206e6f7420626520636861726765642e4d012d2060436f756e7465724f766572666c6f776020696620746865207363686564756c65204944206f7220746f74616c20636865636b706f696e7420636f756e7465727320776f756c64206f766572666c6f772e5d012d20604661696c6564546f436f6d707574654e657874436865636b706f696e746020696620746865206e65787420636865636b706f696e7420666f7220607363686564756c656020697320696e2074686520706173742e003423205065726d697373696f6e731c2a2041737365743c72656d6f76655f7363686564756c650801187469636b6572a001185469636b657200010869649d0201285363686564756c654964000338fc52656d6f7665732074686520636865636b706f696e74207363686564756c65206f6620616e206173736574206964656e74696669656420627920606964602e002c2320417267756d656e747321012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e9c2d20607469636b65726020746f2072656d6f766520746865207363686564756c652066726f6d2e09012d2060696460206f6620746865207363686564756c652c207768656e2069742077617320637265617465642062792060637265617465645f7363686564756c65602e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e41012d20604e6f436865636b706f696e745363686564756c6560206966206069646020646f6573206e6f74206964656e746966792061207363686564756c6520666f72207468697320607469636b6572602ef42d20605363686564756c654e6f7452656d6f7661626c656020696620606964602065786973747320627574206973206e6f742072656d6f7661626c652e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e89070c3070616c6c65745f617373657428636865636b706f696e74305363686564756c655370656300000c01147374617274f401384f7074696f6e3c4d6f6d656e743e000118706572696f649502013843616c656e646172506572696f6400012472656d61696e696e6710010c75333200008d07086470616c6c65745f636f6d706c69616e63655f6d616e616765721043616c6c040454000124686164645f636f6d706c69616e63655f726571756972656d656e740c01187469636b6572a001185469636b657200014473656e6465725f636f6e646974696f6e73a90201385665633c436f6e646974696f6e3e00014c72656365697665725f636f6e646974696f6e73a90201385665633c436f6e646974696f6e3e00002c050141646473206120636f6d706c69616e636520726571756972656d656e7420746f20616e206173736574277320636f6d706c69616e6365206279207469636b65722ef849662074686520636f6d706c69616e636520726571756972656d656e742069732061206475706c69636174652c20697420646f6573206e6f7468696e672e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574c42a2073656e6465725f636f6e646974696f6e73202d2053656e646572207472616e7366657220636f6e646974696f6e732ed42a2072656365697665725f636f6e646974696f6e73202d205265636569766572207472616e7366657220636f6e646974696f6e732e003423205065726d697373696f6e731c2a2041737365747472656d6f76655f636f6d706c69616e63655f726571756972656d656e740801187469636b6572a001185469636b6572000108696410010c753332000124f052656d6f766573206120636f6d706c69616e636520726571756972656d656e742066726f6d20616e206173736574277320636f6d706c69616e63652e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574f02a206964202d20436f6d706c69616e636520726571756972656d656e74206964207768696368206973206e65656420746f2062652072656d6f766564003423205065726d697373696f6e731c2a204173736574607265706c6163655f61737365745f636f6d706c69616e63650801187469636b6572a001185469636b657200014061737365745f636f6d706c69616e6365d10201685665633c436f6d706c69616e6365526571756972656d656e743e00023cfc5265706c6163657320616e206173736574277320636f6d706c69616e6365206279207469636b657220776974682061206e657720636f6d706c69616e63652e00fc436f6d706c69616e636520726571756972656d656e74732077696c6c20626520736f727465642028617363656e64696e6720627920696429206265666f72658c7265706c6163696e67207468652063757272656e7420726571756972656d656e74732e002c2320417267756d656e7473782a20607469636b657260202d20746865206173736574207469636b65722cbc2a206061737365745f636f6d706c69616e6365202d20746865206e657720617373657420636f6d706c69616e63652e002023204572726f7273f02a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722eb1012a20604475706c69636174654173736574436f6d706c69616e636560206966206061737365745f636f6d706c69616e63656020636f6e7461696e73206d756c7469706c6520656e74726965732077697468207468652073616d652060726571756972656d656e745f6964602e003423205065726d697373696f6e731c2a2041737365745872657365745f61737365745f636f6d706c69616e63650401187469636b6572a001185469636b65720003207452656d6f76657320616e206173736574277320636f6d706c69616e6365002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a2041737365745870617573655f61737365745f636f6d706c69616e63650401187469636b6572a001185469636b657200042011015061757365732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a2041737365745c726573756d655f61737365745f636f6d706c69616e63650401187469636b6572a001185469636b65720005201501526573756d65732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a204173736574806164645f64656661756c745f747275737465645f636c61696d5f6973737565720801187469636b6572a001185469636b6572000118697373756572c102013454727573746564497373756572000624f84164647320616e6f746865722064656661756c74207472757374656420636c61696d2069737375657220617420746865207469636b6572206c6576656c2e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742ec82a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e003423205065726d697373696f6e731c2a2041737365748c72656d6f76655f64656661756c745f747275737465645f636c61696d5f6973737565720801187469636b6572a001185469636b65720001186973737565727c01284964656e746974794964000724750152656d6f7665732074686520676976656e2060697373756572602066726f6d2074686520736574206f662064656661756c74207472757374656420636c61696d206973737565727320617420746865207469636b6572206c6576656c2e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742ec82a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e003423205065726d697373696f6e731c2a204173736574746368616e67655f636f6d706c69616e63655f726571756972656d656e740801187469636b6572a001185469636b657200011c6e65775f726571a5020154436f6d706c69616e6365526571756972656d656e74000824f04d6f6469667920616e206578697374696e6720636f6d706c69616e636520726571756972656d656e74206f66206120676976656e207469636b65722e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742e8c2a206e65775f726571202d20436f6d706c69616e636520726571756972656d656e742e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e9107086070616c6c65745f636f72706f726174655f616374696f6e731043616c6c040454000124587365745f6d61785f64657461696c735f6c656e6774680401186c656e67746810010c753332000008d053657420746865206d617820606c656e67746860206f66206064657461696c736020696e207465726d73206f662062797465732e744d6179206f6e6c792062652063616c6c6564207669612061205049502e4c7365745f64656661756c745f746172676574730801187469636b6572a001185469636b657200011c74617267657473d90201405461726765744964656e746974696573000134cc536574207468652064656661756c7420434120605461726765744964656e7469746965736020746f206074617267657473602e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ee42d20607469636b65726020666f72207768696368207468652064656661756c74206964656e74697469657320617265206368616e67696e672ecc2d20607461726765747360207468652064656661756c7420746172676574206964656e74697469657320666f7220612043412e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e31012d2060546f6f4d616e79546172676574496473602069662060746172676574732e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e003423205065726d697373696f6e731c2a2041737365746c7365745f64656661756c745f77697468686f6c64696e675f7461780801187469636b6572a001185469636b657200010c7461787d02010c5461780002303d01536574207468652064656661756c742077697468686f6c64696e672074617820666f7220616c6c204449447320616e64204341732072656c6576616e7420746f207468697320607469636b6572602e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ec82d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2e05012d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e003423205065726d697373696f6e731c2a2041737365745c7365745f6469645f77697468686f6c64696e675f7461780c01187469636b6572a001185469636b657200012474617865645f6469647c01284964656e74697479496400010c746178e102012c4f7074696f6e3c5461783e000340f4536574207468652077697468686f6c64696e6720746178206f6620607469636b65726020666f72206074617865645f6469646020746f2060746178602e810149662060536f6d652874617829602c2074686973206f7665727269646573207468652064656661756c742077697468686f6c64696e6720746178206f6620607469636b65726020746f20607461786020666f72206074617865645f646964602efc4f74686572776973652c20696620604e6f6e65602c207468652064656661756c742077697468686f6c64696e67207461782077696c6c20626520757365642e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ec82d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2ee42d206074617865645f6469646020746861742077696c6c2068617665206974732077697468686f6c64696e672074617820757064617465642e05012d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e81012d2060546f6f4d616e794469645461786573602069662060536f6d6528746178296020616e6420616464696e6720746865206f7665727269646520776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e003423205065726d697373696f6e731c2a20417373657464696e6974696174655f636f72706f726174655f616374696f6e2001187469636b6572a001185469636b65720001106b696e64e902011843414b696e640001246465636c5f646174652001184d6f6d656e7400012c7265636f72645f64617465950701584f7074696f6e3c5265636f726444617465537065633e00011c64657461696c7301030124434144657461696c7300011c746172676574739d0701604f7074696f6e3c5461726765744964656e7469746965733e00015c64656661756c745f77697468686f6c64696e675f746178e102012c4f7074696f6e3c5461783e00013c77697468686f6c64696e675f746178a10701784f7074696f6e3c5665633c284964656e7469747949642c20546178293e3e0004784901496e69746961746573206120434120666f7220607469636b657260206f6620606b696e64602077697468206064657461696c736020616e64206f746865722070726f766964656420617267756d656e74732e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732e8c2d20607469636b657260207468617420746865204341206973206d61646520666f722e7c2d20606b696e6460206f66204341206265696e6720696e697469617465642e982d20606465636c5f6461746560206f66204341206272696e6720696e697469616c697a65642ef02d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f6620746869732043412e610120202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e4d012d206064657461696c7360206f662074686520434120696e20667265652d7465787420666f726d2c20757020746f2061206365727461696e206e756d626572206f6620627974657320696e206c656e6774682ef42d206074617267657473602c20696620616e792c20776869636820746869732043412069732072656c6576616e742f697272656c6576616e7420746f2e49012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f7461726765747360292e5d012d206064656661756c745f77697468686f6c64696e675f746178602c20696620616e792c206973207468652064656661756c742077697468686f6c64696e672074617820746f2075736520666f7220746869732043412e69012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f77697468686f6c64696e675f74617860292e21012d206077697468686f6c64696e675f746178602c20696620616e792c2070726f7669646573207065722d4449442077697468686f6c64696e6720746178206f76657272696465732e59012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f6469645f77697468686f6c64696e675f74617860292e002023204572726f72731d012d206044657461696c73546f6f4c6f6e6760206966206064657461696c732e6c656e28296020676f6573206265796f6e6420606d61785f64657461696c735f6c656e677468602e25012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e69012d2060436f756e7465724f766572666c6f776020696e2074686520756e6c696b656c79206576656e74207468617420736f206d616e79204341732077657265206372656174656420666f72207468697320607469636b6572602cf820207468617420696e7465676572206f766572666c6f7720776f756c642068617665206f63637572656420696620696e737465616420616c6c6f7765642e75012d2060546f6f4d616e79446964546178657360206966206077697468686f6c64696e675f7461782e756e7772617028292e6c656e28296020776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e01012d20604475706c69636174654469645461786020696620612044494420697320696e636c75646564206d6f7265207468616e206f6e636520696e20607774602e55012d2060546f6f4d616e79546172676574496473602069662060746172676574732e756e7772617028292e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e01012d20604465636c44617465496e4675747572656020696620746865206465636c61726174696f6e2064617465206973206e6f7420696e2074686520706173742e51012d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e003423205065726d697373696f6e731c2a2041737365742c6c696e6b5f63615f646f6308010869647102011043414964000110646f63730503013c5665633c446f63756d656e7449643e000548ac4c696e6b2074686520676976656e204341206069646020746f2074686520676976656e2060646f6373602ef4416e792070726576696f7573206c696e6b7320666f7220746865204341206172652072656d6f76656420696e206661766f72206f662060646f6373602e00550154686520776f726b666c6f77206865726520697320746f206164642074686520646f63756d656e747320616e6420696e6974696174696e672074686520434120696e20616e79206f7264657220646573697265642ec44f6e636520626f74682065786973742c20746865792063616e206e6f77206265206c696e6b656420746f6765746865722e0030232320417267756d656e747351012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206069642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732ea82d2060696460206f662074686520434120746f206173736f636961746520776974682060646f6373602eb02d2060646f63736020746f206173736f6369617465207769746820746865204341207769746820606964602e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e19012d20604e6f53756368446f636020696620616e79206f662060646f63736020646f6573206e6f74206964656e7469667920616e206578697374696e6720646f63756d656e742e003423205065726d697373696f6e731c2a2041737365742472656d6f76655f636104011463615f696471020110434149640006489452656d6f76657320746865204341206964656e746966696564206279206063615f6964602e00c44173736f63696174656420646174612c207375636820617320646f63756d656e74206c696e6b732c2062616c6c6f74732cac616e64206361706974616c20646973747269627574696f6e732061726520616c736f2072656d6f7665642e00d4416e79207363686564756c65206173736f636961746564207769746820746865207265636f726420646174652077696c6c20736565b0607374726f6e675f7265665f636f756e74287363686564756c655f696429602064656372656d656e7465642e0030232320417267756d656e74735d012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e782d206063615f696460206f662074686520434120746f2072656d6f76652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e003423205065726d697373696f6e731c2a204173736574486368616e67655f7265636f72645f6461746508011463615f6964710201104341496400012c7265636f72645f64617465950701584f7074696f6e3c5265636f726444617465537065633e00073ce04368616e67657320746865207265636f72642064617465206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e74735d012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e742d206063615f696460206f662074686520434120746f20616c7465722eec2d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f66207468652043412e610120202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e51012d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e003423205065726d697373696f6e731c2a204173736574a0696e6974696174655f636f72706f726174655f616374696f6e5f616e645f646973747269627574651c011c63615f61726773a507016c496e697469617465436f72706f72617465416374696f6e41726773000124706f7274666f6c696f8107015c4f7074696f6e3c506f7274666f6c696f4e756d6265723e00012063757272656e6379a001185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e63650001287061796d656e745f61742001184d6f6d656e74000128657870697265735f6174f401384f7074696f6e3c4d6f6d656e743e0008041d015574696c6974792065787472696e73696320746f2062617463682060696e6974696174655f636f72706f726174655f616374696f6e6020616e64206064697374726962757465600c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e950704184f7074696f6e0404540199070108104e6f6e6500000010536f6d650400990700000100009907086070616c6c65745f636f72706f726174655f616374696f6e73385265636f7264446174655370656300010c245363686564756c656404002001184d6f6d656e74000000404578697374696e675363686564756c6504009d0201285363686564756c654964000100204578697374696e67040089020130436865636b706f696e744964000200009d0704184f7074696f6e04045401d9020108104e6f6e6500000010536f6d650400d9020000010000a10704184f7074696f6e04045401f9020108104e6f6e6500000010536f6d650400f9020000010000a507086070616c6c65745f636f72706f726174655f616374696f6e736c496e697469617465436f72706f72617465416374696f6e4172677300002001187469636b6572a001185469636b65720001106b696e64e902011843414b696e640001246465636c5f646174652001184d6f6d656e7400012c7265636f72645f64617465950701584f7074696f6e3c5265636f726444617465537065633e00011c64657461696c7301030124434144657461696c7300011c746172676574739d0701604f7074696f6e3c5461726765744964656e7469746965733e00015c64656661756c745f77697468686f6c64696e675f746178e102012c4f7074696f6e3c5461783e00013c77697468686f6c64696e675f746178a10701784f7074696f6e3c5665633c284964656e7469747949642c20546178293e3e0000a9070c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f741043616c6c040454000118346174746163685f62616c6c6f7410011463615f6964710201104341496400011472616e67650d03013c42616c6c6f7454696d6552616e67650001106d6574611103012842616c6c6f744d65746100010c72637619010110626f6f6c000068e8417474616368206120636f72706f726174652062616c6c6f7420746f20746865204341206964656e746966696564206279206063615f6964602e00ac5468652062616c6c6f742077696c6c2061646d697420766f7465732077697468696e206072616e6765602eb05468652062616c6c6f742773206d657461646174612069732070726f766964656420627920606d657461602c0501776869636820696e636c75646573207468652062616c6c6f74207469746c652c20746865206d6f74696f6e732c2074686569722063686f696365732c206574632e7853656520746865206042616c6c6f744d6574616020666f72206d6f72652e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602ed02d206063615f696460206964656e7469666965732074686520434120746f20617474616368207468652062616c6c6f7420746f2ec02d206072616e67656020737065636966696573207768656e20766f74696e672073746172747320616e6420656e64732eec2d20606d6574616020737065636966696573207468652062616c6c6f742773206d657461646174612061732061666f72656d656e74696f6e65642ee42d2060726376602073706563696669657320776865746865722052435620697320656e61626c656420666f7220746869732062616c6c6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef02d206043414e6f744e6f746963656020696620746865204341206973206e6f74206f662074686520604973737565724e6f7469636560206b696e642ebc2d206053746172744166746572456e6460206966206072616e67652e7374617274203e2072616e67652e656e64602e29012d20604e6f774166746572456e646020696620606e6f77203e2072616e67652e656e646020776865726520606e6f7760206973207468652063757272656e742074696d657374616d702ea82d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652e59012d20605265636f7264446174654166746572537461727460206966206064617465203e2072616e67652e73746172746020776865726520606461746560206973207468652043412773207265636f726420646174652eb82d2060416c726561647945786973747360206966207468657265277320612062616c6c6f7420616c72656164792e31012d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e09012d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e01012d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e10766f746508011463615f69647102011043414964000114766f7465733103013c5665633c42616c6c6f74566f74653e0001441101436173742060766f7465736020696e207468652062616c6c6f7420617474616368656420746f20746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747309012d20606f726967696e60207768696368206d7573742062652061207065726d697373696f6e6564207369676e6572207461726765746564206279207468652043412eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e21012d2060766f7465736020737065636966696573207468652062616c616e63657320746f2061737369676e20746f20656163682063686f69636520696e207468652062616c6c6f742e55012020205468652066756c6c20766f74696e6720706f776572206f6620606f726967696e60277320444944206d6179206265207573656420666f722065616368206d6f74696f6e20696e207468652062616c6c6f742e002023204572726f7273dc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742efc2d2060566f74696e674e6f7453746172746564602069662074686520766f74696e6720706572696f64206861736e277420636f6d6d656e636564207965742ed82d2060566f74696e67416c7265616479456e646564602069662074686520766f74696e6720706572696f642068617320656e6465642e5d012d206057726f6e67566f7465436f756e746020696620746865206e756d626572206f662063686f6963657320696e207468652062616c6c6f7420646f6573206e6f74206d617463682060766f7465732e6c656e2829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef42d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e21012d2060496e73756666696369656e74566f746573602069662074686520766f74696e6720706f776572207573656420666f7220616e79206d6f74696f6e20696e2060766f74657360a42020206578636565647320606f726967696e60277320444944277320766f74696e6720706f7765722e286368616e67655f656e6408011463615f6964710201104341496400010c656e642001184d6f6d656e740002300501416d656e642074686520656e642064617465206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ec42d2060656e64602073706563696669657320746865206e657720656e642064617465206f66207468652062616c6c6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e8c2d206053746172744166746572456e646020696620607374617274203e20656e64602e2c6368616e67655f6d65746108011463615f696471020110434149640001106d6574611103012842616c6c6f744d6574610003346101416d656e6420746865206d6574616461746120287469746c652c206d6f74696f6e732c206574632e29206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e902d20606d657461602073706563696669657320746865206e6577206d657461646174612e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e31012d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e09012d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e286368616e67655f72637608011463615f6964710201104341496400010c72637619010110626f6f6c00042c0501416d656e642052435620737570706f727420666f72207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ecc2d206072637660207370656369666965732069662052435620697320746f20626520737570706f72746564206f72206e6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e3472656d6f76655f62616c6c6f7404011463615f69647102011043414964000528c852656d6f7665207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ead07082c70616c6c65745f706970731043616c6c040454000144647365745f7072756e655f686973746f726963616c5f706970730401147072756e6519010110626f6f6c000014a44368616e6765207768657468657220636f6d706c65746564205049507320617265207072756e65642e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473f02a20607072756e656020737065636966696573207768657468657220636f6d706c6574656420504950732073686f756c64206265207072756e65642e607365745f6d696e5f70726f706f73616c5f6465706f73697404011c6465706f73697418011c42616c616e636500011421014368616e676520746865206d696e696d756d2070726f706f73616c206465706f73697420616d6f756e7420726571756972656420746f20737461727420612070726f706f73616c2e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473f02a20606465706f7369746020746865206e6577206d696e206465706f73697420726571756972656420746f20737461727420612070726f706f73616c707365745f64656661756c745f656e6163746d656e745f706572696f640401206475726174696f6e100138543a3a426c6f636b4e756d626572000214904368616e6765207468652064656661756c7420656e6163746d656e7420706572696f642e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e747369012a20606475726174696f6e6020746865206e65772064656661756c7420656e6163746d656e7420706572696f642069742074616b657320666f722061207363686564756c65642050495020746f2062652065786563757465642e587365745f70656e64696e675f7069705f657870697279040118657870697279390101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e00031805014368616e67652074686520616d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020697320657870697265642eb4496620606578706972796020697320604e6f6e6560207468656e2050495073206e65766572206578706972652e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e74731d012a2060657870697279602074686520626c6f636b2d74696d652069742074616b657320666f722061207374696c6c2d6050656e64696e67602050495020746f206578706972652e587365745f6d61785f7069705f736b69705f636f756e7404010c6d6178080130536b6970706564436f756e74000414d44368616e676520746865206d6178696d756d20736b697020636f756e742028606d61785f7069705f736b69705f636f756e7460292e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473ec2a20606d61786020736b697073206265666f72652061205049502063616e6e6f7420626520736b697070656420627920474320616e796d6f72652e507365745f6163746976655f7069705f6c696d69740401146c696d697410010c75333200051469014368616e676520746865206d6178696d756d206e756d626572206f66206163746976652050495073206265666f726520636f6d6d756e697479206d656d626572732063616e6e6f742070726f706f736520616e797468696e672e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473902a20606c696d697460206f6620636f6e63757272656e742061637469766520504950732e1c70726f706f736510012070726f706f73616cdd050140426f783c543a3a50726f706f73616c3e00011c6465706f73697418011c42616c616e636500010c75726c5102012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e510301584f7074696f6e3c5069704465736372697074696f6e3e000624050141206e6574776f726b206d656d6265722063726561746573206120504950206279207375626d697474696e67206120646973706174636861626c6520776869636855016368616e67657320746865206e6574776f726b20696e20736f6d657761792e2041206d696e696d756d206465706f73697420697320726571756972656420746f206f70656e2061206e65772070726f706f73616c2e002c2320417267756d656e7473c82a206070726f706f73657260206973206569746865722061207369676e696e67206b6579206f7220636f6d6d69747465652e65012020205573656420746f20756e6465727374616e6420776865746865722074686973206973206120636f6d6d69747465652070726f706f73616c20616e6420766572696669656420616761696e737420606f726967696e602e802a206070726f706f73616c60206120646973706174636861626c652063616c6c45012a20606465706f73697460206d696e696d756d206465706f7369742076616c75652c2077686963682069732069676e6f726564206966206070726f706f73657260206973206120636f6d6d69747465652ecc2a206075726c602061206c696e6b20746f2061207765627369746520666f722070726f706f73616c2064697363757373696f6e10766f74650c010869644d03011450697049640001286179655f6f725f6e617919010110626f6f6c00011c6465706f73697418011c42616c616e63650007481d01566f74652065697468657220696e206661766f722028606179655f6f725f6e617960203d3d207472756529206f7220616761696e7374206120504950207769746820606964602e4d015468652022636f6e76696e6374696f6e22206f7220737472656e677468206f662074686520766f746520697320676976656e20627920606465706f736974602c2077686963682069732072657365727665642e008c4e6f746520746861742060766f746560206973202a6e6f742a2061646469746976652ef8546861742069732c2060766f74652869642c20747275652c203530296020666f6c6c6f7765642062792060766f74652869642c20747275652c2034302960490177696c6c2066697273742072657365727665206035306020616e64207468656e20726566756e6420603530202d203130602c20656e64696e672075702077697468206034306020696e206465706f7369742e2501546f206164642061746f70206f66206578697374696e6720766f7465732c20796f75276c6c206e65656420606578697374696e675f6465706f736974202b206164646974696f6e602e002c2320417267756d656e74734c2a20606964602c2070726f706f73616c206964dc2a20606179655f6f725f6e6179602c206120626f6f6c20726570726573656e74696e6720666f72206f7220616761696e737420766f7465e82a20606465706f736974602c207468652022636f6e76696374696f6e2220776974682077686963682074686520766f7465206973206d6164652e002023204572726f7273e42a20604e6f5375636850726f706f73616c60206966206069646020646f65736e2774207265666572656e636520612076616c6964205049502ee42a20604e6f7446726f6d436f6d6d756e697479602069662070726f706f73616c20776173206d616465206279206120636f6d6d69747465652ec02a2060496e636f727265637450726f706f73616c537461746560206966205049502069736e27742070656e64696e672e2d012a2060496e73756666696369656e744465706f7369746020696620606f726967696e602063616e6e6f74207265736572766520606465706f736974202d206f6c645f6465706f736974602e68617070726f76655f636f6d6d69747465655f70726f706f73616c04010869644d030114506970496400081cd4417070726f766573207468652070656e64696e6720636f6d6d69747465652050495020676976656e2062792074686520606964602e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ee42a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c2069736e27742070656e64696e672ee02a20604e6f744279436f6d6d697474656560206966207468652070726f706f73616c2069736e2774206279206120636f6d6d69747465652e3c72656a6563745f70726f706f73616c04010869644d0301145069704964000920f852656a65637473207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e7920626f6e6465642066756e64732cb8617373756d696e67206974206861736e2774206265656e2063616e63656c6c6564206f722065786563757465642e05014e6f746520746861742070726f706f73616c73207363686564756c65642d666f722d657865637574696f6e2063616e20616c736f2062652072656a65637465642e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742e15012a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c207761732063616e63656c6c6564206f722065786563757465642e387072756e655f70726f706f73616c04010869644d0301145069704964000a2429015072756e65207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e792066756e6473206e6f7420616c726561647920726566756e6465642e6454686520504950206d6179206e6f7420626520616374697665000901546869732066756e6374696f6e20697320696e74656e64656420666f722073746f72616765206761726261676520636f6c6c656374696f6e20707572706f7365732e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ed42a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c206973206163746976652e5072657363686564756c655f657865637574696f6e08010869644d0301145069704964000114756e74696c250601584f7074696f6e3c543a3a426c6f636b4e756d6265723e000b24e0557064617465732074686520657865637574696f6e207363686564756c65206f66207468652050495020676976656e20627920606964602e002c2320417267756d656e747331012a2060756e74696c6020646566696e6573207468652066757475726520626c6f636b2077686572652074686520656e6163746d656e7420706572696f642077696c6c2066696e69736865642e4501202020604e6f6e65602076616c7565206d65616e73207468617420656e6163746d656e7420706572696f6420697320676f696e6720746f2066696e69736820696e20746865206e65787420626c6f636b2e002023204572726f727339012a206052657363686564756c654e6f74427952656c65617365436f6f7264696e61746f726020756e6c657373207472696767657265642062792072656c6561736520636f6f7264696e61746f722e21012a2060496e636f727265637450726f706f73616c53746174656020756e6c657373207468652070726f706f73616c2077617320696e2061207363686564756c65642073746174652e38636c6561725f736e617073686f74000c10e8436c656172732074686520736e617073686f7420616e6420656d69747320746865206576656e742060536e617073686f74436c6561726564602e002023204572726f72733d012a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e20736e617073686f74000d140d0154616b65732061206e657720736e617073686f74206f66207468652063757272656e74206c697374206f66206163746976652026262070656e64696e6720504950732e2901546865205049507320617265207468656e20736f7274656420696e746f2061207072696f72697479207175657565206261736564206f6e2065616368205049502773207765696768742e002023204572726f72733d012a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e58656e6163745f736e617073686f745f726573756c747304011c726573756c7473b10701705665633c2850697049642c20536e617073686f74526573756c74293e000e44d0456e616374732060726573756c74736020666f7220746865205049507320696e2074686520736e617073686f742071756575652e290154686520736e617073686f742077696c6c20626520617661696c61626c6520666f72206675727468657220656e6163746d656e747320756e74696c20697420697320636c65617265642e0055015468652060726573756c7473602061726520656e636f6465642061206c697374206f6620602869642c20726573756c7429602077686572652060726573756c7460206973206170706c69656420746f20606964602e49014e6f746520746861742074686520736e617073686f74207072696f7269747920717565756520697320656e636f646564207769746820746865202a6c6f77657374207072696f726974792066697273742a2e5501736f2060726573756c7473203d205b2869642c20417070726f7665295d602077696c6c20617070726f76652060536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20315d602e002023204572726f72730d012a20604261644f726967696e60202d20756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2e21012a206043616e6e6f74536b697050697060202d206120676976656e205049502068617320616c7265616479206265656e20736b697070656420746f6f206d616e792074696d65732e0d012a2060536e617073686f74526573756c74546f6f4c6172676560202d206f6e206c656e28726573756c747329203e206c656e28736e617073686f745f7175657565292e702a2060536e617073686f7449644d69736d6174636860202d2069663a2420206060607465787498202020e2888320286920e2888820302e2e536e617073686f7451756575652e6c656e2829292efc2020202020726573756c74735b695d2e3020e289a020536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20695d2e6964142020606060f8202020546869732069732070726f746563747320616761696e737420636c656172696e67207175657565207768696c6520474320697320766f74696e672e54657865637574655f7363686564756c65645f70697004010869644d0301145069704964000f04d8496e7465726e616c20646973706174636861626c6520746861742068616e646c657320657865637574696f6e206f662061205049502e506578706972655f7363686564756c65645f70697008010c6469647c01284964656e74697479496400010869644d0301145069704964001004dc496e7465726e616c20646973706174636861626c6520746861742068616e646c65732065787069726174696f6e206f662061205049502e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652eb107000002b50700b507000004084d03b90700b907082c70616c6c65745f7069707338536e617073686f74526573756c7400010c1c417070726f76650000001852656a65637400010010536b697000020000bd07084070616c6c65745f706f7274666f6c696f1043616c6c040454000118406372656174655f706f7274666f6c696f0401106e616d6585030134506f7274666f6c696f4e616d65000004a843726561746573206120706f7274666f6c696f20776974682074686520676976656e20606e616d65602e4064656c6574655f706f7274666f6c696f04010c6e756de0013c506f7274666f6c696f4e756d626572000120350144656c657465732061207573657220706f7274666f6c696f2e204120706f7274666f6c696f2063616e2062652064656c65746564206f6e6c7920696620697420686173206e6f2066756e64732e002023204572726f72731d012a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2ef02a2060506f7274666f6c696f4e6f74456d707479602069662074686520706f7274666f6c696f207374696c6c20686f6c647320616e79206173736574003423205065726d697373696f6e732c2a20506f7274666f6c696f506d6f76655f706f7274666f6c696f5f66756e64730c011066726f6dd8012c506f7274666f6c696f4964000108746fd8012c506f7274666f6c696f49640001146974656d73c10701585665633c4d6f7665506f7274666f6c696f4974656d3e00023c5d014d6f766573206120746f6b656e20616d6f756e742066726f6d206f6e6520706f7274666f6c696f206f6620616e206964656e7469747920746f20616e6f7468657220706f7274666f6c696f206f66207468652073616d65e06964656e746974792e204d7573742062652063616c6c65642062792074686520637573746f6469616e206f66207468652073656e6465722e110146756e64732066726f6d2064656c6574656420706f7274666f6c696f732063616e20616c736f206265207265636f7665726564207669612074686973206d6574686f642e00e0412073686f7274206d656d6f2063616e20626520616464656420746f20746f206561636820746f6b656e20616d6f756e74206d6f7665642e002023204572726f727369012a2060506f7274666f6c696f446f65734e6f74457869737460206966206f6e65206f7220626f7468206f662074686520706f7274666f6c696f73207265666572656e636520616e20696e76616c696420706f7274666f6c696f2e51012a206064657374696e6174696f6e5f69735f73616d655f706f7274666f6c696f6020696620626f74682073656e64657220616e6420726563656976657220706f7274666f6c696f20617265207468652073616d6591012a2060446966666572656e744964656e74697479506f7274666f6c696f7360206966207468652073656e64657220616e6420726563656976657220706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e74697469657349012a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f66207468652066726f6d20706f7274666f6c696f41012a2060496e73756666696369656e74506f7274666f6c696f42616c616e636560206966207468652073656e64657220646f6573206e6f74206861766520656e6f75676820667265652062616c616e6365003423205065726d697373696f6e732c2a20506f7274666f6c696f4072656e616d655f706f7274666f6c696f08010c6e756de0013c506f7274666f6c696f4e756d62657200011c746f5f6e616d6585030134506f7274666f6c696f4e616d6500031c8052656e616d65732061206e6f6e2d64656661756c7420706f7274666f6c696f2e002023204572726f72731d012a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2e003423205065726d697373696f6e732c2a20506f7274666f6c696f58717569745f706f7274666f6c696f5f637573746f647904010c706964d8012c506f7274666f6c696f4964000420bc5768656e2063616c6c65642062792074686520637573746f6469616e206f662060706f7274666f6c696f5f6964602c4901616c6c6f77732072657475726e696e672074686520637573746f6479206f662074686520706f7274666f6c696f20746f2074686520706f7274666f6c696f206f776e657220756e696c61746572616c6c792e002023204572726f72735d012a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f74207468652063757272656e7420637573746f6469616e206f662060706f7274666f6c696f5f6964602e003423205065726d697373696f6e732c2a20506f7274666f6c696f606163636570745f706f7274666f6c696f5f637573746f647904011c617574685f696420010c7536340005000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ec107000002c50700c507084070616c6c65745f706f7274666f6c696f444d6f7665506f7274666f6c696f4974656d00000c01187469636b6572a001185469636b6572000118616d6f756e7418011c42616c616e63650001106d656d6f8001304f7074696f6e3c4d656d6f3e0000c907084c70616c6c65745f70726f746f636f6c5f6665651043616c6c040454000108486368616e67655f636f656666696369656e7404012c636f656666696369656e7495030120506f73526174696f000010c04368616e676573207468652066656520636f656666696369656e7420666f722074686520726f6f74206f726967696e2e002023204572726f7273882a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e3c6368616e67655f626173655f6665650801086f70cd07012850726f746f636f6c4f70000120626173655f66656518011c42616c616e6365000110ac4368616e67657320746865206120626173652066656520666f722074686520726f6f74206f726967696e2e002023204572726f7273882a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ecd070c64706f6c796d6573685f636f6d6d6f6e5f7574696c69746965733070726f746f636f6c5f6665652850726f746f636f6c4f700001344c417373657452656769737465725469636b65720000002841737365744973737565000100444173736574416464446f63756d656e7473000200404173736574437265617465417373657400030060436865636b706f696e744372656174655363686564756c65000400a4436f6d706c69616e63654d616e61676572416464436f6d706c69616e6365526571756972656d656e74000500584964656e746974794364645265676973746572446964000600404964656e74697479416464436c61696d000700a44964656e746974794164645365636f6e646172794b65797357697468417574686f72697a6174696f6e0008002c5069707350726f706f736500090040436f6e747261637473507574436f6465000a006c436f72706f7261746542616c6c6f7441747461636842616c6c6f74000b00744361706974616c446973747269627574696f6e44697374726962757465000c0000d1070c4070616c6c65745f7363686564756c65721870616c6c65741043616c6c040454000118207363686564756c651001107768656e100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963d50701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cdd050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e00002870416e6f6e796d6f75736c79207363686564756c652061207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c738c2d2042617365205765696768743a2032322e3239202b202e313236202a205320c2b573302d204442205765696768743a48202020202d20526561643a204167656e64614c202020202d2057726974653a204167656e646139012d2057696c6c20757365206261736520776569676874206f662032352077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e1863616e63656c0801107768656e100138543a3a426c6f636b4e756d626572000114696e64657810010c7533320001289443616e63656c20616e20616e6f6e796d6f75736c79207363686564756c6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73902d2042617365205765696768743a2032322e3135202b20322e383639202a205320c2b573302d204442205765696768743a48202020202d20526561643a204167656e64616c202020202d2057726974653a204167656e64612c204c6f6f6b75703d012d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e387363686564756c655f6e616d6564140108696428011c5665633c75383e0001107768656e100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963d50701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cdd050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000228585363686564756c652061206e616d6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73882d2042617365205765696768743a2032392e36202b202e313539202a205320c2b573302d204442205765696768743a68202020202d20526561643a204167656e64612c204c6f6f6b75706c202020202d2057726974653a204167656e64612c204c6f6f6b757049012d2057696c6c20757365206261736520776569676874206f662033352077686963682073686f756c6420626520676f6f6420666f72206d6f7265207468616e203330207363686564756c65642063616c6c732c23203c2f7765696768743e3063616e63656c5f6e616d6564040108696428011c5665633c75383e0003287843616e63656c2061206e616d6564207363686564756c6564207461736b2e002823203c7765696768743e9c2d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73902d2042617365205765696768743a2032342e3931202b20322e393037202a205320c2b573302d204442205765696768743a68202020202d20526561643a204167656e64612c204c6f6f6b75706c202020202d2057726974653a204167656e64612c204c6f6f6b75703d012d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c732c23203c2f7765696768743e387363686564756c655f61667465721001146166746572100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963d50701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cdd050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000414a8416e6f6e796d6f75736c79207363686564756c652061207461736b20616674657220612064656c61792e002823203c7765696768743e5453616d65206173205b607363686564756c65605d2e2c23203c2f7765696768743e507363686564756c655f6e616d65645f6166746572140108696428011c5665633c75383e0001146166746572100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963d50701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cdd050160426f783c3c5420617320436f6e6669673e3a3a43616c6c3e000514905363686564756c652061206e616d6564207461736b20616674657220612064656c61792e002823203c7765696768743ec453616d65206173205b607363686564756c655f6e616d6564605d2853656c663a3a7363686564756c655f6e616d6564292e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ed50704184f7074696f6e040454019d030108104e6f6e6500000010536f6d6504009d030000010000d907084470616c6c65745f736574746c656d656e741043616c6c040454000144306372656174655f76656e75650c011c64657461696c73a903013056656e756544657461696c7300011c7369676e657273ec01445665633c543a3a4163636f756e7449643e00010c747970ad03012456656e756554797065000014585265676973746572732061206e65772076656e75652e00a42a206064657461696c7360202d2045787472612064657461696c732061626f757420612076656e75653d012a20607369676e65727360202d204172726179206f66207369676e65727320746861742061726520616c6c6f77656420746f207369676e20726563656970747320666f7220746869732076656e7565942a206074797060202d2054797065206f662076656e7565206265696e672063726561746564507570646174655f76656e75655f64657461696c730801086964a503011c56656e7565496400011c64657461696c73a903013056656e756544657461696c730001105c4564697420612076656e756527732064657461696c732e00b42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742ec02a206064657461696c7360207370656369666965732074686520757064617465642076656e75652064657461696c732e447570646174655f76656e75655f747970650801086964a503011c56656e7565496400010c747970ad03012456656e756554797065000210504564697420612076656e7565277320747970652e00b42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742eb42a206074797065602073706563696669657320746865206e65772074797065206f66207468652076656e75652e3c6164645f696e737472756374696f6e14012076656e75655f6964a503011c56656e7565496400013c736574746c656d656e745f74797065b5030178536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e00012874726164655f64617465f401444f7074696f6e3c543a3a4d6f6d656e743e00012876616c75655f64617465f401444f7074696f6e3c543a3a4d6f6d656e743e0001106c656773b90301205665633c4c65673e0003305c416464732061206e657720696e737472756374696f6e2e002c2320417267756d656e7473ec2a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e09012a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c65645d01202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e51012a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b42a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e0020232057656967687498603935305f3030305f303030202b20315f3030305f303030202a206c6567732e6c656e282960686164645f616e645f61666669726d5f696e737472756374696f6e18012076656e75655f6964a503011c56656e7565496400013c736574746c656d656e745f74797065b5030178536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e00012874726164655f64617465f401444f7074696f6e3c543a3a4d6f6d656e743e00012876616c75655f64617465f401444f7074696f6e3c543a3a4d6f6d656e743e0001106c656773b90301205665633c4c65673e000128706f7274666f6c696f73e801405665633c506f7274666f6c696f49643e0004348c4164647320616e642061666669726d732061206e657720696e737472756374696f6e2e002c2320417267756d656e7473ec2a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e09012a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c65645d01202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e51012a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b42a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e6d012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2075736520696e20746869732061666669726d6174696f6e732e003423205065726d697373696f6e732c2a20506f7274666f6c696f4861666669726d5f696e737472756374696f6e0c01086964b1030134496e737472756374696f6e4964000128706f7274666f6c696f73e801405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000524bc50726f766964652061666669726d6174696f6e20746f20616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e7473882a2060696460202d20496e737472756374696f6e20696420746f2061666669726d2e69012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2061666669726d207468697320696e737472756374696f6e2ef82a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f206265202061666669726d65642e003423205065726d697373696f6e732c2a20506f7274666f6c696f5077697468647261775f61666669726d6174696f6e0c01086964b1030134496e737472756374696f6e4964000128706f7274666f6c696f73e801405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000624c0576974686472617720616e2061666669726d6174696f6e20666f72206120676976656e20696e737472756374696f6e2e002c2320417267756d656e7473ec2a2060696460202d20496e737472756374696f6e20696420666f7220746861742061666669726d6174696f6e206765742077697468647261776e2e5d012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2077697468647261772061666669726d6174696f6e2e01012a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f20626520756e2d61666669726d65642e003423205065726d697373696f6e732c2a20506f7274666f6c696f4872656a6563745f696e737472756374696f6e0c01086964b1030134496e737472756374696f6e4964000124706f7274666f6c696fd8012c506f7274666f6c696f496400012c6e756d5f6f665f6c65677310010c7533320007248052656a6563747320616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e7473882a2060696460202d20496e737472756374696f6e20696420746f2072656a6563742ed02a2060706f7274666f6c696f60202d20506f7274666f6c696f20746f2072656a6563742074686520696e737472756374696f6e2ed02a20606e756d5f6f665f6c65677360202d204e756d626572206f66206c65677320696e2074686520696e737472756374696f6e2e003423205065726d697373696f6e732c2a20506f7274666f6c696f5061666669726d5f776974685f72656365697074731001086964b1030134496e737472756374696f6e496400013c726563656970745f64657461696c73dd0701dc5665633c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e000128706f7274666f6c696f73e801405665633c506f7274666f6c696f49643e0001386d61785f6c6567735f636f756e7410010c753332000830cc4163636570747320616e20696e737472756374696f6e20616e6420636c61696d732061207369676e656420726563656970742e002c2320417267756d656e74737c2a2060696460202d2054617267657420696e737472756374696f6e2069642ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d42a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e8c2a20607369676e657260202d205369676e6572206f662074686520726563656970742e842a20607369676e65645f6461746160202d205369676e656420726563656970742e79012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f20616363657074207468697320696e737472756374696f6e2077697468003423205065726d697373696f6e732c2a20506f7274666f6c696f34636c61696d5f726563656970740801086964b1030134496e737472756374696f6e496400013c726563656970745f64657461696c73e10701c85265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e00092c60436c61696d732061207369676e656420726563656970742e002c2320417267756d656e7473bc2a2060696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d42a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e8c2a20607369676e657260202d205369676e6572206f662074686520726563656970742e842a20607369676e65645f6461746160202d205369676e656420726563656970742e003423205065726d697373696f6e732c2a20506f7274666f6c696f3c756e636c61696d5f72656365697074080138696e737472756374696f6e5f6964b1030134496e737472756374696f6e49640001186c65675f6964c10301144c65674964000a2098556e636c61696d7320612070726576696f75736c7920636c61696d656420726563656970742e002c2320417267756d656e7473ec2a2060696e737472756374696f6e5f696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074003423205065726d697373696f6e732c2a20506f7274666f6c696f4c7365745f76656e75655f66696c746572696e670801187469636b6572a001185469636b657200011c656e61626c656419010110626f6f6c000b20c0456e61626c6573206f722064697361626c65642076656e75652066696c746572696e6720666f72206120746f6b656e2e002c2320417267756d656e7473b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e19012a2060656e61626c656460202d20426f6f6c65616e20746861742064656369646573206966207468652066696c746572696e672073686f756c6420626520656e61626c65642e003423205065726d697373696f6e731c2a20417373657430616c6c6f775f76656e7565730801187469636b6572a001185469636b657200011876656e756573c90301305665633c56656e756549643e000c1c0d01416c6c6f7773206164646974696f6e616c2076656e75657320746f2063726561746520696e737472756374696f6e7320696e766f6c76696e6720616e2061737365742e00b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e7d012a206076656e75657360202d204172726179206f662076656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e003423205065726d697373696f6e731c2a2041737365743c646973616c6c6f775f76656e7565730801187469636b6572a001185469636b657200011876656e756573c90301305665633c56656e756549643e000d1c69015265766f6b6573207065726d697373696f6e20676976656e20746f2076656e75657320666f72206372656174696e6720696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c61722061737365742e00b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2ea5012a206076656e75657360202d204172726179206f662076656e756573207468617420617265206e6f206c6f6e67657220616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e003423205065726d697373696f6e731c2a2041737365745c6368616e67655f726563656970745f76616c696469747908012c726563656970745f75696420010c75363400012076616c696469747919010110626f6f6c000e14fc4d61726b732061207265636569707420697373756564206279207468652063616c6c657220617320636c61696d6564206f72206e6f7420636c61696d65642ec1015468697320616c6c6f77732074686520726563656970742069737375657220746f20696e76616c696461746520616e20616c7265616479206973737565642072656365697074206f7220726576616c696461746520616e20616c726561647920636c61696d656420726563656970742e00ac2a2060726563656970745f75696460202d20556e69717565204944206f662074686520726563656970742eac2a206076616c696469747960202d204e65772076616c6964697479206f662074686520726563656970742e74657865637574655f7363686564756c65645f696e737472756374696f6e0801086964b1030134496e737472756374696f6e496400012c5f6c6567735f636f756e7410010c753332000f048101526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f20657865637574652061207363686564756c656420736574746c656d656e7420696e737472756374696f6e2e5872657363686564756c655f696e737472756374696f6e0401086964b1030134496e737472756374696f6e49640010288452657363686564756c65732061206661696c656420696e737472756374696f6e2e002c2320417267756d656e7473b42a2060696460202d2054617267657420696e737472756374696f6e20696420746f2072657363686564756c652e003423205065726d697373696f6e732c2a20506f7274666f6c696f002023204572726f72733d012a2060496e737472756374696f6e4e6f744661696c656460202d20496e737472756374696f6e206e6f7420696e2061206661696c6564207374617465206f7220646f6573206e6f742065786973742e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652edd07000002e10700e107084470616c6c65745f736574746c656d656e74385265636569707444657461696c7308244163636f756e7449640100444f6666436861696e5369676e617475726501e5070014012c726563656970745f75696420010c7536340001186c65675f6964c10301144c656749640001187369676e65720001244163636f756e7449640001247369676e6174757265e50701444f6666436861696e5369676e61747572650001206d65746164617461c503013c526563656970744d657461646174610000e507082873705f72756e74696d65384d756c74695369676e617475726500010c1c45643235353139040025070148656432353531393a3a5369676e61747572650000001c53723235353139040055070148737232353531393a3a5369676e61747572650001001445636473610400e907014065636473613a3a5369676e617475726500020000e9070c1c73705f636f7265146563647361245369676e6174757265000004006d0701205b75383b2036355d0000ed07084470616c6c65745f737461746973746963731043616c6c040454000110587365745f6163746976655f61737365745f73746174730801146173736574d1030128417373657453636f7065000128737461745f7479706573f107014842547265655365743c53746174547970653e00003c80536574207468652061637469766520617373657420737461745f74797065732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e09012d2060737461745f747970657360202d20746865206e6577207374617420747970657320746f207265706c61636520616e79206578697374696e672074797065732e002023204572726f72731d012d206053746174547970654c696d69745265616368656460202d20746f6f206d616e79207374617420747970657320656e61626c656420666f722074686520606173736574602e85012d206043616e6e6f7452656d6f76655374617454797065496e55736560202d2063616e206e6f742072656d6f7665206120737461742074797065207468617420697320696e20757365206279207472616e7366657220636f6e646974696f6e732e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365746062617463685f7570646174655f61737365745f73746174730c01146173736574d1030128417373657453636f7065000124737461745f74797065d9030120537461745479706500011876616c756573f507015042547265655365743c537461745570646174653e00013cec416c6c6f77206120747275737465642069737375657220746f20696e69742f726573796e63207469636b65722f636f6d70616e792073746174732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e902d2060737461745f7479706560202d2073746174207479706520746f207570646174652eb02d206076616c75657360202d20557064617465642076616c75657320666f722060737461745f74797065602e002023204572726f727305012d206053746174547970654d697373696e6760202d2060737461745f7479706560206973206e6f7420656e61626c656420666f722074686520606173736574602e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d204173736574747365745f61737365745f7472616e736665725f636f6d706c69616e63650801146173736574d1030128417373657453636f706500014c7472616e736665725f636f6e646974696f6e73f907016c42547265655365743c5472616e73666572436f6e646974696f6e3e00023c90536574206173736574207472616e7366657220636f6d706c69616e63652072756c65732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e61012d20607472616e736665725f636f6e646974696f6e7360202d20746865206e6577207472616e7366657220636f6e646974696f6e20746f207265706c61636520616e79206578697374696e6720636f6e646974696f6e732e002023204572726f727355012d20605472616e73666572436f6e646974696f6e4c696d69745265616368656460202d20746f6f206d616e79207472616e7366657220636f6e64697469746f6e20656e61626c656420666f7220606173736574602e91012d206053746174547970654d697373696e6760202d2061207472616e7366657220636f6e646974696f6e2072657175697265732061207374617420747970652074686174206973206e6f7420656e61626c656420666f722074686520606173736574602e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365744c7365745f656e7469746965735f6578656d70740c012469735f6578656d707419010110626f6f6c0001286578656d70745f6b65790d0401685472616e73666572436f6e646974696f6e4578656d70744b6579000120656e746974696573fd07014442547265655365743c53636f706549643e00033811015365742f756e73657420656e746974696573206578656d70742066726f6d20616e2061737365742773207472616e7366657220636f6d706c69616e63652072756c65732e002c2320417267756d656e747351012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606578656d70745f6b65792e6173736574602ee02d206069735f6578656d707460202d20656e61626c652f64697361626c65206578656d7074696f6e20666f722060656e746974696573602e1d012d20606578656d70745f6b657960202d2074686520617373657420616e642073746174207479706520746f206578656d7074207468652060656e746974696573602066726f6d2eec2d2060656e74697469657360202d2074686520656e74697469657320746f207365742f756e73657420746865206578656d7074696f6e20666f722e002023204572726f727321012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef1070420425472656553657404045401d903000400d503000000f5070420425472656553657404045401ed03000400e903000000f907042042547265655365740404540105040004000104000000fd0704204254726565536574040454017c00040025010000000108082870616c6c65745f73746f1043616c6c040454000118446372656174655f66756e647261697365722801486f66666572696e675f706f7274666f6c696fd8012c506f7274666f6c696f49640001386f66666572696e675f6173736574a001185469636b657200014472616973696e675f706f7274666f6c696fd8012c506f7274666f6c696f496400013472616973696e675f6173736574a001185469636b65720001147469657273050801385665633c5072696365546965723e00012076656e75655f6964a503011c56656e756549640001147374617274f401444f7074696f6e3c543a3a4d6f6d656e743e00010c656e64f401444f7074696f6e3c543a3a4d6f6d656e743e0001486d696e696d756d5f696e766573746d656e7418011c42616c616e636500013c66756e647261697365725f6e616d651d04013846756e647261697365724e616d65000040604372656174652061206e65772066756e647261697365722e000d012a20606f66666572696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e672074686520606f66666572696e675f6173736574602ea42a20606f66666572696e675f617373657460202d204173736574206265696e67206f6666657265642e05012a206072616973696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e6720746865206072616973696e675f6173736574602e35012a206072616973696e675f617373657460202d204173736574206265696e672065786368616e67656420666f7220606f66666572696e675f617373657460206f6e20696e766573746d656e742ee82a2060746965727360202d20507269636520746965727320746f2063686172676520696e766573746f7273206f6e20696e766573746d656e742ea82a206076656e75655f696460202d2056656e756520746f2068616e646c6520736574746c656d656e742e4d012a2060737461727460202d2046756e647261697365722073746172742074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c20737461727420696d6d6564696174656c792e29012a2060656e6460202d2046756e6472616973657220656e642074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c206e65766572206578706972652ecd012a20606d696e696d756d5f696e766573746d656e7460202d204d696e696d756d20616d6f756e74206f66206072616973696e675f617373657460207468617420616e20696e766573746f72206e6565647320746f207370656e6420746f20696e7665737420696e20746869732072616973652ef02a206066756e647261697365725f6e616d6560202d2046756e64726169736572206e616d652c206f6e6c79207573656420696e20746865205549732e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f18696e766573741c0150696e766573746d656e745f706f7274666f6c696fd8012c506f7274666f6c696f496400014466756e64696e675f706f7274666f6c696fd8012c506f7274666f6c696f49640001386f66666572696e675f6173736574a001185469636b657200010869641904013046756e64726169736572496400013c70757263686173655f616d6f756e7418011c42616c616e63650001246d61785f7072696365fd03013c4f7074696f6e3c42616c616e63653e00011c726563656970740d0801e84f7074696f6e3c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e0001305c496e7665737420696e20612066756e647261697365722e0041012a2060696e766573746d656e745f706f7274666f6c696f60202d20506f7274666f6c696f207468617420606f66666572696e675f6173736574602077696c6c206265206465706f736974656420696e2e01012a206066756e64696e675f706f7274666f6c696f60202d20506f7274666f6c696f20746861742077696c6c2066756e642074686520696e766573746d656e742ea02a20606f66666572696e675f617373657460202d20417373657420746f20696e7665737420696e2eac2a2060696460202d204944206f66207468652066756e6472616973657220746f20696e7665737420696e2ef42a206070757263686173655f616d6f756e7460202d20416d6f756e74206f6620606f66666572696e675f61737365746020746f2070757263686173652eb9012a20606d61785f707269636560202d204d6178696d756d20707269636520746f207061792070657220756e6974206f6620606f66666572696e675f6173736574602c20496620604e6f6e6560746865726520617265206e6f20636f6e73747261696e7473206f6e2070726963652e69012a20607265636569707460202d204f66662d636861696e207265636569707420746f2075736520696e7374656164206f66206f6e2d636861696e2062616c616e636520696e206066756e64696e675f706f7274666f6c696f602e003423205065726d697373696f6e732c2a20506f7274666f6c696f44667265657a655f66756e647261697365720801386f66666572696e675f6173736574a001185469636b657200010869641904013046756e64726169736572496400021c50467265657a6520612066756e647261697365722e00942a20606f66666572696e675f617373657460202d20417373657420746f20667265657a652ea02a2060696460202d204944206f66207468652066756e6472616973657220746f20667265657a652e003423205065726d697373696f6e731c2a2041737365744c756e667265657a655f66756e647261697365720801386f66666572696e675f6173736574a001185469636b657200010869641904013046756e64726169736572496400031c58556e667265657a6520612066756e647261697365722e009c2a20606f66666572696e675f617373657460202d20417373657420746f20756e667265657a652ea82a2060696460202d204944206f66207468652066756e6472616973657220746f20756e667265657a652e003423205065726d697373696f6e731c2a204173736574606d6f646966795f66756e647261697365725f77696e646f771001386f66666572696e675f6173736574a001185469636b657200010869641904013046756e6472616973657249640001147374617274200124543a3a4d6f6d656e7400010c656e64f401444f7074696f6e3c543a3a4d6f6d656e743e000424b44d6f64696679207468652074696d652077696e646f7720612066756e647261697365722069732061637469766500942a20606f66666572696e675f617373657460202d20417373657420746f206d6f646966792ea02a2060696460202d204944206f66207468652066756e6472616973657220746f206d6f646966792ea02a2060737461727460202d204e6577207374617274206f66207468652066756e647261697365722eb82a2060656e6460202d204e657720656e64206f66207468652066756e6472616973657220746f206d6f646966792e003423205065726d697373696f6e731c2a2041737365741073746f700801386f66666572696e675f6173736574a001185469636b657200010869641904013046756e64726169736572496400051c4853746f7020612066756e647261697365722e008c2a20606f66666572696e675f617373657460202d20417373657420746f2073746f702e982a2060696460202d204944206f66207468652066756e6472616973657220746f2073746f702e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e05080000020908000908082870616c6c65745f73746f245072696365546965720000080114746f74616c18011c42616c616e6365000114707269636518011c42616c616e636500000d0804184f7074696f6e04045401e1070108104e6f6e6500000010536f6d650400e10700000100001108083c70616c6c65745f74726561737572791043616c6c0404540001083064697362757273656d656e7404013462656e65666963696172696573150801785665633c42656e65666963696172793c42616c616e63654f663c543e3e3e00001c51014974207472616e73666572732062616c616e6365732066726f6d20747265617375727920746f2065616368206f662062656e6566696369617269657320616e642074686520737065636966696320616d6f756e7444666f722065616368206f66207468656d2e001c23204572726f72c42a20604261644f726967696e603a204f6e6c7920726f6f742063616e2065786563757465207472616e73616374696f6e2e5d012a2060496e73756666696369656e7442616c616e6365603a2049662074726561737572792062616c616e636573206973206e6f7420656e6f75676820746f20636f76657220616c6c2062656e656669636961726965732e25012a2060496e76616c69644964656e74697479603a204966206f6e65206f66207468652062656e656669636961726965732068617320616e20696e76616c6964206964656e746974792e347265696d62757273656d656e74040118616d6f756e7418013042616c616e63654f663c543e00010c1d014974207472616e7366657273207468652073706563696669632060616d6f756e74602066726f6d20606f726967696e60206163636f756e7420696e746f2074726561737572792e0049014f6e6c79206163636f756e747320776869636820617265206173736f63696174656420746f20616e206964656e746974792063616e206d616b65206120646f6e6174696f6e20746f2074726561737572792e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e15080000021908001908084c706f6c796d6573685f7072696d6974697665732c42656e6566696369617279041c42616c616e636501180008010869647c01284964656e746974794964000118616d6f756e7418011c42616c616e636500001d08083870616c6c65745f7574696c6974791043616c6c04045400011014626174636804011463616c6c73210801605665633c3c5420617320436f6e6669673e3a3a43616c6c3e000048c44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e00e8546869732077696c6c206578656375746520756e74696c20746865206669727374206f6e65206661696c7320616e64207468656e2073746f702e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e00202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e00bd01546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e31016576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e207468655501604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d6164654d01616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c65746564604c6576656e74206973206465706f73697465642e3062617463685f61746f6d696304011463616c6c73210801605665633c3c5420617320436f6e6669673e3a3a43616c6c3e00014cc44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e001501546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c2073746f7070696e6720617420746865206669727374206661696c7572652cc0696e207768696368206361736520746865207374617465206368616e6765732061726520726f6c6c6564206261636b2e25014f6e206661696c7572652c20616e206576656e7420604261746368496e746572727570746564286661696c7572655f6964782c206572726f722960206973206465706f73697465642e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e00202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e001501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef4546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ee4496620616e792063616c6c206661696c65642c207468656e20604261746368496e74657272757074656460206973206465706f73697465642e1501496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e4062617463685f6f7074696d697374696304011463616c6c73210801605665633c3c5420617320436f6e6669673e3a3a43616c6c3e000254c44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e000101546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c20697272657370656374697665206f66206661696c757265732e0901416e79206661696c757265732077696c6c20626520617661696c61626c6520696e2061206042617463684f7074696d69737469634661696c656460206576656e742e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e0000202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e001501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef4546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ef8496620616e792063616c6c206661696c65642c207468656e206042617463684f7074696d69737469634661696c656460206973206465706f73697465642cfc77697468206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c2061732077656c6c206173206120766563746f72286f66206572726f72732e1501496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e2072656c61795f74780c0118746172676574000130543a3a4163636f756e7449640001247369676e6174757265e5070150543a3a4f6666436861696e5369676e617475726500011063616c6c2508017c556e6971756543616c6c3c3c5420617320436f6e6669673e3a3a43616c6c3e000330a052656c617920612063616c6c20666f722061207461726765742066726f6d20616e206f726967696e00510152656c6179696e6720696e207468697320636f6e746578742072656665727320746f20746865206162696c697479206f66206f726967696e20746f206d616b6520612063616c6c206f6e20626568616c66206f661c7461726765742e00684665657320617265206368617267656420746f206f726967696e00302320506172616d6574657273842d2060746172676574603a204163636f756e7420746f2062652072656c61796564e82d20607369676e6174757265603a205369676e61747572652066726f6d2074617267657420617574686f72697a696e67207468652072656c6179c02d206063616c6c603a2043616c6c20746f2062652072656c61796564206f6e20626568616c66206f6620746172676574000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e2108000002dd05002508083870616c6c65745f7574696c69747928556e6971756543616c6c04044301dd05000801146e6f6e6365200148417574686f72697a6174696f6e4e6f6e636500011063616c6cdd050118426f783c433e00002908082c70616c6c65745f626173651043616c6c0404540001000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e2d08085870616c6c65745f65787465726e616c5f6167656e74731043616c6c040454000120306372656174655f67726f75700801187469636b6572a001185469636b65720001147065726d73b0015045787472696e7369635065726d697373696f6e73000048e443726561746573206120637573746f6d206167656e742067726f7570202841472920666f722074686520676976656e20607469636b6572602e00d45468652041472077696c6c206861766520746865207065726d697373696f6e7320617320676976656e20627920607065726d73602e290154686973206e6577204147206973207468656e2061737369676e656420606964203d204147496453657175656e63653a3a6765742829202b20316020617320697473206041474964602c3901776869636820796f752063616e2075736520617320604167656e7447726f75703a3a437573746f6d2869642960207768656e20616464696e67206167656e747320666f7220607469636b6572602e002c2320417267756d656e74739c2d20607469636b65726020746f206164642074686520637573746f6d2067726f757020666f722e902d20607065726d7360207468617420746865206e65772041472077696c6c20686176652e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e21012d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672e25012d2060436f756e7465724f766572666c6f776020696620604147496453657175656e63653a3a6765742829202b20316020776f756c642065786365656420607533323a3a4d4158602e003423205065726d697373696f6e731c2a2041737365741c2a204167656e74547365745f67726f75705f7065726d697373696f6e730c01187469636b6572a001185469636b6572000108696415010110414749640001147065726d73b0015045787472696e7369635065726d697373696f6e7300013c51015570646174657320746865207065726d697373696f6e73206f662074686520637573746f6d204147206964656e74696669656420627920606964602c20666f722074686520676976656e20607469636b6572602e002c2320417267756d656e7473902d20607469636b6572602074686520637573746f6d2041472062656c6f6e677320746f2ea42d206069646020666f722074686520637573746f6d2041472077697468696e20607469636b6572602e942d20607065726d736020746f207570646174652074686520637573746f6d20414720746f2e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e21012d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672ecc2d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472e003423205065726d697373696f6e731c2a2041737365741c2a204167656e743072656d6f76655f6167656e740801187469636b6572a001185469636b65720001146167656e747c01284964656e7469747949640002389c52656d6f76652074686520676976656e20606167656e74602066726f6d20607469636b6572602e002c2320417267756d656e7473a82d20607469636b6572602074686174206861732074686520606167656e746020746f2072656d6f76652e802d20606167656e7460206f6620607469636b65726020746f2072656d6f76652e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ed82d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602ee82d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e746020697320746865206c6173742066756c6c206f6e652e003423205065726d697373696f6e731c2a2041737365741c2a204167656e742061626469636174650401187469636b6572a001185469636b657200032c804162646963617465206167656e747368697020666f7220607469636b6572602e002c2320417267756d656e7473ac2d20607469636b657260206f66207768696368207468652063616c6c657220697320616e206167656e742e002023204572726f7273e42d20604e6f74416e4167656e7460206966207468652063616c6c6572206973206e6f7420616e206167656e74206f6620607469636b6572602efc2d206052656d6f76696e674c61737446756c6c4167656e7460206966207468652063616c6c657220697320746865206c6173742066756c6c206167656e742e003423205065726d697373696f6e731c2a204173736574306368616e67655f67726f75700c01187469636b6572a001185469636b65720001146167656e747c01284964656e74697479496400011467726f7570110101284167656e7447726f7570000440ec4368616e676520746865206167656e742067726f7570207468617420606167656e74602062656c6f6e677320746f20696e20607469636b6572602e002c2320417267756d656e7473802d20607469636b6572602074686174206861732074686520606167656e74602eb82d20606167656e7460206f6620607469636b65726020746f206368616e6765207468652067726f757020666f722ec82d206067726f757060207468617420606167656e74602077696c6c2062656c6f6e6720746f20696e20607469636b6572602e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ecc2d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472ed82d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602e2d012d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e7460207761732061206046756c6c60206f6e6520616e64206973206265696e672064656d6f7465642e003423205065726d697373696f6e731c2a2041737365741c2a204167656e744c6163636570745f6265636f6d655f6167656e7404011c617574685f696420010c753634000540010141636365707420616e20617574686f72697a6174696f6e20627920616e206167656e742022416c696365222077686f206973737565642060617574685f696460d8746f20616c736f206265636f6d6520616e206167656e74206f6620746865207469636b657220416c696365207370656369666965642e002c2320417267756d656e7473d02d2060617574685f696460206964656e74696679696e672074686520617574686f72697a6174696f6e20746f206163636570742e002023204572726f727345012d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e35012d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f69646020697320666f7220616e206175746820746861742068617320657870697265642e4d012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f7420666f72206120604265636f6d654167656e7460206175746820747970652e25012d2060556e617574686f72697a65644167656e74602069662022416c69636522206973206e6f74207065726d697373696f6e656420746f2070726f766964652074686520617574682e0d012d20604e6f53756368414760206966207468652067726f757020726566657272656420746f206120637573746f6d207468617420646f6573206e6f742065786973742e0d012d2060416c7265616479416e4167656e7460206966207468652063616c6c657220697320616c726561647920616e206167656e74206f6620746865207469636b65722e003423205065726d697373696f6e731c2a204167656e74646372656174655f67726f75705f616e645f6164645f617574680c01187469636b6572a001185469636b65720001147065726d73b0015045787472696e7369635065726d697373696f6e730001187461726765746d01015c5369676e61746f72793c543a3a4163636f756e7449643e000614e85574696c6974792065787472696e73696320746f20626174636820606372656174655f67726f75706020616e642020606164645f61757468602e003423205065726d697373696f6e731c2a2041737365741c2a204167656e74786372656174655f616e645f6368616e67655f637573746f6d5f67726f75700c01187469636b6572a001185469636b65720001147065726d73b0015045787472696e7369635065726d697373696f6e730001146167656e747c01284964656e74697479496400071455015574696c6974792065787472696e73696320746f20626174636820606372656174655f67726f75706020616e642020606368616e67655f67726f75706020666f7220637573746f6d2067726f757073206f6e6c792e003423205065726d697373696f6e731c2a2041737365741c2a204167656e740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e3108083870616c6c65745f72656c617965721043616c6c040454000118387365745f706179696e675f6b6579080120757365725f6b6579000130543a3a4163636f756e74496400012c706f6c79785f6c696d697418011c42616c616e6365000020bd014372656174657320616e20617574686f72697a6174696f6e20746f20616c6c6f772060757365725f6b65796020746f20616363657074207468652063616c6c65722028606f726967696e203d3d20706179696e675f6b6579602920617320746865697220737562736964697365722e002c2320417267756d656e74739c2d2060757365725f6b657960207468652075736572206b657920746f207375627369646973652ee42d2060706f6c79785f6c696d6974602074686520696e697469616c20504f4c5958206c696d697420666f72207468697320737562736964792e002023204572726f727331012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e446163636570745f706179696e675f6b657904011c617574685f696420010c753634000138944163636570747320612060706179696e675f6b65796020617574686f72697a6174696f6e2e002c2320417267756d656e7473e82d2060617574685f6964602074686520617574686f72697a6174696f6e20696420746f2061636365707420612060706179696e675f6b6579602e002023204572726f727345012d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e2d012d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f6964602074686520617574686f72697a6174696f6e2068617320657870697265642e6d012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f742061206041646452656c61796572506179696e674b65796020617574686f72697a6174696f6e2ea5012d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f206163636570742074686520617574686f72697a6174696f6e20666f72207468652060757365725f6b6579602ed9012d20604e6f74417574686f72697a6564466f72506179696e674b6579602069662074686520617574686f72697a6174696f6e20776173206372656174656420616e206964656e7469747920646966666572656e742066726f6d207468652060706179696e675f6b6579602773206964656e746974792e31012d2060557365724b65794364644d697373696e6760206966207468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e41012d2060506179696e674b65794364644d697373696e6760206966207468652060706179696e675f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e4472656d6f76655f706179696e675f6b6579080120757365725f6b6579000130543a3a4163636f756e744964000128706179696e675f6b6579000130543a3a4163636f756e74496400022cac52656d6f766573207468652060706179696e675f6b6579602066726f6d20612060757365725f6b6579602e002c2320417267756d656e7473d42d2060757365725f6b657960207468652075736572206b657920746f2072656d6f76652074686520737562736964792066726f6d2e09012d2060706179696e675f6b6579602074686520706179696e67206b6579207468617420776173207375627369646973696e67207468652060757365725f6b6579602e002023204572726f72738d012d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2072656d6f766520746865207375627369647920666f72207468652060757365725f6b6579602ef82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e31012d20604e6f74506179696e674b657960206966207468652060706179696e675f6b65796020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e487570646174655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e74496400012c706f6c79785f6c696d697418011c42616c616e6365000328b4557064617465732074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e35012d2060706f6c79785f6c696d6974602074686520616d6f756e74206f6620504f4c595820617661696c61626c6520666f72207375627369646973696e67207468652060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e50696e6372656173655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e744964000118616d6f756e7418011c42616c616e636500042cb8496e6372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e0d012d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2061646420746f207468652073756273696479206f662060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e3d012d20604f7665726c6f776020696620746865207375627369647927732072656d61696e696e6720504f4c595820776f756c642068617665206f766572666c6f7765642060753132383a3a4d4158602e5064656372656173655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e744964000118616d6f756e7418011c42616c616e636500052cb844656372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e21012d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2072656d6f76652066726f6d207468652073756273696479206f662060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e09012d20604f7665726c6f776020696620746865207375627369647920686173206c657373207468656e2060616d6f756e746020504f4c59582072656d61696e696e672e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e3508083870616c6c65745f726577617264731043616c6c04045400010840636c61696d5f69746e5f7265776172640c01387265776172645f61646472657373000130543a3a4163636f756e74496400012c69746e5f61646472657373000130543a3a4163636f756e7449640001247369676e6174757265e5070150543a3a4f6666436861696e5369676e617475726500003450436c61696d20616e2049544e207265776172642e0030232320417267756d656e7473d82a206069746e5f61646472657373602073706563696679696e672074686520617761726465642061646472657373206f6e2049544e2ed42a20607369676e6174757265602061757468656e7469636174696e672074686520636c61696d20746f20746865207265776172642e7501202020546865207369676e61747572652073686f756c6420636f6e7461696e20607265776172645f616464726573736020666f6c6c6f7765642062792074686520737566666978206022636c61696d5f69746e5f72657761726422602cb8202020616e64206d7573742068617665206265656e207369676e6564206279206069746e5f61646472657373602e002023204572726f727345012a2060496e73756666696369656e7442616c616e636560202d2049746e20726577617264732068617320696e73756666696369656e742066756e647320746f20697373756520746865207265776172642e31012a2060496e76616c69645369676e617475726560202d20607369676e6174757265602068616420616e20696e76616c6964207369676e6572206f7220696e76616c6964206d6573736167652e69012a206049746e526577617264416c7265616479436c61696d656460202d205265776172642069737375656420746f20746865206069746e5f61646472657373602068617320616c7265616479206265656e20636c61696d65642e89012a2060556e6b6e6f776e49746e4164647265737360202d206069746e5f6164647265737360206973206e6f7420696e207468652072657761726473207461626c6520616e6420686173206e6f2072657761726420746f20626520636c61696d65642e547365745f69746e5f7265776172645f73746174757308012c69746e5f61646472657373000130543a3a4163636f756e7449640001187374617475733908013c49746e5265776172645374617475730001000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e3908083870616c6c65745f726577617264733c49746e52657761726453746174757300010824556e636c61696d6564040018011c42616c616e63650000001c436c61696d6564000100003d08084470616c6c65745f746573745f7574696c731043616c6c0404540001103072656769737465725f64696408010c7569645d04012c496e766573746f725569640001387365636f6e646172795f6b65797390017c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e0000284d0147656e6572617465732061206e657720604964656e7469747949446020666f72207468652063616c6c65722c20616e642069737375657320612073656c662d67656e6572617465642043444420636c61696d2e00f05468652063616c6c6572206163636f756e742077696c6c20626520746865207072696d617279206b6579206f662074686174206964656e746974792e5d01466f722065616368206163636f756e74206f6620607365636f6e646172795f6b657973602c2061206e657720604a6f696e4964656e746974796020617574686f72697a6174696f6e20697320637265617465642c20736f410165616368206f66207468656d2077696c6c206e65656420746f20616363657074206974206265666f7265206265636f6d652070617274206f662074686973206e657720604964656e746974794944602e002023204572726f7273d5012d2060416c72656164794c696e6b656460206966207468652063616c6c6572206163636f756e74206f7220696620616e79206f662074686520676976656e20607365636f6e646172795f6b657973602068617320616c7265616479206c696e6b656420746f20616e20604964656e746974794944604d012d20605365636f6e646172794b657973436f6e7461696e5072696d6172794b65796020696620607365636f6e646172795f6b6579736020636f6e7461696e73207468652063616c6c6572206163636f756e742ee82d2060446964416c726561647945786973747360206966206175746f2d67656e6572617465642044494420616c7265616479206578697374732e546d6f636b5f6364645f72656769737465725f6469640401387461726765745f6163636f756e74000130543a3a4163636f756e7449640001303d015265676973746572732061206e6577204964656e7469747920666f722074686520607461726765745f6163636f756e746020616e642069737375657320612043444420636c61696d20746f2069742e510154686520496e766573746f72205549442069732067656e6572617465642064657465726d696e6973746963616c6c79206279207468652068617368206f66207468652067656e6572617465642044494420616e64b07468656e2077652066697820697420746f20626520636f6d706c69616e74207769746820555549442076342e00142320536565dc2d205b52464320343132323a20555549445d2868747470733a2f2f746f6f6c732e696574662e6f72672f68746d6c2f7266633431323229002423204661696c75726549012d20606f726967696e602068617320746f20626520616e20616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792e286765745f6d795f64696400020498456d69747320616e206576656e7420776974682063616c6c65722773206964656e746974792e286765745f6364645f6f660401086f66000130543a3a4163636f756e744964000304d4456d69747320616e206576656e7420776974682063616c6c65722773206964656e7469747920616e6420434444207374617475732e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e4108084070616c6c65745f636f6d6d697474656534506f6c796d657368566f746573042c426c6f636b4e756d626572011000100114696e64657810013450726f706f73616c496e646578000110617965732501013c5665633c4964656e7469747949643e0001106e6179732501013c5665633c4964656e7469747949643e0001186578706972793901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00004508084070616c6c65745f636f6d6d69747465651c56657273696f6e00000400080108753800004908084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e004d08083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e005108084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e005508083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e005908084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e005d08083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00610800000408006d010065080000040800200069080000040800dd05006d080000040c006d0120007108083c70616c6c65745f6d756c74697369673c50726f706f73616c44657461696c73040454012000140124617070726f76616c7320010c75363400012872656a656374696f6e7320010c7536340001187374617475737508013850726f706f73616c537461747573000118657870697279f401244f7074696f6e3c543e0001286175746f5f636c6f736519010110626f6f6c00007508083c70616c6c65745f6d756c74697369673850726f706f73616c5374617475730001141c496e76616c69640000003c4163746976654f72457870697265640001004c457865637574696f6e5375636365737366756c0002003c457865637574696f6e4661696c65640003002052656a6563746564000400007908083c70616c6c65745f6d756c74697369671c56657273696f6e00000400080108753800007d08083c70616c6c65745f6d756c7469736967144572726f72040454000164284364644d697373696e67000004c4546865206d756c7469736967206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e3c50726f706f73616c4d697373696e67000104705468652070726f706f73616c20646f6573206e6f742065786973742e344465636f64696e674572726f72000204444d756c746973696720616464726573732e244e6f5369676e6572730003042c4e6f207369676e6572732e7452657175697265645369676e6174757265734f75744f66426f756e6473000404a0546f6f20666577206f7220746f6f206d616e79207265717569726564207369676e6174757265732e284e6f74415369676e6572000504344e6f742061207369676e65722e384e6f537563684d756c7469736967000604444e6f2073756368206d756c74697369672e404e6f74456e6f7567685369676e6572730007044c4e6f7420656e6f756768207369676e6572732e344e6f6e63654f766572666c6f770008044441206e6f6e6365206f766572666c6f772e30416c7265616479566f74656400090438416c726561647920766f7465642e38416c7265616479415369676e6572000a0444416c72656164792061207369676e65722e444661696c6564546f436861726765466565000b04a0436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e484964656e746974794e6f7443726561746f72000c04c04964656e746974792070726f7669646564206973206e6f7420746865206d756c746973696727732063726561746f722e404368616e67654e6f74416c6c6f776564000d0425014368616e67696e67206d756c746973696720706172616d6574657273206e6f7420616c6c6f7765642073696e6365206d756c74697369672069732061207072696d617279206b65792e745369676e6572416c72656164794c696e6b6564546f4d756c7469736967000e0411015369676e657220697320616e206163636f756e74206b6579207468617420697320616c7265616479206173736f63696174656420776974682061206d756c74697369672e745369676e6572416c72656164794c696e6b6564546f4964656e74697479000f0415015369676e657220697320616e206163636f756e74206b6579207468617420697320616c7265616479206173736f636961746564207769746820616e206964656e746974792e804d756c74697369674e6f74416c6c6f776564546f4c696e6b546f497473656c66001004bc4d756c7469736967206e6f7420616c6c6f77656420746f2061646420697473656c662061732061207369676e65722e584d697373696e6743757272656e744964656e746974790011045843757272656e7420444944206973206d697373696e67344e6f745072696d6172794b6579001204f45468652066756e6374696f6e2063616e206f6e6c792062652063616c6c656420627920746865207072696d617279206b6579206f6620746865206469645c50726f706f73616c416c726561647952656a65637465640013047450726f706f73616c207761732072656a6563746564206561726c6965723c50726f706f73616c457870697265640014045050726f706f73616c2068617320657870697265645c50726f706f73616c416c726561647945786563757465640015047450726f706f73616c20776173206578656375746564206561726c6965725c4d756c74697369674d697373696e674964656e746974790016049c4d756c7469736967206973206e6f7420617474616368656420746f20616e206964656e74697479404661696c6564546f5363686564756c65001704785363686564756c696e67206f6620612070726f706f73616c206661696c7338546f6f4d616e795369676e6572730018046c4d6f7265207369676e657273207468616e2072657175697265642e045c4d756c7469736967206d6f64756c65206572726f72732e8108000004080010008508083470616c6c65745f62726964676538427269646765547844657461696c042c426c6f636b4e756d626572011000100118616d6f756e7418011c42616c616e636500011873746174757389080138427269646765547853746174757300013c657865637574696f6e5f626c6f636b10012c426c6f636b4e756d62657200011c74785f686173682401104832353600008908083470616c6c65745f62726964676538427269646765547853746174757300011418416273656e740000001c50656e64696e67040008010875380001001846726f7a656e0002002854696d656c6f636b65640003001c48616e646c6564000400008d08000004081810009108083470616c6c65745f6272696467651c56657273696f6e00000400080108753800009508083470616c6c65745f627269646765144572726f7204045400013440436f6e74726f6c6c65724e6f74536574000004a45468652062726964676520636f6e74726f6c6c65722061646472657373206973206e6f74207365742e2442616443616c6c6572000104d8546865206f726967696e206973206e6f742074686520636f6e74726f6c6c6572206f72207468652061646d696e20616464726573732e2042616441646d696e00020490546865206f726967696e206973206e6f74207468652061646d696e20616464726573732e284e6f56616c69644364640003048c54686520726563697069656e742044494420686173206e6f2076616c6964204344442e5850726f706f73616c416c726561647948616e646c6564000404390154686520627269646765207472616e73616374696f6e2070726f706f73616c2068617320616c7265616479206265656e2068616e646c656420616e64207468652066756e6473206d696e7465642e30556e617574686f72697a656400050494556e617574686f72697a656420746f20706572666f726d20616e206f7065726174696f6e2e1846726f7a656e000604745468652062726964676520697320616c72656164792066726f7a656e2e244e6f7446726f7a656e0007046454686520627269646765206973206e6f742066726f7a656e2e2046726f7a656e547800080468546865207472616e73616374696f6e2069732066726f7a656e2e484272696467654c696d697452656163686564000904e4546865206964656e746974792773206d696e74656420746f74616c2068617320726561636865642074686520627269646765206c696d69742e204f766572666c6f77000a04ac546865206964656e746974792773206d696e74656420746f74616c20686173206f766572666c6f7765642e384469766973696f6e42795a65726f000b04cc54686520626c6f636b20696e74657276616c206475726174696f6e206973207a65726f2e2043616e6e6f74206469766964652e3054696d656c6f636b65645478000c0478546865207472616e73616374696f6e2069732074696d656c6f636b65642e009908083870616c6c65745f7374616b696e67345374616b696e674c656467657208244163636f756e74496401001c42616c616e636501180014011473746173680001244163636f756e744964000114746f74616ccd01011c42616c616e6365000118616374697665cd01011c42616c616e6365000124756e6c6f636b696e679d0801645665633c556e6c6f636b4368756e6b3c42616c616e63653e3e00013c636c61696d65645f72657761726473390401345665633c457261496e6465783e00009d08000002a10800a108083870616c6c65745f7374616b696e672c556e6c6f636b4368756e6b041c42616c616e636501180008011476616c7565cd01011c42616c616e636500010c65726171040120457261496e6465780000a508083870616c6c65745f7374616b696e672c4e6f6d696e6174696f6e7304244163636f756e7449640100000c011c74617267657473ec01385665633c4163636f756e7449643e0001307375626d69747465645f696e100120457261496e6465780001287375707072657373656419010110626f6f6c0000a908083870616c6c65745f7374616b696e6734416374697665457261496e666f0000080114696e646578100120457261496e6465780001147374617274f4012c4f7074696f6e3c7536343e0000ad0800000408100000b108083870616c6c65745f7374616b696e673c457261526577617264506f696e747304244163636f756e744964010000080114746f74616c10012c526577617264506f696e74000128696e646976696475616cb508018042547265654d61703c4163636f756e7449642c20526577617264506f696e743e0000b508042042547265654d617008044b010004560110000400b908000000b908000002810800bd08083870616c6c65745f7374616b696e671c466f7263696e67000110284e6f74466f7263696e6700000020466f7263654e657700010024466f7263654e6f6e650002002c466f726365416c7761797300030000c108000002c50800c508083870616c6c65745f7374616b696e6738556e6170706c696564536c61736808244163636f756e74496401001c42616c616e636501180014012476616c696461746f720001244163636f756e74496400010c6f776e18011c42616c616e63650001186f7468657273c90801645665633c284163636f756e7449642c2042616c616e6365293e0001247265706f7274657273ec01385665633c4163636f756e7449643e0001187061796f757418011c42616c616e63650000c908000002cd0800cd0800000408001800d108000004088d011800d5080c3870616c6c65745f7374616b696e6720736c617368696e6734536c617368696e675370616e7300001001287370616e5f696e6465781001245370616e496e6465780001286c6173745f7374617274100120457261496e6465780001486c6173745f6e6f6e7a65726f5f736c617368100120457261496e6465780001147072696f72390401345665633c457261496e6465783e0000d9080c3870616c6c65745f7374616b696e6720736c617368696e67285370616e5265636f7264041c42616c616e636501180008011c736c617368656418011c42616c616e6365000120706169645f6f757418011c42616c616e63650000dd08083870616c6c65745f7374616b696e6738456c656374696f6e526573756c7408244163636f756e74496401001c42616c616e63650118000c013c656c65637465645f73746173686573ec01385665633c4163636f756e7449643e0001246578706f7375726573c10101b85665633c284163636f756e7449642c204578706f737572653c4163636f756e7449642c2042616c616e63653e293e00011c636f6d707574658901013c456c656374696f6e436f6d707574650000e108083870616c6c65745f7374616b696e6738456c656374696f6e537461747573042c426c6f636b4e756d6265720110010818436c6f736564000000104f70656e040010012c426c6f636b4e756d62657200010000e508083870616c6c65745f7374616b696e67645065726d697373696f6e65644964656e7469747950726566730000080138696e74656e6465645f636f756e7410010c75333200013472756e6e696e675f636f756e7410010c7533320000e908083870616c6c65745f7374616b696e672052656c65617365730001203456315f305f30416e6369656e740000001856325f305f300001001856335f305f300002001856345f305f300003001856355f305f300004001856365f305f300005001856365f305f310006001856375f305f3000070000ed08083870616c6c65745f7374616b696e67144572726f720404540001a8344e6f74436f6e74726f6c6c6572000004644e6f74206120636f6e74726f6c6c6572206163636f756e742e204e6f745374617368000104504e6f742061207374617368206163636f756e742e34416c7265616479426f6e64656400020460537461736820697320616c726561647920626f6e6465642e34416c726561647950616972656400030474436f6e74726f6c6c657220697320616c7265616479207061697265642e30456d7074795461726765747300040460546172676574732063616e6e6f7420626520656d7074792e44496e76616c6964536c617368496e64657800050484536c617368207265636f726420696e646578206f7574206f6620626f756e64732e44496e73756666696369656e7456616c7565000604c843616e206e6f7420626f6e6420776974682076616c7565206c657373207468616e206d696e696d756d2062616c616e63652e304e6f4d6f72654368756e6b730007049043616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b732e344e6f556e6c6f636b4368756e6b000804a043616e206e6f74207265626f6e6420776974686f757420756e6c6f636b696e67206368756e6b732e3046756e646564546172676574000904c8417474656d7074696e6720746f2074617267657420612073746173682074686174207374696c6c206861732066756e64732e48496e76616c6964457261546f526577617264000a0458496e76616c69642065726120746f207265776172642e484e6f74536f72746564416e64556e69717565000b04804974656d7320617265206e6f7420736f7274656420616e6420756e697175652e38416c7265616479436c61696d6564000c0409015265776172647320666f72207468697320657261206861766520616c7265616479206265656e20636c61696d656420666f7220746869732076616c696461746f722e7c4f6666636861696e456c656374696f6e4561726c795375626d697373696f6e000d04e0546865207375626d697474656420726573756c74206973207265636569766564206f7574206f6620746865206f70656e2077696e646f772e784f6666636861696e456c656374696f6e5765616b5375626d697373696f6e000e04fc546865207375626d697474656420726573756c74206973206e6f7420617320676f6f6420617320746865206f6e652073746f726564206f6e20636861696e2e4c536e617073686f74556e617661696c61626c65000f04cc54686520736e617073686f742064617461206f66207468652063757272656e742077696e646f77206973206d697373696e672e804f6666636861696e456c656374696f6e426f67757357696e6e6572436f756e74001004ac496e636f7272656374206e756d626572206f662077696e6e65727320776572652070726573656e7465642e6c4f6666636861696e456c656374696f6e426f67757357696e6e65720011085d014f6e65206f6620746865207375626d69747465642077696e6e657273206973206e6f7420616e206163746976652063616e646964617465206f6e20636861696e2028696e646578206973206f7574206f662072616e676534696e20736e617073686f74292e704f6666636861696e456c656374696f6e426f677573436f6d7061637400120859014572726f72207768696c65206275696c64696e67207468652061737369676e6d656e7420747970652066726f6d2074686520636f6d706163742e20546869732063616e2068617070656e20696620616e20696e646578a4697320696e76616c69642c206f72206966207468652077656967687473205f6f766572666c6f775f2e784f6666636861696e456c656374696f6e426f6775734e6f6d696e61746f7200130411014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f7273206973206e6f7420616e20616374697665206e6f6d696e61746f72206f6e20636861696e2e7c4f6666636861696e456c656374696f6e426f6775734e6f6d696e6174696f6e00140449014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e206564676520746f20776869636820746865792068617665206e6f7420766f746564206f6e20636861696e2e844f6666636861696e456c656374696f6e536c61736865644e6f6d696e6174696f6e0015085d014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e2065646765207768696368206973207375626d6974746564206265666f726520746865206c617374206e6f6e2d7a65726f50736c617368206f6620746865207461726765742e744f6666636861696e456c656374696f6e426f67757353656c66566f74650016042101412073656c6620766f7465206d757374206f6e6c79206265206f726967696e617465642066726f6d20612076616c696461746f7220746f204f4e4c59207468656d73656c7665732e644f6666636861696e456c656374696f6e426f677573456467650017044101546865207375626d697474656420726573756c742068617320756e6b6e6f776e206564676573207468617420617265206e6f7420616d6f6e67207468652070726573656e7465642077696e6e6572732e684f6666636861696e456c656374696f6e426f67757353636f7265001804150154686520636c61696d65642073636f726520646f6573206e6f74206d61746368207769746820746865206f6e6520636f6d70757465642066726f6d2074686520646174612e844f6666636861696e456c656374696f6e426f677573456c656374696f6e53697a650019047454686520656c656374696f6e2073697a6520697320696e76616c69642e3843616c6c4e6f74416c6c6f776564001a0445015468652063616c6c206973206e6f7420616c6c6f7765642061742074686520676976656e2074696d652064756520746f207265737472696374696f6e73206f6620656c656374696f6e20706572696f642e58496e636f7272656374536c617368696e675370616e73001b04b0496e636f7272656374206e756d626572206f6620736c617368696e67207370616e732070726f76696465642e34416c7265616479457869737473001c04985065726d697373696f6e65642076616c696461746f7220616c7265616479206578697374732e244e6f74457869737473001d04885065726d697373696f6e65642076616c696461746f72206e6f74206578697374732e204e6f4368616e6765001e04605570646174657320776974682073616d652076616c75652e60496e76616c696456616c696461746f724964656e74697479001f04b8476976656e20706f74656e7469616c2076616c696461746f72206964656e7469747920697320696e76616c69642e68496e76616c696456616c696461746f72436f6d6d697373696f6e0020049c56616c696461746f7220707265667320617265206e6f7420696e2076616c69642072616e67652e6453746173684964656e74697479446f65734e6f744578697374002104d456616c696461746f72206f72206e6f6d696e61746f72207374617368206964656e7469747920646f6573206e6f742065786973742e7053746173684964656e746974794e6f745065726d697373696f6e6564002204b856616c696461746f72207374617368206964656e7469747920776173206e6f74207065726d697373696f6e65642e5453746173684964656e746974794e6f744344446564002304784e6f6d696e61746f7220737461736820776173206e6f742043444465642e64486974496e74656e64656456616c696461746f72436f756e74002404bc52756e6e696e672076616c696461746f7220636f756e74206869742074686520696e74656e64656420636f756e742e98496e74656e646564436f756e744973457863656564696e67436f6e73656e7375734c696d697400250435015768656e2074686520696e74656e646564206e756d626572206f662076616c696461746f727320746f2072756e206973203e3d20322f33206f66206076616c696461746f725f636f756e74602e30426f6e64546f6f536d616c6c002604dc5768656e2074686520616d6f756e7420746f20626520626f6e646564206973206c657373207468616e20604d696e696d756d426f6e64602042616453746174650027043901496e7465726e616c20737461746520686173206265636f6d6520736f6d65686f7720636f7272757074656420616e6420746865206f7065726174696f6e2063616e6e6f7420636f6e74696e75652e38546f6f4d616e795461726765747300280494546f6f206d616e79206e6f6d696e6174696f6e207461726765747320737570706c6965642e244261645461726765740029043d0141206e6f6d696e6174696f6e207461726765742077617320737570706c69656420746861742077617320626c6f636b6564206f72206f7468657277697365206e6f7420612076616c696461746f722e04744572726f7220666f7220746865207374616b696e67206d6f64756c652ef1080c2873705f7374616b696e671c6f6666656e6365384f6666656e636544657461696c7308205265706f727465720100204f6666656e64657201c501000801206f6666656e646572c50101204f6666656e6465720001247265706f7274657273ec01345665633c5265706f727465723e0000f5080000040899012800f908000002fd0800fd0800000408000507000109000004080509280005090c1c73705f636f72651863727970746f244b65795479706549640000040038011c5b75383b20345d000009090c3870616c6c65745f73657373696f6e1870616c6c6574144572726f7204045400011430496e76616c696450726f6f6600000460496e76616c6964206f776e6572736869702070726f6f662e5c4e6f4173736f63696174656456616c696461746f7249640001049c4e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e344475706c6963617465644b65790002046452656769737465726564206475706c6963617465206b65792e184e6f4b657973000304a44e6f206b65797320617265206173736f63696174656420776974682074686973206163636f756e742e244e6f4163636f756e7400040419014b65792073657474696e67206163636f756e74206973206e6f74206c6976652c20736f206974277320696d706f737369626c6520746f206173736f6369617465206b6579732e04744572726f7220666f72207468652073657373696f6e2070616c6c65742e0d09083870616c6c65745f6772616e6470612c53746f726564537461746504044e01100110104c6976650000003050656e64696e6750617573650801307363686564756c65645f61741001044e00011464656c61791001044e000100185061757365640002003450656e64696e67526573756d650801307363686564756c65645f61741001044e00011464656c61791001044e000300001109083870616c6c65745f6772616e6470614c53746f72656450656e64696e674368616e676508044e0110144c696d697400001001307363686564756c65645f61741001044e00011464656c61791001044e0001406e6578745f617574686f7269746965731509016c426f756e646564417574686f726974794c6973743c4c696d69743e000118666f72636564250601244f7074696f6e3c4e3e0000150910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401a901045300000400a50101185665633c543e000019090c3870616c6c65745f6772616e6470611870616c6c6574144572726f7204045400011c2c50617573654661696c65640000080501417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665a42865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e30526573756d654661696c65640001081101417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e277420706175736564a028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e344368616e676550656e64696e67000204e8417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e1c546f6f536f6f6e000304bc43616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e60496e76616c69644b65794f776e65727368697050726f6f66000404310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f660005043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400060415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a0909091d0910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401b901045300000400210901185665633c543e00002109000002b90100250910346672616d655f737570706f727418747261697473106d69736334577261707065724f70617175650404540129090008007104000000290901045400002909084070616c6c65745f696d5f6f6e6c696e6564426f756e6465644f70617175654e6574776f726b53746174650c4c506565724964456e636f64696e674c696d697400584d756c746941646472456e636f64696e674c696d697400384164647265737365734c696d6974000008011c706565725f69642d09019c5765616b426f756e6465645665633c75382c20506565724964456e636f64696e674c696d69743e00014865787465726e616c5f6164647265737365733109012d015765616b426f756e6465645665633c5765616b426f756e6465645665633c75382c204d756c746941646472456e636f64696e674c696d69743e2c204164647265737365734c696d69740a3e00002d0910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401080453000004002801185665633c543e0000310910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e646564566563080454012d09045300000400350901185665633c543e000035090000022d090039090c4070616c6c65745f696d5f6f6e6c696e651870616c6c6574144572726f7204045400010828496e76616c69644b6579000004604e6f6e206578697374656e74207075626c6963206b65792e4c4475706c696361746564486561727462656174000104544475706c696361746564206865617274626561742e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a0909093d09082c70616c6c65745f7375646f144572726f720404540001042c526571756972655375646f0000047c53656e646572206d75737420626520746865205375646f206163636f756e7404644572726f7220666f7220746865205375646f206d6f64756c654109083070616c6c65745f6173736574485469636b6572526567697374726174696f6e0404550120000801146f776e65727c01284964656e746974794964000118657870697279f401244f7074696f6e3c553e00004509083070616c6c65745f6173736574345365637572697479546f6b656e0000100130746f74616c5f737570706c7918011c42616c616e63650001246f776e65725f6469647c01284964656e746974794964000124646976697369626c6519010110626f6f6c00012861737365745f74797065e50101244173736574547970650000490900000408a07c004d0900000408a0e101005109000004087ca0005509083070616c6c65745f61737365745841737365744f776e65727368697052656c6174696f6e00010c204e6f744f776e65640000002c5469636b65724f776e65640001002841737365744f776e656400020000590900000408a00102005d09083070616c6c65745f617373657464436c61737369635469636b6572526567697374726174696f6e00000801246574685f6f776e65723102013c457468657265756d4164647265737300012869735f6372656174656419010110626f6f6c00006109000004087c7c00650900000408a0790700690900000408a04502006d0900000408a04902007109083070616c6c65745f61737365741c56657273696f6e00000400080108753800007509083070616c6c65745f6173736574144572726f7204045400019830556e617574686f72697a65640000046c5468652075736572206973206e6f7420617574686f72697a65642e3c416c72656164794172636869766564000104805768656e20657874656e73696f6e20616c72656164792061726368697665642e44416c7265616479556e41726368697665640002048c5768656e20657874656e73696f6e20616c726561647920756e2d61726368697665642e5c457874656e73696f6e416c726561647950726573656e74000304805768656e20657874656e73696f6e20697320616c72656164792061646465642e4c4173736574416c7265616479437265617465640004048c54686520746f6b656e2068617320616c7265616479206265656e20637265617465642e345469636b6572546f6f4c6f6e6700050490546865207469636b6572206c656e677468206973206f76657220746865206c696d69742e385469636b65724e6f7441736369690006049c546865207469636b657220686173206e6f6e2d61736369692d656e636f6465642070617274732e5c5469636b6572416c726561647952656769737465726564000704c4546865207469636b657220697320616c7265616479207265676973746572656420746f20736f6d656f6e6520656c73652e54546f74616c537570706c7941626f76654c696d69740008049054686520746f74616c20737570706c792069732061626f766520746865206c696d69742e2c4e6f537563684173736574000904384e6f207375636820746f6b656e2e34416c726561647946726f7a656e000a047054686520746f6b656e20697320616c72656164792066726f7a656e2e284e6f74416e4f776e6572000b04984e6f7420616e206f776e6572206f662074686520746f6b656e206f6e20457468657265756d2e3c42616c616e63654f766572666c6f77000c04a8416e206f766572666c6f77207768696c652063616c63756c6174696e67207468652062616c616e63652e4c546f74616c537570706c794f766572666c6f77000d04bc416e206f766572666c6f77207768696c652063616c63756c6174696e672074686520746f74616c20737570706c792e48496e76616c69644772616e756c6172697479000e045c416e20696e76616c6964206772616e756c61726974792e244e6f7446726f7a656e000f0464546865206173736574206d7573742062652066726f7a656e2e3c496e76616c69645472616e73666572001004845472616e736665722076616c69646174696f6e20636865636b206661696c65642e4c496e73756666696369656e7442616c616e6365001104945468652073656e6465722062616c616e6365206973206e6f742073756666696369656e742e544173736574416c7265616479446976697369626c650012047c54686520746f6b656e20697320616c726561647920646976697369626c652e784d6178696d756d544d457874656e73696f6e4c696d69745265616368656400130499014e756d626572206f66205472616e73666572204d616e6167657220657874656e73696f6e7320617474616368656420746f20616e20617373657420697320657175616c20746f204d61784e756d6265724f66544d457874656e73696f6e466f7241737365742e70496e636f6d70617469626c65457874656e73696f6e56657273696f6e001404dc476976656e20736d61727420657874656e73696f6e206973206e6f7420636f6d70617469626c652077697468207468652061737365742e60496e76616c6964457468657265756d5369676e617475726500150494416e20696e76616c696420457468657265756d206045636473615369676e6174757265602e4c4e6f53756368436c61737369635469636b65720016049854686520676976656e207469636b6572206973206e6f74206120636c6173736963206f6e652e645469636b6572526567697374726174696f6e457870697265640017048c526567697374726174696f6e206f66207469636b65722068617320657870697265642e5053656e64657253616d6541735265636569766572001804845472616e736665727320746f2073656c6620617265206e6f7420616c6c6f776564244e6f53756368446f630019048854686520676976656e20446f63756d656e7420646f6573206e6f742065786973742e704d61784c656e6774684f6641737365744e616d654578636565646564001a04bc4d6178696d756d206c656e677468206f66206173736574206e616d6520686173206265656e2065786365656465642e8446756e64696e67526f756e644e616d654d61784c656e6774684578636565646564001b04ec4d6178696d756d206c656e677468206f66207468652066756e64696e6720726f756e64206e616d6520686173206265656e2065786365656465642e58496e76616c696441737365744964656e746966696572001c048c536f6d65206041737365744964656e746966696572602077617320696e76616c69642e84496e766573746f72556e697175656e657373436c61696d4e6f74416c6c6f776564001d04e8496e766573746f7220556e697175656e65737320636c61696d7320617265206e6f7420616c6c6f77656420666f7220746869732061737365742e60496e76616c6964437573746f6d4173736574547970654964001e0470496e76616c69642060437573746f6d4173736574547970654964602e8841737365744d657461646174614e616d654d61784c656e6774684578636565646564001f0405014d6178696d756d206c656e677468206f6620746865206173736574206d657461646174612074797065206e616d6520686173206265656e2065786365656465642e8c41737365744d6574616461746156616c75654d61784c656e6774684578636565646564002004f44d6178696d756d206c656e677468206f6620746865206173736574206d657461646174612076616c756520686173206265656e2065786365656465642e9441737365744d65746164617461547970654465664d61784c656e67746845786365656465640021041d014d6178696d756d206c656e677468206f6620746865206173736574206d65746164617461207479706520646566696e6974696f6e20686173206265656e2065786365656465642e6441737365744d657461646174614b657949734d697373696e67002204784173736574204d65746164617461206b6579206973206d697373696e672e6841737365744d6574616461746156616c756549734c6f636b65640023047c4173736574204d657461646174612076616c7565206973206c6f636b65642e8841737365744d657461646174614c6f63616c4b6579416c7265616479457869737473002404cc4173736574204d65746164617461204c6f63616c207479706520616c72656164792065786973747320666f722061737365742e8c41737365744d65746164617461476c6f62616c4b6579416c7265616479457869737473002504a84173736574204d6574616461746120476c6f62616c207479706520616c7265616479206578697374732e0079090000040871027c007d090c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e1c56657273696f6e000004000801087538000081090c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e144572726f720404540001383043414e6f7442656e65666974000004d441206361706974616c20646973747269627574696f6e20776173206d61646520666f722061206e6f6e2d62656e656669742043412e34416c7265616479457869737473000104a84120646973747269627574696f6e20616c72656164792065786973747320666f7220746869732043412e4c4578706972794265666f72655061796d656e7400020829014120646973747269627574696f6e732070726f766964656420657870697279206461746520776173207374726963746c79206265666f726520697473207061796d656e7420646174652e2101496e206f7468657220776f7264732c2065766572797468696e6720746f206469737472696275746520776f756c6420696d6d6564696174656c7920626520666f726665697465642e44446973747269627574696e674173736574000308f043757272656e63792074686174206973206469737472696275746564206973207468652073616d65206173207468652043412773207469636b65722e690143616c6c696e67206167656e7420697320617474656d7074696e67206120666f726d206f662073746f636b2073706c69742c207768696368206973206e6f742077686174207468652065787472696e73696320697320666f722e44486f6c646572416c726561647950616964000404d454686520746f6b656e20686f6c6465722068617320616c7265616479206265656e20706169642074686569722062656e656669742e484e6f53756368446973747269627574696f6e000504c441206361706974616c20646973747269627574696f6e20646f65736e277420657869737420666f7220746869732043412e5843616e6e6f74436c61696d4265666f726553746172740006046101446973747269627574696f6e20616c6c6f746d656e742063616e6e6f7420626520636c61696d6564206173207468652063757272656e742074696d65206973206265666f72652073746172742d6f662d7061796d656e742e5843616e6e6f74436c61696d41667465724578706972790007046901446973747269627574696f6e27732065787069727920686173207061737365642e204449442063616e6e6f7420636c61696d20616e796d6f726520616e642068617320666f72666569746564207468652062656e65666974732e8042616c616e6365506572536861726550726f647563744f766572666c6f77656400080429014d756c7469706c69636174696f6e206f66207468652062616c616e636520776974682074686520706572207368617265207061796f757420616d6f756e74206f766572666c6f7765642e584e6f74446973747269627574696f6e43726561746f72000904c0444944206973206e6f7420746865206f6e652077686f20637265617465642074686520646973747269627574696f6e2e40416c72656164795265636c61696d6564000a04d44449442077686f20637265617465642074686520646973747269627574696f6e20616c726561647920646964207265636c61696d2e284e6f7445787069726564000b04f0446973747269627574696f6e20686164206e6f742065787069726564207965742c206f722074686572652773206e6f2065787069727920646174652e4c446973747269627574696f6e53746172746564000c0401014120646973747269627574696f6e20686173206265656e206163746976617465642c20617320607061796d656e745f6174203c3d206e6f776020686f6c64732e6c496e73756666696369656e7452656d61696e696e67416d6f756e74000d042d014120646973747269627574696f6e2068617320696e73756666696369656e742072656d61696e696e6720616d6f756e74206f662063757272656e637920746f20646973747269627574652e00850900000408a089020089090000040885097c008d0900000289020091090000028d0200950900000408a09d020099090c3070616c6c65745f617373657428636865636b706f696e741c56657273696f6e00000400080108753800009d090c3070616c6c65745f617373657428636865636b706f696e74144572726f72040454000114384e6f537563685363686564756c65000004cc4120636865636b706f696e74207363686564756c6520646f6573206e6f7420657869737420666f72207468652061737365742e505363686564756c654e6f7452656d6f7661626c650001041d014120636865636b706f696e74207363686564756c65206973206e6f742072656d6f7661626c6520617320607265665f636f756e74287363686564756c655f696429203e2030602e744661696c6564546f436f6d707574654e657874436865636b706f696e74000208984661696c656420746f20636f6d7075746520746865206e65787420636865636b706f696e742ed0546865207363686564756c6520646f6573206e6f74206861766520616e79207570636f6d696e6720636865636b706f696e74732e605363686564756c654475726174696f6e546f6f53686f7274000304bc546865206475726174696f6e206f662061207363686564756c6520706572696f6420697320746f6f2073686f72742e4c5363686564756c6573546f6f436f6d706c6578000408d054686520736574206f66207363686564756c65732074616b656e20746f6765746865722061726520746f6f20636f6d706c65782ef8466f72206578616d706c652c20746865792061726520746f6f206d616e792c206f722074686579206f636375727320746f6f206672657175656e746c792e00a1090c4c706f6c796d6573685f7072696d69746976657348636f6d706c69616e63655f6d616e616765723c4173736574436f6d706c69616e6365000008011870617573656419010110626f6f6c000130726571756972656d656e7473d10201685665633c436f6d706c69616e6365526571756972656d656e743e0000a509086470616c6c65745f636f6d706c69616e63655f6d616e616765721c56657273696f6e0000040008010875380000a909086470616c6c65745f636f6d706c69616e63655f6d616e61676572144572726f7204045400011830556e617574686f72697a65640000045c55736572206973206e6f7420617574686f72697a65642e2c4469644e6f74457869737400010434446964206e6f7420657869737478496e76616c6964436f6d706c69616e6365526571756972656d656e7449640002049c436f6d706c69616e636520726571756972656d656e7420696420646f65736e277420657869737484496e636f72726563744f7065726174696f6e4f6e547275737465644973737565720003049c4973737565722065786973742062757420747279696e6720746f2061646420697420616761696e7c4475706c6963617465436f6d706c69616e6365526571756972656d656e7473000404b0546865726520617265206475706c696361746520636f6d706c69616e636520726571756972656d656e74732e7c436f6d706c69616e6365526571756972656d656e74546f6f436f6d706c6578000504110154686520776f7273742063617365207363656e6172696f206f662074686520636f6d706c69616e636520726571756972656d656e7420697320746f6f20636f6d706c657800ad0900000408a0750200b109086070616c6c65745f636f72706f726174655f616374696f6e731c56657273696f6e0000040008010875380000b509086070616c6c65745f636f72706f726174655f616374696f6e73144572726f7204045400013048417574684e6f744341415472616e73666572000004050154686520617574686f72697a6174696f6e2074797065206973206e6f7420746f207472616e73666572207468652043414120746f20616e6f74686572204449442e3844657461696c73546f6f4c6f6e67000104d8546865206064657461696c7360206f66206120434120657863656564656420746865206d617820616c6c6f776564206c656e6774682e3c4475706c69636174654469645461780002082101412077697468686f6c64696e6720746178206f7665727269646520666f72206120676976656e204449442077617320737065636966696564206d6f7265207468616e206f6e63652e050154686520636861696e207265667573656420746f206d616b6520612063686f6963652c20616e642068656e63652074686572652077617320616e206572726f722e3c546f6f4d616e794469645461786573000304c8546f6f206d616e792077697468686f6c64696e6720746178206f76657272696465732077657265207370656369666965642e40546f6f4d616e79546172676574496473000404e4546f6f206d616e79206964656e74697469657320696e20605461726765744964656e746974696573602077657265207370656369666965642e484e6f53756368436865636b706f696e74496400050405014f6e204341206372656174696f6e2c206120636865636b706f696e74204944207761732070726f766964656420776869636820646f65736e27742065786973742e204e6f537563684341000604a44120434120776974682074686520676976656e2060434149646020646964206e6f742065786973742e304e6f5265636f7264446174650007048854686520434120646964206e6f7420686176652061207265636f726420646174652e505265636f7264446174654166746572537461727400080cdc412043412773207265636f7264206461746520776173207374726963746c792061667465722074686520227374617274222074696d652c8c7768657265202273746172742220697320636f6e7465787420646570656e64656e742e8101466f72206578616d706c652c20697420636f756c6420626520746865207374617274206f6620612062616c6c6f742c206f72207468652073746172742d6f662d7061796d656e7420696e206361706974616c20646973747269627574696f6e2e5c4465636c4461746541667465725265636f726444617465000904ec412043412773206465636c61726174696f6e206461746520776173207374726963746c7920616674657220697473207265636f726420646174652e404465636c44617465496e467574757265000a04b4412043412773206465636c61726174696f6e2064617465206f636375727320696e20746865206675747572652e3c4e6f74546172676574656442794341000b046c434120646f6573206e6f742074617267657420746865204449442e00b9090000021800bd090c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74144572726f720404540001382c43414e6f744e6f74696365000004e04120636f72706f726174652062616c6c6f7420776173206d61646520666f722061206e6f6e20604973737565724e6f74696365602043412e34416c7265616479457869737473000104b84120636f72706f726174652062616c6c6f7420616c72656164792065786973747320666f7220746869732043412e304e6f5375636842616c6c6f74000204b44120636f72706f726174652062616c6c6f7420646f65736e277420657869737420666f7220746869732043412e3453746172744166746572456e6400030411014120636f72706f726174652062616c6c6f7427732073746172742074696d6520776173207374726963746c79206166746572207468652062616c6c6f74277320656e642e2c4e6f774166746572456e640004040d014120636f72706f726174652062616c6c6f74277320656e642074696d6520776173207374726963746c79206265666f7265207468652063757272656e742074696d652e5c4e756d6265724f6643686f696365734f766572666c6f770005043901496620736f6d65206d6f74696f6e20696e206120636f72706f726174652062616c6c6f7420686173206d6f72652063686f69636573207468616e20776f756c642066697420696e2060753136602e50566f74696e67416c7265616479537461727465640006040101566f74696e67207374617274656420616c72656164792e20416d656e64696e6720612062616c6c6f74206973206e6f206c6f6e67657220706f737369626c652e40566f74696e674e6f745374617274656400070468566f74696e67206861736e27742073746172746564207965742e48566f74696e67416c7265616479456e64656400080454566f74696e6720656e64656420616c72656164792e3857726f6e67566f7465436f756e74000904150150726f7669646564206c697374206f662062616c616e63657320646f6573206e6f74206d617463682074686520746f74616c206e756d626572206f662063686f696365732e44496e73756666696369656e74566f746573000a043d01566f74696e6720706f7765722075736564206279206120444944206f6e2061206d6f74696f6e2065786365656473207468617420776869636820697320617661696c61626c6520746f207468656d2e444e6f5375636852435646616c6c6261636b000b04bc546865205243562066616c6c6261636b206f6620736f6d652063686f69636520646f6573206e6f742065786973742e3052435653656c664379636c65000c04b4546865205243562066616c6c6261636b20706f696e747320746f20746865206f726967696e2063686f6963652e345243564e6f74416c6c6f776564000d048c524356206973206e6f7420616c6c6f77656420666f7220746869732062616c6c6f742e00c109084870616c6c65745f7065726d697373696f6e73144572726f7204045400010448556e617574686f72697a656443616c6c6572000004ec5468652063616c6c6572206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e00c509082c70616c6c65745f7069707330506970734d65746164617461042c426c6f636b4e756d62657201100018010869644d030114506970496400010c75726c5102012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e510301584f7074696f6e3c5069704465736372697074696f6e3e000128637265617465645f617410012c426c6f636b4e756d62657200014c7472616e73616374696f6e5f76657273696f6e10010c7533320001186578706972793901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0000c909000004084d030000cd09082c70616c6c65745f706970732c4465706f736974496e666f04244163636f756e7449640100000801146f776e65720001244163636f756e744964000118616d6f756e7418011c42616c616e63650000d109082c70616c6c65745f706970730c506970082050726f706f73616c01dd05244163636f756e74496401000010010869644d030114506970496400012070726f706f73616cdd05012050726f706f73616c00011473746174655d03013450726f706f73616c537461746500012070726f706f7365724503014c50726f706f7365723c4163636f756e7449643e0000d509082c70616c6c65745f7069707330566f74696e67526573756c740000100128617965735f636f756e7410010c753332000128617965735f7374616b6518011c42616c616e63650001286e6179735f636f756e7410010c7533320001286e6179735f7374616b6518011c42616c616e63650000d909082c70616c6c65745f7069707310566f74650000080019010110626f6f6c000018011c42616c616e63650000dd09082c70616c6c65745f7069707340536e617073686f744d65746164617461082c426c6f636b4e756d6265720110244163636f756e7449640100000c0128637265617465645f617410012c426c6f636b4e756d62657200011c6d6164655f62790001244163636f756e744964000108696461030128536e617073686f7449640000e109082c70616c6c65745f706970731c56657273696f6e0000040008010875380000e509082c70616c6c65745f70697073144572726f720404540001488452657363686564756c654e6f74427952656c65617365436f6f7264696e61746f7200000431014f6e6c79207468652047432072656c6561736520636f6f7264696e61746f7220697320616c6c6f77656420746f2072657363686564756c652070726f706f73616c20657865637574696f6e2e404e6f7446726f6d436f6d6d756e697479000108ec54686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2ecc5468652070726f706f73616c206d7573742062652066726f6d2074686520636f6d6d756e6974792c206275742069736e27742e384e6f744279436f6d6d6974746565000208ec54686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2eb45468652070726f706f73616c206d75737420626520627920636f6d6d756e6974792c206275742069736e27742e44546f6f4d616e794163746976655069707300030829015468652063757272656e74206e756d626572206f6620616374697665202870656e64696e67207c207363686564756c65642920504950732065786365656420746865206d6178696d756d9c616e64207468652070726f706f73616c206973206e6f74206279206120636f6d6d69747465652e40496e636f72726563744465706f7369740004049c50726f706f7365722073706563696669657320616e20696e636f7272656374206465706f7369744c496e73756666696369656e744465706f736974000504b450726f706f7365722063616e2774206166666f726420746f206c6f636b206d696e696d756d206465706f736974384e6f5375636850726f706f73616c000604705468652070726f706f73616c20646f6573206e6f742065786973742e4c4e6f7441436f6d6d69747465654d656d626572000704844e6f742070617274206f6620676f7665726e616e636520636f6d6d69747465652e60496e76616c6964467574757265426c6f636b4e756d626572000804d85768656e206120626c6f636b206e756d626572206973206c657373207468616e2063757272656e7420626c6f636b206e756d6265722e544e756d6265724f66566f74657345786365656465640009047c5768656e206e756d626572206f6620766f746573206f766572666c6f77732e685374616b65416d6f756e744f66566f7465734578636565646564000a04985768656e207374616b6520616d6f756e74206f66206120766f7465206f766572666c6f77732e584d697373696e6743757272656e744964656e74697479000b044c4d697373696e672063757272656e742044494458496e636f727265637450726f706f73616c5374617465000c049050726f706f73616c206973206e6f7420696e2074686520636f72726563742073746174653443616e6e6f74536b6970506970000d04fc5768656e20656e616374696e6720736e617073686f7420726573756c74732c20616e20756e736b69707061626c65205049502077617320736b69707065642e58536e617073686f74526573756c74546f6f4c61726765000e041501547269656420746f20656e61637420726573756c747320666f722074686520736e617073686f74207175657565206f766572666c6f77696e6720697473206c656e6774682e48536e617073686f7449644d69736d61746368000f045d01547269656420746f20656e61637420726573756c7420666f7220504950207769746820696420646966666572656e742066726f6d20746861742061742074686520706f736974696f6e20696e207468652071756575652e705363686564756c656450726f706f73616c446f65736e744578697374001004fc457865637574696f6e206f662061207363686564756c65642070726f706f73616c206661696c65642062656361757365206974206973206d697373696e672e6c50726f706f73616c4e6f74496e5363686564756c65645374617465001104fc412070726f706f73616c2074686174206973206e6f7420696e2061207363686564756c65642073746174652063616e6e6f742062652065786563757465642e00e909000004087ce000ed09000004087c850300f10900000408d8a000f509000004087cd800f909084070616c6c65745f706f7274666f6c696f1c56657273696f6e0000040008010875380000fd09084070616c6c65745f706f7274666f6c696f144572726f7204045400012454506f7274666f6c696f446f65734e6f7445786973740000047054686520706f7274666f6c696f20646f65736e27742065786973742e70496e73756666696369656e74506f7274666f6c696f42616c616e63650001049c496e73756666696369656e742062616c616e636520666f722061207472616e73616374696f6e2e6844657374696e6174696f6e497353616d65506f7274666f6c696f000204e854686520736f7572636520616e642064657374696e6174696f6e20706f7274666f6c696f732073686f756c6420626520646966666572656e742e64506f7274666f6c696f4e616d65416c7265616479496e557365000304310154686520706f7274666f6c696f20636f756c646e27742062652072656e616d65642062656361757365207468652063686f73656e206e616d6520697320616c726561647920696e207573652e945365636f6e646172794b65794e6f74417574686f72697a6564466f72506f7274666f6c696f000404fc546865207365636f6e64617279206b6579206973206e6f7420617574686f72697a656420746f206163636573732074686520706f7274666f6c696f2873292e54556e617574686f72697a6564437573746f6469616e000504f454686520706f72666f6c696f277320637573746f6479206973207769746820736f6d656f6e65206f74686572207468616e207468652063616c6c65722e60496e73756666696369656e74546f6b656e734c6f636b6564000604bc43616e206e6f7420756e6c6f636b206d6f726520746f6b656e73207468616e207768617420617265206c6f636b656444506f7274666f6c696f4e6f74456d707479000704bc54686520706f7274666f6c696f207374696c6c2068617320736f6d652061737365742062616c616e6365206c6566746c446966666572656e744964656e74697479506f7274666f6c696f73000804b454686520706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e74697469657300010a084c70616c6c65745f70726f746f636f6c5f666565144572726f7204045400010c68496e73756666696369656e744163636f756e7442616c616e6365000004b0496e73756666696369656e74206163636f756e742062616c616e636520746f2070617920746865206665652e4c556e48616e646c6564496d62616c616e636573000104884e6f742061626c6520746f2068616e646c65642074686520696d62616c616e63657368496e73756666696369656e745375627369647942616c616e6365000204b0496e73756666696369656e7420737562736964792062616c616e636520746f2070617920746865206665652e00050a000002090a00090a04184f7074696f6e040454010d0a0108104e6f6e6500000010536f6d6504000d0a00000100000d0a084070616c6c65745f7363686564756c65722c5363686564756c65645632101043616c6c01dd052c426c6f636b4e756d62657201103450616c6c6574734f726967696e01110a244163636f756e7449640100001401206d617962655f69646102013c4f7074696f6e3c5665633c75383e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cdd05011043616c6c0001386d617962655f706572696f646963d50701944f7074696f6e3c7363686564756c653a3a506572696f643c426c6f636b4e756d6265723e3e0001186f726967696e110a013450616c6c6574734f726967696e0000110a0c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d65304f726967696e43616c6c65720001141873797374656d0400150a01746672616d655f73797374656d3a3a4f726967696e3c52756e74696d653e00000044506f6c796d657368436f6d6d69747465650400190a01f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365313e00090048546563686e6963616c436f6d6d697474656504001d0a01f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365333e000b004055706772616465436f6d6d69747465650400210a01f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365343e000d0010566f69640400250a01110173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a566f696400040000150a08306672616d655f73797374656d245261774f726967696e04244163636f756e7449640100010c10526f6f74000000185369676e656404000001244163636f756e744964000100104e6f6e6500020000190a084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449012d01010420456e646f72736564000000001d0a084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449014901010420456e646f7273656400000000210a084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449015901010420456e646f7273656400000000250a081c73705f636f726510566f696400010000290a084070616c6c65745f7363686564756c65722052656c6561736573000108085631000000085632000100002d0a0c4070616c6c65745f7363686564756c65721870616c6c6574144572726f72040454000110404661696c6564546f5363686564756c65000004644661696c656420746f207363686564756c6520612063616c6c204e6f74466f756e640001047c43616e6e6f742066696e6420746865207363686564756c65642063616c6c2e5c546172676574426c6f636b4e756d626572496e50617374000204a4476976656e2074617267657420626c6f636b206e756d62657220697320696e2074686520706173742e4852657363686564756c654e6f4368616e6765000304f052657363686564756c65206661696c6564206265636175736520697420646f6573206e6f74206368616e6765207363686564756c65642074696d652e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909310a084470616c6c65745f736574746c656d656e741456656e7565000008011c63726561746f727c01284964656e74697479496400012876656e75655f74797065ad03012456656e7565547970650000350a00000408a503b10300390a00000408a50300003d0a084470616c6c65745f736574746c656d656e742c496e737472756374696f6e08184d6f6d656e7401202c426c6f636b4e756d6265720110001c0138696e737472756374696f6e5f6964b1030134496e737472756374696f6e496400012076656e75655f6964a503011c56656e75654964000118737461747573410a0144496e737472756374696f6e53746174757300013c736574746c656d656e745f74797065b503016c536574746c656d656e74547970653c426c6f636b4e756d6265723e000128637265617465645f6174f401384f7074696f6e3c4d6f6d656e743e00012874726164655f64617465f401384f7074696f6e3c4d6f6d656e743e00012876616c75655f64617465f401384f7074696f6e3c4d6f6d656e743e0000410a084470616c6c65745f736574746c656d656e7444496e737472756374696f6e53746174757300010c1c556e6b6e6f776e0000001c50656e64696e67000100184661696c656400020000450a00000408b103c10300490a084470616c6c65745f736574746c656d656e74244c656753746174757304244163636f756e7449640100010c4050656e64696e67546f6b656e4c6f636b00000040457865637574696f6e50656e64696e6700010050457865637574696f6e546f4265536b697070656408000001244163636f756e744964000020010c753634000200004d0a00000408b103d800510a084470616c6c65745f736574746c656d656e744441666669726d6174696f6e53746174757300010c1c556e6b6e6f776e0000001c50656e64696e670001002041666669726d656400020000550a00000408d8b10300590a00000408a0a503005d0a084470616c6c65745f736574746c656d656e741c56657273696f6e0000040008010875380000610a084470616c6c65745f736574746c656d656e74144572726f7204045400016430496e76616c696456656e75650000045456656e756520646f6573206e6f742065786973742e30556e617574686f72697a6564000104a853656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e3c4e6f50656e64696e6741666669726d000204d04e6f2070656e64696e672061666669726d6174696f6e20666f72207468652070726f766964656420696e737472756374696f6e2e58496e737472756374696f6e4e6f7441666669726d656400030488496e737472756374696f6e20686173206e6f74206265656e2061666669726d65642e54496e737472756374696f6e4e6f7450656e64696e67000404b850726f766964656420696e737472756374696f6e206973206e6f742070656e64696e6720657865637574696f6e2e50496e737472756374696f6e4e6f744661696c6564000504b850726f766964656420696e737472756374696f6e206973206e6f74206661696c696e6720657865637574696f6e2e344c65674e6f7450656e64696e670006049850726f7669646564206c6567206973206e6f742070656e64696e6720657865637574696f6e2e48556e617574686f72697a65645369676e6572000704985369676e6572206973206e6f7420617574686f72697a6564206279207468652076656e75652e5452656365697074416c7265616479436c61696d6564000804545265636569707420616c726561647920757365642e44526563656970744e6f74436c61696d65640009045452656365697074206e6f742075736564207965742e44556e617574686f72697a656456656e7565000a04a456656e756520646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e484661696c6564546f4c6f636b546f6b656e73000b0421015768696c652061666669726d696e6720746865207472616e736665722c2073797374656d206661696c656420746f206c6f636b207468652061737365747320696e766f6c7665642e44496e737472756374696f6e4661696c6564000c0478496e737472756374696f6e206661696c656420746f20657865637574652e5c496e737472756374696f6e4461746573496e76616c6964000d0474496e737472756374696f6e2068617320696e76616c696420646174657370496e737472756374696f6e536574746c65426c6f636b506173736564000e04a8496e737472756374696f6e27732074617267657420736574746c6520626c6f636b20726561636865642e40496e76616c69645369676e6174757265000f04784f6666636861696e207369676e617475726520697320696e76616c69642e4853616d6553656e64657252656365697665720010048453656e64657220616e6420726563656976657220617265207468652073616d652e44506f7274666f6c696f4d69736d617463680011042501506f7274666f6c696f20696e207265636569707420646f6573206e6f74206d61746368207769746820706f7274666f6c696f732070726f76696465642062792074686520757365722e44536574746c654f6e50617374426c6f636b00120461015468652070726f766964656420736574746c656d656e7420626c6f636b206e756d62657220697320696e20746865207061737420616e642063616e6e6f74206265207573656420627920746865207363686564756c65722e4c4e6f506f7274666f6c696f50726f76696465640013043d01506f7274666f6c696f20626173656420616374696f6e732072657175697265206174206c65617374206f6e6520706f7274666f6c696f20746f2062652070726f766964656420617320696e7075742e6c556e657870656374656441666669726d6174696f6e53746174757300140445015468652063757272656e7420696e737472756374696f6e2061666669726d6174696f6e2073746174757320646f6573206e6f7420737570706f7274207468652072657175657374656420616374696f6e2e404661696c6564546f5363686564756c650015048c5363686564756c696e67206f6620616e20696e737472756374696f6e206661696c732e404c6567436f756e74546f6f536d616c6c001604a5014c65677320636f756e742073686f756c64206d61746368657320776974682074686520746f74616c206e756d626572206f66206c65677320696e20776869636820676976656e20706f7274666f6c696f20616374206173206066726f6d5f706f7274666f6c696f602e48556e6b6e6f776e496e737472756374696f6e00170474496e737472756374696f6e2073746174757320697320756e6b6e6f776e64496e737472756374696f6e486173546f6f4d616e794c656773001804c44d6178696d756d206c65677320746861742063616e20626520696e20612073696e676c6520696e737472756374696f6e2e04844572726f727320666f722074686520536574746c656d656e74206d6f64756c652e650a00000408690af10300690a0c4c706f6c796d6573685f7072696d697469766573287374617469737469637328537461743173744b657900000801146173736574d1030128417373657453636f7065000124737461745f74797065d9030120537461745479706500006d0a0c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e63655c41737365745472616e73666572436f6d706c69616e6365000008011870617573656419010110626f6f6c000130726571756972656d656e7473f907016c42547265655365743c5472616e73666572436f6e646974696f6e3e0000710a000004080d047c00750a084470616c6c65745f737461746973746963731c56657273696f6e0000040008010875380000790a084470616c6c65745f73746174697374696373144572726f720404540001183c496e76616c69645472616e73666572000004545472616e73666572206e6f7420616c6c6f7765642e3c53746174547970654d697373696e67000104605374617454797065206973206e6f7420656e61626c65642e8453746174547970654e656564656442795472616e73666572436f6e646974696f6e000204a05374617454797065206973206e6565646564206279205472616e73666572436f6e646974696f6e2e6443616e6e6f7452656d6f76655374617454797065496e557365000304a84120537461747479706520697320696e2075736520616e642063616e27742062652072656d6f7665642e5053746174547970654c696d697452656163686564000404f4546865206c696d6974206f662053746174547970657320616c6c6f77656420666f7220616e20617373657420686173206265656e20726561636865642e745472616e73666572436f6e646974696f6e4c696d6974526561636865640005041901546865206c696d6974206f66205472616e73666572436f6e646974696f6e7320616c6c6f77656420666f7220616e20617373657420686173206265656e20726561636865642e046453746174697374696373206d6f64756c65206572726f72732e7d0a00000408a0190400810a082870616c6c65745f73746f144572726f7204045400013030556e617574686f72697a6564000004a853656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e204f766572666c6f770001048c416e2061726974686d65746963206f7065726174696f6e206f766572666c6f7765642e6c496e73756666696369656e74546f6b656e7352656d61696e696e67000204804e6f7420656e6f75676820746f6b656e73206c65667420666f722073616c652e4846756e647261697365724e6f74466f756e640003045446756e64726169736572206e6f7420666f756e642e4446756e647261697365724e6f744c6976650004049c46756e64726169736572206973206569746865722066726f7a656e206f722073746f707065642e4046756e64726169736572436c6f736564000504ac46756e6472616973657220686173206265656e20636c6f7365642f73746f7070656420616c72656164792e4446756e6472616973657245787069726564000604d0496e746572616374696e67207769746820612066756e6472616973657220706173742074686520656e6420604d6f6d656e74602e30496e76616c696456656e756500070468416e20696e76616c69642076656e75652070726f76696465642e44496e76616c6964507269636554696572730008042501416e20696e646976696475616c20707269636520746965722077617320696e76616c6964206f72206120736574206f662070726963652074696572732077617320696e76616c69642e54496e76616c69644f66666572696e6757696e646f770009045d0157696e646f77202873746172742074696d652c20656e642074696d65292068617320696e76616c696420706172616d65746572732c20652e672073746172742074696d6520697320616674657220656e642074696d652e404d617850726963654578636565646564000a04bc5072696365206f662074686520696e766573746d656e7420657863656564656420746865206d61782070726963652e58496e766573746d656e74416d6f756e74546f6f4c6f77000b04e8496e766573746d656e7420616d6f756e74206973206c6f776572207468616e206d696e696d756d20696e766573746d656e7420616d6f756e742e04844572726f727320666f722074686520536574746c656d656e74206d6f64756c652e850a083c70616c6c65745f7472656173757279144572726f720404540001084c496e73756666696369656e7442616c616e63650000047850726f706f73657227732062616c616e636520697320746f6f206c6f772e3c496e76616c69644964656e7469747900010488496e76616c6964206964656e7469747920666f722064697362757273656d656e742e04784572726f7220666f7220746865207472656173757279206d6f64756c652e890a083870616c6c65745f7574696c697479144572726f7204045400010c40496e76616c69645369676e6174757265000004744f6666636861696e207369676e617475726520697320696e76616c6964405461726765744364644d697373696e670001048054617267657420646f6573206e6f74206861766520612076616c69642043444430496e76616c69644e6f6e636500020c6850726f7669646564206e6f6e63652077617320696e76616c696411014966207468652070726f7669646564206e6f6e6365203c2063757272656e74206e6f6e63652c207468652063616c6c2077617320616c72656164792065786563757465645d014966207468652070726f7669646564206e6f6e6365203e2063757272656e74206e6f6e63652c207468652063616c6c287329206265666f7265207468652063757272656e74206661696c656420746f2065786563757465008d0a082c70616c6c65745f62617365144572726f720404540001081c546f6f4c6f6e6700000880457863656564656420612067656e65726963206c656e677468206c696d69742e1d01546865206c696d697420636f756c6420626520666f7220616e7920736f7274206f66206c69737473206f66207468696e67732c20696e636c7564696e67206120737472696e672e3c436f756e7465724f766572666c6f77000118b85468652073657175656e636520636f756e74657220666f7220736f6d657468696e67206f766572666c6f7765642e001d015768656e20746869732068617070656e7320646570656e6473206f6e20652e672e2c20746865206361706163697479206f6620746865206964656e74696669657220747970652e3901466f72206578616d706c652c207765206d69676874206861766520607075622073747275637420506970496428753332293b602c207769746820607533323a3a4d4158602063617061636974792e5901496e2070726163746963652c207468657365206572726f72732077696c6c206e657665722068617070656e20627574206e6f20636f646520706174682073686f756c6420726573756c7420696e20612070616e69632cfc736f20746865736520636f726e6572206361736573206e65656420746f20626520636f7665726564207769746820616e206572726f722076617269616e742e00910a00000408a0150100950a085870616c6c65745f65787465726e616c5f6167656e7473144572726f72040454000118204e6f537563684147000004ec416e20414720776974682074686520676976656e2060414749646020646964206e6f7420657869737420666f722074686520605469636b6572602e44556e617574686f72697a65644167656e74000104e8546865206167656e74206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e38416c7265616479416e4167656e74000204e85468652070726f766964656420606167656e746020697320616c726561647920616e206167656e7420666f722074686520605469636b6572602e284e6f74416e4167656e74000304d85468652070726f766964656420606167656e7460206973206e6f7420616e206167656e7420666f722074686520605469636b6572602e5452656d6f76696e674c61737446756c6c4167656e74000408e054686973206167656e7420697320746865206c6173742066756c6c206f6e652c20616e642069742773206265696e672072656d6f7665642c686d616b696e6720746865206173736574206f727068616e65642e845365636f6e646172794b65794e6f74417574686f72697a6564466f7241737365740005041d015468652063616c6c65722773207365636f6e64617279206b657920646f6573206e6f74206861766520746865207265717569726564206173736574207065726d697373696f6e2e00990a083870616c6c65745f72656c617965721c53756273696479040c416363010000080128706179696e675f6b657900010c41636300012472656d61696e696e6718011c42616c616e636500009d0a083870616c6c65745f72656c61796572144572726f7204045400011c44557365724b65794364644d697373696e67000004cc5468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e4c506179696e674b65794364644d697373696e67000104cc5468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e2c4e6f506179696e674b6579000204ac5468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e304e6f74506179696e674b6579000304b05468652060757365725f6b65796020686173206120646966666572656e742060706179696e675f6b6579602e644e6f74417574686f72697a6564466f72506179696e674b6579000404b8546865207369676e6572206973206e6f7420617574686f72697a656420666f722060706179696e675f6b6579602e5c4e6f74417574686f72697a6564466f72557365724b6579000504b0546865207369676e6572206973206e6f7420617574686f72697a656420666f722060757365725f6b6579602e204f766572666c6f77000604b85468652072656d61696e696e6720504f4c595820666f722060757365725f6b657960206f766572666c6f7765642e00a10a083870616c6c65745f72657761726473144572726f7204045400011044556e6b6e6f776e49746e41646472657373000004cc4164647265737320776173206e6f7420666f756e6420696e20746865206c697374206f662049746e206164647265737365732e5c49746e526577617264416c7265616479436c61696d65640001047c49746e207265776172642077617320616c726561647920636c61696d65642e40496e76616c69645369676e61747572650002047c50726f7669646564207369676e61747572652077617320696e76616c69642e54556e61626c65546f436f7665727442616c616e6365000304b042616c616e63652063616e206e6f7420626520636f6e76657274656420746f2061207072696d69746976652e00a50a084470616c6c65745f746573745f7574696c73144572726f7204045400010000a90a102873705f72756e74696d651c67656e657269634c756e636865636b65645f65787472696e73696348556e636865636b656445787472696e736963101c416464726573730139051043616c6c01dd05245369676e617475726501e50714457874726101ad0a00040028000000ad0a00000420b10ab50ab90abd0ac50ac90ad10ad50a00b10a10306672616d655f73797374656d28657874656e73696f6e7348636865636b5f737065635f76657273696f6e40436865636b5370656356657273696f6e04045400000000b50a10306672616d655f73797374656d28657874656e73696f6e7340636865636b5f74785f76657273696f6e38436865636b547856657273696f6e04045400000000b90a10306672616d655f73797374656d28657874656e73696f6e7334636865636b5f67656e6573697330436865636b47656e6573697304045400000000bd0a10306672616d655f73797374656d28657874656e73696f6e733c636865636b5f6d6f7274616c69747938436865636b4d6f7274616c69747904045400000400c10a010c4572610000c10a102873705f72756e74696d651c67656e657269630c6572610c4572610001010420496d6d6f7274616c0000001c4d6f7274616c31040008000001001c4d6f7274616c32040008000002001c4d6f7274616c33040008000003001c4d6f7274616c34040008000004001c4d6f7274616c35040008000005001c4d6f7274616c36040008000006001c4d6f7274616c37040008000007001c4d6f7274616c38040008000008001c4d6f7274616c3904000800000900204d6f7274616c313004000800000a00204d6f7274616c313104000800000b00204d6f7274616c313204000800000c00204d6f7274616c313304000800000d00204d6f7274616c313404000800000e00204d6f7274616c313504000800000f00204d6f7274616c313604000800001000204d6f7274616c313704000800001100204d6f7274616c313804000800001200204d6f7274616c313904000800001300204d6f7274616c323004000800001400204d6f7274616c323104000800001500204d6f7274616c323204000800001600204d6f7274616c323304000800001700204d6f7274616c323404000800001800204d6f7274616c323504000800001900204d6f7274616c323604000800001a00204d6f7274616c323704000800001b00204d6f7274616c323804000800001c00204d6f7274616c323904000800001d00204d6f7274616c333004000800001e00204d6f7274616c333104000800001f00204d6f7274616c333204000800002000204d6f7274616c333304000800002100204d6f7274616c333404000800002200204d6f7274616c333504000800002300204d6f7274616c333604000800002400204d6f7274616c333704000800002500204d6f7274616c333804000800002600204d6f7274616c333904000800002700204d6f7274616c343004000800002800204d6f7274616c343104000800002900204d6f7274616c343204000800002a00204d6f7274616c343304000800002b00204d6f7274616c343404000800002c00204d6f7274616c343504000800002d00204d6f7274616c343604000800002e00204d6f7274616c343704000800002f00204d6f7274616c343804000800003000204d6f7274616c343904000800003100204d6f7274616c353004000800003200204d6f7274616c353104000800003300204d6f7274616c353204000800003400204d6f7274616c353304000800003500204d6f7274616c353404000800003600204d6f7274616c353504000800003700204d6f7274616c353604000800003800204d6f7274616c353704000800003900204d6f7274616c353804000800003a00204d6f7274616c353904000800003b00204d6f7274616c363004000800003c00204d6f7274616c363104000800003d00204d6f7274616c363204000800003e00204d6f7274616c363304000800003f00204d6f7274616c363404000800004000204d6f7274616c363504000800004100204d6f7274616c363604000800004200204d6f7274616c363704000800004300204d6f7274616c363804000800004400204d6f7274616c363904000800004500204d6f7274616c373004000800004600204d6f7274616c373104000800004700204d6f7274616c373204000800004800204d6f7274616c373304000800004900204d6f7274616c373404000800004a00204d6f7274616c373504000800004b00204d6f7274616c373604000800004c00204d6f7274616c373704000800004d00204d6f7274616c373804000800004e00204d6f7274616c373904000800004f00204d6f7274616c383004000800005000204d6f7274616c383104000800005100204d6f7274616c383204000800005200204d6f7274616c383304000800005300204d6f7274616c383404000800005400204d6f7274616c383504000800005500204d6f7274616c383604000800005600204d6f7274616c383704000800005700204d6f7274616c383804000800005800204d6f7274616c383904000800005900204d6f7274616c393004000800005a00204d6f7274616c393104000800005b00204d6f7274616c393204000800005c00204d6f7274616c393304000800005d00204d6f7274616c393404000800005e00204d6f7274616c393504000800005f00204d6f7274616c393604000800006000204d6f7274616c393704000800006100204d6f7274616c393804000800006200204d6f7274616c393904000800006300244d6f7274616c31303004000800006400244d6f7274616c31303104000800006500244d6f7274616c31303204000800006600244d6f7274616c31303304000800006700244d6f7274616c31303404000800006800244d6f7274616c31303504000800006900244d6f7274616c31303604000800006a00244d6f7274616c31303704000800006b00244d6f7274616c31303804000800006c00244d6f7274616c31303904000800006d00244d6f7274616c31313004000800006e00244d6f7274616c31313104000800006f00244d6f7274616c31313204000800007000244d6f7274616c31313304000800007100244d6f7274616c31313404000800007200244d6f7274616c31313504000800007300244d6f7274616c31313604000800007400244d6f7274616c31313704000800007500244d6f7274616c31313804000800007600244d6f7274616c31313904000800007700244d6f7274616c31323004000800007800244d6f7274616c31323104000800007900244d6f7274616c31323204000800007a00244d6f7274616c31323304000800007b00244d6f7274616c31323404000800007c00244d6f7274616c31323504000800007d00244d6f7274616c31323604000800007e00244d6f7274616c31323704000800007f00244d6f7274616c31323804000800008000244d6f7274616c31323904000800008100244d6f7274616c31333004000800008200244d6f7274616c31333104000800008300244d6f7274616c31333204000800008400244d6f7274616c31333304000800008500244d6f7274616c31333404000800008600244d6f7274616c31333504000800008700244d6f7274616c31333604000800008800244d6f7274616c31333704000800008900244d6f7274616c31333804000800008a00244d6f7274616c31333904000800008b00244d6f7274616c31343004000800008c00244d6f7274616c31343104000800008d00244d6f7274616c31343204000800008e00244d6f7274616c31343304000800008f00244d6f7274616c31343404000800009000244d6f7274616c31343504000800009100244d6f7274616c31343604000800009200244d6f7274616c31343704000800009300244d6f7274616c31343804000800009400244d6f7274616c31343904000800009500244d6f7274616c31353004000800009600244d6f7274616c31353104000800009700244d6f7274616c31353204000800009800244d6f7274616c31353304000800009900244d6f7274616c31353404000800009a00244d6f7274616c31353504000800009b00244d6f7274616c31353604000800009c00244d6f7274616c31353704000800009d00244d6f7274616c31353804000800009e00244d6f7274616c31353904000800009f00244d6f7274616c3136300400080000a000244d6f7274616c3136310400080000a100244d6f7274616c3136320400080000a200244d6f7274616c3136330400080000a300244d6f7274616c3136340400080000a400244d6f7274616c3136350400080000a500244d6f7274616c3136360400080000a600244d6f7274616c3136370400080000a700244d6f7274616c3136380400080000a800244d6f7274616c3136390400080000a900244d6f7274616c3137300400080000aa00244d6f7274616c3137310400080000ab00244d6f7274616c3137320400080000ac00244d6f7274616c3137330400080000ad00244d6f7274616c3137340400080000ae00244d6f7274616c3137350400080000af00244d6f7274616c3137360400080000b000244d6f7274616c3137370400080000b100244d6f7274616c3137380400080000b200244d6f7274616c3137390400080000b300244d6f7274616c3138300400080000b400244d6f7274616c3138310400080000b500244d6f7274616c3138320400080000b600244d6f7274616c3138330400080000b700244d6f7274616c3138340400080000b800244d6f7274616c3138350400080000b900244d6f7274616c3138360400080000ba00244d6f7274616c3138370400080000bb00244d6f7274616c3138380400080000bc00244d6f7274616c3138390400080000bd00244d6f7274616c3139300400080000be00244d6f7274616c3139310400080000bf00244d6f7274616c3139320400080000c000244d6f7274616c3139330400080000c100244d6f7274616c3139340400080000c200244d6f7274616c3139350400080000c300244d6f7274616c3139360400080000c400244d6f7274616c3139370400080000c500244d6f7274616c3139380400080000c600244d6f7274616c3139390400080000c700244d6f7274616c3230300400080000c800244d6f7274616c3230310400080000c900244d6f7274616c3230320400080000ca00244d6f7274616c3230330400080000cb00244d6f7274616c3230340400080000cc00244d6f7274616c3230350400080000cd00244d6f7274616c3230360400080000ce00244d6f7274616c3230370400080000cf00244d6f7274616c3230380400080000d000244d6f7274616c3230390400080000d100244d6f7274616c3231300400080000d200244d6f7274616c3231310400080000d300244d6f7274616c3231320400080000d400244d6f7274616c3231330400080000d500244d6f7274616c3231340400080000d600244d6f7274616c3231350400080000d700244d6f7274616c3231360400080000d800244d6f7274616c3231370400080000d900244d6f7274616c3231380400080000da00244d6f7274616c3231390400080000db00244d6f7274616c3232300400080000dc00244d6f7274616c3232310400080000dd00244d6f7274616c3232320400080000de00244d6f7274616c3232330400080000df00244d6f7274616c3232340400080000e000244d6f7274616c3232350400080000e100244d6f7274616c3232360400080000e200244d6f7274616c3232370400080000e300244d6f7274616c3232380400080000e400244d6f7274616c3232390400080000e500244d6f7274616c3233300400080000e600244d6f7274616c3233310400080000e700244d6f7274616c3233320400080000e800244d6f7274616c3233330400080000e900244d6f7274616c3233340400080000ea00244d6f7274616c3233350400080000eb00244d6f7274616c3233360400080000ec00244d6f7274616c3233370400080000ed00244d6f7274616c3233380400080000ee00244d6f7274616c3233390400080000ef00244d6f7274616c3234300400080000f000244d6f7274616c3234310400080000f100244d6f7274616c3234320400080000f200244d6f7274616c3234330400080000f300244d6f7274616c3234340400080000f400244d6f7274616c3234350400080000f500244d6f7274616c3234360400080000f600244d6f7274616c3234370400080000f700244d6f7274616c3234380400080000f800244d6f7274616c3234390400080000f900244d6f7274616c3235300400080000fa00244d6f7274616c3235310400080000fb00244d6f7274616c3235320400080000fc00244d6f7274616c3235330400080000fd00244d6f7274616c3235340400080000fe00244d6f7274616c3235350400080000ff0000c50a10306672616d655f73797374656d28657874656e73696f6e732c636865636b5f6e6f6e636528436865636b4e6f6e63650404540000040071040120543a3a496e6465780000c90a0c4c706f6c796d6573685f657874656e73696f6e7330636865636b5f7765696768742c436865636b57656967687404045400000400cd0a011443573c543e0000cd0a10306672616d655f73797374656d28657874656e73696f6e7330636865636b5f7765696768742c436865636b57656967687404045400000000d10a086870616c6c65745f7472616e73616374696f6e5f7061796d656e74604368617267655472616e73616374696f6e5061796d656e7404045400000400cd01013042616c616e63654f663c543e0000d50a084870616c6c65745f7065726d697373696f6e734453746f726543616c6c4d6574616461746104045400000000d90a0c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d651c52756e74696d6500000000bc1853797374656d011853797374656d401c4163636f756e7401010402000c4101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e8205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e3845787472696e736963436f756e74000010040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e2c426c6f636b57656967687401001c600000000000000000000000000000000000000000000000000488205468652063757272656e742077656967687420666f722074686520626c6f636b2e40416c6c45787472696e736963734c656e000010040004410120546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e24426c6f636b486173680101040510248000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101040510280400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d6265720100101000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801002480000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e1844696765737401002c040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e7473010048040010a0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e005901204e4f54453a20546869732073746f72616765206974656d206973206578706c696369746c7920756e626f756e6465642073696e6365206974206973206e6576657220696e74656e64656420746f2062652072656164642066726f6d2077697468696e207468652072756e74696d652e284576656e74436f756e74010010100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f70696373010104022469040400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e004d01205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e484c61737452756e74696d655570677261646500006d0404000455012053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e545570677261646564546f553332526566436f756e74010019010400044d012054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e605570677261646564546f547269706c65526566436f756e74010019010400085d012054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e73207468726565207479706573206f662060526566436f756e74602e2046616c736548202864656661756c7429206966206e6f742e38457865637574696f6e506861736500006104040004882054686520657865637574696f6e207068617365206f662074686520626c6f636b2e01790401541830426c6f636b576569676874738904850100c817a80400000000204aa9d10100008036be26000000000180914b872e010000010098f73e5d0100000100000000000000008036be26000000000180199ef1a20100000100204aa9d1010000010088526a740000008036be260000000000000004d020426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e2c426c6f636b4c656e677468950430000078000000a0000000a00004a820546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e38426c6f636b48617368436f756e741010fa000000045501204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e2044625765696768749d044080f0fa020000000000c2eb0b000000000409012054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e1c56657273696f6ea1040d0430706f6c796d6573685f64657630706f6c796d6573685f64657601000000404b4c000000000048df6acb689907609b0300000037e397fc7c91f5e40100000040fe3ad401f8959a05000000d2bc9897eed08f1503000000f78b278be53f454c02000000ed99c5acb25eedf503000000cbca25e39f14238702000000687ad44ad37f03c201000000bc9d89904f5b923f0100000037c8bb1350a9a2a801000000ab3c0572291feb8b0100000018ef58a3b67ba77001000000329342994773047f01000000001a0b29f17d01f401000000f28e8080b6e2dfd002000000bb6ba9053c5c9d78020000009f242c2c886f3fce01000000595ac34c5ea1f5fe01000000020000000484204765742074686520636861696e27732063757272656e742076657273696f6e2e28535335385072656669783d03082a0014a8205468652064657369676e61746564205353383520707265666978206f66207468697320636861696e2e0039012054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e20697331012074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f662069742061737020616e206964656e746966696572206f662074686520636861696e2e01b504001042616265011042616265402845706f6368496e64657801002020000000000000000004542043757272656e742065706f636820696e6465782e2c417574686f7269746965730100b9040400046c2043757272656e742065706f636820617574686f7269746965732e2c47656e65736973536c6f740100c90420000000000000000008f82054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e205468697320697320309020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2c43757272656e74536c6f740100c90420000000000000000004542043757272656e7420736c6f74206e756d6265722e2852616e646f6d6e65737301000480000000000000000000000000000000000000000000000000000000000000000028b8205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e002c20232053656375726974790005012054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061f8206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e7915012063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d6265727320746861742074686973150120286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e206265050120757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e0d01206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e6050656e64696e6745706f6368436f6e6669674368616e67650000cd0404000461012050656e64696e672065706f636820636f6e66696775726174696f6e206368616e676520746861742077696c6c206265206170706c696564207768656e20746865206e6578742065706f636820697320656e61637465642e384e65787452616e646f6d6e657373010004800000000000000000000000000000000000000000000000000000000000000000045c204e6578742065706f63682072616e646f6d6e6573732e3c4e657874417574686f7269746965730100b90404000460204e6578742065706f636820617574686f7269746965732e305365676d656e74496e6465780100101000000000247c2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e00f4205765206d616b6520612074726164656f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e01012057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f942060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e00ec204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e090120576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572791c2065706f63682e44556e646572436f6e737472756374696f6e0101040510d90404000415012054574f582d4e4f54453a20605365676d656e74496e6465786020697320616e20696e6372656173696e6720696e74656765722c20736f2074686973206973206f6b61792e2c496e697469616c697a65640000e10404000801012054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d65601d01206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e4c417574686f7256726652616e646f6d6e6573730100e10404001015012054686973206669656c642073686f756c6420616c7761797320626520706f70756c6174656420647572696e6720626c6f636b2070726f63657373696e6720756e6c6573731901207365636f6e6461727920706c61696e20736c6f74732061726520656e61626c65642028776869636820646f6e277420636f6e7461696e206120565246206f7574707574292e0051012049742069732073657420696e20606f6e5f696e697469616c697a65602c206265666f72652069742077696c6c20636f6e7461696e207468652076616c75652066726f6d20746865206c61737420626c6f636b2e2845706f6368537461727401009d03200000000000000000145d012054686520626c6f636b206e756d62657273207768656e20746865206c61737420616e642063757272656e742065706f6368206861766520737461727465642c20726573706563746976656c7920604e2d316020616e641420604e602e4901204e4f54453a20576520747261636b207468697320697320696e206f7264657220746f20616e6e6f746174652074686520626c6f636b206e756d626572207768656e206120676976656e20706f6f6c206f66590120656e74726f7079207761732066697865642028692e652e20697420776173206b6e6f776e20746f20636861696e206f6273657276657273292e2053696e63652065706f6368732061726520646566696e656420696e590120736c6f74732c207768696368206d617920626520736b69707065642c2074686520626c6f636b206e756d62657273206d6179206e6f74206c696e6520757020776974682074686520736c6f74206e756d626572732e204c6174656e657373010010100000000014d820486f77206c617465207468652063757272656e7420626c6f636b20697320636f6d706172656420746f2069747320706172656e742e001501205468697320656e74727920697320706f70756c617465642061732070617274206f6620626c6f636b20657865637574696f6e20616e6420697320636c65616e65642075701101206f6e20626c6f636b2066696e616c697a6174696f6e2e205175657279696e6720746869732073746f7261676520656e747279206f757473696465206f6620626c6f636bb020657865637574696f6e20636f6e746578742073686f756c6420616c77617973207969656c64207a65726f2e2c45706f6368436f6e6669670000e50404000861012054686520636f6e66696775726174696f6e20666f72207468652063757272656e742065706f63682e2053686f756c64206e6576657220626520604e6f6e656020617320697420697320696e697469616c697a656420696e242067656e657369732e3c4e65787445706f6368436f6e6669670000e5040400082d012054686520636f6e66696775726174696f6e20666f7220746865206e6578742065706f63682c20604e6f6e65602069662074686520636f6e6669672077696c6c206e6f74206368616e6765e82028796f752063616e2066616c6c6261636b20746f206045706f6368436f6e6669676020696e737465616420696e20746861742063617365292e01e904000c3445706f63684475726174696f6e20202c010000000000000cec2054686520616d6f756e74206f662074696d652c20696e20736c6f74732c207468617420656163682065706f63682073686f756c64206c6173742e1901204e4f54453a2043757272656e746c79206974206973206e6f7420706f737369626c6520746f206368616e6765207468652065706f6368206475726174696f6e20616674657221012074686520636861696e2068617320737461727465642e20417474656d7074696e6720746f20646f20736f2077696c6c20627269636b20626c6f636b2070726f64756374696f6e2e444578706563746564426c6f636b54696d652020701700000000000014050120546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e67110120626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f75740501207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f740901206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473a0207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e384d6178417574686f7269746965731010a08601000488204d6178206e756d626572206f6620617574686f72697469657320616c6c6f77656401fd04012454696d657374616d70012454696d657374616d70080c4e6f7701002020000000000000000004902043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e2444696455706461746501001901040004b420446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f0101050004344d696e696d756d506572696f642020b80b000000000000104d0120546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a5d0120706572696f6420746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c5d012067656e6572616c6c7920776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c206265a020646f75626c65207468697320706572696f64206f6e2064656661756c742073657474696e67732e00021c496e6469636573011c496e646963657304204163636f756e7473000104021009050400048820546865206c6f6f6b75702066726f6d20696e64657820746f206163636f756e742e010d050170041c4465706f736974184040420f0000000000000000000000000004ac20546865206465706f736974206e656564656420666f7220726573657276696e6720616e20696e6465782e0111050328417574686f72736869700128417574686f72736869700c18556e636c6573010015050400041c20556e636c657318417574686f720000000400046420417574686f72206f662063757272656e7420626c6f636b2e30446964536574556e636c657301001901040004bc205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e011d05000440556e636c6547656e65726174696f6e731010000000000ccc20546865206e756d626572206f6620626c6f636b73206261636b2077652073686f756c642061636365707420756e636c65732ee42054686973206d65616e7320746861742077652077696c6c206465616c207769746820756e636c652d706172656e7473207468617420617265942060556e636c6547656e65726174696f6e73202b203160206265666f726520606e6f77602e012505042042616c616e636573012042616c616e6365730834546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e144c6f636b7301010402002905040008b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e013505017404484578697374656e7469616c4465706f73697418400000000000000000000000000000000004d420546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e013d0505485472616e73616374696f6e5061796d656e7401485472616e73616374696f6e5061796d656e7408444e6578744665654d756c7469706c6965720100410540000064a7b3b6e00d0000000000000000003853746f7261676556657273696f6e01004505040000000008485472616e73616374696f6e42797465466565184064000000000000000000000000000000040d01205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e2c576569676874546f46656549055c040000000000000000000000000000000049b400000001040d012054686520706f6c796e6f6d69616c2074686174206973206170706c69656420696e206f7264657220746f20646572697665206665652066726f6d207765696768742e0006204964656e7469747901204964656e746974793c284469645265636f726473000104067c51050400045420444944202d3e206964656e7469747920696e666f2c497344696446726f7a656e010104067c1901040004e420444944202d3e20626f6f6c207468617420696e64696361746573206966207365636f6e64617279206b657973206172652066726f7a656e2e2843757272656e7444696400007c040004e02049742073746f726573207468652063757272656e74206964656e7469747920666f722063757272656e74207472616e73616374696f6e2e3043757272656e74506179657200000004000401012049742073746f726573207468652063757272656e74206761732066656520706179657220666f72207468652063757272656e74207472616e73616374696f6e18436c61696d7301010805025505f0c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a04f020285461726765742049442c20636c61696d20747970652920286973737565722c73636f706529202d3e204173736f63696174656420636c61696d73284b65795265636f726473000104050065050400044501204d61702066726f6d204163636f756e74496420746f20604b65795265636f726460207468617420686f6c647320746865206b65792773206964656e7469747920616e64207065726d697373696f6e732e1c4469644b65797301010806056905190104000401012041207265766572736520646f75626c65206d617020746f20616c6c6f772066696e64696e6720616c6c206b65797320666f7220616e206964656e746974792e444d756c7469507572706f73654e6f6e636501002020000000000000000004bc204e6f6e636520746f20656e7375726520756e6971756520616374696f6e732e207374617274732066726f6d20312e684f6666436861696e417574686f72697a6174696f6e4e6f6e6365010104067c2020000000000000000004c820417574686f72697a6174696f6e206e6f6e636520706572204964656e746974792e20496e697469616c6c7920697320302e38417574686f72697a6174696f6e7300010802056d057105040004b020416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792f6b6579206861734c417574686f72697a6174696f6e73476976656e010108060575056d0184000000000000000000000000000000000000000000000000000000000000000000044d0120416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792068617320676976656e2e2028417574686f72697a65722c20617574685f6964202d3e20617574686f72697a6564296c43646441757468466f724d61737465724b6579526f746174696f6e010019010400086501204f62736f6c657465642073746f72616765207661726961626c652073757065726365646564206279206043646441757468466f725072696d6172794b6579526f746174696f6e602e204974206973206b65707420686572659820666f722074686520707572706f7365206f662073746f72616765206d6967726174696f6e2e7043646441757468466f725072696d6172794b6579526f746174696f6e010019010400085d01204120636f6e66696720666c616720746861742c206966207365742c20696e7374727563747320616e20617574686f72697a6174696f6e2066726f6d2061204344442070726f766964657220696e206f7264657220746f9c206368616e676520746865207072696d617279206b6579206f6620616e206964656e746974792e3853746f7261676556657273696f6e01007905040004442053746f726167652076657273696f6e2e484163636f756e744b6579526566436f756e740101040200202000000000000000001cc420486f77206d616e7920227374726f6e6722207265666572656e63657320746f20746865206163636f756e74206b65792e00fc205374726f6e67207265666572656e6365732077696c6c20626c6f636b2061206b65792066726f6d206c656176696e672069742773206964656e746974792e00cc2050616c6c657473207573696e6720227374726f6e6722207265666572656e63657320746f206163636f756e74206b6579733aac202a2052656c617965723a20466f722060757365725f6b65796020616e642060706179696e675f6b65796000017d05018c0430496e697469616c504f4c59581840000000000000000000000000000000000001c905074c4364645365727669636550726f7669646572730138496e7374616e63653247726f75700c344163746976654d656d6265727301002501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100cd05040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01d505011d010001d9050844506f6c796d657368436f6d6d69747465650148496e7374616e636531436f6d6d6974746565242450726f706f73616c7301006504040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001040624dd05040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e6700010406244108040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100250104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401009d03200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201003901040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01004508040004442053746f726167652076657273696f6e2e01e10501290100014908094c436f6d6d69747465654d656d626572736869700138496e7374616e63653147726f75700c344163746976654d656d6265727301002501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100cd05040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01e505013d0100014d080a48546563686e6963616c436f6d6d69747465650148496e7374616e636533436f6d6d6974746565242450726f706f73616c7301006504040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001040624dd05040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e6700010406244108040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100250104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401009d03200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201003901040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01004508040004442053746f726167652076657273696f6e2e01e905014501000151080b70546563686e6963616c436f6d6d69747465654d656d626572736869700138496e7374616e63653347726f75700c344163746976654d656d6265727301002501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100cd05040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01ed05014d01000155080c4055706772616465436f6d6d69747465650148496e7374616e636534436f6d6d6974746565242450726f706f73616c7301006504040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001040624dd05040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e6700010406244108040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100250104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401009d03200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f7200007c040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201003901040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01004508040004442053746f726167652076657273696f6e2e01f105015501000159080d6855706772616465436f6d6d69747465654d656d626572736869700138496e7374616e63653447726f75700c344163746976654d656d6265727301002501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100cd05040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01f505015d0100015d080e204d756c746953696701204d756c746953696730344d756c74695369674e6f6e6365010020200000000000000000042101204e6f6e636520746f20656e7375726520756e69717565204d756c746953696720616464726573736573206172652067656e6572617465643b207374617274732066726f6d20312e3c4d756c74695369675369676e657273010108060561086d018400000000000000000000000000000000000000000000000000000000000000000004d4205369676e657273206f662061206d756c74697369672e20286d756c74697369672c207369676e657229203d3e207369676e65722e3c4e756d6265724f665369676e65727301010406002020000000000000000004cc204e756d626572206f6620617070726f7665642f6163636570746564207369676e657273206f662061206d756c74697369672e544d756c74695369675369676e73526571756972656401010406002020000000000000000004e020436f6e6669726d6174696f6e73207265717569726564206265666f72652070726f63657373696e672061206d756c74697369672074782e384d756c74695369675478446f6e65010104060020200000000000000000043501204e756d626572206f66207472616e73616374696f6e732070726f706f73656420696e2061206d756c74697369672e20557365642061732074782069643b207374617274732066726f6d20302e2450726f706f73616c73000104056508dd0504000475012050726f706f73616c732070726573656e74656420666f7220766f74696e6720746f2061206d756c746973696720286d756c74697369672c2070726f706f73616c20696429203d3e204f7074696f6e3c543a3a50726f706f73616c3e2e2c50726f706f73616c4964730001080602690820040004942041206d617070696e67206f662070726f706f73616c7320746f207468656972204944732e14566f746573010104056d081901040004250120496e646976696475616c206d756c7469736967207369676e657220766f7465732e20286d756c7469207369672c207369676e65722c2070726f706f73616c29203d3e20766f74652e484d756c7469536967546f4964656e7469747901010406007c80000000000000000000000000000000000000000000000000000000000000000004a4204d6170732061206d756c7469736967206163636f756e7420746f20697473206964656e746974792e3850726f706f73616c44657461696c01010405650871084c00000000000000000000000000000000000000047c2044657461696c73206f662061206d756c74697369672070726f706f73616c485472616e73616374696f6e56657273696f6e010010100000000004f420546865206c617374207472616e73616374696f6e2076657273696f6e2c207573656420666f7220606f6e5f72756e74696d655f75706772616465602e3853746f7261676556657273696f6e01007908040004442053746f726167652076657273696f6e2e01f90501650100017d080f1842726964676501184272696467652828436f6e74726f6c6c65720100008000000000000000000000000000000000000000000000000000000000000000000c410120546865206d756c7469736967206163636f756e74206f66207468652062726964676520636f6e74726f6c6c65722e205468652067656e65736973207369676e65727320616363657074207468656972450120617574686f72697a6174696f6e7320616e64206172652061626c6520746f206765742074686569722070726f706f73616c732064656c6976657265642e20546865206272696467652063726561746f729c207472616e736665727320736f6d6520504f4c5920746f207468656972206964656e746974792e3c427269646765547844657461696c73010108020281088508d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000859012044657461696c73206f6620627269646765207472616e73616374696f6e73206964656e7469666965642077697468207061697273206f662074686520726563697069656e74206163636f756e7420616e64207468656820627269646765207472616e73616374696f6e206e6f6e63652e1441646d696e010000800000000000000000000000000000000000000000000000000000000000000000043c205468652061646d696e206b65792e1846726f7a656e01001901040004bc2057686574686572206f72206e6f742074686520627269646765206f7065726174696f6e2069732066726f7a656e2e30467265657a6541646d696e7301010402001901040004090120467265657a65206272696467652061646d696e732e20205468657365206163636f756e74732063616e206f6e6c7920667265657a6520746865206272696467652e2054696d656c6f636b0100101000000000083d012054686520627269646765207472616e73616374696f6e2074696d656c6f636b20706572696f642c20696e20626c6f636b732c2073696e63652074686520616363657074616e6365206f66207468653101207472616e73616374696f6e2070726f706f73616c20647572696e67207768696368207468652061646d696e206b65792063616e20667265657a6520746865207472616e73616374696f6e2e2c4272696467654c696d697401008d0850000000000000000000000000000000000000000008290120546865206d6178696d756d206e756d626572206f66206272696467656420504f4c595820706572206964656e746974792077697468696e20612073657420696e74657276616c206f66f820626c6f636b732e204669656c64733a20504f4c595820616d6f756e7420616e642074686520626c6f636b20696e74657276616c206475726174696f6e2e30506f6c797842726964676564010104067c8d0850000000000000000000000000000000000000000008510120416d6f756e74206f6620504f4c5958206272696467656420627920746865206964656e7469747920696e206c61737420626c6f636b20696e74657276616c2e204669656c64733a2074686520627269646765649420616d6f756e7420616e6420746865206c61737420696e74657276616c206e756d6265722e4c4272696467654c696d69744578656d70746564010104057c1901040004c0204964656e746974696573206e6f7420636f6e73747261696e65642062792074686520627269646765206c696d69742e3853746f7261676556657273696f6e01009108040004442053746f726167652076657273696f6e2e01fd0501710100019508101c5374616b696e67011c5374616b696e679c30486973746f7279446570746801001010540000001c8c204e756d626572206f66206572617320746f206b65657020696e20686973746f72792e00390120496e666f726d6174696f6e206973206b65707420666f72206572617320696e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e006101204d757374206265206d6f7265207468616e20746865206e756d626572206f6620657261732064656c617965642062792073657373696f6e206f74686572776973652e20492e652e2061637469766520657261206d757374390120616c7761797320626520696e20686973746f72792e20492e652e20606163746976655f657261203e2063757272656e745f657261202d20686973746f72795f646570746860206d757374206265302067756172616e746565642e3856616c696461746f72436f756e74010010100000000004a82054686520696465616c206e756d626572206f66207374616b696e67207061727469636970616e74732e544d696e696d756d56616c696461746f72436f756e740100101000000000044101204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e34496e76756c6e657261626c65730100ec04000c590120416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e636520746865792772654d01206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f7572ac20696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e18426f6e6465640001040500000400040101204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e184c6564676572000104020099080400044501204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e14506179656501010405001106040004e42057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e2856616c696461746f72730101040500150608000004450120546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e284e6f6d696e61746f72730001040500a508040004650120546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f2074686520736574206f66207374617368206b657973206f6620616c6c2076616c696461746f727320746f206e6f6d696e6174652e2843757272656e744572610000100400105c205468652063757272656e742065726120696e6465782e006501205468697320697320746865206c617465737420706c616e6e6564206572612c20646570656e64696e67206f6e20686f77207468652053657373696f6e2070616c6c657420717565756573207468652076616c696461746f7280207365742c206974206d6967687420626520616374697665206f72206e6f742e244163746976654572610000a908040010d820546865206163746976652065726120696e666f726d6174696f6e2c20697420686f6c647320696e64657820616e642073746172742e0059012054686520616374697665206572612069732074686520657261206265696e672063757272656e746c792072657761726465642e2056616c696461746f7220736574206f66207468697320657261206d757374206265ac20657175616c20746f205b6053657373696f6e496e746572666163653a3a76616c696461746f7273605d2e5445726173537461727453657373696f6e496e6465780001040510100400103101205468652073657373696f6e20696e646578206174207768696368207468652065726120737461727420666f7220746865206c6173742060484953544f52595f44455054486020657261732e006101204e6f74653a205468697320747261636b7320746865207374617274696e672073657373696f6e2028692e652e2073657373696f6e20696e646578207768656e20657261207374617274206265696e672061637469766529f020666f7220746865206572617320696e20605b43757272656e74457261202d20484953544f52595f44455054482c2043757272656e744572615d602e2c457261735374616b6572730101080505ad08c9010c0000001878204578706f73757265206f662076616c696461746f72206174206572612e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e48457261735374616b657273436c69707065640101080505ad08c9010c0000002c9820436c6970706564204578706f73757265206f662076616c696461746f72206174206572612e00590120546869732069732073696d696c617220746f205b60457261735374616b657273605d20627574206e756d626572206f66206e6f6d696e61746f7273206578706f736564206973207265647563656420746f20746865dc2060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732e1d0120284e6f74653a20746865206669656c642060746f74616c6020616e6420606f776e60206f6620746865206578706f737572652072656d61696e7320756e6368616e676564292ef42054686973206973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e005d012054686973206973206b657965642066697374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e484572617356616c696461746f7250726566730101080505ad0815060800001411012053696d696c617220746f2060457261735374616b657273602c207468697320686f6c64732074686520707265666572656e636573206f662076616c696461746f72732e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4c4572617356616c696461746f7252657761726400010405101804000c09012054686520746f74616c2076616c696461746f7220657261207061796f757420666f7220746865206c6173742060484953544f52595f44455054486020657261732e0021012045726173207468617420686176656e27742066696e697368656420796574206f7220686173206265656e2072656d6f76656420646f65736e27742068617665207265776172642e4045726173526577617264506f696e74730101040510b10814000000000008ac205265776172647320666f7220746865206c6173742060484953544f52595f44455054486020657261732e250120496620726577617264206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207265776172642069732072657475726e65642e3845726173546f74616c5374616b65010104051018400000000000000000000000000000000008ec2054686520746f74616c20616d6f756e74207374616b656420666f7220746865206c6173742060484953544f52595f44455054486020657261732e1d0120496620746f74616c206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207374616b652069732072657475726e65642e20466f7263654572610100bd0804000454204d6f6465206f662065726120666f7263696e672e4c536c6173685265776172644672616374696f6e01008d0110000000000cf8205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e00e4205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e4c43616e63656c6564536c6173685061796f757401001840000000000000000000000000000000000815012054686520616d6f756e74206f662063757272656e637920676976656e20746f207265706f7274657273206f66206120736c617368206576656e7420776869636820776173ec2063616e63656c65642062792065787472616f7264696e6172792063697263756d7374616e6365732028652e672e20676f7665726e616e6365292e40556e6170706c696564536c61736865730101040510c108040004c420416c6c20756e6170706c69656420736c61736865732074686174206172652071756575656420666f72206c617465722e28426f6e646564457261730100690404001025012041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e00c8204d75737420636f6e7461696e7320696e666f726d6174696f6e20666f72206572617320666f72207468652072616e67653abc20605b6163746976655f657261202d20626f756e64696e675f6475726174696f6e3b206163746976655f6572615d604c56616c696461746f72536c617368496e4572610001080505ad08d108040008450120416c6c20736c617368696e67206576656e7473206f6e2076616c696461746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682070726f706f7274696f6e7020616e6420736c6173682076616c7565206f6620746865206572612e4c4e6f6d696e61746f72536c617368496e4572610001080505ad0818040004610120416c6c20736c617368696e67206576656e7473206f6e206e6f6d696e61746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682076616c7565206f6620746865206572612e34536c617368696e675370616e730001040500d5080400048c20536c617368696e67207370616e7320666f72207374617368206163636f756e74732e245370616e536c617368010104058108d908800000000000000000000000000000000000000000000000000000000000000000083d01205265636f72647320696e666f726d6174696f6e2061626f757420746865206d6178696d756d20736c617368206f6620612073746173682077697468696e206120736c617368696e67207370616e2cb82061732077656c6c20617320686f77206d7563682072657761726420686173206265656e2070616964206f75742e584561726c69657374556e6170706c696564536c617368000010040004fc20546865206561726c696573742065726120666f72207768696368207765206861766520612070656e64696e672c20756e6170706c69656420736c6173682e48536e617073686f7456616c696461746f72730000ec040008650120536e617073686f74206f662076616c696461746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e48536e617073686f744e6f6d696e61746f72730000ec040008650120536e617073686f74206f66206e6f6d696e61746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e34517565756564456c65637465640000dd0804000c650120546865206e6578742076616c696461746f72207365742e2041742074686520656e64206f6620616e206572612c206966207468697320697320617661696c61626c652028706f74656e7469616c6c792066726f6d20746865610120726573756c74206f6620616e206f6666636861696e20776f726b6572292c20697420697320696d6d6564696174656c7920757365642e204f74686572776973652c20746865206f6e2d636861696e20656c656374696f6e342069732065786563757465642e2c51756575656453636f72650000f906040004b0205468652073636f7265206f66207468652063757272656e74205b60517565756564456c6563746564605d2e44457261456c656374696f6e5374617475730100e108040008490120466c616720746f20636f6e74726f6c2074686520657865637574696f6e206f6620746865206f6666636861696e20656c656374696f6e2e205768656e20604f70656e285f29602c207765206163636570746c20736f6c7574696f6e7320746f206265207375626d69747465642e54497343757272656e7453657373696f6e46696e616c010019010400084d012054727565206966207468652063757272656e74202a2a706c616e6e65642a2a2073657373696f6e2069732066696e616c2e204e6f74652074686174207468697320646f6573206e6f742074616b65206572615820666f7263696e6720696e746f206163636f756e742e505065726d697373696f6e65644964656e74697479000104057ce508040004ec20456e74697469657320746861742061726520616c6c6f77656420746f2072756e206f70657261746f722f76616c696461746f72206e6f6465732e5856616c696461746f72436f6d6d697373696f6e43617001008d0110000000000415012045766572792076616c696461746f722068617320636f6d6d697373696f6e20746861742073686f756c6420626520696e207468652072616e6765205b302c204361705d2e504d696e696d756d426f6e645468726573686f6c64010018400000000000000000000000000000000004d020546865206d696e696d756d20616d6f756e74207769746820776869636820612076616c696461746f722063616e20626f6e642e48536c617368696e67416c6c6f776564466f72010091010402003853746f7261676556657273696f6e0100e908040610cc2054727565206966206e6574776f726b20686173206265656e20757067726164656420746f20746869732076657273696f6e2e7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e00a020546869732069732073657420746f2076362e302e3120666f72206e6577206e6574776f726b732e010d060185012c3853657373696f6e735065724572611010030000000470204e756d626572206f662073657373696f6e7320706572206572612e3c426f6e64696e674475726174696f6e10100700000004e4204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e48536c61736844656665724475726174696f6e101004000000140101204e756d626572206f662065726173207468617420736c6173686573206172652064656665727265642062792c20616674657220636f6d7075746174696f6e2e00bc20546869732073686f756c64206265206c657373207468616e2074686520626f6e64696e67206475726174696f6e2e2d012053657420746f203020696620736c61736865732073686f756c64206265206170706c69656420696d6d6564696174656c792c20776974686f7574206f70706f7274756e69747920666f723820696e74657276656e74696f6e2e44456c656374696f6e4c6f6f6b616865616410104b0000001c710120546865206e756d626572206f6620626c6f636b73206265666f72652074686520656e64206f6620746865206572612066726f6d20776869636820656c656374696f6e207375626d697373696f6e732061726520616c6c6f7765642e006d012053657474696e67207468697320746f207a65726f2077696c6c2064697361626c6520746865206f6666636861696e20636f6d7075746520616e64206f6e6c79206f6e2d636861696e207365712d70687261676d656e2077696c6c2420626520757365642e007501205468697320697320626f756e646564206279206265696e672077697468696e20746865206c6173742073657373696f6e2e2048656e63652c2073657474696e6720697420746f20612076616c7565206d6f7265207468616e207468659c206c656e677468206f6620612073657373696f6e2077696c6c20626520706f696e746c6573732e344d6178497465726174696f6e7310100a0000000c2901204d6178696d756d206e756d626572206f662062616c616e63696e6720697465726174696f6e7320746f2072756e20696e20746865206f6666636861696e207375626d697373696f6e2e00ec2049662073657420746f20302c2062616c616e63655f736f6c7574696f6e2077696c6c206e6f7420626520657865637574656420617420616c6c2e504d696e536f6c7574696f6e53636f726542756d708d011020a1070004610120546865207468726573686f6c64206f6620696d70726f76656d656e7420746861742073686f756c642062652070726f766964656420666f722061206e657720736f6c7574696f6e20746f2062652061636365707465642e804d61784e6f6d696e61746f72526577617264656450657256616c696461746f7210100008000010f820546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320726577617264656420666f7220656163682076616c696461746f722e00690120466f7220656163682076616c696461746f72206f6e6c79207468652060244d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732063616e20636c61696d2101207468656972207265776172642e2054686973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e5c4d617856616c696461746f725065724964656e746974797d0210100905000cf4204d6178696d756d206e756d626572206f662076616c696461746f727320666f722065616368207065726d697373696f6e6564206964656e746974792e005901204d6178206e756d626572206f662076616c696461746f727320636f756e74203d20604d617856616c696461746f725065724964656e74697479202a2053656c663a3a76616c696461746f725f636f756e742829602e844d61785661726961626c65496e666c6174696f6e546f74616c49737375616e636518400080c6a47e8d03000000000000000000047101204d6178696d756d20616d6f756e74206f662060543a3a63757272656e63793a3a746f74616c5f69737375616e63652829602061667465722074686174206e6f6e2d696e666c6174656420726577617264732067657420706169642e444669786564596561726c79526577617264184000c0444a547f0000000000000000000004010120546f74616c2079656172207265776172647320746861742067657473207061696420647572696e6720666978656420726577617264207363686564756c652e2c4d696e696d756d426f6e64184040420f0000000000000000000000000004f0204d696e696d756d20616d6f756e74206f6620504f4c59582074686174206d75737420626520626f6e64656420666f722061206e657720626f6e642e01ed0811204f6666656e63657301204f6666656e6365730c1c5265706f7274730001040524f108040004490120546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e58436f6e63757272656e745265706f727473496e6465780101080505f50865040400042901204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e485265706f72747342794b696e64496e64657801010405990128040018110120456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e00bc20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e004901204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f66690120646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e000195010000121c53657373696f6e011c53657373696f6e1c2856616c696461746f72730100ec0400047c205468652063757272656e7420736574206f662076616c696461746f72732e3043757272656e74496e646578010010100000000004782043757272656e7420696e646578206f66207468652073657373696f6e2e345175657565644368616e67656401001901040008390120547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f7273a420686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e285175657565644b6579730100f9080400083d012054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b657973e02077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e4844697361626c656456616c696461746f7273010039040400148020496e6469636573206f662064697361626c65642076616c696461746f72732e003d01205468652076656320697320616c77617973206b65707420736f7274656420736f20746861742077652063616e2066696e642077686574686572206120676976656e2076616c696461746f722069733d012064697361626c6564207573696e672062696e617279207365617263682e204974206765747320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e73642061206e657720736574206f66206964656e7469746965732e204e6578744b657973000104050005070400049c20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e204b65794f776e657200010405010900040004090120546865206f776e6572206f662061206b65792e20546865206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e010107019d01000109091348417574686f72697479446973636f766572790000000000141c4772616e647061011c4772616e6470611814537461746501000d0904000490205374617465206f66207468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e676500001109040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000010040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c656400009d030400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e3043757272656e745365744964010020200000000000000000085d0120546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c697469657329c420696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e30536574496453657373696f6e00010405201004001059012041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e00b82054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e010d0701a10104384d6178417574686f7269746965731010a0860100045c204d617820417574686f72697469657320696e207573650119091528486973746f726963616c00000000001620496d4f6e6c696e650120496d4f6e6c696e651038486561727462656174416674657201001010000000002c1d012054686520626c6f636b206e756d6265722061667465722077686963682069742773206f6b20746f2073656e64206865617274626561747320696e207468652063757272656e74242073657373696f6e2e0025012041742074686520626567696e6e696e67206f6620656163682073657373696f6e20776520736574207468697320746f20612076616c756520746861742073686f756c642066616c6c350120726f7567686c7920696e20746865206d6964646c65206f66207468652073657373696f6e206475726174696f6e2e20546865206964656120697320746f206669727374207761697420666f721901207468652076616c696461746f727320746f2070726f64756365206120626c6f636b20696e207468652063757272656e742073657373696f6e2c20736f207468617420746865a820686561727462656174206c61746572206f6e2077696c6c206e6f74206265206e65636573736172792e00390120546869732076616c75652077696c6c206f6e6c79206265207573656420617320612066616c6c6261636b206966207765206661696c20746f2067657420612070726f7065722073657373696f6e2d012070726f677265737320657374696d6174652066726f6d20604e65787453657373696f6e526f746174696f6e602c2061732074686f736520657374696d617465732073686f756c642062650101206d6f7265206163637572617465207468656e207468652076616c75652077652063616c63756c61746520666f7220604865617274626561744166746572602e104b65797301001d09040004d0205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e4852656365697665644865617274626561747300010805059d0325090400083d0120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206053657373696f6e496e6465786020616e64206041757468496e6465786020746fb02060577261707065724f70617175653c426f756e6465644f70617175654e6574776f726b53746174653e602e38417574686f726564426c6f636b730101080505ad0810100000000008150120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206056616c696461746f7249643c543e6020746f20746865c8206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e01390701b5010440556e7369676e65645072696f726974792020ffffffffffffffff10f0204120636f6e66696775726174696f6e20666f722062617365207072696f72697479206f6620756e7369676e6564207472616e73616374696f6e732e0015012054686973206973206578706f73656420736f20746861742069742063616e2062652074756e656420666f7220706172746963756c61722072756e74696d652c207768656eb4206d756c7469706c652070616c6c6574732073656e6420756e7369676e6564207472616e73616374696f6e732e013909176052616e646f6d6e657373436f6c6c656374697665466c6970016052616e646f6d6e657373436f6c6c656374697665466c6970043852616e646f6d4d6174657269616c0100650404000c610120536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e2054686973610120697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f664420746865206f6c6465737420686173682e0000000018105375646f01105375646f040c4b657901000080000000000000000000000000000000000000000000000000000000000000000004842054686520604163636f756e74496460206f6620746865207375646f206b65792e01590701d90100013d0919144173736574011441737365747c1c5469636b65727301010402a04109840000000000000000000000000000000000000000000000000000000000000000000874205469636b657220726567697374726174696f6e2064657461696c732e7c20287469636b657229202d3e205469636b6572526567697374726174696f6e305469636b6572436f6e666967010075070800000870205469636b657220726567697374726174696f6e20636f6e6669672e9420287469636b657229202d3e205469636b6572526567697374726174696f6e436f6e66696718546f6b656e7301010402a04509c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008e02044657461696c73206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e050120287469636b657229202d3e205365637572697479546f6b656e2064657461696c73205b72657475726e73205365637572697479546f6b656e207374727563745d2841737365744e616d657301010402a0fd01040008ec204173736574206e616d65206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e6020287469636b657229202d3e206041737365744e616d65602442616c616e63654f660101080206490918400000000000000000000000000000000008b42054686520746f74616c206173736574207469636b65722062616c616e636520706572206964656e746974792e6420287469636b65722c2044494429202d3e2042616c616e63652c4964656e7469666965727301010402a0ed01040004b82041206d6170206f662061207469636b6572206e616d6520616e64206173736574206964656e746966696572732e50437573746f6d54797065496453657175656e63650100e90110000000000cc420546865206e65787420604173736574547970653a3a437573746f6d6020494420696e207468652073657175656e63652e00d0204e756d6265727320696e207468652073657175656e63652073746172742066726f6d203120726174686572207468616e20302e2c437573746f6d547970657301010405e90128040004f8204d61707320637573746f6d20617373657420747970652069647320746f20746865207265676973746572656420737472696e6720636f6e74656e74732e48437573746f6d5479706573496e76657273650101040228e901100000000004610120496e7665727365206d6170206f662060437573746f6d5479706573602c2066726f6d207265676973746572656420737472696e6720636f6e74656e747320746f20637573746f6d2061737365742074797065206964732e3046756e64696e67526f756e6401010402a0e1010400089c20546865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e60207469636b6572202d3e2066756e64696e6720726f756e6450497373756564496e46756e64696e67526f756e64010104024d091840000000000000000000000000000000000811012054686520746f74616c2062616c616e636573206f6620746f6b656e732069737375656420696e20616c6c207265636f726465642066756e64696e6720726f756e64732e8c20287469636b65722c2066756e64696e6720726f756e6429202d3e2062616c616e63651846726f7a656e01010402a01901040008e82054686520736574206f662066726f7a656e2061737365747320696d706c656d656e7465642061732061206d656d62657273686970206d61702e3c207469636b6572202d3e20626f6f6c5c41737365744f776e65727368697052656c6174696f6e7301010806025109550904000888205469636b65727320616e6420746f6b656e206f776e656420627920612075736572842028757365722c207469636b657229202d3e2041737365744f776e657273686970384173736574446f63756d656e7473010108020559090502140000000000087c20446f63756d656e747320617474616368656420746f20616e2041737365747420287469636b65722c20646f635f696429202d3e20646f63756d656e74604173736574446f63756d656e7473496453657175656e636501010402a0010210000000000880205065722d7469636b657220646f63756d656e7420494420636f756e7465722e4c20287469636b657229202d3e20646f635f696438436c61737369635469636b65727300010402a05d09040004f0205469636b657220726567697374726174696f6e2064657461696c73206f6e20506f6c796d61746820436c6173736963202f20457468657265756d2e4042616c616e63654f66417453636f7065010108060661091840000000000000000000000000000000000ccc2042616c616e636573206765742073746f726564206f6e20746865206261736973206f6620746865206053636f70654964602e9d01205269676874206e6f77206974206973206f6e6c792068656c7066756c20666f722074686520554920707572706f7365732062757420696e206675747572652069742063616e206265207573656420746f20646f206d697261636c6573206f6e2d636861696e2e88202853636f706549642c204964656e74697479496429203d3e2042616c616e63652e4041676772656761746542616c616e6365010108020649091840000000000000000000000000000000000825012053746f7265206167677265676174652062616c616e6365206f662074686f7365206964656e746974696573207468617420686173207468652073616d65206053636f70654964602e7820285469636b65722c2053636f7065496429203d3e2042616c616e63652e2453636f706549644f66010108020649097c80000000000000000000000000000000000000000000000000000000000000000008dc20547261636b73207468652053636f70654964206f6620746865206964656e7469747920666f72206120676976656e207469636b65722e8420285469636b65722c204964656e74697479496429203d3e2053636f706549642e6444697361626c65496e766573746f72556e697175656e65737301010402a0190104001031012044656369646573207768657468657220696e766573746f7220756e697175656e65737320726571756972656d656e7420697320656e666f7263656420666f7220746869732061737365742e8c206066616c736560206d65616e73207468617420697420697320656e666f726365642e0040205469636b6572203d3e20626f6f6c2e4c41737365744d6574616461746156616c7565730001080205650935020400047c204d65746174646174612076616c75657320666f7220616e2061737365742e6441737365744d6574616461746156616c756544657461696c73000108020565093d02040004a02044657461696c7320666f7220616e2061737365742773204d657461646174612076616c7565732e6c41737365744d657461646174614c6f63616c4e616d65546f4b657900010802026909490204000488204173736574204d65746164617461204c6f63616c204e616d65202d3e204b65792e7041737365744d65746164617461476c6f62616c4e616d65546f4b657900010402450265020400048c204173736574204d6574616461746120476c6f62616c204e616d65202d3e204b65792e6c41737365744d657461646174614c6f63616c4b6579546f4e616d6500010802056d09450204000488204173736574204d65746164617461204c6f63616c204b6579202d3e204e616d652e7041737365744d65746164617461476c6f62616c4b6579546f4e616d6500010405650245020400048c204173736574204d6574616461746120476c6f62616c204b6579202d3e204e616d652e5c41737365744d657461646174614c6f63616c537065637300010802056d094d0204000480204173736574204d65746164617461204c6f63616c204b65792073706563732e6041737365744d65746164617461476c6f62616c53706563730001040565024d0204000484204173736574204d6574616461746120476c6f62616c204b65792073706563732e6441737365744d657461646174614e6578744c6f63616c4b657901010402a04902200000000000000000047c204e657874204173736574204d65746164617461204c6f63616c204b65792e6841737365744d657461646174614e657874476c6f62616c4b6579010065022000000000000000000480204e657874204173736574204d6574616461746120476c6f62616c204b65792e3853746f7261676556657273696f6e01007109040004442053746f726167652076657273696f6e2e015d0701dd0118784d61784e756d6265724f66544d457874656e73696f6e466f724173736574101005000000004841737365744e616d654d61784c656e677468101080000000006446756e64696e67526f756e644e616d654d61784c656e677468101080000000006841737365744d657461646174614e616d654d61784c656e677468101000010000006c41737365744d6574616461746156616c75654d61784c656e677468101000200000007441737365744d65746164617461547970654465664d61784c656e677468101000200000000175091a4c4361706974616c446973747269627574696f6e014c4361706974616c446973747269627574696f6e0c34446973747269627574696f6e73000104027102790204000c350120416c6c206361706974616c20646973747269627574696f6e732c207469656420746f207468656972207265737065637469766520636f72706f7261746520616374696f6e732028434173292e005c20284341496429203d3e20446973747269627574696f6e28486f6c64657250616964010104027909190104000c8c2048617320616e20617373657420686f6c646572206265656e2070616964207965743f00a42028434149642c2044494429202d3e2057617320444944207061696420696e2074686520434149643f3853746f7261676556657273696f6e01007d09040004442053746f726167652076657273696f6e2e017d07016902000181091b28436865636b706f696e740128436865636b706f696e742c2c546f74616c537570706c79010108020585091840000000000000000000000000000000000cb420546f74616c20737570706c79206f662074686520746f6b656e2061742074686520636865636b706f696e742e00ec20287469636b65722c20636865636b706f696e74496429202d3e20746f74616c20737570706c7920617420676976656e20636865636b706f696e741c42616c616e6365010108020589091840000000000000000000000000000000000c882042616c616e6365206f66206120444944206174206120636865636b706f696e742e00050120287469636b65722c206469642c20636865636b706f696e7420494429202d3e2042616c616e6365206f66206120444944206174206120636865636b706f696e7450436865636b706f696e74496453657175656e636501010402a08902200000000000000000108c20436865636b706f696e74732049442067656e657261746f722073657175656e63652ea8204944206f6620666972737420636865636b706f696e74206973203120696e7374656164206f6620302e007c20287469636b657229202d3e206e6f2e206f6620636865636b706f696e74733842616c616e636555706461746573010108020549098d09040008bc20436865636b706f696e747320776865726520612044494427732062616c616e63652077617320757064617465642ef020287469636b65722c2064696429202d3e205b636865636b706f696e7420494420776865726520757365722062616c616e6365206368616e6765645d2854696d657374616d70730101080205850920200000000000000000185c20436865636b706f696e742074696d657374616d70732e000901204576657279207363686564756c652d6f726967696e6174656420636865636b706f696e74206d6170732069747320494420746f20697473206475652074696d652e210120457665727920636865636b706f696e74206d616e75616c6c792063726561746564206d6170732069747320494420746f207468652074696d65206f66207265636f7264696e672e00d020287469636b657229202d3e2028636865636b706f696e7420494429202d3e20636865636b706f696e742074696d657374616d70585363686564756c65734d6178436f6d706c657869747901002020000000000000000008190120546865206d6178696d756d20636f6d706c657869747920616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365749c2028692e652e20605363686564756c6573602073746f72616765206974656d2062656c6f77292e485363686564756c65496453657175656e636501010402a09d022000000000000000000cb420436865636b706f696e74207363686564756c652049442073657175656e636520666f72207469636b6572732e006020287469636b657229202d3e207363686564756c65204944245363686564756c657301010402a0910904000c8820436865636b706f696e74207363686564756c657320666f72207469636b6572732e005c20287469636b657229202d3e205b7363686564756c655d405363686564756c65526566436f756e740101080205950910100000000020010120486f77206d616e7920227374726f6e6722207265666572656e6365732061726520746865726520746f206120676976656e20605363686564756c654964603f00fc205468652070726573656e6365206f66206120227374726f6e6722207265666572656e63652c20696e207468652073656e7365206f66206052633c543e602ce020656e7461696c73207468617420746865207265666572656e636564207363686564756c652063616e6e6f742062652072656d6f7665642ed820546875732c206173206c6f6e6720617320607374726f6e675f7265665f636f756e74287363686564756c655f696429203e2030602cac206072656d6f76655f7363686564756c65287363686564756c655f696429602077696c6c206572726f722e00a820287469636b65722c207363686564756c6520494429202d3e207374726f6e672072656620636f756e74385363686564756c65506f696e7473010108020595098d0904000cc420416c6c2074686520636865636b706f696e7473206120676976656e207363686564756c65206f726967696e617465642e00a420287469636b65722c207363686564756c6520494429202d3e205b636865636b706f696e742049445d3853746f7261676556657273696f6e01009909040004442053746f726167652076657273696f6e2e01850701810200019d091c44436f6d706c69616e63654d616e616765720144436f6d706c69616e63654d616e616765720c404173736574436f6d706c69616e63657301010402a0a10908000004e820417373657420636f6d706c69616e636520666f722061207469636b657220285469636b6572202d3e204173736574436f6d706c69616e6365294854727573746564436c61696d49737375657201010402a0bd02040004dc204c697374206f66207472757374656420636c61696d20697373756572205469636b6572202d3e20497373756572204964656e746974793853746f7261676556657273696f6e0100a509040004442053746f726167652076657273696f6e2e018d0701a10204584d6178436f6e646974696f6e436f6d706c65786974791010320000000001a9091d3c436f72706f72617465416374696f6e013c436f72706f72617465416374696f6e24404d617844657461696c734c656e67746801001010000000001c5d012044657465726d696e657320746865206d6178696d756d206e756d626572206f6620627974657320746861742074686520667265652d666f726d206064657461696c7360206f6620612043412063616e2073746f72652e002901204e6f746520746861742074686973206973206e6f7420746865206e756d626572206f662060636861726073206f7220746865206e756d626572206f66205b6772617068656d65735d2e4101205768696c652074686973206d617920626520756e6e61747572616c20696e207465726d73206f662068756d616e20756e6465727374616e64696e67206f66206120746578742773206c656e6774682c6501206974206d6f726520636c6f73656c79207265666c656374732061637475616c2073746f7261676520636f73747320286027612760206973206368656170657220746f2073746f7265207468616e20616e20656d6f6a69292e00d0205b6772617068656d65735d3a2068747470733a2f2f656e2e77696b6970656469612e6f72672f77696b692f4772617068656d655c44656661756c745461726765744964656e74697469657301010402a0d90208000110f020546865206964656e7469746965732074617267657465642062792064656661756c7420666f722043417320666f722074686973207469636b65722c8c2065697468657220746f206265206578636c75646564206f7220696e636c756465642e007820287469636b6572203d3e20746172676574206964656e746974696573295444656661756c7457697468686f6c64696e6754617801010402a07d02100000000020ad01205468652064656661756c7420616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722074686973207469636b6572207768656e20646973747269627574696e67206469766964656e64732e00350120546f20756e6465727374616e642077697468686f6c64696e67207461782c20652e672e2c206c6574277320617373756d65207468617420796f7520686f6c642041434d45207368617265732ec42041434d45206e6f77206465636964657320746f2064697374726962757465203130302053454b20746f20416c6963652e590120416c696365206c6976657320696e2053776564656e2c20736f20536b617474657665726b6574202874686520537765646973682074617820617574686f72697479292077616e747320333025206f6620746861742e5d01205468656e2074686f736520313030202a2033302520617265207769746868656c642066726f6d20416c6963652c20616e642041434d452077696c6c2073656e64207468656d20746f20536b617474657665726b65742e006820287469636b6572203d3e202520746f2077697468686f6c64294444696457697468686f6c64696e6754617801010402a0f90204001049012054686520616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722061206365727461696e207469636b65722078204449442e6d0120496620616e20656e7472792065786973747320666f722061206365727461696e204449442c206974206f7665727269646573207468652064656661756c7420696e206044656661756c7457697468686f6c64696e67546178602e008820287469636b6572203d3e205b286469642c202520746f2077697468686f6c64295d304341496453657175656e636501010402a07502100000000008b420546865206e657874207065722d605469636b65726020434120494420696e207468652073657175656e63652e4d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652e40436f72706f72617465416374696f6e730001080205ad09e5020400146c20416c6c207265636f72646564204341732074687573206661722ea4204f6e6c792067656e6572696320696e666f726d6174696f6e2069732073746f72656420686572652e7d01205370656369666963206043414b696e6460732c20652e672e2c2062656e656669747320616e6420636f72706f726174652062616c6c6f74732c206d617920757365206164646974696f6e616c206f6e2d636861696e2073746f726167652e00b420287469636b6572203d3e206c6f63616c204944203d3e2074686520636f72706f7261746520616374696f6e29244341446f634c696e6b0101040271020503040014d0204173736f63696174696f6e732066726f6d2043417320746f2060446f63756d656e74607320766961207468656972204944732e5c202843414964203d3e205b446f63756d656e7449645d29000501205468652060436f72706f72617465416374696f6e7360206d61702073746f72657320605469636b6572203d3e204c6f63616c4964203d3e20546865204341602c250120736f2077652063616e20696e66657220605469636b6572203d3e2043414964602e205468657265666f72652c20776520646f6e2774206e656564206120646f75626c65206d61702e1c44657461696c730101040271020103040008e8204173736f6369617465732064657461696c7320696e20667265652d666f726d207465787420776974682061204341206279206974732049442e50202843414964203d3e20434144657461696c73293853746f7261676556657273696f6e0100b109040004442053746f726167652076657273696f6e2e01910701d50208304d61785461726765744964731010e803000000284d6178446964576874731010e80300000001b5091e3c436f72706f7261746542616c6c6f74013c436f72706f7261746542616c6c6f7418144d65746173000104027102110304000c80204d65746164617461206f66206120636f72706f726174652062616c6c6f742e005420284341496429203d3e2042616c6c6f744d6574612854696d6552616e6765730001040271020d03040010e42054696d652064657461696c73206f66206120636f72706f726174652062616c6c6f74206173736f636961746564207769746820612043412ed0205468652074696d657374616d70732064656e6f7465207768656e20766f74696e672073746172747320616e642073746f70732e006820284341496429203d3e2042616c6c6f7454696d6552616e6765404d6f74696f6e4e756d43686f696365730101040271022906040024c82053746f72657320686f77206d616e792063686f696365732074686572652061726520696e2065616368206d6f74696f6e2e00250120417420616c6c2074696d65732c2074686520696e76617269616e7420686f6c6473207468617420606d6f74696f6e5f63686f696365735b6964785d6020697320657175616c20746f310120606d657461732e756e7772617028292e6d6f74696f6e735b6964785d2e63686f696365732e6c656e2829602e20546861742069732c2074686973206973206a75737420612063616368652c1101207573656420746f2061766f6964206665746368696e6720616c6c20746865206d6f74696f6e732077697468207468656972206173736f6369617465642074657874732e0001012060753136602063686f696365732073686f756c64206265206d6f7265207468616e20656e6f75676820746f20666974207265616c207573652063617365732e00b020284341496429203d3e204e756d626572206f662063686f6963657320696e2065616368206d6f74696f6e2e0c5243560101040271021901040010dc2049732072616e6b65642063686f69636520766f74696e6720285243562920656e61626c656420666f7220746869732062616c6c6f743f650120466f7220616e20756e6465727374616e64696e67206f6620686f77205243562069732068616e646c65642c20736565206e6f7465206f6e206042616c6c6f74566f7465602773206066616c6c6261636b60206669656c642e003c20284341496429203d3e20626f6f6c1c526573756c7473010104027102b90904001cb02053746f7265732074686520746f74616c20766f74652074616c6c79206f6e20656163682063686f6963652e006820524356206973206e6f74206163636f756e74656420666f722cd02061732074686572652061726520746f6f206d616e792077616e747320746f20696e74657270726574207468652067726170682c9c20616e64206265636175736520697420776f756c64206e6f7420626520656666696369656e742e008420284341496429203d3e205b63757272656e7420766f746520776569676874735d14566f746573010108020679093103040018ac2053746f726573206561636820444944277320766f74657320696e206120676976656e2062616c6c6f742ef8205365652074686520646f63756d656e746174696f6e206f66206042616c6c6f74566f74656020666f72206e6f746573206f6e2073656d616e746963732e008420284341496429203d3e202844494429203d3e205b766f7465207765696768745d001d012055736572206d75737420656e746572203020766f746520776569676874206966207468657920646f6e27742077616e7420746f20766f746520666f7220612063686f6963652e01a9070109030001bd091f2c5065726d697373696f6e730000000001c109201050697073011050697073544c5072756e65486973746f726963616c5069707301001901040004fc2044657465726d696e6573207768657468657220686973746f726963616c20504950206461746120697320706572736973746564206f722072656d6f766564584d696e696d756d50726f706f73616c4465706f7369740100184000000000000000000000000000000000041d0120546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f7220636f6d6d756e69747920504950206372656174696f6e2e5844656661756c74456e6163746d656e74506572696f6401001010000000000439012044656661756c7420656e6163746d656e7420706572696f6420746861742077696c6c2062652075736520616674657220612070726f706f73616c2069732061636365707465642062792047432e4050656e64696e6750697045787069727901003901040108f420486f77206d616e7920626c6f636b732077696c6c2069742074616b652c2061667465722061206050656e64696e67602050495020657870697265732cf420617373756d696e6720697420686173206e6f74207472616e736974696f6e656420746f20616e6f74686572206050726f706f73616c5374617465603f3c4d6178506970536b6970436f756e740100080400048901204d6178696d756d2074696d65732061205049502063616e20626520736b6970706564206265666f72652074726967676572696e67206043616e6e6f74536b69705069706020696e2060656e6163745f736e617073686f745f726573756c7473602e384163746976655069704c696d6974010010100000000008c420546865206d6178696d756d20616c6c6f776564206e756d62657220666f722060416374697665506970436f756e74602e0101204f6e636520726561636865642c206e657720504950732063616e6e6f742062652070726f706f73656420627920636f6d6d756e697479206d656d626572732e34506970496453657175656e636501004d0310000000000409012050726f706f73616c7320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f662050495073206f66662d636861696e2e48536e617073686f74496453657175656e6365010061031000000000041d0120536e617073686f747320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f6620736e617073686f7473206f66662d636861696e2e38416374697665506970436f756e74010010100000000004c820546f74616c20636f756e74206f662063757272656e742070656e64696e67206f72207363686564756c656420504950732e4050726f706f73616c4d65746164617461000104054d03c5090400049820546865206d65746164617461206f6620746865206163746976652070726f706f73616c732e204465706f736974730101080505c909cd09c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008842054686f73652077686f2068617665206c6f636b65642061206465706f7369742e8c2070726f706f73616c202869642c2070726f706f73657229202d3e206465706f7369742450726f706f73616c73000104054d03d109040008c42041637475616c2070726f706f73616c20666f72206120676976656e2069642c20696620697427732063757272656e742e602070726f706f73616c206964202d3e2070726f706f73616c3850726f706f73616c526573756c74010104054d03d509a00000000000000000000000000000000000000000000000000000000000000000000000000000000008d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e682070726f706f73616c206964202d3e20766f746520636f756e743450726f706f73616c566f7465730001080505c909d909040008050120566f746573207065722050726f706f73616c20616e64206163636f756e742e205573656420746f2061766f696420646f75626c6520766f74652069737375652e7c202870726f706f73616c2069642c206163636f756e7429202d3e20566f746534506970546f5363686564756c65000104054d0310040004fc204d617073205049507320746f2074686520626c6f636b20617420776869636820746865792077696c6c2062652065786563757465642c20696620616e792e244c697665517565756501006503040018cc2041206c697665207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029a0206f662070656e64696e67205049507320757020746f2074686520616374697665206c696d69742ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e00450120556e6c696b652060536e617073686f745175657565602c2074686973207175657565206973206c6976652c2067657474696e6720757064617465642077697468206561636820766f746520636173742e2d012054686520736e617073686f74206973207468657265666f726520657373656e7469616c6c79206120706f696e742d696e2d74696d6520636c6f6e65206f6620746869732071756575652e34536e617073686f74517565756501006503040014590120546865207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029206f6620504950732061742074686520706f696e74206f6620736e617073686f7474696e672ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e000901204120717565756564205049502063616e20626520736b69707065642e20446f696e6720736f2062756d70732074686520607069705f736b69705f636f756e74602e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e30536e617073686f744d6574610000dd09040004bc20546865206d65746164617461206f662074686520736e617073686f742c206966207468657265206973206f6e652e30506970536b6970436f756e74010104054d0308040008d020546865206e756d626572206f662074696d65732061206365727461696e2050495020686173206265656e20736b69707065642e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e34436f6d6d69747465655069707301007d03040008d420416c6c206578697374696e672050495073207768657265207468652070726f706f736572206973206120636f6d6d69747465652e39012054686973206c6973742069732061206361636865206f6620616c6c2069647320696e206050726f706f73616c73602077697468206050726f706f7365723a3a436f6d6d6974746565285f29602e3853746f7261676556657273696f6e0100e10904000001ad070141030001e5092124506f7274666f6c696f0124506f7274666f6c696f244c4e657874506f7274666f6c696f4e756d626572010104067ce020010000000000000004cc20546865206e65787420706f7274666f6c696f2073657175656e6365206e756d626572206f6620616e206964656e746974792e28506f7274666f6c696f730101080605e909850304000c41012054686520736574206f66206578697374696e6720706f7274666f6c696f732077697468207468656972206e616d65732e2049662061206365727461696e2070616972206f6620612044494420616e64590120706f7274666f6c696f206e756d626572206d61707320746f20604e6f6e6560207468656e2073756368206120706f7274666f6c696f20646f65736e27742065786973742e20436f6e76657273656c792c206966206135012070616972206d61707320746f2060536f6d65286e616d652960207468656e2073756368206120706f7274666f6c696f2065786973747320616e642069732063616c6c656420606e616d65602e304e616d65546f4e756d6265720101080602ed09e020010000000000000008e420496e7665727365206d6170206f662060506f7274666f6c696f7360207573656420746f20656e737572652062696a6563746976697469792ca420616e6420756e697175656e657373206f66206e616d657320696e2060506f7274666f6c696f73602e4c506f7274666f6c696f4173736574436f756e7401010405d82020000000000000000004fc20486f77206d616e79206173736574732077697468206e6f6e2d7a65726f2062616c616e6365207468697320706f7274666f6c696f20636f6e7461696e732e58506f7274666f6c696f417373657442616c616e6365730101080502f1091840000000000000000000000000000000000488205468652061737365742062616c616e636573206f6620706f7274666f6c696f732e54506f7274666f6c696f4c6f636b65644173736574730101080502f10918400000000000000000000000000000000008a020416d6f756e74206f6620617373657473206c6f636b656420696e206120706f7274666f6c696f2e2d01205468657365206173736574732073686f7720757020696e20706f7274666f6c696f2062616c616e6365206275742063616e206e6f74206265207472616e7366657272656420617761792e48506f7274666f6c696f437573746f6469616e00010405d87c04000481012054686520637573746f6469616e206f66206120706172746963756c617220706f7274666f6c696f2e204e6f6e6520696d706c696573207468617420746865206964656e74697479206f776e65722069732074686520637573746f6469616e2e4c506f7274666f6c696f73496e437573746f64790101080605f509190104000c550120547261636b7320616c6c2074686520706f7274666f6c696f7320696e20637573746f6479206f66206120706172746963756c6172206964656e746974792e204f6e6c79207573656420627920746865205549732ea501205768656e206074727565602069732073746f726564206173207468652076616c756520666f72206120676976656e2060286469642c2070696429602c206974206d65616e73207468617420607069646020697320696e20637573746f6479206f662060646964602ea501206066616c7365602076616c75657320617265206e65766572206578706c696369746c792073746f72656420696e20746865206d61702c20616e642061726520696e737465616420696e6665727265642062792074686520616273656e6365206f662061206b65792e3853746f7261676556657273696f6e0100f909040004442053746f726167652076657273696f6e2e01bd070181030001fd09222c50726f746f636f6c466565012c50726f746f636f6c4665650820426173654665657301010405cd0718400000000000000000000000000000000004150120546865206d617070696e67206f66206f7065726174696f6e206e616d657320746f2074686520626173652066656573206f662074686f7365206f7065726174696f6e732e2c436f656666696369656e7401009503200100000001000000041501205468652066656520636f656666696369656e74206173206120706f73697469766520726174696f6e616c20286e756d657261746f722c2064656e6f6d696e61746f72292e01c9070191030001010a23245363686564756c657201245363686564756c65720c184167656e64610101040510050a0400044d01204974656d7320746f2062652065786563757465642c20696e64657865642062792074686520626c6f636b206e756d626572207468617420746865792073686f756c64206265206578656375746564206f6e2e184c6f6f6b757000010405289d030400040101204c6f6f6b75702066726f6d206964656e7469747920746f2074686520626c6f636b206e756d62657220616e6420696e646578206f6620746865207461736b2e3853746f7261676556657273696f6e0100290a04000c7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e0098204e6577206e6574776f726b732073746172742077697468206c6173742076657273696f6e2e01d10701990308344d6178696d756d576569676874202000806e877401000008450120546865206d6178696d756d207765696768742074686174206d6179206265207363686564756c65642070657220626c6f636b20666f7220616e7920646973706174636861626c6573206f66206c657373a4207072696f72697479207468616e20607363686564756c653a3a484152445f444541444c494e45602e504d61785363686564756c6564506572426c6f636b101032000000081d0120546865206d6178696d756d206e756d626572206f66207363686564756c65642063616c6c7320696e2074686520717565756520666f7220612073696e676c6520626c6f636b2edc204e6f74207374726963746c7920656e666f726365642c20627574207573656420666f722077656967687420657374696d6174696f6e2e012d0a2428536574746c656d656e740128536574746c656d656e74442456656e7565496e666f00010405a503310a0400049820496e666f2061626f757420612076656e75652e2076656e75655f6964202d3e2076656e75651c44657461696c7301010405a503a903040008e420467265652d666f726d20746578742061626f757420612076656e75652e2076656e75655f6964202d3e206056656e756544657461696c736060204f6e6c79206e656564656420666f72207468652055492e4456656e7565496e737472756374696f6e730101080505350a350100107020496e737472756374696f6e7320756e64657220612076656e75652e60204f6e6c79206e656564656420666f72207468652055492e00842076656e75655f6964202d3e20696e737472756374696f6e5f6964202d3e2028293056656e75655369676e6572730101080505390a1901040004e4205369676e65727320616c6c6f776564206279207468652076656e75652e202876656e75655f69642c207369676e657229202d3e20626f6f6c285573657256656e756573010104057cc9030400047101204172726179206f662076656e756573206372656174656420627920616e206964656e746974792e204f6e6c79206e656564656420666f72207468652055492e204964656e746974794964202d3e205665633c76656e75655f69643e48496e737472756374696f6e44657461696c7301010405b1033d0a540000000000000000000000000000000000000000000411012044657461696c732061626f757420616e20696e737472756374696f6e2e20696e737472756374696f6e5f6964202d3e20696e737472756374696f6e5f64657461696c733c496e737472756374696f6e4c6567730101080505450abd0379010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ec204c65677320756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656750496e737472756374696f6e4c65675374617475730101080505450a490a040004310120537461747573206f662061206c656720756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656753746174757364496e737472756374696f6e41666669726d7350656e64696e6701010405b10320200000000000000000048101204e756d626572206f662061666669726d6174696f6e732070656e64696e67206265666f726520696e737472756374696f6e2069732065786563757465642e20696e737472756374696f6e5f6964202d3e2061666669726d5f70656e64696e673c41666669726d73526563656976656401010805054d0a510a040004990120547261636b732061666669726d6174696f6e7320726563656976656420666f7220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c20636f756e7465725f706172747929202d3e2041666669726d6174696f6e537461747573405573657241666669726d6174696f6e730101080505550a510a04000855012048656c70732061207573657220747261636b2074686569722070656e64696e6720696e737472756374696f6e7320616e642061666669726d6174696f6e7320286f6e6c79206e656564656420666f72205549292ed42028636f756e7465725f70617274792c20696e737472756374696f6e5f696429202d3e2041666669726d6174696f6e53746174757330526563656970747355736564010108050265081901040004150120547261636b7320726564656d7074696f6e206f662072656365697074732e20287369676e65722c20726563656970745f75696429202d3e20726563656970745f757365643856656e756546696c746572696e6701010402a01901040004fd0120547261636b73206966206120746f6b656e2068617320656e61626c65642066696c746572696e672076656e75657320746861742063616e2063726561746520696e737472756374696f6e7320696e766f6c76696e6720746865697220746f6b656e2e205469636b6572202d3e2066696c746572696e675f656e61626c65643856656e7565416c6c6f774c6973740101080205590a1901040008c5012056656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c6172207469636b65722e204f6e6c7920757365642069662066696c746572696e6720697320656e61626c65642e7820287469636b65722c2076656e75655f696429202d3e20616c6c6f7765643056656e7565436f756e7465720100a503200000000000000000041901204e756d626572206f662076656e75657320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d6265722948496e737472756374696f6e436f756e7465720100b103200000000000000000043101204e756d626572206f6620696e737472756374696f6e7320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d626572293853746f7261676556657273696f6e01005d0a040004442053746f726167652076657273696f6e2e01d90701a1030001610a25285374617469737469637301285374617469737469637314404163746976654173736574537461747301010402d103f107040004d1012041637469766520737461747320666f722061207469636b65722f636f6d70616e792e202054686572652073686f756c642062652061206d6178206c696d6974206f6e20746865206e756d626572206f662061637469766520737461747320666f722061207469636b65722f636f6d70616e792e28417373657453746174730101080202650a18400000000000000000000000000000000004342041737365742073746174732e6041737365745472616e73666572436f6d706c69616e63657301010402d1036d0a080000043d01204173736574207472616e7366657220636f6d706c69616e636520666f722061207469636b65722028417373657453636f7065202d3e2041737365745472616e73666572436f6d706c69616e6365297c5472616e73666572436f6e646974696f6e4578656d7074456e7469746965730101080202710a1901040004c420456e746974696573206578656d70742066726f6d2061205472616e7366657220436f6d706c69616e63652072756c652e3853746f7261676556657273696f6e0100750a0400046c2053746f72616765206d6967726174696f6e2076657273696f6e2e01ed0701cd0308404d61785374617473506572417373657410100a00000000744d61785472616e73666572436f6e646974696f6e7350657241737365741010040000000001790a260c53746f010c53746f0c2c46756e647261697365727300010802057d0a2104040008b020416c6c2066756e64726169736572732074686174206172652063757272656e746c792072756e6e696e672e9820287469636b65722c2066756e647261697365725f696429202d3e2046756e647261697365723c46756e64726169736572436f756e7401010402a01904200000000000000000049c20546f74616c2066756e6472616973657273206372656174656420666f72206120746f6b656e2e3c46756e647261697365724e616d657301010802057d0a1d04040008b4204e616d6520666f72207468652046756e647261697365722e204f6e6c792075736564206f6666636861696e2eac20287469636b65722c2066756e647261697365725f696429202d3e2046756e64726169736572206e616d650101080115040001810a27205472656173757279000111080131040001850a281c5574696c697479011c5574696c69747904184e6f6e63657301010405002020000000000000000000011d080135040001890a2910426173650001290801450404184d61784c656e10100008000000018d0a2a3845787465726e616c4167656e7473013845787465726e616c4167656e747314304147496453657175656e636501010402a01501100000000010b420546865206e657874207065722d605469636b65726020414720494420696e207468652073657175656e63652e004d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652c90207768696368207374617274732066726f6d20312c20726174686572207468616e20302e1c4167656e744f6601010802025109350100042901204d61707320616e206167656e742028604964656e746974794964602920746f20616c6c20616c6c20605469636b6572607320746865792062656c6f6e6720746f2c20696620616e792e3047726f75704f664167656e740001080205490911010400043501204d617073206167656e74732028604964656e746974794964602920666f72206120605469636b65726020746f207768617420414720746865792062656c6f6e6720746f2c20696620616e792e344e756d46756c6c4167656e747301010402a010100000000004dc204d617073206120605469636b65726020746f20746865206e756d626572206f66206046756c6c60206167656e747320666f722069742e4047726f75705065726d697373696f6e730001080205910ab00400045d0120466f7220637573746f6d20414773206f66206120605469636b6572602c206d61707320746f2077686174207065726d697373696f6e7320616e206167656e7420696e207468617420414720776f756c6420686176652e012d08014d040001950a2b1c52656c61796572011c52656c6179657204245375627369646965730001040200990a040018ec20546865207375627369647920666f7220612060757365725f6b657960206966207468657920617265206265696e6720737562736964697365642c882061732061206d61702060757365725f6b657960203d3e206053756273696479602e0009012041206b65792063616e206f6e6c792068617665206f6e65207375627369647920617420612074696d652e2020546f206368616e67652073756273696469736572731d012061206b6579206e6565647320746f2063616c6c206072656d6f76655f706179696e675f6b65796020746f2072656d6f7665207468652063757272656e7420737562736964792ca4206265666f726520746865792063616e206163636570742061206e657720737562736964697365722e01310801510400019d0a2c1c52657761726473011c52657761726473042849746e52657761726473000104020039080400040101204d6170206f66202849746e204164647265737320604163636f756e7449646029202d3e2028526577617264206049746e52657761726453746174757360292e0135080155040001a10a2d24546573745574696c730124546573745574696c7300013d080159040001a50a32a90a042040436865636b5370656356657273696f6eb10a1038436865636b547856657273696f6eb50a1030436865636b47656e65736973b90a2438436865636b4d6f7274616c697479bd0a2428436865636b4e6f6e6365c50a35012c436865636b576569676874c90a3501604368617267655472616e73616374696f6e5061796d656e74d10a35014453746f726543616c6c4d65746164617461d50a3501d90a","id":"1"} +{"jsonrpc":"2.0","result":"0x6d6574610e310b000c1c73705f636f72651863727970746f2c4163636f756e7449643332000004000401205b75383b2033325d0000040000032000000008000800000503000c08306672616d655f73797374656d2c4163636f756e74496e666f0814496e64657801102c4163636f756e74446174610114001401146e6f6e6365100114496e646578000124636f6e73756d657273100120526566436f756e7400012470726f766964657273100120526566436f756e7400012c73756666696369656e7473100120526566436f756e740001106461746114012c4163636f756e74446174610000100000050500141064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e6365732c4163636f756e744461746100001001106672656518011c42616c616e6365000120726573657276656418011c42616c616e636500012c6d6973635f66726f7a656e18011c42616c616e63650001286665655f66726f7a656e18011c42616c616e636500001800000507001c0c346672616d655f737570706f72741c77656967687473405065724469737061746368436c6173730404540120000c01186e6f726d616c2001045400012c6f7065726174696f6e616c200104540001246d616e6461746f727920010454000020000005060024083c7072696d69746976655f74797065731048323536000004000401585b75383b202f2ac2ab2a2f203332202f2ac2bb2a2f5d00002800000208002c102873705f72756e74696d651c67656e65726963186469676573741844696765737400000401106c6f677330013c5665633c4469676573744974656d3e000030000002340034102873705f72756e74696d651c67656e6572696318646967657374284469676573744974656d0001142850726552756e74696d650800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e00060024436f6e73656e7375730800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e000400105365616c0800380144436f6e73656e737573456e67696e654964000028011c5665633c75383e000500144f74686572040028011c5665633c75383e0000006452756e74696d65456e7669726f6e6d656e745570646174656400080000380000030400000008003c00000240004008306672616d655f73797374656d2c4576656e745265636f7264080445014404540124000c011470686173656d04011450686173650001146576656e7444010445000118746f70696373710401185665633c543e0000440c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d65144576656e740001a81853797374656d04004801706672616d655f73797374656d3a3a4576656e743c52756e74696d653e0000001c496e646963657304006c017870616c6c65745f696e64696365733a3a4576656e743c52756e74696d653e0003002042616c616e636573040070017c70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d653e000500204964656e74697479040088017c70616c6c65745f6964656e746974793a3a4576656e743c52756e74696d653e0007004c4364645365727669636550726f7669646572730400190101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365323e00080044506f6c796d657368436f6d6d69747465650400250101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365313e0009004c436f6d6d69747465654d656d626572736869700400390101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365313e000a0048546563686e6963616c436f6d6d69747465650400410101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365333e000b0070546563686e6963616c436f6d6d69747465654d656d626572736869700400490101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365333e000c004055706772616465436f6d6d69747465650400510101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365343e000d006855706772616465436f6d6d69747465654d656d626572736869700400590101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365343e000e00204d756c746953696704006101017c70616c6c65745f6d756c74697369673a3a4576656e743c52756e74696d653e000f001842726964676504006d01017470616c6c65745f6272696467653a3a4576656e743c52756e74696d653e0010001c5374616b696e6704008101017870616c6c65745f7374616b696e673a3a4576656e743c52756e74696d653e001100204f6666656e63657304009101015870616c6c65745f6f6666656e6365733a3a4576656e740012001c53657373696f6e04009901015470616c6c65745f73657373696f6e3a3a4576656e740013001c4772616e64706104009d01015470616c6c65745f6772616e6470613a3a4576656e7400150020496d4f6e6c696e650400b101018070616c6c65745f696d5f6f6e6c696e653a3a4576656e743c52756e74696d653e001700105375646f0400d501016c70616c6c65745f7375646f3a3a4576656e743c52756e74696d653e0019001441737365740400d901017070616c6c65745f61737365743a3a4576656e743c52756e74696d653e001a004c4361706974616c446973747269627574696f6e04006502018870616c6c65745f6361706974616c5f646973747269627574696f6e3a3a4576656e74001b0028436865636b706f696e7404007d02016070616c6c65745f636865636b706f696e743a3a4576656e74001c0044436f6d706c69616e63654d616e6167657204009d02018070616c6c65745f636f6d706c69616e63655f6d616e616765723a3a4576656e74001d003c436f72706f72617465416374696f6e0400d102017c70616c6c65745f636f72706f726174655f616374696f6e733a3a4576656e74001e003c436f72706f7261746542616c6c6f7404000503017870616c6c65745f636f72706f726174655f62616c6c6f743a3a4576656e74001f00105069707304003d03016c70616c6c65745f706970733a3a4576656e743c52756e74696d653e00210024506f7274666f6c696f04007d03015c70616c6c65745f706f7274666f6c696f3a3a4576656e740022002c50726f746f636f6c46656504008d03018c70616c6c65745f70726f746f636f6c5f6665653a3a4576656e743c52756e74696d653e002300245363686564756c657204009503018070616c6c65745f7363686564756c65723a3a4576656e743c52756e74696d653e00240028536574746c656d656e740400a103018470616c6c65745f736574746c656d656e743a3a4576656e743c52756e74696d653e00250028537461746973746963730400cd03016070616c6c65745f737461746973746963733a3a4576656e740026000c53746f04001504016870616c6c65745f73746f3a3a4576656e743c52756e74696d653e00270020547265617375727904003104017c70616c6c65745f74726561737572793a3a4576656e743c52756e74696d653e0028001c5574696c69747904003504015470616c6c65745f7574696c6974793a3a4576656e74002900104261736504004504014870616c6c65745f626173653a3a4576656e74002a003845787465726e616c4167656e747304004d04017470616c6c65745f65787465726e616c5f6167656e74733a3a4576656e74002b001c52656c6179657204005104017870616c6c65745f72656c617965723a3a4576656e743c52756e74696d653e002c001c5265776172647304005504017870616c6c65745f726577617264733a3a4576656e743c52756e74696d653e002d0024436f6e74726163747304005904018070616c6c65745f636f6e7472616374733a3a4576656e743c52756e74696d653e002e0044506f6c796d657368436f6e74726163747304005d040164706f6c796d6573685f636f6e7472616374733a3a4576656e74002f0020507265696d61676504006104017c70616c6c65745f707265696d6167653a3a4576656e743c52756e74696d653e00300024546573745574696c7304006504018470616c6c65745f746573745f7574696c733a3a4576656e743c52756e74696d653e00320000480c306672616d655f73797374656d1870616c6c6574144576656e740404540001184045787472696e7369635375636365737304013464697370617463685f696e666f4c01304469737061746368496e666f00000490416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e3c45787472696e7369634661696c656408013864697370617463685f6572726f7258013444697370617463684572726f7200013464697370617463685f696e666f4c01304469737061746368496e666f00010450416e2065787472696e736963206661696c65642e2c436f64655570646174656400020450603a636f6465602077617320757064617465642e284e65774163636f756e7404011c6163636f756e74000130543a3a4163636f756e7449640003046841206e6577206163636f756e742077617320637265617465642e344b696c6c65644163636f756e7404011c6163636f756e74000130543a3a4163636f756e74496400040458416e206163636f756e7420776173207265617065642e2052656d61726b656408011873656e646572000130543a3a4163636f756e7449640001106861736824011c543a3a48617368000504704f6e206f6e2d636861696e2072656d61726b2068617070656e65642e04704576656e7420666f72207468652053797374656d2070616c6c65742e4c0c346672616d655f737570706f72741c77656967687473304469737061746368496e666f00000c0118776569676874200118576569676874000114636c6173735001344469737061746368436c617373000120706179735f666565540110506179730000500c346672616d655f737570706f72741c77656967687473344469737061746368436c61737300010c184e6f726d616c0000002c4f7065726174696f6e616c000100244d616e6461746f727900020000540c346672616d655f737570706f72741c7765696768747310506179730001080c596573000000084e6f0001000058082873705f72756e74696d653444697370617463684572726f72000128144f746865720000003043616e6e6f744c6f6f6b7570000100244261644f726967696e000200184d6f64756c6504005c012c4d6f64756c654572726f7200030044436f6e73756d657252656d61696e696e670004002c4e6f50726f76696465727300050040546f6f4d616e79436f6e73756d65727300060014546f6b656e0400600128546f6b656e4572726f720007002841726974686d65746963040064013c41726974686d657469634572726f72000800345472616e73616374696f6e616c04006801485472616e73616374696f6e616c4572726f72000900005c082873705f72756e74696d652c4d6f64756c654572726f720000080114696e64657808010875380001146572726f7238018c5b75383b204d41585f4d4f44554c455f4552524f525f454e434f4445445f53495a455d000060082873705f72756e74696d6528546f6b656e4572726f7200011c1c4e6f46756e647300000020576f756c644469650001003042656c6f774d696e696d756d0002003043616e6e6f7443726561746500030030556e6b6e6f776e41737365740004001846726f7a656e0005002c556e737570706f727465640006000064082873705f72756e74696d653c41726974686d657469634572726f7200010c24556e646572666c6f77000000204f766572666c6f77000100384469766973696f6e42795a65726f0002000068082873705f72756e74696d65485472616e73616374696f6e616c4572726f72000108304c696d6974526561636865640000001c4e6f4c61796572000100006c0c3870616c6c65745f696e64696365731870616c6c6574144576656e7404045400010c34496e64657841737369676e656408010c77686f000130543a3a4163636f756e744964000114696e64657810013c543a3a4163636f756e74496e6465780000047441206163636f756e7420696e646578207761732061737369676e65642e28496e6465784672656564040114696e64657810013c543a3a4163636f756e74496e646578000104bc41206163636f756e7420696e64657820686173206265656e2066726565642075702028756e61737369676e6564292e2c496e64657846726f7a656e080114696e64657810013c543a3a4163636f756e74496e64657800010c77686f000130543a3a4163636f756e744964000204e841206163636f756e7420696e64657820686173206265656e2066726f7a656e20746f206974732063757272656e74206163636f756e742049442e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909701064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e636573205261774576656e7404244163636f756e7449640100011c1c456e646f7765640c007401484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000018011c42616c616e63650000043101416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e205c5b6469642c206163636f756e742c20667265655f62616c616e63655d205472616e7366657218007401484f7074696f6e3c4964656e7469747949643e00000001244163636f756e74496400007401484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000018011c42616c616e636500007c01304f7074696f6e3c4d656d6f3e000104f45472616e7366657220737563636565646564202866726f6d5f6469642c2066726f6d2c20746f5f6469642c20746f2c2076616c75652c206d656d6f292e2842616c616e636553657410007801284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000018011c42616c616e6365000204d4412062616c616e6365207761732073657420627920726f6f7420286469642c2077686f2c20667265652c207265736572766564292e504163636f756e7442616c616e63654275726e65640c007801284964656e74697479496400000001244163636f756e744964000018011c42616c616e63650003083d01546865206163636f756e7420616e642074686520616d6f756e74206f6620756e6c6f636b65642062616c616e6365206f662074686174206163636f756e74207468617420776173206275726e65642e8c2863616c6c65722049642c2063616c6c6572206163636f756e742c20616d6f756e742920526573657276656408000001244163636f756e744964000018011c42616c616e63650004041901536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e205c5b77686f2c2076616c75655d28556e726573657276656408000001244163636f756e744964000018011c42616c616e63650005042101536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e205c5b77686f2c2076616c75655d4852657365727665526570617472696174656410000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000084011853746174757300060c4d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652ea05c5b66726f6d2c20746f2c2062616c616e63652c2064657374696e6174696f6e5f7374617475735d085c4576656e747320666f722074686973206d6f64756c652e007404184f7074696f6e04045401780108104e6f6e6500000010536f6d650400780000010000780c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f6964284964656e746974794964000004000401385b75383b20555549445f4c454e5d00007c04184f7074696f6e04045401800108104e6f6e6500000010536f6d650400800000010000801064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e636573104d656d6f000004000401205b75383b2033325d00008414346672616d655f737570706f72741874726169747318746f6b656e73106d6973633442616c616e6365537461747573000108104672656500000020526573657276656400010000881064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479205261774576656e7408244163636f756e7449640100184d6f6d656e740120014428446964437265617465640c007801284964656e74697479496400000001244163636f756e74496400008c01705665633c5365636f6e646172794b65793c4163636f756e7449643e3e00000c444964656e7469747920637265617465642e0088284449442c207072696d617279206b65792c207365636f6e64617279206b65797329485365636f6e646172794b657973416464656408007801284964656e74697479496400008c01705665633c5365636f6e646172794b65793c4163636f756e7449643e3e00010c845365636f6e64617279206b65797320616464656420746f206964656e746974792e003c284449442c206e6577206b65797329505365636f6e646172794b65797352656d6f76656408007801284964656e7469747949640000e801385665633c4163636f756e7449643e00020c945365636f6e64617279206b6579732072656d6f7665642066726f6d206964656e746974792e0080284449442c20746865206b657973207468617420676f742072656d6f76656429605365636f6e646172794b65794c6566744964656e7469747908007801284964656e74697479496400000001244163636f756e74496400030c9041207365636f6e64617279206b6579206c656674207468656972206964656e746974792e0050284449442c207365636f6e64617279206b657929785365636f6e646172794b65795065726d697373696f6e735570646174656410007801284964656e74697479496400000001244163636f756e744964000094012c5065726d697373696f6e73000094012c5065726d697373696f6e7300040c885365636f6e64617279206b6579207065726d697373696f6e7320757064617465642e000d01284449442c2075706461746564207365636f6e64617279206b65792c2070726576696f7573207065726d697373696f6e732c206e6577207065726d697373696f6e7329445072696d6172794b6579557064617465640c007801284964656e74697479496400000001244163636f756e74496400000001244163636f756e74496400050c805072696d617279206b6579206f66206964656e74697479206368616e6765642e00a4284449442c206f6c64207072696d617279206b6579206163636f756e742049442c206e65772049442928436c61696d416464656408007801284964656e7469747949640000ec01344964656e74697479436c61696d00060c60436c61696d20616464656420746f206964656e746974792e0030284449442c20636c61696d2930436c61696d5265766f6b656408007801284964656e7469747949640000ec01344964656e74697479436c61696d00070c70436c61696d207265766f6b65642066726f6d206964656e746974792e0030284449442c20636c61696d294841737365744469645265676973746572656408007801284964656e74697479496400009c01185469636b657200080c7041737365742773206964656e7469747920726567697374657265642e004c284173736574204449442c207469636b65722948417574686f72697a6174696f6e416464656418007801284964656e74697479496400007401484f7074696f6e3c4964656e7469747949643e0000050101444f7074696f6e3c4163636f756e7449643e000020010c753634000009010170417574686f72697a6174696f6e446174613c4163636f756e7449643e0000f001384f7074696f6e3c4d6f6d656e743e00090c604e657720617574686f72697a6174696f6e2061646465642e00310128617574686f72697365645f62792c207461726765745f6469642c207461726765745f6b65792c20617574685f69642c20617574686f72697a6174696f6e5f646174612c206578706972792950417574686f72697a6174696f6e5265766f6b65640c007401484f7074696f6e3c4964656e7469747949643e0000050101444f7074696f6e3c4163636f756e7449643e000020010c753634000a0ca0417574686f72697a6174696f6e207265766f6b65642062792074686520617574686f72697a65722e00b828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e52656a65637465640c007401484f7074696f6e3c4964656e7469747949643e0000050101444f7074696f6e3c4163636f756e7449643e000020010c753634000b0cd8417574686f72697a6174696f6e2072656a65637465642062792074686520757365722077686f2077617320617574686f72697a65642e00b828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e436f6e73756d65640c007401484f7074696f6e3c4964656e7469747949643e0000050101444f7074696f6e3c4163636f756e7449643e000020010c753634000c0c5c417574686f72697a6174696f6e20636f6e73756d65642e00b828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642988436464526571756972656d656e74466f725072696d6172794b657955706461746564040015010110626f6f6c000d0cc443444420726571756972656d656e7420666f72207570646174696e67207072696d617279206b6579206368616e6765642e0044286e65775f726571756972656d656e742950436464436c61696d73496e76616c69646174656408007801284964656e74697479496400002001184d6f6d656e74000e10410143444420636c61696d732067656e65726174656420627920604964656e74697479496460202861204344442050726f7669646572292068617665206265656e20696e76616c6964617465642066726f6d24604d6f6d656e74602e0094284344442070726f7669646572204449442c2064697361626c652066726f6d2064617465294c5365636f6e646172794b65797346726f7a656e04007801284964656e746974794964000f0cc4416c6c205365636f6e64617279206b657973206f6620746865206964656e74697479204944206172652066726f7a656e2e00142844494429545365636f6e646172794b657973556e66726f7a656e04007801284964656e74697479496400100ccc416c6c205365636f6e64617279206b657973206f6620746865206964656e746974792049442061726520756e66726f7a656e2e00142844494429085c4576656e747320666f722074686973206d6f64756c652e008c0000029000900c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579305365636f6e646172794b657904244163636f756e74496401000008010c6b65790001244163636f756e74496400012c7065726d697373696f6e7394012c5065726d697373696f6e730000940c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65792c5065726d697373696f6e7300000c0114617373657498014041737365745065726d697373696f6e7300012465787472696e736963ac015045787472696e7369635065726d697373696f6e73000124706f7274666f6c696fd00150506f7274666f6c696f5065726d697373696f6e730000980c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e040441019c010c1457686f6c650000001454686573650400a4012c42547265655365743c413e000100184578636570740400a4012c42547265655365743c413e000200009c0c4c706f6c796d6573685f7072696d697469766573187469636b6572185469636b657200000400a001405b75383b205449434b45525f4c454e5d0000a00000030c0000000800a404204254726565536574040454019c000400a8000000a80000029c00ac0c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101b0010c1457686f6c650000001454686573650400c8012c42547265655365743c413e000100184578636570740400c8012c42547265655365743c413e00020000b00c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65794450616c6c65745065726d697373696f6e73000008012c70616c6c65745f6e616d65b4012850616c6c65744e616d65000148646973706174636861626c655f6e616d6573b80144446973706174636861626c654e616d65730000b4084c706f6c796d6573685f7072696d6974697665732850616c6c65744e616d650000040028011c5665633c75383e0000b80c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101bc010c1457686f6c650000001454686573650400c0012c42547265655365743c413e000100184578636570740400c0012c42547265655365743c413e00020000bc084c706f6c796d6573685f7072696d69746976657340446973706174636861626c654e616d650000040028011c5665633c75383e0000c00420425472656553657404045401bc000400c4000000c4000002bc00c80420425472656553657404045401b0000400cc000000cc000002b000d00c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101d4010c1457686f6c650000001454686573650400e0012c42547265655365743c413e000100184578636570740400e0012c42547265655365743c413e00020000d40c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f69642c506f7274666f6c696f4964000008010c6469647801284964656e7469747949640001106b696e64d80134506f7274666f6c696f4b696e640000d80c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f696434506f7274666f6c696f4b696e640001081c44656661756c7400000010557365720400dc013c506f7274666f6c696f4e756d62657200010000dc0c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f69643c506f7274666f6c696f4e756d6265720000040020010c7536340000e00420425472656553657404045401d4000400e4000000e4000002d400e80000020000ec0c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d344964656e74697479436c61696d0000140130636c61696d5f6973737565727801284964656e74697479496400013469737375616e63655f646174652001184d6f6d656e740001406c6173745f7570646174655f646174652001184d6f6d656e74000118657870697279f001384f7074696f6e3c4d6f6d656e743e000114636c61696df40114436c61696d0000f004184f7074696f6e04045401200108104e6f6e6500000010536f6d650400200000010000f40c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d14436c61696d00013028416363726564697465640400f8011453636f706500000024416666696c696174650400f8011453636f7065000100244275794c6f636b75700400f8011453636f70650002002853656c6c4c6f636b75700400f8011453636f706500030050437573746f6d657244756544696c6967656e63650400fc01144364644964000400404b6e6f77596f7572437573746f6d65720400f8011453636f7065000500304a7572697364696374696f6e08000101012c436f756e747279436f64650000f8011453636f7065000600204578656d707465640400f8011453636f70650007001c426c6f636b65640400f8011453636f706500080048496e766573746f72556e697175656e6573730c00f8011453636f7065000078011c53636f706549640000fc01144364644964000900184e6f44617461000a0050496e766573746f72556e697175656e65737356320400fc01144364644964000b0000f80c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d1453636f706500010c204964656e7469747904007801284964656e746974794964000000185469636b657204009c01185469636b657200010018437573746f6d040028011c5665633c75383e00020000fc0c4c706f6c796d6573685f7072696d697469766573186364645f6964144364644964000004000401205b75383b2033325d000001010c4c706f6c796d6573685f7072696d697469766573306a7572697364696374696f6e2c436f756e747279436f64650001e90308414600000008415800010008414c00020008445a00030008415300040008414400050008414f000600084149000700084151000800084147000900084152000a0008414d000b00084157000c00084155000d00084154000e0008415a000f0008425300100008424800110008424400120008424200130008425900140008424500150008425a00160008424a00170008424d00180008425400190008424f001a00084241001b00084257001c00084256001d00084252001e00085647001f0008494f00200008424e002100084247002200084246002300084249002400084b4800250008434d002600084341002700084356002800084b59002900084346002a00085444002b0008434c002c0008434e002d0008484b002e00084d4f002f0008435800300008434300310008434f003200084b4d00330008434700340008434400350008434b003600084352003700084349003800084852003900084355003a00084359003b0008435a003c0008444b003d0008444a003e0008444d003f0008444f00400008454300410008454700420008535600430008475100440008455200450008454500460008455400470008464b00480008464f00490008464a004a00084649004b00084652004c00084746004d00085046004e00085446004f0008474100500008474d00510008474500520008444500530008474800540008474900550008475200560008474c005700084744005800084750005900084755005a00084754005b00084747005c0008474e005d00084757005e00084759005f0008485400600008484d00610008564100620008484e00630008485500640008495300650008494e006600084944006700084952006800084951006900084945006a0008494d006b0008494c006c00084954006d00084a4d006e00084a50006f00084a45007000084a4f007100084b5a007200084b45007300084b49007400084b50007500084b52007600084b57007700084b47007800084c41007900084c56007a00084c42007b00084c53007c00084c52007d00084c59007e00084c49007f00084c54008000084c55008100084d4b008200084d47008300084d57008400084d59008500084d56008600084d4c008700084d54008800084d48008900084d51008a00084d52008b00084d55008c00085954008d00084d58008e0008464d008f00084d44009000084d43009100084d4e009200084d45009300084d53009400084d41009500084d5a009600084d4d009700084e41009800084e52009900084e50009a00084e4c009b0008414e009c00084e43009d00084e5a009e00084e49009f00084e4500a000084e4700a100084e5500a200084e4600a300084d5000a400084e4f00a500084f4d00a60008504b00a70008505700a80008505300a90008504100aa0008504700ab0008505900ac0008504500ad0008504800ae0008504e00af0008504c00b00008505400b10008505200b20008514100b30008524500b40008524f00b50008525500b60008525700b70008424c00b80008534800b900084b4e00ba00084c4300bb00084d4600bc0008504d00bd0008564300be0008575300bf0008534d00c00008535400c10008534100c20008534e00c30008525300c40008534300c50008534c00c60008534700c70008534b00c80008534900c90008534200ca0008534f00cb00085a4100cc0008475300cd0008535300ce0008455300cf00084c4b00d00008534400d10008535200d20008534a00d30008535a00d40008534500d50008434800d60008535900d70008545700d80008544a00d90008545a00da0008544800db0008544c00dc0008544700dd0008544b00de0008544f00df0008545400e00008544e00e10008545200e20008544d00e30008544300e40008545600e50008554700e60008554100e70008414500e80008474200e90008555300ea0008554d00eb0008555900ec0008555a00ed0008565500ee0008564500ef0008564e00f00008564900f10008574600f20008454800f30008594500f400085a4d00f500085a5700f60008425100f70008435700f80008535800f90000050104184f7074696f6e04045401000108104e6f6e6500000010536f6d65040000000001000009010c4c706f6c796d6573685f7072696d69746976657334617574686f72697a6174696f6e44417574686f72697a6174696f6e4461746104244163636f756e74496401000128604174746573745072696d6172794b6579526f746174696f6e04007801284964656e74697479496400000040526f746174655072696d6172794b6579000100385472616e736665725469636b657204009c01185469636b6572000200444164644d756c74695369675369676e657204000001244163636f756e744964000300585472616e7366657241737365744f776e65727368697004009c01185469636b6572000400304a6f696e4964656e74697479040094012c5065726d697373696f6e7300050040506f7274666f6c696f437573746f64790400d4012c506f7274666f6c696f49640006002c4265636f6d654167656e7408009c01185469636b657200000d0101284167656e7447726f75700007004c41646452656c61796572506179696e674b65790c000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e63650008006c526f746174655072696d6172794b6579546f5365636f6e64617279040094012c5065726d697373696f6e73000900000d010c4c706f6c796d6573685f7072696d697469766573146167656e74284167656e7447726f75700001141046756c6c00000018437573746f6d04001101011041474964000100284578636570744d65746100020034506f6c796d657368563143414100030034506f6c796d65736856315049410004000011010c4c706f6c796d6573685f7072696d697469766573146167656e7410414749640000040010010c75333200001501000005000019011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401440449011d01011c2c4d656d626572416464656408007801284964656e74697479496400007801284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007801284964656e74697479496400007801284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007801284964656e74697479496400007801284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007801284964656e74697479496400007801284964656e74697479496400007801284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007801284964656e74697479496400002101013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007801284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e001d01083070616c6c65745f67726f757024496e7374616e63653200000000210100000278002501084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d6265720110044901290101282050726f706f7365640c007801284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007801284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000015010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007801284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000015010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007801284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800002101013c5665633c4964656e7469747949643e00002101013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007801284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007801284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007801284964656e74697479496400002401104861736800002d0101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007801284964656e74697479496400007401484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007801284964656e74697479496400003501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007801284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e002901084070616c6c65745f636f6d6d697474656524496e7374616e636531000000002d010418526573756c74080454013101044501580108084f6b04003101000000000c45727204005800000100003101000004000035010864706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573284d61796265426c6f636b042c426c6f636b4e756d6265720110010810536f6d65040010012c426c6f636b4e756d626572000000104e6f6e650001000039011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401440449013d01011c2c4d656d626572416464656408007801284964656e74697479496400007801284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007801284964656e74697479496400007801284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007801284964656e74697479496400007801284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007801284964656e74697479496400007801284964656e74697479496400007801284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007801284964656e74697479496400002101013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007801284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e003d01083070616c6c65745f67726f757024496e7374616e636531000000004101084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d6265720110044901450101282050726f706f7365640c007801284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007801284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000015010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007801284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000015010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007801284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800002101013c5665633c4964656e7469747949643e00002101013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007801284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007801284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007801284964656e74697479496400002401104861736800002d0101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007801284964656e74697479496400007401484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007801284964656e74697479496400003501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007801284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e004501084070616c6c65745f636f6d6d697474656524496e7374616e6365330000000049011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401440449014d01011c2c4d656d626572416464656408007801284964656e74697479496400007801284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007801284964656e74697479496400007801284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007801284964656e74697479496400007801284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007801284964656e74697479496400007801284964656e74697479496400007801284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007801284964656e74697479496400002101013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007801284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e004d01083070616c6c65745f67726f757024496e7374616e636533000000005101084070616c6c65745f636f6d6d6974746565205261774576656e740c104861736801242c426c6f636b4e756d6265720110044901550101282050726f706f7365640c007801284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c007801284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000015010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410007801284964656e746974794964000010013450726f706f73616c496e646578000024011048617368000015010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314007801284964656e746974794964000010013450726f706f73616c496e64657800002401104861736800002101013c5665633c4964656e7469747949643e00002101013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414007801284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414007801284964656e746974794964000024011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c007801284964656e74697479496400002401104861736800002d0101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408007801284964656e74697479496400007401484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408007801284964656e74697479496400003501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c007801284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e005501084070616c6c65745f636f6d6d697474656524496e7374616e6365340000000059011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e7449640100144576656e7401440449015d01011c2c4d656d626572416464656408007801284964656e74697479496400007801284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408007801284964656e74697479496400007801284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408007801284964656e74697479496400007801284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c007801284964656e74697479496400007801284964656e74697479496400007801284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408007801284964656e74697479496400002101013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c007801284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e005d01083070616c6c65745f67726f757024496e7374616e636534000000006101083c70616c6c65745f6d756c7469736967205261774576656e7404244163636f756e744964010001303c4d756c74695369674372656174656414007801284964656e74697479496400000001244163636f756e74496400000001244163636f756e7449640000650101645665633c5369676e61746f72793c4163636f756e7449643e3e000020010c753634000008ac4576656e7420656d6974746564206166746572206372656174696f6e206f662061206d756c74697369672e6501417267756d656e74733a2063616c6c6572204449442c206d756c746973696720616464726573732c207369676e657273202870656e64696e6720617070726f76616c292c207369676e6174757265732072657175697265642e3450726f706f73616c41646465640c007801284964656e74697479496400000001244163636f756e744964000020010c753634000108984576656e7420656d697474656420616674657220616464696e6720612070726f706f73616c2eb4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e4050726f706f73616c457865637574656410007801284964656e74697479496400000001244163636f756e744964000020010c753634000015010110626f6f6c000208a84576656e7420656d6974746564207768656e20612070726f706f73616c2069732065786563757465642ed4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442c20726573756c742e4c4d756c74695369675369676e657241646465640c007801284964656e74697479496400000001244163636f756e7449640000690101505369676e61746f72793c4163636f756e7449643e000308a04576656e7420656d6974746564207768656e2061207369676e61746f72792069732061646465642eb8417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206164646564207369676e65722e604d756c74695369675369676e6572417574686f72697a65640c007801284964656e74697479496400000001244163636f756e7449640000690101505369676e61746f72793c4163636f756e7449643e00040809014576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f727920697320617574686f72697a656420746f2062652061646465642ecc417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722e544d756c74695369675369676e657252656d6f7665640c007801284964656e74697479496400000001244163636f756e7449640000690101505369676e61746f72793c4163636f756e7449643e000508cc4576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f72792069732072656d6f7665642ec0417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2072656d6f766564207369676e65722e844d756c74695369675369676e61747572657352657175697265644368616e6765640c007801284964656e74697479496400000001244163636f756e744964000020010c75363400060801014576656e7420656d6974746564207768656e20746865206e756d626572206f66207265717569726564207369676e617475726573206973206368616e6765642ee4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206e6577207265717569726564207369676e6174757265732e4050726f706f73616c417070726f76656410007801284964656e74697479496400000001244163636f756e7449640000690101505369676e61746f72793c4163636f756e7449643e000020010c753634000708b44576656e7420656d6974746564207768656e207468652070726f706f73616c2067657420617070726f7665642e0101417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e5450726f706f73616c52656a656374696f6e566f746510007801284964656e74697479496400000001244163636f756e7449640000690101505369676e61746f72793c4163636f756e7449643e000020010c7536340008080d014576656e7420656d6974746564207768656e206120766f7465206973206361737420696e206661766f72206f662072656a656374696e6720612070726f706f73616c2e0101417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e4050726f706f73616c52656a65637465640c007801284964656e74697479496400000001244163636f756e744964000020010c753634000908a84576656e7420656d6974746564207768656e20612070726f706f73616c2069732072656a65637465642eb4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e5c50726f706f73616c457865637574696f6e4661696c6564040058013444697370617463684572726f72000a04e44576656e7420656d6974746564207768656e207468657265277320616e206572726f7220696e2070726f706f73616c20657865637574696f6e405363686564756c696e674661696c6564040058013444697370617463684572726f72000b04745363686564756c696e67206f662070726f706f73616c206661696c732e085c4576656e747320666f722074686973206d6f64756c652e00650100000269010069010c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579245369676e61746f727904244163636f756e74496401000108204964656e7469747904007801284964656e7469747949640000001c4163636f756e7404000001244163636f756e744964000100006d01083470616c6c65745f627269646765205261774576656e7408244163636f756e74496401002c426c6f636b4e756d6265720110014044436f6e74726f6c6c65724368616e67656408007801284964656e74697479496400000001244163636f756e74496400000490436f6e6669726d6174696f6e206f662061207369676e657220736574206368616e67652e3041646d696e4368616e67656408007801284964656e74697479496400000001244163636f756e74496400010474436f6e6669726d6174696f6e206f662041646d696e206368616e67652e3c54696d656c6f636b4368616e67656408007801284964656e746974794964000010012c426c6f636b4e756d626572000204a0436f6e6669726d6174696f6e206f662064656661756c742074696d656c6f636b206368616e67652e1c4272696467656408007801284964656e74697479496400007101014c42726964676554783c4163636f756e7449643e0003041d01436f6e6669726d6174696f6e206f6620504f4c59582075706772616465206f6e20506f6c796d6573682066726f6d20504f4c5920746f6b656e73206f6e20457468657265756d2e1846726f7a656e04007801284964656e746974794964000404904e6f74696669636174696f6e206f6620667265657a696e6720746865206272696467652e20556e66726f7a656e04007801284964656e746974794964000504984e6f74696669636174696f6e206f6620756e667265657a696e6720746865206272696467652e2046726f7a656e547808007801284964656e74697479496400007101014c42726964676554783c4163636f756e7449643e0006049c4e6f74696669636174696f6e206f6620667265657a696e672061207472616e73616374696f6e2e28556e66726f7a656e547808007801284964656e74697479496400007101014c42726964676554783c4163636f756e7449643e000704a44e6f74696669636174696f6e206f6620756e667265657a696e672061207472616e73616374696f6e2e3c4578656d70746564557064617465640c007801284964656e74697479496400007801284964656e746974794964000015010110626f6f6c000804c44578656d7074696f6e20737461747573206f6620616e206964656e7469747920686173206265656e20757064617465642e484272696467654c696d6974557064617465640c007801284964656e746974794964000018011c42616c616e6365000010012c426c6f636b4e756d62657200090478427269646765206c696d697420686173206265656e20757064617465642e2854787348616e646c65640400750101985665633c284163636f756e7449642c207533322c2048616e646c65645478537461747573293e000a086101416e206576656e7420656d6974746564206166746572206120766563746f72206f66207472616e73616374696f6e732069732068616e646c65642e2054686520706172616d65746572206973206120766563746f72206f6651017475706c6573206f6620726563697069656e74206163636f756e742c20697473206e6f6e63652c20616e642074686520737461747573206f66207468652070726f636573736564207472616e73616374696f6e2e4442726964676554785363686564756c65640c007801284964656e74697479496400007101014c42726964676554783c4163636f756e7449643e000010012c426c6f636b4e756d626572000b0450427269646765205478205363686564756c65642e5842726964676554785363686564756c654661696c65640c007801284964656e74697479496400007101014c42726964676554783c4163636f756e7449643e000028011c5665633c75383e000c04744661696c656420746f207363686564756c65204272696467652054782e40467265657a6541646d696e416464656408007801284964656e74697479496400000001244163636f756e744964000d048841206e657720667265657a652061646d696e20686173206265656e2061646465642e48467265657a6541646d696e52656d6f76656408007801284964656e74697479496400000001244163636f756e744964000e04804120667265657a652061646d696e20686173206265656e2072656d6f7665642e24547852656d6f76656408007801284964656e74697479496400007101014c42726964676554783c4163636f756e7449643e000f049c4e6f74696669636174696f6e206f662072656d6f76696e672061207472616e73616374696f6e2e085c4576656e747320666f722074686973206d6f64756c652e007101083470616c6c65745f627269646765204272696467655478041c4163636f756e740100001001146e6f6e636510010c753332000124726563697069656e7400011c4163636f756e74000118616d6f756e7418011c42616c616e636500011c74785f68617368240110483235360000750100000279010079010000040c00107d01007d01083470616c6c65745f6272696467653c48616e646c656454785374617475730001081c53756363657373000000144572726f72040028011c5665633c75383e000100008101083870616c6c65745f7374616b696e67205261774576656e74081c42616c616e63650118244163636f756e74496401000144244572615061796f75740c00100120457261496e646578000018011c42616c616e6365000018011c42616c616e636500000c550154686520657261207061796f757420686173206265656e207365743b207468652066697273742062616c616e6365206973207468652076616c696461746f722d7061796f75743b20746865207365636f6e64206973c07468652072656d61696e6465722066726f6d20746865206d6178696d756d20616d6f756e74206f66207265776172642ea85c5b6572615f696e6465782c2076616c696461746f725f7061796f75742c2072656d61696e6465725c5d185265776172640c007801284964656e74697479496400000001244163636f756e744964000018011c42616c616e63650001043901546865207374616b657220686173206265656e207265776172646564206279207468697320616d6f756e742e205c5b73746173685f6964656e746974792c2073746173682c20616d6f756e745c5d14536c61736808000001244163636f756e744964000018011c42616c616e636500020821014f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e545c5b76616c696461746f722c20616d6f756e745c5d684f6c64536c617368696e675265706f7274446973636172646564040010013053657373696f6e496e6465780003081901416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c648c6e6f742062652070726f6365737365642e205c5b73657373696f6e5f696e6465785c5d3c5374616b696e67456c656374696f6e04008501013c456c656374696f6e436f6d70757465000404f041206e657720736574206f66207374616b6572732077617320656c656374656420776974682074686520676976656e205c5b636f6d707574655c5d2e38536f6c7574696f6e53746f72656404008501013c456c656374696f6e436f6d70757465000504150141206e657720736f6c7574696f6e20666f7220746865207570636f6d696e6720656c656374696f6e20686173206265656e2073746f7265642e205c5b636f6d707574655c5d18426f6e6465640c007801284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000610e4416e206163636f756e742068617320626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d004d014e4f54453a2054686973206576656e74206973206f6e6c7920656d6974746564207768656e2066756e64732061726520626f6e64656420766961206120646973706174636861626c652e204e6f7461626c792c210169742077696c6c206e6f7420626520656d697474656420666f72207374616b696e672072657761726473207768656e20746865792061726520616464656420746f207374616b652e20556e626f6e6465640c007801284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000704ec416e206163636f756e742068617320756e626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d244e6f6d696e617465640c007801284964656e74697479496400000001244163636f756e7449640000e801385665633c4163636f756e7449643e0008048855736572206861732075706461746564207468656972206e6f6d696e6174696f6e732457697468647261776e08000001244163636f756e744964000018011c42616c616e63650009085901416e206163636f756e74206861732063616c6c6564206077697468647261775f756e626f6e6465646020616e642072656d6f76656420756e626f6e64696e67206368756e6b7320776f727468206042616c616e636560ac66726f6d2074686520756e6c6f636b696e672071756575652e205c5b73746173682c20616d6f756e745c5d645065726d697373696f6e65644964656e74697479416464656408007801284964656e74697479496400007801284964656e746974794964000a08ec416e20444944206861732069737375656420612063616e6469646163792e2053656520746865207472616e73616374696f6e20666f722077686f2e8c4743206964656e74697479202c2056616c696461746f722773206964656e746974792e6c5065726d697373696f6e65644964656e7469747952656d6f76656408007801284964656e74697479496400007801284964656e746974794964000b08e854686520676976656e206d656d626572207761732072656d6f7665642e2053656520746865207472616e73616374696f6e20666f722077686f2e8c4743206964656e74697479202c2056616c696461746f722773206964656e746974792e54496e76616c6964617465644e6f6d696e61746f72730c007801284964656e74697479496400000001244163636f756e7449640000e801385665633c4163636f756e7449643e000c081d0152656d6f766520746865206e6f6d696e61746f72732066726f6d207468652076616c6964206e6f6d696e61746f7273207768656e2074686572652043444420657870697265642e9443616c6c65722c205374617368206163636f756e744964206f66206e6f6d696e61746f727350436f6d6d697373696f6e436170557064617465640c007801284964656e74697479496400008901011c50657262696c6c00008901011c50657262696c6c000d08805768656e20636f6d6d697373696f6e206361702067657420757064617465642e58286f6c642076616c75652c206e65772076616c7565296c4d696e696d756d426f6e645468726573686f6c645570646174656408007401484f7074696f6e3c4964656e7469747949643e000018011c42616c616e6365000e04ac4d696e20626f6e64207468726573686f6c6420776173207570646174656420286e65772076616c7565292e885265776172645061796d656e745363686564756c696e67496e7465727275707465640c000001244163636f756e7449640000100120457261496e646578000058013444697370617463684572726f72000f04cc5768656e207363686564756c696e67206f6620726577617264207061796d656e74732067657420696e7465727275707465642e64536c617368696e67416c6c6f776564466f724368616e67656404008d010138536c617368696e675377697463680010049055706461746520666f722077686f6d2062616c616e63652067657420736c61736865642e085c4576656e747320666f722074686973206d6f64756c652e008501083870616c6c65745f7374616b696e673c456c656374696f6e436f6d7075746500010c1c4f6e436861696e000000185369676e656400010020556e7369676e65640002000089010c3473705f61726974686d65746963287065725f7468696e67731c50657262696c6c000004001001442f2ac2ab2a2f20753332202f2ac2bb2a2f00008d01083870616c6c65745f7374616b696e6738536c617368696e6753776974636800010c2456616c696461746f720000005456616c696461746f72416e644e6f6d696e61746f72000100104e6f6e650002000091010c3c70616c6c65745f6f6666656e6365731870616c6c6574144576656e740001041c4f6666656e63650801106b696e64950101104b696e6400012074696d65736c6f742801384f706171756554696d65536c6f7400000c5101546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e643501286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e4c5c5b6b696e642c2074696d65736c6f745c5d2e04304576656e747320747970652e950100000310000000080099010c3870616c6c65745f73657373696f6e1870616c6c6574144576656e74000104284e657753657373696f6e04013473657373696f6e5f696e64657810013053657373696f6e496e64657800000839014e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e74206973207468652073657373696f6e20696e6465782c206e6f74207468659c626c6f636b206e756d626572206173207468652074797065206d6967687420737567676573742e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a0909099d010c3870616c6c65745f6772616e6470611870616c6c6574144576656e7400010c384e6577417574686f726974696573040134617574686f726974795f736574a1010134417574686f726974794c6973740000048c4e657720617574686f726974792073657420686173206265656e206170706c6965642e185061757365640001049843757272656e7420617574686f726974792073657420686173206265656e207061757365642e1c526573756d65640002049c43757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909a101000002a50100a50100000408a9012000a9010c4c73705f66696e616c6974795f6772616e6470610c617070185075626c696300000400ad0101742f2ac2ab2a2f20656432353531393a3a5075626c6963202f2ac2bb2a2f0000ad010c1c73705f636f72651c65643235353139185075626c6963000004000401205b75383b2033325d0000b1010c4070616c6c65745f696d5f6f6e6c696e651870616c6c6574144576656e7404045400010c444865617274626561745265636569766564040130617574686f726974795f6964b5010138543a3a417574686f726974794964000004c041206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f726974794964602e1c416c6c476f6f64000104d041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2c536f6d654f66666c696e6504011c6f66666c696e65bd01016c5665633c4964656e74696669636174696f6e5475706c653c543e3e000204290141742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e652076616c696461746f722077617320666f756e6420746f206265206f66666c696e652e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a090909b501104070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139185075626c696300000400b90101742f2ac2ab2a2f20737232353531393a3a5075626c6963202f2ac2bb2a2f0000b9010c1c73705f636f72651c73723235353139185075626c6963000004000401205b75383b2033325d0000bd01000002c10100c1010000040800c50100c501083870616c6c65745f7374616b696e67204578706f7375726508244163636f756e74496401001c42616c616e63650118000c0114746f74616cc901011c42616c616e636500010c6f776ec901011c42616c616e63650001186f7468657273cd0101ac5665633c496e646976696475616c4578706f737572653c4163636f756e7449642c2042616c616e63653e3e0000c9010000061800cd01000002d10100d101083870616c6c65745f7374616b696e6748496e646976696475616c4578706f7375726508244163636f756e74496401001c42616c616e636501180008010c77686f0001244163636f756e74496400011476616c7565c901011c42616c616e63650000d501082c70616c6c65745f7375646f205261774576656e7404244163636f756e7449640100010c14537564696404002d0101384469737061746368526573756c740000048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d284b65794368616e67656404000001244163636f756e744964000104fc546865205c5b7375646f65725c5d206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e285375646f4173446f6e6504002d0101384469737061746368526573756c740002048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d085c4576656e747320666f722074686973206d6f64756c652e00d9011064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473146173736574205261774576656e7408184d6f6d656e740120244163636f756e74496401000168205472616e7366657214007801284964656e74697479496400009c01185469636b65720000d4012c506f7274666f6c696f49640000d4012c506f7274666f6c696f4964000018011c42616c616e6365000008744576656e7420666f72207472616e73666572206f6620746f6b656e732edc63616c6c6572204449442c207469636b65722c2066726f6d20706f7274666f6c696f2c20746f20706f7274666f6c696f2c2076616c75651849737375656418007801284964656e74697479496400009c01185469636b657200007801284964656e746974794964000018011c42616c616e63650000dd01014046756e64696e67526f756e644e616d65000018011c42616c616e636500010870456d6974207768656e20746f6b656e7320676574206973737565642e750163616c6c6572204449442c207469636b65722c2062656e6566696369617279204449442c2076616c75652c2066756e64696e6720726f756e642c20746f74616c2069737375656420696e20746869732066756e64696e6720726f756e642052656465656d656410007801284964656e74697479496400009c01185469636b657200007801284964656e746974794964000018011c42616c616e636500020878456d6974207768656e20746f6b656e73206765742072656465656d65642e9063616c6c6572204449442c207469636b65722c202066726f6d204449442c2076616c75653041737365744372656174656418007801284964656e74697479496400009c01185469636b6572000015010110626f6f6c0000e101012441737365745479706500007801284964656e746974794964000015010110626f6f6c000308804576656e7420666f72206372656174696f6e206f66207468652061737365742e950163616c6c6572204449442f206f776e6572204449442c207469636b65722c2064697669736962696c6974792c20617373657420747970652c2062656e6566696369617279204449442c2064697361626c6520696e766573746f7220756e697175656e657373484964656e74696669657273557064617465640c007801284964656e74697479496400009c01185469636b65720000e90101505665633c41737365744964656e7469666965723e000408d44576656e7420656d6974746564207768656e20616e7920746f6b656e206964656e746966696572732061726520757064617465642e0d0163616c6c6572204449442c207469636b65722c206120766563746f72206f6620286964656e74696669657220747970652c206964656e7469666965722076616c7565294c44697669736962696c6974794368616e6765640c007801284964656e74697479496400009c01185469636b6572000015010110626f6f6c000508844576656e7420666f72206368616e676520696e2064697669736962696c6974792e8063616c6c6572204449442c207469636b65722c2064697669736962696c697479405472616e73666572576974684461746118007801284964656e74697479496400009c01185469636b657200007801284964656e74697479496400007801284964656e746974794964000018011c42616c616e6365000028011c5665633c75383e0006083501416e206164646974696f6e616c206576656e7420746f205472616e736665723b20656d6974746564207768656e20607472616e736665725f776974685f64617461602069732063616c6c65642ec863616c6c657220444944202c207469636b65722c2066726f6d204449442c20746f204449442c2076616c75652c20646174612849734973737561626c6508009c01185469636b6572000015010110626f6f6c0007085069735f6973737561626c652829206f75747075749c7469636b65722c2072657475726e2076616c7565202874727565206966206973737561626c6529405469636b6572526567697374657265640c007801284964656e74697479496400009c01185469636b65720000f001384f7074696f6e3c4d6f6d656e743e0008087c456d6974207768656e207469636b657220697320726567697374657265642eec63616c6c657220444944202f207469636b6572206f776e6572206469642c207469636b65722c207469636b6572206f776e65722c20657870697279445469636b65725472616e736665727265640c007801284964656e74697479496400009c01185469636b657200007801284964656e74697479496400090880456d6974207768656e207469636b6572206973207472616e736665727265642ed063616c6c657220444944202f207469636b6572207472616e7366657272656420746f204449442c207469636b65722c2066726f6d6441737365744f776e6572736869705472616e736665727265640c007801284964656e74697479496400009c01185469636b657200007801284964656e746974794964000a08a4456d6974207768656e20746f6b656e206f776e657273686970206973207472616e736665727265642ef463616c6c657220444944202f20746f6b656e206f776e657273686970207472616e7366657272656420746f204449442c207469636b65722c2066726f6d2c417373657446726f7a656e08007801284964656e74697479496400009c01185469636b6572000b08a4416e206576656e7420656d6974746564207768656e20616e2061737365742069732066726f7a656e2e78506172616d657465723a2063616c6c6572204449442c207469636b65722e344173736574556e66726f7a656e08007801284964656e74697479496400009c01185469636b6572000c08ac416e206576656e7420656d6974746564207768656e20616e20617373657420697320756e66726f7a656e2e78506172616d657465723a2063616c6c6572204449442c207469636b65722e30417373657452656e616d65640c007801284964656e74697479496400009c01185469636b65720000f901012441737365744e616d65000d08a4416e206576656e7420656d6974746564207768656e206120746f6b656e2069732072656e616d65642ebc506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720746f6b656e206e616d652e3c46756e64696e67526f756e645365740c007801284964656e74697479496400009c01185469636b65720000dd01014046756e64696e67526f756e644e616d65000e081101416e206576656e74206361727279696e6720746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e64206f662061207469636b65722ecc506172616d65746572733a2063616c6c6572204449442c207469636b65722c2066756e64696e6720726f756e64206e616d652e34446f63756d656e74416464656410007801284964656e74697479496400009c01185469636b65720000fd010128446f63756d656e744964000001020120446f63756d656e74000f048c41206e657720646f63756d656e7420617474616368656420746f20616e2061737365743c446f63756d656e7452656d6f7665640c007801284964656e74697479496400009c01185469636b65720000fd010128446f63756d656e744964001004804120646f63756d656e742072656d6f7665642066726f6d20616e20617373657440457874656e73696f6e52656d6f7665640c007801284964656e74697479496400009c01185469636b657200000001244163636f756e744964001108604120657874656e73696f6e20676f742072656d6f7665642e7463616c6c6572204449442c207469636b65722c204163636f756e74496450436c61737369635469636b6572436c61696d65640c007801284964656e74697479496400009c01185469636b657200002d02013c457468657265756d4164647265737300120435014120506f6c796d61746820436c617373696320746f6b656e2077617320636c61696d656420616e64207472616e7366657272656420746f2061206e6f6e2d73797374656d61746963204449442e48436f6e74726f6c6c65725472616e7366657210007801284964656e74697479496400009c01185469636b65720000d4012c506f7274666f6c696f4964000018011c42616c616e6365001308b44576656e7420666f72207768656e206120666f72636564207472616e736665722074616b657320706c6163652e150163616c6c6572204449442f20636f6e74726f6c6c6572204449442c207469636b65722c20506f7274666f6c696f206f6620746f6b656e20686f6c6465722c2076616c75652e54437573746f6d4173736574547970654578697374730c007801284964656e7469747949640000e5010144437573746f6d4173736574547970654964000028011c5665633c75383e001408b04120637573746f6d206173736574207479706520616c726561647920657869737473206f6e2d636861696e2e310163616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e64437573746f6d417373657454797065526567697374657265640c007801284964656e7469747949640000e5010144437573746f6d4173736574547970654964000028011c5665633c75383e001508b04120637573746f6d2061737365742074797065207761732072656769737465726564206f6e2d636861696e2e310163616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e5453657441737365744d6574616461746156616c756510007801284964656e74697479496400009c01185469636b657200003102014841737365744d6574616461746156616c75650000350201a04f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c4d6f6d656e743e3e00160864536574206173736574206d657461646174612076616c75652ef02843616c6c6572204449442c207469636b65722c206d657461646174612076616c75652c206f7074696f6e616c2076616c75652064657461696c73297053657441737365744d6574616461746156616c756544657461696c730c007801284964656e74697479496400009c01185469636b657200003902018041737365744d6574616461746156616c756544657461696c3c4d6f6d656e743e001708dc536574206173736574206d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e8c2843616c6c6572204449442c207469636b65722c2076616c75652064657461696c732978526567697374657241737365744d657461646174614c6f63616c5479706514007801284964656e74697479496400009c01185469636b657200004102014441737365744d657461646174614e616d6500004502015441737365744d657461646174614c6f63616c4b657900004902014441737365744d65746164617461537065630018088c5265676973746572206173736574206d65746164617461206c6f63616c20747970652e05012843616c6c6572204449442c207469636b65722c204c6f63616c2074797065206e616d652c204c6f63616c2074797065206b65792c2074797065207370656373297c526567697374657241737365744d65746164617461476c6f62616c547970650c004102014441737365744d657461646174614e616d6500006102015841737365744d65746164617461476c6f62616c4b657900004902014441737365744d6574616461746153706563001908905265676973746572206173736574206d6574616461746120676c6f62616c20747970652ebc28476c6f62616c2074797065206e616d652c20476c6f62616c2074797065206b65792c207479706520737065637329085c4576656e747320666f722074686973206d6f64756c652e00dd010c4c706f6c796d6573685f7072696d6974697665731461737365744046756e64696e67526f756e644e616d650000040028011c5665633c75383e0000e1010c4c706f6c796d6573685f7072696d6974697665731461737365742441737365745479706500012c30457175697479436f6d6d6f6e0000003c45717569747950726566657272656400010024436f6d6d6f646974790002002c4669786564496e636f6d6500030010524549540004001046756e6400050054526576656e7565536861726541677265656d656e74000600445374727563747572656450726f64756374000700284465726976617469766500080018437573746f6d0400e5010144437573746f6d417373657454797065496400090028537461626c65436f696e000a0000e5010c4c706f6c796d6573685f7072696d69746976657314617373657444437573746f6d41737365745479706549640000040010010c7533320000e901000002ed0100ed010c4c706f6c796d6573685f7072696d6974697665734061737365745f6964656e7469666965723c41737365744964656e7469666965720001141443555349500400f101011c5b75383b20395d0000001043494e530400f101011c5b75383b20395d000100104953494e0400a001205b75383b2031325d0002000c4c45490400f50101205b75383b2032305d00030010464947490400a001205b75383b2031325d00040000f101000003090000000800f501000003140000000800f9010c4c706f6c796d6573685f7072696d6974697665731461737365742441737365744e616d650000040028011c5665633c75383e0000fd010c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7428446f63756d656e7449640000040010010c753332000001020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7420446f63756d656e74000014010c7572690502012c446f63756d656e74557269000130636f6e74656e745f6861736809020130446f63756d656e74486173680001106e616d6521020130446f63756d656e744e616d65000120646f635f74797065250201504f7074696f6e3c446f63756d656e74547970653e00012c66696c696e675f64617465f001384f7074696f6e3c4d6f6d656e743e000005020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e742c446f63756d656e745572690000040028011c5665633c75383e000009020c4c706f6c796d6573685f7072696d69746976657334646f63756d656e745f6861736830446f63756d656e7448617368000124104e6f6e65000000104835313204000d0201205b75383b2036345d00010010483338340400110201205b75383b2034385d00020010483332300400150201205b75383b2034305d000300104832353604000401205b75383b2033325d00040010483232340400190201205b75383b2032385d000500104831393204001d0201205b75383b2032345d00060010483136300400f50101205b75383b2032305d00070010483132380400950101205b75383b2031365d000800000d020000034000000008001102000003300000000800150200000328000000080019020000031c00000008001d0200000318000000080021020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7430446f63756d656e744e616d650000040028011c5665633c75383e0000250204184f7074696f6e0404540129020108104e6f6e6500000010536f6d6504002902000001000029020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7430446f63756d656e74547970650000040028011c5665633c75383e00002d020c4c706f6c796d6573685f7072696d69746976657320657468657265756d3c457468657265756d4164647265737300000400f50101205b75383b2032305d000031020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614841737365744d6574616461746156616c75650000040028011c5665633c75383e0000350204184f7074696f6e0404540139020108104e6f6e6500000010536f6d6504003902000001000039020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174616041737365744d6574616461746156616c756544657461696c04184d6f6d656e74012000080118657870697265f001384f7074696f6e3c4d6f6d656e743e00012c6c6f636b5f7374617475733d02017c41737365744d657461646174614c6f636b5374617475733c4d6f6d656e743e00003d020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615c41737365744d657461646174614c6f636b53746174757304184d6f6d656e740120010c20556e6c6f636b6564000000184c6f636b65640001002c4c6f636b6564556e74696c04002001184d6f6d656e740002000041020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614441737365744d657461646174614e616d650000040028011c5665633c75383e000045020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615441737365744d657461646174614c6f63616c4b65790000040020010c753634000049020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614441737365744d657461646174615370656300000c010c75726c4d02012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e550201804f7074696f6e3c41737365744d657461646174614465736372697074696f6e3e000120747970655f6465665d02013c4f7074696f6e3c5665633c75383e3e00004d0204184f7074696f6e0404540151020108104e6f6e6500000010536f6d650400510200000100005102084c706f6c796d6573685f7072696d6974697665730c55726c0000040028011c5665633c75383e0000550204184f7074696f6e0404540159020108104e6f6e6500000010536f6d6504005902000001000059020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174616041737365744d657461646174614465736372697074696f6e0000040028011c5665633c75383e00005d0204184f7074696f6e04045401280108104e6f6e6500000010536f6d65040028000001000061020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615841737365744d65746164617461476c6f62616c4b65790000040020010c753634000065020c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e144576656e740001101c437265617465640c00690201204576656e7444696400006d02011043414964000075020130446973747269627574696f6e000010b841206361706974616c20646973747269627574696f6e2c20776974682064657461696c7320696e636c756465642c31017761732063726561746564206279207468652044494420287065726d697373696f6e6564206167656e742920666f7220746865204341206964656e746966696564206279206043414964602e00a8284167656e74204449442c20434127732049442c20646973747269627574696f6e2064657461696c73293842656e65666974436c61696d65641800690201204576656e744469640000690201204576656e7444696400006d02011043414964000075020130446973747269627574696f6e000018011c42616c616e636500007902010c54617800010c51014120746f6b656e20686f6c64657227732062656e65666974206f662061206361706974616c20646973747269627574696f6e20666f722074686520676976656e206043414964602077617320636c61696d65642e0091012843616c6c6572204449442c20486f6c6465722f436c61696d616e74204449442c20434127732049442c207570646174656420646973747269627574696f6e2064657461696c732c2044494427732062656e656669742c20444944277320746178202529245265636c61696d65640c00690201204576656e7444696400006d02011043414964000018011c42616c616e636500020c9853746174732066726f6d2060707573685f62656e65666974602077617320656d69747465642e001501284167656e74204449442c20434127732049442c206d61782072657175657374656420444944732c2070726f63657373656420444944732c206661696c65642044494473291c52656d6f7665640800690201204576656e7444696400006d0201104341496400030c8c41206361706974616c20646973747269627574696f6e207761732072656d6f7665642e0050284167656e74204449442c204341277320494429085c4576656e747320666f722074686973206d6f64756c652e0069020c4c706f6c796d6573685f7072696d697469766573286576656e745f6f6e6c79244576656e744f6e6c7904045401780004007801045400006d02086070616c6c65745f636f72706f726174655f616374696f6e73104341496400000801187469636b65729c01185469636b65720001206c6f63616c5f6964710201244c6f63616c4341496400007102086070616c6c65745f636f72706f726174655f616374696f6e73244c6f63616c434149640000040010010c753332000075020c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e30446973747269627574696f6e000020011066726f6dd4012c506f7274666f6c696f496400012063757272656e63799c01185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e636500012472656d61696e696e6718011c42616c616e63650001247265636c61696d656415010110626f6f6c0001287061796d656e745f61742001184d6f6d656e74000128657870697265735f6174f001384f7074696f6e3c4d6f6d656e743e000079020c3473705f61726974686d65746963287065725f7468696e67731c5065726d696c6c000004001001442f2ac2ab2a2f20753332202f2ac2bb2a2f00007d021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e74144576656e7400011044436865636b706f696e74437265617465641400810201404f7074696f6e3c4576656e744469643e00009c01185469636b6572000085020130436865636b706f696e744964000018011c42616c616e636500002001184d6f6d656e7400000c644120636865636b706f696e742077617320637265617465642e001d012863616c6c6572204449442c207469636b65722c20636865636b706f696e742049442c20746f74616c20737570706c792c20636865636b706f696e742074696d657374616d7029844d6178696d756d5363686564756c6573436f6d706c65786974794368616e67656408007801284964656e746974794964000020010c75363400010c2901546865206d6178696d756d20636f6d706c657869747920666f7220616e20617262697472617279207469636b65722773207363686564756c652073657420776173206368616e6765642e0064284743204449442c20746865206e6577206d6178696d756d293c5363686564756c65437265617465640c00690201204576656e7444696400009c01185469636b657200008902013853746f7265645363686564756c6500020c884120636865636b706f696e74207363686564756c652077617320637265617465642e00782863616c6c6572204449442c207469636b65722c207363686564756c65293c5363686564756c6552656d6f7665640c007801284964656e74697479496400009c01185469636b657200008902013853746f7265645363686564756c6500030c884120636865636b706f696e74207363686564756c65207761732072656d6f7665642e00782863616c6c6572204449442c207469636b65722c207363686564756c6529085c4576656e747320666f722074686973206d6f64756c652e00810204184f7074696f6e0404540169020108104e6f6e6500000010536f6d6504006902000001000085020c4c706f6c796d6573685f7072696d6974697665732063616c656e64617230436865636b706f696e7449640000040020010c753634000089021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e743853746f7265645363686564756c6500001001207363686564756c658d020148436865636b706f696e745363686564756c650001086964990201285363686564756c65496400010861742001184d6f6d656e7400012472656d61696e696e6710010c75333200008d020c4c706f6c796d6573685f7072696d6974697665732063616c656e64617248436865636b706f696e745363686564756c65000008011473746172742001184d6f6d656e74000118706572696f649102013843616c656e646172506572696f64000091020c4c706f6c796d6573685f7072696d6974697665732063616c656e6461723843616c656e646172506572696f640000080110756e69749502013043616c656e646172556e6974000118616d6f756e7420010c753634000095020c4c706f6c796d6573685f7072696d6974697665732063616c656e6461723043616c656e646172556e697400011c185365636f6e64000000184d696e75746500010010486f75720002000c446179000300105765656b000400144d6f6e746800050010596561720006000099021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e74285363686564756c6549640000040020010c75363400009d02086470616c6c65745f636f6d706c69616e63655f6d616e61676572144576656e7400012470436f6d706c69616e6365526571756972656d656e74437265617465640c007801284964656e74697479496400009c01185469636b65720000a1020154436f6d706c69616e6365526571756972656d656e74000008cc456d6974746564207768656e206e657720636f6d706c69616e636520726571756972656d656e7420697320637265617465642eb02863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e70436f6d706c69616e6365526571756972656d656e7452656d6f7665640c007801284964656e74697479496400009c01185469636b6572000010010c753332000108c4456d6974746564207768656e206120636f6d706c69616e636520726571756972656d656e742069732072656d6f7665642e942863616c6c6572204449442c205469636b65722c20726571756972656d656e745f6964292e5c4173736574436f6d706c69616e63655265706c616365640c007801284964656e74697479496400009c01185469636b65720000cd0201685665633c436f6d706c69616e6365526571756972656d656e743e000208b4456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206973207265706c616365642ed4506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720617373657420636f6d706c69616e63652e504173736574436f6d706c69616e6365526573657408007801284964656e74697479496400009c01185469636b6572000308d8456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206f662061207469636b65722069732072657365742e542863616c6c6572204449442c205469636b6572292e584173736574436f6d706c69616e6365526573756d656408007801284964656e74697479496400009c01185469636b65720004080101456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b6572206765747320726573756d652e542863616c6c6572204449442c205469636b6572292e544173736574436f6d706c69616e636550617573656408007801284964656e74697479496400009c01185469636b65720005080101456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b65722067657473207061757365642e542863616c6c6572204449442c205469636b6572292e70436f6d706c69616e6365526571756972656d656e744368616e6765640c007801284964656e74697479496400009c01185469636b65720000a1020154436f6d706c69616e6365526571756972656d656e74000608e0456d6974746564207768656e20636f6d706c69616e636520726571756972656d656e7420676574206d6f6469666965642f6368616e67652eb02863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e785472757374656444656661756c74436c61696d49737375657241646465640c007801284964656e74697479496400009c01185469636b65720000bd020134547275737465644973737565720007081501456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b657220676574732061646465642ea82863616c6c6572204449442c205469636b65722c2041646465642054727573746564497373756572292e805472757374656444656661756c74436c61696d49737375657252656d6f7665640c007801284964656e74697479496400009c01185469636b657200007801284964656e7469747949640008081901456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b6572206765742072656d6f7665642eb02863616c6c6572204449442c205469636b65722c2052656d6f7665642054727573746564497373756572292e085c4576656e747320666f722074686973206d6f64756c652e00a1020c4c706f6c796d6573685f7072696d69746976657348636f6d706c69616e63655f6d616e6167657254436f6d706c69616e6365526571756972656d656e7400000c014473656e6465725f636f6e646974696f6e73a50201385665633c436f6e646974696f6e3e00014c72656365697665725f636f6e646974696f6e73a50201385665633c436f6e646974696f6e3e000108696410010c7533320000a502000002a90200a9020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e24436f6e646974696f6e0000080138636f6e646974696f6e5f74797065ad020134436f6e646974696f6e5479706500011c69737375657273b90201485665633c547275737465644973737565723e0000ad020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e34436f6e646974696f6e5479706500011424497350726573656e740400f40114436c61696d000000204973416273656e740400f40114436c61696d0001001c4973416e794f660400b10201285665633c436c61696d3e0002002049734e6f6e654f660400b10201285665633c436c61696d3e0003002849734964656e746974790400b50201385461726765744964656e7469747900040000b102000002f400b5020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e385461726765744964656e746974790001083445787465726e616c4167656e7400000020537065636966696304007801284964656e74697479496400010000b902000002bd0200bd020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e345472757374656449737375657200000801186973737565727801284964656e74697479496400012c747275737465645f666f72c102012854727573746564466f720000c1020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e2854727573746564466f720001080c416e790000002053706563696669630400c50201385665633c436c61696d547970653e00010000c502000002c90200c9020c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d24436c61696d54797065000130284163637265646974656400000024416666696c69617465000100244275794c6f636b75700002002853656c6c4c6f636b757000030050437573746f6d657244756544696c6967656e6365000400404b6e6f77596f7572437573746f6d6572000500304a7572697364696374696f6e000600204578656d707465640007001c426c6f636b656400080048496e766573746f72556e697175656e657373000900184e6f54797065000a0050496e766573746f72556e697175656e6573735632000b0000cd02000002a10200d102086070616c6c65745f636f72706f726174655f616374696f6e73144576656e740001245c4d617844657461696c734c656e6774684368616e67656408007801284964656e746974794964000010010c753332000008d4546865206d6178696d756d206c656e677468206f66206064657461696c736020696e20627974657320776173206368616e6765642e50284743204449442c206e6577206c656e677468297844656661756c745461726765744964656e7469746965734368616e6765640c007801284964656e74697479496400009c01185469636b65720000d50201405461726765744964656e746974696573000108ec54686520736574206f662064656661756c7420605461726765744964656e7469746965736020666f722061207469636b6572206368616e6765642ea4284167656e74204449442c205469636b65722c204e6577205461726765744964656e746974696573297044656661756c7457697468686f6c64696e675461784368616e6765640c007801284964656e74697479496400009c01185469636b657200007902010c546178000208c45468652064656661756c742077697468686f6c64696e672074617820666f722061207469636b6572206368616e6765642e74284167656e74204449442c205469636b65722c204e657720546178292e6044696457697468686f6c64696e675461784368616e67656410007801284964656e74697479496400009c01185469636b657200007801284964656e7469747949640000dd02012c4f7074696f6e3c5461783e000308ec5468652077697468686f6c64696e672074617820737065636966696320746f20612044494420666f722061207469636b6572206368616e6765642ea0284167656e74204449442c205469636b65722c205461786564204449442c204e657720546178292e384341415472616e736665727265640c007801284964656e74697479496400009c01185469636b657200007801284964656e7469747949640004086c41206e65772044494420776173206d61646520746865204341412e8c284e657720434141204449442c205469636b65722c204e65772043414120444944292e2c4341496e697469617465641000690201204576656e7444696400006d020110434149640000e102013c436f72706f72617465416374696f6e0000fd020124434144657461696c730005084c412043412077617320696e697469617465642ea8284167656e74204449442c2043412069642c207468652043412c207468652043412064657461696c73293443414c696e6b6564546f446f630c007801284964656e74697479496400006d0201104341496400000103013c5665633c446f63756d656e7449643e000608844120434120776173206c696e6b656420746f206120736574206f6620646f63732eac284167656e74204449442c2043412049642c204c697374206f6620646f63206964656e746966696572732924434152656d6f7665640800690201204576656e7444696400006d020110434149640007084441204341207761732072656d6f7665642e48284167656e74204449442c20434120496429445265636f7264446174654368616e6765640c00690201204576656e7444696400006d020110434149640000e102013c436f72706f72617465416374696f6e0008046c412043412773207265636f72642064617465206368616e6765642e085c4576656e747320666f722074686973206d6f64756c652e00d502086070616c6c65745f636f72706f726174655f616374696f6e73405461726765744964656e74697469657300000801286964656e7469746965732101013c5665633c4964656e7469747949643e00012474726561746d656e74d902013c54617267657454726561746d656e740000d902086070616c6c65745f636f72706f726174655f616374696f6e733c54617267657454726561746d656e740001081c496e636c7564650000001c4578636c75646500010000dd0204184f7074696f6e0404540179020108104e6f6e6500000010536f6d65040079020000010000e102086070616c6c65745f636f72706f726174655f616374696f6e733c436f72706f72617465416374696f6e00001801106b696e64e502011843414b696e640001246465636c5f646174652001184d6f6d656e7400012c7265636f72645f64617465e90201484f7074696f6e3c5265636f7264446174653e00011c74617267657473d50201405461726765744964656e74697469657300015c64656661756c745f77697468686f6c64696e675f7461787902010c54617800013c77697468686f6c64696e675f746178f50201585665633c284964656e7469747949642c20546178293e0000e502086070616c6c65745f636f72706f726174655f616374696f6e731843414b696e64000114485072656469637461626c6542656e6566697400000050556e7072656469637461626c6542656e65666974000100304973737565724e6f746963650002003852656f7267616e697a6174696f6e000300144f7468657200040000e90204184f7074696f6e04045401ed020108104e6f6e6500000010536f6d650400ed020000010000ed02086070616c6c65745f636f72706f726174655f616374696f6e73285265636f7264446174650000080110646174652001184d6f6d656e74000128636865636b706f696e74f10201304341436865636b706f696e740000f102086070616c6c65745f636f72706f726174655f616374696f6e73304341436865636b706f696e74000108245363686564756c65640800990201285363686564756c654964000020010c753634000000204578697374696e67040085020130436865636b706f696e74496400010000f502000002f90200f9020000040878790200fd02086070616c6c65745f636f72706f726174655f616374696f6e7324434144657461696c730000040028011c5665633c75383e00000103000002fd010005030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74144576656e740001181c4372656174656414007801284964656e74697479496400006d0201104341496400000903013c42616c6c6f7454696d6552616e676500000d03012842616c6c6f744d657461000015010110626f6f6c00000c7c4120636f72706f726174652062616c6c6f742077617320637265617465642e001501284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e642c2042616c6c6f74206d657461646174612c2052435620656e61626c65643f2920566f7465436173740c007801284964656e74697479496400006d0201104341496400002d03013c5665633c42616c6c6f74566f74653e00010c984120766f746520776173206361737420696e206120636f72706f726174652062616c6c6f742e006028766f746572204449442c20434149642c20566f746573293052616e67654368616e6765640c007801284964656e74697479496400006d0201104341496400000903013c42616c6c6f7454696d6552616e676500020cd04120636f72706f726174652062616c6c6f74206368616e676564206974732073746172742f656e6420646174652072616e67652e0098284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e64292c4d6574614368616e6765640c007801284964656e74697479496400006d0201104341496400000d03012842616c6c6f744d65746100030ca04120636f72706f726174652062616c6c6f74206368616e67656420697473206d657461646174612e0088284167656e74204449442c20434127732049442c204e6577206d6574616461746129285243564368616e6765640c007801284964656e74697479496400006d02011043414964000015010110626f6f6c00040cac4120636f72706f726174652062616c6c6f74206368616e676564206974732052435620737570706f72742e0084284167656e74204449442c20434127732049442c204e657720737570706f7274291c52656d6f7665640800690201204576656e7444696400006d0201104341496400050c7c4120636f72706f726174652062616c6c6f74207761732072656d6f7665642e0050284167656e74204449442c204341277320494429085c4576656e747320666f722074686973206d6f64756c652e0009030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f743c42616c6c6f7454696d6552616e6765000008011473746172742001184d6f6d656e7400010c656e642001184d6f6d656e7400000d030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742842616c6c6f744d65746100000801147469746c651103012c42616c6c6f745469746c6500011c6d6f74696f6e731503012c5665633c4d6f74696f6e3e000011030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c42616c6c6f745469746c650000040028011c5665633c75383e0000150300000219030019030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74184d6f74696f6e00000c01147469746c651d03012c4d6f74696f6e5469746c65000124696e666f5f6c696e6b210301384d6f74696f6e496e666f4c696e6b00011c63686f69636573250301405665633c43686f6963655469746c653e00001d030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c4d6f74696f6e5469746c650000040028011c5665633c75383e000021030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74384d6f74696f6e496e666f4c696e6b0000040028011c5665633c75383e0000250300000229030029030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c43686f6963655469746c650000040028011c5665633c75383e00002d0300000231030031030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742842616c6c6f74566f74650000080114706f77657218011c42616c616e636500012066616c6c6261636b3503012c4f7074696f6e3c7531363e0000350304184f7074696f6e0404540139030108104e6f6e6500000010536f6d65040039030000010000390300000504003d03082c70616c6c65745f70697073205261774576656e7408244163636f756e74496401002c426c6f636b4e756d6265720110015050486973746f726963616c506970735072756e65640c007801284964656e746974794964000015010110626f6f6c000015010110626f6f6c00000445015072756e696e6720486973746f726963616c205049507320697320656e61626c6564206f722064697361626c6564202863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293c50726f706f73616c4372656174656420007801284964656e74697479496400004103014c50726f706f7365723c4163636f756e7449643e0000490301145069704964000018011c42616c616e636500004d02012c4f7074696f6e3c55726c3e00004d0301584f7074696f6e3c5069704465736372697074696f6e3e00003501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00005503013050726f706f73616c4461746100011498412050495020776173206d61646520776974682061206042616c616e636560207374616b652e00342320506172616d65746572733a00510143616c6c6572204449442c2050726f706f7365722c205049502049442c206465706f7369742c2055524c2c206465736372697074696f6e2c206578706972792074696d652c2070726f706f73616c20646174612e5050726f706f73616c5374617465557064617465640c007801284964656e746974794964000049030114506970496400005903013450726f706f73616c5374617465000204d854726967676572656420656163682074696d6520746865207374617465206f6620612070726f706f73616c20697320616d656e64656414566f74656414007801284964656e74697479496400000001244163636f756e7449640000490301145069704964000015010110626f6f6c000018011c42616c616e6365000304f8604163636f756e7449646020766f7465642060626f6f6c60206f6e207468652070726f706f73616c207265666572656e636564206279206050697049646024506970436c6f7365640c007801284964656e7469747949640000490301145069704964000015010110626f6f6c000404e850697020686173206265656e20636c6f7365642c20626f6f6c20696e6469636174657320776865746865722064617461206973207072756e656448457865637574696f6e5363686564756c65640c007801284964656e7469747949640000490301145069704964000010012c426c6f636b4e756d626572000504e0457865637574696f6e206f6620612050495020686173206265656e207363686564756c656420617420737065636966696320626c6f636b2e7444656661756c74456e6163746d656e74506572696f644368616e6765640c007801284964656e746974794964000010012c426c6f636b4e756d626572000010012c426c6f636b4e756d626572000608d844656661756c7420656e6163746d656e7420706572696f642028696e20626c6f636b732920686173206265656e206368616e6765642e902863616c6c6572204449442c206f6c6420706572696f642c206e657720706572696f6429744d696e696d756d50726f706f73616c4465706f7369744368616e6765640c007801284964656e746974794964000018011c42616c616e6365000018011c42616c616e63650007087c4d696e696d756d206465706f73697420616d6f756e74206d6f646966696564902863616c6c6572204449442c206f6c6420616d6f756e742c206e657720616d6f756e74295c50656e64696e675069704578706972794368616e6765640c007801284964656e74697479496400003501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00003501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e000808cc416d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020657870697265732e902863616c6c6572204449442c206f6c64206578706972792c206e65772065787069727929584d6178506970536b6970436f756e744368616e6765640c007801284964656e7469747949640000080130536b6970706564436f756e740000080130536b6970706564436f756e74000908cc546865206d6178696d756d2074696d65732061205049502063616e20626520736b697070656420776173206368616e6765642e882863616c6c6572204449442c206f6c642076616c75652c206e65772076616c756529544163746976655069704c696d69744368616e6765640c007801284964656e746974794964000010010c753332000010010c753332000a08b8546865206d6178696d756d206e756d626572206f6620616374697665205049507320776173206368616e6765642e882863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293850726f706f73616c526566756e640c007801284964656e7469747949640000490301145069704964000018011c42616c616e6365000b083c526566756e642070726f706f73616c482869642c20746f74616c20616d6f756e74293c536e617073686f74436c656172656408007801284964656e74697479496400005d030128536e617073686f744964000c046454686520736e617073686f742077617320636c65617265642e34536e617073686f7454616b656e0c007801284964656e74697479496400005d030128536e617073686f74496400006103014c5665633c536e617073686f747465645069703e000d046441206e657720736e617073686f74207761732074616b656e2e28506970536b69707065640c007801284964656e74697479496400004903011450697049640000080130536b6970706564436f756e74000e08a0412050495020696e2074686520736e617073686f742071756575652077617320736b69707065642e802867635f6469642c207069705f69642c206e65775f736b69705f636f756e742958536e617073686f74526573756c7473456e616374656414007801284964656e74697479496400006d0301484f7074696f6e3c536e617073686f7449643e0000710301685665633c2850697049642c20536b6970706564436f756e74293e0000790301285665633c50697049643e0000790301285665633c50697049643e000f083101526573756c74732028652e672e2c20617070726f7665642c2072656a65637465642c20616e6420736b6970706564292c207765726520656e616374656420666f7220736f6d6520504950732e51012867635f6469642c20736e617073686f745f69645f6f70742c20736b69707065645f706970735f776974685f6e65775f636f756e742c2072656a65637465645f706970732c20617070726f7665645f706970732964457865637574696f6e5363686564756c696e674661696c65640c007801284964656e7469747949640000490301145069704964000010012c426c6f636b4e756d6265720010040d015363686564756c696e67206f66207468652050495020666f7220657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e3c4578706972795363686564756c65640c007801284964656e7469747949640000490301145069704964000010012c426c6f636b4e756d626572001104985468652050495020686173206265656e207363686564756c656420666f72206578706972792e584578706972795363686564756c696e674661696c65640c007801284964656e7469747949640000490301145069704964000010012c426c6f636b4e756d62657200120401015363686564756c696e67206f66207468652050495020666f7220657870697279206661696c656420696e20746865207363686564756c65722070616c6c65742e64457865637574696f6e43616e63656c6c696e674661696c65640400490301145069704964001304f043616e63656c6c696e67207468652050495020657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e085c4576656e747320666f722074686973206d6f64756c652e004103082c70616c6c65745f706970732050726f706f73657204244163636f756e7449640100010824436f6d6d756e69747904000001244163636f756e74496400000024436f6d6d6974746565040045030124436f6d6d6974746565000100004503082c70616c6c65745f7069707324436f6d6d697474656500010824546563686e6963616c0000001c55706772616465000100004903082c70616c6c65745f706970731450697049640000040010010c75333200004d0304184f7074696f6e0404540151030108104e6f6e6500000010536f6d650400510300000100005103082c70616c6c65745f70697073385069704465736372697074696f6e0000040028011c5665633c75383e00005503082c70616c6c65745f706970733050726f706f73616c4461746100010810486173680400240110483235360000002050726f706f73616c040028011c5665633c75383e000100005903082c70616c6c65745f706970733450726f706f73616c53746174650001181c50656e64696e670000002052656a6563746564000100245363686564756c6564000200184661696c65640003002045786563757465640004001c45787069726564000500005d03082c70616c6c65745f7069707328536e617073686f7449640000040010010c753332000061030000026503006503082c70616c6c65745f7069707338536e617073686f74746564506970000008010869644903011450697049640001187765696768746903013c28626f6f6c2c2042616c616e6365290000690300000408150118006d0304184f7074696f6e040454015d030108104e6f6e6500000010536f6d6504005d03000001000071030000027503007503000004084903080079030000024903007d031064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747324706f7274666f6c696f144576656e7400011840506f7274666f6c696f437265617465640c007801284964656e7469747949640000dc013c506f7274666f6c696f4e756d626572000081030134506f7274666f6c696f4e616d65000018b054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c7920637265617465642e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572402a20706f7274666f6c696f206e616d6540506f7274666f6c696f44656c6574656408007801284964656e7469747949640000dc013c506f7274666f6c696f4e756d626572000114b054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c792072656d6f7665642e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572584d6f7665644265747765656e506f7274666f6c696f7318007801284964656e7469747949640000d4012c506f7274666f6c696f49640000d4012c506f7274666f6c696f496400009c01185469636b6572000018011c42616c616e636500007c01304f7074696f6e3c4d656d6f3e000220f04120746f6b656e20616d6f756e7420686173206265656e206d6f7665642066726f6d206f6e6520706f7274666f6c696f20746f20616e6f746865722e00302320506172616d6574657273302a206f726967696e20444944482a20736f7572636520706f7274666f6c696f5c2a2064657374696e6174696f6e20706f7274666f6c696f382a206173736574207469636b6572782a2061737365742062616c616e6365207468617420776173206d6f76656440506f7274666f6c696f52656e616d65640c007801284964656e7469747949640000dc013c506f7274666f6c696f4e756d626572000081030134506f7274666f6c696f4e616d65000318fc54686520706f7274666f6c696f206964656e746966696564207769746820606e756d6020686173206265656e2072656e616d656420746f20606e616d65602e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572402a20706f7274666f6c696f206e616d653855736572506f7274666f6c696f7308007801284964656e7469747949640000850301945665633c28506f7274666f6c696f4e756d6265722c20506f7274666f6c696f4e616d65293e000414d4416c6c206e6f6e2d64656661756c7420706f7274666f6c696f206e756d6265727320616e64206e616d6573206f662061204449442e00302320506172616d6574657273302a206f726967696e20444944742a20766563746f72206f66206e756d6265722d6e616d6520706169727364506f7274666f6c696f437573746f6469616e4368616e6765640c007801284964656e7469747949640000d4012c506f7274666f6c696f496400007801284964656e746974794964000518f4437573746f6479206f66206120706f7274666f6c696f20686173206265656e20676976656e20746f206120646966666572656e74206964656e7469747900302320506172616d6574657273302a206f726967696e20444944382a20706f7274666f6c696f206964642a20706f7274666f6c696f20637573746f6469616e20646964085c4576656e747320666f722074686973206d6f64756c652e0081030c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f696434506f7274666f6c696f4e616d650000040028011c5665633c75383e00008503000002890300890300000408dc8103008d03084c70616c6c65745f70726f746f636f6c5f666565205261774576656e7404244163636f756e7449640100010c1846656553657408007801284964656e746974794964000018011c42616c616e6365000004845468652070726f746f636f6c20666565206f6620616e206f7065726174696f6e2e38436f656666696369656e7453657408007801284964656e746974794964000091030120506f73526174696f000104505468652066656520636f656666696369656e742e284665654368617267656408000001244163636f756e744964000018011c42616c616e63650002043046656520636861726765642e085c4576656e747320666f722074686973206d6f64756c652e009103084c706f6c796d6573685f7072696d69746976657320506f73526174696f0000080010010c753332000010010c753332000095030c4070616c6c65745f7363686564756c65721870616c6c6574144576656e74040454000110245363686564756c65640801107768656e100138543a3a426c6f636b4e756d626572000114696e64657810010c753332000004505363686564756c656420736f6d65207461736b2e2043616e63656c65640801107768656e100138543a3a426c6f636b4e756d626572000114696e64657810010c7533320001044c43616e63656c656420736f6d65207461736b2e28446973706174636865640c01107461736b9903016c5461736b416464726573733c543a3a426c6f636b4e756d6265723e00010869645d02013c4f7074696f6e3c5665633c75383e3e000118726573756c742d0101384469737061746368526573756c74000204544469737061746368656420736f6d65207461736b2e4043616c6c4c6f6f6b75704661696c65640c01107461736b9903016c5461736b416464726573733c543a3a426c6f636b4e756d6265723e00010869645d02013c4f7074696f6e3c5665633c75383e3e0001146572726f729d03012c4c6f6f6b75704572726f7200030429015468652063616c6c20666f72207468652070726f7669646564206861736820776173206e6f7420666f756e6420736f20746865207461736b20686173206265656e2061626f727465642e04304576656e747320747970652e9903000004081010009d0310346672616d655f737570706f727418747261697473207363686564756c652c4c6f6f6b75704572726f720001081c556e6b6e6f776e00000024426164466f726d617400010000a103084470616c6c65745f736574746c656d656e74205261774576656e740c184d6f6d656e7401202c426c6f636b4e756d6265720110244163636f756e7449640100014c3056656e75654372656174656410007801284964656e7469747949640000a503011c56656e756549640000a903013056656e756544657461696c730000ad03012456656e756554797065000004ec41206e65772076656e756520686173206265656e206372656174656420286469642c2076656e75655f69642c2064657461696c732c2074797065294c56656e756544657461696c73557064617465640c007801284964656e7469747949640000a503011c56656e756549640000a903013056656e756544657461696c730001041501416e206578697374696e672076656e756527732064657461696c7320686173206265656e207570646174656420286469642c2076656e75655f69642c2064657461696c73294056656e756554797065557064617465640c007801284964656e7469747949640000a503011c56656e756549640000ad03012456656e756554797065000204fc416e206578697374696e672076656e75652773207479706520686173206265656e207570646174656420286469642c2076656e75655f69642c20747970652948496e737472756374696f6e437265617465641c007801284964656e7469747949640000a503011c56656e756549640000b1030134496e737472756374696f6e49640000b503016c536574746c656d656e74547970653c426c6f636b4e756d6265723e0000f001384f7074696f6e3c4d6f6d656e743e0000f001384f7074696f6e3c4d6f6d656e743e0000b90301205665633c4c65673e0003088841206e657720696e737472756374696f6e20686173206265656e20637265617465643901286469642c2076656e75655f69642c20696e737472756374696f6e5f69642c20736574746c656d656e745f747970652c2074726164655f646174652c2076616c75655f646174652c206c656773294c496e737472756374696f6e41666669726d65640c007801284964656e7469747949640000d4012c506f7274666f6c696f49640000b1030134496e737472756374696f6e49640004040501416e20696e737472756374696f6e20686173206265656e2061666669726d656420286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964295041666669726d6174696f6e57697468647261776e0c007801284964656e7469747949640000d4012c506f7274666f6c696f49640000b1030134496e737472756374696f6e49640005040901416e2061666669726d6174696f6e20686173206265656e2077697468647261776e20286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964294c496e737472756374696f6e52656a656374656408007801284964656e7469747949640000b1030134496e737472756374696f6e4964000604d8416e20696e737472756374696f6e20686173206265656e2072656a656374656420286469642c20696e737472756374696f6e5f6964293852656365697074436c61696d656418007801284964656e7469747949640000b1030134496e737472756374696f6e49640000c10301144c65674964000020010c75363400000001244163636f756e7449640000c503013c526563656970744d657461646174610007047d0141207265636569707420686173206265656e20636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e65722c2072656365697074206d6574616461746129585265636569707456616c69646974794368616e67656410007801284964656e74697479496400000001244163636f756e744964000020010c753634000015010110626f6f6c0008040d0141207265636569707420686173206265656e20696e76616c69646174656420286469642c207369676e65722c20726563656970745f7569642c2076616c6964697479294052656365697074556e636c61696d656414007801284964656e7469747949640000b1030134496e737472756374696f6e49640000c10301144c65674964000020010c75363400000001244163636f756e7449640009043d0141207265636569707420686173206265656e20756e636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e6572293856656e756546696c746572696e670c007801284964656e74697479496400009c01185469636b6572000015010110626f6f6c000a04690156656e75652066696c746572696e6720686173206265656e20656e61626c6564206f722064697361626c656420666f722061207469636b657220286469642c207469636b65722c2066696c746572696e675f656e61626c6564293456656e756573416c6c6f7765640c007801284964656e74697479496400009c01185469636b65720000c90301305665633c56656e756549643e000b04dc56656e75657320616464656420746f20616c6c6f77206c69737420286469642c207469636b65722c207665633c76656e75655f69643e293456656e756573426c6f636b65640c007801284964656e74697479496400009c01185469636b65720000c90301305665633c56656e756549643e000c04dc56656e75657320616464656420746f20626c6f636b206c69737420286469642c207469636b65722c207665633c76656e75655f69643e29484c65674661696c6564457865637574696f6e0c007801284964656e7469747949640000b1030134496e737472756374696f6e49640000c10301144c65674964000d04dc457865637574696f6e206f662061206c6567206661696c656420286469642c20696e737472756374696f6e5f69642c206c65675f69642944496e737472756374696f6e4661696c656408007801284964656e7469747949640000b1030134496e737472756374696f6e4964000e04c8496e737472756374696f6e206661696c656420657865637574696f6e20286469642c20696e737472756374696f6e5f6964294c496e737472756374696f6e457865637574656408007801284964656e7469747949640000b1030134496e737472756374696f6e4964000f04d8496e737472756374696f6e206578656375746564207375636365737366756c6c79286469642c20696e737472756374696f6e5f6964294456656e7565556e617574686f72697a65640c007801284964656e74697479496400009c01185469636b65720000a503011c56656e75654964001004010156656e7565206e6f742070617274206f662074686520746f6b656e277320616c6c6f77206c69737420286469642c205469636b65722c2076656e75655f696429405363686564756c696e674661696c6564040058013444697370617463684572726f72001104805363686564756c696e67206f6620696e737472756374696f6e206661696c732e58496e737472756374696f6e52657363686564756c656408007801284964656e7469747949640000b1030134496e737472756374696f6e49640012086c496e737472756374696f6e2069732072657363686564756c65642e702863616c6c6572204449442c20696e737472756374696f6e5f696429085c4576656e747320666f722074686973206d6f64756c652e00a503084470616c6c65745f736574746c656d656e741c56656e756549640000040020010c7536340000a903084470616c6c65745f736574746c656d656e743056656e756544657461696c730000040028011c5665633c75383e0000ad03084470616c6c65745f736574746c656d656e742456656e756554797065000110144f7468657200000030446973747269627574696f6e0001000c53746f0002002045786368616e676500030000b103084470616c6c65745f736574746c656d656e7434496e737472756374696f6e49640000040020010c7536340000b503084470616c6c65745f736574746c656d656e7438536574746c656d656e7454797065042c426c6f636b4e756d626572011001084c536574746c654f6e41666669726d6174696f6e00000034536574746c654f6e426c6f636b040010012c426c6f636b4e756d62657200010000b903000002bd0300bd03084470616c6c65745f736574746c656d656e740c4c6567000010011066726f6dd4012c506f7274666f6c696f4964000108746fd4012c506f7274666f6c696f496400011461737365749c01185469636b6572000118616d6f756e7418011c42616c616e63650000c103084470616c6c65745f736574746c656d656e74144c656749640000040020010c7536340000c503084470616c6c65745f736574746c656d656e743c526563656970744d657461646174610000040028011c5665633c75383e0000c903000002a50300cd031064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732873746174697374696373144576656e740001183853746174547970657341646465640c007801284964656e7469747949640000d1030128417373657453636f70650000d50301345665633c53746174547970653e00000c685374617420747970657320616464656420746f2061737365742e007c2843616c6c6572204449442c2041737365742c2053746174207479706573294053746174547970657352656d6f7665640c007801284964656e7469747949640000d1030128417373657453636f70650000d50301345665633c53746174547970653e00010c78537461742074797065732072656d6f7665642066726f6d2061737365742e007c2843616c6c6572204449442c2041737365742c20537461742074797065732944417373657453746174735570646174656410007801284964656e7469747949640000d1030128417373657453636f70650000d903012053746174547970650000e903013c5665633c537461745570646174653e00020c50417373657420737461747320757064617465642e009c2843616c6c6572204449442c2041737365742c205374617420747970652c2055706461746573296853657441737365745472616e73666572436f6d706c69616e63650c007801284964656e7469747949640000d1030128417373657453636f70650000010401585665633c5472616e73666572436f6e646974696f6e3e00030ca0536574205472616e7366657220636f6d706c69616e63652072756c657320666f722061737365742e00a02843616c6c6572204449442c2041737365742c205472616e7366657220636f6e646974696f6e7329805472616e73666572436f6e646974696f6e4578656d7074696f6e7341646465640c007801284964656e74697479496400000d0401685472616e73666572436f6e646974696f6e4578656d70744b65790000210101305665633c53636f706549643e00040c0901416464206053636f706549646073206578656d707420666f72207472616e7366657220636f6e646974696f6e73206d61746368696e67206578656d7074206b65792e00882843616c6c6572204449442c204578656d7074206b65792c20456e74697469657329885472616e73666572436f6e646974696f6e4578656d7074696f6e7352656d6f7665640c007801284964656e74697479496400000d0401685472616e73666572436f6e646974696f6e4578656d70744b65790000210101305665633c53636f706549643e00050c150152656d6f7665206053636f706549646073206578656d707420666f72207472616e7366657220636f6e646974696f6e73206d61746368696e67206578656d7074206b65792e00882843616c6c6572204449442c204578656d7074206b65792c20456e74697469657329085c4576656e747320666f722074686973206d6f64756c652e00d1030c4c706f6c796d6573685f7072696d697469766573287374617469737469637328417373657453636f7065000104185469636b657204009c01185469636b657200000000d503000002d90300d9030c4c706f6c796d6573685f7072696d697469766573287374617469737469637320537461745479706500000801086f70dd030128537461744f7054797065000130636c61696d5f697373756572e103017c4f7074696f6e3c28436c61696d547970652c204964656e746974794964293e0000dd030c4c706f6c796d6573685f7072696d697469766573287374617469737469637328537461744f705479706500010814436f756e740000001c42616c616e636500010000e10304184f7074696f6e04045401e5030108104e6f6e6500000010536f6d650400e5030000010000e50300000408c9027800e903000002ed0300ed030c4c706f6c796d6573685f7072696d6974697665732873746174697374696373285374617455706461746500000801106b657932f103012853746174326e644b657900011476616c7565fd0301304f7074696f6e3c753132383e0000f1030c4c706f6c796d6573685f7072696d69746976657328737461746973746963732853746174326e644b65790001082c4e6f436c61696d5374617400000014436c61696d0400f503012453746174436c61696d00010000f5030c4c706f6c796d6573685f7072696d69746976657328737461746973746963732453746174436c61696d00010c2841636372656469746564040015010110626f6f6c00000024416666696c69617465040015010110626f6f6c000100304a7572697364696374696f6e0400f903014c4f7074696f6e3c436f756e747279436f64653e00020000f90304184f7074696f6e0404540101010108104e6f6e6500000010536f6d65040001010000010000fd0304184f7074696f6e04045401180108104e6f6e6500000010536f6d650400180000010000010400000205040005040c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e6365445472616e73666572436f6e646974696f6e000110404d6178496e766573746f72436f756e74040020010c753634000000504d6178496e766573746f724f776e65727368697004000904012850657263656e7461676500010028436c61696d436f756e741000f503012453746174436c61696d00007801284964656e746974794964000020010c7536340000f0012c4f7074696f6e3c7536343e00020038436c61696d4f776e6572736869701000f503012453746174436c61696d00007801284964656e74697479496400000904012850657263656e7461676500000904012850657263656e746167650003000009040c4c706f6c796d6573685f7072696d69746976657328737461746973746963733c4861736861626c655065726d696c6c000004007902015873705f61726974686d657469633a3a5065726d696c6c00000d040c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e6365685472616e73666572436f6e646974696f6e4578656d70744b657900000c01146173736574d1030128417373657453636f70650001086f70dd030128537461744f7054797065000128636c61696d5f74797065110401444f7074696f6e3c436c61696d547970653e0000110404184f7074696f6e04045401c9020108104e6f6e6500000010536f6d650400c90200000100001504082870616c6c65745f73746f205261774576656e7404184d6f6d656e74012001184446756e647261697365724372656174656410007801284964656e74697479496400001904013046756e64726169736572496400001d04013846756e647261697365724e616d6500002104014846756e647261697365723c4d6f6d656e743e0000088841206e65772066756e6472616973657220686173206265656e20637265617465642efc284167656e74204449442c2066756e647261697365722069642c2066756e64726169736572206e616d652c2066756e647261697365722064657461696c732920496e76657374656418007801284964656e74697479496400001904013046756e64726169736572496400009c01185469636b657200009c01185469636b6572000018011c42616c616e6365000018011c42616c616e63650001089c416e20696e766573746f7220696e76657374656420696e207468652066756e647261697365722e850128496e766573746f722c2066756e647261697365725f69642c206f66666572696e6720746f6b656e2c20726169736520746f6b656e2c206f66666572696e675f746f6b656e5f616d6f756e742c2072616973655f746f6b656e5f616d6f756e74294046756e6472616973657246726f7a656e08007801284964656e74697479496400001904013046756e64726169736572496400020874412066756e6472616973657220686173206265656e2066726f7a656e2e68284167656e74204449442c2066756e64726169736572206964294846756e64726169736572556e66726f7a656e08007801284964656e74697479496400001904013046756e6472616973657249640003087c412066756e6472616973657220686173206265656e20756e66726f7a656e2e68284167656e74204449442c2066756e64726169736572206964296046756e6472616973657257696e646f774d6f6469666965641800690201204576656e7444696400001904013046756e64726169736572496400002001184d6f6d656e740000f001384f7074696f6e3c4d6f6d656e743e00002001184d6f6d656e740000f001384f7074696f6e3c4d6f6d656e743e00040898412066756e647261697365722077696e646f7720686173206265656e206d6f6469666965642e0901284167656e74204449442c2066756e647261697365722069642c206f6c645f73746172742c206f6c645f656e642c206e65775f73746172742c206e65775f656e64294046756e64726169736572436c6f73656408007801284964656e74697479496400001904013046756e64726169736572496400050878412066756e6472616973657220686173206265656e2073746f707065642e68284167656e74204449442c2066756e6472616973657220696429085c4576656e747320666f722074686973206d6f64756c652e001904082870616c6c65745f73746f3046756e6472616973657249640000040020010c75363400001d04082870616c6c65745f73746f3846756e647261697365724e616d650000040028011c5665633c75383e00002104082870616c6c65745f73746f2846756e6472616973657204184d6f6d656e740120002c011c63726561746f727801284964656e7469747949640001486f66666572696e675f706f7274666f6c696fd4012c506f7274666f6c696f49640001386f66666572696e675f61737365749c01185469636b657200014472616973696e675f706f7274666f6c696fd4012c506f7274666f6c696f496400013472616973696e675f61737365749c01185469636b657200011474696572732504014c5665633c46756e64726169736572546965723e00012076656e75655f6964a503011c56656e7565496400011473746172742001184d6f6d656e7400010c656e64f001384f7074696f6e3c4d6f6d656e743e0001187374617475732d04014046756e647261697365725374617475730001486d696e696d756d5f696e766573746d656e7418011c42616c616e6365000025040000022904002904082870616c6c65745f73746f3846756e647261697365725469657200000c0114746f74616c18011c42616c616e6365000114707269636518011c42616c616e636500012472656d61696e696e6718011c42616c616e636500002d04082870616c6c65745f73746f4046756e64726169736572537461747573000110104c6976650000001846726f7a656e00010018436c6f7365640002002c436c6f7365644561726c79000300003104083c70616c6c65745f7472656173757279205261774576656e74081c42616c616e63650118244163636f756e7449640100010c50547265617375727944697362757273656d656e7410007801284964656e74697479496400007801284964656e74697479496400000001244163636f756e744964000018011c42616c616e636500000c8844697362757273656d656e7420746f206120746172676574204964656e746974792e000101287472656173757279206964656e746974792c20746172676574206964656e746974792c20746172676574207072696d617279206b65792c20616d6f756e742968547265617375727944697362757273656d656e744661696c656410007801284964656e74697479496400007801284964656e74697479496400000001244163636f756e744964000018011c42616c616e636500010ca444697362757273656d656e7420746f206120746172676574204964656e74697479206661696c65642e000101287472656173757279206964656e746974792c20746172676574206964656e746974792c20746172676574207072696d617279206b65792c20616d6f756e74295454726561737572795265696d62757273656d656e7408007801284964656e746974794964000018011c42616c616e636500020c5c5472656173757279207265696d62757273656d656e742e006428736f75726365206964656e746974792c20616d6f756e7429085c4576656e747320666f722074686973206d6f64756c652e003504083870616c6c65745f7574696c697479144576656e7400010c404261746368496e74657272757074656408003904012c4576656e74436f756e747300003d04011c4572726f72417400000cac4261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792edc496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f72206561636820646973706174636820616e64f474686520696e646578206f6620746865206669727374206661696c696e672064697370617463682061732077656c6c20617320746865206572726f722e5442617463684f7074696d69737469634661696c656408003904012c4576656e74436f756e74730000410401305665633c4572726f7241743e00010cac4261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792ecc496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c20616e6429016120766563746f72206f6620616e79206661696c65642064697370617463686573207769746820746865697220696e646963657320616e64206173736f636961746564206572726f722e384261746368436f6d706c6574656404003904012c4576656e74436f756e7473000208c84261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722ed0496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682064697370617463682e0c5c4576656e747320666f722074686973206d6f64756c652e00304576656e747320747970652e390400000210003d040000040810580041040000023d040045041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731062617365144576656e740001043c556e65787065637465644572726f720400490401544f7074696f6e3c44697370617463684572726f723e000004e4416e20756e6578706563746564206572726f722068617070656e656420746861742073686f756c6420626520696e766573746967617465642e085c4576656e747320666f722074686973206d6f64756c652e00490404184f7074696f6e04045401580108104e6f6e6500000010536f6d6504005800000100004d041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974733c65787465726e616c5f6167656e7473144576656e740001143047726f7570437265617465641000690201204576656e7444696400009c01185469636b6572000011010110414749640000ac015045787472696e7369635065726d697373696f6e7300000c6c416e204167656e742047726f75702077617320637265617465642e00d02843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773207065726d697373696f6e73295c47726f75705065726d697373696f6e73557064617465641000690201204576656e7444696400009c01185469636b6572000011010110414749640000ac015045787472696e7369635065726d697373696f6e7300010ca4416e204167656e742047726f75702773207065726d697373696f6e732077617320757064617465642e00e02843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773206e6577207065726d697373696f6e7329284167656e7441646465640c00690201204576656e7444696400009c01185469636b657200000d0101284167656e7447726f757000020c4c416e206167656e74207761732061646465642e00c42843616c6c65722f4167656e74204449442c204167656e742773207469636b65722c204167656e7427732067726f757029304167656e7452656d6f7665640c00690201204576656e7444696400009c01185469636b657200007801284964656e74697479496400030c54416e206167656e74207761732072656d6f7665642e00a42843616c6c6572204449442c204167656e742773207469636b65722c204167656e74277320444944293047726f75704368616e6765641000690201204576656e7444696400009c01185469636b657200007801284964656e74697479496400000d0101284167656e7447726f757000040c74416e206167656e7427732067726f757020776173206368616e6765642e0015012843616c6c6572204449442c204167656e742773207469636b65722c204167656e742773204449442c20546865206e65772067726f7570206f6620746865206167656e7429085c4576656e747320666f722074686973206d6f64756c652e0051041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731c72656c61796572205261774576656e7404244163636f756e744964010001104c417574686f72697a6564506179696e674b65791400690201204576656e7444696400000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000020010c75363400000ccc417574686f72697a6174696f6e20676976656e20666f722060706179696e675f6b65796020746f2060757365725f6b6579602e0001012843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20496e697469616c20504f4c5958206c696d69742c204175746820494429444163636570746564506179696e674b65790c00690201204576656e7444696400000001244163636f756e74496400000001244163636f756e74496400010c50416363657074656420706179696e67206b65792e00882843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294052656d6f766564506179696e674b65790c00690201204576656e7444696400000001244163636f756e74496400000001244163636f756e74496400020c4c52656d6f76656420706179696e67206b65792e00882843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294455706461746564506f6c79784c696d69741400690201204576656e7444696400000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000018011c42616c616e636500030c505570646174656420706f6c7978206c696d69742e0011012843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20504f4c5958206c696d69742c206f6c642072656d61696e696e6720504f4c595829085c4576656e747320666f722074686973206d6f64756c652e005504083870616c6c65745f72657761726473205261774576656e7404244163636f756e744964010001044049746e526577617264436c61696d656408000001244163636f756e744964000018011c42616c616e63650000045c49746e207265776172642077617320636c61696d65642e085c4576656e747320666f722074686973206d6f64756c652e0059040c4070616c6c65745f636f6e7472616374731870616c6c6574144576656e7404045400011830496e7374616e7469617465640801206465706c6f796572000130543a3a4163636f756e744964000120636f6e7472616374000130543a3a4163636f756e744964000004d8436f6e7472616374206465706c6f7965642062792061646472657373206174207468652073706563696669656420616464726573732e285465726d696e61746564080120636f6e7472616374000130543a3a4163636f756e744964048454686520636f6e7472616374207468617420776173207465726d696e617465642e012c62656e6566696369617279000130543a3a4163636f756e74496404e4546865206163636f756e7420746861742072656365697665642074686520636f6e7472616374732072656d61696e696e672062616c616e6365011868436f6e747261637420686173206265656e2072656d6f7665642e001823204e6f7465003d01546865206f6e6c792077617920666f72206120636f6e747261637420746f2062652072656d6f76656420616e6420656d697474696e672074686973206576656e742069732062792063616c6c696e6744607365616c5f7465726d696e617465602e28436f646553746f726564040124636f64655f6861736824011c543a3a48617368000204b4436f646520776974682074686520737065636966696564206861736820686173206265656e2073746f7265642e3c436f6e7472616374456d6974746564080120636f6e7472616374000130543a3a4163636f756e744964049054686520636f6e7472616374207468617420656d697474656420746865206576656e742e01106461746128011c5665633c75383e0835014461746120737570706c6965642062792074686520636f6e74726163742e204d657461646174612067656e65726174656420647572696e6720636f6e747261637420636f6d70696c6174696f6e5c6973206e656564656420746f206465636f64652069742e03049c4120637573746f6d206576656e7420656d69747465642062792074686520636f6e74726163742e2c436f646552656d6f766564040124636f64655f6861736824011c543a3a48617368000404ac4120636f6465207769746820746865207370656369666965642068617368207761732072656d6f7665642e4c436f6e7472616374436f6465557064617465640c0120636f6e7472616374000130543a3a4163636f756e744964048c54686520636f6e7472616374207468617420686173206265656e20757064617465642e01346e65775f636f64655f6861736824011c543a3a4861736804b04e657720636f646520686173682074686174207761732073657420666f722074686520636f6e74726163742e01346f6c645f636f64655f6861736824011c543a3a48617368048c50726576696f757320636f64652068617368206f662074686520636f6e74726163742e0504784120636f6e7472616374277320636f64652077617320757064617465642e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a0909095d040848706f6c796d6573685f636f6e747261637473144576656e74000100085c4576656e747320666f722074686973206d6f64756c652e0061040c3c70616c6c65745f707265696d6167651870616c6c6574144576656e7404045400010c144e6f7465640401106861736824011c543a3a48617368000004684120707265696d61676520686173206265656e206e6f7465642e245265717565737465640401106861736824011c543a3a48617368000104784120707265696d61676520686173206265656e207265717565737465642e1c436c65617265640401106861736824011c543a3a486173680002046c4120707265696d616765206861732062656e20636c65617265642e0499010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f72732920656d69747465640a090909627920746869732070616c6c65742e0a0909096504084470616c6c65745f746573745f7574696c73205261774576656e7404244163636f756e7449640100010c584d6f636b496e766573746f725549444372656174656408007801284964656e74697479496400006904012c496e766573746f725569640000080d0141206e6577206d6f636b65642060496e766573746f725569646020686173206265656e206372656174656420666f722074686520676976656e204964656e746974792e7428546172676574204449442c204e657720496e766573746f72556964292444696453746174757308007801284964656e74697479496400000001244163636f756e744964000108e4456d6974732074686520604964656e7469747949646020616e642074686520604163636f756e74496460206f66207468652063616c6c65722e702843616c6c6572204449442c2043616c6c6572206163636f756e7429244364645374617475730c007401484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000015010110626f6f6c00020c550153686f777320746865206044494460206173736f63696174656420746f2074686520604163636f756e744964602c20616e64206120666c616720696e646963617465732069662074686174204449442068617320614076616c69642043444420636c61696d2ed828546172676574204449442c20546172676574204163636f756e742c20612076616c69642043444420636c61696d2065786973747329085c4576656e747320666f722074686973206d6f64756c652e0069040c4c706f6c796d6573685f7072696d697469766573186364645f69642c496e766573746f7255696400000400950101205b75383b2031365d00006d0408306672616d655f73797374656d14506861736500010c384170706c7945787472696e736963040010010c7533320000003046696e616c697a6174696f6e00010038496e697469616c697a6174696f6e00020000710400000224007504000002990300790408306672616d655f73797374656d584c61737452756e74696d6555706772616465496e666f0000080130737065635f76657273696f6e7d04014c636f6465633a3a436f6d706163743c7533323e000124737065635f6e616d658104016473705f72756e74696d653a3a52756e74696d65537472696e6700007d0400000610008104000005020085040c306672616d655f73797374656d1870616c6c65741043616c6c0404540001242866696c6c5f626c6f636b040114726174696f8901011c50657262696c6c00000405014120646973706174636820746861742077696c6c2066696c6c2074686520626c6f636b2077656967687420757020746f2074686520676976656e20726174696f2e1872656d61726b04011872656d61726b28011c5665633c75383e000114684d616b6520736f6d65206f6e2d636861696e2072656d61726b2e002823203c7765696768743e202d20604f283129602c23203c2f7765696768743e387365745f686561705f7061676573040114706167657320010c753634000204f853657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e207365745f636f6465040110636f646528011c5665633c75383e0003306453657420746865206e65772072756e74696d6520636f64652e002823203c7765696768743e31012d20604f2843202b2053296020776865726520604360206c656e677468206f662060636f64656020616e642060536020636f6d706c6578697479206f66206063616e5f7365745f636f64656045012d20312063616c6c20746f206063616e5f7365745f636f6465603a20604f28532960202863616c6c73206073705f696f3a3a6d6973633a3a72756e74696d655f76657273696f6e60207768696368206973342020657870656e73697665292e842d20312073746f726167652077726974652028636f64656320604f28432960292e402d203120646967657374206974656d2e282d2031206576656e742e4d0154686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652c206275742067656e6572616c6c7920746869732069732076657279b8657870656e736976652e2057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e2c23203c2f7765696768743e5c7365745f636f64655f776974686f75745f636865636b73040110636f646528011c5665633c75383e000424190153657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e002823203c7765696768743e8c2d20604f2843296020776865726520604360206c656e677468206f662060636f646560842d20312073746f726167652077726974652028636f64656320604f28432960292e402d203120646967657374206974656d2e282d2031206576656e742e550154686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652e2057652077696c6c207472656174207468697320617320612066756c6c48626c6f636b2e2023203c2f7765696768743e2c7365745f73746f726167650401146974656d73890401345665633c4b657956616c75653e0005046853657420736f6d65206974656d73206f662073746f726167652e306b696c6c5f73746f726167650401106b657973910401205665633c4b65793e000604744b696c6c20736f6d65206974656d732066726f6d2073746f726167652e2c6b696c6c5f70726566697808011870726566697828010c4b657900011c7375626b65797310010c75333200071011014b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e0039012a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e6465723d0174686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e4472656d61726b5f776974685f6576656e7404011872656d61726b28011c5665633c75383e000804a44d616b6520736f6d65206f6e2d636861696e2072656d61726b20616e6420656d6974206576656e742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e89040000028d04008d04000004082828009104000002280095040c306672616d655f73797374656d186c696d69747330426c6f636b5765696768747300000c0128626173655f626c6f636b2001185765696768740001246d61785f626c6f636b2001185765696768740001247065725f636c617373990401845065724469737061746368436c6173733c57656967687473506572436c6173733e000099040c346672616d655f737570706f72741c77656967687473405065724469737061746368436c617373040454019d04000c01186e6f726d616c9d0401045400012c6f7065726174696f6e616c9d040104540001246d616e6461746f72799d0401045400009d040c306672616d655f73797374656d186c696d6974733c57656967687473506572436c6173730000100138626173655f65787472696e7369632001185765696768740001346d61785f65787472696e736963f001384f7074696f6e3c5765696768743e0001246d61785f746f74616cf001384f7074696f6e3c5765696768743e0001207265736572766564f001384f7074696f6e3c5765696768743e0000a1040c306672616d655f73797374656d186c696d6974732c426c6f636b4c656e677468000004010c6d6178a50401545065724469737061746368436c6173733c7533323e0000a5040c346672616d655f737570706f72741c77656967687473405065724469737061746368436c6173730404540110000c01186e6f726d616c1001045400012c6f7065726174696f6e616c100104540001246d616e6461746f7279100104540000a9040c346672616d655f737570706f72741c776569676874733c52756e74696d65446257656967687400000801107265616420011857656967687400011477726974652001185765696768740000ad04082873705f76657273696f6e3852756e74696d6556657273696f6e0000200124737065635f6e616d658104013452756e74696d65537472696e67000124696d706c5f6e616d658104013452756e74696d65537472696e67000144617574686f72696e675f76657273696f6e10010c753332000130737065635f76657273696f6e10010c753332000130696d706c5f76657273696f6e10010c75333200011061706973b104011c4170697356656300014c7472616e73616374696f6e5f76657273696f6e10010c75333200013473746174655f76657273696f6e08010875380000b104040c436f7704045401b504000400b504000000b504000002b90400b90400000408bd041000bd04000003080000000800c1040c306672616d655f73797374656d1870616c6c6574144572726f720404540001183c496e76616c6964537065634e616d650000081101546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e685370656356657273696f6e4e65656473546f496e63726561736500010841015468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e00020cec4661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e0009014569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e4c4e6f6e44656661756c74436f6d706f73697465000304fc537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e3c4e6f6e5a65726f526566436f756e74000404350154686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e3043616c6c46696c7465726564000504d0546865206f726967696e2066696c7465722070726576656e74207468652063616c6c20746f20626520646973706174636865642e046c4572726f7220666f72207468652053797374656d2070616c6c6574c50410346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401c904045300000400d10401185665633c543e0000c90400000408cd042000cd040c4473705f636f6e73656e7375735f626162650c617070185075626c696300000400b90101742f2ac2ab2a2f20737232353531393a3a5075626c6963202f2ac2bb2a2f0000d104000002c90400d504084873705f636f6e73656e7375735f736c6f747310536c6f740000040020010c7536340000d9040c4473705f636f6e73656e7375735f626162651c64696765737473504e657874436f6e66696744657363726970746f7200010408563108010463dd040128287536342c2075363429000134616c6c6f7765645f736c6f7473e1040130416c6c6f776564536c6f747300010000dd0400000408202000e104084473705f636f6e73656e7375735f6261626530416c6c6f776564536c6f747300010c305072696d617279536c6f7473000000745072696d617279416e645365636f6e64617279506c61696e536c6f74730001006c5072696d617279416e645365636f6e64617279565246536c6f747300020000e50410346672616d655f737570706f72741c73746f726167652c626f756e6465645f76656328426f756e6465645665630804540104045300000400e90401185665633c543e0000e9040000020400ed0404184f7074696f6e04045401040108104e6f6e6500000010536f6d650400040000010000f104084473705f636f6e73656e7375735f62616265584261626545706f6368436f6e66696775726174696f6e000008010463dd040128287536342c2075363429000134616c6c6f7765645f736c6f7473e1040130416c6c6f776564536c6f74730000f5040c2c70616c6c65745f626162651870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66f9040184426f783c45717569766f636174696f6e50726f6f663c543a3a4865616465723e3e00013c6b65795f6f776e65725f70726f6f6605050140543a3a4b65794f776e657250726f6f6600001009015265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667905017468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f660d01616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c306265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66f9040184426f783c45717569766f636174696f6e50726f6f663c543a3a4865616465723e3e00013c6b65795f6f776e65725f70726f6f6605050140543a3a4b65794f776e657250726f6f6600012009015265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667905017468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f660d01616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c306265207265706f727465642e0d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e48706c616e5f636f6e6669675f6368616e6765040118636f6e666967d90401504e657874436f6e66696744657363726970746f720002105d01506c616e20616e2065706f636820636f6e666967206368616e67652e205468652065706f636820636f6e666967206368616e6765206973207265636f7264656420616e642077696c6c20626520656e6163746564206f6e5101746865206e6578742063616c6c20746f2060656e6163745f65706f63685f6368616e6765602e2054686520636f6e6669672077696c6c20626520616374697661746564206f6e652065706f63682061667465722e59014d756c7469706c652063616c6c7320746f2074686973206d6574686f642077696c6c207265706c61636520616e79206578697374696e6720706c616e6e656420636f6e666967206368616e6765207468617420686164546e6f74206265656e20656e6163746564207965742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ef904084873705f636f6e73656e7375735f736c6f74734445717569766f636174696f6e50726f6f66081848656164657201fd0408496401cd04001001206f6666656e646572cd0401084964000110736c6f74d5040110536c6f7400013066697273745f686561646572fd0401184865616465720001347365636f6e645f686561646572fd0401184865616465720000fd04102873705f72756e74696d651c67656e65726963186865616465721848656164657208184e756d626572011010486173680101050014012c706172656e745f68617368240130486173683a3a4f75747075740001186e756d6265727d0401184e756d62657200012873746174655f726f6f74240130486173683a3a4f757470757400013c65787472696e736963735f726f6f74240130486173683a3a4f75747075740001186469676573742c0118446967657374000001050c2873705f72756e74696d65187472616974732c426c616b6554776f323536000000000505082873705f73657373696f6e3c4d656d6265727368697050726f6f6600000c011c73657373696f6e10013053657373696f6e496e646578000128747269655f6e6f646573910401305665633c5665633c75383e3e00013c76616c696461746f725f636f756e7410013856616c696461746f72436f756e74000009050c2c70616c6c65745f626162651870616c6c6574144572726f7204045400010c60496e76616c696445717569766f636174696f6e50726f6f660000043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c69644b65794f776e65727368697050726f6f66000104310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400020415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a0909090d050c4070616c6c65745f74696d657374616d701870616c6c65741043616c6c0404540001040c73657404010c6e6f7711050124543a3a4d6f6d656e7400004054536574207468652063757272656e742074696d652e005501546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6ed470686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e0041015468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e742073706563696669656420627940604d696e696d756d506572696f64602e00d4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e002823203c7765696768743e31012d20604f2831296020284e6f7465207468617420696d706c656d656e746174696f6e73206f6620604f6e54696d657374616d7053657460206d75737420616c736f20626520604f283129602961012d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202862656361757365206f6620604469645570646174653a3a74616b656020696e402020606f6e5f66696e616c697a656029d42d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f736574602e204d75737420626520604f283129602e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e1105000006200015050000040c001815010019050c3870616c6c65745f696e64696365731870616c6c65741043616c6c04045400011414636c61696d040114696e64657810013c543a3a4163636f756e74496e6465780000489841737369676e20616e2070726576696f75736c7920756e61737369676e656420696e6465782e00dc5061796d656e743a20604465706f736974602069732072657365727665642066726f6d207468652073656e646572206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e00f02d2060696e646578603a2074686520696e64657820746f20626520636c61696d65642e2054686973206d757374206e6f7420626520696e207573652e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e602d204f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e207472616e7366657208010c6e6577000130543a3a4163636f756e744964000114696e64657810013c543a3a4163636f756e74496e6465780001505d0141737369676e20616e20696e64657820616c7265616479206f776e6564206279207468652073656e64657220746f20616e6f74686572206163636f756e742e205468652062616c616e6365207265736572766174696f6eb86973206566666563746976656c79207472616e7366657272656420746f20746865206e6577206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0025012d2060696e646578603a2074686520696e64657820746f2062652072652d61737369676e65642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e5d012d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e642d204f6e65207472616e73666572206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743ae02020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e7429e42020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e74292c23203c2f7765696768743e1066726565040114696e64657810013c543a3a4163636f756e74496e646578000248944672656520757020616e20696e646578206f776e6564206279207468652073656e6465722e005d015061796d656e743a20416e792070726576696f7573206465706f73697420706c6163656420666f722074686520696e64657820697320756e726573657276656420696e207468652073656e646572206163636f756e742e005501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206f776e2074686520696e6465782e000d012d2060696e646578603a2074686520696e64657820746f2062652066726565642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e0084456d6974732060496e646578467265656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e602d204f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e38666f7263655f7472616e736665720c010c6e6577000130543a3a4163636f756e744964000114696e64657810013c543a3a4163636f756e74496e646578000118667265657a6515010110626f6f6c0003545501466f72636520616e20696e64657820746f20616e206163636f756e742e205468697320646f65736e277420726571756972652061206465706f7369742e2049662074686520696e64657820697320616c7265616479e868656c642c207468656e20616e79206465706f736974206973207265696d62757273656420746f206974732063757272656e74206f776e65722e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e00a42d2060696e646578603a2074686520696e64657820746f206265202872652d2961737369676e65642e5d012d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e41012d2060667265657a65603a2069662073657420746f206074727565602c2077696c6c20667265657a652074686520696e64657820736f2069742063616e6e6f74206265207472616e736665727265642e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e782d20557020746f206f6e652072657365727665206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743af42020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e657229f82020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e6572292c23203c2f7765696768743e18667265657a65040114696e64657810013c543a3a4163636f756e74496e6465780004484101467265657a6520616e20696e64657820736f2069742077696c6c20616c7761797320706f696e7420746f207468652073656e646572206163636f756e742e205468697320636f6e73756d657320746865206465706f7369742e005901546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d757374206861766520616c6e6f6e2d66726f7a656e206163636f756e742060696e646578602e00ac2d2060696e646578603a2074686520696e64657820746f2062652066726f7a656e20696e20706c6163652e0088456d6974732060496e64657846726f7a656e60206966207375636365737366756c2e002823203c7765696768743e242d20604f283129602e982d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e702d20557020746f206f6e6520736c617368206f7065726174696f6e2e302d204f6e65206576656e742e4c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d902d204442205765696768743a203120526561642f577269746520284163636f756e7473292c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e1d050c3870616c6c65745f696e64696365731870616c6c6574144572726f720404540001142c4e6f7441737369676e65640000048c54686520696e64657820776173206e6f7420616c72656164792061737369676e65642e204e6f744f776e6572000104a454686520696e6465782069732061737369676e656420746f20616e6f74686572206163636f756e742e14496e5573650002047054686520696e64657820776173206e6f7420617661696c61626c652e2c4e6f745472616e73666572000304c854686520736f7572636520616e642064657374696e6174696f6e206163636f756e747320617265206964656e746963616c2e245065726d616e656e74000404d054686520696e646578206973207065726d616e656e7420616e64206d6179206e6f742062652066726565642f6368616e6765642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a09090921050000022505002505084470616c6c65745f617574686f727368697038556e636c65456e7472794974656d0c2c426c6f636b4e756d62657201101048617368012418417574686f72010001083c496e636c7573696f6e486569676874040010012c426c6f636b4e756d62657200000014556e636c650800240110486173680000050101384f7074696f6e3c417574686f723e0001000029050c4470616c6c65745f617574686f72736869701870616c6c65741043616c6c040454000104287365745f756e636c65730401286e65775f756e636c65732d0501385665633c543a3a4865616465723e0000046050726f76696465206120736574206f6620756e636c65732e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e2d05000002fd040031050c4470616c6c65745f617574686f72736869701870616c6c6574144572726f7204045400011c48496e76616c6964556e636c65506172656e740000048854686520756e636c6520706172656e74206e6f7420696e2074686520636861696e2e40556e636c6573416c726561647953657400010480556e636c657320616c72656164792073657420696e2074686520626c6f636b2e34546f6f4d616e79556e636c657300020440546f6f206d616e7920756e636c65732e3047656e65736973556e636c650003045454686520756e636c652069732067656e657369732e30546f6f48696768556e636c650004047c54686520756e636c6520697320746f6f206869676820696e20636861696e2e50556e636c65416c7265616479496e636c756465640005047854686520756e636c6520697320616c726561647920696e636c756465642e204f6c64556e636c65000604b454686520756e636c652069736e277420726563656e7420656e6f75676820746f20626520696e636c756465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a09090935050000023905003905083c70616c6c65745f62616c616e6365732c42616c616e63654c6f636b041c42616c616e63650118000c01086964bd0401384c6f636b4964656e746966696572000118616d6f756e7418011c42616c616e636500011c726561736f6e733d05011c526561736f6e7300003d051064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e6365731c526561736f6e7300010c0c466565000000104d6973630001000c416c6c000200004105083c70616c6c65745f62616c616e6365731043616c6c040454000118207472616e7366657208011064657374450501c02f2ac2ab2a2f3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365202f2ac2bb2a2f00011476616c7565c90101542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f000058d45472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e000501607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e1d0149742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e001501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e002823203c7765696768743e2d012d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72c82020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e65012d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e004852656c617465642066756e6374696f6e733a004d0120202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e290120202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c206361757365d0202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e842d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d41012d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429dc2d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e487472616e736665725f776974685f6d656d6f0c011064657374450501c02f2ac2ab2a2f3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365202f2ac2bb2a2f00011476616c7565c90101542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f0001106d656d6f7c01682f2ac2ab2a2f204f7074696f6e3c4d656d6f3e202f2ac2bb2a2f000120fc5472616e7366657220746865206e61746976652063757272656e63792077697468207468652068656c70206f66206964656e74696669657220737472696e67ec746869732066756e6374696f6e616c6974792063616e2068656c7020746f20646966666572656e746961746520746865207472616e73666572732e002823203c7765696768743e41012d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429dc2d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e906465706f7369745f626c6f636b5f7265776172645f726573657276655f62616c616e636504011476616c7565c90101542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f000204dc4d6f766520736f6d6520504f4c59582066726f6d2062616c616e6365206f662073656c6620746f2062616c616e6365206f66204252522e2c7365745f62616c616e63650c010c77686f450501c02f2ac2ab2a2f3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365202f2ac2bb2a2f0001206e65775f66726565c90101542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f0001306e65775f7265736572766564c90101542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f00031890536574207468652062616c616e636573206f66206120676976656e206163636f756e742e001d01546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c0501616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e00b0546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e38666f7263655f7472616e736665720c0118736f75726365450501c02f2ac2ab2a2f3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365202f2ac2bb2a2f00011064657374450501c02f2ac2ab2a2f3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365202f2ac2bb2a2f00011476616c7565c90101542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f00041c4d0145786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d6179206265287370656369666965642e002823203c7765696768743e3d012d2053616d65206173207472616e736665722c20627574206164646974696f6e616c207265616420616e6420777269746520626563617573652074686520736f75726365206163636f756e742069738c20206e6f7420617373756d656420746f20626520696e20746865206f7665726c61792e2c23203c2f7765696768743e506275726e5f6163636f756e745f62616c616e6365040118616d6f756e741801542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f00050429014275726e732074686520676976656e20616d6f756e74206f6620746f6b656e732066726f6d207468652063616c6c6572277320667265652c20756e6c6f636b65642062616c616e63652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e45050c2873705f72756e74696d65306d756c746961646472657373304d756c74694164647265737308244163636f756e7449640100304163636f756e74496e6465780110011408496404000001244163636f756e74496400000014496e64657804007d0401304163636f756e74496e6465780001000c526177040028011c5665633c75383e0002002441646472657373333204000401205b75383b2033325d000300244164647265737332300400f50101205b75383b2032305d000400004905083c70616c6c65745f62616c616e636573144572726f72040454000114544c69717569646974795265737472696374696f6e73000004c44163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c204f766572666c6f7700010470476f7420616e206f766572666c6f7720616674657220616464696e674c496e73756666696369656e7442616c616e63650002047442616c616e636520746f6f206c6f7720746f2073656e642076616c7565484578697374656e7469616c4465706f736974000304e856616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369744852656365697665724364644d697373696e6700040488526563656976657220646f6573206e6f74206861766520612076616c696420434444004d050c3473705f61726974686d657469632c66697865645f706f696e7424466978656455313238000004001801482f2ac2ab2a2f2075313238202f2ac2bb2a2f00005105086870616c6c65745f7472616e73616374696f6e5f7061796d656e742052656c6561736573000108245631416e6369656e7400000008563200010000550500000259050059050c346672616d655f737570706f72741c7765696768747358576569676874546f466565436f656666696369656e74041c42616c616e6365011800100134636f6566665f696e746567657218011c42616c616e6365000128636f6566665f667261638901011c50657262696c6c0001206e6567617469766515010110626f6f6c000118646567726565080108753800005d050c4c706f6c796d6573685f7072696d697469766573206964656e74697479244469645265636f726404244163636f756e74496401000004012c7072696d6172795f6b6579050101444f7074696f6e3c4163636f756e7449643e0000610500000408650569050065050c3c70616c6c65745f6964656e746974791474797065732c436c61696d3173744b657900000801187461726765747801284964656e746974794964000128636c61696d5f74797065c9020124436c61696d54797065000069050c3c70616c6c65745f6964656e746974791474797065732c436c61696d326e644b657900000801186973737565727801284964656e74697479496400011473636f70656d0501344f7074696f6e3c53636f70653e00006d0504184f7074696f6e04045401f80108104e6f6e6500000010536f6d650400f8000001000071050c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579244b65795265636f726404244163636f756e7449640100010c285072696d6172794b657904007801284964656e746974794964000000305365636f6e646172794b657908007801284964656e746974794964000094012c5065726d697373696f6e73000100444d756c74695369675369676e65724b657904000001244163636f756e74496400020000750500000408780000790500000408690120007d050c4c706f6c796d6573685f7072696d69746976657334617574686f72697a6174696f6e34417574686f72697a6174696f6e08244163636f756e7449640100184d6f6d656e74012000100148617574686f72697a6174696f6e5f6461746109010170417574686f72697a6174696f6e446174613c4163636f756e7449643e000134617574686f72697a65645f62797801284964656e746974794964000118657870697279f001384f7074696f6e3c4d6f6d656e743e00011c617574685f696420010c75363400008105000004087820008505083c70616c6c65745f6964656e746974791c56657273696f6e00000400080108753800008905083c70616c6c65745f6964656e746974791043616c6c040454000164406364645f72656769737465725f6469640801387461726765745f6163636f756e740001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f0001387365636f6e646172795f6b6579738c01b42f2ac2ab2a2f205665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e202f2ac2bb2a2f00002cb8526567697374657220607461726765745f6163636f756e746020776974682061206e6577204964656e746974792e002423204661696c75726545012d20606f726967696e602068617320746f206265206120616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792ef42d2045787465726e616c207365636f6e64617279206b6579732063616e206265206c696e6b656420746f206a757374206f6e65206964656e746974792e00202320576569676874c060375f3030305f3030305f303030202b203630305f303030202a207365636f6e646172795f6b6579732e6c656e28296054696e76616c69646174655f6364645f636c61696d730c010c6364647801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f00013064697361626c655f66726f6d20015c2f2ac2ab2a2f20543a3a4d6f6d656e74202f2ac2bb2a2f000118657870697279f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f0001102101496e76616c69646174657320616e7920636c61696d2067656e6572617465642062792060636464602066726f6d206064697361626c655f66726f6d602074696d657374616d70732e009c596f752063616e20616c736f20646566696e6520616e2065787069726174696f6e2074696d652c6d0177686963682077696c6c20696e76616c696461746520616c6c20636c61696d732067656e657261746564206279207468617420606364646020616e642072656d6f766520697420617320434444206d656d6265722067726f75702e6472656d6f76655f7365636f6e646172795f6b6579735f6f6c640401386b6579735f746f5f72656d6f7665650101a82f2ac2ab2a2f205665633c5369676e61746f72793c543a3a4163636f756e7449643e3e202f2ac2bb2a2f000204c0446570726563617465642e20557365206072656d6f76655f7365636f6e646172795f6b6579736020696e73746561642e486163636570745f7072696d6172795f6b6579080140726f746174696f6e5f617574685f69642001442f2ac2ab2a2f20753634202f2ac2bb2a2f0001506f7074696f6e616c5f6364645f617574685f6964f001642f2ac2ab2a2f204f7074696f6e3c7536343e202f2ac2bb2a2f000334650143616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e6501746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f766564250174686973206368616e676520286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e005d015468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f7264756e6c696e6b656420746f20616e79206964656e746974792e005d01446966666572732066726f6d20726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727920696e20746861742069742077696c6c20756e6c696e6b20746865206f6c64207072696d617279206b6579a4696e7374656164206f66206c656176696e672069742061732061207365636f6e64617279206b65792e002c2320417267756d656e74731d012a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e42a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f7669646572986368616e67655f6364645f726571756972656d656e745f666f725f6d6b5f726f746174696f6e040134617574685f7265717569726564150101482f2ac2ab2a2f20626f6f6c202f2ac2bb2a2f00041435015365742069662043444420617574686f72697a6174696f6e20697320726571756972656420666f72207570646174696e67207072696d617279206b6579206f6620616e206964656e746974792e7843616c6c61626c652076696120726f6f742028676f7665726e616e636529002c2320417267756d656e7473cc2a2060617574685f7265717569726564602043444420417574686f72697a6174696f6e207265717569726564206f72206e6f74506a6f696e5f6964656e746974795f61735f6b657904011c617574685f69642001442f2ac2ab2a2f20753634202f2ac2bb2a2f000504904a6f696e20616e206964656e746974792061732061207365636f6e64617279206b65792e546c656176655f6964656e746974795f61735f6b65790006048c4c6561766520746865207365636f6e64617279206b65792773206964656e746974792e246164645f636c61696d0c01187461726765747801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f000114636c61696df4014c2f2ac2ab2a2f20436c61696d202f2ac2bb2a2f000118657870697279f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f00070cc4416464732061206e657720636c61696d207265636f7264206f7220656469747320616e206578697374696e67206f6e652e00a84f6e6c792063616c6c6564206279206469645f6973737565722773207365636f6e64617279206b65792e307265766f6b655f636c61696d0801187461726765747801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f000114636c61696df4014c2f2ac2ab2a2f20436c61696d202f2ac2bb2a2f000804944d61726b73207468652073706563696669656420636c61696d206173207265766f6b65642e607365745f7065726d697373696f6e5f746f5f7369676e657208010c6b6579690101942f2ac2ab2a2f205369676e61746f72793c543a3a4163636f756e7449643e202f2ac2bb2a2f0001147065726d739401642f2ac2ab2a2f205065726d697373696f6e73202f2ac2bb2a2f000904e0446570726563617465642e2055736520607365745f7365636f6e646172795f6b65795f7065726d697373696f6e736020696e73746561642eac706c616365686f6c6465725f6c65676163795f7365745f7065726d697373696f6e5f746f5f7369676e6572000a04e8506c616365686f6c64657220666f722072656d6f76656420606c65676163795f7365745f7065726d697373696f6e5f746f5f7369676e6572602e54667265657a655f7365636f6e646172795f6b657973000b10c449742064697361626c657320616c6c207365636f6e64617279206b657973206174206064696460206964656e746974792e002023204572726f7273005c756e667265657a655f7365636f6e646172795f6b657973000c04dc52652d656e61626c657320616c6c207365636f6e64617279206b657973206f66207468652063616c6c65722773206964656e746974792e446164645f617574686f72697a6174696f6e0c0118746172676574690101942f2ac2ab2a2f205369676e61746f72793c543a3a4163636f756e7449643e202f2ac2bb2a2f00011064617461090101b42f2ac2ab2a2f20417574686f72697a6174696f6e446174613c543a3a4163636f756e7449643e202f2ac2bb2a2f000118657870697279f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f000d04584164647320616e20617574686f72697a6174696f6e2e5072656d6f76655f617574686f72697a6174696f6e0c0118746172676574690101942f2ac2ab2a2f205369676e61746f72793c543a3a4163636f756e7449643e202f2ac2bb2a2f00011c617574685f69642001442f2ac2ab2a2f20753634202f2ac2bb2a2f0001445f617574685f6973737565725f70617973150101482f2ac2ab2a2f20626f6f6c202f2ac2bb2a2f000e086452656d6f76657320616e20617574686f72697a6174696f6e2e75015f617574685f6973737565725f706179732064657465726d696e657320776865746865722074686520697373756572206f662074686520617574686f7269736174696f6e207061797320746865207472616e73616374696f6e20666565a46164645f7365636f6e646172795f6b6579735f776974685f617574686f72697a6174696f6e5f6f6c6408013c6164646974696f6e616c5f6b6579738d0501dc2f2ac2ab2a2f205665633c5365636f6e646172794b6579576974684175746856313c543a3a4163636f756e7449643e3e202f2ac2bb2a2f000128657870697265735f617420015c2f2ac2ab2a2f20543a3a4d6f6d656e74202f2ac2bb2a2f000f040101446570726563617465642e2055736520606164645f7365636f6e646172795f6b6579735f776974685f617574686f72697a6174696f6e6020696e73746561642e746164645f696e766573746f725f756e697175656e6573735f636c61696d1001187461726765747801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f000114636c61696df4014c2f2ac2ab2a2f20436c61696d202f2ac2bb2a2f00011470726f6f669d0501842f2ac2ab2a2f20496e766573746f725a4b50726f6f6644617461202f2ac2bb2a2f000118657870697279f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f00105009014164642060436c61696d3a3a496e766573746f72556e697175656e6573736020636c61696d20666f72206120676976656e20746172676574206964656e746974792e002823203c7765696768743e410120576569676874206f662074686520746869732065787472696e73696320697320646570656e64206f6e2074686520636f6d7075746174696f6e2074686174207573656420746f2076616c69646174652501207468652070726f6f66206f6620636c61696d2c2077686963682077696c6c206265206120636f6e7374616e7420696e646570656e64656e74206f66207573657220696e707574732e2c23203c2f7765696768743e002c2320417267756d656e7473b5012a206f726967696e202d2057686f2070726f76696465732074686520636c61696d20746f2074686520757365723f20496e207468697320636173652c20697427732074686520757365722773206163636f756e742069642061732074686520757365722070726f76696465732ee42a20746172676574202d20604964656e7469747949646020746f2077686963682074686520636c61696d20676574732061737369676e65642eb42a20636c61696d202d2060496e766573746f72556e697175656e6573736020636c61696d2064657461696c732eac2a2070726f6f66202d20546f2076616c6964617465207468652073656c66206174746573746174696f6e2e6c2a20657870697279202d20457870697279206f6620636c61696d2e002023204572726f72732d012a20604469644d757374416c7265616479457869737460205461726765742073686f756c6420616c7265616479206265656e20612070617274206f66207468652065636f73797374656d2e91012a2060436c61696d56617269616e744e6f74416c6c6f77656460205768656e206f726967696e20747279696e6720746f207061737320636c61696d2076617269616e74206f74686572207468616e2060496e766573746f72556e697175656e657373602eb9012a2060436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f77656460205768656e2069737375657220697320646966666572656e742066726f6d20746172676574206f72204344445f494420697320696e76616c696420666f7220676976656e20757365722eac2a2060496e76616c696453636f7065436c61696d205768656e2070726f6f6620697320696e76616c69642eec2a2060496e76616c6964434444496460207768656e20796f7520617265206e6f7420746865206f776e6572206f662074686174204344445f49442e4067635f6164645f6364645f636c61696d0401187461726765747801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f0011044501417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c20616464732061206e65772063646420636c61696d207265636f72642e4c67635f7265766f6b655f6364645f636c61696d0401187461726765747801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f0012046901417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c2072656d6f76657320616e206578697374696e672063646420636c61696d207265636f72642e806164645f696e766573746f725f756e697175656e6573735f636c61696d5f76321401187461726765747801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f00011473636f7065f8014c2f2ac2ab2a2f2053636f7065202f2ac2bb2a2f000114636c61696df4014c2f2ac2ab2a2f20436c61696d202f2ac2bb2a2f00011470726f6f66ad0501742f2ac2ab2a2f2053636f7065436c61696d50726f6f66202f2ac2bb2a2f000118657870697279f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f001300547265766f6b655f636c61696d5f62795f696e6465780c01187461726765747801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f000128636c61696d5f74797065c902015c2f2ac2ab2a2f20436c61696d54797065202f2ac2bb2a2f00011473636f70656d05016c2f2ac2ab2a2f204f7074696f6e3c53636f70653e202f2ac2bb2a2f001420f5015265766f6b6573206120737065636966696320636c61696d207573696e6720697473205b436c61696d20556e6971756520496e6465785d282f70616c6c65745f6964656e746974792f696e6465782e68746d6c23636c61696d2d756e697175652d696e6465782920636f6d706f7365642062792060746172676574602c6860636c61696d5f74797065602c20616e64206073636f7065602e000501506c65617365206e6f7465207468617420606f726967696e60206d7573742062652074686520697373756572206f66207468652074617267657420636c61696d2e002023204572726f72734d012d20605461726765744861734e6f6e5a65726f42616c616e6365417453636f7065496460207768656e20796f752074727920746f207265766f6b6520612060496e766573746f72556e697175656e6573732a602501636c61696d2c20616e64206074617267657460206964656e74697479207374696c6c206861766520616e792062616c616e6365206f6e2074686520676976656e206073636f7065602e7c726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727908011c617574685f69642001442f2ac2ab2a2f20753634202f2ac2bb2a2f0001506f7074696f6e616c5f6364645f617574685f6964f001642f2ac2ab2a2f204f7074696f6e3c7536343e202f2ac2bb2a2f001538650143616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e6501746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f766564290174686973206368616e67652c20286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e005d015468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f7264756e6c696e6b656420746f20616e79206964656e746974792e006101446966666572732066726f6d206163636570745f7072696d6172795f6b657920696e20746861742069742077696c6c206c6561766520746865206f6c64207072696d617279206b65792061732061207365636f6e6461727985016b6579207769746820746865207065726d697373696f6e732073706563696669656420696e2074686520636f72726573706f6e64696e6720526f746174655072696d6172794b6579546f5365636f6e6461727920617574686f72697a6174696f6ea4696e7374656164206f6620756e6c696e6b696e6720746865206f6c64207072696d617279206b65792e002c2320417267756d656e74731d012a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e42a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f7669646572946164645f7365636f6e646172795f6b6579735f776974685f617574686f72697a6174696f6e08013c6164646974696f6e616c5f6b657973cd0501d42f2ac2ab2a2f205665633c5365636f6e646172794b657957697468417574683c543a3a4163636f756e7449643e3e202f2ac2bb2a2f000128657870697265735f617420015c2f2ac2ab2a2f20543a3a4d6f6d656e74202f2ac2bb2a2f001634b041646473207365636f6e64617279206b65797320746f20746172676574206964656e7469747920606964602e0039014b65797320617265206469726563746c7920616464656420746f206964656e7469747920626563617573652065616368206f66207468656d2068617320616e20617574686f72697a6174696f6e2e00302320417267756d656e74733a0901202020202d20606f726967696e60207768696368206d75737420626520746865207072696d617279206b6579206f6620746865206964656e7469747920606964602ed4202020202d206069646020746f207768696368206e6577207365636f6e64617279206b6579732077696c6c2062652061646465642ed8202020202d20606164646974696f6e616c5f6b6579736020776869636820696e636c75646573207365636f6e64617279206b6579732c090120202020202020636f75706c6564207769746820617574686f72697a6174696f6e20646174612c20746f2061646420746f20746172676574206964656e746974792e002023204572726f7273ac202020202d2043616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722ed0202020202d204b6579732073686f756c642062652061626c6520746f206c696e6b656420746f20616e79206964656e746974792e747365745f7365636f6e646172795f6b65795f7065726d697373696f6e7308010c6b65790001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f0001147065726d739401642f2ac2ab2a2f205065726d697373696f6e73202f2ac2bb2a2f00170cc853657473207065726d697373696f6e7320666f7220616e20737065636966696320607461726765745f6b657960206b65792e0035014f6e6c7920746865207072696d617279206b6579206f6620616e206964656e746974792069732061626c6520746f20736574207365636f6e64617279206b6579207065726d697373696f6e732e5472656d6f76655f7365636f6e646172795f6b6579730401386b6579735f746f5f72656d6f7665e8017c2f2ac2ab2a2f205665633c543a3a4163636f756e7449643e202f2ac2bb2a2f001814d452656d6f76657320737065636966696564207365636f6e64617279206b657973206f662061204449442069662070726573656e742e002023204572726f727300cc5468652065787472696e7369632063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e8d0500000291050091051064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479585365636f6e646172794b65795769746841757468563104244163636f756e7449640100000801347365636f6e646172795f6b65799505016c76313a3a5365636f6e646172794b65793c4163636f756e7449643e000138617574685f7369676e6174757265990501104835313200009505104c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579087631305365636f6e646172794b657904244163636f756e7449640100000801187369676e6572690101505369676e61746f72793c4163636f756e7449643e00012c7065726d697373696f6e7394012c5065726d697373696f6e7300009905083c7072696d69746976655f74797065731048353132000004000d0201585b75383b202f2ac2ab2a2f203634202f2ac2bb2a2f5d00009d05104c706f6c796d6573685f7072696d69746976657354696e766573746f725f7a6b70726f6f665f646174610876314c496e766573746f725a4b50726f6f664461746100000400a10501245369676e61747572650000a1050c287363686e6f72726b656c107369676e245369676e6174757265000008010452a505014c436f6d7072657373656452697374726574746f00010473a90501185363616c61720000a5050c40637572766532353531395f64616c656b2472697374726574746f4c436f6d7072657373656452697374726574746f000004000401205b75383b2033325d0000a9050c40637572766532353531395f64616c656b187363616c6172185363616c6172000004011462797465730401205b75383b2033325d0000ad050c54636f6e666964656e7469616c5f6964656e7469747930636c61696d5f70726f6f66733c53636f7065436c61696d50726f6f6600000c016470726f6f665f73636f70655f69645f77656c6c666f726d6564b10501245369676e617475726500016c70726f6f665f73636f70655f69645f6364645f69645f6d61746368b505012c5a6b50726f6f664461746100012073636f70655f6964bd05013852697374726574746f506f696e740000b1050c54636f6e666964656e7469616c5f6964656e74697479107369676e245369676e6174757265000008010452a505014c436f6d7072657373656452697374726574746f00010473a90501185363616c61720000b5050c54636f6e666964656e7469616c5f6964656e7469747930636c61696d5f70726f6f66732c5a6b50726f6f664461746100000c014c6368616c6c656e67655f726573706f6e736573b90501945b5363616c61723b205a4b5f50524f4f465f444154415f4348475f524553504f4e5345535d00016073756274726163745f65787072657373696f6e735f726573bd05013852697374726574746f506f696e74000158626c696e6465645f73636f70655f6469645f68617368bd05013852697374726574746f506f696e740000b90500000302000000a90500bd050c40637572766532353531395f64616c656b2472697374726574746f3852697374726574746f506f696e7400000400c105013045647761726473506f696e740000c1050c40637572766532353531395f64616c656b1c656477617264733045647761726473506f696e74000010010458c50501304669656c64456c656d656e7400010459c50501304669656c64456c656d656e740001045ac50501304669656c64456c656d656e7400010454c50501304669656c64456c656d656e740000c5051840637572766532353531395f64616c656b1c6261636b656e641873657269616c0c753634146669656c64384669656c64456c656d656e74353100000400c90501205b7536343b20355d0000c905000003050000002000cd05000002d10500d1051064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479505365636f6e646172794b6579576974684175746804244163636f756e7449640100000801347365636f6e646172795f6b657990015c5365636f6e646172794b65793c4163636f756e7449643e000138617574685f7369676e617475726599050110483531320000d505083c70616c6c65745f6964656e74697479144572726f7204045400018434416c72656164794c696e6b6564000004dc4f6e65207365636f6e64617279206f72207072696d617279206b65792063616e206f6e6c792062656c6f6e6720746f206f6e6520444944584d697373696e6743757272656e744964656e74697479000104ac4d697373696e672063757272656e74206964656e74697479206f6e20746865207472616e73616374696f6e30556e617574686f72697a6564000204bc5369676e61746f7279206973206e6f742070726520617574686f72697a656420627920746865206964656e7469747944496e76616c69644163636f756e744b6579000304a84163636f756e742049642063616e6e6f74206265206578747261637465642066726f6d207369676e65725c556e417574686f72697a656443646450726f76696465720004049c4f6e6c792043444420736572766963652070726f7669646572732061726520616c6c6f7765642e74496e76616c6964417574686f72697a6174696f6e46726f6d4f776e6572000504a0416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865206f776e65722e8c496e76616c6964417574686f72697a6174696f6e46726f6d43646450726f7669646572000604bc416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865204344442070726f76696465722e644e6f7443646450726f76696465724174746573746174696f6e000704b84174746573746174696f6e20776173206e6f7420627920612043444420736572766963652070726f76696465722e70417574686f72697a6174696f6e734e6f74466f7253616d6544696473000804a0417574686f72697a6174696f6e7320617265206e6f7420666f72207468652073616d65204449442e4c4469644d757374416c726561647945786973740009046c54686520444944206d75737420616c72656164792065786973742e8043757272656e744964656e7469747943616e6e6f744265466f72776172646564000a044d0143757272656e74206964656e746974792063616e6e6f7420626520666f727761726465642c206974206973206e6f742061207365636f6e64617279206b6579206f6620746172676574206964656e746974792e50417574686f72697a6174696f6e45787069726564000b049c546865206f6666636861696e20617574686f72697a6174696f6e2068617320657870697265642e385461726765744861734e6f436464000c0480546865207461726765742044494420686173206e6f2076616c6964204344442e6c417574686f72697a6174696f6e4861734265656e5265766f6b6564000d04a8417574686f72697a6174696f6e20686173206265656e206578706c696369746c79207265766f6b65642e74496e76616c6964417574686f72697a6174696f6e5369676e6174757265000e048c416e20696e76616c696420617574686f72697a6174696f6e207369676e61747572652e344b65794e6f74416c6c6f776564000f04d454686973206b6579206973206e6f7420616c6c6f77656420746f2065786563757465206120676976656e206f7065726174696f6e2e344e6f745072696d6172794b657900100461014f6e6c7920746865207072696d617279206b657920697320616c6c6f77656420746f207265766f6b6520616e204964656e74697479205369676e61746f7279206f66662d636861696e20617574686f72697a6174696f6e2e3c446964446f65734e6f7445786973740011045c5468652044494420646f6573206e6f742065786973742e40446964416c72656164794578697374730012045c5468652044494420616c7265616479206578697374732e785365636f6e646172794b657973436f6e7461696e5072696d6172794b6579001304ac546865207365636f6e64617279206b65797320636f6e7461696e20746865207072696d617279206b65792e444661696c6564546f436861726765466565001404a0436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e284e6f74415369676e6572001504d85369676e6572206973206e6f742061207365636f6e64617279206b6579206f66207468652070726f7669646564206964656e746974796c43616e6e6f744465636f64655369676e65724163636f756e744964001604150143616e6e6f7420636f6e7665727420612060543a3a4163636f756e7449646020746f2060416e795369676e61747572653a3a5369676e65723a3a4163636f756e744964602e484d756c746953696748617342616c616e636500170421014d756c74697369672063616e206e6f7420626520756e6c696e6b65642066726f6d20616e206964656e74697479207768696c65206974207374696c6c20686f6c647320504f4c595880436f6e666964656e7469616c53636f7065436c61696d4e6f74416c6c6f7765640018040501436f6e666964656e7469616c2053636f706520636c61696d732063616e20626520616464656420627920616e204964656e7469747920746f2069742d73656c662e44496e76616c696453636f7065436c61696d001904bc4164646974696f6e206f662061206e65772073636f706520636c61696d206765747320696e76616c6964617465642e58436c61696d56617269616e744e6f74416c6c6f776564001a04e454727920746f20616464206120636c61696d2076617269616e74207573696e6720756e2d64657369676e617465642065787472696e7369632e805461726765744861734e6f6e5a65726f42616c616e6365417453636f70654964001b04510154727920746f2064656c6574652074686520495520636c61696d206576656e207768656e20746865207573657220686173206e6f6e207a65726f2062616c616e636520617420676976656e2073636f706549642e6443444449644e6f74556e69717565466f724964656e74697479001c041d0143444449642073686f756c6420626520756e6971756520262073616d652077697468696e20616c6c2063646420636c61696d7320706f737365737365642062792061204449442e30496e76616c69644344444964001d0409014e6f6e2073797374656d61746963204344442070726f7669646572732063616e206e6f74206372656174652064656661756c74206364645f696420636c61696d732e7c436c61696d416e6450726f6f6656657273696f6e73446f4e6f744d61746368001e049c436c61696d20616e642050726f6f662076657273696f6e732061726520646966666572656e742e544163636f756e744b657949734265696e6755736564001f04d0546865206163636f756e74206b6579206973206265696e6720757365642c2069742063616e277420626520756e6c696e6b65642e48437573746f6d53636f7065546f6f4c6f6e670020086c4120637573746f6d2073636f706520697320746f6f206c6f6e672e9c49742063616e206174206d6f737420626520603332602063686172616374657273206c6f6e672e00d905000002dd0500dd051064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f757038496e6163746976654d656d62657204184d6f6d656e740120000c010869647801284964656e74697479496400013864656163746976617465645f61742001184d6f6d656e74000118657870697279f001384f7074696f6e3c4d6f6d656e743e0000e105083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d69741001642f2ac2ab2a2f204d656d626572436f756e74202f2ac2bb2a2f00001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f000118657870697279f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f0001086174f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f0002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f00010c6164647801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d62657273210101742f2ac2ab2a2f205665633c4964656e7469747949643e202f2ac2bb2a2f00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ee505083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00e9050c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d651043616c6c0001ac1853797374656d0400850401ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53797374656d2c2052756e74696d653e00000010426162650400f50401a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426162652c2052756e74696d653e0001002454696d657374616d7004000d0501b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54696d657374616d702c2052756e74696d653e0002001c496e64696365730400190501b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496e64696365732c2052756e74696d653e00030028417574686f72736869700400290501bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c417574686f72736869702c2052756e74696d653e0004002042616c616e6365730400410501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c42616c616e6365732c2052756e74696d653e000500204964656e746974790400890501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4964656e746974792c2052756e74696d653e0007004c4364645365727669636550726f7669646572730400e10501e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4364645365727669636550726f7669646572732c2052756e74696d653e00080044506f6c796d657368436f6d6d69747465650400ed0501d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f6c796d657368436f6d6d69747465652c2052756e74696d653e0009004c436f6d6d69747465654d656d626572736869700400f10501e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6d6d69747465654d656d626572736869702c2052756e74696d653e000a0048546563686e6963616c436f6d6d69747465650400f50501dd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546563686e6963616c436f6d6d69747465652c2052756e74696d653e000b0070546563686e6963616c436f6d6d69747465654d656d626572736869700400f90501050273656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546563686e6963616c436f6d6d69747465654d656d626572736869702c2052756e74696d653e000c004055706772616465436f6d6d69747465650400fd0501d50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c55706772616465436f6d6d69747465652c2052756e74696d653e000d006855706772616465436f6d6d69747465654d656d626572736869700400010601fd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c55706772616465436f6d6d69747465654d656d626572736869702c2052756e74696d653e000e00204d756c74695369670400050601b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d756c74695369672c2052756e74696d653e000f00184272696467650400090601ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4272696467652c2052756e74696d653e0010001c5374616b696e670400190601b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5374616b696e672c2052756e74696d653e0011001c53657373696f6e04000d0701b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53657373696f6e2c2052756e74696d653e0013001c4772616e6470610400190701b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4772616e6470612c2052756e74696d653e00150020496d4f6e6c696e650400450701b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496d4f6e6c696e652c2052756e74696d653e001700105375646f0400650701a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5375646f2c2052756e74696d653e0019001441737365740400690701a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c41737365742c2052756e74696d653e001a004c4361706974616c446973747269627574696f6e0400890701e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4361706974616c446973747269627574696f6e2c2052756e74696d653e001b0028436865636b706f696e740400910701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436865636b706f696e742c2052756e74696d653e001c0044436f6d706c69616e63654d616e616765720400990701d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6d706c69616e63654d616e616765722c2052756e74696d653e001d003c436f72706f72617465416374696f6e04009d0701d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f72706f72617465416374696f6e2c2052756e74696d653e001e003c436f72706f7261746542616c6c6f740400b50701d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f72706f7261746542616c6c6f742c2052756e74696d653e001f0010506970730400b90701a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506970732c2052756e74696d653e00210024506f7274666f6c696f0400c90701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f7274666f6c696f2c2052756e74696d653e0022002c50726f746f636f6c4665650400d50701c10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50726f746f636f6c4665652c2052756e74696d653e002300245363686564756c65720400dd0701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5363686564756c65722c2052756e74696d653e00240028536574746c656d656e740400e90701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c536574746c656d656e742c2052756e74696d653e00250028537461746973746963730400fd0701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c537461746973746963732c2052756e74696d653e0026000c53746f0400110801a10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53746f2c2052756e74696d653e0027002054726561737572790400210801b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54726561737572792c2052756e74696d653e0028001c5574696c69747904002d0801b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5574696c6974792c2052756e74696d653e00290010426173650400390801a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426173652c2052756e74696d653e002a003845787465726e616c4167656e747304003d0801cd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c45787465726e616c4167656e74732c2052756e74696d653e002b001c52656c617965720400410801b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c52656c617965722c2052756e74696d653e002c001c526577617264730400450801b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c526577617264732c2052756e74696d653e002d0044506f6c796d657368436f6e74726163747304004d0801d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f6c796d657368436f6e7472616374732c2052756e74696d653e002f0020507265696d6167650400510801b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c507265696d6167652c2052756e74696d653e00300024546573745574696c730400550801b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546573745574696c732c2052756e74696d653e00320000ed05084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e1001442f2ac2ab2a2f20753332202f2ac2bb2a2f000104641001442f2ac2ab2a2f20753332202f2ac2bb2a2f000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f00011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279350101a02f2ac2ab2a2f204d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e202f2ac2bb2a2f000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f7665150101482f2ac2ab2a2f20626f6f6c202f2ac2bb2a2f00011063616c6ce90501d02f2ac2ab2a2f20426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e202f2ac2bb2a2f000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c2401542f2ac2ab2a2f20543a3a48617368202f2ac2bb2a2f000114696e64657810016c2f2ac2ab2a2f2050726f706f73616c496e646578202f2ac2bb2a2f00011c617070726f7665150101482f2ac2ab2a2f20626f6f6c202f2ac2bb2a2f000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef105083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d69741001642f2ac2ab2a2f204d656d626572436f756e74202f2ac2bb2a2f00001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f000118657870697279f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f0001086174f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f0002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f00010c6164647801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d62657273210101742f2ac2ab2a2f205665633c4964656e7469747949643e202f2ac2bb2a2f00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef505084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e1001442f2ac2ab2a2f20753332202f2ac2bb2a2f000104641001442f2ac2ab2a2f20753332202f2ac2bb2a2f000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f00011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279350101a02f2ac2ab2a2f204d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e202f2ac2bb2a2f000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f7665150101482f2ac2ab2a2f20626f6f6c202f2ac2bb2a2f00011063616c6ce90501d02f2ac2ab2a2f20426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e202f2ac2bb2a2f000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c2401542f2ac2ab2a2f20543a3a48617368202f2ac2bb2a2f000114696e64657810016c2f2ac2ab2a2f2050726f706f73616c496e646578202f2ac2bb2a2f00011c617070726f7665150101482f2ac2ab2a2f20626f6f6c202f2ac2bb2a2f000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef905083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d69741001642f2ac2ab2a2f204d656d626572436f756e74202f2ac2bb2a2f00001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f000118657870697279f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f0001086174f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f0002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f00010c6164647801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d62657273210101742f2ac2ab2a2f205665633c4964656e7469747949643e202f2ac2bb2a2f00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652efd05084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e1001442f2ac2ab2a2f20753332202f2ac2bb2a2f000104641001442f2ac2ab2a2f20753332202f2ac2bb2a2f000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869647801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f00011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279350101a02f2ac2ab2a2f204d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e202f2ac2bb2a2f000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f7665150101482f2ac2ab2a2f20626f6f6c202f2ac2bb2a2f00011063616c6ce90501d02f2ac2ab2a2f20426f783c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a43616c6c3e202f2ac2bb2a2f000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c2401542f2ac2ab2a2f20543a3a48617368202f2ac2bb2a2f000114696e64657810016c2f2ac2ab2a2f2050726f706f73616c496e646578202f2ac2bb2a2f00011c617070726f7665150101482f2ac2ab2a2f20626f6f6c202f2ac2bb2a2f000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e0106083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d69741001642f2ac2ab2a2f204d656d626572436f756e74202f2ac2bb2a2f00001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f7801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f000118657870697279f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f0001086174f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f7801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f0002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f7801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76657801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f00010c6164647801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d62657273210101742f2ac2ab2a2f205665633c4964656e7469747949643e202f2ac2bb2a2f00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e0506083c70616c6c65745f6d756c74697369671043616c6c04045400014c3c6372656174655f6d756c746973696708011c7369676e657273650101a82f2ac2ab2a2f205665633c5369676e61746f72793c543a3a4163636f756e7449643e3e202f2ac2bb2a2f000134736967735f72657175697265642001442f2ac2ab2a2f20753634202f2ac2bb2a2f00001448437265617465732061206d756c7469736967002c2320417267756d656e7473a5012a20607369676e65727360202d205369676e657273206f6620746865206d756c7469736967202854686579206e65656420746f2061636365707420617574686f72697a6174696f6e206265666f72652074686579206172652061637475616c6c79206164646564292e19012a2060736967735f726571756972656460202d204e756d626572206f66207369677320726571756972656420746f2070726f636573732061206d756c74692d7369672074782e986372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6964656e746974791001206d756c74697369670001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f00012070726f706f73616ce90501782f2ac2ab2a2f20426f783c543a3a50726f706f73616c3e202f2ac2bb2a2f000118657870697279f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f0001286175746f5f636c6f7365150101482f2ac2ab2a2f20626f6f6c202f2ac2bb2a2f0001203d01437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e846372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6b65791001206d756c74697369670001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f00012070726f706f73616ce90501782f2ac2ab2a2f20426f783c543a3a50726f706f73616c3e202f2ac2bb2a2f000118657870697279f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f0001286175746f5f636c6f7365150101482f2ac2ab2a2f20626f6f6c202f2ac2bb2a2f0002203d01437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e6c6372656174655f70726f706f73616c5f61735f6964656e746974791001206d756c74697369670001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f00012070726f706f73616ce90501782f2ac2ab2a2f20426f783c543a3a50726f706f73616c3e202f2ac2bb2a2f000118657870697279f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f0001286175746f5f636c6f7365150101482f2ac2ab2a2f20626f6f6c202f2ac2bb2a2f0003206c437265617465732061206d756c74697369672070726f706f73616c002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e586372656174655f70726f706f73616c5f61735f6b65791001206d756c74697369670001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f00012070726f706f73616ce90501782f2ac2ab2a2f20426f783c543a3a50726f706f73616c3e202f2ac2bb2a2f000118657870697279f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f0001286175746f5f636c6f7365150101482f2ac2ab2a2f20626f6f6c202f2ac2bb2a2f0004206c437265617465732061206d756c74697369672070726f706f73616c002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4c617070726f76655f61735f6964656e746974790801206d756c74697369670001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f00012c70726f706f73616c5f69642001442f2ac2ab2a2f20753634202f2ac2bb2a2f000518e4417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea42a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e38617070726f76655f61735f6b65790801206d756c74697369670001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f00012c70726f706f73616c5f69642001442f2ac2ab2a2f20753634202f2ac2bb2a2f0006183101417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea42a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4872656a6563745f61735f6964656e746974790801206d756c74697369670001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f00012c70726f706f73616c5f69642001442f2ac2ab2a2f20753634202f2ac2bb2a2f000718e052656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea02a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e3472656a6563745f61735f6b65790801206d756c74697369670001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f00012c70726f706f73616c5f69642001442f2ac2ab2a2f20753634202f2ac2bb2a2f0008182d0152656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea02a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e886163636570745f6d756c74697369675f7369676e65725f61735f6964656e7469747904011c617574685f69642001442f2ac2ab2a2f20753634202f2ac2bb2a2f0009100d01416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206964656e746974792e002c2320417267756d656e7473ac2a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e746163636570745f6d756c74697369675f7369676e65725f61735f6b657904011c617574685f69642001442f2ac2ab2a2f20753634202f2ac2bb2a2f000a102901416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206b657920284163636f756e744964292e002c2320417267756d656e7473ac2a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e4c6164645f6d756c74697369675f7369676e65720401187369676e6572690101942f2ac2ab2a2f205369676e61746f72793c543a3a4163636f756e7449643e202f2ac2bb2a2f000b102901416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e002c2320417267756d656e7473782a20607369676e657260202d205369676e61746f727920746f206164642e5872656d6f76655f6d756c74697369675f7369676e65720401187369676e6572690101942f2ac2ab2a2f205369676e61746f72793c543a3a4163636f756e7449643e202f2ac2bb2a2f000c103d0152656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e002c2320417267756d656e7473842a20607369676e657260202d205369676e61746f727920746f2072656d6f76652e806164645f6d756c74697369675f7369676e6572735f7669615f63726561746f720801206d756c74697369670001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f00011c7369676e657273650101a82f2ac2ab2a2f205665633c5369676e61746f72793c543a3a4163636f756e7449643e3e202f2ac2bb2a2f000d244501416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865246d756c74697369672e002c2320417267756d656e74739c2a20606d756c746973696760202d2041646472657373206f6620746865206d756c746920736967842a20607369676e65727360202d205369676e61746f7269657320746f206164642e00202320576569676874a4603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e2829608c72656d6f76655f6d756c74697369675f7369676e6572735f7669615f63726561746f720801206d756c74697369670001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f00011c7369676e657273650101a82f2ac2ab2a2f205665633c5369676e61746f72793c543a3a4163636f756e7449643e3e202f2ac2bb2a2f000e248c52656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672ef054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865206d756c74697369672e002c2320417267756d656e74739c2a20606d756c746973696760202d2041646472657373206f6620746865206d756c74697369672e902a20607369676e65727360202d205369676e61746f7269657320746f2072656d6f76652e00202320576569676874a4603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e282960506368616e67655f736967735f7265717569726564040134736967735f72657175697265642001442f2ac2ab2a2f20753634202f2ac2bb2a2f000f144d014368616e67657320746865206e756d626572206f66207369676e6174757265732072657175697265642062792061206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865406d756c746973696720697473656c662e002c2320417267756d656e7473d82a2060736967735f726571756972656460202d204e6577206e756d626572206f66207265717569726564207369676e6174757265732e5c6d616b655f6d756c74697369675f7365636f6e646172790401206d756c74697369670001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f0010146901416464732061206d756c74697369672061732061207365636f6e64617279206b6579206f662063757272656e7420646964206966207468652063757272656e7420646964206973207468652063726561746f72206f6620746865246d756c74697369672e002c2320417267756d656e7473802a20606d756c746973696760202d206d756c7469207369672061646472657373546d616b655f6d756c74697369675f7072696d6172790801206d756c74697369670001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f0001506f7074696f6e616c5f6364645f617574685f6964f001642f2ac2ab2a2f204f7074696f6e3c7536343e202f2ac2bb2a2f0011145d01416464732061206d756c746973696720617320746865207072696d617279206b6579206f66207468652063757272656e7420646964206966207468652063757272656e7420444944206973207468652063726561746f72406f6620746865206d756c74697369672e002c2320417267756d656e7473842a20606d756c74695f73696760202d206d756c746920736967206164647265737368657865637574655f7363686564756c65645f70726f706f73616c1001206d756c74697369670001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f00012c70726f706f73616c5f69642001442f2ac2ab2a2f20753634202f2ac2bb2a2f0001306d756c74697369675f6469647801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f0001405f70726f706f73616c5f7765696768742001502f2ac2ab2a2f20576569676874202f2ac2bb2a2f0012047101526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20666f7220657865637574696e67207363686564756c6564206d756c74697369672070726f706f73616c2e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e0906083470616c6c65745f6272696467651043616c6c040454000144446368616e67655f636f6e74726f6c6c6572040128636f6e74726f6c6c65720001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f000010a04368616e6765732074686520636f6e74726f6c6c6572206163636f756e742061732061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e306368616e67655f61646d696e04011461646d696e0001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f000110744368616e67657320746865206272696467652061646d696e206b65792e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e3c6368616e67655f74696d656c6f636b04012074696d656c6f636b1001702f2ac2ab2a2f20543a3a426c6f636b4e756d626572202f2ac2bb2a2f000210704368616e676573207468652074696d656c6f636b20706572696f642e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e18667265657a650003145d01467265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c65206966206974206973206e6f7420616c72656164792066726f7a656e2e205768656e2074686549016272696467652069732066726f7a656e2c20617474656d70746564207472616e73616374696f6e732067657420706f7374706f6e656420696e7374656164206f662067657474696e672068616e646c65642e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e20756e667265657a650004101101556e667265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c652069662069742069732066726f7a656e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c6368616e67655f6272696467655f6c696d6974080118616d6f756e741801542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f0001206475726174696f6e1001702f2ac2ab2a2f20543a3a426c6f636b4e756d626572202f2ac2bb2a2f000514684368616e6765732074686520627269646765206c696d6974732e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ea42d20604469766973696f6e42795a65726f6020696620606475726174696f6e60206973207a65726f2e586368616e67655f6272696467655f6578656d707465640401206578656d707465640d0601942f2ac2ab2a2f205665633c284964656e7469747949642c20626f6f6c293e202f2ac2bb2a2f0006109c4368616e6765732074686520627269646765206c696d6974206578656d70746564206c6973742e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e58666f7263655f68616e646c655f6272696467655f74780401246272696467655f7478710101902f2ac2ab2a2f2042726964676554783c543a3a4163636f756e7449643e202f2ac2bb2a2f0007142501466f726365732068616e646c696e672061207472616e73616374696f6e20627920627970617373696e672074686520627269646765206c696d697420616e642074696d656c6f636b2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e21012d20604e6f56616c69644364646020696620606272696467655f74782e726563697069656e746020646f6573206e6f74206861766520612076616c69642043444420636c61696d2e5c62617463685f70726f706f73655f6272696467655f74780401286272696467655f747873150601a42f2ac2ab2a2f205665633c42726964676554783c543a3a4163636f756e7449643e3e202f2ac2bb2a2f000824450150726f706f736573206120766563746f72206f6620627269646765207472616e73616374696f6e732e2054686520766563746f722069732070726f63657373656420756e74696c207468652066697273744d0170726f706f73616c2077686963682063617573657320616e206572726f722c20696e207768696368206361736520746865206572726f722069732072657475726e656420616e64207468652072657374206f667070726f706f73616c7320617265206e6f742070726f6365737365642e00242323204572726f7273c82d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e00202320576569676874b0603530305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829604470726f706f73655f6272696467655f74780401246272696467655f7478710101902f2ac2ab2a2f2042726964676554783c543a3a4163636f756e7449643e202f2ac2bb2a2f000918490150726f706f736573206120627269646765207472616e73616374696f6e2c20776869636820616d6f756e747320746f206d616b696e672061206d756c74697369672070726f706f73616c20666f72207468655501627269646765207472616e73616374696f6e20696620746865207472616e73616374696f6e206973206e6577206f7220617070726f76696e6720616e206578697374696e672070726f706f73616c20696620746865987472616e73616374696f6e2068617320616c7265616479206265656e2070726f706f7365642e00242323204572726f7273c82d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e4068616e646c655f6272696467655f74780401246272696467655f7478710101902f2ac2ab2a2f2042726964676554783c543a3a4163636f756e7449643e202f2ac2bb2a2f000a18c048616e646c657320616e20617070726f76656420627269646765207472616e73616374696f6e2070726f706f73616c2e00242323204572726f727319012d206042616443616c6c65726020696620606f726967696e60206973206e6f74206053656c663a3a636f6e74726f6c6c657260206f7220206053656c663a3a61646d696e602eec2d206054696d656c6f636b656454786020696620746865207472616e73616374696f6e20737461747573206973206054696d656c6f636b6564602e09012d206050726f706f73616c416c726561647948616e646c65646020696620746865207472616e73616374696f6e20737461747573206973206048616e646c6564602e28667265657a655f7478730401286272696467655f747873150601a42f2ac2ab2a2f205665633c42726964676554783c543a3a4163636f756e7449643e3e202f2ac2bb2a2f000b2088467265657a657320676976656e20627269646765207472616e73616374696f6e732e8501496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e00202320576569676874b0603430305f3030305f303030202b20325f3030305f303030202a206272696467655f7478732e6c656e28296030756e667265657a655f7478730401286272696467655f747873150601a42f2ac2ab2a2f205665633c42726964676554783c543a3a4163636f756e7449643e3e202f2ac2bb2a2f000c2090556e667265657a657320676976656e20627269646765207472616e73616374696f6e732e8501496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e00202320576569676874b0603430305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829606868616e646c655f7363686564756c65645f6272696467655f74780401246272696467655f7478710101902f2ac2ab2a2f2042726964676554783c543a3a4163636f756e7449643e202f2ac2bb2a2f000d189901526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f2068616e646c652061207363686564756c65642074696d656c6f636b656420627269646765207472616e73616374696f6e2e002023204572726f7273982d20604261644f726967696e6020696620606f726967696e60206973206e6f7420726f6f742ef82d206050726f706f73616c416c726561647948616e646c656460206966207472616e73616374696f6e20737461747573206973206048616e646c6564602ebc2d206046726f7a656e547860206966207472616e73616374696f6e20737461747573206973206046726f7a656e602e406164645f667265657a655f61646d696e040130667265657a655f61646d696e0001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f000e104c416464206120667265657a652061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c72656d6f76655f667265657a655f61646d696e040130667265657a655f61646d696e0001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f000f105852656d6f7665206120667265657a652061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e2872656d6f76655f7478730401286272696467655f747873150601a42f2ac2ab2a2f205665633c42726964676554783c543a3a4163636f756e7449643e3e202f2ac2bb2a2f0010148452656d6f766520676976656e20627269646765207472616e73616374696f6e732e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ed02d20604e6f7446726f7a656e60206966206120747820696e20606272696467655f74787360206973206e6f742066726f7a656e2e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e0d060000021106001106000004087815010015060000027101001906083870616c6c65745f7374616b696e671043616c6c04045400018010626f6e640c0128636f6e74726f6c6c6572450501c02f2ac2ab2a2f3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365202f2ac2bb2a2f00011476616c7565c90101682f2ac2ab2a2f2042616c616e63654f663c543e202f2ac2bb2a2f00011470617965651d0601b42f2ac2ab2a2f2052657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e202f2ac2bb2a2f000058610154616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c80626520746865206163636f756e74207468617420636f6e74726f6c732069742e002d016076616c756560206d757374206265206d6f7265207468616e2074686520606d696e696d756d5f62616c616e636560207370656369666965642062792060543a3a43757272656e6379602e002101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e003c456d6974732060426f6e646564602e002823203c7765696768743ed02d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e1c2d204f2831292e642d20546872656520657874726120444220656e74726965732e004d014e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e65643d01756e6c6573732074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e482d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a2d012d20526561643a20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c2043757272656e74204572612c20486973746f72792044657074682c204c6f636b73dc2d2057726974653a20426f6e6465642c2050617965652c205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e28626f6e645f65787472610401386d61785f6164646974696f6e616cc90101682f2ac2ab2a2f2042616c616e63654f663c543e202f2ac2bb2a2f000154610141646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e636520757030666f72207374616b696e672e004d01557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e6101556e6c696b65205b60626f6e64605d206f72205b60756e626f6e64605d20746869732066756e6374696f6e20646f6573206e6f7420696d706f736520616e79206c696d69746174696f6e206f6e2074686520616d6f756e7448746861742063616e2062652061646465642e005d01546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c657220616e64f469742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e003c456d6974732060426f6e646564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e1c2d204f2831292e3c2d204f6e6520444220656e7472792e302d2d2d2d2d2d2d2d2d2d2d2d284442205765696768743a11012d20526561643a2045726120456c656374696f6e205374617475732c20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c204c6f636b73a02d2057726974653a205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e18756e626f6e6404011476616c7565c90101682f2ac2ab2a2f2042616c616e63654f663c543e202f2ac2bb2a2f00028051015363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e64fc706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e2101543a3a43757272656e63793a3a6d696e696d756d5f62616c616e636528292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e0045014f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c20796f752063616e2063616c6c206077697468647261775f756e626f6e6465646020746f2061637475616c6c79206d6f7665bc7468652066756e6473206f7574206f66206d616e6167656d656e7420726561647920666f72207472616e736665722e0039014e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d41585f554e4c4f434b494e475f4348554e4b536029390163616e20636f2d657869737473206174207468652073616d652074696d652e20496e207468617420636173652c205b6043616c6c3a3a77697468647261775f756e626f6e646564605d206e656564f8746f2062652063616c6c656420666972737420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e0044456d6974732060556e626f6e646564602e009453656520616c736f205b6043616c6c3a3a77697468647261775f756e626f6e646564605d2e002823203c7765696768743e3d012d20496e646570656e64656e74206f662074686520617267756d656e74732e204c696d697465642062757420706f74656e7469616c6c79206578706c6f697461626c6520636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732e61012d20456163682063616c6c20287265717569726573207468652072656d61696e646572206f662074686520626f6e6465642062616c616e636520746f2062652061626f766520606d696e696d756d5f62616c616e636560296d01202077696c6c2063617573652061206e657720656e74727920746f20626520696e73657274656420696e746f206120766563746f722028604c65646765722e756e6c6f636b696e676029206b65707420696e2073746f726167652e4d012020546865206f6e6c792077617920746f20636c65616e207468652061666f72656d656e74696f6e65642073746f72616765206974656d20697320616c736f20757365722d636f6e74726f6c6c6564207669615820206077697468647261775f756e626f6e646564602e3c2d204f6e6520444220656e7472792e282d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a21012d20526561643a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e744572612c204c6f636b732c205c5b4f726967696e204163636f756e745c5da82d2057726974653a204c6f636b732c204c65646765722c205c5b4f726967696e204163636f756e745c5d243c2f7765696768743e4477697468647261775f756e626f6e6465640401486e756d5f736c617368696e675f7370616e731001442f2ac2ab2a2f20753332202f2ac2bb2a2f00037c290152656d6f766520616e7920756e6c6f636b6564206368756e6b732066726f6d207468652060756e6c6f636b696e67602071756575652066726f6d206f7572206d616e6167656d656e742e0031015468697320657373656e7469616c6c7920667265657320757020746861742062616c616e636520746f206265207573656420627920746865207374617368206163636f756e7420746f20646f4877686174657665722069742077616e74732e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e0048456d697473206057697468647261776e602e006853656520616c736f205b6043616c6c3a3a756e626f6e64605d2e002823203c7765696768743e51012d20436f756c6420626520646570656e64656e74206f6e2074686520606f726967696e6020617267756d656e7420616e6420686f77206d7563682060756e6c6f636b696e6760206368756e6b732065786973742e410120497420696d706c6965732060636f6e736f6c69646174655f756e6c6f636b656460207768696368206c6f6f7073206f76657220604c65646765722e756e6c6f636b696e67602c207768696368206973f020696e6469726563746c7920757365722d636f6e74726f6c6c65642e20536565205b60756e626f6e64605d20666f72206d6f72652064657461696c2e75012d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732c20796574207468652073697a65206f6620776869636820636f756c64206265206c61726765206261736564206f6e20606c6564676572602ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e3c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0501436f6d706c6578697479204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2072656d6f76651c5570646174653a21012d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c204c6f636b732c205b4f726967696e204163636f756e745da42d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c6564676572144b696c6c3a41012d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c20426f6e6465642c20536c617368696e67205370616e732c205b4f726967696e4420204163636f756e745d2c204c6f636b734d012d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c6420205b4f726967696e204163636f756e745d2c204c6f636b73702d2057726974657320456163683a205370616e536c617368202a205309014e4f54453a2057656967687420616e6e6f746174696f6e20697320746865206b696c6c207363656e6172696f2c20776520726566756e64206f74686572776973652e2c23203c2f7765696768743e2076616c69646174650401147072656673210601702f2ac2ab2a2f2056616c696461746f725072656673202f2ac2bb2a2f000444e44465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e2c2d2d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a8c2d20526561643a2045726120456c656374696f6e205374617475732c204c65646765727c2d2057726974653a204e6f6d696e61746f72732c2056616c696461746f72732c23203c2f7765696768743e206e6f6d696e61746504011c74617267657473290601d82f2ac2ab2a2f205665633c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e202f2ac2bb2a2f00054c0d014465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e004d01456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e20546869732063616e206f6e6c792062652063616c6c6564207768656e885b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743e2d012d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f662060746172676574736020284e29fc77686963682069732063617070656420617420436f6d7061637441737369676e6d656e74733a3a4c494d495420284d41585f4e4f4d494e4154494f4e53292ed42d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e242d2d2d2d2d2d2d2d2d305765696768743a204f284e29807768657265204e20697320746865206e756d626572206f662074617267657473284442205765696768743ac42d2052656164733a2045726120456c656374696f6e205374617475732c204c65646765722c2043757272656e7420457261802d205772697465733a2056616c696461746f72732c204e6f6d696e61746f72732c23203c2f7765696768743e146368696c6c000644c44465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e502d20436f6e7461696e73206f6e6520726561642ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e202d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a842d20526561643a20457261456c656374696f6e5374617475732c204c65646765727c2d2057726974653a2056616c696461746f72732c204e6f6d696e61746f72732c23203c2f7765696768743e247365745f706179656504011470617965651d0601b42f2ac2ab2a2f2052657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e202f2ac2bb2a2f000740b42852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e242d2d2d2d2d2d2d2d2d382d205765696768743a204f283129302d204442205765696768743a48202020202d20526561643a204c656467657248202020202d2057726974653a2050617965652c23203c2f7765696768743e387365745f636f6e74726f6c6c6572040128636f6e74726f6c6c6572450501c02f2ac2ab2a2f3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365202f2ac2bb2a2f0008408c2852652d297365742074686520636f6e74726f6c6c6572206f6620612073746173682e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e282d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743af02d20526561643a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c6572f42d2057726974653a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c65722c23203c2f7765696768743e4c7365745f76616c696461746f725f636f756e7404010c6e65777d0401442f2ac2ab2a2f20753332202f2ac2bb2a2f00092090536574732074686520696465616c206e756d626572206f662076616c696461746f72732e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e305765696768743a204f2831295857726974653a2056616c696461746f7220436f756e742c23203c2f7765696768743e60696e6372656173655f76616c696461746f725f636f756e740401286164646974696f6e616c7d0401442f2ac2ab2a2f20753332202f2ac2bb2a2f000a1ca8496e6372656d656e74732074686520696465616c206e756d626572206f662076616c696461746f72732e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e8053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e2c23203c2f7765696768743e547363616c655f76616c696461746f725f636f756e74040118666163746f722d0601542f2ac2ab2a2f2050657263656e74202f2ac2bb2a2f000b1cd05363616c652075702074686520696465616c206e756d626572206f662076616c696461746f7273206279206120666163746f722e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e8053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e2c23203c2f7765696768743e686164645f7065726d697373696f6e65645f76616c696461746f720801206964656e746974797801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f000138696e74656e6465645f636f756e74310601642f2ac2ab2a2f204f7074696f6e3c7533323e202f2ac2bb2a2f000c203d01476f7665726e616e636520636f6d6d6974746565206f6e20322f3320726473206d616a6f726974792063616e20696e74726f647563652061206e657720706f74656e7469616c206964656e746974799d01746f2074686520706f6f6c206f66207065726d697373696f6e656420656e7469746965732077686f2063616e2072756e2076616c696461746f72732e205374616b696e67206d6f64756c65207573657320605065726d697373696f6e65644964656e74697479605501746f20656e737572652076616c696461746f7273206861766520636f6d706c65746564204b594220636f6d706c69616e636520616e6420636f6e736964657273207468656d20666f722076616c69646174696f6e2e002c2320417267756d656e7473e82a206f726967696e205265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e882a206964656e746974792056616c696461746f722773204964656e7469747949642e05012a20696e74656e6465645f636f756e74204e6f2e206f662076616c696461746f727320676976656e206964656e7469747920696e74656e647320746f2072756e2e7472656d6f76655f7065726d697373696f6e65645f76616c696461746f720401206964656e746974797801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f000d1ca90152656d6f766520616e206964656e746974792066726f6d2074686520706f6f6c206f66202877616e6e616265292076616c696461746f72206964656e7469746965732e204566666563747320617265206b6e6f776e20696e20746865206e6578742073657373696f6e2e19015374616b696e67206d6f64756c6520636865636b7320605065726d697373696f6e65644964656e746974796020746f20656e737572652076616c696461746f7273206861766560636f6d706c65746564204b594220636f6d706c69616e6365002c2320417267756d656e7473f02a206f726967696e205265717569726564206f726967696e20666f722072656d6f76696e67206120706f74656e7469616c2076616c696461746f722e882a206964656e746974792056616c696461746f722773204964656e7469747949642e7876616c69646174655f6364645f6578706972795f6e6f6d696e61746f727304011c74617267657473e8017c2f2ac2ab2a2f205665633c543a3a4163636f756e7449643e202f2ac2bb2a2f000e28a056616c696461746520746865206e6f6d696e61746f727320434444206578706972792074696d652e00f0496620616e206163636f756e742066726f6d206120676976656e20736574206f662061646472657373206973206e6f6d696e6174696e67207468656ed0636865636b2074686520434444206578706972792074696d65206f6620697420616e64206966206974206973206578706972656431017468656e20746865206163636f756e742073686f756c6420626520756e626f6e64656420616e642072656d6f7665642066726f6d20746865206e6f6d696e6174696e672070726f636573732e0024233c7765696768743e982d20446570656e6473206f6e20706173736564206c697374206f66204163636f756e7449642e29012d20446570656e6473206f6e20746865206e6f2e206f6620636c61696d206973737565727320616e206163636f756e7449642068617320666f722074686520434444206578706972792e28233c2f7765696768743e487365745f636f6d6d697373696f6e5f63617004011c6e65775f636170890101542f2ac2ab2a2f2050657262696c6c202f2ac2bb2a2f000f1421014368616e67657320636f6d6d697373696f6e2072617465207768696368206170706c69657320746f20616c6c2076616c696461746f72732e204f6e6c7920476f7665726e616e6365a8636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e002c2320417267756d656e74738c2a20606e65775f6361706020746865206e657720636f6d6d697373696f6e206361702e587365745f6d696e5f626f6e645f7468726573686f6c640401246e65775f76616c75651801682f2ac2ab2a2f2042616c616e63654f663c543e202f2ac2bb2a2f00101401014368616e676573206d696e20626f6e642076616c756520746f206265207573656420696e2076616c696461746528292e204f6e6c7920476f7665726e616e6365a8636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e002c2320417267756d656e7473742a20606e65775f76616c75656020746865206e6577206d696e696d756d34666f7263655f6e6f5f65726173001124ac466f72636520746865726520746f206265206e6f206e6577206572617320696e646566696e6974656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e3c2d204e6f20617267756d656e74732e382d205765696768743a204f283129442d2057726974653a20466f7263654572612c23203c2f7765696768743e34666f7263655f6e65775f6572610012284901466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f6620746865206e6578742073657373696f6e2e20416674657220746869732c2069742077696c6c2062659c726573657420746f206e6f726d616c20286e6f6e2d666f7263656429206265686176696f75722e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e3c2d204e6f20617267756d656e74732e382d205765696768743a204f283129402d20577269746520466f7263654572612c23203c2f7765696768743e447365745f696e76756c6e657261626c6573040134696e76756c6e657261626c6573e8017c2f2ac2ab2a2f205665633c543a3a4163636f756e7449643e202f2ac2bb2a2f001320c8536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e182d204f285629582d2057726974653a20496e76756c6e657261626c65732c23203c2f7765696768743e34666f7263655f756e7374616b6508011473746173680001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f0001486e756d5f736c617368696e675f7370616e731001442f2ac2ab2a2f20753332202f2ac2bb2a2f0014280901466f72636520612063757272656e74207374616b657220746f206265636f6d6520636f6d706c6574656c7920756e7374616b65642c20696d6d6564696174656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743ee84f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2062652072656d6f766564b452656164733a20426f6e6465642c20536c617368696e67205370616e732c204163636f756e742c204c6f636b7381015772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c204163636f756e742c204c6f636b736857726974657320456163683a205370616e536c617368202a20532c23203c2f7765696768743e50666f7263655f6e65775f6572615f616c776179730015200101466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f662073657373696f6e7320696e646566696e6974656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e382d205765696768743a204f283129442d2057726974653a20466f7263654572612c23203c2f7765696768743e5463616e63656c5f64656665727265645f736c61736808010c6572611001582f2ac2ab2a2f20457261496e646578202f2ac2bb2a2f000134736c6173685f696e6469636573390401582f2ac2ab2a2f205665633c7533323e202f2ac2bb2a2f0016349443616e63656c20656e6163746d656e74206f66206120646566657272656420736c6173682e00b043616e2062652063616c6c6564206279207468652060543a3a536c61736843616e63656c4f726967696e602e000101506172616d65746572733a2065726120616e6420696e6469636573206f662074686520736c617368657320666f7220746861742065726120746f206b696c6c2e002823203c7765696768743e50436f6d706c65786974793a204f2855202b205329b477697468205520756e6170706c69656420736c6173686573207765696768746564207769746820553d31303030d0616e64205320697320746865206e756d626572206f6620736c61736820696e646963657320746f2062652063616e63656c65642e642d20526561643a20556e6170706c69656420536c6173686573682d2057726974653a20556e6170706c69656420536c61736865732c23203c2f7765696768743e387061796f75745f7374616b65727308013c76616c696461746f725f73746173680001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f00010c6572611001582f2ac2ab2a2f20457261496e646578202f2ac2bb2a2f0017640d01506179206f757420616c6c20746865207374616b65727320626568696e6420612073696e676c652076616c696461746f7220666f7220612073696e676c65206572612e0049012d206076616c696461746f725f73746173686020697320746865207374617368206163636f756e74206f66207468652076616c696461746f722e205468656972206e6f6d696e61746f72732c20757020746f2501202060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602c2077696c6c20616c736f207265636569766520746865697220726577617264732e31012d206065726160206d617920626520616e7920657261206265747765656e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e005501546865206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2e20416e79206163636f756e742063616e2063616c6c20746869732066756e6374696f6e2c206576656e206966746974206973206e6f74206f6e65206f6620746865207374616b6572732e00fc546869732063616e206f6e6c792062652063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743efc2d2054696d6520636f6d706c65786974793a206174206d6f7374204f284d61784e6f6d696e61746f72526577617264656450657256616c696461746f72292ec02d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e2c2d2d2d2d2d2d2d2d2d2d2d19014e20697320746865204e756d626572206f66207061796f75747320666f72207468652076616c696461746f722028696e636c7564696e67207468652076616c696461746f72291c5765696768743a842d205265776172642044657374696e6174696f6e205374616b65643a204f284e29c02d205265776172642044657374696e6174696f6e20436f6e74726f6c6c657220284372656174696e67293a204f284e29284442205765696768743a25012d20526561643a20457261456c656374696f6e5374617475732c2043757272656e744572612c20486973746f727944657074682c204572617356616c696461746f725265776172642c29012020202020202020457261735374616b657273436c69707065642c2045726173526577617264506f696e74732c204572617356616c696461746f725072656673202838206974656d73290d012d205265616420456163683a20426f6e6465642c204c65646765722c2050617965652c204c6f636b732c2053797374656d204163636f756e74202835206974656d7329d42d20577269746520456163683a2053797374656d204163636f756e742c204c6f636b732c204c6564676572202833206974656d73292c23203c2f7765696768743e187265626f6e6404011476616c7565c90101682f2ac2ab2a2f2042616c616e63654f663c543e202f2ac2bb2a2f001838dc5265626f6e64206120706f7274696f6e206f6620746865207374617368207363686564756c656420746f20626520756e6c6f636b65642e005101546865206469737061746368206f726967696e206d757374206265207369676e65642062792074686520636f6e74726f6c6c65722c20616e642069742063616e206265206f6e6c792063616c6c6564207768656e885b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ed02d2054696d6520636f6d706c65786974793a204f284c292c207768657265204c20697320756e6c6f636b696e67206368756e6b73902d20426f756e64656420627920604d41585f554e4c4f434b494e475f4348554e4b53602ef02d2053746f72616765206368616e6765733a2043616e277420696e6372656173652073746f726167652c206f6e6c792064656372656173652069742e3c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743afc202020202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c204c6f636b732c205b4f726967696e204163636f756e745db4202020202d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e447365745f686973746f72795f64657074680801446e65775f686973746f72795f64657074687d0401582f2ac2ab2a2f20457261496e646578202f2ac2bb2a2f0001485f6572615f6974656d735f64656c657465647d0401442f2ac2ab2a2f20753332202f2ac2bb2a2f0019542d015365742060486973746f72794465707468602076616c75652e20546869732066756e6374696f6e2077696c6c2064656c65746520616e7920686973746f727920696e666f726d6174696f6e7c7768656e2060486973746f727944657074686020697320726564756365642e002c506172616d65746572733a0d012d20606e65775f686973746f72795f6465707468603a20546865206e657720686973746f727920646570746820796f7520776f756c64206c696b6520746f207365742e45012d20606572615f6974656d735f64656c65746564603a20546865206e756d626572206f66206974656d7320746861742077696c6c2062652064656c6574656420627920746869732064697370617463682e4101202020546869732073686f756c64207265706f727420616c6c207468652073746f72616765206974656d7320746861742077696c6c2062652064656c6574656420627920636c656172696e67206f6c64410120202065726120686973746f72792e204e656564656420746f207265706f727420616e2061636375726174652077656967687420666f72207468652064697370617463682e20547275737465642062799c20202060526f6f746020746f207265706f727420616e206163637572617465206e756d6265722e00504f726967696e206d75737420626520726f6f742e002823203c7765696768743edc2d20453a204e756d626572206f6620686973746f7279206465707468732072656d6f7665642c20692e652e203130202d3e2037203d2033382d205765696768743a204f284529302d204442205765696768743a9c202020202d2052656164733a2043757272656e74204572612c20486973746f72792044657074686c202020202d205772697465733a20486973746f72792044657074682d01202020202d20436c6561722050726566697820456163683a20457261205374616b6572732c204572615374616b657273436c69707065642c204572617356616c696461746f7250726566737d01202020202d2057726974657320456163683a204572617356616c696461746f725265776172642c2045726173526577617264506f696e74732c2045726173546f74616c5374616b652c2045726173537461727453657373696f6e496e6465782c23203c2f7765696768743e28726561705f737461736808011473746173680001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f0001486e756d5f736c617368696e675f7370616e731001442f2ac2ab2a2f20753332202f2ac2bb2a2f001a3c5d0152656d6f766520616c6c20646174612073747275637475726520636f6e6365726e696e672061207374616b65722f7374617368206f6e6365206974732062616c616e636520697320617420746865206d696e696d756d2e5d015468697320697320657373656e7469616c6c79206571756976616c656e7420746f206077697468647261775f756e626f6e64656460206578636570742069742063616e2062652063616c6c656420627920616e796f6e65f4616e6420746865207461726765742060737461736860206d7573742068617665206e6f2066756e6473206c656674206265796f6e64207468652045442e008c546869732063616e2062652063616c6c65642066726f6d20616e79206f726967696e2e00fc2d20607374617368603a20546865207374617368206163636f756e7420746f20726561702e204974732062616c616e6365206d757374206265207a65726f2e002823203c7765696768743e2101436f6d706c65786974793a204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e73206f6e20746865206163636f756e742e284442205765696768743ad42d2052656164733a205374617368204163636f756e742c20426f6e6465642c20536c617368696e67205370616e732c204c6f636b73a1012d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c205374617368204163636f756e742c204c6f636b73702d2057726974657320456163683a205370616e536c617368202a20532c23203c2f7765696768743e607375626d69745f656c656374696f6e5f736f6c7574696f6e14011c77696e6e657273350601842f2ac2ab2a2f205665633c56616c696461746f72496e6465783e202f2ac2bb2a2f00011c636f6d70616374390601802f2ac2ab2a2f20436f6d7061637441737369676e6d656e7473202f2ac2bb2a2f00011473636f72650507016c2f2ac2ab2a2f20456c656374696f6e53636f7265202f2ac2bb2a2f00010c6572611001582f2ac2ab2a2f20457261496e646578202f2ac2bb2a2f00011073697a65090701682f2ac2ab2a2f20456c656374696f6e53697a65202f2ac2bb2a2f001bc4e05375626d697420616e20656c656374696f6e20726573756c7420746f2074686520636861696e2e2049662074686520736f6c7574696f6e3a0030312e2069732076616c69642e1101322e206861732061206265747465722073636f7265207468616e206120706f74656e7469616c6c79206578697374696e6720736f6c7574696f6e206f6e20636861696e2e00807468656e2c2069742077696c6c206265205f7075745f206f6e20636861696e2e00a84120736f6c7574696f6e20636f6e7369737473206f662074776f20706965636573206f6620646174613a00f0312e206077696e6e657273603a206120666c617420766563746f72206f6620616c6c207468652077696e6e657273206f662074686520726f756e642e4d01322e206061737369676e6d656e7473603a2074686520636f6d706163742076657273696f6e206f6620616e2061737369676e6d656e7420766563746f72207468617420656e636f6465732074686520656467652c202020776569676874732e001d01426f7468206f66207768696368206d617920626520636f6d7075746564207573696e67205f70687261676d656e5f2c206f7220616e79206f7468657220616c676f726974686d2e00a44164646974696f6e616c6c792c20746865207375626d6974746572206d7573742070726f766964653a00c42d20546865206073636f7265602074686174207468657920636c61696d20746865697220736f6c7574696f6e206861732e004901426f74682076616c696461746f727320616e64206e6f6d696e61746f72732077696c6c20626520726570726573656e74656420627920696e646963657320696e2074686520736f6c7574696f6e2e205468651901696e64696365732073686f756c6420726573706563742074686520636f72726573706f6e64696e6720747970657320285b6056616c696461746f72496e646578605d20616e642d015b604e6f6d696e61746f72496e646578605d292e204d6f72656f7665722c20746865792073686f756c642062652076616c6964207768656e207573656420746f20696e64657820696e746f4d015b60536e617073686f7456616c696461746f7273605d20616e64205b60536e617073686f744e6f6d696e61746f7273605d2e20416e7920696e76616c696420696e6465782077696c6c206361757365207468655d01736f6c7574696f6e20746f2062652072656a65637465642e2054686573652074776f2073746f72616765206974656d73206172652073657420647572696e672074686520656c656374696f6e2077696e646f7720616e64946d6179206265207573656420746f2064657465726d696e652074686520696e64696365732e005c4120736f6c7574696f6e2069732076616c69642069663a00e0302e204974206973207375626d6974746564207768656e205b60457261456c656374696f6e537461747573605d20697320604f70656e602ef4312e2049747320636c61696d65642073636f726520697320657175616c20746f207468652073636f726520636f6d7075746564206f6e2d636861696e2ea8322e2050726573656e74732074686520636f7272656374206e756d626572206f662077696e6e6572732e5101332e20416c6c20696e6465786573206d7573742062652076616c7565206163636f7264696e6720746f2074686520736e617073686f7420766563746f72732e20416c6c20656467652076616c756573206d7573745901202020616c736f20626520636f727265637420616e642073686f756c64206e6f74206f766572666c6f7720746865206772616e756c6172697479206f662074686520726174696f20747970652028692e652e203235363c2020206f722062696c6c696f6e292e0901342e20466f72206561636820656467652c20616c6c2074617267657473206172652061637475616c6c79206e6f6d696e617465642062792074686520766f7465722e68352e2048617320636f72726563742073656c662d766f7465732e00bc4120736f6c7574696f6e732073636f726520697320636f6e736973746564206f66203320706172616d65746572733a006101312e20606d696e207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d6178696d697a65642e6101322e206073756d207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d696e696d697a65642e3d01332e206073756d207b20737570706f72742e746f74616c5e32207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265982020206d696e696d697a65642028746f20656e73757265206c6573732076617269616e636529002823203c7765696768743e1501546865207472616e73616374696f6e20697320617373756d656420746f20626520746865206c6f6e6765737420706174682c20612062657474657220736f6c7574696f6e2ea020202d20496e697469616c20736f6c7574696f6e20697320616c6d6f7374207468652073616d652e410120202d20576f72736520736f6c7574696f6e20697320726574726163656420696e207072652d64697370617463682d636865636b73207768696368207365747320697473206f776e207765696768742e2c23203c2f7765696768743e847375626d69745f656c656374696f6e5f736f6c7574696f6e5f756e7369676e656414011c77696e6e657273350601842f2ac2ab2a2f205665633c56616c696461746f72496e6465783e202f2ac2bb2a2f00011c636f6d70616374390601802f2ac2ab2a2f20436f6d7061637441737369676e6d656e7473202f2ac2bb2a2f00011473636f72650507016c2f2ac2ab2a2f20456c656374696f6e53636f7265202f2ac2bb2a2f00010c6572611001582f2ac2ab2a2f20457261496e646578202f2ac2bb2a2f00011073697a65090701682f2ac2ab2a2f20456c656374696f6e53697a65202f2ac2bb2a2f001c24bc556e7369676e65642076657273696f6e206f6620607375626d69745f656c656374696f6e5f736f6c7574696f6e602e0059014e6f746520746861742074686973206d757374207061737320746865205b6056616c6964617465556e7369676e6564605d20636865636b207768696368206f6e6c7920616c6c6f7773207472616e73616374696f6e735d0166726f6d20746865206c6f63616c206e6f646520746f20626520696e636c756465642e20496e206f7468657220776f7264732c206f6e6c792074686520626c6f636b20617574686f722063616e20696e636c7564652061647472616e73616374696f6e20696e2074686520626c6f636b2e002823203c7765696768743e84536565205b607375626d69745f656c656374696f6e5f736f6c7574696f6e605d2e2c23203c2f7765696768743e607061796f75745f7374616b6572735f62795f73797374656d08013c76616c696461746f725f73746173680001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f00010c6572611001582f2ac2ab2a2f20457261496e646578202f2ac2bb2a2f001d04210153797374656d2076657273696f6e206f6620607061796f75745f7374616b6572732829602e204f6e6c792062652063616c6c65642062792074686520726f6f74206f726967696e2e6c6368616e67655f736c617368696e675f616c6c6f7765645f666f7204013c736c617368696e675f7377697463688d0101702f2ac2ab2a2f20536c617368696e67537769746368202f2ac2bb2a2f001e14690153776974636820736c617368696e6720737461747573206f6e20746865206261736973206f6620676976656e2060536c617368696e67537769746368602e2043616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473742a206f726967696e202d204163636f756e744964206f6620726f6f742e01012a20736c617368696e675f737769746368202d20537769746368207573656420746f2073657420746865207461726765747320666f7220736c617368696e672eb07570646174655f7065726d697373696f6e65645f76616c696461746f725f696e74656e6465645f636f756e740801206964656e746974797801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f0001486e65775f696e74656e6465645f636f756e741001442f2ac2ab2a2f20753332202f2ac2bb2a2f001f18d05570646174652074686520696e74656e6465642076616c696461746f7220636f756e7420666f72206120676976656e204449442e002c2320417267756d656e747331012a206f726967696e207768696368206d75737420626520746865207265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e842a206964656e7469747920746f2061646420617320612076616c696461746f722ec42a206e65775f696e74656e6465645f636f756e74204e65772076616c7565206f6620696e74656e64656420636f756e742e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e1d06083870616c6c65745f7374616b696e674452657761726444657374696e6174696f6e04244163636f756e74496401000110185374616b656400000014537461736800010028436f6e74726f6c6c65720002001c4163636f756e7404000001244163636f756e744964000300002106083870616c6c65745f7374616b696e673856616c696461746f7250726566730000080128636f6d6d697373696f6e2506011c50657262696c6c00011c626c6f636b656415010110626f6f6c0000250600000689010029060000024505002d060c3473705f61726974686d65746963287065725f7468696e67731c50657263656e74000004000801402f2ac2ab2a2f207538202f2ac2bb2a2f0000310604184f7074696f6e04045401100108104e6f6e6500000010536f6d65040010000001000035060000023903003906083870616c6c65745f7374616b696e6748436f6d7061637441737369676e6d656e74730000400118766f746573313d0600000118766f74657332490600000118766f746573335d0600000118766f74657334690600000118766f74657335750600000118766f74657336810600000118766f746573378d0600000118766f74657338990600000118766f74657339a5060000011c766f7465733130b1060000011c766f7465733131bd060000011c766f7465733132c9060000011c766f7465733133d5060000011c766f7465733134e1060000011c766f7465733135ed060000011c766f7465733136f9060000003d060000024106004106000004087d04450600450600000639030049060000024d06004d060000040c7d0451064506005106000004084506550600550600000659060059060c3473705f61726974686d65746963287065725f7468696e67731850657255313600000400390301442f2ac2ab2a2f20753136202f2ac2bb2a2f00005d0600000261060061060000040c7d04650645060065060000030200000051060069060000026d06006d060000040c7d047106450600710600000303000000510600750600000279060079060000040c7d047d064506007d0600000304000000510600810600000285060085060000040c7d0489064506008906000003050000005106008d0600000291060091060000040c7d04950645060095060000030600000051060099060000029d06009d060000040c7d04a106450600a10600000307000000510600a506000002a90600a9060000040c7d04ad06450600ad0600000308000000510600b106000002b50600b5060000040c7d04b906450600b90600000309000000510600bd06000002c10600c1060000040c7d04c506450600c5060000030a000000510600c906000002cd0600cd060000040c7d04d106450600d1060000030b000000510600d506000002d90600d9060000040c7d04dd06450600dd060000030c000000510600e106000002e50600e5060000040c7d04e906450600e9060000030d000000510600ed06000002f10600f1060000040c7d04f506450600f5060000030e000000510600f906000002fd0600fd060000040c7d04010745060001070000030f0000005106000507084473705f6e706f735f656c656374696f6e7334456c656374696f6e53636f726500000c01346d696e696d616c5f7374616b6518013c457874656e64656442616c616e636500012473756d5f7374616b6518013c457874656e64656442616c616e636500014473756d5f7374616b655f7371756172656418013c457874656e64656442616c616e636500000907083870616c6c65745f7374616b696e6730456c656374696f6e53697a65000008012876616c696461746f72734506013856616c696461746f72496e6465780001286e6f6d696e61746f72737d0401384e6f6d696e61746f72496e64657800000d070c3870616c6c65745f73657373696f6e1870616c6c65741043616c6c040454000108207365745f6b6579730801106b6579731107011c543a3a4b65797300011470726f6f6628011c5665633c75383e000038e453657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b657973602e1d01416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722ec05468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e00d0546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e002823203c7765696768743e11012d20436f6d706c65786974793a20604f283129602e2041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468206f6698202060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642eec2d20446252656164733a20606f726967696e206163636f756e74602c2060543a3a56616c696461746f7249644f66602c20604e6578744b65797360a02d2044625772697465733a20606f726967696e206163636f756e74602c20604e6578744b65797360802d204462526561647320706572206b65792069643a20604b65794f776e657260842d20446257726974657320706572206b65792069643a20604b65794f776e6572602c23203c2f7765696768743e2870757267655f6b657973000140c852656d6f76657320616e792073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c65722e00c05468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e005501546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265205369676e656420616e6420746865206163636f756e74206d757374206265206569746865722062655d01636f6e7665727469626c6520746f20612076616c696461746f72204944207573696e672074686520636861696e2773207479706963616c2061646472657373696e672073797374656d20287468697320757375616c6c7951016d65616e73206265696e67206120636f6e74726f6c6c6572206163636f756e7429206f72206469726563746c7920636f6e7665727469626c6520696e746f20612076616c696461746f722049442028776869636894757375616c6c79206d65616e73206265696e672061207374617368206163636f756e74292e002823203c7765696768743e61012d20436f6d706c65786974793a20604f2831296020696e206e756d626572206f66206b65792074797065732e2041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468a420206f662060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642eec2d20446252656164733a2060543a3a56616c696461746f7249644f66602c20604e6578744b657973602c20606f726967696e206163636f756e7460a02d2044625772697465733a20604e6578744b657973602c20606f726967696e206163636f756e7460842d20446257726974657320706572206b65792069643a20604b65794f776e6572602c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e11070c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d652c53657373696f6e4b657973000010011c6772616e647061a9010109013c2f2ac2ab2a2f204772616e647061202f2ac2bb2a2f206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300011062616265cd0401fc3c2f2ac2ab2a2f2042616265202f2ac2bb2a2f206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000124696d5f6f6e6c696e65b501010d013c2f2ac2ab2a2f20496d4f6e6c696e65202f2ac2bb2a2f206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300014c617574686f726974795f646973636f7665727915070139013c2f2ac2ab2a2f20417574686f72697479446973636f76657279202f2ac2bb2a2f206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a0a5075626c6963000015070c5873705f617574686f726974795f646973636f766572790c617070185075626c696300000400b90101742f2ac2ab2a2f20737232353531393a3a5075626c6963202f2ac2bb2a2f000019070c3870616c6c65745f6772616e6470611870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f661d0701bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f6605050140543a3a4b65794f776e657250726f6f6600001009015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f661d0701bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f6605050140543a3a4b65794f776e657250726f6f6600012409015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e000d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e306e6f74655f7374616c6c656408011464656c6179100138543a3a426c6f636b4e756d62657200016c626573745f66696e616c697a65645f626c6f636b5f6e756d626572100138543a3a426c6f636b4e756d62657200021c19014e6f74652074686174207468652063757272656e7420617574686f7269747920736574206f6620746865204752414e4450412066696e616c697479206761646765742068617325017374616c6c65642e20546869732077696c6c2074726967676572206120666f7263656420617574686f7269747920736574206368616e67652061742074686520626567696e6e696e671d016f6620746865206e6578742073657373696f6e2c20746f20626520656e6163746564206064656c61796020626c6f636b7320616674657220746861742e205468652064656c6179110173686f756c64206265206869676820656e6f75676820746f20736166656c7920617373756d6520746861742074686520626c6f636b207369676e616c6c696e67207468652501666f72636564206368616e67652077696c6c206e6f742062652072652d6f726765642028652e672e203130303020626c6f636b73292e20546865204752414e44504120766f74657273250177696c6c20737461727420746865206e657720617574686f7269747920736574207573696e672074686520676976656e2066696e616c697a656420626c6f636b20617320626173652e584f6e6c792063616c6c61626c6520627920726f6f742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e1d07084c73705f66696e616c6974795f6772616e6470614445717569766f636174696f6e50726f6f660804480124044e0110000801187365745f6964200114536574496400013065717569766f636174696f6e2107014845717569766f636174696f6e3c482c204e3e00002107084c73705f66696e616c6974795f6772616e6470613045717569766f636174696f6e0804480124044e011001081c507265766f7465040025070139016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265766f74653c482c204e3e2c0a417574686f726974795369676e61747572653e00000024507265636f6d6d6974040039070141016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265636f6d6d69743c482c204e3e2c0a417574686f726974795369676e61747572653e000100002507084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401a90104560129070453012d0700100130726f756e645f6e756d62657220010c7536340001206964656e74697479a9010108496400011466697273743507011828562c2053290001187365636f6e643507011828562c20532900002907084066696e616c6974795f6772616e6470611c507265766f74650804480124044e01100008012c7461726765745f68617368240104480001347461726765745f6e756d6265721001044e00002d070c4c73705f66696e616c6974795f6772616e6470610c617070245369676e617475726500000400310701802f2ac2ab2a2f20656432353531393a3a5369676e6174757265202f2ac2bb2a2f000031070c1c73705f636f72651c65643235353139245369676e6174757265000004000d0201205b75383b2036345d000035070000040829072d07003907084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401a9010456013d070453012d0700100130726f756e645f6e756d62657220010c7536340001206964656e74697479a9010108496400011466697273744107011828562c2053290001187365636f6e644107011828562c20532900003d07084066696e616c6974795f6772616e64706124507265636f6d6d69740804480124044e01100008012c7461726765745f68617368240104480001347461726765745f6e756d6265721001044e00004107000004083d072d070045070c4070616c6c65745f696d5f6f6e6c696e651870616c6c65741043616c6c04045400010424686561727462656174080124686561727462656174490701644865617274626561743c543a3a426c6f636b4e756d6265723e0001247369676e61747572655d0701bc3c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e61747572650000242823203c7765696768743e61012d20436f6d706c65786974793a20604f284b202b20452960207768657265204b206973206c656e677468206f6620604b6579736020286865617274626561742e76616c696461746f72735f6c656e2920616e642045206973d820206c656e677468206f6620606865617274626561742e6e6574776f726b5f73746174652e65787465726e616c5f61646472657373608820202d20604f284b29603a206465636f64696e67206f66206c656e67746820604b60ac20202d20604f284529603a206465636f64696e672f656e636f64696e67206f66206c656e6774682060456039012d20446252656164733a2070616c6c65745f73657373696f6e206056616c696461746f7273602c2070616c6c65745f73657373696f6e206043757272656e74496e646578602c20604b657973602c5820206052656365697665644865617274626561747360802d2044625772697465733a2060526563656976656448656172746265617473602c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e4907084070616c6c65745f696d5f6f6e6c696e6524486561727462656174042c426c6f636b4e756d626572011000140130626c6f636b5f6e756d62657210012c426c6f636b4e756d6265720001346e6574776f726b5f73746174654d0701484f70617175654e6574776f726b537461746500013473657373696f6e5f696e64657810013053657373696f6e496e64657800013c617574686f726974795f696e64657810012441757468496e64657800013876616c696461746f72735f6c656e10010c75333200004d070c1c73705f636f7265206f6666636861696e484f70617175654e6574776f726b5374617465000008011c706565725f6964510701304f706171756550656572496400014865787465726e616c5f616464726573736573550701505665633c4f70617175654d756c7469616464723e00005107081c73705f636f7265304f70617175655065657249640000040028011c5665633c75383e0000550700000259070059070c1c73705f636f7265206f6666636861696e3c4f70617175654d756c7469616464720000040028011c5665633c75383e00005d07104070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139245369676e617475726500000400610701802f2ac2ab2a2f20737232353531393a3a5369676e6174757265202f2ac2bb2a2f000061070c1c73705f636f72651c73723235353139245369676e6174757265000004000d0201205b75383b2036345d00006507082c70616c6c65745f7375646f1043616c6c040454000110107375646f04011063616c6ce90501982f2ac2ab2a2f20426f783c3c5420617320436f6e6669673e3a3a43616c6c3e202f2ac2bb2a2f000028350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e547375646f5f756e636865636b65645f77656967687408011063616c6ce90501982f2ac2ab2a2f20426f783c3c5420617320436f6e6669673e3a3a43616c6c3e202f2ac2bb2a2f00011c5f7765696768742001502f2ac2ab2a2f20576569676874202f2ac2bb2a2f000128350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e2d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b05375646f207573657220746f20737065636966792074686520776569676874206f66207468652063616c6c2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292ecc2d2054686520776569676874206f6620746869732063616c6c20697320646566696e6564206279207468652063616c6c65722e2c23203c2f7765696768743e1c7365745f6b657904010c6e6577450501c02f2ac2ab2a2f3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365202f2ac2bb2a2f000224710141757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e402d204f6e65204442206368616e67652e2c23203c2f7765696768743e1c7375646f5f617308010c77686f450501c02f2ac2ab2a2f3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365202f2ac2bb2a2f00011063616c6ce90501982f2ac2ab2a2f20426f783c3c5420617320436f6e6669673e3a3a43616c6c3e202f2ac2bb2a2f00032c4d0141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d406120676976656e206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e6907083070616c6c65745f61737365741043616c6c0404540001603c72656769737465725f7469636b65720401187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f00002405015265676973746572732061206e6577207469636b6572206f7220657874656e64732076616c6964697479206f6620616e206578697374696e67207469636b65722e11014e423a205469636b65722076616c696469747920646f6573206e6f742067657420636172727920666f7277617264207768656e2072656e6577696e67207469636b65722e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e782a20607469636b657260207469636b657220746f2072656769737465722e003423205065726d697373696f6e731c2a204173736574586163636570745f7469636b65725f7472616e7366657204011c617574685f69642001442f2ac2ab2a2f20753634202f2ac2bb2a2f00013068416363657074732061207469636b6572207472616e736665722e002d01436f6e73756d65732074686520617574686f72697a6174696f6e2060617574685f6964602028736565206070616c6c65745f6964656e746974793a3a636f6e73756d655f6175746860292e25014e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292ef82a2060617574685f69646020417574686f72697a6174696f6e204944206f66207469636b6572207472616e7366657220617574686f72697a6174696f6e2e00242323204572726f727369012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f696460206973206e6f7420612076616c6964207469636b6574207472616e7366657220617574686f72697a6174696f6e2e007c6163636570745f61737365745f6f776e6572736869705f7472616e7366657204011c617574685f69642001442f2ac2ab2a2f20753634202f2ac2bb2a2f000218ec546869732066756e6374696f6e206973207573656420746f20616363657074206120746f6b656e206f776e657273686970207472616e736665722e25014e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e2d012a2060617574685f69646020417574686f72697a6174696f6e204944206f662074686520746f6b656e206f776e657273686970207472616e7366657220617574686f72697a6174696f6e2e306372656174655f61737365741c01106e616d65f901015c2f2ac2ab2a2f2041737365744e616d65202f2ac2bb2a2f0001187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f000124646976697369626c65150101482f2ac2ab2a2f20626f6f6c202f2ac2bb2a2f00012861737365745f74797065e101015c2f2ac2ab2a2f20417373657454797065202f2ac2bb2a2f00012c6964656e74696669657273e90101882f2ac2ab2a2f205665633c41737365744964656e7469666965723e202f2ac2bb2a2f00013466756e64696e675f726f756e646d0701982f2ac2ab2a2f204f7074696f6e3c46756e64696e67526f756e644e616d653e202f2ac2bb2a2f00012864697361626c655f6975150101482f2ac2ab2a2f20626f6f6c202f2ac2bb2a2f0003682d01496e697469616c697a65732061206e657720736563757269747920746f6b656e2c20776974682074686520696e6974696174696e67206163636f756e7420617320697473206f776e65722e150154686520746f74616c20737570706c792077696c6c20696e697469616c6c79206265207a65726f2e20546f206d696e7420746f6b656e732c2075736520606973737565602e002c2320417267756d656e7473c5012a20606f726967696e60202d20636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e842a20606e616d6560202d20746865206e616d65206f662074686520746f6b656e2eb02a20607469636b657260202d20746865207469636b65722073796d626f6c206f662074686520746f6b656e2e2d012a2060646976697369626c6560202d206120626f6f6c65616e20746f206964656e74696679207468652064697669736962696c69747920737461747573206f662074686520746f6b656e2e802a206061737365745f7479706560202d2074686520617373657420747970652ec02a20606964656e7469666965727360202d206120766563746f72206f66206173736574206964656e746966696572732eb82a206066756e64696e675f726f756e6460202d206e616d65206f66207468652066756e64696e6720726f756e642e4d012a206064697361626c655f697560202d2077686574686572206f72206e6f7420696e766573746f7220756e697175656e65737320656e666f7263656d656e742073686f756c642062652064697361626c65642ec82020546869732063616e6e6f74206265206368616e676564206166746572206372656174696e67207468652061737365742e00242323204572726f7273fc2d2060496e76616c696441737365744964656e7469666965726020696620616e79206f6620606964656e74696669657273602061726520696e76616c69642e51012d20604d61784c656e6774684f6641737365744e616d6545786365656465646020696620606e616d65602773206c656e67746820657863656564732060543a3a41737365744e616d654d61784c656e677468602e55012d206046756e64696e67526f756e644e616d654d61784c656e67746845786365656465646020696620746865206e616d65206f66207468652066756e64696e6720726f756e64206973206c6f6e67657220746861747c60543a3a46756e64696e67526f756e644e616d654d61784c656e677468602ed42d20604173736574416c726561647943726561746564602069662061737365742077617320616c726561647920637265617465642e5d012d20605469636b6572546f6f4c6f6e676020696620607469636b6572602773206c656e6774682069732067726561746572207468616e2060636f6e6669672e6d61785f7469636b65725f6c656e6774686020636861696e28706172616d657465722ea1022d20605469636b65724e6f7441736369696020696620607469636b657260206973206e6f742079657420726567697374657265642c20616e6420636f6e7461696e73206e6f6e2d6173636969207072696e7461626c652063686172616374657273202866726f6d20636f646520333220746f2031323629206f7220616e7920636861726163746572206166746572206669727374206f6363757272656e6365206f6620605c30602e00382323205065726d697373696f6e732c2a20506f7274666f6c696f18667265657a650401187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f00042cbc467265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e00242323204572726f7273c02d2060416c726561647946726f7a656e6020696620607469636b65726020697320616c72656164792066726f7a656e2e003423205065726d697373696f6e731c2a20417373657420756e667265657a650401187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f00052cc4556e667265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722eb02a20607469636b657260202d20746865207469636b6572206f66207468652066726f7a656e20746f6b656e2e00242323204572726f7273b02d20604e6f7446726f7a656e6020696620607469636b657260206973206e6f742066726f7a656e207965742e003423205065726d697373696f6e731c2a2041737365743072656e616d655f61737365740801187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0001106e616d65f901015c2f2ac2ab2a2f2041737365744e616d65202f2ac2bb2a2f0006345852656e616d6573206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e942a20606e616d6560202d20746865206e6577206e616d65206f662074686520746f6b656e2e00242323204572726f727311012d20604d61784c656e6774684f6641737365744e616d65457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e6060543a3a41737365744e616d654d61784c656e677468602e003423205065726d697373696f6e731c2a2041737365741469737375650801187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f000118616d6f756e741801542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f00072ca449737375652c206f72206d696e742c206e657720746f6b656e7320746f207468652063616c6c65722cac7768696368206d75737420626520616e20617574686f72697a65642065787465726e616c206167656e742e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e602a20607469636b657260206f662074686520746f6b656e2e942a2060616d6f756e7460206f6620746f6b656e73207468617420676574206973737565642e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f1872656465656d0801187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f00011476616c75651801542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f00083ccd0152656465656d73206578697374696e6720746f6b656e73206279207265647563696e67207468652062616c616e6365206f66207468652063616c6c657227732064656661756c7420706f7274666f6c696f20616e642074686520746f74616c20737570706c79206f662074686520746f6b656e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e942a206076616c75656020416d6f756e74206f6620746f6b656e7320746f2072656465656d2e002023204572726f727361012d2060556e617574686f72697a6564602049662063616c6c656420627920736f6d656f6e6520776974686f75742074686520617070726f7072696174652065787465726e616c206167656e74207065726d697373696f6e7359012d2060496e76616c69644772616e756c6172697479602049662074686520616d6f756e74206973206e6f7420646976697369626c652062792031305e3620666f72206e6f6e2d646976697369626c6520746f6b656e738d012d2060496e73756666696369656e74506f7274666f6c696f42616c616e636560204966207468652063616c6c657227732064656661756c7420706f7274666f6c696f20646f65736e2774206861766520656e6f75676820667265652062616c616e6365003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f386d616b655f646976697369626c650401187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f00092c944d616b657320616e20696e646976697369626c6520746f6b656e20646976697369626c652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e00242323204572726f7273ec2d20604173736574416c7265616479446976697369626c656020696620607469636b65726020697320616c726561647920646976697369626c652e003423205065726d697373696f6e731c2a204173736574346164645f646f63756d656e7473080110646f63737107016c2f2ac2ab2a2f205665633c446f63756d656e743e202f2ac2bb2a2f0001187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f000a248041646420646f63756d656e747320666f72206120676976656e20746f6b656e2e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2eb82a2060646f63736020446f63756d656e747320746f20626520617474616368656420746f20607469636b6572602e003423205065726d697373696f6e731c2a2041737365744072656d6f76655f646f63756d656e747308010c696473010301742f2ac2ab2a2f205665633c446f63756d656e7449643e202f2ac2bb2a2f0001187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f000b248c52656d6f766520646f63756d656e747320666f72206120676976656e20746f6b656e2e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2ec82a20606964736020446f63756d656e74732069647320746f2062652072656d6f7665642066726f6d20607469636b6572602e003423205065726d697373696f6e731c2a204173736574447365745f66756e64696e675f726f756e640801187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0001106e616d65dd0101782f2ac2ab2a2f2046756e64696e67526f756e644e616d65202f2ac2bb2a2f000c34ac5365747320746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e002c2320417267756d656e747329012a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2ee42a20606e616d6560202d207468652064657369726564206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e00242323204572726f727325012d206046756e64696e67526f756e644e616d654d61784c656e677468457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e7c60543a3a46756e64696e67526f756e644e616d654d61784c656e677468602e003423205065726d697373696f6e731c2a204173736574487570646174655f6964656e746966696572730801187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f00012c6964656e74696669657273e90101882f2ac2ab2a2f205665633c41737365744964656e7469666965723e202f2ac2bb2a2f000d34785570646174657320746865206173736574206964656e746966696572732e002c2320417267756d656e747329012a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e59012a20606964656e7469666965727360202d20746865206173736574206964656e7469666965727320746f206265207570646174656420696e2074686520666f726d206f66206120766563746f72206f66207061697273cc2020206f6620604964656e746966696572547970656020616e64206041737365744964656e746966696572602076616c75652e00242323204572726f727331012d2060496e76616c696441737365744964656e7469666965726020696620606964656e746966696572736020636f6e7461696e7320616e7920696e76616c6964206964656e7469666965722e003423205065726d697373696f6e731c2a20417373657450636c61696d5f636c61737369635f7469636b65720801187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f000148657468657265756d5f7369676e6174757265750701702f2ac2ab2a2f2045636473615369676e6174757265202f2ac2bb2a2f000e38fc436c61696d20612073797374656d61746963616c6c7920726573657276656420506f6c796d61746820436c61737369632028504d432920607469636b657260ac616e64207472616e7366657220697420746f2074686520606f726967696e602773206964656e746974792e003d01546f2076657269667920746861742074686520606f726967696e6020697320696e20636f6e74726f6c206f662074686520457468657265756d206163636f756e74206f6e2074686520626f6f6b732c1101616e2060657468657265756d5f7369676e61747572656020636f6e7461696e696e672074686520606f726967696e6027732044494420617320746865206d657373616765a86d7573742062652070726f7669646564206279207468617420457468657265756d206163636f756e742e002023204572726f727331012d20604e6f53756368436c61737369635469636b6572602069662074686973206973206e6f7420612073797374656d61746963616c6c7920726573657276656420504d43207469636b65722e51012d20605469636b6572416c7265616479526567697374657265646020696620746865207469636b65722077617320616c726561647920726567697374657265642c20652e672e2c20627920606f726967696e602e1d012d20605469636b6572526567697374726174696f6e457870697265646020696620746865207469636b6572277320726567697374726174696f6e2068617320657870697265642e702d20604261644f726967696e60206966206e6f74207369676e65642e19012d2060496e76616c6964457468657265756d5369676e617475726560206966207468652060657468657265756d5f7369676e617475726560206973206e6f742076616c69642e29012d20604e6f74416e4f776e6572602069662074686520657468657265756d206163636f756e74206973206e6f7420746865206f776e6572206f662074686520504d43207469636b65722e58726573657276655f636c61737369635f7469636b65720c0154636c61737369635f7469636b65725f696d706f72747d0701842f2ac2ab2a2f20436c61737369635469636b6572496d706f7274202f2ac2bb2a2f000130636f6e74726163745f6469647801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f000118636f6e666967810701c42f2ac2ab2a2f205469636b6572526567697374726174696f6e436f6e6669673c543a3a4d6f6d656e743e202f2ac2bb2a2f000f34a052657365727665206120506f6c796d61746820436c61737369632028504d4329207469636b65722e0d014d7573742062652063616c6c656420627920726f6f742c20616e642061737369676e7320746865207469636b657220746f20612073797374656d61746963204449442e002c2320417267756d656e7473782a20606f726967696e60207768696368206d75737420626520726f6f742eec2a2060636c61737369635f7469636b65725f696d706f7274602073706563696669636174696f6e20666f722074686520504d43207469636b65722e5d012a2060636f6e74726163745f6469646020746f207265736572766520746865207469636b657220746f2069662060636c61737369635f7469636b65725f696d706f72742e69735f636f6e74726163746020686f6c64732ebc2a2060636f6e6669676020746f2075736520666f722065787069727920616e64207469636b6572206c656e6774682e002023204572726f727349012a20604173736574416c726561647943726561746564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b65726020776173206372656174656420617320616e2061737365742e61012a20605469636b6572546f6f4c6f6e6760206966207468652060636f6e6669676020636f6e736964657273207468652060636c61737369635f7469636b65725f696d706f72742e7469636b65726020746f6f206c6f6e672e55012a20605469636b6572416c726561647952656769737465726564602069662060636c61737369635f7469636b65725f696d706f72742e7469636b6572602077617320616c726561647920726567697374657265642e4c636f6e74726f6c6c65725f7472616e736665720c01187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f00011476616c75651801542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f00013866726f6d5f706f7274666f6c696fd401642f2ac2ab2a2f20506f7274666f6c696f4964202f2ac2bb2a2f00101c4d01466f726365732061207472616e73666572206f6620746f6b656e2066726f6d206066726f6d5f706f7274666f6c696f6020746f207468652063616c6c657227732064656661756c7420706f7274666f6c696f2e002c2320417267756d656e747355012a20606f726967696e60204d75737420626520616e2065787465726e616c206167656e74207769746820617070726f707269617465207065726d697373696f6e7320666f72206120676976656e207469636b65722e982a20607469636b657260205469636b65722073796d626f6c206f66207468652061737365742ecc2a206076616c7565602020416d6f756e74206f6620746f6b656e73206e65656420746f20666f726365207472616e736665722efc2a206066726f6d5f706f7274666f6c696f602046726f6d2077686f6d20706f7274666f6c696f20746f6b656e732067657473207472616e736665727265642e6872656769737465725f637573746f6d5f61737365745f7479706504010874792801542f2ac2ab2a2f205665633c75383e202f2ac2bb2a2f00112478526567697374657273206120637573746f6d20617373657420747970652e00d05468652070726f766964656420607479602077696c6c20626520626f756e6420746f20616e20494420696e2073746f726167652ebc5468652049442063616e207468656e206265207573656420696e20604173736574547970653a3a437573746f6d602e250153686f756c6420746865206074796020616c726561647920657869737420696e2073746f726167652c206e6f207365636f6e642049442069732061737369676e656420746f2069742e002c2320417267756d656e7473902a20606f726967696e602077686f2063616c6c6564207468652065787472696e7369632ef02a206074796020636f6e7461696e732074686520737472696e6720726570726573656e746174696f6e206f662074686520617373657420747970652e746372656174655f61737365745f776974685f637573746f6d5f747970651c01106e616d65f901015c2f2ac2ab2a2f2041737365744e616d65202f2ac2bb2a2f0001187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f000124646976697369626c65150101482f2ac2ab2a2f20626f6f6c202f2ac2bb2a2f000144637573746f6d5f61737365745f747970652801542f2ac2ab2a2f205665633c75383e202f2ac2bb2a2f00012c6964656e74696669657273e90101882f2ac2ab2a2f205665633c41737365744964656e7469666965723e202f2ac2bb2a2f00013466756e64696e675f726f756e646d0701982f2ac2ab2a2f204f7074696f6e3c46756e64696e67526f756e644e616d653e202f2ac2bb2a2f00012864697361626c655f6975150101482f2ac2ab2a2f20626f6f6c202f2ac2bb2a2f0012042d015574696c6974792065787472696e73696320746f20626174636820606372656174655f61737365746020616e64206072656769737465725f637573746f6d5f61737365745f74797065602e487365745f61737365745f6d657461646174611001187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f00010c6b6579850701782f2ac2ab2a2f2041737365744d657461646174614b6579202f2ac2bb2a2f00011476616c7565310201802f2ac2ab2a2f2041737365744d6574616461746156616c7565202f2ac2bb2a2f00011864657461696c350201e42f2ac2ab2a2f204f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e3e202f2ac2bb2a2f00134464536574206173736574206d657461646174612076616c75652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e542a20606b657960204d65746164617461206b65792e642a206076616c756560204d657461646174612076616c75652e09012a206064657461696c7360204f7074696f6e616c204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f727315012a206041737365744d657461646174614b657949734d697373696e676020696620746865206d657461646174612074797065206b657920646f65736e27742065786973742e25012a206041737365744d6574616461746156616c756549734c6f636b65646020696620746865206d657461646174612076616c756520666f7220606b657960206973206c6f636b65642e65012a206041737365744d6574616461746156616c75654d61784c656e67746845786365656465646020696620746865206d657461646174612076616c7565206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a204173736574687365745f61737365745f6d657461646174615f64657461696c730c01187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f00010c6b6579850701782f2ac2ab2a2f2041737365744d657461646174614b6579202f2ac2bb2a2f00011864657461696c390201c42f2ac2ab2a2f2041737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e202f2ac2bb2a2f00143cdc536574206173736574206d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e542a20606b657960204d65746164617461206b65792ee42a206064657461696c7360204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f727315012a206041737365744d657461646174614b657949734d697373696e676020696620746865206d657461646174612074797065206b657920646f65736e27742065786973742e25012a206041737365744d6574616461746156616c756549734c6f636b65646020696620746865206d657461646174612076616c756520666f7220606b657960206973206c6f636b65642e003423205065726d697373696f6e731c2a204167656e741c2a2041737365749472656769737465725f616e645f7365745f6c6f63616c5f61737365745f6d657461646174611401187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0001106e616d654102017c2f2ac2ab2a2f2041737365744d657461646174614e616d65202f2ac2bb2a2f000110737065634902017c2f2ac2ab2a2f2041737365744d6574616461746153706563202f2ac2bb2a2f00011476616c7565310201802f2ac2ab2a2f2041737365744d6574616461746156616c7565202f2ac2bb2a2f00011864657461696c350201e42f2ac2ab2a2f204f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e3e202f2ac2bb2a2f00154c9c52656769737465727320616e6420736574206c6f63616c206173736574206d657461646174612e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e642a206076616c756560204d657461646174612076616c75652e09012a206064657461696c7360204f7074696f6e616c204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f7273a1012a206041737365744d657461646174614c6f63616c4b6579416c7265616479457869737473602069662061206c6f63616c206d657461646174612074797065207769746820606e616d656020616c72656164792065786973747320666f7220607469636b6572602e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e65012a206041737365744d6574616461746156616c75654d61784c656e67746845786365656465646020696620746865206d657461646174612076616c7565206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a2041737365748872656769737465725f61737365745f6d657461646174615f6c6f63616c5f747970650c01187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0001106e616d654102017c2f2ac2ab2a2f2041737365744d657461646174614e616d65202f2ac2bb2a2f000110737065634902017c2f2ac2ab2a2f2041737365744d6574616461746153706563202f2ac2bb2a2f00164090526567697374657273206173736574206d65746164617461206c6f63616c20747970652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e002023204572726f7273a1012a206041737365744d657461646174614c6f63616c4b6579416c7265616479457869737473602069662061206c6f63616c206d657461646174612074797065207769746820606e616d656020616c72656164792065786973747320666f7220607469636b6572602e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a2041737365748c72656769737465725f61737365745f6d657461646174615f676c6f62616c5f747970650801106e616d654102017c2f2ac2ab2a2f2041737365744d657461646174614e616d65202f2ac2bb2a2f000110737065634902017c2f2ac2ab2a2f2041737365744d6574616461746153706563202f2ac2bb2a2f00172c94526567697374657273206173736574206d6574616461746120676c6f62616c20747970652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e002023204572726f727371012a206041737365744d65746164617461476c6f62616c4b6579416c726561647945786973747360206966206120676c6f6261206d657461646174612074797065207769746820606e616d656020616c7265616479206578697374732e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e6d0704184f7074696f6e04045401dd010108104e6f6e6500000010536f6d650400dd010000010000710700000201020075070c4c706f6c796d6573685f7072696d69746976657320657468657265756d3845636473615369676e617475726500000400790701205b75383b2036355d000079070000034100000008007d07083070616c6c65745f61737365744c436c61737369635469636b6572496d706f727400001001246574685f6f776e65722d02013c457468657265756d416464726573730001187469636b65729c01185469636b657200012c69735f636f6e747261637415010110626f6f6c00012869735f6372656174656415010110626f6f6c00008107083070616c6c65745f6173736574605469636b6572526567697374726174696f6e436f6e6669670404550120000801446d61785f7469636b65725f6c656e677468080108753800014c726567697374726174696f6e5f6c656e677468f001244f7074696f6e3c553e000085070c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614041737365744d657461646174614b657900010818476c6f62616c04006102015841737365744d65746164617461476c6f62616c4b6579000000144c6f63616c04004502015441737365744d657461646174614c6f63616c4b65790001000089070c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e1043616c6c04045400011428646973747269627574651c011463615f69646d0201482f2ac2ab2a2f2043414964202f2ac2bb2a2f000124706f7274666f6c696f8d0701942f2ac2ab2a2f204f7074696f6e3c506f7274666f6c696f4e756d6265723e202f2ac2bb2a2f00012063757272656e63799c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0001247065725f73686172651801542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f000118616d6f756e741801542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f0001287061796d656e745f61742001502f2ac2ab2a2f204d6f6d656e74202f2ac2bb2a2f000128657870697265735f6174f001702f2ac2ab2a2f204f7074696f6e3c4d6f6d656e743e202f2ac2bb2a2f0000ac2501537461727420616e64206174746163682061206361706974616c20646973747269627574696f6e2c20746f20746865204341206964656e746966696564206279206063615f6964602c6501776974682060616d6f756e74602066756e647320696e206063757272656e6379602077697468647261776e2066726f6d2060706f7274666f6c696f602062656c6f6e67696e6720746f20606f726967696e602773204449442e00290154686520646973747269627574696f6e2077696c6c20636f6d6d656e636520617420607061796d656e745f61746020616e64206578706972652061742060657870697265735f6174602cc869662070726f76696465642c206f7220696620604e6f6e65602c207468656e2074686572652773206e6f206578706972792e0025015468652066756e64732077696c6c206265206c6f636b656420696e2060706f7274666f6c696f602066726f6d207768656e206064697374726962757465602069732063616c6c65642e35015768656e2074686572652773206e6f206578706972792c20736f6d652066756e6473206d6179206265206c6f636b656420696e646566696e6974656c7920696e2060706f7274666f6c696f602c150164756520746f20636c61696d616e7473206e6f74207769746864726177696e67206f72206e6f2062656e6566697473206265696e672070757368656420746f207468656d2e2901466f7220696e646976697369626c652063757272656e636965732c20756e6c6f636b656420616d6f756e74732c206f66206c657373207468616e206f6e652077686f6c6520756e69742ca877696c6c206e6f74206265207472616e7366657261626c652066726f6d2060706f7274666f6c696f602e4d01486f77657665722c20696620776520696d6167696e6520746861742075736572732060416c6963656020616e642060426f626020626f74682061726520656e7469746c656420746f20312e3520756e6974732c5101616e64206f6e6c7920726563656976652060316020756e69747320656163682c207468656e2060302e35202b20302e35203d20316020756e69747320617265206c65667420696e2060706f7274666f6c696f602c6c7768696368206973206e6f77207472616e736665727261626c652e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e01012d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e59012d2060706f7274666f6c696f60207370656369666965732074686520706f7274666f6c696f206e756d626572206f6620746865206167656e7420746f20646973747269627574652060616d6f756e74602066726f6d2ef42d206063757272656e63796020746f20776974686472617720616e6420646973747269627574652066726f6d207468652060706f7274666f6c696f602ef82d20607065725f73686172656020616d6f756e74206f66206063757272656e63796020746f20776974686472617720616e6420646973747269627574652e25012020205370656369666965642061732061207065722d6d696c6c696f6e2c20692e652e206031202f2031305e36607468206f66206f6e65206063757272656e63796020746f6b656e2ef02d2060616d6f756e7460206f66206063757272656e63796020746f20776974686472617720616e642064697374726962757465206174206d6f73742e19012d20607061796d656e745f61746020737065636966696573207768656e2062656e6566697473206d617920666972737420626520707573686564206f7220636c61696d65642e29012d2060657870697265735f617460207370656369666965732c2069662070726f76696465642c207768656e2072656d61696e696e672062656e65666974732061726520666f726665697490202020616e64206d6179206265207265636c61696d656420627920606f726967696e602e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602efc2d20604578706972794265666f72655061796d656e74602069662060657870697265735f61742e756e777261702829203c3d207061796d656e745f6174602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ea82d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652ee82d20605265636f72644461746541667465725374617274602069662043412773207265636f72642064617465203e207061796d656e745f61742e31012d2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f662060706f7274666f6c696f602e55012d2060496e73756666696369656e74506f7274666f6c696f42616c616e6365602069662060706f7274666f6c696f6020686173206c657373207468616e2060616d6f756e7460206f66206063757272656e6379602e01012d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e45012d206043414e6f7442656e656669746020696620746865204341206973206e6f74206f66206b696e64205072656469637461626c6542656e656669742f556e7072656469637461626c6542656e65666974d42d2060446973747269627574696f6e416d6f756e7449735a65726f60206966207468652060616d6f756e7460206973207a65726f2ee82d2060446973747269627574696f6e506572536861726549735a65726f602069662074686520607065725f736861726560206973207a65726f2e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f14636c61696d04011463615f69646d0201482f2ac2ab2a2f2043414964202f2ac2bb2a2f00015c0101436c61696d20612062656e65666974206f6620746865206361706974616c20646973747269627574696f6e20617474616368656420746f206063615f6964602e00a8546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5901506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e001101416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e39014d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c98746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e0030232320417267756d656e747345012d20606f726967696e60207768696368206d757374206265206120686f6c646572206f662074686520617373657420616e6420656c696769626c6520666f722074686520646973747269627574696f6e2e01012d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e002023204572726f727325012d2060486f6c646572416c7265616479506169646020696620606f726967696e602773204449442068617320616c7265616479207265636569766564206974732062656e656669742e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec42d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee42d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef42d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e35012d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e35012d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e21012d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e30707573685f62656e6566697408011463615f69646d0201482f2ac2ab2a2f2043414964202f2ac2bb2a2f000118686f6c6465727801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f000260f8507573682062656e65666974206f6620616e206f6e676f696e6720646973747269627574696f6e20746f2074686520676976656e2060686f6c646572602e00a8546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5901506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e001101416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e39014d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c98746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e39012d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e7320746f20707573682062656e656669747320666f722e7c2d2060686f6c6465726020746f20707573682062656e656669747320746f2e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec42d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee42d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412edc2d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f74207461726765742060686f6c646572602e35012d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e35012d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e21012d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e1c7265636c61696d04011463615f69646d0201482f2ac2ab2a2f2043414964202f2ac2bb2a2f00032c90417373756d696e67206120646973747269627574696f6e2068617320657870697265642ce4756e6c6f636b207468652072656d61696e696e6720616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e0030232320417267756d656e747345012d20606f726967696e60207768696368206d757374206265207468652063726561746f72206f6620746865206361706974616c20646973747269627574696f6e207469656420746f206063615f6964602e1d012d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e20746f207265636c61696d20666f722e002023204572726f727319012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602e2d012d2060416c72656164795265636c61696d65646020696620746869732066756e6374696f6e2068617320616c7265616479206265656e2063616c6c6564207375636365737366756c6c792e842d20604e6f74457870697265646020696620606e6f77203c20657870697279602e4c72656d6f76655f646973747269627574696f6e04011463615f69646d0201482f2ac2ab2a2f2043414964202f2ac2bb2a2f00042cbc52656d6f766573206120646973747269627574696f6e2074686174206861736e27742073746172746564207965742cdc756e6c6f636b696e67207468652066756c6c20616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e49012d206063615f696460206964656e7469666965732074686520434120776974682061206e6f742d7965742d73746172746564206361706974616c20646973747269627574696f6e20746f2072656d6f76652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ebc2d2060446973747269627574696f6e537461727465646020696620607061796d656e745f6174203c3d206e6f77602e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e8d0704184f7074696f6e04045401dc0108104e6f6e6500000010536f6d650400dc000001000091070c3070616c6c65745f617373657428636865636b706f696e741043616c6c040454000110446372656174655f636865636b706f696e740401187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f000024c04372656174657320612073696e676c6520636865636b706f696e74206174207468652063757272656e742074696d652e002c2320417267756d656e74732d012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602ea02d20607469636b65726020746f206372656174652074686520636865636b706f696e7420666f722e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e0d012d2060436f756e7465724f766572666c6f77602069662074686520746f74616c20636865636b706f696e7420636f756e74657220776f756c64206f766572666c6f772e707365745f7363686564756c65735f6d61785f636f6d706c65786974790401386d61785f636f6d706c65786974792001442f2ac2ab2a2f20753634202f2ac2bb2a2f00012459015365747320746865206d617820636f6d706c6578697479206f662061207363686564756c652073657420666f7220616e20617262697472617279207469636b657220746f20606d61785f636f6d706c6578697479602eb8546865206e6577206d6178696d756d206973206e6f7420656e666f7263656420726574726f6163746976656c792cb4616e64206f6e6c79206170706c696573206f6e6365206e6577207363686564756c657320617265206d6164652e00a84d7573742062652063616c6c6564206173206120504950202872657175697265732022726f6f7422292e002c2320417267756d656e7473782d20606f726967696e602069732074686520726f6f74206f726967696e2e09012d20606d61785f636f6d706c65786974796020616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365742e3c6372656174655f7363686564756c650801187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0001207363686564756c65950701682f2ac2ab2a2f205363686564756c6553706563202f2ac2bb2a2f00024ca4437265617465732061207363686564756c652067656e65726174696e6720636865636b706f696e7473d4696e20746865206675747572652061742065697468657220612066697865642074696d65206f7220617420696e74657276616c732e000901546865207363686564756c6520737461727473206f7574207769746820607374726f6e675f7265665f636f756e74287363686564756c655f696429203c2d2030602e002c2320417267756d656e747321012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e982d20607469636b65726020746f2063726561746520746865207363686564756c6520666f722eb02d20607363686564756c656020746861742077696c6c2067656e657261746520636865636b706f696e74732e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e0d012d20605363686564756c654475726174696f6e546f6f53686f72746020696620746865207363686564756c65206475726174696f6e20697320746f6f2073686f72742e21012d2060496e73756666696369656e744163636f756e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c64206e6f7420626520636861726765642e4d012d2060436f756e7465724f766572666c6f776020696620746865207363686564756c65204944206f7220746f74616c20636865636b706f696e7420636f756e7465727320776f756c64206f766572666c6f772e5d012d20604661696c6564546f436f6d707574654e657874436865636b706f696e746020696620746865206e65787420636865636b706f696e7420666f7220607363686564756c656020697320696e2074686520706173742e003423205065726d697373696f6e731c2a2041737365743c72656d6f76655f7363686564756c650801187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0001086964990201602f2ac2ab2a2f205363686564756c654964202f2ac2bb2a2f000338fc52656d6f7665732074686520636865636b706f696e74207363686564756c65206f6620616e206173736574206964656e74696669656420627920606964602e002c2320417267756d656e747321012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e9c2d20607469636b65726020746f2072656d6f766520746865207363686564756c652066726f6d2e09012d2060696460206f6620746865207363686564756c652c207768656e2069742077617320637265617465642062792060637265617465645f7363686564756c65602e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e41012d20604e6f436865636b706f696e745363686564756c6560206966206069646020646f6573206e6f74206964656e746966792061207363686564756c6520666f72207468697320607469636b6572602ef42d20605363686564756c654e6f7452656d6f7661626c656020696620606964602065786973747320627574206973206e6f742072656d6f7661626c652e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e95070c3070616c6c65745f617373657428636865636b706f696e74305363686564756c655370656300000c01147374617274f001384f7074696f6e3c4d6f6d656e743e000118706572696f649102013843616c656e646172506572696f6400012472656d61696e696e6710010c75333200009907086470616c6c65745f636f6d706c69616e63655f6d616e616765721043616c6c040454000124686164645f636f6d706c69616e63655f726571756972656d656e740c01187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f00014473656e6465725f636f6e646974696f6e73a50201702f2ac2ab2a2f205665633c436f6e646974696f6e3e202f2ac2bb2a2f00014c72656365697665725f636f6e646974696f6e73a50201702f2ac2ab2a2f205665633c436f6e646974696f6e3e202f2ac2bb2a2f00002c050141646473206120636f6d706c69616e636520726571756972656d656e7420746f20616e206173736574277320636f6d706c69616e6365206279207469636b65722ef849662074686520636f6d706c69616e636520726571756972656d656e742069732061206475706c69636174652c20697420646f6573206e6f7468696e672e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574c42a2073656e6465725f636f6e646974696f6e73202d2053656e646572207472616e7366657220636f6e646974696f6e732ed42a2072656365697665725f636f6e646974696f6e73202d205265636569766572207472616e7366657220636f6e646974696f6e732e003423205065726d697373696f6e731c2a2041737365747472656d6f76655f636f6d706c69616e63655f726571756972656d656e740801187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f00010869641001442f2ac2ab2a2f20753332202f2ac2bb2a2f000124f052656d6f766573206120636f6d706c69616e636520726571756972656d656e742066726f6d20616e206173736574277320636f6d706c69616e63652e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574f02a206964202d20436f6d706c69616e636520726571756972656d656e74206964207768696368206973206e65656420746f2062652072656d6f766564003423205065726d697373696f6e731c2a204173736574607265706c6163655f61737365745f636f6d706c69616e63650801187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f00014061737365745f636f6d706c69616e6365cd0201a02f2ac2ab2a2f205665633c436f6d706c69616e6365526571756972656d656e743e202f2ac2bb2a2f00023cfc5265706c6163657320616e206173736574277320636f6d706c69616e6365206279207469636b657220776974682061206e657720636f6d706c69616e63652e00fc436f6d706c69616e636520726571756972656d656e74732077696c6c20626520736f727465642028617363656e64696e6720627920696429206265666f72658c7265706c6163696e67207468652063757272656e7420726571756972656d656e74732e002c2320417267756d656e7473782a20607469636b657260202d20746865206173736574207469636b65722cbc2a206061737365745f636f6d706c69616e6365202d20746865206e657720617373657420636f6d706c69616e63652e002023204572726f7273f02a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722eb1012a20604475706c69636174654173736574436f6d706c69616e636560206966206061737365745f636f6d706c69616e63656020636f6e7461696e73206d756c7469706c6520656e74726965732077697468207468652073616d652060726571756972656d656e745f6964602e003423205065726d697373696f6e731c2a2041737365745872657365745f61737365745f636f6d706c69616e63650401187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0003207452656d6f76657320616e206173736574277320636f6d706c69616e6365002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a2041737365745870617573655f61737365745f636f6d706c69616e63650401187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f00042011015061757365732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a2041737365745c726573756d655f61737365745f636f6d706c69616e63650401187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0005201501526573756d65732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a204173736574806164645f64656661756c745f747275737465645f636c61696d5f6973737565720801187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f000118697373756572bd02016c2f2ac2ab2a2f2054727573746564497373756572202f2ac2bb2a2f000624f84164647320616e6f746865722064656661756c74207472757374656420636c61696d2069737375657220617420746865207469636b6572206c6576656c2e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742ec82a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e003423205065726d697373696f6e731c2a2041737365748c72656d6f76655f64656661756c745f747275737465645f636c61696d5f6973737565720801187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0001186973737565727801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f000724750152656d6f7665732074686520676976656e2060697373756572602066726f6d2074686520736574206f662064656661756c74207472757374656420636c61696d206973737565727320617420746865207469636b6572206c6576656c2e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742ec82a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e003423205065726d697373696f6e731c2a204173736574746368616e67655f636f6d706c69616e63655f726571756972656d656e740801187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f00011c6e65775f726571a102018c2f2ac2ab2a2f20436f6d706c69616e6365526571756972656d656e74202f2ac2bb2a2f000824f04d6f6469667920616e206578697374696e6720636f6d706c69616e636520726571756972656d656e74206f66206120676976656e207469636b65722e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742e8c2a206e65775f726571202d20436f6d706c69616e636520726571756972656d656e742e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e9d07086070616c6c65745f636f72706f726174655f616374696f6e731043616c6c040454000124587365745f6d61785f64657461696c735f6c656e6774680401186c656e6774681001442f2ac2ab2a2f20753332202f2ac2bb2a2f000008d053657420746865206d617820606c656e67746860206f66206064657461696c736020696e207465726d73206f662062797465732e744d6179206f6e6c792062652063616c6c6564207669612061205049502e4c7365745f64656661756c745f746172676574730801187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f00011c74617267657473d50201782f2ac2ab2a2f205461726765744964656e746974696573202f2ac2bb2a2f000134cc536574207468652064656661756c7420434120605461726765744964656e7469746965736020746f206074617267657473602e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ee42d20607469636b65726020666f72207768696368207468652064656661756c74206964656e74697469657320617265206368616e67696e672ecc2d20607461726765747360207468652064656661756c7420746172676574206964656e74697469657320666f7220612043412e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e31012d2060546f6f4d616e79546172676574496473602069662060746172676574732e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e003423205065726d697373696f6e731c2a2041737365746c7365745f64656661756c745f77697468686f6c64696e675f7461780801187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f00010c746178790201442f2ac2ab2a2f20546178202f2ac2bb2a2f0002303d01536574207468652064656661756c742077697468686f6c64696e672074617820666f7220616c6c204449447320616e64204341732072656c6576616e7420746f207468697320607469636b6572602e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ec82d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2e05012d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e003423205065726d697373696f6e731c2a2041737365745c7365745f6469645f77697468686f6c64696e675f7461780c01187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f00012474617865645f6469647801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f00010c746178dd0201642f2ac2ab2a2f204f7074696f6e3c5461783e202f2ac2bb2a2f000340f4536574207468652077697468686f6c64696e6720746178206f6620607469636b65726020666f72206074617865645f6469646020746f2060746178602e810149662060536f6d652874617829602c2074686973206f7665727269646573207468652064656661756c742077697468686f6c64696e6720746178206f6620607469636b65726020746f20607461786020666f72206074617865645f646964602efc4f74686572776973652c20696620604e6f6e65602c207468652064656661756c742077697468686f6c64696e67207461782077696c6c20626520757365642e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ec82d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2ee42d206074617865645f6469646020746861742077696c6c2068617665206974732077697468686f6c64696e672074617820757064617465642e05012d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e81012d2060546f6f4d616e794469645461786573602069662060536f6d6528746178296020616e6420616464696e6720746865206f7665727269646520776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e003423205065726d697373696f6e731c2a20417373657464696e6974696174655f636f72706f726174655f616374696f6e2001187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0001106b696e64e50201502f2ac2ab2a2f2043414b696e64202f2ac2bb2a2f0001246465636c5f646174652001502f2ac2ab2a2f204d6f6d656e74202f2ac2bb2a2f00012c7265636f72645f64617465a10701902f2ac2ab2a2f204f7074696f6e3c5265636f726444617465537065633e202f2ac2bb2a2f00011c64657461696c73fd02015c2f2ac2ab2a2f20434144657461696c73202f2ac2bb2a2f00011c74617267657473a90701982f2ac2ab2a2f204f7074696f6e3c5461726765744964656e7469746965733e202f2ac2bb2a2f00015c64656661756c745f77697468686f6c64696e675f746178dd0201642f2ac2ab2a2f204f7074696f6e3c5461783e202f2ac2bb2a2f00013c77697468686f6c64696e675f746178ad0701b02f2ac2ab2a2f204f7074696f6e3c5665633c284964656e7469747949642c20546178293e3e202f2ac2bb2a2f0004784901496e69746961746573206120434120666f7220607469636b657260206f6620606b696e64602077697468206064657461696c736020616e64206f746865722070726f766964656420617267756d656e74732e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732e8c2d20607469636b657260207468617420746865204341206973206d61646520666f722e7c2d20606b696e6460206f66204341206265696e6720696e697469617465642e982d20606465636c5f6461746560206f66204341206272696e6720696e697469616c697a65642ef02d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f6620746869732043412e610120202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e4d012d206064657461696c7360206f662074686520434120696e20667265652d7465787420666f726d2c20757020746f2061206365727461696e206e756d626572206f6620627974657320696e206c656e6774682ef42d206074617267657473602c20696620616e792c20776869636820746869732043412069732072656c6576616e742f697272656c6576616e7420746f2e49012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f7461726765747360292e5d012d206064656661756c745f77697468686f6c64696e675f746178602c20696620616e792c206973207468652064656661756c742077697468686f6c64696e672074617820746f2075736520666f7220746869732043412e69012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f77697468686f6c64696e675f74617860292e21012d206077697468686f6c64696e675f746178602c20696620616e792c2070726f7669646573207065722d4449442077697468686f6c64696e6720746178206f76657272696465732e59012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f6469645f77697468686f6c64696e675f74617860292e002023204572726f72731d012d206044657461696c73546f6f4c6f6e6760206966206064657461696c732e6c656e28296020676f6573206265796f6e6420606d61785f64657461696c735f6c656e677468602e25012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e69012d2060436f756e7465724f766572666c6f776020696e2074686520756e6c696b656c79206576656e74207468617420736f206d616e79204341732077657265206372656174656420666f72207468697320607469636b6572602cf820207468617420696e7465676572206f766572666c6f7720776f756c642068617665206f63637572656420696620696e737465616420616c6c6f7765642e75012d2060546f6f4d616e79446964546178657360206966206077697468686f6c64696e675f7461782e756e7772617028292e6c656e28296020776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e01012d20604475706c69636174654469645461786020696620612044494420697320696e636c75646564206d6f7265207468616e206f6e636520696e20607774602e55012d2060546f6f4d616e79546172676574496473602069662060746172676574732e756e7772617028292e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e01012d20604465636c44617465496e4675747572656020696620746865206465636c61726174696f6e2064617465206973206e6f7420696e2074686520706173742e51012d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e003423205065726d697373696f6e731c2a2041737365742c6c696e6b5f63615f646f6308010869646d0201482f2ac2ab2a2f2043414964202f2ac2bb2a2f000110646f6373010301742f2ac2ab2a2f205665633c446f63756d656e7449643e202f2ac2bb2a2f000548ac4c696e6b2074686520676976656e204341206069646020746f2074686520676976656e2060646f6373602ef4416e792070726576696f7573206c696e6b7320666f7220746865204341206172652072656d6f76656420696e206661766f72206f662060646f6373602e00550154686520776f726b666c6f77206865726520697320746f206164642074686520646f63756d656e747320616e6420696e6974696174696e672074686520434120696e20616e79206f7264657220646573697265642ec44f6e636520626f74682065786973742c20746865792063616e206e6f77206265206c696e6b656420746f6765746865722e0030232320417267756d656e747351012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206069642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732ea82d2060696460206f662074686520434120746f206173736f636961746520776974682060646f6373602eb02d2060646f63736020746f206173736f6369617465207769746820746865204341207769746820606964602e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e19012d20604e6f53756368446f636020696620616e79206f662060646f63736020646f6573206e6f74206964656e7469667920616e206578697374696e6720646f63756d656e742e003423205065726d697373696f6e731c2a2041737365742472656d6f76655f636104011463615f69646d0201482f2ac2ab2a2f2043414964202f2ac2bb2a2f0006489452656d6f76657320746865204341206964656e746966696564206279206063615f6964602e00c44173736f63696174656420646174612c207375636820617320646f63756d656e74206c696e6b732c2062616c6c6f74732cac616e64206361706974616c20646973747269627574696f6e732061726520616c736f2072656d6f7665642e00d4416e79207363686564756c65206173736f636961746564207769746820746865207265636f726420646174652077696c6c20736565b0607374726f6e675f7265665f636f756e74287363686564756c655f696429602064656372656d656e7465642e0030232320417267756d656e74735d012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e782d206063615f696460206f662074686520434120746f2072656d6f76652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e003423205065726d697373696f6e731c2a204173736574486368616e67655f7265636f72645f6461746508011463615f69646d0201482f2ac2ab2a2f2043414964202f2ac2bb2a2f00012c7265636f72645f64617465a10701902f2ac2ab2a2f204f7074696f6e3c5265636f726444617465537065633e202f2ac2bb2a2f00073ce04368616e67657320746865207265636f72642064617465206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e74735d012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e742d206063615f696460206f662074686520434120746f20616c7465722eec2d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f66207468652043412e610120202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e51012d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e003423205065726d697373696f6e731c2a204173736574a0696e6974696174655f636f72706f726174655f616374696f6e5f616e645f646973747269627574651c011c63615f61726773b10701a42f2ac2ab2a2f20496e697469617465436f72706f72617465416374696f6e41726773202f2ac2bb2a2f000124706f7274666f6c696f8d0701942f2ac2ab2a2f204f7074696f6e3c506f7274666f6c696f4e756d6265723e202f2ac2bb2a2f00012063757272656e63799c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0001247065725f73686172651801542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f000118616d6f756e741801542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f0001287061796d656e745f61742001502f2ac2ab2a2f204d6f6d656e74202f2ac2bb2a2f000128657870697265735f6174f001702f2ac2ab2a2f204f7074696f6e3c4d6f6d656e743e202f2ac2bb2a2f0008041d015574696c6974792065787472696e73696320746f2062617463682060696e6974696174655f636f72706f726174655f616374696f6e6020616e64206064697374726962757465600c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ea10704184f7074696f6e04045401a5070108104e6f6e6500000010536f6d650400a5070000010000a507086070616c6c65745f636f72706f726174655f616374696f6e73385265636f7264446174655370656300010c245363686564756c656404002001184d6f6d656e74000000404578697374696e675363686564756c650400990201285363686564756c654964000100204578697374696e67040085020130436865636b706f696e74496400020000a90704184f7074696f6e04045401d5020108104e6f6e6500000010536f6d650400d5020000010000ad0704184f7074696f6e04045401f5020108104e6f6e6500000010536f6d650400f5020000010000b107086070616c6c65745f636f72706f726174655f616374696f6e736c496e697469617465436f72706f72617465416374696f6e4172677300002001187469636b65729c01185469636b65720001106b696e64e502011843414b696e640001246465636c5f646174652001184d6f6d656e7400012c7265636f72645f64617465a10701584f7074696f6e3c5265636f726444617465537065633e00011c64657461696c73fd020124434144657461696c7300011c74617267657473a90701604f7074696f6e3c5461726765744964656e7469746965733e00015c64656661756c745f77697468686f6c64696e675f746178dd02012c4f7074696f6e3c5461783e00013c77697468686f6c64696e675f746178ad0701784f7074696f6e3c5665633c284964656e7469747949642c20546178293e3e0000b5070c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f741043616c6c040454000118346174746163685f62616c6c6f7410011463615f69646d0201482f2ac2ab2a2f2043414964202f2ac2bb2a2f00011472616e6765090301742f2ac2ab2a2f2042616c6c6f7454696d6552616e6765202f2ac2bb2a2f0001106d6574610d0301602f2ac2ab2a2f2042616c6c6f744d657461202f2ac2bb2a2f00010c726376150101482f2ac2ab2a2f20626f6f6c202f2ac2bb2a2f000068e8417474616368206120636f72706f726174652062616c6c6f7420746f20746865204341206964656e746966696564206279206063615f6964602e00ac5468652062616c6c6f742077696c6c2061646d697420766f7465732077697468696e206072616e6765602eb05468652062616c6c6f742773206d657461646174612069732070726f766964656420627920606d657461602c0501776869636820696e636c75646573207468652062616c6c6f74207469746c652c20746865206d6f74696f6e732c2074686569722063686f696365732c206574632e7853656520746865206042616c6c6f744d6574616020666f72206d6f72652e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602ed02d206063615f696460206964656e7469666965732074686520434120746f20617474616368207468652062616c6c6f7420746f2ec02d206072616e67656020737065636966696573207768656e20766f74696e672073746172747320616e6420656e64732eec2d20606d6574616020737065636966696573207468652062616c6c6f742773206d657461646174612061732061666f72656d656e74696f6e65642ee42d2060726376602073706563696669657320776865746865722052435620697320656e61626c656420666f7220746869732062616c6c6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef02d206043414e6f744e6f746963656020696620746865204341206973206e6f74206f662074686520604973737565724e6f7469636560206b696e642ebc2d206053746172744166746572456e6460206966206072616e67652e7374617274203e2072616e67652e656e64602e29012d20604e6f774166746572456e646020696620606e6f77203e2072616e67652e656e646020776865726520606e6f7760206973207468652063757272656e742074696d657374616d702ea82d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652e59012d20605265636f7264446174654166746572537461727460206966206064617465203e2072616e67652e73746172746020776865726520606461746560206973207468652043412773207265636f726420646174652eb82d2060416c726561647945786973747360206966207468657265277320612062616c6c6f7420616c72656164792e31012d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e09012d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e01012d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e10766f746508011463615f69646d0201482f2ac2ab2a2f2043414964202f2ac2bb2a2f000114766f7465732d0301742f2ac2ab2a2f205665633c42616c6c6f74566f74653e202f2ac2bb2a2f0001441101436173742060766f7465736020696e207468652062616c6c6f7420617474616368656420746f20746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747309012d20606f726967696e60207768696368206d7573742062652061207065726d697373696f6e6564207369676e6572207461726765746564206279207468652043412eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e21012d2060766f7465736020737065636966696573207468652062616c616e63657320746f2061737369676e20746f20656163682063686f69636520696e207468652062616c6c6f742e55012020205468652066756c6c20766f74696e6720706f776572206f6620606f726967696e60277320444944206d6179206265207573656420666f722065616368206d6f74696f6e20696e207468652062616c6c6f742e002023204572726f7273dc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742efc2d2060566f74696e674e6f7453746172746564602069662074686520766f74696e6720706572696f64206861736e277420636f6d6d656e636564207965742ed82d2060566f74696e67416c7265616479456e646564602069662074686520766f74696e6720706572696f642068617320656e6465642e5d012d206057726f6e67566f7465436f756e746020696620746865206e756d626572206f662063686f6963657320696e207468652062616c6c6f7420646f6573206e6f74206d617463682060766f7465732e6c656e2829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef42d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e21012d2060496e73756666696369656e74566f746573602069662074686520766f74696e6720706f776572207573656420666f7220616e79206d6f74696f6e20696e2060766f74657360a42020206578636565647320606f726967696e60277320444944277320766f74696e6720706f7765722e286368616e67655f656e6408011463615f69646d0201482f2ac2ab2a2f2043414964202f2ac2bb2a2f00010c656e642001502f2ac2ab2a2f204d6f6d656e74202f2ac2bb2a2f0002300501416d656e642074686520656e642064617465206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ec42d2060656e64602073706563696669657320746865206e657720656e642064617465206f66207468652062616c6c6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e8c2d206053746172744166746572456e646020696620607374617274203e20656e64602e2c6368616e67655f6d65746108011463615f69646d0201482f2ac2ab2a2f2043414964202f2ac2bb2a2f0001106d6574610d0301602f2ac2ab2a2f2042616c6c6f744d657461202f2ac2bb2a2f0003346101416d656e6420746865206d6574616461746120287469746c652c206d6f74696f6e732c206574632e29206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e902d20606d657461602073706563696669657320746865206e6577206d657461646174612e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e31012d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e09012d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e286368616e67655f72637608011463615f69646d0201482f2ac2ab2a2f2043414964202f2ac2bb2a2f00010c726376150101482f2ac2ab2a2f20626f6f6c202f2ac2bb2a2f00042c0501416d656e642052435620737570706f727420666f72207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ecc2d206072637660207370656369666965732069662052435620697320746f20626520737570706f72746564206f72206e6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e3472656d6f76655f62616c6c6f7404011463615f69646d0201482f2ac2ab2a2f2043414964202f2ac2bb2a2f000528c852656d6f7665207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652eb907082c70616c6c65745f706970731043616c6c040454000144647365745f7072756e655f686973746f726963616c5f706970730401147072756e65150101482f2ac2ab2a2f20626f6f6c202f2ac2bb2a2f000014a44368616e6765207768657468657220636f6d706c65746564205049507320617265207072756e65642e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473f02a20607072756e656020737065636966696573207768657468657220636f6d706c6574656420504950732073686f756c64206265207072756e65642e607365745f6d696e5f70726f706f73616c5f6465706f73697404011c6465706f7369741801542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f00011421014368616e676520746865206d696e696d756d2070726f706f73616c206465706f73697420616d6f756e7420726571756972656420746f20737461727420612070726f706f73616c2e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473f02a20606465706f7369746020746865206e6577206d696e206465706f73697420726571756972656420746f20737461727420612070726f706f73616c707365745f64656661756c745f656e6163746d656e745f706572696f640401206475726174696f6e1001702f2ac2ab2a2f20543a3a426c6f636b4e756d626572202f2ac2bb2a2f000214904368616e6765207468652064656661756c7420656e6163746d656e7420706572696f642e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e747369012a20606475726174696f6e6020746865206e65772064656661756c7420656e6163746d656e7420706572696f642069742074616b657320666f722061207363686564756c65642050495020746f2062652065786563757465642e587365745f70656e64696e675f7069705f657870697279040118657870697279350101a02f2ac2ab2a2f204d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e202f2ac2bb2a2f00031805014368616e67652074686520616d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020697320657870697265642eb4496620606578706972796020697320604e6f6e6560207468656e2050495073206e65766572206578706972652e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e74731d012a2060657870697279602074686520626c6f636b2d74696d652069742074616b657320666f722061207374696c6c2d6050656e64696e67602050495020746f206578706972652e587365745f6d61785f7069705f736b69705f636f756e7404010c6d61780801682f2ac2ab2a2f20536b6970706564436f756e74202f2ac2bb2a2f000414d44368616e676520746865206d6178696d756d20736b697020636f756e742028606d61785f7069705f736b69705f636f756e7460292e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473ec2a20606d61786020736b697073206265666f72652061205049502063616e6e6f7420626520736b697070656420627920474320616e796d6f72652e507365745f6163746976655f7069705f6c696d69740401146c696d69741001442f2ac2ab2a2f20753332202f2ac2bb2a2f00051469014368616e676520746865206d6178696d756d206e756d626572206f66206163746976652050495073206265666f726520636f6d6d756e697479206d656d626572732063616e6e6f742070726f706f736520616e797468696e672e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473902a20606c696d697460206f6620636f6e63757272656e742061637469766520504950732e1c70726f706f736510012070726f706f73616ce90501782f2ac2ab2a2f20426f783c543a3a50726f706f73616c3e202f2ac2bb2a2f00011c6465706f7369741801542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f00010c75726c4d0201642f2ac2ab2a2f204f7074696f6e3c55726c3e202f2ac2bb2a2f00012c6465736372697074696f6e4d0301902f2ac2ab2a2f204f7074696f6e3c5069704465736372697074696f6e3e202f2ac2bb2a2f000624050141206e6574776f726b206d656d6265722063726561746573206120504950206279207375626d697474696e67206120646973706174636861626c6520776869636855016368616e67657320746865206e6574776f726b20696e20736f6d657761792e2041206d696e696d756d206465706f73697420697320726571756972656420746f206f70656e2061206e65772070726f706f73616c2e002c2320417267756d656e7473c82a206070726f706f73657260206973206569746865722061207369676e696e67206b6579206f7220636f6d6d69747465652e65012020205573656420746f20756e6465727374616e6420776865746865722074686973206973206120636f6d6d69747465652070726f706f73616c20616e6420766572696669656420616761696e737420606f726967696e602e802a206070726f706f73616c60206120646973706174636861626c652063616c6c45012a20606465706f73697460206d696e696d756d206465706f7369742076616c75652c2077686963682069732069676e6f726564206966206070726f706f73657260206973206120636f6d6d69747465652ecc2a206075726c602061206c696e6b20746f2061207765627369746520666f722070726f706f73616c2064697363757373696f6e10766f74650c010869644903014c2f2ac2ab2a2f205069704964202f2ac2bb2a2f0001286179655f6f725f6e6179150101482f2ac2ab2a2f20626f6f6c202f2ac2bb2a2f00011c6465706f7369741801542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f0007481d01566f74652065697468657220696e206661766f722028606179655f6f725f6e617960203d3d207472756529206f7220616761696e7374206120504950207769746820606964602e4d015468652022636f6e76696e6374696f6e22206f7220737472656e677468206f662074686520766f746520697320676976656e20627920606465706f736974602c2077686963682069732072657365727665642e008c4e6f746520746861742060766f746560206973202a6e6f742a2061646469746976652ef8546861742069732c2060766f74652869642c20747275652c203530296020666f6c6c6f7765642062792060766f74652869642c20747275652c2034302960490177696c6c2066697273742072657365727665206035306020616e64207468656e20726566756e6420603530202d203130602c20656e64696e672075702077697468206034306020696e206465706f7369742e2501546f206164642061746f70206f66206578697374696e6720766f7465732c20796f75276c6c206e65656420606578697374696e675f6465706f736974202b206164646974696f6e602e002c2320417267756d656e74734c2a20606964602c2070726f706f73616c206964dc2a20606179655f6f725f6e6179602c206120626f6f6c20726570726573656e74696e6720666f72206f7220616761696e737420766f7465e82a20606465706f736974602c207468652022636f6e76696374696f6e2220776974682077686963682074686520766f7465206973206d6164652e002023204572726f7273e42a20604e6f5375636850726f706f73616c60206966206069646020646f65736e2774207265666572656e636520612076616c6964205049502ee42a20604e6f7446726f6d436f6d6d756e697479602069662070726f706f73616c20776173206d616465206279206120636f6d6d69747465652ec02a2060496e636f727265637450726f706f73616c537461746560206966205049502069736e27742070656e64696e672e2d012a2060496e73756666696369656e744465706f7369746020696620606f726967696e602063616e6e6f74207265736572766520606465706f736974202d206f6c645f6465706f736974602e68617070726f76655f636f6d6d69747465655f70726f706f73616c04010869644903014c2f2ac2ab2a2f205069704964202f2ac2bb2a2f00081cd4417070726f766573207468652070656e64696e6720636f6d6d69747465652050495020676976656e2062792074686520606964602e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ee42a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c2069736e27742070656e64696e672ee02a20604e6f744279436f6d6d697474656560206966207468652070726f706f73616c2069736e2774206279206120636f6d6d69747465652e3c72656a6563745f70726f706f73616c04010869644903014c2f2ac2ab2a2f205069704964202f2ac2bb2a2f000920f852656a65637473207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e7920626f6e6465642066756e64732cb8617373756d696e67206974206861736e2774206265656e2063616e63656c6c6564206f722065786563757465642e05014e6f746520746861742070726f706f73616c73207363686564756c65642d666f722d657865637574696f6e2063616e20616c736f2062652072656a65637465642e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742e15012a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c207761732063616e63656c6c6564206f722065786563757465642e387072756e655f70726f706f73616c04010869644903014c2f2ac2ab2a2f205069704964202f2ac2bb2a2f000a2429015072756e65207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e792066756e6473206e6f7420616c726561647920726566756e6465642e6454686520504950206d6179206e6f7420626520616374697665000901546869732066756e6374696f6e20697320696e74656e64656420666f722073746f72616765206761726261676520636f6c6c656374696f6e20707572706f7365732e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ed42a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c206973206163746976652e5072657363686564756c655f657865637574696f6e08010869644903014c2f2ac2ab2a2f205069704964202f2ac2bb2a2f000114756e74696c310601902f2ac2ab2a2f204f7074696f6e3c543a3a426c6f636b4e756d6265723e202f2ac2bb2a2f000b24e0557064617465732074686520657865637574696f6e207363686564756c65206f66207468652050495020676976656e20627920606964602e002c2320417267756d656e747331012a2060756e74696c6020646566696e6573207468652066757475726520626c6f636b2077686572652074686520656e6163746d656e7420706572696f642077696c6c2066696e69736865642e4501202020604e6f6e65602076616c7565206d65616e73207468617420656e6163746d656e7420706572696f6420697320676f696e6720746f2066696e69736820696e20746865206e65787420626c6f636b2e002023204572726f727339012a206052657363686564756c654e6f74427952656c65617365436f6f7264696e61746f726020756e6c657373207472696767657265642062792072656c6561736520636f6f7264696e61746f722e21012a2060496e636f727265637450726f706f73616c53746174656020756e6c657373207468652070726f706f73616c2077617320696e2061207363686564756c65642073746174652e38636c6561725f736e617073686f74000c10e8436c656172732074686520736e617073686f7420616e6420656d69747320746865206576656e742060536e617073686f74436c6561726564602e002023204572726f72733d012a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e20736e617073686f74000d140d0154616b65732061206e657720736e617073686f74206f66207468652063757272656e74206c697374206f66206163746976652026262070656e64696e6720504950732e2901546865205049507320617265207468656e20736f7274656420696e746f2061207072696f72697479207175657565206261736564206f6e2065616368205049502773207765696768742e002023204572726f72733d012a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e58656e6163745f736e617073686f745f726573756c747304011c726573756c7473bd0701a82f2ac2ab2a2f205665633c2850697049642c20536e617073686f74526573756c74293e202f2ac2bb2a2f000e44d0456e616374732060726573756c74736020666f7220746865205049507320696e2074686520736e617073686f742071756575652e290154686520736e617073686f742077696c6c20626520617661696c61626c6520666f72206675727468657220656e6163746d656e747320756e74696c20697420697320636c65617265642e0055015468652060726573756c7473602061726520656e636f6465642061206c697374206f6620602869642c20726573756c7429602077686572652060726573756c7460206973206170706c69656420746f20606964602e49014e6f746520746861742074686520736e617073686f74207072696f7269747920717565756520697320656e636f646564207769746820746865202a6c6f77657374207072696f726974792066697273742a2e5501736f2060726573756c7473203d205b2869642c20417070726f7665295d602077696c6c20617070726f76652060536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20315d602e002023204572726f72730d012a20604261644f726967696e60202d20756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2e21012a206043616e6e6f74536b697050697060202d206120676976656e205049502068617320616c7265616479206265656e20736b697070656420746f6f206d616e792074696d65732e0d012a2060536e617073686f74526573756c74546f6f4c6172676560202d206f6e206c656e28726573756c747329203e206c656e28736e617073686f745f7175657565292e702a2060536e617073686f7449644d69736d6174636860202d2069663a2420206060607465787498202020e2888320286920e2888820302e2e536e617073686f7451756575652e6c656e2829292efc2020202020726573756c74735b695d2e3020e289a020536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20695d2e6964142020606060f8202020546869732069732070726f746563747320616761696e737420636c656172696e67207175657565207768696c6520474320697320766f74696e672e54657865637574655f7363686564756c65645f70697004010869644903014c2f2ac2ab2a2f205069704964202f2ac2bb2a2f000f04d8496e7465726e616c20646973706174636861626c6520746861742068616e646c657320657865637574696f6e206f662061205049502e506578706972655f7363686564756c65645f70697008010c6469647801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f00010869644903014c2f2ac2ab2a2f205069704964202f2ac2bb2a2f001004dc496e7465726e616c20646973706174636861626c6520746861742068616e646c65732065787069726174696f6e206f662061205049502e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ebd07000002c10700c107000004084903c50700c507082c70616c6c65745f7069707338536e617073686f74526573756c7400010c1c417070726f76650000001852656a65637400010010536b697000020000c907084070616c6c65745f706f7274666f6c696f1043616c6c040454000118406372656174655f706f7274666f6c696f0401106e616d658103016c2f2ac2ab2a2f20506f7274666f6c696f4e616d65202f2ac2bb2a2f000004a843726561746573206120706f7274666f6c696f20776974682074686520676976656e20606e616d65602e4064656c6574655f706f7274666f6c696f04010c6e756ddc01742f2ac2ab2a2f20506f7274666f6c696f4e756d626572202f2ac2bb2a2f000120350144656c657465732061207573657220706f7274666f6c696f2e204120706f7274666f6c696f2063616e2062652064656c65746564206f6e6c7920696620697420686173206e6f2066756e64732e002023204572726f72731d012a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2ef02a2060506f7274666f6c696f4e6f74456d707479602069662074686520706f7274666f6c696f207374696c6c20686f6c647320616e79206173736574003423205065726d697373696f6e732c2a20506f7274666f6c696f506d6f76655f706f7274666f6c696f5f66756e64730c011066726f6dd401642f2ac2ab2a2f20506f7274666f6c696f4964202f2ac2bb2a2f000108746fd401642f2ac2ab2a2f20506f7274666f6c696f4964202f2ac2bb2a2f0001146974656d73cd0701902f2ac2ab2a2f205665633c4d6f7665506f7274666f6c696f4974656d3e202f2ac2bb2a2f00023c5d014d6f766573206120746f6b656e20616d6f756e742066726f6d206f6e6520706f7274666f6c696f206f6620616e206964656e7469747920746f20616e6f7468657220706f7274666f6c696f206f66207468652073616d65e06964656e746974792e204d7573742062652063616c6c65642062792074686520637573746f6469616e206f66207468652073656e6465722e110146756e64732066726f6d2064656c6574656420706f7274666f6c696f732063616e20616c736f206265207265636f7665726564207669612074686973206d6574686f642e00e0412073686f7274206d656d6f2063616e20626520616464656420746f20746f206561636820746f6b656e20616d6f756e74206d6f7665642e002023204572726f727369012a2060506f7274666f6c696f446f65734e6f74457869737460206966206f6e65206f7220626f7468206f662074686520706f7274666f6c696f73207265666572656e636520616e20696e76616c696420706f7274666f6c696f2e51012a206064657374696e6174696f6e5f69735f73616d655f706f7274666f6c696f6020696620626f74682073656e64657220616e6420726563656976657220706f7274666f6c696f20617265207468652073616d6591012a2060446966666572656e744964656e74697479506f7274666f6c696f7360206966207468652073656e64657220616e6420726563656976657220706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e74697469657349012a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f66207468652066726f6d20706f7274666f6c696f41012a2060496e73756666696369656e74506f7274666f6c696f42616c616e636560206966207468652073656e64657220646f6573206e6f74206861766520656e6f75676820667265652062616c616e6365003423205065726d697373696f6e732c2a20506f7274666f6c696f4072656e616d655f706f7274666f6c696f08010c6e756ddc01742f2ac2ab2a2f20506f7274666f6c696f4e756d626572202f2ac2bb2a2f00011c746f5f6e616d658103016c2f2ac2ab2a2f20506f7274666f6c696f4e616d65202f2ac2bb2a2f00031c8052656e616d65732061206e6f6e2d64656661756c7420706f7274666f6c696f2e002023204572726f72731d012a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2e003423205065726d697373696f6e732c2a20506f7274666f6c696f58717569745f706f7274666f6c696f5f637573746f647904010c706964d401642f2ac2ab2a2f20506f7274666f6c696f4964202f2ac2bb2a2f000420bc5768656e2063616c6c65642062792074686520637573746f6469616e206f662060706f7274666f6c696f5f6964602c4901616c6c6f77732072657475726e696e672074686520637573746f6479206f662074686520706f7274666f6c696f20746f2074686520706f7274666f6c696f206f776e657220756e696c61746572616c6c792e002023204572726f72735d012a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f74207468652063757272656e7420637573746f6469616e206f662060706f7274666f6c696f5f6964602e003423205065726d697373696f6e732c2a20506f7274666f6c696f606163636570745f706f7274666f6c696f5f637573746f647904011c617574685f69642001442f2ac2ab2a2f20753634202f2ac2bb2a2f0005000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ecd07000002d10700d107084070616c6c65745f706f7274666f6c696f444d6f7665506f7274666f6c696f4974656d00000c01187469636b65729c01185469636b6572000118616d6f756e7418011c42616c616e63650001106d656d6f7c01304f7074696f6e3c4d656d6f3e0000d507084c70616c6c65745f70726f746f636f6c5f6665651043616c6c040454000108486368616e67655f636f656666696369656e7404012c636f656666696369656e74910301582f2ac2ab2a2f20506f73526174696f202f2ac2bb2a2f000010c04368616e676573207468652066656520636f656666696369656e7420666f722074686520726f6f74206f726967696e2e002023204572726f7273882a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e3c6368616e67655f626173655f6665650801086f70d90701602f2ac2ab2a2f2050726f746f636f6c4f70202f2ac2bb2a2f000120626173655f6665651801542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f000110ac4368616e67657320746865206120626173652066656520666f722074686520726f6f74206f726967696e2e002023204572726f7273882a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ed9070c64706f6c796d6573685f636f6d6d6f6e5f7574696c69746965733070726f746f636f6c5f6665652850726f746f636f6c4f700001344c417373657452656769737465725469636b65720000002841737365744973737565000100444173736574416464446f63756d656e7473000200404173736574437265617465417373657400030060436865636b706f696e744372656174655363686564756c65000400a4436f6d706c69616e63654d616e61676572416464436f6d706c69616e6365526571756972656d656e74000500584964656e746974794364645265676973746572446964000600404964656e74697479416464436c61696d000700a44964656e746974794164645365636f6e646172794b65797357697468417574686f72697a6174696f6e0008002c5069707350726f706f736500090040436f6e747261637473507574436f6465000a006c436f72706f7261746542616c6c6f7441747461636842616c6c6f74000b00744361706974616c446973747269627574696f6e44697374726962757465000c0000dd070c4070616c6c65745f7363686564756c65721870616c6c65741043616c6c040454000118207363686564756c651001107768656e100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963e10701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6ce5070150426f783c43616c6c4f72486173684f663c543e3e00000470416e6f6e796d6f75736c79207363686564756c652061207461736b2e1863616e63656c0801107768656e100138543a3a426c6f636b4e756d626572000114696e64657810010c7533320001049443616e63656c20616e20616e6f6e796d6f75736c79207363686564756c6564207461736b2e387363686564756c655f6e616d6564140108696428011c5665633c75383e0001107768656e100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963e10701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6ce5070150426f783c43616c6c4f72486173684f663c543e3e000204585363686564756c652061206e616d6564207461736b2e3063616e63656c5f6e616d6564040108696428011c5665633c75383e0003047843616e63656c2061206e616d6564207363686564756c6564207461736b2e387363686564756c655f61667465721001146166746572100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963e10701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6ce5070150426f783c43616c6c4f72486173684f663c543e3e000414a8416e6f6e796d6f75736c79207363686564756c652061207461736b20616674657220612064656c61792e002823203c7765696768743e5453616d65206173205b607363686564756c65605d2e2c23203c2f7765696768743e507363686564756c655f6e616d65645f6166746572140108696428011c5665633c75383e0001146166746572100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963e10701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6ce5070150426f783c43616c6c4f72486173684f663c543e3e000514905363686564756c652061206e616d6564207461736b20616674657220612064656c61792e002823203c7765696768743ec453616d65206173205b607363686564756c655f6e616d6564605d2853656c663a3a7363686564756c655f6e616d6564292e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ee10704184f7074696f6e0404540199030108104e6f6e6500000010536f6d65040099030000010000e50710346672616d655f737570706f727418747261697473207363686564756c652c4d6179626548617368656408045401e9051048617368012401081456616c75650400e905010454000000104861736804002401104861736800010000e907084470616c6c65745f736574746c656d656e741043616c6c040454000144306372656174655f76656e75650c011c64657461696c73a90301682f2ac2ab2a2f2056656e756544657461696c73202f2ac2bb2a2f00011c7369676e657273e8017c2f2ac2ab2a2f205665633c543a3a4163636f756e7449643e202f2ac2bb2a2f00010c747970ad03015c2f2ac2ab2a2f2056656e756554797065202f2ac2bb2a2f000014585265676973746572732061206e65772076656e75652e00a42a206064657461696c7360202d2045787472612064657461696c732061626f757420612076656e75653d012a20607369676e65727360202d204172726179206f66207369676e65727320746861742061726520616c6c6f77656420746f207369676e20726563656970747320666f7220746869732076656e7565942a206074797060202d2054797065206f662076656e7565206265696e672063726561746564507570646174655f76656e75655f64657461696c730801086964a50301542f2ac2ab2a2f2056656e75654964202f2ac2bb2a2f00011c64657461696c73a90301682f2ac2ab2a2f2056656e756544657461696c73202f2ac2bb2a2f0001105c4564697420612076656e756527732064657461696c732e00b42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742ec02a206064657461696c7360207370656369666965732074686520757064617465642076656e75652064657461696c732e447570646174655f76656e75655f747970650801086964a50301542f2ac2ab2a2f2056656e75654964202f2ac2bb2a2f00010c747970ad03015c2f2ac2ab2a2f2056656e756554797065202f2ac2bb2a2f000210504564697420612076656e7565277320747970652e00b42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742eb42a206074797065602073706563696669657320746865206e65772074797065206f66207468652076656e75652e3c6164645f696e737472756374696f6e14012076656e75655f6964a50301542f2ac2ab2a2f2056656e75654964202f2ac2bb2a2f00013c736574746c656d656e745f74797065b50301b02f2ac2ab2a2f20536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e202f2ac2bb2a2f00012874726164655f64617465f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f00012876616c75655f64617465f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f0001106c656773b90301582f2ac2ab2a2f205665633c4c65673e202f2ac2bb2a2f0003305c416464732061206e657720696e737472756374696f6e2e002c2320417267756d656e7473ec2a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e09012a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c65645d01202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e51012a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b42a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e0020232057656967687498603935305f3030305f303030202b20315f3030305f303030202a206c6567732e6c656e282960686164645f616e645f61666669726d5f696e737472756374696f6e18012076656e75655f6964a50301542f2ac2ab2a2f2056656e75654964202f2ac2bb2a2f00013c736574746c656d656e745f74797065b50301b02f2ac2ab2a2f20536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e202f2ac2bb2a2f00012874726164655f64617465f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f00012876616c75655f64617465f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f0001106c656773b90301582f2ac2ab2a2f205665633c4c65673e202f2ac2bb2a2f000128706f7274666f6c696f73e401782f2ac2ab2a2f205665633c506f7274666f6c696f49643e202f2ac2bb2a2f0004348c4164647320616e642061666669726d732061206e657720696e737472756374696f6e2e002c2320417267756d656e7473ec2a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e09012a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c65645d01202020696e20746865206e65787420626c6f636b20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73206f722077616974696e672074696c6c206120737065636966696320626c6f636b2e51012a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b42a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e6d012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2075736520696e20746869732061666669726d6174696f6e732e003423205065726d697373696f6e732c2a20506f7274666f6c696f4861666669726d5f696e737472756374696f6e0c01086964b103016c2f2ac2ab2a2f20496e737472756374696f6e4964202f2ac2bb2a2f000128706f7274666f6c696f73e401782f2ac2ab2a2f205665633c506f7274666f6c696f49643e202f2ac2bb2a2f0001386d61785f6c6567735f636f756e741001442f2ac2ab2a2f20753332202f2ac2bb2a2f000524bc50726f766964652061666669726d6174696f6e20746f20616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e7473882a2060696460202d20496e737472756374696f6e20696420746f2061666669726d2e69012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2061666669726d207468697320696e737472756374696f6e2ef82a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f206265202061666669726d65642e003423205065726d697373696f6e732c2a20506f7274666f6c696f5077697468647261775f61666669726d6174696f6e0c01086964b103016c2f2ac2ab2a2f20496e737472756374696f6e4964202f2ac2bb2a2f000128706f7274666f6c696f73e401782f2ac2ab2a2f205665633c506f7274666f6c696f49643e202f2ac2bb2a2f0001386d61785f6c6567735f636f756e741001442f2ac2ab2a2f20753332202f2ac2bb2a2f000624c0576974686472617720616e2061666669726d6174696f6e20666f72206120676976656e20696e737472756374696f6e2e002c2320417267756d656e7473ec2a2060696460202d20496e737472756374696f6e20696420666f7220746861742061666669726d6174696f6e206765742077697468647261776e2e5d012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2077697468647261772061666669726d6174696f6e2e01012a20606d61785f6c6567735f636f756e7460202d204e756d626572206f66206c6567732074686174206e65656420746f20626520756e2d61666669726d65642e003423205065726d697373696f6e732c2a20506f7274666f6c696f4872656a6563745f696e737472756374696f6e0c01086964b103016c2f2ac2ab2a2f20496e737472756374696f6e4964202f2ac2bb2a2f000124706f7274666f6c696fd401642f2ac2ab2a2f20506f7274666f6c696f4964202f2ac2bb2a2f00012c6e756d5f6f665f6c6567731001442f2ac2ab2a2f20753332202f2ac2bb2a2f0007248052656a6563747320616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e7473882a2060696460202d20496e737472756374696f6e20696420746f2072656a6563742ed02a2060706f7274666f6c696f60202d20506f7274666f6c696f20746f2072656a6563742074686520696e737472756374696f6e2ed02a20606e756d5f6f665f6c65677360202d204e756d626572206f66206c65677320696e2074686520696e737472756374696f6e2e003423205065726d697373696f6e732c2a20506f7274666f6c696f5061666669726d5f776974685f72656365697074731001086964b103016c2f2ac2ab2a2f20496e737472756374696f6e4964202f2ac2bb2a2f00013c726563656970745f64657461696c73ed070115012f2ac2ab2a2f205665633c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e0a2f2ac2bb2a2f000128706f7274666f6c696f73e401782f2ac2ab2a2f205665633c506f7274666f6c696f49643e202f2ac2bb2a2f0001386d61785f6c6567735f636f756e741001442f2ac2ab2a2f20753332202f2ac2bb2a2f000830cc4163636570747320616e20696e737472756374696f6e20616e6420636c61696d732061207369676e656420726563656970742e002c2320417267756d656e74737c2a2060696460202d2054617267657420696e737472756374696f6e2069642ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d42a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e8c2a20607369676e657260202d205369676e6572206f662074686520726563656970742e842a20607369676e65645f6461746160202d205369676e656420726563656970742e79012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f20616363657074207468697320696e737472756374696f6e2077697468003423205065726d697373696f6e732c2a20506f7274666f6c696f34636c61696d5f726563656970740801086964b103016c2f2ac2ab2a2f20496e737472756374696f6e4964202f2ac2bb2a2f00013c726563656970745f64657461696c73f1070101012f2ac2ab2a2f205265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e202f2ac2bb2a2f00092c60436c61696d732061207369676e656420726563656970742e002c2320417267756d656e7473bc2a2060696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d42a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e8c2a20607369676e657260202d205369676e6572206f662074686520726563656970742e842a20607369676e65645f6461746160202d205369676e656420726563656970742e003423205065726d697373696f6e732c2a20506f7274666f6c696f3c756e636c61696d5f72656365697074080138696e737472756374696f6e5f6964b103016c2f2ac2ab2a2f20496e737472756374696f6e4964202f2ac2bb2a2f0001186c65675f6964c103014c2f2ac2ab2a2f204c65674964202f2ac2bb2a2f000a2098556e636c61696d7320612070726576696f75736c7920636c61696d656420726563656970742e002c2320417267756d656e7473ec2a2060696e737472756374696f6e5f696460202d2054617267657420696e737472756374696f6e20696420666f722074686520726563656970742ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074003423205065726d697373696f6e732c2a20506f7274666f6c696f4c7365745f76656e75655f66696c746572696e670801187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f00011c656e61626c6564150101482f2ac2ab2a2f20626f6f6c202f2ac2bb2a2f000b20c0456e61626c6573206f722064697361626c65642076656e75652066696c746572696e6720666f72206120746f6b656e2e002c2320417267756d656e7473b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e19012a2060656e61626c656460202d20426f6f6c65616e20746861742064656369646573206966207468652066696c746572696e672073686f756c6420626520656e61626c65642e003423205065726d697373696f6e731c2a20417373657430616c6c6f775f76656e7565730801187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f00011876656e756573c90301682f2ac2ab2a2f205665633c56656e756549643e202f2ac2bb2a2f000c1c0d01416c6c6f7773206164646974696f6e616c2076656e75657320746f2063726561746520696e737472756374696f6e7320696e766f6c76696e6720616e2061737365742e00b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e7d012a206076656e75657360202d204172726179206f662076656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e003423205065726d697373696f6e731c2a2041737365743c646973616c6c6f775f76656e7565730801187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f00011876656e756573c90301682f2ac2ab2a2f205665633c56656e756549643e202f2ac2bb2a2f000d1c69015265766f6b6573207065726d697373696f6e20676976656e20746f2076656e75657320666f72206372656174696e6720696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c61722061737365742e00b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2ea5012a206076656e75657360202d204172726179206f662076656e756573207468617420617265206e6f206c6f6e67657220616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e003423205065726d697373696f6e731c2a2041737365745c6368616e67655f726563656970745f76616c696469747908012c726563656970745f7569642001442f2ac2ab2a2f20753634202f2ac2bb2a2f00012076616c6964697479150101482f2ac2ab2a2f20626f6f6c202f2ac2bb2a2f000e14fc4d61726b732061207265636569707420697373756564206279207468652063616c6c657220617320636c61696d6564206f72206e6f7420636c61696d65642ec1015468697320616c6c6f77732074686520726563656970742069737375657220746f20696e76616c696461746520616e20616c7265616479206973737565642072656365697074206f7220726576616c696461746520616e20616c726561647920636c61696d656420726563656970742e00ac2a2060726563656970745f75696460202d20556e69717565204944206f662074686520726563656970742eac2a206076616c696469747960202d204e65772076616c6964697479206f662074686520726563656970742e74657865637574655f7363686564756c65645f696e737472756374696f6e0801086964b103016c2f2ac2ab2a2f20496e737472756374696f6e4964202f2ac2bb2a2f00012c5f6c6567735f636f756e741001442f2ac2ab2a2f20753332202f2ac2bb2a2f000f048101526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f20657865637574652061207363686564756c656420736574746c656d656e7420696e737472756374696f6e2e5872657363686564756c655f696e737472756374696f6e0401086964b103016c2f2ac2ab2a2f20496e737472756374696f6e4964202f2ac2bb2a2f0010288452657363686564756c65732061206661696c656420696e737472756374696f6e2e002c2320417267756d656e7473b42a2060696460202d2054617267657420696e737472756374696f6e20696420746f2072657363686564756c652e003423205065726d697373696f6e732c2a20506f7274666f6c696f002023204572726f72733d012a2060496e737472756374696f6e4e6f744661696c656460202d20496e737472756374696f6e206e6f7420696e2061206661696c6564207374617465206f7220646f6573206e6f742065786973742e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652eed07000002f10700f107084470616c6c65745f736574746c656d656e74385265636569707444657461696c7308244163636f756e7449640100444f6666436861696e5369676e617475726501f5070014012c726563656970745f75696420010c7536340001186c65675f6964c10301144c656749640001187369676e65720001244163636f756e7449640001247369676e6174757265f50701444f6666436861696e5369676e61747572650001206d65746164617461c503013c526563656970744d657461646174610000f507082873705f72756e74696d65384d756c74695369676e617475726500010c1c45643235353139040031070148656432353531393a3a5369676e61747572650000001c53723235353139040061070148737232353531393a3a5369676e61747572650001001445636473610400f907014065636473613a3a5369676e617475726500020000f9070c1c73705f636f7265146563647361245369676e617475726500000400790701205b75383b2036355d0000fd07084470616c6c65745f737461746973746963731043616c6c040454000110587365745f6163746976655f61737365745f73746174730801146173736574d10301602f2ac2ab2a2f20417373657453636f7065202f2ac2bb2a2f000128737461745f7479706573010801802f2ac2ab2a2f2042547265655365743c53746174547970653e202f2ac2bb2a2f00003c80536574207468652061637469766520617373657420737461745f74797065732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e09012d2060737461745f747970657360202d20746865206e6577207374617420747970657320746f207265706c61636520616e79206578697374696e672074797065732e002023204572726f72731d012d206053746174547970654c696d69745265616368656460202d20746f6f206d616e79207374617420747970657320656e61626c656420666f722074686520606173736574602e85012d206043616e6e6f7452656d6f76655374617454797065496e55736560202d2063616e206e6f742072656d6f7665206120737461742074797065207468617420697320696e20757365206279207472616e7366657220636f6e646974696f6e732e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365746062617463685f7570646174655f61737365745f73746174730c01146173736574d10301602f2ac2ab2a2f20417373657453636f7065202f2ac2bb2a2f000124737461745f74797065d90301582f2ac2ab2a2f205374617454797065202f2ac2bb2a2f00011876616c756573050801882f2ac2ab2a2f2042547265655365743c537461745570646174653e202f2ac2bb2a2f00013cec416c6c6f77206120747275737465642069737375657220746f20696e69742f726573796e63207469636b65722f636f6d70616e792073746174732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e902d2060737461745f7479706560202d2073746174207479706520746f207570646174652eb02d206076616c75657360202d20557064617465642076616c75657320666f722060737461745f74797065602e002023204572726f727305012d206053746174547970654d697373696e6760202d2060737461745f7479706560206973206e6f7420656e61626c656420666f722074686520606173736574602e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d204173736574747365745f61737365745f7472616e736665725f636f6d706c69616e63650801146173736574d10301602f2ac2ab2a2f20417373657453636f7065202f2ac2bb2a2f00014c7472616e736665725f636f6e646974696f6e73090801a42f2ac2ab2a2f2042547265655365743c5472616e73666572436f6e646974696f6e3e202f2ac2bb2a2f00023c90536574206173736574207472616e7366657220636f6d706c69616e63652072756c65732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e61012d20607472616e736665725f636f6e646974696f6e7360202d20746865206e6577207472616e7366657220636f6e646974696f6e20746f207265706c61636520616e79206578697374696e6720636f6e646974696f6e732e002023204572726f727355012d20605472616e73666572436f6e646974696f6e4c696d69745265616368656460202d20746f6f206d616e79207472616e7366657220636f6e64697469746f6e20656e61626c656420666f7220606173736574602e91012d206053746174547970654d697373696e6760202d2061207472616e7366657220636f6e646974696f6e2072657175697265732061207374617420747970652074686174206973206e6f7420656e61626c656420666f722074686520606173736574602e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365744c7365745f656e7469746965735f6578656d70740c012469735f6578656d7074150101482f2ac2ab2a2f20626f6f6c202f2ac2bb2a2f0001286578656d70745f6b65790d0401a02f2ac2ab2a2f205472616e73666572436f6e646974696f6e4578656d70744b6579202f2ac2bb2a2f000120656e7469746965730d08017c2f2ac2ab2a2f2042547265655365743c53636f706549643e202f2ac2bb2a2f00033811015365742f756e73657420656e746974696573206578656d70742066726f6d20616e2061737365742773207472616e7366657220636f6d706c69616e63652072756c65732e002c2320417267756d656e747351012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606578656d70745f6b65792e6173736574602ee02d206069735f6578656d707460202d20656e61626c652f64697361626c65206578656d7074696f6e20666f722060656e746974696573602e1d012d20606578656d70745f6b657960202d2074686520617373657420616e642073746174207479706520746f206578656d7074207468652060656e746974696573602066726f6d2eec2d2060656e74697469657360202d2074686520656e74697469657320746f207365742f756e73657420746865206578656d7074696f6e20666f722e002023204572726f727321012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e01080420425472656553657404045401d903000400d50300000005080420425472656553657404045401ed03000400e90300000009080420425472656553657404045401050400040001040000000d0804204254726565536574040454017800040021010000001108082870616c6c65745f73746f1043616c6c040454000118446372656174655f66756e647261697365722801486f66666572696e675f706f7274666f6c696fd401642f2ac2ab2a2f20506f7274666f6c696f4964202f2ac2bb2a2f0001386f66666572696e675f61737365749c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f00014472616973696e675f706f7274666f6c696fd401642f2ac2ab2a2f20506f7274666f6c696f4964202f2ac2bb2a2f00013472616973696e675f61737365749c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0001147469657273150801702f2ac2ab2a2f205665633c5072696365546965723e202f2ac2bb2a2f00012076656e75655f6964a50301542f2ac2ab2a2f2056656e75654964202f2ac2bb2a2f0001147374617274f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f00010c656e64f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f0001486d696e696d756d5f696e766573746d656e741801542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f00013c66756e647261697365725f6e616d651d0401702f2ac2ab2a2f2046756e647261697365724e616d65202f2ac2bb2a2f000040604372656174652061206e65772066756e647261697365722e000d012a20606f66666572696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e672074686520606f66666572696e675f6173736574602ea42a20606f66666572696e675f617373657460202d204173736574206265696e67206f6666657265642e05012a206072616973696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e6720746865206072616973696e675f6173736574602e35012a206072616973696e675f617373657460202d204173736574206265696e672065786368616e67656420666f7220606f66666572696e675f617373657460206f6e20696e766573746d656e742ee82a2060746965727360202d20507269636520746965727320746f2063686172676520696e766573746f7273206f6e20696e766573746d656e742ea82a206076656e75655f696460202d2056656e756520746f2068616e646c6520736574746c656d656e742e4d012a2060737461727460202d2046756e647261697365722073746172742074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c20737461727420696d6d6564696174656c792e29012a2060656e6460202d2046756e6472616973657220656e642074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c206e65766572206578706972652ecd012a20606d696e696d756d5f696e766573746d656e7460202d204d696e696d756d20616d6f756e74206f66206072616973696e675f617373657460207468617420616e20696e766573746f72206e6565647320746f207370656e6420746f20696e7665737420696e20746869732072616973652ef02a206066756e647261697365725f6e616d6560202d2046756e64726169736572206e616d652c206f6e6c79207573656420696e20746865205549732e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f18696e766573741c0150696e766573746d656e745f706f7274666f6c696fd401642f2ac2ab2a2f20506f7274666f6c696f4964202f2ac2bb2a2f00014466756e64696e675f706f7274666f6c696fd401642f2ac2ab2a2f20506f7274666f6c696f4964202f2ac2bb2a2f0001386f66666572696e675f61737365749c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0001086964190401682f2ac2ab2a2f2046756e647261697365724964202f2ac2bb2a2f00013c70757263686173655f616d6f756e741801542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f0001246d61785f7072696365fd0301742f2ac2ab2a2f204f7074696f6e3c42616c616e63653e202f2ac2bb2a2f00011c726563656970741d080121012f2ac2ab2a2f204f7074696f6e3c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e0a2f2ac2bb2a2f0001305c496e7665737420696e20612066756e647261697365722e0041012a2060696e766573746d656e745f706f7274666f6c696f60202d20506f7274666f6c696f207468617420606f66666572696e675f6173736574602077696c6c206265206465706f736974656420696e2e01012a206066756e64696e675f706f7274666f6c696f60202d20506f7274666f6c696f20746861742077696c6c2066756e642074686520696e766573746d656e742ea02a20606f66666572696e675f617373657460202d20417373657420746f20696e7665737420696e2eac2a2060696460202d204944206f66207468652066756e6472616973657220746f20696e7665737420696e2ef42a206070757263686173655f616d6f756e7460202d20416d6f756e74206f6620606f66666572696e675f61737365746020746f2070757263686173652eb9012a20606d61785f707269636560202d204d6178696d756d20707269636520746f207061792070657220756e6974206f6620606f66666572696e675f6173736574602c20496620604e6f6e6560746865726520617265206e6f20636f6e73747261696e7473206f6e2070726963652e69012a20607265636569707460202d204f66662d636861696e207265636569707420746f2075736520696e7374656164206f66206f6e2d636861696e2062616c616e636520696e206066756e64696e675f706f7274666f6c696f602e003423205065726d697373696f6e732c2a20506f7274666f6c696f44667265657a655f66756e647261697365720801386f66666572696e675f61737365749c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0001086964190401682f2ac2ab2a2f2046756e647261697365724964202f2ac2bb2a2f00021c50467265657a6520612066756e647261697365722e00942a20606f66666572696e675f617373657460202d20417373657420746f20667265657a652ea02a2060696460202d204944206f66207468652066756e6472616973657220746f20667265657a652e003423205065726d697373696f6e731c2a2041737365744c756e667265657a655f66756e647261697365720801386f66666572696e675f61737365749c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0001086964190401682f2ac2ab2a2f2046756e647261697365724964202f2ac2bb2a2f00031c58556e667265657a6520612066756e647261697365722e009c2a20606f66666572696e675f617373657460202d20417373657420746f20756e667265657a652ea82a2060696460202d204944206f66207468652066756e6472616973657220746f20756e667265657a652e003423205065726d697373696f6e731c2a204173736574606d6f646966795f66756e647261697365725f77696e646f771001386f66666572696e675f61737365749c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0001086964190401682f2ac2ab2a2f2046756e647261697365724964202f2ac2bb2a2f000114737461727420015c2f2ac2ab2a2f20543a3a4d6f6d656e74202f2ac2bb2a2f00010c656e64f0017c2f2ac2ab2a2f204f7074696f6e3c543a3a4d6f6d656e743e202f2ac2bb2a2f000424b44d6f64696679207468652074696d652077696e646f7720612066756e647261697365722069732061637469766500942a20606f66666572696e675f617373657460202d20417373657420746f206d6f646966792ea02a2060696460202d204944206f66207468652066756e6472616973657220746f206d6f646966792ea02a2060737461727460202d204e6577207374617274206f66207468652066756e647261697365722eb82a2060656e6460202d204e657720656e64206f66207468652066756e6472616973657220746f206d6f646966792e003423205065726d697373696f6e731c2a2041737365741073746f700801386f66666572696e675f61737365749c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0001086964190401682f2ac2ab2a2f2046756e647261697365724964202f2ac2bb2a2f00051c4853746f7020612066756e647261697365722e008c2a20606f66666572696e675f617373657460202d20417373657420746f2073746f702e982a2060696460202d204944206f66207468652066756e6472616973657220746f2073746f702e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e15080000021908001908082870616c6c65745f73746f245072696365546965720000080114746f74616c18011c42616c616e6365000114707269636518011c42616c616e636500001d0804184f7074696f6e04045401f1070108104e6f6e6500000010536f6d650400f10700000100002108083c70616c6c65745f74726561737572791043616c6c0404540001083064697362757273656d656e7404013462656e65666963696172696573250801b02f2ac2ab2a2f205665633c42656e65666963696172793c42616c616e63654f663c543e3e3e202f2ac2bb2a2f00001c51014974207472616e73666572732062616c616e6365732066726f6d20747265617375727920746f2065616368206f662062656e6566696369617269657320616e642074686520737065636966696320616d6f756e7444666f722065616368206f66207468656d2e001c23204572726f72c42a20604261644f726967696e603a204f6e6c7920726f6f742063616e2065786563757465207472616e73616374696f6e2e5d012a2060496e73756666696369656e7442616c616e6365603a2049662074726561737572792062616c616e636573206973206e6f7420656e6f75676820746f20636f76657220616c6c2062656e656669636961726965732e25012a2060496e76616c69644964656e74697479603a204966206f6e65206f66207468652062656e656669636961726965732068617320616e20696e76616c6964206964656e746974792e347265696d62757273656d656e74040118616d6f756e741801682f2ac2ab2a2f2042616c616e63654f663c543e202f2ac2bb2a2f00010c1d014974207472616e7366657273207468652073706563696669632060616d6f756e74602066726f6d20606f726967696e60206163636f756e7420696e746f2074726561737572792e0049014f6e6c79206163636f756e747320776869636820617265206173736f63696174656420746f20616e206964656e746974792063616e206d616b65206120646f6e6174696f6e20746f2074726561737572792e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e25080000022908002908084c706f6c796d6573685f7072696d6974697665732c42656e6566696369617279041c42616c616e636501180008010869647801284964656e746974794964000118616d6f756e7418011c42616c616e636500002d08083870616c6c65745f7574696c6974791043616c6c04045400011014626174636804011463616c6c73310801982f2ac2ab2a2f205665633c3c5420617320436f6e6669673e3a3a43616c6c3e202f2ac2bb2a2f000048c44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e00e8546869732077696c6c206578656375746520756e74696c20746865206669727374206f6e65206661696c7320616e64207468656e2073746f702e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e00202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e00bd01546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e31016576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e207468655501604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d6164654d01616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c65746564604c6576656e74206973206465706f73697465642e3062617463685f61746f6d696304011463616c6c73310801982f2ac2ab2a2f205665633c3c5420617320436f6e6669673e3a3a43616c6c3e202f2ac2bb2a2f00014cc44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e001501546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c2073746f7070696e6720617420746865206669727374206661696c7572652cc0696e207768696368206361736520746865207374617465206368616e6765732061726520726f6c6c6564206261636b2e25014f6e206661696c7572652c20616e206576656e7420604261746368496e746572727570746564286661696c7572655f6964782c206572726f722960206973206465706f73697465642e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e00202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e001501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef4546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ee4496620616e792063616c6c206661696c65642c207468656e20604261746368496e74657272757074656460206973206465706f73697465642e1501496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e4062617463685f6f7074696d697374696304011463616c6c73310801982f2ac2ab2a2f205665633c3c5420617320436f6e6669673e3a3a43616c6c3e202f2ac2bb2a2f000254c44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e000101546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c20697272657370656374697665206f66206661696c757265732e0901416e79206661696c757265732077696c6c20626520617661696c61626c6520696e2061206042617463684f7074696d69737469634661696c656460206576656e742e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e0000202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e001501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef4546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ef8496620616e792063616c6c206661696c65642c207468656e206042617463684f7074696d69737469634661696c656460206973206465706f73697465642cfc77697468206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c2061732077656c6c206173206120766563746f72286f66206572726f72732e1501496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e2072656c61795f74780c01187461726765740001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f0001247369676e6174757265f50701882f2ac2ab2a2f20543a3a4f6666436861696e5369676e6174757265202f2ac2bb2a2f00011063616c6c350801b42f2ac2ab2a2f20556e6971756543616c6c3c3c5420617320436f6e6669673e3a3a43616c6c3e202f2ac2bb2a2f000330a052656c617920612063616c6c20666f722061207461726765742066726f6d20616e206f726967696e00510152656c6179696e6720696e207468697320636f6e746578742072656665727320746f20746865206162696c697479206f66206f726967696e20746f206d616b6520612063616c6c206f6e20626568616c66206f661c7461726765742e00684665657320617265206368617267656420746f206f726967696e00302320506172616d6574657273842d2060746172676574603a204163636f756e7420746f2062652072656c61796564e82d20607369676e6174757265603a205369676e61747572652066726f6d2074617267657420617574686f72697a696e67207468652072656c6179c02d206063616c6c603a2043616c6c20746f2062652072656c61796564206f6e20626568616c66206f6620746172676574000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e3108000002e905003508083870616c6c65745f7574696c69747928556e6971756543616c6c04044301e905000801146e6f6e6365200148417574686f72697a6174696f6e4e6f6e636500011063616c6ce9050118426f783c433e00003908082c70616c6c65745f626173651043616c6c0404540001000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e3d08085870616c6c65745f65787465726e616c5f6167656e74731043616c6c040454000120306372656174655f67726f75700801187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0001147065726d73ac01882f2ac2ab2a2f2045787472696e7369635065726d697373696f6e73202f2ac2bb2a2f000048e443726561746573206120637573746f6d206167656e742067726f7570202841472920666f722074686520676976656e20607469636b6572602e00d45468652041472077696c6c206861766520746865207065726d697373696f6e7320617320676976656e20627920607065726d73602e290154686973206e6577204147206973207468656e2061737369676e656420606964203d204147496453657175656e63653a3a6765742829202b20316020617320697473206041474964602c3901776869636820796f752063616e2075736520617320604167656e7447726f75703a3a437573746f6d2869642960207768656e20616464696e67206167656e747320666f7220607469636b6572602e002c2320417267756d656e74739c2d20607469636b65726020746f206164642074686520637573746f6d2067726f757020666f722e902d20607065726d7360207468617420746865206e65772041472077696c6c20686176652e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e21012d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672e25012d2060436f756e7465724f766572666c6f776020696620604147496453657175656e63653a3a6765742829202b20316020776f756c642065786365656420607533323a3a4d4158602e003423205065726d697373696f6e731c2a2041737365741c2a204167656e74547365745f67726f75705f7065726d697373696f6e730c01187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0001086964110101482f2ac2ab2a2f2041474964202f2ac2bb2a2f0001147065726d73ac01882f2ac2ab2a2f2045787472696e7369635065726d697373696f6e73202f2ac2bb2a2f00013c51015570646174657320746865207065726d697373696f6e73206f662074686520637573746f6d204147206964656e74696669656420627920606964602c20666f722074686520676976656e20607469636b6572602e002c2320417267756d656e7473902d20607469636b6572602074686520637573746f6d2041472062656c6f6e677320746f2ea42d206069646020666f722074686520637573746f6d2041472077697468696e20607469636b6572602e942d20607065726d736020746f207570646174652074686520637573746f6d20414720746f2e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e21012d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672ecc2d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472e003423205065726d697373696f6e731c2a2041737365741c2a204167656e743072656d6f76655f6167656e740801187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0001146167656e747801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f0002389c52656d6f76652074686520676976656e20606167656e74602066726f6d20607469636b6572602e002c2320417267756d656e7473a82d20607469636b6572602074686174206861732074686520606167656e746020746f2072656d6f76652e802d20606167656e7460206f6620607469636b65726020746f2072656d6f76652e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ed82d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602ee82d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e746020697320746865206c6173742066756c6c206f6e652e003423205065726d697373696f6e731c2a2041737365741c2a204167656e742061626469636174650401187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f00032c804162646963617465206167656e747368697020666f7220607469636b6572602e002c2320417267756d656e7473ac2d20607469636b657260206f66207768696368207468652063616c6c657220697320616e206167656e742e002023204572726f7273e42d20604e6f74416e4167656e7460206966207468652063616c6c6572206973206e6f7420616e206167656e74206f6620607469636b6572602efc2d206052656d6f76696e674c61737446756c6c4167656e7460206966207468652063616c6c657220697320746865206c6173742066756c6c206167656e742e003423205065726d697373696f6e731c2a204173736574306368616e67655f67726f75700c01187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0001146167656e747801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f00011467726f75700d0101602f2ac2ab2a2f204167656e7447726f7570202f2ac2bb2a2f000440ec4368616e676520746865206167656e742067726f7570207468617420606167656e74602062656c6f6e677320746f20696e20607469636b6572602e002c2320417267756d656e7473802d20607469636b6572602074686174206861732074686520606167656e74602eb82d20606167656e7460206f6620607469636b65726020746f206368616e6765207468652067726f757020666f722ec82d206067726f757060207468617420606167656e74602077696c6c2062656c6f6e6720746f20696e20607469636b6572602e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ecc2d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472ed82d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602e2d012d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e7460207761732061206046756c6c60206f6e6520616e64206973206265696e672064656d6f7465642e003423205065726d697373696f6e731c2a2041737365741c2a204167656e744c6163636570745f6265636f6d655f6167656e7404011c617574685f69642001442f2ac2ab2a2f20753634202f2ac2bb2a2f000540010141636365707420616e20617574686f72697a6174696f6e20627920616e206167656e742022416c696365222077686f206973737565642060617574685f696460d8746f20616c736f206265636f6d6520616e206167656e74206f6620746865207469636b657220416c696365207370656369666965642e002c2320417267756d656e7473d02d2060617574685f696460206964656e74696679696e672074686520617574686f72697a6174696f6e20746f206163636570742e002023204572726f727345012d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e35012d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f69646020697320666f7220616e206175746820746861742068617320657870697265642e4d012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f7420666f72206120604265636f6d654167656e7460206175746820747970652e25012d2060556e617574686f72697a65644167656e74602069662022416c69636522206973206e6f74207065726d697373696f6e656420746f2070726f766964652074686520617574682e0d012d20604e6f53756368414760206966207468652067726f757020726566657272656420746f206120637573746f6d207468617420646f6573206e6f742065786973742e0d012d2060416c7265616479416e4167656e7460206966207468652063616c6c657220697320616c726561647920616e206167656e74206f6620746865207469636b65722e003423205065726d697373696f6e731c2a204167656e74646372656174655f67726f75705f616e645f6164645f617574680c01187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0001147065726d73ac01882f2ac2ab2a2f2045787472696e7369635065726d697373696f6e73202f2ac2bb2a2f000118746172676574690101942f2ac2ab2a2f205369676e61746f72793c543a3a4163636f756e7449643e202f2ac2bb2a2f000614e85574696c6974792065787472696e73696320746f20626174636820606372656174655f67726f75706020616e642020606164645f61757468602e003423205065726d697373696f6e731c2a2041737365741c2a204167656e74786372656174655f616e645f6368616e67655f637573746f6d5f67726f75700c01187469636b65729c01502f2ac2ab2a2f205469636b6572202f2ac2bb2a2f0001147065726d73ac01882f2ac2ab2a2f2045787472696e7369635065726d697373696f6e73202f2ac2bb2a2f0001146167656e747801602f2ac2ab2a2f204964656e746974794964202f2ac2bb2a2f00071455015574696c6974792065787472696e73696320746f20626174636820606372656174655f67726f75706020616e642020606368616e67655f67726f75706020666f7220637573746f6d2067726f757073206f6e6c792e003423205065726d697373696f6e731c2a2041737365741c2a204167656e740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e4108083870616c6c65745f72656c617965721043616c6c040454000118387365745f706179696e675f6b6579080120757365725f6b65790001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f00012c706f6c79785f6c696d69741801542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f000020bd014372656174657320616e20617574686f72697a6174696f6e20746f20616c6c6f772060757365725f6b65796020746f20616363657074207468652063616c6c65722028606f726967696e203d3d20706179696e675f6b6579602920617320746865697220737562736964697365722e002c2320417267756d656e74739c2d2060757365725f6b657960207468652075736572206b657920746f207375627369646973652ee42d2060706f6c79785f6c696d6974602074686520696e697469616c20504f4c5958206c696d697420666f72207468697320737562736964792e002023204572726f727331012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e446163636570745f706179696e675f6b657904011c617574685f69642001442f2ac2ab2a2f20753634202f2ac2bb2a2f000138944163636570747320612060706179696e675f6b65796020617574686f72697a6174696f6e2e002c2320417267756d656e7473e82d2060617574685f6964602074686520617574686f72697a6174696f6e20696420746f2061636365707420612060706179696e675f6b6579602e002023204572726f727345012d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e2d012d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f6964602074686520617574686f72697a6174696f6e2068617320657870697265642e6d012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f742061206041646452656c61796572506179696e674b65796020617574686f72697a6174696f6e2ea5012d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f206163636570742074686520617574686f72697a6174696f6e20666f72207468652060757365725f6b6579602ed9012d20604e6f74417574686f72697a6564466f72506179696e674b6579602069662074686520617574686f72697a6174696f6e20776173206372656174656420616e206964656e7469747920646966666572656e742066726f6d207468652060706179696e675f6b6579602773206964656e746974792e31012d2060557365724b65794364644d697373696e6760206966207468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e41012d2060506179696e674b65794364644d697373696e6760206966207468652060706179696e675f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e4472656d6f76655f706179696e675f6b6579080120757365725f6b65790001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f000128706179696e675f6b65790001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f00022cac52656d6f766573207468652060706179696e675f6b6579602066726f6d20612060757365725f6b6579602e002c2320417267756d656e7473d42d2060757365725f6b657960207468652075736572206b657920746f2072656d6f76652074686520737562736964792066726f6d2e09012d2060706179696e675f6b6579602074686520706179696e67206b6579207468617420776173207375627369646973696e67207468652060757365725f6b6579602e002023204572726f72738d012d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2072656d6f766520746865207375627369647920666f72207468652060757365725f6b6579602ef82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e31012d20604e6f74506179696e674b657960206966207468652060706179696e675f6b65796020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e487570646174655f706f6c79785f6c696d6974080120757365725f6b65790001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f00012c706f6c79785f6c696d69741801542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f000328b4557064617465732074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e35012d2060706f6c79785f6c696d6974602074686520616d6f756e74206f6620504f4c595820617661696c61626c6520666f72207375627369646973696e67207468652060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e50696e6372656173655f706f6c79785f6c696d6974080120757365725f6b65790001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f000118616d6f756e741801542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f00042cb8496e6372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e0d012d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2061646420746f207468652073756273696479206f662060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e3d012d20604f7665726c6f776020696620746865207375627369647927732072656d61696e696e6720504f4c595820776f756c642068617665206f766572666c6f7765642060753132383a3a4d4158602e5064656372656173655f706f6c79785f6c696d6974080120757365725f6b65790001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f000118616d6f756e741801542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f00052cb844656372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e21012d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2072656d6f76652066726f6d207468652073756273696479206f662060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e09012d20604f7665726c6f776020696620746865207375627369647920686173206c657373207468656e2060616d6f756e746020504f4c59582072656d61696e696e672e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e4508083870616c6c65745f726577617264731043616c6c04045400010840636c61696d5f69746e5f7265776172640c01387265776172645f616464726573730001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f00012c69746e5f616464726573730001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f0001247369676e6174757265f50701882f2ac2ab2a2f20543a3a4f6666436861696e5369676e6174757265202f2ac2bb2a2f00003450436c61696d20616e2049544e207265776172642e0030232320417267756d656e7473d82a206069746e5f61646472657373602073706563696679696e672074686520617761726465642061646472657373206f6e2049544e2ed42a20607369676e6174757265602061757468656e7469636174696e672074686520636c61696d20746f20746865207265776172642e7501202020546865207369676e61747572652073686f756c6420636f6e7461696e20607265776172645f616464726573736020666f6c6c6f7765642062792074686520737566666978206022636c61696d5f69746e5f72657761726422602cb8202020616e64206d7573742068617665206265656e207369676e6564206279206069746e5f61646472657373602e002023204572726f727345012a2060496e73756666696369656e7442616c616e636560202d2049746e20726577617264732068617320696e73756666696369656e742066756e647320746f20697373756520746865207265776172642e31012a2060496e76616c69645369676e617475726560202d20607369676e6174757265602068616420616e20696e76616c6964207369676e6572206f7220696e76616c6964206d6573736167652e69012a206049746e526577617264416c7265616479436c61696d656460202d205265776172642069737375656420746f20746865206069746e5f61646472657373602068617320616c7265616479206265656e20636c61696d65642e89012a2060556e6b6e6f776e49746e4164647265737360202d206069746e5f6164647265737360206973206e6f7420696e207468652072657761726473207461626c6520616e6420686173206e6f2072657761726420746f20626520636c61696d65642e547365745f69746e5f7265776172645f73746174757308012c69746e5f616464726573730001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f000118737461747573490801742f2ac2ab2a2f2049746e526577617264537461747573202f2ac2bb2a2f0001000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e4908083870616c6c65745f726577617264733c49746e52657761726453746174757300010824556e636c61696d6564040018011c42616c616e63650000001c436c61696d6564000100004d080848706f6c796d6573685f636f6e7472616374731043616c6c04045400010c1063616c6c140120636f6e74726163740001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f00011476616c75651801542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f0001246761735f6c696d69742001502f2ac2ab2a2f20576569676874202f2ac2bb2a2f00015473746f726167655f6465706f7369745f6c696d6974fd0301742f2ac2ab2a2f204f7074696f6e3c42616c616e63653e202f2ac2bb2a2f000110646174612801542f2ac2ab2a2f205665633c75383e202f2ac2bb2a2f000050fc43616c6c73207468652060636f6e747261637460207468726f75676820697473206164647265737320776974682074686520676976656e206064617461602e00ac54686520636f6e747261637420697320656e646f7765642077697468206076616c75656020504f4c59582c4101627574206e6f7465207468617420746869732069732064697374696e63742066726f6d20676173206665657320776869636820617265206c696d69746564207769746820606761735f6c696d6974602e00dc54686520636f6e7472616374206d6179206f7074696f6e616c6c792063616c6c206261636b20696e746f207468652072756e74696d652cc8657865637574696e672065787472696e73696373207375636820617320652e672e2c20606372656174655f6173736574602e8101447572696e6720737563682072756e74696d652063616c6c732c207468652063757272656e74206964656e746974792077696c6c20626520746865206f6e65207468617420696e7374616e7469617465207468652060636f6e7472616374602eb854686973207265737472696374696f6e2065786973747320666f7220736563757269747920707572706f7365732e002c2320417267756d656e7473542d2060636f6e74726163746020746f2063616c6c2ebc2d206076616c75656020696e20504f4c595820746f207472616e7366657220746f2074686520636f6e74726163742e41012d20606761735f6c696d6974602074686174206c696d69747320686f77206d7563682067617320657865637574696f6e2063616e20636f6e73756d652c206572726f72696e672061626f76652069742ed82d2060646174616020746f20626520696e7465727072657465642062792074686520736d61727420636f6e74726163742063616c6c2e002023204572726f727321012d20416c6c20746865206572726f727320696e206070616c6c65745f636f6e7472616374733a3a43616c6c3a3a63616c6c602063616e20616c736f2068617070656e20686572652e15012d2060436f6e74726163744e6f74466f756e64602069662060636f6e74726163746020646f65736e2774206578697374206f722069736e2774206120636f6e74726163742ef02d204344442f5065726d697373696f6e732061726520636865636b65642c20756e6c696b6520696e206070616c6c65745f636f6e747261637473602e54696e7374616e74696174655f776974685f636f64651c0124656e646f776d656e741801542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f0001246761735f6c696d69742001502f2ac2ab2a2f20576569676874202f2ac2bb2a2f00015473746f726167655f6465706f7369745f6c696d6974fd0301742f2ac2ab2a2f204f7074696f6e3c42616c616e63653e202f2ac2bb2a2f000110636f64652801542f2ac2ab2a2f205665633c75383e202f2ac2bb2a2f000110646174612801542f2ac2ab2a2f205665633c75383e202f2ac2bb2a2f00011073616c742801542f2ac2ab2a2f205665633c75383e202f2ac2bb2a2f0001147065726d739401642f2ac2ab2a2f205065726d697373696f6e73202f2ac2bb2a2f0001502d01496e7374616e746961746573206120736d61727420636f6e747261637420646566696e696e6720697420776974682074686520676976656e2060636f64656020616e64206073616c74602e00c454686520636f6e74726163742077696c6c2062652061747461636865642061732061207365636f6e64617279206b65792ce07769746820607065726d736020617320697473207065726d697373696f6e732c20746f20606f726967696e602773206964656e746974792e00e054686520636f6e7472616374206973207472616e736665727265642060656e646f776d656e746020616d6f756e74206f6620504f4c59582e98546869732069732064697374696e63742066726f6d2074686520606761735f6c696d6974602c1101776869636820636f6e74726f6c7320686f77206d7563682067617320746865206465706c6f796d656e7420636f6465206d6179206174206d6f737420636f6e73756d652e002c2320417267756d656e7473e82d2060656e646f776d656e746020616d6f756e74206f6620504f4c595820746f207472616e7366657220746f2074686520636f6e74726163742e55012d20606761735f6c696d69746020666f7220686f77206d756368206761732074686520606465706c6f796020636f646520696e2074686520636f6e7472616374206d6179206174206d6f737420636f6e73756d652ee82d2060636f646560207769746820746865205741534d2062696e61727920646566696e696e672074686520736d61727420636f6e74726163742eb82d206073616c7460207573656420666f7220636f6e747261637420616464726573732064657269766174696f6e2e210120202042792076617279696e6720746869732c207468652073616d652060636f6465602063616e206265207573656420756e646572207468652073616d65206964656e746974792e002023204572726f727365012d20416c6c20746865206572726f727320696e206070616c6c65745f636f6e7472616374733a3a43616c6c3a3a696e7374616e74696174655f776974685f636f6465602063616e20616c736f2068617070656e20686572652ef02d204344442f5065726d697373696f6e732061726520636865636b65642c20756e6c696b6520696e206070616c6c65745f636f6e747261637473602e21012d204572726f72732074686174206172697365207768656e20616464696e672061206e6577207365636f6e64617279206b65792063616e20616c736f206f6363757220686572652e54696e7374616e74696174655f776974685f686173681c0124656e646f776d656e741801542f2ac2ab2a2f2042616c616e6365202f2ac2bb2a2f0001246761735f6c696d69742001502f2ac2ab2a2f20576569676874202f2ac2bb2a2f00015473746f726167655f6465706f7369745f6c696d6974fd0301742f2ac2ab2a2f204f7074696f6e3c42616c616e63653e202f2ac2bb2a2f000124636f64655f686173682401642f2ac2ab2a2f20436f6465486173683c543e202f2ac2bb2a2f000110646174612801542f2ac2ab2a2f205665633c75383e202f2ac2bb2a2f00011073616c742801542f2ac2ab2a2f205665633c75383e202f2ac2bb2a2f0001147065726d739401642f2ac2ab2a2f205065726d697373696f6e73202f2ac2bb2a2f00025c3901496e7374616e746961746573206120736d61727420636f6e747261637420646566696e696e67207573696e672074686520676976656e2060636f64655f686173686020616e64206073616c74602e007c556e6c696b652060696e7374616e74696174655f776974685f636f6465602c69017468697320617373756d65732074686174206174206c65617374206f6e6520636f6e74726163742077697468207468652073616d65205741534d20636f64652068617320616c7265616479206265656e2075706c6f616465642e00c454686520636f6e74726163742077696c6c2062652061747461636865642061732061207365636f6e64617279206b65792ce07769746820607065726d736020617320697473207065726d697373696f6e732c20746f20606f726967696e602773206964656e746974792e00e054686520636f6e7472616374206973207472616e736665727265642060656e646f776d656e746020616d6f756e74206f6620504f4c59582e98546869732069732064697374696e63742066726f6d2074686520606761735f6c696d6974602c1101776869636820636f6e74726f6c7320686f77206d7563682067617320746865206465706c6f796d656e7420636f6465206d6179206174206d6f737420636f6e73756d652e002c2320417267756d656e7473e82d2060656e646f776d656e746020616d6f756e74206f6620504f4c595820746f207472616e7366657220746f2074686520636f6e74726163742e55012d20606761735f6c696d69746020666f7220686f77206d756368206761732074686520606465706c6f796020636f646520696e2074686520636f6e7472616374206d6179206174206d6f737420636f6e73756d652ec42d2060636f64655f6861736860206f6620616e20616c72656164792075706c6f61646564205741534d2062696e6172792eb82d206073616c7460207573656420666f7220636f6e747261637420616464726573732064657269766174696f6e2e210120202042792076617279696e6720746869732c207468652073616d652060636f6465602063616e206265207573656420756e646572207468652073616d65206964656e746974792e002023204572726f72733d012d20416c6c20746865206572726f727320696e206070616c6c65745f636f6e7472616374733a3a43616c6c3a3a696e7374616e7469617465602063616e20616c736f2068617070656e20686572652ef02d204344442f5065726d697373696f6e732061726520636865636b65642c20756e6c696b6520696e206070616c6c65745f636f6e747261637473602e21012d204572726f72732074686174206172697365207768656e20616464696e672061206e6577207365636f6e64617279206b65792063616e20616c736f206f6363757220686572652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e51080c3c70616c6c65745f707265696d6167651870616c6c65741043616c6c040454000110346e6f74655f707265696d616765040114627974657328011c5665633c75383e000010745265676973746572206120707265696d616765206f6e2d636861696e2e00550149662074686520707265696d616765207761732070726576696f75736c79207265717565737465642c206e6f2066656573206f72206465706f73697473206172652074616b656e20666f722070726f766964696e67550174686520707265696d6167652e204f74686572776973652c2061206465706f7369742069732074616b656e2070726f706f7274696f6e616c20746f207468652073697a65206f662074686520707265696d6167652e3c756e6e6f74655f707265696d6167650401106861736824011c543a3a48617368000104dc436c65617220616e20756e72657175657374656420707265696d6167652066726f6d207468652072756e74696d652073746f726167652e40726571756573745f707265696d6167650401106861736824011c543a3a48617368000210410152657175657374206120707265696d6167652062652075706c6f6164656420746f2074686520636861696e20776974686f757420706179696e6720616e792066656573206f72206465706f736974732e00550149662074686520707265696d6167652072657175657374732068617320616c7265616479206265656e2070726f7669646564206f6e2d636861696e2c20776520756e7265736572766520616e79206465706f7369743901612075736572206d6179206861766520706169642c20616e642074616b652074686520636f6e74726f6c206f662074686520707265696d616765206f7574206f662074686569722068616e64732e48756e726571756573745f707265696d6167650401106861736824011c543a3a4861736800030cbc436c65617220612070726576696f75736c79206d616465207265717565737420666f72206120707265696d6167652e002d014e4f54453a2054484953204d555354204e4f542042452043414c4c4544204f4e20606861736860204d4f52452054494d4553205448414e2060726571756573745f707265696d616765602e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e5508084470616c6c65745f746573745f7574696c731043616c6c0404540001103072656769737465725f64696408010c756964690401642f2ac2ab2a2f20496e766573746f72556964202f2ac2bb2a2f0001387365636f6e646172795f6b6579738c01b42f2ac2ab2a2f205665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e202f2ac2bb2a2f0000284d0147656e6572617465732061206e657720604964656e7469747949446020666f72207468652063616c6c65722c20616e642069737375657320612073656c662d67656e6572617465642043444420636c61696d2e00f05468652063616c6c6572206163636f756e742077696c6c20626520746865207072696d617279206b6579206f662074686174206964656e746974792e5d01466f722065616368206163636f756e74206f6620607365636f6e646172795f6b657973602c2061206e657720604a6f696e4964656e746974796020617574686f72697a6174696f6e20697320637265617465642c20736f410165616368206f66207468656d2077696c6c206e65656420746f20616363657074206974206265666f7265206265636f6d652070617274206f662074686973206e657720604964656e746974794944602e002023204572726f7273d5012d2060416c72656164794c696e6b656460206966207468652063616c6c6572206163636f756e74206f7220696620616e79206f662074686520676976656e20607365636f6e646172795f6b657973602068617320616c7265616479206c696e6b656420746f20616e20604964656e746974794944604d012d20605365636f6e646172794b657973436f6e7461696e5072696d6172794b65796020696620607365636f6e646172795f6b6579736020636f6e7461696e73207468652063616c6c6572206163636f756e742ee82d2060446964416c726561647945786973747360206966206175746f2d67656e6572617465642044494420616c7265616479206578697374732e546d6f636b5f6364645f72656769737465725f6469640401387461726765745f6163636f756e740001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f0001303d015265676973746572732061206e6577204964656e7469747920666f722074686520607461726765745f6163636f756e746020616e642069737375657320612043444420636c61696d20746f2069742e510154686520496e766573746f72205549442069732067656e6572617465642064657465726d696e6973746963616c6c79206279207468652068617368206f66207468652067656e6572617465642044494420616e64b07468656e2077652066697820697420746f20626520636f6d706c69616e74207769746820555549442076342e00142320536565dc2d205b52464320343132323a20555549445d2868747470733a2f2f746f6f6c732e696574662e6f72672f68746d6c2f7266633431323229002423204661696c75726549012d20606f726967696e602068617320746f20626520616e20616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792e286765745f6d795f64696400020498456d69747320616e206576656e7420776974682063616c6c65722773206964656e746974792e286765745f6364645f6f660401086f660001682f2ac2ab2a2f20543a3a4163636f756e744964202f2ac2bb2a2f000304d4456d69747320616e206576656e7420776974682063616c6c65722773206964656e7469747920616e6420434444207374617475732e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e5908084070616c6c65745f636f6d6d697474656534506f6c796d657368566f746573042c426c6f636b4e756d626572011000100114696e64657810013450726f706f73616c496e646578000110617965732101013c5665633c4964656e7469747949643e0001106e6179732101013c5665633c4964656e7469747949643e0001186578706972793501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00005d08084070616c6c65745f636f6d6d69747465651c56657273696f6e00000400080108753800006108084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e006508083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e006908084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e006d08083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e007108084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e007508083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00790800000408006901007d080000040800200081080000040800e9050085080000040c00690120008908083c70616c6c65745f6d756c74697369673c50726f706f73616c44657461696c73040454012000140124617070726f76616c7320010c75363400012872656a656374696f6e7320010c7536340001187374617475738d08013850726f706f73616c537461747573000118657870697279f001244f7074696f6e3c543e0001286175746f5f636c6f736515010110626f6f6c00008d08083c70616c6c65745f6d756c74697369673850726f706f73616c5374617475730001141c496e76616c69640000003c4163746976654f72457870697265640001004c457865637574696f6e5375636365737366756c0002003c457865637574696f6e4661696c65640003002052656a6563746564000400009108083c70616c6c65745f6d756c74697369671c56657273696f6e00000400080108753800009508083c70616c6c65745f6d756c7469736967144572726f72040454000164284364644d697373696e67000004c4546865206d756c7469736967206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e3c50726f706f73616c4d697373696e67000104705468652070726f706f73616c20646f6573206e6f742065786973742e344465636f64696e674572726f72000204444d756c746973696720616464726573732e244e6f5369676e6572730003042c4e6f207369676e6572732e7452657175697265645369676e6174757265734f75744f66426f756e6473000404a0546f6f20666577206f7220746f6f206d616e79207265717569726564207369676e6174757265732e284e6f74415369676e6572000504344e6f742061207369676e65722e384e6f537563684d756c7469736967000604444e6f2073756368206d756c74697369672e404e6f74456e6f7567685369676e6572730007044c4e6f7420656e6f756768207369676e6572732e344e6f6e63654f766572666c6f770008044441206e6f6e6365206f766572666c6f772e30416c7265616479566f74656400090438416c726561647920766f7465642e38416c7265616479415369676e6572000a0444416c72656164792061207369676e65722e444661696c6564546f436861726765466565000b04a0436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e484964656e746974794e6f7443726561746f72000c04c04964656e746974792070726f7669646564206973206e6f7420746865206d756c746973696727732063726561746f722e404368616e67654e6f74416c6c6f776564000d0425014368616e67696e67206d756c746973696720706172616d6574657273206e6f7420616c6c6f7765642073696e6365206d756c74697369672069732061207072696d617279206b65792e745369676e6572416c72656164794c696e6b6564546f4d756c7469736967000e0411015369676e657220697320616e206163636f756e74206b6579207468617420697320616c7265616479206173736f63696174656420776974682061206d756c74697369672e745369676e6572416c72656164794c696e6b6564546f4964656e74697479000f0415015369676e657220697320616e206163636f756e74206b6579207468617420697320616c7265616479206173736f636961746564207769746820616e206964656e746974792e804d756c74697369674e6f74416c6c6f776564546f4c696e6b546f497473656c66001004bc4d756c7469736967206e6f7420616c6c6f77656420746f2061646420697473656c662061732061207369676e65722e584d697373696e6743757272656e744964656e746974790011045843757272656e7420444944206973206d697373696e67344e6f745072696d6172794b6579001204f45468652066756e6374696f6e2063616e206f6e6c792062652063616c6c656420627920746865207072696d617279206b6579206f6620746865206469645c50726f706f73616c416c726561647952656a65637465640013047450726f706f73616c207761732072656a6563746564206561726c6965723c50726f706f73616c457870697265640014045050726f706f73616c2068617320657870697265645c50726f706f73616c416c726561647945786563757465640015047450726f706f73616c20776173206578656375746564206561726c6965725c4d756c74697369674d697373696e674964656e746974790016049c4d756c7469736967206973206e6f7420617474616368656420746f20616e206964656e74697479404661696c6564546f5363686564756c65001704785363686564756c696e67206f6620612070726f706f73616c206661696c7338546f6f4d616e795369676e6572730018046c4d6f7265207369676e657273207468616e2072657175697265642e045c4d756c7469736967206d6f64756c65206572726f72732e9908000004080010009d08083470616c6c65745f62726964676538427269646765547844657461696c042c426c6f636b4e756d626572011000100118616d6f756e7418011c42616c616e6365000118737461747573a1080138427269646765547853746174757300013c657865637574696f6e5f626c6f636b10012c426c6f636b4e756d62657200011c74785f68617368240110483235360000a108083470616c6c65745f62726964676538427269646765547853746174757300011418416273656e740000001c50656e64696e67040008010875380001001846726f7a656e0002002854696d656c6f636b65640003001c48616e646c656400040000a50800000408181000a908083470616c6c65745f6272696467651c56657273696f6e0000040008010875380000ad08083470616c6c65745f627269646765144572726f7204045400013440436f6e74726f6c6c65724e6f74536574000004a45468652062726964676520636f6e74726f6c6c65722061646472657373206973206e6f74207365742e2442616443616c6c6572000104d8546865206f726967696e206973206e6f742074686520636f6e74726f6c6c6572206f72207468652061646d696e20616464726573732e2042616441646d696e00020490546865206f726967696e206973206e6f74207468652061646d696e20616464726573732e284e6f56616c69644364640003048c54686520726563697069656e742044494420686173206e6f2076616c6964204344442e5850726f706f73616c416c726561647948616e646c6564000404390154686520627269646765207472616e73616374696f6e2070726f706f73616c2068617320616c7265616479206265656e2068616e646c656420616e64207468652066756e6473206d696e7465642e30556e617574686f72697a656400050494556e617574686f72697a656420746f20706572666f726d20616e206f7065726174696f6e2e1846726f7a656e000604745468652062726964676520697320616c72656164792066726f7a656e2e244e6f7446726f7a656e0007046454686520627269646765206973206e6f742066726f7a656e2e2046726f7a656e547800080468546865207472616e73616374696f6e2069732066726f7a656e2e484272696467654c696d697452656163686564000904e4546865206964656e746974792773206d696e74656420746f74616c2068617320726561636865642074686520627269646765206c696d69742e204f766572666c6f77000a04ac546865206964656e746974792773206d696e74656420746f74616c20686173206f766572666c6f7765642e384469766973696f6e42795a65726f000b04cc54686520626c6f636b20696e74657276616c206475726174696f6e206973207a65726f2e2043616e6e6f74206469766964652e3054696d656c6f636b65645478000c0478546865207472616e73616374696f6e2069732074696d656c6f636b65642e00b108083870616c6c65745f7374616b696e67345374616b696e674c656467657208244163636f756e74496401001c42616c616e636501180014011473746173680001244163636f756e744964000114746f74616cc901011c42616c616e6365000118616374697665c901011c42616c616e6365000124756e6c6f636b696e67b50801645665633c556e6c6f636b4368756e6b3c42616c616e63653e3e00013c636c61696d65645f72657761726473390401345665633c457261496e6465783e0000b508000002b90800b908083870616c6c65745f7374616b696e672c556e6c6f636b4368756e6b041c42616c616e636501180008011476616c7565c901011c42616c616e636500010c6572617d040120457261496e6465780000bd08083870616c6c65745f7374616b696e672c4e6f6d696e6174696f6e7304244163636f756e7449640100000c011c74617267657473e801385665633c4163636f756e7449643e0001307375626d69747465645f696e100120457261496e6465780001287375707072657373656415010110626f6f6c0000c108083870616c6c65745f7374616b696e6734416374697665457261496e666f0000080114696e646578100120457261496e6465780001147374617274f0012c4f7074696f6e3c7536343e0000c50800000408100000c908083870616c6c65745f7374616b696e673c457261526577617264506f696e747304244163636f756e744964010000080114746f74616c10012c526577617264506f696e74000128696e646976696475616ccd08018042547265654d61703c4163636f756e7449642c20526577617264506f696e743e0000cd08042042547265654d617008044b010004560110000400d108000000d108000002990800d508083870616c6c65745f7374616b696e671c466f7263696e67000110284e6f74466f7263696e6700000020466f7263654e657700010024466f7263654e6f6e650002002c466f726365416c7761797300030000d908000002dd0800dd08083870616c6c65745f7374616b696e6738556e6170706c696564536c61736808244163636f756e74496401001c42616c616e636501180014012476616c696461746f720001244163636f756e74496400010c6f776e18011c42616c616e63650001186f7468657273e10801645665633c284163636f756e7449642c2042616c616e6365293e0001247265706f7274657273e801385665633c4163636f756e7449643e0001187061796f757418011c42616c616e63650000e108000002e50800e50800000408001800e9080000040889011800ed080c3870616c6c65745f7374616b696e6720736c617368696e6734536c617368696e675370616e7300001001287370616e5f696e6465781001245370616e496e6465780001286c6173745f7374617274100120457261496e6465780001486c6173745f6e6f6e7a65726f5f736c617368100120457261496e6465780001147072696f72390401345665633c457261496e6465783e0000f1080c3870616c6c65745f7374616b696e6720736c617368696e67285370616e5265636f7264041c42616c616e636501180008011c736c617368656418011c42616c616e6365000120706169645f6f757418011c42616c616e63650000f508083870616c6c65745f7374616b696e6738456c656374696f6e526573756c7408244163636f756e74496401001c42616c616e63650118000c013c656c65637465645f73746173686573e801385665633c4163636f756e7449643e0001246578706f7375726573bd0101b85665633c284163636f756e7449642c204578706f737572653c4163636f756e7449642c2042616c616e63653e293e00011c636f6d707574658501013c456c656374696f6e436f6d707574650000f908083870616c6c65745f7374616b696e6738456c656374696f6e537461747573042c426c6f636b4e756d6265720110010818436c6f736564000000104f70656e040010012c426c6f636b4e756d62657200010000fd08083870616c6c65745f7374616b696e67645065726d697373696f6e65644964656e7469747950726566730000080138696e74656e6465645f636f756e7410010c75333200013472756e6e696e675f636f756e7410010c75333200000109083870616c6c65745f7374616b696e672052656c65617365730001203456315f305f30416e6369656e740000001856325f305f300001001856335f305f300002001856345f305f300003001856355f305f300004001856365f305f300005001856365f305f310006001856375f305f30000700000509083870616c6c65745f7374616b696e67144572726f720404540001a8344e6f74436f6e74726f6c6c6572000004644e6f74206120636f6e74726f6c6c6572206163636f756e742e204e6f745374617368000104504e6f742061207374617368206163636f756e742e34416c7265616479426f6e64656400020460537461736820697320616c726561647920626f6e6465642e34416c726561647950616972656400030474436f6e74726f6c6c657220697320616c7265616479207061697265642e30456d7074795461726765747300040460546172676574732063616e6e6f7420626520656d7074792e44496e76616c6964536c617368496e64657800050484536c617368207265636f726420696e646578206f7574206f6620626f756e64732e44496e73756666696369656e7456616c7565000604c843616e206e6f7420626f6e6420776974682076616c7565206c657373207468616e206d696e696d756d2062616c616e63652e304e6f4d6f72654368756e6b730007049043616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b732e344e6f556e6c6f636b4368756e6b000804a043616e206e6f74207265626f6e6420776974686f757420756e6c6f636b696e67206368756e6b732e3046756e646564546172676574000904c8417474656d7074696e6720746f2074617267657420612073746173682074686174207374696c6c206861732066756e64732e48496e76616c6964457261546f526577617264000a0458496e76616c69642065726120746f207265776172642e484e6f74536f72746564416e64556e69717565000b04804974656d7320617265206e6f7420736f7274656420616e6420756e697175652e38416c7265616479436c61696d6564000c0409015265776172647320666f72207468697320657261206861766520616c7265616479206265656e20636c61696d656420666f7220746869732076616c696461746f722e7c4f6666636861696e456c656374696f6e4561726c795375626d697373696f6e000d04e0546865207375626d697474656420726573756c74206973207265636569766564206f7574206f6620746865206f70656e2077696e646f772e784f6666636861696e456c656374696f6e5765616b5375626d697373696f6e000e04fc546865207375626d697474656420726573756c74206973206e6f7420617320676f6f6420617320746865206f6e652073746f726564206f6e20636861696e2e4c536e617073686f74556e617661696c61626c65000f04cc54686520736e617073686f742064617461206f66207468652063757272656e742077696e646f77206973206d697373696e672e804f6666636861696e456c656374696f6e426f67757357696e6e6572436f756e74001004ac496e636f7272656374206e756d626572206f662077696e6e65727320776572652070726573656e7465642e6c4f6666636861696e456c656374696f6e426f67757357696e6e65720011085d014f6e65206f6620746865207375626d69747465642077696e6e657273206973206e6f7420616e206163746976652063616e646964617465206f6e20636861696e2028696e646578206973206f7574206f662072616e676534696e20736e617073686f74292e704f6666636861696e456c656374696f6e426f677573436f6d7061637400120859014572726f72207768696c65206275696c64696e67207468652061737369676e6d656e7420747970652066726f6d2074686520636f6d706163742e20546869732063616e2068617070656e20696620616e20696e646578a4697320696e76616c69642c206f72206966207468652077656967687473205f6f766572666c6f775f2e784f6666636861696e456c656374696f6e426f6775734e6f6d696e61746f7200130411014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f7273206973206e6f7420616e20616374697665206e6f6d696e61746f72206f6e20636861696e2e7c4f6666636861696e456c656374696f6e426f6775734e6f6d696e6174696f6e00140449014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e206564676520746f20776869636820746865792068617665206e6f7420766f746564206f6e20636861696e2e844f6666636861696e456c656374696f6e536c61736865644e6f6d696e6174696f6e0015085d014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e2065646765207768696368206973207375626d6974746564206265666f726520746865206c617374206e6f6e2d7a65726f50736c617368206f6620746865207461726765742e744f6666636861696e456c656374696f6e426f67757353656c66566f74650016042101412073656c6620766f7465206d757374206f6e6c79206265206f726967696e617465642066726f6d20612076616c696461746f7220746f204f4e4c59207468656d73656c7665732e644f6666636861696e456c656374696f6e426f677573456467650017044101546865207375626d697474656420726573756c742068617320756e6b6e6f776e206564676573207468617420617265206e6f7420616d6f6e67207468652070726573656e7465642077696e6e6572732e684f6666636861696e456c656374696f6e426f67757353636f7265001804150154686520636c61696d65642073636f726520646f6573206e6f74206d61746368207769746820746865206f6e6520636f6d70757465642066726f6d2074686520646174612e844f6666636861696e456c656374696f6e426f677573456c656374696f6e53697a650019047454686520656c656374696f6e2073697a6520697320696e76616c69642e3843616c6c4e6f74416c6c6f776564001a0445015468652063616c6c206973206e6f7420616c6c6f7765642061742074686520676976656e2074696d652064756520746f207265737472696374696f6e73206f6620656c656374696f6e20706572696f642e58496e636f7272656374536c617368696e675370616e73001b04b0496e636f7272656374206e756d626572206f6620736c617368696e67207370616e732070726f76696465642e34416c7265616479457869737473001c04985065726d697373696f6e65642076616c696461746f7220616c7265616479206578697374732e244e6f74457869737473001d04885065726d697373696f6e65642076616c696461746f72206e6f74206578697374732e204e6f4368616e6765001e04605570646174657320776974682073616d652076616c75652e60496e76616c696456616c696461746f724964656e74697479001f04b8476976656e20706f74656e7469616c2076616c696461746f72206964656e7469747920697320696e76616c69642e68496e76616c696456616c696461746f72436f6d6d697373696f6e0020049c56616c696461746f7220707265667320617265206e6f7420696e2076616c69642072616e67652e6453746173684964656e74697479446f65734e6f744578697374002104d456616c696461746f72206f72206e6f6d696e61746f72207374617368206964656e7469747920646f6573206e6f742065786973742e7053746173684964656e746974794e6f745065726d697373696f6e6564002204b856616c696461746f72207374617368206964656e7469747920776173206e6f74207065726d697373696f6e65642e5453746173684964656e746974794e6f744344446564002304784e6f6d696e61746f7220737461736820776173206e6f742043444465642e64486974496e74656e64656456616c696461746f72436f756e74002404bc52756e6e696e672076616c696461746f7220636f756e74206869742074686520696e74656e64656420636f756e742e98496e74656e646564436f756e744973457863656564696e67436f6e73656e7375734c696d697400250435015768656e2074686520696e74656e646564206e756d626572206f662076616c696461746f727320746f2072756e206973203e3d20322f33206f66206076616c696461746f725f636f756e74602e30426f6e64546f6f536d616c6c002604dc5768656e2074686520616d6f756e7420746f20626520626f6e646564206973206c657373207468616e20604d696e696d756d426f6e64602042616453746174650027043901496e7465726e616c20737461746520686173206265636f6d6520736f6d65686f7720636f7272757074656420616e6420746865206f7065726174696f6e2063616e6e6f7420636f6e74696e75652e38546f6f4d616e795461726765747300280494546f6f206d616e79206e6f6d696e6174696f6e207461726765747320737570706c6965642e244261645461726765740029043d0141206e6f6d696e6174696f6e207461726765742077617320737570706c69656420746861742077617320626c6f636b6564206f72206f7468657277697365206e6f7420612076616c696461746f722e04744572726f7220666f7220746865207374616b696e67206d6f64756c652e09090c2873705f7374616b696e671c6f6666656e6365384f6666656e636544657461696c7308205265706f727465720100204f6666656e64657201c101000801206f6666656e646572c10101204f6666656e6465720001247265706f7274657273e801345665633c5265706f727465723e00000d0900000408950128001109000002150900150900000408001107001909000004081d0928001d090c1c73705f636f72651863727970746f244b65795479706549640000040038011c5b75383b20345d000021090c3870616c6c65745f73657373696f6e1870616c6c6574144572726f7204045400011430496e76616c696450726f6f6600000460496e76616c6964206f776e6572736869702070726f6f662e5c4e6f4173736f63696174656456616c696461746f7249640001049c4e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e344475706c6963617465644b65790002046452656769737465726564206475706c6963617465206b65792e184e6f4b657973000304a44e6f206b65797320617265206173736f63696174656420776974682074686973206163636f756e742e244e6f4163636f756e7400040419014b65792073657474696e67206163636f756e74206973206e6f74206c6976652c20736f206974277320696d706f737369626c6520746f206173736f6369617465206b6579732e04744572726f7220666f72207468652073657373696f6e2070616c6c65742e2509083870616c6c65745f6772616e6470612c53746f726564537461746504044e01100110104c6976650000003050656e64696e6750617573650801307363686564756c65645f61741001044e00011464656c61791001044e000100185061757365640002003450656e64696e67526573756d650801307363686564756c65645f61741001044e00011464656c61791001044e000300002909083870616c6c65745f6772616e6470614c53746f72656450656e64696e674368616e676508044e0110144c696d697400001001307363686564756c65645f61741001044e00011464656c61791001044e0001406e6578745f617574686f7269746965732d09016c426f756e646564417574686f726974794c6973743c4c696d69743e000118666f72636564310601244f7074696f6e3c4e3e00002d0910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401a501045300000400a10101185665633c543e000031090c3870616c6c65745f6772616e6470611870616c6c6574144572726f7204045400011c2c50617573654661696c65640000080501417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665a42865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e30526573756d654661696c65640001081101417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e277420706175736564a028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e344368616e676550656e64696e67000204e8417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e1c546f6f536f6f6e000304bc43616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e60496e76616c69644b65794f776e65727368697050726f6f66000404310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f660005043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400060415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909350910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401b501045300000400390901185665633c543e00003909000002b501003d0910346672616d655f737570706f727418747261697473106d69736334577261707065724f70617175650404540141090008007d04000000410901045400004109084070616c6c65745f696d5f6f6e6c696e6564426f756e6465644f70617175654e6574776f726b53746174650c4c506565724964456e636f64696e674c696d697400584d756c746941646472456e636f64696e674c696d697400384164647265737365734c696d6974000008011c706565725f69644509019c5765616b426f756e6465645665633c75382c20506565724964456e636f64696e674c696d69743e00014865787465726e616c5f6164647265737365734909012d015765616b426f756e6465645665633c5765616b426f756e6465645665633c75382c204d756c746941646472456e636f64696e674c696d69743e2c204164647265737365734c696d69740a3e0000450910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401080453000004002801185665633c543e0000490910346672616d655f737570706f72741c73746f72616765407765616b5f626f756e6465645f766563385765616b426f756e6465645665630804540145090453000004004d0901185665633c543e00004d0900000245090051090c4070616c6c65745f696d5f6f6e6c696e651870616c6c6574144572726f7204045400010828496e76616c69644b6579000004604e6f6e206578697374656e74207075626c6963206b65792e4c4475706c696361746564486561727462656174000104544475706c696361746564206865617274626561742e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909550910346672616d655f737570706f72741c73746f726167652c626f756e6465645f76656328426f756e6465645665630804540124045300000400710401185665633c543e00005909082c70616c6c65745f7375646f144572726f720404540001042c526571756972655375646f0000047c53656e646572206d75737420626520746865205375646f206163636f756e7404644572726f7220666f7220746865205375646f206d6f64756c655d09083070616c6c65745f6173736574485469636b6572526567697374726174696f6e0404550120000801146f776e65727801284964656e746974794964000118657870697279f001244f7074696f6e3c553e00006109083070616c6c65745f6173736574345365637572697479546f6b656e0000100130746f74616c5f737570706c7918011c42616c616e63650001246f776e65725f6469647801284964656e746974794964000124646976697369626c6515010110626f6f6c00012861737365745f74797065e101012441737365745479706500006509000004089c78006909000004089cdd01006d0900000408789c007109083070616c6c65745f61737365745841737365744f776e65727368697052656c6174696f6e00010c204e6f744f776e65640000002c5469636b65724f776e65640001002841737365744f776e6564000200007509000004089cfd01007909083070616c6c65745f617373657464436c61737369635469636b6572526567697374726174696f6e00000801246574685f6f776e65722d02013c457468657265756d4164647265737300012869735f6372656174656415010110626f6f6c00007d09000004087878008109000004089c8507008509000004089c4102008909000004089c4502008d09083070616c6c65745f61737365741c56657273696f6e00000400080108753800009109083070616c6c65745f6173736574144572726f7204045400019830556e617574686f72697a65640000046c5468652075736572206973206e6f7420617574686f72697a65642e3c416c72656164794172636869766564000104805768656e20657874656e73696f6e20616c72656164792061726368697665642e44416c7265616479556e41726368697665640002048c5768656e20657874656e73696f6e20616c726561647920756e2d61726368697665642e5c457874656e73696f6e416c726561647950726573656e74000304805768656e20657874656e73696f6e20697320616c72656164792061646465642e4c4173736574416c7265616479437265617465640004048c54686520746f6b656e2068617320616c7265616479206265656e20637265617465642e345469636b6572546f6f4c6f6e6700050490546865207469636b6572206c656e677468206973206f76657220746865206c696d69742e385469636b65724e6f7441736369690006049c546865207469636b657220686173206e6f6e2d61736369692d656e636f6465642070617274732e5c5469636b6572416c726561647952656769737465726564000704c4546865207469636b657220697320616c7265616479207265676973746572656420746f20736f6d656f6e6520656c73652e54546f74616c537570706c7941626f76654c696d69740008049054686520746f74616c20737570706c792069732061626f766520746865206c696d69742e2c4e6f537563684173736574000904384e6f207375636820746f6b656e2e34416c726561647946726f7a656e000a047054686520746f6b656e20697320616c72656164792066726f7a656e2e284e6f74416e4f776e6572000b04984e6f7420616e206f776e6572206f662074686520746f6b656e206f6e20457468657265756d2e3c42616c616e63654f766572666c6f77000c04a8416e206f766572666c6f77207768696c652063616c63756c6174696e67207468652062616c616e63652e4c546f74616c537570706c794f766572666c6f77000d04bc416e206f766572666c6f77207768696c652063616c63756c6174696e672074686520746f74616c20737570706c792e48496e76616c69644772616e756c6172697479000e045c416e20696e76616c6964206772616e756c61726974792e244e6f7446726f7a656e000f0464546865206173736574206d7573742062652066726f7a656e2e3c496e76616c69645472616e73666572001004845472616e736665722076616c69646174696f6e20636865636b206661696c65642e4c496e73756666696369656e7442616c616e6365001104945468652073656e6465722062616c616e6365206973206e6f742073756666696369656e742e544173736574416c7265616479446976697369626c650012047c54686520746f6b656e20697320616c726561647920646976697369626c652e784d6178696d756d544d457874656e73696f6e4c696d69745265616368656400130499014e756d626572206f66205472616e73666572204d616e6167657220657874656e73696f6e7320617474616368656420746f20616e20617373657420697320657175616c20746f204d61784e756d6265724f66544d457874656e73696f6e466f7241737365742e70496e636f6d70617469626c65457874656e73696f6e56657273696f6e001404dc476976656e20736d61727420657874656e73696f6e206973206e6f7420636f6d70617469626c652077697468207468652061737365742e60496e76616c6964457468657265756d5369676e617475726500150494416e20696e76616c696420457468657265756d206045636473615369676e6174757265602e4c4e6f53756368436c61737369635469636b65720016049854686520676976656e207469636b6572206973206e6f74206120636c6173736963206f6e652e645469636b6572526567697374726174696f6e457870697265640017048c526567697374726174696f6e206f66207469636b65722068617320657870697265642e5053656e64657253616d6541735265636569766572001804845472616e736665727320746f2073656c6620617265206e6f7420616c6c6f776564244e6f53756368446f630019048854686520676976656e20446f63756d656e7420646f6573206e6f742065786973742e704d61784c656e6774684f6641737365744e616d654578636565646564001a04bc4d6178696d756d206c656e677468206f66206173736574206e616d6520686173206265656e2065786365656465642e8446756e64696e67526f756e644e616d654d61784c656e6774684578636565646564001b04ec4d6178696d756d206c656e677468206f66207468652066756e64696e6720726f756e64206e616d6520686173206265656e2065786365656465642e58496e76616c696441737365744964656e746966696572001c048c536f6d65206041737365744964656e746966696572602077617320696e76616c69642e84496e766573746f72556e697175656e657373436c61696d4e6f74416c6c6f776564001d04e8496e766573746f7220556e697175656e65737320636c61696d7320617265206e6f7420616c6c6f77656420666f7220746869732061737365742e60496e76616c6964437573746f6d4173736574547970654964001e0470496e76616c69642060437573746f6d4173736574547970654964602e8841737365744d657461646174614e616d654d61784c656e6774684578636565646564001f0405014d6178696d756d206c656e677468206f6620746865206173736574206d657461646174612074797065206e616d6520686173206265656e2065786365656465642e8c41737365744d6574616461746156616c75654d61784c656e6774684578636565646564002004f44d6178696d756d206c656e677468206f6620746865206173736574206d657461646174612076616c756520686173206265656e2065786365656465642e9441737365744d65746164617461547970654465664d61784c656e67746845786365656465640021041d014d6178696d756d206c656e677468206f6620746865206173736574206d65746164617461207479706520646566696e6974696f6e20686173206265656e2065786365656465642e6441737365744d657461646174614b657949734d697373696e67002204784173736574204d65746164617461206b6579206973206d697373696e672e6841737365744d6574616461746156616c756549734c6f636b65640023047c4173736574204d657461646174612076616c7565206973206c6f636b65642e8841737365744d657461646174614c6f63616c4b6579416c7265616479457869737473002404cc4173736574204d65746164617461204c6f63616c207479706520616c72656164792065786973747320666f722061737365742e8c41737365744d65746164617461476c6f62616c4b6579416c7265616479457869737473002504a84173736574204d6574616461746120476c6f62616c207479706520616c7265616479206578697374732e009509000004086d02780099090c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e1c56657273696f6e00000400080108753800009d090c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e144572726f7204045400013c3043414e6f7442656e65666974000004d441206361706974616c20646973747269627574696f6e20776173206d61646520666f722061206e6f6e2d62656e656669742043412e34416c7265616479457869737473000104a84120646973747269627574696f6e20616c72656164792065786973747320666f7220746869732043412e4c4578706972794265666f72655061796d656e7400020829014120646973747269627574696f6e732070726f766964656420657870697279206461746520776173207374726963746c79206265666f726520697473207061796d656e7420646174652e2101496e206f7468657220776f7264732c2065766572797468696e6720746f206469737472696275746520776f756c6420696d6d6564696174656c7920626520666f726665697465642e44486f6c646572416c726561647950616964000304d454686520746f6b656e20686f6c6465722068617320616c7265616479206265656e20706169642074686569722062656e656669742e484e6f53756368446973747269627574696f6e000404c441206361706974616c20646973747269627574696f6e20646f65736e277420657869737420666f7220746869732043412e5843616e6e6f74436c61696d4265666f726553746172740005046101446973747269627574696f6e20616c6c6f746d656e742063616e6e6f7420626520636c61696d6564206173207468652063757272656e742074696d65206973206265666f72652073746172742d6f662d7061796d656e742e5843616e6e6f74436c61696d41667465724578706972790006046901446973747269627574696f6e27732065787069727920686173207061737365642e204449442063616e6e6f7420636c61696d20616e796d6f726520616e642068617320666f72666569746564207468652062656e65666974732e8042616c616e6365506572536861726550726f647563744f766572666c6f77656400070429014d756c7469706c69636174696f6e206f66207468652062616c616e636520776974682074686520706572207368617265207061796f757420616d6f756e74206f766572666c6f7765642e584e6f74446973747269627574696f6e43726561746f72000804c0444944206973206e6f7420746865206f6e652077686f20637265617465642074686520646973747269627574696f6e2e40416c72656164795265636c61696d6564000904d44449442077686f20637265617465642074686520646973747269627574696f6e20616c726561647920646964207265636c61696d2e284e6f7445787069726564000a04f0446973747269627574696f6e20686164206e6f742065787069726564207965742c206f722074686572652773206e6f2065787069727920646174652e4c446973747269627574696f6e53746172746564000b0401014120646973747269627574696f6e20686173206265656e206163746976617465642c20617320607061796d656e745f6174203c3d206e6f776020686f6c64732e6c496e73756666696369656e7452656d61696e696e67416d6f756e74000c042d014120646973747269627574696f6e2068617320696e73756666696369656e742072656d61696e696e6720616d6f756e74206f662063757272656e637920746f20646973747269627574652e60446973747269627574696f6e416d6f756e7449735a65726f000d0494446973747269627574696f6e2060616d6f756e74602063616e6e6f74206265207a65726f2e68446973747269627574696f6e506572536861726549735a65726f000e04a0446973747269627574696f6e20607065725f7368617265602063616e6e6f74206265207a65726f2e00a109000004089c850200a50900000408a1097800a909000002850200ad09000002890200b109000004089c990200b5090c3070616c6c65745f617373657428636865636b706f696e741c56657273696f6e0000040008010875380000b9090c3070616c6c65745f617373657428636865636b706f696e74144572726f72040454000114384e6f537563685363686564756c65000004cc4120636865636b706f696e74207363686564756c6520646f6573206e6f7420657869737420666f72207468652061737365742e505363686564756c654e6f7452656d6f7661626c650001041d014120636865636b706f696e74207363686564756c65206973206e6f742072656d6f7661626c6520617320607265665f636f756e74287363686564756c655f696429203e2030602e744661696c6564546f436f6d707574654e657874436865636b706f696e74000208984661696c656420746f20636f6d7075746520746865206e65787420636865636b706f696e742ed0546865207363686564756c6520646f6573206e6f74206861766520616e79207570636f6d696e6720636865636b706f696e74732e605363686564756c654475726174696f6e546f6f53686f7274000304bc546865206475726174696f6e206f662061207363686564756c6520706572696f6420697320746f6f2073686f72742e4c5363686564756c6573546f6f436f6d706c6578000408d054686520736574206f66207363686564756c65732074616b656e20746f6765746865722061726520746f6f20636f6d706c65782ef8466f72206578616d706c652c20746865792061726520746f6f206d616e792c206f722074686579206f636375727320746f6f206672657175656e746c792e00bd090c4c706f6c796d6573685f7072696d69746976657348636f6d706c69616e63655f6d616e616765723c4173736574436f6d706c69616e6365000008011870617573656415010110626f6f6c000130726571756972656d656e7473cd0201685665633c436f6d706c69616e6365526571756972656d656e743e0000c109086470616c6c65745f636f6d706c69616e63655f6d616e616765721c56657273696f6e0000040008010875380000c509086470616c6c65745f636f6d706c69616e63655f6d616e61676572144572726f7204045400011830556e617574686f72697a65640000045c55736572206973206e6f7420617574686f72697a65642e2c4469644e6f74457869737400010434446964206e6f7420657869737478496e76616c6964436f6d706c69616e6365526571756972656d656e7449640002049c436f6d706c69616e636520726571756972656d656e7420696420646f65736e277420657869737484496e636f72726563744f7065726174696f6e4f6e547275737465644973737565720003049c4973737565722065786973742062757420747279696e6720746f2061646420697420616761696e7c4475706c6963617465436f6d706c69616e6365526571756972656d656e7473000404b0546865726520617265206475706c696361746520636f6d706c69616e636520726571756972656d656e74732e7c436f6d706c69616e6365526571756972656d656e74546f6f436f6d706c6578000504110154686520776f7273742063617365207363656e6172696f206f662074686520636f6d706c69616e636520726571756972656d656e7420697320746f6f20636f6d706c657800c909000004089c710200cd09086070616c6c65745f636f72706f726174655f616374696f6e731c56657273696f6e0000040008010875380000d109086070616c6c65745f636f72706f726174655f616374696f6e73144572726f7204045400013048417574684e6f744341415472616e73666572000004050154686520617574686f72697a6174696f6e2074797065206973206e6f7420746f207472616e73666572207468652043414120746f20616e6f74686572204449442e3844657461696c73546f6f4c6f6e67000104d8546865206064657461696c7360206f66206120434120657863656564656420746865206d617820616c6c6f776564206c656e6774682e3c4475706c69636174654469645461780002082101412077697468686f6c64696e6720746178206f7665727269646520666f72206120676976656e204449442077617320737065636966696564206d6f7265207468616e206f6e63652e050154686520636861696e207265667573656420746f206d616b6520612063686f6963652c20616e642068656e63652074686572652077617320616e206572726f722e3c546f6f4d616e794469645461786573000304c8546f6f206d616e792077697468686f6c64696e6720746178206f76657272696465732077657265207370656369666965642e40546f6f4d616e79546172676574496473000404e4546f6f206d616e79206964656e74697469657320696e20605461726765744964656e746974696573602077657265207370656369666965642e484e6f53756368436865636b706f696e74496400050405014f6e204341206372656174696f6e2c206120636865636b706f696e74204944207761732070726f766964656420776869636820646f65736e27742065786973742e204e6f537563684341000604a44120434120776974682074686520676976656e2060434149646020646964206e6f742065786973742e304e6f5265636f7264446174650007048854686520434120646964206e6f7420686176652061207265636f726420646174652e505265636f7264446174654166746572537461727400080cdc412043412773207265636f7264206461746520776173207374726963746c792061667465722074686520227374617274222074696d652c8c7768657265202273746172742220697320636f6e7465787420646570656e64656e742e8101466f72206578616d706c652c20697420636f756c6420626520746865207374617274206f6620612062616c6c6f742c206f72207468652073746172742d6f662d7061796d656e7420696e206361706974616c20646973747269627574696f6e2e5c4465636c4461746541667465725265636f726444617465000904ec412043412773206465636c61726174696f6e206461746520776173207374726963746c7920616674657220697473207265636f726420646174652e404465636c44617465496e467574757265000a04b4412043412773206465636c61726174696f6e2064617465206f636375727320696e20746865206675747572652e3c4e6f74546172676574656442794341000b046c434120646f6573206e6f742074617267657420746865204449442e00d5090000021800d9090c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74144572726f720404540001382c43414e6f744e6f74696365000004e04120636f72706f726174652062616c6c6f7420776173206d61646520666f722061206e6f6e20604973737565724e6f74696365602043412e34416c7265616479457869737473000104b84120636f72706f726174652062616c6c6f7420616c72656164792065786973747320666f7220746869732043412e304e6f5375636842616c6c6f74000204b44120636f72706f726174652062616c6c6f7420646f65736e277420657869737420666f7220746869732043412e3453746172744166746572456e6400030411014120636f72706f726174652062616c6c6f7427732073746172742074696d6520776173207374726963746c79206166746572207468652062616c6c6f74277320656e642e2c4e6f774166746572456e640004040d014120636f72706f726174652062616c6c6f74277320656e642074696d6520776173207374726963746c79206265666f7265207468652063757272656e742074696d652e5c4e756d6265724f6643686f696365734f766572666c6f770005043901496620736f6d65206d6f74696f6e20696e206120636f72706f726174652062616c6c6f7420686173206d6f72652063686f69636573207468616e20776f756c642066697420696e2060753136602e50566f74696e67416c7265616479537461727465640006040101566f74696e67207374617274656420616c72656164792e20416d656e64696e6720612062616c6c6f74206973206e6f206c6f6e67657220706f737369626c652e40566f74696e674e6f745374617274656400070468566f74696e67206861736e27742073746172746564207965742e48566f74696e67416c7265616479456e64656400080454566f74696e6720656e64656420616c72656164792e3857726f6e67566f7465436f756e74000904150150726f7669646564206c697374206f662062616c616e63657320646f6573206e6f74206d617463682074686520746f74616c206e756d626572206f662063686f696365732e44496e73756666696369656e74566f746573000a043d01566f74696e6720706f7765722075736564206279206120444944206f6e2061206d6f74696f6e2065786365656473207468617420776869636820697320617661696c61626c6520746f207468656d2e444e6f5375636852435646616c6c6261636b000b04bc546865205243562066616c6c6261636b206f6620736f6d652063686f69636520646f6573206e6f742065786973742e3052435653656c664379636c65000c04b4546865205243562066616c6c6261636b20706f696e747320746f20746865206f726967696e2063686f6963652e345243564e6f74416c6c6f776564000d048c524356206973206e6f7420616c6c6f77656420666f7220746869732062616c6c6f742e00dd09084870616c6c65745f7065726d697373696f6e73144572726f7204045400010448556e617574686f72697a656443616c6c6572000004ec5468652063616c6c6572206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e00e109082c70616c6c65745f7069707330506970734d65746164617461042c426c6f636b4e756d626572011000180108696449030114506970496400010c75726c4d02012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e4d0301584f7074696f6e3c5069704465736372697074696f6e3e000128637265617465645f617410012c426c6f636b4e756d62657200014c7472616e73616374696f6e5f76657273696f6e10010c7533320001186578706972793501015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0000e5090000040849030000e909082c70616c6c65745f706970732c4465706f736974496e666f04244163636f756e7449640100000801146f776e65720001244163636f756e744964000118616d6f756e7418011c42616c616e63650000ed09082c70616c6c65745f706970730c506970082050726f706f73616c01e905244163636f756e744964010000100108696449030114506970496400012070726f706f73616ce905012050726f706f73616c00011473746174655903013450726f706f73616c537461746500012070726f706f7365724103014c50726f706f7365723c4163636f756e7449643e0000f109082c70616c6c65745f7069707330566f74696e67526573756c740000100128617965735f636f756e7410010c753332000128617965735f7374616b6518011c42616c616e63650001286e6179735f636f756e7410010c7533320001286e6179735f7374616b6518011c42616c616e63650000f509082c70616c6c65745f7069707310566f74650000080015010110626f6f6c000018011c42616c616e63650000f909082c70616c6c65745f7069707340536e617073686f744d65746164617461082c426c6f636b4e756d6265720110244163636f756e7449640100000c0128637265617465645f617410012c426c6f636b4e756d62657200011c6d6164655f62790001244163636f756e74496400010869645d030128536e617073686f7449640000fd09082c70616c6c65745f706970731c56657273696f6e0000040008010875380000010a082c70616c6c65745f70697073144572726f720404540001488452657363686564756c654e6f74427952656c65617365436f6f7264696e61746f7200000431014f6e6c79207468652047432072656c6561736520636f6f7264696e61746f7220697320616c6c6f77656420746f2072657363686564756c652070726f706f73616c20657865637574696f6e2e404e6f7446726f6d436f6d6d756e697479000108ec54686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2ecc5468652070726f706f73616c206d7573742062652066726f6d2074686520636f6d6d756e6974792c206275742069736e27742e384e6f744279436f6d6d6974746565000208ec54686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2eb45468652070726f706f73616c206d75737420626520627920636f6d6d756e6974792c206275742069736e27742e44546f6f4d616e794163746976655069707300030829015468652063757272656e74206e756d626572206f6620616374697665202870656e64696e67207c207363686564756c65642920504950732065786365656420746865206d6178696d756d9c616e64207468652070726f706f73616c206973206e6f74206279206120636f6d6d69747465652e40496e636f72726563744465706f7369740004049c50726f706f7365722073706563696669657320616e20696e636f7272656374206465706f7369744c496e73756666696369656e744465706f736974000504b450726f706f7365722063616e2774206166666f726420746f206c6f636b206d696e696d756d206465706f736974384e6f5375636850726f706f73616c000604705468652070726f706f73616c20646f6573206e6f742065786973742e4c4e6f7441436f6d6d69747465654d656d626572000704844e6f742070617274206f6620676f7665726e616e636520636f6d6d69747465652e60496e76616c6964467574757265426c6f636b4e756d626572000804d85768656e206120626c6f636b206e756d626572206973206c657373207468616e2063757272656e7420626c6f636b206e756d6265722e544e756d6265724f66566f74657345786365656465640009047c5768656e206e756d626572206f6620766f746573206f766572666c6f77732e685374616b65416d6f756e744f66566f7465734578636565646564000a04985768656e207374616b6520616d6f756e74206f66206120766f7465206f766572666c6f77732e584d697373696e6743757272656e744964656e74697479000b044c4d697373696e672063757272656e742044494458496e636f727265637450726f706f73616c5374617465000c049050726f706f73616c206973206e6f7420696e2074686520636f72726563742073746174653443616e6e6f74536b6970506970000d04fc5768656e20656e616374696e6720736e617073686f7420726573756c74732c20616e20756e736b69707061626c65205049502077617320736b69707065642e58536e617073686f74526573756c74546f6f4c61726765000e041501547269656420746f20656e61637420726573756c747320666f722074686520736e617073686f74207175657565206f766572666c6f77696e6720697473206c656e6774682e48536e617073686f7449644d69736d61746368000f045d01547269656420746f20656e61637420726573756c7420666f7220504950207769746820696420646966666572656e742066726f6d20746861742061742074686520706f736974696f6e20696e207468652071756575652e705363686564756c656450726f706f73616c446f65736e744578697374001004fc457865637574696f6e206f662061207363686564756c65642070726f706f73616c206661696c65642062656361757365206974206973206d697373696e672e6c50726f706f73616c4e6f74496e5363686564756c65645374617465001104fc412070726f706f73616c2074686174206973206e6f7420696e2061207363686564756c65642073746174652063616e6e6f742062652065786563757465642e00050a0000040878dc00090a00000408788103000d0a00000408d49c00110a0000040878d400150a084070616c6c65745f706f7274666f6c696f1c56657273696f6e0000040008010875380000190a084070616c6c65745f706f7274666f6c696f144572726f7204045400012454506f7274666f6c696f446f65734e6f7445786973740000047054686520706f7274666f6c696f20646f65736e27742065786973742e70496e73756666696369656e74506f7274666f6c696f42616c616e63650001049c496e73756666696369656e742062616c616e636520666f722061207472616e73616374696f6e2e6844657374696e6174696f6e497353616d65506f7274666f6c696f000204e854686520736f7572636520616e642064657374696e6174696f6e20706f7274666f6c696f732073686f756c6420626520646966666572656e742e64506f7274666f6c696f4e616d65416c7265616479496e557365000304310154686520706f7274666f6c696f20636f756c646e27742062652072656e616d65642062656361757365207468652063686f73656e206e616d6520697320616c726561647920696e207573652e945365636f6e646172794b65794e6f74417574686f72697a6564466f72506f7274666f6c696f000404fc546865207365636f6e64617279206b6579206973206e6f7420617574686f72697a656420746f206163636573732074686520706f7274666f6c696f2873292e54556e617574686f72697a6564437573746f6469616e000504f454686520706f72666f6c696f277320637573746f6479206973207769746820736f6d656f6e65206f74686572207468616e207468652063616c6c65722e60496e73756666696369656e74546f6b656e734c6f636b6564000604bc43616e206e6f7420756e6c6f636b206d6f726520746f6b656e73207468616e207768617420617265206c6f636b656444506f7274666f6c696f4e6f74456d707479000704bc54686520706f7274666f6c696f207374696c6c2068617320736f6d652061737365742062616c616e6365206c6566746c446966666572656e744964656e74697479506f7274666f6c696f73000804b454686520706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e746974696573001d0a084c70616c6c65745f70726f746f636f6c5f666565144572726f7204045400010c68496e73756666696369656e744163636f756e7442616c616e6365000004b0496e73756666696369656e74206163636f756e742062616c616e636520746f2070617920746865206665652e4c556e48616e646c6564496d62616c616e636573000104884e6f742061626c6520746f2068616e646c65642074686520696d62616c616e63657368496e73756666696369656e745375627369647942616c616e6365000204b0496e73756666696369656e7420737562736964792062616c616e636520746f2070617920746865206665652e00210a000002250a00250a04184f7074696f6e04045401290a0108104e6f6e6500000010536f6d650400290a0000010000290a084070616c6c65745f7363686564756c65722c5363686564756c65645633101043616c6c01e5072c426c6f636b4e756d62657201103450616c6c6574734f726967696e012d0a244163636f756e7449640100001401206d617962655f69645d02013c4f7074696f6e3c5665633c75383e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6ce507011043616c6c0001386d617962655f706572696f646963e10701944f7074696f6e3c7363686564756c653a3a506572696f643c426c6f636b4e756d6265723e3e0001186f726967696e2d0a013450616c6c6574734f726967696e00002d0a0c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d65304f726967696e43616c6c65720001141873797374656d0400310a01746672616d655f73797374656d3a3a4f726967696e3c52756e74696d653e00000044506f6c796d657368436f6d6d69747465650400350a01f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365313e00090048546563686e6963616c436f6d6d69747465650400390a01f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365333e000b004055706772616465436f6d6d697474656504003d0a01f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365343e000d0010566f69640400410a01110173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a566f696400040000310a0c346672616d655f737570706f7274206469737061746368245261774f726967696e04244163636f756e7449640100010c10526f6f74000000185369676e656404000001244163636f756e744964000100104e6f6e6500020000350a084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449012901010420456e646f7273656400000000390a084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449014501010420456e646f72736564000000003d0a084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449015501010420456e646f7273656400000000410a081c73705f636f726510566f696400010000450a0c4070616c6c65745f7363686564756c65721870616c6c6574144572726f72040454000110404661696c6564546f5363686564756c65000004644661696c656420746f207363686564756c6520612063616c6c204e6f74466f756e640001047c43616e6e6f742066696e6420746865207363686564756c65642063616c6c2e5c546172676574426c6f636b4e756d626572496e50617374000204a4476976656e2074617267657420626c6f636b206e756d62657220697320696e2074686520706173742e4852657363686564756c654e6f4368616e6765000304f052657363686564756c65206661696c6564206265636175736520697420646f6573206e6f74206368616e6765207363686564756c65642074696d652e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909490a084470616c6c65745f736574746c656d656e741456656e7565000008011c63726561746f727801284964656e74697479496400012876656e75655f74797065ad03012456656e75655479706500004d0a00000408a503b10300510a00000408a5030000550a084470616c6c65745f736574746c656d656e742c496e737472756374696f6e08184d6f6d656e7401202c426c6f636b4e756d6265720110001c0138696e737472756374696f6e5f6964b1030134496e737472756374696f6e496400012076656e75655f6964a503011c56656e75654964000118737461747573590a0144496e737472756374696f6e53746174757300013c736574746c656d656e745f74797065b503016c536574746c656d656e74547970653c426c6f636b4e756d6265723e000128637265617465645f6174f001384f7074696f6e3c4d6f6d656e743e00012874726164655f64617465f001384f7074696f6e3c4d6f6d656e743e00012876616c75655f64617465f001384f7074696f6e3c4d6f6d656e743e0000590a084470616c6c65745f736574746c656d656e7444496e737472756374696f6e53746174757300010c1c556e6b6e6f776e0000001c50656e64696e67000100184661696c6564000200005d0a00000408b103c10300610a084470616c6c65745f736574746c656d656e74244c656753746174757304244163636f756e7449640100010c4050656e64696e67546f6b656e4c6f636b00000040457865637574696f6e50656e64696e6700010050457865637574696f6e546f4265536b697070656408000001244163636f756e744964000020010c75363400020000650a00000408b103d400690a084470616c6c65745f736574746c656d656e744441666669726d6174696f6e53746174757300010c1c556e6b6e6f776e0000001c50656e64696e670001002041666669726d6564000200006d0a00000408d4b10300710a000004089ca50300750a084470616c6c65745f736574746c656d656e741c56657273696f6e0000040008010875380000790a084470616c6c65745f736574746c656d656e74144572726f7204045400016430496e76616c696456656e75650000045456656e756520646f6573206e6f742065786973742e30556e617574686f72697a6564000104a853656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e3c4e6f50656e64696e6741666669726d000204d04e6f2070656e64696e672061666669726d6174696f6e20666f72207468652070726f766964656420696e737472756374696f6e2e58496e737472756374696f6e4e6f7441666669726d656400030488496e737472756374696f6e20686173206e6f74206265656e2061666669726d65642e54496e737472756374696f6e4e6f7450656e64696e67000404b850726f766964656420696e737472756374696f6e206973206e6f742070656e64696e6720657865637574696f6e2e50496e737472756374696f6e4e6f744661696c6564000504b850726f766964656420696e737472756374696f6e206973206e6f74206661696c696e6720657865637574696f6e2e344c65674e6f7450656e64696e670006049850726f7669646564206c6567206973206e6f742070656e64696e6720657865637574696f6e2e48556e617574686f72697a65645369676e6572000704985369676e6572206973206e6f7420617574686f72697a6564206279207468652076656e75652e5452656365697074416c7265616479436c61696d6564000804545265636569707420616c726561647920757365642e44526563656970744e6f74436c61696d65640009045452656365697074206e6f742075736564207965742e44556e617574686f72697a656456656e7565000a04a456656e756520646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e484661696c6564546f4c6f636b546f6b656e73000b0421015768696c652061666669726d696e6720746865207472616e736665722c2073797374656d206661696c656420746f206c6f636b207468652061737365747320696e766f6c7665642e44496e737472756374696f6e4661696c6564000c0478496e737472756374696f6e206661696c656420746f20657865637574652e5c496e737472756374696f6e4461746573496e76616c6964000d0474496e737472756374696f6e2068617320696e76616c696420646174657370496e737472756374696f6e536574746c65426c6f636b506173736564000e04a8496e737472756374696f6e27732074617267657420736574746c6520626c6f636b20726561636865642e40496e76616c69645369676e6174757265000f04784f6666636861696e207369676e617475726520697320696e76616c69642e4853616d6553656e64657252656365697665720010048453656e64657220616e6420726563656976657220617265207468652073616d652e44506f7274666f6c696f4d69736d617463680011042501506f7274666f6c696f20696e207265636569707420646f6573206e6f74206d61746368207769746820706f7274666f6c696f732070726f76696465642062792074686520757365722e44536574746c654f6e50617374426c6f636b00120461015468652070726f766964656420736574746c656d656e7420626c6f636b206e756d62657220697320696e20746865207061737420616e642063616e6e6f74206265207573656420627920746865207363686564756c65722e4c4e6f506f7274666f6c696f50726f76696465640013043d01506f7274666f6c696f20626173656420616374696f6e732072657175697265206174206c65617374206f6e6520706f7274666f6c696f20746f2062652070726f766964656420617320696e7075742e6c556e657870656374656441666669726d6174696f6e53746174757300140445015468652063757272656e7420696e737472756374696f6e2061666669726d6174696f6e2073746174757320646f6573206e6f7420737570706f7274207468652072657175657374656420616374696f6e2e404661696c6564546f5363686564756c650015048c5363686564756c696e67206f6620616e20696e737472756374696f6e206661696c732e404c6567436f756e74546f6f536d616c6c001604a5014c65677320636f756e742073686f756c64206d61746368657320776974682074686520746f74616c206e756d626572206f66206c65677320696e20776869636820676976656e20706f7274666f6c696f20616374206173206066726f6d5f706f7274666f6c696f602e48556e6b6e6f776e496e737472756374696f6e00170474496e737472756374696f6e2073746174757320697320756e6b6e6f776e64496e737472756374696f6e486173546f6f4d616e794c656773001804c44d6178696d756d206c65677320746861742063616e20626520696e20612073696e676c6520696e737472756374696f6e2e04844572726f727320666f722074686520536574746c656d656e74206d6f64756c652e7d0a00000408810af10300810a0c4c706f6c796d6573685f7072696d697469766573287374617469737469637328537461743173744b657900000801146173736574d1030128417373657453636f7065000124737461745f74797065d903012053746174547970650000850a0c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e63655c41737365745472616e73666572436f6d706c69616e6365000008011870617573656415010110626f6f6c000130726571756972656d656e74730908016c42547265655365743c5472616e73666572436f6e646974696f6e3e0000890a000004080d0478008d0a084470616c6c65745f737461746973746963731c56657273696f6e0000040008010875380000910a084470616c6c65745f73746174697374696373144572726f720404540001183c496e76616c69645472616e73666572000004545472616e73666572206e6f7420616c6c6f7765642e3c53746174547970654d697373696e67000104605374617454797065206973206e6f7420656e61626c65642e8453746174547970654e656564656442795472616e73666572436f6e646974696f6e000204a05374617454797065206973206e6565646564206279205472616e73666572436f6e646974696f6e2e6443616e6e6f7452656d6f76655374617454797065496e557365000304a84120537461747479706520697320696e2075736520616e642063616e27742062652072656d6f7665642e5053746174547970654c696d697452656163686564000404f4546865206c696d6974206f662053746174547970657320616c6c6f77656420666f7220616e20617373657420686173206265656e20726561636865642e745472616e73666572436f6e646974696f6e4c696d6974526561636865640005041901546865206c696d6974206f66205472616e73666572436f6e646974696f6e7320616c6c6f77656420666f7220616e20617373657420686173206265656e20726561636865642e046453746174697374696373206d6f64756c65206572726f72732e950a000004089c190400990a082870616c6c65745f73746f144572726f7204045400013030556e617574686f72697a6564000004a853656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e204f766572666c6f770001048c416e2061726974686d65746963206f7065726174696f6e206f766572666c6f7765642e6c496e73756666696369656e74546f6b656e7352656d61696e696e67000204804e6f7420656e6f75676820746f6b656e73206c65667420666f722073616c652e4846756e647261697365724e6f74466f756e640003045446756e64726169736572206e6f7420666f756e642e4446756e647261697365724e6f744c6976650004049c46756e64726169736572206973206569746865722066726f7a656e206f722073746f707065642e4046756e64726169736572436c6f736564000504ac46756e6472616973657220686173206265656e20636c6f7365642f73746f7070656420616c72656164792e4446756e6472616973657245787069726564000604d0496e746572616374696e67207769746820612066756e6472616973657220706173742074686520656e6420604d6f6d656e74602e30496e76616c696456656e756500070468416e20696e76616c69642076656e75652070726f76696465642e44496e76616c6964507269636554696572730008042501416e20696e646976696475616c20707269636520746965722077617320696e76616c6964206f72206120736574206f662070726963652074696572732077617320696e76616c69642e54496e76616c69644f66666572696e6757696e646f770009045d0157696e646f77202873746172742074696d652c20656e642074696d65292068617320696e76616c696420706172616d65746572732c20652e672073746172742074696d6520697320616674657220656e642074696d652e404d617850726963654578636565646564000a04bc5072696365206f662074686520696e766573746d656e7420657863656564656420746865206d61782070726963652e58496e766573746d656e74416d6f756e74546f6f4c6f77000b04e8496e766573746d656e7420616d6f756e74206973206c6f776572207468616e206d696e696d756d20696e766573746d656e7420616d6f756e742e04844572726f727320666f722074686520536574746c656d656e74206d6f64756c652e9d0a083c70616c6c65745f7472656173757279144572726f720404540001084c496e73756666696369656e7442616c616e63650000047850726f706f73657227732062616c616e636520697320746f6f206c6f772e3c496e76616c69644964656e7469747900010488496e76616c6964206964656e7469747920666f722064697362757273656d656e742e04784572726f7220666f7220746865207472656173757279206d6f64756c652ea10a083870616c6c65745f7574696c697479144572726f7204045400010c40496e76616c69645369676e6174757265000004744f6666636861696e207369676e617475726520697320696e76616c6964405461726765744364644d697373696e670001048054617267657420646f6573206e6f74206861766520612076616c69642043444430496e76616c69644e6f6e636500020c6850726f7669646564206e6f6e63652077617320696e76616c696411014966207468652070726f7669646564206e6f6e6365203c2063757272656e74206e6f6e63652c207468652063616c6c2077617320616c72656164792065786563757465645d014966207468652070726f7669646564206e6f6e6365203e2063757272656e74206e6f6e63652c207468652063616c6c287329206265666f7265207468652063757272656e74206661696c656420746f206578656375746500a50a082c70616c6c65745f62617365144572726f720404540001081c546f6f4c6f6e6700000880457863656564656420612067656e65726963206c656e677468206c696d69742e1d01546865206c696d697420636f756c6420626520666f7220616e7920736f7274206f66206c69737473206f66207468696e67732c20696e636c7564696e67206120737472696e672e3c436f756e7465724f766572666c6f77000118b85468652073657175656e636520636f756e74657220666f7220736f6d657468696e67206f766572666c6f7765642e001d015768656e20746869732068617070656e7320646570656e6473206f6e20652e672e2c20746865206361706163697479206f6620746865206964656e74696669657220747970652e3901466f72206578616d706c652c207765206d69676874206861766520607075622073747275637420506970496428753332293b602c207769746820607533323a3a4d4158602063617061636974792e5901496e2070726163746963652c207468657365206572726f72732077696c6c206e657665722068617070656e20627574206e6f20636f646520706174682073686f756c6420726573756c7420696e20612070616e69632cfc736f20746865736520636f726e6572206361736573206e65656420746f20626520636f7665726564207769746820616e206572726f722076617269616e742e00a90a000004089c110100ad0a085870616c6c65745f65787465726e616c5f6167656e7473144572726f72040454000118204e6f537563684147000004ec416e20414720776974682074686520676976656e2060414749646020646964206e6f7420657869737420666f722074686520605469636b6572602e44556e617574686f72697a65644167656e74000104e8546865206167656e74206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e38416c7265616479416e4167656e74000204e85468652070726f766964656420606167656e746020697320616c726561647920616e206167656e7420666f722074686520605469636b6572602e284e6f74416e4167656e74000304d85468652070726f766964656420606167656e7460206973206e6f7420616e206167656e7420666f722074686520605469636b6572602e5452656d6f76696e674c61737446756c6c4167656e74000408e054686973206167656e7420697320746865206c6173742066756c6c206f6e652c20616e642069742773206265696e672072656d6f7665642c686d616b696e6720746865206173736574206f727068616e65642e845365636f6e646172794b65794e6f74417574686f72697a6564466f7241737365740005041d015468652063616c6c65722773207365636f6e64617279206b657920646f6573206e6f74206861766520746865207265717569726564206173736574207065726d697373696f6e2e00b10a083870616c6c65745f72656c617965721c53756273696479040c416363010000080128706179696e675f6b657900010c41636300012472656d61696e696e6718011c42616c616e63650000b50a083870616c6c65745f72656c61796572144572726f7204045400011c44557365724b65794364644d697373696e67000004cc5468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e4c506179696e674b65794364644d697373696e67000104cc5468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e2c4e6f506179696e674b6579000204ac5468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e304e6f74506179696e674b6579000304b05468652060757365725f6b65796020686173206120646966666572656e742060706179696e675f6b6579602e644e6f74417574686f72697a6564466f72506179696e674b6579000404b8546865207369676e6572206973206e6f7420617574686f72697a656420666f722060706179696e675f6b6579602e5c4e6f74417574686f72697a6564466f72557365724b6579000504b0546865207369676e6572206973206e6f7420617574686f72697a656420666f722060757365725f6b6579602e204f766572666c6f77000604b85468652072656d61696e696e6720504f4c595820666f722060757365725f6b657960206f766572666c6f7765642e00b90a083870616c6c65745f72657761726473144572726f7204045400011044556e6b6e6f776e49746e41646472657373000004cc4164647265737320776173206e6f7420666f756e6420696e20746865206c697374206f662049746e206164647265737365732e5c49746e526577617264416c7265616479436c61696d65640001047c49746e207265776172642077617320616c726561647920636c61696d65642e40496e76616c69645369676e61747572650002047c50726f7669646564207369676e61747572652077617320696e76616c69642e54556e61626c65546f436f7665727442616c616e6365000304b042616c616e63652063616e206e6f7420626520636f6e76657274656420746f2061207072696d69746976652e00bd0a0c4070616c6c65745f636f6e747261637473107761736d405072656661625761736d4d6f64756c65040454000010016c696e737472756374696f6e5f776569676874735f76657273696f6e7d04010c75333200011c696e697469616c7d04010c75333200011c6d6178696d756d7d04010c753332000110636f646528011c5665633c75383e0000c10a0c4070616c6c65745f636f6e747261637473107761736d244f776e6572496e666f04045400000c01146f776e65720001384163636f756e7449644f663c543e00011c6465706f736974c901013042616c616e63654f663c543e000120726566636f756e741105010c7536340000c50a0c4070616c6c65745f636f6e7472616374731c73746f726167653c526177436f6e7472616374496e666f0820436f64654861736801241c42616c616e63650118000c011c747269655f6964280118547269654964000124636f64655f68617368240120436f64654861736800013c73746f726167655f6465706f73697418011c42616c616e63650000c90a000002cd0a00cd0a0c4070616c6c65745f636f6e7472616374731c73746f726167653c44656c65746564436f6e7472616374000004011c747269655f69642801185472696549640000d10a0c4070616c6c65745f636f6e747261637473207363686564756c65205363686564756c6504045400000c01186c696d697473d50a01184c696d69747300014c696e737472756374696f6e5f77656967687473d90a0154496e737472756374696f6e576569676874733c543e00013c686f73745f666e5f77656967687473dd0a0140486f7374466e576569676874733c543e0000d50a0c4070616c6c65745f636f6e747261637473207363686564756c65184c696d69747300002c01306576656e745f746f7069637310010c753332000130737461636b5f6865696768743106012c4f7074696f6e3c7533323e00011c676c6f62616c7310010c753332000128706172616d657465727310010c7533320001306d656d6f72795f706167657310010c7533320001287461626c655f73697a6510010c75333200013462725f7461626c655f73697a6510010c75333200012c7375626a6563745f6c656e10010c75333200012863616c6c5f646570746810010c75333200012c7061796c6f61645f6c656e10010c753332000120636f64655f6c656e10010c7533320000d90a0c4070616c6c65745f636f6e747261637473207363686564756c6548496e737472756374696f6e576569676874730404540000d0011c76657273696f6e10010c753332000120693634636f6e737410010c75333200011c6936346c6f616410010c75333200012069363473746f726510010c75333200011873656c65637410010c7533320001107223696610010c753332000108627210010c75333200011462725f696610010c75333200012062725f7461626c6510010c75333200014862725f7461626c655f7065725f656e74727910010c75333200011063616c6c10010c75333200013463616c6c5f696e64697265637410010c75333200015c63616c6c5f696e6469726563745f7065725f706172616d10010c7533320001246c6f63616c5f67657410010c7533320001246c6f63616c5f73657410010c7533320001246c6f63616c5f74656510010c753332000128676c6f62616c5f67657410010c753332000128676c6f62616c5f73657410010c7533320001386d656d6f72795f63757272656e7410010c75333200012c6d656d6f72795f67726f7710010c753332000118693634636c7a10010c75333200011869363463747a10010c753332000124693634706f70636e7410010c75333200011869363465717a10010c753332000134693634657874656e647369333210010c753332000134693634657874656e647569333210010c7533320001286933327772617069363410010c753332000114693634657110010c7533320001146936346e6510010c7533320001186936346c747310010c7533320001186936346c747510010c75333200011869363467747310010c75333200011869363467747510010c7533320001186936346c657310010c7533320001186936346c657510010c75333200011869363467657310010c75333200011869363467657510010c75333200011869363461646410010c75333200011869363473756210010c7533320001186936346d756c10010c75333200011c6936346469767310010c75333200011c6936346469767510010c75333200011c69363472656d7310010c75333200011c69363472656d7510010c753332000118693634616e6410010c7533320001146936346f7210010c753332000118693634786f7210010c75333200011869363473686c10010c75333200011c6936347368727310010c75333200011c6936347368727510010c75333200011c693634726f746c10010c75333200011c693634726f747210010c7533320000dd0a0c4070616c6c65745f636f6e747261637473207363686564756c6534486f7374466e576569676874730404540000d8011863616c6c657220011857656967687400012c69735f636f6e7472616374200118576569676874000124636f64655f686173682001185765696768740001346f776e5f636f64655f6861736820011857656967687400014063616c6c65725f69735f6f726967696e20011857656967687400011c616464726573732001185765696768740001206761735f6c65667420011857656967687400011c62616c616e636520011857656967687400014476616c75655f7472616e7366657272656420011857656967687400013c6d696e696d756d5f62616c616e6365200118576569676874000130626c6f636b5f6e756d62657220011857656967687400010c6e6f772001185765696768740001347765696768745f746f5f66656520011857656967687400010c676173200118576569676874000114696e707574200118576569676874000138696e7075745f7065725f62797465200118576569676874000120722372657475726e20011857656967687400013c72657475726e5f7065725f627974652001185765696768740001247465726d696e61746520011857656967687400011872616e646f6d2001185765696768740001346465706f7369745f6576656e7420011857656967687400015c6465706f7369745f6576656e745f7065725f746f7069632001185765696768740001586465706f7369745f6576656e745f7065725f6279746520011857656967687400013464656275675f6d65737361676520011857656967687400012c7365745f73746f726167652001185765696768740001607365745f73746f726167655f7065725f6e65775f627974652001185765696768740001607365745f73746f726167655f7065725f6f6c645f627974652001185765696768740001347365745f636f64655f68617368200118576569676874000134636c6561725f73746f72616765200118576569676874000158636c6561725f73746f726167655f7065725f62797465200118576569676874000140636f6e7461696e735f73746f72616765200118576569676874000164636f6e7461696e735f73746f726167655f7065725f6279746520011857656967687400012c6765745f73746f726167652001185765696768740001506765745f73746f726167655f7065725f6279746520011857656967687400013074616b655f73746f7261676520011857656967687400015474616b655f73746f726167655f7065725f627974652001185765696768740001207472616e7366657220011857656967687400011063616c6c20011857656967687400013464656c65676174655f63616c6c20011857656967687400015c63616c6c5f7472616e736665725f73757263686172676520011857656967687400015063616c6c5f7065725f636c6f6e65645f6279746520011857656967687400012c696e7374616e7469617465200118576569676874000178696e7374616e74696174655f7472616e736665725f737572636861726765200118576569676874000164696e7374616e74696174655f7065725f73616c745f62797465200118576569676874000134686173685f736861325f323536200118576569676874000158686173685f736861325f3235365f7065725f6279746520011857656967687400013c686173685f6b656363616b5f323536200118576569676874000160686173685f6b656363616b5f3235365f7065725f6279746520011857656967687400013c686173685f626c616b65325f323536200118576569676874000160686173685f626c616b65325f3235365f7065725f6279746520011857656967687400013c686173685f626c616b65325f313238200118576569676874000160686173685f626c616b65325f3132385f7065725f6279746520011857656967687400013465636473615f7265636f76657220011857656967687400015065636473615f746f5f6574685f616464726573732001185765696768740000e10a0c4070616c6c65745f636f6e7472616374731870616c6c6574144572726f7204045400017458496e76616c69645363686564756c6556657273696f6e000004010141206e6577207363686564756c65206d7573742068617665206120677265617465722076657273696f6e207468616e207468652063757272656e74206f6e652e40496e76616c696443616c6c466c6167730001043501496e76616c696420636f6d62696e6174696f6e206f6620666c61677320737570706c69656420746f20607365616c5f63616c6c60206f7220607365616c5f64656c65676174655f63616c6c602e204f75744f66476173000204b854686520657865637574656420636f6e7472616374206578686175737465642069747320676173206c696d69742e504f7574707574427566666572546f6f536d616c6c0003040101546865206f75747075742062756666657220737570706c69656420746f206120636f6e7472616374204150492063616c6c2077617320746f6f20736d616c6c2e385472616e736665724661696c65640004083501506572666f726d696e672074686520726571756573746564207472616e73666572206661696c65642e2050726f6261626c7920626563617573652074686572652069736e277420656e6f75676894667265652062616c616e636520696e207468652073656e6465722773206163636f756e742e4c4d617843616c6c4465707468526561636865640005082101506572666f726d696e6720612063616c6c207761732064656e6965642062656361757365207468652063616c6c696e67206465707468207265616368656420746865206c696d6974946f6620776861742069732073706563696669656420696e20746865207363686564756c652e40436f6e74726163744e6f74466f756e64000604bc4e6f20636f6e74726163742077617320666f756e64206174207468652073706563696669656420616464726573732e30436f6465546f6f4c617267650007083d0154686520636f646520737570706c69656420746f2060696e7374616e74696174655f776974685f636f646560206578636565647320746865206c696d69742073706563696669656420696e207468654463757272656e74207363686564756c652e30436f64654e6f74466f756e64000804c44e6f20636f646520636f756c6420626520666f756e642061742074686520737570706c69656420636f646520686173682e2c4f75744f66426f756e647300090425014120627566666572206f757473696465206f662073616e64626f78206d656d6f7279207761732070617373656420746f206120636f6e7472616374204150492066756e6374696f6e2e384465636f64696e674661696c6564000a042901496e7075742070617373656420746f206120636f6e7472616374204150492066756e6374696f6e206661696c656420746f206465636f646520617320657870656374656420747970652e3c436f6e747261637454726170706564000b0488436f6e7472616374207472617070656420647572696e6720657865637574696f6e2e3456616c7565546f6f4c61726765000c04cc5468652073697a6520646566696e656420696e2060543a3a4d617856616c756553697a6560207761732065786365656465642e605465726d696e617465645768696c655265656e7472616e74000d0819015465726d696e6174696f6e206f66206120636f6e7472616374206973206e6f7420616c6c6f776564207768696c652074686520636f6e747261637420697320616c7265616479e06f6e207468652063616c6c20737461636b2e2043616e2062652074726967676572656420627920607365616c5f7465726d696e617465602e38496e707574466f72776172646564000e044101607365616c5f63616c6c6020666f72776172646564207468697320636f6e74726163747320696e7075742e204974207468657265666f7265206973206e6f206c6f6e67657220617661696c61626c652e5052616e646f6d5375626a656374546f6f4c6f6e67000f04d8546865207375626a6563742070617373656420746f20607365616c5f72616e646f6d60206578636565647320746865206c696d69742e34546f6f4d616e79546f706963730010041d0154686520616d6f756e74206f6620746f706963732070617373656420746f20607365616c5f6465706f7369745f6576656e747360206578636565647320746865206c696d69742e3c4475706c6963617465546f706963730011042d0154686520746f706963732070617373656420746f20607365616c5f6465706f7369745f6576656e74736020636f6e7461696e73206174206c65617374206f6e65206475706c69636174652e404e6f436861696e457874656e73696f6e00120c450154686520636861696e20646f6573206e6f742070726f76696465206120636861696e20657874656e73696f6e2e2043616c6c696e672074686520636861696e20657874656e73696f6e20726573756c74734d01696e2074686973206572726f722e204e6f74652074686174207468697320757375616c6c79202073686f756c646e27742068617070656e206173206465706c6f79696e67207375636820636f6e7472616374733069732072656a65637465642e4444656c6574696f6e517565756546756c6c001314010152656d6f76616c206f66206120636f6e7472616374206661696c65642062656361757365207468652064656c6574696f6e2071756575652069732066756c6c2e00b8546869732063616e2068617070656e207768656e2063616c6c696e6720607365616c5f7465726d696e617465602e4d015468652071756575652069732066696c6c65642062792064656c6574696e6720636f6e74726163747320616e6420656d7074696564206279206120666978656420616d6f756e74206561636820626c6f636b2e2101547279696e6720616761696e20647572696e6720616e6f7468657220626c6f636b20697320746865206f6e6c792077617920746f207265736f6c766520746869732069737375652e444475706c6963617465436f6e7472616374001404c84120636f6e74726163742077697468207468652073616d65204163636f756e74496420616c7265616479206578697374732e5c5465726d696e61746564496e436f6e7374727563746f7200150cb84120636f6e74726163742073656c66206465737472756374656420696e2069747320636f6e7374727563746f722e00d0546869732063616e2062652074726967676572656420627920612063616c6c20746f20607365616c5f7465726d696e617465602e5c44656275674d657373616765496e76616c6964555446380016043d01546865206465627567206d6573736167652073706563696669656420746f20607365616c5f64656275675f6d6573736167656020646f657320636f6e7461696e20696e76616c6964205554462d382e405265656e7472616e636544656e6965640017040d01412063616c6c20747269656420746f20696e766f6b65206120636f6e7472616374207468617420697320666c6167676564206173206e6f6e2d7265656e7472616e742e7053746f726167654465706f7369744e6f74456e6f75676846756e647300180421014f726967696e20646f65736e2774206861766520656e6f7567682062616c616e636520746f20706179207468652072657175697265642073746f72616765206465706f736974732e7053746f726167654465706f7369744c696d69744578686175737465640019040d014d6f72652073746f72616765207761732063726561746564207468616e20616c6c6f776564206279207468652073746f72616765206465706f736974206c696d69742e24436f6465496e557365001a044901436f64652072656d6f76616c207761732064656e69656420626563617573652074686520636f6465206973207374696c6c20696e20757365206279206174206c65617374206f6e6520636f6e74726163742e40436f6e74726163745265766572746564001b10250154686520636f6e74726163742072616e20746f20636f6d706c6574696f6e20627574206465636964656420746f20726576657274206974732073746f72616765206368616e6765732e4901506c65617365206e6f746520746861742074686973206572726f72206973206f6e6c792072657475726e65642066726f6d2065787472696e736963732e205768656e2063616c6c6564206469726563746c795d016f72207669612052504320616e20604f6b602077696c6c2062652072657475726e65642e20496e20746869732063617365207468652063616c6c6572206e6565647320746f20696e73706563742074686520666c616773c4746f2064657465726d696e652077686574686572206120726576657273696f6e206861732074616b656e20706c6163652e30436f646552656a6563746564001c0c450154686520636f6e7472616374277320636f64652077617320666f756e6420746f20626520696e76616c696420647572696e672076616c69646174696f6e206f7220696e737472756d656e746174696f6e2e510141206d6f72652064657461696c6564206572726f722063616e20626520666f756e64206f6e20746865206e6f646520636f6e736f6c65206966206465627567206d657373616765732061726520656e61626c6564e06f7220696e20746865206465627567206275666665722077686963682069732072657475726e656420746f2052504320636c69656e74732e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909e50a0848706f6c796d6573685f636f6e747261637473144572726f720404540001104c52756e74696d6543616c6c4e6f74466f756e64000004150154686520676976656e206066756e635f69643a207533326020646964206e6f74207472616e736c61746520696e746f2061206b6e6f776e2072756e74696d652063616c6c2e54446174614c65667441667465724465636f64696e67000104d444617461206c65667420696e20696e707574207768656e206465636f64696e6720617267756d656e7473206f6620612063616c6c2e34496e4c656e546f6f4c617267650002042d01496e70757420646174612074686174206120636f6e747261637420706173736564207768656e206d616b696e6720612072756e74696d652063616c6c2077617320746f6f206c617267652e68496e7374616e746961746f72576974684e6f4964656e74697479000308b04120636f6e74726163742077617320617474656d7074656420746f20626520696e7374616e7469617465642c0d01627574206e6f206964656e746974792077617320676976656e20746f206173736f636961746520746865206e657720636f6e74726163742773206b657920776974682e00e90a083c70616c6c65745f707265696d616765345265717565737453746174757308244163636f756e74496401001c42616c616e6365011801082c556e7265717565737465640400ed0a01704f7074696f6e3c284163636f756e7449642c2042616c616e6365293e00000024526571756573746564040010010c75333200010000ed0a04184f7074696f6e04045401e5080108104e6f6e6500000010536f6d650400e5080000010000f10a10346672616d655f737570706f72741c73746f726167652c626f756e6465645f76656328426f756e64656456656308045401080453000004002801185665633c543e0000f50a0c3c70616c6c65745f707265696d6167651870616c6c6574144572726f7204045400011820546f6f4c61726765000004a0507265696d61676520697320746f6f206c6172676520746f2073746f7265206f6e2d636861696e2e30416c72656164794e6f746564000104a4507265696d6167652068617320616c7265616479206265656e206e6f746564206f6e2d636861696e2e344e6f74417574686f72697a6564000204c85468652075736572206973206e6f7420617574686f72697a656420746f20706572666f726d207468697320616374696f6e2e204e6f744e6f746564000304fc54686520707265696d6167652063616e6e6f742062652072656d6f7665642073696e636520697420686173206e6f7420796574206265656e206e6f7465642e2452657175657374656400040409014120707265696d616765206d6179206e6f742062652072656d6f766564207768656e20746865726520617265206f75747374616e64696e672072657175657374732e304e6f745265717565737465640005042d0154686520707265696d61676520726571756573742063616e6e6f742062652072656d6f7665642073696e6365206e6f206f75747374616e64696e672072657175657374732065786973742e04ad010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f76332f72756e74696d652f6576656e74732d616e642d6572726f7273290a0909096f6620746869732070616c6c65742e0a090909f90a084470616c6c65745f746573745f7574696c73144572726f7204045400010000fd0a102873705f72756e74696d651c67656e657269634c756e636865636b65645f65787472696e73696348556e636865636b656445787472696e736963101c416464726573730145051043616c6c01e905245369676e617475726501f50714457874726101010b00040028000000010b00000420050b090b0d0b110b190b1d0b250b290b00050b10306672616d655f73797374656d28657874656e73696f6e7348636865636b5f737065635f76657273696f6e40436865636b5370656356657273696f6e04045400000000090b10306672616d655f73797374656d28657874656e73696f6e7340636865636b5f74785f76657273696f6e38436865636b547856657273696f6e040454000000000d0b10306672616d655f73797374656d28657874656e73696f6e7334636865636b5f67656e6573697330436865636b47656e6573697304045400000000110b10306672616d655f73797374656d28657874656e73696f6e733c636865636b5f6d6f7274616c69747938436865636b4d6f7274616c69747904045400000400150b010c4572610000150b102873705f72756e74696d651c67656e657269630c6572610c4572610001010420496d6d6f7274616c0000001c4d6f7274616c31040008000001001c4d6f7274616c32040008000002001c4d6f7274616c33040008000003001c4d6f7274616c34040008000004001c4d6f7274616c35040008000005001c4d6f7274616c36040008000006001c4d6f7274616c37040008000007001c4d6f7274616c38040008000008001c4d6f7274616c3904000800000900204d6f7274616c313004000800000a00204d6f7274616c313104000800000b00204d6f7274616c313204000800000c00204d6f7274616c313304000800000d00204d6f7274616c313404000800000e00204d6f7274616c313504000800000f00204d6f7274616c313604000800001000204d6f7274616c313704000800001100204d6f7274616c313804000800001200204d6f7274616c313904000800001300204d6f7274616c323004000800001400204d6f7274616c323104000800001500204d6f7274616c323204000800001600204d6f7274616c323304000800001700204d6f7274616c323404000800001800204d6f7274616c323504000800001900204d6f7274616c323604000800001a00204d6f7274616c323704000800001b00204d6f7274616c323804000800001c00204d6f7274616c323904000800001d00204d6f7274616c333004000800001e00204d6f7274616c333104000800001f00204d6f7274616c333204000800002000204d6f7274616c333304000800002100204d6f7274616c333404000800002200204d6f7274616c333504000800002300204d6f7274616c333604000800002400204d6f7274616c333704000800002500204d6f7274616c333804000800002600204d6f7274616c333904000800002700204d6f7274616c343004000800002800204d6f7274616c343104000800002900204d6f7274616c343204000800002a00204d6f7274616c343304000800002b00204d6f7274616c343404000800002c00204d6f7274616c343504000800002d00204d6f7274616c343604000800002e00204d6f7274616c343704000800002f00204d6f7274616c343804000800003000204d6f7274616c343904000800003100204d6f7274616c353004000800003200204d6f7274616c353104000800003300204d6f7274616c353204000800003400204d6f7274616c353304000800003500204d6f7274616c353404000800003600204d6f7274616c353504000800003700204d6f7274616c353604000800003800204d6f7274616c353704000800003900204d6f7274616c353804000800003a00204d6f7274616c353904000800003b00204d6f7274616c363004000800003c00204d6f7274616c363104000800003d00204d6f7274616c363204000800003e00204d6f7274616c363304000800003f00204d6f7274616c363404000800004000204d6f7274616c363504000800004100204d6f7274616c363604000800004200204d6f7274616c363704000800004300204d6f7274616c363804000800004400204d6f7274616c363904000800004500204d6f7274616c373004000800004600204d6f7274616c373104000800004700204d6f7274616c373204000800004800204d6f7274616c373304000800004900204d6f7274616c373404000800004a00204d6f7274616c373504000800004b00204d6f7274616c373604000800004c00204d6f7274616c373704000800004d00204d6f7274616c373804000800004e00204d6f7274616c373904000800004f00204d6f7274616c383004000800005000204d6f7274616c383104000800005100204d6f7274616c383204000800005200204d6f7274616c383304000800005300204d6f7274616c383404000800005400204d6f7274616c383504000800005500204d6f7274616c383604000800005600204d6f7274616c383704000800005700204d6f7274616c383804000800005800204d6f7274616c383904000800005900204d6f7274616c393004000800005a00204d6f7274616c393104000800005b00204d6f7274616c393204000800005c00204d6f7274616c393304000800005d00204d6f7274616c393404000800005e00204d6f7274616c393504000800005f00204d6f7274616c393604000800006000204d6f7274616c393704000800006100204d6f7274616c393804000800006200204d6f7274616c393904000800006300244d6f7274616c31303004000800006400244d6f7274616c31303104000800006500244d6f7274616c31303204000800006600244d6f7274616c31303304000800006700244d6f7274616c31303404000800006800244d6f7274616c31303504000800006900244d6f7274616c31303604000800006a00244d6f7274616c31303704000800006b00244d6f7274616c31303804000800006c00244d6f7274616c31303904000800006d00244d6f7274616c31313004000800006e00244d6f7274616c31313104000800006f00244d6f7274616c31313204000800007000244d6f7274616c31313304000800007100244d6f7274616c31313404000800007200244d6f7274616c31313504000800007300244d6f7274616c31313604000800007400244d6f7274616c31313704000800007500244d6f7274616c31313804000800007600244d6f7274616c31313904000800007700244d6f7274616c31323004000800007800244d6f7274616c31323104000800007900244d6f7274616c31323204000800007a00244d6f7274616c31323304000800007b00244d6f7274616c31323404000800007c00244d6f7274616c31323504000800007d00244d6f7274616c31323604000800007e00244d6f7274616c31323704000800007f00244d6f7274616c31323804000800008000244d6f7274616c31323904000800008100244d6f7274616c31333004000800008200244d6f7274616c31333104000800008300244d6f7274616c31333204000800008400244d6f7274616c31333304000800008500244d6f7274616c31333404000800008600244d6f7274616c31333504000800008700244d6f7274616c31333604000800008800244d6f7274616c31333704000800008900244d6f7274616c31333804000800008a00244d6f7274616c31333904000800008b00244d6f7274616c31343004000800008c00244d6f7274616c31343104000800008d00244d6f7274616c31343204000800008e00244d6f7274616c31343304000800008f00244d6f7274616c31343404000800009000244d6f7274616c31343504000800009100244d6f7274616c31343604000800009200244d6f7274616c31343704000800009300244d6f7274616c31343804000800009400244d6f7274616c31343904000800009500244d6f7274616c31353004000800009600244d6f7274616c31353104000800009700244d6f7274616c31353204000800009800244d6f7274616c31353304000800009900244d6f7274616c31353404000800009a00244d6f7274616c31353504000800009b00244d6f7274616c31353604000800009c00244d6f7274616c31353704000800009d00244d6f7274616c31353804000800009e00244d6f7274616c31353904000800009f00244d6f7274616c3136300400080000a000244d6f7274616c3136310400080000a100244d6f7274616c3136320400080000a200244d6f7274616c3136330400080000a300244d6f7274616c3136340400080000a400244d6f7274616c3136350400080000a500244d6f7274616c3136360400080000a600244d6f7274616c3136370400080000a700244d6f7274616c3136380400080000a800244d6f7274616c3136390400080000a900244d6f7274616c3137300400080000aa00244d6f7274616c3137310400080000ab00244d6f7274616c3137320400080000ac00244d6f7274616c3137330400080000ad00244d6f7274616c3137340400080000ae00244d6f7274616c3137350400080000af00244d6f7274616c3137360400080000b000244d6f7274616c3137370400080000b100244d6f7274616c3137380400080000b200244d6f7274616c3137390400080000b300244d6f7274616c3138300400080000b400244d6f7274616c3138310400080000b500244d6f7274616c3138320400080000b600244d6f7274616c3138330400080000b700244d6f7274616c3138340400080000b800244d6f7274616c3138350400080000b900244d6f7274616c3138360400080000ba00244d6f7274616c3138370400080000bb00244d6f7274616c3138380400080000bc00244d6f7274616c3138390400080000bd00244d6f7274616c3139300400080000be00244d6f7274616c3139310400080000bf00244d6f7274616c3139320400080000c000244d6f7274616c3139330400080000c100244d6f7274616c3139340400080000c200244d6f7274616c3139350400080000c300244d6f7274616c3139360400080000c400244d6f7274616c3139370400080000c500244d6f7274616c3139380400080000c600244d6f7274616c3139390400080000c700244d6f7274616c3230300400080000c800244d6f7274616c3230310400080000c900244d6f7274616c3230320400080000ca00244d6f7274616c3230330400080000cb00244d6f7274616c3230340400080000cc00244d6f7274616c3230350400080000cd00244d6f7274616c3230360400080000ce00244d6f7274616c3230370400080000cf00244d6f7274616c3230380400080000d000244d6f7274616c3230390400080000d100244d6f7274616c3231300400080000d200244d6f7274616c3231310400080000d300244d6f7274616c3231320400080000d400244d6f7274616c3231330400080000d500244d6f7274616c3231340400080000d600244d6f7274616c3231350400080000d700244d6f7274616c3231360400080000d800244d6f7274616c3231370400080000d900244d6f7274616c3231380400080000da00244d6f7274616c3231390400080000db00244d6f7274616c3232300400080000dc00244d6f7274616c3232310400080000dd00244d6f7274616c3232320400080000de00244d6f7274616c3232330400080000df00244d6f7274616c3232340400080000e000244d6f7274616c3232350400080000e100244d6f7274616c3232360400080000e200244d6f7274616c3232370400080000e300244d6f7274616c3232380400080000e400244d6f7274616c3232390400080000e500244d6f7274616c3233300400080000e600244d6f7274616c3233310400080000e700244d6f7274616c3233320400080000e800244d6f7274616c3233330400080000e900244d6f7274616c3233340400080000ea00244d6f7274616c3233350400080000eb00244d6f7274616c3233360400080000ec00244d6f7274616c3233370400080000ed00244d6f7274616c3233380400080000ee00244d6f7274616c3233390400080000ef00244d6f7274616c3234300400080000f000244d6f7274616c3234310400080000f100244d6f7274616c3234320400080000f200244d6f7274616c3234330400080000f300244d6f7274616c3234340400080000f400244d6f7274616c3234350400080000f500244d6f7274616c3234360400080000f600244d6f7274616c3234370400080000f700244d6f7274616c3234380400080000f800244d6f7274616c3234390400080000f900244d6f7274616c3235300400080000fa00244d6f7274616c3235310400080000fb00244d6f7274616c3235320400080000fc00244d6f7274616c3235330400080000fd00244d6f7274616c3235340400080000fe00244d6f7274616c3235350400080000ff0000190b10306672616d655f73797374656d28657874656e73696f6e732c636865636b5f6e6f6e636528436865636b4e6f6e6365040454000004007d040120543a3a496e64657800001d0b0c4c706f6c796d6573685f657874656e73696f6e7330636865636b5f7765696768742c436865636b57656967687404045400000400210b011443573c543e0000210b10306672616d655f73797374656d28657874656e73696f6e7330636865636b5f7765696768742c436865636b57656967687404045400000000250b086870616c6c65745f7472616e73616374696f6e5f7061796d656e74604368617267655472616e73616374696f6e5061796d656e7404045400000400c901013042616c616e63654f663c543e0000290b084870616c6c65745f7065726d697373696f6e734453746f726543616c6c4d65746164617461040454000000002d0b0c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d651c52756e74696d6500000000c81853797374656d011853797374656d401c4163636f756e7401010402000c4101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e8205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e3845787472696e736963436f756e74000010040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e2c426c6f636b57656967687401001c600000000000000000000000000000000000000000000000000488205468652063757272656e742077656967687420666f722074686520626c6f636b2e40416c6c45787472696e736963734c656e000010040004410120546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e24426c6f636b486173680101040510248000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101040510280400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d6265720100101000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801002480000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e1844696765737401002c040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e747301003c04001ca0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e001d01204e4f54453a20546865206974656d20697320756e626f756e6420616e642073686f756c64207468657265666f7265206e657665722062652072656164206f6e20636861696e2ed020497420636f756c64206f746865727769736520696e666c6174652074686520506f562073697a65206f66206120626c6f636b2e002d01204576656e747320686176652061206c6172676520696e2d6d656d6f72792073697a652e20426f7820746865206576656e747320746f206e6f7420676f206f75742d6f662d6d656d6f7279fc206a75737420696e206361736520736f6d656f6e65207374696c6c207265616473207468656d2066726f6d2077697468696e207468652072756e74696d652e284576656e74436f756e74010010100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f70696373010104022475040400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e004d01205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e484c61737452756e74696d65557067726164650000790404000455012053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e545570677261646564546f553332526566436f756e74010015010400044d012054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e605570677261646564546f547269706c65526566436f756e74010015010400085d012054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e73207468726565207479706573206f662060526566436f756e74602e2046616c736548202864656661756c7429206966206e6f742e38457865637574696f6e506861736500006d04040004882054686520657865637574696f6e207068617365206f662074686520626c6f636b2e01850401481830426c6f636b576569676874739504850100c817a80400000000204aa9d10100008036be26000000000180914b872e010000010098f73e5d0100000100000000000000008036be26000000000180199ef1a20100000100204aa9d1010000010088526a740000008036be260000000000000004d020426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e2c426c6f636b4c656e677468a10430000078000000a0000000a00004a820546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e38426c6f636b48617368436f756e741010fa000000045501204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e204462576569676874a9044080f0fa020000000000c2eb0b000000000409012054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e1c56657273696f6ead04110430706f6c796d6573685f64657630706f6c796d6573685f64657601000000404b4c000000000048df6acb689907609b0400000037e397fc7c91f5e40100000040fe3ad401f8959a06000000d2bc9897eed08f1503000000f78b278be53f454c02000000ed99c5acb25eedf503000000cbca25e39f14238702000000687ad44ad37f03c201000000bc9d89904f5b923f0100000037c8bb1350a9a2a801000000ab3c0572291feb8b0100000018ef58a3b67ba77001000000329342994773047f01000000001a0b29f17d01f401000000f28e8080b6e2dfd002000000bb6ba9053c5c9d78020000009f242c2c886f3fce01000000595ac34c5ea1f5fe0100000003000000010484204765742074686520636861696e27732063757272656e742076657273696f6e2e28535335385072656669783903082a0014a8205468652064657369676e61746564205353383520707265666978206f66207468697320636861696e2e0039012054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e20697331012074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f662069742061737020616e206964656e746966696572206f662074686520636861696e2e01c104001042616265011042616265402845706f6368496e64657801002020000000000000000004542043757272656e742065706f636820696e6465782e2c417574686f7269746965730100c5040400046c2043757272656e742065706f636820617574686f7269746965732e2c47656e65736973536c6f740100d50420000000000000000008f82054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e205468697320697320309020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2c43757272656e74536c6f740100d50420000000000000000004542043757272656e7420736c6f74206e756d6265722e2852616e646f6d6e65737301000480000000000000000000000000000000000000000000000000000000000000000028b8205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e002c20232053656375726974790005012054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061f8206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e7915012063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d6265727320746861742074686973150120286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e206265050120757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e0d01206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e6050656e64696e6745706f6368436f6e6669674368616e67650000d90404000461012050656e64696e672065706f636820636f6e66696775726174696f6e206368616e676520746861742077696c6c206265206170706c696564207768656e20746865206e6578742065706f636820697320656e61637465642e384e65787452616e646f6d6e657373010004800000000000000000000000000000000000000000000000000000000000000000045c204e6578742065706f63682072616e646f6d6e6573732e3c4e657874417574686f7269746965730100c50404000460204e6578742065706f636820617574686f7269746965732e305365676d656e74496e6465780100101000000000247c2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e00f8205765206d616b6520612074726164652d6f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e01012057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f942060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e00ec204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e090120576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572791c2065706f63682e44556e646572436f6e737472756374696f6e0101040510e50404000415012054574f582d4e4f54453a20605365676d656e74496e6465786020697320616e20696e6372656173696e6720696e74656765722c20736f2074686973206973206f6b61792e2c496e697469616c697a65640000ed0404000801012054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d65601d01206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e4c417574686f7256726652616e646f6d6e6573730100ed0404001015012054686973206669656c642073686f756c6420616c7761797320626520706f70756c6174656420647572696e6720626c6f636b2070726f63657373696e6720756e6c6573731901207365636f6e6461727920706c61696e20736c6f74732061726520656e61626c65642028776869636820646f6e277420636f6e7461696e206120565246206f7574707574292e0051012049742069732073657420696e20606f6e5f696e697469616c697a65602c206265666f72652069742077696c6c20636f6e7461696e207468652076616c75652066726f6d20746865206c61737420626c6f636b2e2845706f6368537461727401009903200000000000000000145d012054686520626c6f636b206e756d62657273207768656e20746865206c61737420616e642063757272656e742065706f6368206861766520737461727465642c20726573706563746976656c7920604e2d316020616e641420604e602e4901204e4f54453a20576520747261636b207468697320697320696e206f7264657220746f20616e6e6f746174652074686520626c6f636b206e756d626572207768656e206120676976656e20706f6f6c206f66590120656e74726f7079207761732066697865642028692e652e20697420776173206b6e6f776e20746f20636861696e206f6273657276657273292e2053696e63652065706f6368732061726520646566696e656420696e590120736c6f74732c207768696368206d617920626520736b69707065642c2074686520626c6f636b206e756d62657273206d6179206e6f74206c696e6520757020776974682074686520736c6f74206e756d626572732e204c6174656e657373010010100000000014d820486f77206c617465207468652063757272656e7420626c6f636b20697320636f6d706172656420746f2069747320706172656e742e001501205468697320656e74727920697320706f70756c617465642061732070617274206f6620626c6f636b20657865637574696f6e20616e6420697320636c65616e65642075701101206f6e20626c6f636b2066696e616c697a6174696f6e2e205175657279696e6720746869732073746f7261676520656e747279206f757473696465206f6620626c6f636bb020657865637574696f6e20636f6e746578742073686f756c6420616c77617973207969656c64207a65726f2e2c45706f6368436f6e6669670000f10404000861012054686520636f6e66696775726174696f6e20666f72207468652063757272656e742065706f63682e2053686f756c64206e6576657220626520604e6f6e656020617320697420697320696e697469616c697a656420696e242067656e657369732e3c4e65787445706f6368436f6e6669670000f1040400082d012054686520636f6e66696775726174696f6e20666f7220746865206e6578742065706f63682c20604e6f6e65602069662074686520636f6e6669672077696c6c206e6f74206368616e6765e82028796f752063616e2066616c6c6261636b20746f206045706f6368436f6e6669676020696e737465616420696e20746861742063617365292e01f504000c3445706f63684475726174696f6e20202c010000000000000cec2054686520616d6f756e74206f662074696d652c20696e20736c6f74732c207468617420656163682065706f63682073686f756c64206c6173742e1901204e4f54453a2043757272656e746c79206974206973206e6f7420706f737369626c6520746f206368616e6765207468652065706f6368206475726174696f6e20616674657221012074686520636861696e2068617320737461727465642e20417474656d7074696e6720746f20646f20736f2077696c6c20627269636b20626c6f636b2070726f64756374696f6e2e444578706563746564426c6f636b54696d652020701700000000000014050120546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e67110120626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f75740501207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f740901206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473a0207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e384d6178417574686f7269746965731010a08601000488204d6178206e756d626572206f6620617574686f72697469657320616c6c6f776564010905012454696d657374616d70012454696d657374616d70080c4e6f7701002020000000000000000004902043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e2444696455706461746501001501040004b420446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f010d050004344d696e696d756d506572696f642020b80b000000000000104d0120546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a5d0120706572696f6420746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c5d012067656e6572616c6c7920776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c206265a020646f75626c65207468697320706572696f64206f6e2064656661756c742073657474696e67732e00021c496e6469636573011c496e646963657304204163636f756e7473000104021015050400048820546865206c6f6f6b75702066726f6d20696e64657820746f206163636f756e742e011905016c041c4465706f736974184040420f0000000000000000000000000004ac20546865206465706f736974206e656564656420666f7220726573657276696e6720616e20696e6465782e011d050328417574686f72736869700128417574686f72736869700c18556e636c6573010021050400041c20556e636c657318417574686f720000000400046420417574686f72206f662063757272656e7420626c6f636b2e30446964536574556e636c657301001501040004bc205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e012905000440556e636c6547656e65726174696f6e731010000000000ccc20546865206e756d626572206f6620626c6f636b73206261636b2077652073686f756c642061636365707420756e636c65732ee42054686973206d65616e7320746861742077652077696c6c206465616c207769746820756e636c652d706172656e7473207468617420617265942060556e636c6547656e65726174696f6e73202b203160206265666f726520606e6f77602e013105042042616c616e636573012042616c616e6365730834546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e144c6f636b7301010402003505040008b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e014105017004484578697374656e7469616c4465706f73697418400000000000000000000000000000000004d420546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e01490505485472616e73616374696f6e5061796d656e7401485472616e73616374696f6e5061796d656e7408444e6578744665654d756c7469706c69657201004d0540000064a7b3b6e00d0000000000000000003853746f7261676556657273696f6e01005105040000000008485472616e73616374696f6e42797465466565184064000000000000000000000000000000040d01205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e2c576569676874546f46656555055c040000000000000000000000000000000049b400000001040d012054686520706f6c796e6f6d69616c2074686174206973206170706c69656420696e206f7264657220746f20646572697665206665652066726f6d207765696768742e0006204964656e7469747901204964656e746974793c284469645265636f72647300010406785d050400045420444944202d3e206964656e7469747920696e666f2c497344696446726f7a656e01010406781501040004e420444944202d3e20626f6f6c207468617420696e64696361746573206966207365636f6e64617279206b657973206172652066726f7a656e2e2843757272656e74446964000078040004e02049742073746f726573207468652063757272656e74206964656e7469747920666f722063757272656e74207472616e73616374696f6e2e3043757272656e74506179657200000004000401012049742073746f726573207468652063757272656e74206761732066656520706179657220666f72207468652063757272656e74207472616e73616374696f6e18436c61696d7301010805026105ecc8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a04f020285461726765742049442c20636c61696d20747970652920286973737565722c73636f706529202d3e204173736f63696174656420636c61696d73284b65795265636f726473000104050071050400044501204d61702066726f6d204163636f756e74496420746f20604b65795265636f726460207468617420686f6c647320746865206b65792773206964656e7469747920616e64207065726d697373696f6e732e1c4469644b65797301010806057505150104000401012041207265766572736520646f75626c65206d617020746f20616c6c6f772066696e64696e6720616c6c206b65797320666f7220616e206964656e746974792e444d756c7469507572706f73654e6f6e636501002020000000000000000004bc204e6f6e636520746f20656e7375726520756e6971756520616374696f6e732e207374617274732066726f6d20312e684f6666436861696e417574686f72697a6174696f6e4e6f6e636501010406782020000000000000000004c820417574686f72697a6174696f6e206e6f6e636520706572204964656e746974792e20496e697469616c6c7920697320302e38417574686f72697a6174696f6e73000108020579057d05040004b020416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792f6b6579206861734c417574686f72697a6174696f6e73476976656e01010806058105690184000000000000000000000000000000000000000000000000000000000000000000044d0120416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792068617320676976656e2e2028417574686f72697a65722c20617574685f6964202d3e20617574686f72697a6564296c43646441757468466f724d61737465724b6579526f746174696f6e010015010400086501204f62736f6c657465642073746f72616765207661726961626c652073757065726365646564206279206043646441757468466f725072696d6172794b6579526f746174696f6e602e204974206973206b65707420686572659820666f722074686520707572706f7365206f662073746f72616765206d6967726174696f6e2e7043646441757468466f725072696d6172794b6579526f746174696f6e010015010400085d01204120636f6e66696720666c616720746861742c206966207365742c20696e7374727563747320616e20617574686f72697a6174696f6e2066726f6d2061204344442070726f766964657220696e206f7264657220746f9c206368616e676520746865207072696d617279206b6579206f6620616e206964656e746974792e3853746f7261676556657273696f6e01008505040004442053746f726167652076657273696f6e2e484163636f756e744b6579526566436f756e740101040200202000000000000000001cc420486f77206d616e7920227374726f6e6722207265666572656e63657320746f20746865206163636f756e74206b65792e00fc205374726f6e67207265666572656e6365732077696c6c20626c6f636b2061206b65792066726f6d206c656176696e672069742773206964656e746974792e00cc2050616c6c657473207573696e6720227374726f6e6722207265666572656e63657320746f206163636f756e74206b6579733aac202a2052656c617965723a20466f722060757365725f6b65796020616e642060706179696e675f6b6579600001890501880430496e697469616c504f4c59581840000000000000000000000000000000000001d505074c4364645365727669636550726f7669646572730138496e7374616e63653247726f75700c344163746976654d656d6265727301002101040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100d905040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01e1050119010001e5050844506f6c796d657368436f6d6d69747465650148496e7374616e636531436f6d6d6974746565242450726f706f73616c7301007104040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001040624e905040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e6700010406245908040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100210104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401009903200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f72000078040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201003501040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01005d08040004442053746f726167652076657273696f6e2e01ed0501250100016108094c436f6d6d69747465654d656d626572736869700138496e7374616e63653147726f75700c344163746976654d656d6265727301002101040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100d905040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01f105013901000165080a48546563686e6963616c436f6d6d69747465650148496e7374616e636533436f6d6d6974746565242450726f706f73616c7301007104040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001040624e905040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e6700010406245908040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100210104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401009903200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f72000078040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201003501040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01005d08040004442053746f726167652076657273696f6e2e01f505014101000169080b70546563686e6963616c436f6d6d69747465654d656d626572736869700138496e7374616e63653347726f75700c344163746976654d656d6265727301002101040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100d905040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01f90501490100016d080c4055706772616465436f6d6d69747465650148496e7374616e636534436f6d6d6974746565242450726f706f73616c7301007104040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001040624e905040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e6700010406245908040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100210104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c6401009903200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f72000078040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201003501040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01005d08040004442053746f726167652076657273696f6e2e01fd05015101000171080d6855706772616465436f6d6d69747465654d656d626572736869700138496e7374616e63653447726f75700c344163746976654d656d6265727301002101040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100d905040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e010106015901000175080e204d756c746953696701204d756c746953696730344d756c74695369674e6f6e6365010020200000000000000000042101204e6f6e636520746f20656e7375726520756e69717565204d756c746953696720616464726573736573206172652067656e6572617465643b207374617274732066726f6d20312e3c4d756c74695369675369676e6572730101080605790869018400000000000000000000000000000000000000000000000000000000000000000004d4205369676e657273206f662061206d756c74697369672e20286d756c74697369672c207369676e657229203d3e207369676e65722e3c4e756d6265724f665369676e65727301010406002020000000000000000004cc204e756d626572206f6620617070726f7665642f6163636570746564207369676e657273206f662061206d756c74697369672e544d756c74695369675369676e73526571756972656401010406002020000000000000000004e020436f6e6669726d6174696f6e73207265717569726564206265666f72652070726f63657373696e672061206d756c74697369672074782e384d756c74695369675478446f6e65010104060020200000000000000000043501204e756d626572206f66207472616e73616374696f6e732070726f706f73656420696e2061206d756c74697369672e20557365642061732074782069643b207374617274732066726f6d20302e2450726f706f73616c73000104057d08e90504000475012050726f706f73616c732070726573656e74656420666f7220766f74696e6720746f2061206d756c746973696720286d756c74697369672c2070726f706f73616c20696429203d3e204f7074696f6e3c543a3a50726f706f73616c3e2e2c50726f706f73616c4964730001080602810820040004942041206d617070696e67206f662070726f706f73616c7320746f207468656972204944732e14566f7465730101040585081501040004250120496e646976696475616c206d756c7469736967207369676e657220766f7465732e20286d756c7469207369672c207369676e65722c2070726f706f73616c29203d3e20766f74652e484d756c7469536967546f4964656e7469747901010406007880000000000000000000000000000000000000000000000000000000000000000004a4204d6170732061206d756c7469736967206163636f756e7420746f20697473206964656e746974792e3850726f706f73616c44657461696c010104057d0889084c00000000000000000000000000000000000000047c2044657461696c73206f662061206d756c74697369672070726f706f73616c485472616e73616374696f6e56657273696f6e010010100000000004f420546865206c617374207472616e73616374696f6e2076657273696f6e2c207573656420666f7220606f6e5f72756e74696d655f75706772616465602e3853746f7261676556657273696f6e01009108040004442053746f726167652076657273696f6e2e010506016101000195080f1842726964676501184272696467652828436f6e74726f6c6c65720100008000000000000000000000000000000000000000000000000000000000000000000c410120546865206d756c7469736967206163636f756e74206f66207468652062726964676520636f6e74726f6c6c65722e205468652067656e65736973207369676e65727320616363657074207468656972450120617574686f72697a6174696f6e7320616e64206172652061626c6520746f206765742074686569722070726f706f73616c732064656c6976657265642e20546865206272696467652063726561746f729c207472616e736665727320736f6d6520504f4c5920746f207468656972206964656e746974792e3c427269646765547844657461696c73010108020299089d08d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000859012044657461696c73206f6620627269646765207472616e73616374696f6e73206964656e7469666965642077697468207061697273206f662074686520726563697069656e74206163636f756e7420616e64207468656820627269646765207472616e73616374696f6e206e6f6e63652e1441646d696e010000800000000000000000000000000000000000000000000000000000000000000000043c205468652061646d696e206b65792e1846726f7a656e01001501040004bc2057686574686572206f72206e6f742074686520627269646765206f7065726174696f6e2069732066726f7a656e2e30467265657a6541646d696e7301010402001501040004090120467265657a65206272696467652061646d696e732e20205468657365206163636f756e74732063616e206f6e6c7920667265657a6520746865206272696467652e2054696d656c6f636b0100101000000000083d012054686520627269646765207472616e73616374696f6e2074696d656c6f636b20706572696f642c20696e20626c6f636b732c2073696e63652074686520616363657074616e6365206f66207468653101207472616e73616374696f6e2070726f706f73616c20647572696e67207768696368207468652061646d696e206b65792063616e20667265657a6520746865207472616e73616374696f6e2e2c4272696467654c696d69740100a50850000000000000000000000000000000000000000008290120546865206d6178696d756d206e756d626572206f66206272696467656420504f4c595820706572206964656e746974792077697468696e20612073657420696e74657276616c206f66f820626c6f636b732e204669656c64733a20504f4c595820616d6f756e7420616e642074686520626c6f636b20696e74657276616c206475726174696f6e2e30506f6c7978427269646765640101040678a50850000000000000000000000000000000000000000008510120416d6f756e74206f6620504f4c5958206272696467656420627920746865206964656e7469747920696e206c61737420626c6f636b20696e74657276616c2e204669656c64733a2074686520627269646765649420616d6f756e7420616e6420746865206c61737420696e74657276616c206e756d6265722e4c4272696467654c696d69744578656d7074656401010405781501040004c0204964656e746974696573206e6f7420636f6e73747261696e65642062792074686520627269646765206c696d69742e3853746f7261676556657273696f6e0100a908040004442053746f726167652076657273696f6e2e010906016d010001ad08101c5374616b696e67011c5374616b696e679c30486973746f7279446570746801001010540000001c8c204e756d626572206f66206572617320746f206b65657020696e20686973746f72792e00390120496e666f726d6174696f6e206973206b65707420666f72206572617320696e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e006101204d757374206265206d6f7265207468616e20746865206e756d626572206f6620657261732064656c617965642062792073657373696f6e206f74686572776973652e20492e652e2061637469766520657261206d757374390120616c7761797320626520696e20686973746f72792e20492e652e20606163746976655f657261203e2063757272656e745f657261202d20686973746f72795f646570746860206d757374206265302067756172616e746565642e3856616c696461746f72436f756e74010010100000000004a82054686520696465616c206e756d626572206f66207374616b696e67207061727469636970616e74732e544d696e696d756d56616c696461746f72436f756e740100101000000000044101204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e34496e76756c6e657261626c65730100e804000c590120416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e636520746865792772654d01206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f7572ac20696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e18426f6e6465640001040500000400040101204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e184c65646765720001040200b1080400044501204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e14506179656501010405001d06040004e42057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e2856616c696461746f72730101040500210608000004450120546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e284e6f6d696e61746f72730001040500bd08040004650120546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f2074686520736574206f66207374617368206b657973206f6620616c6c2076616c696461746f727320746f206e6f6d696e6174652e2843757272656e744572610000100400105c205468652063757272656e742065726120696e6465782e006501205468697320697320746865206c617465737420706c616e6e6564206572612c20646570656e64696e67206f6e20686f77207468652053657373696f6e2070616c6c657420717565756573207468652076616c696461746f7280207365742c206974206d6967687420626520616374697665206f72206e6f742e244163746976654572610000c108040010d820546865206163746976652065726120696e666f726d6174696f6e2c20697420686f6c647320696e64657820616e642073746172742e0059012054686520616374697665206572612069732074686520657261206265696e672063757272656e746c792072657761726465642e2056616c696461746f7220736574206f66207468697320657261206d757374206265ac20657175616c20746f205b6053657373696f6e496e746572666163653a3a76616c696461746f7273605d2e5445726173537461727453657373696f6e496e6465780001040510100400103101205468652073657373696f6e20696e646578206174207768696368207468652065726120737461727420666f7220746865206c6173742060484953544f52595f44455054486020657261732e006101204e6f74653a205468697320747261636b7320746865207374617274696e672073657373696f6e2028692e652e2073657373696f6e20696e646578207768656e20657261207374617274206265696e672061637469766529f020666f7220746865206572617320696e20605b43757272656e74457261202d20484953544f52595f44455054482c2043757272656e744572615d602e2c457261735374616b6572730101080505c508c5010c0000001878204578706f73757265206f662076616c696461746f72206174206572612e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e48457261735374616b657273436c69707065640101080505c508c5010c0000002c9820436c6970706564204578706f73757265206f662076616c696461746f72206174206572612e00590120546869732069732073696d696c617220746f205b60457261735374616b657273605d20627574206e756d626572206f66206e6f6d696e61746f7273206578706f736564206973207265647563656420746f20746865dc2060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732e1d0120284e6f74653a20746865206669656c642060746f74616c6020616e6420606f776e60206f6620746865206578706f737572652072656d61696e7320756e6368616e676564292ef42054686973206973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e005d012054686973206973206b657965642066697374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e484572617356616c696461746f7250726566730101080505c50821060800001411012053696d696c617220746f2060457261735374616b657273602c207468697320686f6c64732074686520707265666572656e636573206f662076616c696461746f72732e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4c4572617356616c696461746f7252657761726400010405101804000c09012054686520746f74616c2076616c696461746f7220657261207061796f757420666f7220746865206c6173742060484953544f52595f44455054486020657261732e0021012045726173207468617420686176656e27742066696e697368656420796574206f7220686173206265656e2072656d6f76656420646f65736e27742068617665207265776172642e4045726173526577617264506f696e74730101040510c90814000000000008ac205265776172647320666f7220746865206c6173742060484953544f52595f44455054486020657261732e250120496620726577617264206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207265776172642069732072657475726e65642e3845726173546f74616c5374616b65010104051018400000000000000000000000000000000008ec2054686520746f74616c20616d6f756e74207374616b656420666f7220746865206c6173742060484953544f52595f44455054486020657261732e1d0120496620746f74616c206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207374616b652069732072657475726e65642e20466f7263654572610100d50804000454204d6f6465206f662065726120666f7263696e672e4c536c6173685265776172644672616374696f6e0100890110000000000cf8205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e00e4205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e4c43616e63656c6564536c6173685061796f757401001840000000000000000000000000000000000815012054686520616d6f756e74206f662063757272656e637920676976656e20746f207265706f7274657273206f66206120736c617368206576656e7420776869636820776173ec2063616e63656c65642062792065787472616f7264696e6172792063697263756d7374616e6365732028652e672e20676f7665726e616e6365292e40556e6170706c696564536c61736865730101040510d908040004c420416c6c20756e6170706c69656420736c61736865732074686174206172652071756575656420666f72206c617465722e28426f6e646564457261730100750404001025012041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e00c8204d75737420636f6e7461696e7320696e666f726d6174696f6e20666f72206572617320666f72207468652072616e67653abc20605b6163746976655f657261202d20626f756e64696e675f6475726174696f6e3b206163746976655f6572615d604c56616c696461746f72536c617368496e4572610001080505c508e908040008450120416c6c20736c617368696e67206576656e7473206f6e2076616c696461746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682070726f706f7274696f6e7020616e6420736c6173682076616c7565206f6620746865206572612e4c4e6f6d696e61746f72536c617368496e4572610001080505c50818040004610120416c6c20736c617368696e67206576656e7473206f6e206e6f6d696e61746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682076616c7565206f6620746865206572612e34536c617368696e675370616e730001040500ed080400048c20536c617368696e67207370616e7320666f72207374617368206163636f756e74732e245370616e536c617368010104059908f108800000000000000000000000000000000000000000000000000000000000000000083d01205265636f72647320696e666f726d6174696f6e2061626f757420746865206d6178696d756d20736c617368206f6620612073746173682077697468696e206120736c617368696e67207370616e2cb82061732077656c6c20617320686f77206d7563682072657761726420686173206265656e2070616964206f75742e584561726c69657374556e6170706c696564536c617368000010040004fc20546865206561726c696573742065726120666f72207768696368207765206861766520612070656e64696e672c20756e6170706c69656420736c6173682e48536e617073686f7456616c696461746f72730000e8040008650120536e617073686f74206f662076616c696461746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e48536e617073686f744e6f6d696e61746f72730000e8040008650120536e617073686f74206f66206e6f6d696e61746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e34517565756564456c65637465640000f50804000c650120546865206e6578742076616c696461746f72207365742e2041742074686520656e64206f6620616e206572612c206966207468697320697320617661696c61626c652028706f74656e7469616c6c792066726f6d20746865610120726573756c74206f6620616e206f6666636861696e20776f726b6572292c20697420697320696d6d6564696174656c7920757365642e204f74686572776973652c20746865206f6e2d636861696e20656c656374696f6e342069732065786563757465642e2c51756575656453636f726500000507040004b0205468652073636f7265206f66207468652063757272656e74205b60517565756564456c6563746564605d2e44457261456c656374696f6e5374617475730100f908040008490120466c616720746f20636f6e74726f6c2074686520657865637574696f6e206f6620746865206f6666636861696e20656c656374696f6e2e205768656e20604f70656e285f29602c207765206163636570746c20736f6c7574696f6e7320746f206265207375626d69747465642e54497343757272656e7453657373696f6e46696e616c010015010400084d012054727565206966207468652063757272656e74202a2a706c616e6e65642a2a2073657373696f6e2069732066696e616c2e204e6f74652074686174207468697320646f6573206e6f742074616b65206572615820666f7263696e6720696e746f206163636f756e742e505065726d697373696f6e65644964656e746974790001040578fd08040004ec20456e74697469657320746861742061726520616c6c6f77656420746f2072756e206f70657261746f722f76616c696461746f72206e6f6465732e5856616c696461746f72436f6d6d697373696f6e4361700100890110000000000415012045766572792076616c696461746f722068617320636f6d6d697373696f6e20746861742073686f756c6420626520696e207468652072616e6765205b302c204361705d2e504d696e696d756d426f6e645468726573686f6c64010018400000000000000000000000000000000004d020546865206d696e696d756d20616d6f756e74207769746820776869636820612076616c696461746f722063616e20626f6e642e48536c617368696e67416c6c6f776564466f7201008d010402003853746f7261676556657273696f6e01000109040610cc2054727565206966206e6574776f726b20686173206265656e20757067726164656420746f20746869732076657273696f6e2e7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e00a020546869732069732073657420746f2076362e302e3120666f72206e6577206e6574776f726b732e0119060181012c3853657373696f6e735065724572611010030000000470204e756d626572206f662073657373696f6e7320706572206572612e3c426f6e64696e674475726174696f6e10100700000004e4204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e48536c61736844656665724475726174696f6e101004000000140101204e756d626572206f662065726173207468617420736c6173686573206172652064656665727265642062792c20616674657220636f6d7075746174696f6e2e00bc20546869732073686f756c64206265206c657373207468616e2074686520626f6e64696e67206475726174696f6e2e2d012053657420746f203020696620736c61736865732073686f756c64206265206170706c69656420696d6d6564696174656c792c20776974686f7574206f70706f7274756e69747920666f723820696e74657276656e74696f6e2e44456c656374696f6e4c6f6f6b616865616410104b0000001c710120546865206e756d626572206f6620626c6f636b73206265666f72652074686520656e64206f6620746865206572612066726f6d20776869636820656c656374696f6e207375626d697373696f6e732061726520616c6c6f7765642e006d012053657474696e67207468697320746f207a65726f2077696c6c2064697361626c6520746865206f6666636861696e20636f6d7075746520616e64206f6e6c79206f6e2d636861696e207365712d70687261676d656e2077696c6c2420626520757365642e007501205468697320697320626f756e646564206279206265696e672077697468696e20746865206c6173742073657373696f6e2e2048656e63652c2073657474696e6720697420746f20612076616c7565206d6f7265207468616e207468659c206c656e677468206f6620612073657373696f6e2077696c6c20626520706f696e746c6573732e344d6178497465726174696f6e7310100a0000000c2901204d6178696d756d206e756d626572206f662062616c616e63696e6720697465726174696f6e7320746f2072756e20696e20746865206f6666636861696e207375626d697373696f6e2e00ec2049662073657420746f20302c2062616c616e63655f736f6c7574696f6e2077696c6c206e6f7420626520657865637574656420617420616c6c2e504d696e536f6c7574696f6e53636f726542756d7089011020a1070004610120546865207468726573686f6c64206f6620696d70726f76656d656e7420746861742073686f756c642062652070726f766964656420666f722061206e657720736f6c7574696f6e20746f2062652061636365707465642e804d61784e6f6d696e61746f72526577617264656450657256616c696461746f7210100008000010f820546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320726577617264656420666f7220656163682076616c696461746f722e00690120466f7220656163682076616c696461746f72206f6e6c79207468652060244d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732063616e20636c61696d2101207468656972207265776172642e2054686973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e5c4d617856616c696461746f725065724964656e74697479790210100905000cf4204d6178696d756d206e756d626572206f662076616c696461746f727320666f722065616368207065726d697373696f6e6564206964656e746974792e005901204d6178206e756d626572206f662076616c696461746f727320636f756e74203d20604d617856616c696461746f725065724964656e74697479202a2053656c663a3a76616c696461746f725f636f756e742829602e844d61785661726961626c65496e666c6174696f6e546f74616c49737375616e636518400080c6a47e8d03000000000000000000047101204d6178696d756d20616d6f756e74206f662060543a3a63757272656e63793a3a746f74616c5f69737375616e63652829602061667465722074686174206e6f6e2d696e666c6174656420726577617264732067657420706169642e444669786564596561726c79526577617264184000c0444a547f0000000000000000000004010120546f74616c2079656172207265776172647320746861742067657473207061696420647572696e6720666978656420726577617264207363686564756c652e2c4d696e696d756d426f6e64184040420f0000000000000000000000000004f0204d696e696d756d20616d6f756e74206f6620504f4c59582074686174206d75737420626520626f6e64656420666f722061206e657720626f6e642e01050911204f6666656e63657301204f6666656e6365730c1c5265706f72747300010405240909040004490120546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e58436f6e63757272656e745265706f727473496e64657801010805050d0971040400042901204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e485265706f72747342794b696e64496e64657801010405950128040018110120456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e00bc20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e004901204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f66690120646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e000191010000121c53657373696f6e011c53657373696f6e1c2856616c696461746f72730100e80400047c205468652063757272656e7420736574206f662076616c696461746f72732e3043757272656e74496e646578010010100000000004782043757272656e7420696e646578206f66207468652073657373696f6e2e345175657565644368616e67656401001501040008390120547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f7273a420686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e285175657565644b657973010011090400083d012054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b657973e02077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e4844697361626c656456616c696461746f7273010039040400148020496e6469636573206f662064697361626c65642076616c696461746f72732e003d01205468652076656320697320616c77617973206b65707420736f7274656420736f20746861742077652063616e2066696e642077686574686572206120676976656e2076616c696461746f722069733d012064697361626c6564207573696e672062696e617279207365617263682e204974206765747320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e73642061206e657720736574206f66206964656e7469746965732e204e6578744b657973000104050011070400049c20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e204b65794f776e657200010405190900040004090120546865206f776e6572206f662061206b65792e20546865206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e010d07019901000121091348417574686f72697479446973636f766572790000000000141c4772616e647061011c4772616e647061181453746174650100250904000490205374617465206f66207468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e676500002909040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000010040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c6564000099030400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e3043757272656e745365744964010020200000000000000000085d0120546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c697469657329c420696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e30536574496453657373696f6e00010405201004001059012041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e00b82054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e011907019d0104384d6178417574686f7269746965731010a0860100045c204d617820417574686f72697469657320696e207573650131091528486973746f726963616c00000000001620496d4f6e6c696e650120496d4f6e6c696e651038486561727462656174416674657201001010000000002c1d012054686520626c6f636b206e756d6265722061667465722077686963682069742773206f6b20746f2073656e64206865617274626561747320696e207468652063757272656e74242073657373696f6e2e0025012041742074686520626567696e6e696e67206f6620656163682073657373696f6e20776520736574207468697320746f20612076616c756520746861742073686f756c642066616c6c350120726f7567686c7920696e20746865206d6964646c65206f66207468652073657373696f6e206475726174696f6e2e20546865206964656120697320746f206669727374207761697420666f721901207468652076616c696461746f727320746f2070726f64756365206120626c6f636b20696e207468652063757272656e742073657373696f6e2c20736f207468617420746865a820686561727462656174206c61746572206f6e2077696c6c206e6f74206265206e65636573736172792e00390120546869732076616c75652077696c6c206f6e6c79206265207573656420617320612066616c6c6261636b206966207765206661696c20746f2067657420612070726f7065722073657373696f6e2d012070726f677265737320657374696d6174652066726f6d20604e65787453657373696f6e526f746174696f6e602c2061732074686f736520657374696d617465732073686f756c642062650101206d6f7265206163637572617465207468656e207468652076616c75652077652063616c63756c61746520666f7220604865617274626561744166746572602e104b65797301003509040004d0205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e48526563656976656448656172746265617473000108050599033d090400083d0120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206053657373696f6e496e6465786020616e64206041757468496e6465786020746fb02060577261707065724f70617175653c426f756e6465644f70617175654e6574776f726b53746174653e602e38417574686f726564426c6f636b730101080505c50810100000000008150120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206056616c696461746f7249643c543e6020746f20746865c8206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e01450701b1010440556e7369676e65645072696f726974792020ffffffffffffffff10f0204120636f6e66696775726174696f6e20666f722062617365207072696f72697479206f6620756e7369676e6564207472616e73616374696f6e732e0015012054686973206973206578706f73656420736f20746861742069742063616e2062652074756e656420666f7220706172746963756c61722072756e74696d652c207768656eb4206d756c7469706c652070616c6c6574732073656e6420756e7369676e6564207472616e73616374696f6e732e015109176052616e646f6d6e657373436f6c6c656374697665466c6970016052616e646f6d6e657373436f6c6c656374697665466c6970043852616e646f6d4d6174657269616c0100550904000c610120536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e2054686973610120697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f664420746865206f6c6465737420686173682e0000000018105375646f01105375646f040c4b657901000080000000000000000000000000000000000000000000000000000000000000000004842054686520604163636f756e74496460206f6620746865207375646f206b65792e01650701d5010001590919144173736574011441737365747c1c5469636b657273010104029c5d09840000000000000000000000000000000000000000000000000000000000000000000874205469636b657220726567697374726174696f6e2064657461696c732e7c20287469636b657229202d3e205469636b6572526567697374726174696f6e305469636b6572436f6e666967010081070800000870205469636b657220726567697374726174696f6e20636f6e6669672e9420287469636b657229202d3e205469636b6572526567697374726174696f6e436f6e66696718546f6b656e73010104029c6109c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008e02044657461696c73206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e050120287469636b657229202d3e205365637572697479546f6b656e2064657461696c73205b72657475726e73205365637572697479546f6b656e207374727563745d2841737365744e616d6573010104029cf901040008ec204173736574206e616d65206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e6020287469636b657229202d3e206041737365744e616d65602442616c616e63654f660101080206650918400000000000000000000000000000000008b42054686520746f74616c206173736574207469636b65722062616c616e636520706572206964656e746974792e6420287469636b65722c2044494429202d3e2042616c616e63652c4964656e74696669657273010104029ce901040004b82041206d6170206f662061207469636b6572206e616d6520616e64206173736574206964656e746966696572732e50437573746f6d54797065496453657175656e63650100e50110000000000cc420546865206e65787420604173736574547970653a3a437573746f6d6020494420696e207468652073657175656e63652e00d0204e756d6265727320696e207468652073657175656e63652073746172742066726f6d203120726174686572207468616e20302e2c437573746f6d547970657301010405e50128040004f8204d61707320637573746f6d20617373657420747970652069647320746f20746865207265676973746572656420737472696e6720636f6e74656e74732e48437573746f6d5479706573496e76657273650101040228e501100000000004610120496e7665727365206d6170206f662060437573746f6d5479706573602c2066726f6d207265676973746572656420737472696e6720636f6e74656e747320746f20637573746f6d2061737365742074797065206964732e3046756e64696e67526f756e64010104029cdd010400089c20546865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e60207469636b6572202d3e2066756e64696e6720726f756e6450497373756564496e46756e64696e67526f756e640101040269091840000000000000000000000000000000000811012054686520746f74616c2062616c616e636573206f6620746f6b656e732069737375656420696e20616c6c207265636f726465642066756e64696e6720726f756e64732e8c20287469636b65722c2066756e64696e6720726f756e6429202d3e2062616c616e63651846726f7a656e010104029c1501040008e82054686520736574206f662066726f7a656e2061737365747320696d706c656d656e7465642061732061206d656d62657273686970206d61702e3c207469636b6572202d3e20626f6f6c5c41737365744f776e65727368697052656c6174696f6e7301010806026d09710904000888205469636b65727320616e6420746f6b656e206f776e656420627920612075736572842028757365722c207469636b657229202d3e2041737365744f776e657273686970384173736574446f63756d656e7473010108020575090102140000000000087c20446f63756d656e747320617474616368656420746f20616e2041737365747420287469636b65722c20646f635f696429202d3e20646f63756d656e74604173736574446f63756d656e7473496453657175656e6365010104029cfd0110000000000880205065722d7469636b657220646f63756d656e7420494420636f756e7465722e4c20287469636b657229202d3e20646f635f696438436c61737369635469636b657273000104029c7909040004f0205469636b657220726567697374726174696f6e2064657461696c73206f6e20506f6c796d61746820436c6173736963202f20457468657265756d2e4042616c616e63654f66417453636f706501010806067d091840000000000000000000000000000000000ccc2042616c616e636573206765742073746f726564206f6e20746865206261736973206f6620746865206053636f70654964602e9d01205269676874206e6f77206974206973206f6e6c792068656c7066756c20666f722074686520554920707572706f7365732062757420696e206675747572652069742063616e206265207573656420746f20646f206d697261636c6573206f6e2d636861696e2e88202853636f706549642c204964656e74697479496429203d3e2042616c616e63652e4041676772656761746542616c616e6365010108020665091840000000000000000000000000000000000825012053746f7265206167677265676174652062616c616e6365206f662074686f7365206964656e746974696573207468617420686173207468652073616d65206053636f70654964602e7820285469636b65722c2053636f7065496429203d3e2042616c616e63652e2453636f706549644f66010108020665097880000000000000000000000000000000000000000000000000000000000000000008dc20547261636b73207468652053636f70654964206f6620746865206964656e7469747920666f72206120676976656e207469636b65722e8420285469636b65722c204964656e74697479496429203d3e2053636f706549642e6444697361626c65496e766573746f72556e697175656e657373010104029c150104001031012044656369646573207768657468657220696e766573746f7220756e697175656e65737320726571756972656d656e7420697320656e666f7263656420666f7220746869732061737365742e8c206066616c736560206d65616e73207468617420697420697320656e666f726365642e0040205469636b6572203d3e20626f6f6c2e4c41737365744d6574616461746156616c7565730001080205810931020400047c204d65746174646174612076616c75657320666f7220616e2061737365742e6441737365744d6574616461746156616c756544657461696c73000108020581093902040004a02044657461696c7320666f7220616e2061737365742773204d657461646174612076616c7565732e6c41737365744d657461646174614c6f63616c4e616d65546f4b657900010802028509450204000488204173736574204d65746164617461204c6f63616c204e616d65202d3e204b65792e7041737365744d65746164617461476c6f62616c4e616d65546f4b657900010402410261020400048c204173736574204d6574616461746120476c6f62616c204e616d65202d3e204b65792e6c41737365744d657461646174614c6f63616c4b6579546f4e616d6500010802058909410204000488204173736574204d65746164617461204c6f63616c204b6579202d3e204e616d652e7041737365744d65746164617461476c6f62616c4b6579546f4e616d6500010405610241020400048c204173736574204d6574616461746120476c6f62616c204b6579202d3e204e616d652e5c41737365744d657461646174614c6f63616c537065637300010802058909490204000480204173736574204d65746164617461204c6f63616c204b65792073706563732e6041737365744d65746164617461476c6f62616c5370656373000104056102490204000484204173736574204d6574616461746120476c6f62616c204b65792073706563732e6441737365744d657461646174614e6578744c6f63616c4b6579010104029c4502200000000000000000047c204e657874204173736574204d65746164617461204c6f63616c204b65792e6841737365744d657461646174614e657874476c6f62616c4b6579010061022000000000000000000480204e657874204173736574204d6574616461746120476c6f62616c204b65792e3853746f7261676556657273696f6e01008d09040004442053746f726167652076657273696f6e2e01690701d90118784d61784e756d6265724f66544d457874656e73696f6e466f724173736574101005000000004841737365744e616d654d61784c656e677468101080000000006446756e64696e67526f756e644e616d654d61784c656e677468101080000000006841737365744d657461646174614e616d654d61784c656e677468101000010000006c41737365744d6574616461746156616c75654d61784c656e677468101000200000007441737365744d65746164617461547970654465664d61784c656e677468101000200000000191091a4c4361706974616c446973747269627574696f6e014c4361706974616c446973747269627574696f6e0c34446973747269627574696f6e73000104026d02750204000c350120416c6c206361706974616c20646973747269627574696f6e732c207469656420746f207468656972207265737065637469766520636f72706f7261746520616374696f6e732028434173292e005c20284341496429203d3e20446973747269627574696f6e28486f6c64657250616964010104029509150104000c8c2048617320616e20617373657420686f6c646572206265656e2070616964207965743f00a42028434149642c2044494429202d3e2057617320444944207061696420696e2074686520434149643f3853746f7261676556657273696f6e01009909040004442053746f726167652076657273696f6e2e01890701650200019d091b28436865636b706f696e740128436865636b706f696e742c2c546f74616c537570706c790101080205a1091840000000000000000000000000000000000cb420546f74616c20737570706c79206f662074686520746f6b656e2061742074686520636865636b706f696e742e00ec20287469636b65722c20636865636b706f696e74496429202d3e20746f74616c20737570706c7920617420676976656e20636865636b706f696e741c42616c616e63650101080205a5091840000000000000000000000000000000000c882042616c616e6365206f66206120444944206174206120636865636b706f696e742e00050120287469636b65722c206469642c20636865636b706f696e7420494429202d3e2042616c616e6365206f66206120444944206174206120636865636b706f696e7450436865636b706f696e74496453657175656e6365010104029c8502200000000000000000108c20436865636b706f696e74732049442067656e657261746f722073657175656e63652ea8204944206f6620666972737420636865636b706f696e74206973203120696e7374656164206f6620302e007c20287469636b657229202d3e206e6f2e206f6620636865636b706f696e74733842616c616e63655570646174657301010802056509a909040008bc20436865636b706f696e747320776865726520612044494427732062616c616e63652077617320757064617465642ef020287469636b65722c2064696429202d3e205b636865636b706f696e7420494420776865726520757365722062616c616e6365206368616e6765645d2854696d657374616d70730101080205a10920200000000000000000185c20436865636b706f696e742074696d657374616d70732e000901204576657279207363686564756c652d6f726967696e6174656420636865636b706f696e74206d6170732069747320494420746f20697473206475652074696d652e210120457665727920636865636b706f696e74206d616e75616c6c792063726561746564206d6170732069747320494420746f207468652074696d65206f66207265636f7264696e672e00d020287469636b657229202d3e2028636865636b706f696e7420494429202d3e20636865636b706f696e742074696d657374616d70585363686564756c65734d6178436f6d706c657869747901002020000000000000000008190120546865206d6178696d756d20636f6d706c657869747920616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365749c2028692e652e20605363686564756c6573602073746f72616765206974656d2062656c6f77292e485363686564756c65496453657175656e6365010104029c99022000000000000000000cb420436865636b706f696e74207363686564756c652049442073657175656e636520666f72207469636b6572732e006020287469636b657229202d3e207363686564756c65204944245363686564756c6573010104029cad0904000c8820436865636b706f696e74207363686564756c657320666f72207469636b6572732e005c20287469636b657229202d3e205b7363686564756c655d405363686564756c65526566436f756e740101080205b10910100000000020010120486f77206d616e7920227374726f6e6722207265666572656e6365732061726520746865726520746f206120676976656e20605363686564756c654964603f00fc205468652070726573656e6365206f66206120227374726f6e6722207265666572656e63652c20696e207468652073656e7365206f66206052633c543e602ce020656e7461696c73207468617420746865207265666572656e636564207363686564756c652063616e6e6f742062652072656d6f7665642ed820546875732c206173206c6f6e6720617320607374726f6e675f7265665f636f756e74287363686564756c655f696429203e2030602cac206072656d6f76655f7363686564756c65287363686564756c655f696429602077696c6c206572726f722e00a820287469636b65722c207363686564756c6520494429202d3e207374726f6e672072656620636f756e74385363686564756c65506f696e74730101080205b109a90904000cc420416c6c2074686520636865636b706f696e7473206120676976656e207363686564756c65206f726967696e617465642e00a420287469636b65722c207363686564756c6520494429202d3e205b636865636b706f696e742049445d3853746f7261676556657273696f6e0100b509040004442053746f726167652076657273696f6e2e019107017d020001b9091c44436f6d706c69616e63654d616e616765720144436f6d706c69616e63654d616e616765720c404173736574436f6d706c69616e636573010104029cbd0908000004e820417373657420636f6d706c69616e636520666f722061207469636b657220285469636b6572202d3e204173736574436f6d706c69616e6365294854727573746564436c61696d497373756572010104029cb902040004dc204c697374206f66207472757374656420636c61696d20697373756572205469636b6572202d3e20497373756572204964656e746974793853746f7261676556657273696f6e0100c109040004442053746f726167652076657273696f6e2e019907019d0204584d6178436f6e646974696f6e436f6d706c65786974791010320000000001c5091d3c436f72706f72617465416374696f6e013c436f72706f72617465416374696f6e24404d617844657461696c734c656e67746801001010000000001c5d012044657465726d696e657320746865206d6178696d756d206e756d626572206f6620627974657320746861742074686520667265652d666f726d206064657461696c7360206f6620612043412063616e2073746f72652e002901204e6f746520746861742074686973206973206e6f7420746865206e756d626572206f662060636861726073206f7220746865206e756d626572206f66205b6772617068656d65735d2e4101205768696c652074686973206d617920626520756e6e61747572616c20696e207465726d73206f662068756d616e20756e6465727374616e64696e67206f66206120746578742773206c656e6774682c6501206974206d6f726520636c6f73656c79207265666c656374732061637475616c2073746f7261676520636f73747320286027612760206973206368656170657220746f2073746f7265207468616e20616e20656d6f6a69292e00d0205b6772617068656d65735d3a2068747470733a2f2f656e2e77696b6970656469612e6f72672f77696b692f4772617068656d655c44656661756c745461726765744964656e746974696573010104029cd50208000110f020546865206964656e7469746965732074617267657465642062792064656661756c7420666f722043417320666f722074686973207469636b65722c8c2065697468657220746f206265206578636c75646564206f7220696e636c756465642e007820287469636b6572203d3e20746172676574206964656e746974696573295444656661756c7457697468686f6c64696e67546178010104029c7902100000000020ad01205468652064656661756c7420616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722074686973207469636b6572207768656e20646973747269627574696e67206469766964656e64732e00350120546f20756e6465727374616e642077697468686f6c64696e67207461782c20652e672e2c206c6574277320617373756d65207468617420796f7520686f6c642041434d45207368617265732ec42041434d45206e6f77206465636964657320746f2064697374726962757465203130302053454b20746f20416c6963652e590120416c696365206c6976657320696e2053776564656e2c20736f20536b617474657665726b6574202874686520537765646973682074617820617574686f72697479292077616e747320333025206f6620746861742e5d01205468656e2074686f736520313030202a2033302520617265207769746868656c642066726f6d20416c6963652c20616e642041434d452077696c6c2073656e64207468656d20746f20536b617474657665726b65742e006820287469636b6572203d3e202520746f2077697468686f6c64294444696457697468686f6c64696e67546178010104029cf50204001049012054686520616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722061206365727461696e207469636b65722078204449442e6d0120496620616e20656e7472792065786973747320666f722061206365727461696e204449442c206974206f7665727269646573207468652064656661756c7420696e206044656661756c7457697468686f6c64696e67546178602e008820287469636b6572203d3e205b286469642c202520746f2077697468686f6c64295d304341496453657175656e6365010104029c7102100000000008b420546865206e657874207065722d605469636b65726020434120494420696e207468652073657175656e63652e4d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652e40436f72706f72617465416374696f6e730001080205c909e1020400146c20416c6c207265636f72646564204341732074687573206661722ea4204f6e6c792067656e6572696320696e666f726d6174696f6e2069732073746f72656420686572652e7d01205370656369666963206043414b696e6460732c20652e672e2c2062656e656669747320616e6420636f72706f726174652062616c6c6f74732c206d617920757365206164646974696f6e616c206f6e2d636861696e2073746f726167652e00b420287469636b6572203d3e206c6f63616c204944203d3e2074686520636f72706f7261746520616374696f6e29244341446f634c696e6b010104026d020103040014d0204173736f63696174696f6e732066726f6d2043417320746f2060446f63756d656e74607320766961207468656972204944732e5c202843414964203d3e205b446f63756d656e7449645d29000501205468652060436f72706f72617465416374696f6e7360206d61702073746f72657320605469636b6572203d3e204c6f63616c4964203d3e20546865204341602c250120736f2077652063616e20696e66657220605469636b6572203d3e2043414964602e205468657265666f72652c20776520646f6e2774206e656564206120646f75626c65206d61702e1c44657461696c73010104026d02fd02040008e8204173736f6369617465732064657461696c7320696e20667265652d666f726d207465787420776974682061204341206279206974732049442e50202843414964203d3e20434144657461696c73293853746f7261676556657273696f6e0100cd09040004442053746f726167652076657273696f6e2e019d0701d10208304d61785461726765744964731010e803000000284d6178446964576874731010e80300000001d1091e3c436f72706f7261746542616c6c6f74013c436f72706f7261746542616c6c6f7418144d65746173000104026d020d0304000c80204d65746164617461206f66206120636f72706f726174652062616c6c6f742e005420284341496429203d3e2042616c6c6f744d6574612854696d6552616e676573000104026d020903040010e42054696d652064657461696c73206f66206120636f72706f726174652062616c6c6f74206173736f636961746564207769746820612043412ed0205468652074696d657374616d70732064656e6f7465207768656e20766f74696e672073746172747320616e642073746f70732e006820284341496429203d3e2042616c6c6f7454696d6552616e6765404d6f74696f6e4e756d43686f69636573010104026d023506040024c82053746f72657320686f77206d616e792063686f696365732074686572652061726520696e2065616368206d6f74696f6e2e00250120417420616c6c2074696d65732c2074686520696e76617269616e7420686f6c6473207468617420606d6f74696f6e5f63686f696365735b6964785d6020697320657175616c20746f310120606d657461732e756e7772617028292e6d6f74696f6e735b6964785d2e63686f696365732e6c656e2829602e20546861742069732c2074686973206973206a75737420612063616368652c1101207573656420746f2061766f6964206665746368696e6720616c6c20746865206d6f74696f6e732077697468207468656972206173736f6369617465642074657874732e0001012060753136602063686f696365732073686f756c64206265206d6f7265207468616e20656e6f75676820746f20666974207265616c207573652063617365732e00b020284341496429203d3e204e756d626572206f662063686f6963657320696e2065616368206d6f74696f6e2e0c524356010104026d021501040010dc2049732072616e6b65642063686f69636520766f74696e6720285243562920656e61626c656420666f7220746869732062616c6c6f743f650120466f7220616e20756e6465727374616e64696e67206f6620686f77205243562069732068616e646c65642c20736565206e6f7465206f6e206042616c6c6f74566f7465602773206066616c6c6261636b60206669656c642e003c20284341496429203d3e20626f6f6c1c526573756c7473010104026d02d50904001cb02053746f7265732074686520746f74616c20766f74652074616c6c79206f6e20656163682063686f6963652e006820524356206973206e6f74206163636f756e74656420666f722cd02061732074686572652061726520746f6f206d616e792077616e747320746f20696e74657270726574207468652067726170682c9c20616e64206265636175736520697420776f756c64206e6f7420626520656666696369656e742e008420284341496429203d3e205b63757272656e7420766f746520776569676874735d14566f746573010108020695092d03040018ac2053746f726573206561636820444944277320766f74657320696e206120676976656e2062616c6c6f742ef8205365652074686520646f63756d656e746174696f6e206f66206042616c6c6f74566f74656020666f72206e6f746573206f6e2073656d616e746963732e008420284341496429203d3e202844494429203d3e205b766f7465207765696768745d001d012055736572206d75737420656e746572203020766f746520776569676874206966207468657920646f6e27742077616e7420746f20766f746520666f7220612063686f6963652e01b5070105030001d9091f2c5065726d697373696f6e730000000001dd09201050697073011050697073544c5072756e65486973746f726963616c5069707301001501040004fc2044657465726d696e6573207768657468657220686973746f726963616c20504950206461746120697320706572736973746564206f722072656d6f766564584d696e696d756d50726f706f73616c4465706f7369740100184000000000000000000000000000000000041d0120546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f7220636f6d6d756e69747920504950206372656174696f6e2e5844656661756c74456e6163746d656e74506572696f6401001010000000000439012044656661756c7420656e6163746d656e7420706572696f6420746861742077696c6c2062652075736520616674657220612070726f706f73616c2069732061636365707465642062792047432e4050656e64696e6750697045787069727901003501040108f420486f77206d616e7920626c6f636b732077696c6c2069742074616b652c2061667465722061206050656e64696e67602050495020657870697265732cf420617373756d696e6720697420686173206e6f74207472616e736974696f6e656420746f20616e6f74686572206050726f706f73616c5374617465603f3c4d6178506970536b6970436f756e740100080400048901204d6178696d756d2074696d65732061205049502063616e20626520736b6970706564206265666f72652074726967676572696e67206043616e6e6f74536b69705069706020696e2060656e6163745f736e617073686f745f726573756c7473602e384163746976655069704c696d6974010010100000000008c420546865206d6178696d756d20616c6c6f776564206e756d62657220666f722060416374697665506970436f756e74602e0101204f6e636520726561636865642c206e657720504950732063616e6e6f742062652070726f706f73656420627920636f6d6d756e697479206d656d626572732e34506970496453657175656e63650100490310000000000409012050726f706f73616c7320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f662050495073206f66662d636861696e2e48536e617073686f74496453657175656e636501005d031000000000041d0120536e617073686f747320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f6620736e617073686f7473206f66662d636861696e2e38416374697665506970436f756e74010010100000000004c820546f74616c20636f756e74206f662063757272656e742070656e64696e67206f72207363686564756c656420504950732e4050726f706f73616c4d65746164617461000104054903e1090400049820546865206d65746164617461206f6620746865206163746976652070726f706f73616c732e204465706f736974730101080505e509e909c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008842054686f73652077686f2068617665206c6f636b65642061206465706f7369742e8c2070726f706f73616c202869642c2070726f706f73657229202d3e206465706f7369742450726f706f73616c73000104054903ed09040008c42041637475616c2070726f706f73616c20666f72206120676976656e2069642c20696620697427732063757272656e742e602070726f706f73616c206964202d3e2070726f706f73616c3850726f706f73616c526573756c74010104054903f109a00000000000000000000000000000000000000000000000000000000000000000000000000000000008d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e682070726f706f73616c206964202d3e20766f746520636f756e743450726f706f73616c566f7465730001080505e509f509040008050120566f746573207065722050726f706f73616c20616e64206163636f756e742e205573656420746f2061766f696420646f75626c6520766f74652069737375652e7c202870726f706f73616c2069642c206163636f756e7429202d3e20566f746534506970546f5363686564756c6500010405490310040004fc204d617073205049507320746f2074686520626c6f636b20617420776869636820746865792077696c6c2062652065786563757465642c20696620616e792e244c697665517565756501006103040018cc2041206c697665207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029a0206f662070656e64696e67205049507320757020746f2074686520616374697665206c696d69742ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e00450120556e6c696b652060536e617073686f745175657565602c2074686973207175657565206973206c6976652c2067657474696e6720757064617465642077697468206561636820766f746520636173742e2d012054686520736e617073686f74206973207468657265666f726520657373656e7469616c6c79206120706f696e742d696e2d74696d6520636c6f6e65206f6620746869732071756575652e34536e617073686f74517565756501006103040014590120546865207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029206f6620504950732061742074686520706f696e74206f6620736e617073686f7474696e672ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e000901204120717565756564205049502063616e20626520736b69707065642e20446f696e6720736f2062756d70732074686520607069705f736b69705f636f756e74602e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e30536e617073686f744d6574610000f909040004bc20546865206d65746164617461206f662074686520736e617073686f742c206966207468657265206973206f6e652e30506970536b6970436f756e7401010405490308040008d020546865206e756d626572206f662074696d65732061206365727461696e2050495020686173206265656e20736b69707065642e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e34436f6d6d69747465655069707301007903040008d420416c6c206578697374696e672050495073207768657265207468652070726f706f736572206973206120636f6d6d69747465652e39012054686973206c6973742069732061206361636865206f6620616c6c2069647320696e206050726f706f73616c73602077697468206050726f706f7365723a3a436f6d6d6974746565285f29602e3853746f7261676556657273696f6e0100fd0904000001b907013d030001010a2124506f7274666f6c696f0124506f7274666f6c696f244c4e657874506f7274666f6c696f4e756d6265720101040678dc20010000000000000004cc20546865206e65787420706f7274666f6c696f2073657175656e6365206e756d626572206f6620616e206964656e746974792e28506f7274666f6c696f730101080605050a810304000c41012054686520736574206f66206578697374696e6720706f7274666f6c696f732077697468207468656972206e616d65732e2049662061206365727461696e2070616972206f6620612044494420616e64590120706f7274666f6c696f206e756d626572206d61707320746f20604e6f6e6560207468656e2073756368206120706f7274666f6c696f20646f65736e27742065786973742e20436f6e76657273656c792c206966206135012070616972206d61707320746f2060536f6d65286e616d652960207468656e2073756368206120706f7274666f6c696f2065786973747320616e642069732063616c6c656420606e616d65602e304e616d65546f4e756d6265720101080602090adc20010000000000000008e420496e7665727365206d6170206f662060506f7274666f6c696f7360207573656420746f20656e737572652062696a6563746976697469792ca420616e6420756e697175656e657373206f66206e616d657320696e2060506f7274666f6c696f73602e4c506f7274666f6c696f4173736574436f756e7401010405d42020000000000000000004fc20486f77206d616e79206173736574732077697468206e6f6e2d7a65726f2062616c616e6365207468697320706f7274666f6c696f20636f6e7461696e732e58506f7274666f6c696f417373657442616c616e63657301010805020d0a1840000000000000000000000000000000000488205468652061737365742062616c616e636573206f6620706f7274666f6c696f732e54506f7274666f6c696f4c6f636b656441737365747301010805020d0a18400000000000000000000000000000000008a020416d6f756e74206f6620617373657473206c6f636b656420696e206120706f7274666f6c696f2e2d01205468657365206173736574732073686f7720757020696e20706f7274666f6c696f2062616c616e6365206275742063616e206e6f74206265207472616e7366657272656420617761792e48506f7274666f6c696f437573746f6469616e00010405d47804000481012054686520637573746f6469616e206f66206120706172746963756c617220706f7274666f6c696f2e204e6f6e6520696d706c696573207468617420746865206964656e74697479206f776e65722069732074686520637573746f6469616e2e4c506f7274666f6c696f73496e437573746f64790101080605110a150104000c550120547261636b7320616c6c2074686520706f7274666f6c696f7320696e20637573746f6479206f66206120706172746963756c6172206964656e746974792e204f6e6c79207573656420627920746865205549732ea501205768656e206074727565602069732073746f726564206173207468652076616c756520666f72206120676976656e2060286469642c2070696429602c206974206d65616e73207468617420607069646020697320696e20637573746f6479206f662060646964602ea501206066616c7365602076616c75657320617265206e65766572206578706c696369746c792073746f72656420696e20746865206d61702c20616e642061726520696e737465616420696e6665727265642062792074686520616273656e6365206f662061206b65792e3853746f7261676556657273696f6e0100150a040004442053746f726167652076657273696f6e2e01c907017d030001190a222c50726f746f636f6c466565012c50726f746f636f6c4665650820426173654665657301010405d90718400000000000000000000000000000000004150120546865206d617070696e67206f66206f7065726174696f6e206e616d657320746f2074686520626173652066656573206f662074686f7365206f7065726174696f6e732e2c436f656666696369656e7401009103200100000001000000041501205468652066656520636f656666696369656e74206173206120706f73697469766520726174696f6e616c20286e756d657261746f722c2064656e6f6d696e61746f72292e01d507018d0300011d0a23245363686564756c657201245363686564756c657208184167656e64610101040510210a0400044d01204974656d7320746f2062652065786563757465642c20696e64657865642062792074686520626c6f636b206e756d626572207468617420746865792073686f756c64206265206578656375746564206f6e2e184c6f6f6b7570000104052899030400040101204c6f6f6b75702066726f6d206964656e7469747920746f2074686520626c6f636b206e756d62657220616e6420696e646578206f6620746865207461736b2e01dd0701950308344d6178696d756d576569676874202000806e877401000008450120546865206d6178696d756d207765696768742074686174206d6179206265207363686564756c65642070657220626c6f636b20666f7220616e7920646973706174636861626c6573206f66206c657373a4207072696f72697479207468616e20607363686564756c653a3a484152445f444541444c494e45602e504d61785363686564756c6564506572426c6f636b101032000000081d0120546865206d6178696d756d206e756d626572206f66207363686564756c65642063616c6c7320696e2074686520717565756520666f7220612073696e676c6520626c6f636b2edc204e6f74207374726963746c7920656e666f726365642c20627574207573656420666f722077656967687420657374696d6174696f6e2e01450a2428536574746c656d656e740128536574746c656d656e74442456656e7565496e666f00010405a503490a0400049820496e666f2061626f757420612076656e75652e2076656e75655f6964202d3e2076656e75651c44657461696c7301010405a503a903040008e420467265652d666f726d20746578742061626f757420612076656e75652e2076656e75655f6964202d3e206056656e756544657461696c736060204f6e6c79206e656564656420666f72207468652055492e4456656e7565496e737472756374696f6e7301010805054d0a310100107020496e737472756374696f6e7320756e64657220612076656e75652e60204f6e6c79206e656564656420666f72207468652055492e00842076656e75655f6964202d3e20696e737472756374696f6e5f6964202d3e2028293056656e75655369676e6572730101080505510a1501040004e4205369676e65727320616c6c6f776564206279207468652076656e75652e202876656e75655f69642c207369676e657229202d3e20626f6f6c285573657256656e7565730101040578c9030400047101204172726179206f662076656e756573206372656174656420627920616e206964656e746974792e204f6e6c79206e656564656420666f72207468652055492e204964656e746974794964202d3e205665633c76656e75655f69643e48496e737472756374696f6e44657461696c7301010405b103550a540000000000000000000000000000000000000000000411012044657461696c732061626f757420616e20696e737472756374696f6e2e20696e737472756374696f6e5f6964202d3e20696e737472756374696f6e5f64657461696c733c496e737472756374696f6e4c65677301010805055d0abd0379010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ec204c65677320756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656750496e737472756374696f6e4c656753746174757301010805055d0a610a040004310120537461747573206f662061206c656720756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656753746174757364496e737472756374696f6e41666669726d7350656e64696e6701010405b10320200000000000000000048101204e756d626572206f662061666669726d6174696f6e732070656e64696e67206265666f726520696e737472756374696f6e2069732065786563757465642e20696e737472756374696f6e5f6964202d3e2061666669726d5f70656e64696e673c41666669726d7352656365697665640101080505650a690a040004990120547261636b732061666669726d6174696f6e7320726563656976656420666f7220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c20636f756e7465725f706172747929202d3e2041666669726d6174696f6e537461747573405573657241666669726d6174696f6e7301010805056d0a690a04000855012048656c70732061207573657220747261636b2074686569722070656e64696e6720696e737472756374696f6e7320616e642061666669726d6174696f6e7320286f6e6c79206e656564656420666f72205549292ed42028636f756e7465725f70617274792c20696e737472756374696f6e5f696429202d3e2041666669726d6174696f6e5374617475733052656365697074735573656401010805027d081501040004150120547261636b7320726564656d7074696f6e206f662072656365697074732e20287369676e65722c20726563656970745f75696429202d3e20726563656970745f757365643856656e756546696c746572696e67010104029c1501040004fd0120547261636b73206966206120746f6b656e2068617320656e61626c65642066696c746572696e672076656e75657320746861742063616e2063726561746520696e737472756374696f6e7320696e766f6c76696e6720746865697220746f6b656e2e205469636b6572202d3e2066696c746572696e675f656e61626c65643856656e7565416c6c6f774c6973740101080205710a1501040008c5012056656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c6172207469636b65722e204f6e6c7920757365642069662066696c746572696e6720697320656e61626c65642e7820287469636b65722c2076656e75655f696429202d3e20616c6c6f7765643056656e7565436f756e7465720100a503200000000000000000041901204e756d626572206f662076656e75657320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d6265722948496e737472756374696f6e436f756e7465720100b103200000000000000000043101204e756d626572206f6620696e737472756374696f6e7320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d626572293853746f7261676556657273696f6e0100750a040004442053746f726167652076657273696f6e2e01e90701a1030001790a25285374617469737469637301285374617469737469637314404163746976654173736574537461747301010402d1030108040004d1012041637469766520737461747320666f722061207469636b65722f636f6d70616e792e202054686572652073686f756c642062652061206d6178206c696d6974206f6e20746865206e756d626572206f662061637469766520737461747320666f722061207469636b65722f636f6d70616e792e284173736574537461747301010802027d0a18400000000000000000000000000000000004342041737365742073746174732e6041737365745472616e73666572436f6d706c69616e63657301010402d103850a080000043d01204173736574207472616e7366657220636f6d706c69616e636520666f722061207469636b65722028417373657453636f7065202d3e2041737365745472616e73666572436f6d706c69616e6365297c5472616e73666572436f6e646974696f6e4578656d7074456e7469746965730101080202890a1501040004c420456e746974696573206578656d70742066726f6d2061205472616e7366657220436f6d706c69616e63652072756c652e3853746f7261676556657273696f6e01008d0a0400046c2053746f72616765206d6967726174696f6e2076657273696f6e2e01fd0701cd0308404d61785374617473506572417373657410100a00000000744d61785472616e73666572436f6e646974696f6e7350657241737365741010040000000001910a260c53746f010c53746f0c2c46756e64726169736572730001080205950a2104040008b020416c6c2066756e64726169736572732074686174206172652063757272656e746c792072756e6e696e672e9820287469636b65722c2066756e647261697365725f696429202d3e2046756e647261697365723c46756e64726169736572436f756e74010104029c1904200000000000000000049c20546f74616c2066756e6472616973657273206372656174656420666f72206120746f6b656e2e3c46756e647261697365724e616d65730101080205950a1d04040008b4204e616d6520666f72207468652046756e647261697365722e204f6e6c792075736564206f6666636861696e2eac20287469636b65722c2066756e647261697365725f696429202d3e2046756e64726169736572206e616d650111080115040001990a272054726561737572790001210801310400019d0a281c5574696c697479011c5574696c69747904184e6f6e63657301010405002020000000000000000000012d080135040001a10a2910426173650001390801450404184d61784c656e1010000800000001a50a2a3845787465726e616c4167656e7473013845787465726e616c4167656e747314304147496453657175656e6365010104029c1101100000000010b420546865206e657874207065722d605469636b65726020414720494420696e207468652073657175656e63652e004d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652c90207768696368207374617274732066726f6d20312c20726174686572207468616e20302e1c4167656e744f6601010802026d09310100042901204d61707320616e206167656e742028604964656e746974794964602920746f20616c6c20616c6c20605469636b6572607320746865792062656c6f6e6720746f2c20696620616e792e3047726f75704f664167656e74000108020565090d010400043501204d617073206167656e74732028604964656e746974794964602920666f72206120605469636b65726020746f207768617420414720746865792062656c6f6e6720746f2c20696620616e792e344e756d46756c6c4167656e7473010104029c10100000000004dc204d617073206120605469636b65726020746f20746865206e756d626572206f66206046756c6c60206167656e747320666f722069742e4047726f75705065726d697373696f6e730001080205a90aac0400045d0120466f7220637573746f6d20414773206f66206120605469636b6572602c206d61707320746f2077686174207065726d697373696f6e7320616e206167656e7420696e207468617420414720776f756c6420686176652e013d08014d040001ad0a2b1c52656c61796572011c52656c6179657204245375627369646965730001040200b10a040018ec20546865207375627369647920666f7220612060757365725f6b657960206966207468657920617265206265696e6720737562736964697365642c882061732061206d61702060757365725f6b657960203d3e206053756273696479602e0009012041206b65792063616e206f6e6c792068617665206f6e65207375627369647920617420612074696d652e2020546f206368616e67652073756273696469736572731d012061206b6579206e6565647320746f2063616c6c206072656d6f76655f706179696e675f6b65796020746f2072656d6f7665207468652063757272656e7420737562736964792ca4206265666f726520746865792063616e206163636570742061206e657720737562736964697365722e0141080151040001b50a2c1c52657761726473011c52657761726473042849746e52657761726473000104020049080400040101204d6170206f66202849746e204164647265737320604163636f756e7449646029202d3e2028526577617264206049746e52657761726453746174757360292e0145080155040001b90a2d24436f6e7472616374730124436f6e74726163747318305072697374696e65436f646500010406242804000465012041206d617070696e672066726f6d20616e206f726967696e616c20636f6465206861736820746f20746865206f726967696e616c20636f64652c20756e746f756368656420627920696e737472756d656e746174696f6e2e2c436f646553746f726167650001040624bd0a04000465012041206d617070696e67206265747765656e20616e206f726967696e616c20636f6465206861736820616e6420696e737472756d656e746564207761736d20636f64652c20726561647920666f7220657865637574696f6e2e2c4f776e6572496e666f4f660001040624c10a0400040d012041206d617070696e67206265747765656e20616e206f726967696e616c20636f6465206861736820616e6420697473206f776e657220696e666f726d6174696f6e2e144e6f6e6365010020200000000000000000581d0120546869732069732061202a2a6d6f6e6f746f6e69632a2a20636f756e74657220696e6372656d656e746564206f6e20636f6e747261637420696e7374616e74696174696f6e2e0005012054686973206973207573656420696e206f7264657220746f2067656e657261746520756e6971756520747269652069647320666f7220636f6e7472616374732e2901205468652074726965206964206f662061206e657720636f6e74726163742069732063616c63756c617465642066726f6d2068617368286163636f756e745f69642c206e6f6e6365292e350120546865206e6f6e63652069732072657175697265642062656361757365206f74686572776973652074686520666f6c6c6f77696e672073657175656e636520776f756c64206c65616420746f84206120706f737369626c6520636f6c6c6973696f6e206f662073746f726167653a006820312e204372656174652061206e657720636f6e74726163742e6c20322e205465726d696e6174652074686520636f6e74726163742efc20332e20496d6d6564696174656c792072656372656174652074686520636f6e74726163742077697468207468652073616d65206163636f756e745f69642e00450120546869732069732062616420626563617573652074686520636f6e74656e7473206f6620612074726965206172652064656c65746564206c617a696c7920616e64207468657265206d6967687420626559012073746f72616765206f6620746865206f6c6420696e7374616e74696174696f6e207374696c6c20696e206974207768656e20746865206e657720636f6e747261637420697320637265617465642e20506c656173655901206e6f746520746861742077652063616e2774207265706c6163652074686520636f756e7465722062792074686520626c6f636b206e756d6265722062656361757365207468652073657175656e63652061626f766551012063616e2068617070656e20696e207468652073616d6520626c6f636b2e20576520616c736f2063616e2774206b65657020746865206163636f756e7420636f756e74657220696e206d656d6f7279206f6e6c79490120626563617573652073746f7261676520697320746865206f6e6c792077617920746f20636f6d6d756e6963617465206163726f737320646966666572656e742065787472696e7369637320696e20746865302073616d6520626c6f636b2e001c2023204e6f7465003d0120446f206e6f742075736520697420746f2064657465726d696e6520746865206e756d626572206f6620636f6e7472616374732e20497420776f6e27742062652064656372656d656e74656420696664206120636f6e74726163742069732064657374726f7965642e38436f6e7472616374496e666f4f660001040500c50a04000ca82054686520636f6465206173736f6369617465642077697468206120676976656e206163636f756e742e00d02054574f582d4e4f54453a20534146452073696e636520604163636f756e7449646020697320612073656375726520686173682e3444656c6574696f6e51756575650100c90a040010c8204576696374656420636f6e7472616374732074686174206177616974206368696c6420747269652064656c6574696f6e2e004901204368696c6420747269652064656c6574696f6e2069732061206865617679206f7065726174696f6e20646570656e64696e67206f6e2074686520616d6f756e74206f662073746f72616765206974656d7359012073746f72656420696e207361696420747269652e205468657265666f72652074686973206f7065726174696f6e20697320706572666f726d6564206c617a696c7920696e20606f6e5f696e697469616c697a65602e0001590414205363686564756c65d10aa50a040000000000010000800000001000000000100000000100002000000020000000004000000000020002000000900b0000701c0000a82000005c17000006270000f40b00008a160000021c000028000000bc0b0100bc4c0100e0060000ea0b00003c0f0000d60b00005a230000842b0000380e00009118b000440c0000e00b00009a0b0000580c00004a0b00000e0b0000440c00008412000070120000481200005212000070120000e81200007a12000066120000341200005212000062110000a8110000a81100003e2b0000642d0000522b0000d22d00009411000080110000da11000084120000481200005c120000521200005c120000964e0700000000008c973303000000003ede3f03000000002e1008000000000036350300000000003055070000000000a238070000000000bcbf15000000000050620700000000009a540700000000009e55070000000000d64a070000000000289d12000000000020aa030000000000a02607000000000074000000000000000000000000000000c400000000000000886da64a00000000520918000000000082502d0000000000789c130f00000000210300000000000016fd0500000000002a43240f0000000014010000000000006e00000000000000be4e4d0f0000000086ef200f00000000640000000000000086542703000000006300000000000000f0802c03000000006f020000000000006c54260f000000008002000000000000aad8f90f00000000fa0ac71a00000000c2c1db0e00000000946406100000000002d40100000000002483394c00000000212b000000000000f50500000000000008f10b0000000000cb11000000000000cec90d0000000000b60b0000000000008a800900000000008f04000000000000427d09000000000090040000000000003ca247020000000082d12f0900000000046820436f7374207363686564756c6520616e64206c696d6974732e4844656c6574696f6e517565756544657074681010000400003c090120546865206d6178696d756d206e756d626572206f6620636f6e74726163747320746861742063616e2062652070656e64696e6720666f722064656c6574696f6e2e003d01205768656e206120636f6e74726163742069732064656c657465642062792063616c6c696e6720607365616c5f7465726d696e61746560206974206265636f6d657320696e61636365737369626c654d0120696d6d6564696174656c792c20627574207468652064656c6574696f6e206f66207468652073746f72616765206974656d732069742068617320616363756d756c6174656420697320706572666f726d65642901206c617465722e2054686520636f6e74726163742069732070757420696e746f207468652064656c6574696f6e2071756575652e205468697320646566696e657320686f77206d616e795d0120636f6e7472616374732063616e20626520717565756564207570206174207468652073616d652074696d652e2049662074686174206c696d6974206973207265616368656420607365616c5f7465726d696e6174656015012077696c6c206661696c2e2054686520616374696f6e206d757374206265207265747269656420696e2061206c6174657220626c6f636b20696e207468617420636173652e00b82054686520726561736f6e7320666f72206c696d6974696e6720746865207175657565206465707468206172653a00590120312e2054686520717565756520697320696e2073746f7261676520696e206f7264657220746f2062652070657273697374656e74206265747765656e20626c6f636b732e2057652077616e7420746f206c696d6974b4200974686520616d6f756e74206f662073746f7261676520746861742063616e20626520636f6e73756d65642e4d0120322e205468652071756575652069732073746f72656420696e206120766563746f7220616e64206e6565647320746f206265206465636f64656420617320612077686f6c65207768656e2072656164696e674501090969742061742074686520656e64206f66206561636820626c6f636b2e204c6f6e676572207175657565732074616b65206d6f72652077656967687420746f206465636f646520616e642068656e6365e809096c696d69742074686520616d6f756e74206f66206974656d7320746861742063616e2062652064656c657465642070657220626c6f636b2e4c44656c6574696f6e5765696768744c696d697420200088526a74000000184d0120546865206d6178696d756d20616d6f756e74206f662077656967687420746861742063616e20626520636f6e73756d65642070657220626c6f636b20666f72206c617a7920747269652072656d6f76616c2e005d012054686520616d6f756e74206f66207765696768742074686174206973206465646963617465642070657220626c6f636b20746f20776f726b206f6e207468652064656c6574696f6e2071756575652e204c617267657245012076616c75657320616c6c6f77206d6f72652074726965206b65797320746f2062652064656c6574656420696e206561636820626c6f636b20627574207265647563652074686520616d6f756e74206f664101207765696768742074686174206973206c65667420666f72207472616e73616374696f6e732e20536565205b6053656c663a3a44656c6574696f6e51756575654465707468605d20666f72206d6f72659820696e666f726d6174696f6e2061626f7574207468652064656c6574696f6e2071756575652e384465706f73697450657242797465184060ea00000000000000000000000000001411012054686520616d6f756e74206f662062616c616e636520612063616c6c65722068617320746f2070617920666f7220656163682062797465206f662073746f726167652e001c2023204e6f7465002901204368616e67696e6720746869732076616c756520666f7220616e206578697374696e6720636861696e206d69676874206e65656420612073746f72616765206d6967726174696f6e2e384465706f7369745065724974656d1840f04902000000000000000000000000001405012054686520616d6f756e74206f662062616c616e636520612063616c6c65722068617320746f2070617920666f7220656163682073746f72616765206974656d2e001c2023204e6f7465002901204368616e67696e6720746869732076616c756520666f7220616e206578697374696e6720636861696e206d69676874206e65656420612073746f72616765206d6967726174696f6e2e01e10a2e44506f6c796d657368436f6e7472616374730124436f6e74726163747300014d08015d040001e50a2f20507265696d6167650120507265696d6167650824537461747573466f720001040624e90a0400049020546865207265717565737420737461747573206f66206120676976656e20686173682e2c507265696d616765466f720001040624f10a040004942054686520707265696d616765732073746f72656420627920746869732070616c6c65742e0151080161040001f50a3024546573745574696c730124546573745574696c73000155080165040001f90a32fd0a042040436865636b5370656356657273696f6e050b1038436865636b547856657273696f6e090b1030436865636b47656e657369730d0b2438436865636b4d6f7274616c697479110b2428436865636b4e6f6e6365190b31012c436865636b5765696768741d0b3101604368617267655472616e73616374696f6e5061796d656e74250b31014453746f726543616c6c4d65746164617461290b31012d0b","id":"1"} diff --git a/scripts/cli/src/interfaces/augment-api-consts.ts b/scripts/cli/src/interfaces/augment-api-consts.ts index 20d9364085..9dfceb2702 100644 --- a/scripts/cli/src/interfaces/augment-api-consts.ts +++ b/scripts/cli/src/interfaces/augment-api-consts.ts @@ -5,7 +5,7 @@ import type { ApiTypes } from '@polkadot/api-base/types'; import type { Vec, u128, u16, u32, u64 } from '@polkadot/types-codec'; import type { Codec } from '@polkadot/types-codec/types'; import type { Perbill, Permill } from '@polkadot/types/interfaces/runtime'; -import type { FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, SpVersionRuntimeVersion } from '@polkadot/types/lookup'; +import type { FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, PalletContractsSchedule, SpVersionRuntimeVersion } from '@polkadot/types/lookup'; declare module '@polkadot/api-base/types/consts' { export interface AugmentedConsts { @@ -81,6 +81,59 @@ declare module '@polkadot/api-base/types/consts' { **/ [key: string]: Codec; }; + contracts: { + /** + * The maximum number of contracts that can be pending for deletion. + * + * When a contract is deleted by calling `seal_terminate` it becomes inaccessible + * immediately, but the deletion of the storage items it has accumulated is performed + * later. The contract is put into the deletion queue. This defines how many + * contracts can be queued up at the same time. If that limit is reached `seal_terminate` + * will fail. The action must be retried in a later block in that case. + * + * The reasons for limiting the queue depth are: + * + * 1. The queue is in storage in order to be persistent between blocks. We want to limit + * the amount of storage that can be consumed. + * 2. The queue is stored in a vector and needs to be decoded as a whole when reading + * it at the end of each block. Longer queues take more weight to decode and hence + * limit the amount of items that can be deleted per block. + **/ + deletionQueueDepth: u32 & AugmentedConst; + /** + * The maximum amount of weight that can be consumed per block for lazy trie removal. + * + * The amount of weight that is dedicated per block to work on the deletion queue. Larger + * values allow more trie keys to be deleted in each block but reduce the amount of + * weight that is left for transactions. See [`Self::DeletionQueueDepth`] for more + * information about the deletion queue. + **/ + deletionWeightLimit: u64 & AugmentedConst; + /** + * The amount of balance a caller has to pay for each byte of storage. + * + * # Note + * + * Changing this value for an existing chain might need a storage migration. + **/ + depositPerByte: u128 & AugmentedConst; + /** + * The amount of balance a caller has to pay for each storage item. + * + * # Note + * + * Changing this value for an existing chain might need a storage migration. + **/ + depositPerItem: u128 & AugmentedConst; + /** + * Cost schedule and limits. + **/ + schedule: PalletContractsSchedule & AugmentedConst; + /** + * Generic const + **/ + [key: string]: Codec; + }; corporateAction: { maxDidWhts: u32 & AugmentedConst; maxTargetIds: u32 & AugmentedConst; diff --git a/scripts/cli/src/interfaces/augment-api-errors.ts b/scripts/cli/src/interfaces/augment-api-errors.ts index 774aa11e01..a312b501af 100644 --- a/scripts/cli/src/interfaces/augment-api-errors.ts +++ b/scripts/cli/src/interfaces/augment-api-errors.ts @@ -345,10 +345,13 @@ declare module '@polkadot/api-base/types/errors' { **/ CANotBenefit: AugmentedError; /** - * Currency that is distributed is the same as the CA's ticker. - * Calling agent is attempting a form of stock split, which is not what the extrinsic is for. + * Distribution `amount` cannot be zero. **/ - DistributingAsset: AugmentedError; + DistributionAmountIsZero: AugmentedError; + /** + * Distribution `per_share` cannot be zero. + **/ + DistributionPerShareIsZero: AugmentedError; /** * A distribution has been activated, as `payment_at <= now` holds. **/ @@ -509,6 +512,145 @@ declare module '@polkadot/api-base/types/errors' { **/ [key: string]: AugmentedError; }; + contracts: { + /** + * Code removal was denied because the code is still in use by at least one contract. + **/ + CodeInUse: AugmentedError; + /** + * No code could be found at the supplied code hash. + **/ + CodeNotFound: AugmentedError; + /** + * The contract's code was found to be invalid during validation or instrumentation. + * A more detailed error can be found on the node console if debug messages are enabled + * or in the debug buffer which is returned to RPC clients. + **/ + CodeRejected: AugmentedError; + /** + * The code supplied to `instantiate_with_code` exceeds the limit specified in the + * current schedule. + **/ + CodeTooLarge: AugmentedError; + /** + * No contract was found at the specified address. + **/ + ContractNotFound: AugmentedError; + /** + * The contract ran to completion but decided to revert its storage changes. + * Please note that this error is only returned from extrinsics. When called directly + * or via RPC an `Ok` will be returned. In this case the caller needs to inspect the flags + * to determine whether a reversion has taken place. + **/ + ContractReverted: AugmentedError; + /** + * Contract trapped during execution. + **/ + ContractTrapped: AugmentedError; + /** + * The debug message specified to `seal_debug_message` does contain invalid UTF-8. + **/ + DebugMessageInvalidUTF8: AugmentedError; + /** + * Input passed to a contract API function failed to decode as expected type. + **/ + DecodingFailed: AugmentedError; + /** + * Removal of a contract failed because the deletion queue is full. + * + * This can happen when calling `seal_terminate`. + * The queue is filled by deleting contracts and emptied by a fixed amount each block. + * Trying again during another block is the only way to resolve this issue. + **/ + DeletionQueueFull: AugmentedError; + /** + * A contract with the same AccountId already exists. + **/ + DuplicateContract: AugmentedError; + /** + * The topics passed to `seal_deposit_events` contains at least one duplicate. + **/ + DuplicateTopics: AugmentedError; + /** + * `seal_call` forwarded this contracts input. It therefore is no longer available. + **/ + InputForwarded: AugmentedError; + /** + * Invalid combination of flags supplied to `seal_call` or `seal_delegate_call`. + **/ + InvalidCallFlags: AugmentedError; + /** + * A new schedule must have a greater version than the current one. + **/ + InvalidScheduleVersion: AugmentedError; + /** + * Performing a call was denied because the calling depth reached the limit + * of what is specified in the schedule. + **/ + MaxCallDepthReached: AugmentedError; + /** + * The chain does not provide a chain extension. Calling the chain extension results + * in this error. Note that this usually shouldn't happen as deploying such contracts + * is rejected. + **/ + NoChainExtension: AugmentedError; + /** + * A buffer outside of sandbox memory was passed to a contract API function. + **/ + OutOfBounds: AugmentedError; + /** + * The executed contract exhausted its gas limit. + **/ + OutOfGas: AugmentedError; + /** + * The output buffer supplied to a contract API call was too small. + **/ + OutputBufferTooSmall: AugmentedError; + /** + * The subject passed to `seal_random` exceeds the limit. + **/ + RandomSubjectTooLong: AugmentedError; + /** + * A call tried to invoke a contract that is flagged as non-reentrant. + **/ + ReentranceDenied: AugmentedError; + /** + * More storage was created than allowed by the storage deposit limit. + **/ + StorageDepositLimitExhausted: AugmentedError; + /** + * Origin doesn't have enough balance to pay the required storage deposits. + **/ + StorageDepositNotEnoughFunds: AugmentedError; + /** + * A contract self destructed in its constructor. + * + * This can be triggered by a call to `seal_terminate`. + **/ + TerminatedInConstructor: AugmentedError; + /** + * Termination of a contract is not allowed while the contract is already + * on the call stack. Can be triggered by `seal_terminate`. + **/ + TerminatedWhileReentrant: AugmentedError; + /** + * The amount of topics passed to `seal_deposit_events` exceeds the limit. + **/ + TooManyTopics: AugmentedError; + /** + * Performing the requested transfer failed. Probably because there isn't enough + * free balance in the sender's account. + **/ + TransferFailed: AugmentedError; + /** + * The size defined in `T::MaxValueSize` was exceeded. + **/ + ValueTooLarge: AugmentedError; + /** + * Generic error + **/ + [key: string]: AugmentedError; + }; corporateAction: { /** * The authorization type is not to transfer the CAA to another DID. @@ -1116,6 +1258,29 @@ declare module '@polkadot/api-base/types/errors' { **/ [key: string]: AugmentedError; }; + polymeshContracts: { + /** + * Data left in input when decoding arguments of a call. + **/ + DataLeftAfterDecoding: AugmentedError; + /** + * Input data that a contract passed when making a runtime call was too large. + **/ + InLenTooLarge: AugmentedError; + /** + * A contract was attempted to be instantiated, + * but no identity was given to associate the new contract's key with. + **/ + InstantiatorWithNoIdentity: AugmentedError; + /** + * The given `func_id: u32` did not translate into a known runtime call. + **/ + RuntimeCallNotFound: AugmentedError; + /** + * Generic error + **/ + [key: string]: AugmentedError; + }; portfolio: { /** * The source and destination portfolios should be different. @@ -1158,6 +1323,36 @@ declare module '@polkadot/api-base/types/errors' { **/ [key: string]: AugmentedError; }; + preimage: { + /** + * Preimage has already been noted on-chain. + **/ + AlreadyNoted: AugmentedError; + /** + * The user is not authorized to perform this action. + **/ + NotAuthorized: AugmentedError; + /** + * The preimage cannot be removed since it has not yet been noted. + **/ + NotNoted: AugmentedError; + /** + * The preimage request cannot be removed since no outstanding requests exist. + **/ + NotRequested: AugmentedError; + /** + * A preimage may not be removed when there are outstanding requests. + **/ + Requested: AugmentedError; + /** + * Preimage is too large to store on-chain. + **/ + TooLarge: AugmentedError; + /** + * Generic error + **/ + [key: string]: AugmentedError; + }; protocolFee: { /** * Insufficient account balance to pay the fee. @@ -1658,6 +1853,10 @@ declare module '@polkadot/api-base/types/errors' { [key: string]: AugmentedError; }; system: { + /** + * The origin filter prevent the call to be dispatched. + **/ + CallFiltered: AugmentedError; /** * Failed to extract the runtime version from the new runtime. * diff --git a/scripts/cli/src/interfaces/augment-api-events.ts b/scripts/cli/src/interfaces/augment-api-events.ts index aeccdac07f..fbb1e29372 100644 --- a/scripts/cli/src/interfaces/augment-api-events.ts +++ b/scripts/cli/src/interfaces/augment-api-events.ts @@ -5,7 +5,7 @@ import type { ApiTypes } from '@polkadot/api-base/types'; import type { Bytes, Null, Option, Result, U8aFixed, Vec, bool, u128, u32, u64, u8 } from '@polkadot/types-codec'; import type { ITuple } from '@polkadot/types-codec/types'; import type { AccountId32, H256, Perbill, Permill } from '@polkadot/types/interfaces/runtime'; -import type { FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchInfo, PalletBridgeBridgeTx, PalletBridgeHandledTxStatus, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsCaId, PalletCorporateActionsCorporateAction, PalletCorporateActionsDistribution, PalletCorporateActionsTargetIdentities, PalletImOnlineSr25519AppSr25519Public, PalletPipsProposalData, PalletPipsProposalState, PalletPipsProposer, PalletPipsSnapshottedPip, PalletSettlementLeg, PalletSettlementSettlementType, PalletSettlementVenueType, PalletStakingElectionCompute, PalletStakingExposure, PalletStakingSlashingSwitch, PalletStoFundraiser, PolymeshCommonUtilitiesBalancesMemo, PolymeshCommonUtilitiesCheckpointStoredSchedule, PolymeshCommonUtilitiesMaybeBlock, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetAssetType, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAssetMetadataAssetMetadataSpec, PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail, PolymeshPrimitivesAuthorizationAuthorizationData, PolymeshPrimitivesCddIdInvestorUid, PolymeshPrimitivesComplianceManagerComplianceRequirement, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesEthereumEthereumAddress, PolymeshPrimitivesEventOnly, PolymeshPrimitivesIdentityClaim, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKey, PolymeshPrimitivesSecondaryKeyPermissions, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesStatisticsAssetScope, PolymeshPrimitivesStatisticsStatType, PolymeshPrimitivesStatisticsStatUpdate, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesTicker, PolymeshPrimitivesTransferComplianceTransferCondition, PolymeshPrimitivesTransferComplianceTransferConditionExemptKey, SpFinalityGrandpaAppPublic, SpRuntimeDispatchError } from '@polkadot/types/lookup'; +import type { FrameSupportScheduleLookupError, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchInfo, PalletBridgeBridgeTx, PalletBridgeHandledTxStatus, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsCaId, PalletCorporateActionsCorporateAction, PalletCorporateActionsDistribution, PalletCorporateActionsTargetIdentities, PalletImOnlineSr25519AppSr25519Public, PalletPipsProposalData, PalletPipsProposalState, PalletPipsProposer, PalletPipsSnapshottedPip, PalletSettlementLeg, PalletSettlementSettlementType, PalletSettlementVenueType, PalletStakingElectionCompute, PalletStakingExposure, PalletStakingSlashingSwitch, PalletStoFundraiser, PolymeshCommonUtilitiesBalancesMemo, PolymeshCommonUtilitiesCheckpointStoredSchedule, PolymeshCommonUtilitiesMaybeBlock, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetAssetType, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAssetMetadataAssetMetadataSpec, PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail, PolymeshPrimitivesAuthorizationAuthorizationData, PolymeshPrimitivesCddIdInvestorUid, PolymeshPrimitivesComplianceManagerComplianceRequirement, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesEthereumEthereumAddress, PolymeshPrimitivesEventOnly, PolymeshPrimitivesIdentityClaim, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKey, PolymeshPrimitivesSecondaryKeyPermissions, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesStatisticsAssetScope, PolymeshPrimitivesStatisticsStatType, PolymeshPrimitivesStatisticsStatUpdate, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesTicker, PolymeshPrimitivesTransferComplianceTransferCondition, PolymeshPrimitivesTransferComplianceTransferConditionExemptKey, SpFinalityGrandpaAppPublic, SpRuntimeDispatchError } from '@polkadot/types/lookup'; declare module '@polkadot/api-base/types/events' { export interface AugmentedEvents { @@ -450,6 +450,41 @@ declare module '@polkadot/api-base/types/events' { **/ [key: string]: AugmentedEvent; }; + contracts: { + /** + * A code with the specified hash was removed. + **/ + CodeRemoved: AugmentedEvent; + /** + * Code with the specified hash has been stored. + **/ + CodeStored: AugmentedEvent; + /** + * A contract's code was updated. + **/ + ContractCodeUpdated: AugmentedEvent; + /** + * A custom event emitted by the contract. + **/ + ContractEmitted: AugmentedEvent; + /** + * Contract deployed by address at the specified address. + **/ + Instantiated: AugmentedEvent; + /** + * Contract has been removed. + * + * # Note + * + * The only way for a contract to be removed and emitting this event is by calling + * `seal_terminate`. + **/ + Terminated: AugmentedEvent; + /** + * Generic event + **/ + [key: string]: AugmentedEvent; + }; corporateAction: { /** * A new DID was made the CAA. @@ -580,7 +615,7 @@ declare module '@polkadot/api-base/types/events' { }; grandpa: { /** - * New authority set has been applied. \[authority_set\] + * New authority set has been applied. **/ NewAuthorities: AugmentedEvent>]>; /** @@ -711,11 +746,11 @@ declare module '@polkadot/api-base/types/events' { **/ AllGood: AugmentedEvent; /** - * A new heartbeat was received from `AuthorityId` \[authority_id\] + * A new heartbeat was received from `AuthorityId`. **/ HeartbeatReceived: AugmentedEvent; /** - * At the end of the session, at least one validator was found to be \[offline\]. + * At the end of the session, at least one validator was found to be offline. **/ SomeOffline: AugmentedEvent>]>; /** @@ -725,15 +760,15 @@ declare module '@polkadot/api-base/types/events' { }; indices: { /** - * A account index was assigned. \[index, who\] + * A account index was assigned. **/ IndexAssigned: AugmentedEvent; /** - * A account index has been freed up (unassigned). \[index\] + * A account index has been freed up (unassigned). **/ IndexFreed: AugmentedEvent; /** - * A account index has been frozen to its current account ID. \[index, who\] + * A account index has been frozen to its current account ID. **/ IndexFrozen: AugmentedEvent; /** @@ -974,6 +1009,12 @@ declare module '@polkadot/api-base/types/events' { **/ [key: string]: AugmentedEvent; }; + polymeshContracts: { + /** + * Generic event + **/ + [key: string]: AugmentedEvent; + }; portfolio: { /** * A token amount has been moved from one portfolio to another. @@ -1034,6 +1075,24 @@ declare module '@polkadot/api-base/types/events' { **/ [key: string]: AugmentedEvent; }; + preimage: { + /** + * A preimage has ben cleared. + **/ + Cleared: AugmentedEvent; + /** + * A preimage has been noted. + **/ + Noted: AugmentedEvent; + /** + * A preimage has been requested. + **/ + Requested: AugmentedEvent; + /** + * Generic event + **/ + [key: string]: AugmentedEvent; + }; protocolFee: { /** * The fee coefficient. @@ -1094,15 +1153,19 @@ declare module '@polkadot/api-base/types/events' { }; scheduler: { /** - * Canceled some task. \[when, index\] + * The call for the provided hash was not found so the task has been aborted. + **/ + CallLookupFailed: AugmentedEvent, Option, FrameSupportScheduleLookupError]>; + /** + * Canceled some task. **/ Canceled: AugmentedEvent; /** - * Dispatched some task. \[task, id, result\] + * Dispatched some task. **/ Dispatched: AugmentedEvent, Option, Result]>; /** - * Scheduled some task. \[when, index\] + * Scheduled some task. **/ Scheduled: AugmentedEvent; /** @@ -1112,7 +1175,7 @@ declare module '@polkadot/api-base/types/events' { }; session: { /** - * New session has happened. Note that the argument is the \[session_index\], not the + * New session has happened. Note that the argument is the session index, not the * block number as the type might suggest. **/ NewSession: AugmentedEvent; @@ -1393,23 +1456,23 @@ declare module '@polkadot/api-base/types/events' { **/ CodeUpdated: AugmentedEvent; /** - * An extrinsic failed. \[error, info\] + * An extrinsic failed. **/ ExtrinsicFailed: AugmentedEvent; /** - * An extrinsic completed successfully. \[info\] + * An extrinsic completed successfully. **/ ExtrinsicSuccess: AugmentedEvent; /** - * An \[account\] was reaped. + * An account was reaped. **/ KilledAccount: AugmentedEvent; /** - * A new \[account\] was created. + * A new account was created. **/ NewAccount: AugmentedEvent; /** - * On on-chain remark happened. \[origin, remark_hash\] + * On on-chain remark happened. **/ Remarked: AugmentedEvent; /** diff --git a/scripts/cli/src/interfaces/augment-api-query.ts b/scripts/cli/src/interfaces/augment-api-query.ts index 1331ac148f..4e46021c87 100644 --- a/scripts/cli/src/interfaces/augment-api-query.ts +++ b/scripts/cli/src/interfaces/augment-api-query.ts @@ -5,7 +5,7 @@ import type { ApiTypes } from '@polkadot/api-base/types'; import type { Bytes, Null, Option, U8aFixed, Vec, WrapperOpaque, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec'; import type { AnyNumber, ITuple } from '@polkadot/types-codec/types'; import type { AccountId32, Call, H256, Perbill, Permill } from '@polkadot/types/interfaces/runtime'; -import type { BTreeSetStatType, FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, PalletAssetAssetOwnershipRelation, PalletAssetClassicTickerRegistration, PalletAssetSecurityToken, PalletAssetTickerRegistration, PalletAssetTickerRegistrationConfig, PalletAuthorshipUncleEntryItem, PalletBalancesBalanceLock, PalletBridgeBridgeTxDetail, PalletCommitteePolymeshVotes, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsCaId, PalletCorporateActionsCorporateAction, PalletCorporateActionsDistribution, PalletCorporateActionsTargetIdentities, PalletGrandpaStoredPendingChange, PalletGrandpaStoredState, PalletIdentityClaim1stKey, PalletIdentityClaim2ndKey, PalletImOnlineBoundedOpaqueNetworkState, PalletImOnlineSr25519AppSr25519Public, PalletMultisigProposalDetails, PalletPipsDepositInfo, PalletPipsPip, PalletPipsPipsMetadata, PalletPipsSnapshotMetadata, PalletPipsSnapshottedPip, PalletPipsVote, PalletPipsVotingResult, PalletRelayerSubsidy, PalletRewardsItnRewardStatus, PalletSchedulerReleases, PalletSchedulerScheduledV2, PalletSettlementAffirmationStatus, PalletSettlementInstruction, PalletSettlementLeg, PalletSettlementLegStatus, PalletSettlementVenue, PalletStakingActiveEraInfo, PalletStakingElectionResult, PalletStakingElectionStatus, PalletStakingEraRewardPoints, PalletStakingExposure, PalletStakingForcing, PalletStakingNominations, PalletStakingPermissionedIdentityPrefs, PalletStakingReleases, PalletStakingRewardDestination, PalletStakingSlashingSlashingSpans, PalletStakingSlashingSpanRecord, PalletStakingSlashingSwitch, PalletStakingStakingLedger, PalletStakingUnappliedSlash, PalletStakingValidatorPrefs, PalletStoFundraiser, PalletTransactionPaymentReleases, PolymeshCommonUtilitiesCheckpointStoredSchedule, PolymeshCommonUtilitiesGroupInactiveMember, PolymeshCommonUtilitiesMaybeBlock, PolymeshCommonUtilitiesProtocolFeeProtocolOp, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAssetMetadataAssetMetadataKey, PolymeshPrimitivesAssetMetadataAssetMetadataSpec, PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail, PolymeshPrimitivesAuthorization, PolymeshPrimitivesComplianceManagerAssetCompliance, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesIdentityClaim, PolymeshPrimitivesIdentityDidRecord, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKeyKeyRecord, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesStatisticsAssetScope, PolymeshPrimitivesStatisticsStat1stKey, PolymeshPrimitivesStatisticsStat2ndKey, PolymeshPrimitivesStatisticsStatType, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesTicker, PolymeshPrimitivesTransferComplianceAssetTransferCompliance, PolymeshPrimitivesTransferComplianceTransferConditionExemptKey, PolymeshRuntimeDevelopRuntimeSessionKeys, SpConsensusBabeAppPublic, SpConsensusBabeBabeEpochConfiguration, SpConsensusBabeDigestsNextConfigDescriptor, SpCoreCryptoKeyTypeId, SpRuntimeDigest, SpStakingOffenceOffenceDetails } from '@polkadot/types/lookup'; +import type { BTreeSetStatType, FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, PalletAssetAssetOwnershipRelation, PalletAssetClassicTickerRegistration, PalletAssetSecurityToken, PalletAssetTickerRegistration, PalletAssetTickerRegistrationConfig, PalletAuthorshipUncleEntryItem, PalletBalancesBalanceLock, PalletBridgeBridgeTxDetail, PalletCommitteePolymeshVotes, PalletContractsStorageDeletedContract, PalletContractsStorageRawContractInfo, PalletContractsWasmOwnerInfo, PalletContractsWasmPrefabWasmModule, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsCaId, PalletCorporateActionsCorporateAction, PalletCorporateActionsDistribution, PalletCorporateActionsTargetIdentities, PalletGrandpaStoredPendingChange, PalletGrandpaStoredState, PalletIdentityClaim1stKey, PalletIdentityClaim2ndKey, PalletImOnlineBoundedOpaqueNetworkState, PalletImOnlineSr25519AppSr25519Public, PalletMultisigProposalDetails, PalletPipsDepositInfo, PalletPipsPip, PalletPipsPipsMetadata, PalletPipsSnapshotMetadata, PalletPipsSnapshottedPip, PalletPipsVote, PalletPipsVotingResult, PalletPreimageRequestStatus, PalletRelayerSubsidy, PalletRewardsItnRewardStatus, PalletSchedulerScheduledV3, PalletSettlementAffirmationStatus, PalletSettlementInstruction, PalletSettlementLeg, PalletSettlementLegStatus, PalletSettlementVenue, PalletStakingActiveEraInfo, PalletStakingElectionResult, PalletStakingElectionStatus, PalletStakingEraRewardPoints, PalletStakingExposure, PalletStakingForcing, PalletStakingNominations, PalletStakingPermissionedIdentityPrefs, PalletStakingReleases, PalletStakingRewardDestination, PalletStakingSlashingSlashingSpans, PalletStakingSlashingSpanRecord, PalletStakingSlashingSwitch, PalletStakingStakingLedger, PalletStakingUnappliedSlash, PalletStakingValidatorPrefs, PalletStoFundraiser, PalletTransactionPaymentReleases, PolymeshCommonUtilitiesCheckpointStoredSchedule, PolymeshCommonUtilitiesGroupInactiveMember, PolymeshCommonUtilitiesMaybeBlock, PolymeshCommonUtilitiesProtocolFeeProtocolOp, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAssetMetadataAssetMetadataKey, PolymeshPrimitivesAssetMetadataAssetMetadataSpec, PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail, PolymeshPrimitivesAuthorization, PolymeshPrimitivesComplianceManagerAssetCompliance, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesIdentityClaim, PolymeshPrimitivesIdentityDidRecord, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKeyKeyRecord, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesStatisticsAssetScope, PolymeshPrimitivesStatisticsStat1stKey, PolymeshPrimitivesStatisticsStat2ndKey, PolymeshPrimitivesStatisticsStatType, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesTicker, PolymeshPrimitivesTransferComplianceAssetTransferCompliance, PolymeshPrimitivesTransferComplianceTransferConditionExemptKey, PolymeshRuntimeDevelopRuntimeSessionKeys, SpConsensusBabeAppPublic, SpConsensusBabeBabeEpochConfiguration, SpConsensusBabeDigestsNextConfigDescriptor, SpCoreCryptoKeyTypeId, SpNposElectionsElectionScore, SpRuntimeDigest, SpStakingOffenceOffenceDetails } from '@polkadot/types/lookup'; import type { Observable } from '@polkadot/types/types'; declare module '@polkadot/api-base/types/storage' { @@ -262,7 +262,7 @@ declare module '@polkadot/api-base/types/storage' { /** * Randomness under construction. * - * We make a tradeoff between storage accesses and list length. + * We make a trade-off between storage accesses and list length. * We store the under-construction randomness in segments of up to * `UNDER_CONSTRUCTION_SEGMENT_LENGTH`. * @@ -500,6 +500,62 @@ declare module '@polkadot/api-base/types/storage' { **/ [key: string]: QueryableStorageEntry; }; + contracts: { + /** + * A mapping between an original code hash and instrumented wasm code, ready for execution. + **/ + codeStorage: AugmentedQuery Observable>, [H256]> & QueryableStorageEntry; + /** + * The code associated with a given account. + * + * TWOX-NOTE: SAFE since `AccountId` is a secure hash. + **/ + contractInfoOf: AugmentedQuery Observable>, [AccountId32]> & QueryableStorageEntry; + /** + * Evicted contracts that await child trie deletion. + * + * Child trie deletion is a heavy operation depending on the amount of storage items + * stored in said trie. Therefore this operation is performed lazily in `on_initialize`. + **/ + deletionQueue: AugmentedQuery Observable>, []> & QueryableStorageEntry; + /** + * This is a **monotonic** counter incremented on contract instantiation. + * + * This is used in order to generate unique trie ids for contracts. + * The trie id of a new contract is calculated from hash(account_id, nonce). + * The nonce is required because otherwise the following sequence would lead to + * a possible collision of storage: + * + * 1. Create a new contract. + * 2. Terminate the contract. + * 3. Immediately recreate the contract with the same account_id. + * + * This is bad because the contents of a trie are deleted lazily and there might be + * storage of the old instantiation still in it when the new contract is created. Please + * note that we can't replace the counter by the block number because the sequence above + * can happen in the same block. We also can't keep the account counter in memory only + * because storage is the only way to communicate across different extrinsics in the + * same block. + * + * # Note + * + * Do not use it to determine the number of contracts. It won't be decremented if + * a contract is destroyed. + **/ + nonce: AugmentedQuery Observable, []> & QueryableStorageEntry; + /** + * A mapping between an original code hash and its owner information. + **/ + ownerInfoOf: AugmentedQuery Observable>, [H256]> & QueryableStorageEntry; + /** + * A mapping from an original code hash to the original code, untouched by instrumentation. + **/ + pristineCode: AugmentedQuery Observable>, [H256]> & QueryableStorageEntry; + /** + * Generic query + **/ + [key: string]: QueryableStorageEntry; + }; corporateAction: { /** * Associations from CAs to `Document`s via their IDs. @@ -1032,6 +1088,12 @@ declare module '@polkadot/api-base/types/storage' { **/ [key: string]: QueryableStorageEntry; }; + polymeshContracts: { + /** + * Generic query + **/ + [key: string]: QueryableStorageEntry; + }; portfolio: { /** * Inverse map of `Portfolios` used to ensure bijectivitiy, @@ -1080,6 +1142,20 @@ declare module '@polkadot/api-base/types/storage' { **/ [key: string]: QueryableStorageEntry; }; + preimage: { + /** + * The preimages stored by this pallet. + **/ + preimageFor: AugmentedQuery Observable>, [H256]> & QueryableStorageEntry; + /** + * The request status of a given hash. + **/ + statusFor: AugmentedQuery Observable>, [H256]> & QueryableStorageEntry; + /** + * Generic query + **/ + [key: string]: QueryableStorageEntry; + }; protocolFee: { /** * The mapping of operation names to the base fees of those operations. @@ -1135,17 +1211,11 @@ declare module '@polkadot/api-base/types/storage' { /** * Items to be executed, indexed by the block number that they should be executed on. **/ - agenda: AugmentedQuery Observable>>, [u32]> & QueryableStorageEntry; + agenda: AugmentedQuery Observable>>, [u32]> & QueryableStorageEntry; /** * Lookup from identity to the block number and index of the task. **/ lookup: AugmentedQuery Observable>>, [Bytes]> & QueryableStorageEntry; - /** - * Storage version of the pallet. - * - * New networks start with last version. - **/ - storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Generic query **/ @@ -1427,7 +1497,7 @@ declare module '@polkadot/api-base/types/storage' { /** * The score of the current [`QueuedElected`]. **/ - queuedScore: AugmentedQuery Observable>>, []> & QueryableStorageEntry; + queuedScore: AugmentedQuery Observable>, []> & QueryableStorageEntry; slashingAllowedFor: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Slashing spans for stash accounts. @@ -1571,8 +1641,11 @@ declare module '@polkadot/api-base/types/storage' { /** * Events deposited for the current block. * - * NOTE: This storage item is explicitly unbounded since it is never intended to be read - * from within the runtime. + * NOTE: The item is unbound and should therefore never be read on chain. + * It could otherwise inflate the PoV size of a block. + * + * Events have a large in-memory size. Box the events to not go out-of-memory + * just in case someone still reads them from within the runtime. **/ events: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** diff --git a/scripts/cli/src/interfaces/augment-api-rpc.ts b/scripts/cli/src/interfaces/augment-api-rpc.ts index ca2e461e0d..37edc06afe 100644 --- a/scripts/cli/src/interfaces/augment-api-rpc.ts +++ b/scripts/cli/src/interfaces/augment-api-rpc.ts @@ -333,9 +333,9 @@ declare module '@polkadot/rpc-core/types/jsonrpc' { }; grandpa: { /** - * Prove finality for the range (begin; end] hash. + * Prove finality for the given block number, returning the Justification for the last block in the set. **/ - proveFinality: AugmentedRpc<(begin: BlockHash | string | Uint8Array, end: BlockHash | string | Uint8Array, authoritiesSetId?: u64 | AnyNumber | Uint8Array) => Observable>>; + proveFinality: AugmentedRpc<(blockNumber: BlockNumber | AnyNumber | Uint8Array) => Observable>>; /** * Returns the state of the current best round state as well as the ongoing background rounds **/ diff --git a/scripts/cli/src/interfaces/augment-api-tx.ts b/scripts/cli/src/interfaces/augment-api-tx.ts index 565c86c8f0..a7c5e0be42 100644 --- a/scripts/cli/src/interfaces/augment-api-tx.ts +++ b/scripts/cli/src/interfaces/augment-api-tx.ts @@ -5,7 +5,7 @@ import type { ApiTypes } from '@polkadot/api-base/types'; import type { Bytes, Compact, Option, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec'; import type { AnyNumber, ITuple } from '@polkadot/types-codec/types'; import type { AccountId32, Call, H256, MultiAddress, Perbill, Percent, Permill } from '@polkadot/types/interfaces/runtime'; -import type { BTreeSetIdentityId, BTreeSetStatType, BTreeSetStatUpdate, BTreeSetTransferCondition, ConfidentialIdentityClaimProofsScopeClaimProof, PalletAssetCheckpointScheduleSpec, PalletAssetClassicTickerImport, PalletAssetTickerRegistrationConfig, PalletBridgeBridgeTx, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsCaId, PalletCorporateActionsCaKind, PalletCorporateActionsInitiateCorporateActionArgs, PalletCorporateActionsRecordDateSpec, PalletCorporateActionsTargetIdentities, PalletImOnlineHeartbeat, PalletImOnlineSr25519AppSr25519Signature, PalletPipsSnapshotResult, PalletPortfolioMovePortfolioItem, PalletRewardsItnRewardStatus, PalletSettlementLeg, PalletSettlementReceiptDetails, PalletSettlementSettlementType, PalletSettlementVenueType, PalletStakingCompactAssignments, PalletStakingElectionSize, PalletStakingRewardDestination, PalletStakingSlashingSwitch, PalletStakingValidatorPrefs, PalletStoPriceTier, PalletUtilityUniqueCall, PolymeshCommonUtilitiesBalancesMemo, PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth, PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuthV1, PolymeshCommonUtilitiesMaybeBlock, PolymeshCommonUtilitiesProtocolFeeProtocolOp, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetAssetType, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAssetMetadataAssetMetadataKey, PolymeshPrimitivesAssetMetadataAssetMetadataSpec, PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail, PolymeshPrimitivesAuthorizationAuthorizationData, PolymeshPrimitivesBeneficiary, PolymeshPrimitivesCddIdInvestorUid, PolymeshPrimitivesComplianceManagerComplianceRequirement, PolymeshPrimitivesCondition, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesEthereumEcdsaSignature, PolymeshPrimitivesIdentityClaimClaim, PolymeshPrimitivesIdentityClaimClaimType, PolymeshPrimitivesIdentityClaimScope, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKey, PolymeshPrimitivesSecondaryKeyPermissions, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesStatisticsAssetScope, PolymeshPrimitivesStatisticsStatType, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesTicker, PolymeshPrimitivesTransferComplianceTransferConditionExemptKey, PolymeshRuntimeDevelopRuntimeSessionKeys, SpConsensusBabeDigestsNextConfigDescriptor, SpConsensusSlotsEquivocationProof, SpCoreChangesTrieChangesTrieConfiguration, SpFinalityGrandpaEquivocationProof, SpRuntimeHeader, SpRuntimeMultiSignature, SpSessionMembershipProof } from '@polkadot/types/lookup'; +import type { BTreeSetIdentityId, BTreeSetStatType, BTreeSetStatUpdate, BTreeSetTransferCondition, ConfidentialIdentityClaimProofsScopeClaimProof, FrameSupportScheduleMaybeHashed, PalletAssetCheckpointScheduleSpec, PalletAssetClassicTickerImport, PalletAssetTickerRegistrationConfig, PalletBridgeBridgeTx, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsCaId, PalletCorporateActionsCaKind, PalletCorporateActionsInitiateCorporateActionArgs, PalletCorporateActionsRecordDateSpec, PalletCorporateActionsTargetIdentities, PalletImOnlineHeartbeat, PalletImOnlineSr25519AppSr25519Signature, PalletPipsSnapshotResult, PalletPortfolioMovePortfolioItem, PalletRewardsItnRewardStatus, PalletSettlementLeg, PalletSettlementReceiptDetails, PalletSettlementSettlementType, PalletSettlementVenueType, PalletStakingCompactAssignments, PalletStakingElectionSize, PalletStakingRewardDestination, PalletStakingSlashingSwitch, PalletStakingValidatorPrefs, PalletStoPriceTier, PalletUtilityUniqueCall, PolymeshCommonUtilitiesBalancesMemo, PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth, PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuthV1, PolymeshCommonUtilitiesMaybeBlock, PolymeshCommonUtilitiesProtocolFeeProtocolOp, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetAssetType, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAssetMetadataAssetMetadataKey, PolymeshPrimitivesAssetMetadataAssetMetadataSpec, PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail, PolymeshPrimitivesAuthorizationAuthorizationData, PolymeshPrimitivesBeneficiary, PolymeshPrimitivesCddIdInvestorUid, PolymeshPrimitivesComplianceManagerComplianceRequirement, PolymeshPrimitivesCondition, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesEthereumEcdsaSignature, PolymeshPrimitivesIdentityClaimClaim, PolymeshPrimitivesIdentityClaimClaimType, PolymeshPrimitivesIdentityClaimScope, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKey, PolymeshPrimitivesSecondaryKeyPermissions, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesStatisticsAssetScope, PolymeshPrimitivesStatisticsStatType, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesTicker, PolymeshPrimitivesTransferComplianceTransferConditionExemptKey, PolymeshRuntimeDevelopRuntimeSessionKeys, SpConsensusBabeDigestsNextConfigDescriptor, SpConsensusSlotsEquivocationProof, SpFinalityGrandpaEquivocationProof, SpNposElectionsElectionScore, SpRuntimeHeader, SpRuntimeMultiSignature, SpSessionMembershipProof } from '@polkadot/types/lookup'; declare module '@polkadot/api-base/types/submittable' { export interface AugmentedSubmittables { @@ -699,7 +699,6 @@ declare module '@polkadot/api-base/types/submittable' { * * # Errors * - `UnauthorizedAgent` if `origin` is not agent-permissioned for `ticker`. - * - `DistributingAsset` if `ca_id.ticker == currency`. * - `ExpiryBeforePayment` if `expires_at.unwrap() <= payment_at`. * - `NoSuchCA` if `ca_id` does not identify an existing CA. * - `NoRecordDate` if CA has no record date. @@ -708,6 +707,8 @@ declare module '@polkadot/api-base/types/submittable' { * - `InsufficientPortfolioBalance` if `portfolio` has less than `amount` of `currency`. * - `InsufficientBalance` if the protocol fee couldn't be charged. * - `CANotBenefit` if the CA is not of kind PredictableBenefit/UnpredictableBenefit + * - `DistributionAmountIsZero` if the `amount` is zero. + * - `DistributionPerShareIsZero` if the `per_share` is zero. * * # Permissions * * Asset @@ -1622,22 +1623,23 @@ declare module '@polkadot/api-base/types/submittable' { addInvestorUniquenessClaim: AugmentedSubmittable<(target: PolymeshPrimitivesIdentityId | string | Uint8Array, claim: PolymeshPrimitivesIdentityClaimClaim | { Accredited: any } | { Affiliate: any } | { BuyLockup: any } | { SellLockup: any } | { CustomerDueDiligence: any } | { KnowYourCustomer: any } | { Jurisdiction: any } | { Exempted: any } | { Blocked: any } | { InvestorUniqueness: any } | { NoData: any } | { InvestorUniquenessV2: any } | string | Uint8Array, proof: PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData | { r?: any; s?: any } | string | Uint8Array, expiry: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityClaimClaim, PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData, Option]>; addInvestorUniquenessClaimV2: AugmentedSubmittable<(target: PolymeshPrimitivesIdentityId | string | Uint8Array, scope: PolymeshPrimitivesIdentityClaimScope | { Identity: any } | { Ticker: any } | { Custom: any } | string | Uint8Array, claim: PolymeshPrimitivesIdentityClaimClaim | { Accredited: any } | { Affiliate: any } | { BuyLockup: any } | { SellLockup: any } | { CustomerDueDiligence: any } | { KnowYourCustomer: any } | { Jurisdiction: any } | { Exempted: any } | { Blocked: any } | { InvestorUniqueness: any } | { NoData: any } | { InvestorUniquenessV2: any } | string | Uint8Array, proof: ConfidentialIdentityClaimProofsScopeClaimProof | { proofScopeIdWellformed?: any; proofScopeIdCddIdMatch?: any; scopeId?: any } | string | Uint8Array, expiry: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityClaimScope, PolymeshPrimitivesIdentityClaimClaim, ConfidentialIdentityClaimProofsScopeClaimProof, Option]>; /** - * It adds secondary keys to target identity `id`. + * Adds secondary keys to target identity `id`. + * * Keys are directly added to identity because each of them has an authorization. * - * Arguments: - * - `origin` Primary key of `id` identity. - * - `id` Identity where new secondary keys will be added. - * - `additional_keys` New secondary items (and their authorization data) to add to target - * identity. + * # Arguments: + * - `origin` which must be the primary key of the identity `id`. + * - `id` to which new secondary keys will be added. + * - `additional_keys` which includes secondary keys, + * coupled with authorization data, to add to target identity. * - * Failure - * - It can only called by primary key owner. + * # Errors + * - Can only called by primary key owner. * - Keys should be able to linked to any identity. **/ addSecondaryKeysWithAuthorization: AugmentedSubmittable<(additionalKeys: Vec | (PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth | { secondaryKey?: any; authSignature?: any } | string | Uint8Array)[], expiresAt: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Vec, u64]>; /** - * Deprecated. Please use `add_secondary_keys_with_authorization` instead. + * Deprecated. Use `add_secondary_keys_with_authorization` instead. **/ addSecondaryKeysWithAuthorizationOld: AugmentedSubmittable<(additionalKeys: Vec | (PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuthV1 | { secondaryKey?: any; authSignature?: any } | string | Uint8Array)[], expiresAt: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Vec, u64]>; /** @@ -1704,12 +1706,13 @@ declare module '@polkadot/api-base/types/submittable' { /** * Removes specified secondary keys of a DID if present. * - * # Failure - * It can only called by primary key owner. + * # Errors + * + * The extrinsic can only called by primary key owner. **/ removeSecondaryKeys: AugmentedSubmittable<(keysToRemove: Vec | (AccountId32 | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** - * Deprecated. Please use `remove_secondary_keys` instead. + * Deprecated. Use `remove_secondary_keys` instead. **/ removeSecondaryKeysOld: AugmentedSubmittable<(keysToRemove: Vec | (PolymeshPrimitivesSecondaryKeySignatory | { Identity: any } | { Account: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** @@ -1745,7 +1748,7 @@ declare module '@polkadot/api-base/types/submittable' { **/ rotatePrimaryKeyToSecondary: AugmentedSubmittable<(authId: u64 | AnyNumber | Uint8Array, optionalCddAuthId: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [u64, Option]>; /** - * Deprecated. Please use `set_secondary_key_permissions` instead. + * Deprecated. Use `set_secondary_key_permissions` instead. **/ setPermissionToSigner: AugmentedSubmittable<(key: PolymeshPrimitivesSecondaryKeySignatory | { Identity: any } | { Account: any } | string | Uint8Array, perms: PolymeshPrimitivesSecondaryKeyPermissions | { asset?: any; extrinsic?: any; portfolio?: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesSecondaryKeyPermissions]>; /** @@ -2312,6 +2315,84 @@ declare module '@polkadot/api-base/types/submittable' { **/ [key: string]: SubmittableExtrinsicFunction; }; + polymeshContracts: { + /** + * Calls the `contract` through its address with the given `data`. + * + * The contract is endowed with `value` POLYX, + * but note that this is distinct from gas fees which are limited with `gas_limit`. + * + * The contract may optionally call back into the runtime, + * executing extrinsics such as e.g., `create_asset`. + * During such runtime calls, the current identity will be the one that instantiate the `contract`. + * This restriction exists for security purposes. + * + * # Arguments + * - `contract` to call. + * - `value` in POLYX to transfer to the contract. + * - `gas_limit` that limits how much gas execution can consume, erroring above it. + * - `data` to be interpreted by the smart contract call. + * + * # Errors + * - All the errors in `pallet_contracts::Call::call` can also happen here. + * - `ContractNotFound` if `contract` doesn't exist or isn't a contract. + * - CDD/Permissions are checked, unlike in `pallet_contracts`. + **/ + call: AugmentedSubmittable<(contract: AccountId32 | string | Uint8Array, value: u128 | AnyNumber | Uint8Array, gasLimit: u64 | AnyNumber | Uint8Array, storageDepositLimit: Option | null | object | string | Uint8Array, data: Bytes | string | Uint8Array) => SubmittableExtrinsic, [AccountId32, u128, u64, Option, Bytes]>; + /** + * Instantiates a smart contract defining it with the given `code` and `salt`. + * + * The contract will be attached as a secondary key, + * with `perms` as its permissions, to `origin`'s identity. + * + * The contract is transferred `endowment` amount of POLYX. + * This is distinct from the `gas_limit`, + * which controls how much gas the deployment code may at most consume. + * + * # Arguments + * - `endowment` amount of POLYX to transfer to the contract. + * - `gas_limit` for how much gas the `deploy` code in the contract may at most consume. + * - `code` with the WASM binary defining the smart contract. + * - `salt` used for contract address derivation. + * By varying this, the same `code` can be used under the same identity. + * + * # Errors + * - All the errors in `pallet_contracts::Call::instantiate_with_code` can also happen here. + * - CDD/Permissions are checked, unlike in `pallet_contracts`. + * - Errors that arise when adding a new secondary key can also occur here. + **/ + instantiateWithCode: AugmentedSubmittable<(endowment: u128 | AnyNumber | Uint8Array, gasLimit: u64 | AnyNumber | Uint8Array, storageDepositLimit: Option | null | object | string | Uint8Array, code: Bytes | string | Uint8Array, data: Bytes | string | Uint8Array, salt: Bytes | string | Uint8Array, perms: PolymeshPrimitivesSecondaryKeyPermissions | { asset?: any; extrinsic?: any; portfolio?: any } | string | Uint8Array) => SubmittableExtrinsic, [u128, u64, Option, Bytes, Bytes, Bytes, PolymeshPrimitivesSecondaryKeyPermissions]>; + /** + * Instantiates a smart contract defining using the given `code_hash` and `salt`. + * + * Unlike `instantiate_with_code`, + * this assumes that at least one contract with the same WASM code has already been uploaded. + * + * The contract will be attached as a secondary key, + * with `perms` as its permissions, to `origin`'s identity. + * + * The contract is transferred `endowment` amount of POLYX. + * This is distinct from the `gas_limit`, + * which controls how much gas the deployment code may at most consume. + * + * # Arguments + * - `endowment` amount of POLYX to transfer to the contract. + * - `gas_limit` for how much gas the `deploy` code in the contract may at most consume. + * - `code_hash` of an already uploaded WASM binary. + * - `salt` used for contract address derivation. + * By varying this, the same `code` can be used under the same identity. + * + * # Errors + * - All the errors in `pallet_contracts::Call::instantiate` can also happen here. + * - CDD/Permissions are checked, unlike in `pallet_contracts`. + * - Errors that arise when adding a new secondary key can also occur here. + **/ + instantiateWithHash: AugmentedSubmittable<(endowment: u128 | AnyNumber | Uint8Array, gasLimit: u64 | AnyNumber | Uint8Array, storageDepositLimit: Option | null | object | string | Uint8Array, codeHash: H256 | string | Uint8Array, data: Bytes | string | Uint8Array, salt: Bytes | string | Uint8Array, perms: PolymeshPrimitivesSecondaryKeyPermissions | { asset?: any; extrinsic?: any; portfolio?: any } | string | Uint8Array) => SubmittableExtrinsic, [u128, u64, Option, H256, Bytes, Bytes, PolymeshPrimitivesSecondaryKeyPermissions]>; + /** + * Generic tx + **/ + [key: string]: SubmittableExtrinsicFunction; + }; portfolio: { acceptPortfolioCustody: AugmentedSubmittable<(authId: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u64]>; /** @@ -2373,6 +2454,36 @@ declare module '@polkadot/api-base/types/submittable' { **/ [key: string]: SubmittableExtrinsicFunction; }; + preimage: { + /** + * Register a preimage on-chain. + * + * If the preimage was previously requested, no fees or deposits are taken for providing + * the preimage. Otherwise, a deposit is taken proportional to the size of the preimage. + **/ + notePreimage: AugmentedSubmittable<(bytes: Bytes | string | Uint8Array) => SubmittableExtrinsic, [Bytes]>; + /** + * Request a preimage be uploaded to the chain without paying any fees or deposits. + * + * If the preimage requests has already been provided on-chain, we unreserve any deposit + * a user may have paid, and take the control of the preimage out of their hands. + **/ + requestPreimage: AugmentedSubmittable<(hash: H256 | string | Uint8Array) => SubmittableExtrinsic, [H256]>; + /** + * Clear an unrequested preimage from the runtime storage. + **/ + unnotePreimage: AugmentedSubmittable<(hash: H256 | string | Uint8Array) => SubmittableExtrinsic, [H256]>; + /** + * Clear a previously made request for a preimage. + * + * NOTE: THIS MUST NOT BE CALLED ON `hash` MORE TIMES THAN `request_preimage`. + **/ + unrequestPreimage: AugmentedSubmittable<(hash: H256 | string | Uint8Array) => SubmittableExtrinsic, [H256]>; + /** + * Generic tx + **/ + [key: string]: SubmittableExtrinsicFunction; + }; protocolFee: { /** * Changes the a base fee for the root origin. @@ -2508,43 +2619,16 @@ declare module '@polkadot/api-base/types/submittable' { scheduler: { /** * Cancel an anonymously scheduled task. - * - * # - * - S = Number of already scheduled calls - * - Base Weight: 22.15 + 2.869 * S µs - * - DB Weight: - * - Read: Agenda - * - Write: Agenda, Lookup - * - Will use base weight of 100 which should be good for up to 30 scheduled calls - * # **/ cancel: AugmentedSubmittable<(when: u32 | AnyNumber | Uint8Array, index: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32, u32]>; /** * Cancel a named scheduled task. - * - * # - * - S = Number of already scheduled calls - * - Base Weight: 24.91 + 2.907 * S µs - * - DB Weight: - * - Read: Agenda, Lookup - * - Write: Agenda, Lookup - * - Will use base weight of 100 which should be good for up to 30 scheduled calls - * # **/ cancelNamed: AugmentedSubmittable<(id: Bytes | string | Uint8Array) => SubmittableExtrinsic, [Bytes]>; /** * Anonymously schedule a task. - * - * # - * - S = Number of already scheduled calls - * - Base Weight: 22.29 + .126 * S µs - * - DB Weight: - * - Read: Agenda - * - Write: Agenda - * - Will use base weight of 25 which should be good for up to 30 scheduled calls - * # **/ - schedule: AugmentedSubmittable<(when: u32 | AnyNumber | Uint8Array, maybePeriodic: Option> | null | object | string | Uint8Array, priority: u8 | AnyNumber | Uint8Array, call: Call | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic, [u32, Option>, u8, Call]>; + schedule: AugmentedSubmittable<(when: u32 | AnyNumber | Uint8Array, maybePeriodic: Option> | null | object | string | Uint8Array, priority: u8 | AnyNumber | Uint8Array, call: FrameSupportScheduleMaybeHashed | { Value: any } | { Hash: any } | string | Uint8Array) => SubmittableExtrinsic, [u32, Option>, u8, FrameSupportScheduleMaybeHashed]>; /** * Anonymously schedule a task after a delay. * @@ -2552,20 +2636,11 @@ declare module '@polkadot/api-base/types/submittable' { * Same as [`schedule`]. * # **/ - scheduleAfter: AugmentedSubmittable<(after: u32 | AnyNumber | Uint8Array, maybePeriodic: Option> | null | object | string | Uint8Array, priority: u8 | AnyNumber | Uint8Array, call: Call | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic, [u32, Option>, u8, Call]>; + scheduleAfter: AugmentedSubmittable<(after: u32 | AnyNumber | Uint8Array, maybePeriodic: Option> | null | object | string | Uint8Array, priority: u8 | AnyNumber | Uint8Array, call: FrameSupportScheduleMaybeHashed | { Value: any } | { Hash: any } | string | Uint8Array) => SubmittableExtrinsic, [u32, Option>, u8, FrameSupportScheduleMaybeHashed]>; /** * Schedule a named task. - * - * # - * - S = Number of already scheduled calls - * - Base Weight: 29.6 + .159 * S µs - * - DB Weight: - * - Read: Agenda, Lookup - * - Write: Agenda, Lookup - * - Will use base weight of 35 which should be good for more than 30 scheduled calls - * # **/ - scheduleNamed: AugmentedSubmittable<(id: Bytes | string | Uint8Array, when: u32 | AnyNumber | Uint8Array, maybePeriodic: Option> | null | object | string | Uint8Array, priority: u8 | AnyNumber | Uint8Array, call: Call | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic, [Bytes, u32, Option>, u8, Call]>; + scheduleNamed: AugmentedSubmittable<(id: Bytes | string | Uint8Array, when: u32 | AnyNumber | Uint8Array, maybePeriodic: Option> | null | object | string | Uint8Array, priority: u8 | AnyNumber | Uint8Array, call: FrameSupportScheduleMaybeHashed | { Value: any } | { Hash: any } | string | Uint8Array) => SubmittableExtrinsic, [Bytes, u32, Option>, u8, FrameSupportScheduleMaybeHashed]>; /** * Schedule a named task after a delay. * @@ -2573,7 +2648,7 @@ declare module '@polkadot/api-base/types/submittable' { * Same as [`schedule_named`](Self::schedule_named). * # **/ - scheduleNamedAfter: AugmentedSubmittable<(id: Bytes | string | Uint8Array, after: u32 | AnyNumber | Uint8Array, maybePeriodic: Option> | null | object | string | Uint8Array, priority: u8 | AnyNumber | Uint8Array, call: Call | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic, [Bytes, u32, Option>, u8, Call]>; + scheduleNamedAfter: AugmentedSubmittable<(id: Bytes | string | Uint8Array, after: u32 | AnyNumber | Uint8Array, maybePeriodic: Option> | null | object | string | Uint8Array, priority: u8 | AnyNumber | Uint8Array, call: FrameSupportScheduleMaybeHashed | { Value: any } | { Hash: any } | string | Uint8Array) => SubmittableExtrinsic, [Bytes, u32, Option>, u8, FrameSupportScheduleMaybeHashed]>; /** * Generic tx **/ @@ -3236,7 +3311,7 @@ declare module '@polkadot/api-base/types/submittable' { * - Worse solution is retraced in pre-dispatch-checks which sets its own weight. * # **/ - submitElectionSolution: AugmentedSubmittable<(winners: Vec | (u16 | AnyNumber | Uint8Array)[], compact: PalletStakingCompactAssignments | { votes1?: any; votes2?: any; votes3?: any; votes4?: any; votes5?: any; votes6?: any; votes7?: any; votes8?: any; votes9?: any; votes10?: any; votes11?: any; votes12?: any; votes13?: any; votes14?: any; votes15?: any; votes16?: any } | string | Uint8Array, score: Vec, era: u32 | AnyNumber | Uint8Array, size: PalletStakingElectionSize | { validators?: any; nominators?: any } | string | Uint8Array) => SubmittableExtrinsic, [Vec, PalletStakingCompactAssignments, Vec, u32, PalletStakingElectionSize]>; + submitElectionSolution: AugmentedSubmittable<(winners: Vec | (u16 | AnyNumber | Uint8Array)[], compact: PalletStakingCompactAssignments | { votes1?: any; votes2?: any; votes3?: any; votes4?: any; votes5?: any; votes6?: any; votes7?: any; votes8?: any; votes9?: any; votes10?: any; votes11?: any; votes12?: any; votes13?: any; votes14?: any; votes15?: any; votes16?: any } | string | Uint8Array, score: SpNposElectionsElectionScore | { minimalStake?: any; sumStake?: any; sumStakeSquared?: any } | string | Uint8Array, era: u32 | AnyNumber | Uint8Array, size: PalletStakingElectionSize | { validators?: any; nominators?: any } | string | Uint8Array) => SubmittableExtrinsic, [Vec, PalletStakingCompactAssignments, SpNposElectionsElectionScore, u32, PalletStakingElectionSize]>; /** * Unsigned version of `submit_election_solution`. * @@ -3248,7 +3323,7 @@ declare module '@polkadot/api-base/types/submittable' { * See [`submit_election_solution`]. * # **/ - submitElectionSolutionUnsigned: AugmentedSubmittable<(winners: Vec | (u16 | AnyNumber | Uint8Array)[], compact: PalletStakingCompactAssignments | { votes1?: any; votes2?: any; votes3?: any; votes4?: any; votes5?: any; votes6?: any; votes7?: any; votes8?: any; votes9?: any; votes10?: any; votes11?: any; votes12?: any; votes13?: any; votes14?: any; votes15?: any; votes16?: any } | string | Uint8Array, score: Vec, era: u32 | AnyNumber | Uint8Array, size: PalletStakingElectionSize | { validators?: any; nominators?: any } | string | Uint8Array) => SubmittableExtrinsic, [Vec, PalletStakingCompactAssignments, Vec, u32, PalletStakingElectionSize]>; + submitElectionSolutionUnsigned: AugmentedSubmittable<(winners: Vec | (u16 | AnyNumber | Uint8Array)[], compact: PalletStakingCompactAssignments | { votes1?: any; votes2?: any; votes3?: any; votes4?: any; votes5?: any; votes6?: any; votes7?: any; votes8?: any; votes9?: any; votes10?: any; votes11?: any; votes12?: any; votes13?: any; votes14?: any; votes15?: any; votes16?: any } | string | Uint8Array, score: SpNposElectionsElectionScore | { minimalStake?: any; sumStake?: any; sumStakeSquared?: any } | string | Uint8Array, era: u32 | AnyNumber | Uint8Array, size: PalletStakingElectionSize | { validators?: any; nominators?: any } | string | Uint8Array) => SubmittableExtrinsic, [Vec, PalletStakingCompactAssignments, SpNposElectionsElectionScore, u32, PalletStakingElectionSize]>; /** * 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 @@ -3592,24 +3667,10 @@ declare module '@polkadot/api-base/types/submittable' { * * **NOTE:** We rely on the Root origin to provide us the number of subkeys under * the prefix we are removing to accurately calculate the weight of this function. - * - * # - * - `O(P)` where `P` amount of keys with prefix `prefix` - * - `P` storage deletions. - * - Base Weight: 0.834 * P µs - * - Writes: Number of subkeys + 1 - * # **/ killPrefix: AugmentedSubmittable<(prefix: Bytes | string | Uint8Array, subkeys: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Bytes, u32]>; /** * Kill some items from storage. - * - * # - * - `O(IK)` where `I` length of `keys` and `K` length of one key - * - `I` storage deletions. - * - Base Weight: .378 * i µs - * - Writes: Number of items - * # **/ killStorage: AugmentedSubmittable<(keys: Vec | (Bytes | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** @@ -3622,26 +3683,8 @@ declare module '@polkadot/api-base/types/submittable' { remark: AugmentedSubmittable<(remark: Bytes | string | Uint8Array) => SubmittableExtrinsic, [Bytes]>; /** * Make some on-chain remark and emit event. - * - * # - * - `O(b)` where b is the length of the remark. - * - 1 event. - * # **/ remarkWithEvent: AugmentedSubmittable<(remark: Bytes | string | Uint8Array) => SubmittableExtrinsic, [Bytes]>; - /** - * Set the new changes trie configuration. - * - * # - * - `O(1)` - * - 1 storage write or delete (codec `O(1)`). - * - 1 call to `deposit_log`: Uses `append` API, so O(1) - * - Base Weight: 7.218 µs - * - DB Weight: - * - Writes: Changes Trie, System Digest - * # - **/ - setChangesTrieConfig: AugmentedSubmittable<(changesTrieConfig: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [Option]>; /** * Set the new runtime code. * @@ -3671,25 +3714,10 @@ declare module '@polkadot/api-base/types/submittable' { setCodeWithoutChecks: AugmentedSubmittable<(code: Bytes | string | Uint8Array) => SubmittableExtrinsic, [Bytes]>; /** * Set the number of pages in the WebAssembly environment's heap. - * - * # - * - `O(1)` - * - 1 storage write. - * - Base Weight: 1.405 µs - * - 1 write to HEAP_PAGES - * - 1 digest item - * # **/ setHeapPages: AugmentedSubmittable<(pages: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u64]>; /** * Set some items of storage. - * - * # - * - `O(I)` where `I` length of `items` - * - `I` storage writes (`O(1)`). - * - Base Weight: 0.568 * i µs - * - Writes: Number of items - * # **/ setStorage: AugmentedSubmittable<(items: Vec> | ([Bytes | string | Uint8Array, Bytes | string | Uint8Array])[]) => SubmittableExtrinsic, [Vec>]>; /** diff --git a/scripts/cli/src/interfaces/augment-types.ts b/scripts/cli/src/interfaces/augment-types.ts index 14294b8ca4..f833d8426d 100644 --- a/scripts/cli/src/interfaces/augment-types.ts +++ b/scripts/cli/src/interfaces/augment-types.ts @@ -17,7 +17,7 @@ import type { PrefixedStorageKey } from '@polkadot/types/interfaces/childstate'; import type { StatementKind } from '@polkadot/types/interfaces/claims'; import type { CollectiveOrigin, MemberCount, ProposalIndex, Votes, VotesTo230 } from '@polkadot/types/interfaces/collective'; import type { AuthorityId, RawVRFOutput } from '@polkadot/types/interfaces/consensus'; -import type { AliveContractInfo, CodeHash, CodeUploadRequest, CodeUploadResult, CodeUploadResultValue, ContractCallFlags, ContractCallRequest, ContractExecResult, ContractExecResultErr, ContractExecResultErrModule, ContractExecResultOk, ContractExecResultResult, ContractExecResultSuccessTo255, ContractExecResultSuccessTo260, ContractExecResultTo255, ContractExecResultTo260, ContractExecResultTo267, ContractInfo, ContractInstantiateResult, ContractInstantiateResultTo267, ContractReturnFlags, ContractStorageKey, DeletedContract, ExecReturnValue, Gas, HostFnWeights, HostFnWeightsTo264, InstantiateRequest, InstantiateReturnValue, InstantiateReturnValueTo267, InstructionWeights, Limits, LimitsTo264, PrefabWasmModule, RentProjection, Schedule, ScheduleTo212, ScheduleTo258, ScheduleTo264, SeedOf, StorageDeposit, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts'; +import type { AliveContractInfo, CodeHash, CodeSource, CodeUploadRequest, CodeUploadResult, CodeUploadResultValue, ContractCallFlags, ContractCallRequest, ContractExecResult, ContractExecResultErr, ContractExecResultErrModule, ContractExecResultOk, ContractExecResultResult, ContractExecResultSuccessTo255, ContractExecResultSuccessTo260, ContractExecResultTo255, ContractExecResultTo260, ContractExecResultTo267, ContractInfo, ContractInstantiateResult, ContractInstantiateResultTo267, ContractInstantiateResultTo299, ContractReturnFlags, ContractStorageKey, DeletedContract, ExecReturnValue, Gas, HostFnWeights, HostFnWeightsTo264, InstantiateRequest, InstantiateRequestV1, InstantiateRequestV2, InstantiateReturnValue, InstantiateReturnValueOk, InstantiateReturnValueTo267, InstructionWeights, Limits, LimitsTo264, PrefabWasmModule, RentProjection, Schedule, ScheduleTo212, ScheduleTo258, ScheduleTo264, SeedOf, StorageDeposit, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts'; import type { ContractConstructorSpecLatest, ContractConstructorSpecV0, ContractConstructorSpecV1, ContractConstructorSpecV2, ContractConstructorSpecV3, ContractContractSpecV0, ContractContractSpecV1, ContractContractSpecV2, ContractContractSpecV3, ContractCryptoHasher, ContractDiscriminant, ContractDisplayName, ContractEventParamSpecLatest, ContractEventParamSpecV0, ContractEventParamSpecV2, ContractEventSpecLatest, ContractEventSpecV0, ContractEventSpecV1, ContractEventSpecV2, ContractLayoutArray, ContractLayoutCell, ContractLayoutEnum, ContractLayoutHash, ContractLayoutHashingStrategy, ContractLayoutKey, ContractLayoutStruct, ContractLayoutStructField, ContractMessageParamSpecLatest, ContractMessageParamSpecV0, ContractMessageParamSpecV2, ContractMessageSpecLatest, ContractMessageSpecV0, ContractMessageSpecV1, ContractMessageSpecV2, ContractMetadata, ContractMetadataLatest, ContractMetadataV0, ContractMetadataV1, ContractMetadataV2, ContractMetadataV3, ContractProject, ContractProjectContract, ContractProjectInfo, ContractProjectSource, ContractProjectV0, ContractSelector, ContractStorageLayout, ContractTypeSpec } from '@polkadot/types/interfaces/contractsAbi'; import type { FundIndex, FundInfo, LastContribution, TrieIndex } from '@polkadot/types/interfaces/crowdloan'; import type { ConfigData, MessageId, OverweightIndex, PageCounter, PageIndexData } from '@polkadot/types/interfaces/cumulus'; @@ -251,6 +251,7 @@ declare module '@polkadot/types/types/registry' { ClassMetadata: ClassMetadata; CodecHash: CodecHash; CodeHash: CodeHash; + CodeSource: CodeSource; CodeUploadRequest: CodeUploadRequest; CodeUploadResult: CodeUploadResult; CodeUploadResultValue: CodeUploadResultValue; @@ -310,6 +311,7 @@ declare module '@polkadot/types/types/registry' { ContractInfo: ContractInfo; ContractInstantiateResult: ContractInstantiateResult; ContractInstantiateResultTo267: ContractInstantiateResultTo267; + ContractInstantiateResultTo299: ContractInstantiateResultTo299; ContractLayoutArray: ContractLayoutArray; ContractLayoutCell: ContractLayoutCell; ContractLayoutEnum: ContractLayoutEnum; @@ -619,7 +621,10 @@ declare module '@polkadot/types/types/registry' { InstanceId: InstanceId; InstanceMetadata: InstanceMetadata; InstantiateRequest: InstantiateRequest; + InstantiateRequestV1: InstantiateRequestV1; + InstantiateRequestV2: InstantiateRequestV2; InstantiateReturnValue: InstantiateReturnValue; + InstantiateReturnValueOk: InstantiateReturnValueOk; InstantiateReturnValueTo267: InstantiateReturnValueTo267; Instruction: Instruction; InstructionId: InstructionId; diff --git a/scripts/cli/src/interfaces/lookup.ts b/scripts/cli/src/interfaces/lookup.ts index 2ea2ca9f2b..6d9844b2d0 100644 --- a/scripts/cli/src/interfaces/lookup.ts +++ b/scripts/cli/src/interfaces/lookup.ts @@ -32,44 +32,29 @@ export default { mandatory: 'u64' }, /** - * Lookup11: sp_runtime::generic::digest::Digest + * Lookup11: sp_runtime::generic::digest::Digest **/ SpRuntimeDigest: { logs: 'Vec' }, /** - * Lookup13: sp_runtime::generic::digest::DigestItem + * Lookup13: sp_runtime::generic::digest::DigestItem **/ SpRuntimeDigestDigestItem: { _enum: { Other: 'Bytes', __Unused1: 'Null', - ChangesTrieRoot: 'H256', + __Unused2: 'Null', __Unused3: 'Null', Consensus: '([u8;4],Bytes)', Seal: '([u8;4],Bytes)', PreRuntime: '([u8;4],Bytes)', - ChangesTrieSignal: 'SpRuntimeDigestChangesTrieSignal', + __Unused7: 'Null', RuntimeEnvironmentUpdated: 'Null' } }, /** - * Lookup15: sp_runtime::generic::digest::ChangesTrieSignal - **/ - SpRuntimeDigestChangesTrieSignal: { - _enum: { - NewConfiguration: 'Option' - } - }, - /** - * Lookup17: sp_core::changes_trie::ChangesTrieConfiguration - **/ - SpCoreChangesTrieChangesTrieConfiguration: { - digestInterval: 'u32', - digestLevels: 'u32' - }, - /** - * Lookup19: frame_system::EventRecord + * Lookup16: frame_system::EventRecord **/ FrameSystemEventRecord: { phase: 'FrameSystemPhase', @@ -77,20 +62,35 @@ export default { topics: 'Vec' }, /** - * Lookup21: frame_system::pallet::Event + * Lookup18: frame_system::pallet::Event **/ FrameSystemEvent: { _enum: { - ExtrinsicSuccess: 'FrameSupportWeightsDispatchInfo', - ExtrinsicFailed: '(SpRuntimeDispatchError,FrameSupportWeightsDispatchInfo)', + ExtrinsicSuccess: { + dispatchInfo: 'FrameSupportWeightsDispatchInfo', + }, + ExtrinsicFailed: { + dispatchError: 'SpRuntimeDispatchError', + dispatchInfo: 'FrameSupportWeightsDispatchInfo', + }, CodeUpdated: 'Null', - NewAccount: 'AccountId32', - KilledAccount: 'AccountId32', - Remarked: '(AccountId32,H256)' + NewAccount: { + account: 'AccountId32', + }, + KilledAccount: { + account: 'AccountId32', + }, + Remarked: { + _alias: { + hash_: 'hash', + }, + sender: 'AccountId32', + hash_: 'H256' + } } }, /** - * Lookup22: frame_support::weights::DispatchInfo + * Lookup19: frame_support::weights::DispatchInfo **/ FrameSupportWeightsDispatchInfo: { weight: 'u64', @@ -98,59 +98,79 @@ export default { paysFee: 'FrameSupportWeightsPays' }, /** - * Lookup23: frame_support::weights::DispatchClass + * Lookup20: frame_support::weights::DispatchClass **/ FrameSupportWeightsDispatchClass: { _enum: ['Normal', 'Operational', 'Mandatory'] }, /** - * Lookup24: frame_support::weights::Pays + * Lookup21: frame_support::weights::Pays **/ FrameSupportWeightsPays: { _enum: ['Yes', 'No'] }, /** - * Lookup25: sp_runtime::DispatchError + * Lookup22: sp_runtime::DispatchError **/ SpRuntimeDispatchError: { _enum: { Other: 'Null', CannotLookup: 'Null', BadOrigin: 'Null', - Module: { - index: 'u8', - error: 'u8', - }, + Module: 'SpRuntimeModuleError', ConsumerRemaining: 'Null', NoProviders: 'Null', + TooManyConsumers: 'Null', Token: 'SpRuntimeTokenError', - Arithmetic: 'SpRuntimeArithmeticError' + Arithmetic: 'SpRuntimeArithmeticError', + Transactional: 'SpRuntimeTransactionalError' } }, /** - * Lookup26: sp_runtime::TokenError + * Lookup23: sp_runtime::ModuleError + **/ + SpRuntimeModuleError: { + index: 'u8', + error: '[u8;4]' + }, + /** + * Lookup24: sp_runtime::TokenError **/ SpRuntimeTokenError: { _enum: ['NoFunds', 'WouldDie', 'BelowMinimum', 'CannotCreate', 'UnknownAsset', 'Frozen', 'Unsupported'] }, /** - * Lookup27: sp_runtime::ArithmeticError + * Lookup25: sp_runtime::ArithmeticError **/ SpRuntimeArithmeticError: { _enum: ['Underflow', 'Overflow', 'DivisionByZero'] }, /** - * Lookup28: pallet_indices::pallet::Event + * Lookup26: sp_runtime::TransactionalError + **/ + SpRuntimeTransactionalError: { + _enum: ['LimitReached', 'NoLayer'] + }, + /** + * Lookup27: pallet_indices::pallet::Event **/ PalletIndicesEvent: { _enum: { - IndexAssigned: '(AccountId32,u32)', - IndexFreed: 'u32', - IndexFrozen: '(u32,AccountId32)' + IndexAssigned: { + who: 'AccountId32', + index: 'u32', + }, + IndexFreed: { + index: 'u32', + }, + IndexFrozen: { + index: 'u32', + who: 'AccountId32' + } } }, /** - * Lookup29: polymesh_common_utilities::traits::balances::RawEvent + * Lookup28: polymesh_common_utilities::traits::balances::RawEvent **/ PolymeshCommonUtilitiesBalancesRawEvent: { _enum: { @@ -164,21 +184,21 @@ export default { } }, /** - * Lookup31: polymesh_primitives::identity_id::IdentityId + * Lookup30: polymesh_primitives::identity_id::IdentityId **/ PolymeshPrimitivesIdentityId: '[u8;32]', /** - * Lookup33: polymesh_common_utilities::traits::balances::Memo + * Lookup32: polymesh_common_utilities::traits::balances::Memo **/ PolymeshCommonUtilitiesBalancesMemo: '[u8;32]', /** - * Lookup34: frame_support::traits::tokens::misc::BalanceStatus + * Lookup33: frame_support::traits::tokens::misc::BalanceStatus **/ FrameSupportTokensMiscBalanceStatus: { _enum: ['Free', 'Reserved'] }, /** - * Lookup35: polymesh_common_utilities::traits::identity::RawEvent + * Lookup34: polymesh_common_utilities::traits::identity::RawEvent **/ PolymeshCommonUtilitiesIdentityRawEvent: { _enum: { @@ -202,14 +222,14 @@ export default { } }, /** - * Lookup37: polymesh_primitives::secondary_key::SecondaryKey + * Lookup36: polymesh_primitives::secondary_key::SecondaryKey **/ PolymeshPrimitivesSecondaryKey: { key: 'AccountId32', permissions: 'PolymeshPrimitivesSecondaryKeyPermissions' }, /** - * Lookup38: polymesh_primitives::secondary_key::Permissions + * Lookup37: polymesh_primitives::secondary_key::Permissions **/ PolymeshPrimitivesSecondaryKeyPermissions: { asset: 'PolymeshPrimitivesSubsetSubsetRestrictionTicker', @@ -217,7 +237,7 @@ export default { portfolio: 'PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId' }, /** - * Lookup39: polymesh_primitives::subset::SubsetRestriction + * Lookup38: polymesh_primitives::subset::SubsetRestriction **/ PolymeshPrimitivesSubsetSubsetRestrictionTicker: { _enum: { @@ -227,15 +247,15 @@ export default { } }, /** - * Lookup40: polymesh_primitives::ticker::Ticker + * Lookup39: polymesh_primitives::ticker::Ticker **/ PolymeshPrimitivesTicker: '[u8;12]', /** - * Lookup42: BTreeSet + * Lookup41: BTreeSet **/ BTreeSetTicker: 'Vec', /** - * Lookup44: polymesh_primitives::subset::SubsetRestriction + * Lookup43: polymesh_primitives::subset::SubsetRestriction **/ PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions: { _enum: { @@ -245,14 +265,14 @@ export default { } }, /** - * Lookup45: polymesh_primitives::secondary_key::PalletPermissions + * Lookup44: polymesh_primitives::secondary_key::PalletPermissions **/ PolymeshPrimitivesSecondaryKeyPalletPermissions: { palletName: 'Bytes', dispatchableNames: 'PolymeshPrimitivesSubsetSubsetRestrictionDispatchableName' }, /** - * Lookup47: polymesh_primitives::subset::SubsetRestriction + * Lookup46: polymesh_primitives::subset::SubsetRestriction **/ PolymeshPrimitivesSubsetSubsetRestrictionDispatchableName: { _enum: { @@ -262,15 +282,15 @@ export default { } }, /** - * Lookup49: BTreeSet + * Lookup48: BTreeSet **/ BTreeSetDispatchableName: 'Vec', /** - * Lookup51: BTreeSet + * Lookup50: BTreeSet **/ BTreeSetPalletPermissions: 'Vec', /** - * Lookup53: polymesh_primitives::subset::SubsetRestriction + * Lookup52: polymesh_primitives::subset::SubsetRestriction **/ PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId: { _enum: { @@ -280,14 +300,14 @@ export default { } }, /** - * Lookup54: polymesh_primitives::identity_id::PortfolioId + * Lookup53: polymesh_primitives::identity_id::PortfolioId **/ PolymeshPrimitivesIdentityIdPortfolioId: { did: 'PolymeshPrimitivesIdentityId', kind: 'PolymeshPrimitivesIdentityIdPortfolioKind' }, /** - * Lookup55: polymesh_primitives::identity_id::PortfolioKind + * Lookup54: polymesh_primitives::identity_id::PortfolioKind **/ PolymeshPrimitivesIdentityIdPortfolioKind: { _enum: { @@ -296,11 +316,11 @@ export default { } }, /** - * Lookup57: BTreeSet + * Lookup56: BTreeSet **/ BTreeSetPortfolioId: 'Vec', /** - * Lookup60: polymesh_primitives::identity_claim::IdentityClaim + * Lookup59: polymesh_primitives::identity_claim::IdentityClaim **/ PolymeshPrimitivesIdentityClaim: { claimIssuer: 'PolymeshPrimitivesIdentityId', @@ -310,7 +330,7 @@ export default { claim: 'PolymeshPrimitivesIdentityClaimClaim' }, /** - * Lookup62: polymesh_primitives::identity_claim::Claim + * Lookup61: polymesh_primitives::identity_claim::Claim **/ PolymeshPrimitivesIdentityClaimClaim: { _enum: { @@ -329,7 +349,7 @@ export default { } }, /** - * Lookup63: polymesh_primitives::identity_claim::Scope + * Lookup62: polymesh_primitives::identity_claim::Scope **/ PolymeshPrimitivesIdentityClaimScope: { _enum: { @@ -339,17 +359,17 @@ export default { } }, /** - * Lookup64: polymesh_primitives::cdd_id::CddId + * Lookup63: polymesh_primitives::cdd_id::CddId **/ PolymeshPrimitivesCddId: '[u8;32]', /** - * Lookup65: polymesh_primitives::jurisdiction::CountryCode + * Lookup64: polymesh_primitives::jurisdiction::CountryCode **/ PolymeshPrimitivesJurisdictionCountryCode: { _enum: ['AF', 'AX', 'AL', 'DZ', 'AS', 'AD', 'AO', 'AI', 'AQ', 'AG', 'AR', 'AM', 'AW', 'AU', 'AT', 'AZ', 'BS', 'BH', 'BD', 'BB', 'BY', 'BE', 'BZ', 'BJ', 'BM', 'BT', 'BO', 'BA', 'BW', 'BV', 'BR', 'VG', 'IO', 'BN', 'BG', 'BF', 'BI', 'KH', 'CM', 'CA', 'CV', 'KY', 'CF', 'TD', 'CL', 'CN', 'HK', 'MO', 'CX', 'CC', 'CO', 'KM', 'CG', 'CD', 'CK', 'CR', 'CI', 'HR', 'CU', 'CY', 'CZ', 'DK', 'DJ', 'DM', 'DO', 'EC', 'EG', 'SV', 'GQ', 'ER', 'EE', 'ET', 'FK', 'FO', 'FJ', 'FI', 'FR', 'GF', 'PF', 'TF', 'GA', 'GM', 'GE', 'DE', 'GH', 'GI', 'GR', 'GL', 'GD', 'GP', 'GU', 'GT', 'GG', 'GN', 'GW', 'GY', 'HT', 'HM', 'VA', 'HN', 'HU', 'IS', 'IN', 'ID', 'IR', 'IQ', 'IE', 'IM', 'IL', 'IT', 'JM', 'JP', 'JE', 'JO', 'KZ', 'KE', 'KI', 'KP', 'KR', 'KW', 'KG', 'LA', 'LV', 'LB', 'LS', 'LR', 'LY', 'LI', 'LT', 'LU', 'MK', 'MG', 'MW', 'MY', 'MV', 'ML', 'MT', 'MH', 'MQ', 'MR', 'MU', 'YT', 'MX', 'FM', 'MD', 'MC', 'MN', 'ME', 'MS', 'MA', 'MZ', 'MM', 'NA', 'NR', 'NP', 'NL', 'AN', 'NC', 'NZ', 'NI', 'NE', 'NG', 'NU', 'NF', 'MP', 'NO', 'OM', 'PK', 'PW', 'PS', 'PA', 'PG', 'PY', 'PE', 'PH', 'PN', 'PL', 'PT', 'PR', 'QA', 'RE', 'RO', 'RU', 'RW', 'BL', 'SH', 'KN', 'LC', 'MF', 'PM', 'VC', 'WS', 'SM', 'ST', 'SA', 'SN', 'RS', 'SC', 'SL', 'SG', 'SK', 'SI', 'SB', 'SO', 'ZA', 'GS', 'SS', 'ES', 'LK', 'SD', 'SR', 'SJ', 'SZ', 'SE', 'CH', 'SY', 'TW', 'TJ', 'TZ', 'TH', 'TL', 'TG', 'TK', 'TO', 'TT', 'TN', 'TR', 'TM', 'TC', 'TV', 'UG', 'UA', 'AE', 'GB', 'US', 'UM', 'UY', 'UZ', 'VU', 'VE', 'VN', 'VI', 'WF', 'EH', 'YE', 'ZM', 'ZW', 'BQ', 'CW', 'SX'] }, /** - * Lookup67: polymesh_primitives::authorization::AuthorizationData + * Lookup66: polymesh_primitives::authorization::AuthorizationData **/ PolymeshPrimitivesAuthorizationAuthorizationData: { _enum: { @@ -366,7 +386,7 @@ export default { } }, /** - * Lookup68: polymesh_primitives::agent::AgentGroup + * Lookup67: polymesh_primitives::agent::AgentGroup **/ PolymeshPrimitivesAgentAgentGroup: { _enum: { @@ -378,7 +398,7 @@ export default { } }, /** - * Lookup71: polymesh_common_utilities::traits::group::RawEvent + * Lookup70: polymesh_common_utilities::traits::group::RawEvent **/ PolymeshCommonUtilitiesGroupRawEventInstance2: { _enum: { @@ -392,11 +412,11 @@ export default { } }, /** - * Lookup72: pallet_group::Instance2 + * Lookup71: pallet_group::Instance2 **/ PalletGroupInstance2: 'Null', /** - * Lookup74: pallet_committee::RawEvent + * Lookup73: pallet_committee::RawEvent **/ PalletCommitteeRawEventInstance1: { _enum: { @@ -413,11 +433,11 @@ export default { } }, /** - * Lookup75: pallet_committee::Instance1 + * Lookup74: pallet_committee::Instance1 **/ PalletCommitteeInstance1: 'Null', /** - * Lookup78: polymesh_common_utilities::MaybeBlock + * Lookup77: polymesh_common_utilities::MaybeBlock **/ PolymeshCommonUtilitiesMaybeBlock: { _enum: { @@ -426,7 +446,7 @@ export default { } }, /** - * Lookup79: polymesh_common_utilities::traits::group::RawEvent + * Lookup78: polymesh_common_utilities::traits::group::RawEvent **/ PolymeshCommonUtilitiesGroupRawEventInstance1: { _enum: { @@ -440,11 +460,11 @@ export default { } }, /** - * Lookup80: pallet_group::Instance1 + * Lookup79: pallet_group::Instance1 **/ PalletGroupInstance1: 'Null', /** - * Lookup81: pallet_committee::RawEvent + * Lookup80: pallet_committee::RawEvent **/ PalletCommitteeRawEventInstance3: { _enum: { @@ -461,11 +481,11 @@ export default { } }, /** - * Lookup82: pallet_committee::Instance3 + * Lookup81: pallet_committee::Instance3 **/ PalletCommitteeInstance3: 'Null', /** - * Lookup83: polymesh_common_utilities::traits::group::RawEvent + * Lookup82: polymesh_common_utilities::traits::group::RawEvent **/ PolymeshCommonUtilitiesGroupRawEventInstance3: { _enum: { @@ -479,11 +499,11 @@ export default { } }, /** - * Lookup84: pallet_group::Instance3 + * Lookup83: pallet_group::Instance3 **/ PalletGroupInstance3: 'Null', /** - * Lookup85: pallet_committee::RawEvent + * Lookup84: pallet_committee::RawEvent **/ PalletCommitteeRawEventInstance4: { _enum: { @@ -500,11 +520,11 @@ export default { } }, /** - * Lookup86: pallet_committee::Instance4 + * Lookup85: pallet_committee::Instance4 **/ PalletCommitteeInstance4: 'Null', /** - * Lookup87: polymesh_common_utilities::traits::group::RawEvent + * Lookup86: polymesh_common_utilities::traits::group::RawEvent **/ PolymeshCommonUtilitiesGroupRawEventInstance4: { _enum: { @@ -518,11 +538,11 @@ export default { } }, /** - * Lookup88: pallet_group::Instance4 + * Lookup87: pallet_group::Instance4 **/ PalletGroupInstance4: 'Null', /** - * Lookup89: pallet_multisig::RawEvent + * Lookup88: pallet_multisig::RawEvent **/ PalletMultisigRawEvent: { _enum: { @@ -541,7 +561,7 @@ export default { } }, /** - * Lookup91: polymesh_primitives::secondary_key::Signatory + * Lookup90: polymesh_primitives::secondary_key::Signatory **/ PolymeshPrimitivesSecondaryKeySignatory: { _enum: { @@ -550,7 +570,7 @@ export default { } }, /** - * Lookup92: pallet_bridge::RawEvent + * Lookup91: pallet_bridge::RawEvent **/ PalletBridgeRawEvent: { _enum: { @@ -573,7 +593,7 @@ export default { } }, /** - * Lookup93: pallet_bridge::BridgeTx + * Lookup92: pallet_bridge::BridgeTx **/ PalletBridgeBridgeTx: { nonce: 'u32', @@ -582,7 +602,7 @@ export default { txHash: 'H256' }, /** - * Lookup96: pallet_bridge::HandledTxStatus + * Lookup95: pallet_bridge::HandledTxStatus **/ PalletBridgeHandledTxStatus: { _enum: { @@ -591,7 +611,7 @@ export default { } }, /** - * Lookup97: pallet_staking::RawEvent + * Lookup96: pallet_staking::RawEvent **/ PalletStakingRawEvent: { _enum: { @@ -615,71 +635,82 @@ export default { } }, /** - * Lookup98: pallet_staking::ElectionCompute + * Lookup97: pallet_staking::ElectionCompute **/ PalletStakingElectionCompute: { _enum: ['OnChain', 'Signed', 'Unsigned'] }, /** - * Lookup100: pallet_staking::SlashingSwitch + * Lookup99: pallet_staking::SlashingSwitch **/ PalletStakingSlashingSwitch: { _enum: ['Validator', 'ValidatorAndNominator', 'None'] }, /** - * Lookup101: pallet_offences::pallet::Event + * Lookup100: pallet_offences::pallet::Event **/ PalletOffencesEvent: { _enum: { - Offence: '([u8;16],Bytes)' + Offence: { + kind: '[u8;16]', + timeslot: 'Bytes' + } } }, /** - * Lookup103: pallet_session::pallet::Event + * Lookup102: pallet_session::pallet::Event **/ PalletSessionEvent: { _enum: { - NewSession: 'u32' + NewSession: { + sessionIndex: 'u32' + } } }, /** - * Lookup104: pallet_grandpa::pallet::Event + * Lookup103: pallet_grandpa::pallet::Event **/ PalletGrandpaEvent: { _enum: { - NewAuthorities: 'Vec<(SpFinalityGrandpaAppPublic,u64)>', + NewAuthorities: { + authoritySet: 'Vec<(SpFinalityGrandpaAppPublic,u64)>', + }, Paused: 'Null', Resumed: 'Null' } }, /** - * Lookup107: sp_finality_grandpa::app::Public + * Lookup106: sp_finality_grandpa::app::Public **/ SpFinalityGrandpaAppPublic: 'SpCoreEd25519Public', /** - * Lookup108: sp_core::ed25519::Public + * Lookup107: sp_core::ed25519::Public **/ SpCoreEd25519Public: '[u8;32]', /** - * Lookup109: pallet_im_online::pallet::Event + * Lookup108: pallet_im_online::pallet::Event **/ PalletImOnlineEvent: { _enum: { - HeartbeatReceived: 'PalletImOnlineSr25519AppSr25519Public', + HeartbeatReceived: { + authorityId: 'PalletImOnlineSr25519AppSr25519Public', + }, AllGood: 'Null', - SomeOffline: 'Vec<(AccountId32,PalletStakingExposure)>' + SomeOffline: { + offline: 'Vec<(AccountId32,PalletStakingExposure)>' + } } }, /** - * Lookup110: pallet_im_online::sr25519::app_sr25519::Public + * Lookup109: pallet_im_online::sr25519::app_sr25519::Public **/ PalletImOnlineSr25519AppSr25519Public: 'SpCoreSr25519Public', /** - * Lookup111: sp_core::sr25519::Public + * Lookup110: sp_core::sr25519::Public **/ SpCoreSr25519Public: '[u8;32]', /** - * Lookup114: pallet_staking::Exposure + * Lookup113: pallet_staking::Exposure **/ PalletStakingExposure: { total: 'Compact', @@ -687,14 +718,14 @@ export default { others: 'Vec' }, /** - * Lookup117: pallet_staking::IndividualExposure + * Lookup116: pallet_staking::IndividualExposure **/ PalletStakingIndividualExposure: { who: 'AccountId32', value: 'Compact' }, /** - * Lookup118: pallet_sudo::RawEvent + * Lookup117: pallet_sudo::RawEvent **/ PalletSudoRawEvent: { _enum: { @@ -704,7 +735,7 @@ export default { } }, /** - * Lookup119: polymesh_common_utilities::traits::asset::RawEvent + * Lookup118: polymesh_common_utilities::traits::asset::RawEvent **/ PolymeshCommonUtilitiesAssetRawEvent: { _enum: { @@ -737,7 +768,7 @@ export default { } }, /** - * Lookup121: polymesh_primitives::asset::AssetType + * Lookup120: polymesh_primitives::asset::AssetType **/ PolymeshPrimitivesAssetAssetType: { _enum: { @@ -755,7 +786,7 @@ export default { } }, /** - * Lookup124: polymesh_primitives::asset_identifier::AssetIdentifier + * Lookup123: polymesh_primitives::asset_identifier::AssetIdentifier **/ PolymeshPrimitivesAssetIdentifier: { _enum: { @@ -767,7 +798,7 @@ export default { } }, /** - * Lookup129: polymesh_primitives::document::Document + * Lookup128: polymesh_primitives::document::Document **/ PolymeshPrimitivesDocument: { uri: 'Bytes', @@ -777,7 +808,7 @@ export default { filingDate: 'Option' }, /** - * Lookup131: polymesh_primitives::document_hash::DocumentHash + * Lookup130: polymesh_primitives::document_hash::DocumentHash **/ PolymeshPrimitivesDocumentHash: { _enum: { @@ -793,18 +824,18 @@ export default { } }, /** - * Lookup140: polymesh_primitives::ethereum::EthereumAddress + * Lookup139: polymesh_primitives::ethereum::EthereumAddress **/ PolymeshPrimitivesEthereumEthereumAddress: '[u8;20]', /** - * Lookup143: polymesh_primitives::asset_metadata::AssetMetadataValueDetail + * Lookup142: polymesh_primitives::asset_metadata::AssetMetadataValueDetail **/ PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail: { expire: 'Option', lockStatus: 'PolymeshPrimitivesAssetMetadataAssetMetadataLockStatus' }, /** - * Lookup144: polymesh_primitives::asset_metadata::AssetMetadataLockStatus + * Lookup143: polymesh_primitives::asset_metadata::AssetMetadataLockStatus **/ PolymeshPrimitivesAssetMetadataAssetMetadataLockStatus: { _enum: { @@ -814,7 +845,7 @@ export default { } }, /** - * Lookup147: polymesh_primitives::asset_metadata::AssetMetadataSpec + * Lookup146: polymesh_primitives::asset_metadata::AssetMetadataSpec **/ PolymeshPrimitivesAssetMetadataAssetMetadataSpec: { url: 'Option', @@ -822,7 +853,7 @@ export default { typeDef: 'Option' }, /** - * Lookup154: pallet_corporate_actions::distribution::Event + * Lookup153: pallet_corporate_actions::distribution::Event **/ PalletCorporateActionsDistributionEvent: { _enum: { @@ -833,18 +864,18 @@ export default { } }, /** - * Lookup155: polymesh_primitives::event_only::EventOnly + * Lookup154: polymesh_primitives::event_only::EventOnly **/ PolymeshPrimitivesEventOnly: 'PolymeshPrimitivesIdentityId', /** - * Lookup156: pallet_corporate_actions::CAId + * Lookup155: pallet_corporate_actions::CAId **/ PalletCorporateActionsCaId: { ticker: 'PolymeshPrimitivesTicker', localId: 'u32' }, /** - * Lookup158: pallet_corporate_actions::distribution::Distribution + * Lookup157: pallet_corporate_actions::distribution::Distribution **/ PalletCorporateActionsDistribution: { from: 'PolymeshPrimitivesIdentityIdPortfolioId', @@ -857,7 +888,7 @@ export default { expiresAt: 'Option' }, /** - * Lookup160: polymesh_common_utilities::traits::checkpoint::Event + * Lookup159: polymesh_common_utilities::traits::checkpoint::Event **/ PolymeshCommonUtilitiesCheckpointEvent: { _enum: { @@ -868,7 +899,7 @@ export default { } }, /** - * Lookup163: polymesh_common_utilities::traits::checkpoint::StoredSchedule + * Lookup162: polymesh_common_utilities::traits::checkpoint::StoredSchedule **/ PolymeshCommonUtilitiesCheckpointStoredSchedule: { schedule: 'PolymeshPrimitivesCalendarCheckpointSchedule', @@ -877,27 +908,27 @@ export default { remaining: 'u32' }, /** - * Lookup164: polymesh_primitives::calendar::CheckpointSchedule + * Lookup163: polymesh_primitives::calendar::CheckpointSchedule **/ PolymeshPrimitivesCalendarCheckpointSchedule: { start: 'u64', period: 'PolymeshPrimitivesCalendarCalendarPeriod' }, /** - * Lookup165: polymesh_primitives::calendar::CalendarPeriod + * Lookup164: polymesh_primitives::calendar::CalendarPeriod **/ PolymeshPrimitivesCalendarCalendarPeriod: { unit: 'PolymeshPrimitivesCalendarCalendarUnit', amount: 'u64' }, /** - * Lookup166: polymesh_primitives::calendar::CalendarUnit + * Lookup165: polymesh_primitives::calendar::CalendarUnit **/ PolymeshPrimitivesCalendarCalendarUnit: { _enum: ['Second', 'Minute', 'Hour', 'Day', 'Week', 'Month', 'Year'] }, /** - * Lookup168: pallet_compliance_manager::Event + * Lookup167: pallet_compliance_manager::Event **/ PalletComplianceManagerEvent: { _enum: { @@ -913,7 +944,7 @@ export default { } }, /** - * Lookup169: polymesh_primitives::compliance_manager::ComplianceRequirement + * Lookup168: polymesh_primitives::compliance_manager::ComplianceRequirement **/ PolymeshPrimitivesComplianceManagerComplianceRequirement: { senderConditions: 'Vec', @@ -921,14 +952,14 @@ export default { id: 'u32' }, /** - * Lookup171: polymesh_primitives::condition::Condition + * Lookup170: polymesh_primitives::condition::Condition **/ PolymeshPrimitivesCondition: { conditionType: 'PolymeshPrimitivesConditionConditionType', issuers: 'Vec' }, /** - * Lookup172: polymesh_primitives::condition::ConditionType + * Lookup171: polymesh_primitives::condition::ConditionType **/ PolymeshPrimitivesConditionConditionType: { _enum: { @@ -940,7 +971,7 @@ export default { } }, /** - * Lookup174: polymesh_primitives::condition::TargetIdentity + * Lookup173: polymesh_primitives::condition::TargetIdentity **/ PolymeshPrimitivesConditionTargetIdentity: { _enum: { @@ -949,14 +980,14 @@ export default { } }, /** - * Lookup176: polymesh_primitives::condition::TrustedIssuer + * Lookup175: polymesh_primitives::condition::TrustedIssuer **/ PolymeshPrimitivesConditionTrustedIssuer: { issuer: 'PolymeshPrimitivesIdentityId', trustedFor: 'PolymeshPrimitivesConditionTrustedFor' }, /** - * Lookup177: polymesh_primitives::condition::TrustedFor + * Lookup176: polymesh_primitives::condition::TrustedFor **/ PolymeshPrimitivesConditionTrustedFor: { _enum: { @@ -965,13 +996,13 @@ export default { } }, /** - * Lookup179: polymesh_primitives::identity_claim::ClaimType + * Lookup178: polymesh_primitives::identity_claim::ClaimType **/ PolymeshPrimitivesIdentityClaimClaimType: { _enum: ['Accredited', 'Affiliate', 'BuyLockup', 'SellLockup', 'CustomerDueDiligence', 'KnowYourCustomer', 'Jurisdiction', 'Exempted', 'Blocked', 'InvestorUniqueness', 'NoType', 'InvestorUniquenessV2'] }, /** - * Lookup181: pallet_corporate_actions::Event + * Lookup180: pallet_corporate_actions::Event **/ PalletCorporateActionsEvent: { _enum: { @@ -987,20 +1018,20 @@ export default { } }, /** - * Lookup182: pallet_corporate_actions::TargetIdentities + * Lookup181: pallet_corporate_actions::TargetIdentities **/ PalletCorporateActionsTargetIdentities: { identities: 'Vec', treatment: 'PalletCorporateActionsTargetTreatment' }, /** - * Lookup183: pallet_corporate_actions::TargetTreatment + * Lookup182: pallet_corporate_actions::TargetTreatment **/ PalletCorporateActionsTargetTreatment: { _enum: ['Include', 'Exclude'] }, /** - * Lookup185: pallet_corporate_actions::CorporateAction + * Lookup184: pallet_corporate_actions::CorporateAction **/ PalletCorporateActionsCorporateAction: { kind: 'PalletCorporateActionsCaKind', @@ -1011,20 +1042,20 @@ export default { withholdingTax: 'Vec<(PolymeshPrimitivesIdentityId,Permill)>' }, /** - * Lookup186: pallet_corporate_actions::CAKind + * Lookup185: pallet_corporate_actions::CAKind **/ PalletCorporateActionsCaKind: { _enum: ['PredictableBenefit', 'UnpredictableBenefit', 'IssuerNotice', 'Reorganization', 'Other'] }, /** - * Lookup188: pallet_corporate_actions::RecordDate + * Lookup187: pallet_corporate_actions::RecordDate **/ PalletCorporateActionsRecordDate: { date: 'u64', checkpoint: 'PalletCorporateActionsCaCheckpoint' }, /** - * Lookup189: pallet_corporate_actions::CACheckpoint + * Lookup188: pallet_corporate_actions::CACheckpoint **/ PalletCorporateActionsCaCheckpoint: { _enum: { @@ -1033,7 +1064,7 @@ export default { } }, /** - * Lookup194: pallet_corporate_actions::ballot::Event + * Lookup193: pallet_corporate_actions::ballot::Event **/ PalletCorporateActionsBallotEvent: { _enum: { @@ -1046,21 +1077,21 @@ export default { } }, /** - * Lookup195: pallet_corporate_actions::ballot::BallotTimeRange + * Lookup194: pallet_corporate_actions::ballot::BallotTimeRange **/ PalletCorporateActionsBallotBallotTimeRange: { start: 'u64', end: 'u64' }, /** - * Lookup196: pallet_corporate_actions::ballot::BallotMeta + * Lookup195: pallet_corporate_actions::ballot::BallotMeta **/ PalletCorporateActionsBallotBallotMeta: { title: 'Bytes', motions: 'Vec' }, /** - * Lookup199: pallet_corporate_actions::ballot::Motion + * Lookup198: pallet_corporate_actions::ballot::Motion **/ PalletCorporateActionsBallotMotion: { title: 'Bytes', @@ -1068,14 +1099,14 @@ export default { choices: 'Vec' }, /** - * Lookup205: pallet_corporate_actions::ballot::BallotVote + * Lookup204: pallet_corporate_actions::ballot::BallotVote **/ PalletCorporateActionsBallotBallotVote: { power: 'u128', fallback: 'Option' }, /** - * Lookup208: pallet_pips::RawEvent + * Lookup207: pallet_pips::RawEvent **/ PalletPipsRawEvent: { _enum: { @@ -1102,7 +1133,7 @@ export default { } }, /** - * Lookup209: pallet_pips::Proposer + * Lookup208: pallet_pips::Proposer **/ PalletPipsProposer: { _enum: { @@ -1111,13 +1142,13 @@ export default { } }, /** - * Lookup210: pallet_pips::Committee + * Lookup209: pallet_pips::Committee **/ PalletPipsCommittee: { _enum: ['Technical', 'Upgrade'] }, /** - * Lookup214: pallet_pips::ProposalData + * Lookup213: pallet_pips::ProposalData **/ PalletPipsProposalData: { _enum: { @@ -1126,20 +1157,20 @@ export default { } }, /** - * Lookup215: pallet_pips::ProposalState + * Lookup214: pallet_pips::ProposalState **/ PalletPipsProposalState: { _enum: ['Pending', 'Rejected', 'Scheduled', 'Failed', 'Executed', 'Expired'] }, /** - * Lookup218: pallet_pips::SnapshottedPip + * Lookup217: pallet_pips::SnapshottedPip **/ PalletPipsSnapshottedPip: { id: 'u32', weight: '(bool,u128)' }, /** - * Lookup224: polymesh_common_utilities::traits::portfolio::Event + * Lookup223: polymesh_common_utilities::traits::portfolio::Event **/ PolymeshCommonUtilitiesPortfolioEvent: { _enum: { @@ -1152,7 +1183,7 @@ export default { } }, /** - * Lookup228: pallet_protocol_fee::RawEvent + * Lookup227: pallet_protocol_fee::RawEvent **/ PalletProtocolFeeRawEvent: { _enum: { @@ -1162,19 +1193,40 @@ export default { } }, /** - * Lookup229: polymesh_primitives::PosRatio + * Lookup228: polymesh_primitives::PosRatio **/ PolymeshPrimitivesPosRatio: '(u32,u32)', /** - * Lookup230: pallet_scheduler::pallet::Event + * Lookup229: pallet_scheduler::pallet::Event **/ PalletSchedulerEvent: { _enum: { - Scheduled: '(u32,u32)', - Canceled: '(u32,u32)', - Dispatched: '((u32,u32),Option,Result)' + Scheduled: { + when: 'u32', + index: 'u32', + }, + Canceled: { + when: 'u32', + index: 'u32', + }, + Dispatched: { + task: '(u32,u32)', + id: 'Option', + result: 'Result', + }, + CallLookupFailed: { + task: '(u32,u32)', + id: 'Option', + error: 'FrameSupportScheduleLookupError' + } } }, + /** + * Lookup231: frame_support::traits::schedule::LookupError + **/ + FrameSupportScheduleLookupError: { + _enum: ['Unknown', 'BadFormat'] + }, /** * Lookup232: pallet_settlement::RawEvent **/ @@ -1407,7 +1459,66 @@ export default { } }, /** - * Lookup278: pallet_test_utils::RawEvent + * Lookup278: pallet_contracts::pallet::Event + **/ + PalletContractsEvent: { + _enum: { + Instantiated: { + deployer: 'AccountId32', + contract: 'AccountId32', + }, + Terminated: { + contract: 'AccountId32', + beneficiary: 'AccountId32', + }, + CodeStored: { + codeHash: 'H256', + }, + ContractEmitted: { + contract: 'AccountId32', + data: 'Bytes', + }, + CodeRemoved: { + codeHash: 'H256', + }, + ContractCodeUpdated: { + contract: 'AccountId32', + newCodeHash: 'H256', + oldCodeHash: 'H256' + } + } + }, + /** + * Lookup279: polymesh_contracts::Event + **/ + PolymeshContractsEvent: 'Null', + /** + * Lookup280: pallet_preimage::pallet::Event + **/ + PalletPreimageEvent: { + _enum: { + Noted: { + _alias: { + hash_: 'hash', + }, + hash_: 'H256', + }, + Requested: { + _alias: { + hash_: 'hash', + }, + hash_: 'H256', + }, + Cleared: { + _alias: { + hash_: 'hash', + }, + hash_: 'H256' + } + } + }, + /** + * Lookup281: pallet_test_utils::RawEvent **/ PalletTestUtilsRawEvent: { _enum: { @@ -1417,11 +1528,11 @@ export default { } }, /** - * Lookup279: polymesh_primitives::cdd_id::InvestorUid + * Lookup282: polymesh_primitives::cdd_id::InvestorUid **/ PolymeshPrimitivesCddIdInvestorUid: '[u8;16]', /** - * Lookup280: frame_system::Phase + * Lookup283: frame_system::Phase **/ FrameSystemPhase: { _enum: { @@ -1431,14 +1542,14 @@ export default { } }, /** - * Lookup283: frame_system::LastRuntimeUpgradeInfo + * Lookup286: frame_system::LastRuntimeUpgradeInfo **/ FrameSystemLastRuntimeUpgradeInfo: { specVersion: 'Compact', specName: 'Text' }, /** - * Lookup286: frame_system::pallet::Call + * Lookup289: frame_system::pallet::Call **/ FrameSystemCall: { _enum: { @@ -1457,9 +1568,6 @@ export default { set_code_without_checks: { code: 'Bytes', }, - set_changes_trie_config: { - changesTrieConfig: 'Option', - }, set_storage: { items: 'Vec<(Bytes,Bytes)>', }, @@ -1479,7 +1587,7 @@ export default { } }, /** - * Lookup290: frame_system::limits::BlockWeights + * Lookup293: frame_system::limits::BlockWeights **/ FrameSystemLimitsBlockWeights: { baseBlock: 'u64', @@ -1487,7 +1595,7 @@ export default { perClass: 'FrameSupportWeightsPerDispatchClassWeightsPerClass' }, /** - * Lookup291: frame_support::weights::PerDispatchClass + * Lookup294: frame_support::weights::PerDispatchClass **/ FrameSupportWeightsPerDispatchClassWeightsPerClass: { normal: 'FrameSystemLimitsWeightsPerClass', @@ -1495,7 +1603,7 @@ export default { mandatory: 'FrameSystemLimitsWeightsPerClass' }, /** - * Lookup292: frame_system::limits::WeightsPerClass + * Lookup295: frame_system::limits::WeightsPerClass **/ FrameSystemLimitsWeightsPerClass: { baseExtrinsic: 'u64', @@ -1504,13 +1612,13 @@ export default { reserved: 'Option' }, /** - * Lookup293: frame_system::limits::BlockLength + * Lookup296: frame_system::limits::BlockLength **/ FrameSystemLimitsBlockLength: { max: 'FrameSupportWeightsPerDispatchClassU32' }, /** - * Lookup294: frame_support::weights::PerDispatchClass + * Lookup297: frame_support::weights::PerDispatchClass **/ FrameSupportWeightsPerDispatchClassU32: { normal: 'u32', @@ -1518,14 +1626,14 @@ export default { mandatory: 'u32' }, /** - * Lookup295: frame_support::weights::RuntimeDbWeight + * Lookup298: frame_support::weights::RuntimeDbWeight **/ FrameSupportWeightsRuntimeDbWeight: { read: 'u64', write: 'u64' }, /** - * Lookup296: sp_version::RuntimeVersion + * Lookup299: sp_version::RuntimeVersion **/ SpVersionRuntimeVersion: { specName: 'Text', @@ -1534,20 +1642,21 @@ export default { specVersion: 'u32', implVersion: 'u32', apis: 'Vec<([u8;8],u32)>', - transactionVersion: 'u32' + transactionVersion: 'u32', + stateVersion: 'u8' }, /** - * Lookup301: frame_system::pallet::Error + * Lookup304: frame_system::pallet::Error **/ FrameSystemError: { - _enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount'] + _enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount', 'CallFiltered'] }, /** - * Lookup304: sp_consensus_babe::app::Public + * Lookup307: sp_consensus_babe::app::Public **/ SpConsensusBabeAppPublic: 'SpCoreSr25519Public', /** - * Lookup307: sp_consensus_babe::digests::NextConfigDescriptor + * Lookup310: sp_consensus_babe::digests::NextConfigDescriptor **/ SpConsensusBabeDigestsNextConfigDescriptor: { _enum: { @@ -1559,20 +1668,20 @@ export default { } }, /** - * Lookup309: sp_consensus_babe::AllowedSlots + * Lookup312: sp_consensus_babe::AllowedSlots **/ SpConsensusBabeAllowedSlots: { _enum: ['PrimarySlots', 'PrimaryAndSecondaryPlainSlots', 'PrimaryAndSecondaryVRFSlots'] }, /** - * Lookup313: sp_consensus_babe::BabeEpochConfiguration + * Lookup316: sp_consensus_babe::BabeEpochConfiguration **/ SpConsensusBabeBabeEpochConfiguration: { c: '(u64,u64)', allowedSlots: 'SpConsensusBabeAllowedSlots' }, /** - * Lookup314: pallet_babe::pallet::Call + * Lookup317: pallet_babe::pallet::Call **/ PalletBabeCall: { _enum: { @@ -1590,7 +1699,7 @@ export default { } }, /** - * Lookup315: sp_consensus_slots::EquivocationProof, sp_consensus_babe::app::Public> + * Lookup318: sp_consensus_slots::EquivocationProof, sp_consensus_babe::app::Public> **/ SpConsensusSlotsEquivocationProof: { offender: 'SpConsensusBabeAppPublic', @@ -1599,7 +1708,7 @@ export default { secondHeader: 'SpRuntimeHeader' }, /** - * Lookup316: sp_runtime::generic::header::Header + * Lookup319: sp_runtime::generic::header::Header **/ SpRuntimeHeader: { parentHash: 'H256', @@ -1609,11 +1718,11 @@ export default { digest: 'SpRuntimeDigest' }, /** - * Lookup317: sp_runtime::traits::BlakeTwo256 + * Lookup320: sp_runtime::traits::BlakeTwo256 **/ SpRuntimeBlakeTwo256: 'Null', /** - * Lookup318: sp_session::MembershipProof + * Lookup321: sp_session::MembershipProof **/ SpSessionMembershipProof: { session: 'u32', @@ -1621,13 +1730,13 @@ export default { validatorCount: 'u32' }, /** - * Lookup319: pallet_babe::pallet::Error + * Lookup322: pallet_babe::pallet::Error **/ PalletBabeError: { _enum: ['InvalidEquivocationProof', 'InvalidKeyOwnershipProof', 'DuplicateOffenceReport'] }, /** - * Lookup320: pallet_timestamp::pallet::Call + * Lookup323: pallet_timestamp::pallet::Call **/ PalletTimestampCall: { _enum: { @@ -1637,7 +1746,7 @@ export default { } }, /** - * Lookup323: pallet_indices::pallet::Call + * Lookup326: pallet_indices::pallet::Call **/ PalletIndicesCall: { _enum: { @@ -1668,13 +1777,13 @@ export default { } }, /** - * Lookup324: pallet_indices::pallet::Error + * Lookup327: pallet_indices::pallet::Error **/ PalletIndicesError: { _enum: ['NotAssigned', 'NotOwner', 'InUse', 'NotTransfer', 'Permanent'] }, /** - * Lookup326: pallet_authorship::UncleEntryItem + * Lookup329: pallet_authorship::UncleEntryItem **/ PalletAuthorshipUncleEntryItem: { _enum: { @@ -1683,7 +1792,7 @@ export default { } }, /** - * Lookup327: pallet_authorship::pallet::Call + * Lookup330: pallet_authorship::pallet::Call **/ PalletAuthorshipCall: { _enum: { @@ -1693,13 +1802,13 @@ export default { } }, /** - * Lookup329: pallet_authorship::pallet::Error + * Lookup332: pallet_authorship::pallet::Error **/ PalletAuthorshipError: { _enum: ['InvalidUncleParent', 'UnclesAlreadySet', 'TooManyUncles', 'GenesisUncle', 'TooHighUncle', 'UncleAlreadyIncluded', 'OldUncle'] }, /** - * Lookup331: pallet_balances::BalanceLock + * Lookup334: pallet_balances::BalanceLock **/ PalletBalancesBalanceLock: { id: '[u8;8]', @@ -1707,13 +1816,13 @@ export default { reasons: 'PolymeshCommonUtilitiesBalancesReasons' }, /** - * Lookup332: polymesh_common_utilities::traits::balances::Reasons + * Lookup335: polymesh_common_utilities::traits::balances::Reasons **/ PolymeshCommonUtilitiesBalancesReasons: { _enum: ['Fee', 'Misc', 'All'] }, /** - * Lookup333: pallet_balances::Call + * Lookup336: pallet_balances::Call **/ PalletBalancesCall: { _enum: { @@ -1745,19 +1854,19 @@ export default { } }, /** - * Lookup335: pallet_balances::Error + * Lookup338: pallet_balances::Error **/ PalletBalancesError: { _enum: ['LiquidityRestrictions', 'Overflow', 'InsufficientBalance', 'ExistentialDeposit', 'ReceiverCddMissing'] }, /** - * Lookup337: pallet_transaction_payment::Releases + * Lookup340: pallet_transaction_payment::Releases **/ PalletTransactionPaymentReleases: { _enum: ['V1Ancient', 'V2'] }, /** - * Lookup339: frame_support::weights::WeightToFeeCoefficient + * Lookup342: frame_support::weights::WeightToFeeCoefficient **/ FrameSupportWeightsWeightToFeeCoefficient: { coeffInteger: 'u128', @@ -1766,27 +1875,27 @@ export default { degree: 'u8' }, /** - * Lookup340: polymesh_primitives::identity::DidRecord + * Lookup343: polymesh_primitives::identity::DidRecord **/ PolymeshPrimitivesIdentityDidRecord: { primaryKey: 'Option' }, /** - * Lookup342: pallet_identity::types::Claim1stKey + * Lookup345: pallet_identity::types::Claim1stKey **/ PalletIdentityClaim1stKey: { target: 'PolymeshPrimitivesIdentityId', claimType: 'PolymeshPrimitivesIdentityClaimClaimType' }, /** - * Lookup343: pallet_identity::types::Claim2ndKey + * Lookup346: pallet_identity::types::Claim2ndKey **/ PalletIdentityClaim2ndKey: { issuer: 'PolymeshPrimitivesIdentityId', scope: 'Option' }, /** - * Lookup345: polymesh_primitives::secondary_key::KeyRecord + * Lookup348: polymesh_primitives::secondary_key::KeyRecord **/ PolymeshPrimitivesSecondaryKeyKeyRecord: { _enum: { @@ -1796,7 +1905,7 @@ export default { } }, /** - * Lookup348: polymesh_primitives::authorization::Authorization + * Lookup351: polymesh_primitives::authorization::Authorization **/ PolymeshPrimitivesAuthorization: { authorizationData: 'PolymeshPrimitivesAuthorizationAuthorizationData', @@ -1805,7 +1914,7 @@ export default { authId: 'u64' }, /** - * Lookup351: pallet_identity::Call + * Lookup354: pallet_identity::Call **/ PalletIdentityCall: { _enum: { @@ -1904,42 +2013,42 @@ export default { } }, /** - * Lookup353: polymesh_common_utilities::traits::identity::SecondaryKeyWithAuthV1 + * Lookup356: polymesh_common_utilities::traits::identity::SecondaryKeyWithAuthV1 **/ PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuthV1: { secondaryKey: 'PolymeshPrimitivesSecondaryKeyV1SecondaryKey', authSignature: 'H512' }, /** - * Lookup354: polymesh_primitives::secondary_key::v1::SecondaryKey + * Lookup357: polymesh_primitives::secondary_key::v1::SecondaryKey **/ PolymeshPrimitivesSecondaryKeyV1SecondaryKey: { signer: 'PolymeshPrimitivesSecondaryKeySignatory', permissions: 'PolymeshPrimitivesSecondaryKeyPermissions' }, /** - * Lookup356: polymesh_primitives::investor_zkproof_data::v1::InvestorZKProofData + * Lookup359: polymesh_primitives::investor_zkproof_data::v1::InvestorZKProofData **/ PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData: 'SchnorrkelSignSignature', /** - * Lookup357: schnorrkel::sign::Signature + * Lookup360: schnorrkel::sign::Signature **/ SchnorrkelSignSignature: { r: 'Curve25519DalekRistrettoCompressedRistretto', s: 'Curve25519DalekScalar' }, /** - * Lookup358: curve25519_dalek::ristretto::CompressedRistretto + * Lookup361: curve25519_dalek::ristretto::CompressedRistretto **/ Curve25519DalekRistrettoCompressedRistretto: '[u8;32]', /** - * Lookup359: curve25519_dalek::scalar::Scalar + * Lookup362: curve25519_dalek::scalar::Scalar **/ Curve25519DalekScalar: { bytes: '[u8;32]' }, /** - * Lookup360: confidential_identity::claim_proofs::ScopeClaimProof + * Lookup363: confidential_identity::claim_proofs::ScopeClaimProof **/ ConfidentialIdentityClaimProofsScopeClaimProof: { proofScopeIdWellformed: 'ConfidentialIdentitySignSignature', @@ -1947,26 +2056,26 @@ export default { scopeId: 'Curve25519DalekRistrettoRistrettoPoint' }, /** - * Lookup361: confidential_identity::sign::Signature + * Lookup364: confidential_identity::sign::Signature **/ ConfidentialIdentitySignSignature: { r: 'Curve25519DalekRistrettoCompressedRistretto', s: 'Curve25519DalekScalar' }, /** - * Lookup362: confidential_identity::claim_proofs::ZkProofData + * Lookup365: confidential_identity::claim_proofs::ZkProofData **/ ConfidentialIdentityClaimProofsZkProofData: { - challengeResponses: '[Lookup359;2]', + challengeResponses: '[Lookup362;2]', subtractExpressionsRes: 'Curve25519DalekRistrettoRistrettoPoint', blindedScopeDidHash: 'Curve25519DalekRistrettoRistrettoPoint' }, /** - * Lookup364: curve25519_dalek::ristretto::RistrettoPoint + * Lookup367: curve25519_dalek::ristretto::RistrettoPoint **/ Curve25519DalekRistrettoRistrettoPoint: 'Curve25519DalekEdwardsEdwardsPoint', /** - * Lookup365: curve25519_dalek::edwards::EdwardsPoint + * Lookup368: curve25519_dalek::edwards::EdwardsPoint **/ Curve25519DalekEdwardsEdwardsPoint: { x: 'Curve25519DalekBackendSerialU64FieldFieldElement51', @@ -1975,24 +2084,24 @@ export default { t: 'Curve25519DalekBackendSerialU64FieldFieldElement51' }, /** - * Lookup366: curve25519_dalek::backend::serial::u64::field::FieldElement51 + * Lookup369: curve25519_dalek::backend::serial::u64::field::FieldElement51 **/ Curve25519DalekBackendSerialU64FieldFieldElement51: '[u64;5]', /** - * Lookup369: polymesh_common_utilities::traits::identity::SecondaryKeyWithAuth + * Lookup372: polymesh_common_utilities::traits::identity::SecondaryKeyWithAuth **/ PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth: { secondaryKey: 'PolymeshPrimitivesSecondaryKey', authSignature: 'H512' }, /** - * Lookup370: pallet_identity::Error + * Lookup373: pallet_identity::Error **/ PalletIdentityError: { _enum: ['AlreadyLinked', 'MissingCurrentIdentity', 'Unauthorized', 'InvalidAccountKey', 'UnAuthorizedCddProvider', 'InvalidAuthorizationFromOwner', 'InvalidAuthorizationFromCddProvider', 'NotCddProviderAttestation', 'AuthorizationsNotForSameDids', 'DidMustAlreadyExist', 'CurrentIdentityCannotBeForwarded', 'AuthorizationExpired', 'TargetHasNoCdd', 'AuthorizationHasBeenRevoked', 'InvalidAuthorizationSignature', 'KeyNotAllowed', 'NotPrimaryKey', 'DidDoesNotExist', 'DidAlreadyExists', 'SecondaryKeysContainPrimaryKey', 'FailedToChargeFee', 'NotASigner', 'CannotDecodeSignerAccountId', 'MultiSigHasBalance', 'ConfidentialScopeClaimNotAllowed', 'InvalidScopeClaim', 'ClaimVariantNotAllowed', 'TargetHasNonZeroBalanceAtScopeId', 'CDDIdNotUniqueForIdentity', 'InvalidCDDId', 'ClaimAndProofVersionsDoNotMatch', 'AccountKeyIsBeingUsed', 'CustomScopeTooLong'] }, /** - * Lookup372: polymesh_common_utilities::traits::group::InactiveMember + * Lookup375: polymesh_common_utilities::traits::group::InactiveMember **/ PolymeshCommonUtilitiesGroupInactiveMember: { id: 'PolymeshPrimitivesIdentityId', @@ -2000,7 +2109,7 @@ export default { expiry: 'Option' }, /** - * Lookup373: pallet_group::Call + * Lookup376: pallet_group::Call **/ PalletGroupCall: { _enum: { @@ -2029,13 +2138,13 @@ export default { } }, /** - * Lookup374: pallet_group::Error + * Lookup377: pallet_group::Error **/ PalletGroupError: { _enum: ['OnlyPrimaryKeyAllowed', 'DuplicateMember', 'NoSuchMember', 'LastMemberCannotQuit', 'MissingCurrentIdentity', 'ActiveMembersLimitExceeded', 'ActiveMembersLimitOverflow'] }, /** - * Lookup376: pallet_committee::Call + * Lookup379: pallet_committee::Call **/ PalletCommitteeCall: { _enum: { @@ -2061,7 +2170,7 @@ export default { } }, /** - * Lookup382: pallet_multisig::Call + * Lookup385: pallet_multisig::Call **/ PalletMultisigCall: { _enum: { @@ -2148,7 +2257,7 @@ export default { } }, /** - * Lookup383: pallet_bridge::Call + * Lookup386: pallet_bridge::Call **/ PalletBridgeCall: { _enum: { @@ -2203,7 +2312,7 @@ export default { } }, /** - * Lookup387: pallet_staking::Call + * Lookup390: pallet_staking::Call **/ PalletStakingCall: { _enum: { @@ -2297,7 +2406,7 @@ export default { }, winners: 'Vec', compact: 'PalletStakingCompactAssignments', - score: '[u128;3]', + score: 'SpNposElectionsElectionScore', era: 'u32', size_: 'PalletStakingElectionSize', }, @@ -2307,7 +2416,7 @@ export default { }, winners: 'Vec', compact: 'PalletStakingCompactAssignments', - score: '[u128;3]', + score: 'SpNposElectionsElectionScore', era: 'u32', size_: 'PalletStakingElectionSize', }, @@ -2325,7 +2434,7 @@ export default { } }, /** - * Lookup388: pallet_staking::RewardDestination + * Lookup391: pallet_staking::RewardDestination **/ PalletStakingRewardDestination: { _enum: { @@ -2336,14 +2445,14 @@ export default { } }, /** - * Lookup389: pallet_staking::ValidatorPrefs + * Lookup392: pallet_staking::ValidatorPrefs **/ PalletStakingValidatorPrefs: { commission: 'Compact', blocked: 'bool' }, /** - * Lookup395: pallet_staking::CompactAssignments + * Lookup398: pallet_staking::CompactAssignments **/ PalletStakingCompactAssignments: { votes1: 'Vec<(Compact,Compact)>', @@ -2364,14 +2473,22 @@ export default { votes16: 'Vec<(Compact,[(Compact,Compact);15],Compact)>' }, /** - * Lookup447: pallet_staking::ElectionSize + * Lookup449: sp_npos_elections::ElectionScore + **/ + SpNposElectionsElectionScore: { + minimalStake: 'u128', + sumStake: 'u128', + sumStakeSquared: 'u128' + }, + /** + * Lookup450: pallet_staking::ElectionSize **/ PalletStakingElectionSize: { validators: 'Compact', nominators: 'Compact' }, /** - * Lookup448: pallet_session::pallet::Call + * Lookup451: pallet_session::pallet::Call **/ PalletSessionCall: { _enum: { @@ -2386,7 +2503,7 @@ export default { } }, /** - * Lookup449: polymesh_runtime_develop::runtime::SessionKeys + * Lookup452: polymesh_runtime_develop::runtime::SessionKeys **/ PolymeshRuntimeDevelopRuntimeSessionKeys: { grandpa: 'SpFinalityGrandpaAppPublic', @@ -2395,11 +2512,11 @@ export default { authorityDiscovery: 'SpAuthorityDiscoveryAppPublic' }, /** - * Lookup450: sp_authority_discovery::app::Public + * Lookup453: sp_authority_discovery::app::Public **/ SpAuthorityDiscoveryAppPublic: 'SpCoreSr25519Public', /** - * Lookup451: pallet_grandpa::pallet::Call + * Lookup454: pallet_grandpa::pallet::Call **/ PalletGrandpaCall: { _enum: { @@ -2418,14 +2535,14 @@ export default { } }, /** - * Lookup452: sp_finality_grandpa::EquivocationProof + * Lookup455: sp_finality_grandpa::EquivocationProof **/ SpFinalityGrandpaEquivocationProof: { setId: 'u64', equivocation: 'SpFinalityGrandpaEquivocation' }, /** - * Lookup453: sp_finality_grandpa::Equivocation + * Lookup456: sp_finality_grandpa::Equivocation **/ SpFinalityGrandpaEquivocation: { _enum: { @@ -2434,7 +2551,7 @@ export default { } }, /** - * Lookup454: finality_grandpa::Equivocation, sp_finality_grandpa::app::Signature> + * Lookup457: finality_grandpa::Equivocation, sp_finality_grandpa::app::Signature> **/ FinalityGrandpaEquivocationPrevote: { roundNumber: 'u64', @@ -2443,22 +2560,22 @@ export default { second: '(FinalityGrandpaPrevote,SpFinalityGrandpaAppSignature)' }, /** - * Lookup455: finality_grandpa::Prevote + * Lookup458: finality_grandpa::Prevote **/ FinalityGrandpaPrevote: { targetHash: 'H256', targetNumber: 'u32' }, /** - * Lookup456: sp_finality_grandpa::app::Signature + * Lookup459: sp_finality_grandpa::app::Signature **/ SpFinalityGrandpaAppSignature: 'SpCoreEd25519Signature', /** - * Lookup457: sp_core::ed25519::Signature + * Lookup460: sp_core::ed25519::Signature **/ SpCoreEd25519Signature: '[u8;64]', /** - * Lookup459: finality_grandpa::Equivocation, sp_finality_grandpa::app::Signature> + * Lookup462: finality_grandpa::Equivocation, sp_finality_grandpa::app::Signature> **/ FinalityGrandpaEquivocationPrecommit: { roundNumber: 'u64', @@ -2467,14 +2584,14 @@ export default { second: '(FinalityGrandpaPrecommit,SpFinalityGrandpaAppSignature)' }, /** - * Lookup460: finality_grandpa::Precommit + * Lookup463: finality_grandpa::Precommit **/ FinalityGrandpaPrecommit: { targetHash: 'H256', targetNumber: 'u32' }, /** - * Lookup462: pallet_im_online::pallet::Call + * Lookup465: pallet_im_online::pallet::Call **/ PalletImOnlineCall: { _enum: { @@ -2485,7 +2602,7 @@ export default { } }, /** - * Lookup463: pallet_im_online::Heartbeat + * Lookup466: pallet_im_online::Heartbeat **/ PalletImOnlineHeartbeat: { blockNumber: 'u32', @@ -2495,22 +2612,22 @@ export default { validatorsLen: 'u32' }, /** - * Lookup464: sp_core::offchain::OpaqueNetworkState + * Lookup467: sp_core::offchain::OpaqueNetworkState **/ SpCoreOffchainOpaqueNetworkState: { peerId: 'Bytes', externalAddresses: 'Vec' }, /** - * Lookup468: pallet_im_online::sr25519::app_sr25519::Signature + * Lookup471: pallet_im_online::sr25519::app_sr25519::Signature **/ PalletImOnlineSr25519AppSr25519Signature: 'SpCoreSr25519Signature', /** - * Lookup469: sp_core::sr25519::Signature + * Lookup472: sp_core::sr25519::Signature **/ SpCoreSr25519Signature: '[u8;64]', /** - * Lookup470: pallet_sudo::Call + * Lookup473: pallet_sudo::Call **/ PalletSudoCall: { _enum: { @@ -2534,7 +2651,7 @@ export default { } }, /** - * Lookup471: pallet_asset::Call + * Lookup474: pallet_asset::Call **/ PalletAssetCall: { _enum: { @@ -2649,11 +2766,11 @@ export default { } }, /** - * Lookup474: polymesh_primitives::ethereum::EcdsaSignature + * Lookup477: polymesh_primitives::ethereum::EcdsaSignature **/ PolymeshPrimitivesEthereumEcdsaSignature: '[u8;65]', /** - * Lookup476: pallet_asset::ClassicTickerImport + * Lookup479: pallet_asset::ClassicTickerImport **/ PalletAssetClassicTickerImport: { ethOwner: 'PolymeshPrimitivesEthereumEthereumAddress', @@ -2662,14 +2779,14 @@ export default { isCreated: 'bool' }, /** - * Lookup477: pallet_asset::TickerRegistrationConfig + * Lookup480: pallet_asset::TickerRegistrationConfig **/ PalletAssetTickerRegistrationConfig: { maxTickerLength: 'u8', registrationLength: 'Option' }, /** - * Lookup478: polymesh_primitives::asset_metadata::AssetMetadataKey + * Lookup481: polymesh_primitives::asset_metadata::AssetMetadataKey **/ PolymeshPrimitivesAssetMetadataAssetMetadataKey: { _enum: { @@ -2678,7 +2795,7 @@ export default { } }, /** - * Lookup479: pallet_corporate_actions::distribution::Call + * Lookup482: pallet_corporate_actions::distribution::Call **/ PalletCorporateActionsDistributionCall: { _enum: { @@ -2707,7 +2824,7 @@ export default { } }, /** - * Lookup481: pallet_asset::checkpoint::Call + * Lookup484: pallet_asset::checkpoint::Call **/ PalletAssetCheckpointCall: { _enum: { @@ -2728,7 +2845,7 @@ export default { } }, /** - * Lookup482: pallet_asset::checkpoint::ScheduleSpec + * Lookup485: pallet_asset::checkpoint::ScheduleSpec **/ PalletAssetCheckpointScheduleSpec: { start: 'Option', @@ -2736,7 +2853,7 @@ export default { remaining: 'u32' }, /** - * Lookup483: pallet_compliance_manager::Call + * Lookup486: pallet_compliance_manager::Call **/ PalletComplianceManagerCall: { _enum: { @@ -2777,7 +2894,7 @@ export default { } }, /** - * Lookup484: pallet_corporate_actions::Call + * Lookup487: pallet_corporate_actions::Call **/ PalletCorporateActionsCall: { _enum: { @@ -2830,7 +2947,7 @@ export default { } }, /** - * Lookup486: pallet_corporate_actions::RecordDateSpec + * Lookup489: pallet_corporate_actions::RecordDateSpec **/ PalletCorporateActionsRecordDateSpec: { _enum: { @@ -2840,7 +2957,7 @@ export default { } }, /** - * Lookup489: pallet_corporate_actions::InitiateCorporateActionArgs + * Lookup492: pallet_corporate_actions::InitiateCorporateActionArgs **/ PalletCorporateActionsInitiateCorporateActionArgs: { ticker: 'PolymeshPrimitivesTicker', @@ -2853,7 +2970,7 @@ export default { withholdingTax: 'Option>' }, /** - * Lookup490: pallet_corporate_actions::ballot::Call + * Lookup493: pallet_corporate_actions::ballot::Call **/ PalletCorporateActionsBallotCall: { _enum: { @@ -2885,7 +3002,7 @@ export default { } }, /** - * Lookup491: pallet_pips::Call + * Lookup494: pallet_pips::Call **/ PalletPipsCall: { _enum: { @@ -2946,13 +3063,13 @@ export default { } }, /** - * Lookup494: pallet_pips::SnapshotResult + * Lookup497: pallet_pips::SnapshotResult **/ PalletPipsSnapshotResult: { _enum: ['Approve', 'Reject', 'Skip'] }, /** - * Lookup495: pallet_portfolio::Call + * Lookup498: pallet_portfolio::Call **/ PalletPortfolioCall: { _enum: { @@ -2980,7 +3097,7 @@ export default { } }, /** - * Lookup497: pallet_portfolio::MovePortfolioItem + * Lookup500: pallet_portfolio::MovePortfolioItem **/ PalletPortfolioMovePortfolioItem: { ticker: 'PolymeshPrimitivesTicker', @@ -2988,7 +3105,7 @@ export default { memo: 'Option' }, /** - * Lookup498: pallet_protocol_fee::Call + * Lookup501: pallet_protocol_fee::Call **/ PalletProtocolFeeCall: { _enum: { @@ -3002,13 +3119,13 @@ export default { } }, /** - * Lookup499: polymesh_common_utilities::protocol_fee::ProtocolOp + * Lookup502: polymesh_common_utilities::protocol_fee::ProtocolOp **/ PolymeshCommonUtilitiesProtocolFeeProtocolOp: { _enum: ['AssetRegisterTicker', 'AssetIssue', 'AssetAddDocuments', 'AssetCreateAsset', 'CheckpointCreateSchedule', 'ComplianceManagerAddComplianceRequirement', 'IdentityCddRegisterDid', 'IdentityAddClaim', 'IdentityAddSecondaryKeysWithAuthorization', 'PipsPropose', 'ContractsPutCode', 'CorporateBallotAttachBallot', 'CapitalDistributionDistribute'] }, /** - * Lookup500: pallet_scheduler::pallet::Call + * Lookup503: pallet_scheduler::pallet::Call **/ PalletSchedulerCall: { _enum: { @@ -3016,7 +3133,7 @@ export default { when: 'u32', maybePeriodic: 'Option<(u32,u32)>', priority: 'u8', - call: 'Call', + call: 'FrameSupportScheduleMaybeHashed', }, cancel: { when: 'u32', @@ -3027,7 +3144,7 @@ export default { when: 'u32', maybePeriodic: 'Option<(u32,u32)>', priority: 'u8', - call: 'Call', + call: 'FrameSupportScheduleMaybeHashed', }, cancel_named: { id: 'Bytes', @@ -3036,19 +3153,28 @@ export default { after: 'u32', maybePeriodic: 'Option<(u32,u32)>', priority: 'u8', - call: 'Call', + call: 'FrameSupportScheduleMaybeHashed', }, schedule_named_after: { id: 'Bytes', after: 'u32', maybePeriodic: 'Option<(u32,u32)>', priority: 'u8', - call: 'Call' + call: 'FrameSupportScheduleMaybeHashed' } } }, /** - * Lookup502: pallet_settlement::Call + * Lookup505: frame_support::traits::schedule::MaybeHashed + **/ + FrameSupportScheduleMaybeHashed: { + _enum: { + Value: 'Call', + Hash: 'H256' + } + }, + /** + * Lookup506: pallet_settlement::Call **/ PalletSettlementCall: { _enum: { @@ -3135,7 +3261,7 @@ export default { } }, /** - * Lookup504: pallet_settlement::ReceiptDetails + * Lookup508: pallet_settlement::ReceiptDetails **/ PalletSettlementReceiptDetails: { receiptUid: 'u64', @@ -3145,7 +3271,7 @@ export default { metadata: 'Bytes' }, /** - * Lookup505: sp_runtime::MultiSignature + * Lookup509: sp_runtime::MultiSignature **/ SpRuntimeMultiSignature: { _enum: { @@ -3155,11 +3281,11 @@ export default { } }, /** - * Lookup506: sp_core::ecdsa::Signature + * Lookup510: sp_core::ecdsa::Signature **/ SpCoreEcdsaSignature: '[u8;65]', /** - * Lookup507: pallet_statistics::Call + * Lookup511: pallet_statistics::Call **/ PalletStatisticsCall: { _enum: { @@ -3184,23 +3310,23 @@ export default { } }, /** - * Lookup508: BTreeSet + * Lookup512: BTreeSet **/ BTreeSetStatType: 'Vec', /** - * Lookup509: BTreeSet + * Lookup513: BTreeSet **/ BTreeSetStatUpdate: 'Vec', /** - * Lookup510: BTreeSet + * Lookup514: BTreeSet **/ BTreeSetTransferCondition: 'Vec', /** - * Lookup511: BTreeSet + * Lookup515: BTreeSet **/ BTreeSetIdentityId: 'Vec', /** - * Lookup512: pallet_sto::Call + * Lookup516: pallet_sto::Call **/ PalletStoCall: { _enum: { @@ -3246,14 +3372,14 @@ export default { } }, /** - * Lookup514: pallet_sto::PriceTier + * Lookup518: pallet_sto::PriceTier **/ PalletStoPriceTier: { total: 'u128', price: 'u128' }, /** - * Lookup516: pallet_treasury::Call + * Lookup520: pallet_treasury::Call **/ PalletTreasuryCall: { _enum: { @@ -3266,14 +3392,14 @@ export default { } }, /** - * Lookup518: polymesh_primitives::Beneficiary + * Lookup522: polymesh_primitives::Beneficiary **/ PolymeshPrimitivesBeneficiary: { id: 'PolymeshPrimitivesIdentityId', amount: 'u128' }, /** - * Lookup519: pallet_utility::Call + * Lookup523: pallet_utility::Call **/ PalletUtilityCall: { _enum: { @@ -3294,18 +3420,18 @@ export default { } }, /** - * Lookup521: pallet_utility::UniqueCall + * Lookup525: pallet_utility::UniqueCall **/ PalletUtilityUniqueCall: { nonce: 'u64', call: 'Call' }, /** - * Lookup522: pallet_base::Call + * Lookup526: pallet_base::Call **/ PalletBaseCall: 'Null', /** - * Lookup523: pallet_external_agents::Call + * Lookup527: pallet_external_agents::Call **/ PalletExternalAgentsCall: { _enum: { @@ -3346,7 +3472,7 @@ export default { } }, /** - * Lookup524: pallet_relayer::Call + * Lookup528: pallet_relayer::Call **/ PalletRelayerCall: { _enum: { @@ -3376,7 +3502,7 @@ export default { } }, /** - * Lookup525: pallet_rewards::Call + * Lookup529: pallet_rewards::Call **/ PalletRewardsCall: { _enum: { @@ -3392,7 +3518,7 @@ export default { } }, /** - * Lookup526: pallet_rewards::ItnRewardStatus + * Lookup530: pallet_rewards::ItnRewardStatus **/ PalletRewardsItnRewardStatus: { _enum: { @@ -3401,7 +3527,67 @@ export default { } }, /** - * Lookup527: pallet_test_utils::Call + * Lookup531: polymesh_contracts::Call + **/ + PolymeshContractsCall: { + _enum: { + call: { + contract: 'AccountId32', + value: 'u128', + gasLimit: 'u64', + storageDepositLimit: 'Option', + data: 'Bytes', + }, + instantiate_with_code: { + endowment: 'u128', + gasLimit: 'u64', + storageDepositLimit: 'Option', + code: 'Bytes', + data: 'Bytes', + salt: 'Bytes', + perms: 'PolymeshPrimitivesSecondaryKeyPermissions', + }, + instantiate_with_hash: { + endowment: 'u128', + gasLimit: 'u64', + storageDepositLimit: 'Option', + codeHash: 'H256', + data: 'Bytes', + salt: 'Bytes', + perms: 'PolymeshPrimitivesSecondaryKeyPermissions' + } + } + }, + /** + * Lookup532: pallet_preimage::pallet::Call + **/ + PalletPreimageCall: { + _enum: { + note_preimage: { + bytes: 'Bytes', + }, + unnote_preimage: { + _alias: { + hash_: 'hash', + }, + hash_: 'H256', + }, + request_preimage: { + _alias: { + hash_: 'hash', + }, + hash_: 'H256', + }, + unrequest_preimage: { + _alias: { + hash_: 'hash', + }, + hash_: 'H256' + } + } + }, + /** + * Lookup533: pallet_test_utils::Call **/ PalletTestUtilsCall: { _enum: { @@ -3419,7 +3605,7 @@ export default { } }, /** - * Lookup528: pallet_committee::PolymeshVotes + * Lookup534: pallet_committee::PolymeshVotes **/ PalletCommitteePolymeshVotes: { index: 'u32', @@ -3428,13 +3614,13 @@ export default { expiry: 'PolymeshCommonUtilitiesMaybeBlock' }, /** - * Lookup530: pallet_committee::Error + * Lookup536: pallet_committee::Error **/ PalletCommitteeError: { _enum: ['DuplicateVote', 'NotAMember', 'NoSuchProposal', 'ProposalExpired', 'DuplicateProposal', 'MismatchedVotingIndex', 'InvalidProportion', 'FirstVoteReject', 'ProposalsLimitReached'] }, /** - * Lookup540: pallet_multisig::ProposalDetails + * Lookup546: pallet_multisig::ProposalDetails **/ PalletMultisigProposalDetails: { approvals: 'u64', @@ -3444,19 +3630,19 @@ export default { autoClose: 'bool' }, /** - * Lookup541: pallet_multisig::ProposalStatus + * Lookup547: pallet_multisig::ProposalStatus **/ PalletMultisigProposalStatus: { _enum: ['Invalid', 'ActiveOrExpired', 'ExecutionSuccessful', 'ExecutionFailed', 'Rejected'] }, /** - * Lookup543: pallet_multisig::Error + * Lookup549: pallet_multisig::Error **/ PalletMultisigError: { _enum: ['CddMissing', 'ProposalMissing', 'DecodingError', 'NoSigners', 'RequiredSignaturesOutOfBounds', 'NotASigner', 'NoSuchMultisig', 'NotEnoughSigners', 'NonceOverflow', 'AlreadyVoted', 'AlreadyASigner', 'FailedToChargeFee', 'IdentityNotCreator', 'ChangeNotAllowed', 'SignerAlreadyLinkedToMultisig', 'SignerAlreadyLinkedToIdentity', 'MultisigNotAllowedToLinkToItself', 'MissingCurrentIdentity', 'NotPrimaryKey', 'ProposalAlreadyRejected', 'ProposalExpired', 'ProposalAlreadyExecuted', 'MultisigMissingIdentity', 'FailedToSchedule', 'TooManySigners'] }, /** - * Lookup545: pallet_bridge::BridgeTxDetail + * Lookup551: pallet_bridge::BridgeTxDetail **/ PalletBridgeBridgeTxDetail: { amount: 'u128', @@ -3465,7 +3651,7 @@ export default { txHash: 'H256' }, /** - * Lookup546: pallet_bridge::BridgeTxStatus + * Lookup552: pallet_bridge::BridgeTxStatus **/ PalletBridgeBridgeTxStatus: { _enum: { @@ -3477,13 +3663,13 @@ export default { } }, /** - * Lookup549: pallet_bridge::Error + * Lookup555: pallet_bridge::Error **/ PalletBridgeError: { _enum: ['ControllerNotSet', 'BadCaller', 'BadAdmin', 'NoValidCdd', 'ProposalAlreadyHandled', 'Unauthorized', 'Frozen', 'NotFrozen', 'FrozenTx', 'BridgeLimitReached', 'Overflow', 'DivisionByZero', 'TimelockedTx'] }, /** - * Lookup550: pallet_staking::StakingLedger + * Lookup556: pallet_staking::StakingLedger **/ PalletStakingStakingLedger: { stash: 'AccountId32', @@ -3493,14 +3679,14 @@ export default { claimedRewards: 'Vec' }, /** - * Lookup552: pallet_staking::UnlockChunk + * Lookup558: pallet_staking::UnlockChunk **/ PalletStakingUnlockChunk: { value: 'Compact', era: 'Compact' }, /** - * Lookup553: pallet_staking::Nominations + * Lookup559: pallet_staking::Nominations **/ PalletStakingNominations: { targets: 'Vec', @@ -3508,27 +3694,27 @@ export default { suppressed: 'bool' }, /** - * Lookup554: pallet_staking::ActiveEraInfo + * Lookup560: pallet_staking::ActiveEraInfo **/ PalletStakingActiveEraInfo: { index: 'u32', start: 'Option' }, /** - * Lookup556: pallet_staking::EraRewardPoints + * Lookup562: pallet_staking::EraRewardPoints **/ PalletStakingEraRewardPoints: { total: 'u32', individual: 'BTreeMap' }, /** - * Lookup559: pallet_staking::Forcing + * Lookup565: pallet_staking::Forcing **/ PalletStakingForcing: { _enum: ['NotForcing', 'ForceNew', 'ForceNone', 'ForceAlways'] }, /** - * Lookup561: pallet_staking::UnappliedSlash + * Lookup567: pallet_staking::UnappliedSlash **/ PalletStakingUnappliedSlash: { validator: 'AccountId32', @@ -3538,7 +3724,7 @@ export default { payout: 'u128' }, /** - * Lookup565: pallet_staking::slashing::SlashingSpans + * Lookup571: pallet_staking::slashing::SlashingSpans **/ PalletStakingSlashingSlashingSpans: { spanIndex: 'u32', @@ -3547,14 +3733,14 @@ export default { prior: 'Vec' }, /** - * Lookup566: pallet_staking::slashing::SpanRecord + * Lookup572: pallet_staking::slashing::SpanRecord **/ PalletStakingSlashingSpanRecord: { slashed: 'u128', paidOut: 'u128' }, /** - * Lookup567: pallet_staking::ElectionResult + * Lookup573: pallet_staking::ElectionResult **/ PalletStakingElectionResult: { electedStashes: 'Vec', @@ -3562,7 +3748,7 @@ export default { compute: 'PalletStakingElectionCompute' }, /** - * Lookup568: pallet_staking::ElectionStatus + * Lookup574: pallet_staking::ElectionStatus **/ PalletStakingElectionStatus: { _enum: { @@ -3571,43 +3757,43 @@ export default { } }, /** - * Lookup569: pallet_staking::PermissionedIdentityPrefs + * Lookup575: pallet_staking::PermissionedIdentityPrefs **/ PalletStakingPermissionedIdentityPrefs: { intendedCount: 'u32', runningCount: 'u32' }, /** - * Lookup570: pallet_staking::Releases + * Lookup576: pallet_staking::Releases **/ PalletStakingReleases: { _enum: ['V1_0_0Ancient', 'V2_0_0', 'V3_0_0', 'V4_0_0', 'V5_0_0', 'V6_0_0', 'V6_0_1', 'V7_0_0'] }, /** - * Lookup571: pallet_staking::Error + * Lookup577: pallet_staking::Error **/ PalletStakingError: { _enum: ['NotController', 'NotStash', 'AlreadyBonded', 'AlreadyPaired', 'EmptyTargets', 'InvalidSlashIndex', 'InsufficientValue', 'NoMoreChunks', 'NoUnlockChunk', 'FundedTarget', 'InvalidEraToReward', 'NotSortedAndUnique', 'AlreadyClaimed', 'OffchainElectionEarlySubmission', 'OffchainElectionWeakSubmission', 'SnapshotUnavailable', 'OffchainElectionBogusWinnerCount', 'OffchainElectionBogusWinner', 'OffchainElectionBogusCompact', 'OffchainElectionBogusNominator', 'OffchainElectionBogusNomination', 'OffchainElectionSlashedNomination', 'OffchainElectionBogusSelfVote', 'OffchainElectionBogusEdge', 'OffchainElectionBogusScore', 'OffchainElectionBogusElectionSize', 'CallNotAllowed', 'IncorrectSlashingSpans', 'AlreadyExists', 'NotExists', 'NoChange', 'InvalidValidatorIdentity', 'InvalidValidatorCommission', 'StashIdentityDoesNotExist', 'StashIdentityNotPermissioned', 'StashIdentityNotCDDed', 'HitIntendedValidatorCount', 'IntendedCountIsExceedingConsensusLimit', 'BondTooSmall', 'BadState', 'TooManyTargets', 'BadTarget'] }, /** - * Lookup572: sp_staking::offence::OffenceDetails + * Lookup578: sp_staking::offence::OffenceDetails **/ SpStakingOffenceOffenceDetails: { offender: '(AccountId32,PalletStakingExposure)', reporters: 'Vec' }, /** - * Lookup577: sp_core::crypto::KeyTypeId + * Lookup583: sp_core::crypto::KeyTypeId **/ SpCoreCryptoKeyTypeId: '[u8;4]', /** - * Lookup578: pallet_session::pallet::Error + * Lookup584: pallet_session::pallet::Error **/ PalletSessionError: { _enum: ['InvalidProof', 'NoAssociatedValidatorId', 'DuplicatedKey', 'NoKeys', 'NoAccount'] }, /** - * Lookup579: pallet_grandpa::StoredState + * Lookup585: pallet_grandpa::StoredState **/ PalletGrandpaStoredState: { _enum: { @@ -3624,7 +3810,7 @@ export default { } }, /** - * Lookup580: pallet_grandpa::StoredPendingChange + * Lookup586: pallet_grandpa::StoredPendingChange **/ PalletGrandpaStoredPendingChange: { scheduledAt: 'u32', @@ -3633,39 +3819,39 @@ export default { forced: 'Option' }, /** - * Lookup582: pallet_grandpa::pallet::Error + * Lookup588: pallet_grandpa::pallet::Error **/ PalletGrandpaError: { _enum: ['PauseFailed', 'ResumeFailed', 'ChangePending', 'TooSoon', 'InvalidKeyOwnershipProof', 'InvalidEquivocationProof', 'DuplicateOffenceReport'] }, /** - * Lookup586: pallet_im_online::BoundedOpaqueNetworkState + * Lookup592: pallet_im_online::BoundedOpaqueNetworkState **/ PalletImOnlineBoundedOpaqueNetworkState: { peerId: 'Bytes', externalAddresses: 'Vec' }, /** - * Lookup590: pallet_im_online::pallet::Error + * Lookup596: pallet_im_online::pallet::Error **/ PalletImOnlineError: { _enum: ['InvalidKey', 'DuplicatedHeartbeat'] }, /** - * Lookup591: pallet_sudo::Error + * Lookup598: pallet_sudo::Error **/ PalletSudoError: { _enum: ['RequireSudo'] }, /** - * Lookup592: pallet_asset::TickerRegistration + * Lookup599: pallet_asset::TickerRegistration **/ PalletAssetTickerRegistration: { owner: 'PolymeshPrimitivesIdentityId', expiry: 'Option' }, /** - * Lookup593: pallet_asset::SecurityToken + * Lookup600: pallet_asset::SecurityToken **/ PalletAssetSecurityToken: { totalSupply: 'u128', @@ -3674,69 +3860,69 @@ export default { assetType: 'PolymeshPrimitivesAssetAssetType' }, /** - * Lookup597: pallet_asset::AssetOwnershipRelation + * Lookup604: pallet_asset::AssetOwnershipRelation **/ PalletAssetAssetOwnershipRelation: { _enum: ['NotOwned', 'TickerOwned', 'AssetOwned'] }, /** - * Lookup599: pallet_asset::ClassicTickerRegistration + * Lookup606: pallet_asset::ClassicTickerRegistration **/ PalletAssetClassicTickerRegistration: { ethOwner: 'PolymeshPrimitivesEthereumEthereumAddress', isCreated: 'bool' }, /** - * Lookup605: pallet_asset::Error + * Lookup612: pallet_asset::Error **/ PalletAssetError: { _enum: ['Unauthorized', 'AlreadyArchived', 'AlreadyUnArchived', 'ExtensionAlreadyPresent', 'AssetAlreadyCreated', 'TickerTooLong', 'TickerNotAscii', 'TickerAlreadyRegistered', 'TotalSupplyAboveLimit', 'NoSuchAsset', 'AlreadyFrozen', 'NotAnOwner', 'BalanceOverflow', 'TotalSupplyOverflow', 'InvalidGranularity', 'NotFrozen', 'InvalidTransfer', 'InsufficientBalance', 'AssetAlreadyDivisible', 'MaximumTMExtensionLimitReached', 'IncompatibleExtensionVersion', 'InvalidEthereumSignature', 'NoSuchClassicTicker', 'TickerRegistrationExpired', 'SenderSameAsReceiver', 'NoSuchDoc', 'MaxLengthOfAssetNameExceeded', 'FundingRoundNameMaxLengthExceeded', 'InvalidAssetIdentifier', 'InvestorUniquenessClaimNotAllowed', 'InvalidCustomAssetTypeId', 'AssetMetadataNameMaxLengthExceeded', 'AssetMetadataValueMaxLengthExceeded', 'AssetMetadataTypeDefMaxLengthExceeded', 'AssetMetadataKeyIsMissing', 'AssetMetadataValueIsLocked', 'AssetMetadataLocalKeyAlreadyExists', 'AssetMetadataGlobalKeyAlreadyExists'] }, /** - * Lookup608: pallet_corporate_actions::distribution::Error + * Lookup615: pallet_corporate_actions::distribution::Error **/ PalletCorporateActionsDistributionError: { - _enum: ['CANotBenefit', 'AlreadyExists', 'ExpiryBeforePayment', 'DistributingAsset', 'HolderAlreadyPaid', 'NoSuchDistribution', 'CannotClaimBeforeStart', 'CannotClaimAfterExpiry', 'BalancePerShareProductOverflowed', 'NotDistributionCreator', 'AlreadyReclaimed', 'NotExpired', 'DistributionStarted', 'InsufficientRemainingAmount'] + _enum: ['CANotBenefit', 'AlreadyExists', 'ExpiryBeforePayment', 'HolderAlreadyPaid', 'NoSuchDistribution', 'CannotClaimBeforeStart', 'CannotClaimAfterExpiry', 'BalancePerShareProductOverflowed', 'NotDistributionCreator', 'AlreadyReclaimed', 'NotExpired', 'DistributionStarted', 'InsufficientRemainingAmount', 'DistributionAmountIsZero', 'DistributionPerShareIsZero'] }, /** - * Lookup615: pallet_asset::checkpoint::Error + * Lookup622: pallet_asset::checkpoint::Error **/ PalletAssetCheckpointError: { _enum: ['NoSuchSchedule', 'ScheduleNotRemovable', 'FailedToComputeNextCheckpoint', 'ScheduleDurationTooShort', 'SchedulesTooComplex'] }, /** - * Lookup616: polymesh_primitives::compliance_manager::AssetCompliance + * Lookup623: polymesh_primitives::compliance_manager::AssetCompliance **/ PolymeshPrimitivesComplianceManagerAssetCompliance: { paused: 'bool', requirements: 'Vec' }, /** - * Lookup618: pallet_compliance_manager::Error + * Lookup625: pallet_compliance_manager::Error **/ PalletComplianceManagerError: { _enum: ['Unauthorized', 'DidNotExist', 'InvalidComplianceRequirementId', 'IncorrectOperationOnTrustedIssuer', 'DuplicateComplianceRequirements', 'ComplianceRequirementTooComplex'] }, /** - * Lookup621: pallet_corporate_actions::Error + * Lookup628: pallet_corporate_actions::Error **/ PalletCorporateActionsError: { _enum: ['AuthNotCAATransfer', 'DetailsTooLong', 'DuplicateDidTax', 'TooManyDidTaxes', 'TooManyTargetIds', 'NoSuchCheckpointId', 'NoSuchCA', 'NoRecordDate', 'RecordDateAfterStart', 'DeclDateAfterRecordDate', 'DeclDateInFuture', 'NotTargetedByCA'] }, /** - * Lookup623: pallet_corporate_actions::ballot::Error + * Lookup630: pallet_corporate_actions::ballot::Error **/ PalletCorporateActionsBallotError: { _enum: ['CANotNotice', 'AlreadyExists', 'NoSuchBallot', 'StartAfterEnd', 'NowAfterEnd', 'NumberOfChoicesOverflow', 'VotingAlreadyStarted', 'VotingNotStarted', 'VotingAlreadyEnded', 'WrongVoteCount', 'InsufficientVotes', 'NoSuchRCVFallback', 'RCVSelfCycle', 'RCVNotAllowed'] }, /** - * Lookup624: pallet_permissions::Error + * Lookup631: pallet_permissions::Error **/ PalletPermissionsError: { _enum: ['UnauthorizedCaller'] }, /** - * Lookup625: pallet_pips::PipsMetadata + * Lookup632: pallet_pips::PipsMetadata **/ PalletPipsPipsMetadata: { id: 'u32', @@ -3747,14 +3933,14 @@ export default { expiry: 'PolymeshCommonUtilitiesMaybeBlock' }, /** - * Lookup627: pallet_pips::DepositInfo + * Lookup634: pallet_pips::DepositInfo **/ PalletPipsDepositInfo: { owner: 'AccountId32', amount: 'u128' }, /** - * Lookup628: pallet_pips::Pip + * Lookup635: pallet_pips::Pip **/ PalletPipsPip: { id: 'u32', @@ -3763,7 +3949,7 @@ export default { proposer: 'PalletPipsProposer' }, /** - * Lookup629: pallet_pips::VotingResult + * Lookup636: pallet_pips::VotingResult **/ PalletPipsVotingResult: { ayesCount: 'u32', @@ -3772,11 +3958,11 @@ export default { naysStake: 'u128' }, /** - * Lookup630: pallet_pips::Vote + * Lookup637: pallet_pips::Vote **/ PalletPipsVote: '(bool,u128)', /** - * Lookup631: pallet_pips::SnapshotMetadata + * Lookup638: pallet_pips::SnapshotMetadata **/ PalletPipsSnapshotMetadata: { createdAt: 'u32', @@ -3784,39 +3970,39 @@ export default { id: 'u32' }, /** - * Lookup633: pallet_pips::Error + * Lookup640: pallet_pips::Error **/ PalletPipsError: { _enum: ['RescheduleNotByReleaseCoordinator', 'NotFromCommunity', 'NotByCommittee', 'TooManyActivePips', 'IncorrectDeposit', 'InsufficientDeposit', 'NoSuchProposal', 'NotACommitteeMember', 'InvalidFutureBlockNumber', 'NumberOfVotesExceeded', 'StakeAmountOfVotesExceeded', 'MissingCurrentIdentity', 'IncorrectProposalState', 'CannotSkipPip', 'SnapshotResultTooLarge', 'SnapshotIdMismatch', 'ScheduledProposalDoesntExist', 'ProposalNotInScheduledState'] }, /** - * Lookup639: pallet_portfolio::Error + * Lookup646: pallet_portfolio::Error **/ PalletPortfolioError: { _enum: ['PortfolioDoesNotExist', 'InsufficientPortfolioBalance', 'DestinationIsSamePortfolio', 'PortfolioNameAlreadyInUse', 'SecondaryKeyNotAuthorizedForPortfolio', 'UnauthorizedCustodian', 'InsufficientTokensLocked', 'PortfolioNotEmpty', 'DifferentIdentityPortfolios'] }, /** - * Lookup640: pallet_protocol_fee::Error + * Lookup647: pallet_protocol_fee::Error **/ PalletProtocolFeeError: { _enum: ['InsufficientAccountBalance', 'UnHandledImbalances', 'InsufficientSubsidyBalance'] }, /** - * Lookup643: pallet_scheduler::ScheduledV2 + * Lookup650: pallet_scheduler::ScheduledV3, BlockNumber, polymesh_runtime_develop::runtime::OriginCaller, sp_core::crypto::AccountId32> **/ - PalletSchedulerScheduledV2: { + PalletSchedulerScheduledV3: { maybeId: 'Option', priority: 'u8', - call: 'Call', + call: 'FrameSupportScheduleMaybeHashed', maybePeriodic: 'Option<(u32,u32)>', origin: 'PolymeshRuntimeDevelopRuntimeOriginCaller' }, /** - * Lookup644: polymesh_runtime_develop::runtime::OriginCaller + * Lookup651: polymesh_runtime_develop::runtime::OriginCaller **/ PolymeshRuntimeDevelopRuntimeOriginCaller: { _enum: { - system: 'FrameSystemRawOrigin', + system: 'FrameSupportDispatchRawOrigin', __Unused1: 'Null', __Unused2: 'Null', __Unused3: 'Null', @@ -3833,9 +4019,9 @@ export default { } }, /** - * Lookup645: frame_system::RawOrigin + * Lookup652: frame_support::dispatch::RawOrigin **/ - FrameSystemRawOrigin: { + FrameSupportDispatchRawOrigin: { _enum: { Root: 'Null', Signed: 'AccountId32', @@ -3843,48 +4029,42 @@ export default { } }, /** - * Lookup646: pallet_committee::RawOrigin + * Lookup653: pallet_committee::RawOrigin **/ PalletCommitteeRawOriginInstance1: { _enum: ['Endorsed'] }, /** - * Lookup647: pallet_committee::RawOrigin + * Lookup654: pallet_committee::RawOrigin **/ PalletCommitteeRawOriginInstance3: { _enum: ['Endorsed'] }, /** - * Lookup648: pallet_committee::RawOrigin + * Lookup655: pallet_committee::RawOrigin **/ PalletCommitteeRawOriginInstance4: { _enum: ['Endorsed'] }, /** - * Lookup649: sp_core::Void + * Lookup656: sp_core::Void **/ SpCoreVoid: 'Null', /** - * Lookup650: pallet_scheduler::Releases - **/ - PalletSchedulerReleases: { - _enum: ['V1', 'V2'] - }, - /** - * Lookup651: pallet_scheduler::pallet::Error + * Lookup657: pallet_scheduler::pallet::Error **/ PalletSchedulerError: { _enum: ['FailedToSchedule', 'NotFound', 'TargetBlockNumberInPast', 'RescheduleNoChange'] }, /** - * Lookup652: pallet_settlement::Venue + * Lookup658: pallet_settlement::Venue **/ PalletSettlementVenue: { creator: 'PolymeshPrimitivesIdentityId', venueType: 'PalletSettlementVenueType' }, /** - * Lookup655: pallet_settlement::Instruction + * Lookup661: pallet_settlement::Instruction **/ PalletSettlementInstruction: { instructionId: 'u64', @@ -3896,13 +4076,13 @@ export default { valueDate: 'Option' }, /** - * Lookup656: pallet_settlement::InstructionStatus + * Lookup662: pallet_settlement::InstructionStatus **/ PalletSettlementInstructionStatus: { _enum: ['Unknown', 'Pending', 'Failed'] }, /** - * Lookup658: pallet_settlement::LegStatus + * Lookup664: pallet_settlement::LegStatus **/ PalletSettlementLegStatus: { _enum: { @@ -3912,124 +4092,328 @@ export default { } }, /** - * Lookup660: pallet_settlement::AffirmationStatus + * Lookup666: pallet_settlement::AffirmationStatus **/ PalletSettlementAffirmationStatus: { _enum: ['Unknown', 'Pending', 'Affirmed'] }, /** - * Lookup664: pallet_settlement::Error + * Lookup670: pallet_settlement::Error **/ PalletSettlementError: { _enum: ['InvalidVenue', 'Unauthorized', 'NoPendingAffirm', 'InstructionNotAffirmed', 'InstructionNotPending', 'InstructionNotFailed', 'LegNotPending', 'UnauthorizedSigner', 'ReceiptAlreadyClaimed', 'ReceiptNotClaimed', 'UnauthorizedVenue', 'FailedToLockTokens', 'InstructionFailed', 'InstructionDatesInvalid', 'InstructionSettleBlockPassed', 'InvalidSignature', 'SameSenderReceiver', 'PortfolioMismatch', 'SettleOnPastBlock', 'NoPortfolioProvided', 'UnexpectedAffirmationStatus', 'FailedToSchedule', 'LegCountTooSmall', 'UnknownInstruction', 'InstructionHasTooManyLegs'] }, /** - * Lookup666: polymesh_primitives::statistics::Stat1stKey + * Lookup672: polymesh_primitives::statistics::Stat1stKey **/ PolymeshPrimitivesStatisticsStat1stKey: { asset: 'PolymeshPrimitivesStatisticsAssetScope', statType: 'PolymeshPrimitivesStatisticsStatType' }, /** - * Lookup667: polymesh_primitives::transfer_compliance::AssetTransferCompliance + * Lookup673: polymesh_primitives::transfer_compliance::AssetTransferCompliance **/ PolymeshPrimitivesTransferComplianceAssetTransferCompliance: { paused: 'bool', requirements: 'BTreeSetTransferCondition' }, /** - * Lookup670: pallet_statistics::Error + * Lookup676: pallet_statistics::Error **/ PalletStatisticsError: { _enum: ['InvalidTransfer', 'StatTypeMissing', 'StatTypeNeededByTransferCondition', 'CannotRemoveStatTypeInUse', 'StatTypeLimitReached', 'TransferConditionLimitReached'] }, /** - * Lookup672: pallet_sto::Error + * Lookup678: pallet_sto::Error **/ PalletStoError: { _enum: ['Unauthorized', 'Overflow', 'InsufficientTokensRemaining', 'FundraiserNotFound', 'FundraiserNotLive', 'FundraiserClosed', 'FundraiserExpired', 'InvalidVenue', 'InvalidPriceTiers', 'InvalidOfferingWindow', 'MaxPriceExceeded', 'InvestmentAmountTooLow'] }, /** - * Lookup673: pallet_treasury::Error + * Lookup679: pallet_treasury::Error **/ PalletTreasuryError: { _enum: ['InsufficientBalance', 'InvalidIdentity'] }, /** - * Lookup674: pallet_utility::Error + * Lookup680: pallet_utility::Error **/ PalletUtilityError: { _enum: ['InvalidSignature', 'TargetCddMissing', 'InvalidNonce'] }, /** - * Lookup675: pallet_base::Error + * Lookup681: pallet_base::Error **/ PalletBaseError: { _enum: ['TooLong', 'CounterOverflow'] }, /** - * Lookup677: pallet_external_agents::Error + * Lookup683: pallet_external_agents::Error **/ PalletExternalAgentsError: { _enum: ['NoSuchAG', 'UnauthorizedAgent', 'AlreadyAnAgent', 'NotAnAgent', 'RemovingLastFullAgent', 'SecondaryKeyNotAuthorizedForAsset'] }, /** - * Lookup678: pallet_relayer::Subsidy + * Lookup684: pallet_relayer::Subsidy **/ PalletRelayerSubsidy: { payingKey: 'AccountId32', remaining: 'u128' }, /** - * Lookup679: pallet_relayer::Error + * Lookup685: pallet_relayer::Error **/ PalletRelayerError: { _enum: ['UserKeyCddMissing', 'PayingKeyCddMissing', 'NoPayingKey', 'NotPayingKey', 'NotAuthorizedForPayingKey', 'NotAuthorizedForUserKey', 'Overflow'] }, /** - * Lookup680: pallet_rewards::Error + * Lookup686: pallet_rewards::Error **/ PalletRewardsError: { _enum: ['UnknownItnAddress', 'ItnRewardAlreadyClaimed', 'InvalidSignature', 'UnableToCovertBalance'] }, /** - * Lookup681: pallet_test_utils::Error + * Lookup687: pallet_contracts::wasm::PrefabWasmModule + **/ + PalletContractsWasmPrefabWasmModule: { + instructionWeightsVersion: 'Compact', + initial: 'Compact', + maximum: 'Compact', + code: 'Bytes' + }, + /** + * Lookup688: pallet_contracts::wasm::OwnerInfo + **/ + PalletContractsWasmOwnerInfo: { + owner: 'AccountId32', + deposit: 'Compact', + refcount: 'Compact' + }, + /** + * Lookup689: pallet_contracts::storage::RawContractInfo + **/ + PalletContractsStorageRawContractInfo: { + trieId: 'Bytes', + codeHash: 'H256', + storageDeposit: 'u128' + }, + /** + * Lookup691: pallet_contracts::storage::DeletedContract + **/ + PalletContractsStorageDeletedContract: { + trieId: 'Bytes' + }, + /** + * Lookup692: pallet_contracts::schedule::Schedule + **/ + PalletContractsSchedule: { + limits: 'PalletContractsScheduleLimits', + instructionWeights: 'PalletContractsScheduleInstructionWeights', + hostFnWeights: 'PalletContractsScheduleHostFnWeights' + }, + /** + * Lookup693: pallet_contracts::schedule::Limits + **/ + PalletContractsScheduleLimits: { + eventTopics: 'u32', + stackHeight: 'Option', + globals: 'u32', + parameters: 'u32', + memoryPages: 'u32', + tableSize: 'u32', + brTableSize: 'u32', + subjectLen: 'u32', + callDepth: 'u32', + payloadLen: 'u32', + codeLen: 'u32' + }, + /** + * Lookup694: pallet_contracts::schedule::InstructionWeights + **/ + PalletContractsScheduleInstructionWeights: { + _alias: { + r_if: 'r#if' + }, + version: 'u32', + i64const: 'u32', + i64load: 'u32', + i64store: 'u32', + select: 'u32', + r_if: 'u32', + br: 'u32', + brIf: 'u32', + brTable: 'u32', + brTablePerEntry: 'u32', + call: 'u32', + callIndirect: 'u32', + callIndirectPerParam: 'u32', + localGet: 'u32', + localSet: 'u32', + localTee: 'u32', + globalGet: 'u32', + globalSet: 'u32', + memoryCurrent: 'u32', + memoryGrow: 'u32', + i64clz: 'u32', + i64ctz: 'u32', + i64popcnt: 'u32', + i64eqz: 'u32', + i64extendsi32: 'u32', + i64extendui32: 'u32', + i32wrapi64: 'u32', + i64eq: 'u32', + i64ne: 'u32', + i64lts: 'u32', + i64ltu: 'u32', + i64gts: 'u32', + i64gtu: 'u32', + i64les: 'u32', + i64leu: 'u32', + i64ges: 'u32', + i64geu: 'u32', + i64add: 'u32', + i64sub: 'u32', + i64mul: 'u32', + i64divs: 'u32', + i64divu: 'u32', + i64rems: 'u32', + i64remu: 'u32', + i64and: 'u32', + i64or: 'u32', + i64xor: 'u32', + i64shl: 'u32', + i64shrs: 'u32', + i64shru: 'u32', + i64rotl: 'u32', + i64rotr: 'u32' + }, + /** + * Lookup695: pallet_contracts::schedule::HostFnWeights + **/ + PalletContractsScheduleHostFnWeights: { + _alias: { + r_return: 'r#return' + }, + caller: 'u64', + isContract: 'u64', + codeHash: 'u64', + ownCodeHash: 'u64', + callerIsOrigin: 'u64', + address: 'u64', + gasLeft: 'u64', + balance: 'u64', + valueTransferred: 'u64', + minimumBalance: 'u64', + blockNumber: 'u64', + now: 'u64', + weightToFee: 'u64', + gas: 'u64', + input: 'u64', + inputPerByte: 'u64', + r_return: 'u64', + returnPerByte: 'u64', + terminate: 'u64', + random: 'u64', + depositEvent: 'u64', + depositEventPerTopic: 'u64', + depositEventPerByte: 'u64', + debugMessage: 'u64', + setStorage: 'u64', + setStoragePerNewByte: 'u64', + setStoragePerOldByte: 'u64', + setCodeHash: 'u64', + clearStorage: 'u64', + clearStoragePerByte: 'u64', + containsStorage: 'u64', + containsStoragePerByte: 'u64', + getStorage: 'u64', + getStoragePerByte: 'u64', + takeStorage: 'u64', + takeStoragePerByte: 'u64', + transfer: 'u64', + call: 'u64', + delegateCall: 'u64', + callTransferSurcharge: 'u64', + callPerClonedByte: 'u64', + instantiate: 'u64', + instantiateTransferSurcharge: 'u64', + instantiatePerSaltByte: 'u64', + hashSha2256: 'u64', + hashSha2256PerByte: 'u64', + hashKeccak256: 'u64', + hashKeccak256PerByte: 'u64', + hashBlake2256: 'u64', + hashBlake2256PerByte: 'u64', + hashBlake2128: 'u64', + hashBlake2128PerByte: 'u64', + ecdsaRecover: 'u64', + ecdsaToEthAddress: 'u64' + }, + /** + * Lookup696: pallet_contracts::pallet::Error + **/ + PalletContractsError: { + _enum: ['InvalidScheduleVersion', 'InvalidCallFlags', 'OutOfGas', 'OutputBufferTooSmall', 'TransferFailed', 'MaxCallDepthReached', 'ContractNotFound', 'CodeTooLarge', 'CodeNotFound', 'OutOfBounds', 'DecodingFailed', 'ContractTrapped', 'ValueTooLarge', 'TerminatedWhileReentrant', 'InputForwarded', 'RandomSubjectTooLong', 'TooManyTopics', 'DuplicateTopics', 'NoChainExtension', 'DeletionQueueFull', 'DuplicateContract', 'TerminatedInConstructor', 'DebugMessageInvalidUTF8', 'ReentranceDenied', 'StorageDepositNotEnoughFunds', 'StorageDepositLimitExhausted', 'CodeInUse', 'ContractReverted', 'CodeRejected'] + }, + /** + * Lookup697: polymesh_contracts::Error + **/ + PolymeshContractsError: { + _enum: ['RuntimeCallNotFound', 'DataLeftAfterDecoding', 'InLenTooLarge', 'InstantiatorWithNoIdentity'] + }, + /** + * Lookup698: pallet_preimage::RequestStatus + **/ + PalletPreimageRequestStatus: { + _enum: { + Unrequested: 'Option<(AccountId32,u128)>', + Requested: 'u32' + } + }, + /** + * Lookup701: pallet_preimage::pallet::Error + **/ + PalletPreimageError: { + _enum: ['TooLarge', 'AlreadyNoted', 'NotAuthorized', 'NotNoted', 'Requested', 'NotRequested'] + }, + /** + * Lookup702: pallet_test_utils::Error **/ PalletTestUtilsError: 'Null', /** - * Lookup684: frame_system::extensions::check_spec_version::CheckSpecVersion + * Lookup705: frame_system::extensions::check_spec_version::CheckSpecVersion **/ FrameSystemExtensionsCheckSpecVersion: 'Null', /** - * Lookup685: frame_system::extensions::check_tx_version::CheckTxVersion + * Lookup706: frame_system::extensions::check_tx_version::CheckTxVersion **/ FrameSystemExtensionsCheckTxVersion: 'Null', /** - * Lookup686: frame_system::extensions::check_genesis::CheckGenesis + * Lookup707: frame_system::extensions::check_genesis::CheckGenesis **/ FrameSystemExtensionsCheckGenesis: 'Null', /** - * Lookup689: frame_system::extensions::check_nonce::CheckNonce + * Lookup710: frame_system::extensions::check_nonce::CheckNonce **/ FrameSystemExtensionsCheckNonce: 'Compact', /** - * Lookup690: polymesh_extensions::check_weight::CheckWeight + * Lookup711: polymesh_extensions::check_weight::CheckWeight **/ PolymeshExtensionsCheckWeight: 'FrameSystemExtensionsCheckWeight', /** - * Lookup691: frame_system::extensions::check_weight::CheckWeight + * Lookup712: frame_system::extensions::check_weight::CheckWeight **/ FrameSystemExtensionsCheckWeight: 'Null', /** - * Lookup692: pallet_transaction_payment::ChargeTransactionPayment + * Lookup713: pallet_transaction_payment::ChargeTransactionPayment **/ PalletTransactionPaymentChargeTransactionPayment: 'Compact', /** - * Lookup693: pallet_permissions::StoreCallMetadata + * Lookup714: pallet_permissions::StoreCallMetadata **/ PalletPermissionsStoreCallMetadata: 'Null', /** - * Lookup694: polymesh_runtime_develop::runtime::Runtime + * Lookup715: polymesh_runtime_develop::runtime::Runtime **/ PolymeshRuntimeDevelopRuntime: 'Null' }; diff --git a/scripts/cli/src/interfaces/registry.ts b/scripts/cli/src/interfaces/registry.ts new file mode 100644 index 0000000000..9558477014 --- /dev/null +++ b/scripts/cli/src/interfaces/registry.ts @@ -0,0 +1,378 @@ +// Auto-generated via `yarn polkadot-types-from-defs`, do not edit +/* eslint-disable */ + +import type { ConfidentialIdentityClaimProofsScopeClaimProof, ConfidentialIdentityClaimProofsZkProofData, ConfidentialIdentitySignSignature, Curve25519DalekBackendSerialU64FieldFieldElement51, Curve25519DalekEdwardsEdwardsPoint, Curve25519DalekRistrettoCompressedRistretto, Curve25519DalekRistrettoRistrettoPoint, Curve25519DalekScalar, FinalityGrandpaEquivocationPrecommit, FinalityGrandpaEquivocationPrevote, FinalityGrandpaPrecommit, FinalityGrandpaPrevote, FrameSupportDispatchRawOrigin, FrameSupportScheduleLookupError, FrameSupportScheduleMaybeHashed, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckTxVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, PalletAssetAssetOwnershipRelation, PalletAssetCall, PalletAssetCheckpointCall, PalletAssetCheckpointError, PalletAssetCheckpointScheduleSpec, PalletAssetClassicTickerImport, PalletAssetClassicTickerRegistration, PalletAssetError, PalletAssetSecurityToken, PalletAssetTickerRegistration, PalletAssetTickerRegistrationConfig, PalletAuthorshipCall, PalletAuthorshipError, PalletAuthorshipUncleEntryItem, PalletBabeCall, PalletBabeError, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBaseCall, PalletBaseError, PalletBridgeBridgeTx, PalletBridgeBridgeTxDetail, PalletBridgeBridgeTxStatus, PalletBridgeCall, PalletBridgeError, PalletBridgeHandledTxStatus, PalletBridgeRawEvent, PalletCommitteeCall, PalletCommitteeError, PalletCommitteeInstance1, PalletCommitteeInstance3, PalletCommitteeInstance4, PalletCommitteePolymeshVotes, PalletCommitteeRawEventInstance1, PalletCommitteeRawEventInstance3, PalletCommitteeRawEventInstance4, PalletCommitteeRawOriginInstance1, PalletCommitteeRawOriginInstance3, PalletCommitteeRawOriginInstance4, PalletComplianceManagerCall, PalletComplianceManagerError, PalletComplianceManagerEvent, PalletContractsError, PalletContractsEvent, PalletContractsSchedule, PalletContractsScheduleHostFnWeights, PalletContractsScheduleInstructionWeights, PalletContractsScheduleLimits, PalletContractsStorageDeletedContract, PalletContractsStorageRawContractInfo, PalletContractsWasmOwnerInfo, PalletContractsWasmPrefabWasmModule, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsBallotCall, PalletCorporateActionsBallotError, PalletCorporateActionsBallotEvent, PalletCorporateActionsBallotMotion, PalletCorporateActionsCaCheckpoint, PalletCorporateActionsCaId, PalletCorporateActionsCaKind, PalletCorporateActionsCall, PalletCorporateActionsCorporateAction, PalletCorporateActionsDistribution, PalletCorporateActionsDistributionCall, PalletCorporateActionsDistributionError, PalletCorporateActionsDistributionEvent, PalletCorporateActionsError, PalletCorporateActionsEvent, PalletCorporateActionsInitiateCorporateActionArgs, PalletCorporateActionsRecordDate, PalletCorporateActionsRecordDateSpec, PalletCorporateActionsTargetIdentities, PalletCorporateActionsTargetTreatment, PalletExternalAgentsCall, PalletExternalAgentsError, PalletGrandpaCall, PalletGrandpaError, PalletGrandpaEvent, PalletGrandpaStoredPendingChange, PalletGrandpaStoredState, PalletGroupCall, PalletGroupError, PalletGroupInstance1, PalletGroupInstance2, PalletGroupInstance3, PalletGroupInstance4, PalletIdentityCall, PalletIdentityClaim1stKey, PalletIdentityClaim2ndKey, PalletIdentityError, PalletImOnlineBoundedOpaqueNetworkState, PalletImOnlineCall, PalletImOnlineError, PalletImOnlineEvent, PalletImOnlineHeartbeat, PalletImOnlineSr25519AppSr25519Public, PalletImOnlineSr25519AppSr25519Signature, PalletIndicesCall, PalletIndicesError, PalletIndicesEvent, PalletMultisigCall, PalletMultisigError, PalletMultisigProposalDetails, PalletMultisigProposalStatus, PalletMultisigRawEvent, PalletOffencesEvent, PalletPermissionsError, PalletPermissionsStoreCallMetadata, PalletPipsCall, PalletPipsCommittee, PalletPipsDepositInfo, PalletPipsError, PalletPipsPip, PalletPipsPipsMetadata, PalletPipsProposalData, PalletPipsProposalState, PalletPipsProposer, PalletPipsRawEvent, PalletPipsSnapshotMetadata, PalletPipsSnapshotResult, PalletPipsSnapshottedPip, PalletPipsVote, PalletPipsVotingResult, PalletPortfolioCall, PalletPortfolioError, PalletPortfolioMovePortfolioItem, PalletPreimageCall, PalletPreimageError, PalletPreimageEvent, PalletPreimageRequestStatus, PalletProtocolFeeCall, PalletProtocolFeeError, PalletProtocolFeeRawEvent, PalletRelayerCall, PalletRelayerError, PalletRelayerSubsidy, PalletRewardsCall, PalletRewardsError, PalletRewardsItnRewardStatus, PalletRewardsRawEvent, PalletSchedulerCall, PalletSchedulerError, PalletSchedulerEvent, PalletSchedulerScheduledV3, PalletSessionCall, PalletSessionError, PalletSessionEvent, PalletSettlementAffirmationStatus, PalletSettlementCall, PalletSettlementError, PalletSettlementInstruction, PalletSettlementInstructionStatus, PalletSettlementLeg, PalletSettlementLegStatus, PalletSettlementRawEvent, PalletSettlementReceiptDetails, PalletSettlementSettlementType, PalletSettlementVenue, PalletSettlementVenueType, PalletStakingActiveEraInfo, PalletStakingCall, PalletStakingCompactAssignments, PalletStakingElectionCompute, PalletStakingElectionResult, PalletStakingElectionSize, PalletStakingElectionStatus, PalletStakingEraRewardPoints, PalletStakingError, PalletStakingExposure, PalletStakingForcing, PalletStakingIndividualExposure, PalletStakingNominations, PalletStakingPermissionedIdentityPrefs, PalletStakingRawEvent, PalletStakingReleases, PalletStakingRewardDestination, PalletStakingSlashingSlashingSpans, PalletStakingSlashingSpanRecord, PalletStakingSlashingSwitch, PalletStakingStakingLedger, PalletStakingUnappliedSlash, PalletStakingUnlockChunk, PalletStakingValidatorPrefs, PalletStatisticsCall, PalletStatisticsError, PalletStoCall, PalletStoError, PalletStoFundraiser, PalletStoFundraiserStatus, PalletStoFundraiserTier, PalletStoPriceTier, PalletStoRawEvent, PalletSudoCall, PalletSudoError, PalletSudoRawEvent, PalletTestUtilsCall, PalletTestUtilsError, PalletTestUtilsRawEvent, PalletTimestampCall, PalletTransactionPaymentChargeTransactionPayment, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryRawEvent, PalletUtilityCall, PalletUtilityError, PalletUtilityEvent, PalletUtilityUniqueCall, PolymeshCommonUtilitiesAssetRawEvent, PolymeshCommonUtilitiesBalancesAccountData, PolymeshCommonUtilitiesBalancesMemo, PolymeshCommonUtilitiesBalancesRawEvent, PolymeshCommonUtilitiesBalancesReasons, PolymeshCommonUtilitiesBaseEvent, PolymeshCommonUtilitiesCheckpointEvent, PolymeshCommonUtilitiesCheckpointStoredSchedule, PolymeshCommonUtilitiesExternalAgentsEvent, PolymeshCommonUtilitiesGroupInactiveMember, PolymeshCommonUtilitiesGroupRawEventInstance1, PolymeshCommonUtilitiesGroupRawEventInstance2, PolymeshCommonUtilitiesGroupRawEventInstance3, PolymeshCommonUtilitiesGroupRawEventInstance4, PolymeshCommonUtilitiesIdentityRawEvent, PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth, PolymeshCommonUtilitiesMaybeBlock, PolymeshCommonUtilitiesPortfolioEvent, PolymeshCommonUtilitiesProtocolFeeProtocolOp, PolymeshCommonUtilitiesRelayerRawEvent, PolymeshCommonUtilitiesStatisticsEvent, PolymeshContractsCall, PolymeshContractsError, PolymeshContractsEvent, PolymeshExtensionsCheckWeight, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetAssetType, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAssetMetadataAssetMetadataKey, PolymeshPrimitivesAssetMetadataAssetMetadataLockStatus, PolymeshPrimitivesAssetMetadataAssetMetadataSpec, PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail, PolymeshPrimitivesAuthorization, PolymeshPrimitivesAuthorizationAuthorizationData, PolymeshPrimitivesBeneficiary, PolymeshPrimitivesCalendarCalendarPeriod, PolymeshPrimitivesCalendarCalendarUnit, PolymeshPrimitivesCalendarCheckpointSchedule, PolymeshPrimitivesCddId, PolymeshPrimitivesCddIdInvestorUid, PolymeshPrimitivesComplianceManagerAssetCompliance, PolymeshPrimitivesComplianceManagerComplianceRequirement, PolymeshPrimitivesCondition, PolymeshPrimitivesConditionConditionType, PolymeshPrimitivesConditionTargetIdentity, PolymeshPrimitivesConditionTrustedFor, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesDocumentHash, PolymeshPrimitivesEthereumEcdsaSignature, PolymeshPrimitivesEthereumEthereumAddress, PolymeshPrimitivesEventOnly, PolymeshPrimitivesIdentityClaim, PolymeshPrimitivesIdentityClaimClaim, PolymeshPrimitivesIdentityClaimClaimType, PolymeshPrimitivesIdentityClaimScope, PolymeshPrimitivesIdentityDidRecord, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesIdentityIdPortfolioKind, PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData, PolymeshPrimitivesJurisdictionCountryCode, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKey, PolymeshPrimitivesSecondaryKeyKeyRecord, PolymeshPrimitivesSecondaryKeyPalletPermissions, PolymeshPrimitivesSecondaryKeyPermissions, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesStatisticsAssetScope, PolymeshPrimitivesStatisticsStat1stKey, PolymeshPrimitivesStatisticsStat2ndKey, PolymeshPrimitivesStatisticsStatClaim, PolymeshPrimitivesStatisticsStatOpType, PolymeshPrimitivesStatisticsStatType, PolymeshPrimitivesStatisticsStatUpdate, PolymeshPrimitivesSubsetSubsetRestrictionDispatchableName, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId, PolymeshPrimitivesSubsetSubsetRestrictionTicker, PolymeshPrimitivesTicker, PolymeshPrimitivesTransferComplianceAssetTransferCompliance, PolymeshPrimitivesTransferComplianceTransferCondition, PolymeshPrimitivesTransferComplianceTransferConditionExemptKey, PolymeshRuntimeCiRuntime, PolymeshRuntimeCiRuntimeOriginCaller, PolymeshRuntimeCiRuntimeSessionKeys, SchnorrkelSignSignature, SpAuthorityDiscoveryAppPublic, SpConsensusBabeAllowedSlots, SpConsensusBabeAppPublic, SpConsensusBabeBabeEpochConfiguration, SpConsensusBabeDigestsNextConfigDescriptor, SpConsensusSlotsEquivocationProof, SpCoreCryptoKeyTypeId, SpCoreEcdsaSignature, SpCoreEd25519Public, SpCoreEd25519Signature, SpCoreOffchainOpaqueNetworkState, SpCoreSr25519Public, SpCoreSr25519Signature, SpCoreVoid, SpFinalityGrandpaAppPublic, SpFinalityGrandpaAppSignature, SpFinalityGrandpaEquivocation, SpFinalityGrandpaEquivocationProof, SpNposElectionsElectionScore, SpRuntimeArithmeticError, SpRuntimeBlakeTwo256, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeHeader, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpSessionMembershipProof, SpStakingOffenceOffenceDetails, SpVersionRuntimeVersion } from '@polkadot/types/lookup'; + +declare module '@polkadot/types/types/registry' { + export interface InterfaceTypes { + ConfidentialIdentityClaimProofsScopeClaimProof: ConfidentialIdentityClaimProofsScopeClaimProof; + ConfidentialIdentityClaimProofsZkProofData: ConfidentialIdentityClaimProofsZkProofData; + ConfidentialIdentitySignSignature: ConfidentialIdentitySignSignature; + Curve25519DalekBackendSerialU64FieldFieldElement51: Curve25519DalekBackendSerialU64FieldFieldElement51; + Curve25519DalekEdwardsEdwardsPoint: Curve25519DalekEdwardsEdwardsPoint; + Curve25519DalekRistrettoCompressedRistretto: Curve25519DalekRistrettoCompressedRistretto; + Curve25519DalekRistrettoRistrettoPoint: Curve25519DalekRistrettoRistrettoPoint; + Curve25519DalekScalar: Curve25519DalekScalar; + FinalityGrandpaEquivocationPrecommit: FinalityGrandpaEquivocationPrecommit; + FinalityGrandpaEquivocationPrevote: FinalityGrandpaEquivocationPrevote; + FinalityGrandpaPrecommit: FinalityGrandpaPrecommit; + FinalityGrandpaPrevote: FinalityGrandpaPrevote; + FrameSupportDispatchRawOrigin: FrameSupportDispatchRawOrigin; + FrameSupportScheduleLookupError: FrameSupportScheduleLookupError; + FrameSupportScheduleMaybeHashed: FrameSupportScheduleMaybeHashed; + FrameSupportTokensMiscBalanceStatus: FrameSupportTokensMiscBalanceStatus; + FrameSupportWeightsDispatchClass: FrameSupportWeightsDispatchClass; + FrameSupportWeightsDispatchInfo: FrameSupportWeightsDispatchInfo; + FrameSupportWeightsPays: FrameSupportWeightsPays; + FrameSupportWeightsPerDispatchClassU32: FrameSupportWeightsPerDispatchClassU32; + FrameSupportWeightsPerDispatchClassU64: FrameSupportWeightsPerDispatchClassU64; + FrameSupportWeightsPerDispatchClassWeightsPerClass: FrameSupportWeightsPerDispatchClassWeightsPerClass; + FrameSupportWeightsRuntimeDbWeight: FrameSupportWeightsRuntimeDbWeight; + FrameSupportWeightsWeightToFeeCoefficient: FrameSupportWeightsWeightToFeeCoefficient; + FrameSystemAccountInfo: FrameSystemAccountInfo; + FrameSystemCall: FrameSystemCall; + FrameSystemError: FrameSystemError; + FrameSystemEvent: FrameSystemEvent; + FrameSystemEventRecord: FrameSystemEventRecord; + FrameSystemExtensionsCheckGenesis: FrameSystemExtensionsCheckGenesis; + FrameSystemExtensionsCheckNonce: FrameSystemExtensionsCheckNonce; + FrameSystemExtensionsCheckSpecVersion: FrameSystemExtensionsCheckSpecVersion; + FrameSystemExtensionsCheckTxVersion: FrameSystemExtensionsCheckTxVersion; + FrameSystemExtensionsCheckWeight: FrameSystemExtensionsCheckWeight; + FrameSystemLastRuntimeUpgradeInfo: FrameSystemLastRuntimeUpgradeInfo; + FrameSystemLimitsBlockLength: FrameSystemLimitsBlockLength; + FrameSystemLimitsBlockWeights: FrameSystemLimitsBlockWeights; + FrameSystemLimitsWeightsPerClass: FrameSystemLimitsWeightsPerClass; + FrameSystemPhase: FrameSystemPhase; + PalletAssetAssetOwnershipRelation: PalletAssetAssetOwnershipRelation; + PalletAssetCall: PalletAssetCall; + PalletAssetCheckpointCall: PalletAssetCheckpointCall; + PalletAssetCheckpointError: PalletAssetCheckpointError; + PalletAssetCheckpointScheduleSpec: PalletAssetCheckpointScheduleSpec; + PalletAssetClassicTickerImport: PalletAssetClassicTickerImport; + PalletAssetClassicTickerRegistration: PalletAssetClassicTickerRegistration; + PalletAssetError: PalletAssetError; + PalletAssetSecurityToken: PalletAssetSecurityToken; + PalletAssetTickerRegistration: PalletAssetTickerRegistration; + PalletAssetTickerRegistrationConfig: PalletAssetTickerRegistrationConfig; + PalletAuthorshipCall: PalletAuthorshipCall; + PalletAuthorshipError: PalletAuthorshipError; + PalletAuthorshipUncleEntryItem: PalletAuthorshipUncleEntryItem; + PalletBabeCall: PalletBabeCall; + PalletBabeError: PalletBabeError; + PalletBalancesBalanceLock: PalletBalancesBalanceLock; + PalletBalancesCall: PalletBalancesCall; + PalletBalancesError: PalletBalancesError; + PalletBaseCall: PalletBaseCall; + PalletBaseError: PalletBaseError; + PalletBridgeBridgeTx: PalletBridgeBridgeTx; + PalletBridgeBridgeTxDetail: PalletBridgeBridgeTxDetail; + PalletBridgeBridgeTxStatus: PalletBridgeBridgeTxStatus; + PalletBridgeCall: PalletBridgeCall; + PalletBridgeError: PalletBridgeError; + PalletBridgeHandledTxStatus: PalletBridgeHandledTxStatus; + PalletBridgeRawEvent: PalletBridgeRawEvent; + PalletCommitteeCall: PalletCommitteeCall; + PalletCommitteeError: PalletCommitteeError; + PalletCommitteeInstance1: PalletCommitteeInstance1; + PalletCommitteeInstance3: PalletCommitteeInstance3; + PalletCommitteeInstance4: PalletCommitteeInstance4; + PalletCommitteePolymeshVotes: PalletCommitteePolymeshVotes; + PalletCommitteeRawEventInstance1: PalletCommitteeRawEventInstance1; + PalletCommitteeRawEventInstance3: PalletCommitteeRawEventInstance3; + PalletCommitteeRawEventInstance4: PalletCommitteeRawEventInstance4; + PalletCommitteeRawOriginInstance1: PalletCommitteeRawOriginInstance1; + PalletCommitteeRawOriginInstance3: PalletCommitteeRawOriginInstance3; + PalletCommitteeRawOriginInstance4: PalletCommitteeRawOriginInstance4; + PalletComplianceManagerCall: PalletComplianceManagerCall; + PalletComplianceManagerError: PalletComplianceManagerError; + PalletComplianceManagerEvent: PalletComplianceManagerEvent; + PalletContractsError: PalletContractsError; + PalletContractsEvent: PalletContractsEvent; + PalletContractsSchedule: PalletContractsSchedule; + PalletContractsScheduleHostFnWeights: PalletContractsScheduleHostFnWeights; + PalletContractsScheduleInstructionWeights: PalletContractsScheduleInstructionWeights; + PalletContractsScheduleLimits: PalletContractsScheduleLimits; + PalletContractsStorageDeletedContract: PalletContractsStorageDeletedContract; + PalletContractsStorageRawContractInfo: PalletContractsStorageRawContractInfo; + PalletContractsWasmOwnerInfo: PalletContractsWasmOwnerInfo; + PalletContractsWasmPrefabWasmModule: PalletContractsWasmPrefabWasmModule; + PalletCorporateActionsBallotBallotMeta: PalletCorporateActionsBallotBallotMeta; + PalletCorporateActionsBallotBallotTimeRange: PalletCorporateActionsBallotBallotTimeRange; + PalletCorporateActionsBallotBallotVote: PalletCorporateActionsBallotBallotVote; + PalletCorporateActionsBallotCall: PalletCorporateActionsBallotCall; + PalletCorporateActionsBallotError: PalletCorporateActionsBallotError; + PalletCorporateActionsBallotEvent: PalletCorporateActionsBallotEvent; + PalletCorporateActionsBallotMotion: PalletCorporateActionsBallotMotion; + PalletCorporateActionsCaCheckpoint: PalletCorporateActionsCaCheckpoint; + PalletCorporateActionsCaId: PalletCorporateActionsCaId; + PalletCorporateActionsCaKind: PalletCorporateActionsCaKind; + PalletCorporateActionsCall: PalletCorporateActionsCall; + PalletCorporateActionsCorporateAction: PalletCorporateActionsCorporateAction; + PalletCorporateActionsDistribution: PalletCorporateActionsDistribution; + PalletCorporateActionsDistributionCall: PalletCorporateActionsDistributionCall; + PalletCorporateActionsDistributionError: PalletCorporateActionsDistributionError; + PalletCorporateActionsDistributionEvent: PalletCorporateActionsDistributionEvent; + PalletCorporateActionsError: PalletCorporateActionsError; + PalletCorporateActionsEvent: PalletCorporateActionsEvent; + PalletCorporateActionsInitiateCorporateActionArgs: PalletCorporateActionsInitiateCorporateActionArgs; + PalletCorporateActionsRecordDate: PalletCorporateActionsRecordDate; + PalletCorporateActionsRecordDateSpec: PalletCorporateActionsRecordDateSpec; + PalletCorporateActionsTargetIdentities: PalletCorporateActionsTargetIdentities; + PalletCorporateActionsTargetTreatment: PalletCorporateActionsTargetTreatment; + PalletExternalAgentsCall: PalletExternalAgentsCall; + PalletExternalAgentsError: PalletExternalAgentsError; + PalletGrandpaCall: PalletGrandpaCall; + PalletGrandpaError: PalletGrandpaError; + PalletGrandpaEvent: PalletGrandpaEvent; + PalletGrandpaStoredPendingChange: PalletGrandpaStoredPendingChange; + PalletGrandpaStoredState: PalletGrandpaStoredState; + PalletGroupCall: PalletGroupCall; + PalletGroupError: PalletGroupError; + PalletGroupInstance1: PalletGroupInstance1; + PalletGroupInstance2: PalletGroupInstance2; + PalletGroupInstance3: PalletGroupInstance3; + PalletGroupInstance4: PalletGroupInstance4; + PalletIdentityCall: PalletIdentityCall; + PalletIdentityClaim1stKey: PalletIdentityClaim1stKey; + PalletIdentityClaim2ndKey: PalletIdentityClaim2ndKey; + PalletIdentityError: PalletIdentityError; + PalletImOnlineBoundedOpaqueNetworkState: PalletImOnlineBoundedOpaqueNetworkState; + PalletImOnlineCall: PalletImOnlineCall; + PalletImOnlineError: PalletImOnlineError; + PalletImOnlineEvent: PalletImOnlineEvent; + PalletImOnlineHeartbeat: PalletImOnlineHeartbeat; + PalletImOnlineSr25519AppSr25519Public: PalletImOnlineSr25519AppSr25519Public; + PalletImOnlineSr25519AppSr25519Signature: PalletImOnlineSr25519AppSr25519Signature; + PalletIndicesCall: PalletIndicesCall; + PalletIndicesError: PalletIndicesError; + PalletIndicesEvent: PalletIndicesEvent; + PalletMultisigCall: PalletMultisigCall; + PalletMultisigError: PalletMultisigError; + PalletMultisigProposalDetails: PalletMultisigProposalDetails; + PalletMultisigProposalStatus: PalletMultisigProposalStatus; + PalletMultisigRawEvent: PalletMultisigRawEvent; + PalletOffencesEvent: PalletOffencesEvent; + PalletPermissionsError: PalletPermissionsError; + PalletPermissionsStoreCallMetadata: PalletPermissionsStoreCallMetadata; + PalletPipsCall: PalletPipsCall; + PalletPipsCommittee: PalletPipsCommittee; + PalletPipsDepositInfo: PalletPipsDepositInfo; + PalletPipsError: PalletPipsError; + PalletPipsPip: PalletPipsPip; + PalletPipsPipsMetadata: PalletPipsPipsMetadata; + PalletPipsProposalData: PalletPipsProposalData; + PalletPipsProposalState: PalletPipsProposalState; + PalletPipsProposer: PalletPipsProposer; + PalletPipsRawEvent: PalletPipsRawEvent; + PalletPipsSnapshotMetadata: PalletPipsSnapshotMetadata; + PalletPipsSnapshotResult: PalletPipsSnapshotResult; + PalletPipsSnapshottedPip: PalletPipsSnapshottedPip; + PalletPipsVote: PalletPipsVote; + PalletPipsVotingResult: PalletPipsVotingResult; + PalletPortfolioCall: PalletPortfolioCall; + PalletPortfolioError: PalletPortfolioError; + PalletPortfolioMovePortfolioItem: PalletPortfolioMovePortfolioItem; + PalletPreimageCall: PalletPreimageCall; + PalletPreimageError: PalletPreimageError; + PalletPreimageEvent: PalletPreimageEvent; + PalletPreimageRequestStatus: PalletPreimageRequestStatus; + PalletProtocolFeeCall: PalletProtocolFeeCall; + PalletProtocolFeeError: PalletProtocolFeeError; + PalletProtocolFeeRawEvent: PalletProtocolFeeRawEvent; + PalletRelayerCall: PalletRelayerCall; + PalletRelayerError: PalletRelayerError; + PalletRelayerSubsidy: PalletRelayerSubsidy; + PalletRewardsCall: PalletRewardsCall; + PalletRewardsError: PalletRewardsError; + PalletRewardsItnRewardStatus: PalletRewardsItnRewardStatus; + PalletRewardsRawEvent: PalletRewardsRawEvent; + PalletSchedulerCall: PalletSchedulerCall; + PalletSchedulerError: PalletSchedulerError; + PalletSchedulerEvent: PalletSchedulerEvent; + PalletSchedulerScheduledV3: PalletSchedulerScheduledV3; + PalletSessionCall: PalletSessionCall; + PalletSessionError: PalletSessionError; + PalletSessionEvent: PalletSessionEvent; + PalletSettlementAffirmationStatus: PalletSettlementAffirmationStatus; + PalletSettlementCall: PalletSettlementCall; + PalletSettlementError: PalletSettlementError; + PalletSettlementInstruction: PalletSettlementInstruction; + PalletSettlementInstructionStatus: PalletSettlementInstructionStatus; + PalletSettlementLeg: PalletSettlementLeg; + PalletSettlementLegStatus: PalletSettlementLegStatus; + PalletSettlementRawEvent: PalletSettlementRawEvent; + PalletSettlementReceiptDetails: PalletSettlementReceiptDetails; + PalletSettlementSettlementType: PalletSettlementSettlementType; + PalletSettlementVenue: PalletSettlementVenue; + PalletSettlementVenueType: PalletSettlementVenueType; + PalletStakingActiveEraInfo: PalletStakingActiveEraInfo; + PalletStakingCall: PalletStakingCall; + PalletStakingCompactAssignments: PalletStakingCompactAssignments; + PalletStakingElectionCompute: PalletStakingElectionCompute; + PalletStakingElectionResult: PalletStakingElectionResult; + PalletStakingElectionSize: PalletStakingElectionSize; + PalletStakingElectionStatus: PalletStakingElectionStatus; + PalletStakingEraRewardPoints: PalletStakingEraRewardPoints; + PalletStakingError: PalletStakingError; + PalletStakingExposure: PalletStakingExposure; + PalletStakingForcing: PalletStakingForcing; + PalletStakingIndividualExposure: PalletStakingIndividualExposure; + PalletStakingNominations: PalletStakingNominations; + PalletStakingPermissionedIdentityPrefs: PalletStakingPermissionedIdentityPrefs; + PalletStakingRawEvent: PalletStakingRawEvent; + PalletStakingReleases: PalletStakingReleases; + PalletStakingRewardDestination: PalletStakingRewardDestination; + PalletStakingSlashingSlashingSpans: PalletStakingSlashingSlashingSpans; + PalletStakingSlashingSpanRecord: PalletStakingSlashingSpanRecord; + PalletStakingSlashingSwitch: PalletStakingSlashingSwitch; + PalletStakingStakingLedger: PalletStakingStakingLedger; + PalletStakingUnappliedSlash: PalletStakingUnappliedSlash; + PalletStakingUnlockChunk: PalletStakingUnlockChunk; + PalletStakingValidatorPrefs: PalletStakingValidatorPrefs; + PalletStatisticsCall: PalletStatisticsCall; + PalletStatisticsError: PalletStatisticsError; + PalletStoCall: PalletStoCall; + PalletStoError: PalletStoError; + PalletStoFundraiser: PalletStoFundraiser; + PalletStoFundraiserStatus: PalletStoFundraiserStatus; + PalletStoFundraiserTier: PalletStoFundraiserTier; + PalletStoPriceTier: PalletStoPriceTier; + PalletStoRawEvent: PalletStoRawEvent; + PalletSudoCall: PalletSudoCall; + PalletSudoError: PalletSudoError; + PalletSudoRawEvent: PalletSudoRawEvent; + PalletTestUtilsCall: PalletTestUtilsCall; + PalletTestUtilsError: PalletTestUtilsError; + PalletTestUtilsRawEvent: PalletTestUtilsRawEvent; + PalletTimestampCall: PalletTimestampCall; + PalletTransactionPaymentChargeTransactionPayment: PalletTransactionPaymentChargeTransactionPayment; + PalletTransactionPaymentReleases: PalletTransactionPaymentReleases; + PalletTreasuryCall: PalletTreasuryCall; + PalletTreasuryError: PalletTreasuryError; + PalletTreasuryRawEvent: PalletTreasuryRawEvent; + PalletUtilityCall: PalletUtilityCall; + PalletUtilityError: PalletUtilityError; + PalletUtilityEvent: PalletUtilityEvent; + PalletUtilityUniqueCall: PalletUtilityUniqueCall; + PolymeshCommonUtilitiesAssetRawEvent: PolymeshCommonUtilitiesAssetRawEvent; + PolymeshCommonUtilitiesBalancesAccountData: PolymeshCommonUtilitiesBalancesAccountData; + PolymeshCommonUtilitiesBalancesMemo: PolymeshCommonUtilitiesBalancesMemo; + PolymeshCommonUtilitiesBalancesRawEvent: PolymeshCommonUtilitiesBalancesRawEvent; + PolymeshCommonUtilitiesBalancesReasons: PolymeshCommonUtilitiesBalancesReasons; + PolymeshCommonUtilitiesBaseEvent: PolymeshCommonUtilitiesBaseEvent; + PolymeshCommonUtilitiesCheckpointEvent: PolymeshCommonUtilitiesCheckpointEvent; + PolymeshCommonUtilitiesCheckpointStoredSchedule: PolymeshCommonUtilitiesCheckpointStoredSchedule; + PolymeshCommonUtilitiesExternalAgentsEvent: PolymeshCommonUtilitiesExternalAgentsEvent; + PolymeshCommonUtilitiesGroupInactiveMember: PolymeshCommonUtilitiesGroupInactiveMember; + PolymeshCommonUtilitiesGroupRawEventInstance1: PolymeshCommonUtilitiesGroupRawEventInstance1; + PolymeshCommonUtilitiesGroupRawEventInstance2: PolymeshCommonUtilitiesGroupRawEventInstance2; + PolymeshCommonUtilitiesGroupRawEventInstance3: PolymeshCommonUtilitiesGroupRawEventInstance3; + PolymeshCommonUtilitiesGroupRawEventInstance4: PolymeshCommonUtilitiesGroupRawEventInstance4; + PolymeshCommonUtilitiesIdentityRawEvent: PolymeshCommonUtilitiesIdentityRawEvent; + PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth: PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth; + PolymeshCommonUtilitiesMaybeBlock: PolymeshCommonUtilitiesMaybeBlock; + PolymeshCommonUtilitiesPortfolioEvent: PolymeshCommonUtilitiesPortfolioEvent; + PolymeshCommonUtilitiesProtocolFeeProtocolOp: PolymeshCommonUtilitiesProtocolFeeProtocolOp; + PolymeshCommonUtilitiesRelayerRawEvent: PolymeshCommonUtilitiesRelayerRawEvent; + PolymeshCommonUtilitiesStatisticsEvent: PolymeshCommonUtilitiesStatisticsEvent; + PolymeshContractsCall: PolymeshContractsCall; + PolymeshContractsError: PolymeshContractsError; + PolymeshContractsEvent: PolymeshContractsEvent; + PolymeshExtensionsCheckWeight: PolymeshExtensionsCheckWeight; + PolymeshPrimitivesAgentAgentGroup: PolymeshPrimitivesAgentAgentGroup; + PolymeshPrimitivesAssetAssetType: PolymeshPrimitivesAssetAssetType; + PolymeshPrimitivesAssetIdentifier: PolymeshPrimitivesAssetIdentifier; + PolymeshPrimitivesAssetMetadataAssetMetadataKey: PolymeshPrimitivesAssetMetadataAssetMetadataKey; + PolymeshPrimitivesAssetMetadataAssetMetadataLockStatus: PolymeshPrimitivesAssetMetadataAssetMetadataLockStatus; + PolymeshPrimitivesAssetMetadataAssetMetadataSpec: PolymeshPrimitivesAssetMetadataAssetMetadataSpec; + PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail: PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail; + PolymeshPrimitivesAuthorization: PolymeshPrimitivesAuthorization; + PolymeshPrimitivesAuthorizationAuthorizationData: PolymeshPrimitivesAuthorizationAuthorizationData; + PolymeshPrimitivesBeneficiary: PolymeshPrimitivesBeneficiary; + PolymeshPrimitivesCalendarCalendarPeriod: PolymeshPrimitivesCalendarCalendarPeriod; + PolymeshPrimitivesCalendarCalendarUnit: PolymeshPrimitivesCalendarCalendarUnit; + PolymeshPrimitivesCalendarCheckpointSchedule: PolymeshPrimitivesCalendarCheckpointSchedule; + PolymeshPrimitivesCddId: PolymeshPrimitivesCddId; + PolymeshPrimitivesCddIdInvestorUid: PolymeshPrimitivesCddIdInvestorUid; + PolymeshPrimitivesComplianceManagerAssetCompliance: PolymeshPrimitivesComplianceManagerAssetCompliance; + PolymeshPrimitivesComplianceManagerComplianceRequirement: PolymeshPrimitivesComplianceManagerComplianceRequirement; + PolymeshPrimitivesCondition: PolymeshPrimitivesCondition; + PolymeshPrimitivesConditionConditionType: PolymeshPrimitivesConditionConditionType; + PolymeshPrimitivesConditionTargetIdentity: PolymeshPrimitivesConditionTargetIdentity; + PolymeshPrimitivesConditionTrustedFor: PolymeshPrimitivesConditionTrustedFor; + PolymeshPrimitivesConditionTrustedIssuer: PolymeshPrimitivesConditionTrustedIssuer; + PolymeshPrimitivesDocument: PolymeshPrimitivesDocument; + PolymeshPrimitivesDocumentHash: PolymeshPrimitivesDocumentHash; + PolymeshPrimitivesEthereumEcdsaSignature: PolymeshPrimitivesEthereumEcdsaSignature; + PolymeshPrimitivesEthereumEthereumAddress: PolymeshPrimitivesEthereumEthereumAddress; + PolymeshPrimitivesEventOnly: PolymeshPrimitivesEventOnly; + PolymeshPrimitivesIdentityClaim: PolymeshPrimitivesIdentityClaim; + PolymeshPrimitivesIdentityClaimClaim: PolymeshPrimitivesIdentityClaimClaim; + PolymeshPrimitivesIdentityClaimClaimType: PolymeshPrimitivesIdentityClaimClaimType; + PolymeshPrimitivesIdentityClaimScope: PolymeshPrimitivesIdentityClaimScope; + PolymeshPrimitivesIdentityDidRecord: PolymeshPrimitivesIdentityDidRecord; + PolymeshPrimitivesIdentityId: PolymeshPrimitivesIdentityId; + PolymeshPrimitivesIdentityIdPortfolioId: PolymeshPrimitivesIdentityIdPortfolioId; + PolymeshPrimitivesIdentityIdPortfolioKind: PolymeshPrimitivesIdentityIdPortfolioKind; + PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData: PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData; + PolymeshPrimitivesJurisdictionCountryCode: PolymeshPrimitivesJurisdictionCountryCode; + PolymeshPrimitivesPosRatio: PolymeshPrimitivesPosRatio; + PolymeshPrimitivesSecondaryKey: PolymeshPrimitivesSecondaryKey; + PolymeshPrimitivesSecondaryKeyKeyRecord: PolymeshPrimitivesSecondaryKeyKeyRecord; + PolymeshPrimitivesSecondaryKeyPalletPermissions: PolymeshPrimitivesSecondaryKeyPalletPermissions; + PolymeshPrimitivesSecondaryKeyPermissions: PolymeshPrimitivesSecondaryKeyPermissions; + PolymeshPrimitivesSecondaryKeySignatory: PolymeshPrimitivesSecondaryKeySignatory; + PolymeshPrimitivesStatisticsAssetScope: PolymeshPrimitivesStatisticsAssetScope; + PolymeshPrimitivesStatisticsStat1stKey: PolymeshPrimitivesStatisticsStat1stKey; + PolymeshPrimitivesStatisticsStat2ndKey: PolymeshPrimitivesStatisticsStat2ndKey; + PolymeshPrimitivesStatisticsStatClaim: PolymeshPrimitivesStatisticsStatClaim; + PolymeshPrimitivesStatisticsStatOpType: PolymeshPrimitivesStatisticsStatOpType; + PolymeshPrimitivesStatisticsStatType: PolymeshPrimitivesStatisticsStatType; + PolymeshPrimitivesStatisticsStatUpdate: PolymeshPrimitivesStatisticsStatUpdate; + PolymeshPrimitivesSubsetSubsetRestrictionDispatchableName: PolymeshPrimitivesSubsetSubsetRestrictionDispatchableName; + PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions: PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions; + PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId: PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId; + PolymeshPrimitivesSubsetSubsetRestrictionTicker: PolymeshPrimitivesSubsetSubsetRestrictionTicker; + PolymeshPrimitivesTicker: PolymeshPrimitivesTicker; + PolymeshPrimitivesTransferComplianceAssetTransferCompliance: PolymeshPrimitivesTransferComplianceAssetTransferCompliance; + PolymeshPrimitivesTransferComplianceTransferCondition: PolymeshPrimitivesTransferComplianceTransferCondition; + PolymeshPrimitivesTransferComplianceTransferConditionExemptKey: PolymeshPrimitivesTransferComplianceTransferConditionExemptKey; + PolymeshRuntimeCiRuntime: PolymeshRuntimeCiRuntime; + PolymeshRuntimeCiRuntimeOriginCaller: PolymeshRuntimeCiRuntimeOriginCaller; + PolymeshRuntimeCiRuntimeSessionKeys: PolymeshRuntimeCiRuntimeSessionKeys; + SchnorrkelSignSignature: SchnorrkelSignSignature; + SpAuthorityDiscoveryAppPublic: SpAuthorityDiscoveryAppPublic; + SpConsensusBabeAllowedSlots: SpConsensusBabeAllowedSlots; + SpConsensusBabeAppPublic: SpConsensusBabeAppPublic; + SpConsensusBabeBabeEpochConfiguration: SpConsensusBabeBabeEpochConfiguration; + SpConsensusBabeDigestsNextConfigDescriptor: SpConsensusBabeDigestsNextConfigDescriptor; + SpConsensusSlotsEquivocationProof: SpConsensusSlotsEquivocationProof; + SpCoreCryptoKeyTypeId: SpCoreCryptoKeyTypeId; + SpCoreEcdsaSignature: SpCoreEcdsaSignature; + SpCoreEd25519Public: SpCoreEd25519Public; + SpCoreEd25519Signature: SpCoreEd25519Signature; + SpCoreOffchainOpaqueNetworkState: SpCoreOffchainOpaqueNetworkState; + SpCoreSr25519Public: SpCoreSr25519Public; + SpCoreSr25519Signature: SpCoreSr25519Signature; + SpCoreVoid: SpCoreVoid; + SpFinalityGrandpaAppPublic: SpFinalityGrandpaAppPublic; + SpFinalityGrandpaAppSignature: SpFinalityGrandpaAppSignature; + SpFinalityGrandpaEquivocation: SpFinalityGrandpaEquivocation; + SpFinalityGrandpaEquivocationProof: SpFinalityGrandpaEquivocationProof; + SpNposElectionsElectionScore: SpNposElectionsElectionScore; + SpRuntimeArithmeticError: SpRuntimeArithmeticError; + SpRuntimeBlakeTwo256: SpRuntimeBlakeTwo256; + SpRuntimeDigest: SpRuntimeDigest; + SpRuntimeDigestDigestItem: SpRuntimeDigestDigestItem; + SpRuntimeDispatchError: SpRuntimeDispatchError; + SpRuntimeHeader: SpRuntimeHeader; + SpRuntimeModuleError: SpRuntimeModuleError; + SpRuntimeMultiSignature: SpRuntimeMultiSignature; + SpRuntimeTokenError: SpRuntimeTokenError; + SpRuntimeTransactionalError: SpRuntimeTransactionalError; + SpSessionMembershipProof: SpSessionMembershipProof; + SpStakingOffenceOffenceDetails: SpStakingOffenceOffenceDetails; + SpVersionRuntimeVersion: SpVersionRuntimeVersion; + } // InterfaceTypes +} // declare module diff --git a/scripts/cli/src/interfaces/types-lookup.ts b/scripts/cli/src/interfaces/types-lookup.ts index 83a39ded9e..d9a1877632 100644 --- a/scripts/cli/src/interfaces/types-lookup.ts +++ b/scripts/cli/src/interfaces/types-lookup.ts @@ -40,64 +40,59 @@ declare module '@polkadot/types/lookup' { export interface SpRuntimeDigestDigestItem extends Enum { readonly isOther: boolean; readonly asOther: Bytes; - readonly isChangesTrieRoot: boolean; - readonly asChangesTrieRoot: H256; readonly isConsensus: boolean; readonly asConsensus: ITuple<[U8aFixed, Bytes]>; readonly isSeal: boolean; readonly asSeal: ITuple<[U8aFixed, Bytes]>; readonly isPreRuntime: boolean; readonly asPreRuntime: ITuple<[U8aFixed, Bytes]>; - readonly isChangesTrieSignal: boolean; - readonly asChangesTrieSignal: SpRuntimeDigestChangesTrieSignal; readonly isRuntimeEnvironmentUpdated: boolean; - readonly type: 'Other' | 'ChangesTrieRoot' | 'Consensus' | 'Seal' | 'PreRuntime' | 'ChangesTrieSignal' | 'RuntimeEnvironmentUpdated'; + readonly type: 'Other' | 'Consensus' | 'Seal' | 'PreRuntime' | 'RuntimeEnvironmentUpdated'; } - /** @name SpRuntimeDigestChangesTrieSignal (15) */ - export interface SpRuntimeDigestChangesTrieSignal extends Enum { - readonly isNewConfiguration: boolean; - readonly asNewConfiguration: Option; - readonly type: 'NewConfiguration'; - } - - /** @name SpCoreChangesTrieChangesTrieConfiguration (17) */ - export interface SpCoreChangesTrieChangesTrieConfiguration extends Struct { - readonly digestInterval: u32; - readonly digestLevels: u32; - } - - /** @name FrameSystemEventRecord (19) */ + /** @name FrameSystemEventRecord (16) */ export interface FrameSystemEventRecord extends Struct { readonly phase: FrameSystemPhase; readonly event: Event; readonly topics: Vec; } - /** @name FrameSystemEvent (21) */ + /** @name FrameSystemEvent (18) */ export interface FrameSystemEvent extends Enum { readonly isExtrinsicSuccess: boolean; - readonly asExtrinsicSuccess: FrameSupportWeightsDispatchInfo; + readonly asExtrinsicSuccess: { + readonly dispatchInfo: FrameSupportWeightsDispatchInfo; + } & Struct; readonly isExtrinsicFailed: boolean; - readonly asExtrinsicFailed: ITuple<[SpRuntimeDispatchError, FrameSupportWeightsDispatchInfo]>; + readonly asExtrinsicFailed: { + readonly dispatchError: SpRuntimeDispatchError; + readonly dispatchInfo: FrameSupportWeightsDispatchInfo; + } & Struct; readonly isCodeUpdated: boolean; readonly isNewAccount: boolean; - readonly asNewAccount: AccountId32; + readonly asNewAccount: { + readonly account: AccountId32; + } & Struct; readonly isKilledAccount: boolean; - readonly asKilledAccount: AccountId32; + readonly asKilledAccount: { + readonly account: AccountId32; + } & Struct; readonly isRemarked: boolean; - readonly asRemarked: ITuple<[AccountId32, H256]>; + readonly asRemarked: { + readonly sender: AccountId32; + readonly hash_: H256; + } & Struct; readonly type: 'ExtrinsicSuccess' | 'ExtrinsicFailed' | 'CodeUpdated' | 'NewAccount' | 'KilledAccount' | 'Remarked'; } - /** @name FrameSupportWeightsDispatchInfo (22) */ + /** @name FrameSupportWeightsDispatchInfo (19) */ export interface FrameSupportWeightsDispatchInfo extends Struct { readonly weight: u64; readonly class: FrameSupportWeightsDispatchClass; readonly paysFee: FrameSupportWeightsPays; } - /** @name FrameSupportWeightsDispatchClass (23) */ + /** @name FrameSupportWeightsDispatchClass (20) */ export interface FrameSupportWeightsDispatchClass extends Enum { readonly isNormal: boolean; readonly isOperational: boolean; @@ -105,33 +100,39 @@ declare module '@polkadot/types/lookup' { readonly type: 'Normal' | 'Operational' | 'Mandatory'; } - /** @name FrameSupportWeightsPays (24) */ + /** @name FrameSupportWeightsPays (21) */ export interface FrameSupportWeightsPays extends Enum { readonly isYes: boolean; readonly isNo: boolean; readonly type: 'Yes' | 'No'; } - /** @name SpRuntimeDispatchError (25) */ + /** @name SpRuntimeDispatchError (22) */ export interface SpRuntimeDispatchError extends Enum { readonly isOther: boolean; readonly isCannotLookup: boolean; readonly isBadOrigin: boolean; readonly isModule: boolean; - readonly asModule: { - readonly index: u8; - readonly error: u8; - } & Struct; + readonly asModule: SpRuntimeModuleError; readonly isConsumerRemaining: boolean; readonly isNoProviders: boolean; + readonly isTooManyConsumers: boolean; readonly isToken: boolean; readonly asToken: SpRuntimeTokenError; readonly isArithmetic: boolean; readonly asArithmetic: SpRuntimeArithmeticError; - readonly type: 'Other' | 'CannotLookup' | 'BadOrigin' | 'Module' | 'ConsumerRemaining' | 'NoProviders' | 'Token' | 'Arithmetic'; + readonly isTransactional: boolean; + readonly asTransactional: SpRuntimeTransactionalError; + readonly type: 'Other' | 'CannotLookup' | 'BadOrigin' | 'Module' | 'ConsumerRemaining' | 'NoProviders' | 'TooManyConsumers' | 'Token' | 'Arithmetic' | 'Transactional'; } - /** @name SpRuntimeTokenError (26) */ + /** @name SpRuntimeModuleError (23) */ + export interface SpRuntimeModuleError extends Struct { + readonly index: u8; + readonly error: U8aFixed; + } + + /** @name SpRuntimeTokenError (24) */ export interface SpRuntimeTokenError extends Enum { readonly isNoFunds: boolean; readonly isWouldDie: boolean; @@ -143,7 +144,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'NoFunds' | 'WouldDie' | 'BelowMinimum' | 'CannotCreate' | 'UnknownAsset' | 'Frozen' | 'Unsupported'; } - /** @name SpRuntimeArithmeticError (27) */ + /** @name SpRuntimeArithmeticError (25) */ export interface SpRuntimeArithmeticError extends Enum { readonly isUnderflow: boolean; readonly isOverflow: boolean; @@ -151,18 +152,33 @@ declare module '@polkadot/types/lookup' { readonly type: 'Underflow' | 'Overflow' | 'DivisionByZero'; } - /** @name PalletIndicesEvent (28) */ + /** @name SpRuntimeTransactionalError (26) */ + export interface SpRuntimeTransactionalError extends Enum { + readonly isLimitReached: boolean; + readonly isNoLayer: boolean; + readonly type: 'LimitReached' | 'NoLayer'; + } + + /** @name PalletIndicesEvent (27) */ export interface PalletIndicesEvent extends Enum { readonly isIndexAssigned: boolean; - readonly asIndexAssigned: ITuple<[AccountId32, u32]>; + readonly asIndexAssigned: { + readonly who: AccountId32; + readonly index: u32; + } & Struct; readonly isIndexFreed: boolean; - readonly asIndexFreed: u32; + readonly asIndexFreed: { + readonly index: u32; + } & Struct; readonly isIndexFrozen: boolean; - readonly asIndexFrozen: ITuple<[u32, AccountId32]>; + readonly asIndexFrozen: { + readonly index: u32; + readonly who: AccountId32; + } & Struct; readonly type: 'IndexAssigned' | 'IndexFreed' | 'IndexFrozen'; } - /** @name PolymeshCommonUtilitiesBalancesRawEvent (29) */ + /** @name PolymeshCommonUtilitiesBalancesRawEvent (28) */ export interface PolymeshCommonUtilitiesBalancesRawEvent extends Enum { readonly isEndowed: boolean; readonly asEndowed: ITuple<[Option, AccountId32, u128]>; @@ -181,20 +197,20 @@ declare module '@polkadot/types/lookup' { readonly type: 'Endowed' | 'Transfer' | 'BalanceSet' | 'AccountBalanceBurned' | 'Reserved' | 'Unreserved' | 'ReserveRepatriated'; } - /** @name PolymeshPrimitivesIdentityId (31) */ + /** @name PolymeshPrimitivesIdentityId (30) */ export interface PolymeshPrimitivesIdentityId extends U8aFixed {} - /** @name PolymeshCommonUtilitiesBalancesMemo (33) */ + /** @name PolymeshCommonUtilitiesBalancesMemo (32) */ export interface PolymeshCommonUtilitiesBalancesMemo extends U8aFixed {} - /** @name FrameSupportTokensMiscBalanceStatus (34) */ + /** @name FrameSupportTokensMiscBalanceStatus (33) */ export interface FrameSupportTokensMiscBalanceStatus extends Enum { readonly isFree: boolean; readonly isReserved: boolean; readonly type: 'Free' | 'Reserved'; } - /** @name PolymeshCommonUtilitiesIdentityRawEvent (35) */ + /** @name PolymeshCommonUtilitiesIdentityRawEvent (34) */ export interface PolymeshCommonUtilitiesIdentityRawEvent extends Enum { readonly isDidCreated: boolean; readonly asDidCreated: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, Vec]>; @@ -233,20 +249,20 @@ declare module '@polkadot/types/lookup' { readonly type: 'DidCreated' | 'SecondaryKeysAdded' | 'SecondaryKeysRemoved' | 'SecondaryKeyLeftIdentity' | 'SecondaryKeyPermissionsUpdated' | 'PrimaryKeyUpdated' | 'ClaimAdded' | 'ClaimRevoked' | 'AssetDidRegistered' | 'AuthorizationAdded' | 'AuthorizationRevoked' | 'AuthorizationRejected' | 'AuthorizationConsumed' | 'CddRequirementForPrimaryKeyUpdated' | 'CddClaimsInvalidated' | 'SecondaryKeysFrozen' | 'SecondaryKeysUnfrozen'; } - /** @name PolymeshPrimitivesSecondaryKey (37) */ + /** @name PolymeshPrimitivesSecondaryKey (36) */ export interface PolymeshPrimitivesSecondaryKey extends Struct { readonly key: AccountId32; readonly permissions: PolymeshPrimitivesSecondaryKeyPermissions; } - /** @name PolymeshPrimitivesSecondaryKeyPermissions (38) */ + /** @name PolymeshPrimitivesSecondaryKeyPermissions (37) */ export interface PolymeshPrimitivesSecondaryKeyPermissions extends Struct { readonly asset: PolymeshPrimitivesSubsetSubsetRestrictionTicker; readonly extrinsic: PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions; readonly portfolio: PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId; } - /** @name PolymeshPrimitivesSubsetSubsetRestrictionTicker (39) */ + /** @name PolymeshPrimitivesSubsetSubsetRestrictionTicker (38) */ export interface PolymeshPrimitivesSubsetSubsetRestrictionTicker extends Enum { readonly isWhole: boolean; readonly isThese: boolean; @@ -256,13 +272,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Whole' | 'These' | 'Except'; } - /** @name PolymeshPrimitivesTicker (40) */ + /** @name PolymeshPrimitivesTicker (39) */ export interface PolymeshPrimitivesTicker extends U8aFixed {} - /** @name BTreeSetTicker (42) */ + /** @name BTreeSetTicker (41) */ export interface BTreeSetTicker extends Vec {} - /** @name PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions (44) */ + /** @name PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions (43) */ export interface PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions extends Enum { readonly isWhole: boolean; readonly isThese: boolean; @@ -272,13 +288,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Whole' | 'These' | 'Except'; } - /** @name PolymeshPrimitivesSecondaryKeyPalletPermissions (45) */ + /** @name PolymeshPrimitivesSecondaryKeyPalletPermissions (44) */ export interface PolymeshPrimitivesSecondaryKeyPalletPermissions extends Struct { readonly palletName: Bytes; readonly dispatchableNames: PolymeshPrimitivesSubsetSubsetRestrictionDispatchableName; } - /** @name PolymeshPrimitivesSubsetSubsetRestrictionDispatchableName (47) */ + /** @name PolymeshPrimitivesSubsetSubsetRestrictionDispatchableName (46) */ export interface PolymeshPrimitivesSubsetSubsetRestrictionDispatchableName extends Enum { readonly isWhole: boolean; readonly isThese: boolean; @@ -288,13 +304,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Whole' | 'These' | 'Except'; } - /** @name BTreeSetDispatchableName (49) */ + /** @name BTreeSetDispatchableName (48) */ export interface BTreeSetDispatchableName extends Vec {} - /** @name BTreeSetPalletPermissions (51) */ + /** @name BTreeSetPalletPermissions (50) */ export interface BTreeSetPalletPermissions extends Vec {} - /** @name PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId (53) */ + /** @name PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId (52) */ export interface PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId extends Enum { readonly isWhole: boolean; readonly isThese: boolean; @@ -304,13 +320,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Whole' | 'These' | 'Except'; } - /** @name PolymeshPrimitivesIdentityIdPortfolioId (54) */ + /** @name PolymeshPrimitivesIdentityIdPortfolioId (53) */ export interface PolymeshPrimitivesIdentityIdPortfolioId extends Struct { readonly did: PolymeshPrimitivesIdentityId; readonly kind: PolymeshPrimitivesIdentityIdPortfolioKind; } - /** @name PolymeshPrimitivesIdentityIdPortfolioKind (55) */ + /** @name PolymeshPrimitivesIdentityIdPortfolioKind (54) */ export interface PolymeshPrimitivesIdentityIdPortfolioKind extends Enum { readonly isDefault: boolean; readonly isUser: boolean; @@ -318,10 +334,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'Default' | 'User'; } - /** @name BTreeSetPortfolioId (57) */ + /** @name BTreeSetPortfolioId (56) */ export interface BTreeSetPortfolioId extends Vec {} - /** @name PolymeshPrimitivesIdentityClaim (60) */ + /** @name PolymeshPrimitivesIdentityClaim (59) */ export interface PolymeshPrimitivesIdentityClaim extends Struct { readonly claimIssuer: PolymeshPrimitivesIdentityId; readonly issuanceDate: u64; @@ -330,7 +346,7 @@ declare module '@polkadot/types/lookup' { readonly claim: PolymeshPrimitivesIdentityClaimClaim; } - /** @name PolymeshPrimitivesIdentityClaimClaim (62) */ + /** @name PolymeshPrimitivesIdentityClaimClaim (61) */ export interface PolymeshPrimitivesIdentityClaimClaim extends Enum { readonly isAccredited: boolean; readonly asAccredited: PolymeshPrimitivesIdentityClaimScope; @@ -358,7 +374,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Accredited' | 'Affiliate' | 'BuyLockup' | 'SellLockup' | 'CustomerDueDiligence' | 'KnowYourCustomer' | 'Jurisdiction' | 'Exempted' | 'Blocked' | 'InvestorUniqueness' | 'NoData' | 'InvestorUniquenessV2'; } - /** @name PolymeshPrimitivesIdentityClaimScope (63) */ + /** @name PolymeshPrimitivesIdentityClaimScope (62) */ export interface PolymeshPrimitivesIdentityClaimScope extends Enum { readonly isIdentity: boolean; readonly asIdentity: PolymeshPrimitivesIdentityId; @@ -369,10 +385,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'Identity' | 'Ticker' | 'Custom'; } - /** @name PolymeshPrimitivesCddId (64) */ + /** @name PolymeshPrimitivesCddId (63) */ export interface PolymeshPrimitivesCddId extends U8aFixed {} - /** @name PolymeshPrimitivesJurisdictionCountryCode (65) */ + /** @name PolymeshPrimitivesJurisdictionCountryCode (64) */ export interface PolymeshPrimitivesJurisdictionCountryCode extends Enum { readonly isAf: boolean; readonly isAx: boolean; @@ -627,7 +643,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Af' | 'Ax' | 'Al' | 'Dz' | 'As' | 'Ad' | 'Ao' | 'Ai' | 'Aq' | 'Ag' | 'Ar' | 'Am' | 'Aw' | 'Au' | 'At' | 'Az' | 'Bs' | 'Bh' | 'Bd' | 'Bb' | 'By' | 'Be' | 'Bz' | 'Bj' | 'Bm' | 'Bt' | 'Bo' | 'Ba' | 'Bw' | 'Bv' | 'Br' | 'Vg' | 'Io' | 'Bn' | 'Bg' | 'Bf' | 'Bi' | 'Kh' | 'Cm' | 'Ca' | 'Cv' | 'Ky' | 'Cf' | 'Td' | 'Cl' | 'Cn' | 'Hk' | 'Mo' | 'Cx' | 'Cc' | 'Co' | 'Km' | 'Cg' | 'Cd' | 'Ck' | 'Cr' | 'Ci' | 'Hr' | 'Cu' | 'Cy' | 'Cz' | 'Dk' | 'Dj' | 'Dm' | 'Do' | 'Ec' | 'Eg' | 'Sv' | 'Gq' | 'Er' | 'Ee' | 'Et' | 'Fk' | 'Fo' | 'Fj' | 'Fi' | 'Fr' | 'Gf' | 'Pf' | 'Tf' | 'Ga' | 'Gm' | 'Ge' | 'De' | 'Gh' | 'Gi' | 'Gr' | 'Gl' | 'Gd' | 'Gp' | 'Gu' | 'Gt' | 'Gg' | 'Gn' | 'Gw' | 'Gy' | 'Ht' | 'Hm' | 'Va' | 'Hn' | 'Hu' | 'Is' | 'In' | 'Id' | 'Ir' | 'Iq' | 'Ie' | 'Im' | 'Il' | 'It' | 'Jm' | 'Jp' | 'Je' | 'Jo' | 'Kz' | 'Ke' | 'Ki' | 'Kp' | 'Kr' | 'Kw' | 'Kg' | 'La' | 'Lv' | 'Lb' | 'Ls' | 'Lr' | 'Ly' | 'Li' | 'Lt' | 'Lu' | 'Mk' | 'Mg' | 'Mw' | 'My' | 'Mv' | 'Ml' | 'Mt' | 'Mh' | 'Mq' | 'Mr' | 'Mu' | 'Yt' | 'Mx' | 'Fm' | 'Md' | 'Mc' | 'Mn' | 'Me' | 'Ms' | 'Ma' | 'Mz' | 'Mm' | 'Na' | 'Nr' | 'Np' | 'Nl' | 'An' | 'Nc' | 'Nz' | 'Ni' | 'Ne' | 'Ng' | 'Nu' | 'Nf' | 'Mp' | 'No' | 'Om' | 'Pk' | 'Pw' | 'Ps' | 'Pa' | 'Pg' | 'Py' | 'Pe' | 'Ph' | 'Pn' | 'Pl' | 'Pt' | 'Pr' | 'Qa' | 'Re' | 'Ro' | 'Ru' | 'Rw' | 'Bl' | 'Sh' | 'Kn' | 'Lc' | 'Mf' | 'Pm' | 'Vc' | 'Ws' | 'Sm' | 'St' | 'Sa' | 'Sn' | 'Rs' | 'Sc' | 'Sl' | 'Sg' | 'Sk' | 'Si' | 'Sb' | 'So' | 'Za' | 'Gs' | 'Ss' | 'Es' | 'Lk' | 'Sd' | 'Sr' | 'Sj' | 'Sz' | 'Se' | 'Ch' | 'Sy' | 'Tw' | 'Tj' | 'Tz' | 'Th' | 'Tl' | 'Tg' | 'Tk' | 'To' | 'Tt' | 'Tn' | 'Tr' | 'Tm' | 'Tc' | 'Tv' | 'Ug' | 'Ua' | 'Ae' | 'Gb' | 'Us' | 'Um' | 'Uy' | 'Uz' | 'Vu' | 'Ve' | 'Vn' | 'Vi' | 'Wf' | 'Eh' | 'Ye' | 'Zm' | 'Zw' | 'Bq' | 'Cw' | 'Sx'; } - /** @name PolymeshPrimitivesAuthorizationAuthorizationData (67) */ + /** @name PolymeshPrimitivesAuthorizationAuthorizationData (66) */ export interface PolymeshPrimitivesAuthorizationAuthorizationData extends Enum { readonly isAttestPrimaryKeyRotation: boolean; readonly asAttestPrimaryKeyRotation: PolymeshPrimitivesIdentityId; @@ -651,7 +667,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'AttestPrimaryKeyRotation' | 'RotatePrimaryKey' | 'TransferTicker' | 'AddMultiSigSigner' | 'TransferAssetOwnership' | 'JoinIdentity' | 'PortfolioCustody' | 'BecomeAgent' | 'AddRelayerPayingKey' | 'RotatePrimaryKeyToSecondary'; } - /** @name PolymeshPrimitivesAgentAgentGroup (68) */ + /** @name PolymeshPrimitivesAgentAgentGroup (67) */ export interface PolymeshPrimitivesAgentAgentGroup extends Enum { readonly isFull: boolean; readonly isCustom: boolean; @@ -662,7 +678,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Full' | 'Custom' | 'ExceptMeta' | 'PolymeshV1CAA' | 'PolymeshV1PIA'; } - /** @name PolymeshCommonUtilitiesGroupRawEventInstance2 (71) */ + /** @name PolymeshCommonUtilitiesGroupRawEventInstance2 (70) */ export interface PolymeshCommonUtilitiesGroupRawEventInstance2 extends Enum { readonly isMemberAdded: boolean; readonly asMemberAdded: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; @@ -680,10 +696,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'MemberAdded' | 'MemberRemoved' | 'MemberRevoked' | 'MembersSwapped' | 'MembersReset' | 'ActiveLimitChanged' | 'Dummy'; } - /** @name PalletGroupInstance2 (72) */ + /** @name PalletGroupInstance2 (71) */ export type PalletGroupInstance2 = Null; - /** @name PalletCommitteeRawEventInstance1 (74) */ + /** @name PalletCommitteeRawEventInstance1 (73) */ export interface PalletCommitteeRawEventInstance1 extends Enum { readonly isProposed: boolean; readonly asProposed: ITuple<[PolymeshPrimitivesIdentityId, u32, H256]>; @@ -708,10 +724,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'Proposed' | 'Voted' | 'VoteRetracted' | 'FinalVotes' | 'Approved' | 'Rejected' | 'Executed' | 'ReleaseCoordinatorUpdated' | 'ExpiresAfterUpdated' | 'VoteThresholdUpdated'; } - /** @name PalletCommitteeInstance1 (75) */ + /** @name PalletCommitteeInstance1 (74) */ export type PalletCommitteeInstance1 = Null; - /** @name PolymeshCommonUtilitiesMaybeBlock (78) */ + /** @name PolymeshCommonUtilitiesMaybeBlock (77) */ export interface PolymeshCommonUtilitiesMaybeBlock extends Enum { readonly isSome: boolean; readonly asSome: u32; @@ -719,7 +735,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Some' | 'None'; } - /** @name PolymeshCommonUtilitiesGroupRawEventInstance1 (79) */ + /** @name PolymeshCommonUtilitiesGroupRawEventInstance1 (78) */ export interface PolymeshCommonUtilitiesGroupRawEventInstance1 extends Enum { readonly isMemberAdded: boolean; readonly asMemberAdded: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; @@ -737,10 +753,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'MemberAdded' | 'MemberRemoved' | 'MemberRevoked' | 'MembersSwapped' | 'MembersReset' | 'ActiveLimitChanged' | 'Dummy'; } - /** @name PalletGroupInstance1 (80) */ + /** @name PalletGroupInstance1 (79) */ export type PalletGroupInstance1 = Null; - /** @name PalletCommitteeRawEventInstance3 (81) */ + /** @name PalletCommitteeRawEventInstance3 (80) */ export interface PalletCommitteeRawEventInstance3 extends Enum { readonly isProposed: boolean; readonly asProposed: ITuple<[PolymeshPrimitivesIdentityId, u32, H256]>; @@ -765,10 +781,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'Proposed' | 'Voted' | 'VoteRetracted' | 'FinalVotes' | 'Approved' | 'Rejected' | 'Executed' | 'ReleaseCoordinatorUpdated' | 'ExpiresAfterUpdated' | 'VoteThresholdUpdated'; } - /** @name PalletCommitteeInstance3 (82) */ + /** @name PalletCommitteeInstance3 (81) */ export type PalletCommitteeInstance3 = Null; - /** @name PolymeshCommonUtilitiesGroupRawEventInstance3 (83) */ + /** @name PolymeshCommonUtilitiesGroupRawEventInstance3 (82) */ export interface PolymeshCommonUtilitiesGroupRawEventInstance3 extends Enum { readonly isMemberAdded: boolean; readonly asMemberAdded: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; @@ -786,10 +802,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'MemberAdded' | 'MemberRemoved' | 'MemberRevoked' | 'MembersSwapped' | 'MembersReset' | 'ActiveLimitChanged' | 'Dummy'; } - /** @name PalletGroupInstance3 (84) */ + /** @name PalletGroupInstance3 (83) */ export type PalletGroupInstance3 = Null; - /** @name PalletCommitteeRawEventInstance4 (85) */ + /** @name PalletCommitteeRawEventInstance4 (84) */ export interface PalletCommitteeRawEventInstance4 extends Enum { readonly isProposed: boolean; readonly asProposed: ITuple<[PolymeshPrimitivesIdentityId, u32, H256]>; @@ -814,10 +830,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'Proposed' | 'Voted' | 'VoteRetracted' | 'FinalVotes' | 'Approved' | 'Rejected' | 'Executed' | 'ReleaseCoordinatorUpdated' | 'ExpiresAfterUpdated' | 'VoteThresholdUpdated'; } - /** @name PalletCommitteeInstance4 (86) */ + /** @name PalletCommitteeInstance4 (85) */ export type PalletCommitteeInstance4 = Null; - /** @name PolymeshCommonUtilitiesGroupRawEventInstance4 (87) */ + /** @name PolymeshCommonUtilitiesGroupRawEventInstance4 (86) */ export interface PolymeshCommonUtilitiesGroupRawEventInstance4 extends Enum { readonly isMemberAdded: boolean; readonly asMemberAdded: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]>; @@ -835,10 +851,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'MemberAdded' | 'MemberRemoved' | 'MemberRevoked' | 'MembersSwapped' | 'MembersReset' | 'ActiveLimitChanged' | 'Dummy'; } - /** @name PalletGroupInstance4 (88) */ + /** @name PalletGroupInstance4 (87) */ export type PalletGroupInstance4 = Null; - /** @name PalletMultisigRawEvent (89) */ + /** @name PalletMultisigRawEvent (88) */ export interface PalletMultisigRawEvent extends Enum { readonly isMultiSigCreated: boolean; readonly asMultiSigCreated: ITuple<[PolymeshPrimitivesIdentityId, AccountId32, AccountId32, Vec, u64]>; @@ -867,7 +883,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'MultiSigCreated' | 'ProposalAdded' | 'ProposalExecuted' | 'MultiSigSignerAdded' | 'MultiSigSignerAuthorized' | 'MultiSigSignerRemoved' | 'MultiSigSignaturesRequiredChanged' | 'ProposalApproved' | 'ProposalRejectionVote' | 'ProposalRejected' | 'ProposalExecutionFailed' | 'SchedulingFailed'; } - /** @name PolymeshPrimitivesSecondaryKeySignatory (91) */ + /** @name PolymeshPrimitivesSecondaryKeySignatory (90) */ export interface PolymeshPrimitivesSecondaryKeySignatory extends Enum { readonly isIdentity: boolean; readonly asIdentity: PolymeshPrimitivesIdentityId; @@ -876,7 +892,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Identity' | 'Account'; } - /** @name PalletBridgeRawEvent (92) */ + /** @name PalletBridgeRawEvent (91) */ export interface PalletBridgeRawEvent extends Enum { readonly isControllerChanged: boolean; readonly asControllerChanged: ITuple<[PolymeshPrimitivesIdentityId, AccountId32]>; @@ -913,7 +929,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'ControllerChanged' | 'AdminChanged' | 'TimelockChanged' | 'Bridged' | 'Frozen' | 'Unfrozen' | 'FrozenTx' | 'UnfrozenTx' | 'ExemptedUpdated' | 'BridgeLimitUpdated' | 'TxsHandled' | 'BridgeTxScheduled' | 'BridgeTxScheduleFailed' | 'FreezeAdminAdded' | 'FreezeAdminRemoved' | 'TxRemoved'; } - /** @name PalletBridgeBridgeTx (93) */ + /** @name PalletBridgeBridgeTx (92) */ export interface PalletBridgeBridgeTx extends Struct { readonly nonce: u32; readonly recipient: AccountId32; @@ -921,7 +937,7 @@ declare module '@polkadot/types/lookup' { readonly txHash: H256; } - /** @name PalletBridgeHandledTxStatus (96) */ + /** @name PalletBridgeHandledTxStatus (95) */ export interface PalletBridgeHandledTxStatus extends Enum { readonly isSuccess: boolean; readonly isError: boolean; @@ -929,7 +945,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Success' | 'Error'; } - /** @name PalletStakingRawEvent (97) */ + /** @name PalletStakingRawEvent (96) */ export interface PalletStakingRawEvent extends Enum { readonly isEraPayout: boolean; readonly asEraPayout: ITuple<[u32, u128, u128]>; @@ -968,7 +984,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'EraPayout' | 'Reward' | 'Slash' | 'OldSlashingReportDiscarded' | 'StakingElection' | 'SolutionStored' | 'Bonded' | 'Unbonded' | 'Nominated' | 'Withdrawn' | 'PermissionedIdentityAdded' | 'PermissionedIdentityRemoved' | 'InvalidatedNominators' | 'CommissionCapUpdated' | 'MinimumBondThresholdUpdated' | 'RewardPaymentSchedulingInterrupted' | 'SlashingAllowedForChanged'; } - /** @name PalletStakingElectionCompute (98) */ + /** @name PalletStakingElectionCompute (97) */ export interface PalletStakingElectionCompute extends Enum { readonly isOnChain: boolean; readonly isSigned: boolean; @@ -976,7 +992,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'OnChain' | 'Signed' | 'Unsigned'; } - /** @name PalletStakingSlashingSwitch (100) */ + /** @name PalletStakingSlashingSwitch (99) */ export interface PalletStakingSlashingSwitch extends Enum { readonly isValidator: boolean; readonly isValidatorAndNominator: boolean; @@ -984,65 +1000,76 @@ declare module '@polkadot/types/lookup' { readonly type: 'Validator' | 'ValidatorAndNominator' | 'None'; } - /** @name PalletOffencesEvent (101) */ + /** @name PalletOffencesEvent (100) */ export interface PalletOffencesEvent extends Enum { readonly isOffence: boolean; - readonly asOffence: ITuple<[U8aFixed, Bytes]>; + readonly asOffence: { + readonly kind: U8aFixed; + readonly timeslot: Bytes; + } & Struct; readonly type: 'Offence'; } - /** @name PalletSessionEvent (103) */ + /** @name PalletSessionEvent (102) */ export interface PalletSessionEvent extends Enum { readonly isNewSession: boolean; - readonly asNewSession: u32; + readonly asNewSession: { + readonly sessionIndex: u32; + } & Struct; readonly type: 'NewSession'; } - /** @name PalletGrandpaEvent (104) */ + /** @name PalletGrandpaEvent (103) */ export interface PalletGrandpaEvent extends Enum { readonly isNewAuthorities: boolean; - readonly asNewAuthorities: Vec>; + readonly asNewAuthorities: { + readonly authoritySet: Vec>; + } & Struct; readonly isPaused: boolean; readonly isResumed: boolean; readonly type: 'NewAuthorities' | 'Paused' | 'Resumed'; } - /** @name SpFinalityGrandpaAppPublic (107) */ + /** @name SpFinalityGrandpaAppPublic (106) */ export interface SpFinalityGrandpaAppPublic extends SpCoreEd25519Public {} - /** @name SpCoreEd25519Public (108) */ + /** @name SpCoreEd25519Public (107) */ export interface SpCoreEd25519Public extends U8aFixed {} - /** @name PalletImOnlineEvent (109) */ + /** @name PalletImOnlineEvent (108) */ export interface PalletImOnlineEvent extends Enum { readonly isHeartbeatReceived: boolean; - readonly asHeartbeatReceived: PalletImOnlineSr25519AppSr25519Public; + readonly asHeartbeatReceived: { + readonly authorityId: PalletImOnlineSr25519AppSr25519Public; + } & Struct; readonly isAllGood: boolean; readonly isSomeOffline: boolean; - readonly asSomeOffline: Vec>; + readonly asSomeOffline: { + readonly offline: Vec>; + } & Struct; readonly type: 'HeartbeatReceived' | 'AllGood' | 'SomeOffline'; } - /** @name PalletImOnlineSr25519AppSr25519Public (110) */ + /** @name PalletImOnlineSr25519AppSr25519Public (109) */ export interface PalletImOnlineSr25519AppSr25519Public extends SpCoreSr25519Public {} - /** @name SpCoreSr25519Public (111) */ + /** @name SpCoreSr25519Public (110) */ export interface SpCoreSr25519Public extends U8aFixed {} - /** @name PalletStakingExposure (114) */ + /** @name PalletStakingExposure (113) */ export interface PalletStakingExposure extends Struct { readonly total: Compact; readonly own: Compact; readonly others: Vec; } - /** @name PalletStakingIndividualExposure (117) */ + /** @name PalletStakingIndividualExposure (116) */ export interface PalletStakingIndividualExposure extends Struct { readonly who: AccountId32; readonly value: Compact; } - /** @name PalletSudoRawEvent (118) */ + /** @name PalletSudoRawEvent (117) */ export interface PalletSudoRawEvent extends Enum { readonly isSudid: boolean; readonly asSudid: Result; @@ -1053,7 +1080,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Sudid' | 'KeyChanged' | 'SudoAsDone'; } - /** @name PolymeshCommonUtilitiesAssetRawEvent (119) */ + /** @name PolymeshCommonUtilitiesAssetRawEvent (118) */ export interface PolymeshCommonUtilitiesAssetRawEvent extends Enum { readonly isTransfer: boolean; readonly asTransfer: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesIdentityIdPortfolioId, u128]>; @@ -1110,7 +1137,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Transfer' | 'Issued' | 'Redeemed' | 'AssetCreated' | 'IdentifiersUpdated' | 'DivisibilityChanged' | 'TransferWithData' | 'IsIssuable' | 'TickerRegistered' | 'TickerTransferred' | 'AssetOwnershipTransferred' | 'AssetFrozen' | 'AssetUnfrozen' | 'AssetRenamed' | 'FundingRoundSet' | 'DocumentAdded' | 'DocumentRemoved' | 'ExtensionRemoved' | 'ClassicTickerClaimed' | 'ControllerTransfer' | 'CustomAssetTypeExists' | 'CustomAssetTypeRegistered' | 'SetAssetMetadataValue' | 'SetAssetMetadataValueDetails' | 'RegisterAssetMetadataLocalType' | 'RegisterAssetMetadataGlobalType'; } - /** @name PolymeshPrimitivesAssetAssetType (121) */ + /** @name PolymeshPrimitivesAssetAssetType (120) */ export interface PolymeshPrimitivesAssetAssetType extends Enum { readonly isEquityCommon: boolean; readonly isEquityPreferred: boolean; @@ -1127,7 +1154,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'EquityCommon' | 'EquityPreferred' | 'Commodity' | 'FixedIncome' | 'Reit' | 'Fund' | 'RevenueShareAgreement' | 'StructuredProduct' | 'Derivative' | 'Custom' | 'StableCoin'; } - /** @name PolymeshPrimitivesAssetIdentifier (124) */ + /** @name PolymeshPrimitivesAssetIdentifier (123) */ export interface PolymeshPrimitivesAssetIdentifier extends Enum { readonly isCusip: boolean; readonly asCusip: U8aFixed; @@ -1142,7 +1169,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Cusip' | 'Cins' | 'Isin' | 'Lei' | 'Figi'; } - /** @name PolymeshPrimitivesDocument (129) */ + /** @name PolymeshPrimitivesDocument (128) */ export interface PolymeshPrimitivesDocument extends Struct { readonly uri: Bytes; readonly contentHash: PolymeshPrimitivesDocumentHash; @@ -1151,7 +1178,7 @@ declare module '@polkadot/types/lookup' { readonly filingDate: Option; } - /** @name PolymeshPrimitivesDocumentHash (131) */ + /** @name PolymeshPrimitivesDocumentHash (130) */ export interface PolymeshPrimitivesDocumentHash extends Enum { readonly isNone: boolean; readonly isH512: boolean; @@ -1173,16 +1200,16 @@ declare module '@polkadot/types/lookup' { readonly type: 'None' | 'H512' | 'H384' | 'H320' | 'H256' | 'H224' | 'H192' | 'H160' | 'H128'; } - /** @name PolymeshPrimitivesEthereumEthereumAddress (140) */ + /** @name PolymeshPrimitivesEthereumEthereumAddress (139) */ export interface PolymeshPrimitivesEthereumEthereumAddress extends U8aFixed {} - /** @name PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail (143) */ + /** @name PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail (142) */ export interface PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail extends Struct { readonly expire: Option; readonly lockStatus: PolymeshPrimitivesAssetMetadataAssetMetadataLockStatus; } - /** @name PolymeshPrimitivesAssetMetadataAssetMetadataLockStatus (144) */ + /** @name PolymeshPrimitivesAssetMetadataAssetMetadataLockStatus (143) */ export interface PolymeshPrimitivesAssetMetadataAssetMetadataLockStatus extends Enum { readonly isUnlocked: boolean; readonly isLocked: boolean; @@ -1191,14 +1218,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unlocked' | 'Locked' | 'LockedUntil'; } - /** @name PolymeshPrimitivesAssetMetadataAssetMetadataSpec (147) */ + /** @name PolymeshPrimitivesAssetMetadataAssetMetadataSpec (146) */ export interface PolymeshPrimitivesAssetMetadataAssetMetadataSpec extends Struct { readonly url: Option; readonly description: Option; readonly typeDef: Option; } - /** @name PalletCorporateActionsDistributionEvent (154) */ + /** @name PalletCorporateActionsDistributionEvent (153) */ export interface PalletCorporateActionsDistributionEvent extends Enum { readonly isCreated: boolean; readonly asCreated: ITuple<[PolymeshPrimitivesEventOnly, PalletCorporateActionsCaId, PalletCorporateActionsDistribution]>; @@ -1211,16 +1238,16 @@ declare module '@polkadot/types/lookup' { readonly type: 'Created' | 'BenefitClaimed' | 'Reclaimed' | 'Removed'; } - /** @name PolymeshPrimitivesEventOnly (155) */ + /** @name PolymeshPrimitivesEventOnly (154) */ export interface PolymeshPrimitivesEventOnly extends PolymeshPrimitivesIdentityId {} - /** @name PalletCorporateActionsCaId (156) */ + /** @name PalletCorporateActionsCaId (155) */ export interface PalletCorporateActionsCaId extends Struct { readonly ticker: PolymeshPrimitivesTicker; readonly localId: u32; } - /** @name PalletCorporateActionsDistribution (158) */ + /** @name PalletCorporateActionsDistribution (157) */ export interface PalletCorporateActionsDistribution extends Struct { readonly from: PolymeshPrimitivesIdentityIdPortfolioId; readonly currency: PolymeshPrimitivesTicker; @@ -1232,7 +1259,7 @@ declare module '@polkadot/types/lookup' { readonly expiresAt: Option; } - /** @name PolymeshCommonUtilitiesCheckpointEvent (160) */ + /** @name PolymeshCommonUtilitiesCheckpointEvent (159) */ export interface PolymeshCommonUtilitiesCheckpointEvent extends Enum { readonly isCheckpointCreated: boolean; readonly asCheckpointCreated: ITuple<[Option, PolymeshPrimitivesTicker, u64, u128, u64]>; @@ -1245,7 +1272,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'CheckpointCreated' | 'MaximumSchedulesComplexityChanged' | 'ScheduleCreated' | 'ScheduleRemoved'; } - /** @name PolymeshCommonUtilitiesCheckpointStoredSchedule (163) */ + /** @name PolymeshCommonUtilitiesCheckpointStoredSchedule (162) */ export interface PolymeshCommonUtilitiesCheckpointStoredSchedule extends Struct { readonly schedule: PolymeshPrimitivesCalendarCheckpointSchedule; readonly id: u64; @@ -1253,19 +1280,19 @@ declare module '@polkadot/types/lookup' { readonly remaining: u32; } - /** @name PolymeshPrimitivesCalendarCheckpointSchedule (164) */ + /** @name PolymeshPrimitivesCalendarCheckpointSchedule (163) */ export interface PolymeshPrimitivesCalendarCheckpointSchedule extends Struct { readonly start: u64; readonly period: PolymeshPrimitivesCalendarCalendarPeriod; } - /** @name PolymeshPrimitivesCalendarCalendarPeriod (165) */ + /** @name PolymeshPrimitivesCalendarCalendarPeriod (164) */ export interface PolymeshPrimitivesCalendarCalendarPeriod extends Struct { readonly unit: PolymeshPrimitivesCalendarCalendarUnit; readonly amount: u64; } - /** @name PolymeshPrimitivesCalendarCalendarUnit (166) */ + /** @name PolymeshPrimitivesCalendarCalendarUnit (165) */ export interface PolymeshPrimitivesCalendarCalendarUnit extends Enum { readonly isSecond: boolean; readonly isMinute: boolean; @@ -1277,7 +1304,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Second' | 'Minute' | 'Hour' | 'Day' | 'Week' | 'Month' | 'Year'; } - /** @name PalletComplianceManagerEvent (168) */ + /** @name PalletComplianceManagerEvent (167) */ export interface PalletComplianceManagerEvent extends Enum { readonly isComplianceRequirementCreated: boolean; readonly asComplianceRequirementCreated: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesComplianceManagerComplianceRequirement]>; @@ -1300,20 +1327,20 @@ declare module '@polkadot/types/lookup' { readonly type: 'ComplianceRequirementCreated' | 'ComplianceRequirementRemoved' | 'AssetComplianceReplaced' | 'AssetComplianceReset' | 'AssetComplianceResumed' | 'AssetCompliancePaused' | 'ComplianceRequirementChanged' | 'TrustedDefaultClaimIssuerAdded' | 'TrustedDefaultClaimIssuerRemoved'; } - /** @name PolymeshPrimitivesComplianceManagerComplianceRequirement (169) */ + /** @name PolymeshPrimitivesComplianceManagerComplianceRequirement (168) */ export interface PolymeshPrimitivesComplianceManagerComplianceRequirement extends Struct { readonly senderConditions: Vec; readonly receiverConditions: Vec; readonly id: u32; } - /** @name PolymeshPrimitivesCondition (171) */ + /** @name PolymeshPrimitivesCondition (170) */ export interface PolymeshPrimitivesCondition extends Struct { readonly conditionType: PolymeshPrimitivesConditionConditionType; readonly issuers: Vec; } - /** @name PolymeshPrimitivesConditionConditionType (172) */ + /** @name PolymeshPrimitivesConditionConditionType (171) */ export interface PolymeshPrimitivesConditionConditionType extends Enum { readonly isIsPresent: boolean; readonly asIsPresent: PolymeshPrimitivesIdentityClaimClaim; @@ -1328,7 +1355,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'IsPresent' | 'IsAbsent' | 'IsAnyOf' | 'IsNoneOf' | 'IsIdentity'; } - /** @name PolymeshPrimitivesConditionTargetIdentity (174) */ + /** @name PolymeshPrimitivesConditionTargetIdentity (173) */ export interface PolymeshPrimitivesConditionTargetIdentity extends Enum { readonly isExternalAgent: boolean; readonly isSpecific: boolean; @@ -1336,13 +1363,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'ExternalAgent' | 'Specific'; } - /** @name PolymeshPrimitivesConditionTrustedIssuer (176) */ + /** @name PolymeshPrimitivesConditionTrustedIssuer (175) */ export interface PolymeshPrimitivesConditionTrustedIssuer extends Struct { readonly issuer: PolymeshPrimitivesIdentityId; readonly trustedFor: PolymeshPrimitivesConditionTrustedFor; } - /** @name PolymeshPrimitivesConditionTrustedFor (177) */ + /** @name PolymeshPrimitivesConditionTrustedFor (176) */ export interface PolymeshPrimitivesConditionTrustedFor extends Enum { readonly isAny: boolean; readonly isSpecific: boolean; @@ -1350,7 +1377,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Any' | 'Specific'; } - /** @name PolymeshPrimitivesIdentityClaimClaimType (179) */ + /** @name PolymeshPrimitivesIdentityClaimClaimType (178) */ export interface PolymeshPrimitivesIdentityClaimClaimType extends Enum { readonly isAccredited: boolean; readonly isAffiliate: boolean; @@ -1367,7 +1394,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Accredited' | 'Affiliate' | 'BuyLockup' | 'SellLockup' | 'CustomerDueDiligence' | 'KnowYourCustomer' | 'Jurisdiction' | 'Exempted' | 'Blocked' | 'InvestorUniqueness' | 'NoType' | 'InvestorUniquenessV2'; } - /** @name PalletCorporateActionsEvent (181) */ + /** @name PalletCorporateActionsEvent (180) */ export interface PalletCorporateActionsEvent extends Enum { readonly isMaxDetailsLengthChanged: boolean; readonly asMaxDetailsLengthChanged: ITuple<[PolymeshPrimitivesIdentityId, u32]>; @@ -1390,20 +1417,20 @@ declare module '@polkadot/types/lookup' { readonly type: 'MaxDetailsLengthChanged' | 'DefaultTargetIdentitiesChanged' | 'DefaultWithholdingTaxChanged' | 'DidWithholdingTaxChanged' | 'CaaTransferred' | 'CaInitiated' | 'CaLinkedToDoc' | 'CaRemoved' | 'RecordDateChanged'; } - /** @name PalletCorporateActionsTargetIdentities (182) */ + /** @name PalletCorporateActionsTargetIdentities (181) */ export interface PalletCorporateActionsTargetIdentities extends Struct { readonly identities: Vec; readonly treatment: PalletCorporateActionsTargetTreatment; } - /** @name PalletCorporateActionsTargetTreatment (183) */ + /** @name PalletCorporateActionsTargetTreatment (182) */ export interface PalletCorporateActionsTargetTreatment extends Enum { readonly isInclude: boolean; readonly isExclude: boolean; readonly type: 'Include' | 'Exclude'; } - /** @name PalletCorporateActionsCorporateAction (185) */ + /** @name PalletCorporateActionsCorporateAction (184) */ export interface PalletCorporateActionsCorporateAction extends Struct { readonly kind: PalletCorporateActionsCaKind; readonly declDate: u64; @@ -1413,7 +1440,7 @@ declare module '@polkadot/types/lookup' { readonly withholdingTax: Vec>; } - /** @name PalletCorporateActionsCaKind (186) */ + /** @name PalletCorporateActionsCaKind (185) */ export interface PalletCorporateActionsCaKind extends Enum { readonly isPredictableBenefit: boolean; readonly isUnpredictableBenefit: boolean; @@ -1423,13 +1450,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'PredictableBenefit' | 'UnpredictableBenefit' | 'IssuerNotice' | 'Reorganization' | 'Other'; } - /** @name PalletCorporateActionsRecordDate (188) */ + /** @name PalletCorporateActionsRecordDate (187) */ export interface PalletCorporateActionsRecordDate extends Struct { readonly date: u64; readonly checkpoint: PalletCorporateActionsCaCheckpoint; } - /** @name PalletCorporateActionsCaCheckpoint (189) */ + /** @name PalletCorporateActionsCaCheckpoint (188) */ export interface PalletCorporateActionsCaCheckpoint extends Enum { readonly isScheduled: boolean; readonly asScheduled: ITuple<[u64, u64]>; @@ -1438,7 +1465,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Scheduled' | 'Existing'; } - /** @name PalletCorporateActionsBallotEvent (194) */ + /** @name PalletCorporateActionsBallotEvent (193) */ export interface PalletCorporateActionsBallotEvent extends Enum { readonly isCreated: boolean; readonly asCreated: ITuple<[PolymeshPrimitivesIdentityId, PalletCorporateActionsCaId, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotMeta, bool]>; @@ -1455,32 +1482,32 @@ declare module '@polkadot/types/lookup' { readonly type: 'Created' | 'VoteCast' | 'RangeChanged' | 'MetaChanged' | 'RcvChanged' | 'Removed'; } - /** @name PalletCorporateActionsBallotBallotTimeRange (195) */ + /** @name PalletCorporateActionsBallotBallotTimeRange (194) */ export interface PalletCorporateActionsBallotBallotTimeRange extends Struct { readonly start: u64; readonly end: u64; } - /** @name PalletCorporateActionsBallotBallotMeta (196) */ + /** @name PalletCorporateActionsBallotBallotMeta (195) */ export interface PalletCorporateActionsBallotBallotMeta extends Struct { readonly title: Bytes; readonly motions: Vec; } - /** @name PalletCorporateActionsBallotMotion (199) */ + /** @name PalletCorporateActionsBallotMotion (198) */ export interface PalletCorporateActionsBallotMotion extends Struct { readonly title: Bytes; readonly infoLink: Bytes; readonly choices: Vec; } - /** @name PalletCorporateActionsBallotBallotVote (205) */ + /** @name PalletCorporateActionsBallotBallotVote (204) */ export interface PalletCorporateActionsBallotBallotVote extends Struct { readonly power: u128; readonly fallback: Option; } - /** @name PalletPipsRawEvent (208) */ + /** @name PalletPipsRawEvent (207) */ export interface PalletPipsRawEvent extends Enum { readonly isHistoricalPipsPruned: boolean; readonly asHistoricalPipsPruned: ITuple<[PolymeshPrimitivesIdentityId, bool, bool]>; @@ -1525,7 +1552,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'HistoricalPipsPruned' | 'ProposalCreated' | 'ProposalStateUpdated' | 'Voted' | 'PipClosed' | 'ExecutionScheduled' | 'DefaultEnactmentPeriodChanged' | 'MinimumProposalDepositChanged' | 'PendingPipExpiryChanged' | 'MaxPipSkipCountChanged' | 'ActivePipLimitChanged' | 'ProposalRefund' | 'SnapshotCleared' | 'SnapshotTaken' | 'PipSkipped' | 'SnapshotResultsEnacted' | 'ExecutionSchedulingFailed' | 'ExpiryScheduled' | 'ExpirySchedulingFailed' | 'ExecutionCancellingFailed'; } - /** @name PalletPipsProposer (209) */ + /** @name PalletPipsProposer (208) */ export interface PalletPipsProposer extends Enum { readonly isCommunity: boolean; readonly asCommunity: AccountId32; @@ -1534,14 +1561,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'Community' | 'Committee'; } - /** @name PalletPipsCommittee (210) */ + /** @name PalletPipsCommittee (209) */ export interface PalletPipsCommittee extends Enum { readonly isTechnical: boolean; readonly isUpgrade: boolean; readonly type: 'Technical' | 'Upgrade'; } - /** @name PalletPipsProposalData (214) */ + /** @name PalletPipsProposalData (213) */ export interface PalletPipsProposalData extends Enum { readonly isHash: boolean; readonly asHash: H256; @@ -1550,7 +1577,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Hash' | 'Proposal'; } - /** @name PalletPipsProposalState (215) */ + /** @name PalletPipsProposalState (214) */ export interface PalletPipsProposalState extends Enum { readonly isPending: boolean; readonly isRejected: boolean; @@ -1561,13 +1588,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Pending' | 'Rejected' | 'Scheduled' | 'Failed' | 'Executed' | 'Expired'; } - /** @name PalletPipsSnapshottedPip (218) */ + /** @name PalletPipsSnapshottedPip (217) */ export interface PalletPipsSnapshottedPip extends Struct { readonly id: u32; readonly weight: ITuple<[bool, u128]>; } - /** @name PolymeshCommonUtilitiesPortfolioEvent (224) */ + /** @name PolymeshCommonUtilitiesPortfolioEvent (223) */ export interface PolymeshCommonUtilitiesPortfolioEvent extends Enum { readonly isPortfolioCreated: boolean; readonly asPortfolioCreated: ITuple<[PolymeshPrimitivesIdentityId, u64, Bytes]>; @@ -1584,7 +1611,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'PortfolioCreated' | 'PortfolioDeleted' | 'MovedBetweenPortfolios' | 'PortfolioRenamed' | 'UserPortfolios' | 'PortfolioCustodianChanged'; } - /** @name PalletProtocolFeeRawEvent (228) */ + /** @name PalletProtocolFeeRawEvent (227) */ export interface PalletProtocolFeeRawEvent extends Enum { readonly isFeeSet: boolean; readonly asFeeSet: ITuple<[PolymeshPrimitivesIdentityId, u128]>; @@ -1595,18 +1622,41 @@ declare module '@polkadot/types/lookup' { readonly type: 'FeeSet' | 'CoefficientSet' | 'FeeCharged'; } - /** @name PolymeshPrimitivesPosRatio (229) */ + /** @name PolymeshPrimitivesPosRatio (228) */ export interface PolymeshPrimitivesPosRatio extends ITuple<[u32, u32]> {} - /** @name PalletSchedulerEvent (230) */ + /** @name PalletSchedulerEvent (229) */ export interface PalletSchedulerEvent extends Enum { readonly isScheduled: boolean; - readonly asScheduled: ITuple<[u32, u32]>; + readonly asScheduled: { + readonly when: u32; + readonly index: u32; + } & Struct; readonly isCanceled: boolean; - readonly asCanceled: ITuple<[u32, u32]>; + readonly asCanceled: { + readonly when: u32; + readonly index: u32; + } & Struct; readonly isDispatched: boolean; - readonly asDispatched: ITuple<[ITuple<[u32, u32]>, Option, Result]>; - readonly type: 'Scheduled' | 'Canceled' | 'Dispatched'; + readonly asDispatched: { + readonly task: ITuple<[u32, u32]>; + readonly id: Option; + readonly result: Result; + } & Struct; + readonly isCallLookupFailed: boolean; + readonly asCallLookupFailed: { + readonly task: ITuple<[u32, u32]>; + readonly id: Option; + readonly error: FrameSupportScheduleLookupError; + } & Struct; + readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'CallLookupFailed'; + } + + /** @name FrameSupportScheduleLookupError (231) */ + export interface FrameSupportScheduleLookupError extends Enum { + readonly isUnknown: boolean; + readonly isBadFormat: boolean; + readonly type: 'Unknown' | 'BadFormat'; } /** @name PalletSettlementRawEvent (232) */ @@ -1871,7 +1921,61 @@ declare module '@polkadot/types/lookup' { readonly type: 'ItnRewardClaimed'; } - /** @name PalletTestUtilsRawEvent (278) */ + /** @name PalletContractsEvent (278) */ + export interface PalletContractsEvent extends Enum { + readonly isInstantiated: boolean; + readonly asInstantiated: { + readonly deployer: AccountId32; + readonly contract: AccountId32; + } & Struct; + readonly isTerminated: boolean; + readonly asTerminated: { + readonly contract: AccountId32; + readonly beneficiary: AccountId32; + } & Struct; + readonly isCodeStored: boolean; + readonly asCodeStored: { + readonly codeHash: H256; + } & Struct; + readonly isContractEmitted: boolean; + readonly asContractEmitted: { + readonly contract: AccountId32; + readonly data: Bytes; + } & Struct; + readonly isCodeRemoved: boolean; + readonly asCodeRemoved: { + readonly codeHash: H256; + } & Struct; + readonly isContractCodeUpdated: boolean; + readonly asContractCodeUpdated: { + readonly contract: AccountId32; + readonly newCodeHash: H256; + readonly oldCodeHash: H256; + } & Struct; + readonly type: 'Instantiated' | 'Terminated' | 'CodeStored' | 'ContractEmitted' | 'CodeRemoved' | 'ContractCodeUpdated'; + } + + /** @name PolymeshContractsEvent (279) */ + export type PolymeshContractsEvent = Null; + + /** @name PalletPreimageEvent (280) */ + export interface PalletPreimageEvent extends Enum { + readonly isNoted: boolean; + readonly asNoted: { + readonly hash_: H256; + } & Struct; + readonly isRequested: boolean; + readonly asRequested: { + readonly hash_: H256; + } & Struct; + readonly isCleared: boolean; + readonly asCleared: { + readonly hash_: H256; + } & Struct; + readonly type: 'Noted' | 'Requested' | 'Cleared'; + } + + /** @name PalletTestUtilsRawEvent (281) */ export interface PalletTestUtilsRawEvent extends Enum { readonly isMockInvestorUIDCreated: boolean; readonly asMockInvestorUIDCreated: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesCddIdInvestorUid]>; @@ -1882,10 +1986,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'MockInvestorUIDCreated' | 'DidStatus' | 'CddStatus'; } - /** @name PolymeshPrimitivesCddIdInvestorUid (279) */ + /** @name PolymeshPrimitivesCddIdInvestorUid (282) */ export interface PolymeshPrimitivesCddIdInvestorUid extends U8aFixed {} - /** @name FrameSystemPhase (280) */ + /** @name FrameSystemPhase (283) */ export interface FrameSystemPhase extends Enum { readonly isApplyExtrinsic: boolean; readonly asApplyExtrinsic: u32; @@ -1894,13 +1998,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization'; } - /** @name FrameSystemLastRuntimeUpgradeInfo (283) */ + /** @name FrameSystemLastRuntimeUpgradeInfo (286) */ export interface FrameSystemLastRuntimeUpgradeInfo extends Struct { readonly specVersion: Compact; readonly specName: Text; } - /** @name FrameSystemCall (286) */ + /** @name FrameSystemCall (289) */ export interface FrameSystemCall extends Enum { readonly isFillBlock: boolean; readonly asFillBlock: { @@ -1922,10 +2026,6 @@ declare module '@polkadot/types/lookup' { readonly asSetCodeWithoutChecks: { readonly code: Bytes; } & Struct; - readonly isSetChangesTrieConfig: boolean; - readonly asSetChangesTrieConfig: { - readonly changesTrieConfig: Option; - } & Struct; readonly isSetStorage: boolean; readonly asSetStorage: { readonly items: Vec>; @@ -1943,24 +2043,24 @@ declare module '@polkadot/types/lookup' { readonly asRemarkWithEvent: { readonly remark: Bytes; } & Struct; - readonly type: 'FillBlock' | 'Remark' | 'SetHeapPages' | 'SetCode' | 'SetCodeWithoutChecks' | 'SetChangesTrieConfig' | 'SetStorage' | 'KillStorage' | 'KillPrefix' | 'RemarkWithEvent'; + readonly type: 'FillBlock' | 'Remark' | 'SetHeapPages' | 'SetCode' | 'SetCodeWithoutChecks' | 'SetStorage' | 'KillStorage' | 'KillPrefix' | 'RemarkWithEvent'; } - /** @name FrameSystemLimitsBlockWeights (290) */ + /** @name FrameSystemLimitsBlockWeights (293) */ export interface FrameSystemLimitsBlockWeights extends Struct { readonly baseBlock: u64; readonly maxBlock: u64; readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass; } - /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (291) */ + /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (294) */ export interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct { readonly normal: FrameSystemLimitsWeightsPerClass; readonly operational: FrameSystemLimitsWeightsPerClass; readonly mandatory: FrameSystemLimitsWeightsPerClass; } - /** @name FrameSystemLimitsWeightsPerClass (292) */ + /** @name FrameSystemLimitsWeightsPerClass (295) */ export interface FrameSystemLimitsWeightsPerClass extends Struct { readonly baseExtrinsic: u64; readonly maxExtrinsic: Option; @@ -1968,25 +2068,25 @@ declare module '@polkadot/types/lookup' { readonly reserved: Option; } - /** @name FrameSystemLimitsBlockLength (293) */ + /** @name FrameSystemLimitsBlockLength (296) */ export interface FrameSystemLimitsBlockLength extends Struct { readonly max: FrameSupportWeightsPerDispatchClassU32; } - /** @name FrameSupportWeightsPerDispatchClassU32 (294) */ + /** @name FrameSupportWeightsPerDispatchClassU32 (297) */ export interface FrameSupportWeightsPerDispatchClassU32 extends Struct { readonly normal: u32; readonly operational: u32; readonly mandatory: u32; } - /** @name FrameSupportWeightsRuntimeDbWeight (295) */ + /** @name FrameSupportWeightsRuntimeDbWeight (298) */ export interface FrameSupportWeightsRuntimeDbWeight extends Struct { readonly read: u64; readonly write: u64; } - /** @name SpVersionRuntimeVersion (296) */ + /** @name SpVersionRuntimeVersion (299) */ export interface SpVersionRuntimeVersion extends Struct { readonly specName: Text; readonly implName: Text; @@ -1995,22 +2095,24 @@ declare module '@polkadot/types/lookup' { readonly implVersion: u32; readonly apis: Vec>; readonly transactionVersion: u32; + readonly stateVersion: u8; } - /** @name FrameSystemError (301) */ + /** @name FrameSystemError (304) */ export interface FrameSystemError extends Enum { readonly isInvalidSpecName: boolean; readonly isSpecVersionNeedsToIncrease: boolean; readonly isFailedToExtractRuntimeVersion: boolean; readonly isNonDefaultComposite: boolean; readonly isNonZeroRefCount: boolean; - readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount'; + readonly isCallFiltered: boolean; + readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered'; } - /** @name SpConsensusBabeAppPublic (304) */ + /** @name SpConsensusBabeAppPublic (307) */ export interface SpConsensusBabeAppPublic extends SpCoreSr25519Public {} - /** @name SpConsensusBabeDigestsNextConfigDescriptor (307) */ + /** @name SpConsensusBabeDigestsNextConfigDescriptor (310) */ export interface SpConsensusBabeDigestsNextConfigDescriptor extends Enum { readonly isV1: boolean; readonly asV1: { @@ -2020,7 +2122,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'V1'; } - /** @name SpConsensusBabeAllowedSlots (309) */ + /** @name SpConsensusBabeAllowedSlots (312) */ export interface SpConsensusBabeAllowedSlots extends Enum { readonly isPrimarySlots: boolean; readonly isPrimaryAndSecondaryPlainSlots: boolean; @@ -2028,13 +2130,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'PrimarySlots' | 'PrimaryAndSecondaryPlainSlots' | 'PrimaryAndSecondaryVRFSlots'; } - /** @name SpConsensusBabeBabeEpochConfiguration (313) */ + /** @name SpConsensusBabeBabeEpochConfiguration (316) */ export interface SpConsensusBabeBabeEpochConfiguration extends Struct { readonly c: ITuple<[u64, u64]>; readonly allowedSlots: SpConsensusBabeAllowedSlots; } - /** @name PalletBabeCall (314) */ + /** @name PalletBabeCall (317) */ export interface PalletBabeCall extends Enum { readonly isReportEquivocation: boolean; readonly asReportEquivocation: { @@ -2053,7 +2155,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'ReportEquivocation' | 'ReportEquivocationUnsigned' | 'PlanConfigChange'; } - /** @name SpConsensusSlotsEquivocationProof (315) */ + /** @name SpConsensusSlotsEquivocationProof (318) */ export interface SpConsensusSlotsEquivocationProof extends Struct { readonly offender: SpConsensusBabeAppPublic; readonly slot: u64; @@ -2061,7 +2163,7 @@ declare module '@polkadot/types/lookup' { readonly secondHeader: SpRuntimeHeader; } - /** @name SpRuntimeHeader (316) */ + /** @name SpRuntimeHeader (319) */ export interface SpRuntimeHeader extends Struct { readonly parentHash: H256; readonly number: Compact; @@ -2070,17 +2172,17 @@ declare module '@polkadot/types/lookup' { readonly digest: SpRuntimeDigest; } - /** @name SpRuntimeBlakeTwo256 (317) */ + /** @name SpRuntimeBlakeTwo256 (320) */ export type SpRuntimeBlakeTwo256 = Null; - /** @name SpSessionMembershipProof (318) */ + /** @name SpSessionMembershipProof (321) */ export interface SpSessionMembershipProof extends Struct { readonly session: u32; readonly trieNodes: Vec; readonly validatorCount: u32; } - /** @name PalletBabeError (319) */ + /** @name PalletBabeError (322) */ export interface PalletBabeError extends Enum { readonly isInvalidEquivocationProof: boolean; readonly isInvalidKeyOwnershipProof: boolean; @@ -2088,7 +2190,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'InvalidEquivocationProof' | 'InvalidKeyOwnershipProof' | 'DuplicateOffenceReport'; } - /** @name PalletTimestampCall (320) */ + /** @name PalletTimestampCall (323) */ export interface PalletTimestampCall extends Enum { readonly isSet: boolean; readonly asSet: { @@ -2097,7 +2199,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Set'; } - /** @name PalletIndicesCall (323) */ + /** @name PalletIndicesCall (326) */ export interface PalletIndicesCall extends Enum { readonly isClaim: boolean; readonly asClaim: { @@ -2125,7 +2227,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Claim' | 'Transfer' | 'Free' | 'ForceTransfer' | 'Freeze'; } - /** @name PalletIndicesError (324) */ + /** @name PalletIndicesError (327) */ export interface PalletIndicesError extends Enum { readonly isNotAssigned: boolean; readonly isNotOwner: boolean; @@ -2135,7 +2237,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'NotAssigned' | 'NotOwner' | 'InUse' | 'NotTransfer' | 'Permanent'; } - /** @name PalletAuthorshipUncleEntryItem (326) */ + /** @name PalletAuthorshipUncleEntryItem (329) */ export interface PalletAuthorshipUncleEntryItem extends Enum { readonly isInclusionHeight: boolean; readonly asInclusionHeight: u32; @@ -2144,7 +2246,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'InclusionHeight' | 'Uncle'; } - /** @name PalletAuthorshipCall (327) */ + /** @name PalletAuthorshipCall (330) */ export interface PalletAuthorshipCall extends Enum { readonly isSetUncles: boolean; readonly asSetUncles: { @@ -2153,7 +2255,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetUncles'; } - /** @name PalletAuthorshipError (329) */ + /** @name PalletAuthorshipError (332) */ export interface PalletAuthorshipError extends Enum { readonly isInvalidUncleParent: boolean; readonly isUnclesAlreadySet: boolean; @@ -2165,14 +2267,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'InvalidUncleParent' | 'UnclesAlreadySet' | 'TooManyUncles' | 'GenesisUncle' | 'TooHighUncle' | 'UncleAlreadyIncluded' | 'OldUncle'; } - /** @name PalletBalancesBalanceLock (331) */ + /** @name PalletBalancesBalanceLock (334) */ export interface PalletBalancesBalanceLock extends Struct { readonly id: U8aFixed; readonly amount: u128; readonly reasons: PolymeshCommonUtilitiesBalancesReasons; } - /** @name PolymeshCommonUtilitiesBalancesReasons (332) */ + /** @name PolymeshCommonUtilitiesBalancesReasons (335) */ export interface PolymeshCommonUtilitiesBalancesReasons extends Enum { readonly isFee: boolean; readonly isMisc: boolean; @@ -2180,7 +2282,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Fee' | 'Misc' | 'All'; } - /** @name PalletBalancesCall (333) */ + /** @name PalletBalancesCall (336) */ export interface PalletBalancesCall extends Enum { readonly isTransfer: boolean; readonly asTransfer: { @@ -2216,7 +2318,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Transfer' | 'TransferWithMemo' | 'DepositBlockRewardReserveBalance' | 'SetBalance' | 'ForceTransfer' | 'BurnAccountBalance'; } - /** @name PalletBalancesError (335) */ + /** @name PalletBalancesError (338) */ export interface PalletBalancesError extends Enum { readonly isLiquidityRestrictions: boolean; readonly isOverflow: boolean; @@ -2226,14 +2328,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'LiquidityRestrictions' | 'Overflow' | 'InsufficientBalance' | 'ExistentialDeposit' | 'ReceiverCddMissing'; } - /** @name PalletTransactionPaymentReleases (337) */ + /** @name PalletTransactionPaymentReleases (340) */ export interface PalletTransactionPaymentReleases extends Enum { readonly isV1Ancient: boolean; readonly isV2: boolean; readonly type: 'V1Ancient' | 'V2'; } - /** @name FrameSupportWeightsWeightToFeeCoefficient (339) */ + /** @name FrameSupportWeightsWeightToFeeCoefficient (342) */ export interface FrameSupportWeightsWeightToFeeCoefficient extends Struct { readonly coeffInteger: u128; readonly coeffFrac: Perbill; @@ -2241,24 +2343,24 @@ declare module '@polkadot/types/lookup' { readonly degree: u8; } - /** @name PolymeshPrimitivesIdentityDidRecord (340) */ + /** @name PolymeshPrimitivesIdentityDidRecord (343) */ export interface PolymeshPrimitivesIdentityDidRecord extends Struct { readonly primaryKey: Option; } - /** @name PalletIdentityClaim1stKey (342) */ + /** @name PalletIdentityClaim1stKey (345) */ export interface PalletIdentityClaim1stKey extends Struct { readonly target: PolymeshPrimitivesIdentityId; readonly claimType: PolymeshPrimitivesIdentityClaimClaimType; } - /** @name PalletIdentityClaim2ndKey (343) */ + /** @name PalletIdentityClaim2ndKey (346) */ export interface PalletIdentityClaim2ndKey extends Struct { readonly issuer: PolymeshPrimitivesIdentityId; readonly scope: Option; } - /** @name PolymeshPrimitivesSecondaryKeyKeyRecord (345) */ + /** @name PolymeshPrimitivesSecondaryKeyKeyRecord (348) */ export interface PolymeshPrimitivesSecondaryKeyKeyRecord extends Enum { readonly isPrimaryKey: boolean; readonly asPrimaryKey: PolymeshPrimitivesIdentityId; @@ -2269,7 +2371,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'PrimaryKey' | 'SecondaryKey' | 'MultiSigSignerKey'; } - /** @name PolymeshPrimitivesAuthorization (348) */ + /** @name PolymeshPrimitivesAuthorization (351) */ export interface PolymeshPrimitivesAuthorization extends Struct { readonly authorizationData: PolymeshPrimitivesAuthorizationAuthorizationData; readonly authorizedBy: PolymeshPrimitivesIdentityId; @@ -2277,7 +2379,7 @@ declare module '@polkadot/types/lookup' { readonly authId: u64; } - /** @name PalletIdentityCall (351) */ + /** @name PalletIdentityCall (354) */ export interface PalletIdentityCall extends Enum { readonly isCddRegisterDid: boolean; readonly asCddRegisterDid: { @@ -2395,59 +2497,59 @@ declare module '@polkadot/types/lookup' { readonly type: 'CddRegisterDid' | 'InvalidateCddClaims' | 'RemoveSecondaryKeysOld' | 'AcceptPrimaryKey' | 'ChangeCddRequirementForMkRotation' | 'JoinIdentityAsKey' | 'LeaveIdentityAsKey' | 'AddClaim' | 'RevokeClaim' | 'SetPermissionToSigner' | 'PlaceholderLegacySetPermissionToSigner' | 'FreezeSecondaryKeys' | 'UnfreezeSecondaryKeys' | 'AddAuthorization' | 'RemoveAuthorization' | 'AddSecondaryKeysWithAuthorizationOld' | 'AddInvestorUniquenessClaim' | 'GcAddCddClaim' | 'GcRevokeCddClaim' | 'AddInvestorUniquenessClaimV2' | 'RevokeClaimByIndex' | 'RotatePrimaryKeyToSecondary' | 'AddSecondaryKeysWithAuthorization' | 'SetSecondaryKeyPermissions' | 'RemoveSecondaryKeys'; } - /** @name PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuthV1 (353) */ + /** @name PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuthV1 (356) */ export interface PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuthV1 extends Struct { readonly secondaryKey: PolymeshPrimitivesSecondaryKeyV1SecondaryKey; readonly authSignature: H512; } - /** @name PolymeshPrimitivesSecondaryKeyV1SecondaryKey (354) */ + /** @name PolymeshPrimitivesSecondaryKeyV1SecondaryKey (357) */ export interface PolymeshPrimitivesSecondaryKeyV1SecondaryKey extends Struct { readonly signer: PolymeshPrimitivesSecondaryKeySignatory; readonly permissions: PolymeshPrimitivesSecondaryKeyPermissions; } - /** @name PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData (356) */ + /** @name PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData (359) */ export interface PolymeshPrimitivesInvestorZkproofDataV1InvestorZKProofData extends SchnorrkelSignSignature {} - /** @name SchnorrkelSignSignature (357) */ + /** @name SchnorrkelSignSignature (360) */ export interface SchnorrkelSignSignature extends Struct { readonly r: Curve25519DalekRistrettoCompressedRistretto; readonly s: Curve25519DalekScalar; } - /** @name Curve25519DalekRistrettoCompressedRistretto (358) */ + /** @name Curve25519DalekRistrettoCompressedRistretto (361) */ export interface Curve25519DalekRistrettoCompressedRistretto extends U8aFixed {} - /** @name Curve25519DalekScalar (359) */ + /** @name Curve25519DalekScalar (362) */ export interface Curve25519DalekScalar extends Struct { readonly bytes: U8aFixed; } - /** @name ConfidentialIdentityClaimProofsScopeClaimProof (360) */ + /** @name ConfidentialIdentityClaimProofsScopeClaimProof (363) */ export interface ConfidentialIdentityClaimProofsScopeClaimProof extends Struct { readonly proofScopeIdWellformed: ConfidentialIdentitySignSignature; readonly proofScopeIdCddIdMatch: ConfidentialIdentityClaimProofsZkProofData; readonly scopeId: Curve25519DalekRistrettoRistrettoPoint; } - /** @name ConfidentialIdentitySignSignature (361) */ + /** @name ConfidentialIdentitySignSignature (364) */ export interface ConfidentialIdentitySignSignature extends Struct { readonly r: Curve25519DalekRistrettoCompressedRistretto; readonly s: Curve25519DalekScalar; } - /** @name ConfidentialIdentityClaimProofsZkProofData (362) */ + /** @name ConfidentialIdentityClaimProofsZkProofData (365) */ export interface ConfidentialIdentityClaimProofsZkProofData extends Struct { readonly challengeResponses: Vec; readonly subtractExpressionsRes: Curve25519DalekRistrettoRistrettoPoint; readonly blindedScopeDidHash: Curve25519DalekRistrettoRistrettoPoint; } - /** @name Curve25519DalekRistrettoRistrettoPoint (364) */ + /** @name Curve25519DalekRistrettoRistrettoPoint (367) */ export interface Curve25519DalekRistrettoRistrettoPoint extends Curve25519DalekEdwardsEdwardsPoint {} - /** @name Curve25519DalekEdwardsEdwardsPoint (365) */ + /** @name Curve25519DalekEdwardsEdwardsPoint (368) */ export interface Curve25519DalekEdwardsEdwardsPoint extends Struct { readonly x: Curve25519DalekBackendSerialU64FieldFieldElement51; readonly y: Curve25519DalekBackendSerialU64FieldFieldElement51; @@ -2455,16 +2557,16 @@ declare module '@polkadot/types/lookup' { readonly t: Curve25519DalekBackendSerialU64FieldFieldElement51; } - /** @name Curve25519DalekBackendSerialU64FieldFieldElement51 (366) */ + /** @name Curve25519DalekBackendSerialU64FieldFieldElement51 (369) */ export interface Curve25519DalekBackendSerialU64FieldFieldElement51 extends Vec {} - /** @name PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth (369) */ + /** @name PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth (372) */ export interface PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth extends Struct { readonly secondaryKey: PolymeshPrimitivesSecondaryKey; readonly authSignature: H512; } - /** @name PalletIdentityError (370) */ + /** @name PalletIdentityError (373) */ export interface PalletIdentityError extends Enum { readonly isAlreadyLinked: boolean; readonly isMissingCurrentIdentity: boolean; @@ -2502,14 +2604,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'AlreadyLinked' | 'MissingCurrentIdentity' | 'Unauthorized' | 'InvalidAccountKey' | 'UnAuthorizedCddProvider' | 'InvalidAuthorizationFromOwner' | 'InvalidAuthorizationFromCddProvider' | 'NotCddProviderAttestation' | 'AuthorizationsNotForSameDids' | 'DidMustAlreadyExist' | 'CurrentIdentityCannotBeForwarded' | 'AuthorizationExpired' | 'TargetHasNoCdd' | 'AuthorizationHasBeenRevoked' | 'InvalidAuthorizationSignature' | 'KeyNotAllowed' | 'NotPrimaryKey' | 'DidDoesNotExist' | 'DidAlreadyExists' | 'SecondaryKeysContainPrimaryKey' | 'FailedToChargeFee' | 'NotASigner' | 'CannotDecodeSignerAccountId' | 'MultiSigHasBalance' | 'ConfidentialScopeClaimNotAllowed' | 'InvalidScopeClaim' | 'ClaimVariantNotAllowed' | 'TargetHasNonZeroBalanceAtScopeId' | 'CddIdNotUniqueForIdentity' | 'InvalidCDDId' | 'ClaimAndProofVersionsDoNotMatch' | 'AccountKeyIsBeingUsed' | 'CustomScopeTooLong'; } - /** @name PolymeshCommonUtilitiesGroupInactiveMember (372) */ + /** @name PolymeshCommonUtilitiesGroupInactiveMember (375) */ export interface PolymeshCommonUtilitiesGroupInactiveMember extends Struct { readonly id: PolymeshPrimitivesIdentityId; readonly deactivatedAt: u64; readonly expiry: Option; } - /** @name PalletGroupCall (373) */ + /** @name PalletGroupCall (376) */ export interface PalletGroupCall extends Enum { readonly isSetActiveMembersLimit: boolean; readonly asSetActiveMembersLimit: { @@ -2542,7 +2644,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetActiveMembersLimit' | 'DisableMember' | 'AddMember' | 'RemoveMember' | 'SwapMember' | 'ResetMembers' | 'AbdicateMembership'; } - /** @name PalletGroupError (374) */ + /** @name PalletGroupError (377) */ export interface PalletGroupError extends Enum { readonly isOnlyPrimaryKeyAllowed: boolean; readonly isDuplicateMember: boolean; @@ -2554,7 +2656,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'OnlyPrimaryKeyAllowed' | 'DuplicateMember' | 'NoSuchMember' | 'LastMemberCannotQuit' | 'MissingCurrentIdentity' | 'ActiveMembersLimitExceeded' | 'ActiveMembersLimitOverflow'; } - /** @name PalletCommitteeCall (376) */ + /** @name PalletCommitteeCall (379) */ export interface PalletCommitteeCall extends Enum { readonly isSetVoteThreshold: boolean; readonly asSetVoteThreshold: { @@ -2583,7 +2685,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetVoteThreshold' | 'SetReleaseCoordinator' | 'SetExpiresAfter' | 'VoteOrPropose' | 'Vote'; } - /** @name PalletMultisigCall (382) */ + /** @name PalletMultisigCall (385) */ export interface PalletMultisigCall extends Enum { readonly isCreateMultisig: boolean; readonly asCreateMultisig: { @@ -2687,7 +2789,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'CreateMultisig' | 'CreateOrApproveProposalAsIdentity' | 'CreateOrApproveProposalAsKey' | 'CreateProposalAsIdentity' | 'CreateProposalAsKey' | 'ApproveAsIdentity' | 'ApproveAsKey' | 'RejectAsIdentity' | 'RejectAsKey' | 'AcceptMultisigSignerAsIdentity' | 'AcceptMultisigSignerAsKey' | 'AddMultisigSigner' | 'RemoveMultisigSigner' | 'AddMultisigSignersViaCreator' | 'RemoveMultisigSignersViaCreator' | 'ChangeSigsRequired' | 'MakeMultisigSecondary' | 'MakeMultisigPrimary' | 'ExecuteScheduledProposal'; } - /** @name PalletBridgeCall (383) */ + /** @name PalletBridgeCall (386) */ export interface PalletBridgeCall extends Enum { readonly isChangeController: boolean; readonly asChangeController: { @@ -2755,7 +2857,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'ChangeController' | 'ChangeAdmin' | 'ChangeTimelock' | 'Freeze' | 'Unfreeze' | 'ChangeBridgeLimit' | 'ChangeBridgeExempted' | 'ForceHandleBridgeTx' | 'BatchProposeBridgeTx' | 'ProposeBridgeTx' | 'HandleBridgeTx' | 'FreezeTxs' | 'UnfreezeTxs' | 'HandleScheduledBridgeTx' | 'AddFreezeAdmin' | 'RemoveFreezeAdmin' | 'RemoveTxs'; } - /** @name PalletStakingCall (387) */ + /** @name PalletStakingCall (390) */ export interface PalletStakingCall extends Enum { readonly isBond: boolean; readonly asBond: { @@ -2865,7 +2967,7 @@ declare module '@polkadot/types/lookup' { readonly asSubmitElectionSolution: { readonly winners: Vec; readonly compact: PalletStakingCompactAssignments; - readonly score: Vec; + readonly score: SpNposElectionsElectionScore; readonly era: u32; readonly size_: PalletStakingElectionSize; } & Struct; @@ -2873,7 +2975,7 @@ declare module '@polkadot/types/lookup' { readonly asSubmitElectionSolutionUnsigned: { readonly winners: Vec; readonly compact: PalletStakingCompactAssignments; - readonly score: Vec; + readonly score: SpNposElectionsElectionScore; readonly era: u32; readonly size_: PalletStakingElectionSize; } & Struct; @@ -2894,7 +2996,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Bond' | 'BondExtra' | 'Unbond' | 'WithdrawUnbonded' | 'Validate' | 'Nominate' | 'Chill' | 'SetPayee' | 'SetController' | 'SetValidatorCount' | 'IncreaseValidatorCount' | 'ScaleValidatorCount' | 'AddPermissionedValidator' | 'RemovePermissionedValidator' | 'ValidateCddExpiryNominators' | 'SetCommissionCap' | 'SetMinBondThreshold' | 'ForceNoEras' | 'ForceNewEra' | 'SetInvulnerables' | 'ForceUnstake' | 'ForceNewEraAlways' | 'CancelDeferredSlash' | 'PayoutStakers' | 'Rebond' | 'SetHistoryDepth' | 'ReapStash' | 'SubmitElectionSolution' | 'SubmitElectionSolutionUnsigned' | 'PayoutStakersBySystem' | 'ChangeSlashingAllowedFor' | 'UpdatePermissionedValidatorIntendedCount'; } - /** @name PalletStakingRewardDestination (388) */ + /** @name PalletStakingRewardDestination (391) */ export interface PalletStakingRewardDestination extends Enum { readonly isStaked: boolean; readonly isStash: boolean; @@ -2904,13 +3006,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Staked' | 'Stash' | 'Controller' | 'Account'; } - /** @name PalletStakingValidatorPrefs (389) */ + /** @name PalletStakingValidatorPrefs (392) */ export interface PalletStakingValidatorPrefs extends Struct { readonly commission: Compact; readonly blocked: bool; } - /** @name PalletStakingCompactAssignments (395) */ + /** @name PalletStakingCompactAssignments (398) */ export interface PalletStakingCompactAssignments extends Struct { readonly votes1: Vec, Compact]>>; readonly votes2: Vec, ITuple<[Compact, Compact]>, Compact]>>; @@ -2930,13 +3032,20 @@ declare module '@polkadot/types/lookup' { readonly votes16: Vec, Vec, Compact]>>, Compact]>>; } - /** @name PalletStakingElectionSize (447) */ + /** @name SpNposElectionsElectionScore (449) */ + export interface SpNposElectionsElectionScore extends Struct { + readonly minimalStake: u128; + readonly sumStake: u128; + readonly sumStakeSquared: u128; + } + + /** @name PalletStakingElectionSize (450) */ export interface PalletStakingElectionSize extends Struct { readonly validators: Compact; readonly nominators: Compact; } - /** @name PalletSessionCall (448) */ + /** @name PalletSessionCall (451) */ export interface PalletSessionCall extends Enum { readonly isSetKeys: boolean; readonly asSetKeys: { @@ -2947,7 +3056,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetKeys' | 'PurgeKeys'; } - /** @name PolymeshRuntimeDevelopRuntimeSessionKeys (449) */ + /** @name PolymeshRuntimeDevelopRuntimeSessionKeys (452) */ export interface PolymeshRuntimeDevelopRuntimeSessionKeys extends Struct { readonly grandpa: SpFinalityGrandpaAppPublic; readonly babe: SpConsensusBabeAppPublic; @@ -2955,10 +3064,10 @@ declare module '@polkadot/types/lookup' { readonly authorityDiscovery: SpAuthorityDiscoveryAppPublic; } - /** @name SpAuthorityDiscoveryAppPublic (450) */ + /** @name SpAuthorityDiscoveryAppPublic (453) */ export interface SpAuthorityDiscoveryAppPublic extends SpCoreSr25519Public {} - /** @name PalletGrandpaCall (451) */ + /** @name PalletGrandpaCall (454) */ export interface PalletGrandpaCall extends Enum { readonly isReportEquivocation: boolean; readonly asReportEquivocation: { @@ -2978,13 +3087,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'ReportEquivocation' | 'ReportEquivocationUnsigned' | 'NoteStalled'; } - /** @name SpFinalityGrandpaEquivocationProof (452) */ + /** @name SpFinalityGrandpaEquivocationProof (455) */ export interface SpFinalityGrandpaEquivocationProof extends Struct { readonly setId: u64; readonly equivocation: SpFinalityGrandpaEquivocation; } - /** @name SpFinalityGrandpaEquivocation (453) */ + /** @name SpFinalityGrandpaEquivocation (456) */ export interface SpFinalityGrandpaEquivocation extends Enum { readonly isPrevote: boolean; readonly asPrevote: FinalityGrandpaEquivocationPrevote; @@ -2993,7 +3102,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Prevote' | 'Precommit'; } - /** @name FinalityGrandpaEquivocationPrevote (454) */ + /** @name FinalityGrandpaEquivocationPrevote (457) */ export interface FinalityGrandpaEquivocationPrevote extends Struct { readonly roundNumber: u64; readonly identity: SpFinalityGrandpaAppPublic; @@ -3001,19 +3110,19 @@ declare module '@polkadot/types/lookup' { readonly second: ITuple<[FinalityGrandpaPrevote, SpFinalityGrandpaAppSignature]>; } - /** @name FinalityGrandpaPrevote (455) */ + /** @name FinalityGrandpaPrevote (458) */ export interface FinalityGrandpaPrevote extends Struct { readonly targetHash: H256; readonly targetNumber: u32; } - /** @name SpFinalityGrandpaAppSignature (456) */ + /** @name SpFinalityGrandpaAppSignature (459) */ export interface SpFinalityGrandpaAppSignature extends SpCoreEd25519Signature {} - /** @name SpCoreEd25519Signature (457) */ + /** @name SpCoreEd25519Signature (460) */ export interface SpCoreEd25519Signature extends U8aFixed {} - /** @name FinalityGrandpaEquivocationPrecommit (459) */ + /** @name FinalityGrandpaEquivocationPrecommit (462) */ export interface FinalityGrandpaEquivocationPrecommit extends Struct { readonly roundNumber: u64; readonly identity: SpFinalityGrandpaAppPublic; @@ -3021,13 +3130,13 @@ declare module '@polkadot/types/lookup' { readonly second: ITuple<[FinalityGrandpaPrecommit, SpFinalityGrandpaAppSignature]>; } - /** @name FinalityGrandpaPrecommit (460) */ + /** @name FinalityGrandpaPrecommit (463) */ export interface FinalityGrandpaPrecommit extends Struct { readonly targetHash: H256; readonly targetNumber: u32; } - /** @name PalletImOnlineCall (462) */ + /** @name PalletImOnlineCall (465) */ export interface PalletImOnlineCall extends Enum { readonly isHeartbeat: boolean; readonly asHeartbeat: { @@ -3037,7 +3146,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Heartbeat'; } - /** @name PalletImOnlineHeartbeat (463) */ + /** @name PalletImOnlineHeartbeat (466) */ export interface PalletImOnlineHeartbeat extends Struct { readonly blockNumber: u32; readonly networkState: SpCoreOffchainOpaqueNetworkState; @@ -3046,19 +3155,19 @@ declare module '@polkadot/types/lookup' { readonly validatorsLen: u32; } - /** @name SpCoreOffchainOpaqueNetworkState (464) */ + /** @name SpCoreOffchainOpaqueNetworkState (467) */ export interface SpCoreOffchainOpaqueNetworkState extends Struct { readonly peerId: Bytes; readonly externalAddresses: Vec; } - /** @name PalletImOnlineSr25519AppSr25519Signature (468) */ + /** @name PalletImOnlineSr25519AppSr25519Signature (471) */ export interface PalletImOnlineSr25519AppSr25519Signature extends SpCoreSr25519Signature {} - /** @name SpCoreSr25519Signature (469) */ + /** @name SpCoreSr25519Signature (472) */ export interface SpCoreSr25519Signature extends U8aFixed {} - /** @name PalletSudoCall (470) */ + /** @name PalletSudoCall (473) */ export interface PalletSudoCall extends Enum { readonly isSudo: boolean; readonly asSudo: { @@ -3081,7 +3190,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Sudo' | 'SudoUncheckedWeight' | 'SetKey' | 'SudoAs'; } - /** @name PalletAssetCall (471) */ + /** @name PalletAssetCall (474) */ export interface PalletAssetCall extends Enum { readonly isRegisterTicker: boolean; readonly asRegisterTicker: { @@ -3218,10 +3327,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'RegisterTicker' | 'AcceptTickerTransfer' | 'AcceptAssetOwnershipTransfer' | 'CreateAsset' | 'Freeze' | 'Unfreeze' | 'RenameAsset' | 'Issue' | 'Redeem' | 'MakeDivisible' | 'AddDocuments' | 'RemoveDocuments' | 'SetFundingRound' | 'UpdateIdentifiers' | 'ClaimClassicTicker' | 'ReserveClassicTicker' | 'ControllerTransfer' | 'RegisterCustomAssetType' | 'CreateAssetWithCustomType' | 'SetAssetMetadata' | 'SetAssetMetadataDetails' | 'RegisterAndSetLocalAssetMetadata' | 'RegisterAssetMetadataLocalType' | 'RegisterAssetMetadataGlobalType'; } - /** @name PolymeshPrimitivesEthereumEcdsaSignature (474) */ + /** @name PolymeshPrimitivesEthereumEcdsaSignature (477) */ export interface PolymeshPrimitivesEthereumEcdsaSignature extends U8aFixed {} - /** @name PalletAssetClassicTickerImport (476) */ + /** @name PalletAssetClassicTickerImport (479) */ export interface PalletAssetClassicTickerImport extends Struct { readonly ethOwner: PolymeshPrimitivesEthereumEthereumAddress; readonly ticker: PolymeshPrimitivesTicker; @@ -3229,13 +3338,13 @@ declare module '@polkadot/types/lookup' { readonly isCreated: bool; } - /** @name PalletAssetTickerRegistrationConfig (477) */ + /** @name PalletAssetTickerRegistrationConfig (480) */ export interface PalletAssetTickerRegistrationConfig extends Struct { readonly maxTickerLength: u8; readonly registrationLength: Option; } - /** @name PolymeshPrimitivesAssetMetadataAssetMetadataKey (478) */ + /** @name PolymeshPrimitivesAssetMetadataAssetMetadataKey (481) */ export interface PolymeshPrimitivesAssetMetadataAssetMetadataKey extends Enum { readonly isGlobal: boolean; readonly asGlobal: u64; @@ -3244,7 +3353,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Global' | 'Local'; } - /** @name PalletCorporateActionsDistributionCall (479) */ + /** @name PalletCorporateActionsDistributionCall (482) */ export interface PalletCorporateActionsDistributionCall extends Enum { readonly isDistribute: boolean; readonly asDistribute: { @@ -3276,7 +3385,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Distribute' | 'Claim' | 'PushBenefit' | 'Reclaim' | 'RemoveDistribution'; } - /** @name PalletAssetCheckpointCall (481) */ + /** @name PalletAssetCheckpointCall (484) */ export interface PalletAssetCheckpointCall extends Enum { readonly isCreateCheckpoint: boolean; readonly asCreateCheckpoint: { @@ -3299,14 +3408,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'CreateCheckpoint' | 'SetSchedulesMaxComplexity' | 'CreateSchedule' | 'RemoveSchedule'; } - /** @name PalletAssetCheckpointScheduleSpec (482) */ + /** @name PalletAssetCheckpointScheduleSpec (485) */ export interface PalletAssetCheckpointScheduleSpec extends Struct { readonly start: Option; readonly period: PolymeshPrimitivesCalendarCalendarPeriod; readonly remaining: u32; } - /** @name PalletComplianceManagerCall (483) */ + /** @name PalletComplianceManagerCall (486) */ export interface PalletComplianceManagerCall extends Enum { readonly isAddComplianceRequirement: boolean; readonly asAddComplianceRequirement: { @@ -3354,7 +3463,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'AddComplianceRequirement' | 'RemoveComplianceRequirement' | 'ReplaceAssetCompliance' | 'ResetAssetCompliance' | 'PauseAssetCompliance' | 'ResumeAssetCompliance' | 'AddDefaultTrustedClaimIssuer' | 'RemoveDefaultTrustedClaimIssuer' | 'ChangeComplianceRequirement'; } - /** @name PalletCorporateActionsCall (484) */ + /** @name PalletCorporateActionsCall (487) */ export interface PalletCorporateActionsCall extends Enum { readonly isSetMaxDetailsLength: boolean; readonly asSetMaxDetailsLength: { @@ -3414,7 +3523,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetMaxDetailsLength' | 'SetDefaultTargets' | 'SetDefaultWithholdingTax' | 'SetDidWithholdingTax' | 'InitiateCorporateAction' | 'LinkCaDoc' | 'RemoveCa' | 'ChangeRecordDate' | 'InitiateCorporateActionAndDistribute'; } - /** @name PalletCorporateActionsRecordDateSpec (486) */ + /** @name PalletCorporateActionsRecordDateSpec (489) */ export interface PalletCorporateActionsRecordDateSpec extends Enum { readonly isScheduled: boolean; readonly asScheduled: u64; @@ -3425,7 +3534,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Scheduled' | 'ExistingSchedule' | 'Existing'; } - /** @name PalletCorporateActionsInitiateCorporateActionArgs (489) */ + /** @name PalletCorporateActionsInitiateCorporateActionArgs (492) */ export interface PalletCorporateActionsInitiateCorporateActionArgs extends Struct { readonly ticker: PolymeshPrimitivesTicker; readonly kind: PalletCorporateActionsCaKind; @@ -3437,7 +3546,7 @@ declare module '@polkadot/types/lookup' { readonly withholdingTax: Option>>; } - /** @name PalletCorporateActionsBallotCall (490) */ + /** @name PalletCorporateActionsBallotCall (493) */ export interface PalletCorporateActionsBallotCall extends Enum { readonly isAttachBallot: boolean; readonly asAttachBallot: { @@ -3473,7 +3582,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'AttachBallot' | 'Vote' | 'ChangeEnd' | 'ChangeMeta' | 'ChangeRcv' | 'RemoveBallot'; } - /** @name PalletPipsCall (491) */ + /** @name PalletPipsCall (494) */ export interface PalletPipsCall extends Enum { readonly isSetPruneHistoricalPips: boolean; readonly asSetPruneHistoricalPips: { @@ -3547,7 +3656,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetPruneHistoricalPips' | 'SetMinProposalDeposit' | 'SetDefaultEnactmentPeriod' | 'SetPendingPipExpiry' | 'SetMaxPipSkipCount' | 'SetActivePipLimit' | 'Propose' | 'Vote' | 'ApproveCommitteeProposal' | 'RejectProposal' | 'PruneProposal' | 'RescheduleExecution' | 'ClearSnapshot' | 'Snapshot' | 'EnactSnapshotResults' | 'ExecuteScheduledPip' | 'ExpireScheduledPip'; } - /** @name PalletPipsSnapshotResult (494) */ + /** @name PalletPipsSnapshotResult (497) */ export interface PalletPipsSnapshotResult extends Enum { readonly isApprove: boolean; readonly isReject: boolean; @@ -3555,7 +3664,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Approve' | 'Reject' | 'Skip'; } - /** @name PalletPortfolioCall (495) */ + /** @name PalletPortfolioCall (498) */ export interface PalletPortfolioCall extends Enum { readonly isCreatePortfolio: boolean; readonly asCreatePortfolio: { @@ -3587,14 +3696,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'CreatePortfolio' | 'DeletePortfolio' | 'MovePortfolioFunds' | 'RenamePortfolio' | 'QuitPortfolioCustody' | 'AcceptPortfolioCustody'; } - /** @name PalletPortfolioMovePortfolioItem (497) */ + /** @name PalletPortfolioMovePortfolioItem (500) */ export interface PalletPortfolioMovePortfolioItem extends Struct { readonly ticker: PolymeshPrimitivesTicker; readonly amount: u128; readonly memo: Option; } - /** @name PalletProtocolFeeCall (498) */ + /** @name PalletProtocolFeeCall (501) */ export interface PalletProtocolFeeCall extends Enum { readonly isChangeCoefficient: boolean; readonly asChangeCoefficient: { @@ -3608,7 +3717,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'ChangeCoefficient' | 'ChangeBaseFee'; } - /** @name PolymeshCommonUtilitiesProtocolFeeProtocolOp (499) */ + /** @name PolymeshCommonUtilitiesProtocolFeeProtocolOp (502) */ export interface PolymeshCommonUtilitiesProtocolFeeProtocolOp extends Enum { readonly isAssetRegisterTicker: boolean; readonly isAssetIssue: boolean; @@ -3626,14 +3735,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'AssetRegisterTicker' | 'AssetIssue' | 'AssetAddDocuments' | 'AssetCreateAsset' | 'CheckpointCreateSchedule' | 'ComplianceManagerAddComplianceRequirement' | 'IdentityCddRegisterDid' | 'IdentityAddClaim' | 'IdentityAddSecondaryKeysWithAuthorization' | 'PipsPropose' | 'ContractsPutCode' | 'CorporateBallotAttachBallot' | 'CapitalDistributionDistribute'; } - /** @name PalletSchedulerCall (500) */ + /** @name PalletSchedulerCall (503) */ export interface PalletSchedulerCall extends Enum { readonly isSchedule: boolean; readonly asSchedule: { readonly when: u32; readonly maybePeriodic: Option>; readonly priority: u8; - readonly call: Call; + readonly call: FrameSupportScheduleMaybeHashed; } & Struct; readonly isCancel: boolean; readonly asCancel: { @@ -3646,7 +3755,7 @@ declare module '@polkadot/types/lookup' { readonly when: u32; readonly maybePeriodic: Option>; readonly priority: u8; - readonly call: Call; + readonly call: FrameSupportScheduleMaybeHashed; } & Struct; readonly isCancelNamed: boolean; readonly asCancelNamed: { @@ -3657,7 +3766,7 @@ declare module '@polkadot/types/lookup' { readonly after: u32; readonly maybePeriodic: Option>; readonly priority: u8; - readonly call: Call; + readonly call: FrameSupportScheduleMaybeHashed; } & Struct; readonly isScheduleNamedAfter: boolean; readonly asScheduleNamedAfter: { @@ -3665,12 +3774,21 @@ declare module '@polkadot/types/lookup' { readonly after: u32; readonly maybePeriodic: Option>; readonly priority: u8; - readonly call: Call; + readonly call: FrameSupportScheduleMaybeHashed; } & Struct; readonly type: 'Schedule' | 'Cancel' | 'ScheduleNamed' | 'CancelNamed' | 'ScheduleAfter' | 'ScheduleNamedAfter'; } - /** @name PalletSettlementCall (502) */ + /** @name FrameSupportScheduleMaybeHashed (505) */ + export interface FrameSupportScheduleMaybeHashed extends Enum { + readonly isValue: boolean; + readonly asValue: Call; + readonly isHash: boolean; + readonly asHash: H256; + readonly type: 'Value' | 'Hash'; + } + + /** @name PalletSettlementCall (506) */ export interface PalletSettlementCall extends Enum { readonly isCreateVenue: boolean; readonly asCreateVenue: { @@ -3772,7 +3890,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'CreateVenue' | 'UpdateVenueDetails' | 'UpdateVenueType' | 'AddInstruction' | 'AddAndAffirmInstruction' | 'AffirmInstruction' | 'WithdrawAffirmation' | 'RejectInstruction' | 'AffirmWithReceipts' | 'ClaimReceipt' | 'UnclaimReceipt' | 'SetVenueFiltering' | 'AllowVenues' | 'DisallowVenues' | 'ChangeReceiptValidity' | 'ExecuteScheduledInstruction' | 'RescheduleInstruction'; } - /** @name PalletSettlementReceiptDetails (504) */ + /** @name PalletSettlementReceiptDetails (508) */ export interface PalletSettlementReceiptDetails extends Struct { readonly receiptUid: u64; readonly legId: u64; @@ -3781,7 +3899,7 @@ declare module '@polkadot/types/lookup' { readonly metadata: Bytes; } - /** @name SpRuntimeMultiSignature (505) */ + /** @name SpRuntimeMultiSignature (509) */ export interface SpRuntimeMultiSignature extends Enum { readonly isEd25519: boolean; readonly asEd25519: SpCoreEd25519Signature; @@ -3792,10 +3910,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa'; } - /** @name SpCoreEcdsaSignature (506) */ + /** @name SpCoreEcdsaSignature (510) */ export interface SpCoreEcdsaSignature extends U8aFixed {} - /** @name PalletStatisticsCall (507) */ + /** @name PalletStatisticsCall (511) */ export interface PalletStatisticsCall extends Enum { readonly isSetActiveAssetStats: boolean; readonly asSetActiveAssetStats: { @@ -3822,19 +3940,19 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetActiveAssetStats' | 'BatchUpdateAssetStats' | 'SetAssetTransferCompliance' | 'SetEntitiesExempt'; } - /** @name BTreeSetStatType (508) */ + /** @name BTreeSetStatType (512) */ export interface BTreeSetStatType extends Vec {} - /** @name BTreeSetStatUpdate (509) */ + /** @name BTreeSetStatUpdate (513) */ export interface BTreeSetStatUpdate extends Vec {} - /** @name BTreeSetTransferCondition (510) */ + /** @name BTreeSetTransferCondition (514) */ export interface BTreeSetTransferCondition extends Vec {} - /** @name BTreeSetIdentityId (511) */ + /** @name BTreeSetIdentityId (515) */ export interface BTreeSetIdentityId extends Vec {} - /** @name PalletStoCall (512) */ + /** @name PalletStoCall (516) */ export interface PalletStoCall extends Enum { readonly isCreateFundraiser: boolean; readonly asCreateFundraiser: { @@ -3884,13 +4002,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'CreateFundraiser' | 'Invest' | 'FreezeFundraiser' | 'UnfreezeFundraiser' | 'ModifyFundraiserWindow' | 'Stop'; } - /** @name PalletStoPriceTier (514) */ + /** @name PalletStoPriceTier (518) */ export interface PalletStoPriceTier extends Struct { readonly total: u128; readonly price: u128; } - /** @name PalletTreasuryCall (516) */ + /** @name PalletTreasuryCall (520) */ export interface PalletTreasuryCall extends Enum { readonly isDisbursement: boolean; readonly asDisbursement: { @@ -3903,13 +4021,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Disbursement' | 'Reimbursement'; } - /** @name PolymeshPrimitivesBeneficiary (518) */ + /** @name PolymeshPrimitivesBeneficiary (522) */ export interface PolymeshPrimitivesBeneficiary extends Struct { readonly id: PolymeshPrimitivesIdentityId; readonly amount: u128; } - /** @name PalletUtilityCall (519) */ + /** @name PalletUtilityCall (523) */ export interface PalletUtilityCall extends Enum { readonly isBatch: boolean; readonly asBatch: { @@ -3932,16 +4050,16 @@ declare module '@polkadot/types/lookup' { readonly type: 'Batch' | 'BatchAtomic' | 'BatchOptimistic' | 'RelayTx'; } - /** @name PalletUtilityUniqueCall (521) */ + /** @name PalletUtilityUniqueCall (525) */ export interface PalletUtilityUniqueCall extends Struct { readonly nonce: u64; readonly call: Call; } - /** @name PalletBaseCall (522) */ + /** @name PalletBaseCall (526) */ export type PalletBaseCall = Null; - /** @name PalletExternalAgentsCall (523) */ + /** @name PalletExternalAgentsCall (527) */ export interface PalletExternalAgentsCall extends Enum { readonly isCreateGroup: boolean; readonly asCreateGroup: { @@ -3988,7 +4106,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'CreateGroup' | 'SetGroupPermissions' | 'RemoveAgent' | 'Abdicate' | 'ChangeGroup' | 'AcceptBecomeAgent' | 'CreateGroupAndAddAuth' | 'CreateAndChangeCustomGroup'; } - /** @name PalletRelayerCall (524) */ + /** @name PalletRelayerCall (528) */ export interface PalletRelayerCall extends Enum { readonly isSetPayingKey: boolean; readonly asSetPayingKey: { @@ -4022,7 +4140,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetPayingKey' | 'AcceptPayingKey' | 'RemovePayingKey' | 'UpdatePolyxLimit' | 'IncreasePolyxLimit' | 'DecreasePolyxLimit'; } - /** @name PalletRewardsCall (525) */ + /** @name PalletRewardsCall (529) */ export interface PalletRewardsCall extends Enum { readonly isClaimItnReward: boolean; readonly asClaimItnReward: { @@ -4038,7 +4156,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'ClaimItnReward' | 'SetItnRewardStatus'; } - /** @name PalletRewardsItnRewardStatus (526) */ + /** @name PalletRewardsItnRewardStatus (530) */ export interface PalletRewardsItnRewardStatus extends Enum { readonly isUnclaimed: boolean; readonly asUnclaimed: u128; @@ -4046,7 +4164,61 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unclaimed' | 'Claimed'; } - /** @name PalletTestUtilsCall (527) */ + /** @name PolymeshContractsCall (531) */ + export interface PolymeshContractsCall extends Enum { + readonly isCall: boolean; + readonly asCall: { + readonly contract: AccountId32; + readonly value: u128; + readonly gasLimit: u64; + readonly storageDepositLimit: Option; + readonly data: Bytes; + } & Struct; + readonly isInstantiateWithCode: boolean; + readonly asInstantiateWithCode: { + readonly endowment: u128; + readonly gasLimit: u64; + readonly storageDepositLimit: Option; + readonly code: Bytes; + readonly data: Bytes; + readonly salt: Bytes; + readonly perms: PolymeshPrimitivesSecondaryKeyPermissions; + } & Struct; + readonly isInstantiateWithHash: boolean; + readonly asInstantiateWithHash: { + readonly endowment: u128; + readonly gasLimit: u64; + readonly storageDepositLimit: Option; + readonly codeHash: H256; + readonly data: Bytes; + readonly salt: Bytes; + readonly perms: PolymeshPrimitivesSecondaryKeyPermissions; + } & Struct; + readonly type: 'Call' | 'InstantiateWithCode' | 'InstantiateWithHash'; + } + + /** @name PalletPreimageCall (532) */ + export interface PalletPreimageCall extends Enum { + readonly isNotePreimage: boolean; + readonly asNotePreimage: { + readonly bytes: Bytes; + } & Struct; + readonly isUnnotePreimage: boolean; + readonly asUnnotePreimage: { + readonly hash_: H256; + } & Struct; + readonly isRequestPreimage: boolean; + readonly asRequestPreimage: { + readonly hash_: H256; + } & Struct; + readonly isUnrequestPreimage: boolean; + readonly asUnrequestPreimage: { + readonly hash_: H256; + } & Struct; + readonly type: 'NotePreimage' | 'UnnotePreimage' | 'RequestPreimage' | 'UnrequestPreimage'; + } + + /** @name PalletTestUtilsCall (533) */ export interface PalletTestUtilsCall extends Enum { readonly isRegisterDid: boolean; readonly asRegisterDid: { @@ -4065,7 +4237,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'RegisterDid' | 'MockCddRegisterDid' | 'GetMyDid' | 'GetCddOf'; } - /** @name PalletCommitteePolymeshVotes (528) */ + /** @name PalletCommitteePolymeshVotes (534) */ export interface PalletCommitteePolymeshVotes extends Struct { readonly index: u32; readonly ayes: Vec; @@ -4073,7 +4245,7 @@ declare module '@polkadot/types/lookup' { readonly expiry: PolymeshCommonUtilitiesMaybeBlock; } - /** @name PalletCommitteeError (530) */ + /** @name PalletCommitteeError (536) */ export interface PalletCommitteeError extends Enum { readonly isDuplicateVote: boolean; readonly isNotAMember: boolean; @@ -4087,7 +4259,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'DuplicateVote' | 'NotAMember' | 'NoSuchProposal' | 'ProposalExpired' | 'DuplicateProposal' | 'MismatchedVotingIndex' | 'InvalidProportion' | 'FirstVoteReject' | 'ProposalsLimitReached'; } - /** @name PalletMultisigProposalDetails (540) */ + /** @name PalletMultisigProposalDetails (546) */ export interface PalletMultisigProposalDetails extends Struct { readonly approvals: u64; readonly rejections: u64; @@ -4096,7 +4268,7 @@ declare module '@polkadot/types/lookup' { readonly autoClose: bool; } - /** @name PalletMultisigProposalStatus (541) */ + /** @name PalletMultisigProposalStatus (547) */ export interface PalletMultisigProposalStatus extends Enum { readonly isInvalid: boolean; readonly isActiveOrExpired: boolean; @@ -4106,7 +4278,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Invalid' | 'ActiveOrExpired' | 'ExecutionSuccessful' | 'ExecutionFailed' | 'Rejected'; } - /** @name PalletMultisigError (543) */ + /** @name PalletMultisigError (549) */ export interface PalletMultisigError extends Enum { readonly isCddMissing: boolean; readonly isProposalMissing: boolean; @@ -4136,7 +4308,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'CddMissing' | 'ProposalMissing' | 'DecodingError' | 'NoSigners' | 'RequiredSignaturesOutOfBounds' | 'NotASigner' | 'NoSuchMultisig' | 'NotEnoughSigners' | 'NonceOverflow' | 'AlreadyVoted' | 'AlreadyASigner' | 'FailedToChargeFee' | 'IdentityNotCreator' | 'ChangeNotAllowed' | 'SignerAlreadyLinkedToMultisig' | 'SignerAlreadyLinkedToIdentity' | 'MultisigNotAllowedToLinkToItself' | 'MissingCurrentIdentity' | 'NotPrimaryKey' | 'ProposalAlreadyRejected' | 'ProposalExpired' | 'ProposalAlreadyExecuted' | 'MultisigMissingIdentity' | 'FailedToSchedule' | 'TooManySigners'; } - /** @name PalletBridgeBridgeTxDetail (545) */ + /** @name PalletBridgeBridgeTxDetail (551) */ export interface PalletBridgeBridgeTxDetail extends Struct { readonly amount: u128; readonly status: PalletBridgeBridgeTxStatus; @@ -4144,7 +4316,7 @@ declare module '@polkadot/types/lookup' { readonly txHash: H256; } - /** @name PalletBridgeBridgeTxStatus (546) */ + /** @name PalletBridgeBridgeTxStatus (552) */ export interface PalletBridgeBridgeTxStatus extends Enum { readonly isAbsent: boolean; readonly isPending: boolean; @@ -4155,7 +4327,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Absent' | 'Pending' | 'Frozen' | 'Timelocked' | 'Handled'; } - /** @name PalletBridgeError (549) */ + /** @name PalletBridgeError (555) */ export interface PalletBridgeError extends Enum { readonly isControllerNotSet: boolean; readonly isBadCaller: boolean; @@ -4173,7 +4345,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'ControllerNotSet' | 'BadCaller' | 'BadAdmin' | 'NoValidCdd' | 'ProposalAlreadyHandled' | 'Unauthorized' | 'Frozen' | 'NotFrozen' | 'FrozenTx' | 'BridgeLimitReached' | 'Overflow' | 'DivisionByZero' | 'TimelockedTx'; } - /** @name PalletStakingStakingLedger (550) */ + /** @name PalletStakingStakingLedger (556) */ export interface PalletStakingStakingLedger extends Struct { readonly stash: AccountId32; readonly total: Compact; @@ -4182,32 +4354,32 @@ declare module '@polkadot/types/lookup' { readonly claimedRewards: Vec; } - /** @name PalletStakingUnlockChunk (552) */ + /** @name PalletStakingUnlockChunk (558) */ export interface PalletStakingUnlockChunk extends Struct { readonly value: Compact; readonly era: Compact; } - /** @name PalletStakingNominations (553) */ + /** @name PalletStakingNominations (559) */ export interface PalletStakingNominations extends Struct { readonly targets: Vec; readonly submittedIn: u32; readonly suppressed: bool; } - /** @name PalletStakingActiveEraInfo (554) */ + /** @name PalletStakingActiveEraInfo (560) */ export interface PalletStakingActiveEraInfo extends Struct { readonly index: u32; readonly start: Option; } - /** @name PalletStakingEraRewardPoints (556) */ + /** @name PalletStakingEraRewardPoints (562) */ export interface PalletStakingEraRewardPoints extends Struct { readonly total: u32; readonly individual: BTreeMap; } - /** @name PalletStakingForcing (559) */ + /** @name PalletStakingForcing (565) */ export interface PalletStakingForcing extends Enum { readonly isNotForcing: boolean; readonly isForceNew: boolean; @@ -4216,7 +4388,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'NotForcing' | 'ForceNew' | 'ForceNone' | 'ForceAlways'; } - /** @name PalletStakingUnappliedSlash (561) */ + /** @name PalletStakingUnappliedSlash (567) */ export interface PalletStakingUnappliedSlash extends Struct { readonly validator: AccountId32; readonly own: u128; @@ -4225,7 +4397,7 @@ declare module '@polkadot/types/lookup' { readonly payout: u128; } - /** @name PalletStakingSlashingSlashingSpans (565) */ + /** @name PalletStakingSlashingSlashingSpans (571) */ export interface PalletStakingSlashingSlashingSpans extends Struct { readonly spanIndex: u32; readonly lastStart: u32; @@ -4233,20 +4405,20 @@ declare module '@polkadot/types/lookup' { readonly prior: Vec; } - /** @name PalletStakingSlashingSpanRecord (566) */ + /** @name PalletStakingSlashingSpanRecord (572) */ export interface PalletStakingSlashingSpanRecord extends Struct { readonly slashed: u128; readonly paidOut: u128; } - /** @name PalletStakingElectionResult (567) */ + /** @name PalletStakingElectionResult (573) */ export interface PalletStakingElectionResult extends Struct { readonly electedStashes: Vec; readonly exposures: Vec>; readonly compute: PalletStakingElectionCompute; } - /** @name PalletStakingElectionStatus (568) */ + /** @name PalletStakingElectionStatus (574) */ export interface PalletStakingElectionStatus extends Enum { readonly isClosed: boolean; readonly isOpen: boolean; @@ -4254,13 +4426,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Closed' | 'Open'; } - /** @name PalletStakingPermissionedIdentityPrefs (569) */ + /** @name PalletStakingPermissionedIdentityPrefs (575) */ export interface PalletStakingPermissionedIdentityPrefs extends Struct { readonly intendedCount: u32; readonly runningCount: u32; } - /** @name PalletStakingReleases (570) */ + /** @name PalletStakingReleases (576) */ export interface PalletStakingReleases extends Enum { readonly isV100Ancient: boolean; readonly isV200: boolean; @@ -4273,7 +4445,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'V100Ancient' | 'V200' | 'V300' | 'V400' | 'V500' | 'V600' | 'V601' | 'V700'; } - /** @name PalletStakingError (571) */ + /** @name PalletStakingError (577) */ export interface PalletStakingError extends Enum { readonly isNotController: boolean; readonly isNotStash: boolean; @@ -4320,16 +4492,16 @@ declare module '@polkadot/types/lookup' { readonly type: 'NotController' | 'NotStash' | 'AlreadyBonded' | 'AlreadyPaired' | 'EmptyTargets' | 'InvalidSlashIndex' | 'InsufficientValue' | 'NoMoreChunks' | 'NoUnlockChunk' | 'FundedTarget' | 'InvalidEraToReward' | 'NotSortedAndUnique' | 'AlreadyClaimed' | 'OffchainElectionEarlySubmission' | 'OffchainElectionWeakSubmission' | 'SnapshotUnavailable' | 'OffchainElectionBogusWinnerCount' | 'OffchainElectionBogusWinner' | 'OffchainElectionBogusCompact' | 'OffchainElectionBogusNominator' | 'OffchainElectionBogusNomination' | 'OffchainElectionSlashedNomination' | 'OffchainElectionBogusSelfVote' | 'OffchainElectionBogusEdge' | 'OffchainElectionBogusScore' | 'OffchainElectionBogusElectionSize' | 'CallNotAllowed' | 'IncorrectSlashingSpans' | 'AlreadyExists' | 'NotExists' | 'NoChange' | 'InvalidValidatorIdentity' | 'InvalidValidatorCommission' | 'StashIdentityDoesNotExist' | 'StashIdentityNotPermissioned' | 'StashIdentityNotCDDed' | 'HitIntendedValidatorCount' | 'IntendedCountIsExceedingConsensusLimit' | 'BondTooSmall' | 'BadState' | 'TooManyTargets' | 'BadTarget'; } - /** @name SpStakingOffenceOffenceDetails (572) */ + /** @name SpStakingOffenceOffenceDetails (578) */ export interface SpStakingOffenceOffenceDetails extends Struct { readonly offender: ITuple<[AccountId32, PalletStakingExposure]>; readonly reporters: Vec; } - /** @name SpCoreCryptoKeyTypeId (577) */ + /** @name SpCoreCryptoKeyTypeId (583) */ export interface SpCoreCryptoKeyTypeId extends U8aFixed {} - /** @name PalletSessionError (578) */ + /** @name PalletSessionError (584) */ export interface PalletSessionError extends Enum { readonly isInvalidProof: boolean; readonly isNoAssociatedValidatorId: boolean; @@ -4339,7 +4511,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'InvalidProof' | 'NoAssociatedValidatorId' | 'DuplicatedKey' | 'NoKeys' | 'NoAccount'; } - /** @name PalletGrandpaStoredState (579) */ + /** @name PalletGrandpaStoredState (585) */ export interface PalletGrandpaStoredState extends Enum { readonly isLive: boolean; readonly isPendingPause: boolean; @@ -4356,7 +4528,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Live' | 'PendingPause' | 'Paused' | 'PendingResume'; } - /** @name PalletGrandpaStoredPendingChange (580) */ + /** @name PalletGrandpaStoredPendingChange (586) */ export interface PalletGrandpaStoredPendingChange extends Struct { readonly scheduledAt: u32; readonly delay: u32; @@ -4364,7 +4536,7 @@ declare module '@polkadot/types/lookup' { readonly forced: Option; } - /** @name PalletGrandpaError (582) */ + /** @name PalletGrandpaError (588) */ export interface PalletGrandpaError extends Enum { readonly isPauseFailed: boolean; readonly isResumeFailed: boolean; @@ -4376,32 +4548,32 @@ declare module '@polkadot/types/lookup' { readonly type: 'PauseFailed' | 'ResumeFailed' | 'ChangePending' | 'TooSoon' | 'InvalidKeyOwnershipProof' | 'InvalidEquivocationProof' | 'DuplicateOffenceReport'; } - /** @name PalletImOnlineBoundedOpaqueNetworkState (586) */ + /** @name PalletImOnlineBoundedOpaqueNetworkState (592) */ export interface PalletImOnlineBoundedOpaqueNetworkState extends Struct { readonly peerId: Bytes; readonly externalAddresses: Vec; } - /** @name PalletImOnlineError (590) */ + /** @name PalletImOnlineError (596) */ export interface PalletImOnlineError extends Enum { readonly isInvalidKey: boolean; readonly isDuplicatedHeartbeat: boolean; readonly type: 'InvalidKey' | 'DuplicatedHeartbeat'; } - /** @name PalletSudoError (591) */ + /** @name PalletSudoError (598) */ export interface PalletSudoError extends Enum { readonly isRequireSudo: boolean; readonly type: 'RequireSudo'; } - /** @name PalletAssetTickerRegistration (592) */ + /** @name PalletAssetTickerRegistration (599) */ export interface PalletAssetTickerRegistration extends Struct { readonly owner: PolymeshPrimitivesIdentityId; readonly expiry: Option; } - /** @name PalletAssetSecurityToken (593) */ + /** @name PalletAssetSecurityToken (600) */ export interface PalletAssetSecurityToken extends Struct { readonly totalSupply: u128; readonly ownerDid: PolymeshPrimitivesIdentityId; @@ -4409,7 +4581,7 @@ declare module '@polkadot/types/lookup' { readonly assetType: PolymeshPrimitivesAssetAssetType; } - /** @name PalletAssetAssetOwnershipRelation (597) */ + /** @name PalletAssetAssetOwnershipRelation (604) */ export interface PalletAssetAssetOwnershipRelation extends Enum { readonly isNotOwned: boolean; readonly isTickerOwned: boolean; @@ -4417,13 +4589,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'NotOwned' | 'TickerOwned' | 'AssetOwned'; } - /** @name PalletAssetClassicTickerRegistration (599) */ + /** @name PalletAssetClassicTickerRegistration (606) */ export interface PalletAssetClassicTickerRegistration extends Struct { readonly ethOwner: PolymeshPrimitivesEthereumEthereumAddress; readonly isCreated: bool; } - /** @name PalletAssetError (605) */ + /** @name PalletAssetError (612) */ export interface PalletAssetError extends Enum { readonly isUnauthorized: boolean; readonly isAlreadyArchived: boolean; @@ -4466,12 +4638,11 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unauthorized' | 'AlreadyArchived' | 'AlreadyUnArchived' | 'ExtensionAlreadyPresent' | 'AssetAlreadyCreated' | 'TickerTooLong' | 'TickerNotAscii' | 'TickerAlreadyRegistered' | 'TotalSupplyAboveLimit' | 'NoSuchAsset' | 'AlreadyFrozen' | 'NotAnOwner' | 'BalanceOverflow' | 'TotalSupplyOverflow' | 'InvalidGranularity' | 'NotFrozen' | 'InvalidTransfer' | 'InsufficientBalance' | 'AssetAlreadyDivisible' | 'MaximumTMExtensionLimitReached' | 'IncompatibleExtensionVersion' | 'InvalidEthereumSignature' | 'NoSuchClassicTicker' | 'TickerRegistrationExpired' | 'SenderSameAsReceiver' | 'NoSuchDoc' | 'MaxLengthOfAssetNameExceeded' | 'FundingRoundNameMaxLengthExceeded' | 'InvalidAssetIdentifier' | 'InvestorUniquenessClaimNotAllowed' | 'InvalidCustomAssetTypeId' | 'AssetMetadataNameMaxLengthExceeded' | 'AssetMetadataValueMaxLengthExceeded' | 'AssetMetadataTypeDefMaxLengthExceeded' | 'AssetMetadataKeyIsMissing' | 'AssetMetadataValueIsLocked' | 'AssetMetadataLocalKeyAlreadyExists' | 'AssetMetadataGlobalKeyAlreadyExists'; } - /** @name PalletCorporateActionsDistributionError (608) */ + /** @name PalletCorporateActionsDistributionError (615) */ export interface PalletCorporateActionsDistributionError extends Enum { readonly isCaNotBenefit: boolean; readonly isAlreadyExists: boolean; readonly isExpiryBeforePayment: boolean; - readonly isDistributingAsset: boolean; readonly isHolderAlreadyPaid: boolean; readonly isNoSuchDistribution: boolean; readonly isCannotClaimBeforeStart: boolean; @@ -4482,10 +4653,12 @@ declare module '@polkadot/types/lookup' { readonly isNotExpired: boolean; readonly isDistributionStarted: boolean; readonly isInsufficientRemainingAmount: boolean; - readonly type: 'CaNotBenefit' | 'AlreadyExists' | 'ExpiryBeforePayment' | 'DistributingAsset' | 'HolderAlreadyPaid' | 'NoSuchDistribution' | 'CannotClaimBeforeStart' | 'CannotClaimAfterExpiry' | 'BalancePerShareProductOverflowed' | 'NotDistributionCreator' | 'AlreadyReclaimed' | 'NotExpired' | 'DistributionStarted' | 'InsufficientRemainingAmount'; + readonly isDistributionAmountIsZero: boolean; + readonly isDistributionPerShareIsZero: boolean; + readonly type: 'CaNotBenefit' | 'AlreadyExists' | 'ExpiryBeforePayment' | 'HolderAlreadyPaid' | 'NoSuchDistribution' | 'CannotClaimBeforeStart' | 'CannotClaimAfterExpiry' | 'BalancePerShareProductOverflowed' | 'NotDistributionCreator' | 'AlreadyReclaimed' | 'NotExpired' | 'DistributionStarted' | 'InsufficientRemainingAmount' | 'DistributionAmountIsZero' | 'DistributionPerShareIsZero'; } - /** @name PalletAssetCheckpointError (615) */ + /** @name PalletAssetCheckpointError (622) */ export interface PalletAssetCheckpointError extends Enum { readonly isNoSuchSchedule: boolean; readonly isScheduleNotRemovable: boolean; @@ -4495,13 +4668,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'NoSuchSchedule' | 'ScheduleNotRemovable' | 'FailedToComputeNextCheckpoint' | 'ScheduleDurationTooShort' | 'SchedulesTooComplex'; } - /** @name PolymeshPrimitivesComplianceManagerAssetCompliance (616) */ + /** @name PolymeshPrimitivesComplianceManagerAssetCompliance (623) */ export interface PolymeshPrimitivesComplianceManagerAssetCompliance extends Struct { readonly paused: bool; readonly requirements: Vec; } - /** @name PalletComplianceManagerError (618) */ + /** @name PalletComplianceManagerError (625) */ export interface PalletComplianceManagerError extends Enum { readonly isUnauthorized: boolean; readonly isDidNotExist: boolean; @@ -4512,7 +4685,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unauthorized' | 'DidNotExist' | 'InvalidComplianceRequirementId' | 'IncorrectOperationOnTrustedIssuer' | 'DuplicateComplianceRequirements' | 'ComplianceRequirementTooComplex'; } - /** @name PalletCorporateActionsError (621) */ + /** @name PalletCorporateActionsError (628) */ export interface PalletCorporateActionsError extends Enum { readonly isAuthNotCAATransfer: boolean; readonly isDetailsTooLong: boolean; @@ -4529,7 +4702,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'AuthNotCAATransfer' | 'DetailsTooLong' | 'DuplicateDidTax' | 'TooManyDidTaxes' | 'TooManyTargetIds' | 'NoSuchCheckpointId' | 'NoSuchCA' | 'NoRecordDate' | 'RecordDateAfterStart' | 'DeclDateAfterRecordDate' | 'DeclDateInFuture' | 'NotTargetedByCA'; } - /** @name PalletCorporateActionsBallotError (623) */ + /** @name PalletCorporateActionsBallotError (630) */ export interface PalletCorporateActionsBallotError extends Enum { readonly isCaNotNotice: boolean; readonly isAlreadyExists: boolean; @@ -4548,13 +4721,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'CaNotNotice' | 'AlreadyExists' | 'NoSuchBallot' | 'StartAfterEnd' | 'NowAfterEnd' | 'NumberOfChoicesOverflow' | 'VotingAlreadyStarted' | 'VotingNotStarted' | 'VotingAlreadyEnded' | 'WrongVoteCount' | 'InsufficientVotes' | 'NoSuchRCVFallback' | 'RcvSelfCycle' | 'RcvNotAllowed'; } - /** @name PalletPermissionsError (624) */ + /** @name PalletPermissionsError (631) */ export interface PalletPermissionsError extends Enum { readonly isUnauthorizedCaller: boolean; readonly type: 'UnauthorizedCaller'; } - /** @name PalletPipsPipsMetadata (625) */ + /** @name PalletPipsPipsMetadata (632) */ export interface PalletPipsPipsMetadata extends Struct { readonly id: u32; readonly url: Option; @@ -4564,13 +4737,13 @@ declare module '@polkadot/types/lookup' { readonly expiry: PolymeshCommonUtilitiesMaybeBlock; } - /** @name PalletPipsDepositInfo (627) */ + /** @name PalletPipsDepositInfo (634) */ export interface PalletPipsDepositInfo extends Struct { readonly owner: AccountId32; readonly amount: u128; } - /** @name PalletPipsPip (628) */ + /** @name PalletPipsPip (635) */ export interface PalletPipsPip extends Struct { readonly id: u32; readonly proposal: Call; @@ -4578,7 +4751,7 @@ declare module '@polkadot/types/lookup' { readonly proposer: PalletPipsProposer; } - /** @name PalletPipsVotingResult (629) */ + /** @name PalletPipsVotingResult (636) */ export interface PalletPipsVotingResult extends Struct { readonly ayesCount: u32; readonly ayesStake: u128; @@ -4586,17 +4759,17 @@ declare module '@polkadot/types/lookup' { readonly naysStake: u128; } - /** @name PalletPipsVote (630) */ + /** @name PalletPipsVote (637) */ export interface PalletPipsVote extends ITuple<[bool, u128]> {} - /** @name PalletPipsSnapshotMetadata (631) */ + /** @name PalletPipsSnapshotMetadata (638) */ export interface PalletPipsSnapshotMetadata extends Struct { readonly createdAt: u32; readonly madeBy: AccountId32; readonly id: u32; } - /** @name PalletPipsError (633) */ + /** @name PalletPipsError (640) */ export interface PalletPipsError extends Enum { readonly isRescheduleNotByReleaseCoordinator: boolean; readonly isNotFromCommunity: boolean; @@ -4619,7 +4792,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'RescheduleNotByReleaseCoordinator' | 'NotFromCommunity' | 'NotByCommittee' | 'TooManyActivePips' | 'IncorrectDeposit' | 'InsufficientDeposit' | 'NoSuchProposal' | 'NotACommitteeMember' | 'InvalidFutureBlockNumber' | 'NumberOfVotesExceeded' | 'StakeAmountOfVotesExceeded' | 'MissingCurrentIdentity' | 'IncorrectProposalState' | 'CannotSkipPip' | 'SnapshotResultTooLarge' | 'SnapshotIdMismatch' | 'ScheduledProposalDoesntExist' | 'ProposalNotInScheduledState'; } - /** @name PalletPortfolioError (639) */ + /** @name PalletPortfolioError (646) */ export interface PalletPortfolioError extends Enum { readonly isPortfolioDoesNotExist: boolean; readonly isInsufficientPortfolioBalance: boolean; @@ -4633,7 +4806,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'PortfolioDoesNotExist' | 'InsufficientPortfolioBalance' | 'DestinationIsSamePortfolio' | 'PortfolioNameAlreadyInUse' | 'SecondaryKeyNotAuthorizedForPortfolio' | 'UnauthorizedCustodian' | 'InsufficientTokensLocked' | 'PortfolioNotEmpty' | 'DifferentIdentityPortfolios'; } - /** @name PalletProtocolFeeError (640) */ + /** @name PalletProtocolFeeError (647) */ export interface PalletProtocolFeeError extends Enum { readonly isInsufficientAccountBalance: boolean; readonly isUnHandledImbalances: boolean; @@ -4641,19 +4814,19 @@ declare module '@polkadot/types/lookup' { readonly type: 'InsufficientAccountBalance' | 'UnHandledImbalances' | 'InsufficientSubsidyBalance'; } - /** @name PalletSchedulerScheduledV2 (643) */ - export interface PalletSchedulerScheduledV2 extends Struct { + /** @name PalletSchedulerScheduledV3 (650) */ + export interface PalletSchedulerScheduledV3 extends Struct { readonly maybeId: Option; readonly priority: u8; - readonly call: Call; + readonly call: FrameSupportScheduleMaybeHashed; readonly maybePeriodic: Option>; readonly origin: PolymeshRuntimeDevelopRuntimeOriginCaller; } - /** @name PolymeshRuntimeDevelopRuntimeOriginCaller (644) */ + /** @name PolymeshRuntimeDevelopRuntimeOriginCaller (651) */ export interface PolymeshRuntimeDevelopRuntimeOriginCaller extends Enum { readonly isSystem: boolean; - readonly asSystem: FrameSystemRawOrigin; + readonly asSystem: FrameSupportDispatchRawOrigin; readonly isVoid: boolean; readonly isPolymeshCommittee: boolean; readonly asPolymeshCommittee: PalletCommitteeRawOriginInstance1; @@ -4664,8 +4837,8 @@ declare module '@polkadot/types/lookup' { readonly type: 'System' | 'Void' | 'PolymeshCommittee' | 'TechnicalCommittee' | 'UpgradeCommittee'; } - /** @name FrameSystemRawOrigin (645) */ - export interface FrameSystemRawOrigin extends Enum { + /** @name FrameSupportDispatchRawOrigin (652) */ + export interface FrameSupportDispatchRawOrigin extends Enum { readonly isRoot: boolean; readonly isSigned: boolean; readonly asSigned: AccountId32; @@ -4673,35 +4846,28 @@ declare module '@polkadot/types/lookup' { readonly type: 'Root' | 'Signed' | 'None'; } - /** @name PalletCommitteeRawOriginInstance1 (646) */ + /** @name PalletCommitteeRawOriginInstance1 (653) */ export interface PalletCommitteeRawOriginInstance1 extends Enum { readonly isEndorsed: boolean; readonly type: 'Endorsed'; } - /** @name PalletCommitteeRawOriginInstance3 (647) */ + /** @name PalletCommitteeRawOriginInstance3 (654) */ export interface PalletCommitteeRawOriginInstance3 extends Enum { readonly isEndorsed: boolean; readonly type: 'Endorsed'; } - /** @name PalletCommitteeRawOriginInstance4 (648) */ + /** @name PalletCommitteeRawOriginInstance4 (655) */ export interface PalletCommitteeRawOriginInstance4 extends Enum { readonly isEndorsed: boolean; readonly type: 'Endorsed'; } - /** @name SpCoreVoid (649) */ + /** @name SpCoreVoid (656) */ export type SpCoreVoid = Null; - /** @name PalletSchedulerReleases (650) */ - export interface PalletSchedulerReleases extends Enum { - readonly isV1: boolean; - readonly isV2: boolean; - readonly type: 'V1' | 'V2'; - } - - /** @name PalletSchedulerError (651) */ + /** @name PalletSchedulerError (657) */ export interface PalletSchedulerError extends Enum { readonly isFailedToSchedule: boolean; readonly isNotFound: boolean; @@ -4710,13 +4876,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange'; } - /** @name PalletSettlementVenue (652) */ + /** @name PalletSettlementVenue (658) */ export interface PalletSettlementVenue extends Struct { readonly creator: PolymeshPrimitivesIdentityId; readonly venueType: PalletSettlementVenueType; } - /** @name PalletSettlementInstruction (655) */ + /** @name PalletSettlementInstruction (661) */ export interface PalletSettlementInstruction extends Struct { readonly instructionId: u64; readonly venueId: u64; @@ -4727,7 +4893,7 @@ declare module '@polkadot/types/lookup' { readonly valueDate: Option; } - /** @name PalletSettlementInstructionStatus (656) */ + /** @name PalletSettlementInstructionStatus (662) */ export interface PalletSettlementInstructionStatus extends Enum { readonly isUnknown: boolean; readonly isPending: boolean; @@ -4735,7 +4901,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unknown' | 'Pending' | 'Failed'; } - /** @name PalletSettlementLegStatus (658) */ + /** @name PalletSettlementLegStatus (664) */ export interface PalletSettlementLegStatus extends Enum { readonly isPendingTokenLock: boolean; readonly isExecutionPending: boolean; @@ -4744,7 +4910,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'PendingTokenLock' | 'ExecutionPending' | 'ExecutionToBeSkipped'; } - /** @name PalletSettlementAffirmationStatus (660) */ + /** @name PalletSettlementAffirmationStatus (666) */ export interface PalletSettlementAffirmationStatus extends Enum { readonly isUnknown: boolean; readonly isPending: boolean; @@ -4752,7 +4918,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unknown' | 'Pending' | 'Affirmed'; } - /** @name PalletSettlementError (664) */ + /** @name PalletSettlementError (670) */ export interface PalletSettlementError extends Enum { readonly isInvalidVenue: boolean; readonly isUnauthorized: boolean; @@ -4782,19 +4948,19 @@ declare module '@polkadot/types/lookup' { readonly type: 'InvalidVenue' | 'Unauthorized' | 'NoPendingAffirm' | 'InstructionNotAffirmed' | 'InstructionNotPending' | 'InstructionNotFailed' | 'LegNotPending' | 'UnauthorizedSigner' | 'ReceiptAlreadyClaimed' | 'ReceiptNotClaimed' | 'UnauthorizedVenue' | 'FailedToLockTokens' | 'InstructionFailed' | 'InstructionDatesInvalid' | 'InstructionSettleBlockPassed' | 'InvalidSignature' | 'SameSenderReceiver' | 'PortfolioMismatch' | 'SettleOnPastBlock' | 'NoPortfolioProvided' | 'UnexpectedAffirmationStatus' | 'FailedToSchedule' | 'LegCountTooSmall' | 'UnknownInstruction' | 'InstructionHasTooManyLegs'; } - /** @name PolymeshPrimitivesStatisticsStat1stKey (666) */ + /** @name PolymeshPrimitivesStatisticsStat1stKey (672) */ export interface PolymeshPrimitivesStatisticsStat1stKey extends Struct { readonly asset: PolymeshPrimitivesStatisticsAssetScope; readonly statType: PolymeshPrimitivesStatisticsStatType; } - /** @name PolymeshPrimitivesTransferComplianceAssetTransferCompliance (667) */ + /** @name PolymeshPrimitivesTransferComplianceAssetTransferCompliance (673) */ export interface PolymeshPrimitivesTransferComplianceAssetTransferCompliance extends Struct { readonly paused: bool; readonly requirements: BTreeSetTransferCondition; } - /** @name PalletStatisticsError (670) */ + /** @name PalletStatisticsError (676) */ export interface PalletStatisticsError extends Enum { readonly isInvalidTransfer: boolean; readonly isStatTypeMissing: boolean; @@ -4805,7 +4971,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'InvalidTransfer' | 'StatTypeMissing' | 'StatTypeNeededByTransferCondition' | 'CannotRemoveStatTypeInUse' | 'StatTypeLimitReached' | 'TransferConditionLimitReached'; } - /** @name PalletStoError (672) */ + /** @name PalletStoError (678) */ export interface PalletStoError extends Enum { readonly isUnauthorized: boolean; readonly isOverflow: boolean; @@ -4822,14 +4988,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unauthorized' | 'Overflow' | 'InsufficientTokensRemaining' | 'FundraiserNotFound' | 'FundraiserNotLive' | 'FundraiserClosed' | 'FundraiserExpired' | 'InvalidVenue' | 'InvalidPriceTiers' | 'InvalidOfferingWindow' | 'MaxPriceExceeded' | 'InvestmentAmountTooLow'; } - /** @name PalletTreasuryError (673) */ + /** @name PalletTreasuryError (679) */ export interface PalletTreasuryError extends Enum { readonly isInsufficientBalance: boolean; readonly isInvalidIdentity: boolean; readonly type: 'InsufficientBalance' | 'InvalidIdentity'; } - /** @name PalletUtilityError (674) */ + /** @name PalletUtilityError (680) */ export interface PalletUtilityError extends Enum { readonly isInvalidSignature: boolean; readonly isTargetCddMissing: boolean; @@ -4837,14 +5003,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'InvalidSignature' | 'TargetCddMissing' | 'InvalidNonce'; } - /** @name PalletBaseError (675) */ + /** @name PalletBaseError (681) */ export interface PalletBaseError extends Enum { readonly isTooLong: boolean; readonly isCounterOverflow: boolean; readonly type: 'TooLong' | 'CounterOverflow'; } - /** @name PalletExternalAgentsError (677) */ + /** @name PalletExternalAgentsError (683) */ export interface PalletExternalAgentsError extends Enum { readonly isNoSuchAG: boolean; readonly isUnauthorizedAgent: boolean; @@ -4855,13 +5021,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'NoSuchAG' | 'UnauthorizedAgent' | 'AlreadyAnAgent' | 'NotAnAgent' | 'RemovingLastFullAgent' | 'SecondaryKeyNotAuthorizedForAsset'; } - /** @name PalletRelayerSubsidy (678) */ + /** @name PalletRelayerSubsidy (684) */ export interface PalletRelayerSubsidy extends Struct { readonly payingKey: AccountId32; readonly remaining: u128; } - /** @name PalletRelayerError (679) */ + /** @name PalletRelayerError (685) */ export interface PalletRelayerError extends Enum { readonly isUserKeyCddMissing: boolean; readonly isPayingKeyCddMissing: boolean; @@ -4873,7 +5039,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'UserKeyCddMissing' | 'PayingKeyCddMissing' | 'NoPayingKey' | 'NotPayingKey' | 'NotAuthorizedForPayingKey' | 'NotAuthorizedForUserKey' | 'Overflow'; } - /** @name PalletRewardsError (680) */ + /** @name PalletRewardsError (686) */ export interface PalletRewardsError extends Enum { readonly isUnknownItnAddress: boolean; readonly isItnRewardAlreadyClaimed: boolean; @@ -4882,34 +5048,260 @@ declare module '@polkadot/types/lookup' { readonly type: 'UnknownItnAddress' | 'ItnRewardAlreadyClaimed' | 'InvalidSignature' | 'UnableToCovertBalance'; } - /** @name PalletTestUtilsError (681) */ + /** @name PalletContractsWasmPrefabWasmModule (687) */ + export interface PalletContractsWasmPrefabWasmModule extends Struct { + readonly instructionWeightsVersion: Compact; + readonly initial: Compact; + readonly maximum: Compact; + readonly code: Bytes; + } + + /** @name PalletContractsWasmOwnerInfo (688) */ + export interface PalletContractsWasmOwnerInfo extends Struct { + readonly owner: AccountId32; + readonly deposit: Compact; + readonly refcount: Compact; + } + + /** @name PalletContractsStorageRawContractInfo (689) */ + export interface PalletContractsStorageRawContractInfo extends Struct { + readonly trieId: Bytes; + readonly codeHash: H256; + readonly storageDeposit: u128; + } + + /** @name PalletContractsStorageDeletedContract (691) */ + export interface PalletContractsStorageDeletedContract extends Struct { + readonly trieId: Bytes; + } + + /** @name PalletContractsSchedule (692) */ + export interface PalletContractsSchedule extends Struct { + readonly limits: PalletContractsScheduleLimits; + readonly instructionWeights: PalletContractsScheduleInstructionWeights; + readonly hostFnWeights: PalletContractsScheduleHostFnWeights; + } + + /** @name PalletContractsScheduleLimits (693) */ + export interface PalletContractsScheduleLimits extends Struct { + readonly eventTopics: u32; + readonly stackHeight: Option; + readonly globals: u32; + readonly parameters: u32; + readonly memoryPages: u32; + readonly tableSize: u32; + readonly brTableSize: u32; + readonly subjectLen: u32; + readonly callDepth: u32; + readonly payloadLen: u32; + readonly codeLen: u32; + } + + /** @name PalletContractsScheduleInstructionWeights (694) */ + export interface PalletContractsScheduleInstructionWeights extends Struct { + readonly version: u32; + readonly i64const: u32; + readonly i64load: u32; + readonly i64store: u32; + readonly select: u32; + readonly r_if: u32; + readonly br: u32; + readonly brIf: u32; + readonly brTable: u32; + readonly brTablePerEntry: u32; + readonly call: u32; + readonly callIndirect: u32; + readonly callIndirectPerParam: u32; + readonly localGet: u32; + readonly localSet: u32; + readonly localTee: u32; + readonly globalGet: u32; + readonly globalSet: u32; + readonly memoryCurrent: u32; + readonly memoryGrow: u32; + readonly i64clz: u32; + readonly i64ctz: u32; + readonly i64popcnt: u32; + readonly i64eqz: u32; + readonly i64extendsi32: u32; + readonly i64extendui32: u32; + readonly i32wrapi64: u32; + readonly i64eq: u32; + readonly i64ne: u32; + readonly i64lts: u32; + readonly i64ltu: u32; + readonly i64gts: u32; + readonly i64gtu: u32; + readonly i64les: u32; + readonly i64leu: u32; + readonly i64ges: u32; + readonly i64geu: u32; + readonly i64add: u32; + readonly i64sub: u32; + readonly i64mul: u32; + readonly i64divs: u32; + readonly i64divu: u32; + readonly i64rems: u32; + readonly i64remu: u32; + readonly i64and: u32; + readonly i64or: u32; + readonly i64xor: u32; + readonly i64shl: u32; + readonly i64shrs: u32; + readonly i64shru: u32; + readonly i64rotl: u32; + readonly i64rotr: u32; + } + + /** @name PalletContractsScheduleHostFnWeights (695) */ + export interface PalletContractsScheduleHostFnWeights extends Struct { + readonly caller: u64; + readonly isContract: u64; + readonly codeHash: u64; + readonly ownCodeHash: u64; + readonly callerIsOrigin: u64; + readonly address: u64; + readonly gasLeft: u64; + readonly balance: u64; + readonly valueTransferred: u64; + readonly minimumBalance: u64; + readonly blockNumber: u64; + readonly now: u64; + readonly weightToFee: u64; + readonly gas: u64; + readonly input: u64; + readonly inputPerByte: u64; + readonly r_return: u64; + readonly returnPerByte: u64; + readonly terminate: u64; + readonly random: u64; + readonly depositEvent: u64; + readonly depositEventPerTopic: u64; + readonly depositEventPerByte: u64; + readonly debugMessage: u64; + readonly setStorage: u64; + readonly setStoragePerNewByte: u64; + readonly setStoragePerOldByte: u64; + readonly setCodeHash: u64; + readonly clearStorage: u64; + readonly clearStoragePerByte: u64; + readonly containsStorage: u64; + readonly containsStoragePerByte: u64; + readonly getStorage: u64; + readonly getStoragePerByte: u64; + readonly takeStorage: u64; + readonly takeStoragePerByte: u64; + readonly transfer: u64; + readonly call: u64; + readonly delegateCall: u64; + readonly callTransferSurcharge: u64; + readonly callPerClonedByte: u64; + readonly instantiate: u64; + readonly instantiateTransferSurcharge: u64; + readonly instantiatePerSaltByte: u64; + readonly hashSha2256: u64; + readonly hashSha2256PerByte: u64; + readonly hashKeccak256: u64; + readonly hashKeccak256PerByte: u64; + readonly hashBlake2256: u64; + readonly hashBlake2256PerByte: u64; + readonly hashBlake2128: u64; + readonly hashBlake2128PerByte: u64; + readonly ecdsaRecover: u64; + readonly ecdsaToEthAddress: u64; + } + + /** @name PalletContractsError (696) */ + export interface PalletContractsError extends Enum { + readonly isInvalidScheduleVersion: boolean; + readonly isInvalidCallFlags: boolean; + readonly isOutOfGas: boolean; + readonly isOutputBufferTooSmall: boolean; + readonly isTransferFailed: boolean; + readonly isMaxCallDepthReached: boolean; + readonly isContractNotFound: boolean; + readonly isCodeTooLarge: boolean; + readonly isCodeNotFound: boolean; + readonly isOutOfBounds: boolean; + readonly isDecodingFailed: boolean; + readonly isContractTrapped: boolean; + readonly isValueTooLarge: boolean; + readonly isTerminatedWhileReentrant: boolean; + readonly isInputForwarded: boolean; + readonly isRandomSubjectTooLong: boolean; + readonly isTooManyTopics: boolean; + readonly isDuplicateTopics: boolean; + readonly isNoChainExtension: boolean; + readonly isDeletionQueueFull: boolean; + readonly isDuplicateContract: boolean; + readonly isTerminatedInConstructor: boolean; + readonly isDebugMessageInvalidUTF8: boolean; + readonly isReentranceDenied: boolean; + readonly isStorageDepositNotEnoughFunds: boolean; + readonly isStorageDepositLimitExhausted: boolean; + readonly isCodeInUse: boolean; + readonly isContractReverted: boolean; + readonly isCodeRejected: boolean; + readonly type: 'InvalidScheduleVersion' | 'InvalidCallFlags' | 'OutOfGas' | 'OutputBufferTooSmall' | 'TransferFailed' | 'MaxCallDepthReached' | 'ContractNotFound' | 'CodeTooLarge' | 'CodeNotFound' | 'OutOfBounds' | 'DecodingFailed' | 'ContractTrapped' | 'ValueTooLarge' | 'TerminatedWhileReentrant' | 'InputForwarded' | 'RandomSubjectTooLong' | 'TooManyTopics' | 'DuplicateTopics' | 'NoChainExtension' | 'DeletionQueueFull' | 'DuplicateContract' | 'TerminatedInConstructor' | 'DebugMessageInvalidUTF8' | 'ReentranceDenied' | 'StorageDepositNotEnoughFunds' | 'StorageDepositLimitExhausted' | 'CodeInUse' | 'ContractReverted' | 'CodeRejected'; + } + + /** @name PolymeshContractsError (697) */ + export interface PolymeshContractsError extends Enum { + readonly isRuntimeCallNotFound: boolean; + readonly isDataLeftAfterDecoding: boolean; + readonly isInLenTooLarge: boolean; + readonly isInstantiatorWithNoIdentity: boolean; + readonly type: 'RuntimeCallNotFound' | 'DataLeftAfterDecoding' | 'InLenTooLarge' | 'InstantiatorWithNoIdentity'; + } + + /** @name PalletPreimageRequestStatus (698) */ + export interface PalletPreimageRequestStatus extends Enum { + readonly isUnrequested: boolean; + readonly asUnrequested: Option>; + readonly isRequested: boolean; + readonly asRequested: u32; + readonly type: 'Unrequested' | 'Requested'; + } + + /** @name PalletPreimageError (701) */ + export interface PalletPreimageError extends Enum { + readonly isTooLarge: boolean; + readonly isAlreadyNoted: boolean; + readonly isNotAuthorized: boolean; + readonly isNotNoted: boolean; + readonly isRequested: boolean; + readonly isNotRequested: boolean; + readonly type: 'TooLarge' | 'AlreadyNoted' | 'NotAuthorized' | 'NotNoted' | 'Requested' | 'NotRequested'; + } + + /** @name PalletTestUtilsError (702) */ export type PalletTestUtilsError = Null; - /** @name FrameSystemExtensionsCheckSpecVersion (684) */ + /** @name FrameSystemExtensionsCheckSpecVersion (705) */ export type FrameSystemExtensionsCheckSpecVersion = Null; - /** @name FrameSystemExtensionsCheckTxVersion (685) */ + /** @name FrameSystemExtensionsCheckTxVersion (706) */ export type FrameSystemExtensionsCheckTxVersion = Null; - /** @name FrameSystemExtensionsCheckGenesis (686) */ + /** @name FrameSystemExtensionsCheckGenesis (707) */ export type FrameSystemExtensionsCheckGenesis = Null; - /** @name FrameSystemExtensionsCheckNonce (689) */ + /** @name FrameSystemExtensionsCheckNonce (710) */ export interface FrameSystemExtensionsCheckNonce extends Compact {} - /** @name PolymeshExtensionsCheckWeight (690) */ + /** @name PolymeshExtensionsCheckWeight (711) */ export interface PolymeshExtensionsCheckWeight extends FrameSystemExtensionsCheckWeight {} - /** @name FrameSystemExtensionsCheckWeight (691) */ + /** @name FrameSystemExtensionsCheckWeight (712) */ export type FrameSystemExtensionsCheckWeight = Null; - /** @name PalletTransactionPaymentChargeTransactionPayment (692) */ + /** @name PalletTransactionPaymentChargeTransactionPayment (713) */ export interface PalletTransactionPaymentChargeTransactionPayment extends Compact {} - /** @name PalletPermissionsStoreCallMetadata (693) */ + /** @name PalletPermissionsStoreCallMetadata (714) */ export type PalletPermissionsStoreCallMetadata = Null; - /** @name PolymeshRuntimeDevelopRuntime (694) */ + /** @name PolymeshRuntimeDevelopRuntime (715) */ export type PolymeshRuntimeDevelopRuntime = Null; } // declare module diff --git a/scripts/cli/src/util/init.ts b/scripts/cli/src/util/init.ts index e1f248d3a2..64875cc66f 100644 --- a/scripts/cli/src/util/init.ts +++ b/scripts/cli/src/util/init.ts @@ -274,8 +274,6 @@ export function sendTransaction( signer, nonceObj, (receipt) => { - const { status } = receipt; - if (receipt.isCompleted) { /* * isCompleted === isFinalized || isError, which means @@ -297,9 +295,7 @@ export function sendTransaction( // known error const mod = dispatchError.asModule; const { section, name, docs } = - mod.registry.findMetaError( - new Uint8Array([mod.index.toNumber(), mod.error.toNumber()]) - ); + mod.registry.findMetaError(mod); message = `${section}.${name}: ${docs.join(" ")}`; } else if (dispatchError.isBadOrigin) { diff --git a/src/chain_spec.rs b/src/chain_spec.rs index a5b52ac43b..c91c82b72a 100644 --- a/src/chain_spec.rs +++ b/src/chain_spec.rs @@ -498,7 +498,6 @@ fn bridge_signers() -> Vec> { fn frame(wasm_binary: Option<&[u8]>) -> frame_system::GenesisConfig { frame_system::GenesisConfig { code: wasm_binary.expect("WASM binary was not generated").to_vec(), - changes_trie_config: Default::default(), } } @@ -735,6 +734,7 @@ pub mod general { vec![], None, None, + None, props, <_>::default(), ) @@ -900,6 +900,7 @@ pub mod testnet { .expect("Testnet bootstrap telemetry url is valid; qed"), ), Some(&*"/polymesh/testnet"), + None, Some(polymath_props(42)), Default::default(), ) @@ -931,6 +932,7 @@ pub mod testnet { boot_nodes, None, None, + None, Some(polymath_props(42)), Default::default(), ) @@ -966,6 +968,7 @@ pub mod testnet { boot_nodes, None, None, + None, Some(polymath_props(42)), Default::default(), ) @@ -1097,6 +1100,7 @@ pub mod mainnet { .expect("Mainnet bootstrap telemetry url is valid; qed"), ), Some(&*"/polymesh/mainnet"), + None, Some(polymath_props(12)), Default::default(), ) @@ -1128,6 +1132,7 @@ pub mod mainnet { boot_nodes, None, None, + None, Some(polymath_props(12)), Default::default(), ) @@ -1163,6 +1168,7 @@ pub mod mainnet { boot_nodes, None, None, + None, Some(polymath_props(12)), Default::default(), ) @@ -1275,6 +1281,7 @@ pub mod ci { boot_nodes, None, None, + None, Some(polymath_props(42)), Default::default(), ) @@ -1310,6 +1317,7 @@ pub mod ci { boot_nodes, None, None, + None, Some(polymath_props(42)), Default::default(), ) diff --git a/src/cli.rs b/src/cli.rs index d4ff30edf9..206a1914a5 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -1,30 +1,28 @@ -use structopt::StructOpt; - -#[derive(Debug, StructOpt)] +#[derive(Debug, clap::Parser)] pub struct Cli { /// Possible subcommand with parameters. - #[structopt(subcommand)] + #[clap(subcommand)] pub subcommand: Option, #[allow(missing_docs)] - #[structopt(flatten)] + #[clap(flatten)] pub run: RunCmd, } #[allow(missing_docs)] -#[derive(Debug, StructOpt)] +#[derive(Debug, clap::Parser)] pub struct RunCmd { #[allow(missing_docs)] - #[structopt(flatten)] + #[clap(flatten)] pub base: sc_cli::RunCmd, /// Enable validator mode. /// /// It is an alias of the `--validator` flag. User has the choice to use either `--validator` or `--operator` flag both works same. - #[structopt(long)] + #[clap(long)] pub operator: bool, } /// Possible subcommands of the main binary. -#[derive(Debug, StructOpt)] +#[derive(Debug, clap::Subcommand)] pub enum Subcommand { /// Build a chain specification. BuildSpec(sc_cli::BuildSpecCmd), @@ -48,6 +46,7 @@ pub enum Subcommand { Revert(sc_cli::RevertCmd), /// The custom benchmark subcommmand benchmarking runtime pallets. - #[structopt(name = "benchmark", about = "Benchmark runtime pallets.")] + #[clap(name = "benchmark", about = "Benchmark runtime pallets.")] + #[clap(subcommand)] Benchmark(frame_benchmarking_cli::BenchmarkCmd), } diff --git a/src/command.rs b/src/command.rs index 141be14c80..78d810d07d 100644 --- a/src/command.rs +++ b/src/command.rs @@ -18,15 +18,18 @@ use crate::chain_spec; use crate::cli::{Cli, Subcommand}; use crate::service::{ - self, ci_chain_ops, general_chain_ops, mainnet_chain_ops, testnet_chain_ops, CIExecutor, - GeneralExecutor, IsNetwork, MainnetExecutor, Network, NewChainOps, TestnetExecutor, + self, ci_chain_ops, general_chain_ops, mainnet_chain_ops, new_partial, testnet_chain_ops, + CIExecutor, FullClient, FullServiceComponents, GeneralExecutor, IsNetwork, MainnetExecutor, + Network, NewChainOps, TestnetExecutor, }; +use frame_benchmarking_cli::*; use sc_cli::{ChainSpec, Result, RuntimeVersion, SubstrateCli}; use sc_service::{Configuration, TaskManager}; use core::future::Future; use log::info; use polymesh_primitives::Block; +use std::sync::Arc; impl SubstrateCli for Cli { fn impl_name() -> String { @@ -161,35 +164,90 @@ pub fn run() -> Result<()> { Some(Subcommand::Revert(cmd)) => async_run( &cli, cmd, - |(c, b, _, tm), _| Ok((cmd.run(c, b), tm)), - |(c, b, _, tm), _| Ok((cmd.run(c, b), tm)), - |(c, b, _, tm), _| Ok((cmd.run(c, b), tm)), - |(c, b, _, tm), _| Ok((cmd.run(c, b), tm)), + |(c, b, _, tm), _| { + let aux_revert = Box::new(|client: Arc>, backend, blocks| { + sc_consensus_babe::revert(client.clone(), backend, blocks)?; + grandpa::revert(client, blocks)?; + Ok(()) + }); + Ok((cmd.run(c, b, Some(aux_revert)), tm)) + }, + |(c, b, _, tm), _| { + let aux_revert = Box::new(|client: Arc>, backend, blocks| { + sc_consensus_babe::revert(client.clone(), backend, blocks)?; + grandpa::revert(client, blocks)?; + Ok(()) + }); + Ok((cmd.run(c, b, Some(aux_revert)), tm)) + }, + |(c, b, _, tm), _| { + let aux_revert = Box::new(|client: Arc>, backend, blocks| { + sc_consensus_babe::revert(client.clone(), backend, blocks)?; + grandpa::revert(client, blocks)?; + Ok(()) + }); + Ok((cmd.run(c, b, Some(aux_revert)), tm)) + }, + |(c, b, _, tm), _| { + let aux_revert = Box::new(|client: Arc>, backend, blocks| { + sc_consensus_babe::revert(client.clone(), backend, blocks)?; + grandpa::revert(client, blocks)?; + Ok(()) + }); + Ok((cmd.run(c, b, Some(aux_revert)), tm)) + }, ), Some(Subcommand::Benchmark(cmd)) => { - if cfg!(feature = "runtime-benchmarks") { - let runner = cli.create_runner(cmd)?; - let network = runner.config().chain_spec.network(); + let runner = cli.create_runner(cmd)?; + let network = runner.config().chain_spec.network(); - match network { - Network::Testnet => { - runner.sync_run(|config| cmd.run::(config)) + runner.sync_run(|mut config| { + match (cmd, network) { + (BenchmarkCmd::Pallet(cmd), Network::Other) => { + if !cfg!(feature = "runtime-benchmarks") { + return Err("Benchmarking wasn't enabled when building the node. \ + You can enable it with `--features runtime-benchmarks`." + .into()); + } + + cmd.run::(config) } - Network::Other => { - runner.sync_run(|config| cmd.run::(config)) + (BenchmarkCmd::Block(cmd), Network::Other) => { + let FullServiceComponents { client, .. } = new_partial::< + polymesh_runtime_develop::RuntimeApi, + GeneralExecutor, + _, + >( + &mut config + )?; + cmd.run(client) } - Network::CI => { - runner.sync_run(|config| cmd.run::(config)) + (BenchmarkCmd::Storage(cmd), Network::Other) => { + let FullServiceComponents { + client, backend, .. + } = new_partial::( + &mut config, + )?; + let db = backend.expose_db(); + let storage = backend.expose_storage(); + + cmd.run(config, client, db, storage) + } + (BenchmarkCmd::Overhead(_cmd), Network::Other) => { + unimplemented!(); + /* + let FullServiceComponents { client, .. } = new_partial::(&mut config)?; + let ext_builder = BenchmarkExtrinsicBuilder::new(client.clone()); + + cmd.run(config, client, inherent_benchmark_data()?, Arc::new(ext_builder)) + */ } - Network::Mainnet => { - runner.sync_run(|config| cmd.run::(config)) + (BenchmarkCmd::Machine(cmd), Network::Other) => { + cmd.run(&config, SUBSTRATE_REFERENCE_HARDWARE.clone()) } + (_, _) => Err("Benchmarking is only supported with the `develop` runtime.")?, } - } else { - Err("Benchmarking wasn't enabled when building the node. \ - You can enable it with `--features runtime-benchmarks`." - .into()) - } + }) } } } diff --git a/src/service.rs b/src/service.rs index 4ea4abe556..eb241ab325 100644 --- a/src/service.rs +++ b/src/service.rs @@ -16,8 +16,8 @@ pub use polymesh_runtime_develop; pub use polymesh_runtime_mainnet; pub use polymesh_runtime_testnet; use prometheus_endpoint::Registry; -use sc_client_api::ExecutorProvider; -pub use sc_client_api::{backend::Backend, RemoteBackend}; +pub use sc_client_api::backend::Backend; +use sc_client_api::{BlockBackend, ExecutorProvider}; pub use sc_consensus::LongestChain; use sc_consensus_slots::SlotProportion; use sc_executor::NativeElseWasmExecutor; @@ -163,7 +163,7 @@ type BabeLink = sc_consensus_babe::BabeLink; type IoHandler = jsonrpc_core::IoHandler; type FullLinkHalf = grandpa::LinkHalf, FullSelectChain>; -type FullClient = sc_service::TFullClient>; +pub type FullClient = sc_service::TFullClient>; type FullBackend = sc_service::TFullBackend; type FullSelectChain = sc_consensus::LongestChain; type FullGrandpaBlockImport = @@ -171,7 +171,7 @@ type FullGrandpaBlockImport = type FullBabeImportQueue = sc_consensus::DefaultImportQueue>; type FullStateBackend = sc_client_api::StateBackendFor; type FullPool = sc_transaction_pool::FullPool>; -type FullServiceComponents = sc_service::PartialComponents< +pub type FullServiceComponents = sc_service::PartialComponents< FullClient, FullBackend, FullSelectChain, @@ -220,6 +220,7 @@ where config.wasm_method, config.default_heap_pages, config.max_runtime_instances, + config.runtime_cache_size, ); let (client, backend, keystore_container, task_manager) = @@ -231,7 +232,9 @@ where let client = Arc::new(client); let telemetry = telemetry.map(|(worker, telemetry)| { - task_manager.spawn_handle().spawn("telemetry", worker.run()); + task_manager + .spawn_handle() + .spawn("telemetry", None, worker.run()); telemetry }); @@ -254,7 +257,7 @@ where let justification_import = grandpa_block_import.clone(); let (block_import, babe_link) = sc_consensus_babe::block_import( - sc_consensus_babe::Config::get_or_compute(&*client)?, + sc_consensus_babe::Config::get(&*client)?, grandpa_block_import, client.clone(), )?; @@ -270,7 +273,7 @@ where let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); let slot = - sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_duration( + sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_slot_duration( *timestamp, slot_duration, ); @@ -391,11 +394,21 @@ where let shared_voter_state = rpc_setup; let auth_disc_publish_non_global_ips = config.network.allow_non_globals_in_dht; + let grandpa_protocol_name = grandpa::protocol_standard_name( + &client + .block_hash(0) + .ok() + .flatten() + .expect("Genesis block exists; qed"), + &config.chain_spec, + ); config .network .extra_sets - .push(grandpa::grandpa_peers_set_config()); + .push(grandpa::grandpa_peers_set_config( + grandpa_protocol_name.clone(), + )); let warp_sync = Arc::new(grandpa::warp_proof::NetworkProvider::new( backend.clone(), import_setup.1.shared_authority_set().clone(), @@ -418,7 +431,6 @@ where transaction_pool: transaction_pool.clone(), spawn_handle: task_manager.spawn_handle(), import_queue, - on_demand: None, block_announce_validator_builder: None, warp_sync: Some(warp_sync), })?; @@ -449,8 +461,6 @@ where rpc_extensions_builder: Box::new(rpc_extensions_builder), transaction_pool: transaction_pool.clone(), task_manager: &mut task_manager, - on_demand: None, - remote_blockchain: None, system_rpc_tx, telemetry: telemetry.as_mut(), })?; @@ -492,7 +502,7 @@ where let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); let slot = - sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_duration( + sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_slot_duration( *timestamp, slot_duration, ); @@ -516,9 +526,11 @@ where }; let babe = sc_consensus_babe::start_babe(babe_config)?; - task_manager - .spawn_essential_handle() - .spawn_blocking("babe-proposer", babe); + task_manager.spawn_essential_handle().spawn_blocking( + "babe-proposer", + Some("block-authoring"), + babe, + ); } // Spawn authority discovery module. @@ -549,6 +561,7 @@ where task_manager.spawn_handle().spawn( "authority-discovery-worker", + Some("networking"), authority_discovery_worker.run(), ); } @@ -570,6 +583,7 @@ where keystore, local_role: role, telemetry: telemetry.as_ref().map(|x| x.handle()), + protocol_name: grandpa_protocol_name, }; if enable_grandpa { @@ -591,9 +605,11 @@ where // the GRANDPA voter task is considered infallible, i.e. // if it fails we take down the service with it. - task_manager - .spawn_essential_handle() - .spawn_blocking("grandpa-voter", grandpa::run_grandpa_voter(grandpa_config)?); + task_manager.spawn_essential_handle().spawn_blocking( + "grandpa-voter", + None, + grandpa::run_grandpa_voter(grandpa_config)?, + ); } network_starter.start_network(); diff --git a/utils/permissions/Cargo.toml b/utils/permissions/Cargo.toml index f12b51b11c..500039e7c0 100644 --- a/utils/permissions/Cargo.toml +++ b/utils/permissions/Cargo.toml @@ -2,7 +2,7 @@ name = "permissions" version = "0.1.0" authors = ["Polymath"] -edition = "2018" +edition = "2021" [dependencies] scraper = "0.12"